The Windows Subsystem for Linux (WSL) has long been synonymous with contemporary iterations of the Windows operating system; thus, the notion of orchestrating such a synergy within Windows 95 or 98 borders on the satirical. However, Hayley, a self-described computational tinkerer and virtuoso, has transmuted this whimsical concept into a tangible reality, unveiling WSL9x—the Windows 9x Subsystem for Linux.
Hayley chronicled her endeavors on Mastodon, characterizing the project as one of the most profound “hacks” of her career. According to the WSL9x repository on Codeberg, the architecture executes a Linux 6.19 kernel within the Windows 9x environment in a cooperative mode. This allows users to interact with Linux in a manner reminiscent of the modern WSL experience, albeit devoid of a graphical user interface; enthusiasts must instead commune with the system through a terminal interface.
While the existential necessity of such a project invites immediate inquiry, Hayley provided an exhaustive technical exposition of its mechanics. The system is comprised of three distinct pillars: a meticulously patched Linux kernel that interacts with the Windows 9x API rather than traditional POSIX interfaces; a Virtual Device Driver (VxD) which serves as the operational heart; and a WSL client that acts as the intermediary layer.
The VxD driver undertakes the most arduous computational tasks, initializing the subsystem and relaying user-space events—including page faults and system calls—to the kernel. Due to the architectural constraints of Windows 9x, Hayley had to engineer a sophisticated workaround. Windows 9x lacks a sufficiently expansive Interrupt Descriptor Table to host a standard handler for int 0x80, the quintessential i386 Linux system call interrupt.
To circumvent this, WSL9x leverages a General Protection Fault handler. The system scrutinizes the instructions that precipitated the fault; upon detecting an int 0x80 instance, it increments the instruction pointer as if the interrupt had succeeded and redirects the call to the Linux kernel as a legitimate system request. While this methodology is highly unorthodox for the legacy platform, it is the linchpin that allows the project to transcend antiquated limitations.
The client-side component is considerably more rudimentary. Hayley describes it not as a standalone application, but as a lean 16-bit DOS client designed primarily to funnel DOS command-line prompts into the Linux kernel as a TTY.
Despite the project’s technical brilliance, WSL9x harbors inherent instabilities. During discourse on Hacker News, Hayley cautioned that within this configuration, the Linux kernel operates with the same Ring 0 privileges as the Windows kernel. This level of unbridled access poses significant security risks and potential instability. In this cooperative arrangement, Windows and Linux must function in perfect harmony; should either fail, the entire system inevitably collapses.
While WSL9x is unlikely to achieve mainstream ubiquity, it remains a captivating curiosity for those maintaining vintage hardware running Windows 95, 98, or ME—particularly in industrial or server environments where an ancient machine remains indispensable due to legacy software. For those daring enough to experiment with WSL9x, Hayley has provided comprehensive deployment instructions on the project’s repository.
