Utgitt en ny versjon av prosjektet Asterinas 0.19, som utvikler et kjernemodul skrevet i Rust, ment for bruk i generelle operativsystemer. Kjernen tilbyr en ABI (Application Binary Interface) som er kompatibel med Linux-kjernen og kan brukes i stedet for denne. Samtidig utvikles distribusjonen Asterinas NixOS, som kombinerer Asterinas-kjernen med NixOS-systemmiljøet. Prosjektkoden har vært under utvikling siden 2022 og distribueres under MPL (Mozilla Public License).
Per nå inneholder kjernen over 240 Linux-systemanrop. I distribusjonen Asterinas NixOS er det verifisert at over 100 pakker fra NixOS fungerer med Asterinas-kjernen. Blant de støttede pakkene finner vi: 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 og Codex.
Kjernen har full støtte for x86-64-arkitekturen, delvis støtte for ARM64, RISC-V 64 og x86-64 med Intel TDX-basert isolering, samt innledende støtte for LoongArch 64-arkitekturen. Prioriterte bruksområder inkluderer systemer knyttet til Linux ABI, men som krever høyere sikkerhetsnivå. For eksempel foreslås det å bruke Asterinas for å etablere et beskyttet systemmiljø. virtual machines, for å isolere dem brukes teknologier som ARM CCA, AMD SEV og Intel TDX, samt på siden av verts-systemet som muliggjør kjøring av containere.
For å redusere sjansen for minnefeil, som er den viktigste kilden til de farligste sårbarhetene, er språkene Rust og strategien for begrenset bruk av unsafe-blokker benyttet ved utviklingen av Asterinas. Kjernen er bygget med en framekernel-arkitektur, der man har forsøkt å kombinere isoleringsevner fra mikrokerner med effektiviteten til monolittiske kjerner.
Komponentene i Asterinas-kjernen plasseres i et delt adresseområde, og sikkerheten oppnås på nivået av logisk separasjon av sikkerhetskode og kode der problemer med sikkerhet kan oppstå. Kjernen er delt inn i to deler skrevet i Rust: OS Framework og OS Services. I OS Services er bruk av unsafe-blokker forbudt, og alle lavnivåoperasjoner som krever utførelse av kode i unsafe-blokker er flyttet til OS Framework og er kun tilgjengelig gjennom et høyere nivå API. Alle systemkall, filsystemer og drivere implementeres på nivået av OS Services og kan ikke inkludere unsafe-blokker.
For utvikling av systemtjenester og kjernerelaterte moduler leveres OSDK (Operating System Development Kit) med verktøyet cargo-osdk for å opprette, bygge, teste og kjøre komponenter av operativsystemet. For utviklere er det laget et bibliotek kalt OSTD (Operating System Standard Library), som inkluderer en tilpasset versjon av Rusts standardbiblioteker (crate std) for bruk i operativsystemkomponenter.
Blant endringene i Asterinas 0.19:
- Implementert DRM (Direct Rendering Manager)-subsystemet, enhet /dev/dri, KMS (kernel mode setting)-grensesnittet og "modesetting"-driveren, noe som muliggjorde å kjøre den vanlige grafikkstakken basert på X.Org Server og Mesa, i stedet for den tidligere brukte fbdev-driveren, som benyttet rammebuffer.
- Støtte for AArch64 (ARM64)-arkitekturen er lagt til, som nå brukes som hovedarkitektur i utviklingen, sammen med x86-64. For AArch64 er det implementert et andre støttenivå, som sikrer at grunnleggende funksjonalitet fungerer, validering i kontinuerlig integrasjonssystem og delvis testdekning.
- Arbeidet med tilpasning av Asterinas for å kjøre som et gjestesystem i VM-containere Kata Containers og Confidential Containers er fortsatt i gang. En ny implementering av Overlayfs har blitt foreslått, som vellykket passerer de vanlige testsettene for FS i Linux-kjernen og xfstests. En ny monterings-API er implementert. Koden for virtio-fs har blitt stabilisert. Støtte for protokollen
direct-boot, brukt i QEMU, Cloud Hypervisor og Firecracker, er akselerert ved oppstart i virtuelle maskiner, minne som er kryptert ved hjelp av Intel TDX-teknologi. - I OSTD-rammeverket (Operating System Standard Library) er et grunnleggende API implementert for å lage minimalistiske hypervisorer basert på Intel VMX.
- Støtte for utviklingsmodellen av drivere på Rust-språket er lagt til. Komponenter aster-device med funksjonalitet som ligner kernelkomponentene i Linux er lagt til, som grunnleggende primitivene og abstraksjoner for utvikling av drivere, men skrevet på Rust uten unsafe-kode.
- Muligheten for egen gjenoppbygging (self-hosting) er sikret — fra et miljø med Asterinas-kjernen og NixOS-pakker kan man nå bygge Asterinas-kjernen.
Kilde: opennet.ru
