Entwickler cakehonolulu portierte Linux auf die Spielkonsole Atari Jaguar aus dem Jahr 1993. Auf der Konsole gelang es, den Linux-Kernel 7.2.0-rc1+ und eine minimale Benutzerumgebung auf Basis von BusyBox zu laden, wobei es sich nicht nur um einen Emulator handelt, sondern um den Betrieb auf echter Hardware über ein Cartridge.
Die Aufgabe war aufgrund der Architektur des Jaguars nicht trivial. Die Konsole hat nur 2 MB RAM, bis zu 6 MB ROM auf dem Cartridge und einen Hauptprozessor Motorola 68000 ohne MMU. Für solche Hardware eignet sich das übliche Verfahren zum Laden von Linux nicht, daher verwendete der Entwickler den NOMMU-Modus für m68k/uClinux und ein flaches Speichermodell..
Um den Kernel in die Einschränkungen der Konsole zu bringen, wurde er zwischen Speicher und Cartridge aufgeteilt: Unveränderliche Abschnitte wie .text und .rodata werden direkt aus dem ROM nach dem XIP-Schema ausgeführt, während die veränderlichen .data und .bss im RAM platziert werden. Für die frühe Ausgabe von Nachrichten wurde der DSP-Chip Jerry verwendet, der serielle TXD/RXD-Leitungen und Timer hat, und später fügte der Entwickler einen einfachen Konsolentreiber für den Chip Tom hinzu, damit die Ausgabe auch auf der echten Konsole funktionierte. Diese Details sind im Abschnitt dokumentiert, was für Linux erforderlich ist, um auf dem Jaguar zu starten..
Die Benutzerumgebung musste maximal reduziert werden. Aufgrund des Fehlens einer MMU wurden keine ELF-Dateien, sondern FLAT-Binärdateien verwendet; BusyBox wird direkt als Shell gestartet, ohne die Standardinstallation von Applet-Link-Referenzen, da dies zu einem Speichermangel führte. Außerdem war eine Konfiguration von uClibc über Buildroot erforderlich, einschließlich einer einfacheren Speicherzuweisungsstrategie malloc-simple; weitere Details sind im Abschnitt Userspace.
Der praktische Nutzen eines solchen Ports ist nahezu null: Der Atari Jaguar wird nicht zu einem benutzerfreundlichen Linux-Computer. Das Experiment zeigt jedoch gut, wie weit die Unterstützung für alte Hardware in Linux ausgezogen werden kann und wie robust die Architektur m68k bleibt. Der Quellcode des modifizierten Kernels wurde im Repository veröffentlicht cakehonolulu/linux_jag.
Quelle: linux.org.ru
