Maestro, ядро ​​та Unix-подібна ОС, написані з нуля на Rust

Учитель

Скріншот Maestro

Руст набув достатньої популярності до такої міри, що вона стала однією з тих, які було обрано для інтеграції в якості додаткової мови в Linux, а також в інших операційних системах, таким є випадок Android, який вже має частину коду в Rust, Windows, яка також дав схвалення, серед інших.

Іржа довела, що є надійною мовою та викликала таку довіру Деякі операційні системи навіть були створені за допомогою цієї мови програмування, і згадаємо лише деякі з них: редокс, У нас також є ядра, написані з нуля, наприклад Керла або ядро, що використовується в супутник, який Китай нещодавно запустив.

Причина згадки про це полягає в тому, що нещодавно я натрапив на новину, яка привернула мою увагу, а саме: Було представлено проект, у якому розроблено ядро, написане мовою Rust і яка частково сумісна з Linux.

Назва цього проекту "Учитель" і як згадувалося, це Unix-подібне ядро, написане на Rust, яке реалізує підмножину системних викликів з ядра Linux достатньо для створення стандартних робочих умов. Таким чином, проект «Maestro» не є чимось новим, оскільки розробник згадує, що проект був народжений у 2018 році, але на той час він був написаний на C і через різні переваги та характеристики Rust, проект був переписаний з нуль.

На сторінці проекту Описано причини зміни:

У той момент я вирішив перейти на Rust (мій перший проект цією мовою), який мав кілька переваг:

  • Перезапустіть проект з самого початку, використовуючи уроки, отримані з попередніх помилок.
  • Будьте трохи більш інноваційними, ніж просто написання Linux-подібного ядра на C. Зрештою, просто використовуйте Linux у той час.
  • Використовуйте безпеку мови Rust, щоб скористатися деякими труднощами програмування ядра. Використання системи запису Rust дозволяє перекласти частину відповідальності за збереження пам’яті від програміста до компілятора.

У розробці ядра налагодження дуже складне з кількох причин:

  • Документацію часто важко знайти, а реалізації BIOS можуть мати помилки (частіше, ніж ви думаєте).
  • Під час завантаження ядро ​​має повний доступ до пам’яті та може писати там, куди не слід (наприклад, власний код).
  • Усунути витік пам’яті нелегко. Не можна використовувати такі інструменти, як valgrind.
  • gdb можна використовувати з QEMU та VMWare, але ядро ​​може поводитися по-іншому під час запуску на іншому емуляторі чи віртуальній машині. Крім того, ці емулятори можуть не підтримувати gdb (наприклад, VirtualBox).
  • Деякі функції відсутні в підтримці gdb у QEMU або VMWare, і gdb іноді може навіть аварійно завершувати роботу

У зв'язку з, щодо характеристики проекту, виділяється те, що ядро ​​є монолітним і наразі підтримується лише в системах x86 у 32-розрядному режимі. База коду ядра охоплює близько 49 тисяч рядків, які можна виконати як на реальному обладнанні, так і у віртуалізованих середовищах, таких як QEMU або VirtualBox.

У поточній розробці «Маестро», Виконано 31%. (135 з 437) системних викликів Linux. Це є достатньо для завантаження консольного середовища на основі Bash і стандартної бібліотеки C Musl. Крім того, середовище на основі Maestro може запускати деякі утиліти з набору GNU coreutils і базового пакування з будь-якої системи Unix. Зараз ведеться робота над впровадженням мережевого стека, а також робота над розробкою

Серед Доступні функції Maestro виділяються наступне::

  • Контролери для клавіатури PS/2 і терміналу з текстовим режимом і частковою підтримкою послідовностей ANSI.
  • Система розподілу пам'яті з підтримкою віртуальної пам'яті.
  • Планувальник завдань на основі циклічного алгоритму з підтримкою сигналів POSIX.
  • Визначення пристроїв PCI.
  • Контролер IDE/PATA.
  • Файлова система Ext2.
  • Підтримка віртуальних файлових систем /tmp і /proc.
  • Можливість монтувати розділи диска FS, MBR і GPT.
  • підтримка initramfs.
  • Контролер RTC для таймера та точного часу.
  • Підтримка завантаження модулів ядра.
  • Можливість запуску виконуваних файлів у форматі ELF.

Для цікаво дізнатися трохи більше про проект, Ви можете перевірити деталі У наступному посиланні.  Що стосується тих, хто цікавиться кодом проекту, вони повинні знати, що це так поширюється за ліцензією MIT.