Home Assistant Supervised на WirenBoard

Писал для себя, чтобы не забыть, но может кому-то и пригодится

Данная инструкция написана для WirenBoard 8.x с версией ПО WB-2410 (Debian 11 Bullseye), но при небольших корректировках, подойдет и на WB 6 и 7.* (нужно поправить часть со сборкой ядра, будет другой Branch на GitHub, другой компилятор armhf и соответственно небольшие изменения в командах)

В целом даже на WB 6 версия Home Assistant Supervised работает, но:

  • с момента включения контроллера и до полной функциональности Home Assistant проходит от 20 минут (боль и страдания)
  • CPU постоянно загружен в районе 60% и иногда до 100% кратковременно
  • малый размер MMC и раздела /mnt/data, поэтому приходится монтировать внешний USB диск

Зачем ставить вариант Supervised? Я просто так привык и мне не сложно. А вообще абсолютной необходимости в такой установке нет и, да, можно поставить версию Docker из Wiki. Это на вкус и цвет.

Установка Home Assistant Supervised

1. Сброс контроллера с установкой прошивки в режиме Factory Reset

1.1. Сбросить к заводскому состоянию
*это нужно, что бы понимать начальное состояние контроллера для нормального описания последовательности установки)
Инструкции: Программное обеспечение контроллеров Wiren Board — Wiren Board
Прошивку качать с: S3 Bucket Listing Generator

1.2. Если прошивка проверенная временем и рабочая, то её файлом желательно заменить файл:
/mnt/data/.wb-restore/factoryreset.fit
Это позволит быстро сбрасывать контроллер к этой версии прошивки.

2. Первоначальная настройка контроллера

2.1. Сменить пароль на SSH.
Инструкция: Как подключиться к консоли контроллера Wiren Board по SSH — Wiren Board
passwd
Лучше использовать авторизацию по ключу, но мне с паролем удобнее.

2.2. Настроить сеть
Инструкция: Настройка сети в контроллере Wiren Board — Wiren Board
через web интерфейс, nmtui или nmcli

2.3. Настроить часовой пояс
Инструкция: Настройка даты и времени в контроллере Wiren Board — Wiren Board

Посмотреть какие часовые пояса существуют и как их прописывать
timedatectl list-timezones

Изменить часовой пояс

timedatectl set-timezone Asia/Yekaterinburg
systemctl restart wb-rules

Проверить текущие значения
timedatectl

Сохранить время в энергонезависимый таймер
hwclock --systohc

2.4. Создать папку для временных файлов, она понадобится позднее
mkdir /mnt/data/tmp

3. Настройка модулей расширения и портов через Web интерфейс

Выполнить штатными средствами

4. Обновление ПО

apt update && apt upgrade -y && apt autoremove -y

иногда нужно запретить автоматическое обновление пакета, для этого:
чтобы не обновлять
apt-mark hold wb-rules
чтобы вернуть для обновения
apt-mark unhold wb-rules

5. Сборка ядра Linux с AppArmor

Наличие AppArmor и CGroup v.1, это требование Home Assistant

Сборку ядра необходимо производить в Linux, но не на контроллере, для этого либо использовать имеющийся ПК с OS Linux, либо поставить WSL под Windows, по инструкции ниже

5.1. Установка WSL

Запустить PowerShell от имени администратора

  • вариант - (меню “Пуск” > PowerShell > щелкните правой кнопкой мыши > Запуск от имени администратора)
  • вариант - Win + X, выбираем в контекстном меню пункт Терминал (администратор)

Установить необходимые компоненты (процесс не быстрый)

dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart

Выбрать версию WSL v.2
wsl --set-default-version 2

Установить WSL
wsl.exe --install --no-distribution

Перезагрузить ПК
restart-computer

5.2. Установка дистрибутива Linux

достаточно выбрать один из ниже предложенных, мне больше подходит Ubuntu

В WSL если ставить Ubuntu, то необходимо установить и настроить Ubuntu 18.04 LTS (именно эту версию так как в старших применяется компилятор gcc-arm-linux-gnueabihf не совместимый с gnulibc 3.1, возможно старшие версии подойдут, но я не пробовал и не собираюсь так как всё работает)

Все действия в Linux производить с правами root, для этого выполнить sudo -i с паролем, созданного при установке, пользователя.

