Page 1 of 1

Failed to build the kernel module

Posted: 6. Aug 2008, 14:14
by -j
Hello,

I' am trying to install VB on my Linux machine. Unfortunately installation fails when it tries to build kernel module:

Code: Select all

[root@Gateway install]# ./install.sh
VirtualBox Version 1.6.4 (Tue Jul 29 20:45:09 CEST 2008) installation
Removing previous installation of VirtualBox 1.6.4 from /opt/VirtualBox-1.6.4
Installing VirtualBox to /opt/VirtualBox-1.6.4
# Start vboxdrv
if [ -x /etc/rc.d/rc.vboxdrv ]; then
    /etc/rc.d/rc.vboxdrv start
# Start vboxnet
if [ -x /etc/rc.d/rc.vboxnet ]; then
    /etc/rc.d/rc.vboxnet start
Building the VirtualBox kernel module
Failed to build the kernel module.  Please check the log file /var/log/vbox-install.log for more information.

VirtualBox has been installed successfully, but the kernel module could not
be built.  When you have fixed the problems preventing this, execute
  /etc/init.d/vboxdrv setup
as administrator to build it.
[...]
In the file mentioned above I found this:

Code: Select all

VirtualBox 1.6.4 installer, built Tue Jul 29 20:45:09 CEST 2008.

Testing system setup...
System setup appears correct.

Removing previous installation of VirtualBox 1.6.4 from /opt/VirtualBox-1.6.4

Shutting down VirtualBox host networking ...done.
Stopping VirtualBox kernel module ...done.
Installing VirtualBox to /opt/VirtualBox-1.6.4

Output from the module build process (the Linux kernel build system) follows:

