Linux Atari: нові можливості на консолі Jaguar
Linux на консолі Atari Jaguar: нові можливості старого пристрою
Linux тепер працює на ігровій консолі Atari Jaguar 1993 року. Так, це одна з історій про Linux “тому що можемо”. Розробник Джоел Буено поділився детальним описом, як ядро Linux 7.2.0-rc1 працює на Atari Jaguar, використовуючи маленький BusyBox-орієнтований користувацький простір.
Історія Atari Jaguar
Atari Jaguar з’явився у Північній Америці в листопаді 1993 року і рекламувався за своїми суперечливими “64-бітними” можливостями. Усередині у нього процесор Motorola 68000, 2 МБ оперативної пам’яті, картридж ROM на адресі 0x80000 та два спеціалізовані чіпи, звані Том і Джеррі. Том обробляє графіку, тоді як Джеррі виконує завдання DSP, такі як таймери та серійні порти.

Виклики при використанні Linux на Atari Jaguar
За словами розробника, найбільша проблема полягала в тому, що Motorola 68000 не має блоку керування пам’яттю. Звичайна установка Linux з віртуальною пам’яттю не працювала. На щастя, Linux підтримує системи m68k без MMU, використовуючи опцію uClinux/NOMMU і плоску модель пам’яті.
Додати ядро на пристрій було ще однією проблемою. З лише 2 МБ оперативної пам’яті, завантажити все в пам’ять не було можливим. Відповіддю стало використання XIP (виконання на місці), яке зберігає тільки для читання частини ядра, такі як код і константи, на картриджі ROM, в той час як записувані частини завантажуються в пам’ять.
Це розділяє ядро на дві області пам’яті. Розділи, такі як .text та .rodata, залишаються на картриджі, в той час як .data та .bss поміщаються в оперативну пам’ять. Linux може управляти необхідною релокацією, як тільки дізнається, де знаходяться RAM і ROM.
Додаткові рішення для роботи з Linux
Jaguar також не має типового таймера, який зазвичай очікує Linux на звичайному комп’ютері. Для вирішення цього питання порт використовує таймери Джеррі DSP, призначені для звукових завдань. Ці таймери тепер генерують переривання, необхідні Linux для свого планувальника.
Для раннього виводу ядра розробник написав невеликий драйвер консолі, який використовує TXD і RXD пінів Джеррі DSP для друку повідомлень завантаження. Пізніше був доданий простий драйвер консолі для Тома, щоб налаштування можна було тестувати на реальному обладнанні.
Коли ядро дісталося до користувацького простору, знову виникла проблема з пам’яттю. Налаштування використовує Buildroot і BusyBox з FLAT бінарниками замість ELF через середовище NOMMU. Навіть тоді звичний набір програми BusyBox був занадто важким, тому сценарій ініціалізації просто запускає /bin/busybox sh безпосередньо.
Також тоді довелося звузити бібліотеку C. При цьому немає U-Boot або повноцінного загрузчика. Налаштування залишається дуже простим: після підготовки образу управління переходить безпосередньо до ядра, стрибаючи до адреси, відведеної під картридж. На реальному обладнанні фінальний бінарний файл також має включати заголовок картриджа Jaguar і фіксовані зсуви ROM.
Результат для користувача
Отже, що насправді отримує кінцевий користувач? Просто… консоль. Дуже маленька консоль. Але цього достатньо, щоб показати, що Linux може завантажитися навіть на такому пристрої, як Atari Jaguar, з лише 2 МБ оперативної пам’яті, без MMU, картриджем ROM, мінімальним користувацьким простором BusyBox і безліччю специфічних для платформи виправлень.
Звісно, для більшості людей це нічого не змінює. Ніхто не збирається перетворювати Atari Jaguar на корисний комп’ютер на базі Linux. Але як спосіб продемонструвати, наскільки гнучким є Linux, і як далеко можуть просунутися розробники зі старим апаратним забезпеченням, це велике досягнення в ретро-обчисленнях.
Більше деталей, включаючи примітки щодо конфігурації та модифіковану версію Linux, можна знайти на офіційному сайті проекту.




