Kerla : un noyau écrit en Rust compatible avec l'environnement GNU Linux

Par:
fredericmazue

jeu, 28/10/2021 - 16:02

Kerla est un projet du développeur japonais Seiya Nuta. Un développeur au profil intéressant qui a déjà réalisé Resea, un micro noyau écrit en langage C à partir de zéro avec support réseau et système de fichiers, et nsh, un shell compatible POSIX pouvant être une altrernative à Bash.

Alors que le langage Rust pourrait arriver très bientôt dans le noyau Linux, Seiya Nuta a écrit Kerla, un noyau à nouveau écrit à partir de zéro, cette fois en langage Rust. Kerla est un noyau monolithique qui veut être compatible avec l'ABI Linux, de façon à ce qu'il soit possible d'exécuter les binaires Linux sans aucune modification.

Le travail est déjà très avancé. Ainsi Kerla :

  • implémente les concepts de processus *NIX : changement de contexte, signaux, fork(2), execve(2), wait4(2), etc.
  • prend en charge les appels système couramment utilisés comme write(2), stat(2), mmap(2), pipe(2), poll(2), ...
  • n'a pas de support de disque pour l'instant : initramfs est monté en tant que système de fichiers racine.
  • dispose de pseudo systèmes de fichiers : tmpfs et devfs.
  • supporte TCP/IP. Cette prise en charge est basée sur smoltcp .
  • implémente tty et le pseudo terminal (pty).
  • prend en charge QEMU et Firecracker (avec pilote de périphérique virtio-net).
  • prend en charge x86_64 seulement.

Seiya Nuta propose à chacun d'essayer Kerla à travers une connexion ssh, qui, lorsqu'elle est établie, lance automatiquement une microVM dédiée sur Firecracker. Il suffit de lancer la cette commande dans un terminal ssh :

ssh root @ kerla-demo.seiya.me

Toutefois, au moment où nous écrivons ces lignes, il est difficile d'établir cette connexion.

La capture ci-dessous montre un terminal connecté à Kerla, et l'exécution de quelques commandes Linux.

Kerla est un logiciel libre sous licences MIT et Apache 2.0, disponible sur GitHub.