5.7 KiB
Деплой ButtonTask по ADB (offline, RK3566, хост — Windows)
Голое устройство по USB → adb → один прогон → ребут → работает. Пакеты ставятся офлайн; зависимости берутся с референс-устройства. Хост — Windows, PowerShell, без WSL и без docker.
adb.exe (и AdbWinApi.dll, AdbWinUsbApi.dll рядом с ним) лежит в .\bin\.
Скрипты сами его оттуда подхватывают — ничего в PATH прописывать не нужно.
Раскладка папки
deploy\
bin\
adb.exe
AdbWinApi.dll
AdbWinUsbApi.dll
packages.list
collect-on-device.sh
device-install.sh
collect-debs.ps1
make-adb-bundle.ps1
deploy-adb.ps1
deploy.cmd <- двойной клик для не-специалиста (шаг 4)
Подготовка (один раз, делаете ВЫ)
Нужно: ваш собранный бинарник ButtonTask под arm64 (собранный на том же
релизе Debian, что и устройства), репозиторий ButtonTask, и два устройства —
target (голое) и reference (на столе, с интернетом).
Шаг 1 — снять список пакетов с голого устройства
Подключите по USB только target. В папке deploy откройте PowerShell
(Shift+ПКМ по папке → «Открыть окно PowerShell здесь») и выполните:
powershell -ExecutionPolicy Bypass -File collect-debs.ps1 -Step target
→ появится target-installed.txt.
Шаг 2 — скачать недостающие пакеты на референсе
Отключите target. Подключите только reference (с интернетом):
powershell -ExecutionPolicy Bypass -File collect-debs.ps1 -Step fetch
→ скачает нужные .deb в .\debs.
Если оба устройства — один и тот же чистый образ, шаг 1 можно пропустить.
Шаг 3 — собрать бандл
powershell -ExecutionPolicy Bypass -File make-adb-bundle.ps1 -RepoRoot C:\src\ButtonTask -Version 2.1
→ появится buttontask-deploy-2.1.tgz (бинарник + webconfig + пакеты +
device-install.sh, все скрипты уже в LF). Бинарник по умолчанию берётся из
C:\src\ButtonTask\build\ButtonTask (иначе задайте -BinPath).
Развёртывание на устройства (шаг 4)
Это можно отдавать не специалисту. Достаточно отдать папку с:
bin\, deploy-adb.ps1, deploy.cmd и одним файлом buttontask-deploy-2.1.tgz.
Инструкция для него — три строчки:
- Подключи устройство к ноутбуку USB-кабелем.
- Двойной клик по deploy.cmd.
- Дождись зелёного «ГОТОВО», отключи устройство. Следующее — так же.
deploy.cmd сам найдёт единственный .tgz рядом, дождётся появления устройства
(до 60 c), зальёт, поставит офлайн, перезагрузит и проверит, что сервисы
поднялись. Если что-то не так — покажет понятную ошибку и не закроется сразу.
Что делает device-install.sh на устройстве
dpkg -i debs/*.debофлайн (два прохода),ldconfig.- Создаёт пользователя
buttontask, группыvideo render input. - Раскладывает
/opt/buttontask/{versions/<ver>,config,icons,run,scripts}, симлинкcurrent. Существующийconfig.jsonне трогает. - Хелперы
bt-*+sudoers(+visudo -c). /tmp/runtime-buttontaskчерезtmpfiles.d(переживает ребут).- Авто-детект тачскрина →
override.confс нужнымeventN. - Выключает
display-manager(eglfs забирает KMS/DRM). systemctl enable buttontask buttontask-web; старт — после ребута.
Идемпотентен: повторный прогон безопасен.
Грабли
- Версия Qt. Бинарник и пакеты — одного релиза Debian, иначе рантайм-Qt не совпадёт с линковкой. Собирайте бинарник на том же релизе, что устройства.
- reference без интернета. Шаг 2 требует интернет на референсе.
- adb не root. На Rockchip обычно root. Если нет — скрипт идёт через
sudo(нужен пассвордлесс-sudo для adb-пользователя). - Драйвер ADB на Windows. Для первого подключения может понадобиться
установить USB-драйвер (Google USB Driver / производителя платы), иначе
устройство в
adb devicesне появится.
Диагностика (если зелёного «ГОТОВО» нет)
bin\adb.exe shell systemctl status buttontask buttontask-web
bin\adb.exe shell journalctl -u buttontask -b --no-pager
bin\adb.exe shell ls -l /opt/buttontask/current
Веб-конфигуратор: http://<ip>:8080, логин admin + пароль из
settings.password (по умолчанию admin — смените).