WSL9x hacks Linux into ancient Windows 9x systems • The Register
WSL9x hacks Linux into ancient Windows 9x systems • The Register
https://www.theregister.com/2026/04/22/wsl_windows95/
Publish Date: 2026-04-22 11:29:00
Source Domain: www.theregister.com
The Windows Subsystem for Linux is an invaluable tool, but anyone wanting to run it on a Windows 9x system would find themselves out of luck until now.
A self-described computer tinkerer and hacker calling herself Hailey presented what she called “one of my greatest hacks of all time” in a Mastodon post on Wednesday: The Windows 9x Subsystem for Linux, or WSL9x.
According to Hailey’s upload on Codeberg, WSL9x runs the 6.19 Linux kernel cooperatively within Windows 9x, allowing users to interact with it just like they would a WSL instance in a modern Windows system. Minus the GUI, naturally – if you’re dead-set on running Linux in Windows 95, you’re going to have to use the terminal like a grown-up. Sorry.
The question of why one would want to do this came to mind quite quickly; we contacted Hailey to learn why she undertook this rather niche project, but didn’t hear back before publication. Luckily for us, Hailey did explain the how on Codeberg.
According to the WSL9x readme, the system is made up of three components: a Linux kernel patched to call Windows 9x APIs instead of POSIX ones, a VxD (virtual device) driver, and a WSL client itself.
The VxD driver does a lot of the heavy lifting and is responsible for initializing WSL9x as well as handling userspace events that have to be relayed to the kernel (i.e., page faults and syscalls), which it does in a rather interesting way due to limitations in the Win9x architecture.
“Syscalls are handled via the general protection fault handler, as Win9x does not have an interrupt descriptor table long enough to install a proper handler for int 0x80,” which is the i386 syscall interrupt for Linux, Hailey explained.
The GPF handler in WSL9x keeps an eye on faulting instructions, and when it sees int 0x80 pop up, it “advances the instruction pointer as if the interrupt succeeded and dispatches as a…