Trixie Updates Question

spetrillo

Member
Feb 15, 2024
288
15
18
Hello all,

How do Trixie kernel updates get folded into Proxmox? For example I have a Debian Trixie 13.2 server. I have an Intel E610 10g adapter in the server. The kernel driver for this is old, so I can compile a more recent driver and then modinfo it in. With Proxmox 9, and using your own kernel, that ability to compile a more recent driver fails. So then how do kernel updates get updated in the Proxmox kernel and about how long do we wait for these updates?

Thanks,
Steve
 
What exactly does fail where? You have the pve-headers which let you compile modules all by yourself and blacklist existing ones. The reason that (in most cases) this step is taken very rarely is that you have to recompile everything once Proxmox releases a kernel update.*

Meanwhile you can try to get the upstream to get newer drivers with Trixie (trust me, thats gonna be a tough one, been there, done that!)
 
Last edited:
Unforunately the make fails bc its looking for linux headers and not PVE headers. Is there a way to edit the script to change this?

** The target kernel has CONFIG_MODULE_SIG_ALL enabled, but
*** the signing key cannot be found. Module signing has been
*** disabled for this build.
make[1]: Entering directory '/usr/src/linux-headers-6.17.4-1-pve'
make[2]: Entering directory '/root/ixgbe-6.2.6/src'
CC [M] ixgbe_main.o
ixgbe_main.c: In function ‘ixgbe_down’:
ixgbe_main.c:8458:9: error: implicit declaration of function ‘del_timer_sync’; did you mean ‘dev_mc_sync’? [-Wimplicit-function-declaration]
8458 | del_timer_sync(&adapter->service_timer);
| ^~~~~~~~~~~~~~
| dev_mc_sync
ixgbe_main.c: In function ‘ixgbe_service_timer’:
ixgbe_main.c:10708:41: error: implicit declaration of function ‘from_timer’; did you mean ‘mod_timer’? [-Wimplicit-function-declaration]
10708 | struct ixgbe_adapter *adapter = from_timer(adapter, t, service_timer);
| ^~~~~~~~~~
| mod_timer
ixgbe_main.c:10708:64: error: ‘service_timer’ undeclared (first use in this function); did you mean ‘device_type’?
10708 | struct ixgbe_adapter *adapter = from_timer(adapter, t, service_timer);
| ^~~~~~~~~~~~~
| device_type
ixgbe_main.c:10708:64: note: each undeclared identifier is reported only once for each function it appears in
make[4]: *** [/usr/src/linux-headers-6.17.4-1-pve/scripts/Makefile.build:287: ixgbe_main.o] Error 1
make[3]: *** [/usr/src/linux-headers-6.17.4-1-pve/Makefile:2016: .] Error 2
make[2]: *** [/usr/src/linux-headers-6.17.4-1-pve/Makefile:248: __sub-make] Error 2
make[2]: Leaving directory '/root/ixgbe-6.2.6/src'
make[1]: *** [Makefile:248: __sub-make] Error 2
make[1]: Leaving directory '/usr/src/linux-headers-6.17.4-1-pve'
make: *** [Makefile:111: default] Error 2
 
That doesnt look like anything related to Linux/PVE but instead to the certain Kernel calls which have been renamed? or rewritten between older and newer Kernels and your driver tries to call functions which have been renamed and thus the compilation fails. Did you try patching those functions?
 
  • Like
Reactions: LnxBil
I did not...this is getting to the limit of my compilation skills, so not sure if I want to keep going. What I also did is build a Debian 13.2 server with 6.17 kernel. I want to run through the process on this and see if it fails. Intel gets wonky when they hear Proxmox, but if they peeled back the onion its just Debian with a specialized kernel.
 
The Proxmox kernel is based on the Ubuntu kernel, not the Debian kernel. My guess would be that the driver version 6.2.6 is too old and no longer compatible with Linux kernel 6.17.

EDIT: Sorry for not adding anything new.
 
Last edited:
The Proxmox kernel is based on the Ubuntu kernel, not the Debian kernel. My guess would be that the driver version 6.2.6 is too old and no longer compatible with Linux kernel 6.17.

Ubuntu/Debian are binary compatible so that should not be a problem. The latter though is what i suspected in my previous post aswell.
@spetrillo You could try downgrade to an older kernel and try rebuild the module again but then you're stuck with an older kernel.
 
Last edited:
I am going to play around a bit more. Its really confusing that Proxmox uses Debian and Ubuntu. Why not just standardize on one platform. Thanks for that info @leesteken!
 
