Asterinas-projektet har släppt version 0.19, en kärna skriven i Rust och designad för användning i allmänna operativsystem. Kärnan tillhandahåller ett ABI (Application Binary Interface) som är kompatibelt med kärnan. Linux och kan användas istället. Asterinas NixOS-distributionen, som kombinerar Asterinas-kärnan med NixOS-systemmiljön, utvecklas parallellt. Projektets kod har varit under utveckling sedan 2022 och distribueras under MPL (Mozilla Public License).
För närvarande finns det fler än 240 systemanrop implementerade i kärnan. LinuxAsterinas NixOS-distributionen är verifierad att köras ovanpå Asterinas-kärnan med över 100 NixOS-paket. Paket som stöds inkluderar: 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 och Codex.
Kärnan ger fullt stöd för x86-64-arkitekturen, delvis stöd för ARM64, RISC-V 64 och x86-64 med isolering baserad på Intel TDX, samt initialt stöd för LoongArch 64-arkitekturen. Prioriterade tillämpningsområden inkluderar system baserade på Linux ABI:er, men som kräver en högre säkerhetsnivå. Till exempel föreslås Asterinas för användning vid skapandet av en säker systemmiljö. virtuell maskin, för isolering av vilka tekniker som ARM CCA, AMD SEV och Intel TDX används, samt på värdsystemsidan, vilket säkerställer lansering av containrar.
För att minska sannolikheten för minnesfel, den främsta källan till de farligaste sårbarheterna, använder Asterinas språket Rust och en begränsad användning av osäkra block. Kärnan är byggd med hjälp av framekernel-arkitekturen, som försöker kombinera isoleringsförmågan hos mikrokärnor med effektiviteten hos monolitiska kärnor.
Kärnkomponenter i Asterinas finns i ett delat adressutrymme, och säkerhet uppnås genom logisk separation av säker kod från kod som potentiellt kan vara sårbar. Kärnan är uppdelad i två delar, båda skrivna i Rust: OS Framework och OS Services. OS Services förbjuder användning av osäkra block, och alla lågnivåoperationer som kräver kodkörning i osäkra block flyttas till OS Framework och är endast tillgängliga via ett högnivå-API. Alla systemanrop, filsystem och drivrutiner implementeras på OS Services-nivå och får inte inkludera osäkra block.
För att utveckla systemtjänster och kärnmoduler tillhandahålls OSDK (Operating System Development Kit), som tillhandahåller verktyget cargo-osdk för att skapa, bygga, testa och köra operativsystemkomponenter. Utvecklare kan också få tillgång till OSTD-uppsättningen (Operating System Standard Library), som inkluderar en utgåva av Rust-standardbiblioteken (crate std) anpassade för användning i operativsystemkomponenter.
Bland ändringarna i Asterinas 0.19:
- DRM-undersystemet (Direct Rendering Manager), /dev/dri-enheten, KMS-gränssnittet (kernel mode setting) och drivrutinen "modesetting" har implementerats, vilket möjliggör lansering av en standardgrafikstack baserad på X.Org Server och Mesa, istället för den tidigare använda fbdev-drivrutinen, som använder en framebuffer.
- Stöd för AArch64-arkitekturen (ARM64) har lagts till, och fungerar nu som den primära utvecklingsarkitekturen tillsammans med x86-64. En andra stödnivå har implementerats för AArch64, vilket säkerställer grundläggande funktionalitet, kontinuerlig integrationstestning och delvis testtäckning.
- Arbetet med att anpassa Asterinas för att köras som gästsystem i Kata-containrar och konfidentiella containrar fortsatte. En ny Overlayfs-implementering föreslogs som framgångsrikt klarar standardtestsviter för kärnfilsystem. Linux och xfstests. Ett nytt monterings-API har implementerats. Virtio-fs-koden har stabiliserats. Protokollstöd har lagts till.
direktstart, används i QEMU, Cloud Hypervisor och Firecracker. Starttiderna har accelererats. virtuella maskiner, vars minne är krypterat med Intel TDX-teknik. - OSTD-ramverket (Operating System Standard Library) implementerar ett grundläggande API för att skapa minimalistiska hypervisorer baserade på Intel VMX.
- Lade till stöd för Rust-drivrutinsutvecklingsmodellen. En aster-device-komponent med funktionalitet som påminner om kärnkomponenter har lagts till. Linux med grundläggande primitiver och abstraktioner för drivrutinsutveckling, men skriven i Rust utan osäker kod.
- Självhosting är nu möjligt - du kan nu bygga Asterinas-kärnan från en miljö med Asterinas-kärnan och NixOS-paketen.
Källa: opennet.ru
