Projekt Asterinas objavio je verziju 0.18, kernel napisan u Rustu i dizajniran za korištenje u operativnim sustavima opće namjene. Kernel pruža ABI (Application Binary Interface) kompatibilan s kernelom. Linux i može se koristiti umjesto toga. Distribucija Asterinas NixOS, koja kombinira Asterinas kernel s NixOS sistemskim okruženjem, razvija se paralelno. Kod projekta distribuira se pod MPL (Mozilla Public License).
Trenutno je u kernelu implementirano oko 240 sistemskih poziva. LinuxDistribucija Asterinas NixOS-a provjereno radi na Asterinas kernelu s preko 100 NixOS paketa. Podržani paketi uključuju: 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.
Jezgra pruža punu podršku za x86-64 arhitekturu, djelomičnu podršku za RISC-V 64 i x86-64 s izolacijom temeljenom na Intel TDX-u, kao i početnu podršku za LoongArch 64 arhitekturu. Prioritetna područja primjene uključuju sustave temeljene na Linux ABI-ji, ali koji zahtijevaju višu razinu sigurnosti. Na primjer, Asterinas se predlaže za korištenje u stvaranju sigurnog sistemskog okruženja. virtualni strojevi, za čiju se izolaciju koriste tehnologije poput ARM CCA, AMD SEV i Intel TDX, kao i na strani host sustava, što osigurava pokretanje kontejnera.
Kako bi se smanjila vjerojatnost memorijskih pogrešaka, glavnog izvora najopasnijih ranjivosti, Asterinas koristi Rust jezik i ograničenu upotrebu nesigurnih blokova. Jezgra je izgrađena korištenjem framekernel arhitekture, koja pokušava kombinirati izolacijske mogućnosti mikrojezgri s učinkovitošću monolitnih jezgri.
Komponente jezgre u Asterinasu nalaze se u zajedničkom adresnom prostoru, a sigurnost se postiže logičkim odvajanjem sigurnog koda od koda koji bi potencijalno mogao biti ranjiv. Jezgra je podijeljena u dva dijela, oba napisana u Rustu: OS Framework i OS Services. OS Services zabranjuje korištenje nesigurnih blokova, a sve operacije niske razine koje zahtijevaju izvršavanje koda u nesigurnim blokovima premještaju se u OS Framework i dostupne su samo putem API-ja visoke razine. Svi sistemski pozivi, datotečni sustavi i upravljački programi implementirani su na razini OS Services i ne mogu uključivati nesigurne blokove.
Za razvoj sistemskih usluga i kernel modula, osiguran je OSDK (Operating System Development Kit) koji nudi uslužni program cargo-osdk za stvaranje, izgradnju, testiranje i pokretanje komponenti operativnog sustava. Programeri također mogu koristiti OSTD (Operating System Standard Library) skup, koji uključuje izdanje standardnih biblioteka Rust (crate std) prilagođeno za korištenje u komponentama operativnog sustava.
Među promjenama u verziji 0.18:
- Kao dio rada na osiguravanju da Asterinas radi kao gostujući sustav u Kata Containers i Confidential Containers VM kontejnerima, implementirana je podrška za IPC i cgroup imenske prostore, nsfs (/proc/[pid]/ns), cgroups, virtio-fs (za pristup datotečnom sustavu koji se dijeli s glavnim sustavom), virtio-rng (/dev/hwrng za entropiju za generator pseudoslučajnih brojeva) i vsock (za komunikaciju između glavnog i gostujućeg sustava).
- Implementiran je sistemski poziv ptrace i mogućnosti otklanjanja pogrešaka u korisničkom prostoru pomoću GDB-a i strace-a.
- Predložena je nova implementacija datotečnog sustava ext2 i dodan je NVMe upravljački program. Mehanizam Dentry (unos u direktorij) dodan je u VFS, a implementacija predmemorije stranica je redizajnirana.
- Distribucija Asterinas NixOS-a ima mogućnost pokretanja Codexa, QEMU-a i Firefoxa.
- Dodani su sistemski pozivi pidfd_getfd, pidfd_send_signal, pivot_root.
- Dodan inicijal IPv6 podrška.
- Implementiran je sustav sposobnosti za delegiranje pojedinačnih privilegiranih operacija.
- Dodana je početna implementacija LSM okvira (Linux Sigurnosni moduli).
Izvor: opennet.ru
