Vývojári AerynOS, predtým známeho ako SerpentOS, publikovali rozsiahly článok, v ktorom odhaľujú detaily konceptu a technickej realizácie projektu s odôvodnením prijatých architektonických rozhodnutí. Vedúci projektu Ikey Doherty zdôrazňuje, že AerynOS nie je len "ďalší Linuxový distribučný systém", ale platforma, základ a súbor nástrojov, vytvorených v súlade s jasným víziou.
Hlavná myšlienka projektu je formulovaná ako otázka: "Čo ak sa operačný systém bude chovať ako moderná infraštruktúra?" AerynOS je predstavený ako odpoveď na túto otázku — systém vytvorený od základov, ktorý nesleduje tradičný model zabudovaných mutácií v rámci distribúcie. Projekt sa opiera o skúsenosti autorov v oblasti vývoja iných distribúcií, vrátane Solus a Clear Linux.
Medzi kľúčové technické rozhodnutia AerynOS patrí:
- Použitie nástrojov LLVM namiesto GNU, s použitím libc++ a compiler-rt ako predvolené. Vývojári vysvetľujú toto rozhodnutie nielen preferenciou pre LLVM, ale strategickým výberom na používanie kvalitnejšej diagnostiky, zabezpečenie správnosti a prenosnosti balíkov. Systém pritom využíva glibc namiesto musl, čo je vedomý výber v prospech kompatibility a výkonu.
Ako je uvedené v článku: "Výhoda glibc nad musl v oblasti výkonu je dobre zdokumentovaná, najmä pre výpočtovo náročné pracovné zaťaženia a aplikácie, ktoré vyžadujú optimálny výkon viacnásobného spracovania." Tvorcovia zdôrazňujú, že ich cieľom je vybudovať funkčný a použiteľný systém pre množstvo aplikačných scenárov.
- Koncepcia "statelessness" (bez štátu) — balíkom je zakázané obsahovať akékoľvek súbory mimo adresára /usr. Ako vysvetľujú vývojári, tento prístup núti zabezpečiť rozumné predvolené hodnoty na všetkých úrovniach a eliminuje "hrozné konflikty trojstranného zlúčenia pri aktualizácii balíkov". Neexistujú žiadne konflikty, pretože všetko v /etc a /var patrí používateľovi, zatiaľ čo /usr je výhradne pre systém. Koncepcia bola vyvinutá v časoch Clear Linux a Solus a v AerynOS získala ďalší rozvoj.
- Atomické aktualizácie — každá transakcia moss je atomická. Systém rýchlo vytvára nový strom /usr pomocou tvrdých odkazov z deduplikovaného cache. Po úspešnom vytvorení a príprave je nový strom atomicky vymenený. Vlastne pripravená transakcia sa vymení s reálnym adresárom /usr pomocou renameat2 s príznakom RENAME_EXCHANGE. Aktualizácia sa buď vykoná úplne, alebo sa nevykoná vôbec, bez medzistavov.
- Správa bootovania na základe projektov blsforme a disks-rs. Osobitosť prístupu spočíva v tom, že systém dynamicky formuje parametre pre príkazový riadok jadra tým, že číta superbloky zariadení koreňového súborového systému, preto v AerynOS nie je konfiguračný súbor, ktorý obsahuje parameter „root=“. Navyše, identifikátor transakcie moss je kódovaný v príkazovom riadku jadra a spracováva sa počas skorého bootovania v initramfs. „Ak to zhrnieme, znamená to, že každé jadro je správne synchronizované s príslušným koreňovým súborovým systémom, a spätný chod je lacný, jednoduchý a dostupný priamo z ponuky bootovania,“ vysvetľujú vývojári. Ďalšou výhodou je absencia /etc/default/grub, a ak bude ESP vymazané, moss ho môže obnoviť od nuly.
- Formát balíkov .stone je vlastný binárny formát balíkov so záhlavím nezávislým od verzie na zabezpečenie budúcich zmien. Každý balík .stone obsahuje štyri konkrétne typy údajov (payload), z ktorých každý môže nezávisle vyvíjať vďaka verziovaniu:
- Obsahová záťaž (Content payload) — sekvenčný blok deduplikovaných údajov, teda samotného obsahu súborov balíka.
- Indexová záťaž (Index payload) — obsahuje posuny pre obsahovú záťaž, indexované podľa hash XXH128 obsahu (plánuje sa prechod na Blake3). To umožňuje efektívne vyhľadávanie a extrakciu údajov.
- Rozloženie záťaže (Layout payload) — popisuje predpokladané rozloženie súborového systému pri aplikácii balíka, teda kam a aké súbory by sa mali nainštalovať.
- Metadáta (Metadata payload) — sekvencia striktne typovaných, označených záznamov metadát, ako je názov balíka, poskytované funkcie a pod.
Komprimácia všetkých záťaží sa vykonáva pomocou Zstd, čo zabezpečuje vynikajúci výkon rozbalenia pri zachovaní dobrého koeficientu kompresie. Proces „inštalácie“ .stone sa radikálne líši od iných systémov. Namiesto priamej inštalácie súborov sa balík vyrovnáva do cache a jeho obsah sa prepletá do spoločného úložiska s adresovaním podľa obsahu (CAS). Metadáta a informácie o rozložení sa uchovávajú oddelene a používajú sa pri vytváraní transakcie. Tento prístup zabezpečuje atomickosť aktualizácií a možnosť návratu, pretože každá transakcia vytvára nové koreňové oddelenie, namiesto toho, aby modifikovala existujúce.
Vývojári zdôrazňujú, že súčasný prístup s emuláciou imperatívneho riadenia balíkov je „úplne nezmyselný“ a „v skutočnosti zavádza viac chýb, než rieši“. Keďže pre každú transakciu sa vytvára nová koreňová súborová sústava, v budúcnosti sa plánuje vytvorenie nového grafu pre každú transakciu a opustenie zabudovaných zmien v prospech deklaratívneho prístupu, podobne ako Gentoo alebo Nix.
Ďalšie zaujímavé vysvetlenie sa týka nemennosti (immutability). Tvorcovia zdôrazňujú, že často je AerynOS popisovaný ako nemenný OS, ale „to nie je úplne pravda“. Hoci každá transakcia vedie k novému stromu /usr a lokálne zmeny nie sú uchovávané, systém nie je nemenný v zmysle prístupu iba na čítanie. V budúcnosti sa plánuje implementácia skutočnej nemennosti systému bez nutnosti reštartovania s použitím erofs a overlayfs.
V súčasnosti AerynOS aktívne napreduje, už vydáva ISO obrazy s prostredím GNOME, je vhodný na hranie (podpora ovládačov NVIDIA, Steam, Flatpak), má reálnych používateľov, ktorí poznamenávajú stabilitu a inovatívnosť systému. Podľa vývojárov je projekt v alfa verzii a nie je bez problémov, ale už predstavuje celistvý systém, ktorý „jednoducho funguje“.
Zdroj: opennet.ru
