Megjelent az Asterinas 0.18 projekt kiadása, amely egy Rust nyelven írt kernelt fejleszt, és általános célú operációs rendszerekben való használatra készült. A kernel egy Linux-szal kompatibilis ABI-t (Application Binary Interface) biztosít, amelyet alternatívaként lehet használni. Paralleli fejlődés alatt áll az Asterinas NixOS disztribúció, amely az Asterinas kernelt a NixOS rendszeren környezetével ötvözi. A projekt kódja MPL (Mozilla Public License) licenc alatt kerül forgalomba.
Jelenleg körülbelül 240 Linux rendszerhívás valósult meg a kernelben. Az Asterinas NixOS disztribúcióban az Asterinas kernel felett több mint 100 NixOS csomag működését hitelesítették. A támogatott csomagok között található: 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 x86-64 architektúra támogatást biztosít, részleges RISC-V 64 és x86-64 architektúra támogatás mellett Intel TDX alapú izolációval, és kezdeti támogatást kínál a LoongArch 64 architektúra számára is. A prioritási alkalmazási területek között szerepelnek azok a rendszerek, amelyek Linux ABI-ra épülnek, de magasabb szintű biztonságot igényelnek. Például, az Asterinas javasolt a védett rendszerek környezeteinek létrehozá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.
A rendszer szolgáltatások és kernel modulok fejlesztéséhez OSDK (Operating System Development Kit) eszközcsomag érkezik, amely a cargo-osdk segédeszközt tartalmazza 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árcsomag készült, amely a Rust standard könyvtárainak (crate std) operációs rendszer komponensekhez való felhasználásra adaptált kiadását tartalmazza.
A 0.18 verzióban történt változások között szerepel:
- Az Asterinas vendég rendszerként való futtatásának biztosítása érdekében a VM-konténerekben, Kata Containers és Confidential Containers keretében megvalósult az IPC és cgroup névtér támogatása, nsfs (/proc/[pid]/ns), cgroups, virtio-fs (a gazdarendszerrel közös fájlokhoz való hozzáférés érdekében), virtio-rng (/dev/hwrng a véletlenszerű számgenerátorhoz szükséges entrópiához), és vsock (a gazda- és vendégrendszerek közötti kommunikációhoz).
- Implementálásra került a ptrace rendszerhívás és a felhasználói térbeli hibakeresési lehetőségek biztosítása a GDB és strace segítségével.
- Új ext2 fájlrendszer implementációja ajánlott, és NVMe meghajtó került hozzáadásra. A VFS-be beépítésre került a Dentry (Directory Entry) mechanizmus, és a lapkészlet megvalósítása át lett dolgozva.
- Az Asterinas NixOS disztribúcióban lehetőség van a Codex, QEMU és a Firefox futtatására.
- Hozzáadva: pidfd_getfd, pidfd_send_signal, pivot_root rendszerhívások.
- Hozzáadva az alap. IPv6 támogatás.
- Megvalósítva a képességek rendszere a különböző privilegizált műveletek delegálásához.
- Hozzáadva az LSM (Linux Security Modules) keretrendszer kezdeti megvalósítása.
Forrás: opennet.ru
