一个叫 hailey 的程序员干了件什么事呢?
他在 Windows 95/98 上,跑起来了完整的现代 Linux 内核。
不是虚拟机,不是模拟器。是两个操作系统共享同一个 CPU,同一块内存,在 Ring 0(内核级别)并肩运行。
更离谱的是——这玩意儿不需要硬件虚拟化,连 486 处理器都能跑。
一个"诅咒般"的伟大 Hack
先感受下社区画风。
"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"
翻译成人话:这不是一个正义宇宙该存在的东西,但我爱死它了。
还有人说,这是"通往地狱之门"级别的项目。
wsl9x——Windows 9x Subsystem for Linux。名字起得像是微软该干的事,但实际上是个独立开发者的周末(或者说六年)项目。
hailey 本人说:"这可能是我做过的最伟大的 hack 之一。"
老实讲,我找不到任何反驳的理由。
6年,就为了干一件"不可能"的事
这个项目不是突击两周写完的。
hailey 说,他从 6 年前就开始"在脑子里转这个想法",直到最近才真正实现。
为什么需要这么久?
因为 Windows 9x 的架构和现代 Windows 完全不同。
微软的 NT 内核(从 NT 3.1 到 XP,再到现在的 Windows 11)从 1993 年设计之初就带了一个 POSIX 子系统。什么叫多操作系统人格?NT 内核生来就是要伺候不同系统的,Linux、OS/2、Xenix,它都能接。
但 Windows 9x 是 DOS 的亲儿子。完全是另一个血统。
想在 Win9x 上跑 Linux,等于要把两个完全不同的内核硬塞进同一个 CPU 里,还要让它们不打架。
这事儿 CoLinux 早年干过,但它针对的是 NT 内核的 Windows XP。Win9x?没人碰过。
hailey 的做法是——调用 Windows 9x 的 VMM(虚拟内存管理器)内部服务,比如 VMMCreateThread 和内存上下文相关的函数。这些函数文档里写着"内部使用,不要调用"。
他无视了警告。
结果就是:Linux 内核和 Windows 9x 内核像两个默契的同事,在同一台机器上各干各的活。
那些年的"在 Windows 里跑 Linux"
在 WSL 出现之前,极客们是怎么在 Windows 上跑 Linux 的?
Cygwin:最"正确"的做法。它不模拟 Linux,而是提供一套 POSIX 兼容的库,让 Linux 程序编译后在 Windows 上跑。代价是——你得重新编译。
CoLinux:把 Linux 内核作为一个 Windows 进程运行,不需要硬件虚拟化。但它依赖 32 位架构,64 位版本胎死腹中。
flinux:架构上最接近现代 WSL1 的方案,同样没有硬件虚拟化,同样因为架构限制没能活到 64 位时代。
而 wsl9x 呢?它继承了 CoLinux 的"不需要虚拟化"思路,但针对 Win9x 做了完全重写。
一个 1995 年的操作系统,运行着一个 2024 年的内核。
两个时代的代码,在同一块内存里共存。
社区的狂欢与沉思
这个项目让人快乐的地方在于——它太"纯粹"了。
没有融资、没有发布会、没有"重新定义操作系统"的 PPT。
只有一个程序员,六年时间,以及对技术极限的好奇心。
有网友说得好:
同一天,热搜上是"AI 生成的应用泛滥成灾"。另一边,有人花了六年理解 Win9x 的内部原理,只为了让现代 Linux 内核在 25 年前的系统上跑起来。
这大概就是技术世界最迷人的两种力量:一种靠堆算力,另一种靠钻牛角尖。
还有人说,这项目是"旧电脑的续命良药"。
确实。一台跑不动现代 Windows 的老机器,装个 Win9x + wsl9x,立刻能跑最新的 Linux 程序。
某种意义上,这比微软的 WSL 还"现代"——它不需要虚拟化,不需要 WSL2 那套虚拟机开销,直接就是原生运行。
所以,这玩意儿能跑什么?
有人问:能跑 Winamp 吗?
这问题问得很有灵魂,毕竟 Winamp 是 Win9x 时代的标配。
但说实话,wsl9x 的意义不在于跑老应用。
它的意义在于——你可以在 Windows 95 的窗口边上,开一个 Linux 终端,跑任何现代的 Linux 程序。
两个系统共用文件系统,共用内存,甚至可能未来还能共用网络。
有网友已经开始畅想:在 Win9x 上跑 Wayland compositor,会是什么史上最"诅咒"的桌面?
还有人想得更远:把 Linux 桌面跑在 Windows 95 里面,再在 Linux 里面跑 Wine 运行 Windows 程序。
四层嵌套。
地狱绘图。
我爱死这个社区了。
尾声
hailey 最后留了一句话:
"终于在 486 支持被 Linux 移除之前,把这个搞出来了。"
某种意义上,这是一个时代的谢幕演出。
Windows 9x 死了二十多年了。但因为有人愿意花六年去理解它的内核,它又活过来了。
这大概就是编程这种活动最浪漫的地方:
代码不会死。
只要有人还记得怎么写。
【锐评】:跟那些"AI 辅助开发"的垃圾相比,这才是真正的技术炫耀——用六年时间,在一个被遗忘的系统里,跑出一个不可能的奇迹。
参考链接:
https://social.hails.org/@hailey/116446826733136456