Руководство
Запуск на телефоне
Эталонный телефон — 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 целиком, прежде чем что-то запускать, и сначала сохраните разделы.
Дальше
- Всё остальное, что может пойти не так: Если что-то пошло не так.
- GPU через Metal: Metal.