De release van het Asterinas-project 0.19 is gepubliceerd, dat de kernel ontwikkelt, geschreven in de programmeertaal Rust en bedoeld voor gebruik in algemene besturingssystemen. De kernel biedt een ABI (Application Binary Interface) die compatibel is met de Linux-kernel en kan worden gebruikt ter vervanging ervan. Tegelijkertijd wordt de distributie Asterinas NixOS ontwikkeld, die de Asterinas-kernel combineert met de systeemomgeving van NixOS. De code van het project is sinds 2022 in ontwikkeling en wordt verspreid onder de MPL (Mozilla Public License).
Momenteel zijn er meer dan 240 systeemaanroepen van Linux geïmplementeerd in de kernel. In de distributie Asterinas NixOS is de werking bovenop de Asterinas-kernel geverifieerd voor meer dan 100 pakketten uit NixOS. Ondersteunde pakketten zijn onder andere: 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 en Codex.
De kernel biedt volledige ondersteuning voor de architectuur x86-64, gedeeltelijke ondersteuning voor ARM64, RISC-V 64 en x86-64 met Intel TDX-gebaseerde isolatie, evenals initiële ondersteuning voor de LoongArch 64-architectuur. Prioritaire toepassingsgebieden zijn systemen die zijn gebaseerd op Linux ABI, maar een hoger beschermingsniveau vereisen. Asterinas wordt bijvoorbeeld aanbevolen voor het opzetten van een systeemomgeving voor beveiligde toepassingen. virtuele machines, for the isolation of which technologies such as ARM CCA, AMD SEV, and Intel TDX are used, as well as on the host system side that ensures the launch of containers.
To reduce the likelihood of memory-related errors, which are the main source of the most dangerous vulnerabilities, the Asterinas project employs the Rust programming language and a strategy of limited usage of unsafe blocks. The kernel is built using the framekernel architecture, which attempts to combine the isolation capabilities of microkernels with the efficiency of monolithic kernels.
De kerncomponenten in Asterinas zijn geplaatst in een gedeeld adresruimte, en de beveiliging wordt bereikt door logisch gescheiden beveiligde code en code die kwetsbaarheden kan bevatten. De kern is verdeeld in twee delen, geschreven in Rust: OS Framework en OS Services. In OS Services is het gebruik van unsafe-blokken verboden, en alle low-level operaties die code in unsafe-blokken vereisen, zijn overgebracht naar OS Framework en zijn alleen toegankelijk via een high-level API. Alle systeemaanroepen, bestandssystemen en stuurprogramma's worden op het niveau van OS Services geïmplementeerd en kunnen geen unsafe-blokken bevatten.
Voor de ontwikkeling van systeemdiensten en kernmodules wordt de OSDK (Operating System Development Kit) geleverd, die de cargo-osdk-tool biedt voor het creëren, bouwen, testen en uitvoeren van componenten van het besturingssysteem. Voor ontwikkelaars is een set van OSTD-bibliotheken (Operating System Standard Library) voorbereid, die een editie van de standaard Rust-bibliotheken (crate std) bevat, aangepast voor gebruik in de componenten van het besturingssysteem.
Onder de veranderingen in Asterinas 0.19:
- Een subsysteem voor DRM (Direct Rendering Manager) is geïmplementeerd, evenals het apparaat /dev/dri, de KMS-interface (kernel mode setting) en de 'modesetting'-driver, waardoor de standaard grafische stack gebaseerd op X.Org Server en Mesa kon worden gestart, in plaats van de eerder gebruikte fbdev-driver die het framebuffer gebruikte.
- Ondersteuning voor de AArch64-architectuur (ARM64) is toegevoegd, die nu als de primaire architectuur bij ontwikkeling wordt gebruikt, naast x86-64. Voor AArch64 is een tweede niveau van ondersteuning geïmplementeerd, dat functionaliteit, verificatie in het systeem voor continue integratie en gedeeltelijke testdekking omvat.
- De werkzaamheden aan de aanpassing van Asterinas voor gebruik als gastensysteem in VM-containers van Kata Containers en Confidential Containers zijn voortgezet. Een nieuwe implementatie van Overlayfs is voorgesteld, die met succes de standaard testsets voor het Linux-kernelbestandssysteem en xfstests doorstaat. Een nieuwe API voor het mounten is geïmplementeerd. De virtio-fs-code is gestabiliseerd. Ondersteuning voor het protocol
direct-boot, gebruikt in QEMU, Cloud Hypervisor en Firecracker, is versneld. virtuele machines, waarvan het geheugen wordt versleuteld met Intel TDX-technologie. - In het OSTD (Operating System Standard Library) framework is een basis API geïmplementeerd voor het maken van minimalistische hypervisors op basis van Intel VMX.
- Ondersteuning voor het ontwikkelingsmodel van stuurprogramma's in de programmeertaal Rust is toegevoegd. De aster-device component is toegevoegd met functionaliteit die lijkt op de Linux-kernelcomponenten met basisprimitieven en abstracties voor het ontwikkelen van stuurprogramma's, maar geschreven in Rust zonder unsafe-code.
- De mogelijkheid voor zelf-bouwingen (self-hosting) is verzekerd - vanuit een omgeving met de Asterinas-kernel en NixOS-pakketten kan nu de Asterinas-kernel worden samengesteld.
Bron: opennet.ru
