Linux 在 Atari Jaguar 上:将现代内核移植到 64 位游戏机硬件

Linux 在 Atari Jaguar 上:将现代内核移植到 64 位游戏机硬件

Atari Jaguar 是一款 1993 年推出的游戏机,宣传为 64 位强力机,现在已经支持现代 Linux 内核。通过利用 uClinux 实现无 MMU 操作,并实现执行就地 (XIP) 来管理有限的 RAM,系统可以启动到一个可用的 Busybox shell。

使用 XIP 和 uClinux 克服内存限制

将 Linux 移植到 Atari Jaguar 的主要挑战是只有 2 MB RAM 的严峻内存限制。为了让内核能够容纳进来,项目使用了 uClinux——一种为没有内存管理单元 (MMU) 的处理器设计的 Linux 变体。这使系统能够使用平坦内存模型而不是虚拟内存。

为了进一步优化 RAM 使用,内核被拆分为两个内存区域,采用执行就地 (XIP):

  • ROM(卡带): 存放只读段,如 .rodata.text
  • RAM: 存放动态段,如 .data.bss

通过告诉 Linux 内核 RAM 与 ROM 的边界位置,内核会自动处理重定位,防止在启动过程中出现内存不足 (OOM) 崩溃。

硬件启动:UART、定时器和向量处理

启动内核需要两个基本组件:输出方式和系统定时器。

通过 Jerry IC 的串行输出

Jaguar 的 "Jerry" IC(DSP)拥有 TXD 和 RXD 引脚。开发者编写了一个小型控制台驱动,通过位操作这些引脚,实现了类似 UART 的串行输出,以捕获 earlyprintk 信息,这对调试启动过程至关重要。

系统定时器与调度器

Jerry IC 还提供了两个定时器。其中一个被重新用于充当可编程间隔定时器 (PIT),让 Linux 内核校准延迟循环、设置调度器并管理系统时钟。这需要覆盖对 Motorola 68000 CPU 的板级初始化。

向量重定位

由于 ROM 映射在 0x80000 而不是 0x0,Motorola 68000 CPU 在复位时会尝试跳转到向量基址寄存器 (VBR) 0x0。为防止系统崩溃,开发者实现了将中断向量 memcpy 到 RAM 基址的操作。

工具链挑战与编译器修复

标准交叉编译器常常与基础的 Motorola 68000 不兼容。项目遇到了两个重要的工具链障碍:

  1. 未对齐内存访问: Ubuntu 软件源中的 m68k-linux- 交叉编译器会生成未对齐的内存访问指令,而基础的 68000 无法处理,导致立即崩溃。通过使用专门为 m68k-elf- 构建的源码编译器解决了此问题。
  2. 平坦二进制文件: 由于系统没有 MMU,标准 ELF 文件不可用。项目使用 buildroot(具体为 linuxmd 项目在 2026 年 5 月的补丁)生成 FLAT 二进制文件。

实现用户空间与根文件系统

为了获得可用的 shell,项目将一个 cpio 打包的根文件系统直接嵌入到 vmlinux 镜像中。

Busybox 与内存优化

选择 Busybox 作为用户空间环境是因为它支持 nommu 目标。然而,即使使用 Busybox,内存仍然非常紧张。为防止在执行 init 时出现 OOM 惊慌,做了以下优化:

  • 简化 Init:init 脚本简化为仅调用 /bin/busybox sh 的 shebang,以避免 --install 命令带来的内存开销。
  • uClibc malloc 策略: 通过 buildroot 的 menuconfig 将 uClibc 库的 malloc 策略改为 malloc-simple。这可以防止更复杂分配策略的元数据占用剩余 RAM。

硬件部署

在真实硬件上部署时,vmlinux 二进制必须在相对于 0x80000 的固定偏移处编译,以适配 Jaguar 卡带头部。这需要在 CONFIG_ROM_STARTCONFIG_ROM_LENGTHCONFIG_ROMVECCONFIG_ROMSTART 中添加 8 KB 的偏移。

此外,还实现了一个简单的 "Tom" IC(GPU/位块器)控制台驱动,使内核能够直接在实际硬件的屏幕上输出文本。

社区见解

爱好者之间的讨论突显了 Motorola 68000 架构的历史意义,它曾驱动从原始 Macintosh 到 Sega Genesis 的各种设备。一位贡献者指出,Linux 源码树中仍保留对 68k 的支持,主要是因为它在打印机、汽车和 PDA 等领域的广泛历史部署。

社区的其他技术建议包括:

  • RAM 扩展: 可以制作自定义卡带,以在 8 MB 地址空间中增加额外的 RAM。
  • GPU/DSP 利用: 完全利用 Jaguar 的 GPU 与 DSP 将使项目超越 "被美化的 Atari ST" 的体验。

Sources