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.
-
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'
-
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)
-
Confirme se o módulo está assinado
tail $(modinfo -n vboxdrv) | grep "Module signature appended"
-
Registre as chaves no Secure Boot
sudo mokutil --import MOK.der
que solicitará uma senha para confirmar a importação na próxima etapa.
-
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.
-
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 .