Запустить PowerShell от имени администратора

  • вариант - (меню “Пуск” > PowerShell > щелкните правой кнопкой мыши > Запуск от имени администратора)
  • вариант - Win + X, выбираем в контекстном меню пункт Терминал (администратор)

5.2.1. Установить дистрибутив Debian 11 (самый сложный вариант)

Скачать дистрибутив Debian 11

cd $HOME\Downloads
curl.exe -OL --ssl-no-revoke https://wslstorestorage.blob.core.windows.net/wslblob/TheDebianProject.DebianGNULinux_1.12.1.0.AppxBundle

Установить скачанный дистрибутив

cd $HOME\Downloads
Add-AppxPackage TheDebianProject.DebianGNULinux_1.12.1.0.AppxBundle

Запустить консоль Debian (так же можно это сделать из меню Пуск)
wsl -d Debian

Завершить установку и создать пользователя
Первичная настройка

sudo -i
apt update && apt upgrade -y && apt autoremove -y

Далее для запуска консоли Debian выполнять
wsl -d Debian

5.2.2. Установить актуальный дистрибутив Debian (на момент написания Debian 12 Bookworm)

Получить список доступных дистрибутивов
wsl.exe --list --online

Установить Debian
wsl.exe --install Debian

Запустить для первоначальной настройки (иногда терминал запускается сам)
wsl -d Debian

Завершить установку и создать пользователя
Первичная настройка

sudo -i
apt update && apt upgrade -y && apt autoremove -y

Далее для запуска выполнять
wsl -d Debian

5.2.3. Установить дистрибутив Ubuntu-18.04

Получить список доступных дистрибутивов
wsl.exe --list --online

Установить Ubuntu 18.04
wsl.exe --install Ubuntu-18.04

Завершить установку и создать пользователя
Первичная настройка

sudo -i
apt update && apt upgrade -y && apt autoremove -y

Далее для запуска выполнять
wsl -d Ubuntu-18.04

для выбора дистрибутива по умолчанию использовать (не требуется если он всего один)
wsl --setdefault Debian
или
wsl --setdefault Ubuntu-18.04
для запуска дистрибутива по умолчанию достаточно вызова без указания дистрибутива
wsl

5.3. Удаление WSL

Этот пункт на будущее для информации и не должен выполняться до окончания процесса сборки и установки нового ядра на контроллер, в последствии его можно выполнить для освобождения места на диске ПК

Далее в инструкции будет описание в ситуации когда установлены два дистрибутива в WSL, но скорее всего будет только один, так как одного вполне достаточно, команды те же

Запустить терминал как Администратор. Для этого жмем Win + X, выбираем в контекстном меню пункт Терминал (администратор).

Получить список установленных на виртуальную машину дистрибутивов.
wsl -l -v
Вывод команды:

|PS C:\Users\user> wsl -l -v
|  NAME            STATE           VERSION
|* Debian          Stopped         2
|  Ubuntu-18.04    Stopped         2

Удалить регистрацию дистрибутива на виртуальной машине

wsl --unregister Debian
wsl --unregister Ubuntu-18.04

Проверить отсутствие регистрации
wsl -l -v
Вывод команды:

|PS C:\Users\user> wsl -l -v
|Подсистема Windows для Linux не содержит установленных дистрибутивов.

Установленных дистрибутивов больше нет.

Получить список установленных дистрибутивов и определить их ИД
winget list

Удалить дистрибутивы

winget uninstall --id Debian.Debian
winget uninstall --id Canonical.Ubuntu.1804

Удалить WSL - Вариант 1 (через терминал):

dism.exe /online /disable-feature /featurename:VirtualMachinePlatform /norestart
dism.exe /online /disable-feature /featurename:Microsoft-Windows-Subsystem-Linux /norestart

Перезагрузить ПК
restart-computer

