Руководство

С чего начать

hakios запускает открытое ядро Apple Darwin (XNU) на Android-смартфонах так же, как Android запускает Linux: со своим загрузчиком, своими драйверами и одной конфигурацией на устройство. Это руководство проведёт от нуля до работающего ядра, а дальше — к Metal и к вашему собственному телефону.

Что можно сделать

Вы хотите… Читайте Понадобится
увидеть загрузку сегодня, ничем не рискуя Запуск в QEMU компьютер, 30 минут
понять устройство, прежде чем что-то трогать Как всё устроено ничего
запустить на настоящем телефоне Запуск на телефоне POCO X5 Pro 5G с разблокированным загрузчиком
работать с GPU через Metal Metal телефон, а для тестов — только компьютер
перенести hakios на другой телефон Адаптация под устройство ARM64-телефон и терпение
разобраться, почему запуск не удался Если что-то пошло не так лог

Три вещи, которые важно знать сразу

  1. По умолчанию ничего не устанавливается. Телефон грузит hakios из оперативной памяти через fastboot boot. Перезагрузка возвращает Android. Записывается только лог загрузчика — несколько килобайт в раздел logdump.
  2. Открытое ядро — наше, система сверху — ваша. В наших репозиториях порт ядра, загрузчик, драйверы и инструменты. Пользовательское пространство Darwin (экран блокировки, рабочий стол, приложения) берётся из образа восстановления Apple, который приносите вы. Его нет в наших репозиториях, и ничто не скачивает его за вас.
  3. Сервисы Apple — не цель. Активация, Apple ID, iCloud и App Store не работают и не будут.

Что работает сейчас

POCO X5 Pro 5G QEMU
Экран блокировки, рабочий стол, штатные приложения да да, медленно
Тачскрин и кнопки да да
GPU (OpenGL ES через Mesa) да нет (программная отрисовка)
Wi-Fi да сеть (virtio)
Динамики, микрофон, заряд батареи да звук
Камеры, вибрация да нет
Metal начат: буферы, командные буферы, копирование на GPU начат
Сотовая связь частично: модем загружается и видит сеть нет
Bluetooth нет нет
Зарядка, пока работает hakios нет —

Полная таблица по каждому устройству строится из его собственного файла статуса: все устройства.

Слова, которые встретятся

  • XNU — ядро систем Apple, его исходники открыты. hakios использует тег xnu-8796.121.2.
  • Загрузчик (xnuloader, loader.efi) — наша UEFI-программа: кладёт в память ядро, аргументы загрузки и дерево устройств и запускает XNU.
  • UEFI — маленькая прошивка, которая запускает загрузчик. На телефоне это HakiOS UEFI (Mu-Silicium) или HakiOS U-Boot, обе стартуют из памяти.
  • xl — скрипт в основном репозитории, который управляет загрузчиком на телефоне по USB: войти, отправить образ системы, запустить, забрать лог, перезагрузить.
  • Аргументы загрузки — переключатели в командной строке ядра, например gpu=1. Ни один драйвер железа ничего не делает, пока не задан его аргумент.
  • .config — один файл, который говорит, какие драйверы встроить в ядро и какие аргументы получит запуск. Его пишет make redwood_defconfig.
  • Репозиторий устройства — всё об одном телефоне (конфигурация, статус, скрипт прошивок, платформа UEFI) в отдельном репозитории, например hakios-sm7325.

Где спросить

В Telegram-канале проекта есть ветка с ИИ для вопросов, и команда её читает: t.me/oosexgangdevs. Прикладывайте logs/last.log и пишите, какую команду запускали.

Исходник этой страницы