Ubuntu/Debian are binary compatible so that should not be a problem.
Are you sure? Allthough they share the same package format I always assumed that Ubuntu takes Debian ( I think unstable ) as base and customizing it, resulting in xases where binary compatibility is not guranteed any more

I am going to play around a bit more. Its really confusing that Proxmox uses Debian and Ubuntu.

It's actually quite smart. Many hardware vendors don't support Debian but Ubuntu so by using the Ubuntu kernel people can see whether their Hardware Supports running Proxmox. The Ubuntu-Kernel also has features Debian lacks like ZFS ( ZFS is not included in Debian kernel by default due to legal concerns).
But: Ubuntu is solely developed by one Company ( Canonical ) not a community project like Debian and has quite a lot of Anomalys ( like replacing regular deb packages with snap packages) which make sense for Canonicals business model but not for other projects. So it makes sense not to depend on Ububtu for anything expect the kernel ( which could be swapped should the need arise)
 
Last edited:
  • Like
Reactions: pvps1 and LnxBil
Unforunately the make fails bc its looking for linux headers and not PVE headers. Is there a way to edit the script to change this?

** The target kernel has CONFIG_MODULE_SIG_ALL enabled, but
*** the signing key cannot be found. Module signing has been
*** disabled for this build.
make[1]: Entering directory '/usr/src/linux-headers-6.17.4-1-pve'
make[2]: Entering directory '/root/ixgbe-6.2.6/src'
CC [M] ixgbe_main.o
ixgbe_main.c: In function ‘ixgbe_down’:
ixgbe_main.c:8458:9: error: implicit declaration of function ‘del_timer_sync’; did you mean ‘dev_mc_sync’? [-Wimplicit-function-declaration]
8458 | del_timer_sync(&adapter->service_timer);
| ^~~~~~~~~~~~~~
| dev_mc_sync
ixgbe_main.c: In function ‘ixgbe_service_timer’:
ixgbe_main.c:10708:41: error: implicit declaration of function ‘from_timer’; did you mean ‘mod_timer’? [-Wimplicit-function-declaration]
10708 | struct ixgbe_adapter *adapter = from_timer(adapter, t, service_timer);
| ^~~~~~~~~~
| mod_timer
ixgbe_main.c:10708:64: error: ‘service_timer’ undeclared (first use in this function); did you mean ‘device_type’?
10708 | struct ixgbe_adapter *adapter = from_timer(adapter, t, service_timer);
| ^~~~~~~~~~~~~
| device_type
ixgbe_main.c:10708:64: note: each undeclared identifier is reported only once for each function it appears in
make[4]: *** [/usr/src/linux-headers-6.17.4-1-pve/scripts/Makefile.build:287: ixgbe_main.o] Error 1
make[3]: *** [/usr/src/linux-headers-6.17.4-1-pve/Makefile:2016: .] Error 2
make[2]: *** [/usr/src/linux-headers-6.17.4-1-pve/Makefile:248: __sub-make] Error 2
make[2]: Leaving directory '/root/ixgbe-6.2.6/src'
make[1]: *** [Makefile:248: __sub-make] Error 2
make[1]: Leaving directory '/usr/src/linux-headers-6.17.4-1-pve'
make: *** [Makefile:111: default] Error 2
I had the same build issue with ixgbe-6.2.5 under PVE 9.1 (kernel 6.17.4-2-pve).
This now appears to be resolved in the latest driver release ixgbe-6.3.4.
Today I successfully built ixgbe-6.3.4 with kernel 6.17.4-2-pve (to resolve this issue) and it is working well for me.
 
Would you mind listing the steps to build it? I would like to try on my Proxmox server.
Here are the steps:
Code:
root@pve1:~# wget https://github.com/intel/ethernet-linux-ixgbe/releases/download/v6.3.4/ixgbe-6.3.4.tar.gz
root@pve1:~# tar xvpf ixgbe-6.3.4.tar.gz
root@pve1:~# cd ixgbe-6.3.4/src/
root@pve1:~/ixgbe-6.3.4/src# apt install pve-headers build-essential
root@pve1:~/ixgbe-6.3.4/src# make install
root@pve1:~/ixgbe-6.3.4/src# modinfo ixgbe | head -2
filename:       /lib/modules/6.17.4-2-pve/updates/drivers/net/ethernet/intel/ixgbe/ixgbe.ko
version:        6.3.4
root@pve1:~/ixgbe-6.3.4/src# systemctl reboot
 
