Le projet Kerla développe un noyau compatible Linux en langage Rust

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 ABI, ce qui permettra aux fichiers exécutables non modifiés compilés pour Linux de s'exécuter 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.

À son stade actuel de développement, Kerla ne peut fonctionner que sur des systèmes x86_64 et implémente des appels système de base tels que write, stat, mmap, pipe et poll, prend en charge les signaux, les canaux sans nom et les commutateurs de contexte. Des appels tels que fork, wait4 et execve sont fournis pour contrôler les processus. Il existe un support pour les tty et les pseudo-terminaux (pty). Les systèmes de fichiers actuellement pris en charge sont initramfs (utilisé pour monter le système de fichiers racine), tmpfs et devfs. Une pile réseau prenant en charge les sockets TCP et UDP est fournie, implémentée sur la base de la bibliothèque smoltcp.

Le développeur a préparé un environnement de démarrage qui s'exécute 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 utilitaires utilisateur.

Le projet Kerla développe un noyau compatible Linux en langage Rust

Un système de construction basé sur Docker a été préparé pour vous permettre de créer vos propres initramfs de démarrage avec le noyau Kerla. Par ailleurs, le shell logiciel nsh similaire à fish et la pile d'interface graphique Kazari basée sur le protocole Wayland sont en cours de développement.

Le projet Kerla développe un noyau compatible Linux en langage Rust

L'utilisation du langage Rust dans un projet vous permet de réduire le nombre d'erreurs dans le code en utilisant des techniques de programmation sécurisées et en augmentant l'efficacité de l'identification des problèmes lors du travail avec la mémoire. Rust assure la sécurité de la mémoire au moment de la compilation grâce à la vérification des références, à la propriété des objets et au suivi de la durée de vie des objets (portées), et en évaluant l'exactitude des accès à la mémoire au moment de l'exécution. De plus, Rust offre une protection contre les débordements d'entiers, nécessite que les valeurs des variables soient initialisées avant utilisation, applique 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 la gestion des valeurs d'entrée. grâce à la correspondance de motifs. .

Pour le développement de composants de bas niveau, tels que le noyau du système d'exploitation, Rust prend en charge les pointeurs bruts, le regroupement de structures, les insertions en ligne d'assembleur et l'intégration de fichiers assembleur. Pour travailler sans être lié à la bibliothèque standard, il existe des packages de caisse distincts pour effectuer des opérations avec des chaînes, des vecteurs et des indicateurs binaires. Un autre avantage réside dans 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 également dans QEMU.

Source: opennet.ru

Ajouter un commentaire