Projekt Asterinas vydal verzi 0.18, jádro napsané v Rustu a určené pro použití v univerzálních operačních systémech. Jádro poskytuje ABI (Application Binary Interface) kompatibilní s jádrem. Linux a lze jej použít místo něj. Souběžně se vyvíjí distribuce Asterinas NixOS, která kombinuje jádro Asterinas s prostředím systému NixOS. Kód projektu je distribuován pod licencí MPL (Mozilla Public License).
V současné době je v jádře implementováno asi 240 systémových volání. LinuxDistribuce Asterinas NixOS ověřeně běží na jádře Asterinas s více než 100 balíčky NixOS. Mezi podporované balíčky patří: 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 a Codex.
Jádro poskytuje plnou podporu pro architekturu x86-64, částečnou podporu pro RISC-V 64 a x86-64 s izolací založenou na Intel TDX a také počáteční podporu pro architekturu LoongArch 64. Mezi prioritní oblasti použití patří systémy založené na Linux ABI, ale vyžadující vyšší úroveň zabezpečení. Například Asterinas je navržen pro použití při vytváření bezpečného systémového prostředí. virtuální stroje, pro jejichž izolaci se používají technologie jako ARM CCA, AMD SEV a Intel TDX, a také na straně hostitelského systému, který zajišťuje spouštění kontejnerů.
Aby se snížila pravděpodobnost chyb paměti, které jsou hlavním zdrojem nejnebezpečnějších zranitelností, používá Asterinas jazyk Rust a omezené použití nebezpečných bloků. Jádro je postaveno s využitím architektury framekernel, která se snaží kombinovat izolační schopnosti mikrojader s efektivitou monolitických jader.
Komponenty jádra v Asterinas jsou umístěny ve sdíleném adresním prostoru a zabezpečení je dosaženo logickým oddělením bezpečného kódu od kódu, který by mohl být potenciálně zranitelný. Jádro je rozděleno na dvě části, obě napsané v Rustu: OS Framework a OS Services. OS Services zakazuje používání nebezpečných bloků a všechny nízkoúrovňové operace, které vyžadují spuštění kódu v nebezpečných blocích, jsou přesunuty do OS Frameworku a přístupné pouze prostřednictvím vysokoúrovňového API. Všechna systémová volání, souborové systémy a ovladače jsou implementovány na úrovni OS Services a nemohou obsahovat nebezpečné bloky.
Pro vývoj systémových služeb a modulů jádra je k dispozici sada OSDK (Operating System Development Kit), která obsahuje utilitu cargo-osdk pro vytváření, sestavování, testování a spouštění komponent operačního systému. Vývojáři mohou také použít sadu OSTD (Operating System Standard Library), která obsahuje edici standardních knihoven Rust (crate std) přizpůsobenou pro použití v komponentách operačního systému.
Mezi změny ve verzi 0.18:
- V rámci práce na zajištění běhu Asterinas jako hostovaného systému v kontejnerech Kata Containers a Confidential Containers VM byla implementována podpora pro jmenné prostory IPC a cgroup, nsfs (/proc/[pid]/ns), cgroups, virtio-fs (pro přístup k souborovému systému sdílenému s hostitelským systémem), virtio-rng (/dev/hwrng pro entropii generátoru pseudonáhodných čísel) a vsock (pro komunikaci mezi hostitelským a hostovaným systémem).
- Implementováno systémové volání ptrace a možnosti ladění v uživatelském prostoru pomocí GDB a strace.
- Byla navržena nová implementace souborového systému ext2 a přidán ovladač NVMe. Do VFS byl přidán mechanismus Dentry (Directory Entry) a byla přepracována implementace mezipaměti stránek.
- Distribuce Asterinas NixOS umožňuje spouštět Codex, QEMU a Firefox.
- Přidána systémová volání pidfd_getfd, pidfd_send_signal a pivot_root.
- Přidána iniciála Podpora IPv6.
- Byl implementován systém schopností pro delegování jednotlivých privilegovaných operací.
- Přidána počáteční implementace frameworku LSM (Linux Bezpečnostní moduly).
Zdroj: opennet.ru
