Maestro, egy kernel és egy Unix-szerű operációs rendszer, amit a nulláról írtunk a Rustban

Tanár

Maestro képernyőkép

A rozsda kellő népszerűségre tett szert olyan mértékben, hogy az egyike lett azoknak, akiket másodlagos nyelvként integráltak a Linuxba, valamint más operációs rendszerekbe, ilyen például az Android, amely már tartalmazza a kód egy részét a Rustban, a Windowsban, amely szintén jóváhagyást adta többek között.

Rozsda robusztus nyelvnek bizonyult, és ekkora bizalmat keltett Néhány operációs rendszert még ezzel a programozási nyelvvel is létrehoztak, és hogy csak néhányat említsünk: redox, Nálunk is vannak a nulláról írt kernelek, mint pl Kerla vagy az abban használt Kernel műhold, amelyet Kína nemrégiben lőtt fel.

Ennek megemlítésének oka, hogy nemrég találkoztam egy hírrel, ami felkeltette a figyelmemet, és ennyi Bemutattak egy projektet, amelyben Rust nyelven írt kernelt fejlesztenek és amely részben kompatibilis a Linuxszal.

Ennek a projektnek a neve "Tanár" és mint említettük, egy Rust nyelven írt Unix-szerű kernel, amely a Linux kernelből származó rendszerhívások egy részét valósítja meg elegendő a szabványos munkakörnyezet kialakításához. Mint ilyen, a "Maestro" projekt nem újdonság, hiszen a fejlesztő megemlíti, hogy a projekt 2018-ban született, de akkoriban C-ben íródott és a Rust eltérő előnyei és tulajdonságai miatt a projektet átírták nulla.

A projekt oldalán A változás okait ismertetjük:

Abban a pillanatban úgy döntöttem, hogy a Rust-ra váltok (az első projektem ezen a nyelven), ami számos előnnyel járt:

  • Indítsa újra a projektet az elejéről, felhasználva a korábbi hibákból levont tanulságokat.
  • Legyen egy kicsit innovatívabb annál, mint hogy egy Linux-szerű kernelt írjon C nyelven. Végül is csak Linuxot használjon.
  • Használja a Rust nyelv biztonságát, hogy kihasználja a kernelprogramozási nehézségeket. A Rust írási rendszer használata lehetővé teszi, hogy a memória biztonságával kapcsolatos felelősség egy részét a programozóról a fordítóra ruházza át.

A kernelfejlesztés során a hibakeresés több okból is nagyon nehéz:

  • A dokumentációt gyakran nehéz megtalálni, és a BIOS-megvalósítások hibásak lehetnek (gyakrabban, mint gondolná).
  • Indításkor a kernel teljes hozzáféréssel rendelkezik a memóriához, és oda tud írni, ahol nem kellene (például saját kódja).
  • A memóriaszivárgások elhárítása nem egyszerű. Az olyan eszközök, mint a valgrind, nem használhatók.
  • A gdb használható a QEMU-val és a VMWare-rel, de a kernel eltérően viselkedhet, ha egy másik emulátoron vagy virtuális gépen fut. Előfordulhat, hogy ezek az emulátorok nem támogatják a gdb-t (pl. VirtualBox).
  • Néhány funkció hiányzik a gdb támogatásból a QEMU-ban vagy a VMWare-ben, és a gdb néha összeomolhat

Kapcsolatban A projekt jellemzőiből kitűnik, hogy a kernel monolitikus és jelenleg csak x86-os rendszereken támogatott 32 bites módban. A kernel kódbázisa mintegy 49 ezer sort fed le, és mind valódi hardveren, mind virtualizált környezetben, például QEMU vagy VirtualBox futtatható.

A „Maestro” jelenlegi fejlesztésében 31%-a valósult meg (135/437) Linux rendszerhívások. Ez elég egy Bash és a Musl szabványos C könyvtár alapú konzolkörnyezet betöltéséhez. Ezenkívül a Maestro-alapú környezet képes futtatni néhány segédprogramot a GNU coreutils programcsomagból és az alapcsomagokat bármely Unix rendszerből. Jelenleg egy hálózati verem bevezetésén folynak a munkálatok, valamint egy X11 szerver, egy csomagkezelő, egy rendszerbetöltő, egy telepítő és más operációs rendszer felépítéséhez nélkülözhetetlen segédprogramok fejlesztése.

között a A Maestro elérhető funkciói kiemelkednek a következő::

  • Vezérlők PS/2 billentyűzethez és terminálhoz szöveges móddal és ANSI szekvenciák részleges támogatásával.
  • Memóriakiosztási rendszer virtuális memória támogatásával.
  • Feladatütemező a kör-robin algoritmuson alapuló POSIX jelek támogatásával.
  • A PCI eszközök meghatározása.
  • IDE/PATA vezérlő.
  • Ext2 fájlrendszer.
  • /tmp és /proc virtuális fájlrendszerek támogatása.
  • Lehetőség FS, MBR és GPT lemezpartíciók csatlakoztatására.
  • initramfs támogatás.
  • RTC vezérlő az időzítőhöz és a pontos időhöz.
  • Kernel modulok betöltésének támogatása.
  • Futtatható fájlok ELF formátumú futtatásának képessége.

mert szeretne egy kicsit többet megtudni a projektről, ellenőrizheti a részleteket A következő linken.  A projektkód iránt érdeklődőknek tudniuk kell, hogy az MIT licence alapján terjesztik.