Po prenosu Linux na Sega MegaDrive je bila realizirana možnost zagona jedra Linux z nizom orodij Busybox na igralni konzoli Atari Jaguar, izdani leta 1993. Konzola je bila opremljena s CPU Motorola 68000, imela je 2 MB RAM in je za trajno shranjevanje lahko uporabljala kartridže s kapaciteto do 6 MB. Naprava je bila opremljena z dvema koprocesorjema: Tom (GPU z 32-bitno RISC arhitekturo + 64-bitni procesor za obdelavo videa + 64-bitni procesor za izvajanje logičnih operacij) in Jerry (DSP z 32-bitno RISC arhitekturo za obdelavo zvoka).
Na podoben način kot pri prenosu za Sega MegaDrive za izvajanje jedra Linux na CPU Motorola 68000, ki nima strojne enote za upravljanje pomnilnika (MMU), je bilo standardno jedro 7.2.0-rc1 sestavljeno v načinu 'NOMMU', ki omogoča uporabo ravnega modela pomnilnika z linearnim naslovnim prostorom (prej so bile rešitve za delovanje brez MMU razvite v vtičnici jedra uClinux, vendar so bile nato vključene v glavno jedro v obliki možnosti 'NOMMU'). Težava s pomanjkanjem operativne pomnilnika je bila rešena drugače, z uporabo mehanizma execute-in-place (XIP), ki omogoča neposredno izvajanje kode jedra iz ROM-a brez kopiranja v operativno pomnilnik.
RAM naprave je bil predstavljen na naslovu 0x000000, medtem ko je ROM (kartridž) bil na naslovu 0x80000, zato so bile komponente jedra Linux razdeljene na dve ločeni območji pomnilnika: sekcije .rodata in .text s konstantami in kodo nameščenimi na kartridžu, medtem ko so bile sekcije .data in .bss z spremenljivimi podatki v operativni pomnilnik. Ker CPU 68000 išče tabelo vektorskih prekinitev na naslovu 0x0, dejansko pa je jedro nameščeno na kartridžu, katerega vsebina je predstavljena na naslovu 0x80000, je bil dodatno uporabljen trik s kopiranjem vektorskih prekinitev v RAM.
Težavo z odsotnostjo časovnika v CPU Motorola 68000 je bilo mogoče rešiti s pomočjo časovnikov, ki se uporabljajo v DSP za sintezo zvoka. Ti časovniki so bili uporabljeni za generiranje prekinitev za aktivacijo naloge načrtovalnika. Za izhod sporočil jedra med nalaganjem je bil napisan ločen gonilnik za konzolo, ki je izvajal izhod s simulacijo paralelnega porta preko izhodov TXD in RXD, ki jih upravlja DSP procesor.
Za izgradnjo komponent uporabniškega prostora se je uporabil orodjar Buildroot s popravki iz projekta LinuxMD. Za varčevanje s spominom je bila pri inicializaciji neposredno klicana ukazna lupina "/bin/busybox sh", funkcija malloc v knjižnici uClibc pa je bila zamenjana z poenostavljeno različico malloc-simple, ki ne shranjuje dodatnih metapodatkov, namesto polnega nalagalnika, kot je U-Boot, pa se je izvajal neposredni prenos nadzora jedru z ukazom "jmp $80000".

Izvor: opennet.ru
