Maestro, jedro in Unixu podoben OS, napisan iz nič v Rustu

Učitelj

Posnetek zaslona Maestro

Rust je pridobil dovolj priljubljenosti do te mere, da je postal eden izmed tistih, ki so bili izbrani za vključitev kot sekundarni jezik v Linux, pa tudi v druge operacijske sisteme, kot je primer Androida, ki že ima del kode v Rust, Windows, ki prav tako odobril med drugim.

Rust se je izkazal za trden jezik in je ustvaril takšno zaupanje Nekateri operacijski sistemi so bili celo ustvarjeni s tem programskim jezikom in naj omenimo samo nekatere: Redox, Imamo tudi jedra, napisana iz nič, kot je npr Kerla ali jedro, uporabljeno v satelit, ki ga je Kitajska nedavno izstrelila.

Razlog za omembo tega je, da sem pred kratkim naletel na novico, ki je pritegnila mojo pozornost in to je, da Predstavljen je bil projekt, v katerem je razvito jedro, napisano v Rustu in ki je delno združljiv z Linuxom.

Ime tega projekta je "Učitelj" in kot omenjeno, je Unixu podobno jedro, napisano v Rustu, ki izvaja podmnožico sistemskih klicev iz jedra Linuxa dovolj za ustvarjanje standardnih delovnih okolij. Projekt "Maestro" kot tak ni nekaj novega, saj razvijalec omenja, da je bil projekt rojen leta 2018, vendar je bil takrat napisan v C in zaradi različnih prednosti in značilnosti Rusta je bil projekt prepisan iz nič.

Na strani projekta Razlogi za spremembo so opisani:

V tistem trenutku sem se odločil preklopiti na Rust (moj prvi projekt v tem jeziku), kar je predstavljalo več prednosti:

  • Ponovno zaženite projekt od začetka, pri čemer uporabite izkušnje, pridobljene iz prejšnjih napak.
  • Bodite malce bolj inovativni kot le pisanje jedra, podobnega Linuxu, v C. Konec koncev, takrat samo uporabljajte Linux.
  • Uporabite varnost jezika Rust, da izkoristite nekatere težave pri programiranju jedra. Uporaba pisnega sistema Rust vam omogoča prenos del odgovornosti za varnost pomnilnika s programerja na prevajalnik.

Pri razvoju jedra je odpravljanje napak zelo težko iz več razlogov:

  • Dokumentacijo je pogosto težko najti in izvedbe BIOS-a so lahko hrošče (pogosteje, kot si mislite).
  • Ob zagonu ima jedro popoln dostop do pomnilnika in lahko piše, kamor ne bi smelo (na primer lastno kodo).
  • Odpravljanje težav z uhajanjem pomnilnika ni enostavno. Orodij, kot je valgrind, ni mogoče uporabiti.
  • gdb se lahko uporablja s QEMU in VMWare, vendar se jedro lahko obnaša drugače, ko se izvaja na drugem emulatorju ali virtualnem stroju. Poleg tega ti emulatorji morda ne podpirajo gdb (npr. VirtualBox).
  • Nekatere funkcije manjkajo v podpori za gdb v QEMU ali VMWare in gdb se lahko včasih celo zruši

V povezavi z značilnosti projekta, izstopa, da je jedro monolitno in je trenutno podprt samo v sistemih x86 v 32-bitnem načinu. Osnova kode jedra obsega približno 49 tisoč vrstic, ki so izvršljive tako na resnični strojni opremi kot v virtualiziranih okoljih, kot sta QEMU ali VirtualBox.

V trenutnem razvoju "Maestro", Izvedenih je bilo 31 % (135 od 437) sistemskih klicev Linuxa. To je dovolj za nalaganje konzolnega okolja, ki temelji na Bashu in standardni knjižnici C Musl. Poleg tega lahko okolje, ki temelji na Maestru, izvaja nekatere pripomočke iz zbirke GNU coreutils in osnovne embalaže iz katerega koli sistema Unix. Trenutno poteka delo na implementaciji omrežnega sklada in tudi na razvoju

Med Razpoložljive funkcije Maestra izstopajo naslednji::

  • Krmilniki za tipkovnico in terminal PS/2 z besedilnim načinom in delno podporo za zaporedja ANSI.
  • Sistem dodeljevanja pomnilnika s podporo za navidezni pomnilnik.
  • Razporejevalnik opravil, ki temelji na algoritmu krožnega dela s podporo za signale POSIX.
  • Opredelitev naprav PCI.
  • Krmilnik IDE/PATA.
  • datotečni sistem ext2.
  • Podpora za /tmp in /proc virtualna datotečna sistema.
  • Možnost priklopa diskovnih particij FS, MBR in GPT.
  • podpora za initramfs.
  • RTC krmilnik za časovnik in natančen čas.
  • Podpora za nalaganje modulov jedra.
  • Možnost zagona izvedljivih datotek v formatu ELF.

Za zanima kaj več o projektu, lahko preverite podrobnosti V naslednji povezavi.  Tisti, ki jih zanima koda projekta, morajo vedeti, da je distribuira pod licenco MIT.