Дата публикации:Thu, 04 Jan 2024 15:15:16 +0300
Представлен проект по разработке на языке 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.
В настоящее время ведётся работа над созданием сетевого стека, после готовности которого планируется реализовать поддержку прямого маппинга файлов в память и разделяемых библиотек.
Новость позаимствована с opennet.ru
Ссылка на оригинал: https://www.opennet.ru/opennews/art.shtml?num=60391