Here are the steps:
Code:
root@pve1:~# wget https://github.com/intel/ethernet-linux-ixgbe/releases/download/v6.3.4/ixgbe-6.3.4.tar.gz
root@pve1:~# tar xvpf ixgbe-6.3.4.tar.gz
root@pve1:~# cd ixgbe-6.3.4/src/
root@pve1:~/ixgbe-6.3.4/src# apt install pve-headers build-essential
root@pve1:~/ixgbe-6.3.4/src# make install
root@pve1:~/ixgbe-6.3.4/src# modinfo ixgbe | head -2
filename:       /lib/modules/6.17.4-2-pve/updates/drivers/net/ethernet/intel/ixgbe/ixgbe.ko
version:        6.3.4
root@pve1:~/ixgbe-6.3.4/src# systemctl reboot

OMG this worked perfectly! Thank you for this. I see in the new driver package that there is an updated NVM for the E610. I will get that updated also.

Ever feel like tech is like 2 steps forward and 1 step back?? Well I certainly do. Upon reboot it looks like the kernel does not see my E610 any longer:

Jan 10 12:15:03 pve01 networking[1011]: error: vmbr2: bridge port enp2s0f1 does not exist
Jan 10 12:15:03 pve01 /usr/sbin/ifup[1011]: error: vmbr2: bridge port enp2s0f1 does not exist
Jan 10 12:15:03 pve01 networking[1011]: warning: vmbr2: apply bridge ports settings: bridge configuration failed (missing ports)
Jan 10 12:15:03 pve01 /usr/sbin/ifup[1011]: warning: vmbr2: apply bridge ports settings: bridge configuration failed (missing ports)
Jan 10 12:15:03 pve01 blkmapd[1090]: open pipe file /run/rpc_pipefs/nfs/blocklayout failed: No such file or directory
Jan 10 12:15:03 pve01 networking[1011]: warning: vmbr2: post-up cmd 'ethtool -s enp2s0f0 speed 2500 duplex full autoneg on' failed: returned 75 (netlink error: no device matches name (offset 24)
Jan 10 12:15:03 pve01 networking[1011]: netlink error: No such device
Jan 10 12:15:03 pve01 networking[1011]: )
Jan 10 12:15:03 pve01 /usr/sbin/ifup[1011]: warning: vmbr2: post-up cmd 'ethtool -s enp2s0f0 speed 2500 duplex full autoneg on' failed: returned 75 (netlink error: no device matches name (offset 24)
netlink error: No such device
)
Jan 10 12:15:03 pve01 systemd[1]: Started nfs-blkmap.service - pNFS block layout mapping daemon.
Jan 10 12:15:03 pve01 networking[1011]: warning: vmbr2: post-up cmd 'ethtool -s enp2s0f1 speed 2500 duplex full autoneg on' failed: returned 75 (netlink error: no device matches name (offset 24)
Jan 10 12:15:03 pve01 networking[1011]: netlink error: No such device
Jan 10 12:15:03 pve01 networking[1011]: )
Jan 10 12:15:03 pve01 /usr/sbin/ifup[1011]: warning: vmbr2: post-up cmd 'ethtool -s enp2s0f1 speed 2500 duplex full autoneg on' failed: returned 75 (netlink error: no device matches name (offset 24)
netlink error: No such device
)


I had to go back to the previous kernel and it sees the adapter again. Did you run into this?
 
Somehow my adapter is coming up unitialized. Here is the log from the fail:

