Open unode opened 1 year ago
I also have the same compile error when building but on kernel 6.1.43. I tried VirtualBox 7.0.8 and also the latest 7.0.10 with the same result as well.
# nix-shell -p nix-info --run "nix-info -m"
- system: `"x86_64-linux"`
- host os: `Linux 6.1.43, NixOS, 23.05 (Stoat), 23.05.2613.011567f35433`
- multi-user?: `yes`
- sandbox: `yes`
- version: `nix-env (Nix) 2.13.3`
- channels(root): `"nixos-23.05"`
- nixpkgs: `/nix/var/nix/profiles/per-user/root/channels/nixos`
Has been reported upstream and the cause identified to be a move of some code between kernel files.
This thread includes the fix which seems to be a simple off-by-one version check.
/usr/src/virtualbox-7.0.10/vboxnetflt/linux/VBoxNetFlt-linux.c line 50 reads:
#if RTLNX_VER_MIN(6,5,0)
But the current kernel is still 6.4. So you have to change the line into
#if RTLNX_VER_MIN(6,4,0)
Can we apply this patch ourselves until upstream makes a new release?
Tagging @sander and @cdepillabout as virtualbox/vbox-extensions package maintainers.
Patch available here https://gitlab.archlinux.org/archlinux/packaging/packages/virtualbox/-/blob/5711067e6a052c2f6a2a3078254f8e7bdcef0bd7/019-linux-6-4-10.patch
diff -Nurp VirtualBox-7.0.10/src/VBox/HostDrivers/VBoxNetFlt/linux/VBoxNetFlt-linux.c VirtualBox-7.0.10-linux6410/src/VBox/HostDrivers/VBoxNetFlt/linux/VBoxNetFlt-linux.c
--- VirtualBox-7.0.10/src/VBox/HostDrivers/VBoxNetFlt/linux/VBoxNetFlt-linux.c 2023-07-12 16:36:55.000000000 +0000
+++ VirtualBox-7.0.10-linux6410/src/VBox/HostDrivers/VBoxNetFlt/linux/VBoxNetFlt-linux.c 2023-08-11 12:18:01.841396649 +0000
@@ -47,7 +47,7 @@
#if RTLNX_VER_MIN(2,6,24)
# include <linux/nsproxy.h>
#endif
-#if RTLNX_VER_MIN(6,5,0)
+#if RTLNX_VER_MIN(6,4,10)
# include <net/gso.h>
#endif
#include <linux/netdevice.h>
Will also need a nixos-23.05
backport of https://github.com/NixOS/nixpkgs/commit/3c10b650b91ab6a6ca6839f5e280e091cba793aa
Backport request for vbox 7.0.10 exists #248853 and reports building on kernel 6.4. This may be fixed by that PR
See also https://bugs.gentoo.org/912168#c5
Is there any progress on the issue? As far as I can see on my system, the problem still persists as of 3efb0f6f404ec8dae31bdb1a9b17705ce0d6986e
I get a similar error with 7.0.10:
make[2]: warning: -j8 forced in submake: resetting jobserver mode.
CC [M] /build/virtualbox-7.0.10-modsrc/vboxnetadp/linux/VBoxNetAdp-linux.o
CC [M] /build/virtualbox-7.0.10-modsrc/vboxnetflt/linux/VBoxNetFlt-linux.o
CC [M] /build/virtualbox-7.0.10-modsrc/vboxnetadp/VBoxNetAdp.o
CC [M] /build/virtualbox-7.0.10-modsrc/vboxnetflt/VBoxNetFlt.o
CC [M] /build/virtualbox-7.0.10-modsrc/vboxnetflt/SUPR0IdcClient.o
CC [M] /build/virtualbox-7.0.10-modsrc/vboxnetflt/SUPR0IdcClientComponent.o
CC [M] /build/virtualbox-7.0.10-modsrc/vboxnetflt/linux/SUPR0IdcClient-linux.o
/build/virtualbox-7.0.10-modsrc/vboxnetflt/linux/VBoxNetFlt-linux.c: In function 'vboxNetFltLinuxForwardToIntNetInner':
/build/virtualbox-7.0.10-modsrc/vboxnetflt/linux/VBoxNetFlt-linux.c:1570:40: error: implicit declaration of function 'skb_gso_segment'; did you mean 'skb_gso_reset'? [8;;https://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html#index-Wimplicit-function-declaration-Werror=implicit-function-declaration8;;]
1570 | struct sk_buff *pSegment = skb_gso_segment(pBuf, 0 /*supported features*/);
| ^~~~~~~~~~~~~~~
| skb_gso_reset
/build/virtualbox-7.0.10-modsrc/vboxnetflt/linux/VBoxNetFlt-linux.c:1570:40: warning: initialization of 'struct sk_buff *' from 'int' makes pointer from integer without a cast [8;;https://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html#index-Wint-conversion-Wint-conversion8;;]
LD [M] /build/virtualbox-7.0.10-modsrc/vboxnetadp/vboxnetadp.o
Confirm that it still fails.
Kernel is 6.4.12
I get a similar error with 7.0.10:
make[2]: warning: -j8 forced in submake: resetting jobserver mode. CC [M] /build/virtualbox-7.0.10-modsrc/vboxnetadp/linux/VBoxNetAdp-linux.o CC [M] /build/virtualbox-7.0.10-modsrc/vboxnetflt/linux/VBoxNetFlt-linux.o CC [M] /build/virtualbox-7.0.10-modsrc/vboxnetadp/VBoxNetAdp.o CC [M] /build/virtualbox-7.0.10-modsrc/vboxnetflt/VBoxNetFlt.o CC [M] /build/virtualbox-7.0.10-modsrc/vboxnetflt/SUPR0IdcClient.o CC [M] /build/virtualbox-7.0.10-modsrc/vboxnetflt/SUPR0IdcClientComponent.o CC [M] /build/virtualbox-7.0.10-modsrc/vboxnetflt/linux/SUPR0IdcClient-linux.o /build/virtualbox-7.0.10-modsrc/vboxnetflt/linux/VBoxNetFlt-linux.c: In function 'vboxNetFltLinuxForwardToIntNetInner': /build/virtualbox-7.0.10-modsrc/vboxnetflt/linux/VBoxNetFlt-linux.c:1570:40: error: implicit declaration of function 'skb_gso_segment'; did you mean 'skb_gso_reset'? [8;;https://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html#index-Wimplicit-function-declaration-Werror=implicit-function-declaration8;;] 1570 | struct sk_buff *pSegment = skb_gso_segment(pBuf, 0 /*supported features*/); | ^~~~~~~~~~~~~~~ | skb_gso_reset /build/virtualbox-7.0.10-modsrc/vboxnetflt/linux/VBoxNetFlt-linux.c:1570:40: warning: initialization of 'struct sk_buff *' from 'int' makes pointer from integer without a cast [8;;https://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html#index-Wint-conversion-Wint-conversion8;;] LD [M] /build/virtualbox-7.0.10-modsrc/vboxnetadp/vboxnetadp.o
Confirm that it still fails.
Kernel is
6.4.12
exactly same on xanmod kernel 6.4.12
As a workaround you can add to your configuration.nix
virtualisation.virtualbox.host.package = (pkgs.virtualbox.overrideAttrs (old: {
patches = old.patches or [] ++ [
./patches/VBoxNetFlt-linux-6.4.10.patch
];
}));
with following .patch
$ cat ./patches/VBoxNetFlt-linux-6.4.10.patch
diff --git a/src/VBox/HostDrivers/VBoxNetFlt/linux/VBoxNetFlt-linux.c b/src/VBox/HostDrivers/VBoxNetFlt/linux/VBoxNetFlt-linux.c
index 127f995..4aec33f 100644
--- a/src/VBox/HostDrivers/VBoxNetFlt/linux/VBoxNetFlt-linux.c
+++ b/src/VBox/HostDrivers/VBoxNetFlt/linux/VBoxNetFlt-linux.c
@@ -47,7 +47,7 @@
#if RTLNX_VER_MIN(2,6,24)
# include <linux/nsproxy.h>
#endif
-#if RTLNX_VER_MIN(6,5,0)
+#if RTLNX_VER_MIN(6,4,10)
# include <net/gso.h>
#endif
#include <linux/netdevice.h>
Alternatively, you can now also switch to kernel 6.5.
boot.kernelPackages = pkgs.linuxPackagesFor pkgs.linux_latest;
pulls kernel 6.5.1 and we are back in business.
Steps To Reproduce
Steps to reproduce the behavior:
virtualisation.virtualbox.host.enable = true
nixos-rebuild boot
Build log
Metadata
Possibly related to #248548 but the error is different.