Ядро 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:

  • Драйверы для клавиатуры PS/2 и терминала с текстовым режимом и частичной поддержкой ANSI-последовательностей.
  • Система распределения памяти, поддерживающая виртуальную память.
  • Планировщик задач на базе алгоритма round-robin с поддержкой POSIX-сигналов.
  • Определение PCI-устройств.
  • Драйвер IDE/PATA.
  • Файловая система Ext2.
  • Поддержка виртуальных ФС /tmp и /proc.
  • Поддержка монтирования ФС и дисковых разделов MBR и GPT.
  • Поддержка initramfs.
  • Драйвер RTC для таймера и точного времени.
  • Поддержка загрузки модулей ядра.
  • Возможность запуска исполняемых файлов в формате ELF.

В настоящее время ведётся работа над созданием сетевого стека, после готовности которого планируется реализовать поддержку прямого маппинга файлов в память и разделяемых библиотек.

Источник: http://www.opennet.ru/opennews/art.shtml?num=60391