Een onafhankelijke enthousiasteling, niet verbonden aan Microsoft, heeft de WSL9x (Windows 9x Subsystem for Linux) toolkit ontwikkeld, waarmee moderne Linux-kernels binnen de Windows 95/98/ME-kernel kunnen worden uitgevoerd. Dit project biedt de mogelijkheid om Linux- en Windows 9x-applicaties zij aan zij op ƩƩn systeem te draaien, vergelijkbaar met hoe de WSL-laag Linux-applicaties in de moderne versies van Windows laat werken. Alleen consolegebaseerde Linux-programma's worden ondersteund. De code van de WSL9x-componenten is geschreven in C en assembler en wordt verspreid onder de GPLv3-licentie.
In tegenstelling tot WSL2 wordt er in WSL9x geen virtualisatie toegepast en draait de Linux-kernel in de root van het beschermingsniveau parallel aan de Windows-kernel, waardoor WSL9x kan worden gebruikt op systemen zonder ondersteuning voor hardwarevirtualisatie, zelfs met een CPU i486. In het systeem wordt een gemodificeerde Linux-kernel 6.19 gebruikt, die is samengesteld voor gebruik in de UML (User-mode Linux) modus, bedoeld voor het draaien van de kernel als een gebruikersproces. Toegang tot de POSIX-API in de UML-laag is vervangen door een aanroep van de Windows 9x-kernel-API.
In Windows wordt een door het project voorbereid VxD-stuurprogramma geladen, verantwoordelijk voor de initialisatie van de WSL9x-subsysteem, het laden en plaatsen van de Linux-kernel in het geheugen, de dispatching van interrupties, het cyclisch doorgeven van de controle aan de Linux-kernel in een samenwerkingsomgeving en het verwerken van naar de Linux-kernel gerichte gebeurtenissen vanuit de gebruikersruimte, zoals het uitvoeren van systeemaanroepen en het aanspreken van niet-toegewezen geheugentaken (page faults). Aangezien de Windows 9x-kernel geen interrupt descriptor table (IDT) ondersteunt, waardoor het niet mogelijk is een eigen interrupt-handler voor 0x80 in te stellen, wordt voor systeemaanroepen de GPF (General Protection Fault) handler gebruikt die uitzonderingen opvangt die optreden bij het uitvoeren van de SYSCALL-instructie.
Voor gebruikers is er de wsl.com-tool, gepresenteerd als een 16-bits DOS-applicatie waarmee de MS-DOS-opdrachtprompt kan worden gebruikt voor het starten van Linux-programma's. De tool zorgt voor de overdracht van invoergebeurtenissen en simuleert de functionaliteit van de console om uitvoer weer te geven met ondersteuning voor ANSI-escape-codes.

Bron: opennet.ru
