Most már Linux is fut az Atari 1993-as Jaguar játékkonzolján – tipikus „csak mert meg tudjuk csinálni” történet. A fejlesztő, Joel Bueno részletes leírást tett közzé arról, hogyan fut a Linux kernel 7.2.0-rc1 az Atari Jaguaron, egy kisméretű, BusyBox-alapú userspace-szel.
Rövid időutazás: az Atari Jaguar 1993 novemberében jelent meg Észak-Amerikában, és a sokat debett „64 bites” teljesítménnyel reklámozták. Belül egy Motorola 68000 CPU dolgozik, 2 MB RAM-mal, 0x80000 címen elérhető cartridge ROM-mal, valamint két egyedi chippel, Tommal és Jerryvel. Tom a grafikus feladatokat viszi, Jerry pedig a DSP-feladatokat, például az időzítőket és a soros lábakat.
A fejlesztő szerint a legnagyobb kihívást az jelentette, hogy a Motorola 68000-ben nincs Memory Management Unit. Egy szokásos, virtuális memóriát használó Linux kernel így nem jöhetett szóba. Szerencsére a Linux még mindig támogat MMU nélküli m68k rendszereket a uClinux/NOMMU opcióval és egy lapos memóriamodell segítségével.
A kernel bepréselése is komoly gond volt. Mindössze 2 MB RAM mellett nem lehetett mindent memóriába tölteni. A megoldás az XIP (execute-in-place) használata lett: a kernel csak olvasható részei, például a kód és a konstansok a cartridge ROM-on maradnak, míg az írható részek a RAM-ba kerülnek.
Gyakorlatban ez két külön memóriaterületre osztja a kernel-t. A .text és .rodata szekciók a cartridge-en maradnak, a .data és .bss pedig RAM-ba kerül. A Linux elvégzi a szükséges relokációt, amint tudja, hol található a RAM és a ROM.
A Jaguarból hiányzik az a fajta időzítő is, amit a Linux egy hagyományos számítógéptől elvár. Ezt úgy oldották meg, hogy a port a Jerry DSP időzítőit használja, amelyeket eredetileg hangfeladatokra terveztek. Ezek az időzítők most azokat a megszakításokat generálják, amelyekre a Linux ütemezőjének szüksége van.
A korai kernel kimenethez a fejlesztő egy kis konzol drivert írt, amely a Jerry DSP TXD és RXD lábait használja a bootüzenetek kiírására. Később egy egyszerű konzol driver is készült Tomhoz, hogy a rendszert valódi hardveren is lehessen tesztelni.
Amikor a kernel már eljutott odáig, hogy userspace-t keressen, újra előkerült a memória-probléma. A rendszer Buildrootot és BusyBoxot használ, FLAT binárisokkal ELF helyett, a NOMMU környezet miatt. Még így is túl nehéz lett volna a szokásos BusyBox applet-felállás, ezért az init script egyszerűen közvetlenül a /bin/busybox sh-t indítja el.
A C könyvtárat is le kellett csupaszítani. Emellett nincs U-Boot vagy teljes értékű bootloader sem. A felépítés szándékosan nagyon egyszerű: a kép elkészítése után a vezérlés közvetlenül a kernel-hoz kerül, a cartridge-hez rendelt címre ugrással. Valódi hardveren a végső binárisnak tartalmaznia kell a Jaguar cartridge fejlécét és a fix ROM offseteket is.
Mit kap ebből a végfelhasználó? Tulajdonképpen csak… egy shellt. Egy nagyon kicsit. De ez is elég ahhoz, hogy megmutassa: a Linux még egy olyan eszközön is képes elindulni, mint az Atari Jaguar, mindössze 2 MB RAM-mal, MMU nélkül, cartridge ROM-ról, minimális BusyBox userspace-szel és rengeteg platformspecifikus javítással.
A legtöbb ember számára ez persze semmit nem változtat. Senki nem fog Atari Jaguart hasznos Linux géppé alakítani. Viszont remekül példázza, mennyire rugalmas a Linux, és meddig tudják a fejlesztők eltolni a régi hardverek határait – igazi retro-számítástechnikai bravúr.
További részletek, köztük a konfigurációs jegyzetek és a módosított Linux fa, elérhetők Bueno eredeti leírásában.

