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

5 лайков

Добрый день!

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

Для тех кто поставил 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 и ошибки исчезли. Работает без нареканий.
На днях обновлю инструкцию.

1 лайк

Сборка пакета 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

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