En oberoende entusiast som inte är kopplad till Microsoft har utvecklat verktyget WSL9x (Windows 9x Subsystem for Linux), vilket gör det möjligt att köra moderna Linux-kärnor inuti Windows 95/98/ME. Projektet erbjuder möjligheten att köra Linux- och Windows 9x-appar sida vid sida på samma system, på liknande sätt som WSL-lagret möjliggör användningen av Linux-appar i moderna versioner av Windows. Endast konsolprogram för Linux stöds. Koden för WSL9x-komponenterna är skriven i C och assembler och distribueras under GPLv3-licensen.
Till skillnad från WSL2 används ingen virtualisering i WSL9x, och Linux-kärnan körs i ring 0 parallellt med Windows-kärnan, vilket gör att WSL9x kan användas på system utan stöd för hårdvaruvirtualisering, även med CPU i486. Systemet använder en modifierad Linux-kärna 6.19, kompilad för att fungera i UML-läge (User-mode Linux), som är avsedd för att köra kärnan som en användarprocess. Anrop av POSIX API i UML-lagret har ersatts med anrop av Windows 9x-kärnans API.
I Windows laddas en VxD-drivrutin som förberetts av projektet, som ansvarar för att initiera WSL9x-underkärnan, ladda och placera Linux-kärnan i minnet, hantera avbrott, cyklisk överföring av kontroll till Linux-kärnan i ett läge med delad multitasking samt bearbeta adresserade händelser från användarutrymmet till Linux-kärnan, såsom systemanrop och åtkomst till icke allokerade minnessidor (page faults). Eftersom Windows 9x-kärnan inte stöder en avbrytningstabell (IDT, Interrupt Descriptor Table), vilket förhindrar att en egen avbrottshanterare för 0x80 kan installeras, används en GPF-hanterare (General Protection Fault) för systemanrop, som fångar undantag som uppstår vid körning av SYSCALL-instruktionen.
För användare erbjuds verktyget wsl.com, utformat som en 16-bits DOS-applikation som möjliggör användning av MS-DOS kommandorad för att köra Linux-program. Verktyget hanterar överföring av inmatningsevenemang och simulerar konsolfunktionalitet för att visa utdata med stöd för ANSI escape-koder.

Källa: opennet.ru
