现在你可以在Windows 95上运行WSL了,如果你够疯狂的话

一位自称"计算机修补匠"的黑客Hailey开发了Windows 9x Linux子系统(WSL9x),将其称为"史上最伟大的黑客作品之一"。该系统由三部分组成:经过补丁修改的Linux 6.19内核、VxD虚拟设备驱动程序以及WSL客户端。由于Windows 9x架构限制,系统调用通过通用保护错误处理程序实现。值得注意的是,运行时Linux内核与Windows内核共享最高CPU权限,可能导致安全隐患和系统不稳定。

Windows的Linux子系统(WSL)是一款极具价值的工具,但此前若想在Windows 9x系统上运行它,几乎是天方夜谭——直到现在。

一位自称"电脑折腾者和黑客"的女士Hailey,在周三的Mastodon帖子中展示了她所说的"我有史以来最厉害的黑客作品之一":适用于Windows 9x的Linux子系统,简称WSL9x。

根据Hailey在Codeberg上传的项目说明,WSL9x能够在Windows 9x环境中协同运行6.19版本的Linux内核,让用户可以像在现代Windows系统中使用WSL实例一样与其交互。当然,图形界面是别想了——如果你铁了心要在Windows 95上跑Linux,就得老老实实用终端命令行。

人们很自然地会问:为什么要这样做?我们尝试联系Hailey了解她发起这个冷门项目的原因,但截至发稿前未收到回复。好在Hailey在Codeberg上详细说明了实现方法。

根据WSL9x的项目说明文档,该系统由三个核心组件构成:一个经过修改、调用Windows 9x API而非POSIX接口的Linux内核;一个VxD(虚拟设备)驱动程序;以及WSL客户端本身。

其中,VxD驱动承担了大量繁重工作,负责初始化WSL9x,并处理需要转发给内核的用户空间事件(如缺页故障和系统调用)。由于Win9x架构存在先天限制,这一处理方式颇为独特。

Hailey解释道:"系统调用通过通用保护故障处理程序来处理,因为Win9x的中断描述符表长度不足以为int 0x80安装合适的处理程序。"——int 0x80正是Linux在i386架构上的系统调用中断号。

WSL9x中的通用保护故障(GPF)处理程序会持续监控出错指令,一旦检测到int 0x80,就会"推进指令指针,模拟中断成功,并将其作为系统调用分发给Linux内核",Hailey补充道。

至于客户端本身,Hailey将其描述为一个简单的16位DOS程序,其存在的唯一目的是将DOS提示符以TTY形式传递给Linux内核,而非构建一个完整的自定义客户端。

不过有一点需要注意:根据Hailey在Hacker News讨论帖中的说明,WSL9x运行时,Linux内核与Windows内核拥有相同的ring 0 CPU权限。这不仅意味着可能存在安全隐患,系统稳定性也可能受到影响。

"两者本应协同工作,但任何一方崩溃都会导致另一方一同崩溃,"Hailey在帖子中表示。

如果你实在无法(或由于某些服务器机房里仍在运行的老旧但不可或缺的应用而无法)告别那台还在用的Windows 95、98或ME老机器,又需要在上面运行Linux内核,Hailey已在其Codeberg项目页面上提供了详细的操作指南。

Q&A

Q1:WSL9x是什么?它能实现什么功能?

A:WSL9x是由黑客Hailey开发的一个项目,全称为"Windows 9x的Linux子系统"。它能够在Windows 95、98或ME等老旧系统上协同运行6.19版本的Linux内核,让用户像在现代Windows系统中使用WSL一样与Linux进行交互。不过,WSL9x不支持图形界面,用户只能通过终端命令行进行操作。

Q2:WSL9x的系统调用是如何处理的?

A:由于Windows 9x的中断描述符表长度不足,无法为Linux的int 0x80系统调用中断安装标准处理程序,WSL9x改用通用保护故障(GPF)处理程序来监控出错指令。一旦检测到int 0x80指令,就推进指令指针模拟中断成功,并将其作为系统调用分发给Linux内核,从而绕过了Win9x架构的限制。

Q3:在Windows 95上运行WSL9x有什么风险?

A:主要风险有两点:一是安全性问题,WSL9x运行时Linux内核会获得与Windows内核相同的ring 0 CPU最高权限,存在潜在安全隐患;二是稳定性问题,Linux内核与Windows内核需要协同运行,任何一方崩溃都会导致整个系统同时崩溃,系统稳定性无法得到保障。

来源:The Register

0赞

好文章,需要你的鼓励

2026

04/23

16:10

分享

点赞

邮件订阅