Date: 2024-04-07 15:30:07 Tags: technologie Desc: Po delsi dobe staronovy ponor do tech sveta. # Void Linux CLI Muj zamestnavatel se mnou zrejme hraje na sifru mistra Leonarda. Kvuli tomu jsem opet musel opustit predvidatelny svet BSD a vrhnout se do nebezpecnych vod Linuxu, nebot pozadovanou aplikaci se mi pod FreeBSD nepodarilo zkompilovat. K tomuto experimentu jsem si nakonec vybral Void. Proc? Inu, dosti se podoba BSD. Velka distra obchazim obloukem. Zkusil jsem Artix, ktery pouziva Luke Smith a se kterym jsem mel v minulosti dobrou zkusenost. Domnival jsem se, ze tim budou me problemy vyreseny, ale spletl jsem se. Asi byly skvrny na slunci, ale v porovnani s Voidem se Artix zachoval jako splaseny kun. Nemel jsem chut neco hackovat a tak dostal stabilnejsi Void Linux prednost. Na filozofii _delat jednu vec a delat ji poradne_ nejspis neco bude ;-) Void je samostatne distro, ne nejaky klon. Void pouziva jen jeden INIT system, nikoliv pul tuctu. Void nabizi jen jedno desktopove prostredi (DE), nikoliv pul tuctu. Pouziva jen vlastni balicky a nikoliv cizi, atd. Vysledkem je stabilita. Alespon na mych strojich. Opet jsem si musel leccos ozivit a necemu se priucit. O to se zde chci nyni podelit. ## Live Image Void nabizi ISO images zalozene na knihovnach `glibc` a `musl`. Glibc je standard, proto moje volba padla na tento obraz. Musl je rychlejsi, coz uz jsem si kdysi overil, ale v tuto chvili me zajimala hlavne bezproblemovost. Vyvojari Voidu dale nabizi obrazy "base" a "xfce". Pokud chcete mit DE rychle a bezbolestne, Xfce je spravna volba. Rekl bych, ze ze vsech desktopovych prostredi je Xfce nejuniverzalnejsi. Funguje stejne dobre v BSD i na Linuxu a jeho systemove naroky nejsou nijak prehnane. Je to jistota, ktera nezklame. Ncurses instalator je podobny jako u FreeBSD a instalace byla bezproblemova. Xfce je vyladene a vybavene potrebnymi zakladnimi programy. ## Xfce a Bspwm Uz nejakou dobu mam chut opet vyzkouset cistokrevny tiling, ale nechtelo se mi odinstalovavat Xfce, ktere jsem testoval. DK, pomerne novy tiling window manager, pod Xfce nefungoval dobre, predevsim nefungovaly plochy. Panel neukazoval jejich pocet, ani nesly prepinat. Odzkousene reseni se jmenuje Bspwm. To je zjevne snadneji integrovatelne s moduly Xfce. Uprimne receno, nejsem velky fanda Bspwm. Je to tak trochu autisticky program. Velmi sofistikovany, umoznujici nejnemoznejsi nastaveni. V defaultu je tam smerove i casove prepinani oken, prepinani oken v ramci vytvorenych vetvi. Vetvovy charakter Bspwm toto vsechno umoznuje a jeste mnohem vic. Az prilis, mozna. Porad mi pripada, ze model master/stack je v prostredi tiling window manageru nejpraktictejsi. U DK je master/stack zaklad, i kdyz umoznuje jednoduche prepinani jinych modelu. Ale abych jenom nekritizoval, Bspwm je take velmi rychly WM a jeho konfigurace je jednoducha. Instalace a nastaveni Bspwm je snadne. Staci zkopirovat 2 konfiguracni soubory z `/usr/share/examples` do `~/.config/bspwm` a `~/.config/sxhdrc`. Sxhkd je program, kde se nastavuji klavesove zkratky pro ovladani Bspwm, protoze to defaultne zadne ovladani nema. Ma pouze cosi jako API, tedy radu prikazu, s jejichz pomoci lze manipulovat s okny, pracovnimi plochami a monitory. Bez Sxhkd ale nelze tyto prikazy (jednoduse) spoustet. Nepustime si ani xterm. Nyni je treba rici Xfce, ze chceme pouzivat Bspwm. Xfce se nastesti sklada z vicemene samostatych modulu, jako vetsina DE v unixovskem prostredi. Window manager v Xfce se nazyva xfwm4. Ten je treba vypnout v _Session and Startup_. Aby se navzajem nepletly klavesove zkratky ovladajici Bspwm, je treba zrusit Xfce hotkeys. Jinak nebude Sxhkd nebude fungovat. Vsechny hotkeys se daji jednoduse oznacit vse a vymazat. Tlacitko "Default" umi vratit vsechny klavesove zkratky zpatky. Xfce nema vlastni display manager, takze se casto pouziva LightDM. Stejnou volbu ucinili i vyvojari Void Linux. Odtud se spousti session (prihlaseni) a volime vzdy Xfce, ackoliv LightDM muze nabizet i Bspwm. Ostatni volby ignorovat, nebudou fungovat (nektere?) moduly Xfce. Pokud chceme zmenit defaultni wallpaper, lze to provest napr. s pomoci programu wallpaper. Prikaz `xwallpaper --center /cesta/k/obrazku.png` je potreba dat na konec konfigu `~/.config/bspwm/bspwmrc`. To nastavi wallpaper po prihlaseni, ale v samotnem session manageru muze nadale zustava defaultni pozadi Xfce (to s mysi). Je treba editovat soubor `/etc/lightdm/lightdm-gtk-greeter`. Nekde na konci jsou promenne `background` a `user-background`. Zde je treba nastavit hodnoty `user-background=false` a `background=/cesta/k/obrazku.png`. Tak se objevi stejny wallpaper uz pri spusteni LightDM. Kombinace Xfce panelu a Bspwm je docela pouzitelna, ale mira integrace neni uplna. Asi je mozne doladit jiste nedokonalosti. To vsak nebyl muj cil. ## Jak zastrihovat bonsai? Cilem bylo DK na pokud mozno minimalistickem podstavci zakladni instalace Void Linux v sifrovanem ZFS. Sifrovani na notebooku povazuju za nezbytnost a ZFS umoznuje _snapshots_, velice jednoduchy zpusob, jak delat otisky stavu systemu v case, ke kterym je mozne se pozdeji, v pripade potreby, vratit. Nepovedeny upgrade ci nechtene `rm -rf ` se tak daji krasne vratit zpatky. Mimochodem, ZFS je nejlepe integrovane pod FreeBSD a v Linuxu je tak trochu popelka. Void Linux je jedno z mala dister, kde ma ZFS temer prvotridni podporu. Maly problem je v tom, ze nelze pouzit standardni ncurses instalator. Ten totiz neumi ani sifrovani, ani ZFS. Takze je treba na to jit pekne po staru, s pomoci programu `chroot`, jako pri instalaci Arch Linuxu. ## ZFS a krypto Nebudu zde popisovat, jak se instaluje Void Linux se ZFS. Toho se uz zhostil Unixsheikh a lepe to urcite nesvedu. Doplnim jedinou vec, ktera v jeho tutorialu chybi: je potreba vytvorit soubor `/boot/syslinux/syslinux.cfg`. Bez neho nelze nabootovat. Nastesti je jeho syntax velmi jednoduchy. V podstate jen rika bootloaderu, kde najde `vmlinuz` a `initramfs`. Pozor, dle Unixsheikhova navodu jsou oba soubory v adresari `/boot/syslinux/zfsbootmenu`. Viz zde. Nejjednodussi obsah je zhruba tento: DEFAULT Linux SAY Now booting the kernel from SYSLINUX... LABEL Linux KERNEL zfsbootmenu/vmlinuz-2.3.0_2 APPEND ro root=/dev/sda1 initrd=zfsbootmenu/initramfs-2.3.0_2.img Vetsina linuxovych distribuci pouziva GRUB, ale zde nabootujeme pres "ZFSBootMenu", linuxovsky bootloader inspirovany FreeBSD. ## Nastaveni konzole Zatimco OpenBSD nabizi po instalaci vicemene plnohodnotny system, Void Linux je v podstate hola kostra. Krome roota zatim neexistuje zadny uzivatel, nejsou spusteny takrka zadne sluzby (v BSD daemoni), neni instalovan graficky system (Xorg, Wayland), zadne audio, dokonce ani networking nefunguje. To je z velke casti take dano tim, ze jsme instalovali rucne. Na OpenBSD bych se snazil maximalne vyuzit vseho, co cista instalace nabizi, coz neni nic vic a nic mene nez graficky desktop. Vzhledem k orientaci OpenBSD na zabezpeceni systemu je zcela primerenou strategii instalovat co nejmene balicku tretich stran. V zasade staci nainstalovat browser, provest konfiguraci systemu a jedeme. Naopak ve Voidu je treba zacit uplne od piky a je zcela na miste vyuzit bohate nabidky softwaru z jejich repozitaru. Ma to sve vyhody: clovek se leccos nauci o fungovani operacniho systemu, coz je jediny duvod, proc jsem kdy uvazoval o instalaci Gentoo Linuxu. Pojdme tedy na vec. ### Shell First things first. Konzole a shell nejsou totez. Defaultni rootovsky shell je ve Voidu _dash_. Je to rychly, ale velmi jednoduchy shell. Chceme-li alespon historii, je dobre zmenit rootovsky shell na `bash` s pomoci programu `chsh`, coz je v unixovskem prostredi standard. Alespon docasne, pokud je to bezpecnostni riziko, coz asi je. Brzy to ocenime, nebot vetsinu nasledujicich uprav provadime jako root. # chsh /* spust a nasleduj bileho kralika */ ### Snapshot Po prvnim nabootovani je vhodne udelat ZFS snapshot a nasledne hned po updatu systemu. Nyni muzeme zkouset nevidane i neslychane a pak se znovu vratit na zacatek, bude-li treba. Prikazy kopiruju z Unixsheikhova tutorialu. # zfs list -t all # zfs snapshot zroot/ROOT/void@$(date +%Y-%m-%d-%H%M) ### Sluzby Spousteni sluzeb (daemonu) ma na svedomi _runit_, iniciacni program (init) a spoustec sluzeb. Spousteni sluzeb je v ramci runitu neuveritelne jednoduche, pouhe vytvoreni mekkeho symlinku sluzby do prislusneho adresare. Navic znacne urychluje nabihani systemu (oproti systemd). Runit byl jednem z duvodu, proc moje volba padla na Void Linux. Spustime tedy sluzby `dhcpcd` a `sshd`. # ln -s /etc/sv/dhcpcd /var/service # ln -s /etc/sv/sshd /var/service # sv status sshd /* overi stav sluzby sshd */ # sv status dhcpcd /* overi stav sluzby dhcpcd */ Chceme-li sluzbu zase zrusit staci symlink z dane slozky vymazat. ### Update a instalace programu Nyni muzeme provest update systemu (Void je tzv. rolling release). Je mozne zmenit repo na nejake geograficky blizsi. Jak, to ponecham na zvedavosti ctenare. Take nainstalujeme par sikovnych aplikaci. # xbps-install -Su /* update systemu */ # xbps-install -S tmux neovim links2 /* uzitecne aplikace */ # xbps-install -S xtools /* nadstavba xbps */ # xbps-query -Rs /* hledani v repo */ # xbps-remove -o /* odinstalace, vcetne zavislosti */ Program `xcheckrestart` je soucasti xtools. Restartuje sluzby v pripade zmen, coz xbps samotne neudela. ### Zakladani uzivatelu Dale vytvorime uzivatele a nastavime mu spravcovska prava. K tomu slouzi univerzalni unixovsky program. # useradd -m -G wheel,lp,audio,video -s /bin/bash -p Heslo lze zmenit pomoci programu `passwd`. ### Cestina v TTY Na rade je cestina v konzoli. Proc se obtezovat? Nezapomenme, ze dosud neni instalovan Xorg, nemuzeme spoustet GUI programy, ani xterm. Nemuzeme si delat korektni poznamky. V konzoli se da i docela dobre zit, je-li clovek poustenik (zdravime -prahou-). I kdyz clovek neni tak spartanskeho ducha, stale je dobre se v TTY alespon orientovat. Takze zpatky k pocesteni konzole. V OpenBSD je to problem, v Linuxu nikoliv. Potrebujeme nastavit spravny font, spravne rozlozeni klavesnice, spravny mod konzole a jako spravni _vi-lains_ prohodit klavesy Caps Lock a Escape. *) Na druhou stranu, v OpenBSD je Xenocara (klon Xorgu) soucasti zakladni instalace a jeho vyvojari doporucuji pouzivat xenodm(1), ktere je take v defaultu, jako bezpecnejsi zpusob prihlaseni do Xenocary. Rekl bych, ze je obecne dobra strategie pouzivat produkty tak, jak zamysleny a podle toho navrzeny. To jsou dalsi dobre duvody, proc na OpenBSD zcela bezskrupulozne pouzivam graficke prostredi. Nejprve fonty. V TTY se pouzivaji bitmapove fonty, kde se, zjednodusene receno, pro kazdou velikost pisma pouziva jiny bitmapovy obrazek. Zde pouzijeme velikost "16". Dale je tu problem ceskych znaku. Znakova sada "latin1" znamena Zapadoevropske jazyky, "latin2" je pro Stredoevropske. Nas font tedy musi mit v nazvu "latin2" a "16". Z dostupnych fontu je to "lat2-16" nebo "Lat2-Terminus16". Terminus zni jako dobra volba. Nyni, kdyz umime zobrazovat spravne znaky, musime naucit nasi klavesnici je vyvolat. Existuje nekolik ceskych rozlozeni klavesnice, napr. zakladni `cz`, ale me osobne pripada nejvhodnejsi ceske programatorske `cz-lat2-prog`, nebot defaultne ukazuje americkou klavesnici a na ceskou se prepina pomoci prave klavesy Alt (kudos -prahou-). Jde samozrejme o QWERTY. Ted vyzkousime, zda vybrane nastaveni funguje. # loadkeys cz-lat2-prog /* rozlozeni klavesnice */ # setfont lat2-16 -m 8859-2 /* pouzitelny font */ # setfont Lat2-Terminus16 -m 8859-2 /* klasika font */ Pokud ano, trvale nastaveni lze provest v souboru `/etc/rc.conf`, kde uz prislusne radky FONT a KEYMAP jsou, avsak zakomentovane. Pod defaultnim vi pouziva Void Linux editor nvi, dalsi dedictvi BSD. Bez vi a jeho klonu si praci v terminalu nedovedu predstavit a i v samotnem terminalu preferuju tzv. vi mod. A protoze Escape hraje ve vi zasadni ulohu, je lepsi mit ho vic po ruce a ne nekde v rohu klavesnice. Jednou z moznosti je prohodit Escape s klavesou Caps Lock. Jak to udelat? # dumpkeys > backup.kmap /* zaloha aktualniho rozlozeni klaves */ $ showkey /* vetsinou vraci Escape=1, CapsLock=58 */ # dumpkeys | grep 1 | more /* zjisti nazev prislusneho znaku, */ # dumpkeys | grep 58 /* pravdepodobne `Escape` a `Caps_Lock` */ Nejprve zazalohujeme aktualni rozlozeni klaves. Program showkey nas vyzve ke stisknuti pozadovanych klaves a vrati prislusne cislo klavesy. Nasledne najdeme, co se v aktualnim rozlozeni klaves pod timto cislem ukryva. Nakonec vytvorime soubor s novym rozlozenim klaves. Nazveme ho treba `swap_escape.kmap` a bude obsahovat nasledujici (hodnoty vychazeji ze zjisteneho). keymaps 0-127 keycode 1 = Caps_Lock keycode 58 = Escape Jak vidno, neni treba prepisovat cele rozlozeni. Prehozeni vyzkousime takto: # loadkeys swap_escape_capslock.kmap Escape lze vyzkouset pomoci Ctrl-V a ESC (nove). Melo by vratit `^[`. Bude-li fungovat, trvalou zmenu provedeme v souboru `/etc/rc.local` nasledujicim zpusobem. # osobni nastaveni set -o vi /usr/bin/loadkeys /home/user/cesta/k/swap_escape.kmap ## To be continued... Unix-poustevnik zde muze take skoncit. Ma k dispozici tmux, jenz dokaze v TTY castecne simulovat okna. (N)vi je soucasti zakladni instalace, neovim k dispozici v repozitarich, pokud potrebujeme sofistikovanejsi editor. A pak je tu links2, textovy browser, se kterym sice nenakoupime v eshopu, ani neodesleme platbu v bance, ale to poustevnici beztak nedelaji. Kolega ma na svych strankach nekolik sikovnych tutorialu na links2 (chysta i neco vetsiho) nebo prehravani videa s pomoci mpv. Priznam se, ze prehravat video ve voidovskem TTY jsem zatim nezkousel. Ale ve FreeBSD to fungovalo. V pokracovani se podivame na slavne GUI. => https://dalnopis.desudoli.cz/2022-05-27-larbs.html [LARBS] => https://github.com/baskerville/bspwm [Bspwm] => https://docs.xfce.org/xfce/xfwm4/introduction [xfwm4] => https://github.com/natemaia/dk [DK window manager] => https://unixdigest.com/tutorials/void-linux-root-on-an-encrypted-zfs-mirror-with-syslinux-mbr-and-zfsbootmenu.html [Void Linux root on encrypted ZFS mirror] => https://wiki.syslinux.org/wiki/index.php?title=Config [wiki.syslinux.org] => https://docs.zfsbootmenu.org/en/v2.3.x/ [ZFSBootMenu] => http://triapul.cz/automa/ [triapul.cz/automa/]