Po portování Linux Sega MegaDrive nyní umí spustit jádro. Linux s balíkem nástrojů Busybox na herní konzoli Atari Jaguar, vydaném v roce 1993. Konzole byla vybavena procesorem Motorola 68000, 2 MB RAM a pro trvalé ukládání mohla používat kazety s kapacitou až 6 MB. Zařízení bylo vybaveno dvěma koprocesory: Tom (32bitový RISC GPU, 64bitový videoprocesor a 64bitový logický procesor) a Jerry (32bitový RISC DSP pro zvuk).
Podobné portu Sega MegaDrive pro spouštění jádra Linux Na procesoru Motorola 68000, kterému chybí hardwarová jednotka pro správu paměti (MMU), bylo standardní jádro 7.2.0-rc1 zkompilováno v režimu „NOMMU“ používaném pro mikrokontroléry, který umožňuje model s plochou pamětí a lineárním adresním prostorem. (Dříve byly vývojové prvky pro práci bez MMU vyvinuty ve forku jádra uClinux, ale později byly přijaty do hlavního jádra jako možnost „NOMMU“.) Problém s nedostatkem RAM byl řešen odlišně, a to použitím mechanismu execute-in-place (XIP), který umožňuje přímé spouštění kódu jádra z ROM bez jeho kopírování do RAM.
Paměť RAM v zařízení se odráží na adrese 0x000000 a paměť ROM (kazeta) se nachází na adrese 0x80000, respektive komponenty jádra. Linux Tabulky vektorů přerušení byly rozděleny do dvou samostatných paměťových oblastí: sekce .rodata a .text, obsahující konstanty a kód, byly umístěny na cartridge, zatímco sekce .data a .bss, obsahující proměnná data, byly umístěny v RAM. Protože CPU 68000 hledá tabulku vektorů přerušení na adrese 0x0 a jádro se ve skutečnosti nachází na cartridge, jejíž obsah se odráží na adrese 0x80000, byl použit další hack pro zkopírování vektorů přerušení do RAM.
Chybějící časovač v procesoru Motorola 68000 byl vyřešen využitím časovačů používaných v DSP pro syntézu zvuku. Tyto časovače byly použity ke generování přerušení pro aktivaci plánovače úloh. Pro zobrazení zpráv jádra během bootování byl napsán samostatný ovladač konzole, který simuloval paralelní port přes piny TXD a RXD, řízený procesorem DSP.
Pro sestavení komponent uživatelského prostoru byla použita sada nástrojů Buildroot s opravami z projektu. LinuxMD. Pro úsporu paměti během inicializace byl přímo vyvolán příkazový shell „/bin/busybox sh“, funkce malloc v knihovně uClibc byla nahrazena zjednodušenou verzí malloc-simple, která neukládá další metadata, a místo plnohodnotného bootloaderu jako U-Boot bylo řízení přeneseno přímo na jádro pomocí příkazu „jmp $80000“.

Zdroj: opennet.ru
