Kerla : un nouveau noyau écrit en Rust et compatible avec l'ABI Linux

Des informations sur le projet Kerla ont été publiées récemment, qui sont développées en tant que noyau de système d'exploitation écrit en langage Rust. Le code est distribué sous les licences Apache 2.0 et MIT. Le projet est développé par le développeur japonais Seiya Nuta, connu pour avoir créé le système d'exploitation à micronoyau Resea, écrit en langage C.

Le nouveau noyau vise dans un premier temps assurer la compatibilité avec le noyau Linux au niveau ABI, qui permettra aux binaires non modifiés conçus pour Linux de s'exécuter dans un environnement basé sur Kerla.

À propos de Keral

Kerla est un noyau de système d'exploitation monolithique créé à partir de zéro dans Rust. Au stade actuel de développement, Kerla ne peut être exécuté que sur des systèmes avec une architecture x86_64 et implémente les appels système de base tels que write, stat, mmap, pipe et poll, prend en charge les signaux, les pipes sans nom et les commutateurs de contexte. Des appels tels que fork, wait4 et execve permettent de contrôler les processus. Il existe un support pour tty et les pseudo-terminaux (pty). Parmi les systèmes de fichiers initramfs (utilisés pour monter le FS racine), tmpfs et devfs sont toujours pris en charge.

Une pile réseau avec prise en charge des sockets TCP et UDP est également fournie, basé sur la bibliothèque smoltcp. Le développeur a préparé un environnement de démarrage qui fonctionne dans QEMU ou Firecracker VM avec le pilote virtio-net, auquel vous pouvez déjà vous connecter via SSH. Musl est utilisé comme bibliothèque système et BusyBox est utilisé comme utilitaire utilisateur. Basé sur Docker, un système de construction a été préparé qui vous permet de créer votre propre démarrage initramfs avec le noyau Kerla.

Jusqu'à présent, peu de détails ont été fournis sur son nouveau noyau, mais ce qui attire le plus l'attention sur les fonctionnalités de Kerla est le fait qu'il est écrit en Rust. Alors, l'écrire en Rust présente-t-il un avantage par rapport aux autres langages ou par rapport au code existant ? Beaucoup ont répondu oui à cette question, en insistant sur les avantages de la sécurité de la mémoire fournis par le langage.

Il est également fourni lors de l'évaluation de la précision des accès mémoire au moment de l'exécution. En outre, Mozilla pense que Rust offre une protection contre les débordements d'entiers, nécessite l'initialisation obligatoire des valeurs des variables avant utilisation, adopte le concept de références et de variables immuables par défaut, offre un typage statique fort pour minimiser les erreurs logiques et simplifie le traitement des entrées grâce à la mise en correspondance des modèles.

Parmi les avantages, nous soulignons les outils intégrés pour évaluer la qualité du code et créer des tests unitaires pouvant être exécutés non seulement sur du matériel réel, mais également sur QEMU. Fondamentalement, Mozilla trouve Rust plus facile à déboguer car le compilateur rejettera les erreurs. Cependant, les criques ont signalé certains inconvénients avec Rust.

«Comme avec C++, il est presque impossible d'écrire Rust idiomatique sans utiliser de modèles, il a donc des binaires gonflés et des temps de compilation lents. Toutes ces vérifications au moment de la compilation ont également un coût. De plus, si vous réécrivez quelque chose, vous perdez l'ancienne base de code mature, et il n'y a aucun moyen de produire une base de code de qualité similaire dans un laps de temps raisonnable ; il est préférable d'étendre, plutôt que de réécrire, le programme en Rust. Il vaut mieux étendre le programme plutôt que de le réécrire en Rust », explique un ingénieur logiciel.

Selon son créateur, c'est pour cette raison que les développeurs Linux, en particulier Linus Torvalds lui-même, ils ont rejeté l'idée de réécrire l'intégralité du noyau en Rust.

« Faites un peu de travail pour créer des liens sécurisés, puis écrivez le code supplémentaire dans Rust et vous pourrez toujours profiter de ce code mature. (C'est ce que fait Linux, il y a des efforts pour ajouter la possibilité d'écrire un module de noyau dans Rust) », a-t-il ajouté. Les développeurs Linux explorent les possibilités d'écrire certains nouveaux modules du noyau en utilisant le langage Rust depuis environ trois ans. Cela a donné naissance au projet »Rust for Linux«.

Enfin, si vous souhaitez en savoir plus, vous pouvez consulter les détails dans le lien suivant.


Le contenu de l'article adhère à nos principes de éthique éditoriale. Pour signaler une erreur, cliquez sur c'est par ici !.

Soyez le premier à commenter

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée.

*

*

  1. Responsable des données: Miguel Ángel Gatón
  2. Finalité des données: Contrôle du SPAM, gestion des commentaires.
  3. Légitimation: votre consentement
  4. Communication des données: Les données ne seront pas communiquées à des tiers sauf obligation légale.
  5. Stockage des données: base de données hébergée par Occentus Networks (EU)
  6. Droits: à tout moment, vous pouvez limiter, récupérer et supprimer vos informations.