Objavljen je izdanje projekta Asterinas 0.19, koje razvija jezgri napisanu na jeziku Rust i namijenjenu za korištenje u operativnim sustavima opće namjene. Jezgra pruža ABI (Application Binary Interface) kompatibilan s jezgrom Linux i može se koristiti umjesto njega. Paralelno se razvija distribucija Asterinas NixOS, koja kombinira jezgru Asterinas s okruženjem sustava NixOS. Kod projekta se razvija od 2022. godine i distribuira pod MPL (Mozilla Public License).
Trenutno je u jezgri implementirano više od 240 sustavnih poziva Linuxa. U distribuciji Asterinas NixOS verificirano je funkcioniranje više od 100 paketa iz NixOS-a preko jezgre Asterinas. Među podržanim paketima: 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 i Codex.
U jezgri je osigurana potpuna podrška za arhitekturu x86-64, djelomična podrška za ARM64, RISC-V 64 i x86-64 s izolacijom temeljenom na Intel TDX, kao i početna podrška za arhitekturu LoongArch 64. Prioritetna područja primjene su naznačena kao sustavi vezani za Linux ABI, ali koji zahtijevaju višu razinu sigurnosti. Na primjer, Asterinas se predlaže za korištenje u formiranju sustavnog okruženja zaštićenih. virtualnih mašina, za izolaciju kojih se koriste takve tehnologije kao ARM CCA, AMD SEV i Intel TDX, kao i na strani host-sustava koji osigurava pokretanje kontejnera.
Kako bi se smanjila vjerojatnost pojave grešaka pri radu s memorijom, koje su glavni izvor najopasnijih ranjivosti, pri pisanju Asterinas koristi se jezik Rust i taktika ograničenog korištenja unsafe-blokova. Jezgro je izgrađeno koristeći arhitekturu framekernel, u kojoj se pokušavaju spojiti mogućnosti izolacije mikrojezgri s učinkovitošću monolitnih jezgra.
Komponente jezgra u Asterinas smještene su u zajedničkom adresnom prostoru, a sigurnost se postiže na razini logičke podjele sigurnog koda i koda u kojem nije isključena pojava problema sa sigurnošću. Jezgro je podijeljeno na dva dijela, napisane na Rustu: OS Framework i OS Services. U OS Services je zabranjena primjena unsafe-blokova, a sve niskonivojske operacije koje zahtijevaju izvršavanje koda u unsafe blokovima premještene su u OS Framework i dostupne su samo putem visokonivojskog API-ja. Svi sistemski pozivi, datotečni sustavi i drajveri implementiraju se na razini OS Services i ne mogu uključivati unsafe-blokove.
Za razvoj sustavnih servisa i modula jezgre isporučuje se alat OSDK (Operating System Development Kit), koji pruža alat cargo-osdk za stvaranje, sastavljanje, testiranje i pokretanje komponenti operativnog sustava. Za programere pripremljen je set knjižnica OSTD (Operating System Standard Library), koji uključuje adaptaciju standardnih knjižnica Rust (crate std) prilagođenu za korištenje u komponentama operativnog sustava.
Među promjenama u Asterinas 0.19:
- Implementiran je podsustav DRM (Direct Rendering Manager), uređaj /dev/dri, sučelje KMS (kernel mode setting) i driver „modesetting”, koji su omogućili pokretanje standardnog grafičkog stoga temeljenog na X.Org Serveru i Mesu, umjesto ranije korištenog drivera fbdev koji koristi framebuffer.
- Dodana je podrška za arhitekturu AArch64 (ARM64), koja se sada koristi kao glavna arhitektura tijekom razvoja, uz x86-64. Za AArch64 je implementirana druga razina podrške, koja podrazumijeva funkcionalnost osnovne funkcionalnosti, provjeru u sustavu kontinuirane integracije i djelomično pokrivanje testovima.
- Nastavljena je prilagodba Asterinas za pokretanje kao gostujući sustav u VM kontejnerima Kata Containers i Confidential Containers. Predložena je nova implementacija Overlayfs, koja uspješno prolazi standardne testne skupove FS jezgre Linuxa i xfstests. Implementiran je novi API za montiranje. Stabiliziran je kod virtio-fs. Dodana je podrška za protokol
direct-boot, koji se koristi u QEMU, Cloud Hypervisor i Firecracker. Povećano je ubrzavanje pokretanja u virtualnim mašinama, čija je memorija šifrirana tehnologijom Intel TDX. - U okviru OSTD (Operating System Standard Library) implementiran je osnovni API za izradu minimalističkih hipervizora temeljenih na Intel VMX-u.
- Dodana je podrška za model razvoja drajvera na jeziku Rust. Dodan je komponent aster-device s funkcionalnošću sličnom komponentama jezgre Linuxa s osnovnim primitivima i apstrakcijama za razvoj drajvera, no napisan je na Rustu bez unsafe koda.
- Omogućena je vlastita ponovna izgradnja (self-hosting) — iz okruženja s jezgrama Asterinas i paketima NixOS sada se može sastaviti jezgra Asterinas.
Izvor: opennet.ru
