I am failing to build VirtualBox driver for Linux 2.6.38

6,376

autoconf.h moved from include/linux to include/generated in Linux 2.6.33. Authors of third-party modules must adapt their code; this has already been done upstream for VirtualBox. In the meantime, you can either patch the module source or create a symbolic link as a workaround.

As for the NMI-related errors, the NMI watchdog has changed a lot between 2.6.37 and 2.6.38. This looks like it requires a nontrivial porting effort on the module source code. In the meantime, you might have some luck just patching out the offending code. The purpose of the NMI watchdog is to debug kernel lockups, so it's something you can live without.

Share:
6,376
tshepang
Author by

tshepang

I do software development for a living and as a hobby. My favorite language is Rust, and I've used Python much in the past. My OS of choice is Debian.

Updated on September 18, 2022

Comments

  • tshepang
    tshepang over 1 year

    I am running Debian 6, and decided to install 2.6.38 kernel from Unstable. I also installed the headers so that I can later on :

    sudo apt-get install --target-release=unstable linux-image-2.6.38-2-686-bigmem linux-headers-2.6.38-2-686-bigmem
    

    I then re-installed virtualbox-ose-dkms to that the VirtualBox drivers for 2.6.38 can be rebuilt (so that I can use VirtualBox under 2.6.38), but I get this error:

    Building initial module for 2.6.38-2-686-bigmem
    
    Error! Bad return status for module build on kernel: 2.6.38-2-686-bigmem (i686)
    Consult the make.log in the build directory
    /var/lib/dkms/virtualbox-ose/3.2.10/build/ for more information.
    dpkg: error processing virtualbox-ose-dkms (--configure):
     subprocess installed post-installation script returned error exit status 10
    configured to not write apport reports
                                          Errors were encountered while processing:
     virtualbox-ose-dkms
    E: Sub-process /usr/bin/dpkg returned an error code (1)
    

    Here's the contents of the file they asked me to look at:

    $ cat /var/lib/dkms/virtualbox-ose/3.2.10/build/make.log 
    DKMS make.log for virtualbox-ose-3.2.10 for kernel 2.6.38-2-686-bigmem (i686)
    Sat Apr  9 14:11:57 SAST 2011
    make: Entering directory `/usr/src/linux-headers-2.6.38-2-686-bigmem'
      LD      /var/lib/dkms/virtualbox-ose/3.2.10/build/built-in.o
      LD      /var/lib/dkms/virtualbox-ose/3.2.10/build/vboxdrv/built-in.o
      CC [M]  /var/lib/dkms/virtualbox-ose/3.2.10/build/vboxdrv/linux/SUPDrv-linux.o
    In file included from /var/lib/dkms/virtualbox-ose/3.2.10/build/include/VBox/types.h:30,
                     from /var/lib/dkms/virtualbox-ose/3.2.10/build/vboxdrv/linux/../SUPDrvInternal.h:35,
                     from /var/lib/dkms/virtualbox-ose/3.2.10/build/vboxdrv/linux/SUPDrv-linux.c:33:
    /var/lib/dkms/virtualbox-ose/3.2.10/build/include/iprt/types.h:97:31: error: linux/autoconf.h: No such file or directory
    /var/lib/dkms/virtualbox-ose/3.2.10/build/vboxdrv/linux/SUPDrv-linux.c: In function ‘VBoxDrvLinuxInit’:
    /var/lib/dkms/virtualbox-ose/3.2.10/build/vboxdrv/linux/SUPDrv-linux.c:451: error: ‘nmi_watchdog’ undeclared (first use in this function)
    /var/lib/dkms/virtualbox-ose/3.2.10/build/vboxdrv/linux/SUPDrv-linux.c:451: error: (Each undeclared identifier is reported only once
    /var/lib/dkms/virtualbox-ose/3.2.10/build/vboxdrv/linux/SUPDrv-linux.c:451: error: for each function it appears in.)
    /var/lib/dkms/virtualbox-ose/3.2.10/build/vboxdrv/linux/SUPDrv-linux.c:451: error: ‘NMI_IO_APIC’ undeclared (first use in this function)
    /var/lib/dkms/virtualbox-ose/3.2.10/build/vboxdrv/linux/SUPDrv-linux.c:465: error: ‘nmi_active’ undeclared (first use in this function)
    make[4]: *** [/var/lib/dkms/virtualbox-ose/3.2.10/build/vboxdrv/linux/SUPDrv-linux.o] Error 1
    make[3]: *** [/var/lib/dkms/virtualbox-ose/3.2.10/build/vboxdrv] Error 2
    make[2]: *** [_module_/var/lib/dkms/virtualbox-ose/3.2.10/build] Error 2
    make[1]: *** [sub-make] Error 2
    make: *** [all] Error 2
    make: Leaving directory `/usr/src/linux-headers-2.6.38-2-686-bigmem'
    
    • Gilles 'SO- stop being evil'
      Gilles 'SO- stop being evil' about 13 years
      That missing linux/autoconf.h looks suspicious. Does /usr/src/linux-headers-2.6.38-2-686-bigmem/include/linux/aut‌​oconf.h exist? If it doesn't, your kernel headers are incomplete. If it does, there's a bug in a makefile somewhere that causes it not to look in the right directories.
    • tshepang
      tshepang about 13 years
      It's instead found in /usr/src/linux-headers-2.6.38-2-686-bigmem/include/generated‌​/autoconf.h. This is in comparison to 2.6.32's /usr/src/linux-headers-2.6.32-5-686-bigmem/include/linux/aut‌​oconf.h.
  • tshepang
    tshepang about 13 years
    You may have missed the part where I'm using VBox 3.2.10.
  • screaming SiLENCE
    screaming SiLENCE about 13 years
    Sorry, I've missed that.... I upgrade squeezy to whezzy due to this issue.. Only way I've found to solve the pb....
  • tshepang
    tshepang about 13 years
    This answer helped, so am still a Squeeze user :)