Випуск ядра 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 верифіковано роботу поверх ядра Asterinas понад 100 пакетів із NixOS. Серед підтримуваних пакетів: 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, FFxeg.

У ядрі забезпечена повна підтримка архітектури 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 c базовими примітивами та абстракціями для розробки драйверів, але написаний на Rust без unsafe-коду.
  • Забезпечена можливість власного перескладання (self-hosting) - з оточення з ядром Asterinas та пакетами NixOS тепер можна зібрати ядро ​​Asterinas.

Джерело: opennet.ru

Купити надійний хостинг для сайтів із захистом від DDoS, VPS VDS сервери 🔥 Купити надійний хостинг для сайтів із захистом від DDoS, VPS VDS сервери | ProHoster