Asterinas 0.18 er blevet frigivet, et projekt, der udvikler et kerne, skrevet i Rust og beregnet til brug i generelle operativsystemer. Kernen tilbyder en ABI (Application Binary Interface), der er kompatibel med Linux-kernen og kan bruges i stedet for den. Samtidig udvikles der en distribution af Asterinas NixOS, der kombinerer Asterinas-kernen med det systemmiljø, der tilbydes af NixOS. Projektets kode distribueres under MPL (Mozilla Public License).
I øjeblikket er der implementeret omkring 240 systemopkald fra Linux i kernen. I distributionen Asterinas NixOS er mere end 100 pakker fra NixOS verificeret til at køre oven på Asterinas-kernen. Blandt de understøttede pakker er: 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 understøtter fuldstændigt x86-64-arkitekturen, delvis support for RISC-V 64 og x86-64 med Intel TDX-baseret isolation, samt initial support for LoongArch 64-arkitekturen. Blandt de prioriterede anvendelsesområder nævnes systemer, der er afhængige af Linux ABI, men kræver et højere niveau af sikkerhed. For eksempel foreslås Asterinas til brug ved oprettelse af et systemmiljø for beskyttede. 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 kerne-moduler leveres OSDK (Operating System Development Kit), som tilbyder værktøjet cargo-osdk til oprettelse, bygning, test og kørsel af komponenter til operativsystemet. Der er for berørte udviklere forberedt et sæt OSTD (Operating System Standard Library) biblioteker, der inkluderer en udgave af Rusts standardbiblioteker (crate std), tilpasset til brug i operativsystemskomponenter.
Blandt ændringerne i version 0.18:
- Som led i arbejdet med at sikre kørsel af Asterinas som gæstesystem i VM-containere til Kata Containers og Confidential Containers er der implementeret støtte til IPC- og cgroup-navneområder, nsfs (/proc/[pid]/ns), cgroups, virtio-fs (til adgang til fælles filsystem med værtsystemet), virtio-rng (/dev/hwrng til entropi til generatoren af pseudotilfældige tal) og vsock (til interaktion mellem værts- og gæstesystemerne).
- Systemopkaldet ptrace er implementeret, og der tilbydes muligheder for debugging i brugerens rum ved hjælp af GDB og strace.
- Der er foreslået en ny implementering af filsystemet ext2 og tilføjet en NVMe-driver. VFS har fået tilføjet en Dentry (Directory Entry) mekanisme, og implementeringen af sidecachen er blevet redesignet.
- I Asterinas NixOS-distributionen er det muligt at køre Codex, QEMU og Firefox.
- Systemopkald som pidfd_getfd, pidfd_send_signal, pivot_root er blevet tilføjet.
- Den indledende implementering er tilføjet. understøttelse af IPv6.
- Systemet for muligheder til delegation af specifikke privilegerede operationer er blevet implementeret.
- Den indledende implementering af LSM (Linux Security Modules) rammeværket er tilføjet.
Kilde: opennet.ru
