Ein unabhĂ€ngig von Microsoft agierender Enthusiast hat das WSL9x (Windows 9x Subsystem fĂŒr Linux) entwickelt, das die AusfĂŒhrung moderner Linux-Kernel innerhalb des Windows 95/98/ME-Kernels ermöglicht. Dieses Projekt erlaubt es, Linux- und Windows 9x-Anwendungen nebeneinander auf demselben System auszufĂŒhren, Ă€hnlich wie die WSL-Schicht es mit Linux-Anwendungen in modernen Windows-Versionen ermöglicht. Es werden nur Konsolen-Linux-Programme unterstĂŒtzt. Der Code der WSL9x-Komponenten ist in C und Assembler geschrieben und steht unter der GPLv3-Lizenz.
Im Gegensatz zu WSL2 wird in WSL9x keine Virtualisierung eingesetzt, und der Linux-Kernel lĂ€uft im Ring 0 parallel zum Windows-Kernel, was es ermöglicht, WSL9x auch auf Systemen ohne UnterstĂŒtzung fĂŒr hardwaregestĂŒtzte Virtualisierung, selbst mit CPU i486, zu verwenden. Im System kommt ein modifizierter Linux-Kernel 6.19 zum Einsatz, der fĂŒr den Betrieb im UML (User-mode Linux)-Modus kompiliert wurde und darauf ausgelegt ist, den Kernel als Benutzerprozess auszufĂŒhren. Der Zugriff auf die POSIX-API in der UML-Ăbersetzungsschicht wurde durch einen Aufruf der Windows 9x-Kernel-API ersetzt.
In Windows wird ein VxD-Treiber geladen, der fĂŒr die Initialisierung des WSL9x-Subsystems verantwortlich ist, 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 an den Linux-Kernel adressierter Ereignisse aus dem Benutzerspeicher, wie das AusfĂŒhren von Systemaufrufen und den Zugriff auf nicht zugeordnete Speicherseiten (Seitenfehler). Da der Windows 9x-Kernel keine Interrupt Descriptor Table (IDT) unterstĂŒtzt, was die Einrichtung eines eigenen Interrupt-Handlers fĂŒr 0x80 fĂŒr Systemaufrufe verhindert, wird der GPF-Handler (General Protection Fault) verwendet, um Ausnahmen abzufangen, die bei der AusfĂŒhrung der SYSCALL-Anweisung auftreten.
Benutzern steht das Dienstprogramm wsl.com zur VerfĂŒgung, das als 16-Bit-DOS-Anwendung gestaltet ist und es ermöglicht, die MS-DOS-Eingabeaufforderung zum AusfĂŒhren von Linux-Programmen zu verwenden. Das Dienstprogramm sorgt fĂŒr die Ăbertragung von Eingabeereignissen und simuliert die FunktionalitĂ€t einer Konsole zur Anzeige der Ausgaben mit UnterstĂŒtzung fĂŒr ANSI Escape-Codes.

Quelle: opennet.ru
