Como posso configurar o VirtualBox corretamente em 17.04?

0

Eu estava instalando o VirtualBox a partir do site principal, com o pacote .dpkg sendo informado, e durante a instalação eu recebi o erro:

dpkg: dependency problems prevent configuration of virtualbox-5.1:
 virtualbox-5.1 depends on libqt5x11extras5 (>= 5.6.0); however:
  Package libqt5x11extras5 is not installed.
 virtualbox-5.1 depends on libsdl1.2debian (>= 1.2.11); however:
  Package libsdl1.2debian is not installed.

dpkg: error processing package virtualbox-5.1 (--install):
 dependency problems - leaving unconfigured
Processing triggers for systemd (232-21ubuntu5) ...
Processing triggers for ureadahead (0.100.0-19) ...
ureadahead will be reprofiled on next reboot
Processing triggers for bamfdaemon (0.5.3+17.04.20170406-0ubuntu1) ...
Rebuilding /usr/share/applications/bamf-2.index...
Processing triggers for gnome-menus (3.13.3-6ubuntu5) ...
Processing triggers for desktop-file-utils (0.23-1ubuntu2) ...
Processing triggers for mime-support (3.60ubuntu1) ...
Processing triggers for hicolor-icon-theme (0.15-1) ...
Processing triggers for shared-mime-info (1.8-1) ...
Errors were encountered while processing:
 virtualbox-5.1

No começo, pensei que o problema era sobre dependências não atendidas e correu:

sudo apt-get install -f

Mas recebi a seguinte mensagem de erro:

Adding group 'vboxusers' (GID 132) ...
Done.
Created symlink /etc/systemd/system/multi-user.target.wants/vboxdrv.service → /lib/systemd/system/vboxdrv.service.
Created symlink /etc/systemd/system/multi-user.target.wants/vboxballoonctrl-service.service → /lib/systemd/system/vboxballoonctrl-service.service.
Created symlink /etc/systemd/system/multi-user.target.wants/vboxautostart-service.service → /lib/systemd/system/vboxautostart-service.service.
Created symlink /etc/systemd/system/multi-user.target.wants/vboxweb-service.service → /lib/systemd/system/vboxweb-service.service.
vboxdrv.sh: failed: modprobe vboxdrv failed. Please use 'dmesg' to find out why.

There were problems setting up VirtualBox.  To re-start the set-up process, run
  /sbin/vboxconfig
as root.

Depois disso, eu corri o comando sugerido e recebi exatamente o mesmo erro.

Como sugerido para @George, corri dmesg -kHd --time-format ctime | tail -20 , as linhas resultantes foram:

[dom ago 13 13:59:07 2017 <    0,005021>] wlo1: authenticate with ea:de:27:93:b1:50
[dom ago 13 13:59:07 2017 <    0,005558>] wlo1: send auth to ea:de:27:93:b1:50 (try 1/3)
[dom ago 13 13:59:07 2017 <    0,003337>] wlo1: authenticated
[dom ago 13 13:59:07 2017 <    0,008390>] wlo1: associate with ea:de:27:93:b1:50 (try 1/3)
[dom ago 13 13:59:07 2017 <    0,006367>] wlo1: RX AssocResp from ea:de:27:93:b1:50 (capab=0x421 status=0 aid=1)
[dom ago 13 13:59:07 2017 <    0,001071>] wlo1: associated
[dom ago 13 14:01:06 2017 <  119,551821>] wlo1: disconnect from AP ea:de:27:93:b1:50 for new auth to c6:6e:1f:08:83:ce
[dom ago 13 14:01:06 2017 <    0,005411>] wlo1: authenticate with c6:6e:1f:08:83:ce
[dom ago 13 14:01:06 2017 <    0,004158>] wlo1: send auth to c6:6e:1f:08:83:ce (try 1/3)
[dom ago 13 14:01:06 2017 <    0,005006>] wlo1: authenticated
[dom ago 13 14:01:06 2017 <    0,001436>] wlo1: associate with c6:6e:1f:08:83:ce (try 1/3)
[dom ago 13 14:01:06 2017 <    0,003535>] wlo1: RX AssocResp from c6:6e:1f:08:83:ce (capab=0x421 status=0 aid=1)
[dom ago 13 14:01:06 2017 <    0,000535>] wlo1: associated
[dom ago 13 14:05:07 2017 <  240,406581>] wlo1: disconnect from AP c6:6e:1f:08:83:ce for new auth to c6:6e:1f:08:83:cf
[dom ago 13 14:05:07 2017 <    0,014262>] wlo1: authenticate with c6:6e:1f:08:83:cf
[dom ago 13 14:05:07 2017 <    0,006950>] wlo1: send auth to c6:6e:1f:08:83:cf (try 1/3)
[dom ago 13 14:05:07 2017 <    0,002182>] wlo1: authenticated
[dom ago 13 14:05:07 2017 <    0,005477>] wlo1: associate with c6:6e:1f:08:83:cf (try 1/3)
[dom ago 13 14:05:07 2017 <    0,001717>] wlo1: RX AssocResp from c6:6e:1f:08:83:cf (capab=0x1 status=0 aid=1)
[dom ago 13 14:05:07 2017 <    0,001518>] wlo1: associated

