Представен е релиз на проекта Asterinas 0.18, който развива ядро, написано на езика Rust и е предназначено за употреба в операционни системи с общо предназначение. Ядро предлага ABI (Application Binary Interface), съвместимо с ядрото на Linux и което може да се използва вместо него. Паралелно с това се развива дистрибуция Asterinas NixOS, която комбинира ядрото Asterinas с системна среда NixOS. Кодът на проекта е разпространен под лиценз 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, FFmpeg, PyTorch, TensorFlow, Ollama и Codex.
В ядрото е осигурена пълна поддръжка на архитектурата x86-64, частична поддръжка на 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 (Набор за разработка на операционна система), който включва утилитата cargo-osdk за създаване, сборка, тестване и стартиране на компоненти на операционната система. За разработчиците е подготвен набор от библиотеки OSTD (Стандартна библиотека на операционната система), включващ редакция на стандартните библиотеки на Rust (crate std), адаптирана за използване в компоненти на операционната система.
Сред промените в версия 0.18:
- В рамките на работата по осигуряване на пускането на Asterinas като гостуваща система в VM-контейнери Kata Containers и Confidential Containers е реализирана поддръжка на пространства наименования IPC и cgroup, nsfs (/proc/[pid]/ns), cgroups, virtio-fs (за достъп до общата с хост-системата ФС), virtio-rng (/dev/hwrng за ентропия на генератора на псевдослучайни числа) и vsock (за взаимодействие между хостовата и гостуващата системи).
- Реализиран е системен повик ptrace и възможности за отстраняване на грешки в потребителското пространство с помощта на GDB и strace.
- Предложена е нова реализация на файловата система ext2 и е добавен драйвер NVMe. В VFS е добавен механизъм Dentry (Directory Entry) и е преработена реализацията на страничния кеш.
- В дистрибутива Asterinas NixOS е реализирана възможността за стартиране на Codex, QEMU и Firefox.
- Добавени са системни повиквания pidfd_getfd, pidfd_send_signal, pivot_root.
- Добавена е начална поддръжка на IPv6.
- Реализирана е система capabilities за делегиране на отделни привилегировани операции.
- Добавена е начална реализация на фреймворка LSM (Модули за сигурност на Linux).
Източник: opennet.ru
