Egy fejlesztőnek sikerült Linuxot futtatnia az 1993-ban megjelent Atari Jaguar játékkonzolon. A gépen a Linux 7.2-rc1 NOMMU változata és egy BusyBoxra épülő minimális felhasználói környezet fut, amelyet közvetlenül a kazetta ROM-jából tölt be a rendszer.

Az Atari Jaguar 1993 novemberében jelent meg Észak-Amerikában, melyet a gyártó akkoriban sokat vitatott „64 bites” konzolként reklámozott. A gép egy Motorola 68000 processzort, mindössze 2 MB RAM-ot és két egyedi lapkát kapott. A Tom nevű chip a grafikai feladatokat kezeli, míg a Jerry többek között digitális jelfeldolgozást, időzítőket és soros kommunikációs funkciókat biztosít.
Joel Bueno fejlesztő részletes beszámolója szerint az egyik legnagyobb akadályt a memóriakezelő egység hiánya jelentette. A Motorola 68000 nem rendelkezik MMU-val, ezért a virtuális memóriára épülő hagyományos Linux-környezet nem használható rajta. A kernel azonban továbbra is támogatja az MMU nélküli m68k rendszereket az uClinux és a NOMMU konfiguráción keresztül, egyszerű, lapozás nélküli memóriamodellt alkalmazva.
A kernel teljes egészében nem fért volna el a rendelkezésre álló memóriában, ezért a port az XIP, vagyis execute-in-place megoldást használja. A kernel csak olvasható részei, köztük a programkódot tartalmazó .text és az állandó adatokat tároló .rodata szakaszok a kazetta ROM-jában maradnak. A módosítható .data és .bss területek ezzel szemben a RAM-ba kerülnek. A kernel a ROM és a memória címének ismeretében maga végzi el a szükséges áthelyezéseket.
A Jaguar nem rendelkezik a Linux által megszokott időzítővel sem. Ezt a Jerry hangfeldolgozó lapka időzítőivel pótolták, amelyek megszakításokat generálnak a kernel ütemezője számára. A korai rendszerüzenetek megjelenítéséhez egy egyszerű soros konzolmeghajtó készült, amely a Jerry TXD és RXD érintkezőit használja. Később a Tom grafikus lapkához is készült egy kezdetleges konzolmeghajtó, így a rendszer valódi hardveren is tesztelhetővé vált.
A felhasználói környezetet Buildroot és BusyBox segítségével állították össze. Az MMU hiánya miatt hagyományos ELF programok helyett FLAT formátumú binárisokat használnak. Még a BusyBox szokásos indítási folyamata is túl sok memóriát igényelt, ezért az init szkript közvetlenül a /bin/busybox sh parancsot futtatja. A C könyvtárat szintén le kellett karcsúsítani.
A rendszeren nincs U-Boot vagy más teljes értékű rendszerbetöltő. Az előkészített rendszerkép futtatásakor a vezérlés közvetlenül a kazetta memóriába leképezett címén található kernelhez kerül. Valódi konzolon a binárisnak tartalmaznia kell a Jaguar kazettafejlécét is, az egyes részeket pedig előre meghatározott ROM-címeken kell elhelyezni. A végeredmény egy rendkívül egyszerű parancsértelmező, amely gyakorlati felhasználásra aligha alkalmas. A projekt ugyanakkor jól szemlélteti, hogy a Linux megfelelő módosításokkal MMU nélküli processzoron, 2 MB RAM-mal és közvetlenül kazetta-ROM-ból is működésre bírható.
További technikai érdekességek és részletek a fejlesztő blogbejegyzésében olvashatók.
