Files
Button/winDeployScripts/README-deploy.md
T
2026-06-25 15:28:46 +03:00

5.7 KiB
Raw Blame History

Деплой ButtonTask по ADB (offline, RK3566, хост — Windows)

Голое устройство по USB → adb → один прогон → ребут → работает. Пакеты ставятся офлайн; зависимости берутся с референс-устройства. Хост — Windows, PowerShell, без WSL и без docker.

adb.exeAdbWinApi.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.

Инструкция для него — три строчки:

  1. Подключи устройство к ноутбуку USB-кабелем.
  2. Двойной клик по deploy.cmd.
  3. Дождись зелёного «ГОТОВО», отключи устройство. Следующее — так же.

deploy.cmd сам найдёт единственный .tgz рядом, дождётся появления устройства (до 60 c), зальёт, поставит офлайн, перезагрузит и проверит, что сервисы поднялись. Если что-то не так — покажет понятную ошибку и не закроется сразу.


Что делает device-install.sh на устройстве

  1. dpkg -i debs/*.deb офлайн (два прохода), ldconfig.
  2. Создаёт пользователя buttontask, группы video render input.
  3. Раскладывает /opt/buttontask/{versions/<ver>,config,icons,run,scripts}, симлинк current. Существующий config.json не трогает.
  4. Хелперы bt-* + sudoers (+visudo -c).
  5. /tmp/runtime-buttontask через tmpfiles.d (переживает ребут).
  6. Авто-детект тачскрина → override.conf с нужным eventN.
  7. Выключает display-manager (eglfs забирает KMS/DRM).
  8. 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 — смените).