Date: 2022-11-11 20:00:00 Tags: technologie OpenBSD desktop Desc: Jak jsem distroskocil do FreeBSD. # BareGUI revisited Na uvod nekolik poznamek. Ne, neopustil jsem OpenBSD, ktere nadale zustava na mem notebooku i serverech. Naopak se v tomto nikoliv kratkem textu chystam porovnavat obe BSD, nakolik me chabe znalosti dovoli. Dovolil jsem si pridat i male zamysleni nad window managery. Kazdopadne tento text tema ani zdaleka nevycerpava a pripadne opravy a doplneni jsou vitany. Duvodem k dalsimu distroskoku byla jista nespokojenost s Artixem i s LARBS. Lukovo minidistro proste neni _my thingy_. Prestala fungovat aplikace Telegram, Artix si nechtel povidat se zvukovkou a navic _tiling sucks_ (pouhy nerdovsky slang, nic podstatneho). Uz se schylovalo k preinstalaci, ale zvedavost me tahla zpatky k (Free)BSD. Jenze jsem potreboval fungovat rychle, takze jsem pristoupil k instantnimu reseni jmenem... ## GhostBSD GhostBSD uz na mych pocitacich bezelo. Za uplynula leta ale jaksi zestihlelo a priblizilo se _vanilla_ FreeBSD s MATE desktopem navrch a pouze zakladnim vyberem softwaru. Zmizelo OpenRC a pravdepodobne i dalsi veci. To vse je mi sympaticke. Instalator je graficky, instalace samotna jednoducha, takze za par minut bezi na vasem pocitaci jednoduche, ale relativne vychytane distro. Musim rici, ze dieta GhostBSD prospela. Setkal jsem se minimem problemu, zejmena se zlepsil update. Pamatuju si, ze to byvala velka bolest, nebot update dokazal pohrbit celou instalaci. Nainstaloval jsem GhostBSD na nekolik domacich pocitacu, provedl uz nekolik updatu a pouze jediny zanechal pocitac v nekonzistentnim stavu. To byla navic moje chyba, nebot jsem nechal vybit baterii notebooku. Nastesti reseni bylo velice jednoduche, novy vynuceny upgrade pres terminal. # pkg upgrade -f Nicmene jeden ctenar tohoto blogu usoudil, ze FreeBSD s par programy znacky Ghost navrch je pod uroven tohoto bloggera. Vyzva, kterou nelze neuposlechnout. ## Vanilla FreeBSD Pri instalaci FreeBSD jsem vychazel ze dvou zdroju: - FreeBSD Handbook - a vermadenuv blog. Vermaden je blogujici sysadmin z Polska, jenz prispiva na ruzna fora o BSD, napr. daemonforums.org. Jeho blog doporucuju, je plny uzitecnych informaci. Mimochodem, neni velkym priznivcem OpenBSD. ## Instalace Narozdil od OpenBSD instalace probiha v TUI prostredi, coz je predchudce GUI. Pro srovnani: OpenBSD instalator je CLI, GhostBSD ma GUI instalator (jen dalsi nerdovsky slang). Nic sloziteho, navic Vermaden ma na svem blogu screenshoty snad vsech kroku, vcetne doporucovaneho nastaveni BIOSu (predchazi samotne instalaci). ## Xorg Dalsi velky rozdil ve srovnani s OpenBSD. Zakladni instalace FreeBSD neobsahuje X window GUI system, zatimco Xenocara, upraveny Xorg, je soucasti zakladni instalace OpenBSD. Handbook a Vermadenovy poznamky zde prisly velmi vhod. Bez prislusneho modulu s ovladaci pro graficke karty by totiz Xorg nefungoval spravne nebo vubec. Proto bylo nutne doinstalovat balicek `drm-kmod` a spustit ho pri bootovani systemu, coz obnasi pridani radky do `/etc/rc.conf`: kld_list="amdgpu" # i915kms | radeon Pripadne prikazem: # sysrc kld_list="amdgpu" Po nem nasleduje restart. Na tomto miste je treba zminit, ze FreeBSD ma trochu jinou organizaci zakladni adresarove struktury nez OpenBSD. Standardni `/home` je symlink na `/usr/home`, coz je skutecny HOME. Narozdil od OpenBSD adresar `/etc` slouzi vyhradne ke konfiguraci zakladniho systemu (base). Konfiguraci uzivatelem instalovanych programu resi adresar `/usr/local/etc`, ktery pod OpenBSD vubec neexistuje. Pri prvnim spusteni Xorg se objevi twm(1), prastary window manager. Je dobre proverit `/var/log/Xorg.log`, zda Xorg zbytecne neresi nejakou chybu a zda skutecne vyuziva instalovane ovladace. Pri jedne instalaci jsem zjistil, ze nacita defaultni ovladac Vesa a nektere veci nefunguji, jak by mely. Dale jsem instaloval xdm(1) a xterm(1), tedy display cili login manager a terminal. Defaultni login je z vizualniho hlediska priserny, takze vermadenuv update prisel vhod. Soubor `/etc/rc.conf` fungje na FreeBSD jako `/etc/rc.conf.local` na OpenBSD. Display manager se systemove spousti take tam. xdm_enable="YES" # service xdm start Velmi se mi libilo, ze konfiguracni soubory v `/usr/local/etc/X11/xdm/` jsou ve dvojim provedeni, jednou jako _sample_, takze je lze bez ostychu prepsat, aniz by clovek musel delat zalohy. Je zde take adresar `xorg.conf.d`, kam lze ulozit konfiguracni soubory ruznych vstupnich a vystupnich zarizeni jako mys, klavesnice ci displej. Vyuzil jsem tohoto privilegia a sestavil jsem `keyboard.conf` s preferovanym nastavenim klavesnice. Pokud jde o konfigy pro Xorg, je lepe nasledovat rady z Handbook nez vermadenovy rady. ## Window manager (WM) Minule jsem tady probiral desktopova prostredi. Nyni bych rad ztratil par slov o manazerech oken cili window managers cili WM. Jako hledac jednoduchosti a minimalismu jsem samozrejme musel vyzkouset _tiling WM_. Vsichni zname _stacking WM_, mezi ktere patri mimo jine i nejhorsi virus, ktery muze napadnout vas pocitac cili Windows. Okna se zde pohybuji v hypotetickem trojrozmernem svete. Jinymi slovy lze okna skladat na sebe, prekryvat je ci uplne zakryt. Naopak tiling WM zijou ve dvourozmernem svete, kde jsou okna v jedne rovine, takze se mohou pouze dotykat hranami, ale nemohou lezet pres sebe. Takto vytvareji na displeji dlazdice stejnych ci ruznych velikosti a struktur. Poctive jsem vyzkousel nekolik znamych tiling WM. V podstate existuji 2 druhy podle chovani pri otevreni noveho okna: - prvni prepocita velikosti jiz otevrenych oken, tzn. zmensi je - druhy dodrzuje jiz vytvorenou strukturu oken ci spise a nove okno vmackne na predem urcene misto, za nejlepsi povazuju dwm(1); vyhrazenych oblasti obrazovky, ve kterych se okna programu stridaji _a la_ Emacs, prikladem budiz ratpoison(1). Ani s jednim konceptem jsem se pres primerenou snahu neszil. Za praktictejsi povazuju dwm(1), kde se clovek mezi okny pohybuje rychleji a prirozeneji nez u ratpoison(1). Ten funguje spis jako Emacs nebo tmux(1) a clovek musi stisknout mnoho klaves, nez se dostane tam, kam chce. Abych prilil ohne do oleje svate valky mezi priznivci editoru Vim a Emacs, kde jednoznacne stojim na strane Vimu, dwm je spis jako Vim a ma i stejne ovladani. *) Po pravde ratpoison si ani poradne nepamatuju, zato mam jeste v zive pameti [sdorfehs(1)], nedavno portnuty do OpenBSD. Ze stacking WM jsem nejdele pouzival cwm(1) a openbox(1). Cwm(1) je jeden z defaultnich WM v zakladni instalaci OpenBSD. Zaliba v minimalismu me tahne k cwm(1). Jde o nejcistsi desktopovou zkusenost dokonce i ve srovnani s tzv. tiling window managers. Tu z meho pohledu kazi i pridani listy s vystupem skriptu, sledujiciho zatizeni procesoru, site, pameti atd., na coz uz byly napsano hromady skriptu. Jediny snesitelny objekt je podle me xclock(1), analogove hodiny. Cista desktopova zkusenost je esteticky nedostizna, ale tak trochu neprakticka. Nekdy proste informace chybi. Lze to vyresit napr. listou tint2(1) s nastavenym automatickym skryvanim, ale porad je pozadovana informace 1 pohyb nebo 1-2 udery do klaves vzdalena. Pro lineho cloveka aktivita navic. Dalsi problem spociva v tom, ze okno bez listy nelze manipulovat jednou rukou, nebot druha musi drzet ALT, aby system vedel, ze chceme oknem pohybovat nebo menit jeho velikost. To mozna vypada jako neproblem, ale stalo se mi mnohokrat a z mnoha duvodu, ze jsem levou ruku proste nemel volnou. Obzvlast deti dokazou v tomto ohledu cloveka zamestnat tak, ze jsou mu i obe ruce malo. V tu chvili moznost ovladat pocitac pouze mysi nabyva na cene. Kdyz jsem tedy nainstaloval shepuv BareGUI, jehoz zaklad tvori openbox(1), ubylo mi v jistem ohledu prace a pritom si muzu uzivat okenniho chaosu na plose, ktery mi u tiling WM chybel. Proto zcela rozumim tomu, proc je openbox(1) nejoblibenejsi WM poslednich 10 a vice let. Nedavno jsem navic objevil, ze mohu na liste tint2(1) videt obsah vsech virtualnich ploch. To je skvela vec, kdyz si clovek nepamatuje, kde ma jake okno, coz je presne muj pripad. Jednou z alternativ openboxu je fvwm(1), jenz je soucasti zakladni instalace OpenBSD. Ma neskutecne moznosti konfigurace a umoznuje vse, o cem jsem mluvil vyse. Jeho spartansky a prastary vzhled zapada do me minimalisticke filozofie. Proc ho tedy nepouzivam? Musim konstatovat, ze proste nejsem zcela verny a dusledny, pokud jde o mnou protezovanou filozofii. Mozna v tom hrajou roli navyky z prace, kde pouzivam Windows, ale hlavnim duvodem je patrne moje lenost. ## BareGUI Dalsi instalovane programy sleduji filozofii BareGUI, kterou uz jsem popisoval. Zminim tedy jenom nekolik dalsich rozdilu oproti OpenBSD. ## Firewall Pod FreeBSD funguje Packet Filter, pf(4) zakladni firewall na OpenBSD. Balicek pro FreeBSD se pry trochu lisi, ale to neni podstatne. Pro me relativne jednoduche potreby se konfigurace prilis nelisi. Odhaduju, ze syntax obou verzi je stejny. ## Zvuk Na OpenBSD funguje zvuk _out of the box_. Ne tak na FreeBSD. System si samozrejme osaha vsechna zvukova vystupni zarizeni, mezi ktera ovsem patri kupodivu i HDMI vystup do monitoru. Zvlast byva i vystup na sluchatka a zadni vystup zvukovky. Je nutne urcit, ktery vystup bude defaultni. Instaloval jsem `gtk-mixer`, kde lze zarizeni prepinat graficky, je vsak lepsi toto nastavit na urovni systemu. $ cat /dev/sndstat # vypise zarizeni # sysctl hw.snd.default_unit=1 # urci defaultni vystup Soubor `/etc/sysctl.conf` by mel obsahovat posledni definici, pokud chceme uchovat informaci o defaultnim vystupu i po vypnuti pocitace. U nekterych stroju toto nestaci a je treba jeste pridat tuto radku: dev.hdac.0.polling=1 Dosavadni zkusenost s rizenim audio vystupu je smisena. Na jednom pocitaci jsem po pocatecnim nastaveni nenarazil na problem. Na dalsim prepnuti pollingu nefunguje, vystup se musi nastavit rucne a pote odhlasit a znovu prihlasit, ale pouze u Linuxove vrstvy. Toto budu muset jeste trochu prozkoumat. ## Linuxova vrstva Toto je dalsi velky rozdil proti OpenBSD, ktere z bezpecnostnich duvodu veci, jako je Linuxova vrstva neumoznuje. K cemu je to dobre? Predevsim Netflix a jemu podobni, chraneni _drm_. ## MPD Music Player Daemon ma na FreeBSD jednu zvlastnost, jmenuje se musicpd(1). Jinak je nastaveni v podstate stejne jako na OpenBSD. Tzn. ze daemona nespoustime na urovni systemu, nybrz uzivatele. Prehravanou hudbu pak zprostredkovava _socket_, coz je treba rici vsem frontendum na prehravani zvuku. Osobne volim ncmpc(1) v terminalu a xfmpc(1) jako GTK (GUI) aplikaci. ## Jednoduchy tiling O kousek vyse jsem hanel tiling WM. To neznamena, ze tiling zavrhuju jako koncept. Naopak, povazuju ho za uzitecny, ale jenom za urcitych okolnosti. Tiling WM casto umozuji take stacking, ale pripada mi prirozenejsi spis pouzivat tiling u stacking WM, ktere toto vetsinou take umoznuji. Koneckoncu tato funkcionalita je i u Windows. V instalaci BareGUI na OpenBSD jsem se spolehl pouze na funkce openbox(1) a tiling nastavil v konfiguracnim souboru. Na FreeBSD jsem si dovolil trochu vetsi luxus a vyuzil sluzeb programu wmctrl(1), ktery mezi porty OpenBSD chybi. Pouzivam vermadenuv skript, ktery lze nalezt v sekci Aerosnap. ## Kos ve filemanageru Kos v PCManFM(1) a dalsich filemanagerech je sofistikovanejsi zalezitost, nez by clovek cekal. Vyzaduje instalaci programu gvfs, jenz v sobe nese soubor funkci uzitecnych pro pripojeni ke vzdalenym systemum prostrednictvim nejruznejsich protokolu jako FTP nebo SSH (SFTP). K nim patri mimo jine i funkce kose. Snad se prilis nepletu, nemam to uplne overene, ale dale je treba spustit sluzbu (daemona) dbus. Tu spoustim na urovni celeho systemu. dbus_enable="YES" # do /etc/rc.conf # service dbus start A take jako uzivatel v `~/.xinitrc` (xsession je symlink na xinitrc). if [ -z "$DBUS_SESSION_BUS_ADDRESS" ]; then eval $(dbus-launch --sh-syntax --exit-with-session) fi Jde o zvyk z OpenBSD a nejsem si zcela jist, ze je to nutne. Dbus vykonava funkce dulezite pro desktopova prostredi. Obecne receno zprosredkovava komunikaci mezi programy. Kritici ho povazuji za linuxismus. Nekteri tvrdi, ze ani nezpozorovali, ze nejaky dbus potrebuji, jinym bez nej nefunguje cela rada funkci. Moje vlastni zkusenost je spis druheho typu, takze ho poctive spoustim. ## Externi disky FreeBSD ma sikovny program na spousteni programu, pokud kernel zpozoruje nejakou udalost, napr. pripojeni externiho disku. Jmenuje se devd(8). Spada do stejne kategorie jako hotplug(8) na OpenBSD. Vermaden napsal skript automount, ktery vyuziva funkcionality devd(8). Je v portech, takze lze standardne instalovat. Konfiguracni soubor je `/usr/local/etc/automount.conf`, kde lze mimo jine nastavit filemanager, ve kterem se externi ulozne zarizeni zobrazi. ## Cas Jako posledni vec zminim cas, nebot jsem narazil na nasledujici problem. Pocitac ukazoval o hodinu posunuty cas. Usoudil jsem, ze jsem pri instalaci zadal nepresnou informaci o casu v BIOSu pocitace. Nevadi, reseni je velice jednoduche. Pokud existuje prazdny soubor `/etc/wall_cmos_clock`, znamena to, ze CMOS je nastaveny na lokalni cas. Neni-li tam, CMOS je nastaveny na UTC, coz je i muj pripad. Po smazani souboru se cas spravil. ## Zaver uzaver Jsem se svou instalaci zatim velice spokojen. Vetsina veci funguje bez problemu. Nikterak vykonny stroj reaguje velice svizne, coz je proti ponekud linemu OpenBSD prijemna zmena. Pripojeni do prace funguje podle ocekavani. A po instalaci linuxove vrstvy muze manzelka pohodlne sledovat oblibeny brak na Netflixu. IMG img/freebsd_desktop.png BareGUI na FreeBSD => 2022-05-27-larbs.html [LARBS] => https://mate-desktop.org/ [MATE] => https://www.ghostbsd.org/ [GhostBSD] => https://www.freebsd.org/ [FreeBSD] => https://docs.freebsd.org/en/books/handbook/ [FreeBSD Handbook] => https://vermaden.wordpress.com/freebsd-desktop/ [Vermaden, FreeBSD Desktop] => https://daemonforums.org/ [daemonforums.org] => https://en.wikipedia.org/wiki/Text-based_user_interfacei [TUI] => 2022-06-20-baregui.html [BareGUI] => https://dwm.suckless.org/ [dwm(1)] => https://www.nongnu.org/ratpoison/ [ratpoison] => https://github.com/jcs/sdorfehs [sdorfehs(1)] => https://en.wikipedia.org/wiki/Cwm_%28window_manager%29 [cwm(1)] => http://openbox.org/wiki/Main_Page [openbox(1)] => https://www.musicpd.org/ [MPD] => https://cs.wikipedia.org/wiki/Wmctrl_(program) [wmctrl(1)]