De ontwikkelaars van AerynOS, voorheen bekend als SerpentOS, hebben een uitgebreid artikel gepubliceerd waarin de details van het concept en de technische implementatie van het project worden onthuld, inclusief de onderbouwing van de architectonische keuzes. Projectleider Ikey Doherty benadrukt dat AerynOS niet gewoon "weer een Linux-distributie" is, maar een platform, fundament en set tools, ontwikkeld volgens een duidelijk visie.
De belangrijkste idee van het project is geformuleerd als een vraag: "Wat als een besturingssysteem zich gedraagt als moderne infrastructuur?" AerynOS wordt gepresenteerd als het antwoord op deze vraag ā een systeem dat vanaf de grond is opgebouwd en niet gebaseerd is op de traditionele modellen van ingebedde mutaties binnen een distributie. Het project is gebaseerd op de ervaring van de auteurs met de ontwikkeling van andere distributies, waaronder Solus en Clear Linux.
Onder de belangrijkste technische beslissingen van AerynOS vallen:
- Het gebruik van de LLVM-toolchain in plaats van GNU, met libc++ en compiler-rt als standaard. De ontwikkelaars leggen deze keuze uit als een strategische beslissing om gebruik te maken van betere diagnostiek, correctheid en draagbaarheid van pakketten. Tegelijkertijd gebruikt het systeem glibc in plaats van musl, wat een bewuste keuze is voor compatibiliteit en prestaties.
Zoals vermeld in het artikel: "Het voordeel van glibc boven musl in termen van prestaties is goed gedocumenteerd, vooral voor computationeel intensieve werkbelastingen en toepassingen die optimale prestaties in multithreading vereisen." De makers benadrukken dat hun doel is om een goed werkend, bruikbaar systeem te bouwen voor veel verschillende toepassingen.
- Het concept van 'statelessness' (geen status opslaan) ā pakketten mogen geen bestanden buiten de map /usr bevatten. Zoals de ontwikkelaars uitleggen, dwingt deze aanpak om redelijke standaardwaarden op alle niveaus te waarborgen en elimineert het "vreselijke conflicten van driedimensionale samenvoeging bij het bijwerken van pakketten." Er zijn geen conflicten omdat alles in /etc en /var aan de gebruiker toebehoort, terwijl /usr uitsluitend aan het systeem toebehoort. Dit concept werd ontwikkeld tijdens de tijd van Clear Linux en Solus, en in AerynOS heeft het verdere ontwikkeling gekregen.
- Atomische updates ā elke moss-transactie is atomisch. Het systeem maakt snel een nieuwe boom /usr aan met behulp van harde links uit de gededupliceerde cache. Na een succesvolle creatie en voorbereiding wordt de nieuwe boom atomisch vervangen. De feitelijk voorbereide transactie wordt uitgewisseld met de echte map /usr met behulp van renameat2 met de vlag RENAME_EXCHANGE. De update wordt ofwel volledig uitgevoerd, of helemaal niet, zonder tussenliggende toestanden.
- Projectgebaseerde opstartbeheer met blsforme en disks-rs. De eigenschap van de aanpak is dat het systeem dynamisch parameters voor de kernelcommandoregel vormt door de superblokken van de apparaten van het rootbestandssysteem te lezen, daarom is er in AerynOS geen configuratiebestand dat de parameter "root=" bevat. Bovendien wordt de moss-transactie-ID gecodeerd in de kernelcommandoregel en verwerkt tijdens het vroege opstarten in initramfs. "Kortom, dit betekent dat elke kernel correct is gesynchroniseerd met het overeenkomstige rootbestandssysteem, en terugdraaien is goedkoop, eenvoudig en toegankelijk direct vanuit het opstartmenu," leggen de ontwikkelaars uit. Een ander voordeel is het ontbreken van /etc/default/grub; als de ESP gewist wordt, kan moss deze vanaf nul herstellen.
- Het .stone-pakketformaat is een eigen binair pakketformaat met een versie-onafhankelijke header voor toekomstige aanpassingen. Elk .stone-pakket bevat vier specifieke soorten gegevens (payload), die onafhankelijk kunnen evolueren dankzij versiebeheer:
- Contentpayload ā een opeenvolgende blok gededupliceerde gegevens, dat wil zeggen de eigenlijke inhoud van de pakketbestanden.
- Indexpayload ā bevat offsets voor de contentpayload, geĆÆndexeerd op de hash XXH128 van de inhoud (overgang naar Blake3 is gepland). Dit maakt het mogelijk om gegevens efficiĆ«nt te vinden en te extraheren.
- Layoutpayload ā beschrijft de verwachte lay-out van het bestandssysteem bij het toepassen van het pakket, dat wil zeggen waar en welke bestanden moeten worden geĆÆnstalleerd.
- Metadata-payload ā een reeks strikt getypeerde, gemarkeerde metadata-records, zoals de naam van het pakket, geboden mogelijkheden, enz.
Compressie van alle workloads wordt verzorgd door Zstd, wat uitstekende decompressieprestaties levert met een goed compressieverhouding. Het installatieproces van .stone wijkt fundamenteel af van andere systemen. In plaats van dat bestanden direct worden geïnstalleerd, wordt het pakket gecached en wordt de inhoud verweven in een gezamenlijke opslag met inhoudsgeadresseerde opslag (CAS). Metadata en lay-outinformatie worden apart bewaard en gebruikt bij het creëren van een transactie. Deze aanpak zorgt voor de atomiciteit van updates en de mogelijkheid tot rollback, aangezien elke transactie een nieuwe root-partitie creëert zonder de bestaande te wijzigen.
Ontwikkelaars merken op dat de huidige benadering van het emuleren van imperatief pakketbeheer "volledig zinloos" is en "eigenlijk meer fouten toevoegt dan oplost". Aangezien voor elke transactie een nieuw root-bestandssysteem wordt gecreƫerd, is het de bedoeling om in de toekomst een nieuwe grafiek voor elke transactie te maken en het ingebouwde wijzigen te verlaten ten gunste van een declaratieve aanpak vergelijkbaar met Gentoo of Nix.
Een ander interessant punt betreft de onveranderlijkheid (immutability). De makers wijzen erop dat AerynOS vaak wordt beschreven als een onveranderlijk besturingssysteem, maar "dat is niet helemaal juist". Hoewel elke transactie leidt tot een nieuwe boom in /usr en lokale wijzigingen niet worden behouden, is het systeem niet onveranderlijk in de zin van alleen-lezen toegang. In de toekomst is de implementatie van echte onveranderlijkheid van het systeem gepland zonder dat een herstart nodig is, met behulp van erofs en overlayfs.
Momenteel is AerynOS actief in ontwikkeling, met reeds ISO-images die een GNOME-omgeving bieden, geschikt voor gaming (ondersteuning voor NVIDIA-drivers, Steam, Flatpak) en heeft het echte gebruikers die de stabiliteit en innovatie van het systeem opmerken. Volgens de ontwikkelaars bevindt het project zich in een alpha-fase en is niet zonder problemen, maar het vormt al een samenhangend systeem dat "simpelweg werkt".
Bron: opennet.ru
