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:
-
Verifique se os cabeçalhos instalados (
$ dpkg -l | grep linux-headers
) correspondem o kernel em execução(
$ uname -r
). -
Você sempre pode usar este comando para ver uma lista de chaves inscritas / assinadas:
$ sudo keyctl list %:.system_keyring
. -
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. - Você será perguntado automaticamente pelo Ubuntu na inicialização. Escolha "Reset MOK" e use a senha escolhida.
- Se você ainda não criou a chave X.509, crie uma pasta para a chave e navegue até ela.
- 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"). - 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". - 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. - 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.