OpenVPN / ovpn-dco

OpenVPN Data Channel Offload in the linux kernel
101 stars 23 forks source link

Fedora 39 Build Issues #59

Closed gjcarter2 closed 4 months ago

gjcarter2 commented 4 months ago

root@vpn:~/dco# git clone https://gitlab.com/openvpn/ovpn-dco.git Cloning into 'ovpn-dco'... remote: Enumerating objects: 3568, done. remote: Counting objects: 100% (3568/3568), done. remote: Compressing objects: 100% (908/908), done. remote: Total 3568 (delta 2087), reused 3519 (delta 2062), pack-reused 0 Receiving objects: 100% (3568/3568), 976.43 KiB | 18.78 MiB/s, done. Resolving deltas: 100% (2087/2087), done. root@vpn:~/dco/ovpn-dco# make /root/dco/ovpn-dco/gen-compat-autoconf.sh /root/dco/ovpn-dco/compat-autoconf.h make -C /lib/modules/6.7.4-200.fc39.x86_64/build M=/root/dco/ovpn-dco PWD=/root/dco/ovpn-dco REVISION=0.2.20231117-4-g2aa7f93 CONFIG_OVPN_DCO_V2=m INSTALL_MOD_DIR=updates/ modules make[1]: Entering directory '/usr/src/kernels/6.7.4-200.fc39.x86_64' LD [M] /root/dco/ovpn-dco/drivers/net/ovpn-dco/ovpn-dco-v2.ko BTF [M] /root/dco/ovpn-dco/drivers/net/ovpn-dco/ovpn-dco-v2.ko /bin/sh: line 1: ./tools/bpf/resolve_btfids/resolve_btfids: No such file or directory make[3]: [scripts/Makefile.modfinal:57: /root/dco/ovpn-dco/drivers/net/ovpn-dco/ovpn-dco-v2.ko] Error 127 make[3]: Deleting file '/root/dco/ovpn-dco/drivers/net/ovpn-dco/ovpn-dco-v2.ko' make[2]: [/usr/src/kernels/6.7.4-200.fc39.x86_64/Makefile:1862: modules] Error 2 make[1]: [Makefile:246: __sub-make] Error 2 make[1]: Leaving directory '/usr/src/kernels/6.7.4-200.fc39.x86_64' make: *** [Makefile:47: all] Error 2

Is there something I am missing?

ordex commented 4 months ago

This is an issue with your kernel build root or distribution, not dependent on ovpn-dco.

My wild wild guess is that you are trying to compile ovpn-dco against a kernel tree that was not built and now the kernel Makefile is trying to use a tool that was also not built.

All this is happening because apparently your kernel config has BTF enabled, but I really have no clue how Fedora handles this. May be easier to ask Fedora people about this, unless @dsommers has some suggestion here (?)

dsommers commented 4 months ago

I have noe idea what's going wrong there. This is from an up-to-date Fedora 39 VM (just updated)

