Руководство

Запуск на телефоне

Эталонный телефон — POCO X5 Pro 5G (кодовое имя redwood, Snapdragon 778G). hakios грузится на нём из оперативной памяти: ничего не прошивается, а перезагрузка возвращает Android. Для другого телефона смотрите Адаптация под устройство.

Прежде чем начать. Нужен разблокированный загрузчик, а разблокировка обычно стирает телефон. Пока работает hakios, батарея не заряжается, поэтому начинайте с зарядом выше 50%. Не отключайте USB-кабель всю сессию.

Что нужно

  • POCO X5 Pro 5G с разблокированным загрузчиком, рабочим Android и включённой отладкой по USB
  • adb и fastboot (platform-tools от Google) на компьютере
  • Основной репозиторий, собранный как в Запуск в QEMU: make doctor проходит
  • Образы системы из вашего собственного образа восстановления: userland/system.apfs (см. пользовательское пространство Darwin)
  • Загрузчик с вашей идентичностью: make loader, один раз
  • Собственные прошивки телефона для GPU, Wi-Fi, звука, вибрации, модема и камер, снятые с самого телефона (шаг 2). hakios их никогда не распространяет.

Короткий путь: одна команда

tools/hakios-device.py sync          # репозиторий устройства и UEFI — в devices/ и uefi/
devices/redwood/pull-firmware.sh     # Android запущен, adb подключён: прошивки телефона -> fw-*/
make redwood_defconfig               # конфигурация телефона: общая + SC7280 + redwood
make config                          # проверка; называет любую проблему и причину
make phone SECS=600                  # 10-минутная сессия в памяти, лог в logs/

make phone переводит телефон из Android в наш загрузчик, отправляет образ системы, запускает ядро с аргументами из вашего .config, забирает лог и оставляет телефон в загрузчике для следующего запуска. Чтобы после сессии вернуться в Android, добавьте XL_END=android:

XL_END=android make phone SECS=600

То же самое по шагам через xl

xl — скрипт, который стоит за make phone. Вызывайте его напрямую, чтобы видеть каждый этап.

./xl enter                          # Android -> fastboot -> наш загрузчик, в памяти
./xl ramdisk userland/system.apfs   # образ системы в память телефона (около 80 с), один раз за сессию загрузчика
XL_SECS=600 XL_CMDLINE="$(tools/hakios-config.py args)" ./xl run    # сессия; лог — в logs/
./xl reboot                         # назад в Android
Команда Что делает
./xl state где сейчас телефон: android, fastboot, loader или absent
./xl log забрать последний лог загрузчика из logdump
./xl screenshot снимок экрана телефона
./xl reload перезапустить загрузчик, не заходя в Android
./xl stop досрочно завершить сессию

Один запуск на сессию загрузчика. Второй запуск ядра в той же сессии загрузчика каждый раз сразу падал. Между запусками делайте ./xl reload или ./xl reboot.

Что включает ядро

Решает ваш .config. Аргументы, которые он даёт, выглядят так:

touchscreen=1 gpu=1 adsp=1 sound=4 wifi=1 haptic=5 modem=1 modem_again=1 modem_buffer=0xa8000000
Аргумент Включает Нужно
touchscreen=1 тач, кнопки питания и громкости —
gpu=1 GPU Adreno для отрисовки fw-gpu/
adsp=1 sound=4 mic=4 аудио-DSP, динамики, микрофон, уровень заряда fw-audio/
wifi=1 Wi-Fi fw-wifi/
haptic=5 вибрацию прошивку вибромотора
cam=5 камеры прошивку камер
modem=1 сотовый модем fw-modem/, ufs=2
cpus=8 bootcpu=7 cpufreq=1 все восемь ядер, старт на большом на полной частоте —
thermal_stop=105 battery_stop=15 сама завершить сессию при перегреве или низком заряде —

Чтобы изменить что-то на один запуск, задайте строку целиком: make phone ARGS="touchscreen=1 gpu=1". Чтобы насовсем — правьте фрагмент устройства и снова запустите make config. Все существующие аргументы — в каталоге аргументов загрузки.

Как вернуться в Android

Ситуация Что делать
сессия закончилась нормально ./xl reboot
хочется автоматически XL_END=android make phone ... или XL_REBOOT_AFTER=1 ./xl run
телефон будто завис подождите: xl ждёт сторожевой таймер и подскажет, какие кнопки нажать
ничего не отвечает держите питание около 15 секунд: телефон перезагрузится в Android
нужен fastboot держите питание + громкость вниз

Хотите оставить насовсем? Двойная загрузка

Есть ручная процедура, которая ставит hakios рядом с Android с меню загрузки. Она стирает данные Android, прошивает boot_a и проверена только на этом телефоне. Прочитайте Установку рядом с Android целиком, прежде чем что-то запускать, и сначала сохраните разделы.

Дальше

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