Sviluppatore cakehonolulu ha portato Linux su console di gioco Atari Jaguar del 1993. Sulla console è stato possibile caricare il kernel Linux 7.2.0-rc1+ e un ambiente utente minimo basato su BusyBox, non solo in un emulatore, ma anche su hardware reale tramite cartuccia.
Il compito non era banale a causa dell'architettura Jaguar. La console ha solo 2 MB di RAM, fino a 6 MB di ROM sulla cartuccia e un processore principale Motorola 68000 senza MMU. Per tale hardware, il consueto schema di avvio di Linux non è adatto, quindi lo sviluppatore ha utilizzato la modalità NOMMU per m68k/uClinux e un modello di memoria piatta.
Per adattare il kernel ai limiti della console, è stato suddiviso tra memoria e cartuccia: sezioni immodificabili come .text e .rodata vengono eseguite direttamente dalla ROM secondo lo schema XIP, mentre .data e .bss modificabili sono collocati in RAM. Per l'output precoce dei messaggi è stato utilizzato il chip DSP Jerry, che dispone di linee seriali TXD/RXD e timer, e in seguito lo sviluppatore ha aggiunto un semplice driver della console per il chip Tom, in modo che l'output funzionasse anche su console reale. Questi dettagli sono descritti nella sezione su cosa serve a Linux per avviarsi su Jaguar.
L'ambiente utente è stato drasticamente ridotto. Poiché non c'è MMU, non sono stati usati file ELF, ma binari FLAT; BusyBox viene eseguito direttamente come shell, senza l'installazione standard del set di collegamenti applet, poiché ciò portava a carenze di memoria. È stata necessaria anche la configurazione di uClibc tramite Buildroot, inclusa una strategia di allocazione della memoria più semplice malloc-simple; questo è approfondito nella sezione Userspace.
Praticamente, un tale porting ha quasi nessun utilizzo: l'Atari Jaguar non si trasforma in un comodo computer Linux. Tuttavia, l'esperimento dimostra bene quanto lontano si possa estendere il supporto per vecchio hardware in Linux e quanto sia resistente l'architettura m68k. I sorgenti del kernel modificato sono pubblicati nel repository cakehonolulu/linux_jag.
Fonte: linux.org.ru
