Скріншот 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.