Megjelent az Asterinas 0.19 projekt kiadása, amely egy Rust nyelven készült operációs rendszer general purpose kernelének fejlesztését célozza. A kernel ABI-t (Application Binary Interface) biztosít, amely kompatibilis a Linux kernellel és helyettesíthető vele. Parallelen fejlődik az Asterinas NixOS disztribúció, amely az Asterinas kernelt ötvözi a NixOS rendszerkörnyezetével. A projekt kódja 2022 óta fejlődik és MPL (Mozilla Public License) licenc alatt terjesztik.
Jelenleg a kernel több mint 240 Linux rendszerhívást valósít meg. Az Asterinas NixOS disztribúcióban az Asterinas kernel felett több mint 100 NixOS csomag működését ellenőrizték. A támogatott csomagok között szerepel: Xfce, Firefox, bash, systemd, Podman, QEMU, rsync, Apache httpd, nginx, SQLite, Redis, Clang, GCC, Go, Lua, Node.js, OpenJDK, Perl, PHP, Python, Ruby, Rust, Git, FFmpeg, PyTorch, TensorFlow, Ollama és Codex.
A kernel teljes körű támogatást nyújt az x86-64 architektúrához, részleges támogatást az ARM64, RISC-V 64 és az x86-64 architektúrához Intel TDX alapú izolációval, valamint kezdeti támogatást a LoongArch 64 architektúrához. A prioritásként megnevezett alkalmazási területek közé tartoznak azok a rendszerek, amelyek a Linux ABI-ra alapoznak, de magasabb védelmi szintet igényelnek. Például, az Asterinas ajánlott védett rendszerek környezetének kialakítására, virtuális gépekhez, amelyhez olyan technológiákat használnak, mint az ARM CCA, AMD SEV és Intel TDX, továbbá a gazda rendszernél, amely biztosítja a konténerek futtatását.
A memóriahasználat hibáinak előfordulásának csökkentésére, amelyek a legfontosabb sebezhetőségek fő forrását jelentik, az Asterinas írásához Rust nyelvet és a korlátozott unsafe blokkok alkalmazását használták. A kernel a framekernel architektúrára épül, amely megpróbálta ötvözni a mikrokerneles izolációs lehetőségeket a monolitikus kernetek hatékonyságával.
Az Asterinas kernel komponensei egy közös címtartományban helyezkednek el, a biztonság pedig a biztonságos kód és a potenciálisan hibás kód logikai elkülönítése révén valósul meg. A kernel két részre van bontva, amelyeket Rust nyelven írtak: OS Framework és OS Services. Az OS Services esetében a unsafe blokkok alkalmazása tilos, míg minden alacsony szintű művelet, amely unsafe blokkokban kell, hogy fusson, az OS Framework-ba került, és csak a magas szintű API-n keresztül érhető el. Minden rendszerhívás, fájlrendszer és illesztőprogram az OS Services szintjén valósul meg, és nem tartalmazhat unsafe blokkokat.
Rendszerszolgáltatások és kernel modulok fejlesztéséhez az OSDK (Operating System Development Kit) eszközkészlet áll rendelkezésre, amely a cargo-osdk segédprogramot biztosít az operációs rendszer komponenseinek létrehozásához, összeállításához, teszteléséhez és futtatásához. A fejlesztők számára egy OSTD (Operating System Standard Library) könyvtárgyűjteményt készítettek, amely tartalmazza a Rust standard könyvtárainak (crate std) operációs rendszer komponensekhez való adaptált változatát.
Az Asterinas 0.19-es verziójában bekövetkezett változások között:
- Megvalósult a DRM (Direct Rendering Manager) alrendszere, a /dev/dri eszköz, a KMS (kernel mode setting) interfész és a „modesetting” meghajtó, amelyek lehetővé tették a szokásos grafikus stack X.Org Server és Mesa alapú működését, a korábban használt fbdev meghajtó helyett, amely keretpufferrel dolgozott.
- Bevezetésre került az AArch64 (ARM64) architektúra támogatása, amely mostantól mint fő architektúra van jelen a fejlesztés során, az x86-64 mellett. Az AArch64 számára egy második szintű támogatás került megvalósításra, amely magában foglalja az alapvető funkcionalitás működését, a folyamatos integrációs rendszeren történő ellenőrzést és a tesztek részleges lefedettségét.
- Folytatódott az Asterinas VM-konténerekben történő vendég operációs rendszerként való futtatásra való adaptálása a Kata Containers és Confidential Containers keretében. Egy új Overlayfs megvalósítás került javaslatra, amely sikeresen teljesítette a Linux kernel és xfstests fájlrendszer standard tesztjeit. Megvalósult egy új mount API. A virtio-fs kód stabilizálva lett. Támogatás került bevezetésre a direct-boot protokollhoz,
amely a QEMU, Cloud Hypervisor és Firecracker rendszerekben használatos. Felgyorsult a betöltés virtuális gépekben, ahol a memória az Intel TDX technológia segítségével titkosítva van. - Az OSTD (Operating System Standard Library) keretrendszerben megvalósult egy alap API minimalista hipervizorok létrehozásához az Intel VMX segítségével.
- A Rust nyelvű illesztőprogram-fejlesztési modell támogatása hozzáadva. Az aster-device komponens hozzáadása, amely a Linux kernel alapvető primitívjeivel és absztrakcióival hasonló funkcionalitást kínál illesztőprogramok fejlesztéséhez, de Rust nyelven, unsafe kód nélkül íródott.
- Biztosítva van a saját újraépítés (self-hosting) lehetősége — Asterinas kernel és NixOS csomagok környezetéből most már össze lehet állítani az Asterinas kernelt.
Forrás: opennet.ru
