IdentifiantMot de passe
Loading...
Mot de passe oubli� ?Je m'inscris ! (gratuit)

Vous �tes nouveau sur Developpez.com ? Cr�ez votre compte ou connectez-vous afin de pouvoir participer !

Vous devez avoir un compte Developpez.com et �tre connect� pour pouvoir participer aux discussions.

Vous n'avez pas encore de compte Developpez.com ? Cr�ez-en un en quelques instants, c'est enti�rement gratuit !

Si vous disposez d�j� d'un compte et qu'il est bien activ�, connectez-vous � l'aide du formulaire ci-dessous.

Identifiez-vous
Identifiant
Mot de passe
Mot de passe oubli� ?
Cr�er un compte

L'inscription est gratuite et ne vous prendra que quelques instants !

Je m'inscris !

Maestro : un noyau et un syst�me d'exploitation en Rust compatible avec Linux
Qui se veut l�ger pour �tre utilisable dans la vie de tous les jours

Le , par Jade Emy

223PARTAGES

10  0 
Pr�sentation de Maestro : un noyau et un syst�me d'exploitation en Rust compatible avec Linux, Maestro se veut l�ger pour �tre utilisable dans la vie de tous les jours

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.
Un peu d'histoire

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.
Il y a deux fa�ons d'installer le syst�me d'exploitation :


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.
Source : Maestro - Introduction

Et vous ?

Quel est votre avis sur le sujet ?

Voir aussi :

Rust dans le noyau Linux: un projet prometteur, mais pas sans complications. La communaut� dresse un bilan lors de l'�dition 2023 du Kernel Maintainers Summit

Microsoft travaille � r��crire le code du kernel de Windows responsable de la gestion des fen�tres en langage Rust, consid�r� comme candidat id�al � l'abandon des langages C et C++

Rust peut faciliter l'arriv�e de nouveaux contributeurs dans les projets open source tout en r�duisant les vuln�rabilit�s. Sans eux, le projet finira par devenir inactif, d'apr�s un sujet de recherche
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.

Une erreur dans cette actualit� ? Signalez-nous-la !

Avatar de prisme60
Membre r�gulier https://www.developpez.com
Le 12/01/2024 � 15:03
J'ai vu cette actualit� dans le Week in Rust de cette semaine https://this-week-in-rust.org/blog/2024/01/10/this-week-in-rust-529/, mais comme le d�veloppeur le dit lui m�me, ce n'est pas encore fini, et que comme c'�tait un projet scolaire, il a du prendre quelques raccourcis pour finir � temps et pr�senter son travail.

En tout cas, on ne peut que constater que le Rust permet une gestion plus facile sur les gros projets (refactoring moins compliqu� et plus s�curis�).
3  0