\

Windows 9x Subsystem for Linux

310 points - today at 9:52 AM

Source
  • rahen

    today at 10:17 AM

    Before WSL, the best ways to run unmodified Linux binaries inside Windows were CoLinux and flinux.

    http://www.colinux.org/

    https://github.com/wishstudio/flinux

    flinux essentially had the architecture of WSL1, while CoLinux was more like WSL2 with a Linux kernel side-loaded.

    Cygwin was technically the correct approach: native POSIX binaries on Windows rather than hacking in some foreign Linux plumbing. Since it was merely a lightweight DLL to link to (or a bunch of them), it also kept the cruft low without messing with ring 0.

    However, it lacked the convenience of a CLI package manager back then, and I remember being hooked on CoLinux when I had to work on Windows.

      • Fnoord

        today at 10:38 AM

        Cygwin is way older than CoLinux. CoLinux is from 2004. Cygwin was first released in 1995.

        The problem with Cygwin as I remember it was DLL hell. You'd have applications (such as a OpenSSH port for Windows) which would include their own cygwin1.dll and then you'd have issues with different versions of said DLL.

        Cygwin had less overhead which mattered in a world of limited RAM and heavy, limited swapping (x86-32, limited I/O, PATA, ...).

        Those constraints also meant native applications instead of Web 2.0 NodeJS and what not. Java specifically had a bad name, and back then not even a coherent UI toolkit.

        As always: two steps forward, one step back.

          • barrkel

            today at 10:51 AM

            Just use ssh from Cygwin. DLL hell was rarely a problem, just always install everything via setup.exe.

            The single biggest problem it has is slow forking. I learned to write my scripts in pure bash as much as possible, or as a composition of streaming executables, and avoid executing an executable per line of input or similar.

              • fc417fc802

                today at 12:12 PM

                Slow forking is only the second biggest problem IMO. The biggest is the lack of proper signals. There's a bunch of software out there that just isn't architected to work well without non-cooperative preemption.

                  • quotemstr

                    today at 12:41 PM

                    Huh? Signals have worked fine for a long time under Cygwin.

            • pjmlp

              today at 10:47 AM

              Meanwhile those that complained about Java, now ship a whole browser with their "native" application, and then complain about Google taking over the Web.

          • radiator

            today at 10:55 AM

            Nowadays MSYS2, which does depend on cygwin under the hood, offers such a package manager (pacman of Arch Linux) and it is quite a user friendly to run native POSIX binaries on Windows without a linux VM.

              • ktm5j

                today at 1:23 PM

                MSYS2 is my favorite in this area. Super lightweight and easy to use, highly recommend.

                • ethin

                  today at 11:54 AM

                  In my personal experience, Msys 2 would work great until it didn't. Unless this has changed, from what I remember, Msys2 compiled everything without PIC/PIE, and Windows does allow you to configure, system-wide, whether ASLR is used, and whether it's used "if supported" or always. If that setting is set to anything but off, Msys2 binaries will randomly crash with heap allocation errors, or they do on my system. It happened so much to me when I had actual coreutils installed that I switched to uutils-coreutils even though I knew that uutils-coreutils has some discrepancies/issues. Idk if they've fixed that bug or not; I did ask them once why they didn't just allow full ASLR and get on with things and they claimed that they needed to do non-ASLR compilations for docker.

                  • anthk

                    today at 11:20 AM

                    w64devkit it's fine too; with just a few PATH settings and SDL2 libraries I could even compile UXN and some small SDl2 bound emulators.

                    https://github.com/skeeto/w64devkit

                • red_admiral

                  today at 11:16 AM

                  Developing on cygwin, however, was a right pain. If a C library you wanted to use didn't have a pre-built cygwin version (understandable!) then you end up doing 'configure, make' on everything in the dependency tree, and from memory about two thirds of the time you had to edit something because it's not quite POSIX enough sometimes.

                    • smackeyacky

                      today at 11:23 AM

                      Ha ha doing Unix like it was 1989. At the time I thought configure was the greatest of human achievements since I was distributing software amongst Sun machines of varying vintage and a Pyramid. I want to say good times but I prefer now ha ha

                        • jesuslop

                          today at 12:08 PM

                          autotools felt old even in 90's

                  • barrkel

                    today at 10:49 AM

                    Cygwin implements a POSIX API on Win32 with a smattering of Nt* calls to improve compatibility but there's a lot of hoop jumping and hackery to get the right semantics. Fork isn't copy on write, for one thing.

                    I was a Cygwin user from about 1999 to 2022 or so, spent a little time on wsl2 (and it's what I still use on my laptop) but I'm fully Linux on the desktop since last year.

                    • charcircuit

                      today at 1:17 PM

                      >Cygwin was technically the correct approach

                      Requiring every single Linux app developer to recompile their app using Cygwin and account for quirks that it may have is not the correct approach. Having Microsoft handle all of the compatibility concerns scales much better.

                      • pjmlp

                        today at 10:46 AM

                        Nope, the best way was VMWare Workstation, followed by Virtual Box.

                        • pmontra

                          today at 12:18 PM

                          I've been running colinux for years until early 2009 when I reinstalled my laptop with Ubuntu 8.04 and Windows XP in a VM. So much faster.

                          • firesteelrain

                            today at 12:05 PM

                            I thought WSL2 is functionally a virtual machine with deep host integration. Thatโ€™s why you need HyperV.

                              • NeutralWanted

                                today at 12:24 PM

                                Sort of. Technically speaking, just enabling hyper-v turns your base windows install into a VM. Wsl2 then just runs along side

                            • EvanAnderson

                              today at 11:54 AM

                              On Windows NT building software from source under Interix[0] (nee OpenNT, later "Subsystem for Unix Applications") was pretty nice.

                              Interix was implemented as proper NT kernel "subsystem". It was just another build target for GNU automake, for example.

                              (Being that Interix was a real kernel subsystem I have this fever dream idea of a text-mode "distribution" of NT running w/o any Win32 subsystem.)

                              [0] https://en.wikipedia.org/wiki/Interix

                          • scoopr

                            today at 10:19 AM

                            So, is it like colinux[0], but for pre-NT windows? Neat!

                            Back when I was still using windows (probably XP era), I used to run colinux, it was kind of amazing, setting up something like LAMP stack on the linux side was a lot easier and then using windows editors for editing made for quite nice local dev env, I think! Could even try some of the X11 servers on windows and use a linux desktop on top of windows.

                            When I noticed I kept inching towards more and more unixy enviornment on the windows, I eventually switched to macOS.

                            Apart from the obvious hack-value, I can't quite imagine even pretend use-case, with some 486 era machine, you would be limited by memory quite quickly!

                            [0] http://colinux.org/

                              • jesuslop

                                today at 12:11 PM

                                Colinux was a tech feat, just not that many people noticed.

                            • ChrisRR

                              today at 11:30 AM

                              By microsoft's naming scheme this should be Linux Subsystem for Windows

                                • GranPC

                                  today at 12:14 PM

                                  No? WSL is Linux on Windows โ€” so W9xSL is Linux on Windows 9x. I thinkโ€ฆ :)

                                  • nonethewiser

                                    today at 12:06 PM

                                    Yeah this has never made sense...

                                      • wongarsu

                                        today at 12:56 PM

                                        Especially since the other subsystems were referred to as the OS/2 subsystem, Posix subsystem, Win32 subsystem, Security subsystem, etc

                                • gblargg

                                  today at 12:29 PM

                                  > Proudly written with zero AI.

                                  Unfortunately this is ambiguous, as there's an AI product called Zero AI.

                                  • AshamedCaptain

                                    today at 10:06 AM

                                    I guess easier than https://github.com/haileys/doslinux

                                      • haileys

                                        today at 10:10 AM

                                        Well it did take me 6 years to follow that up!

                                    • pwdisswordfishq

                                      today at 11:30 AM

                                      > "no hardware virtualisation"

                                      > looks inside

                                      > virtual 8086 mode

                                      • fouc

                                        today at 10:05 AM

                                        Modern linux kernel running cooperatively inside the Windows 9x kernel, sick!

                                        • Borg3

                                          today at 12:00 PM

                                          Hmm I wonder how stable it is.. It cannot render correctly Window control buttons (Minimize, Maximize, Close). If it fails on such basic task, I wonder where it crashes...

                                          • itvision

                                            today at 12:40 PM

                                            Is this Win4Lin resurrected?

                                            • ilkkao

                                              today at 10:22 AM

                                              Little late but would this have actually allowed running early Linux under Windows when Windows 95 came out in the 90s? I remember only dual booting being available at that time.

                                              • ErroneousBosh

                                                today at 10:04 AM

                                                If I can get this to work (haven't tried yet) it directly solves a problem I have right now this week right here in 2026, 30 years after Windows 95 was even a thing.

                                                Yes, I have weird problems. I get to look after some very weird shit.

                                                  • defrost

                                                    today at 10:15 AM

                                                    Old still running 24/7 industrial processing circuit with oddball bespoke addons based on DOS / early windows ??

                                                    Still got those in this part of the world sharing space with state of the art autonomous 100+ tonne robo trucks.

                                                      • ourmandave

                                                        today at 10:24 AM

                                                        When backward compatibility used to mean something man!

                                                    • thijsvandien

                                                      today at 10:22 AM

                                                      Tell us more!

                                                        • dnnddidiej

                                                          today at 11:31 AM

                                                          Probably works for a bank.

                                                            • jesterson

                                                              today at 1:16 PM

                                                              And likely in ATM servicing.

                                                              Just few months ago seen windows 95 error message on HSBC ATM.

                                                  • keyle

                                                    today at 11:04 AM

                                                    I thought this was about running windows 9x within linux. Is there such thing without virtualisation?

                                                      • maybewhenthesun

                                                        today at 12:38 PM

                                                        You can setup handlers to automatically launch windows executables using wine/proton .

                                                        This trickery is called binfmt_misc , which is a linux kernel system to associate random binary files with custom userspace 'interpreters'

                                                        I have had it working in the past. And while it is kinda neat I prefer manually running 'wine program.exe' to have a bit more control.

                                                        I have seen reports that a binfmt_misc setup + wine is good enough to get infected by certain windows viruses ;-P

                                                    • foldr

                                                      today at 12:51 PM

                                                      Incredible that current Linux kernels still have 486 support!

                                                      • thrownaway561

                                                        today at 12:27 PM

                                                        Everytime I see something like this, I'm like, how in the hell did they learn and then figure this out? Congrats on this!!!! I will definitely have to play with this for some of that sweet nostalga.

                                                        • defrost

                                                          today at 10:17 AM

                                                            I am going to run this in Windows 95 on a Sun PC card under Solaris 7.
                                                          
                                                          from the same commenter who effused

                                                            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

                                                            • jjgreen

                                                              today at 10:45 AM

                                                              Humans are weird and can loath and desire a thing at the same time; the success of Brutalism for example.

                                                              • aa-jv

                                                                today at 11:06 AM

                                                                /off to fire up Windows95 on the Octane2 and get me some hot Linux action ..

                                                                • anthk

                                                                  today at 11:22 AM

                                                                  Wait until you find IE was released for Unix, using some Win32 shims. And... die hard Unix sysadmin ran it under FVWM and compared to Netscape wasn't half bad. Both propietary, but sadly NScape didn't open Mozilla yet, and the rest of the alternatives such as Arena/Amaya coudn't compete with 'modern' CSS features and the like.

                                                              • varispeed

                                                                today at 11:08 AM

                                                                This could prompt me to finally assemble the Pentium desktop I have in storage in parts.

                                                                • aa-jv

                                                                  today at 10:49 AM

                                                                  Oddly enough, I could kind of use this right now. I have some software which used SCSI (Adaptec WNASPI32.dll) calls to administer a device over the SCSI bus .. would this Subsystem be usable for that, or does it still require I build a WNASP32.dll shim to do translation?

                                                                    • actionfromafar

                                                                      today at 11:21 AM

                                                                      So, you have Windows software. This "Windows 9x Subsystem for Linux" just boots Windows 95. I don't know what you would use the Linux part for. Care to explain more what you want to do?

                                                                      If you want to run your windows software in Linux, you could try Wine. Wine seems to have support for WNASPI so it's possible your software would just work. (You might have to run Wine as root I guess, to get access to the SCSI devices.)

                                                                      If Wine doesn't work, Windows in QEMU with PCI passthrough to the SCSI controller might have better chances to work.

                                                                  • vrganj

                                                                    today at 10:08 AM

                                                                    Okay what is it with WSL naming, this always confuses me. Shouldn't it be Linux subsystem for Windows?

                                                                      • tjoff

                                                                        today at 10:37 AM

                                                                        If you google there are many reasonable reasons for it. But the most straight forward is:

                                                                        > Because we cannot name something leading with a trademark owned by someone else.

                                                                        https://xcancel.com/richturn_ms/status/1245481405947076610?s...

                                                                          • ginko

                                                                            today at 12:41 PM

                                                                            Should have called it LINE.

                                                                        • jeroenhd

                                                                          today at 11:18 AM

                                                                          The core of the software is a subsystem, specifically a Windows subsystem; you're not running this subsystem on macOS or FreeBSD.

                                                                          The "for Linux" is added because it's a subsystem for Linux applications (originally not leveraging a VM).

                                                                          Microsoft also had the "Microsoft POSIX subsystem" (1993) and "Windows Services for UNIX" (1999) which were built on the "Subsystem for Unix-based Applications" (rather than "Unix-based Application Subsystem"). That chain of subsystems died at the end of Windows 8, though.

                                                                          There are many reasons not to put "Linux" in front, but the naming is consistent with Microsoft's naming inconsistencies. It's not the first time they used "subsystem for" and it's not the first time they used "Windows x for y" either.

                                                                          The naming is ambiguous, you could interpret the Windows subsystem for Linux as a subsystem of Linux (if it had such a thing) that runs Windows, or as a Windows subsystem for use with Linux. Swapping the order doesn't change that.

                                                                          In other languages, the difference would be clearer.

                                                                            • vrganj

                                                                              today at 12:57 PM

                                                                              To me, it sounds like a subsystem that provides Windows Compability for the Linux host.

                                                                              I do agree it's an issue of English being an imprecise language.

                                                                                • vehemenz

                                                                                  today at 1:20 PM

                                                                                  No natural language is inherently imprecise. Every language has its own system to resolve vagueness or ambiguity and elaborate on the supposedly "missing" features of the language. This issue is relatively settled in linguistics.

                                                                          • Sharlin

                                                                            today at 11:02 AM

                                                                            "Windows subsystem" was an existing term of art on the NT architecture.

                                                                            https://en.wikipedia.org/wiki/Windows_NT_3.1#Architecture

                                                                            • nkrisc

                                                                              today at 10:11 AM

                                                                              Itโ€™s a sub-system of Windows that is used for Linux.

                                                                              It can work either way though.

                                                                              • smackeyacky

                                                                                today at 11:28 AM

                                                                                Other people already answered but windows was just another personality on the original idea that cutler had for WNT. It just took a while for it to get implemented as a linux

                                                                                  • jesuslop

                                                                                    today at 12:24 PM

                                                                                    The Showstoppers book by G. Pascal Zachary is an entertaining account of NT uprising.

                                                                                • Gravityloss

                                                                                  today at 11:17 AM

                                                                                  To reciprocate the naming of Wine, maybe it could have been named Line. Also, both have this positive clang, being associated with "having a good time".

                                                                                  • twsted

                                                                                    today at 11:26 AM

                                                                                    I always have the same problem myself. Same as I had with version naming of old programs like "Microsoft Word for Windows 2.0" instead of the easier "Microsoft Word 2.0 for Windows".

                                                                                    • Almondsetat

                                                                                      today at 10:37 AM

                                                                                      Windows' subsystem for Linux

                                                                                      • adzm

                                                                                        today at 10:32 AM

                                                                                        (Windows 9x) (Subsystem for Linux)

                                                                                        • globular-toast

                                                                                          today at 12:02 PM

                                                                                          It's a dominance thing. Classic abuser behaviour.

                                                                                          • win2k

                                                                                            today at 10:35 AM

                                                                                            Yeah, you'd think from this that it is running Linux on Windows 9x.

                                                                                            • hagbard_c

                                                                                              today at 10:23 AM

                                                                                              Microsoft names of products turn around likes, e.g.

                                                                                              OpenOffice XML [1] -> Office Open XML [2]

                                                                                              [1] https://www.openoffice.org/xml/general.html

                                                                                              [2] https://en.wikipedia.org/wiki/Office_Open_XML

                                                                                          • globular-toast

                                                                                            today at 12:00 PM

                                                                                            Does this mean it runs on Linux or runs on Windows. I can never tell with this MS "subsystem" naming.

                                                                                            • raverbashing

                                                                                              today at 10:57 AM

                                                                                              That's cool

                                                                                              I mean it's like trying to balance a cybetruck into 4 skateboards and flunging it over a hill cool