Издаване на ядрото Asterinas 0.19, написано на Rust и съвместимо с Linux

Публикуван е релиз на проекта Asterinas 0.19, който развива ядрото, написано на езика Rust и предназначено за използване в операционни системи с общо предназначение. Ядрото предоставя ABI (Application Binary Interface), съвместим с ядрото на Linux и може да се използва вместо него. Паралелно се развива дистрибуцията Asterinas NixOS, която комбинира ядрото Asterinas с системната среда NixOS. Кодът на проекта се развива от 2022 година и се разпространява под лицензия MPL (Mozilla Public License).

В момента в ядрото са реализирани над 240 системни повиквания на Linux. В дистрибуцията Asterinas NixOS са верифицирани работата на над 100 пакета върху ядрото 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

Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри 🔥 Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри | ProHoster