Efter porteringen av Linux till Sega MegaDrive infördes möjligheten att köra Linux-kÀrnan med ett set av Busybox-verktyg pÄ spelkonsolen Atari Jaguar, som slÀpptes 1993. Konsolen var utrustad med en CPU frÄn Motorola 68000, levererades med 2 MB RAM och kunde anvÀnda cartridger med en kapacitet pÄ upp till 6 MB som permanent lagring. Enheten var försedd med tvÄ koprocessorer: Tom (GPU med 32-bitars RISC-arkitektur + 64-bitars videoprocessor + 64-bitars processor för logiska operationer) och Jerry (DSP med 32-bitars RISC-arkitektur för ljudbehandling).
I likhet med porten för Sega MegaDrive för att köra Linux-kÀrnan pÄ CPU:n Motorola 68000, som saknar en hÄrdvarumenhet för minneshantering (MMU), byggdes standardkÀrnan 7.2.0-rc1 i ett lÀge för mikrocontroller som kallas "NOMMU", vilket möjliggör anvÀndning av en platt minnesmodell med linjÀrt adressutrymme (tidigare utvecklingar för att arbeta utan MMU ingick i en fork av kÀrnan uClinux, men accepterades senare i den huvudsakliga kÀrnan som alternativet "NOMMU"). Problemet med brist pÄ RAM löstes pÄ ett annat sÀtt genom att anvÀnda mekanismen execute-in-place (XIP), som gör det möjligt att köra kÀrnkoden direkt frÄn ROM utan att kopiera den till RAM.
RAM i enheten reflekteras vid adress 0x000000, och ROM (cartridgen) vid adress 0x80000, vilket gjorde att komponenterna i Linux-kÀrnan delades upp i tvÄ separata minnesomrÄden: sektionerna .rodata och .text med konstanta data och kod placerades pÄ cartridgen, medan sektionerna .data och .bss med förÀnderliga data lagrades i RAM. Eftersom CPU:n 68000 letar efter avbrottsvÀxlings tabellen pÄ adress 0x0, medan kÀrnan faktiskt placeras pÄ cartridgen, vars innehÄll reflekteras vid adress 0x80000, tillÀmpades dessutom en hack med kopiering av avbrottsvÀxlar i RAM.
Problemet med den saknade timern i CPU:n Motorola 68000 löstes genom att anvÀnda timrarna som anvÀnds i DSP:n för ljudsyntes. Dessa timrar anvÀndes för att generera avbrott för att aktivera schemalÀggaren. För att skriva ut meddelanden frÄn kÀrnan under uppstarten skapades en separat konsoldrivrutin som gör utskrifter med simulering av en seriell port via pinnarna TXD och RXD, styrda av DSP-processorn.
För att bygga anvÀndarrumskomponenterna anvÀndes Buildroot-verktyg med patchar frÄn LinuxMD-projektet. För att spara minne vid initiering anropades kommandotolk direkt med "\/bin\/busybox sh", funktionen malloc i uClibc-biblioteket ersattes med en förenklad version av malloc-simple som inte sparar ytterligare metadata, och istÀllet för en fullstÀndig bootloader som U-Boot, utfördes en direkt överföring av kontrollen till kÀrnan med kommandot "jmp $80000".

KĂ€lla: opennet.ru
