A partir dos comentários da pergunta:
modprobe: ERROR: could not insert 'vboxdrv': Required key not available
Isso indica que o módulo já foi criado, mas não foi assinado para satisfazer os requisitos de inicialização segura.
A solução mais simples seria apenas desabilitar o Secure Boot. Isto é especialmente verdade com o VirtualBox 5.2, porque:
- ele usa seu próprio sistema de compilação de módulos em vez de DKMS e
- até onde eu sei, não tem recursos para adicionar comandos de assinatura de módulo ao seu procedimento de compilação de módulo
(Eu realmente espero que versões futuras do VirtualBox passem a usar o DKMS ou, pelo menos, forneçam ganchos para permitir a vinculação de scripts personalizados ao procedimento de instalação do módulo do VirtualBox.)
A correção "adequada" para esse problema seria criar sua própria chave de Inicialização Segura e usá-la para assumir o controle total da Inicialização Segura no firmware do sistema ou registrá-la como uma Chave do Proprietário da Máquina (um bootloader- extensão de nível para inicialização segura), se isso não for possível ou for muito difícil.
Isso nunca pode ser totalmente automatizado, já que essa automação seria considerada um dispositivo de proteção de inicialização segura e seria incluída na lista de revogação de UEFI pelo fórum UEFI. Essa lista é incorporada às novas versões de firmware UEFI. Felizmente, a inscrição é um processo único.
Quando a chave for inscrita no Secure Boot, você poderá usar essa chave para assinar os módulos para torná-los aceitáveis para o sistema. Você teria que repetir a assinatura do módulo toda vez que o kernel ou o VirtualBox fosse atualizado.
De acordo com a documentação do Ubuntu, você deve ser capaz de criar uma chave adequada com sudo update-secureboot-policy --new-key
e então registrá-la como uma chave de proprietário de máquina (MOK) com sudo update-secureboot-policy --enroll-key
e reinicialização. Na reinicialização, o shim.efi
deve iniciar automaticamente o programa MokManager, o que exigirá que você confirme o registro da Chave do Proprietário da Máquina, pois somente no momento da inicialização pode verificar com certeza se a entrada vem do usuário e em nenhum outro lugar. Isso é feito para garantir que qualquer personalização das chaves de inicialização segura ocorra com o controle explícito do proprietário / administrador do sistema.
A reinstalação do sistema operacional não removerá a MOK das variáveis de firmware UEFI, mas uma atualização de firmware UEFI ou a reinicialização de todas as configurações de firmware UEFI para os padrões poderão fazer isso. Nesse caso, você precisaria refazer o procedimento de inscrição.
Uma vez que o MOK tenha sido registrado com sucesso, a chave deve ser automaticamente passada para o kernel pelo firmware, e pode ser usada para assinar os módulos. O VirtualBox 5.2 instala seus módulos no diretório /lib/modules/<kernel version number>/misc/
. Para assinar os módulos lá, você usaria o comando kmodsign . Por exemplo, para assinar o módulo vboxdrv.ko
:
cd /lib/modules/$(uname -r)/misc
kmodsign sha512 /var/lib/shim-signed/mok/MOK.priv /var/lib/shim-signed/mok/MOK.der vboxdrv.ko
Repita isso para cada módulo que você encontrará neste diretório. Deve haver pelo menos quatro deles: vboxdrv.ko
, vboxnetadp.ko
, vboxnetflt.ko
e vboxpci.ko
.