Weil wireguard mit dem heute gekommenen Kernel für Ubuntu 18.04 nicht durch den Compiler ging
Unpacking wireguard-dkms (1.0.20200520-0ppa1~18.04) over (1.0.20200520-0ppa1~18.04) ... Setting up wireguard-dkms (1.0.20200520-0ppa1~18.04) ... Loading new wireguard-1.0.20200520 DKMS files... Building for 4.15.0-106-generic Building initial module for 4.15.0-106-generic Error! Bad return status for module build on kernel: 4.15.0-106-generic (x86_64) Consult /var/lib/dkms/wireguard/1.0.20200520/build/make.log for more information. Setting up wireguard (1.0.20200513-1~18.04) ...
und dann in /var/lib/dkms/wireguard/1.0.20200520/build/make.log Derartiges hinterließ
DKMS make.log for wireguard-1.0.20200520 for kernel 4.15.0-106-generic (x86_64) Wed Jun 10 07:49:21 CEST 2020 make: Entering directory '/usr/src/linux-headers-4.15.0-106-generic' CC [M] /var/lib/dkms/wireguard/1.0.20200520/build/main.o CC [M] /var/lib/dkms/wireguard/1.0.20200520/build/noise.o CC [M] /var/lib/dkms/wireguard/1.0.20200520/build/device.o CC [M] /var/lib/dkms/wireguard/1.0.20200520/build/peer.o CC [M] /var/lib/dkms/wireguard/1.0.20200520/build/timers.o CC [M] /var/lib/dkms/wireguard/1.0.20200520/build/queueing.o CC [M] /var/lib/dkms/wireguard/1.0.20200520/build/send.o CC [M] /var/lib/dkms/wireguard/1.0.20200520/build/receive.o CC [M] /var/lib/dkms/wireguard/1.0.20200520/build/socket.o In file included from <command-line>:0:0: /var/lib/dkms/wireguard/1.0.20200520/build/socket.c: In function ‘send6’: /var/lib/dkms/wireguard/1.0.20200520/build/compat/compat.h:102:42: error: ‘const struct ipv6_stub’ has no member named ‘ipv6_dst_lookup’; did you mean ‘ipv6_dst_lookup_flow’? #define ipv6_dst_lookup_flow(a, b, c, d) ipv6_dst_lookup(a, b, &dst, c) + (void *)0 ?: dst ^ /var/lib/dkms/wireguard/1.0.20200520/build/socket.c:139:20: note: in expansion of macro ‘ipv6_dst_lookup_flow’ dst = ipv6_stub->ipv6_dst_lookup_flow(sock_net(sock), sock, &fl, ^~~~~~~~~~~~~~~~~~~~ scripts/Makefile.build:330: recipe for target '/var/lib/dkms/wireguard/1.0.20200520/build/socket.o' failed make[1]: *** [/var/lib/dkms/wireguard/1.0.20200520/build/socket.o] Error 1 Makefile:1577: recipe for target '_module_/var/lib/dkms/wireguard/1.0.20200520/build' failed make: *** [_module_/var/lib/dkms/wireguard/1.0.20200520/build] Error 2 make: Leaving directory '/usr/src/linux-headers-4.15.0-106-generic'
wollte ich prüfen, ob ich um den Bug herumkomme, wenn ich den Server mit dem alten Kernel starte.
Ich dachte, das geht so:
Ein
grub-mkconfig | grep -E 'submenu |menuentry '
liefert den Menüeintrag für den älteren Kernel
menuentry 'Ubuntu' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-simple-18a21bc3-6dd4-4d7a-a538-c7d935a00a63' { submenu 'Advanced options for Ubuntu' $menuentry_id_option 'gnulinux-advanced-18a21bc3-6dd4-4d7a-a538-c7d935a00a63' { menuentry 'Ubuntu, with Linux 4.15.0-106-generic' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-4.15.0-106-generic-advanced-18a21bc3-6dd4-4d7a-a538-c7d935a00a63' { menuentry 'Ubuntu, with Linux 4.15.0-106-generic (recovery mode)' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-4.15.0-106-generic-recovery-18a21bc3-6dd4-4d7a-a538-c7d935a00a63' { Found linux image: /boot/vmlinuz-4.15.0-101-generic Found initrd image: /boot/initrd.img-4.15.0-101-generic menuentry 'Ubuntu, with Linux 4.15.0-101-generic' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-4.15.0-101-generic-advanced-18a21bc3-6dd4-4d7a-a538-c7d935a00a63' { menuentry 'Ubuntu, with Linux 4.15.0-101-generic (recovery mode)' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-4.15.0-101-generic-recovery-18a21bc3-6dd4-4d7a-a538-c7d935a00a63' {
der dann beim Boot via /etc/default/grub (vorher wegsichern!) ausgewählt wird
GRUB_DEFAULT="Advanced options for Ubuntu>Ubuntu, with Linux 4.15.0-101-generic"
nachdem ein
update-grub
fehlerfrei durchläuft.
Doof gedacht: wireguard-dkms baut natürlich trotzdem für den neueren Kernel. Weil? Weil er da ist. So simpel.
Das Ergebnis ist also das gleiche wie oben: wireguard-dkms fällt beim Modulbau auf die Nase – obwohl der Server mit dem älteren Kernel läuft.
Eigentlich total klar – aber die Finger auf den Tasten sind manchmal schneller als das Hirn dazu.
Einfacher – und dazu noch fehlerfreier bei den Nacharbeiten mit DKMS zu handhaben – ist ein simpler apt-get purge auf den neueren Kernel.
apt-get purge linux-image-4.15.0-106-generic apt-get clean ; apt-get autoremove
Dann evtl. noch die alten /etc/default/grub Inhalte wiederherstellen (falls mensch so blöd wie ich war), ein update-grub und nach einem Neustart ist wireguard wieder brav am Start.
Update
Was hier bezüglich Wireguard wunderbar funktioniert hat:
apt-get install --install-recommends linux-generic-hwe-18.04 apt-get install --reinstall wireguard-dkms wireguard-tools linux-headers-$(uname -r)
Ich hoffe, das hält nun eine Weile.