7.0 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 -Version 2.5 -MasterPassword 'ваш-аварийный-секрет'
→ появится buttontask-deploy-2.5.tgz (бинарник + webconfig + пакеты +
device-install.sh, все скрипты уже в LF). Бинарник по умолчанию берётся из
.\software\ButtonTask (иначе задайте -BinPath).
Перед сборкой обновите .\software\: свежий ButtonTask (arm64) и актуальный
webconfig\ из репозитория (OTA теперь синхронизирует /opt/buttontask/scripts/
и sudoers из пакета при staging).
PNG/JPG/SVG/GIF из .\software\ и .\software\icons\ попадут в
/opt/buttontask/icons/. Дефолтный конфиг уже содержит кнопку
Вызов клининга с иконкой cleaner1Crop.png.
Сеть: отредактируйте .\software\config\network.json перед сборкой
(по умолчанию eth0 static 192.168.1.60/24).
Развёртывание на устройства (шаг 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по умолчанию не трогает (upgrade-safe). Для полного сброса:BUTTONTASK_RESET_CONFIG=1илиdeploy-adb.ps1 -ResetConfig, либо галочка в sshDeploy GUI. - Хелперы
bt-*+sudoers(+visudo -c). /tmp/runtime-buttontaskчерезtmpfiles.d(переживает ребут).- Авто-детект тачскрина →
override.confс нужнымeventN. - Выключает
display-manager(eglfs забирает KMS/DRM). systemctl enable buttontask buttontask-web buttontask-network; старт — после ребута. UI (buttontask) не ждёт поднятия IP — сеть настраивается параллельно с коротким таймаутом.- Если в бандле есть
config/.master— кладёт аварийный мастер-пароль (web + Qt).
Идемпотентен: повторный прогон безопасен.
Грабли
- Версия 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 / пароль admin (из
settings.password, смените в вебе). Аварийный мастер-пароль — из -MasterPassword
при сборке бандла или sudo /opt/buttontask/scripts/bt-set-master.