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 minimale basato su BusyBox, e si tratta non solo di un emulatore, ma anche dell'esecuzione 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 un tale hardware, il normale 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 far stare il kernel nei limiti della console, è stato suddiviso tra memoria e cartuccia: le sezioni immutabili come .text e .rodata vengono eseguite direttamente dalla ROM secondo lo schema XIP, mentre le sezioni modificabili .data e .bss sono collocate nella RAM. Per un'uscita precoce dei messaggi è stato utilizzato il chip DSP Jerry, che ha linee seriali TXD/RXD e timer, e in seguito lo sviluppatore ha aggiunto un semplice driver per la console del chip Tom, affinché l'uscita funzionasse anche sulla console reale. Questi dettagli sono descritti nella sezione su cosa è necessario a Linux per avviarsi sulla Jaguar.
L'ambiente utente è stato ridotto al massimo. A causa dell'assenza di MMU, non vengono utilizzati file ELF, ma binari FLAT; BusyBox viene avviato direttamente come shell, senza l'installazione standard del set di collegamenti applet, poiché ciò portava a una carenza di memoria. È stata anche necessaria la configurazione di uClibc tramite Buildroot, inclusa una strategia di allocazione della memoria più semplice malloc-simple; ulteriori dettagli sono forniti nella sezione Userspace.
Un tale porto ha quasi poca utilità pratica: l'Atari Jaguar non si trasforma in un comodo computer Linux. Tuttavia, l'esperimento dimostra bene fino a che punto si può estendere il supporto per l'hardware obsoleto in Linux e quanto viva sia l'architettura m68k. I sorgenti del kernel modificato sono stati pubblicati nel repository cakehonolulu/linux_jag.
Fonte: linux.org.ru
