Ajouter un commentaire

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.

Filtered HTML

Plain text

CAPTCHA
Cette question permet de vérifier que vous n'êtes pas un robot spammeur :-)
 EEEE  III  EEEE  PPPP   N   N 
E I E P P NN N
EEE I EEE PPPP N N N
E I E P N NN
EEEE III EEEE P N N