从俄罗斯方块到毁灭战士,现在有高中生颠覆科技:用PDF运行Linux系统
之前,有人利用PDF格式对JavaScript的支持,在本应是静态文本文档中运行了经典游戏《俄罗斯方块》。不出所料,几天后,一名高中生程序员将这一技术升级,成功在PDF中运行了《毁灭战士》(Doom)。而现在,这位开发者再次突破极限,将整个Linux操作系统成功移植到了PDF文件中。
仅仅一个月前,高中生兼程序员“Ading2210”展示了如何在PDF中运行《毁灭战士》。如今,他又成功实现了在PDF中模拟Linux系统。尽管性能有限,但这一项目重新定义了PDF JavaScript工具的可能性。用户可以使用Chromium内核的浏览器(如Chrome、Edge和Opera)尝试这一功能,源代码也已发布在他的GitHub页面上。
LinuxPDF 基于TinyEMU构建了一个RISC-V架构的模拟器,其内部工作原理与Ading2210之前的 DoomPDF 类似。例如,输入方式沿用了早期《俄罗斯方块》PDF的技巧,并复用了《毁灭战士》移植版的代码。用户可以通过点击屏幕下方的虚拟按键进行操作,但大多数用户可能更倾向于直接使用键盘控制,这通过解析文本字段中的输入实现。
虽然PDF格式最初主要用于显示文本和图像,但它也可以运行JavaScript代码。Adobe Acrobat支持完整的JavaScript规范,因此能够实现3D渲染、显示器检测和HTTP请求等功能。
在浏览器中运行的PDF则使用了更为受限的JavaScript版本,但这足以运行游戏甚至操作系统。Ading2210发现,一个旧版本的Emscripten(目标为asm.js而非WebAssembly)可以将C代码编译到PDF文件格式中运行。
然而,像 DoomPDF 一样,Linux模拟器的性能较为低下。启动内核可能需要整整一分钟的时间——比传统Linux系统慢约100倍。Ading2210表示,由于Chromium使用的V8版本不支持JIT编译器,这一问题无法修复。
默认情况下,文件系统为32位,但用户可以从源代码构建64位版本。方法是在真实的Linux系统中克隆存储库,编辑“BITS”行,并下载Emscripten 1.39.20版本。不过,运行64位版本会进一步降低性能。
对于希望在低端硬件上实现更实用Linux应用的用户,可以尝试Ading2210开发的 ChromeOS RMA Shim Bootloader 脚本集合。该脚本允许在无需修改固件的情况下,在Chromebook上运行完整的Debian发行版,同时支持企业设备。
下载地址:
https://pan.baidu.com/s/16d_bldHty9CXqtDAOzFtnQ?pwd=r6kr