[clug] Debian lenny question: building kernel modules (VirtualBox Guest Additions)

steve jenkin sjenkin at canb.auug.org.au
Fri Jul 2 04:43:46 MDT 2010


Ivan Miljenovic wrote on 2/07/10 12:29 PM:
> On 1 July 2010 23:52, steve jenkin <sjenkin at canb.auug.org.au> wrote:
>> Am I missing something, or is this broken??
>>
>> I've downloaded source package 'virtualbox-ose-guest' and the
>> linux-headers for the kernel.
>>
>> This is what I run:
>>
>>> module-assistant update
>>> module-assistant prepare
>>> module-assistant -t auto-install virtualbox-ose-guest
>>>
>>> cmhr11880:~# uname -a
>>> Linux cmhr11880 2.6.26-2-amd64 #1 SMP Sun Jun 20 20:16:30 UTC 2010 x86_64 GNU/Linux
>>
>> And it fails...
>> A compile time error which looks like an macro that not defined.
> 
> Care to actually give us the error?  Maybe you forgot to enable some
> kernel config option...

you got it. It's long and a pain to generate.
I hope this means that someone will read this and suggest how I might
take this problem forward.


> Also, just checking: this is for a Linux VM  you plan to run inside
> VirtualBox, right?

I want to run XEN inside VirtualBox. Which works straight up.
But I also want to have the Vbox Guest Additions available, at least in
Dom0.

Therefore, I want to build them for linux-image-2.6.26-2-xen-amd64.

First step is to build under the 'plain' debian kernel: 2.6.26-2-amd64
Just to show I can...
Then progress to the harder version.
[It doesn't build under either, though I'll only show one.]


=> Try building the plain debian linux-image first.

cmhr11880:~# uname -r
2.6.26-2-amd64


=> The modules I *could* install. Note there isn't one for xen-amd

cmhr11880:~# aptitude -w 110 search virtualbox-ose-modules
v   virtualbox-ose-modules                         -

p   virtualbox-ose-modules-2.6-amd64               - PC virtualization
solution for Linux 2.6 on AMD64
p   virtualbox-ose-modules-2.6-openvz-amd64        - PC virtualization
solution for Linux 2.6 on AMD64
p   virtualbox-ose-modules-2.6-vserver-amd64       - PC virtualization
solution for Linux 2.6 on AMD64
iB  virtualbox-ose-modules-2.6.26-2-amd64          - PC virtualization
solution for Linux 2.6.26 on AMD64
p   virtualbox-ose-modules-2.6.26-2-openvz-amd64   - PC virtualization
solution for Linux 2.6.26 on AMD64
p   virtualbox-ose-modules-2.6.26-2-vserver-amd64  - PC virtualization
solution for Linux 2.6.26 on AMD64


=> show that the environment is up-to-date

cmhr11880:~# apt-get install --reinstall module-assistant
build-essential virtualbox-ose-guest-source
Reading package lists... Done
Building dependency tree
Reading state information... Done
0 upgraded, 0 newly installed, 3 reinstalled, 0 to remove and 0 not
upgraded.
Need to get 0B/364kB of archives.
After this operation, 0B of additional disk space will be used.
Do you want to continue [Y/n]?
(Reading database ... 60024 files and directories currently installed.)
Preparing to replace build-essential 11.4 (using
.../build-essential_11.4_amd64.deb) ...
Unpacking replacement build-essential ...
Preparing to replace module-assistant 0.10.11.0 (using
.../module-assistant_0.10.11.0_all.deb) ...
Unpacking replacement module-assistant ...
Selecting previously deselected package virtualbox-ose-guest-source.
Preparing to replace virtualbox-ose-guest-source 1.6.6-dfsg-3 (using
.../virtualbox-ose-guest-source_1.6.6-dfsg-3_all.deb) ...
Unpacking replacement virtualbox-ose-guest-source ...
Processing triggers for man-db ...
Setting up build-essential (11.4) ...
Setting up module-assistant (0.10.11.0) ...
Setting up virtualbox-ose-guest-source (1.6.6-dfsg-3) ...


