Udgivelsen af Asterinas-projektet 0.19 er offentliggjort. Det udvikler en kerne skrevet i Rust, der er designet til brug i generelle operativsystemer. Kernen tilbyder en ABI (Application Binary Interface), der er kompatibel med Linux-kernen og kan bruges som erstatning. Samtidig udvikles Asterinas NixOS-distributionen, der kombinerer Asterinas-kernen med NixOS-systemmiljøet. Projektets kode har været under udvikling siden 2022 og distribueres under MPL (Mozilla Public License).
Kernen implementerer i øjeblikket mere end 240 Linux-systemopkald. I Asterinas NixOS-distributionen er der verificeret, at mere end 100 pakker fra NixOS fungerer oven på Asterinas-kernen. Blandt de understøttede pakker findes: 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 og Codex.
Kernen sikrer fuld support til x86-64-arkitekturen, delvis support til ARM64, RISC-V 64, samt x86-64 med Intel TDX-isolering, og har også indledende support til LoongArch 64-arkitekturen. Prioriterede anvendelsesområder inkluderer systemer, der er bundet til Linux ABI, men som kræver et højere niveau af sikkerhed. Asterinas anbefales f.eks. til at skabe et systemmiljø for sikre applikationer virtual machines, som isolerer disse ved hjælp af teknologier som ARM CCA, AMD SEV og Intel TDX, samt på værtsystemet, der sikrer kørsel af containere.
For at reducere risikoen for hukommelsesfejl, som er den primære kilde til de mest alvorlige sårbarheder, er der i udviklingen af Asterinas anvendt sproget Rust og taktikken med begrænset brug af unsafe-blokke. Kernen er bygget med framekernel-arkitekturen, som forsøger at kombinere isolationsmulighederne fra mikrokerner med effektiviteten af monolitiske kerner.
Kernens komponenter i Asterinas placeres i et fælles adresseområde, hvor sikkerhed opnås gennem logisk adskillelse af sikker kode og kode, hvor sikkerhedsproblemer ikke kan udelukkes. Kernen er opdelt i to dele, skrevet i Rust: OS Framework og OS Services. I OS Services er brug af unsafe-blokke forbudt, og alle low-level operationer, der kræver udførelse af kode i unsafe-blokke, er flyttet til OS Framework og tilgængelige kun gennem et high-level API. Alle systemopkald, filsystemer og drivere implementeres på niveauet OS Services og kan ikke inkludere unsafe-blokke.
Til udvikling af systemtjenester og kernemoduler leveres OSDK (Operating System Development Kit), der tilbyder værktøjet cargo-osdk til oprettelse, bygning, testning og kørsel af operativsystemkomponenter. For udviklere er der forberedt et bibliotekssæt OSTD (Operating System Standard Library), der inkluderer en tilpasning af Rust's standardbiblioteker (crate std) til brug i operativsystemkomponenter.
Blandt ændringerne i Asterinas 0.19:
- Der er implementeret et DRM (Direct Rendering Manager) subsystem, en enhed /dev/dri, KMS (kernel mode setting) interface og "modesetting" driveren, hvilket har gjort det muligt at køre det normale grafiske stack baseret på X.Org Server og Mesa, i stedet for den tidligere anvendte fbdev-driver, der anvendte framebuffer.
- Der er tilføjet support til AArch64 (ARM64) arkitekturen, som nu bruges som den primære arkitektur under udviklingen, sammen med x86-64. For AArch64 er der implementeret et andet supportniveau, der indebærer, at grundlæggende funktionalitet fungerer, verificeres i et kontinuerligt integrationssystem og delvis testdækning.
- Arbejdet med at tilpasse Asterinas til at køre som gæstesystem i VM-containere som Kata Containers og Confidential Containers er fortsat. En ny implementering af Overlayfs er foreslået, hvilken succesfuldt gennemgår de standard testpakker for Linux-kerne FС og xfstests. En ny mount-api er implementeret. Koden for virtio-fs er stabiliseret. Implementeret er support til protokollen
direct-boot, som anvendes i QEMU, Cloud Hypervisor og Firecracker. Opstartstiden er blevet accelereret i virtuelle maskiner, hvis hukommelse krypteres ved hjælp af Intel TDX teknologi. - I OSTD (Operating System Standard Library) frameworket er der implementeret et grundlæggende API til oprettelse af minimalistiske hypervisorer baseret på Intel VMX.
- Rust-sprogsupport til driverudviklingsmodeller er blevet tilføjet. Aster-device komponenten er blevet tilføjet med funktionalitet, der ligner Linux-kernemoduler med grundlæggende primitive og abstraktioner til driverudvikling, men skrevet i Rust uden unsafe-kode.
- Muligheden for selvkompilering (self-hosting) er blevet sikret — fra et miljø med Asterinas-kernen og NixOS-pakker kan man nu kompilere Asterinas-kernen.
Kilde: opennet.ru
