Linux запустили на игровой приставке Atari Jaguar

1000px.jpg

Разработчик cakehonolulu портировал Linux на игровую приставку Atari Jaguar 1993 года. На консоли удалось загрузить ядро Linux 7.2.0-rc1+ и минимальное пользовательское окружение на базе BusyBox, причём речь идёт не только об эмуляторе, но и о запуске на реальном железе через картридж.

Задача была нетривиальной из-за архитектуры Jaguar. У приставки всего 2 МБ ОЗУ, до 6 МБ ПЗУ на картридже и основной процессор Motorola 68000 без MMU. Для такого железа обычная схема загрузки Linux не подходит, поэтому разработчик использовал NOMMU-режим для m68k/uClinux и плоскую модель памяти.

Чтобы ядро поместилось в ограничения консоли, его разделили между памятью и картриджем: неизменяемые секции вроде .text и .rodata выполняются напрямую из ROM по схеме XIP, а изменяемые .data и .bss размещаются в ОЗУ. Для раннего вывода сообщений был задействован 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