Utvecklarna av AerynOS, tidigare kÀnt som SerpentOS, har publicerat en omfattande artikel som avslöjar detaljer om konceptet och den tekniska implementeringen av projektet med en motivering av de valda arkitektoniska besluten. Projektledaren Ikey Doherty betonar att AerynOS inte bara Àr "Ànnu en Linux-distribution" utan en plattform, en grund och en uppsÀttning verktyg som skapats i enlighet med en tydlig vision.
Den grundlĂ€ggande idĂ©n med projektet formuleras som en frĂ„ga: "Vad hĂ€nder om operativsystemet beter sig som en modern infrastruktur?" AerynOS presenteras som svaret pĂ„ denna frĂ„ga â ett system byggt frĂ„n grunden, snarare Ă€n att följa den traditionella modellen av inbĂ€ddade mutationer inom distributionen. Projektet bygger pĂ„ författarnas erfarenhet av att utveckla andra distributioner, inklusive Solus och Clear Linux.
Bland de viktigaste tekniska besluten för AerynOS kan nÀmnas:
- AnvÀndningen av verktygslÄdan LLVM istÀllet för GNU, med libc++ och compiler-rt som standard. Utvecklarna förklarar detta val inte bara som en preferens för LLVM, utan som ett strategiskt val för att anvÀnda högre kvalitet pÄ diagnostik, sÀkerstÀlla korrekthet och portabilitet för paketen. Systemet anvÀnder dessutom glibc istÀllet för musl, vilket Àr ett medvetet val för att prioritera kompatibilitet och prestanda.
Som nÀmnts i artikeln: "Fördelen med glibc över musl i prestanda Àr vÀl dokumenterad, sÀrskilt för berÀkningsintensiva arbetsbelastningar och applikationer som krÀver optimal prestanda för flertrÄdad bearbetning." Skaparna betonar att deras mÄl Àr att bygga ett fungerande, anvÀndbart system för mÄnga tillÀmpningsscenarier.
- Konceptet "statelessness" (tillstĂ„ndslöshet) â paket fĂ„r inte innehĂ„lla nĂ„gra filer utanför katalogen /usr. Som utvecklarna förklarar, tvingar detta till att se till att rimliga standardvĂ€rden tillĂ€mpas pĂ„ alla nivĂ„er och eliminerar "fruktansvĂ€rda konflikter vid tredubbelsammanfogning vid paketsuppdateringar." Det finns inga konflikter eftersom allt i /etc och /var tillhör anvĂ€ndaren, medan /usr uteslutande tillhör systemet. Konceptet utvecklades under tiden för Clear Linux och Solus, och i AerynOS har det fĂ„tt ytterligare utveckling.
- AtomĂ€ra uppdateringar â varje moss-transaktion Ă€r atomĂ€r. Systemet skapar snabbt ett nytt trĂ€d /usr med hjĂ€lp av hĂ„rda lĂ€nkar frĂ„n det deduplicerade cache. Efter en framgĂ„ngsrik skapelse och förberedelse byts det nya trĂ€det atomĂ€rt ut. Den faktiska förberedda transaktionen byts med den verkliga katalogen /usr med hjĂ€lp av renameat2 med flaggan RENAME_EXCHANGE. Uppdateringen antingen genomförs helt, eller sĂ„ genomförs den inte alls, utan mellanliggande tillstĂ„nd.
- Projektbaserad lasthantering med blsforme och disks-rs. KÀnnetecknet för denna metod Àr att systemet dynamiskt skapar parametrar för kÀrnans kommandorad genom att lÀsa superblocken i enheter av det grundlÀggande filsystemet, vilket innebÀr att AerynOS inte har nÄgon konfigurationsfil som innehÄller parametern 'root='. Dessutom kodas moss-transaktions-ID i kÀrnans kommandorad och behandlas under tidig boot i initramfs. 'Kort sagt, det innebÀr att varje kÀrna Àr korrekt synkroniserad med det motsvarande grundlÀggande filsystemet, och ÄterstÀllning Àr billig, enkel och lÀttillgÀnglig direkt frÄn bootmenyn', förklarar utvecklarna. En annan fördel Àr avsaknaden av /etc/default/grub, och om ESP raderas kan moss ÄterstÀlla det frÄn grunden.
- Paketformatet .stone Àr ett eget binÀrt paketformat med en versionsagnostisk rubrik för att sÀkerstÀlla framtida förÀndringar. Varje .stone-paket innehÄller fyra specifika datatyper (payload), varav var och en kan utvecklas oberoende tack vare versionering:
- InnehĂ„llspayload (Content payload) â en sekventiell block av deduplicerade data, det vill sĂ€ga sjĂ€lva innehĂ„llet i pakets filer.
- Indexpayload (Index payload) â innehĂ„ller offset för innehĂ„llspayload, indexerade med hash XXH128 av innehĂ„llet (övergĂ„ng till Blake3 planeras). Detta gör det möjligt att effektivt hitta och extrahera data.
- Layoutpayload (Layout payload) â beskriver den avsedda layouten av filsystemet vid tillĂ€mpning av paketet, det vill sĂ€ga var och vilka filer som ska installeras.
- Metadata-payload (Metadata payload) â en sekvens av strikt typade, mĂ€rkta metadata-poster, sĂ„som paketnamn, tillhandahĂ„llna funktioner etc.
Komprimering av alla belastningar utförs med hjÀlp av Zstd, vilket ger utmÀrkt prestanda vid avpackning samtidigt som en bra komprimeringsgrad bibehÄlls. Installationsprocessen för .stone skiljer sig radikalt frÄn andra system. IstÀllet för att installera filer direkt, cachas paketet och dess innehÄll flÀtas ihop i ett gemensamt lagringsutrymme med adressering baserat pÄ innehÄll (CAS). Metadata och layoutinformation lagras separat och anvÀnds vid skapandet av transaktionen. Denna metod sÀkerstÀller atomÀra uppdateringar och möjlighet till ÄterstÀllning, eftersom varje transaktion skapar en ny rotpartition istÀllet för att modifiera den befintliga.
Utvecklarna pÄpekar att den nuvarande metoden med emulering av imperativ paketstyrning "Àr helt meningslös" och "egentligen ger upphov till fler fel Àn den löser". Eftersom en ny rotfilsystem skapas för varje transaktion, planeras i framtiden att skapa en ny graf för varje transaktion, överge inbyggda förÀndringar till förmÄn för ett deklarativt tillvÀgagÄngssÀtt, liknande Gentoo eller Nix.
En annan intressant förklaring handlar om oförĂ€ndrat tillstĂ„nd (immutability). Skaparna pĂ„pekar att AerynOS ofta beskrivs som ett oförĂ€ndrat operativsystem, men "det Ă€r inte helt korrekt". Ăven om varje transaktion leder till ett nytt trĂ€d i /usr och lokala Ă€ndringar inte sparas, Ă€r systemet inte oförĂ€ndrat i bemĂ€rkelsen att det endast Ă€r skrivskyddat. I framtiden planeras en verklig oförĂ€ndrad implementation av systemet utan behov av omstart, med hjĂ€lp av erofs och overlayfs.
För nÀrvarande utvecklas AerynOS aktivt, slÀpper redan ISO-bilder med GNOME-miljö, Àr spelvÀnligt (stöd för NVIDIA-drivrutiner, Steam, Flatpak), har verkliga anvÀndare som pÄpekar systemets stabilitet och nytÀnkande. Enligt utvecklarna Àr projektet i alfa-stadiet och har sina problem, men representerar redan ett helt system som "bara fungerar".
KĂ€lla: opennet.ru
