Kerla : un nouveau noyau de système d'exploitation écrit en Rust et compatible avec l'ABI Linux
ce qui devrait permettre d'exécuter les binaires Linux sans aucune modification

Le projet Kerla développe un noyau de système d'exploitation écrit en langage Rust. Le nouveau noyau vise initialement à assurer la compatibilité avec le noyau Linux au niveau de l'ABI, ce qui permettra aux binaires non modifiés construits pour Linux de fonctionner dans un environnement basé sur Kerla. 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.

Kerla est un noyau de système d'exploitation monolithique créé de toutes pièces en Rust. Au stade actuel du développement, Kerla ne peut fonctionner que sur des systèmes dotés d'une architecture x86_64 et met en œuvre les appels système de base tels que write, stat, mmap, pipe et poll, supporte les signaux, les pipe sans nom et les commutations de contexte. Des appels tels que fork, wait4, et execve sont fournis pour contrôler les processus. Il y a un support pour tty et les pseudo-terminaux (pty). Parmi les systèmes de fichiers, initramfs (utilisé pour monter le FS racine), tmpfs et devfs sont toujours supportés.

Nom : screenshot.png
Affichages : 32152
Taille : 68,8 Ko

Une pile réseau avec support des sockets TCP et UDP est également fournie, basée sur la bibliothèque smoltcp. Le développeur a préparé un environnement de démarrage qui fonctionne dans QEMU ou dans la machine virtuelle Firecracker 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. Sur la base de Docker, un système de construction a été préparé qui vous permet de créer vos propres initramfs de démarrage avec le noyau Kerla.

Pour le moment, Seiya n'a fourni que peu de détails sur son nouveau noyau, mais ce qui retient le plus l'attention dans les caractéristiques de Kerla, c'est le fait qu'il est écrit en Rust. Alors, est-ce que le fait de l'écrire en Rust présente un avantage par rapport aux autres langages ou au code existant ? Beaucoup ont répondu par l'affirmative à cette question, mettant l'accent sur les avantages en matière de sécurité de la mémoire que fournit le langage.

« Pour moi, Rust est un terrain d'entente intéressant, il est assez bas niveau pour être une alternative au C, assez haut niveau pour être une alternative au C++ - avec certains des avantages du C# sans certains des inconvénients. Cela ne veut pas dire qu'il n'y a pas d'inconvénients avec Rust, mais à mon avis, ils sont largement compensés par les avantages dans la plupart des cas. Au prix d'une certaine rigueur dans le travail avec Rust, c'est un langage phénoménal », a écrit un critique. Selon un autre, Rust devrait permettre à Kerla d'afficher de meilleures performances, un peu comme s'il était écrit en C, tout en résolvant un grand nombre de bogues liés à la mémoire.

« Le C vous fait entièrement confiance, et fera des choses stupides si vous le lui demandez », a-t-il déclaré. En effet, Mozilla, le développeur de Rust, indique que l'utilisation du langage dans un projet vous permet de réduire le nombre d'erreurs dans votre code grâce à l'utilisation de techniques de programmation sûres et à une augmentation de l'efficacité de l'identification des problèmes lors du travail avec la mémoire. Selon Mozilla, la gestion sûre de la mémoire est assurée dans Rust au moment de la compilation par la vérification des références, le suivi de la propriété des objets et la durée de vie des objets (portée).

Elle est également assurée par l'évaluation de l'exactitude des accès à la mémoire au moment de l'exécution. En outre, Mozilla estime que Rust offre une protection contre les débordements d'entiers, exige l'initialisation obligatoire des valeurs de variables avant leur 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 correspondance des motifs.

Nom : rust.jpg
Affichages : 6041
Taille : 62,8 Ko

Pour le développement de composants de bas niveau tels que le noyau du système d'exploitation, Rust fournit un support pour les pointeurs bruts, l'empaquetage des structures, les insertions en ligne de l'assembleur et l'incorporation de fichiers en langage d'assemblage. Pour travailler sans être lié à la bibliothèque standard, il existe des paquets crate séparés pour effectuer des opérations avec des chaînes de caractères, des vecteurs et des drapeaux binaires.

Parmi les avantages, on note les outils intégrés pour évaluer la qualité du code (linter, rust-analyzer) et créer des tests unitaires qui peuvent être exécutés non seulement sur du matériel réel, mais aussi dans QEMU. En gros, Mozilla considère que Rust est plus facile à déboguer, puisque les bogues seront rejetés par le compilateur. Néanmoins, les criques ont souligné quelques inconvénients avec Rust.

« Comme pour le C++, il est quasiment impossible d'écrire un Rust idiomatique sans utiliser de templates, ce qui fait que vous avez des binaires gonflés et des temps de compilation lents. Toutes ces vérifications à 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 aucune chance que vous puissiez produire une base de code de qualité similaire dans un temps raisonnable - il est bien mieux 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.

D'après lui, c'est pour cette raison que les développeurs de Linux, notamment Linus Torvalds lui-même, ont rejeté l'idée de réécrire tout le noyau en Rust. « Mettez un peu de travail pour créer des liaisons sûres, puis écrivez le code supplémentaire en 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 en Rust) », a-t-il ajouté. Les développeurs de Linux explorent depuis trois ans environ les possibilités d'écrire certains nouveaux modules du noyau en utilisant le langage Rust. Ce qui a donné naissance au projet "Rust for Linux".

Source : Kerla

Et vous ?

Quel est votre avis sur le sujet ?
Que pensez-vous du noyau de système d'exploitation Kerla ?
Que pensez-vous de la compatibilité de Kerla avec l'ABI Linux ?
Le projet pourrait-il grandir et faire de l'ombre de l'ombre à Linux à l'avenir ?
Le fait qu'il est entièrement écrit en Rust le rend-il automatiquement plus sûr que Linux ?

Voir aussi

Les derniers correctifs du projet Rust for Linux montrent que le langage Rust avance à grands pas vers le noyau. Torvalds estime que cela pourrait être prêt pour la version 5.14

Google soutient un projet Linux visant à rendre Android et Chrome OS plus difficiles à pirater, tout en militant pour l'utilisation de Rust dans le code du noyau

Après Microsoft et Linux, c'est au tour d'Apple de montrer de plus en plus d'intérêt pour l'utilisation de Rust dans la programmation de bas niveau

Amazon : « nous embauchons des ingénieurs en logiciels qui maîtrisent le langage de programmation Rust », AWS estime que Rust est un élément essentiel de sa stratégie à long terme