Ошибка при установке Wireguard

wireguard.com, делаем как везде советуют для Debian 9…

echo “deb Index of /debian unstable main” > /etc/apt/sources.list.d/unstable-wireguard.list
printf ‘Package: \nPin: release a=unstable\nPin-Priority: 150\n’ > /etc/apt/preferences.d/limit-unstable
apt-get update
apt-get install linux-headers-$(uname -r|sed 's/[^-]
-[^-]*-//’)

…все идет хорошо до

apt-get install wireguard

который отваливается с такой ошибкой…

Setting up wireguard-dkms (1.0.20201221-1) …
Loading new wireguard-1.0.20201221 DKMS files…
Building for 4.9.22-wb6
Building initial module for 4.9.22-wb6
Error! Bad return status for module build on kernel: 4.9.22-wb6 (armv7l)
Consult /var/lib/dkms/wireguard/1.0.20201221/build/make.log for more information.
Setting up wireguard (1.0.20200827-1) …
Setting up nftables (0.7-1) …
Processing triggers for libc-bin (2.24-11+deb9u4) …

и лог мало чем помогает…

root@wirenboard-ACSIRGKJ:~# cat /var/lib/dkms/wireguard/1.0.20201221/build/make.log
DKMS make.log for wireguard-1.0.20201221 for kernel 4.9.22-wb6 (armv7l)
Sun Jan 10 02:32:09 +10 2021
make: Entering directory ‘/usr/src/linux-headers-4.9.22-wb6’
LD /var/lib/dkms/wireguard/1.0.20201221/build/built-in.o
CC [M] /var/lib/dkms/wireguard/1.0.20201221/build/main.o
/bin/sh: 1: scripts/basic/fixdep: Exec format error
scripts/Makefile.build:293: recipe for target ‘/var/lib/dkms/wireguard/1.0.20201221/build/main.o’ failed
make[1]: *** [/var/lib/dkms/wireguard/1.0.20201221/build/main.o] Error 2
Makefile:1490: recipe for target ‘module/var/lib/dkms/wireguard/1.0.20201221/build’ failed
make: *** [module/var/lib/dkms/wireguard/1.0.20201221/build] Error 2
make: Leaving directory ‘/usr/src/linux-headers-4.9.22-wb6’

м.б. есть идеи как поставить этот впн?

а то везде поставился - на rasp pi3+ где hass, на андроиде, убунтах, вин10 - все летает, а на wb - облом… :frowning:

Только пересборкой ядра. Да, собираюсь заняться - либо выложу готовый (собранный) модуль пакетом либо инструкцию по пересборе.

1 лайк

ок. хотя бы примерно - когда ждать?

Думаю в этом месяце.

спасибо! жду

Есть ли какие-нибудь новости?

Перейдите в директорию
/usr/src/linux-headers-4.9.22-wb6/scripts/basic

Ядро пересобирать не нужно, достаточно собрать сервисные утилиты, которые были собраны под архитектуру процессора системы на которой компилировалось ядро.

Исходники утилиты лежат рядом с ней.

И перекомпилируйте fixdep под архитектуру wirenboard

cd /usr/src/linux-headers-4.9.22-wb6/scripts/basic
gcc fixdep.c -o fixdep

Так же придётся повторить с прочими исполняемыми файлами собранными для архитектуры отличной от armhf, а именно x86_64

file fixdep
fixdep: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux 2.6.32, BuildID[sha1]=631397b7385490a3c5079ea571db7f1ef2bc4403, not stripped

root@wirenboard-ACSIRGKJ:/# apt install wireguard
Reading package lists… Done
Building dependency tree
Reading state information… Done
The following additional packages will be installed:
apparmor apt apt-transport-https apt-utils cpio dpkg firmware-linux-free gcc-11-base initramfs-tools
initramfs-tools-core klibc-utils libapt-pkg6.0 libc-bin libc-dev-bin libc-l10n libc6 libc6-dev libcbor0
libcom-err2 libcrypt-dev libcrypt1 libffi8 libfido2-1 libgcc-s1 libgcrypt20 libgnutls-openssl27 libgnutls30
libgpg-error0 libgssapi-krb5-2 libhogweed6 libidn2-0 libjansson4 libk5crypto3 libklibc libkrb5-3
libkrb5support0 libnettle8 libnftables1 libnftnl11 libnih-dbus1 libnih1 libnsl-dev libnsl2 libp11-kit0
libpam0g libpcre2-8-0 libseccomp2 libselinux1 libssl1.1 libstdc++6 libtasn1-6 libtirpc-common libtirpc-dev
libtirpc3 libunistring2 libxtables12 libxxhash0 libzstd1 linux-base linux-image-5.14.0-2-armmp-lpae
linux-image-armmp-lpae locales lsb-base manpages manpages-dev nftables openssh-client openssh-server
openssh-sftp-server pigz rpcsvc-proto runit-helper wireguard-tools wireless-regdb
Suggested packages:
apparmor-profiles-extra apparmor-utils apt-doc aptitude | synaptic | wajig dpkg-dev powermgmt-base
libarchive1 debsig-verify bash-completion glibc-doc libnss-nis libnss-nisplus rng-tools gnutls-bin krb5-doc
krb5-user libpam-doc linux-doc-5.14 debian-kernel-handbook man-browser firewalld keychain libpam-ssh
monkeysphere ssh-askpass molly-guard ufw openresolv | resolvconf
Recommended packages:
libc-devtools libgpg-error-l10n
The following packages will be REMOVED:
libapt-inst2.0 libapt-pkg5.0 libcomerr2
The following NEW packages will be installed:
apparmor cpio firmware-linux-free gcc-11-base initramfs-tools initramfs-tools-core klibc-utils libapt-pkg6.0
libcbor0 libcom-err2 libcrypt-dev libcrypt1 libffi8 libfido2-1 libgcc-s1 libhogweed6 libjansson4 libklibc
libnettle8 libnftables1 libnftnl11 libnsl-dev libnsl2 libpcre2-8-0 libtirpc-common libtirpc-dev libtirpc3
libunistring2 libxxhash0 libzstd1 linux-base linux-image-5.14.0-2-armmp-lpae linux-image-armmp-lpae nftables
pigz rpcsvc-proto runit-helper wireguard wireguard-tools
The following packages will be upgraded:
apt apt-transport-https apt-utils dpkg libc-bin libc-dev-bin libc-l10n libc6 libc6-dev libgcrypt20
libgnutls-openssl27 libgnutls30 libgpg-error0 libgssapi-krb5-2 libidn2-0 libk5crypto3 libkrb5-3
libkrb5support0 libnih-dbus1 libnih1 libp11-kit0 libpam0g libseccomp2 libselinux1 libssl1.1 libstdc++6
libtasn1-6 libxtables12 locales lsb-base manpages manpages-dev openssh-client openssh-server
openssh-sftp-server wireless-regdb
36 upgraded, 39 newly installed, 3 to remove and 254 not upgraded.
Need to get 37,9 MB/67,9 MB of archives.
After this operation, 197 MB of additional disk space will be used.
Do you want to continue? [Y/n] y
Get:1 http://deb.debian.org/debian unstable/main armhf libp11-kit0 armhf 0.24.0-3 [324 kB]
Get:2 http://deb.debian.org/debian unstable/main armhf libseccomp2 armhf 2.5.2-2 [46,8 kB]
Get:3 http://deb.debian.org/debian unstable/main armhf linux-image-5.14.0-2-armmp-lpae armhf 5.14.9-2 [37,5 MB]
Get:4 http://deb.debian.org/debian unstable/main armhf linux-image-armmp-lpae armhf 5.14.9-2 [1 480 B]
Fetched 37,9 MB in 53s (712 kB/s)
Extracting templates from packages: 100%
Preconfiguring packages …
Selecting previously unselected package gcc-11-base:armhf.
(Reading database … 52517 files and directories currently installed.)
Preparing to unpack …/gcc-11-base_11.2.0-8_armhf.deb …
Unpacking gcc-11-base:armhf (11.2.0-8) …
Setting up gcc-11-base:armhf (11.2.0-8) …
Selecting previously unselected package libgcc-s1:armhf.
(Reading database … 52522 files and directories currently installed.)
Preparing to unpack …/libgcc-s1_11.2.0-8_armhf.deb …
Unpacking libgcc-s1:armhf (11.2.0-8) …
Replacing files in old package libgcc1:armhf (1:6.3.0-18+deb9u1) …
Setting up libgcc-s1:armhf (11.2.0-8) …
(Reading database … 52524 files and directories currently installed.)
Preparing to unpack …/libc-l10n_2.32-4_all.deb …
Unpacking libc-l10n (2.32-4) over (2.24-11+deb9u4) …
Preparing to unpack …/locales_2.32-4_all.deb …
Unpacking locales (2.32-4) over (2.24-11+deb9u4) …
Selecting previously unselected package libcbor0:armhf.
Preparing to unpack …/libcbor0_0.5.0+dfsg-2_armhf.deb …
Unpacking libcbor0:armhf (0.5.0+dfsg-2) …
Selecting previously unselected package libfido2-1:armhf.
Preparing to unpack …/libfido2-1_1.8.0-1_armhf.deb …
Unpacking libfido2-1:armhf (1.8.0-1) …
dpkg: libcomerr2:armhf: dependency problems, but removing anyway as you requested:
libbind9-140:armhf depends on libcomerr2 (>= 1.01).
libkrb5-3:armhf depends on libcomerr2 (>= 1.34).
openssh-server depends on libcomerr2 (>= 1.01).
libwbmqtt1:armhf depends on libcomerr2.
libgssapi-krb5-2:armhf depends on libcomerr2 (>= 1.34).
e2fsprogs depends on libcomerr2 (>= 1.42~WIP-2011-10-05-1).
libwbmqtt1-2:armhf depends on libcomerr2.
libisccfg140:armhf depends on libcomerr2 (>= 1.01).
libcurl3-gnutls:armhf depends on libcomerr2 (>= 1.01).
libcurl3:armhf depends on libcomerr2 (>= 1.01).
libdns162:armhf depends on libcomerr2 (>= 1.01).
libss2:armhf depends on libcomerr2.
bind9-host depends on libcomerr2 (>= 1.01).

(Reading database … 52558 files and directories currently installed.)
Removing libcomerr2:armhf (1.43.4-2+wb1) …
Selecting previously unselected package libcom-err2:armhf.
(Reading database … 52553 files and directories currently installed.)
Preparing to unpack …/0-libcom-err2_1.46.4-1_armhf.deb …
Unpacking libcom-err2:armhf (1.46.4-1) …
Preparing to unpack …/1-libgssapi-krb5-2_1.18.3-7_armhf.deb …
Unpacking libgssapi-krb5-2:armhf (1.18.3-7) over (1.15-1+deb9u3) …
Preparing to unpack …/2-libkrb5-3_1.18.3-7_armhf.deb …
Unpacking libkrb5-3:armhf (1.18.3-7) over (1.15-1+deb9u3) …
Preparing to unpack …/3-libk5crypto3_1.18.3-7_armhf.deb …
Unpacking libk5crypto3:armhf (1.18.3-7) over (1.15-1+deb9u3) …
Preparing to unpack …/4-libkrb5support0_1.18.3-7_armhf.deb …
Unpacking libkrb5support0:armhf (1.18.3-7) over (1.15-1+deb9u3) …
Selecting previously unselected package libpcre2-8-0:armhf.
Preparing to unpack …/5-libpcre2-8-0_10.36-2_armhf.deb …
Unpacking libpcre2-8-0:armhf (10.36-2) …
Setting up libpcre2-8-0:armhf (10.36-2) …
(Reading database … 52563 files and directories currently installed.)
Preparing to unpack …/openssh-server_1%3a8.4p1-6_armhf.deb …
Unpacking openssh-server (1:8.4p1-6) over (1:7.4p1-10+deb9u7) …
Replacing files in old package openssh-client (1:7.4p1-10+deb9u7) …
Preparing to unpack …/libc6_2.32-4_armhf.deb …
Checking for services that may need to be restarted…
Checking init scripts…
Unpacking libc6:armhf (2.32-4) over (2.24-11+deb9u4) …
Setting up libc6:armhf (2.32-4) …
Installing new version of config file /etc/ld.so.conf.d/arm-linux-gnueabihf.conf …
/usr/bin/perl: error while loading shared libraries: libcrypt.so.1: cannot open shared object file: No such file
or directory
dpkg: error processing package libc6:armhf (–configure):
subprocess installed post-installation script returned error exit status 127
Errors were encountered while processing:
libc6:armhf
E: Sub-process /usr/bin/dpkg returned an error code (1)

и

root@wirenboard-ACSIRGKJ:/# apt --fix-broken install wireguard
Reading package lists… Done
Building dependency tree
Reading state information… Done
You might want to run ‘apt --fix-broken install’ to correct these.
The following packages have unmet dependencies:
libc-bin : Depends: libc6 (< 2.25) but 2.32-4 is to be installed
libc-dev-bin : Depends: libc6 (< 2.25) but 2.32-4 is to be installed
libc6-dev : Depends: libc6 (= 2.24-11+deb9u4) but 2.32-4 is to be installed
libfido2-1 : Depends: libssl1.1 (>= 1.1.1) but 1.1.0l-1~deb9u4 is to be installed
libnih1 : Depends: libc6 (< 2.25) but 2.32-4 is to be installed
locales : Depends: libc-bin (> 2.32) but 2.24-11+deb9u4 is to be installed
openssh-server : Depends: openssh-client (= 1:8.4p1-6) but 1:7.4p1-10+deb9u7 is to be installed
Depends: runit-helper (>= 2.10.0~) but it is not going to be installed
Depends: libcrypt1 (>= 1:4.1.0) but it is not going to be installed
Depends: libselinux1 (>= 3.1~) but 2.6-3+b3 is to be installed
Depends: libssl1.1 (>= 1.1.1) but 1.1.0l-1~deb9u4 is to be installed
wireguard : Depends: wireguard-modules (>= 0.0.20191219) or
wireguard-dkms (>= 0.0.20200121-2) but it is not going to be installed
Depends: wireguard-tools (>= 1.0.20210914-1) but it is not going to be installed
E: Unmet dependencies. Try ‘apt --fix-broken install’ with no packages (or specify a solution).

т.е. дело не только в fixdep…

а вы что-нибудь добавляли в стандартные debian репозитории?

только вот этот

root@wirenboard-ACSIRGKJ:/# cat /etc/apt/sources.list.d/unstable-wireguard.list
deb Index of /debian unstable main

Кроме того, увидел еще одну ошибку у вас…
дифолтовый /etc/wb-mqtt-serial.conf содержит недопустимый комментарий в первой строке (// Configuration options), что приводит к невалидному джейсону и соотв.:

root@wirenboard-ACSIRGKJ:~# wb-mcu-fw-updater update-all
2021-10-05 10:07:55,190 Will probe all devices defined in /etc/wb-mqtt-serial.conf
2021-10-05 10:07:55,200 Expecting value: line 1 column 1 (char 0)

Всё же без перекомпиляции ядра не обойтись. Сетевой стек в ядре wirenboard собран монолитно, поэтому даже досборка модуля не поможет.

Для сборки ядра использовалась система Debian 9.

Ядро было собрано так:

apt update && sudo apt install build-essential libncurses5-dev fakeroot lzop bc git gcc-arm-linux-gnueabihf
git clone https://github.com/wirenboard/linux
cd linux/
git submodule update --init --recursive
make mrproper
make KBUILD_OUTPUT=.build-wb6 ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- menuconfig
KERNEL_FLAVOUR=wb6  scripts/package/wb/do_build_deb.sh

На этапе menuconfig были проверены и включены опции ядра, указанные в документации wireguard :Compilation from Source Code - WireGuard

CONFIG_NET for basic networking support
CONFIG_INET for basic IP support
CONFIG_NET_UDP_TUNNEL for sending and receiving UDP packets
CONFIG_CRYPTO_ALGAPI for crypto_xor
[*] Networking support (NET) -->
    Networking options -->
        [*] TCP/IP networking (INET)
        [*]   IP: Foo (IP protocols) over UDP (NET_FOU)
[*] Cryptographic API (CRYPTO) -->
    [*] Cryptographic algorithm manager (CRYPTO_MANAGER)

Далее для проверки, что ядро собрано корректно и сможет загрузиться deb пакет с ядром linux-image-wb6_4.9.22-wb2_armhf.deb был распакован.

Директория с модулями ядра сжата в архив, образ ядра и архив с модулями скопированы на флешку с файловой системой FAT32.

dpkg -x linux-image-wb6_4.9.22-wb2_armhf.deb  ./

Флешка подключена к контроллеру, смонтирована и директория с модулями 4.9.22-wb2 скопирована в /lib/modules/4.9.22-wb2

Файл с образом ядра vmlinuz-4.9.22-wb2 перименован в zImage и помещён в корень флешки.

Для проверки загрузки с флешки контроллер был подключен через usb провод к компьютеру и посредством putty и debug консоли введены команды в загрузчик: Отладочный порт — Wiren Board

load mmc ${mmcdev}:${mmcpart} ${loadaddr} /boot/uEnv.txt
run loadfdtandoverlays
usb start
fatls usb 0:1
fatload usb 0:1 $loadaddr /zImage
setenv optargs ${optargs} root=/dev/mmcblk${mmcdev}p${mmcpart} rootwait ro test1
run setbootargs
bootz ${loadaddr} - ${fdt_addr}

Учтите, что времени на ввод команд в загрузчике немного, порядка 15 секунд, по истечении времени процедура запуска начинается заново и команды нужно ввонить снова.

Для проверки, что всё же загружено собранное ядро я дописал в строку параметров ядра слово test1, хотя можно увидеть и по версии ядра и дате сборки.

В начале я пробовал на USB 3.0 флешке объёмом 32 Гигабайта и её не было видно.
После выполнения команд

usb start
usb tree

должно быть видно usb storage устройство, если нет, то пробуйте другую флешку.

В итоге я использовать USB 2.0 флешку на 2 Гб.

Система загрузилась с собранного ядра.
Удостовериться в этом можно введя команду

uname -a
Linux wirenboard **4.9.22-wb2** #1 SMP **Fri Oct 22 17:47:31 MSK 2021** armv7l GNU/Linux

И посмотрев вывод команды

cat /proc/cmdline
console=ttymxc0,115200 root=/dev/mmcblk0p2 rootwait ro test1

После успешной загрузки образ ядра был скопирован в /boot/zImage в памяти контроллера.

Собранные deb пакеты просто устанавливаться не хотели, пакетный менеджер ругался на версию. Возможно виной было, что я не поменял префикс при сборке ядра и он у меня -wb2, в любом случае ядро рабочее и далее для сборки внешних модулей нам нужны только заголовочные файлы собранного ядра.

Всё остальное выполняется на самом контроллере.

По аналогии с модулями ядра я распаковал пакет с заголовочными файлами ядра в /usr/src/

cd /
dpkg -x linux/linux-headers-wb6_4.9.22-wb2_armhf.deb ./

Находиться нужно в корне, потому что в deb пакете файлы находятся относительно корня.

Для успешной сборки модуля wireguard нам нужно пересобрать две подпрограммы из linux-headers собранного ядра. Т.к. ядро собиралось на системе с архитектурой x86_64, а не arm, то и эти программы собраны под x86_64.

Для этого на контроллере делаем:

apt update
apt install gcc
cd /usr/src/linux-headers-4.9.22-wb2/scripts/basic
gcc fixdep.c -o fixdep
cd /usr/src/linux-headers-4.9.22-wb2/scripts/mod
gcc modpost.c file2alias.c sumversion.c -o modpost

Для установки wireguard нужно подключить репозитория stretch-backorts, если его нет.

Теперь нам осталось только собрать wireguard.

apt update
apt install wireguard

Сейчас уже не помню подключал ли я руками репозитории Debian Stretch или они были подключены, но я ставил пакет с wireguard из репозитория.

Если установлен пакет wireguard-dkms

Можно собрать и руками:

cd /usr/src/wireguard-1.0.20210219
make
make install
1 лайк

Зачем ты подключил репозитории от debian unstable (sid) к wirenboard?

Нужно использовать репозитории от debian stretch, система wirenboard построена на базе debian 9 (stretch).

Друзья, а без таких бубнов никак? )

Добрый день. Да конечно можно, достаточно собрать прошивку уже с установленными модулями:
https://wirenboard.com/wiki/Сборка_образов_прошивки
включив туда ядро собраннгое по инструкции Сборка ядра Linux — Wiren Board

Ну и установка собранной прошивки на контроллер - трудностей не составляет.

т.е. сборка своего образа и его установка - не с бубном? ))))))
по сравнению с apt install … - это, ИМХО, как раз с бубном ))

ну, ок, раз есть инструкция - попробуем… спасибо )

я уже давно и неоднократно предлагал варианты

  • сделать 2 ядра “ванильное” и “на стероидах” и через apt возможность переключаться
  • сделать отдельные ядерные модули, что б ставить через apt
    но вот и ныне там… (тут слогах durex, когда они ушли из России)

Добрый день! Идея хорошая, но одной идеи мало - это нужно делать и работы там на несколько недель. Пока делать это не планируем.

Серьёзно, посмотрите новую инструкцию по сборке ядра от нас, там стало всё гораздо проще.

Добрый день!

так и не появилось решение из серии “apt install”?

Здравствуйте! Пока готового для установки пакета не появилось.