Top
Best
New

Posted by sohkamyung 2 hours ago

Windows 9x Subsystem for Linux(social.hails.org)
273 points | 64 comments
rahen 2 hours ago|
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 2 hours ago||
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 2 hours ago|||
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 39 minutes ago||
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 10 minutes ago||
Huh? Signals have worked fine for a long time under Cygwin.
pjmlp 2 hours ago|||
Meanwhile those that complained about Java, now ship a whole browser with their "native" application, and then complain about Google taking over the Web.
red_admiral 1 hour ago|||
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 1 hour ago||
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 43 minutes ago||
autotools felt old even in 90's
barrkel 2 hours ago|||
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.

pmontra 33 minutes ago|||
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.
radiator 1 hour ago|||
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.
ethin 57 minutes ago|||
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 1 hour ago|||
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

pjmlp 2 hours ago|||
Nope, the best way was VMWare Workstation, followed by Virtual Box.
firesteelrain 46 minutes ago|||
I thought WSL2 is functionally a virtual machine with deep host integration. That’s why you need HyperV.
NeutralWanted 27 minutes ago||
Sort of. Technically speaking, just enabling hyper-v turns your base windows install into a VM. Wsl2 then just runs along side
EvanAnderson 57 minutes ago||
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 2 hours ago||
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 40 minutes ago|
Colinux was a tech feat, just not that many people noticed.
ChrisRR 1 hour ago||
By microsoft's naming scheme this should be Linux Subsystem for Windows
GranPC 37 minutes ago||
No? WSL is Linux on Windows — so W9xSL is Linux on Windows 9x. I think… :)
nonethewiser 45 minutes ago||
Yeah this has never made sense...
foldr 24 seconds ago||
Incredible that current Linux kernels still have 486 support!
AshamedCaptain 2 hours ago||
I guess easier than https://github.com/haileys/doslinux
haileys 2 hours ago|
Well it did take me 6 years to follow that up!
gblargg 22 minutes ago||
> Proudly written with zero AI.

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

pwdisswordfishq 1 hour ago||
> "no hardware virtualisation"

> looks inside

> virtual 8086 mode

fouc 2 hours ago||
Modern linux kernel running cooperatively inside the Windows 9x kernel, sick!
itvision 11 minutes ago||
Is this Win4Lin resurrected?
Borg3 51 minutes ago|
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...
More comments...