Документация написана на английском.

Установка рядом с Android

HakiOS на POCO X5 Pro (redwood) второй системой: Android остаётся на месте, а при каждом включении меню спрашивает, что запускать. Эта страница для того, кто устанавливает. Как это устроено внутри и как каждый шаг был впервые сделан и проверен — в U-Boot.

Запуск U-Boot от HakiOS в boot_a; загрузчик и ядро он берёт из памяти
Система раздел darwin, 20 ГиБ в конце LUN 0
Ваши данные HFS Plus с журналом, около 12 ГБ, сохраняются между запусками
Android слот b, без изменений

Перед началом

Нужны разблокированный загрузчик, компьютер с fastboot и adb и кабель USB. Образы системы берутся из вашей копии прошивки: в репозиториях их нет.

Установка стирает данные Android. darwin вырезается из конца userdata, затем нужен fastboot -w. Сохраните всё нужное, а копию разделов из шага 1 держите вне телефона.

Установка

  1. Резервная копия разделов. Из Android с root: загрузочные разделы обоих слотов, vbmeta*, persist, modemst1/2, первые и последние блоки каждого LUN. Без этой копии испорченную таблицу разделов не вернуть.

    python3 tools/backup-partitions.py --yes
    
  2. Раздел darwin. userdata укорачивается, в конце LUN 0 создаётся darwin на 20 ГиБ, затем данные Android стираются.

    python3 tools/userdata-carve.py --wipe backups 20
    fastboot -w
    
  3. Системный том. Системный том и два криптекса из вашей прошивки записываются в начало darwin. Windows-версия fastboot не справляется с образом на 8 ГБ, поэтому он режется на части, которые прошиваются по очереди.

    python3 tools/sparse-split.py darwin.img pieces
    fastboot flash darwin pieces/piece-00.simg     # и так каждую часть
    
  4. Том для данных. Пустой том HFS Plus в оставшейся части darwin. Образ весит около 50 КБ и не трогает системный том. Повторная прошивка стирает данные.

    python3 tools/mkdatavol.py data.simg
    fastboot flash darwin data.simg
    
  5. Загрузочный образ. U-Boot, загрузчик и ядро — в boot_a, слот a становится активным: при следующем включении появится меню.

    fastboot flash boot_a hakios-install.img
    fastboot set_active a
    fastboot reboot
    

Меню

Меню ждёт 10 секунд. Если ничего не выбрать, запускается Android: под HakiOS телефон не заряжается, и после самопроизвольной перезагрузки ему лучше оказаться в Android. Кнопки громкости — выбор, кнопка питания — подтверждение.

Пункт Что делает
Android (по умолчанию) помечает слот a неготовым и перезагружает; ABL делает активным слот Android
HakiOS (Darwin) запускает систему из памяти
HakiOS over fastboot ждёт новое ядро с компьютера (для разработки)
Fastboot загрузчик телефона
What is in memory что загружено и какой слот активен
U-Boot shell командная строка U-Boot
Reset перезагрузка

После выбора Android активен слот b, и телефон сразу загружается в Android. Чтобы меню вернулось: fastboot set_active a или, в Android с root, служба hakios-menu.sh (devices/redwood/u-boot/android/), которая делает это после каждой загрузки.

Ваши данные

/private/var — это том HFS Plus в darwin, сразу за системой: около 12 ГБ, сохраняется между запусками, восстанавливается по журналу после внезапного отключения. Если он не смонтировался, система запустится на томе в памяти: он пуст при каждом включении, и в настройках видно около 1 ГБ.

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

Что работает

Часть Состояние
Экран, касания, интерфейс работает рисует Adreno 642L через OpenGL ES
Том данных работает HFS Plus, около 12 ГБ, сохраняется
Wi-Fi частично включается с wifi=1
Графические эффекты частично рендереру не хватает части функций для некоторых эффектов
Звук, вибрация выключено при запуске через U-Boot роняют телефон
Сотовая связь нет модем запускается, но им пока ничто не пользуется
Зарядка нет заряжайте в Android

Если что-то пошло не так

Чёрный экран или зависание. Зажмите громкость вниз и питание, пока не появится fastboot. Оттуда в Android: fastboot set_active b, затем fastboot reboot.

«Device Error» при любой загрузке. ABL нашёл, что атрибуты слотов не совпадают с типами разделов. Не прошивайте таблицу разделов с другого телефона: верните свою из шага 1, затем fastboot set_active на рабочий слот. Всё восстановление по шагам — в U-Boot.

Что произошло. Загрузчик пишет журнал каждого запуска в раздел logdump; на компьютере его забирает ./xl log.

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