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内核需要协同运行,任何一方崩溃都会导致整个系统同时崩溃,系统稳定性无法得到保障。
好文章,需要你的鼓励
今天讲的出海案例是生产微型扬声器、受话器和音响产品的豪声电子,其计划投资2500万泰铢的泰国音响类电声工厂已经进入初步投产阶段。
马萨诸塞大学从数学角度证明,MaxSim评分策略在理论能力上超越传统单向量内积方法,并提出Signed MaxSim扩展,显著改善否定查询性能。
新加坡国立大学与英伟达联合提出Flex-Forcing框架,通过时间帧和去噪步骤两个维度的灵活分块,将双向扩散和自回归视频生成统一到单一模型中,实现质量与效率的自由权衡。