Прадстаўлены рэліз праекта 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.
У ядры забяспечана поўная падтрымка архітэктуры 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 (Operating System Development Kit), які прадстаўляе ўтыліту cargo-osdk для стварэння, зборкі, тэсціравання і запуску кампанентаў аперацыйнай сістэмы. Для распрацоўшчыкаў падрыхтаваны набор бібліятэк OSTD (Operating System Standard Library), які ўключае рэдакцыю стандартных бібліятэк Rust (crate std), адаптаваную для выкарыстання ў кампанентах аперацыйнай сістэмы.
Сярод змен у версіі 0.18:
- У рамках працы па забеспячэнні запуску Asterinas у якасці гасцявой сістэмы ў VM-кантэйнерах Kata Containers і Confidential Containers рэалізаваная падтрымка прастор імёнаў IPC і cgroup, nsfs (/proc/[pid]/ns), cgroups, virtio-fs (для доступу да агульнай з-хост- (/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 Security Modules).
Крыніца: opennet.ru
