Un projet de développement en langage Rust d'un noyau léger de type Unix a été présenté, implémentant un sous-ensemble des appels système du noyau Linux, suffisant pour créer des environnements de travail typiques. Le projet a été créé en 2018 et a d'abord utilisé le langage C, mais a été complètement relancé en 2020 en tenant compte de l'expérience acquise et est passé à Rust pour réduire la probabilité d'erreurs liées à la gestion de la mémoire. Le code du noyau est distribué sous la licence MIT. En plus du noyau, le projet en langage Rust développe également X11-serveur, un gestionnaire de paquets, un bootloader, un installeur, des ensembles d'outils et d'autres composants nécessaires à la construction d'un système d'exploitation.
Le noyau a une architecture monolithique et prend pour l'instant en charge uniquement les systèmes x86 en mode 32 bits. La base de code du noyau compte 48,8 milliers de lignes (pour comparaison, le noyau Linux contient 33 millions de lignes). Un démarrage est possible sous QEMU, VirtualBox ou directement sur le matériel. À ce stade du développement, Maestro implémente 31 % (135 sur 437) des appels système Linux, ce qui est suffisant pour charger un environnement de console basé sur bash et la bibliothèque C standard Musl. Dans un environnement basé sur Maestro, certaines utilitaires du jeu GNU coreutils, tels que ls, cat, mkdir, rm, rmdir, uname et whoami, peuvent également être exécutés.

Parmi les fonctionnalités disponibles de Maestro :
- Des pilotes pour les claviers PS/2 et les terminaux avec mode texte et prise en charge partielle des séquences ANSI.
- Un système de gestion de la mémoire prenant en charge la mémoire virtuelle.
- Un planificateur de tâches basé sur l'algorithme du round-robin avec prise en charge des signaux POSIX.
- Détection des périphériques PCI.
- Pilote IDE/PATA.
- Système de fichiers Ext2.
- Prise en charge des systèmes de fichiers virtuels /tmp et /proc.
- Prise en charge du montage des systèmes de fichiers et des partitions MBR et GPT.
- Prise en charge d'initramfs.
- Pilote RTC pour le minuteur et l'heure précise.
- Prise en charge du chargement des modules du noyau.
- Possibilité d'exécuter des fichiers exécutables au format ELF.
Un travail est actuellement en cours pour créer une pile réseau, après quoi il est prévu de mettre en œuvre la prise en charge du mappage direct des fichiers en mémoire et des bibliothèques partagées.
Source : opennet.ru
