Não foi possível carregar 'vboxdrv' após a atualização para o Ubuntu 16.04 (e quero manter a inicialização segura)

99

Eu atualizo do Ubuntu 15.10 para o 16.04 e desde então o VirtualBox 5.0.18 não está mais iniciando minhas VMs. Ele reclama que 'vboxdrv' não está carregado. Por isso, tento carregá-lo e obter o seguinte erro:

$ sudo modprobe vboxdrv
modprobe: ERROR: could not insert 'vboxdrv': Required key not available

Acredito que esteja relacionado à inicialização segura que eu uso e que desejo continuar usando. Na verdade, com o boot seguro do Ubuntu 15.10 e o VirtualBox estavam funcionando bem.

Também tentei $ sudo apt-get --reinstall install virtualbox-dkms , que construiu o módulo do kernel com sucesso, mas não resolveu esse problema.

Alguma ideia de como obter o vboxdrv carregado, mantendo a inicialização segura ativada?

Atualização 2 : também tentei executar sudo mokutil --disable-validation . Ao executar este comando, durante a próxima inicialização eu sou solicitado a desativar a inicialização segura, adicionar uma chave ou hash do disco. Como não quero desativar a inicialização segura, parece que isso também não resolve meu problema. Também quero manter o UEFI ativado para uma instalação paralela do Windows.

Nota : Se você não se importa em desabilitar a inicialização segura, veja Por que eu recebo" Chave necessária não disponível "quando instalo módulos de kernel de terceiros ou após uma atualização de kernel? .

    
por jans 22.04.2016 / 18:10

6 respostas

131

Desde a versão do kernel 4.4.0-20, foi imposto que os módulos de kernel não assinados não poderão ser executados com o Secure Boot ativado. Como você deseja manter a inicialização segura, a próxima etapa lógica é assinar esses módulos.

Então, vamos tentar.

  1. Crie chaves de assinatura

    openssl req -new -x509 -newkey rsa:2048 -keyout MOK.priv -outform DER -out MOK.der -nodes -days 36500 -subj "/CN=Descriptive common name/"
    

    Opção : para segurança adicional, pule a opção -nodes, que pedirá uma senha. Então, antes de passar para a próxima etapa, certifique-se de export KBUILD_SIGN_PIN='yourpassword'

  2. Assine o módulo (vboxdrv para este exemplo, mas repita para outros módulos em ls $(dirname $(modinfo -n vboxdrv))/vbox*.ko) para funcionalidade completa)

    sudo /usr/src/linux-headers-$(uname -r)/scripts/sign-file sha256 ./MOK.priv ./MOK.der $(modinfo -n vboxdrv)
    
  3. Confirme se o módulo está assinado

    tail $(modinfo -n vboxdrv) | grep "Module signature appended"
    
  4. Registre as chaves no Secure Boot

    sudo mokutil --import MOK.der
    

    que solicitará uma senha para confirmar a importação na próxima etapa.

  5. Reinicialize e siga as instruções para se inscrever no MOK (Chave do Proprietário da Máquina). Aqui está um exemplo com imagens. O sistema será reiniciado mais uma vez.

  6. Confirme se a chave está inscrita

    mokutil --test-key MOK.der
    

Se o VirtualBox ainda não carregar, pode ser porque o módulo não carregou ( sudo modprobe vboxdrv corrigirá isso) ou que a chave não está assinada. Simplesmente repita esse passo e tudo deve funcionar bem.

Recursos: Site detalhado artigo para o Fedora e < href="https://github.com/Canonical-kernel/Ubuntu-kernel/blob/master/Documentation/module-signing.txt"> Implementação do Ubuntu da assinatura do módulo. @zwets para a segurança adicional >. @shasha_trn para mencionar todos os módulos .

Recurso adicional: Eu criei um script bash para uso próprio toda vez que virtualbox-dkms atualiza e, portanto, sobrescreve os módulos assinados. Confira meu vboxsign no GitHub .

    
por Majal 06.05.2016 / 07:57
11

No meu sistema, fiz o seguinte para que funcionasse:

Executar o mokutil:

sudo mokutil --disable-validation

Então o mokutil me pediu para definir uma senha para o gerente do MOK. Depois de reiniciar o PC, o BIOS mostrou uma caixa de diálogo para configurar o Gerenciador do MOK. Eu desativei o SecureBoot a partir deste diálogo, ele pediu vários caracteres da senha (ou seja, digite o caractere (5), etc).

Após a inicialização dos módulos vboxdrv carregados corretamente.

lsmod | grep vboxdrv
vboxdrv               454656  3 vboxnetadp,vboxnetflt,vboxpci

Curiosamente, o mokutil ainda mostra que o SecureBoot está ativado:

sudo mokutil --sb-state
SecureBoot enabled
    
por Pocho 26.04.2016 / 18:16
4

Você pode desativar a verificação de validação por

sudo apt install mokutil
sudo mokutil --disable-validation

Depois que os pacotes DKMS devem ser instalados.

    
por Pilot6 25.04.2016 / 09:39
0

Também recebi erro sobre o vboxdrv após a atualização. Mas houve problema com a versão antiga (5.0.14) do Oracle VM VirtualBox Extension Pack. Eu baixei e instalei a versão mais recente (5.0.18) deste pacote e o problema desapareceu.

    
por Reling 23.04.2016 / 00:41
0

Tudo bem, depois de alguns testes, tenho certeza que esse é um problema de inicialização segura.

Como em se estiver habilitado, isso é acionado:

  

AVISO: O módulo do kernel vboxdrv não está carregado. Ou não há módulo            disponível para o kernel atual (4.4.0-21-generic) ou não            carga. Por favor, recompile o módulo do kernel e instale-o pelo sudo / sbin / rcvboxdrv setup

No entanto, se a inicialização segura estiver desabilitada, a caixa virtual carrega muito bem, sem erros.

Ainda tenho meu BIOS definido como UEFI.

    
por David Haynes 23.04.2016 / 18:22
0

Eu tive o mesmo problema hoje, eu tinha o Windows 10 e o Ubuntu 15.10 em um dual boot com o uefi habilitado no BIOS (não o desativei para poder executar o Windows pré-instalado).

Após a atualização para o Ubuntu 16.04, o VirtualBox parou de carregar minhas VMs com a mesma mensagem de erro:

modprobe: ERROR: could not insert 'vboxdrv': Required key not available

Eu suspeitei de um problema de UEFI porque, durante a atualização, o instalador me perguntou se eu queria desabilitá-lo, ao que respondi Não (porque o Yes pode inutilizar meu Windows).

O que eu fiz foi para a Bios e habilitar o suporte para inicialização herdada do BIOS, sem desabilitar a inicialização segura.

O Virtualbox funciona bem agora.

Atualização : Como @zwets apontou corretamente no comentário, a ativação de módulos herdados faz com que a inicialização segura seja desativada.

    
por Zeine77 23.04.2016 / 01:23