Slackware Linux 14.2 – Reinstalando o VirtualBox 6.0.4 após upgrade do kernel

Slackware logo

Olá pessoal! Passando para compartilhar uma solução de contorno, que visa reparar a instalação do VirtualBox junto a Slackware Linux, após a recente atualização de segurança disponibilizada para o kernel Linux, junto a versão 14.2 da distribuição.

Após a instalação dos pacotes atualizados e tentativa de reinstalação do VirtualBox, a partir do binário disponibilizado pela Oracle junto ao site da aplicação, o mesmo afirma que a instalação foi realizada, porém apresentando erros que devem ser consultados através do arquivo de log.

Ao verificar o conteúdo do arquivo /var/log/vbox-setup.log, encontrei os seguintes erros:

$ tail -n 50 /var/log/vbox-setup.log

scripts/Makefile.build:277: recipe for target ‘/tmp/vbox.0/r0drv/linux/memobj-r0drv-linux.o’ failed
make[2]: *** [/tmp/vbox.0/r0drv/linux/memobj-r0drv-linux.o] Error 1
make[2]: *** Waiting for unfinished jobs….
if [ “-pg” = “-pg” ]; then if [ /tmp/vbox.0/r0drv/linux/memuserkernel-r0drv-linux.o != “scripts/mod/empty.o” ]; then ./scripts/recordmcount “/tmp/vbox.0/r0drv/linux/memuserkernel-r0drv-linux.o”; fi; fi;
if [ “-pg” = “-pg” ]; then if [ /tmp/vbox.0/r0drv/linux/assert-r0drv-linux.o != “scripts/mod/empty.o” ]; then ./scripts/recordmcount “/tmp/vbox.0/r0drv/linux/assert-r0drv-linux.o”; fi; fi;
if [ “-pg” = “-pg” ]; then if [ /tmp/vbox.0/r0drv/linux/alloc-r0drv-linux.o != “scripts/mod/empty.o” ]; then ./scripts/recordmcount “/tmp/vbox.0/r0drv/linux/alloc-r0drv-linux.o”; fi; fi;
if [ “-pg” = “-pg” ]; then if [ /tmp/vbox.0/linux/SUPDrv-linux.o != “scripts/mod/empty.o” ]; then ./scripts/recordmcount “/tmp/vbox.0/linux/SUPDrv-linux.o”; fi; fi;
if [ “-pg” = “-pg” ]; then if [ /tmp/vbox.0/r0drv/linux/mp-r0drv-linux.o != “scripts/mod/empty.o” ]; then ./scripts/recordmcount “/tmp/vbox.0/r0drv/linux/mp-r0drv-linux.o”; fi; fi;
Makefile:1436: recipe for target ‘_module_/tmp/vbox.0’ failed
make[1]: *** [_module_/tmp/vbox.0] Error 2
/tmp/vbox.0/Makefile.include.footer:106: recipe for target ‘vboxdrv’ failed
make: *** [vboxdrv] Error 2

As linhas que nos interessam são justamente as que aparecem mais acima, no log:

scripts/Makefile.build:277: recipe for target ‘/tmp/vbox.0/r0drv/linux/memobj-r0drv-linux.o’ failed
make[2]: *** [/tmp/vbox.0/r0drv/linux/memobj-r0drv-linux.o] Error 1
make[2]: *** Waiting for unfinished jobs….

Com base nesse erro, busquei por informações na Internet, e encontrei uma postagem em um blog, cujo autor já havia enfrentado o mesmo problema, postando a solução de contorno para o mesmo.

Para corrigir o erro, precisamos editar o arquivo referenciado, alterando a versão do kernel disponível no script:

$ vi /usr/src/vboxhost-6.0.4/vboxdrv/r0drv/linux/memobj-r0drv-linux.c

Substitua a versão destacada em vermelho, em três locais diferentes no arquivo:

if GET_USER_PAGES_API >= KERNEL_VERSION(4, 9, 0)

fWrite ? FOLL_WRITE | /* Write to memory. */

FOLL_FORCE /* force write access. */

: 0, /* Write to memory. */

Deixando com esta versão:

if GET_USER_PAGES_API >= KERNEL_VERSION(4, 4, 168)

fWrite ? FOLL_WRITE | /* Write to memory. *

/ FOLL_FORCE /* force write access. */

: 0, /* Write to memory. */

Agora basta executar o comando para configurar o VirtualBox novamente, e este compilará sem erros:

# /sbin/vboxconfig

Para acessar o artigo original, siga o link para o SlackBlogs – Unofficial Blog for Slackware Linux.

Anúncios