WSL9x: un kernel Linux dentro Windows 9x, senza virtualizzazione (aggiornato: 23 aprile 2026, ore 10:57)
- a cura di: massimo.valenti
- Commenti:
- Letture:
- Aggiornato: 1 ora fa
- Pubblicato: 1 ora fa
Se Microsoft ha portato Linux dentro Windows con WSL, qualcuno doveva prima o poi chiedersi se fosse possibile fare il contrario. E se quel qualcuno decidesse di farlo non con Windows 10 o 11, ma con Windows 9x - il sistema operativo che per milioni di persone è stato il primo contatto con un PC? Il risultato si chiama WSL9x: un progetto hobbistico che infila un kernel Linux moderno dentro il kernel di Windows 9x, facendoli convivere fianco a fianco. Senza riavvii. Senza virtualizzazione hardware. Con una dose di follia tecnica che merita un'analisi.

L'autrice è tale Hailey Somerville, che si definisce «smanettona di computer e hacker». Ha presentato il progetto su Mastodon come «uno dei miei più grandi hack di tutti i tempi». Il codice è ospitato su Codeberg.
Il nome è ovviamente un gioco di parole: WSL sta per Windows Subsystem for Linux nel progetto Microsoft

Qui diventa Windows 9x Subsystem for Linux, ribaltando la direzione. Il parallelo più calzante è con WSL1 - la prima versione del sottosistema Microsoft, che traduceva le chiamate di sistema Linux in chiamate NT senza ricorrere a una macchina virtuale. WSL9x fa qualcosa di analogo ma in senso opposto: un kernel Linux modificato che gira dentro l'ambiente Windows 9x, traducendo le proprie esigenze in chiamate alle API di quel sistema.
WSL9x si regge su tre pezzi fondamentali.
Il primo è un kernel Linux patchato - attualmente basato su Linux 6.19 - modificato per invocare le API di Windows 9x anziché quelle POSIX.
Il secondo è un driver VxD (Virtual Device Driver, il meccanismo di estensione del kernel proprio di Windows 9x) che gestisce l'inizializzazione del sottosistema e fa da ponte per eventi critici come i fault di pagina e le chiamate di sistema provenienti dallo spazio utente.
Il terzo è un client WSL: un piccolo programma DOS a 16 bit che cattura le finestre del prompt MS-DOS e le passa al kernel Linux come interfacce TTY.
I due kernel - quello di Windows 9x e quello di Linux - girano simultaneamente sullo stesso processore, condividendo le risorse. Nessuna virtualizzazione assistita dall'hardware, nessuna interfaccia grafica: tutto avviene da terminale. Per gli appassionati di retrocomputing è probabilmente un punto a favore, non un limite.

Ogni sistema operativo ha bisogno di un meccanismo per gestire le chiamate di sistema. Su Linux per architettura i386 il metodo classico è l'interrupt int 0x80. Il problema è che Windows 9x non dispone di una tabella dei descrittori degli interrupt (IDT) abbastanza lunga per installare un gestore dedicato a quell'interrupt.
La soluzione di Somerville fa sorridere e rabbrividire nello stesso istante: le syscall vengono intercettate tramite il gestore del general protection fault (GPF). Quando il processore incontra un'istruzione int 0x80 e genera un GPF perché l'interrupt non è mappato, il gestore riconosce la situazione, avanza il puntatore all'istruzione come se l'interrupt fosse andato a buon fine e dispaccia la chiamata al kernel Linux. È il tipo di hack che un ingegnere serio non ammetterebbe mai di aver pensato - e che poi finisce per funzionare.
Il kernel Linux in WSL9x gira con privilegi ring 0, lo stesso livello del kernel Windows 9x. I due nuclei condividono il massimo livello di accesso all'hardware, senza alcuna barriera di protezione reciproca. Come ha spiegato la stessa Somerville su Hacker News: «Dovrebbero cooperare, ma se uno dei due va in crash, vanno giù entrambi.».
Non è una configurazione pensata per la produzione, e la sviluppatrice non ha mai provato a presentarla come tale. Le implicazioni di sicurezza e stabilità sono dichiarate apertamente. Questo è hacking nel senso più nobile del termine: capire fin dove si può spingere un sistema, non costruire qualcosa da mettere in produzione.
L'assenza di virtualizzazione hardware porta con sé un effetto collaterale curioso: WSL9x gira su macchine con processori Intel 486, rendendolo potenzialmente utile - o quantomeno divertente - per chi possiede ancora hardware d'epoca.
C'è però una scadenza all'orizzonte. Gli sviluppatori del kernel Linux hanno in programma di abbandonare il supporto all'architettura i486 a partire da Linux 7.1. A quel punto WSL9x dovrà scegliere: restare su un kernel più vecchio oppure perdere la compatibilità con il ferro più antico.
» Leggi: Scaricare Windows 98 CD/ISO in italiano: download diretto verificato

L'idea di far convivere due kernel sullo stesso hardware non è del tutto inedita. Chi ha qualche anno di esperienza ricorderà coLinux, che negli anni Duemila permetteva di eseguire un kernel Linux in modo cooperativo su sistemi Windows NT.
C'è anche User Mode Linux (UML), che fa girare un kernel Linux come processo nello spazio utente di un altro kernel Linux. Nel mondo embedded, configurazioni che affiancano un RTOS a Linux sulla stessa macchina esistono da tempo.
WSL9x si inserisce in questa tradizione con un sapore tutto suo. L'ospite è Windows 9x, un sistema operativo che ha più di trent'anni. Il kernel ospitato è un Linux moderno con supporto al paging, alla protezione della memoria e allo scheduling preventivo - tutte caratteristiche che Windows 95 e 98 gestivano in modo assai più rudimentale. La convivenza tra i due mondi è tanto improbabile quanto difficile da non ammirare.
WSL9x non è uno strumento per sostituire Wine, QEMU o qualsiasi altra soluzione di compatibilità consolidata. Parla direttamente agli appassionati di retrocomputing e a chi trova irresistibile l'idea di smontare un sistema operativo per capire come funziona - e poi rimontarlo in un modo che i suoi creatori non avevano mai immaginato.
Il codice è su Codeberg, aperto a chiunque voglia studiarlo o contribuire. E se l'idea di far girare un kernel Linux dentro Windows 95 vi sembra assurda, avete ragione. È esattamente per questo che vale la pena parlarne.
Fonti: theregister.com, liliputing.com
Nessuno ha ancora commentato.