/lib/modules/2.4.32-12nnd/build/scripts/pathdown.sh: line 4: TOPDIR: parameter null or not set
make KBUILD_VERBOSE=1 -C /lib/modules/2.4.32-12nnd/build SUBDIRS=/tmp/vbox.4 SRCROOT=/tmp/vbox.4 modules
make[1]: Entering directory `/usr/src/linux-2.4.32'
make -C  /tmp/vbox.4 CFLAGS="-D__KERNEL__ -I/usr/src/linux-2.4.32/include -Wall -Wstrict-prototypes -Wno-trigraphs -$
make[2]: Entering directory `/tmp/vbox.4'
Makefile:262: /Rules.make: No such file or directory
make[2]: *** No rule to make target `/Rules.make'. Stop.
make[2]: Leaving directory `/tmp/vbox.4'
make[1]: *** [_mod_/tmp/vbox.4] B??d 2
make[1]: Leaving directory `/usr/src/linux-2.4.32'
make: *** [vboxdrv] Error 2

End of the output from the Linux kernel build system.
Starting VirtualBox host networking ...done.
Installation successful
My kernel is 2.4.32, I have sources installed. Also tried manual installation - with same result.
I found similar problem here but installation of new kernel is a bit to hard for me.
Could anyone suggest what went wrong?

Posted: 6. Aug 2008, 14:37
by frank
Does it work if you compile the kernel module manually? After such an unsuccessful attempt the temporary directory is not removed. Change into this directory and call

Code: Select all

make KERN_DIR=/lib/modules/2.4.32-12nnd/build
This works fine here. Currently I cannot test the exact same scenario since I don't have a 2.4 kernel running at my host system.

Posted: 6. Aug 2008, 17:20
by -j
Thank you for reply.
I did it, but it doesn't seem to work. It gives a massive output with plenty of errors:

Code: Select all

[root@Gateway vbox.0]# make KERN_DIR=/lib/modules/2.4.32-12nnd/build
/lib/modules/2.4.32-12nnd/build/scripts/pathdown.sh: line 4: TOPDIR: parameter null or not set
make KBUILD_VERBOSE=1 -C /lib/modules/2.4.32-12nnd/build SUBDIRS=/tmp/vbox.0 SRCROOT=/tmp/vbox.0 modules
make[1]: Entering directory `/usr/src/linux-2.4.32'
make -C  /tmp/vbox.0 CFLAGS="-D__KERNEL__ -I/usr/src/linux-2.4.32/include -Wall -Wstrict-prototypes -Wno-trigraphs -O2 -fno-strict-aliasing -fno-common -fomit-frame-pointer -pipe -mpreferred-stack-boundary=2 -march=i586  -DMODULE" MAKING_MODULES=1 modules
make[2]: Entering directory `/tmp/vbox.0'
gcc -D__KERNEL__ -I/usr/src/linux-2.4.32/include -Wall -Wstrict-prototypes -Wno-trigraphs -O2 -fno-strict-aliasing -fno-common -fomit-frame-pointer -pipe -mpreferred-stack-boundary=2 -march=i586  -DMODULE -DVBOX_LINUX_2_4 -I/lib/modules/2.4.32-12nnd/build/include -I/tmp/vbox.0/ -I/tmp/vbox.0/include -I/tmp/vbox.0/r0drv/linux -D__KERNEL__ -DMODULE -DRT_OS_LINUX -DIN_RING0 -DIN_RT_R0 -DIN_SUP_R0 -DVBOX -DRT_WITH_VBOX -DCONFIG_VBOXDRV_AS_MISC -DRT_ARCH_X86 -DUSE_NEW_OS_INTERFACE_FOR_MM  -nostdinc -iwithprefix include -DKBUILD_BASENAME=SUPDrv_linux  -c -o linux/SUPDrv-linux.o linux/SUPDrv-linux.c
In file included from /tmp/vbox.0/include/VBox/types.h:34,
                 from /tmp/vbox.0/SUPDRV.h:39,
                 from linux/SUPDrv-linux.c:35:
/tmp/vbox.0/include/iprt/types.h:79:22: stddef.h: No such file or directory
In file included from /tmp/vbox.0/include/iprt/string.h:35,
                 from /tmp/vbox.0/SUPDRV.h:52,
                 from linux/SUPDrv-linux.c:35:
/tmp/vbox.0/include/iprt/stdarg.h:34:21: stdarg.h: No such file or directory
In file included from /tmp/vbox.0/SUPDRV.h:52,
                 from linux/SUPDrv-linux.c:35:
/tmp/vbox.0/include/iprt/string.h:486: error: parse error before "va_list"
/tmp/vbox.0/include/iprt/string.h:487: warning: function declaration isn't a prototype
/tmp/vbox.0/include/iprt/string.h:507: error: parse error before "va_list"
/tmp/vbox.0/include/iprt/string.h:507: warning: function declaration isn't a prototype
/tmp/vbox.0/include/iprt/string.h:625: error: parse error before "va_list"
/tmp/vbox.0/include/iprt/string.h:625: warning: function declaration isn't a prototype
/tmp/vbox.0/include/iprt/string.h:650: error: parse error before "va_list"
/tmp/vbox.0/include/iprt/string.h:650: warning: function declaration isn't a prototype
/tmp/vbox.0/include/iprt/string.h:677: error: parse error before "va_list"
/tmp/vbox.0/include/iprt/string.h:677: warning: function declaration isn't a prototype
In file included from /usr/src/linux-2.4.32/include/asm/system.h:5,
                 from /usr/src/linux-2.4.32/include/linux/spinlock.h:6,
                 from /tmp/vbox.0/SUPDRV.h:97,
                 from linux/SUPDrv-linux.c:35:
/usr/src/linux-2.4.32/include/linux/kernel.h:10:20: stdarg.h: No such file or directory
In file included from /usr/src/linux-2.4.32/include/asm/system.h:5,
                 from /usr/src/linux-2.4.32/include/linux/spinlock.h:6,
                 from /tmp/vbox.0/SUPDRV.h:97,
                 from linux/SUPDrv-linux.c:35:

/usr/src/linux-2.4.32/include/linux/kernel.h:76: error: parse error before "va_list"
/usr/src/linux-2.4.32/include/linux/kernel.h:77: warning: function declaration isn't a prototype
/usr/src/linux-2.4.32/include/linux/kernel.h:80: error: parse error before "va_list"
/usr/src/linux-2.4.32/include/linux/kernel.h:81: warning: function declaration isn't a prototype
/usr/src/linux-2.4.32/include/linux/kernel.h:85: error: parse error before "va_list"
/usr/src/linux-2.4.32/include/linux/kernel.h:86: warning: function declaration isn't a prototype
In file included from linux/SUPDrv-linux.c:46:
/tmp/vbox.0/include/iprt/log.h:1026: error: parse error before "va_list"
/tmp/vbox.0/include/iprt/log.h:1026: warning: function declaration isn't a prototype
/tmp/vbox.0/include/iprt/log.h:1046: error: parse error before "va_list"
/tmp/vbox.0/include/iprt/log.h:1046: warning: function declaration isn't a prototype
/tmp/vbox.0/include/iprt/log.h:1279: error: parse error before "va_list"
/tmp/vbox.0/include/iprt/log.h:1279: warning: function declaration isn't a prototype
/tmp/vbox.0/include/iprt/log.h:1401: error: parse error before "va_list"
/tmp/vbox.0/include/iprt/log.h:1401: warning: function declaration isn't a prototype
/tmp/vbox.0/include/iprt/log.h:1434: error: parse error before "va_list"
/tmp/vbox.0/include/iprt/log.h:1434: warning: function declaration isn't a prototype
/tmp/vbox.0/include/iprt/log.h:1454: error: parse error before "va_list"
/tmp/vbox.0/include/iprt/log.h:1454: warning: function declaration isn't a prototype
/tmp/vbox.0/include/iprt/log.h:1483: error: parse error before "va_list"
/tmp/vbox.0/include/iprt/log.h:1483: warning: function declaration isn't a prototype
/tmp/vbox.0/include/iprt/log.h:1509: error: parse error before "va_list"
/tmp/vbox.0/include/iprt/log.h:1509: warning: function declaration isn't a prototype
/tmp/vbox.0/include/iprt/log.h:1628: error: parse error before "va_list"
/tmp/vbox.0/include/iprt/log.h:1628: warning: function declaration isn't a prototype
linux/SUPDrv-linux.c: In function `SUPR0Printf':
linux/SUPDrv-linux.c:1443: error: `va_list' undeclared (first use in this function)
linux/SUPDrv-linux.c:1443: error: (Each undeclared identifier is reported only once
linux/SUPDrv-linux.c:1443: error: for each function it appears in.)
linux/SUPDrv-linux.c:1443: error: parse error before "args"
linux/SUPDrv-linux.c:1446: warning: implicit declaration of function `va_start'
linux/SUPDrv-linux.c:1446: error: `args' undeclared (first use in this function)
linux/SUPDrv-linux.c:1450: warning: implicit declaration of function `va_end'
linux/SUPDrv-linux.c: In function `AssertMsg2':
linux/SUPDrv-linux.c:1482: error: `va_list' undeclared (first use in this function)
linux/SUPDrv-linux.c:1482: error: parse error before "ap"
linux/SUPDrv-linux.c:1485: error: `ap' undeclared (first use in this function)
make[2]: *** [linux/SUPDrv-linux.o] B??d 1
make[2]: Leaving directory `/tmp/vbox.0'
make[1]: *** [_mod_/tmp/vbox.0] Error 2
make[1]: Leaving directory `/usr/src/linux-2.4.32'
make: *** [vboxdrv] Error 2

My gcc version is 3.3.3. Maybe I should try to get a newer version?

Posted: 7. Aug 2008, 11:19
by frank
Are you sure that your 2.4 kernel is properly configured?

Posted: 7. Aug 2008, 15:25
by -j
Well... I think yes.
Routing, HTB, Samba and some other services seem to be ok.
My kernel is the same as supplied with installation cd.
Is there anything else I should check to verify this?

Posted: 8. Aug 2008, 10:33
by frank
Hmm, and did you start compilation of this kernel (just wait 15 seconds, then you can abort). AFAIR a kernel directory which was configured and later cleaned by 'make mrproper' or 'make clean' does not work.