Удалить WSL - Вариант 2 (через интерфейс):
Нажать Win + X и выбрать в открывшемся контекстном меню пункт Параметры
В открывшемся контекстном меню выбрать пункт Приложения
В открывшемся окне выбрать пункт Установленные приложения
В появившемся перечне установленных программ удлить OS, которые были установлены на виртуальной машине. (Ubuntu 18.04.5 on Windows)
Нажать Win + X и в открывшемся контекстном меню выбрать пункт Найти
В открывшемся контекстном меню ввести в строке поиска Панель управления и в результатах поиска выбрать соответствующее приложение.
В открывшемся окне выбрать пункт Программы и компоненты.
В открывшемся окне (слева) выбираем пункт Включение или отключение компонентов Windows
В открывшемся окне находим и убираем галочку (чекбокс) с пунктов:

  • Платформа виртуальной машины (Virtual Machine Platform)
  • Подсистема Windows для Linux

Нажать кнопку OK.
Дождаться окончания удаления и нажать кнопку Перезагрузить сейчас.
После перезагрузки системы WSL будет удален с компьютера.

5.4. Изменить и собрать ядро на основе актуальной версии с Git

Запустить дистрибутив Linux

wsl
sudo -i

Нужно клонировать с GitHub последний релиз ядра, для чего на контроллере посмотреть текущий релиз командой
uname -a
пример вывода
Linux wirenboard-AL2EXXXXX 6.8.0-wb123 #1 SMP Tue Dec 24 07:55:47 UTC 2024 aarch64 GNU/Linux
в данном случае ядро 6.8.0-wb123

Установить необходимые пакеты (список пакетов излишний так как компиляторы на все ревизии, но рабочий)
apt update && apt upgrade -y && apt install -y build-essential libncurses5-dev rsync fakeroot lzop bc git bison flex libssl-dev gcc-arm-linux-gnueabihf gcc make gcc-aarch64-linux-gnu binutils-aarch64-linux-gnu mc

Скачать соответствующее ядро с Git WirenBoard

cd ~
rm -r ~/Linux

в следующей команде заменить v6.8.0-wb123 на соответствующую версию ядра (это тег, но возможно вам понадобится бранч)

git clone --depth 1 --branch v6.8.0-wb123 --recurse-submodules -j8 https://github.com/wirenboard/linux

