Pred časom sem začel testirati ti. “immutable” Linux distribucije. Že samo googlanje nam našteje kar precej distribucij. Toda kaj pomeni immutable? Sama beseda ima pomen, da se objekt ne more spremenit. Vsem starim Linux mačkom je znan izraz immutable flag na datotečnem sistemu ext2/3/4/btrfs in še katerem. V kolikor smo z ukazom chattr dodali immutable flag, se datoteka ni mogla spremenit. Z varnostnega vidika odlična stvar, jo je pa bilo potrebno ročno implementirati. Nekdaj smo Linux sistema postavljali na zelo varne načine.
Da se vrnem k bistvu, torej immutable OS, bi bil OS, ki ga ni možno spreminjati. Za LiveCD sisteme bi lahko povedali, da ga prav tako ni možno spreminjati, toda koncept je popolnoma drugačen, zato moramo upoštevati sledeče, ko govorimo o immutable OS:
– nadgranje niso narejene na živem sistemu
– spremembe paketov so vidne ob naslednjem bootu sistema
– rollback ne obstaja – vsaj ne na enostavne način
Seznam immutable Linux distribucij od najstarejše do najnovejše je sledeč:
NixOS, Guix, Endless OS, Fedora Silverblue, OpenSUSE MicroOS, Vanilla OS, Alpine Linux, …
NixOS in Guix sta bile do pred kratkim prve in najbolj popularne immutable distribucije, prevzelo jih je kar precej uporabnikov, ki se niso zavedali, da so le te immutable oz. niso vedeli kaj naj bi to pomenilo, več o teh distribucijah, kakor tudi prevzem si lahko preberete na uradnih spletnih straneh:
NixOS official project website
Obe imajo lasten package manager, ki vse podatke o paketih in le te same zapisuje v RO (read only) imenik, do katerega ima samo on sam (package manager) pravice pisanja. V primeru te distribucije, je operacijski sistem, dobesedno stranski izdelek ti. package managerja.
Sledi Endless OS, ki je baziran na Debianu in uporablja OSTree za to da doseže “immutable” načine. Razdelki (particije) so priklopljene (mount) v pisalnem (write) načinu, razen /usr, kjer je glavnina paketov s katerimi dela OSTree. Programi, ki so narejeni za uporabnika, torej ne sistemski, so nameščeni z uporabo flatpaka, kar omogoča, da po vsaki posodbitvi pakete ne potrebujemo ponoven zagon računalnika.
Naslednja je Fedora Silverblue, ki je naslednik Project Atomic, ki sem ga uporbljal pred leti in ravno s tem projektom so želeli dosečti, da bi Fedora / CentOS / RHEL naredili kot immutable OS. Fedora SB uporablja OSTree ampak rahlo modificiran, le ta se imenuje rpm-OSTree. Distribucija je sestavljena iz jedra (core) in nad jedrom je distribucija paketov. Čim več paketov nameščamo, več ti. “stackov” imamo in pri tem je zadeva počasna. Podobno kot pri predhodiniku za za distribucijo uporabniških programov uporabi flatpak ali toolbox. Tukaj sem se tudi prvčl srečal s toolboxom in mi je postal všeč.
Gremo sedaj k OpenSuse Micro, ki je spin od OpenSuse Tumbleweed, ki doseže immutable način z lastno implementacijo. Vsi imeniki MicroOS, razen /home in /var so snapshoti BTRFS datotečnega sistema. Če v sistemu naredimo spremembo, se iz trenutnega stanja (snapshota) naredi nov snapshot in vse spremebe so v novem snapshotu in čakajo na ponovni zagon sistema. Kot zanimivost je to, da je imenik /etc del snapshota in se lahko povrne v prejšnje stanje, kar ni možno pri OSTree baziranih distribucijah. Lahko tudi spremenite datoteke, ki bodo žive v novem snapshotu. S tem se izognemo težavam z gonilniki, ampak naš sistem ne bo več čist in lahko pride do težav, katere seveda lahko odpravimo z malo več znanja. Ker je MicroOS ti. rolling distribucija, moramo biti pripravljeni na vsakdanje ponovne zagone, ampak lahko seveda avtomatiko tudi izklopimo. V pomoč nam pride distrobox, ki skrbi za rootless kontejnerje s katerimi nameščamo programsko opremo.
Popularna sta še Vanilla OS, ki ga še nisem imel čas testirat in Alpine Linux z LBU. Alpine Linux uporabljam občasno kot base sistem za zagon. Trenutno se mi zdi še precej zapleten in slabo dokumentiran. Mu dam še možnost v prihodnje, ko bo seveda čas.
Za zaključek:
Ali bi uporabljali immutable OS? Odvisno od potreb, meni je všeč Fedora SilverBlue in MicroOS. MicroOS zaradi OSTree, Fedora zato, ker sem pred 10 letu uporabljal Project Atomic. Tak način dela ni povsem nov, že Solaris je uporabljal ZFS, kjer smo si lahko izbrali iz katerega ZFS snapshota želimo naš sistem ponovno zagnat. BTRFS je to še olajšal tudi v Linux svetu. Vsaka od naštetih distribucij ima najmanj eno stvar, ki mi je všeč. Če bi vse omenjene distribucije združil v eno, bi dobil popolno / varno immutable distribucijo. Morda se bom enkrat premislil in bom naredil lastno distribucijo, ki bo zadostovala vsem mojim potrebam.