KVM e VirtualBox na mesma Máquina

Olá Pessoal, tudo bem?
KVM e VirtualBox supostamente não podem convivir na mesma máquina, é dizer, o VirtualBox não poderia ser executado enquanto os módulos da KVM estejam carregados na memoria. KVM pode funcionar sem problema nenhum ainda o VirtualBox estivesse instalado na mesma máquina.
Com este panorama, vou te explicar como usar o KVM e o VirtualBox na mesma máquina sem desinstalar nenhum dos dois, ao vivo, sem reiniciar.
Sintoma
Ao executar o VirtualBox, poderás ver a seguinte messagem:
A Messagem diz: “O VirtualBox não pode habilitar a extensão AMD-V. Por favor desabilite a extensão kernel de KVM, recompile o seu kernel e faça um reinício” Vamos calmarnos. Esta messagem é um pouco confusa, não precisas recompilar coisa nenhuma. Vai-nos tomar um par de minutos e não vai ser destrutivo.
O Problema
O VirtualBox e KVM não podem funcionar ao mesmo tempo. São como um casal que vivem na mesma casa mas não se podem nem ver. Isto quer dizer que teriamos que desabilitar KVM para que o VirtualBox funcionasse. A questão é: ¿Cómo fazemos isto? A responta é bem simples: ativando y desativando os módulos do kernel de KVM.
O Linux suporta habilitar y desabilitar módulos do kernel da memória ao vivo, tivendo necesidade nenhuma de reinciar o sistema. Para alcanzar o nosso objetivo, vamos usar os comandos insmod y rmmod
Desabilitando Módulos
Primeiro, vamos ver o kernel. Executamos o comando lsmod a procurar quais são os módulos que estão carregados na memória e vamos fazer un filtro por expressões regulares (vbox e kvm):
|
|
|
|
|
|
|
|
Como podemos observar, o VirtualBox utiliza os drivers vboxdrv e vboxnetflt, entretanto o KVM utiliza os drivers kvm e kvm_amd (eu tengo uma máquina com processador AMD, se tivesses um processador Intel sería o driver kvm_intel) O seguinte que vamos fazer é desabilitar o módulo do kernal de KVM:
|
|
Iniciamos qualquier máquina virtual e verificamos se podemos executa-lâ.
Habilitando Módulos
Assim como desabilitamos os módulos, podemos habilita-lôs de novo. Vamos precisar localizar os módulos no disco e carrega-lôs. Podes usar o comando modprobe, o qual pode ser muito útil se o a ser carregado tivesse dependências.
Vamos buscar o módulo com o comando find, filtrando a busca apenas para os arquivoscom extensão kvm.ko e kvm-amd.ko do nosso kernel atúal [$(uname -r)] e os ordenamos com o comando sort:
|
|
|
|
Se observarmos os três primeiros resultados, vemos o módulo kvm-amd, kvm-intel e kvm, vamos carregar kvm e vamos escolher dependendo do nosso processador:
|
|
No AMD:
|
|
No Intel:
|
|
Tentando Faze-lô mais Simples: Scripts
Vamos automatizar de uma vez. Precisaremos dois scripts: O primeiro vai desabilitar os módulos de KVM e outro vai habilita-lôs. Se quiseremos ser mais estritos, pararemos o serviço VirtualBox quando estivessemos a usar (na realidad, eu não veio necessário) e inicia-lô depois de terminar alguma máquina virtual de KVM. Verficamos o estatus do serviço:
|
|
|
|
Então paramos o serviço:
|
|
Desabilitando KVM e Habilitando VirtualBox
Se não sabemos onde se encontram os comandos rmmod e insmod, com o comando which podemos localiza-lôs bem fácil:
|
|
|
|
|
|
|
|
Criamos o script para habilitar VirtualBox e desabilitar KVM:
|
|
Cola o seguinte conteúdo (troca por kvm_intel no caso que tivesses um processador Intel), guardamos e saímos do editor:
|
|
Habilitando KVM e Desabilitando VirtualBox
Fazemos um script para habilitar KVM e desabilitar VirtualBox:
|
|
Colamos o seguinte conteúdo, guardamos e saímos do editor:
|
|
Vamos habilitar privilégios de execução:
|
|
E quando o executemos, tem que ser com privilégios sudo:
|
|
|
|
Isto é tudo por hoje, espero que tinham gostado, até a próxima!