Ein von Microsoft unabhängiger Enthusiast hat das WSL9x (Windows 9x Subsystem for Linux) Toolset entwickelt, mit dem moderne Linux-Kernel innerhalb des Windows 95/98/ME Kernels ausgeführt werden können. Das Projekt ermöglicht es, Anwendungen für Linux und Windows 9x nebeneinander in einem System auszuführen, ähnlich wie die WSL-Schicht es ermöglicht, mit Linux-Anwendungen in modernen Windows-Versionen zu arbeiten. Es wird nur die Ausführung von Konsolen-Linux-Programmen unterstützt. Der Code der WSL9x-Komponenten ist in C und Assembler geschrieben und steht unter der GPLv3-Lizenz.
Im Gegensatz zu WSL2 wird bei WSL9x keine Virtualisierung verwendet, und der Linux-Kernel wird im Ring-0-Schutz parallel zum Windows-Kernel ausgeführt, was es ermöglicht, WSL9x auf Systemen ohne Unterstützung für die Hardware-Virtualisierung, selbst mit CPU i486, zu verwenden. Das System verwendet einen modifizierten Linux-Kernel 6.19, der für den Betrieb im UML (User-mode Linux) Modus erstellt wurde, der dafür vorgesehen ist, den Kernel als Benutzerprozess auszuführen. Der Zugriff auf die POSIX-API im UML-Schicht-Translation wurde durch einen Aufruf der Windows 9x Kernel-API ersetzt.
Unter Windows wird ein vom Projekt bereitgestellter VxD-Treiber geladen, der für die Initialisierung des WSL9x-Subsystems, das Laden und Platzieren des Linux-Kernels im Speicher, die Interrupt-Dispatching, die zyklische Übergabe der Kontrolle an den Linux-Kernel im kooperativen Multitasking-Modus und die Verarbeitung von an den Linux-Kernel adressierten Ereignissen aus dem Benutzerspeicher, wie der Ausführung von Systemaufrufen und dem Zugriff auf nicht zugewiesene Speicherseiten (Page Faults), verantwortlich ist. Da der Windows 9x-Kernel keine Interrupt-Vektortabelle (IDT, Interrupt Descriptor Table) unterstützt, was die Installation eines eigenen Interrupt-Handlers für den Systemaufruf 0x80 verhindern würde, wird ein GPF (General Protection Fault) Handler für Systemaufrufe verwendet, der Ausnahmen abfängt, die beim Ausführen der SYSCALL-Anweisung auftreten.
Für die Benutzer steht das Dienstprogramm wsl.com zur Verfügung, das als 16-Bit-DOS-Anwendung gestaltet ist und die Nutzung der MS-DOS-Eingabeaufforderung zum Ausführen von Linux-Programmen ermöglicht. Das Dienstprogramm gewährleistet die Übertragung von Eingabeereignissen und simuliert die Funktionalität der Konsole zur Anzeige der Ausgabe mit Unterstützung für ANSI Escape-Codes.

Quelle: opennet.ru
