Kerla: un nuovo kernel scritto in Rust e compatibile con Linux ABI

Sono state recentemente rilasciate informazioni sul progetto Kerla. Kerla è in fase di sviluppo come kernel di un sistema operativo scritto in Rust. Il codice è distribuito con licenze Apache 2.0 e MIT. Il progetto è sviluppato dal programmatore giapponese Seiya Nuta, noto per aver creato il microkernel Resea, scritto in C.

Il nuovo kernel mira inizialmente a garantire la compatibilità con il kernel Linux a livello ABI, consentendo l'esecuzione di binari non modificati creati per Linux in un ambiente basato su Kerla.

A proposito di Keral

Kerla è un kernel di sistema operativo monolitico costruito da zero in Rust. Allo stato attuale dello sviluppo, Kerla può essere eseguito solo su sistemi x86_64 e implementa chiamate di sistema di base come write, stat, mmap, pipe e poll. Supporta segnali, pipe senza nome e cambi di contesto. Chiamate come fork, wait4 ed execve vengono utilizzate per controllare i processi. È presente il supporto per tty e pseudo-terminali (pty). I filesystem initramfs (utilizzato per montare il filesystem root), tmpfs e devfs sono ancora supportati.

È inoltre disponibile uno stack di rete con supporto per socket TCP e UDP, basato sulla libreria smoltcp. Lo sviluppatore ha predisposto un ambiente di avvio compatibile con le macchine virtuali QEMU o Firecracker utilizzando il driver virtio-net, al quale è già possibile connettersi tramite SSH . Musl viene utilizzato come libreria di sistema e BusyBox come utility utente . È stato predisposto un sistema di build basato su Docker che consente di creare il proprio initramfs di avvio utilizzando il kernel Kerla.

Finora sono stati forniti pochi dettagli sul suo nuovo kernel, ma ciò che attira maggiormente l'attenzione sulle caratteristiche di Kerla è il fatto che è scritto in Rust. Quindi scriverlo in Rust ha dei vantaggi rispetto ad altri linguaggi o al codice esistente? Molti hanno risposto affermativamente a questa domanda, sottolineando i vantaggi in termini di sicurezza della memoria offerti dal linguaggio.

Viene inoltre fornito durante la valutazione dell'accuratezza degli accessi alla memoria in fase di esecuzione. Inoltre , Mozilla ritiene che Rust offra protezione contro gli overflow di interi , richieda l'inizializzazione obbligatoria dei valori delle variabili prima dell'uso, adotti per impostazione predefinita il concetto di riferimenti e variabili immutabili, offra una tipizzazione statica forte per ridurre al minimo gli errori logici e semplifichi l'elaborazione dell'input tramite il pattern matching.

Tra i vantaggi, evidenziamo gli strumenti integrati per la valutazione della qualità del codice e la creazione di unit test eseguibili non solo su hardware reale, ma anche in QEMU. In sostanza, Mozilla considera Rust più facile da debuggare, poiché il compilatore rifiuta gli errori. Tuttavia, i test hanno evidenziato anche alcuni svantaggi di Rust.

“Come con C++, è quasi impossibile scrivere Rust idiomatico senza usare modelli, quindi ha binari gonfi e tempi di compilazione lenti. Anche tutti questi controlli in fase di compilazione hanno un costo. Inoltre, se riscrivi qualcosa, perdi il vecchio codebase maturo e non c'è modo di produrre un codebase di qualità simile in un ragionevole lasso di tempo; è molto meglio estendere, piuttosto che riscrivere, il programma in Rust. È meglio estendere il programma piuttosto che riscriverlo in Rust ", afferma un ingegnere del software.

Secondo il suo creatore, è per questo motivo che gli sviluppatori Linux, in particolare Linus Torvalds stesso, hanno rifiutato l'idea di riscrivere l'intero kernel in Rust.

“Fai del lavoro per creare collegamenti sicuri, quindi scrivi il codice aggiuntivo in Rust e puoi ancora goderti quel codice maturo. (Questo è ciò che fa Linux, ci sono sforzi per aggiungere la possibilità di scrivere un modulo del kernel in Rust), "ha aggiunto. Gli sviluppatori Linux hanno esplorato le possibilità di scrivere alcuni nuovi moduli del kernel usando il linguaggio Rust per circa tre anni. Ciò ha dato origine al progetto »Rust for Linux«.

Infine, se siete interessati ad approfondire l'argomento, potete trovare maggiori dettagli al seguente link.


Aggiungi come fonte preferita in Google