O que posso fazer para corrigir isso?

    
por Kevin de Lima Alves 13.08.2017 / 16:12

1 resposta

1

Consegui resolver o problema graças aos comentários e estou compartilhando a solução no caso de alguém se deparar com o mesmo problema que eu. O UEFI, interface entre seu hardware e software, que é o mais responsável pela inicialização do sistema, possui uma tecnologia denominada Secure Boot, que por sua vez verifica se o carregador de inicialização do sistema está assinado com uma chave criptográfica autorizada por um banco de dados o firmware. Com verificação de assinatura adequada no (s) carregador (s) de inicialização de estágio seguinte, no kernel e, potencialmente, no espaço do usuário, é possível impedir a execução de código não assinado. Isso ajuda na segurança do seu sistema e dificulta o acesso de softwares mal-intencionados ao seu sistema.

O problema atual lançado na instalação é devido à falta de uma chave válida para alguns módulos do software VirtualBox. Se você tiver esse problema, há algumas maneiras de lidar com isso, a primeira é fácil e a última é um pouco trabalhosa:

  1. Desabilite o BOOT SECURE como apontado por Pilot6:

Na maioria dos casos, você pode entrar nas configurações do UEFI usando o menu do grub. Pressione o botão ESC na inicialização, entre no menu do grub e selecione Configuração do sistema. A opção de inicialização segura deve estar na seção "Segurança" ou "Inicialização" do UEFI.

Você pode entrar diretamente no UEFI, mas isso depende do seu hardware. Leia o manual do seu computador para ver como chegar lá. Pode ser Del , ou F2 na inicialização, ou qualquer outra coisa.

Uma maneira alternativa é desabilitar a inicialização segura usando mokutil .

Desde a versão 4.4.0-21.37 do kernel do Ubuntu, isso pode ser corrigido executando

sudo apt install mokutil
sudo mokutil --disable-validation

Será necessário criar uma senha. A senha deve ter pelo menos 8 caracteres. Após a reinicialização, a UEFI perguntará se você deseja alterar as configurações de segurança. Escolha "Sim".

Em seguida, você será solicitado a inserir a senha criada anteriormente. Algum firmware UEFI pede não a senha completa, mas para inserir alguns caracteres, como primeiro, terceiro, etc. Tenha cuidado. Algumas pessoas não entendem isso. Eu também não obtive isso da primeira tentativa; -)

Update: Agora esta configuração do kernel está habilitada em todos os kernels Ubuntu suportados. O Ubuntu 16.04, 15.10 e 14.04 são afetados.

  1. Módulos Sing VituralBox como sugerido por Majal:

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.

  1. 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 name/"
    
  2. Assinar o módulo (vboxdrv para este exemplo)

    sudo /usr/src/linux-headers-$(uname -r)/scripts/sign-file sha256 ./MOK.priv ./MOK.der $(modinfo -n vboxdrv)
    
  3. Registre as chaves no Secure Boot

    sudo mokutil --import MOK.der
    

    Forneça uma senha para uso posterior após a reinicialização

  4. Reboot e siga as instruções para Inscrever MOK (Chave do Proprietário da Máquina). Aqui está uma amostra com fotos. O sistema será reiniciado mais uma vez. Após a reinicialização, talvez seja necessário sudo modprobe vboxdrv para carregar o módulo.

Por favor, deixe-me saber se o VirtualBox seria executado desta forma no Ubuntu 16.04 (no kernel 4.4.0-21 ou superior, eu acredito).

Recursos: Site detalhado artigo para o Fedora e Implementação do Ubuntu da assinatura do módulo. (eles estiveram trabalhando nisso) ;-) E para a segurança consciente, por favor considere o comentário de @zwets abaixo. Para ter recursos completos de rede e PCI, você também pode assinar os seguintes módulos: vboxnetflt , vboxnetadp e vboxpci . Obrigado a @shasha_trn pelo comentário abaixo.

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 .

    
por Kevin de Lima Alves 14.08.2017 / 00:14