[Linux] Vanilla OS, egy Debian alapú immutable operációs rendszer

A Vanilla OS Egy ideje már szinte csak immutable rendszereket használok, így került a látókörömbe a Vanilla OS, ami egy...

Telepítés, használat

Telepítés

A Vanilla OS telepítőjét egy mindösszesen 2 GB-os "latest.zip" névre hallgató fájlocska tartalmazza. A fájl pendrive-ra írásához ajánlott eszköz a Balena Etcher, de természetesen más programmal is megoldható (Ventoy, Rufus, stb.). A telepítőprogram Gnome környezetben fut, így modern, esztétikus látványt nyújt, és szükség esetén a Gnome által nyújtott össze beállítási lehetőség elérhető (pl. a hálózat konfigurálásához).
Én azt gondolom, a fejlesztők nagyon jó munkát végeztek ezzel a telepítőprogrammal. A működése rendkívül intuitív, egyszer sem volt kérdéses, hova kell kattintanom. Aki sosem telepített még Linuxot, az sem fog elveszni benne, ugyanakkor a haladóbb felhasználók kedvéért elérhetők plusz opciók, továbbá ki van vezetve a felületre a Gparted, amivel bármilyen egyedi partíciós sémát ki tudunk alakítani. Én automatikus partícionálást választottam, a teljes lemez felhasználásával. Opcionálisan titkosítás is kérhető, én éltem a lehetőséggel.
Az egyetlen negatívum, amit fel tudok hozni, az, hogy a telepítés viszonylag hosszú ideig tart.
A telepítéshez egy egyszerű kis útmutató is jár: https://docs.vanillaos.org/handbook/en/installation

Az összes képernyőkép itt:
[kép]
[kép]
[kép]
[kép]
[kép]
[kép]
[kép]
[kép]
[kép]
[kép]
[kép]
[kép]
[kép]
[kép]
[kép]
[kép]
[kép]

Első indítás

Első indításnál nálam valami porszem került a gépezetbe, ugyanis a rendszer nem volt hajlandó bootolni, második alkalommal viszont nem volt ilyen gond (ez adódhat a gépem hibájából is). Reboot után, az EFI bejegyzések közül a "vanilla"-t kézzel kiválasztva viszont már elindult a rendszer.
A Vanilla bootmanagere a Grub, és minden indításnál felkínálja az alábbi két lehetőséget:
- Current State (A)
- Previous State (B)

Hirdetés

Innen tudunk tehát bootolni a jelenlegi partícióra, vagy az eggyel korábbira.
Ami elsőre feltűnt, hogy a lemeztitkosítás jelszó bekérő képernyője szépen ki lett dolgozva (nem csak egy egyszerű prompt a fekete képernyőn, mint pl. Aeon esetében), itt is látszik, hogy a külsőségekre sokat adtak.
A rendszer első indítás alkalmával ismét megkérdezi a billentyűzetkiosztást (immár a telepített rendszerre vonatkozólag), a területi beállításokat, a színsémát (világos/sötét), a gép nevét, majd bekéri az első felhasználói fiók adatait. Ezután következik az, ami a legjobban tetszett a telepítőben, mégpedig hogy kiválaszthatjuk, mely alkalmazásokat telepítse a rendszer. Négy fő kategória van, core applications, office, common utilities és browsers, és mindegyik kategórián belül külön ki-be kapcsolhatjuk a telepítendőket. Én ilyen telepítőre várok már Windows 98 óta! :)

Ha ez megvan, a rendszer telepítése tulajdonképpen kész, már csak egy rövidebb folyamat van hátra a rendszer használatáig. Ez a folyamat magában foglalja a kiválasztott alkalmazások telepítését, és ha elindítjuk a terminált, az alapértelmezett konténer inicializálását is. Sajnos ezek a folyamatok is a vártnál hosszabb időt vesznek igénybe, de azért kivárható, és mellett már elkezdhetjük áttanulmányozni a rendszert.

Az első dolog, amire kíváncsi voltam, a fájlrendszer felépítése, viszont amit az lsblk parancs kiadása után visszakaptam, arra nem voltam teljesen felkészülve:

NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
sda 8:0 0 931.5G 0 disk
`-sda1 8:1 0 931.5G 0 part /media/urandom0/58e52e0e-013d-4190-830f-a91a8fbeb02b
/run/host/media/urandom0/58e52e0e-013d-4190-830f-a91a8fbeb02b
sdb 8:16 0 119.2G 0 disk
|-sdb1 8:17 0 1G 0 part /run/host/boot
|-sdb2 8:18 0 512M 0 part /run/host/boot/efi
|-sdb3 8:19 0 21.6G 0 part
| |-vos--root-init 254:1 0 512M 0 lvm
| |-vos--root-root_tmeta 254:2 0 1G 0 lvm
| | `-vos--root-root-tpool 254:4 0 19G 0 lvm
| | |-vos--root-root 254:5 0 19G 1 lvm
| | |-vos--root-root--a 254:6 0 19G 0 lvm
| | `-vos--root-root--b 254:7 0 19G 0 lvm /usr/local/share/fonts
| | /usr/local/share/icons
| | /usr/local/share/themes
| | /mnt
| | /media
| | /usr/bin/distrobox-host-exec
| | /usr/bin/entrypoint
| | /usr/bin/distrobox-export
| | /run/host/.system/usr
| | /run/host
| `-vos--root-root_tdata 254:3 0 19G 0 lvm
| `-vos--root-root-tpool 254:4 0 19G 0 lvm
| |-vos--root-root 254:5 0 19G 1 lvm
| |-vos--root-root--a 254:6 0 19G 0 lvm
| `-vos--root-root--b 254:7 0 19G 0 lvm /usr/local/share/fonts
| /usr/local/share/icons
| /usr/local/share/themes
| /mnt
| /media
| /usr/bin/distrobox-host-exec
| /usr/bin/entrypoint
| /usr/bin/distrobox-export
| /run/host/.system/usr
| /run/host
`-sdb4 8:20 0 96.1G 0 part
`-vos--var-var 254:0 0 96.1G 0 lvm
`-luks-3f21545a-d182-4c8d-9b30-67c57386a5e6 254:8 0 96.1G 0 crypt /home/urandom0
/var/home/urandom0
/home/urandom0/.local/share/containers/storage/overlay
/home/urandom0
/run/host/opt
/run/host/home/urandom0/.local/share/containers/storage/overlay
/run/host/home
/run/host/var
/dev/pts
sr0 11:0 1 1024M 0 rom
zram0 253:0 0 3.4G 0 disk [SWAP]

Az sda egy egy terabájtos HDD, az nem különösebben érdekes. Hanem ami utána jön...
sdb1 a boot partíció, sdb2 az EFI partíció, eddig oké. sdb3 a fizikai partíció, amin van a két LVM kötet (a current és a future, azaz az A és a B), és némi metaadat. Az sdb4 pedig a titkosított partíció.
Aki jobban ért az LVM-hez, mint én, az próbáljon meg eligazodni rajta, én részemről meg sem próbálom...
Viszont mutatom, hogy néz ki ugyanez Fedora Silverblue esetében, annyi különbséggel, hogy itt nincs titkosítás:

NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
sda 8:0 0 111,8G 0 disk
├─sda1 8:1 0 600M 0 part /boot/efi
├─sda2 8:2 0 1G 0 part /boot
└─sda3 8:3 0 110,2G 0 part /var/home
/var
/sysroot/ostree/deploy/fedora/var
/usr
/etc
/
/sysroot
sdb 8:16 0 465,8G 0 disk
└─sdb1 8:17 0 465,8G 0 part
sdc 8:32 1 0B 0 disk
sdd 8:48 1 0B 0 disk
sde 8:64 1 0B 0 disk
sdf 8:80 1 0B 0 disk
sr0 11:0 1 1024M 0 rom
zram0 252:0 0 3,7G 0 disk [SWAP]

És Aeonnál (teljes lemezes titkosítással):

NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
sda 8:0 0 223.6G 0 disk
├─sda1 8:1 0 4G 0 part /boot/efi
└─sda2 8:2 0 219.6G 0 part
└─aeon_root 254:0 0 219.6G 0 crypt /opt
/usr/local
/home
/srv
/.snapshots
/var
/root
/
zram0 253:0 0 7.6G 0 disk [SWAP]

Vanilla OS esetén A helyfoglalást tekintve így nézünk ki:

$ df -h
Fájlrendszer Méret Fogl. Szab. Fo.% Csatol. pont
tmpfs 3,4G 20K 3,4G 1% /tmp
efivarfs 128K 58K 66K 47% /sys/firmware/efi/efivars
udev 3,3G 0 3,3G 0% /dev
tmpfs 3,4G 252K 3,4G 1% /dev/shm
tmpfs 689M 432K 689M 1% /run/.containerenv
/dev/mapper/vos--root-root--b 19G 5,1G 14G 28% /run/host
tmpfs 689M 4,6M 685M 1% /run/host/run
tmpfs 5,0M 8,0K 5,0M 1% /run/host/run/lock
tmpfs 1,0M 0 1,0M 0% /run/host/run/credentials/systemd-journald.service
/dev/dm-8 97G 21G 75G 23% /run/host/var
overlay 97G 21G 75G 23% /run/host/.system/etc
/dev/sdb1 974M 157M 750M 18% /run/host/boot
/dev/sdb2 511M 4,4M 507M 1% /run/host/boot/efi
overlay 97G 21G 75G 23% /etc/hosts
overlay 97G 21G 75G 23% /
tmpfs 3,4G 92K 3,4G 1% /run
tmpfs 3,4G 0 3,4G 0% /run/lock
overlay 97G 21G 75G 23% /etc/host.conf
tmpfs 689M 12K 689M 1% /run/user/1000

Gondoltam, meglesem a parted kimenetét is, de sajnos a parted nem a barátom:
$ sudo parted -l
/dev/mapper/control: open failed: Permission denied
Failure to communicate with kernel device-mapper driver.
Check that device-mapper is available in the kernel.
Incompatible libdevmapper 1.02.201 (2024-10-02) and kernel driver (unknown version).

Hát jó, akkor dobjunk fel Gparted-ed, hátha az megy. Feldobtam, nem ment. Konkrétan el sem indult. Megnéztem persze terminálból indítva is, hogy mi a jelenség:

$ gparted
Error executing command as another user: No authentication agent found.

Nyilván a polkit agentet hiányolja, de nem volt kedvem szórakozni vele. Annyit azért kipróbáltam, hogy ha Aeon alatt telepítem a Gpartedet konténerbe, ott is fennáll-e a probléma. Igen, ott is.
A rendszer néhány alapvető programot telepít csak fel, és természetesen azokat, amiket a listából kiválasztottunk.

Mint írtam korábban, az APX grafikus felülettel is rendelkezik. Ezzel a programmal a stackeket, a subsystemeket, és a csomagkezelőket tudjuk grafikusan kezelni.

Alapvetően ez nem egy rossz ötlet, de sajnos elég sok bugba belefutottam a használat során. Kezdetnek próbáltam hozzáadni egy OpenSuse konténert, ez sikerült is, bár belépni már nem tudtam, hiba fogadott:

Ezután próbáltam egy Ubuntut, az sem ment. Újraindítottam a gépet, ismét megpróbálkoztam volna az OpenSuse konténer elindításával, de sajnos addigra nyom nélkül eltűnt...
Az Ubuntu konténerbe továbbra sem tudtam belépni.

Viszont létrehoztam egy Fedorás konténert is, ami már az elvárásoknak megfelelően működött. Nem tudom pontosan, mi lehetett a hiba, talán csak a csillagok álltak épp rosszul, mert másnap a paranccsori apx-szel sikerült Ubuntu konténert létrehoznom, és be is tudtam lépni.

Raspberry felcsatolása

Van egy Raspberry PI-m, ezt használom felhős tárhelyként, minden gépemre fel van csatolva. A felcsatolást SSHFS-sel szoktam végezni, sosem szokott vele probléma lenni. Vannilla alatt is megpróbálkoztam a csatolással, és bár a mount parancs hiba nélkül lefutott, a fájlkezelőben még sem jelentz RPi tartalma. Teljesen véletlenül jöttem rá arra, hogy ha viszont elindítom a terminált, és belépek abba a mappába, ahova felcsatoltam az RPi-t, ott teljesen jól látható és használható a tartalma. Rögtön sejtettem, hogy mi lehet a hiba, és miután ellenőriztem, a gyanúm szépen be is igazolódott. Arról van szó, hogy a /home mappa az alaprendszer /home mappájára mutat, míg ha belépsz terminálba, azzal ugye belépsz az alapértelmezett konténerbe, az pedig a konténerizált /home-ot mutatja. És mivel a konténerizált /home nincs "rendesen" átmapelve az alaprenszerbe, így ha a konténerizált /home alá felcsatolsz egy mappát, az csak ott fog megjelenni, az alaprendszerben nem. Szerintem ez így, ebben a formában egy orbitális nagy hiba, még ha esetleg by design nem is bug, hanem "működési sajátosság" vagy bármi, ez egyszerűen akkor is egy hatalmas nagy hülyeség.
Próbáltam megtalálni, hogy pontosan mi lehet az oka ennek a viselkedésnek, hogy mi hova van mountolva, de őszintén szólva én ebben a káoszban képtelen vagyok eligazodni:

$ mount | grep home
/dev/mapper/luks-3f21545a-d182-4c8d-9b30-67c57386a5e6 on /run/host/home type btrfs (rw,relatime,ssd,space_cache=v2,subvolid=5,subvol=/)
/dev/mapper/luks-3f21545a-d182-4c8d-9b30-67c57386a5e6 on /run/host/home/urandom0/.local/share/containers/storage/overlay type btrfs (rw,relatime,ssd,space_cache=v2,subvolid=5,subvol=/)
overlay on /run/host/home/urandom0/.local/share/containers/storage/overlay/4cc9e054398927025d4acea976fdeacfae12f1e9517abdda4549f45160726584/merged type overlay (rw,relatime,lowerdir=/home/urandom0/.local/share/containers/storage/overlay/l/FOAWBTHLAZNVNSGVZHJDA4OT76:/home/urandom0/.local/share/containers/storage/overlay/l/FOAWBTHLAZNVNSGVZHJDA4OT76/../diff1:/home/urandom0/.local/share/containers/storage/overlay/l/Y6N4XWQHM2ZAQQALAAWK7BNWW2,upperdir=/home/urandom0/.local/share/containers/storage/overlay/4cc9e054398927025d4acea976fdeacfae12f1e9517abdda4549f45160726584/diff,workdir=/home/urandom0/.local/share/containers/storage/overlay/4cc9e054398927025d4acea976fdeacfae12f1e9517abdda4549f45160726584/work,redirect_dir=nofollow,uuid=on,userxattr)
overlay on /run/host/home/urandom0/.local/share/containers/storage/overlay/389c308bdc338c78df22e51c6d65e800a0bdc3f723d7d6f57f71fe1b06897827/merged type overlay (rw,relatime,lowerdir=/home/urandom0/.local/share/containers/storage/overlay/l/CXQCIBDLFQOW24OWWOL4XOP2C5:/home/urandom0/.local/share/containers/storage/overlay/l/CXQCIBDLFQOW24OWWOL4XOP2C5/../diff1:/home/urandom0/.local/share/containers/storage/overlay/l/7RASC6VCR6HFUKYGICCCOEEXKO:/home/urandom0/.local/share/containers/storage/overlay/l/UKLZRK43INNG7ZKPS644MMZ5LV:/home/urandom0/.local/share/containers/storage/overlay/l/JOIM6EAAGNQ67RSXVNUOUCLMXN:/home/urandom0/.local/share/containers/storage/overlay/l/BG257UXCI5TWWZSYILVWPAOFWV:/home/urandom0/.local/share/containers/storage/overlay/l/TLBEOZCM4MZUZ6IRSAVYZSNIUL:/home/urandom0/.local/share/containers/storage/overlay/l/W2NBXRWJ3SS2Y5V4N633WSUDL7:/home/urandom0/.local/share/containers/storage/overlay/l/WZJEQJ622B7ZLEZI7VM2XV55MI:/home/urandom0/.local/share/containers/storage/overlay/l/SF6LIH3TJDLMYXKX6LBP7HOBQI:/home/urandom0/.local/share/containers/storage/overlay/l/JCNJ55AHFCU3B34YBZ5KMKEWKS:/home/urandom0/.local/share/containers/storage/overlay/l/XCBTM3OVSQTRS46CNWNLBBO3WU:/home/urandom0/.local/share/containers/storage/overlay/l/2R4CJ7QO4ON7UK2AWJH7QJZQXQ:/home/urandom0/.local/share/containers/storage/overlay/l/UFDRB4HALLSKHUXACZCRSHBPDS:/home/urandom0/.local/share/containers/storage/overlay/l/WTDEDZZKPKMR44ENXTCCNVX646,upperdir=/home/urandom0/.local/share/containers/storage/overlay/389c308bdc338c78df22e51c6d65e800a0bdc3f723d7d6f57f71fe1b06897827/diff,workdir=/home/urandom0/.local/share/containers/storage/overlay/389c308bdc338c78df22e51c6d65e800a0bdc3f723d7d6f57f71fe1b06897827/work,redirect_dir=nofollow,userxattr)
/dev/mapper/luks-3f21545a-d182-4c8d-9b30-67c57386a5e6 on /home/urandom0 type btrfs (rw,relatime,ssd,space_cache=v2,subvolid=5,subvol=/)
/dev/mapper/luks-3f21545a-d182-4c8d-9b30-67c57386a5e6 on /home/urandom0/.local/share/containers/storage/overlay type btrfs (rw,relatime,ssd,space_cache=v2,subvolid=5,subvol=/)
overlay on /home/urandom0/.local/share/containers/storage/overlay/4cc9e054398927025d4acea976fdeacfae12f1e9517abdda4549f45160726584/merged type overlay (rw,relatime,lowerdir=/home/urandom0/.local/share/containers/storage/overlay/l/FOAWBTHLAZNVNSGVZHJDA4OT76:/home/urandom0/.local/share/containers/storage/overlay/l/FOAWBTHLAZNVNSGVZHJDA4OT76/../diff1:/home/urandom0/.local/share/containers/storage/overlay/l/Y6N4XWQHM2ZAQQALAAWK7BNWW2,upperdir=/home/urandom0/.local/share/containers/storage/overlay/4cc9e054398927025d4acea976fdeacfae12f1e9517abdda4549f45160726584/diff,workdir=/home/urandom0/.local/share/containers/storage/overlay/4cc9e054398927025d4acea976fdeacfae12f1e9517abdda4549f45160726584/work,redirect_dir=nofollow,uuid=on,userxattr)
overlay on /home/urandom0/.local/share/containers/storage/overlay/389c308bdc338c78df22e51c6d65e800a0bdc3f723d7d6f57f71fe1b06897827/merged type overlay (rw,relatime,lowerdir=/home/urandom0/.local/share/containers/storage/overlay/l/CXQCIBDLFQOW24OWWOL4XOP2C5:/home/urandom0/.local/share/containers/storage/overlay/l/CXQCIBDLFQOW24OWWOL4XOP2C5/../diff1:/home/urandom0/.local/share/containers/storage/overlay/l/7RASC6VCR6HFUKYGICCCOEEXKO:/home/urandom0/.local/share/containers/storage/overlay/l/UKLZRK43INNG7ZKPS644MMZ5LV:/home/urandom0/.local/share/containers/storage/overlay/l/JOIM6EAAGNQ67RSXVNUOUCLMXN:/home/urandom0/.local/share/containers/storage/overlay/l/BG257UXCI5TWWZSYILVWPAOFWV:/home/urandom0/.local/share/containers/storage/overlay/l/TLBEOZCM4MZUZ6IRSAVYZSNIUL:/home/urandom0/.local/share/containers/storage/overlay/l/W2NBXRWJ3SS2Y5V4N633WSUDL7:/home/urandom0/.local/share/containers/storage/overlay/l/WZJEQJ622B7ZLEZI7VM2XV55MI:/home/urandom0/.local/share/containers/storage/overlay/l/SF6LIH3TJDLMYXKX6LBP7HOBQI:/home/urandom0/.local/share/containers/storage/overlay/l/JCNJ55AHFCU3B34YBZ5KMKEWKS:/home/urandom0/.local/share/containers/storage/overlay/l/XCBTM3OVSQTRS46CNWNLBBO3WU:/home/urandom0/.local/share/containers/storage/overlay/l/2R4CJ7QO4ON7UK2AWJH7QJZQXQ:/home/urandom0/.local/share/containers/storage/overlay/l/UFDRB4HALLSKHUXACZCRSHBPDS:/home/urandom0/.local/share/containers/storage/overlay/l/WTDEDZZKPKMR44ENXTCCNVX646,upperdir=/home/urandom0/.local/share/containers/storage/overlay/389c308bdc338c78df22e51c6d65e800a0bdc3f723d7d6f57f71fe1b06897827/diff,workdir=/home/urandom0/.local/share/containers/storage/overlay/389c308bdc338c78df22e51c6d65e800a0bdc3f723d7d6f57f71fe1b06897827/work,redirect_dir=nofollow,userxattr)
/dev/mapper/luks-3f21545a-d182-4c8d-9b30-67c57386a5e6 on /var/home/urandom0 type btrfs (rw,relatime,ssd,space_cache=v2,subvolid=5,subvol=/)
overlay on / type overlay (rw,relatime,lowerdir=/home/urandom0/.local/share/containers/storage/overlay/l/CXQCIBDLFQOW24OWWOL4XOP2C5:/home/urandom0/.local/share/containers/storage/overlay/l/CXQCIBDLFQOW24OWWOL4XOP2C5/../diff1:/home/urandom0/.local/share/containers/storage/overlay/l/7RASC6VCR6HFUKYGICCCOEEXKO:/home/urandom0/.local/share/containers/storage/overlay/l/UKLZRK43INNG7ZKPS644MMZ5LV:/home/urandom0/.local/share/containers/storage/overlay/l/JOIM6EAAGNQ67RSXVNUOUCLMXN:/home/urandom0/.local/share/containers/storage/overlay/l/BG257UXCI5TWWZSYILVWPAOFWV:/home/urandom0/.local/share/containers/storage/overlay/l/TLBEOZCM4MZUZ6IRSAVYZSNIUL:/home/urandom0/.local/share/containers/storage/overlay/l/W2NBXRWJ3SS2Y5V4N633WSUDL7:/home/urandom0/.local/share/containers/storage/overlay/l/WZJEQJ622B7ZLEZI7VM2XV55MI:/home/urandom0/.local/share/containers/storage/overlay/l/SF6LIH3TJDLMYXKX6LBP7HOBQI:/home/urandom0/.local/share/containers/storage/overlay/l/JCNJ55AHFCU3B34YBZ5KMKEWKS:/home/urandom0/.local/share/containers/storage/overlay/l/XCBTM3OVSQTRS46CNWNLBBO3WU:/home/urandom0/.local/share/containers/storage/overlay/l/2R4CJ7QO4ON7UK2AWJH7QJZQXQ:/home/urandom0/.local/share/containers/storage/overlay/l/UFDRB4HALLSKHUXACZCRSHBPDS:/home/urandom0/.local/share/containers/storage/overlay/l/WTDEDZZKPKMR44ENXTCCNVX646,upperdir=/home/urandom0/.local/share/containers/storage/overlay/389c308bdc338c78df22e51c6d65e800a0bdc3f723d7d6f57f71fe1b06897827/diff,workdir=/home/urandom0/.local/share/containers/storage/overlay/389c308bdc338c78df22e51c6d65e800a0bdc3f723d7d6f57f71fe1b06897827/work,redirect_dir=nofollow,userxattr)
/dev/mapper/luks-3f21545a-d182-4c8d-9b30-67c57386a5e6 on /home/urandom0 type btrfs (rw,relatime,ssd,space_cache=v2,subvolid=5,subvol=/)

Hasonlóan jártam a jelszóváltoztatással is. Elindítottam a terminált, majd a passwd parancssal megváltoztattam a jelszavam, de mivel az alapértelmezett konténer /etc/passwd fájlja a világon semmilyen kapcsolatban nincs az alaprendszer /etc/passwd fájljával, és mivel a rendszer az alaprendszer /etc/passwd fájljábal szedi a jelszavam, ezért hiába is változtatok jelszót, semmilyen hatása nem lesz. A host shellből kell jelszót változtatni, csak akkor van hatása.

Okos frissítések

A Vanilla OS-ben automatikusan be van állítva egy timer, ami bizonyos időközönként lefut, és frissíti a rendszert. A frissítések "okos" módon történnek, ami azt jelenti, hogy bizonyos körülmények fennállása esetén a rendszer nem frissül. Ilyen körülmények pl., ha épp túl magas a CPU használat, vagy ha laptopon használjuk a rendszert, és az nincs töltőn, stb. Ehhez egy nagyon egyszerű kis grafikus segédprogramot is mellékelnek, amiben beállíthatjuk a frissítési gyakoriságot, illetve az "okos" frissítési módszert. Az egyetlen szépséghibája a dolognak, hogy ezt a segédprogramot csak a "Vanilla OS Tour" nevű kis bemutatóprogramból lehet elindítani, így telepítés után megtalálni nem biztos, hogy egyszerű feladat.

SSH elérés

Minden telepítés után az egyik első dolgom az SSH elérés beállítása szokott lenn, Vanilla alatt sem volt ez másképp. A szokásos metódust követtem, elindítottam a terminált, telepítettem az openssh-server csomagot, beállítottam a konfigurációt, és így tovább. Ezzel nem is volt gond, szépen működött, két dolgot kivéve.
Először is, itt megint belefutottam abba, amibe a jelszóváltoztatásnál is. Ugyanis mivel én az alapkonténerbe telepítettem az openssh-servert, ezért az sshd a konténer /etc/passwd fájljából vette a jelszavam, de miután a host shellben megváltoztattam, a konténerben attól még változatlan maradt, így két jelszavam lett, egy a lokális belépéshez, egy pedig az SSH-hoz.
Másodszor, mivel a konténerből futott az sshd, ezért nyilván oda is léptem be, amikor bejelentkeztem SSH-val. Viszont konténerből nem lehet alvó állapotba küldeni a rendszert:

$ sudo systemctl suspend
Call to Suspend failed: Access denied

Kikapcsolni viszont ki lehet, legalábbis a távoli gépről nézve úgy néz ki:

$ sudo systemctl poweroff
Read from remote host 192.168.1.2: Connection reset by peer
Connection to 192.168.1.2 closed.
client_loop: send disconnect: Broken pipe

De ez valójában csak szemfényvesztés, ugyanis ilyenkor semmi más nem történik, mint hogy az alapértelmezett konténer bezáródik, a gép pedig megy tovább, mint ha mi sem történt volna, mivel ugye konténerbe van telepítve az sshd. A megoldás az, hogy az alaprendszerbe kell telepíteni az SSH szervert. Miután ezt megtettem, az elvárt módon működött.

Programok telepítése

Mint ahogy az immutable rendszereknél általában, a programokat jellemzően vagy konténerből, vagy flatpakból/snapból futtatjuk. Vanilla OS esetén a flatpak a preferált, és a Flathub fel is van véve alapértelmezetten a repók közé, ráadásul felhasználói szintű telepítéssel (ami azt jelenti, hogy flatpak programok telepítésénél nem kell jelszót megadnunk).
Konténerbe történő telepítést könnyen végezhetünk apx segítségével:

Android alrendszer

A Vanilla OS-ben lévő Android futtatórendszer a Waydroidon alapszik. Ki szerettem volna próbálni, csak a teszt kedvéért, de sajnos nem jött össze.
Első használat előtt a vso android init paranccsal kell inicializálni az Android konténert, sajnos a 789 MB-os image letöltése borzasztó lassan megy, és közben többször is kéri be a jelszavad.

$ vso android init
Waydroid functionality is currently unstable. Expect bugs and missing features. Continue anyway? [y/N]: y
ERROR The waydroid subsystem is already initialized. Use the --force flag to force the initialization.

Megpróbáltam sudo-val indítani, ez persze nem működik:
$ sudo vso android init
can't run host-shell as root

Mint ahogy a pkexec sem játszik:
$ pkexec vso android init
==== AUTHENTICATING FOR org.freedesktop.policykit.exec ====
Authentication is needed to run `/usr/bin/vso android init --force' as the super user
Authenticating as: urandom0
Password:
polkit-agent-helper-1: pam_authenticate failed: Authentication failure

