HackiOS запустил iOS 16.5 на Android-смартфоне POCO X5 Pro

Исследовательский проект HackiOS (авторы указаны как OOSEX GANG) выложил на GitHub код, который загружает открытое ядро Apple XNU (версия xnu-8796.121.2, ядро iOS 16.5) на «железе» Android-телефона. Поверх ядра запускается неизменённое пользовательское окружение iOS 16.5: цепочка launchd, backboardd, SpringBoard и приложения. Для этого авторы написали собственный EFI-загрузчик, собственные замены закрытых драйверов Apple, порт UEFI и Wi-Fi-драйвер из Linux на слое совместимости.
Запуск работает в двух местах. Первое, POCO X5 Pro 5G (кодовое имя redwood, Snapdragon 778G). На телефон ничего не прошивается: UEFI стартует командой fastboot boot, вся система живёт в оперативной памяти, а после перезагрузки телефон снова оказывается в Android. Нужен телефон с разблокированным загрузчиком, а также adb и fastboot. Второе место, эмулятор QEMU (virt, aarch64) на любом Linux-компьютере, телефон не нужен.
Авторы подчёркивают, что это исследовательский стенд, а не прошивка (ROM): сеанс длится заданное число секунд, затем ядро возвращается в загрузчик и передаёт ему свой журнал. Для QEMU команда common/run.sh qemu-virt запускает 20-минутный сеанс в окне эмулятора, экран блокировки появляется через 2-3 минуты, а после появления SpringBoard нужно подождать ещё 30-40 секунд, пока система регистрирует приложения. Для телефона команда common/run.sh redwood 900 загружает загрузчик и образ системы в память и даёт 15-минутный сеанс; образ объёмом 2,5 ГБ закачивается в оперативную память примерно за 80 секунд, один раз за сеанс загрузчика. На хосте требуются Linux x86-64, около 12 ГБ свободного диска и 4 ГБ свободной памяти; нужен 7-Zip версии 23 или новее, потому что он читает APFS.
Файлов Apple в репозиториях нет. Скрипт ios165/fetch.sh скачивает прошивку iOS 16.5 (IPSW, 7,4 ГБ, 5-15 минут) с CDN самой Apple на машину пользователя и извлекает нужное. Программы iOS, фреймворки и общий кэш dyld не меняются ни на байт: чего им не хватает, подставляют замены драйверов в ядре или библиотека, которую ядро внедряет через DYLD_INSERT_LIBRARIES. Собственная микропрограммная часть телефона (GPU, Wi-Fi, звук, вибромотор) в репозиторий не входит: её нужно снять командой adb pull с того же телефона, на котором будет идти запуск. В готовом релизе приложен образ hackios-redwood-boot.img с UEFI и загрузчиком, без файлов Apple.
В описании архитектуры ядро XNU собрано на базе конфигурации BCM2837 с собственной платформой: прерывания GICv3, таймер, видеоконсоль, APFS (образы в памяти), заглушки AMFI и Sandbox, замены драйверов IOSurface, IOMobileFramebuffer и AppleKeyStore, сетевой стек, ввод с тачскрина Goodix GT9916 (на телефоне) или virtio-input (в QEMU), графика Adreno 642L, Wi-Fi WCN6750 (ath11k через LinuxKPI) и звук. Репозиторий распространяется по лицензии Apple Public Source License 2.0, поскольку изменения XNU, производная работа от него. Проект заявляет, что он не связан с Apple и не одобрен ею. Авторы перечислены как @oodze (основатель), @netusd, @wannqn и @hxfuxyyXD.
Ключевые факты
- HackiOS от OOSEX GANG загружает открытое ядро XNU (xnu-8796.121.2, ядро iOS 16.5) на «железе» Android-телефона и запускает поверх него неизменённое окружение iOS 16.5: launchd, backboardd, SpringBoard и приложения.
- Работает на POCO X5 Pro 5G (Snapdragon 778G) через fastboot boot без прошивки, система живёт в оперативной памяти, после перезагрузки телефон возвращается в Android, а также в QEMU на Linux.
- Проект называет себя исследовательским стендом, а не ROM: сеанс длится заданное время (15 минут на телефоне, 20 минут в QEMU в примерах), после чего ядро возвращается в загрузчик.
- Файлов Apple в репозиториях нет: образ системы собирается на машине пользователя из IPSW, который скрипт скачивает с CDN Apple (7,4 ГБ); микропрограммы телефона снимаются с него самого через adb.
- Код под лицензией APSL 2.0; авторы заявляют, что проект не связан с Apple и не одобрен ею.
Почему это важно
Обычно iOS работает только на оборудовании Apple. Здесь открытое ядро XNU из iOS 16.5 загружено на чужое железо, Android-смартфон с чипом Snapdragon 778G, и на нём стартует настоящее пользовательское окружение iOS вплоть до SpringBoard и приложений. По описанию авторов, на телефоне задействованы тачскрин, графический процессор Adreno, Wi-Fi и звук. Это демонстрация того, насколько далеко можно зайти, написав собственные замены закрытым драйверам Apple. Авторы называют проект независимым исследовательским и не связанным с Apple.
Кому это важно
Исследователям низкоуровневых систем, разработчикам ядер и драйверов, энтузиастам портирования и тем, кто изучает устройство iOS и XNU. Для обычного пользователя это не способ «поставить iOS на Android»: авторы прямо называют проект исследовательским стендом, а не прошивкой.
Как это применить
Самый простой путь, запуск в QEMU на Linux x86-64: нужны около 12 ГБ диска, 4 ГБ памяти и 7-Zip версии 23 или новее. Последовательность: common/setup.sh, ios165/fetch.sh (скачивание 7,4 ГБ), common/build.sh qemu-virt, common/run.sh qemu-virt. Для запуска на телефоне нужен POCO X5 Pro 5G с разблокированным загрузчиком, adb и fastboot, а также микропрограммы, снятые с этого же телефона. Другие модели в источнике как поддерживаемые не заявлены; упомянуты скрипт common/new-device.sh и руководство docs/PORTING.md для портирования. Код распространяется по лицензии APSL 2.0.
Можно ли доверять
Первоисточник, README самого проекта, то есть описание сделано его авторами; независимых проверок, замеров производительности и отзывов Apple в источнике нет. В README приложены фотографии с экрана телефона. Заявление «неизменённого» окружения касается программ, фреймворков и общего кэша dyld; недостающее подставляют замены драйверов и внедряемая библиотека. Сроки первого успешного запуска не указаны.
Риски и подводные камни
Это стенд с ограниченным по времени сеансом, а не пригодная для повседневной работы система; о стабильности и скорости в источнике ничего не сказано. Для запуска на телефоне требуется разблокированный загрузчик. Образ системы собирается из прошивки Apple, скачанной с её CDN, поэтому вопросы лицензионных условий Apple остаются на пользователе. Авторы сами оговаривают, что проект не связан с Apple и не одобрен ею, а замены драйверов и заглушки AMFI и Sandbox означают, что механизмы защиты iOS в этой конфигурации работают не так, как на настоящем iPhone.
«Это исследовательский стенд, а не ROM: сеанс длится заданное число секунд, затем ядро возвращается в загрузчик и передаёт свой журнал.»
— README проекта HackiOS (OOSEX GANG)