Π―Π΄Ρ€ΠΎ Maestro, написанноС Π½Π° Rust ΠΈ частично совмСстимоС с Linux

ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²Π»Π΅Π½ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ ΠΏΠΎ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ Π½Π° языкС Rust лСгковСсного Unix-ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠ³ΠΎ ядра, Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‰Π΅Π³ΠΎ подмноТСство систСмных Π²Ρ‹Π·ΠΎΠ²ΠΎΠ² ядра Linux, достаточноС для создания Ρ‚ΠΈΠΏΠΎΠ²Ρ‹Ρ… Ρ€Π°Π±ΠΎΡ‡ΠΈΡ… ΠΎΠΊΡ€ΡƒΠΆΠ΅Π½ΠΈΠΉ. ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ Π±Ρ‹Π» создан Π² 2018 Π³ΠΎΠ΄Ρƒ ΠΈ Π²Π½Π°Ρ‡Π°Π»Π΅ использовал язык Π‘ΠΈ, Π½ΠΎ Π² 2020 Π³ΠΎΠ΄Ρƒ Π±Ρ‹Π» ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ ΠΏΠ΅Ρ€Π΅Π·Π°ΠΏΡƒΡ‰Π΅Π½ с нуля с ΡƒΡ‡Ρ‘Ρ‚ΠΎΠΌ Π½Π°ΠΊΠΎΠΏΠ»Π΅Π½Π½ΠΎΠ³ΠΎ ΠΎΠΏΡ‹Ρ‚Π° ΠΈ ΠΏΠ΅Ρ€Π΅ΡˆΡ‘Π» Π½Π° Rust для сниТСния вСроятности ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ ошибок, Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡŽΡ‰ΠΈΡ… ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с ΠΏΠ°ΠΌΡΡ‚ΡŒΡŽ. Код ядра распространяСтся ΠΏΠΎΠ΄ Π»ΠΈΡ†Π΅Π½Π·ΠΈΠ΅ΠΉ MIT. Помимо ядра ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠΌ Π½Π° языкС Rust Ρ‚Π°ΠΊΠΆΠ΅ Ρ€Π°Π·Π²ΠΈΠ²Π°ΡŽΡ‚ΡΡ X11-сСрвСр, ΠΏΠ°ΠΊΠ΅Ρ‚Π½Ρ‹ΠΉ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€, Π·Π°Π³Ρ€ΡƒΠ·Ρ‡ΠΈΠΊ, инсталлятор, Π½Π°Π±ΠΎΡ€Ρ‹ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ для построСния ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмы.

Π―Π΄Ρ€ΠΎ ΠΈΠΌΠ΅Π΅Ρ‚ ΠΌΠΎΠ½ΠΎΠ»ΠΈΡ‚Π½ΡƒΡŽ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρƒ ΠΈ ΠΏΠΎΠΊΠ° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ систСмы x86 Π² 32-разрядном Ρ€Π΅ΠΆΠΈΠΌΠ΅. Кодовая Π±Π°Π·Π° ядра насчитываСт 48.8 тысяч строк ΠΊΠΎΠ΄Π° (для сравнСния Π² ядрС Linux — 33 ΠΌΠ»Π½. строк ΠΊΠΎΠ΄Π°). Π’ΠΎΠ·ΠΌΠΎΠΆΠ΅Π½ запуск Π² QEMU, VirtualBox ΠΈΠ»ΠΈ ΠΏΠΎΠ²Π΅Ρ€Ρ… оборудования. На Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΌ этапС развития Π² Maestro Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ 31% (135 ΠΈΠ· 437) систСмных Π²Ρ‹Π·ΠΎΠ²ΠΎΠ² Linux, Ρ‡Π΅Π³ΠΎ достаточно для Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ консольного окруТСния Π½Π° Π±Π°Π·Π΅ bash ΠΈ стандартной Π‘ΠΈ-Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Musl. Π’ ΠΎΠΊΡ€ΡƒΠΆΠ΅Π½ΠΈΠΈ Π½Π° Π±Π°Π·Π΅ Maestro Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠ³ΡƒΡ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρ‹ ΠΈΠ· Π½Π°Π±ΠΎΡ€Π° GNU coreutils, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ ls, cat, mkdir, rm, rmdir, uname ΠΈ whoami.

Π―Π΄Ρ€ΠΎ Maestro, написанноС Π½Π° Rust ΠΈ частично совмСстимоС с Linux

Π‘Ρ€Π΅Π΄ΠΈ доступных возмоТностСй Maestro:

  • Π”Ρ€Π°ΠΉΠ²Π΅Ρ€Ρ‹ для ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Ρ‹ PS/2 ΠΈ Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»Π° с тСкстовым Ρ€Π΅ΠΆΠΈΠΌΠΎΠΌ ΠΈ частичной ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΎΠΉ ANSI-ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚Π΅ΠΉ.
  • БистСма распрСдСлСния памяти, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‰Π°Ρ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΡƒΡŽ ΠΏΠ°ΠΌΡΡ‚ΡŒ.
  • ΠŸΠ»Π°Π½ΠΈΡ€ΠΎΠ²Ρ‰ΠΈΠΊ Π·Π°Π΄Π°Ρ‡ Π½Π° Π±Π°Π·Π΅ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° round-robin с ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΎΠΉ POSIX-сигналов.
  • ΠžΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ PCI-устройств.
  • Π”Ρ€Π°ΠΉΠ²Π΅Ρ€ IDE/PATA.
  • Ѐайловая систСма Ext2.
  • ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Ρ… Π€Π‘ /tmp ΠΈ /proc.
  • ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° монтирования Π€Π‘ ΠΈ дисковых Ρ€Π°Π·Π΄Π΅Π»ΠΎΠ² MBR ΠΈ GPT.
  • ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° initramfs.
  • Π”Ρ€Π°ΠΉΠ²Π΅Ρ€ RTC для Ρ‚Π°ΠΉΠΌΠ΅Ρ€Π° ΠΈ Ρ‚ΠΎΡ‡Π½ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ.
  • ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ ядра.
  • Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ запуска исполняСмых Ρ„Π°ΠΉΠ»ΠΎΠ² Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ ELF.

Π’ настоящСС врСмя вСдётся Ρ€Π°Π±ΠΎΡ‚Π° Π½Π°Π΄ созданиСм сСтСвого стСка, послС готовности ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ планируСтся Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ прямого ΠΌΠ°ΠΏΠΏΠΈΠ½Π³Π° Ρ„Π°ΠΉΠ»ΠΎΠ² Π² ΠΏΠ°ΠΌΡΡ‚ΡŒ ΠΈ раздСляСмых Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: opennet.ru