Úgyhogy kénytelen voltam bevállalni a sokszori jelszóbeírást. Végül végigvártam a kb. 15 perces telepítést, és vagy huszadszorra is megadtam a jelszavam, mire "[20:04:16] Failed to get service waydroidplatform, trying again.." hibaüzenettel végtelen ciklusba került az egész. Innentől fogva hagytam a fenébe az egészet.

Végszó

Nehéz lenne egy mondatban összefoglalnom, mit gondolok a Vanilla OS-ről. Vannak benne jó ötletek, előremutató elképzelések, de jelen állapotában szerintem még nagyon alfa verziós. Bár már a második főverziónál tart, egy nap alatt több bugba szaladtam bele, mint Aeonnál három hónap alatt. Az, hogy a terminál megnyitásakor nem a gazdarendszert látod, hanem egy alap konténert, egy megszokható és megindokolható koncepcionális döntés. Valószínűleg azt gondolták a fejlesztők, hogy ha az ember terminálra vált, akkor azt azért teszi, hogy csomagműveleteket végezzen, ezt pedig egy immutable rendszerben többnyire nem a gazdarendszerben végezzük, hanem konténerben. Viszont szerintem ez nem túl jó döntés, borzasztóan zavaró tud lenni.
Lehet, hogy én is hibás vagyok abban, hogy nem értelmeztem pontosan a kézikönyv vonatkozó részét, mert egyébként le van írva (és el is olvastam), hogy "VSO Shell: VSO Shell is what you see when you open the terminal in Vanilla OS, it is a separate environment from the host system, and it is where you can run commands to install packages and software compatible with Debian-based systems. Please read our article to learn more about VSO Shell.". De a következményeibe (pl. a jelszóváltaoztatás furcsaságaiba) úgy nem igazán gondoltam bele. Mindenesetre, aki Vanillázásra adja a fejét, annak ezzel számolnia kell. Jelen pillanatban én azt gondolom, jobb megoldás az, ha a terminálba az alaprendszerbe nyílik, és explicit módon kell átlépni konténerbe, ha az ember konténerezni szeretne.
Az ABRoot-féle dupla partíciós megoldásra azt mondom, nem rossz, de az Aeon-féle snapshotos megoldás (ami csak BTRFS fájlrendszeren működik), és főleg a Fedora-féle OSTree (ami fájlrendszerfüggetlen), technológiailag sokkal fejlettebb megoldások, ráadásul több visszaállítási pontot is képesek kezelni (a cikk írásának napján, február 11-én, még mindig meg van az Aeon-os telepítésem december 5-i snapshotja, akár vissza is tudnék állni rá, ha akarnék).
Az apx és a vso segédprogramok nem rosszak, az apx főleg akkor tud hasznos lenni, ha az ember több konténert is használ. A vso-t szerintem érdemes lenne szétszedni több különálló parancsra, mert jelenleg túl tág a szerepköre, az Android alrendszer kezelésétől kezdve, a rendszerfrissítésen keresztül, az automatikus feladatok definiálásáig, nagyon sok mindent csinál.
Összeségében az alatt a pár nap alatt, amíg használtam a Vanillát, engem nem igazán győzött meg. A telepítő nagyon jó, sőt, mondhatni példaértékű, a design szép, de ami mögötte van, az sajnos nem túl megnyerő. Én egy percig sem éreztem azt, hogy le akarnám cserélni akárcsak az Aeont, vagy a Fedora Silverblue-t. Talán annak lenne jó a Vanilla, aki mindenképp Debian alapú immutable rendszert szeretne használni valamilyen okból. Egyébként maga a rendszer gyors, nincs nagy erőforrásigénye, tehát ilyen szempontból nem tudok rá rosszat mondani. Ha értékelnem kellene 10-es skálán, én sem tudnék rá egy hatosnál jobbat mondani. Talán majd egyszer jobb rendszer lesz a Vanilla, szerintem erre minden esélye megvan.

Végül pedig egy összehasonlítás az Aeon, a Fedora atomic, és a Vanilla OS-féle atomicitásról:
https://vanillaos.org/blog/article/2024-07-22/interview-with-luca-di-maio-and-mirko-brombin-exploring-immutability-in-vanilla-os-2-orchid#how-does-the-atomicity-approach-in-vanilla-os-compare-to-other-operating-systems