A fost lansată versiunea 0.18 a proiectului Asterinas, care dezvoltă un nucleu scris în Rust destinat utilizării în sisteme de operare general-purpose. Nucleul oferă un ABI (Application Binary Interface) compatibil cu nucleul Linux, putând fi folosit ca alternativă. În paralel, se dezvoltă distribuția Asterinas NixOS, care combină nucleul Asterinas cu mediul de sistem NixOS. Codul proiectului este distribuit sub licența MPL (Mozilla Public License).
În prezent, nucleul implementează aproximativ 240 de apeluri de sistem Linux. În distribuția Asterinas NixOS, au fost verificate funcționarea a peste 100 de pachete din NixOS deasupra nucleului Asterinas. Printre pachetele acceptate se numără: 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 și Codex.
Nucleul asigură suport complet pentru arhitectura x86-64, suport parțial pentru RISC-V 64 și x86-64 cu izolare bazată pe Intel TDX, precum și suport inițial pentru arhitectura LoongArch 64. Zonele de aplicare priorități includ sistemele care depind de Linux ABI, dar necesită un nivel mai înalt de securitate. De exemplu, Asterinas este recomandat pentru crearea unui mediu de sistem protejat. mașini virtuale, pentru care se folosesc tehnologii precum ARM CCA, AMD SEV și Intel TDX, precum și de partea sistemului gazdă, care asigură rularea containerelor.
Pentru a reduce probabilitatea apariției erorilor în gestionarea memoriei, care reprezintă sursa principală a celor mai periculoase vulnerabilități, la scrierea Asterinas a fost folosit limbajul Rust și tactica utilizării limitate a blocurilor unsafe. Nucleul este construit folosind arhitectura framekernel, unde s-au încercat combinarea capacităților de izolare a microkernelurilor cu eficiența nucleelor monolitice.
Componentele nucleului în Asterinas sunt plasate într-un spațiu adresabil comun, iar securitatea este realizată la nivelul separării logice între codul sigur și codul în care nu se exclude posibilitatea apariției problemelor de securitate. Nucleul este împărțit în două părți, scrise în Rust: OS Framework și OS Services. În OS Services, utilizarea blocurilor unsafe este interzisă, iar toate operațiile de nivel inferior care necesită execuția codului în blocuri unsafe sunt transferate în OS Framework și sunt accesibile doar printr-un API de nivel înalt. Toate apelurile de sistem, sistemele de fișiere și driverele sunt implementate la nivelul OS Services și nu pot include blocuri unsafe.
Pentru dezvoltarea serviciilor de sistem și a modulelor kernel, este furnizată un set de instrumente OSDK (Operating System Development Kit), care include utilitarul cargo-osdk pentru crearea, compilarea, testarea și rularea componentelor sistemului de operare. Pentru dezvoltatori, este pregătit un set de biblioteci OSTD (Operating System Standard Library), care include o versiune a bibliotecilor standard Rust (crate std), adaptată pentru utilizare în componentele sistemului de operare.
Printre modificările din versiunea 0.18:
- În cadrul lucrărilor pentru a asigura rularea Asterinas ca sistem gazdă în containere VM de tip Kata Containers și Confidential Containers, a fost implementat suportul pentru spațiile de nume IPC și cgroup, nsfs (/proc/[pid]/ns), cgroups, virtio-fs (pentru accesul comun la sistemul de fișiere cu sistemul gazdă), virtio-rng (/dev/hwrng pentru entropie pentru generatorul de numere pseudo-aleatoare) și vsock (pentru interacțiunea între sistemele gazdă și oaspete).
- A fost implementat apelul de sistem ptrace și posibilitățile de depanare în spațiul utilizatorului cu ajutorul GDB și strace.
- A fost propusă o nouă implementare a sistemului de fișiere ext2 și a fost adăugat un driver NVMe. În VFS a fost adăugat mecanismul Dentry (Directory Entry) și a fost refăcută implementarea cache-ului pe pagini.
- În distribuția Asterinas NixOS a fost implementată posibilitatea de a rula Codex, QEMU și Firefox.
- Au fost adăugate apeluri de sistem pidfd_getfd, pidfd_send_signal, pivot_root.
- A fost adăugată o implementare inițială suportul IPv6.
- A fost implementat sistemul capabilities pentru delegarea unor operațiuni privilegiate.
- A fost adăugată o implementare inițială a framework-ului LSM (Linux Security Modules).
Sursa: opennet.ro
