Rust приобрел достаточную популярность до такой степени, что он стал одним из тех, которые были выбраны для интеграции в качестве вторичного языка в Linux, а также в другие операционные системы, как в случае с Android, который уже имеет часть кода на Rust, Windows, которая также дал одобрение, среди прочего.
Ржавчина оказался надежным языком и вызвал такое доверие Некоторые операционные системы даже были созданы с использованием этого языка программирования, и вот лишь некоторые из них: Редокс, У нас также есть ядра, написанные с нуля, такие как Керала или ядро, используемое в спутник, который недавно запустил Китай.
Причина упоминания об этом заключается в том, что недавно я наткнулся на новость, которая привлекла мое внимание, и вот что Представлен проект, в котором разработано ядро, написанное на Rust. и который частично совместим с Linux.
Название этого проекта «Маэстро» и, как уже упоминалось, — это Unix-подобное ядро, написанное на Rust, реализующее подмножество системных вызовов из ядра Linux. достаточно для создания стандартной рабочей среды. Как таковой проект «Маэстро» не является чем-то новым, так как разработчик упоминает, что проект родился в 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.