Un appassionato non affiliato a Microsoft ha sviluppato lo strumento WSL9x (Windows 9x Subsystem for Linux), che consente di eseguire kernel Linux moderni all'interno del kernel Windows 95/98/ME. Il progetto offre la possibilità di eseguire applicazioni Linux e Windows 9x fianco a fianco su un unico sistema, analogamente a come la sottosistema WSL consente di utilizzare applicazioni Linux nelle versioni moderne di Windows. Sono supportati solo i programmi Linux da console. Il codice dei componenti WSL9x è scritto in C e assembly e distribuito con licenza GPLv3.
A differenza di WSL2, WSL9x non utilizza la virtualizzazione e il kernel Linux viene eseguito in modalità di protezione anello zero parallelo al kernel Windows, consentendo di utilizzare WSL9x su sistemi privi di supporto per la virtualizzazione hardware, anche con CPU i486. Nel sistema viene utilizzato un kernel Linux modificato 6.19, compilato per funzionare in modalità UML (User-mode Linux), progettato per eseguire il kernel come processo utente. Le chiamate all'API POSIX nel livello UML di traduzione sono sostituite da chiamate all'API del kernel Windows 9x.
In Windows viene caricato un driver VxD preparato, responsabile dell'inizializzazione della sottosistema WSL9x, del caricamento e della posizionamento del kernel Linux in memoria, della gestione delle interruzioni, del passaggio ciclico di controllo al kernel Linux in modalità di multitasking collaborativo e della gestione degli eventi indirizzati al kernel Linux dallo spazio utente, come l'esecuzione di chiamate di sistema e l'accesso a pagine di memoria non allocate (page faults). Poiché il kernel Windows 9x non supporta la tabella degli identificatori di interruzione (IDT, Interrupt Descriptor Table), che non consente di impostare un proprio gestore per l'interruzione 0x80, per le chiamate di sistema viene utilizzato un gestore GPF (General Protection Fault), che intercetta le eccezioni che si verificano durante l'esecuzione dell'istruzione SYSCALL.
Agli utenti viene offerto l'utilità wsl.com, presentata come un'applicazione DOS a 16 bit che consente di utilizzare la riga di comando MS-DOS per eseguire programmi Linux. L'utilità fornisce la trasmissione degli eventi di input e simula la funzionalità della console per visualizzare l'output con supporto per i codici di escape ANSI.

Fonte: opennet.ru
