Erro ao criar adições de convidados do virtualbox para o openSUSE 13.1

1

Estou executando o sistema operacional openSUSE 13.1 no interior do VirtualBox no Ubuntu 12.04 host. O sistema operacional instalado bem, mas quando eu tento construir os addons de convidado, emitindo "./VBoxLinuxAdditions.run", o processo de compilação falha como registrado em vboxadd-install.log abaixo. Eu instalei todas as dependências incluindo make, gcc e kernel-source:

saída vbox-install.log

grep: /lib/modules/3.11.6-4-default/build/include/linux/version.h: No such file or directory
make KBUILD_VERBOSE=1 CONFIG_MODULE_SIG= -C /lib/modules/3.11.6-4-default/build SUBDIRS=/tmp/vbox.0 SRCROOT=/tmp/vbox.0 modules
make -C /usr/src/linux-3.11.6-4-obj/i386/default \
KBUILD_SRC=/usr/src/linux-3.11.6-4 \
KBUILD_EXTMOD="/tmp/vbox.0" -f /usr/src/linux-3.11.6-4/Makefile \
modules
test -e include/generated/autoconf.h -a -e include/config/auto.conf || (        \
echo >&2;                            \
echo >&2 "  ERROR: Kernel configuration is invalid.";        \
echo >&2 "         include/generated/autoconf.h or include/config/auto.conf are missing.";\
echo >&2 "         Run 'make oldconfig && make prepare' on kernel src to fix it.";    \
echo >&2 ;                            \
/bin/false)
mkdir -p /tmp/vbox.0/.tmp_versions ; rm -f /tmp/vbox.0/.tmp_versions/*
make -f /usr/src/linux-3.11.6-4/scripts/Makefile.build obj=/tmp/vbox.0
  gcc -Wp,-MD,/tmp/vbox.0/.VBoxGuest-linux.o.d  -nostdinc -isystem /usr/lib/gcc/i586-suse-linux/4.8/include -I/usr/src/linux-3.11.6-4/arch/x86/include -Iarch/x86/include/generated  -I/usr/src/linux-3.11.6-4/include -Iinclude -I/usr/src/linux-3.11.6-4/arch/x86/include/uapi -Iarch/x86/include/generated/uapi -I/usr/src/linux-3.11.6-4/include/uapi -Iinclude/generated/uapi -include /usr/src/linux-3.11.6-4/include/linux/kconfig.h   -I/tmp/vbox.0 -D__KERNEL__ -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -Werror-implicit-function-declaration -Wno-format-security -fno-delete-null-pointer-checks -O2 -m32 -msoft-float -mregparm=3 -freg-struct-return -fno-pic -mpreferred-stack-boundary=2 -march=i586 -mtune=generic -maccumulate-outgoing-args -Wa,-mtune=generic32 -ffreestanding -fstack-protector -DCONFIG_AS_CFI=1 -DCONFIG_AS_CFI_SIGNAL_FRAME=1 -DCONFIG_AS_CFI_SECTIONS=1 -DCONFIG_AS_AVX=1 -DCONFIG_AS_AVX2=1 -pipe -Wno-sign-compare -mno-sse -mno-mmx -mno-sse2 -mno-3dnow -mno-avx -Wframe-larger-than=2048 -Wno-unused-but-set-variable -fomit-frame-pointer -fasynchronous-unwind-tables -g -fno-inline-functions-called-once -Wdeclaration-after-statement -Wno-pointer-sign -fno-strict-overflow -fconserve-stack -DCC_HAVE_ASM_GOTO -include /tmp/vbox.0/include/VBox/VBoxGuestMangling.h   -I/lib/modules/3.11.6-4-default/build/include   -I/tmp/vbox.0/   -I/tmp/vbox.0/include   -I/tmp/vbox.0/r0drv/linux   -I/tmp/vbox.0/vboxguest/   -I/tmp/vbox.0/vboxguest/include   -I/tmp/vbox.0/vboxguest/r0drv/linux -D__KERNEL__ -DMODULE -DVBOX -DRT_OS_LINUX -DIN_RING0 -DIN_RT_R0 -DIN_GUEST -DIN_GUEST_R0 -DIN_MODULE -DRT_WITH_VBOX -DVBGL_VBOXGUEST -DVBOX_WITH_HGCM -DRT_ARCH_X86  -DMODULE  -D"KBUILD_STR(s)=#s" -D"KBUILD_BASENAME=KBUILD_STR(VBoxGuest_linux)"  -D"KBUILD_MODNAME=KBUILD_STR(vboxguest)" -c -o /tmp/vbox.0/.tmp_VBoxGuest-linux.o /tmp/vbox.0/VBoxGuest-linux.c
/tmp/vbox.0/VBoxGuest-linux.c:206:49: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘g_VBoxGuestPciId’
 static const struct pci_device_id __devinitdata g_VBoxGuestPciId[] =
                                                 ^
In file included from /tmp/vbox.0/r0drv/linux/the-linux-kernel.h:78:0,
                 from /tmp/vbox.0/VBoxGuest-linux.c:28:
/usr/src/linux-3.11.6-4/include/linux/module.h:87:32: error: ‘__mod_pci_device_table’ aliased to undefined symbol ‘g_VBoxGuestPciId’
 extern const struct gtype##_id __mod_##gtype##_table  \
                                ^
/usr/src/linux-3.11.6-4/include/linux/module.h:140:3: note: in expansion of macro ‘MODULE_GENERIC_TABLE’
   MODULE_GENERIC_TABLE(type##_device,name)
   ^
/tmp/vbox.0/VBoxGuest-linux.c:216:1: note: in expansion of macro ‘MODULE_DEVICE_TABLE’
 MODULE_DEVICE_TABLE(pci, g_VBoxGuestPciId);
 ^
make[4]: *** [/tmp/vbox.0/VBoxGuest-linux.o] Error 1
make[3]: *** [_module_/tmp/vbox.0] Error 2
make[2]: *** [sub-make] Error 2
make[1]: *** [all] Error 2
make: *** [vboxguest] Error 2
Creating user for the Guest Additions.
Creating udev rule for the Guest Additions kernel module.
    
por Prahlad Yeri 06.02.2014 / 16:28

1 resposta

0

Provavelmente, esse erro é causado pelo fato de os cabeçalhos do linux estarem fora de sincronia com o kernel. Você terá que baixar uma versão mais recente dos cabeçalhos do Linux. Eu não tenho um pc do OpenSUSE na mão, mas parece que me lembro que os cabeçalhos estão localizados no pacote * linux-glibc-devel *.

    
por 06.02.2014 / 17:14