Verdadeiro motivo pelo qual a máquina VirtualBox não inicia após uma atualização do kernel do Linux

2

Eu sei que há muitas discussões abertas sobre esse problema, mas nenhuma delas aborda uma razão única sobre o bug.

É sobre o Ubuntu 16.04, no meu caso. Eu instalei o VirtualBox do repositório do Ubuntu, com sudo apt install virtualbox-qt

Eu tinha o kernel 4.4.0-34-generic instalado. Depois que eu instalei o VirtualBox, tudo funcionou bem.

Mas depois que atualizei o sistema (por meio do Software Updater) e atualizei com sudo apt upgrade , sudo apt dist-upgrade e auto-remove , minha máquina virtual não pode ser iniciada. O kernel 4.4.0-36-generic está agora instalado. Diz algo como:

please install virtualbox-dkms and check if appropriate linux-headers are installed

virtualbox-dkms já está instalado, então nada acontece depois de sudo apt install virtualbox-dkms

Mas e os cabeçalhos?

$ dpkg -l | grep linux-headers  
ii  linux-headers-4.4.0-34  4.4.0-34.53  all  Header files related to Linux kernel version 4.4.0  
ii  linux-headers-4.4.0-34-generic  4.4.0-34.53  amd64  Linux kernel headers for version 4.4.0 on 64 bit x86 SMP  
ii  linux-headers-4.4.0-36  4.4.0-36.55  all  Header files related to Linux kernel version 4.4.0  
ii  linux-headers-4.4.0-36-generic  4.4.0-36.55  amd64  Linux kernel headers for version 4.4.0 on 64 bit x86 SMP  
ii  linux-headers-generic  4.4.0.36.38  amd64  Generic Linux kernel headers  

$ uname -r  
4.4.0-36-generic

E qual é o verdadeiro motivo pelo qual isso acontece após cada atualização do kernel? Eu quero saber exatamente o que fazer e nem sempre passar dias consertando isso.

    
por Dusan 12.08.2016 / 11:46

2 respostas

1

Eu encontrei uma solução.

Embora minha pergunta não tenha sido respondida e eu não entendi exatamente por que esse problema acontece, quero compartilhar uma simples sumarização da solução com você. Aceitei que o kernel do Linux simplesmente não oferece suporte ao Virtualbox após uma atualização. Eles sabem o motivo.

De qualquer forma, o problema ocorre após quase todas as atualizações do kernel ou atualizações de pacotes. Se você tentar

$ sudo modprobe vboxdrv , você recebe modprobe: ERROR: could not insert 'vboxdrv': Required key not available .

A solução é assinar manualmente a chave TODA vez que isso acontece, porque a assinatura é KERNEL-DEPENDENT. Está relacionado ao Ubuntu 16.04 SEM desabilitar o Secure Boot.

Etapas:

  1. Verifique se os cabeçalhos instalados ( $ dpkg -l | grep linux-headers ) correspondem o kernel em execução

    ( $ uname -r ).

  2. Você sempre pode usar este comando para ver uma lista de chaves inscritas / assinadas:

    $ sudo keyctl list %:.system_keyring .

  3. Se você já assinou uma chave para o Virtualbox (com o kernel antigo), você precisa removê-lo. Existe uma maneira de remover uma única chave, mas eu removo todas de uma só vez (todas as chaves que eu inscrevi):

    $ sudo mokutil --reset . Escolha uma senha e reinicie o computador.

  4. Você será perguntado automaticamente pelo Ubuntu na inicialização. Escolha "Reset MOK" e use a senha escolhida.
  5. Se você ainda não criou a chave X.509, crie uma pasta para a chave e navegue até ela.
  6. Crie a chave com: $ openssl req -new -x509 -newkey rsa:2048 -keyout MOK.priv -outform DER -out MOK.der -nodes -days 36500 -subj "/CN=Akrog/" . Em vez de "MOK" e "Akrog", escolha nomes (por exemplo, "vbX509Key" e "vbKey").
  7. Registre a chave com: $ sudo /usr/src/linux-headers-XXX-generic/scripts/sign-file sha256 ./MOK.priv ./MOK.der /lib/modules/XXX-generic/updates/dkms/vboxdrv.ko . Em vez de "MOK", use o nome especificado e corrija a versão do kernel em vez de "XXX".
  8. Importe a chave com $ sudo mokutil --import MOK.der . Novamente, use o nome especificado em vez de “MOK”. Escolha uma senha e reinicie o computador.
  9. Você será perguntado automaticamente pelo Ubuntu na inicialização. Escolha "Enroll MOK" e use a senha escolhida.

Agora você pode iniciar e usar o Virtualbox normalmente.

    
por Dusan 17.02.2017 / 17:42
0

Após a atualização do kernel em caso de problemas com o VirtualBox do repositório do Ubuntu, use apenas o mais recente VirtualBox do site oficial . Pode ser a solução mais simples e rápida.

    
por luart 25.10.2017 / 15:31