Сразу забэкапить директорию linux в Linux.original (это ускорит процесс если вдруг в процессе подготовки, что-то пошло не так)
mkdir ~/linux.original && cp -r -f ~/linux/* ~/linux.original
для восстановления бэкапа
rm -r ~/linux && mkdir ~/linux && cp -r -f ~/linux.original/* ~/linux && mkdir ~/linux/.git

Добавить AppArmor для Home Assistant в файл arch/arm64/configs/wb8.config

  • вариант - добавить строки с помощью любого текстового редактора:
#
# AppArmor (needed for Home Assistant)
#
CONFIG_AUDIT=y
CONFIG_SECURITY_APPARMOR=y
CONFIG_DEFAULT_SECURITY_APPARMOR=y
CONFIG_LSM="apparmor,landlock,lockdown,yama,loadpin,safesetid,bpf"
  • вариант - через терминал контроллера (мне так проще сохранять на будущее)
cd ~/linux
echo -e "\n#\n# AppArmor (needed for Home Assistant)\n#\nCONFIG_AUDIT=y\nCONFIG_SECURITY_APPARMOR=y\nCONFIG_DEFAULT_SECURITY_APPARMOR=y\nCONFIG_LSM=\"apparmor,landlock,lockdown,yama,loadpin,safesetid,bpf\"" >> ~/linux/arch/arm64/configs/wb8.config

Создать конфиг по умолчанию (дефконфиг)

cd ~/linux
make KBUILD_OUTPUT=.build-wb8 ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- defconfig wb8.config
make KBUILD_OUTPUT=.build-wb8 ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- savedefconfig

для настройки ядра (в данном случае не требуется, это для информации)
make KBUILD_OUTPUT=.build-wb8 ARCH=arm64 menuconfig
или
make KBUILD_OUTPUT=.build-wb8 ARCH=arm64 xconfig

Собрать пакет для установки на контроллер

KERNEL_FLAVOUR=wb8 VERSION_SUFFIX="-ha" CORES=12 ./scripts/package/wb/do_build_deb.sh

сборка идет с предупреждениями, но это не критично

Загрузить deb пакет на контроллер
scp linux-image-wb8_*-ha_arm64.deb root@10.200.200.1:/mnt/data/tmp/

Если появится запрос Are you sure you want to continue connecting (yes/no/[fingerprint])?, ответить yes
Ввести пароль root контроллера
В команде scp указан IP адрес (10.200.200.1) при подключении через debug usb-c, при необходимости сменить на свой

Подключиться к контроллеру терминалом

  • вариант - используя ПО типа Putty и т.п
  • вариант - прямо из WSL при помощи ssh
    ssh root@10.200.200.1

Установить deb пакет
dpkg -i /mnt/data/tmp/linux-image-wb8_*-ha_arm64.deb

Блокировка автоматического обновления ядра
apt-mark hold linux-image-wb8
Теперь нужно самостоятельно контролировать обновления ядра и при необходимости пересобирать заново с последующей установкой вручную

Перезагрузить контроллер
reboot

6. Установка Systemd-resolved
Это необходимо для установки в Debian 11. В версии Debian 12 разработчики выделили Systemd-resolved в отдельный пакет и наличие пакета проверяется при установке. При этом сам сервис Systemd-resolved присутствует в Debian 11 и позволяет Home Assistant нормально функционировать. Приходится обманывать.

Описание проблемы: Bug Report: Problems with systemd-resolved in 1.5.0 · Issue #304 · home-assistant/supervised-installer · GitHub

Запустить WSL (при необходимости указать нужный дистрибутив)
wsl

Установить equivs
apt install equivs

Подготовить настройки пакета systemd-resolved

equivs-control systemd-resolved.control
sed -i 's/<package name; defaults to equivs-dummy>/systemd-resolved/g' systemd-resolved.control

Собрать deb пакет пустышку
equivs-build systemd-resolved.control

Загрузить deb пакет на контроллер
scp systemd-resolved_1.0_all.deb root@10.200.200.1:/mnt/data/tmp/

7. Установка AppArmor

Запустить консоль контроллера

Установить утилиты и профили apparmor
apt update && apt install -y apparmor-utils apparmor-profiles

Перевести AppArmor в режим обучения для некоторых сервисов

aa-complain ntpd
aa-complain avahi-daemon

возможно в последствии будет необходимо добавить и другие сервисы при наличии проблем

Проверить текущий статус AppArmor
aa-status

Анализ работы AppArmor можно производить по журналу
journalctl -f
и
journalctl -g apparmor
и
dmesg | grep apparmor

8. Установка Docker

Инструкция: Установка Docker на контроллер Wiren Board — Wiren Board

Установить необходимые пакеты
apt update && apt install -y ca-certificates curl gnupg lsb-release

Загрузить ключ репозитория Docker

curl -fsSL https://download.docker.com/linux/debian/gpg | gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

Добавить репозиторий Docker

echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/debian $(lsb_release -cs) stable" | tee /etc/apt/sources.list.d/docker.list > /dev/null

Установить iptables
apt install -y iptables

Настроить iptables

update-alternatives --set iptables /usr/sbin/iptables-legacy
update-alternatives --set ip6tables /usr/sbin/ip6tables-legacy

Перенести Docker в /mnt/data, создав директории и линки

mkdir /mnt/data/etc/docker && ln -s /mnt/data/etc/docker /etc/docker
mkdir -p /mnt/data/usr/libexec/docker && ln -s /mnt/data/usr/libexec/docker /usr/libexec/docker
mkdir /mnt/data/.docker && ln -s /mnt/data/.docker /var/lib/docker

Создать файл с настройками Docker

echo -e "{\n  \"data-root\": \"/mnt/data/.docker\",\n  \"log-driver\": \"json-file\",\n  \"log-opts\": {\n    \"max-size\": \"10m\",\n    \"max-file\": \"3\"\n  }\n}\n" > /etc/docker/daemon.json

Создать бэкап файла (может пригодится позже)
cp -f /etc/docker/daemon.json /etc/docker/daemon.json.wb

Установить Docker и Docker Compose
apt update && apt install -y docker-ce docker-ce-cli containerd.io

Проверить установку и версии

docker --version
docker compose version
systemctl status docker

9. Установка Home Assistant Supervised

9.1. Предварительная подготовка

Перейти во временную директорию
cd /mnt/data/tmp

Перенести Home Assistant в /mnt/data, создав директории и линки (можно так не делать, а задать при установке DATA_SHARE=/mnt/data/.hassio, но мне такой подход нравится больше)
mkdir /mnt/data/.hassio && ln -s /mnt/data/.hassio /usr/share/hassio

Установить необходимые зависимости
apt install -y udisks2 libglib2.0-bin systemd-journal-remote

Отключить автозапуск ModemManager (требование установщика)
systemctl disable ModemManager

Остановить ModemManager
systemctl stop ModemManager

Установить пакет пустышку systemd-resolved, это позволит установить HASS на Debian 11 (для Debian 12 не требуется)
apt install /mnt/data/tmp/systemd-resolved_1.0_all.deb

Блокировка обновления systemd-resolved
apt-mark hold systemd-resolved
Так как пакет - пустышка, то и контролировать его обновление не требуется.

Изменить диверсии файла /etc/network/interfaces, так как это мешает установке (логичный путь через dpkg-divert --rename --remove /etc/network/interfaces не работает)
sed -i '\|/etc/network/interfaces|{N;N;d;}' /var/lib/dpkg/diversions

9.2. Установка OS-Agent for Home Assistant (ставить версию для aarch64)

Инструкция: GitHub - home-assistant/os-agent: Daemon allowing to control OS features through D-Bus
Скачивать вручную: Release 1.6.0 · home-assistant/os-agent · GitHub

Скачать в /mnt/data/tmp файл deb пакета os-agent

wget https://github.com/home-assistant/os-agent/releases/download/1.6.0/os-agent_1.6.0_linux_aarch64.deb

Установть deb пакет
apt install /mnt/data/tmp/os-agent_1.6.0_linux_aarch64.deb

Перезагрузить контроллер
reboot

9.3. Установка Home Assistant Supervised

Инструкция: GitHub - home-assistant/supervised-installer: Installer for a generic Linux system

Перейти во временную директорию
cd /mnt/data/tmp

Скачать в /mnt/data/tmp файл deb пакета установщика

wget -O homeassistant-supervised.deb https://github.com/home-assistant/supervised-installer/releases/latest/download/homeassistant-supervised.deb

Установть deb пакет

BYPASS_OS_CHECK=true apt install /mnt/data/tmp/homeassistant-supervised.deb -y

Во время установки выбрать Machine Type = qemuarm-64

Создать бэкап файла настроек Docker (может пригодится позже)
cp -f /etc/docker/daemon.json /etc/docker/daemon.json.ha

Начнется процесс загрузки контейнеров и установки Home Assistant, это может занять много времени (от 10 минут до нескольких часов), особенно с медленным интернетом
Через некоторое время можно зайти в Home Assistant в браузере по адресу http://10.200.200.1:8123/
Статус Observer можно посмотреть в браузере по адресу http://10.200.200.1:4357/
Установка будет предупреждать о том, что эта OS Debian 11 не поддерживается, но это не важно и можно игнорировать

Иногда возникает проблема с HA DNS в части определения адреса Cloud сервиса, это проявляется в высокой загрузке процессора, что особенно критично для WB6
Исправить процесс определения адреса для Cloud сервиса можно запуская следующую команду через минут 5-10 после начала установки
ha dns options --fallback=false
при этом пока не завершится установка необходимых компонентов HASS выполнение будет завершаться ошибками:
“Error response from daemon: No such container: hassio_cli”
или
“Error: System is not ready with state: setup”,
необходимо повторять запуск пока выполнение не завершится сообщением
“Command completed successfully.”

Можно запустить top для контроля процесса установки и ожидать пока не завершится этот процесс (на WB6 отчетливо видно)
Можно смотреть вывод в дебаг консоли контроллера
Можно смотреть системный журнал в консоли
journalctl -f
В журнале появляются записи красного цвета от HA, это не обязательно ошибки, сильно не нервничать и ждать (иногда долго ждать)

10. Установка WB-Engine

Инструкция: GitHub - 4mr/wb-engine

10.1. Для WirenBoard 8.x

Перейти во временную директорию
cd /mnt/data/tmp

Скачать в /mnt/data/tmp файл deb пакета установщика
wget https://github.com/4mr/wb-engine/releases/latest/download/wb-engine_arm64.deb

Установть deb пакет
apt -y install ./wb-engine_arm64.deb

10.2. Для WirenBoard 6.x и 7.x

Перейти во временную директорию
cd /mnt/data/tmp

Скачать в /mnt/data/tmp файл deb пакета установщика
wget https://github.com/4mr/wb-engine/releases/latest/download/wb-engine_armhf.deb

Установть deb пакет
apt -y install ./wb-engine_armhf.deb

10.3. Настроить WB-Engine

Через Web интерфейс WirenBoard с правами Администратора
Настройки > Конфигурационные файлы > WB Engine Configuration

11. Полезные команды

Остановка HASS

systemctl stop hassio-apparmor
systemctl stop hassio-supervisor
systemctl stop haos-agent

Остановка Docker
systemctl stop docker


Далее писать можно долго, но это уже будет про настройки Home Assistant, что выходит за рамки Support Wirenboard

Добрый день!

Благодарим за подробный материал по развертыванию сервиса.

Для тех кто поставил HA по этой инструкции.

В журнале системы я только сейчас заметил спам (можно проверить в Home Assistant перейдя Настройки > Система > Журнал сервера и верхнем правом углу выбрать Host)
В журнале будут ошибки вида:

MMM DD HH:MM:SS homeassistant systemd-journal-gatewayd[###]: microhttpd: Setting TCP_NODELAY option to ON state failed: Operation not supported
MMM DD HH:MM:SS homeassistant systemd-journal-gatewayd[###]: microhttpd: Setting TCP_CORK option to OFF state failed: Operation not supported
MMM DD HH:MM:SS homeassistant systemd-journal-gatewayd[###]: microhttpd: Failed to push the data from buffers to the network. Client may experience some delay (usually in range 200ms - 5 sec).

В целом я не заметил проблем, не беспокойтесь и пока используйте так.
Но исправить нужно.
Причина в том, что пакет libmicrohttpd12 в контроллере версии 0.9.72-2 и новее в репозитории нет, а в версии Debian 12 версия 0.9.75-6.
Соответственно HA написан с использованием более свежего функционала.
Надо обновлять.
Я локально у себя решил проблему, установил libmicrohttpd12 0.9.75-6 и ошибки исчезли. Работает без нареканий.
На днях обновлю инструкцию.

Сборка пакета libmicrohttpd12 для Wirenboard

Для того, чтобы не иметь проблем с версиями пакетов, необходимо либо собирать прямо на контроллере (такой путь мне не по душе), либо в специальном окружении wirenboard.
Есть не самый наверное правильный, но рабочий путь, поставить одну из первых сборок Debian 11 на WSL, изменить список репозиториев на репозитории wirenboard и обновить пакеты штатными средствами, а далее собрать нужный пакет.

Если WSL не установлен (или по моей же инструкции был удален)

  1. Запустить PowerShell от имени администратора
    вариант - (меню “Пуск” > PowerShell > щелкните правой кнопкой мыши > Запуск от имени администратора)
    вариант - Win + X, выбираем в контекстном меню пункт Терминал (администратор)

  2. Установить Подсистему Windows для Linux *если её нет, была удалена ранее
    dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart

  3. Установить подсистему виртуализации *если её нет, удалена ранее
    dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart

  4. Выбрать версию WSL v.2 *если её нет, была удалена ранее
    wsl --set-default-version 2

  5. Установить WSL *если её нет, была удалена ранее
    wsl.exe --install --no-distribution

  6. Перезагрузить ПК *если устанавливали WSL
    restart-computer

Убедиться, что нет установленных Debian дистрибутивов

  1. Запустить PowerShell от имени администратора
    вариант - (меню “Пуск” > PowerShell > щелкните правой кнопкой мыши > Запуск от имени администратора)
    вариант - Win + X, выбираем в контекстном меню пункт Терминал (администратор)

  2. Получить список установленных на виртуальную машину дистрибутивов.
    wsl -l -v
    Вывод команды:

|PS C:\Users\user> wsl -l -v
| NAME STATE VERSION
|* Debian Stopped 2
| Ubuntu-18.04 Stopped 2

  1. Если есть Debian, то её нужно удалить, если нет, то перейти к следующему пункту
    Обязательно сохраните всё нужное из дистрибутива перед удалением
    3.1. Удалить регистрацию дистрибутива на виртуальной машине
    wsl --unregister Debian
    3.2. Удалить дистрибутив Debian
    winget uninstall --id Debian.Debian

Приступить к установке Debian 11 и сборке пакета
Запустить PowerShell от имени администратора
вариант - (меню “Пуск” > PowerShell > щелкните правой кнопкой мыши > Запуск от имени администратора)
вариант - Win + X, выбираем в контекстном меню пункт Терминал (администратор)

  1. Подключиться по SSH к контроллеру
    ssh root@10.200.200.1
    ввести root пароль wirenboard
  2. Создать временную директорию, если её еще нет
    mkdir /mnt/data/tmp
  3. Выйти из SSH
    exit
    4.Скачать дистрибутив Debian 11 (bullseye)
    cd $HOME\Downloads
    curl.exe -OL --ssl-no-revoke https://wslstorestorage.blob.core.windows.net/wslblob/TheDebianProject.DebianGNULinux_1.12.1.0.AppxBundle
  4. Установить Debian 11
    Add-AppxPackage TheDebianProject.DebianGNULinux_1.12.1.0.AppxBundle
  5. Запустить Debian 11 для завершения установки и начала сборки пакета
    debian
  6. Создать пользователя и пароль в Debian 11
  7. Войти под пользователем root
    sudo -i
    Ввести ранее созданный пароль
  8. Переделать список репозиториев под wirenboard
sed -i '/^[^#]/s/^/#/' /etc/apt/sources.list
cat << EOF >> /etc/apt/sources.list
# from wb file /etc/apt/sources.list.d/debian-upstream.list
deb http://debian-mirror.wirenboard.com/debian bullseye main
deb http://debian-mirror.wirenboard.com/debian bullseye-updates main
deb http://debian-mirror.wirenboard.com/debian bullseye-backports main
deb http://debian-mirror.wirenboard.com/debian-security bullseye-security main
#
# Sources
#
deb-src http://deb.debian.org/debian/ bookworm main
EOF
  1. Добавить необходимые архитектуры для компиляторов
    для WB 6-7
    dpkg --add-architecture armhf
    для WB 8
    dpkg --add-architecture arm64
  2. Выполнить обновление пакетов
    apt update && apt upgrade -y && apt autoremove -y
  3. Установить необходимые пакеты
    apt install dpkg-dev build-essential crossbuild-essential-arm64 crossbuild-essential-armhf ssh mc -y
  4. Создать директорию для сборки пакета
    mkdir ~/libmicrohttpd
  5. Изменить права для директории
    chown _apt:root ~/libmicrohttpd
  6. Перейти во временную директорию
    cd ~/libmicrohttpd
  7. Скачать исходники libmicrohttp
    apt source libmicrohttpd
  8. Перейти в директорию исходников
    cd libmicrohttpd-*
  9. Получить необходимые зависимости для сборки
    для WB 6-7
    apt-get build-dep -aarmhf libmicrohttpd -y
    для WB 8
    apt-get build-dep -aarm64 libmicrohttpd -y
  10. Скомпилировать пакет под нужную архитектуру
    для WB 6-7
    CONFIG_SITE=/etc/dpkg-cross/cross-config.armhf DEB_BUILD_OPTIONS=nocheck dpkg-buildpackage -aarmhf -Pcross,nocheck
    для WB 8
    CONFIG_SITE=/etc/dpkg-cross/cross-config.arm64 DEB_BUILD_OPTIONS=nocheck dpkg-buildpackage -aarm64 -Pcross,nocheck
  11. Передать файл на контроллер
cd ..
scp libmicrohttpd12_0.9.75-6_arm*.deb root@10.200.200.1:/mnt/data/tmp/

ответить yes
ввести root пароль wirenboard

  1. Подключиться по SSH к контроллеру
    ssh root@10.200.200.1
    ввести root пароль wirenboard
  2. Перейти во временную директорию
    cd /mnt/data/tmp
  3. Установить пакет
    apt install /mnt/data/tmp/libmicrohttpd12_0.9.75-6_*.deb -y
  4. Перезагрузить контроллер
    лучше через интерфейс HA, но можно и командой
    reboot

Проверить, что ошибок не стало.

Гайд - огонь. Спасибо
Можно еще HA на /mnt/data перенести, а то у меня backup не влезал в /
mkdir /mnt/data/etc/homeassistant && ln -s /mnt/data/etc/homeassistant /var/lib/homeassistant