=> UPDATE Pkgs

cmhr11880:~#  module-assistant -t update
......................................................................................
Updated infos about 86 packages


=>  PREPARE

cmhr11880:~# module-assistant prepare
Getting source for kernel version: 2.6.26-2-amd64
Kernel headers available in /lib/modules/2.6.26-2-amd64/build
apt-get install build-essential
Reading package lists... Done
Building dependency tree
Reading state information... Done
build-essential is already the newest version.
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.


=> Attempt a build

cmhr11880:~# module-assistant -t auto-install virtualbox-ose-guest
.
Updated infos about 1 packages
Getting source for kernel version: 2.6.26-2-amd64
Kernel headers available in /lib/modules/2.6.26-2-amd64/build
apt-get install build-essential
Reading package lists... Done
Building dependency tree
Reading state information... Done
build-essential is already the newest version.
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.

Done!
unpack
Extracting the package tarball, /usr/src/virtualbox-ose-guest.tar.bz2,
please wait...
"/usr/share/modass/overrides/virtualbox-ose-guest-source" build
KVERS=2.6.26-2-amd64 KSRC=/lib/modules/2.6.26-2-amd64/build
KDREV=2.6.26-24 kdist_image
kmk -C vboxadd clean
kmk: Entering directory `/usr/src/modules/virtualbox-ose-guest/vboxadd'
for f in . linux r0drv r0drv/linux; do rm -f $f/*.o $f/.*.cmd
$f/.*.flags; done
rm -rf .vboxadd* .tmp_ver* vboxadd.* Module.symvers Modules.symvers
kmk: Leaving directory `/usr/src/modules/virtualbox-ose-guest/vboxadd'

[[ etc for lots of setup ]]

