Maestro, kernel dan OS seperti Unix yang ditulis dari awal dalam Rust

Maestro

Tangkapan skrin Maestro

Rust telah mendapat cukup populariti sehingga satu tahap yang telah menjadi salah satu daripada yang dipilih untuk disepadukan sebagai bahasa sekunder dalam Linux, serta dalam sistem pengendalian lain, seperti kes Android, yang sudah mempunyai sebahagian daripada kod dalam Rust, Windows yang juga telah memberi kelulusan antara lain.

Rust telah terbukti sebagai bahasa yang mantap dan telah menjana kepercayaan sedemikian Beberapa sistem pengendalian bahkan telah dicipta dengan bahasa pengaturcaraan ini dan hanya untuk menyebut beberapa yang kami ada: Redoks, Kami juga mempunyai Kernel yang ditulis dari awal seperti Kerla atau Kernel yang digunakan dalam satelit yang dilancarkan China baru-baru ini.

Sebab untuk menyebut perkara ini ialah baru-baru ini saya terjumpa satu berita yang menarik perhatian saya dan itu sahaja Satu projek telah dibentangkan di mana Kernel yang ditulis dalam Rust dibangunkan dan yang sebahagiannya serasi dengan Linux.

Nama projek ini ialah "Guru" dan seperti yang disebutkan, ialah kernel seperti Unix yang ditulis dalam Rust yang melaksanakan subset panggilan sistem daripada kernel Linux mencukupi untuk mewujudkan persekitaran kerja standard. Oleh itu, projek "Maestro" bukanlah sesuatu yang baru, kerana pemaju menyebut bahawa projek itu dilahirkan pada tahun 2018, tetapi pada masa itu ia ditulis dalam C dan disebabkan oleh kelebihan dan ciri Rust yang berbeza, projek itu ditulis semula daripada sifar.

Pada halaman projek Sebab-sebab perubahan diterangkan:

Pada masa itu saya memutuskan untuk beralih kepada Rust (projek pertama saya dalam bahasa ini), yang mewakili beberapa kelebihan:

  • Mulakan semula projek dari awal, menggunakan pengajaran yang diperoleh daripada kesilapan sebelumnya.
  • Jadilah lebih inovatif sedikit daripada hanya menulis kernel seperti Linux dalam C. Lagipun, hanya gunakan Linux pada masa itu.
  • Gunakan keselamatan bahasa Rust untuk mengambil kesempatan daripada beberapa kesukaran pengaturcaraan kernel. Menggunakan sistem penulisan Rust membolehkan anda memindahkan beberapa tanggungjawab untuk keselamatan memori daripada pengaturcara kepada pengkompil.

Dalam pembangunan kernel, penyahpepijatan adalah sangat sukar untuk beberapa sebab:

  • Dokumentasi selalunya sukar dicari dan pelaksanaan BIOS boleh menjadi buggy (lebih kerap daripada yang anda fikirkan).
  • Semasa boot, kernel mempunyai akses penuh kepada memori dan boleh menulis di tempat yang tidak sepatutnya (kodnya sendiri, contohnya).
  • Menyelesaikan masalah kebocoran memori bukanlah mudah. Alat seperti valgrind tidak boleh digunakan.
  • gdb boleh digunakan dengan QEMU dan VMWare, tetapi kernel mungkin berkelakuan berbeza apabila dijalankan pada emulator atau mesin maya yang berbeza. Juga, emulator tersebut mungkin tidak menyokong gdb (cth. VirtualBox).
  • Sesetengah ciri tiada daripada sokongan gdb dalam QEMU atau VMWare dan kadangkala gdb mungkin ranap

Berhubung dengan ciri-ciri projek, ia menonjol bahawa Kernel adalah monolitik dan pada masa ini hanya disokong pada sistem x86 dalam mod 32-bit. Pangkalan kod kernel meliputi kira-kira 49 ribu baris, boleh dilaksanakan pada perkakasan sebenar dan dalam persekitaran maya, seperti QEMU atau VirtualBox.

Dalam perkembangan semasa «Maestro», 31% telah dilaksanakan (135 daripada 437) panggilan sistem Linux. Ini adalah cukup untuk memuatkan persekitaran konsol berdasarkan Bash dan perpustakaan C standard Musl. Selain itu, persekitaran berasaskan Maestro boleh menjalankan beberapa utiliti daripada suite coreutils GNU dan pembungkusan asas daripada mana-mana sistem Unix. Pada masa ini, kerja sedang dilakukan untuk melaksanakan susunan rangkaian dan kerja juga sedang dilakukan untuk membangunkan pelayan X11, pengurus pakej, pemuat but, pemasang dan utiliti penting lain untuk membina sistem pengendalian.

Antara Ciri-ciri yang tersedia Maestro menonjol yang berikut::

  • Pengawal untuk papan kekunci dan terminal PS/2 dengan mod teks dan sokongan separa untuk jujukan ANSI.
  • Sistem peruntukan memori dengan sokongan untuk ingatan maya.
  • Penjadual tugas berdasarkan algoritma round-robin dengan sokongan untuk isyarat POSIX.
  • Definisi peranti PCI.
  • Pengawal IDE/PATA.
  • Sistem fail Ext2.
  • Sokongan untuk sistem fail maya /tmp dan /proc.
  • Keupayaan untuk memasang partition cakera FS, MBR dan GPT.
  • sokongan initramfs.
  • Pengawal RTC untuk pemasa dan masa yang tepat.
  • Sokongan untuk memuatkan modul kernel.
  • Keupayaan untuk menjalankan fail boleh laku dalam format ELF.

Untuk berminat untuk mengetahui lebih sedikit tentang projek tersebut, anda boleh menyemak perinciannya Dalam pautan berikut.  Bagi mereka yang berminat dengan kod projek, mereka harus tahu bahawa ia adalah diedarkan di bawah lesen MIT.