You can find beauty in the oddest of places.
WSL9x runs a modern Linux kernel (6.19 at time of writing) cooperatively inside the Windows 9x kernel, enabling users to take advantage of the full suite of capabilities of both operating systems at the same time, including paging, memory protection, and pre-emptive scheduling. Run all your favourite applications side by side – no rebooting required!
↫ Hailey Somerville
Yes, this is exactly what it sounds like. Hailey Somerville basically recreated the first version of WSL – or coLinux, for the old people among us – but instead of running on Windows NT, it runs on Windows 9x. A VxD driver loads a patched Linux kernel using DOS interrupts, and this Linux kernel calls Windows 9x kernel APIs instead of POSIX APIs. A small DOS client application then allows the Linux kernel to use MS-DOS prompts as TTYs. This is a great oversimplification, but it does get the general gist across.
Anyway, the end result is that you can use a modern Linux kernel and Windows 9x at the same time, without virtualising or dual-booting. This might be one of the greatest hacks in recent times, and I find it oddly beautiful in its user-facing simplicity.

I’d make it my daily driver with Windows ME on it!
Or DOS : https://github.com/haileys/doslinux
Great example of something that looks beautiful from the outside and ugly underneath. Using GPF as an interrupt handler is genius. And the 16 bit TTY is both amazing and an insult to both architectures.
It would be interesting to use podman to run a container for a different Linux distro to get a ‘fastfetch’ from Ubuntu or Fedora (for example). He is using UML though so it is possible that podman would not work. If it did work, a distrobox would be fun.
To me – a person with almost no understanding about how these things work – this all seems like magic.
Always thought coLinux is pretty interesting.
It’s a nice touch to have the DOS prompts talk to the Linux kernel as terminals.
PS a small mistake: “and this Linux kernel calls Windows 9x kernel APIs instead of POSIX APIs” a normal Linux kernel doesn’t talk to a POSIX API, the POSIX API is what the user space programs would call, but I saw in the article it said it’s based on user mode Linux, I don’t know if coLinux was too.
Counting the days until I can run Steam and Proton on a Windows 98 box.
This is completely useless and why break Windows this way? It’s bad enough that Windows 10/11 are more “Linux like” than ever.
A better use of time and effort would have been to allow the Win 9x kernel and userland run from Linux natively without the need for emulation/virtualization. Allowing Windows 9x to boot and run on modern hardware so that we can run our favorite Win9x applications.
***It’s bad enough that Windows 10/11 are more “Linux like” than ever.***
I’m sorry, but that will need some elaboration for me, because I am not seeing it. What about Windows 11 is Linux-like?
Been using Linux since 2000 and Windows (even longer) for work. Windows still feels distinctly Windows for me.
Might be a reference to how Powershell finally makes the Windows CLI useful and fully scriptable?
For what it’s worth, Interix predates coLinux by almost a decade. http://wikipedia.org/wiki/Interix
And Cygwin & MKS Toolkit predate Interix 😛
So I can run Win 9X program under linux?
RemusRM,
No, microsoft’s tradition is to name their subsystems backwards and the author mimicked that tradition. So to normal people this is actually a linux subsystem for win95.
Now we need a time machine to bring it where it belongs: 1998