KVM y VirtualBox en la misma Máquina
PROMO DigitalOcean
Antes de comenzar, quería contarles que hay una promoción en DigitalOcean donde te dan un crédito de USD 100.00 durante 60 días para que puedas probar los servicios que este Proveedor Cloud ofrece. Lo único que tienes que hacer es suscribirte a DigitalOcean con el siguiente enlace: https://bit.ly/digitalocean-itsm
KVM y VirtualBox supuestamente no deberían convivir, o mejor explicado, VirtualBox no se podría ejecutar mientras los módulos de KVM estan cargados en memoria. KVM puede funcionar sin ningun problema aún teniendo VirtualBox instalado en la misma máquina.
Con este panorama, te voy a explicar como usar KVM y VirtualBox en la misma máquina sin desinstalar ninguno de los dos, en vivo, sin reinicios.
Síntoma
Al ejecutar VirtualBox, podrás ver el siguiente mensaje:
Dice: “VirtualBox no pudo habilitar la extension AMD-V. Por favor deshabilite la extensión kernel de KVM, recompile su kernel y reinicie” Vamos a calmarnos. Este mensaje es bastante confuso, no necesitas recompilar nada. Nos tomará un par de minutos y será no destructivo para nada.
El Problema
VirtualBox y KVM no pueden convivir juntos. Es como una pareja que viven en la misma casa pero no se pueden ni ver. Esto quiere decir que habría que deshabilitar KVM para que VirtualBox pudiera funcionar. La cuestión es: ¿Cómo hacemos esto? La respuesta es bien sencilla: insertando y eliminando los módulos del kernel de KVM.
Linux soporta insertar y eliminar módulos del kernel de la memoria al vuelo, sin necesidad reiniciar el sistema. Para lograr nuestro objetivo, vamos a utilizar los comandos insmod y rmmod
Eliminando Módulos
Primero, vamos a ver el kernel. Ejecutamos el comando lsmod en búsqueda de cuales módulos están cargados en memoria y vamos a filtrar por vbox y kvm:
|
|
|
|
Como se puede ver, VirtualBox usa los drivers vboxdrv y vboxnetflt, mientras que KVM usa los drivers kvm y kvm_amd (tengo una máquina con procesador AMD, si tuvieras un procesador Intel te aparecería el driver kvm_intel) Lo siguiente que vamos a hacer es deshabilitar el módulo del kernel de KVM:
|
|
Iniciamos cualquier máquina virtual y comprobamos que podemos ejecutarla.
Insertando Módulos
Así como deshabilitamos los módulos, podemos volver a habilitarlos. Necesitamos para ello ubicar los módulos en el disco y cargarlos. Se puede usar el comando modprobe, el cual puede ser muy útil si el módulo a cargar tuviera dependencias.
Vamos a buscar el módulo con find, restringiendo la búsqueda a que solo encuentre los archivos kvm.ko y kvm-amd.ko de nuestro actual kernel [$(uname -r)] y lo ordenamos con sort:
|
|
Si observamos los tres primeros resultados, vemos el modulo kvm-amd, kvm-intel y kvm, vamos a cargar kvm y escogeremos dependiendo de nuestro procesador:
|
|
Para AMD:
|
|
Para Intel:
|
|
Haciéndolo más Simple: Scripts
Automaticemos esto de una vez. Vamos a necesitar dos scripts: Uno que deshabilite los módulos de KVM y otro que los habilite. Si quieremos ser bien estrictos, detendremos el servicio de VirtualBox cuando usemos KVM (yo en realidad no lo veo necesario) e iniciarlo después de terminar alguna máquina virtual de KVM. Comprobamos el estatus del servicio:
|
|
|
|
Detenemos entonces el servicio:
|
|
Deshabilitando KVM y Habilitando VirtualBox
Si no sabemos muy bien donde se encuentra los programas rmmod e insmod, con which lo podemos ver:
|
|
|
|
Creamos un script para habilitar VirtualBox y deshabilitar KVM:
|
|
Pega el siguiente contenido (cambia por kvm_intel en caso que tengas un procesador Intel), guardamos y salimos del editor:
|
|
Habilitando KVM y Deshabilitando VirtualBox
Haremos un script para habilitar KVM y deshabilitar VirtualBox:
|
|
Pegamos el siguente contenido, guardamos y salimos del editor:
|
|
Les damos permisos de ejecución:
|
|
Y cuando lo ejecutamos, tiene que ser con permisos sudo:
|
|
|
|
Bueno esto es todo por hoy, espero les haya gustado. ¡Hasta la próxima!
Apoya este Proyecto!!!
Si te pareció útil este artículo y el proyecto en general, considera brindarme un café :)
Buy me a coffee