kernel da caixa virtual não encontrado (ubuntu 16.04, vbox 5.02)

0

Quando tento usar o virtualbox (instalado através do gerenciador de pacotes), recebo o seguinte erro ao abrir uma máquina virtual:

The VirtualBox Linux kernel driver (vboxdrv) is either not loaded or there is a permission problem with /dev/vboxdrv. Please install virtualbox-dkms package and load the kernel module by executing

'modprobe vboxdrv'

as root. If it is available in your distribution, you should install the DKMS package first. This package keeps track of Linux kernel changes and recompiles the vboxdrv kernel module if necessary.

Agora, quando tentei executar sudo modprobe vboxdrv erros com

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

Eu também noto que no final da instalação do virtualbox-dkms ele aparece:

DKMS: install completed.
Setting up virtualbox (5.0.40-dfsg-0ubuntu1.16.04.2) ...
vboxweb.service is a disabled or a static unit, not starting it.
Job for virtualbox.service failed because the control process exited with error code. See "systemctl status virtualbox.service" and "journalctl -xe" for details.
invoke-rc.d: initscript virtualbox, action "restart" failed.

Inspecionando o status mostra

● virtualbox.service - LSB: VirtualBox Linux kernel module
   Loaded: loaded (/etc/init.d/virtualbox; bad; vendor preset: enabled)
   Active: failed (Result: exit-code) since di 2018-03-20 14:05:46 CET; 6min ago
     Docs: man:systemd-sysv-generator(8)

mrt 20 14:05:45 paul-GP60-2QF systemd[1]: Starting LSB: VirtualBox Linux kernel module...
mrt 20 14:05:46 paul-GP60-2QF virtualbox[15359]:  * Loading VirtualBox kernel modules...
mrt 20 14:05:46 paul-GP60-2QF virtualbox[15359]:  * modprobe vboxdrv failed. Please use 'dmesg' to find out why
mrt 20 14:05:46 paul-GP60-2QF virtualbox[15359]:    ...fail!
mrt 20 14:05:46 paul-GP60-2QF systemd[1]: virtualbox.service: Control process exited, code=exited status=1
mrt 20 14:05:46 paul-GP60-2QF systemd[1]: Failed to start LSB: VirtualBox Linux kernel module.
mrt 20 14:05:46 paul-GP60-2QF systemd[1]: virtualbox.service: Unit entered failed state.
mrt 20 14:05:46 paul-GP60-2QF systemd[1]: virtualbox.service: Failed with result 'exit-code'.

Agora, durante a instalação, houve uma pequena "anomalia". - o procedimento de instalação me pediu para desativar a inicialização segura. - Eu não quero isso, eu gostaria de continuar usando boot seguro (como funciona com o Ubuntu e o Windows - e até mesmo com o VirtualBox no Windows - por enquanto).

Isso significa que não posso ter inicialização segura e caixa virtual? Isso parece bobo, considerando-se as execuções virtuais dentro do sistema operacional, e o próprio ubuntu começa bem.

    
por paul23 20.03.2018 / 14:16

1 resposta

0

Use o VirtualBox na inicialização segura (UEFI)

É possível usar módulos do kernel auto-compilados em um ambiente de inicialização seguro. Todos os módulos devem ser assinados e as chaves devem ser registradas no BIOS de boot seguro (ou boot loader)

Criar certificado de assinatura e chave

Crie um certificado e uma chave privada para assinar os módulos do kernel (pacote necessário sudo apt-get install openssl ).

## Create a signing key and certificate##
## Signing certificate and keys
sign_key=signing_key.priv
sign_crt=signing_key.x509

## Subject for certificate
sign_sub=""
sign_sub+="/O=Your Name"
sign_sub+="/CN=Module Signing Key"
sign_sub+="/[email protected]"
sign_sub+="/"

## Create certificate and keys
if [[ ! -f "$sign_key" ]] && [[ ! -f "$sign_crt" ]]; then
    openssl req -new -x509 -newkey rsa:2048 -keyout "$sign_key" \
        -outform DER -out "$sign_crt" -nodes -days 365 -subj "$sign_sub"
fi
## Print certificate
openssl x509 -in "$sign_crt" -inform DER -noout -text

Construa a ferramenta de assinatura do kernel do Linux

Dentro dos cabeçalhos do kernel Linux em /usr/src/ é a ferramenta de assinatura para os módulos do kernel (pacotes obrigatórios sudo apt-get install build-essential libssl-dev ).

## Build signing tool
gcc "/usr/src/linux-headers-$(uname -r)/scripts/sign-file.c" -L \
   /usr/include/openssl/ -lcrypto -lssl -o sign-file

Assinando os módulos do VirtualBox

Com a ferramenta de assinatura, todos os módulos do VirtualBox precisam ser assinados.

## Sign virtualbox modules
vbox_mod=()
vbox_mod+=(vboxdrv)
vbox_mod+=(vboxnetadp)
vbox_mod+=(vboxnetflt)
vbox_mod+=(vboxpci)

for module in "${vbox_mod[@]}"; do
    echo "Signing module $module"
    sudo sign-file sha256 "$sign_key" "$sign_crt" \
        "$(modinfo -n "$module")"
done

Adicionar certificado para garantir inicialização

Por fim, o certificado precisa ser adicionado ao BIOS de inicialização segura (requer o pacote sudo apt-get install mokutil )

## Add key to UEFI keyring
sudo mokutil --import "$sign_crt"

Recomenda-se criar um script para fazer isso, porque a cada atualização do kernel, os módulos precisam ser assinados novamente. O certificado e a chave podem ser reutilizados, portanto, o chaveiro UEFI não deve ser atualizado o tempo todo.

    
por Simon Sudler 20.03.2018 / 21:50