[dev]$ git clone https://gitlab.com/openvpn/ovpn-dco.git
Cloning into 'ovpn-dco'...
remote: Enumerating objects: 3568, done.
remote: Counting objects: 100% (3568/3568), done.
remote: Compressing objects: 100% (908/908), done.
remote: Total 3568 (delta 2087), reused 3519 (delta 2062), pack-reused 0
Receiving objects: 100% (3568/3568), 976.43 KiB | 5.95 MiB/s, done.
Resolving deltas: 100% (2087/2087), done.
[dev]$ cd ovpn-dco/
[ovpn-dco]$ make -j
/root/dev/ovpn-dco/gen-compat-autoconf.sh /root/dev/ovpn-dco/compat-autoconf.h
make -C /lib/modules/6.7.5-200.fc39.x86_64/build M=/root/dev/ovpn-dco PWD=/root/dev/ovpn-dco REVISION=0.2.20231117-4-g2aa7f93 CONFIG_OVPN_DCO_V2=m INSTALL_MOD_DIR=updates/ modules
make[1]: Entering directory '/usr/src/kernels/6.7.5-200.fc39.x86_64'
  CC [M]  /root/dev/ovpn-dco/drivers/net/ovpn-dco/main.o
  CC [M]  /root/dev/ovpn-dco/drivers/net/ovpn-dco/bind.o
  CC [M]  /root/dev/ovpn-dco/drivers/net/ovpn-dco/crypto.o
  CC [M]  /root/dev/ovpn-dco/drivers/net/ovpn-dco/ovpn.o
  CC [M]  /root/dev/ovpn-dco/drivers/net/ovpn-dco/peer.o
  CC [M]  /root/dev/ovpn-dco/drivers/net/ovpn-dco/sock.o
  CC [M]  /root/dev/ovpn-dco/drivers/net/ovpn-dco/stats.o
  CC [M]  /root/dev/ovpn-dco/drivers/net/ovpn-dco/netlink.o
  CC [M]  /root/dev/ovpn-dco/drivers/net/ovpn-dco/crypto_aead.o
  CC [M]  /root/dev/ovpn-dco/drivers/net/ovpn-dco/pktid.o
  CC [M]  /root/dev/ovpn-dco/drivers/net/ovpn-dco/tcp.o
  CC [M]  /root/dev/ovpn-dco/drivers/net/ovpn-dco/udp.o
  LD [M]  /root/dev/ovpn-dco/drivers/net/ovpn-dco/ovpn-dco-v2.o
  MODPOST /root/dev/ovpn-dco/Module.symvers
  CC [M]  /root/dev/ovpn-dco/drivers/net/ovpn-dco/ovpn-dco-v2.mod.o
  LD [M]  /root/dev/ovpn-dco/drivers/net/ovpn-dco/ovpn-dco-v2.ko
  BTF [M] /root/dev/ovpn-dco/drivers/net/ovpn-dco/ovpn-dco-v2.ko
Skipping BTF generation for /root/dev/ovpn-dco/drivers/net/ovpn-dco/ovpn-dco-v2.ko due to unavailability of vmlinux
make[1]: Leaving directory '/usr/src/kernels/6.7.5-200.fc39.x86_64'
[ovpn-dco]$ modinfo /root/dev/ovpn-dco/drivers/net/ovpn-dco/ovpn-dco-v2.ko
filename:       /root/dev/ovpn-dco/drivers/net/ovpn-dco/ovpn-dco-v2.ko
alias:          net-pf-16-proto-16-family-ovpn-dco-v2
alias:          rtnl-link-ovpn-dco
version:        0.2.20231117-4-g2aa7f93
license:        GPL
author:         (C) 2020-2023 OpenVPN, Inc.
description:    OpenVPN data channel offload (ovpn-dco)
rhelversion:    9.99
srcversion:     0CD167AC63C8FE2044A7F78
depends:        udp_tunnel,ip6_udp_tunnel
retpoline:      Y
name:           ovpn_dco_v2
vermagic:       6.7.5-200.fc39.x86_64 SMP preempt mod_unload 
[ovpn-dco]$ uname -r
6.7.5-200.fc39.x86_64
[ovpn-dco]$ 
dsommers commented 4 months ago

You could enable the dsommers/openvpn3 Copr repository and try installing kmod-ovpn-dco.

gjcarter2 commented 4 months ago

Just to clarify, this issue only happens in the "tests" part of the build. If I disable the tests, I can build the module.

So I will have a look at what the build assumptions are in the kernel and see whats amiss.

I just asked as it saves me time. Thanks.

gjcarter2 commented 4 months ago

I have resolved this issue, at least for Fedora 39.

To build the test parts I had to install the bpftool first:

dnf install bpftool

After which I had to install the following libraries:

dnf install libnl3-devel libnl3-cli libnl3 mbedtls-devel mbedtls

Then do the build:

root@vpn:~/dco/ovpn-dco# make tests make -C tests make[1]: Entering directory '/root/dco/ovpn-dco/tests' cc -Wall ovpn-cli.c -I../include/uapi \ pkg-config --cflags --libs libnl-3.0 libnl-genl-3.0 \ -lmbedtls -lmbedcrypto -Wall -o ovpn-cli make[1]: Leaving directory '/root/dco/ovpn-dco/tests'

Voila! Piece of Cake!

On to testing!

dsommers commented 4 months ago

Alright, then we can close this one.