Найти в Дзене
Проект OpenNet

Asterinas: Ядро на Rust, совместимое с Linux, в разработке

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

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

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

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

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