2 часа назад
Mac OS X портировали на Nintendo Wii 2007 года


Инженер-программист Брайан Келлер объявил об успешном портировании Mac OS X 10.0 Cheetah на игровую консоль Nintendo Wii.
Он не только заставил операционную систему от Apple работать на нестандартном железе, но и создал текст доклад о проделанной работе – от проверки совместимости до написания драйверов для уникального чипсета Hollywood.
Почему это вообще возможно?
Келлер стартовал с исследования аппаратной совместимости. В Wii установлен процессор PowerPC 750CL – улучшенная версия PowerPC 750CXe, который использовался в ноутбуках Apple G3 iBook и некоторых iMac G3. “Я был уверен, что с процессором проблем не будет”, – пишет инженер.
А вот с оперативной памятью всё сложнее: Wii имеет 88 МБ ОЗУ (24 МБ 1T-SRAM + 64 МБ GDDR3), тогда как официальные требования Mac OS X Cheetah – 128 МБ. Однако Келлер выяснил, что система реально запускается и с меньшим объёмом: он протестировал Cheetah в QEMU с 64 МБ – всё работало.

Загрузчик с нуля и патчи ядра
Вместо портирования Open Firmware или BootX (штатных загрузчиков Mac) Келлер решил написать собственный загрузчик на основе примера ppcskel. Загрузчик инициализирует железо Wii, загружает ядро XNU с SD-карты, создаёт дерево устройств и передаёт управление ядру.
Первые попытки приводили к чёрному экрану. Чтобы понять, насколько далеко загружается ядро, Келлер применил хитрый трюк: патчил бинарник ядра, заменяя инструкции на код, зажигающий один из светодиодов на передней панели Wii. Так он отследил путь выполнения вплоть до C-кода.
Келлер признался, что активно использовал чат-боты для понимания кодовой базы XNU и исследования различных тем.
Драйверы IOKit: Hollywood, SD-карта, фреймбуфер и USB
Самая трудоёмкая часть – написание драйверов для IOKit (каркас драйверов macOS). Поскольку Wii использует фирменную систему-на-чипе Hollywood вместо шины PCI, пришлось создавать собственный драйвер NintendoWiiHollywood, который публикует nub’ы для дочерних устройств.
Драйвер SD-карты (NintendoWiiSDCard) реализует чтение и запись через IPC с сопроцессором Starlet (ARM). После его запуска система наконец перестала выдавать ошибку “Still waiting for root device” и смонтировала корневую файловую систему.
Отдельная история – видео. Видеовыход Wii ожидает 16-битные YUV-данные, а Mac OS X выводит RGB. Подход – два фреймбуфера: один RGB, куда пишет macOS, и второй YUV, который отображается на экран. 60 раз в секунду драйвер конвертирует информация. На скриншоте ниже – та самая схема:

Когда система загрузилась до рабочего стола, цвета были… пурпурными. Но после исправления и возврата флага isConsoleDevice всё встало на свои места.
USB-клавиатура и манипулятор
С USB возникли проблемы: AppleUSBOHCI (драйвер контроллера OHCI) требовал IOPCIDevice, которого на Wii нет. Келлер создал поддельный NintendoWiiHollywoodPCIDevice, наследующий от IOPCIDevice, и пропатчил Info.plist. Но затем выяснилось, что на Wii используется обратный little-endian, а драйвер делает программный свап байтов. Без исходников IOUSBFamily для Cheetah исправить это было почти невозможно.
Помог IRC: участник @bbraun предоставил доступ к CVS-репозиторию с полными исходниками IOUSBFamily для Mac OS X Cheetah. Келлер пересобрал драйверы, убрал лишние swap’ы – и USB-клавиатура с мышью заработали.
Теперь на Wii можно запустить не только порты Linux, NetBSD и Windows NT, но и полноценную Mac OS X Cheetah с работающей USB-клавиатурой и мышью. Исходный исходник загрузчика и драйверов доступен на GitHub.
Читают сейчас

53 минуты назад
Взломан суперкомпьютерный центр Китая: утекли AI-датасеты военных лабораторий
Хакер под псевдонимом FlamingChina объявил о взломе Национального суперкомпьютерного центра (NSCC) в Тяньцзине — одного из крупнейших вычислительных хабов Китая. Образцы похищенных данных появились ещ

1 час назад
Claude Code получил ultraplan: планирование идет в облаке, терминал свободен
Anthropic добавила в Claude Code экспериментальный режим ultraplan. В нем разработчик запускает задачу из CLI, но сам план формируется не в терминале, а в облаке — на управляемой Anthropic инфраструкт

1 час назад
Anthropic представила Claude for Word – бета дополнения уже доступна
Anthropic открыла бета-версию дополнения Claude for Word, предназначенную для офисного приложения Microsoft Word. Теперь работать с нейросетью можно прямо внутри текстового редактора, не переключаясь
3 часа назад
Специалисты НИЯУ МИФИ разработали безопасный двигатель для спутников на «сухой» воде
Специалисты Национального исследовательского ядерного университета (НИЯУ) МИФИ разработали двигатель для малых космических аппаратов. Установка работает на фторкетоне, который неформально называют сух

3 часа назад
Anthropic научили Sonnet консультироваться с Opus
Anthropic выпустили advisor tool — инструмент, который позволяет запустить Opus как советника внутри задачи, которую выполняет Sonnet или Haiku. Работает так: Sonnet ведёт задачу от начала до конца —