Maestro, tuum ja Unixi-laadne OS, mis on kirjutatud nullist Rustis

Õpetaja

Maestro ekraanipilt

Rooste on saavutanud piisavalt populaarsust sedavõrd, et sellest on saanud üks neist, kes valiti integreerimiseks sekundaarseks keeleks nii Linuxis kui ka teistes operatsioonisüsteemides, näiteks Androidi puhul, millel on osa koodist juba Rustis, Windowsis, mis samuti on muu hulgas heakskiidu andnud.

Rust on osutunud tugevaks keeleks ja tekitanud sellise usalduse Mõned operatsioonisüsteemid on isegi loodud selle programmeerimiskeelega ja mainime vaid mõnda neist: redoks, Meil on ka nullist kirjutatud tuumad, näiteks Kerla või kernel, mida kasutatakse satelliit, mille Hiina hiljuti orbiidile lasi.

Selle mainimise põhjus on see, et sattusin hiljuti ühe uudise peale, mis mu tähelepanu köitis ja see ongi Esitleti projekti, mille käigus töötatakse välja Rust keeles kirjutatud Kernel ja mis on osaliselt Linuxiga ühilduv.

Selle projekti nimi on "Õpetaja" ja nagu mainitud, on Unixi-laadne tuum, mis on kirjutatud Rustis ja rakendab Linuxi tuuma süsteemikutsete alamhulka piisav standardse töökeskkonna loomiseks. Iseenesest ei ole "Maestro" projekt midagi uut, kuna arendaja mainib, et projekt sündis 2018. aastal, kuid tol ajal oli see C-keeles kirjutatud ning Rusti erinevate eeliste ja omaduste tõttu kirjutati projekt ümber alates XNUMX. aastast. null.

Projekti lehel Kirjeldatakse muudatuse põhjuseid:

Sel hetkel otsustasin minna üle Rustile (minu esimene projekt selles keeles), millel oli mitmeid eeliseid:

  • Taaskäivitage projekt algusest, kasutades varasematest vigadest saadud õppetunde.
  • Olge pisut uuenduslikum kui lihtsalt Linuxi-laadse kerneli kirjutamine C-keeles. Kasutage ju sel ajal lihtsalt Linuxit.
  • Kasutage Rust keele turvalisust, et ära kasutada mõningaid kerneli programmeerimisraskusi. Rust-kirjutussüsteemi kasutamine võimaldab osa mälu ohutuse eest vastutada programmeerijalt kompilaatorile.

Kerneli arendamisel on silumine väga keeruline mitmel põhjusel:

  • Dokumentatsiooni on sageli raske leida ja BIOS-i juurutused võivad olla lollakad (sagedamini kui arvate).
  • Alglaadimisel on kernelil täielik juurdepääs mälule ja ta saab kirjutada sinna, kus ta ei peaks (näiteks oma kood).
  • Mälulekke tõrkeotsing pole lihtne. Tööriistu nagu valgrind ei saa kasutada.
  • gdb-d saab kasutada koos QEMU ja VMWare'iga, kuid kernel võib teises emulaatoris või virtuaalmasinas käivitamisel käituda erinevalt. Samuti ei pruugi need emulaatorid toetada gdb-d (nt VirtualBox).
  • Mõned funktsioonid puuduvad QEMU või VMWare'i gdb toel ja gdb võib mõnikord isegi kokku kukkuda

Seoses projekti omadustest paistab silma, et kernel on monoliitne ja seda toetatakse praegu ainult x86-süsteemides 32-bitises režiimis. Kerneli koodibaas hõlmab umbes 49 tuhat rida, olles käivitatav nii reaalses riistvaras kui ka virtualiseeritud keskkondades, nagu QEMU või VirtualBox.

«Maestro» praeguses arenduses 31% on ellu viidud (135/437) Linuxi süsteemikõnedest. See on piisavalt, et laadida Bashil ja Musli standardsel C-teegil põhinevat konsoolikeskkonda. Lisaks võib Maestro-põhine keskkond käivitada mõningaid utiliite GNU coreutilsi komplektist ja põhipakette mis tahes Unixi süsteemist. Praegu käib töö võrgustacki juurutamise kallal ning samuti töötatakse selle väljatöötamisega

hulgast Maestro saadaolevad funktsioonid paistavad silma järgnev::

  • PS/2 klaviatuuri ja terminali kontrollerid tekstirežiimi ja ANSI-jadade osalise toega.
  • Mälu eraldamise süsteem virtuaalmälu toega.
  • Ümbertöötamise algoritmil põhinev ülesannete planeerija, mis toetab POSIX-i signaale.
  • PCI-seadmete määratlus.
  • IDE/PATA kontroller.
  • Ext2 failisüsteem.
  • Virtuaalsete failisüsteemide /tmp ja /proc tugi.
  • Võimalus ühendada FS, MBR ja GPT ketta partitsioonid.
  • initramfsi tugi.
  • RTC kontroller taimeri ja täpse aja jaoks.
  • Tugi tuumamoodulite laadimiseks.
  • Võimalus käivitada ELF-vormingus käivitatavaid faile.

Jaoks on huvitatud projekti kohta veidi rohkem teada saama, saate üksikasju kontrollida Järgmisel lingil.  Projekti koodist huvitatud peaksid teadma, et see on nii levitatakse MIT litsentsi alusel.