você provavelmente tem a opção de assinatura de módulo ativada no kernel. Os módulos do VirtualBox não são assinados automaticamente e, toda vez que eu construo um novo kernel, eu reconstruo os módulos e os assino.
Se este é o caso - digite no terminal o seguinte (se você incorporou a configuração do kernel no proc):
zcat /proc/config.gz | grep CONFIG_MODULE_SIG
Se você não incorporou a configuração do kernel, encontre a configuração do seu kernel - ela pode estar em /usr/src/linux/.config
ou /etc/kernels/kernel-config-<the-corresponding-kernel-version>
Por exemplo, você deve ver a seguinte saída ou similar (YMMV):
CONFIG_MODULE_SIG=y
CONFIG_MODULE_SIG_FORCE=y
CONFIG_MODULE_SIG_ALL=y
# CONFIG_MODULE_SIG_SHA1 is not set
# CONFIG_MODULE_SIG_SHA224 is not set
# CONFIG_MODULE_SIG_SHA256 is not set
# CONFIG_MODULE_SIG_SHA384 is not set
CONFIG_MODULE_SIG_SHA512=y
CONFIG_MODULE_SIG_HASH="sha512"
CONFIG_MODULE_SIG_KEY="certs/signing_key.pem"
Dependendo da função hash escolhida, você deve usar a mesma função hash para assinar seus módulos.
Existe um utilitário chamado sign-file
.
Nas versões anteriores, esse sign-file
estava localizado em /usr/src/linux/
, já que para 4.5
kernels agora está localizado em /usr/src/linux/scripts/
(novamente YMMV).
Ter módulos assinados ativados e, na verdade, inicializar um sistema com módulos assinados should
geralmente significa que você já tem uma chave gerada e um arquivo x509 (você mesmo pode gerar uma chave de assinatura).
Executando o seguinte comando:
/usr/src/linux/scripts/sign-file sha512 /usr/src/linux/certs/signing_key.pem /usr/src/linux/certs/signing_key.x509 /lib/modules/<your-kernel-version>/misc/vboxdrv.ko
deve assinar seus módulos com eficiência e deve estar pronto para modprobe
.
Localize o arquivo x509 e sua chave de assinatura e substitua os caminhos no comando acima.
- FYI existem quatro módulos de caixa virtual que precisam ser assinados -
vboxdrv
,vboxnetflt
,vboxnetadp
evboxpci
.