
Maestro, un noyau et un syst�me d'exploitation de type Unix �crit � partir de z�ro en Rust. Son objectif est que Maestro soit "l�ger et suffisamment compatible avec Linux pour �tre utilisable dans la vie de tous les jours."
Introduction
Gr�ce � l'internet, je peux apprendre comment fonctionnent la plupart des choses qui m'int�ressent. Cependant, une chose est rest�e longtemps un myst�re pour moi : les ordinateurs.
Les ordinateurs sont parmi les outils les plus complexes que l'humanit� ait jamais construits. Ce sont des merveilles d'ing�nierie que nous tenons pour acquises parce que nous les utilisons dans notre vie quotidienne.
J'aime me plonger dans la complexit� et j'aime apprendre par la pratique. De plus, je passe beaucoup de temps sur l'ordinateur. Ne serait-ce pas g�nial d'avoir un syst�me que je conna�trais de A � Z et que je pourrais personnaliser autant que je le souhaite pour qu'il corresponde � mes attentes ?
C'est pourquoi j'ai d�cid� de cr�er Maestro. Un syst�me d'exploitation de type Unix qui se veut l�ger et suffisamment compatible avec Linux pour �tre utilisable dans la vie de tous les jours.
Les ordinateurs sont parmi les outils les plus complexes que l'humanit� ait jamais construits. Ce sont des merveilles d'ing�nierie que nous tenons pour acquises parce que nous les utilisons dans notre vie quotidienne.
J'aime me plonger dans la complexit� et j'aime apprendre par la pratique. De plus, je passe beaucoup de temps sur l'ordinateur. Ne serait-ce pas g�nial d'avoir un syst�me que je conna�trais de A � Z et que je pourrais personnaliser autant que je le souhaite pour qu'il corresponde � mes attentes ?
C'est pourquoi j'ai d�cid� de cr�er Maestro. Un syst�me d'exploitation de type Unix qui se veut l�ger et suffisamment compatible avec Linux pour �tre utilisable dans la vie de tous les jours.
Le premier commit du noyau date du 22 d�cembre 2018, � 3:18 du matin (le meilleur moment pour �crire du code, bien s�r). Il s'agissait � l'origine d'un projet scolaire.
Il a d'abord �t� impl�ment� en utilisant le langage C et a continu� � l'�tre pendant environ un an et demi, jusqu'� ce que la base de code devienne trop difficile � garder propre.
� ce moment-l�, il a d�cid� de passer � Rust (son premier projet dans ce langage), qui pr�sentait plusieurs avantages :
- Reprendre le projet depuis le d�but, en utilisant les le�ons tir�es des erreurs pr�c�dentes
- �tre un peu plus innovant que d'�crire un noyau Linux en C. Apr�s tout, il suffit d'utiliser Linux � ce moment-l�.
- Utiliser la s�curit� du langage Rust pour surmonter certaines difficult�s de la programmation du noyau. L'utilisation du syst�me de typage de Rust permet de transf�rer une partie de la responsabilit� de la s�curit� de la m�moire du programmeur au compilateur.
Dans le d�veloppement du noyau, le d�bogage est tr�s difficile pour plusieurs raisons :
- La documentation est souvent difficile � trouver, et les impl�mentations BIOS peuvent �tre d�fectueuses (plus souvent qu'on ne le pense).
- Au d�marrage, le noyau a un acc�s total � la m�moire et est autoris� � �crire l� o� il ne devrait pas (son propre code, par exemple).
- Le d�pannage des fuites de m�moire n'est pas facile. Des outils tels que valgrind ne peuvent pas �tre utilis�s
- gdb peut �tre utilis� avec QEMU et VMWare, mais le noyau peut avoir un comportement diff�rent lorsqu'il est ex�cut� sur un �mulateur ou une machine virtuelle diff�rents. En outre, ces �mulateurs peuvent ne pas prendre en charge gdb (par exemple VirtualBox).
- Certaines fonctionnalit�s du support de gdb dans QEMU ou VMWare sont manquantes (comme Record and Replay) et gdb peut m�me parfois se planter.
Tous ces probl�mes sont autant de raisons d'utiliser un langage � m�moire s�re, afin de les �viter autant que possible.
Globalement, l'utilisation de Rust dans le noyau a permis la mise en place de nombreuses protections. Et c'est peut-�tre, la meilleure d�cision prise pour ce projet.
L'�tat actuel du projet
Maestro est un noyau monolithique, ne supportant pour l'instant que l'architecture x86 (en 32 bits).
� l'heure o� ces lignes sont �crites, 135 des 437 appels syst�me de Linux (environ 31 %) sont plus ou moins impl�ment�s. Le projet compte 48 800 lignes de code r�parties dans 615 fichiers (tous d�p�ts confondus, compt�s � l'aide de la commande cloc).
Le syst�me d'exploitation comporte actuellement les composants suivants, outre le noyau :
- Solf�ge : un syst�me de d�marrage et un gestionnaire de d�mons (similaire � systemd, mais plus l�ger)
- maestro-utils : commandes utilitaires du syst�me
- blimp : un gestionnaire de paquets
- Et d'autres composants disponibles sur github
Jusqu'� pr�sent, les logiciels tiers suivants ont �t� test�s et fonctionnent sur le syst�me d'exploitation :
- musl (biblioth�que standard C)
- bash
- Quelques commandes GNU coreutils telles que ls, cat, mkdir, rm, rmdir, uname, whoami, etc...
- neofetch (une version patch�e, puisque le neofetch original ne conna�t pas ce syst�me d'exploitation)
Quelles sont les prochaines �tapes ?
Le nettoyage de la base de code et l'optimisation des performances sont en cours. Comme le syst�me d'exploitation a commenc� comme un projet d'�cole, son d�veloppeur a d� prendre des raccourcis pour le terminer � temps. Mais il est maintenant temps de rembourser la dette technique accumul�e.
Quelques fuites de m�moire tra�nent �galement et doivent �tre corrig�es. L'optimisation des performances fera probablement l'objet d'articles de blog.
Le prochain pas en avant sera de faire fonctionner pleinement le gestionnaire de paquets sur le syst�me d'exploitation. Pour ce faire, certaines fonctionnalit�s sont n�cessaires :
- La prise en charge des r�seaux, qui est actuellement en cours de d�veloppement. Elle fera probablement l'objet de nombreux articles
- Le support des biblioth�ques partag�es. Cela ne fonctionne pas actuellement car cela n�cessite de mapper des fichiers directement en m�moire, ce qui n'est pas actuellement support� par l'impl�mentation de l'appel syst�me mmap sur le kernel.
Apr�s cela, on pourrait installer (sans douleur) et tester des programmes tels que les compilateurs (gcc/g++, clang, rustc), make, Git, Vim, etc... Et ensuite d�velopper le noyau tout en l'utilisant !
Le d�veloppement du noyau suit en grande partie une proc�dure simple :
- 1 : Ex�cuter un programme sur le noyau et voir s'il fonctionne correctement
- 2 : S'il ne fonctionne pas, alors :
- 3 : Ex�cuter le programme en imprimant les appels syst�me et rechercher le premier appel syst�me qui pose probl�me (non impl�ment� ou bogu�).
- 4 : Impl�mentez ou corrigez l'appel syst�me en question.
- 5 : Passez � l'�tape 1
- 6 : Sinon : Bravo !
Plus il y a de programmes fonctionnant correctement sur le noyau, plus celui-ci devient stable et complet !
Testez-le vous-m�me !
Avertissement : Il est important de noter que le syst�me d'exploitation est encore � un stade de d�veloppement tr�s pr�coce et qu'il est tr�s instable. Je d�conseille d'essayer de l'installer sur une machine contenant des donn�es importantes.
Jusqu'� pr�sent, il a �t� test� principalement sur QEMU, VMWare et VirtualBox.
Jusqu'� pr�sent, il a �t� test� principalement sur QEMU, VMWare et VirtualBox.
- Utiliser un fichier .iso pr�-construit (compress�) qu'on peut t�l�charger ici
- Construire l'ISO soi-m�me
L'ISO fournit un programme d'installation pour le syst�me d'exploitation. On peut l'utiliser sur QEMU, VMWare ou VirtualBox par exemple.
Vous devez ex�cuter l'ISO avec suffisamment de m�moire vive (1 Go devrait �tre plus que suffisant).
Une telle quantit� de m�moire est n�cessaire parce que les paquets � installer sont stock�s dans la RAM (sur l'initramsfs) au lieu du disque. C'est actuellement la meilleure m�thode, car le syst�me d'exploitation n'est pas encore capable de lire lui-m�me sur une cl� USB ou un CD-ROM ; il s'appuie donc sur le chargeur de d�marrage pour ce faire.
Une telle quantit� de m�moire est n�cessaire parce que les paquets � installer sont stock�s dans la RAM (sur l'initramsfs) au lieu du disque. C'est actuellement la meilleure m�thode, car le syst�me d'exploitation n'est pas encore capable de lire lui-m�me sur une cl� USB ou un CD-ROM ; il s'appuie donc sur le chargeur de d�marrage pour ce faire.
Et vous ?

Voir aussi :



Vous avez lu gratuitement 0 articles depuis plus d'un an.
Soutenez le club developpez.com en souscrivant un abonnement pour que nous puissions continuer � vous proposer des publications.
Soutenez le club developpez.com en souscrivant un abonnement pour que nous puissions continuer � vous proposer des publications.