查看: 1|回复: 0

有人用代码伪造了一台电脑,还骗过了100多个操作系统?

[复制链接]

18

主题

1

回帖

66

积分

注册会员

积分
66
发表于 3 小时前 | 显示全部楼层 |阅读模式



有人用代码伪造了一台电脑,还骗过了100多个操作系统?

[size=0.26]
差评XPIN
2026-04-04 00:06·浙江·知否计划特邀作者·《差评》官方网易号







你有没有想过,浏览器的上限在哪?
二十多年前,浏览器能看个网页小游戏就不错了。后来它能放视频、能听歌、能写文档,现在它能剪视频、能画设计稿、能跑 3A 游戏的云串流。
但这些,还有人觉得不够。。。
有一个叫 copy 的开发者,把 100 多个操作系统塞进了浏览器。
从 1985 年的 Windows 1.01 到 Windows 2000,从 Linux、FreeBSD 到 Android,再到 Haiku、KolibriOS、SerenityOS 这些你可能听都没听过的,100 多个操作系统排在页面上,像一部浓缩的计算机编年史,任你挑选体验。

这还不是重点。
重点是,这些系统不是模拟还原出来的,是真正运行在网页里的原版。。。
是不是没太明白啥意思,别急,马上就知道了。
这个项目叫 v86,网址 copy.sh/v86,免费开源,在 GitHub 上有 2 万多人星标,从 2012 年开始更新一直维护到现在。
世超刷到时也很震惊,就决定去里面试试,挑了一个 Windows 98,毕竟这是咱们这代人小时候摸过的东西。
点进去没几秒,桌面出来了。
说实话,哥们刻在 DNA 里的操作还是没忘,下意识的“开始”-“程序”-“游戏”,启动扫雷。。。
画面真的和小时候一模一样,世超也和小时候一模一样,懒得算,全凭运气瞎点,三下就炸了。



眼尖的小伙伴应该看到上方动图里有一只羊,会跳到任务栏、窗口上跑来跑去,这玩意叫 sheep.exe,一个桌面宠物软件。
启动后,就会有一只白色小羊在屏幕上跑来跑去,要是用鼠标把它拎了起来,它还会挣扎几下。



后来我又体验了纸牌接龙,画图,说实话都很原汁原味。
但到这,世超还是有点将信将疑:
这真是一个完整的操作系统在跑?会不会只是把几个经典程序用网页重写了一遍,套了层 Windows 98 的皮?
于是我开始挨个验证。
点开控制面板,里面有几十个设置项。Add/Remove Programs、Display、Network、Modems、ODBC Data Sources,世超挨个点了一圈,全都能打开。。。

你就说 Desktop Themes 的选项,点进去挑了个主题切换,壁纸变了,图标变了,窗口颜色全变了。

甚至点开 IE,进入百度,还 TM 能上网。
虽然因为兼容问题加载得磕磕绊绊,很多字符无法显示,但页面还是出来了。



控制面板能用,主题能换,浏览器能联网,到这三板斧下来,世超算是服了——
总没人会为了一个怀旧网页,做一整套能换主题、还能联网、还有控制面板的皮肤吧?
所以基本可以确定,网页里跑的就是一台 Windows 98 本尊。
但这样的系统本尊,在这个网页里还塞了 100 多个。
比如你能看到 Windows 1.01,桌面极其简陋,只有窗口没有图标,隔着屏幕都能闻到那股古早味。
该说不说,那会审美还挺好,这配色还真挺好看。

你也能体验到 Windows 2000,这个夹在 98 和 XP 之间、很多人压根没用过一两年的系统,桌面上还预装了一堆 Blender、Winamp 之类的老软件。

甚至你还能玩到一个预装了 DOOM、毁灭公爵、模拟城市等经典游戏的 DOS 系统。
输入几行命令,1993 年的地狱大门就在浏览器里打开了。



