Maestro, kernel i operativni sistem sličan Unixu napisan od nule u Rustu

maestro

Maestro screenshot

Rust je stekao dovoljno popularnosti do te mere da je postao jedan od onih koji su izabrani da se integrišu kao sekundarni jezik u Linux, kao i u druge operativne sisteme, kao što je slučaj Androida, koji već ima deo koda u Rust, Windows koji takođe je, između ostalog, dao odobrenje.

rđa pokazao se kao robustan jezik i stvorio je takvo povjerenje Neki operativni sistemi su čak kreirani sa ovim programskim jezikom i da spomenemo samo neke imamo: redoks, Imamo i Kernele napisane od nule kao što su Kerla ili kernel koji se koristi u satelita koji je Kina nedavno lansirala.

Razlog da ovo spomenem je što sam nedavno naišao na vest koja mi je privukla pažnju, a to je Predstavljen je projekat u kojem se razvija Kernel napisan u Rustu i koji je djelimično kompatibilan sa Linuxom.

Naziv ovog projekta je "Učitelj" i kao što je pomenuto, je jezgro sličan Unixu napisano u Rustu i implementira podskup sistemskih poziva iz Linux kernela dovoljno za stvaranje standardnog radnog okruženja. Kao takav, projekat "Maestro" nije nešto novo, jer programer napominje da je projekat rođen 2018. godine, ali je tada bio napisan na C i zbog različitih prednosti i karakteristika Rusta, projekat je prepisan sa nula.

Na stranici projekta Razlozi za promjenu su opisani:

U tom trenutku sam odlučio da pređem na Rust (moj prvi projekat na ovom jeziku), što je predstavljalo nekoliko prednosti:

  • Ponovo pokrenite projekat od početka, koristeći lekcije naučene iz prethodnih grešaka.
  • Budite malo inovativniji od pukog pisanja kernela sličnog Linuxu u C-u. Na kraju krajeva, tada samo koristite Linux.
  • Koristite sigurnost Rust jezika da iskoristite neke poteškoće u programiranju kernela. Korištenje Rust sistema pisanja omogućava vam da prenesete dio odgovornosti za sigurnost memorije sa programatora na kompajler.

U razvoju kernela, otklanjanje grešaka je veoma teško iz nekoliko razloga:

  • Dokumentaciju je često teško pronaći, a implementacije BIOS-a mogu biti pogrešne (češće nego što mislite).
  • Prilikom pokretanja, kernel ima pun pristup memoriji i može pisati gdje ne bi trebao (svoj vlastiti kod, na primjer).
  • Otklanjanje problema sa curenjem memorije nije lako. Alati kao što je valgrind se ne mogu koristiti.
  • gdb se može koristiti sa QEMU i VMWareom, ali kernel se može ponašati drugačije kada se pokrene na drugom emulatoru ili virtuelnoj mašini. Takođe, ti emulatori možda ne podržavaju gdb (npr. VirtualBox).
  • Neke funkcije nedostaju u podršci za gdb u QEMU ili VMWareu, a gdb se ponekad može čak i srušiti

U vezi sa karakteristike projekta, ističe se da je kernel monolitan i trenutno je podržan samo na x86 sistemima u 32-bitnom modu. Baza koda kernela pokriva oko 49 hiljada linija i može se izvršiti i na stvarnom hardveru iu virtuelizovanim okruženjima, kao što su QEMU ili VirtualBox.

U trenutnom razvoju «Maestra», Realizovano je 31%. (135 od 437) Linux sistemskih poziva. Ovo je dovoljno da učita okruženje konzole zasnovano na Bashu i Musl standardnoj C biblioteci. Dodatno, okruženje zasnovano na Maestrou može pokrenuti neke uslužne programe iz GNU coreutils paketa i osnovno pakovanje iz bilo kojeg Unix sistema. Trenutno se radi na implementaciji mrežnog steka, a radi se i na razvoju

Među Dostupne karakteristike Maestra se ističu sljedeće::

  • Kontroleri za PS/2 tastaturu i terminal sa tekstualnim režimom i delimičnom podrškom za ANSI sekvence.
  • Sistem dodjele memorije sa podrškom za virtuelnu memoriju.
  • Planer zadataka baziran na round-robin algoritmu sa podrškom za POSIX signale.
  • Definicija PCI uređaja.
  • IDE/PATA kontroler.
  • Ext2 sistem datoteka.
  • Podrška za /tmp i /proc virtuelne sisteme datoteka.
  • Mogućnost montiranja FS, MBR i GPT particija diska.
  • initramfs podrška.
  • RTC kontroler za tajmer i precizno vrijeme.
  • Podrška za učitavanje modula kernela.
  • Mogućnost pokretanja izvršnih datoteka u ELF formatu.

Za zainteresovani da saznaju nešto više o projektu, možete provjeriti detalje Na sledećem linku.  Što se tiče onih koji su zainteresovani za šifru projekta, trebalo bi da znaju da jeste distribuira pod MIT licencom.