Rilascio del kernel Asterinas 0.19, scritto in Rust e compatibile con Linux

È stato pubblicato il rilascio del progetto Asterinas 0.19, un kernel in sviluppo scritto in linguaggio Rust, destinato all'uso nei sistemi operativi generali. Il kernel offre un ABI (Application Binary Interface) compatibile con il kernel Linux e può essere utilizzato al suo posto. Parallelamente, viene sviluppata la distribuzione Asterinas NixOS, che combina il kernel Asterinas con l'ambiente di sistema NixOS. Il codice del progetto è in sviluppo dal 2022 ed è distribuito sotto licenza MPL (Mozilla Public License).

Attualmente, il kernel implementa oltre 240 chiamate di sistema Linux. Nella distribuzione Asterinas NixOS è stata verificata la funzionalità di oltre 100 pacchetti di NixOS basati sul kernel Asterinas. Tra i pacchetti supportati ci sono: 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 e Codex.

Il kernel garantisce il pieno supporto per l'architettura x86-64, supporto parziale per ARM64, RISC-V 64 e x86-64 con isolamento basato su Intel TDX, nonché un supporto iniziale per l'architettura LoongArch 64. Tra i principali ambiti di applicazione si segnalano i sistemi legati a Linux ABI, ma che richiedono un livello di sicurezza superiore. Ad esempio, Asterinas è proposto per la creazione di ambienti di sistema protetti. macchine virtuali, per i quali si utilizzano tecnologie come ARM CCA, AMD SEV e Intel TDX, così come sul lato del sistema host che garantisce l'esecuzione dei container.

Per ridurre la probabilità di errori nella gestione della memoria, che sono la principale fonte delle vulnerabilità più pericolose, nella scrittura di Asterinas è stato utilizzato il linguaggio Rust e una strategia di uso limitato di blocchi unsafe. Il kernel è costruito utilizzando l'architettura framekernel, in cui si è cercato di combinare le capacità di isolamento dei microkernel con l'efficienza dei kernel monolitici.

I componenti del kernel in Asterinas sono collocati in uno spazio di indirizzamento comune, mentre la sicurezza è ottenuta a livello di separazione logica tra codice sicuro e codice in cui sono possibili problematiche di sicurezza. Il kernel è suddiviso in due parti, scritte in Rust: OS Framework e OS Services. In OS Services è vietato l'uso di blocchi unsafe, e tutte le operazioni a basso livello, che richiedono l'esecuzione di codice in blocchi unsafe, sono trasferite in OS Framework e accessibili solo tramite API di alto livello. Tutte le chiamate di sistema, i file system e i driver sono implementati a livello di OS Services e non possono includere blocchi unsafe.

Per lo sviluppo di servizi di sistema e moduli del kernel è fornito un toolkit OSDK (Operating System Development Kit), che offre l'utilità cargo-osdk per creare, compilare, testare e avviare i componenti del sistema operativo. Per gli sviluppatori è stato preparato un insieme di librerie OSTD (Operating System Standard Library), che include una versione delle librerie standard Rust (crate std), adattata per l'uso nei componenti del sistema operativo.

Tra le novità in Asterinas 0.19:

  • È stata implementata la sottosistema DRM (Direct Rendering Manager), il dispositivo /dev/dri, l'interfaccia KMS (kernel mode setting) e il driver 'modesetting', che hanno permesso di avviare lo stack grafico standard basato su X.Org Server e Mesa, al posto del driver fbdev precedentemente utilizzato che si basa su framebuffer.


  • È stata aggiunta la supporto per l'architettura AArch64 (ARM64), che ora viene utilizzata come architettura principale durante lo sviluppo, insieme a x86-64. Per AArch64 è stato implementato un secondo livello di supporto, che prevede la funzionalità di base, la verifica nel sistema di integrazione continua e una copertura parziale dei test.
  • È proseguito il lavoro di adattamento di Asterinas per l'avvio come sistema guest nei contenitori VM Kata Containers e Confidential Containers. È stata proposta una nuova implementazione di Overlayfs, che supera con successo i test standard del file system del kernel Linux e xfstests. È stata implementata una nuova API di montaggio. Il codice di virtio-fs è stato stabilizzato. È stato aggiunto il supporto per il protocollo
    direct-boot, utilizzato in QEMU, Cloud Hypervisor e Firecracker. È stata accelerata l'avvio in macchine virtuali, la cui memoria è crittografata utilizzando la tecnologia Intel TDX.
  • Nel framework OSTD (Operating System Standard Library) è stata implementata un'API di base per la creazione di ipervisori minimalisti basati su Intel VMX.
  • È stato aggiunto il supporto per il modello di sviluppo dei driver in Rust. È stato aggiunto il componente aster-device con funzionalità simili a quelle dei componenti del kernel Linux, con primitivi di base e astrazioni per lo sviluppo di driver, ma scritto in Rust senza codice unsafe.
  • È stata garantita la possibilità di ricompilazione autonoma (self-hosting) — dall'ambiente con il kernel Asterinas e i pacchetti NixOS è ora possibile compilare il kernel Asterinas.

Fonte: opennet.ru

Acquista hosting affidabile per siti web con protezione DDoS, server VPS VDS 🔥 Acquista hosting affidabile per siti web con protezione DDoS, server VPS VDS - ProHoster