一台1993年卖崩了的游戏主机,今天跑起了Linux。更有意思的是,它能往外吐字,却收不到你敲的任何一个键。
这不是段子。开发者cakehonolulu把m68k架构的Linux移植到了Atari Jaguar上,内核已经能启动到shell,但串口的接收方向没实现——你能在终端上看它打印开机日志,却没法回车执行一条命令。这台机器,严格意义上现在是个只会说、不会听的Linux盒子。
为什么一台"64位失败品"能装下Linux
Jaguar当年主打"64位"概念,实际内部是68000主控加两颗定制芯片(Tom和Jerry)拼出来的怪异架构,商业上一败涂地,后续的CD外设卖得更惨。
但Linux内核到今天仍然保留着对整条68000家族的架构支持,68000、68010、68030、68040全在arch/m68k/目录里躺着。真正让移植可行的,是uClinux——最初是给无MMU、平坦内存模型设备准备的下游分支,后来并入了主线。Jaguar没有内存管理单元,靠的正是这条路子。
把内核塞进2MB,靠拆分和改造
Jaguar只有2MB内存,卡带ROM最多6MB。开发者的解法是把内核的只读部分(.text、.rodata)直接放进ROM执行(XIP),动态部分(.data、.bss)才占用RAM。启动打印和计时也全靠白嫖硬件:用Jerry芯片的TXD/RXD引脚手写了一个bitbang串口驱动做earlyprintk,又征用了Jerry内置的定时器充当系统的PIT。
- 风险.2MB是硬上限,任何超出最小shell的野心(比如有人开玩笑想上X Window)在这台机器上几乎没有操作空间。
博客写到一半,Reddit补上了结局
原文本身在一个细节上戛然而止:Ubuntu仓库自带的m68k-linux-交叉编译器会生成非对齐内存访问,而68000本身不支持处理这种访问,直接导致内核崩溃。作者换成自编译的m68k-elf-工具链绕过了这个坑,但文章正文没有交代最终跑通的完整过程就结束了。
社区那边给出了下文。开发者在Reddit的公告帖里确认,内核确实已经启动到了shell,可交互只能靠USB转TTL适配器直接接到Jerry芯片的TXD/RXD引脚上,而且串口接收方向还没写——也就是说,你现在能看Jaguar打印一切,但打不进去任何一个字符。有评论建议改用Jaguar自带的后置串口接口来通信,而不是直接飞线焊在芯片引脚上,算是给下一步留了个方向。
顺带一提,页面元数据标注的发布时间是7月6日,但检索到的部分记录显示这篇博客最早流传于7月5日,相差一天,不影响事实本身,如实标注一下。
我更在意的是这道天花板
廉颇老矣,尚能饭否——这台32年前的失败品,答案是能饭,但只吃了半碗。它证明了Linux对老架构的可移植性到今天依然扎实,uClinux这条给无MMU设备留的后路,并没有被主线砍掉,反而在32年后的失败硬件上派上用场。这本身是内核维护者长期坚持"边缘架构不下车"的一次意外回报。
但我不太买账的是把这类工程直接讲成"Jaguar能用Linux了"。能启动到shell,和能被当成一台可交互的机器使用,中间隔着一整个串口接收方向的空白,隔着2MB内存这道死墙。复古移植圈子里常见的陷阱就是把"跑起来"等同于"能用",这次的案例恰好是个清楚的反例:声音出来了,耳朵还没装上。
- 结论.这类工程的价值不在实用,而在给内核的可移植性做一次极限压力测试——2MB内存能不能塞下一个能跑的Linux,答案已经有了,但离"能用"还差输入这一步。
真正值得后续盯的,是那个尚未补全的串口接收功能会不会被实现,以及有人是不是愿意改用主机自带的后置串口接口,把这台"能说不能听"的Jaguar,变成一台真正能敲命令的机器。
