With Windows 9x Subsystem for Linux you can run all your favourite Windows and Linux apps side-by-side with a modern Linux kernel running cooperatively with the Windows kernel in ring 0. And unlike modern WSL, no hardware virtualisation is used so even your 486 can run it!
Please enjoy, I think this might be one of my greatest hacks of all time
@hailey holy shit.
@hailey Is this like CoLinux? It was running User Mode Linux as a Windows process on XP, no virtualisation needed. Basically WSL2 way ahead of it's time!
The only caveat is that it relied on both arches having compatible pointer sizes which excluded 64bit, so it was never ported to win7.
On a technical aspect though WSL1 is IMHO even better than it's successor, it's literally implementing POSIX and Linux on the NT microkernel. After all NT was supposed to also run OS/2 and Xenix...
@hailey have you made any attempt to get networking working? Presumably that's all you'd need to get X up and running since you could run Hummingbird eXceed or one of the other preexisting win9x X servers
@fraggle no attempt yet but I think it would just be a matter of writing a network driver for it on each side!
@hailey jesus fucking christ this is an abomination of epic proportions that has no right to exist in a just universe and I love it so much
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- the Linux i386 syscall interrupt.
🤯
@hailey Awesome work! Guessing my 486 is below spec but super cool!
- replies
- 0
- announces
- 0
- likes
- 0
@hailey this is so awesome! And yeah, this seems like a less intrusive way to extend the practical life of old computers.
@hailey I wish I wasn't an absolute Linux noob and knew how to implement this on my system. This is awesome, congrats!
@hailey finally, colinux has a new competitor
@hailey Hah! Reminds me of coLinux, but that was actually later on NT. https://en.wikipedia.org/wiki/Colinux
Um actually, v86 mode is a form of hardware virtualisation. This is misleading!
But for real (mode), this is very cool! How much torturing of the Windows 95 VMM did this need?
@w8l surprisingly not that much! Calling a few VMM services like VMMCreateThread and the memory context related ones they say are internal only and should not be called but that's about it as far as internals poking goes
@hailey
Oh, you're the same person behind doslinux! Presumably a lot of your work on that also carried over to wsl9x, yes?
@w8l I've wanted to do wsl9x ever since I did doslinux! It just took me 6 years of turning it over in my head to figure out how to do it :) there's no direct lineage between the two projects, they take very different approaches, but I definitely took the learnings from doslinux with me
First of all, nice job.
Second of all, it's not quite clear from the docs — does this run Windows 95 on modern hardware thanks to modern Linux, or is it the other way around, i.e. modern Linux on old hardware?
By the way, I have some cursed Windows 9x ideas of my own as well, but they focus on running it on modern hardware:
- An HD audio driver. Someone already beat me to it
- A memory paging driver that would use the extra RAM that Windows 9x can't normally access as a "page file" of sorts. I have a very vague idea of how an MMU works from the perspective of an OS kernel, so no idea if it's possible, but it would be extra cool if the "swapping" could be done by simply modifying the page tables without having to copy anything anywhere
- And finally, since Windows 9x is completely unaware of multi-core CPUs, how about a universal driver that would run modified Linux on the remaining cores and work as a hardware abstraction layer of sorts for at least GPUs and network cards
@hailey The best kind of cursed. Amazing.
@hailey @ActionRetro Look, a new lovely weird way to run modern software on old computer!
@hailey Perish the thought of running an LTS kernel on Windows 98, like some kind of peasant! 😁