Публикувана версия проекта Asterinas 0.19, разширяваща ядрото, написано на Rust и предназначено за използване в операционни системи с общо предназначение. Ядрото предоставя ABI (Application Binary Interface), съвместим с ядрото на Linux и може да бъде използвано вместо него. Паралелно се развива дистрибуция Asterinas NixOS, която съчетава ядрото Asterinas с системна среда NixOS. Кодът на проекта се развива от 2022 година и се разпространява под лиценз MPL (Mozilla Public License).
В момента в ядрото са реализирани над 240 системни извиквания на Linux. В дистрибуцията Asterinas NixOS е удостоверена работа с над 100 пакета от NixOS върху ядрото Asterinas. Сред поддържаните пакети са: Xfce, Firefox, bash, systemd, Podman, QEMU, rsync, Apache httpd, nginx, SQLite, Redis, Clang, GCC, Go, Lua, Node.js, OpenJDK, Perl, PHP, Python, Ruby, Rust, Git, FFmpeg, PyTorch, TensorFlow, Ollama и Codex.
В ядрото е осигурена пълна поддръжка на архитектура x86-64, частична поддръжка на ARM64, RISC-V 64 и x86-64 с изолация на база Intel TDX, както и начален етап на поддръжка за архитектура LoongArch 64. Приоритетната област на прилагане са системи, свързани с 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), адаптирана за използване в компоненти на операционната система.
Сред промените в Asterinas 0.19:
- Реализирана е подсистема DRM (Direct Rendering Manager), устройство /dev/dri, интерфейс KMS (kernel mode setting) и драйвер „modesetting“, които позволиха стартиране на стандартния графичен стек, базиран на X.Org Server и Mesa, вместо преди използвания драйвер fbdev, ползващ фреймбуфера.
- Добавена е поддръжка на архитектура AArch64 (ARM64), която сега се използва като основна архитектура при разработката, наред с x86-64. За AArch64 е реализиран втори нивото на поддръжка, което включва функционалност, проверка в системата за непрекъсната интеграция и частично покритие с тестове.
- Продължава работата по адаптацията на Asterinas за стартиране като гостуваща система в VM контейнери Kata Containers и Confidential Containers. Предложена е нова реализация на Overlayfs, която успешно преминава стандартните тестови набори за файлови системи на ядрото на Linux и xfstests. Реализиран е нов API за монтиране. Кодът на virtio-fs е стабилизиран. Добавена е поддръжка на протокола
direct-boot, използван в QEMU, Cloud Hypervisor и Firecracker. Ускорена е зареждането в виртуални машини, паметта на които е шифрована с технологията Intel TDX. - Във фреймворка OSTD (Operating System Standard Library) е реализиран основен API за създаване на минималистични хипервизори на базата на Intel VMX.
- Добавена е поддръжка на модел за разработка на драйвери на езика Rust. Добавен е компонент aster-device с функционалност, напомняща компонентите на ядрото на Linux с основни примитиви и абстракции за разработка на драйвери, но написан на Rust без unsafe код.
- Осигурена е възможността за собствена преработка (self-hosting) — от среда с ядрото Asterinas и пакетите NixOS вече може да се компилира ядрото Asterinas.
Източник: opennet.ru