kmk: Nothing to be done for `kdist_config'.
for templ in ; do \
    cp $templ `echo $templ | sed -e 's/_KVERS_/2.6.26-2-amd64/g'` ; \
  done
for templ in `ls debian/*.modules.in` ; do \
    test -e ${templ%.modules.in}.backup || cp ${templ%.modules.in}
${templ%.modules.in}.backup 2>/dev/null || true; \
    sed -e 's/##KVERS##/2.6.26-2-amd64/g ;s/#KVERS#/2.6.26-2-amd64/g ;
s/_KVERS_/2.6.26-2-amd64/g ; s/##KDREV##/2.6.26-24/g ;
s/#KDREV#/2.6.26-24/g ; s/_KDREV_/2.6.26-24/g  ' < $templ >
${templ%.modules.in}; \
  done
dh_testroot
dh_clean -k

[[ Now it gets interesting ]]

# Build the modules

kmk -C /lib/modules/2.6.26-2-amd64/build
M=/usr/src/modules/virtualbox-ose-guest
kmk[1]: Entering directory `/usr/src/linux-headers-2.6.26-2-amd64'
kmk[2]: Entering directory `/usr/src/linux-headers-2.6.26-2-amd64'
kmk[3]: Entering directory `/usr/src/linux-headers-2.6.26-2-amd64'
/usr/src/modules/virtualbox-ose-guest/vboxadd/hgcmcall.c: In function
‘vbox_hgcm_get_r3_params’:
/usr/src/modules/virtualbox-ose-guest/vboxadd/hgcmcall.c:137: warning:
cast to pointer from integer of different size
/usr/src/modules/virtualbox-ose-guest/vboxadd/hgcmcall.c:148: warning:
cast from pointer to integer of different size
/usr/src/modules/virtualbox-ose-guest/vboxadd/hgcmcall.c:158: warning:
cast from pointer to integer of different size
/usr/src/modules/virtualbox-ose-guest/vboxadd/hgcmcall.c: In function
‘vbox_hgcm_return_r0_struct’:
/usr/src/modules/virtualbox-ose-guest/vboxadd/hgcmcall.c:250: warning:
cast to pointer from integer of different size
/usr/src/modules/virtualbox-ose-guest/vboxadd/hgcmcall.c:252: warning:
cast to pointer from integer of different size
/usr/src/modules/virtualbox-ose-guest/vboxadd/vboxmod.c: In function
‘vboxadd_reserve_hypervisor’:
/usr/src/modules/virtualbox-ose-guest/vboxadd/vboxmod.c:735: warning:
cast from pointer to integer of different size
/usr/src/modules/virtualbox-ose-guest/vboxadd/vboxmod.c: In function
‘vboxadd_ioctl’:
/usr/src/modules/virtualbox-ose-guest/vboxadd/vboxmod.c:441: warning:
‘cbRequestSize’ may be used uninitialized in this function
/usr/src/modules/virtualbox-ose-guest/vboxadd/HGCMInternal.c: In
function ‘VbglHGCMCall’:
/usr/src/modules/virtualbox-ose-guest/vboxadd/HGCMInternal.c:196:
warning: cast to pointer from integer of different size
/usr/src/modules/virtualbox-ose-guest/vboxadd/HGCMInternal.c:274:
warning: cast to pointer from integer of different size
/usr/src/modules/virtualbox-ose-guest/vboxadd/r0drv/linux/alloc-r0drv-linux.c:51:24:
error: iprt/heap.h: No such file or directory
/usr/src/modules/virtualbox-ose-guest/vboxadd/r0drv/linux/alloc-r0drv-linux.c:52:28:
error: iprt/spinlock.h: No such file or directory
/usr/src/modules/virtualbox-ose-guest/vboxadd/r0drv/linux/alloc-r0drv-linux.c:
In function ‘rtR0MemExecCleanup’:
/usr/src/modules/virtualbox-ose-guest/vboxadd/r0drv/linux/alloc-r0drv-linux.c:73:
error: implicit declaration of function ‘RTSpinlockDestroy’
/usr/src/modules/virtualbox-ose-guest/vboxadd/r0drv/linux/alloc-r0drv-linux.c:
In function ‘RTR0MemExecDonate’:
/usr/src/modules/virtualbox-ose-guest/vboxadd/r0drv/linux/alloc-r0drv-linux.c:98:
error: implicit declaration of function ‘RTSpinlockCreate’
/usr/src/modules/virtualbox-ose-guest/vboxadd/r0drv/linux/alloc-r0drv-linux.c:101:
error: implicit declaration of function ‘RTHeapSimpleInit’
/usr/src/modules/virtualbox-ose-guest/vboxadd/r0drv/linux/alloc-r0drv-linux.c:
In function ‘rtMemAlloc’:
/usr/src/modules/virtualbox-ose-guest/vboxadd/r0drv/linux/alloc-r0drv-linux.c:126:
error: ‘RTSPINLOCKTMP’ undeclared (first use in this function)
/usr/src/modules/virtualbox-ose-guest/vboxadd/r0drv/linux/alloc-r0drv-linux.c:126:
error: (Each undeclared identifier is reported only once
/usr/src/modules/virtualbox-ose-guest/vboxadd/r0drv/linux/alloc-r0drv-linux.c:126:
error: for each function it appears in.)
/usr/src/modules/virtualbox-ose-guest/vboxadd/r0drv/linux/alloc-r0drv-linux.c:126:
error: expected ‘;’ before ‘SpinlockTmp’
/usr/src/modules/virtualbox-ose-guest/vboxadd/r0drv/linux/alloc-r0drv-linux.c:127:
error: implicit declaration of function ‘RTSpinlockAcquireNoInts’
/usr/src/modules/virtualbox-ose-guest/vboxadd/r0drv/linux/alloc-r0drv-linux.c:127:
error: ‘SpinlockTmp’ undeclared (first use in this function)
/usr/src/modules/virtualbox-ose-guest/vboxadd/r0drv/linux/alloc-r0drv-linux.c:128:
error: implicit declaration of function ‘RTHeapSimpleAlloc’
/usr/src/modules/virtualbox-ose-guest/vboxadd/r0drv/linux/alloc-r0drv-linux.c:128:
warning: cast to pointer from integer of different size
/usr/src/modules/virtualbox-ose-guest/vboxadd/r0drv/linux/alloc-r0drv-linux.c:129:
error: implicit declaration of function ‘RTSpinlockReleaseNoInts’
/usr/src/modules/virtualbox-ose-guest/vboxadd/r0drv/linux/alloc-r0drv-linux.c:
In function ‘rtMemFree’:
/usr/src/modules/virtualbox-ose-guest/vboxadd/r0drv/linux/alloc-r0drv-linux.c:178:
error: ‘RTSPINLOCKTMP’ undeclared (first use in this function)
/usr/src/modules/virtualbox-ose-guest/vboxadd/r0drv/linux/alloc-r0drv-linux.c:178:
error: expected ‘;’ before ‘SpinlockTmp’
/usr/src/modules/virtualbox-ose-guest/vboxadd/r0drv/linux/alloc-r0drv-linux.c:179:
error: ‘SpinlockTmp’ undeclared (first use in this function)
/usr/src/modules/virtualbox-ose-guest/vboxadd/r0drv/linux/alloc-r0drv-linux.c:180:
error: implicit declaration of function ‘RTHeapSimpleFree’
kmk[3]: ***
[/usr/src/modules/virtualbox-ose-guest/vboxadd/r0drv/linux/alloc-r0drv-linux.o]
Error 1
kmk[3]: Leaving directory `/usr/src/linux-headers-2.6.26-2-amd64'
kmk[2]: *** [/usr/src/modules/virtualbox-ose-guest/vboxadd] Error 2
kmk[2]: Leaving directory `/usr/src/linux-headers-2.6.26-2-amd64'
kmk[1]: *** [_module_/usr/src/modules/virtualbox-ose-guest] Error 2
kmk[1]: Leaving directory `/usr/src/linux-headers-2.6.26-2-amd64'
kmk: *** [binary-modules] Error 2
make: *** [kdist_build] Error 2
BUILD FAILED!
See
/var/cache/modass/virtualbox-ose-guest-source.buildlog.2.6.26-2-amd64.1278066800
for details.

==> Tail of that log file, showing errors in just one function/file:

/usr/src/modules/virtualbox-ose-guest/vboxadd/r0drv/linux/alloc-r0drv-linux.c:51:24:
error: iprt/heap.h: No such file or directory
/usr/src/modules/virtualbox-ose-guest/vboxadd/r0drv/linux/alloc-r0drv-linux.c:52:28:
error: iprt/spinlock.h: No such file or directory
/usr/src/modules/virtualbox-ose-guest/vboxadd/r0drv/linux/alloc-r0drv-linux.c:
In function ‘rtR0MemExecCleanup’:
/usr/src/modules/virtualbox-ose-guest/vboxadd/r0drv/linux/alloc-r0drv-linux.c:73:
error: implicit declaration of function ‘RTSpinlockDestroy’
/usr/src/modules/virtualbox-ose-guest/vboxadd/r0drv/linux/alloc-r0drv-linux.c:
In function ‘RTR0MemExecDonate’:
/usr/src/modules/virtualbox-ose-guest/vboxadd/r0drv/linux/alloc-r0drv-linux.c:98:
error: implicit declaration of function ‘RTSpinlockCreate’
/usr/src/modules/virtualbox-ose-guest/vboxadd/r0drv/linux/alloc-r0drv-linux.c:101:
error: implicit declaration of function ‘RTHeapSimpleInit’
/usr/src/modules/virtualbox-ose-guest/vboxadd/r0drv/linux/alloc-r0drv-linux.c:
In function ‘rtMemAlloc’:
/usr/src/modules/virtualbox-ose-guest/vboxadd/r0drv/linux/alloc-r0drv-linux.c:126:
error: ‘RTSPINLOCKTMP’ undeclared (first use in this function)
/usr/src/modules/virtualbox-ose-guest/vboxadd/r0drv/linux/alloc-r0drv-linux.c:126:
error: (Each undeclared identifier is reported only once
/usr/src/modules/virtualbox-ose-guest/vboxadd/r0drv/linux/alloc-r0drv-linux.c:126:
error: for each function it appears in.)
/usr/src/modules/virtualbox-ose-guest/vboxadd/r0drv/linux/alloc-r0drv-linux.c:126:
error: expected ‘;’ before ‘SpinlockTmp’
/usr/src/modules/virtualbox-ose-guest/vboxadd/r0drv/linux/alloc-r0drv-linux.c:127:
error: implicit declaration of function ‘RTSpinlockAcquireNoInts’
/usr/src/modules/virtualbox-ose-guest/vboxadd/r0drv/linux/alloc-r0drv-linux.c:127:
error: ‘SpinlockTmp’ undeclared (first use in this function)
/usr/src/modules/virtualbox-ose-guest/vboxadd/r0drv/linux/alloc-r0drv-linux.c:128:
error: implicit declaration of function ‘RTHeapSimpleAlloc’
/usr/src/modules/virtualbox-ose-guest/vboxadd/r0drv/linux/alloc-r0drv-linux.c:128:
warning: cast to pointer from integer of different size
/usr/src/modules/virtualbox-ose-guest/vboxadd/r0drv/linux/alloc-r0drv-linux.c:129:
error: implicit declaration of function ‘RTSpinlockReleaseNoInts’
/usr/src/modules/virtualbox-ose-guest/vboxadd/r0drv/linux/alloc-r0drv-linux.c:
In function ‘rtMemFree’:
/usr/src/modules/virtualbox-ose-guest/vboxadd/r0drv/linux/alloc-r0drv-linux.c:178:
error: ‘RTSPINLOCKTMP’ undeclared (first use in this function)
/usr/src/modules/virtualbox-ose-guest/vboxadd/r0drv/linux/alloc-r0drv-linux.c:178:
error: expected ‘;’ before ‘SpinlockTmp’
/usr/src/modules/virtualbox-ose-guest/vboxadd/r0drv/linux/alloc-r0drv-linux.c:179:
error: ‘SpinlockTmp’ undeclared (first use in this function)
/usr/src/modules/virtualbox-ose-guest/vboxadd/r0drv/linux/alloc-r0drv-linux.c:180:
error: implicit declaration of function ‘RTHeapSimpleFree’
kmk[3]: ***
[/usr/src/modules/virtualbox-ose-guest/vboxadd/r0drv/linux/alloc-r0drv-linux.o]
Error 1
kmk[3]: Leaving directory `/usr/src/linux-headers-2.6.26-2-amd64'
kmk[2]: *** [/usr/src/modules/virtualbox-ose-guest/vboxadd] Error 2
kmk[2]: Leaving directory `/usr/src/linux-headers-2.6.26-2-amd64'
kmk[1]: *** [_module_/usr/src/modules/virtualbox-ose-guest] Error 2
kmk[1]: Leaving directory `/usr/src/linux-headers-2.6.26-2-amd64'
kmk: *** [binary-modules] Error 2
make: *** [kdist_build] Error 2



=> Hence my description "A compile time error"

I searched for the missing symbol. Never declared, only used.

=> Am I doing something wrong, or is the debian source package broken??

   What do I do *next* to progress this??

regards
steve

-- 
Steve Jenkin, Info Tech, Systems and Design Specialist.
0412 786 915 (+61 412 786 915)
PO Box 48, Kippax ACT 2615, AUSTRALIA

sjenkin at canb.auug.org.au http://members.tip.net.au/~sjenkin


More information about the linux mailing list