Considering that Windows NT has the concept of so-called ‘subsystems’ whereby you can run different systems side-by-side, starting with the POSIX subsystem and later the Windows Subsystem for Linux (WSL), it was probably only a matter of time before someone figured that doing this with Windows 9x was also completely reasonable. Ergo we now got [Hailey Somerville]’s Linux Subsystem for Windows.
To make running Linux inside Windows 9x work, it was necessary to heavily patch a Linux kernel, as normally there are no provisions for such a subsystems in Windows 9x’s kernel unlike the NT kernel. Correspondingly, the Linux kernel is based on user-mode Linux and hacked to call Windows 9x kernel APIs instead of the POSIX ones.
In order to use WSL9x you thus need to build said modified Linux kernel – currently at version 6.19 – along with a disk image containing an installed copy of Windows 9x. From there WSL9x can be loaded with the wsl command and you’re then free to cooperatively run the Win9x and Linux kernel side-by-side. This is reminiscent of Cooperative Linux (coLinux), which did something similar except with Windows NT and Linux kernels running side-by-side, and of course we have WSL2 with Windows 10+.
Thanks to [adistuder] for the tip.

What are the security implications here?
On Windows 9x?! 🥲
Isn’t there a Geneva Convention rule against this?
Windows was useless even with a flamethrower—right Mac?
“WSL9x runs a modern Linux kernel (6.19 at time of writing) cooperatively inside the Windows 9x kernel” (from the projects page)
This is the reverse of Microsofts WSL. It is a version of WSL for Windows 9x.
Confusingly the project page suggests that you are launching the prepared Windows image from Linux, although it could also be the unclear phrasing.
“the inverse was also completely reasonable”
But is this the inverse? From the GitHub page:
“WSL9x runs a modern Linux kernel (6.19 at time of writing) cooperatively inside the Windows 9x kernel”
which sounds a lot like normal WSL2.
Indeed, and even the comment “ we now got [Hailey Somerville]’s Linux Subsystem for Windows which is disappointingly called WSL9x rather than LSW” is out of place.
The full name is “Windows 9x Subsystem for Linux”, which makes sense for what it is, and gives away that the author on HaD misunderstood what it does.
Quite possible. The project description wasn’t very descriptive and even the Hacker News discussion was trying to figure out what exactly it does. That the project says that both kernels run ‘side by side’ is confusing there.
Except that the subsystem thing is in NT at earliest.
Probably stating the obvious, but..
A reverse concept was WABI, which ran the Windows 3.1 386 Enhanced Mode kernal on top of *nix kernal (no DOS involved).
It was mostly popular on Solaris/SunOS to run shrink-wrapped software on an Unix software, but a version for Caldera Linux had existed, too.
Before WINE was popular, WABI was quite common in *nix environments.
It was less heavy than running, say, SoftWindows (VM) or DOS+Windows 3.1 in DOSemu.
https://en.wikipedia.org/wiki/Wabi_(software)
Reminds me of andLinux from the 2000s.
It ran well on Windows 2k/XP. Even could run X11 applications and WINE.
Here’s the old homepage: https://web.archive.org/web/20081221083354/https://www.andlinux.org/
I’m not sure I am ready for this
Nothing really related but i love the design of old windows OS i might just make my website like this ! 2000s vibe are so great for web design and being different , why we don’t make such a good things like this anymore.
Finally, a solution to the RAM shortage! 2GB should be enough for anyone.
2GB, on windows 98? I think my Pentium 2 120 had 128 MB!
Cygwin all the way, baby! That’s how I used to pretend to use Linux on Windows. I used to say it was 80% of the advantages of dual-booting Linux for 20% of the hassle.
There’s an even older environment from Japan that ran on Windows 3.1.
https://virtuallyfun.com/2023/12/08/bsd-on-windows-things-i-wish-i-knew-existed/
Cygwin was/is really slow in IO. But yes, it reduced amount of pain with windows for those, who preferred to use *nix
Hmmm… imagining that someone who really misses 9x could use such a Linux environment to build a moderm web browser am/or other software thus making 9x usable again.
Windows 9x can run Windows XP/Vista applications via KernelEx Project.
The DLLs unicows.dll and gdiplus.dll are recommended, too.
But a problem is missing SSE 2/3 support on older CPUs.
There are some web browsers made to run on XP,
but often are compiled with SSE instructions that CPUs in classic Win XP machines may lack.
By comparison, that WSL9x could be used to run a modern Linux on 486 CPUs and for compiling a modern browser from sources.
In principle, I mean. And not sure for how long.
Linux is going to drop 486 support in near future,
because obviously no one in charge takes interesting projects like WSL9x into account that still could make good use of it.
And I’m afraid that Pentium support will follow soon,
then Pentium MMX, Pentium Pro/Pentium II support (famous i686 architecture) et cetera.
But I don’t mean to argue. It’s just that other IT sites writing about WSL9x do point out the upcoming i486 drop, too.
I’m sharing this because I think some of the people here might appreciate its value.
(But it should have been command.com instead of cmd.exe.)
https://metacpan.org/dist/BATsh