Table of Contents

WSL9x, released by Hailey Somerville on Codeberg on April 22, runs Linux kernel 6.19 cooperatively inside the Windows 9x kernel in ring 0 via a VxD driver, with no hardware virtualization required (WSL9x Codeberg Repository). The result is a modern Linux userspace that boots natively on 486-era hardware, creating a migration path for industrial control systems still tethered to proprietary Windows 9x toolchains.

How WSL9x Works: Ring-0 Cooperative Kernel Scheduling

WSL9x is a three-component system. A patched Linux kernel, derived from User Mode Linux, runs alongside the Windows 9x kernel (WSL9x Codeberg Repository). A VxD driver loads the vmlinux.elf binary via DOS interrupts and manages the cooperative handoff (WSL9x Codeberg Repository). Terminal access comes through wsl.com, a 16-bit DOS client that proxies input and output between the user and the Linux environment (WSL9x Codeberg Repository).

Because Windows 9x lacks an interrupt descriptor table long enough to install a proper handler for int 0x80, WSL9x dispatches Linux syscalls through the general protection fault handler instead (WSL9x hacks Linux into ancient Windows 9x systems — The Register). Both kernels execute in ring 0 on the same CPU, scheduled cooperatively rather than preemptively. There is no hypervisor, no second-level address translation, and no hardware-assisted virtualization layer involved.

The Industrial Hardware Angle: Why Windows 9x Still Runs Factories

The retrocomputing press has framed WSL9x as a novelty. The more consequential reading is economic. Industrial control systems deployed in the 1990s and early 2000s often run on hardware that cannot be replaced without recertifying the entire production line. One anecdote, reported by Byte Iota, describes a workplace where a single Windows 98 machine acts as a mothership for disk management across seventy industrial robots (WSL9x: Modern Linux kernel runs inside Windows 98 — Byte Iota). These machines persist not because they are preferred, but because the cost of migration exceeds the cost of maintenance.

WSL9x breaks the assumption that modern software on ancient hardware requires emulation. By providing a native Linux 6.19 userspace, the project lets shops run contemporary git, modern compilers, and current editors on the same 486-era machines that currently run proprietary Win9x toolchains. The toolchain gap closes without buying new hardware or adding a virtualization layer that the underlying CPU may not support.

Limitations and Failure Modes: No Isolation, Build Complexity, and the 486 Cliff

Shared ring 0 is not merely an architectural detail; it is a single point of failure. The Register notes that the lack of isolation means a kernel panic in Linux triggers a full Windows 9x crash, and vice versa (WSL9x hacks Linux into ancient Windows 9x systems — The Register). This is not a bug but a structural constraint of the cooperative design.

Build complexity is another barrier. Compiling a patched Linux kernel for the User Mode Linux target, building a 16-bit DOS client with contemporary toolchains, and packaging a VxD driver requires toolchain archaeology that few maintenance engineers have time to perform.

There is also a hardware cliff on the horizon. According to Liliputing, Linux kernel 7.1 is expected to drop i486 support (Run native Linux apps on Windows 95 with Windows 9x Subsystem for Linux — Liliputing). If that change lands, WSL9x loses compatibility with the exact class of hardware it currently targets, unless the project maintains its own architecture backport or the hardware is upgraded to a Pentium-class CPU.

What Comes Next: Can the Linux Userspace Outlive the Kernel?

The long-term question is whether the userspace can outlive the kernel that hosts it. WSL9x demonstrates that a modern Linux userspace can run on hardware that predates most of its dependencies, provided the kernel abstraction is thin enough. The project exposes a gap in retrocomputing’s default assumption: that running modern software on ancient hardware means QEMU, DOSBox, or a Raspberry Pi adapter board.

For industrial sites, the practical calculus is straightforward. Running git and gcc natively on a Windows 98 control PC removes the emulation overhead and the secondary maintenance burden of a host OS. Whether that calculus outweighs the stability risk of ring-0 cooperative scheduling depends on how often the current proprietary toolchain needs to interact with software released in the last decade.

The project is licensed under GPL-3 and was, in Somerville’s words, “proudly written without AI” (WSL9x: Modern Linux kernel runs inside Windows 98 — Byte Iota). That detail is incidental to the architecture, but it underscores the manual precision required to align two kernels written three decades apart.

Frequently Asked Questions

Does WSL9x require hardware virtualization support?

No. WSL9x uses a VxD driver to load the Linux kernel image via DOS interrupts and manage cooperative scheduling in ring 0. It does not use Intel VT-x, AMD-V, or any hypervisor, which is why it boots on processors that predate hardware virtualization by decades. The lack of a hypervisor also means it expects to run on bare metal.

How is WSL9x different from Microsoft’s Windows Subsystem for Linux?

WSL9x is an independent project by Hailey Somerville that targets Windows 9x through ring-0 cooperative scheduling. Microsoft’s WSL runs on the NT kernel and uses either a system-call translation layer or a lightweight utility VM; WSL9x has no equivalent abstraction layer, so the kernels share the CPU directly. That architectural difference is why WSL9x works on a 486 and Microsoft’s WSL does not.

What happens if the Linux kernel crashes while running under WSL9x?

A crash in either kernel forces a full system reboot. Because both kernels share ring 0 with no memory isolation or panic boundary, a null pointer dereference in Linux is a Windows 9x crash, and vice versa. There is no way to capture a Linux-only crash dump or restart just one environment.

What hardware compatibility risk does WSL9x face?

Linux kernel 7.1 is expected to drop i486 support. If that happens, WSL9x would lose compatibility with 486-era hardware unless the project maintains its own architecture backport or the machine is upgraded to a Pentium-class CPU. The 16-bit DOS client and VxD driver also tie the project to the Windows 9x boot environment.

Why would an industrial site choose WSL9x over emulation?

For a site whose control PC cannot be replaced without recertifying the line, WSL9x avoids the cost of new hardware and the latency of an emulator like QEMU. The tradeoff is that both kernels live in the same ring-0 address space, so a bug in the Linux environment is a full system reboot, not an isolated guest crash.

Sources

  1. WSL9x Codeberg Repositoryprimaryaccessed 2026-04-23
  2. WSL9x hacks Linux into ancient Windows 9x systems — The Registeranalysisaccessed 2026-04-23
  3. Run native Linux apps on Windows 95 with Windows 9x Subsystem for Linux — Liliputinganalysisaccessed 2026-04-23
  4. WSL9x: Modern Linux kernel runs inside Windows 98 — Byte Iotaanalysisaccessed 2026-04-23

Enjoyed this article?

Stay updated with our latest insights on AI and technology.