Проект Asterinas развивает ядро на языке Rust, совместимое с Linux

Группа разработчиков из Китая развивает ядро Asterinas, написанное на языке Rust и предназначенное для использования в операционных системах общего назначения. Для упрощения интеграции с уже разработанными системными компонентами ядро предоставляет ABI (Application Binary Interface), совместимый с ядром Linux и способный использоваться вместо него. Код проекта распространяется под лицензией MPL (Mozilla Public License).

Проект развивается с осени 2022 года и намерен уже в этом году добиться уровня, пригодного для широкого использования в виртуальных машинах с архитектурой x86-64. Начиная со следующего года основное внимание планируют переключить на реализацию поддержки оборудования и других архитектур CPU. Из приоритетных областей применения называются системы, завязанные на Linux ABI, но требующие более высокого уровня защищённости. Например, Asterinas предлагается использовать для формирования системного окружения защищённых виртуальных машин, для изоляции которых используются такие технологии, как ARM CCA, AMD SEV и Intel TDX, а также на стороне хост-системы, обеспечивающей запуск контейнеров.

Для снижения вероятности появления ошибок при работе с памятью, являющихся главным источником наиболее опасных уязвимостей, при написании Asterinas задействован язык Rust и тактика ограниченного использования unsafe-блоков. Ядро построено с использованием архитектуры framekernel, в которой разработчики попытались совместить возможности изоляции микроядер с эффективностью монолитных ядер.

Компоненты ядра в Asterinas размещаются в общем адресном пространстве, а безопасность достигается на уровне логического разделения безопасного кода и кода в котором не исключено возникновение проблем с безопасностью. Ядро разбито на две части, написанные на Rust: OS Framework и OS Services. В OS Services запрещено применение unsafe-блоков, а все низкоуровневые операции, требующие выполнения кода в блоках unsafe, вынесены в OS Framework и доступны только через высокоуровневый API. Все системные вызовы, файловые системы и драйверы реализуются на уровне OS Services и не могут включать unsafe-блоки.

При разработке системных сервисов и модулей ядра предлагается использовать инструментарий OSDK (Operating System Development Kit), предоставляющий утилиту cargo-osdk для создания, сборки, тестирования и запуска компонентов операционной системы. Для разработчиков подготовлен набор библиотек OSTD (Operating System Standard Library), представляющий собой редакцию стандартных библиотек Rust(crate std), адаптированную для использования в компонентах операционной системы.

Release. Ссылка here.