Jan 10 12:15:00 pve01 kernel: ixgbe 0000:02:00.0 0000:02:00.0 (uninitialized): ixgbe_check_options: FCoE Offload feature enabled
Jan 10 12:15:00 pve01 kernel: ixgbe 0000:02:00.0: FCoE offload feature is not available. Disabling FCoE offload feature
Jan 10 12:15:00 pve01 kernel: ixgbe 0000:02:00.0: Multiqueue Enabled: Rx Queue count = 8, Tx Queue count = 8 XDP Queue count = 0
Jan 10 12:15:00 pve01 kernel: ixgbe 0000:02:00.0: 31.504 Gb/s available PCIe bandwidth, limited by 8.0 GT/s PCIe x4 link at 0000:00:1d.0 (capable of 63.012 Gb/s with 16.0 GT/s PCIe x4 link)
Jan 10 12:15:00 pve01 kernel: ixgbe 0000:02:00.0 eth0: MAC: 7, PHY: 27, PBA No: N42545-005
Jan 10 12:15:00 pve01 kernel: ixgbe 0000:02:00.0: 20:3a:43:15:69:08
Jan 10 12:15:00 pve01 kernel: ixgbe 0000:02:00.0 eth0: Enabled Features: RxQ: 8 TxQ: 8 FdirHash vxlan_rx
Jan 10 12:15:00 pve01 kernel: ixgbe 0000:02:00.0 eth0: Intel(R) 10 Gigabit Network Connection
Jan 10 12:15:00 pve01 kernel: ixgbe 0000:02:00.0: Registered PHC device on eth0
Jan 10 12:15:00 pve01 kernel: ixgbe 0000:02:00.1 0000:02:00.1 (uninitialized): ixgbe_check_options: FCoE Offload feature enabled
Jan 10 12:15:00 pve01 kernel: ixgbe 0000:02:00.1: FCoE offload feature is not available. Disabling FCoE offload feature
Jan 10 12:15:00 pve01 kernel: ixgbe 0000:02:00.1: Multiqueue Enabled: Rx Queue count = 8, Tx Queue count = 8 XDP Queue count = 0
Jan 10 12:15:00 pve01 kernel: ixgbe 0000:02:00.1: 31.504 Gb/s available PCIe bandwidth, limited by 8.0 GT/s PCIe x4 link at 0000:00:1d.0 (capable of 63.012 Gb/s with 16.0 GT/s PCIe x4 link)
Jan 10 12:15:00 pve01 kernel: ixgbe 0000:02:00.1 eth1: MAC: 7, PHY: 27, PBA No: N42545-005
Jan 10 12:15:00 pve01 kernel: ixgbe 0000:02:00.1: 20:3a:43:15:69:09
Jan 10 12:15:00 pve01 kernel: ixgbe 0000:02:00.1 eth1: Enabled Features: RxQ: 8 TxQ: 8 FdirHash vxlan_rx
Jan 10 12:15:00 pve01 kernel: ixgbe 0000:02:00.1 eth1: Intel(R) 10 Gigabit Network Connection
Jan 10 12:15:00 pve01 kernel: ixgbe 0000:02:00.1: Registered PHC device on eth1
Jan 10 12:15:00 pve01 kernel: ixgbe 0000:02:00.1 enp2s0f1np1: renamed from eth1
Jan 10 12:15:00 pve01 kernel: ixgbe 0000:02:00.0 enp2s0f0np0: renamed from eth0

Here is the log from the success:

Jan 10 12:29:57 pve01 kernel: ixgbe 0000:02:00.0: Multiqueue Enabled: Rx Queue count = 8, Tx Queue count = 8 XDP Queue count = 0
Jan 10 12:29:57 pve01 kernel: ixgbe 0000:02:00.0: 31.504 Gb/s available PCIe bandwidth, limited by 8.0 GT/s PCIe x4 link at 0000:00:1d.0 (capable of 63.012 Gb/s with 16.0 GT/s PCIe x4 link)
Jan 10 12:29:57 pve01 kernel: ixgbe 0000:02:00.0: MAC: 7, PHY: 27, PBA No: N42545-005
Jan 10 12:29:57 pve01 kernel: ixgbe 0000:02:00.0: 20:3a:43:15:69:08
Jan 10 12:29:57 pve01 kernel: ixgbe 0000:02:00.0: Intel(R) 10 Gigabit Network Connection
Jan 10 12:29:57 pve01 kernel: ixgbe 0000:02:00.1: Multiqueue Enabled: Rx Queue count = 8, Tx Queue count = 8 XDP Queue count = 0
Jan 10 12:29:57 pve01 kernel: ixgbe 0000:02:00.1: 31.504 Gb/s available PCIe bandwidth, limited by 8.0 GT/s PCIe x4 link at 0000:00:1d.0 (capable of 63.012 Gb/s with 16.0 GT/s PCIe x4 link)
Jan 10 12:29:57 pve01 kernel: ixgbe 0000:02:00.1: MAC: 7, PHY: 27, PBA No: N42545-005
Jan 10 12:29:57 pve01 kernel: ixgbe 0000:02:00.1: 20:3a:43:15:69:09
Jan 10 12:29:57 pve01 kernel: ixgbe 0000:02:00.1: Intel(R) 10 Gigabit Network Connection
Jan 10 12:29:57 pve01 kernel: ixgbe 0000:02:00.0 enp2s0f0: renamed from eth0
Jan 10 12:29:57 pve01 kernel: ixgbe 0000:02:00.1 enp2s0f1: renamed from eth1


It looks as though there might be some options that are enabled with the driver update? I am noticing FCoE offload in the fail and its not in the success log.