



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 (фреймворк драйверов macOS). Поскольку Wii использует фирменную систему-на-чипе Hollywood вместо шины PCI, пришлось создавать собственный драйвер
Читать на habr.com