[TUTORIAL] Como fazer o VirtualBox voltar a funcionar no fedora após atualização de kernel

geraldossk
editado September 2022 em Tutoriais

ATENÇÃO: Pro virtualbox funcionar e os módulos do kernel serem refeitos, você precisa DESLIGAR O SECURE BOOT.

Embora a melhor forma de virtualizar hardware em linux seja com KVM+qemu+(virt-manager ou gnome boxes) (aqui os tutoriais do virt-manager e do gnome-boxes e aqui também), muitos ainda usam VirtualBox da Oracle pois já usavam quando tinha máquinas windows, ou porque estão seguindo algum curso e as orientações são todas baseadas no VirtualBox.
O problema de usar virtualbox em host linux surge quando há uma atualização de kernel no host (o que no fedora pode acontecer algumas vezes ao mês :D ), o que vai sempre ocasionar um erro na próxima execução de uma máquina virtual no VirtualBox, isto ocorre pois o ele não é nativo do kernel linux e precisa a cada vez ter um código específico "injetado" novamente como um módulo do novo kernel.
O procedimento para fazer isso não é muito complicado não, mas precisa que se tenha o repositório RPM fusion habilitado, para que o DNF baixe os pacotes necessários.


Aqui vou aproveitar e listar os dois tutorias de instalação que temos no forum sobre como instalar VirtualBox no fedora:
Instalando e configurando virtualbox no fedora pelo rpmfusion (testado até a versão F36 do fedora)
Instalando VirtualBox baixando o rpm do site deles (atualmente a última versão disponível lá para fedora era a F32, e ela não serve pra versões posteriores)

O ERRO

Depois de algum tempo sem usar seu virtualbox e após algumas atualizações de seu sistema fedora, incluindo o kernel, você inicia seu virtual box na esperança de continuar alguma atividade naquela máquina virtual do windows que você ainda mantém por causa de um certo programa.
Entretanto o que acontece é que aparecem estas mensagens abaixo ao tentar iniciar a VM:


Observe que nesta ultima mensagem é mencionado especificamente que falta um "kernel driver", pois o kernel atualizado é diferente do que existia no momento da primeira instalação do VirtualBox.

A CORREÇÃO

Observação: caso você tenha instalado o VirtualBox baixando o rpm do site, sugiro que remova ele primeiro e em seguida reinstale usando o método descrito no tutorial desse link.

Como citei no começo, para baixar os pacotes atualizados necessários para a correção, é necessário habilitar os repositórios RPMfusion (neste caso específico o rpm fusion free).


1 - Caso você ainda não tenha habilitado ele, aqui vai o código pra você fazer isso pelo terminal (caso já tenha feito antes, pode seguir pro próximo passo).

sudo dnf install https://mirrors.rpmfusion.org/free/fedora/rpmfusion-free-release-$(rpm -E %fedora).noarch.rpm

Caso você queira fazer isso pelo ambiente gráfico pode ver nesse outro tutorial como fazer isso pro fedora worstation.

2 - Abra um terminal e digite o seguinte comando:

sudo dnf install kernel-devel-$(uname -r) akmod-VirtualBox

O dnf verificará os repositórios e informará os pacotes que irá instalar.


ATENÇÃO: Caso você tenha instalado baixando o RPM do site do VirtualBox e instalado para uma versão que não a correta (por exemplo F32 pra instalar no F33) a correção não irá funcionar, pois haverá conflito de versões instaladas.


Após baixar os pacotes, durante a execução dos scripts de instalação, em um momento ele perguntará pra você se deseja adicionar uma chave, responda "yes", ele continuará com a instalação até o final.

3 - Após encerrar a instalação, digite essas linhas no terminal, após cada uma dê "enter" e espere a saída do comando:

sudo akmods
sudo systemctl restart vboxdrv
lsmod  | grep -i vbox

Aqui um print da tela com os resultados:

Se o resultado for semelhante com essa imagem acima, é porque deu certo.

Observação: Se a saída indicar que o serviço não pode ser iniciado, e você ainda estiver tendo erros pra iniciar sua VM, então possivelmente sua máquina está com secure boot habilitado. Pro virtualbox funcionar e os módulos do kernel serem refeitos, você precisa DESLIGAR O SECURE BOOT.

O RESULTADO

4 - Reinicie sua máquina e experimente abrir a VM no VirtualBox novamente.


Sucesso!!!! Aqui no exemplo uma VM de F32 Workstation rodando em VirtualBox num host F33 Cinnamon.

INDO ALÉM

Aqui pra mostrar um pouco do poder da virtualização :D

Fedora 33 KDE rodando em VirtualBox dentro de um Fedora 33 Workstation rodando em qemu/virt-manager dentro de um host Fedora 33 KDE...
B)

Comentários