一张模糊的终端截图出现在Cakehonolulu的博客上时,评论区的第一反应大多是“这不可能”。截图里,经典的Linux启动日志一行行滚过,屏幕下方却是1993年发布的雅达利Jaguar游戏机的标志。那台曾经被市场判了死刑的机器,居然真的在运行一个现代操作系统内核。

故事始于一个被几乎所有开发者忽略的角落。Cakehonolulu在整理旧硬件时翻出了一台雅达利Jaguar,这台游戏机在当年因为难以开发和缺乏第三方软件而迅速失败,但它的心脏——一颗摩托罗拉68000处理器——引起了他的注意。多数人认为这种早已停产数十年的芯片早已和现代软件世界绝缘,他却随手查了一下Linux内核的源代码树。在arch/m68k/目录下,他看到了令自己困惑的东西:里面整齐地保留着68040、68030、68010,甚至还有最原始的68000处理器的架构代码

打开网易新闻 查看精彩图片

这个目录的存在本身就在挑战直觉。Linux内核以激进淘汰旧硬件事著称,比如i386芯片在2023年的Linux 7.1版中被移除时,很多人才第一次意识到内核对它的支持竟然持续了几十年。然而摩托罗拉68000系列却完整地留了下来,从1980年代开始就一条条指令周期地活在主线内核里。Cakehonolulu发现,即便被划入“遗产”类别,这些代码仍是可编译、可运行的,这让他产生了一个很古怪的念头:能不能把这台游戏机变成一个Linux主机?

要实现这个念头,首先要理解68000这颗芯片的古怪之处。它是一颗CISC处理器,内部寄存器宽度是32位的,但外部数据总线只有16位,每次内存读写只能搬运2个字节。这种混合位宽设计让它既不能像纯32位芯片那样高效,也没法享受16位系统的简洁,加上雅达利Jaguar整个主板上搭配的只是2MB容量的内存和一块1990年代初水准的显示芯片,要想把压缩后的Linux内核和根文件系统塞进去,本身就是一场和硬件的拉锯战。

Cakehonolulu的博客记录了这场拉锯的全过程。他需要绕过Jaguar原本只为游戏设计的硬件限制,用串口作为控制台输出,重新裁剪内核配置,剔除所有不必要的驱动,把内核体积压到极致。即便这样,启动仍然需要大量手工调试,那种在几十秒的黑屏后忽然看到命令行提示符出现的瞬间,被他自己描述为“一种对耐心和技术理解的奖赏”。最终跑起来的系统几乎什么都做不了,没有网络,没有图形界面,只有一个孤零零的根文件系统,但每个看到那张截图的人都能感受到那种将不可能变为可能的冲击力。

为什么Linux内核要费心保留这样一套看似永远也用不上的代码?从项目维护的角度看,68000架构不是孤例。内核社区一直有一条不成文的规矩:只要有人愿意维护,代码就不会被抹除。m68k分支的维护者们大多对老式计算机有个人感情,他们定期在新版内核上编译和测试这些架构,哪怕实际用户可能只有十几个人。Cakehonolulu的这一折腾,恰好在公众视野里坐实了这种“感情维护”的实用价值——它让一台被商业世界遗忘的机器,在问世三十年后获得了一种全然不同的生命轨迹。

这种生命轨迹不只是怀旧玩具那么简单。当Hackaday报道了这件事之后,越来越多的复古计算爱好者开始重新审视自己车库里那些落灰的游戏机。项目代码和详细说明已经全部公布在GitHub上,任何拥有雅达利Jaguar或者同系列硬件的人都可以对照着把Linux灌进去,虽然整个过程用Cakehonolulu自己的话来说“绝不优雅,而且每一步都可能在不知名的地方失败”。但这恰恰是旧硬件开发的迷人之处:你面对的不是抽象层和文档完备的接口,而是一页页数据手册和反复的试错。

保留旧驱动程序的意义也在这次实验里得到了最生动的注脚。如果内核在某个版本里删除了m68k代码,Cakehonolulu面对的将是一片空白,重新从头为68000写适配层的工作量足以劝退最狂热的极客。而现在,他能直接站在几十年累积的代码基底上,把精力集中在解决游戏机特有的硬件初始化细节上。这种层层传递的知识堆叠,正是开源世界抵抗遗忘的方式——即便那个被记住的硬件曾经在市场上惨败,它的数字灵魂依然可以在一串串命令行里重生。

如果你碰巧在阁楼上发现了一台雅达利Jaguar,想亲手重现这个过程,Cakehonolulu在GitHub仓库里准备了一份详尽的指令清单。需要提醒的是,这趟旅程极度依赖手工调整,你需要自己搭建交叉编译环境,弄懂设备树配置,还要面对无数在普通PC上从不出现的神秘硬件错误。但当你终于通过串口看到那条熟悉的Linux欢迎信息出现在1993年的硬件上时,困扰许多人的那个问题——“为什么要保留旧代码?”——会在瞬间得到一个不需要用语言回答的答案。