这还没完。。。
v86 上面还能体验到 Android-x86,信息、拨号、联系人、浏览器全都有,侧滑还能打开程序列表。
你可能会纳闷,安卓不是手机系统吗,怎么也在这?
因为 Android-x86 是一个社区项目,专门把安卓移植到了 x86 架构上。既然安卓都自己跑到 x86 的地盘上来了,v86 顺手就能把它跑起来了。。。

现在,世超脑子里就剩一个问题:
这开发者到底是怎么做的?网页里凭啥能体验到这么多系统?
后来看到 GitHub 上的项目说明,我大概明白了。
开发者 copy 居然用代码造了一台虚拟的 PC???
从 CPU、显卡、声卡、网卡都是 copy 用代码伪装的,那些 Windows 系统压根不知道自己跑在网页里,以为是台真机器呢。。。
但想骗过操作系统,其实不简单。
系统们在启动时,会疯狂试探硬件:读中断控制器的状态、查定时器的频率、往显卡寄存器里写值看反应。任何一个硬件的行为跟真机不一致,系统就会报错或者直接黑屏。

所以 copy 需要用代码伪造一整套硬件的物理行为,精确到每个寄存器、每个时序、每个边界条件。
要知道光模拟一个 x86 CPU 工作量就已经爆炸。
Intel 自己的官方手册,讲指令集这一卷就有两千多页。copy 干的事,是把这两千多页手册里的每一条规则,翻译成 JavaScript 和 Rust 代码,Windows 用的每一条都不能漏,漏了系统就崩。
CPU 只是这台虚拟电脑十几个硬件之一,你再想想其他的呢?
我只能说想想就头皮发麻了。

光有虚拟硬件还不够。操作系统跑的是 x86 机器码,浏览器能执行的是 WebAssembly,这俩语言完全不通,要跑起来得翻译一下。
但翻译也需要时间,所以 V86 采用了 JIT 编译(即时编译)。
程序刚开始跑的时候,v86 逐条指令翻译,翻一句执行一句,这样速度很慢,“电脑”很卡。
但同时,v86 在后台偷偷记录哪些代码被反复执行。一旦发现某段代码被调用的次数超过阈值,就把它整段翻译成 WebAssembly 的编译版本存起来。下次再碰到,直接跑编译好的版本,就快得多。
项目嘛大概就是这样,世超只能说太牛了。。。
大家感兴趣的可以自行访问,倒是世超好奇:这哥们为什么要做这个项目?
在进行了一点简单搜索之后,我发现这个人很低调,没有公开社交媒体和博客,只知道叫 Fabian Hemmer。

世超顺着他的项目列表往下看,越看越觉得有意思:这哥们很喜欢小的东西。
比如他做过只有 652 字节的俄罗斯方块,456 字节的贪吃蛇,159 字节画出来的 Ulam 螺旋。他还用 K 语言连续做了六年 Advent of Code 编程挑战(K 是一种极端精简的数组编程语言,常见于金融量化领域)。
所以这哥们干的事,翻来覆去就一个主题:把东西往最小的空间里塞,把一个事情做到极限。
可能有人会问,在浏览器里跑 Windows 98 ,搞这些花里胡哨能有啥用?
但 Fabian 还真把这个执念变成了工作。他创建了一家叫 Droplet Computing 的公司,卖的就是让桌面应用直接跑在浏览器里,底层用的还是 WebAssembly,和 v86 一脉相承。
别人是在电脑上装软件,这哥们是用软件搭了一台电脑,再往这台电脑上装软件,最后还把这事做成了生意。
或许极客就是这样,写代码不一定是为了解决问题,有时就是想看看这条路能走多远。
走着走着,路就真走出来了。
撰文:刺猬
编辑:莽山烙铁头 面线
美编:焕妍
图片、资料来源
copy.sh/v86




您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注公众号

相关侵权、举报、投诉及建议等,请发 E-mail:admin@discuz.vip

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.|青ICP备2025004122号-1

在本版发帖
关注公众号
返回顶部