WireGuard ошибки в Centos 8 Stream

    Ошибки после обновления на Centos 8 Stream

    После обновления Centos 8 Stream, ядро переехало на версию:

    # uname -a
    Linux srv.local 4.18.0-492.el8.x86_64 #1 SMP Tue May 9 17:56:55 UTC 2023 x86_64 x86_64 x86_64 GNU/Linux</

    Так как я ставил из репозитория PowerTools, то модуль у меня собирается через dkms. Выбрал этот способ по причине отсутствия в EPEL kmod-модулей под "свежие" ядра. Так вот перестал собираться модуль dkms-wireguard под новое ядро. В логе наблюдаем следующие ошибки:

    /var/lib/dkms/wireguard/1.0.20220627/build/compat/compat.h:412:19: error: redefinition of ‘ktime_get_coarse_boottime_ns’
    /var/lib/dkms/wireguard/1.0.20220627/build/queueing.h:85:34: error: ‘struct sk_buff’ has no member named ‘headers_end’; did you mean ‘headers’?
    

    Из-за чего не стартовал WireGuard - сервер, что и понятно, отсутствовал модуль ядра:

    Jun 02 09:28:19 srv.local systemd[1]: Starting WireGuard via wg-quick(8) for wg0...
    Jun 02 09:28:19 srv.local wg-quick[742]: [#] ip link add wg0 type wireguard
    Jun 02 09:28:19 srv.local wg-quick[781]: Error: Unknown device type.
    Jun 02 09:28:19 srv.local wg-quick[787]: Unable to access interface: Protocol not supported
    Jun 02 09:28:19 srv.local wg-quick[742]: [#] ip link delete dev wg0
    Jun 02 09:28:19 srv.local wg-quick[806]: Cannot find device "wg0"
    Jun 02 09:28:19 srv.local systemd[1]: wg-quick@wg0.service: Main process exited, code=exited, status=1/FAILURE
    Jun 02 09:28:19 srv.local systemd[1]: wg-quick@wg0.service: Failed with result 'exit-code'.
    Jun 02 09:28:19 srv.local systemd[1]: Failed to start WireGuard via wg-quick(8) for wg0.
    [root@git ~]# dnf reinstall wireguard-dkms wireguard-tools
    

    После нескольких часов поиска нашел патчи под исходники wireguard-linux-compat

    Выкладываю уже пропатченные файлы (патчи в архиве тоже присутствуют). Распаковываем, заменяем содержимое каталога /var/lib/dkms/wireguard/1.0.20220627/ содержимым архива wireguard-1.0.20220627_patched.tar.gz и собираем модуль ядра заново.

    #/usr/lib/dkms/dkms_autoinstaller start
    dkms: running auto installation service for kernel 4.18.0-492.el8.x86_64Sign command: /lib/modules/4.18.0-492.el8.x86_64/build/scripts/sign-file
    Signing key: /var/lib/dkms/mok.key
    Public certificate (MOK): /var/lib/dkms/mok.pub
    
    Building module:
    Cleaning build area...
    make -j4 KERNELRELEASE=4.18.0-492.el8.x86_64 -C /lib/modules/4.18.0-492.el8.x86_64/build M=/var/lib/dkms/wireguard/1.0.20220627/build.....
    Signing module /var/lib/dkms/wireguard/1.0.20220627/build/wireguard.ko
    Cleaning build area...
    wireguard.ko.xz:
    Running module version sanity check.
     - Original module
       - No original module exists within this kernel
     - Installation
       - Installing to /lib/modules/4.18.0-492.el8.x86_64/extra/
    Adding any weak-modules
    depmod....
    dkms autoinstall on 4.18.0-492.el8.x86_64/x86_64 succeeded for wireguard
     Done.
    

    Всё, можно запускать сервис на новом ядре

    Copyright © 2022Powered by Bludit