Maestro, un nucleu și un sistem de operare asemănător Unix, scris de la zero în Rust

 

Profesor

Captură de ecran Maestro

Rust a câștigat destulă popularitate într-o asemenea măsură încât a devenit unul dintre cei aleși pentru a fi integrat ca limbaj secundar în Linux, precum și în alte sisteme de operare, precum Android, care are deja o parte din cod în Rust. , Windows care i-a dat, de asemenea, voie, printre altele.

Rust s-a dovedit a fi un limbaj robust care a generat o asemenea încredere , încât unele sisteme de operare au fost chiar create cu acest limbaj de programare și doar pentru a menționa câteva avem Redox, avem și kerneluri scrise de la zero precum Kerla sau Kernel-ul folosit în satelitul pe care China l-a lansat recent .

Motivul pentru care menționez acest lucru este că recent am dat peste știri care mi-au atras atenția și anume că a fost prezentat un proiect în care este dezvoltat un Kernel scris în Rust și care este parțial compatibil cu Linux.

Numele acestui proiect este „Maestro” și, după cum s-a menționat, este un nucleu asemănător Unix, scris în Rust, care implementează un subset de apeluri de sistem kernel Linux suficiente pentru a crea medii de lucru standard. Ca atare, proiectul „Maestro” nu este ceva nou, din moment ce dezvoltatorul menționează că proiectul s-a născut în 2018, dar la acel moment era scris în C și datorită diferitelor beneficii și caracteristici ale Rust, proiectul a fost rescris din zero.

Motivele schimbării sunt descrise pe pagina proiectului :

În acel moment am decis să trec la Rust (primul meu proiect în aceast limbaj), care a reprezentat câteva avantaje:

  • Reporniți proiectul de la început, folosind lecțiile învățate din greșelile anterioare.
  • Fii puțin mai inovator decât să scrii un nucleu asemănător Linux în C. La urma urmei, folosește doar Linux la momentul respectiv.
  • Utilizați securitatea limbajului Rust pentru a profita de unele dificultăți de programare a nucleului. Utilizarea sistemului de scriere Rust vă permite să transferați o parte din responsabilitatea pentru siguranța memoriei de la programator la compilator.

În dezvoltarea nucleului, depanarea este foarte dificilă din mai multe motive:

  • Documentația este adesea dificil de găsit, iar implementările BIOS-ului pot avea erori (mai des decât credeți).
  • La pornire, nucleul are acces deplin la memorie și poate scrie acolo unde nu ar trebui (propriul său cod, de exemplu).
  • Depanarea scurgerilor de memorie nu este ușoară. Unelte precum valgrind nu pot fi folosite.
  • gdb poate fi folosit cu QEMU și VMWare, dar nucleul se poate comporta diferit atunci când este rulat pe un alt emulator sau mașină virtuală. De asemenea, acești emulatori pot să nu accepte gdb (de exemplu, VirtualBox).
  • Unele funcții lipsesc din suportul gdb în QEMU sau VMWare și gdb poate chiar să se blocheze uneori

În ceea ce privește caracteristicile proiectului, se evidențiază că Kernel-ul este monolitic și este în prezent compatibil doar cu sisteme x86 în modul 32-bit. Baza de cod de kernel acoperă aproximativ 49 de mii de linii, fiind executabilă atât pe hardware real, cât și în medii virtualizate, precum QEMU sau VirtualBox.

În dezvoltarea actuală a „Maestro”, 31% (135 din 437) din apelurile de sistem Linux au fost implementate . Acest lucru este suficient pentru a încărca un mediu de consolă bazat pe Bash și biblioteca standard C Musl. În plus, mediul bazat pe Maestro poate rula unele utilitare din suita GNU coreutils și pachete de bază din orice sistem Unix. În prezent, se lucrează la implementarea unei stive de rețea și se lucrează și la dezvoltarea unui server X11, a unui manager de pachete, a unui încărcător de pornire, a unui program de instalare și a altor utilități esențiale pentru construirea unui sistem de operare.

Printre funcțiile disponibile ale Maestro se remarcă următoarele :

  • Controlere pentru tastatură și terminal PS/2 cu mod text și suport parțial pentru secvențe ANSI.
  • Sistem de alocare a memoriei cu suport pentru memorie virtuală.
  • Programator de sarcini bazat pe algoritmul round-robin cu suport pentru semnale POSIX.
  • Definiția PCI devices.
  • Controler IDE/PATA.
  • Sistem de fișiere Ext2.
  • Suport pentru sistemele de fișiere virtuale /tmp și /proc.
  • Abilitatea de a monta partiții de disc FS, MBR și GPT.
  • suport initramfs.
  • Controler RTC pentru cronometru și timp precis.
  • Suport pentru încărcarea modulelor nucleului.
  • Abilitatea de a rula fișiere executabile în format ELF.

Pentru cei interesați să afle puțin mai multe despre proiect , puteți consulta detaliile în următorul link. Cât despre cei interesați de codul proiectului, ar trebui să știe că acesta este distribuit sub licența MIT. 

Comentarii

Postări populare de pe acest blog

Visul Linux pe smartphone-uri

Ar trebui să plătești vreodată pentru Linux? De 5 ori aș plăti - și de ce

Ubuntu Mini ISO