2012年,德国程序员Fabian Hemmer在GitHub上更新了一个叫v86的项目,他没做宣传也没开博客,连社交账号都没有用,但这个项目慢慢被很多人发现,它能让浏览器直接运行Windows 98、DOS、FreeBSD和Android-x86这些系统,你打开copy.sh/v86这个网址,点一下启动按钮,几秒后就能看到蓝色桌面、开始菜单和扫雷游戏,这些都是原版系统,不是截图也不是动画。
![]()
这听起来有点魔幻,因为浏览器本身不能直接运行x86程序,现代电脑的CPU指令集和浏览器支持的WebAssembly完全不同,v86的做法是用JavaScript和Rust写一套虚拟硬件,它模拟了CPU、显卡、声卡、网卡、中断控制器这些部件,连寄存器怎么响应、定时器怎么跳变都照着真实硬件来,光是Intel的x86手册就有两千多页,作者得一条条看下来,有次系统启动失败,黑屏了半小时,最后发现是某个中断信号延迟差了0.003毫秒,这种细节,真不是一般人愿意死磕的。
为了让系统能运行起来,v86用了JIT即时编译的方法,第一次执行某段代码时,它一条条翻译成Wasm,速度比较慢,但如果这段代码反复使用,比如扫雷游戏里的计时器或者IE浏览器的渲染循环,它就会把代码编译成优化后的Wasm并缓存下来,这样一来,之后再打开纸牌或画图这些程序,反应就快多了,有人试过在浏览器里用IE6加载百度首页,虽然速度不快,但地址栏、状态栏和滚动条都能正常工作,这不是模拟出来的效果,而是实实在在地运行着。
![]()
Fabian平时做的事很有意思,他写过652字节的俄罗斯方块游戏,还有456字节的贪吃蛇游戏,又用159字节画出Ulam螺旋,这些代码小到能放进一条微博里,但他坚持压缩到最小程度,不是为了炫耀技巧,而是觉得够用就行,他还经常参加K语言编程挑战,K语言以简短著称,一行代码能完成十行的工作,金融领域用得比较多,他似乎不太相信功能越多越好,总是在思考最少需要什么才能让一个系统自己运行起来。
![]()
后来他创办了Droplet Computing公司,将v86技术用于商业用途,客户希望在网页里直接嵌入一个完整的桌面环境,比如远程运维工具或教育沙箱,不需要安装软件,也不需要连接服务器,点击就能使用,这种做法其实挺反常识的——人们习惯把操作系统和物理机器绑定在一起,但他偏要拆开它们,浏览器原本只是个浏览网页的窗口,现在却变成了运行整个系统的容器。
从技术上看,v86跟QEMU、VirtualBox完全不一样,那些工具得靠操作系统权限,还得用硬件加速才行,v86却只能待在浏览器沙箱里,没有任何特权,也拿不到底层支持,全靠代码硬扛着跑,更让人意外的是,连Android-x86也能在它上面启动,原因其实很简单:那个系统本来就是给x86电脑移植的版本,不是手机用的ARM架构,v86刚好搭上这趟顺风车,没做专门适配,结果它就自己启动了。
现在GitHub上的v86项目有两万多个星标,还在持续更新,2026年4月的最新一次提交修复了PCI设备枚举时的一个边界问题,项目维护者一直坚持更新,可能只是觉得那些老系统不该只存放在博物馆里,它们还能运行,还能让人亲手操作,你点开链接,拖动窗口、换张壁纸、双击Sheep.exe看小羊蹦跳,那一刻仿佛回到了九十年代的电脑面前。
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.