Maestro, ядро ​​и Unix-подобная ОС, написанные с нуля на Rust.

Maestro

Скриншот Маэстро

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. 






2024-01-09T10:42:32
GNU / Linux