Разработчик cakehonolulu портировал Linux на игровата конзола Atari Jaguar от 1993 година. На конзолата е успяно заредено ядрото Linux 7.2.0-rc1+ и минимално потребителско обкръжение на базата на BusyBox, като става въпрос не само за емулятор, но и за стартиране на реален хардуер чрез картридж.
Задачата беше нетривиална заради архитектурата на Jaguar. Конзолата разполага само с 2 MB RAM, до 6 MB ROM на картриджа и основен процесор Motorola 68000 без MMU. За такъв хардуер стандартната схема за зареждане на Linux не е подходяща, затова разработчикът използва NOMMU режим за m68k/uClinux и плоска модел на паметта.
За да се впише ядрото в ограниченията на конзолата, то беше разделено между паметта и картриджа: неизменяемите секции като .text и .rodata се изпълняват директно от ROM по схемата XIP, а изменяемите .data и .bss се разполагат в RAM. За ранно извеждане на съобщения е използван DSP чип Jerry, който има последователни линии TXD/RXD и таймери, а по-късно разработчикът добавя прост конзолен драйвер за чипа Tom, за да заработи извеждането и на реалната конзола. Тези подробности са описани в секцията за какво е необходимо на Linux за зареждане на Jaguar.
Потребителското обкръжение беше максимално съкратено. Поради липсата на MMU се използват не ELF файлове, а FLAT бинарници; BusyBox стартира директно като shell, без стандартна инсталация на набора от applet линкове, тъй като това водеше до недостатък на паметта. Също така беше нужна настройка на uClibc чрез Buildroot, включваща по-проста стратегия за разпределение на паметта malloc-simple; повече информация е разгледана в раздела Userspace.
Практическата полза от такъв порт почти липсва: Atari Jaguar не се превръща в удобен Linux компютър. Но експериментът добре показва колко далеч може да се простира поддръжката на старо оборудване в Linux и колко устойчива остава архитектурата m68k. Изходният код на модифицираното ядро е публикуван в репозитория cakehonolulu/linux_jag.
Източник: linux.org.ru
