screenshot de Mestre
Rust ha guanyat prou popularitat a tal grau que s'ha convertit en un dels elegits per integrar-se com a llenguatge secundari a Linux, així com també en altres sistemes operatius, tal és el cas d'Android, que ja compta amb part de codi a Rust, Windows que també li ha donat el vistiplau, entre d'altres.
Rovell ha demostrat ser un llenguatge robust i que ha generat aquesta confiança que fins i tot s'han creat ja alguns sistemes operatius amb aquest llenguatge de programació i només per esmentar-ne alguns tenim a Redox, també tenim a Kernels escrits des de zero com per exemple Kerla o el Kernel utilitzat al satèl·lit que recentment llanço xinesa.
La raó d'esmentar això, és que fa poc em vaig trobar amb una notícia que crido la meva atenció i és que es va presentar un projecte en el qual es desenvolupa un Kernel escrit a Rust i el qual és parcialment compatible amb Linux.
El nom daquest projecte és «Mestre» i com es va esmentar, és un kernel similar a Unix escrit a Rust implementant un subconjunt de trucades al sistema del kernel de Linux suficients per crear entorns de treball estàndard. Com a tal, el projecte de «Mestre» no és una cosa nova, ja que el desenvolupador esmenta que el projecte va néixer l'any 2018, però en aquell moment estava escrit a C i per les diferents bondats i característiques de Rust, el projecte va ser reescrit des de zero.
A la pàgina del projecte es descriuen les raons del canvi:
En aquell moment vaig decidir canviar-me a Rust (el meu primer projecte en aquest llenguatge), cosa que va representar diversos avantatges:
- Reinicieu el projecte des del principi, utilitzant les lliçons apreses d'errors anteriors.
- Sigueu una mica més innovador que simplement escriure un nucli similar a Linux en C. Després de tot, simplement utilitzeu Linux en aquest moment.
- Utilitzeu la seguretat del llenguatge Rust per aprofitar algunes dificultats de la programació del nucli. L'ús del sistema d'escriptura de Rust permet transferir part de la responsabilitat sobre la seguretat de la memòria del programador al compilador.
En el desenvolupament del nucli, la depuració és molt difícil per diverses raons:
- La documentació sol ser difícil de trobar i les implementacions del BIOS poden tenir falles (més sovint del que creieu).
- En arrencar, el kernel té accés total a la memòria i pot escriure on no ho hauria de fer (el vostre propi codi, per exemple).
- Solucionar problemes de pèrdues de memòria no és fàcil. No es poden fer servir eines com valgrind.
- gdb es pot fer servir amb QEMU i VMWare , però el nucli pot tenir un comportament diferent quan s'executa en un emulador o màquina virtual diferent. A més, és possible que aquests emuladors no siguin compatibles amb gdb (per exemple, VirtualBox).
- Falten algunes funcions en el suport per a gdb en QEMU o VMWare i gdb pot fins i tot fallar de vegades
En relació amb les característiques del projecte, es destaca que el Kernel és monolític i actualment només és compatible amb sistemes x86 en mode de 32 bits. La base del codi del nucli abasta prop de 49 mil línies, i és executable tant en maquinari real com en entorns virtualitzats, com QEMU o VirtualBox.
En el desenvolupament actual de Mestre, s'han implementat el 31% (135 de 437) de les trucades al sistema Linux. això és suficient per carregar un entorn de consola basat en Bash i la biblioteca C estàndard Musl. A més, l'entorn basat en Mestre pot executar algunes utilitats de la suite GNU coreutils i una paqueteria bàsica de qualsevol sistema Unix. Actualment s'està treballant en la implementació d'una pila de xarxa i també s'està treballant en el desenvolupament d'un servidor X11, un administrador de paquets, un carregador d'arrencada, un instal·lador i altres utilitats essencials per construir un sistema operatiu.
Entre les funcions disponibles de Mestre es destaquen les següents::
- Controladors per a teclat i terminal PS/2 amb mode text i suport parcial per a seqüències ANSI.
- Sistema d'assignació de memòria amb suport per a memòria virtual.
- Programador de tasques basat en l'algorisme round-robin amb suport per a senyals POSIX.
- Definició de dispositius PCI.
- Controlador IDE/PATA.
- Sistema de fitxers Ext2.
- Suport per a sistemes de fitxers virtuals /tmp i /proc.
- Capacitat per muntar particions de disc FS, MBR i GPT.
- Suport d'initramfs.
- Controlador RTC per a temporitzador i hora precisa.
- Suport per carregar mòduls del nucli.
- Capacitat per executar fitxers executables en format ELF.
Per als proveïdors de software: XNUMX-XNUMX-XNUMX. interessats a poder conèixer una mica més sobre el projecte, Poden consultar els detalls en el següent enllaç. Pel que fa als interessats en el codi del projecte, han de saber que aquest es distribueix sota la llicència MIT.