kernel autoconf.h file no longer under include/linux
Posted: 30. Jan 2011, 13:15
Short form: The required kernel header file autoconf.h no longer lives at include/linux/autoconf.h; for quite some time, it's been at include/generated/autoconf.h, but VBox 4.0.2 doesn't seem to realize that.
Long form: I notice a few forum postings that seem to address this to some extent, but I don't see a resolution. Just yesterday, I tried to download and install VBox 4.0.2 on my Ubuntu 10.10 laptop, and it *appears* that VBox is still looking for autoconf.h in the old location, causing its installation to fail trying to use DKMS:
Unpacking virtualbox-4.0 (from virtualbox-4.0_4.0.2-69518~Ubuntu~maverick_amd64.deb) ...
Setting up virtualbox-4.0 (4.0.2-69518~Ubuntu~maverick) ...
addgroup: The group `vboxusers' already exists as a system group. Exiting.
update-rc.d: warning: vboxdrv stop runlevel arguments (0 1 6) do not match LSB Default-Stop values (1)
WARNING: Deprecated config file /etc/modprobe.conf, all config files belong into /etc/modprobe.d/.
* Stopping VirtualBox kernel modules * done.
* Uninstalling old VirtualBox DKMS kernel modules * done.
* Trying to register the VirtualBox kernel modules using DKMS
Error! Bad return status for module build on kernel: 2.6.38-rc2-00274-g1f0324c-dirty (x86_64)
Consult the make.log in the build directory
/var/lib/dkms/vboxhost/4.0.2/build/ for more information.
* Failed, trying without DKMS
... snip ...
the "make.log" file is pretty clear on the problem:
DKMS make.log for vboxhost-4.0.2 for kernel 2.6.38-rc2-00274-g1f0324c-dirty (x86_64)
Sun Jan 30 06:09:27 EST 2011
make: Entering directory `/home/rpjday/k/git'
LD /var/lib/dkms/vboxhost/4.0.2/build/built-in.o
LD /var/lib/dkms/vboxhost/4.0.2/build/vboxdrv/built-in.o
CC [M] /var/lib/dkms/vboxhost/4.0.2/build/vboxdrv/linux/SUPDrv-linux.o
In file included from /var/lib/dkms/vboxhost/4.0.2/build/vboxdrv/include/VBox/types.h:30,
from /var/lib/dkms/vboxhost/4.0.2/build/vboxdrv/linux/../SUPDrvInternal.h:35,
from /var/lib/dkms/vboxhost/4.0.2/build/vboxdrv/linux/SUPDrv-linux.c:31:
/var/lib/dkms/vboxhost/4.0.2/build/vboxdrv/include/iprt/types.h:105: fatal error: linux/autoconf.h: No such file or directory
compilation terminated.
make[2]: *** [/var/lib/dkms/vboxhost/4.0.2/build/vboxdrv/linux/SUPDrv-linux.o] Error 1
make[1]: *** [/var/lib/dkms/vboxhost/4.0.2/build/vboxdrv] Error 2
make: *** [_module_/var/lib/dkms/vboxhost/4.0.2/build] Error 2
make: Leaving directory `/home/rpjday/k/git'
and the relocation of that generated autoconf.h file appears to go back to december of 2009, according to the git commit:
commit 5a865c0606eb44d5d12cabb429751c83712183de
Merge: 331d9d5 46e75f6
Author: Linus Torvalds <torvalds@linux-foundation.org>
Date: Thu Dec 17 07:23:42 2009 -0800
Merge branch 'for-33' of git://repo.or.cz/linux-kbuild
* 'for-33' of git://repo.or.cz/linux-kbuild: (29 commits)
net: fix for utsrelease.h moving to generated
gen_init_cpio: fixed fwrite warning
kbuild: fix make clean after mismerge
kbuild: generate modules.builtin
genksyms: properly consider EXPORT_UNUSED_SYMBOL{,_GPL}()
score: add asm/asm-offsets.h wrapper
unifdef: update to upstream revision 1.190
kbuild: specify absolute paths for cscope
kbuild: create include/generated in silentoldconfig
scripts/package: deb-pkg: use fakeroot if available
scripts/package: add KBUILD_PKG_ROOTCMD variable
scripts/package: tar-pkg: use tar --owner=root
Kbuild: clean up marker
net: add net_tstamp.h to headers_install
kbuild: move utsrelease.h to include/generated
kbuild: move autoconf.h to include/generated <--- there!
drop explicit include of autoconf.h
kbuild: move compile.h to include/generated
kbuild: drop include/asm
kbuild: do not check for include/asm-$ARCH
So is this a known issue? A possible workaround is to just symlink manually, but that seems to be an ugly hack. Or is this a DKMS issue? This is on an updated Ubuntu 10.10 system.
rday
ADDENDUM: From what I've seen online, the simple fix would seem to be the preprocessor code:
-#include <linux/autoconf.h>
+#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 33)
+# include <linux/autoconf.h>
+#else
+# include <generated/autoconf.h>
+#endif
MORE ADDENDUM: As a quick workaround, all I did was add the single appropriate symlink for autoconf.h to my configured kernel source tree and the installation of VBox seemed to work fine.
Long form: I notice a few forum postings that seem to address this to some extent, but I don't see a resolution. Just yesterday, I tried to download and install VBox 4.0.2 on my Ubuntu 10.10 laptop, and it *appears* that VBox is still looking for autoconf.h in the old location, causing its installation to fail trying to use DKMS:
Unpacking virtualbox-4.0 (from virtualbox-4.0_4.0.2-69518~Ubuntu~maverick_amd64.deb) ...
Setting up virtualbox-4.0 (4.0.2-69518~Ubuntu~maverick) ...
addgroup: The group `vboxusers' already exists as a system group. Exiting.
update-rc.d: warning: vboxdrv stop runlevel arguments (0 1 6) do not match LSB Default-Stop values (1)
WARNING: Deprecated config file /etc/modprobe.conf, all config files belong into /etc/modprobe.d/.
* Stopping VirtualBox kernel modules * done.
* Uninstalling old VirtualBox DKMS kernel modules * done.
* Trying to register the VirtualBox kernel modules using DKMS
Error! Bad return status for module build on kernel: 2.6.38-rc2-00274-g1f0324c-dirty (x86_64)
Consult the make.log in the build directory
/var/lib/dkms/vboxhost/4.0.2/build/ for more information.
* Failed, trying without DKMS
... snip ...
the "make.log" file is pretty clear on the problem:
DKMS make.log for vboxhost-4.0.2 for kernel 2.6.38-rc2-00274-g1f0324c-dirty (x86_64)
Sun Jan 30 06:09:27 EST 2011
make: Entering directory `/home/rpjday/k/git'
LD /var/lib/dkms/vboxhost/4.0.2/build/built-in.o
LD /var/lib/dkms/vboxhost/4.0.2/build/vboxdrv/built-in.o
CC [M] /var/lib/dkms/vboxhost/4.0.2/build/vboxdrv/linux/SUPDrv-linux.o
In file included from /var/lib/dkms/vboxhost/4.0.2/build/vboxdrv/include/VBox/types.h:30,
from /var/lib/dkms/vboxhost/4.0.2/build/vboxdrv/linux/../SUPDrvInternal.h:35,
from /var/lib/dkms/vboxhost/4.0.2/build/vboxdrv/linux/SUPDrv-linux.c:31:
/var/lib/dkms/vboxhost/4.0.2/build/vboxdrv/include/iprt/types.h:105: fatal error: linux/autoconf.h: No such file or directory
compilation terminated.
make[2]: *** [/var/lib/dkms/vboxhost/4.0.2/build/vboxdrv/linux/SUPDrv-linux.o] Error 1
make[1]: *** [/var/lib/dkms/vboxhost/4.0.2/build/vboxdrv] Error 2
make: *** [_module_/var/lib/dkms/vboxhost/4.0.2/build] Error 2
make: Leaving directory `/home/rpjday/k/git'
and the relocation of that generated autoconf.h file appears to go back to december of 2009, according to the git commit:
commit 5a865c0606eb44d5d12cabb429751c83712183de
Merge: 331d9d5 46e75f6
Author: Linus Torvalds <torvalds@linux-foundation.org>
Date: Thu Dec 17 07:23:42 2009 -0800
Merge branch 'for-33' of git://repo.or.cz/linux-kbuild
* 'for-33' of git://repo.or.cz/linux-kbuild: (29 commits)
net: fix for utsrelease.h moving to generated
gen_init_cpio: fixed fwrite warning
kbuild: fix make clean after mismerge
kbuild: generate modules.builtin
genksyms: properly consider EXPORT_UNUSED_SYMBOL{,_GPL}()
score: add asm/asm-offsets.h wrapper
unifdef: update to upstream revision 1.190
kbuild: specify absolute paths for cscope
kbuild: create include/generated in silentoldconfig
scripts/package: deb-pkg: use fakeroot if available
scripts/package: add KBUILD_PKG_ROOTCMD variable
scripts/package: tar-pkg: use tar --owner=root
Kbuild: clean up marker
net: add net_tstamp.h to headers_install
kbuild: move utsrelease.h to include/generated
kbuild: move autoconf.h to include/generated <--- there!
drop explicit include of autoconf.h
kbuild: move compile.h to include/generated
kbuild: drop include/asm
kbuild: do not check for include/asm-$ARCH
So is this a known issue? A possible workaround is to just symlink manually, but that seems to be an ugly hack. Or is this a DKMS issue? This is on an updated Ubuntu 10.10 system.
rday
ADDENDUM: From what I've seen online, the simple fix would seem to be the preprocessor code:
-#include <linux/autoconf.h>
+#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 33)
+# include <linux/autoconf.h>
+#else
+# include <generated/autoconf.h>
+#endif
MORE ADDENDUM: As a quick workaround, all I did was add the single appropriate symlink for autoconf.h to my configured kernel source tree and the installation of VBox seemed to work fine.