Linux běží na konzoli z roku 1993 s 2 MB RAM. Vývojář zkrotil stroj, který nenáviděli i tvůrci her
Vývojář pod pseudonymem „cakehonolu“ rozběhl v červenci 2026 linxové jádro na Atari Jaguar, konzoli s 2 MB RAM bez správy paměti.
Obsah článku
Dne 5. července 2026 se na internetu objevil technický blogpost, který retro i linuxovou komunitu zvedl ze židle. Vývojář vystupující pod přezdívkou „cakehonolulu“ v něm krok za krokem popsal, jak na Atari Jaguar, konzoli uvedenou na trh 4. listopadu 1993, nabootoval linuxové jádro verze 7.2.0-rc1+ a dotáhl ho až do minimalistického příkazového řádku BusyBox. Nejde o plnohodnotný desktop ani běžnou distribuci. Jde o takzvaný uClinux, tedy variantu Linuxu pro systémy bez jednotky správy paměti (MMU), s extrémně ořezaným uživatelským prostředím a binárkami ve formátu FLAT místo klasického ELF. Systém po startu vidí pouhých 512 stránek a kalibruje se na 1,04 BogoMIPS. Víc sparťanské prostředí si lze snad těžko představit. A přesto to funguje, právě na stroji, který kdysi přiváděl k šílenství profesionální vývojáře her.
Konzole, kterou vývojáři nechtěli ani vidět
Atari Jaguar měl být zabijákem konkurence. Šel na trh dříve než první PlayStation (prosinec 1994, celkem přes 102 milionů prodaných kusů) i Nintendo 64 (32,93 milionu kusů). Jenže místo revoluce přinesl frustraci. Architektura kombinovala externí procesor Motorola 68000 se dvěma vlastními čipy: Tom (grafický subsystém s Object Processorem, Blitterem a Graphics Processorem) a Jerry (DSP, časovače, sériové rozhraní). Na papíře působivé. V praxi noční můra.
Bývalý výtvarník Atari BJ West v rozhovoru pro Arcade Attack vzpomíná na Jaguar jako na „otravný průšvih“: Atari nepovažovalo vývojářské nástroje za prioritu a třetí strany musely psát v assembleru nebo si budovat vlastní toolchain. James Hampton, další z tehdejších zasvěcených, popisuje start konzole jako nereálný plán s minimem podpůrných nástrojů. A John Edelson z britského studia Argonaut mluví o Jaguaru zpětně jako o „špatném vtipu“, stroji, který v očích firem působil jako mrtvý už při příchodu. Jaguar skončil jako komerční propadák. Konkurence nabídla silnější ekosystém, jasnější 3D budoucnost a hlavně nástroje, se kterými šlo pracovat.
Jak nacpat Linux do 2 MB
Právě na tomto nevděčném hardwaru se cakehonolulu rozhodl rozběhat moderní jádro. Motivaci shrnul jednoduše: „protože to jde“. Technicky šlo o sérii triků, z nichž každý řeší jeden konkrétní problém extrémně omezené platformy.
- ROM/RAM rozdělená jádra: Jaguar má 2 MB RAM, ale cartridge může pojmout až 6 MB ROM. Autor rozdělil jádro tak, že sekce pouze pro čtení (.text, .rodata) zůstávají přímo v ROM kazetě a do RAM se kopírují jen zapisovatelná data (.data, .bss). Tím uvolnil cenné megabajty pro běh systému.
- FLAT binárky místo ELF: Standardní linuxové spustitelné soubory ve formátu ELF jsou pro no-MMU prostředí příliš náročné. FLAT formát je jednodušší, menší a umožňuje dynamické linkování.
- Minimalistický BusyBox: Celý uživatelský prostor se smrskl na pouhé sh, bez dalších nástrojů a plnohodnotného shellu.
- uClibc s malloc-simple: Standardní alokátor paměti podle metadat zabíral příliš mnoho paměti. Přepnutí na nejjednodušší možnou variantu ušetřilo další bajty.
- Embedovaný initramfs: Místo externího souborového systému je minimální init skript zabalen přímo v jádře.
Každý z těchto kroků sám o sobě vypadá jako drobnost. Dohromady ale znamenají rozdíl mezi jádrem, které spadne na chybu Out of Memory ještě před spuštěním prvního procesu, a systémem, který doběhne až do příkazového řádku.
Specifické překážky pro Jaguar
Obecné úspory paměti ale nestačily. Jaguar přinesl vlastní sadu problémů, které na jiném retro hardwaru neexistují.
Motorola 68000 nemá MMU, což je základ celého přístupu uClinux. Jenže Jaguar navíc nemapuje ROM na adresu 0x00000, kam procesor po resetu skáče pro vektor přerušení. Autor musel vektory ručně kopírovat do RAM. Další komplikací byl cross-kompilátor, který generoval nezarovnané paměťové přístupy, což je na 68000 fatální chyba. Řešení vyžadovalo zásah do toolchainu.
Pro výstup na obrazovku při bootu napsal cakehonolulu jednoduchý konzolový ovladač pro čip Tom. Bez něj by port fungoval pouze přes sériový výstup z čipu Jerry (TXD/RXD pin napojený přes USB-to-TTL převodník), což stačí pro ladění, ale ne pro demonstrace na reálné konzoli s televizí. Časovač pro jádro poskytoval přes Jerry timer další kus kódu, který musel vzniknout od nuly.
Sám autor srovnává svůj projekt s LinuxMD, portem Linuxu na Sega Mega Drive. Hned ale dodává klíčový rozdíl: Mega Drive má k dispozici speciální cartridge mappery typu SSF2, které mohou připojit další RAM. Jaguar nic takového nemá. Co je v konzoli, to je všechno.
Technická demonstrace, ne produkt
Cakehonolulu svůj port sám označuje za technickou demonstraci „bez zvláštní hodnoty“ mimo důkaz, že to jde. Na Redditu v komunitě Atari Jaguar projekt popsal právě takto, ne jako nástroj s praktickým využitím, ale jako cvičení v low-level programování na extrémně nepřívětivém hardwaru.
Zdrojový kód je veřejně dostupný v repozitářích na GitHubu, včetně konfigurace BusyBoxu a init skriptu. Hotový předkompilovaný obraz ke stažení ale neexistuje; kdo by si chtěl port vyzkoušet, musí si ho sám sestavit. Pro emulaci jsou k dispozici nástroje jako BigPEmu nebo Virtual Jaguar. Na reálném Jaguaru je potřeba dostat binárku do formátu kazety s odpovídající hlavičkou a počítat s dalším bastlením.
Je to víc než kuriozita
Portů Linuxu na obskurní hardware existují desítky. Tento má ale jiný kontext. Jaguar nebyl jen slabý stroj, byl to stroj, který nedokázaly efektivně využít ani profesionální týmy s rozpočty a pevnými termíny. Víceprocesorová architektura bez adekvátních nástrojů, 2 MB RAM bez možnosti rozšíření a procesor bez správy paměti. Přesně ta kombinace vlastností, která z něj udělala komerční propadák, z něj dnes dělá mimořádně zajímavý cíl pro demonstraci toho, kam až sahají možnosti moderního linuxového jádra.
Boot log hlásí uClinux with CPU MC68000, systém vidí 512 stránek paměti a běží na 1,04 BogoMIPS. Je to směšně málo. A přesně proto je to tak působivé: o třiatřicet let později jeden vývojář s pseudonymem a veřejným repozitářem zkrotil stroj, na kterém si vylámaly zuby celé týmy.