Publication de la version Asterinas 0.18.0 — un système d'exploitation expérimental et un noyau, écrits en Rust et orientés vers la compatibilité avec l'ABI Linux. Le projet se positionne comme une tentative de créer une alternative « prête pour la production » à Linux, axée sur la sécurité mémoire, la performance et le lancement d'un environnement utilisateur Linux classique. Le code d'Asterinas est open source et hébergé sur GitHub, la licence principale du projet étant la MPL 2.0. La version Asterinas 0.18.0 a été publiée le 4 juin 2026, et le 9 juin, elle a attiré l'attention de Phoronix.
Le principal objectif de cette version est de préparer Asterinas à être utilisé comme système d'exploitation invité pour des machines virtuelles basées sur Kata Containers et Confidential Containers. Pour cela, le noyau a intégré les mécanismes de bas niveau manquants : espaces de noms, cgroups, virtio-fs, virtio-rng, et un vsock retravaillé pour l'échange de données entre l'hôte et le système invité.
Liste des principales modifications :
Préparation pour le lancement dans Kata Containers et Confidential Containers.
Asterinas 0.18 fait un pas important vers sa mise en œuvre en tant que système d'exploitation invité au sein de machines virtuelles de conteneurs isolés. Cela est crucial pour les scénarios où les conteneurs ne s'exécutent pas directement sur le noyau de l'hôte, mais à l'intérieur d'une machine virtuelle séparée, notamment dans des environnements de confidential computing.Prise en charge des espaces de noms.
Des espaces de noms IPC et cgroup sont apparus dans le noyau, ainsi que nsfs, qui présente les espaces de noms via /proc/[pid]/ns. Cela rapproche Asterinas du modèle d'isolation des processus utilisé par les conteneurs Linux.Prise en charge initiale des cgroups.
Un sous-contrôleur PID a été mis en œuvre, ainsi qu'un support partiel pour le sous-contrôleur CPU. En particulier, des statistiques cpu.stat sont désormais disponibles, et des fichiers de limitations cpu.weight et cpu.max ont été ajoutés. Ce n'est pas encore une mise en œuvre complète de tout le mécanisme des cgroups, mais c'est déjà une base nécessaire pour les scénarios de conteneurs.virtio-fs pour le partage du système de fichiers avec l'hôte.
La prise en charge de virtio-fs a été ajoutée, permettant au système invité d'utiliser le système de fichiers fourni par l'hôte. Pour les VM-conteneurs, cela constitue un des mécanismes clés pour le transfert de données sans solutions de contournement lourdes.virtio-rng et /dev/hwrng.
virtio-rng a été ajouté avec l'exportation de l'entropie matérielle via /dev/hwrng. Cela est nécessaire au bon fonctionnement des opérations cryptographiques et des générateurs de nombres aléatoires à l'intérieur du système d'exploitation invité.vsock retravaillé.
Le vsock a été entièrement réécrit — un mécanisme de communication entre l'hôte et la machine virtuelle invité. Dans le contexte de Kata Containers et de Confidential Containers, cela est important pour les canaux de gestion, les agents et l'interaction de service entre VM et l'environnement d'exécution.Le ptrace a été ajouté ainsi que le support pour le débogage userspace.
L'appel système ptrace a été mis en œuvre avec les principales opérations PTRACE_SETOPTIONS, PTRACE_SYSCALL, PTRACE_PEEK et PTRACE_POKE. Grâce à cela, sur Asterinas, il est désormais possible d'exécuter des outils de débogage familiers tels que GDB et strace. Une documentation sur leur utilisation vérifiée et des tests CI ont été ajoutés.Un nouveau pilote NVMe.
Un pilote NVMe a été ajouté à la couche de blocs. Cela étend les capacités d'Asterinas à travailler avec des supports modernes et rapproche le système d'un lancement pratique sur du matériel serveur réel et virtualisé.Un pilote EXT2 entièrement réécrit.
Le système de fichiers EXT2 a été réimplementé. Les développeurs associent cela à une modernisation générale de la pile de stockage : le sous-système de fichiers doit devenir plus fiable et adapté pour exécuter un environnement utilisateur réel.Modifications dans le VFS et le cache de pages.
Un mécanisme de revalidation Dentry a été ajouté au VFS, la mise en œuvre du cache de pages a été repensée, pivot_root a été mis en œuvre, le support de O_TMPFILE pour open/openat a été ajouté, et un bug dans le cache de pages, qui pouvait entraîner une fuite de mémoire non initialisée dans userspace, a été corrigé.Extension de procfs.
Ajout de /proc/mounts, /proc/[pid]/auxv, /proc/[tid], enregistrements supplémentaires dans /proc/[pid]/maps et mountstats. Cela améliore la compatibilité avec les applications Linux et les outils de diagnostic qui attendent une structure /proc familière.Améliorations réseau.
En plus du vsock réécrit, un support initial pour IPv6 a été introduit, des corrections sur la mise en œuvre de UDP et un contrôle des droits lors du binding à des ports privilégiés : le binding à ces ports est désormais rejeté sans CAP_NET_BIND_SERVICE.Mécanisme de capabilities et cadre LSM initial.
La version inclut la mise en œuvre des capabilities, le support du capability bounding set, des corrections sur les appels système liés aux credentials, et un cadre LSM initial. Cela fait partie du travail pour rapprocher le modèle de sécurité d'Asterinas de celui de Linux.Améliorations PCI, TTY et console.
La détection des périphériques PCI a été améliorée, le support ECAM PCI a été ajouté sur x86, le support de plusieurs TTY, de la console NS16550A UART, /dev/ttyS0 et du paramètre console=ttyS0 a été réalisé. De plus, le travail avec le clavier a été amélioré.Extension d'Asterinas NixOS.
Dans Asterinas NixOS, plus de 100 paquets populaires sont désormais vérifiés, y compris Codex, QEMU et Firefox. Un support séparé pour ARCH_GET_GS et ARCH_SET_GS a été ajouté pour Firefox.Nouveaux ensembles de tests.
Le projet intègre Linux kselftest, xfstests, des tests standards pour Go, Python et JDK, ainsi que des tests QEMU pour les applications de virtualisation. Cela est important comme signe de maturité du projet : Asterinas est de plus en plus testé avec de véritables charges de travail Linux.Modifications dans OSTD et OSDK.
Dans OSTD, le crate log a été remplacé par une API de journalisation propre, les API DMA ont été repensées, un framework pour des opérations de copie de mémoire typées a été ajouté, et un refactoring de Pod a été réalisé en utilisant zerocopy. Un environnement Docker pour le développement sur ARM/aarch64 a également été ajouté.Mise à jour de la documentation.
Dans Asterinas Book, des règles de codage, une analyse de la solidité pour OSTD, ainsi que de la documentation sur Kata Containers et Confidential Containers ont été ajoutées. Cela souligne que le scénario de virtualisation par conteneurs est devenu l'une des principales directions du projet.
Asterinas 0.18 ne peut pas être considéré comme un remplacement de Linux pour un usage quotidien, mais cette version propulse nettement le projet vers des scénarios de serveurs pratiques et de conteneurs. Trois directions sont particulièrement importantes : la compatibilité avec les programmes Linux, le support des mécanismes d'isolation et le fonctionnement dans des environnements de conteneurs basés sur VM.
Source : linux.org.ru
