💻 Solución al Error VERR_VMX_IN_VMX_ROOT_MODE: Alterna entre VirtualBox y Docker en Linux (Intel)
Si usas VirtualBox y Docker en un sistema Linux con CPU Intel, es muy probable que te hayas topado con este error frustrante:
VirtualBox can’t operate in VMX root mode. Please disable the KVM kernel extension, recompile your kernel and reboot (VERR_VMX_IN_VMX_ROOT_MODE).
Este problema ocurre porque tanto VirtualBox como Docker (a través de KVM) intentan usar en exclusiva las extensiones de virtualización de tu CPU (Intel VT-x o AMD-V). Si uno está activo, bloquea al otro.
Afortunadamente, existe una solución limpia que no te obliga a desinstalar nada ni a reiniciar tu máquina cada vez. Vamos a crear un par de scripts que activarán y desactivarán el módulo KVM (Kernel-based Virtual Machine) a voluntad.
🛑 Entendiendo el Conflicto: KVM y la Virtualización
Para que se entienda fácil:
- Tu CPU Intel tiene una feature llamada VT-x que permite la virtualización súper rápida.
- KVM es el módulo de Linux que usa VT-x para Docker (y otras herramientas como QEMU/virt-manager).
- VirtualBox también necesita usar VT-x directamente.
Cuando KVM está cargado, «secuestra» VT-x, provocando que VirtualBox falle con el error VERR_VMX_IN_VMX_ROOT_MODE. La solución es simple: descargar KVM antes de usar VirtualBox y recargarlo después para Docker.
Para lograr esto, usaremos el comando modprobe. Este comando es clave en Linux, ya que se encarga de instalar (modprobe <modulo>) y desinstalar (modprobe -r <modulo>) los módulos del kernel de la memoria del sistema de forma temporal.
En nuestro caso, para desinstalar los módulos que causan el conflicto usaremos los comandos:
modprobe -r kvm
y
modprobe -r kvm_intel
Y para instalarlos de nuevo:
modprobe kvm
y
modprobe kvm_intel
Sin embargo, para facilitar este trabajo vamos a crear dos scripts que nos facilitarán el trabajo de una manera elegante.
🛠️ Paso 1: Crear el Script de Desactivación (Para VirtualBox)
Este script se encargará de detener KVM. ¡Importante! Recuerda cerrar cualquier contenedor de Docker antes de ejecutarlo.
1.1. Crea el archivo start_vbox.sh
Abre tu terminal y crea el archivo en tu carpeta personal:
nano ~/start_vbox.sh
1.2. Pega el código
Copia y pega el siguiente contenido (específico para CPU Intel):
#!/bin/bash
echo "--- Preparando el sistema para VirtualBox (Deshabilitando KVM) ---"
# Intenta descargar los módulos KVM (específico para Intel)
echo "Advertencia: Asegúrate de que NO hay contenedores Docker o VMs en ejecucion."
# 1. Descarga el módulo de Intel
sudo modprobe -r kvm_intel 2>/dev/null
if [ $? -eq 0 ]; then
echo "Modulo kvm_intel descargado correctamente."
fi
# 2. Descarga el módulo principal
sudo modprobe -r kvm 2>/dev/null
if [ $? -eq 0 ]; then
echo "Modulo kvm descargado correctamente."
fi
echo "--- Listo. Ya puedes iniciar VirtualBox. ---"
Guarda y cierra el archivo (CTRL+O, luego ENTER, y CTRL+X en nano).
🚀 Paso 2: Crear el Script de Activación (Para Docker)
Cuando termines con VirtualBox, este script cargará KVM de nuevo.
2.1. Crea el archivo start_docker.sh
nano ~/start_docker.sh
2.2. Pega el código
Copia y pega este contenido:
#!/bin/bash
echo "--- Preparando el sistema para Docker (Habilitando KVM) ---"
# Carga los módulos KVM (específico para Intel)
# 1. Carga el módulo principal KVM
sudo modprobe kvm
if [ $? -eq 0 ]; then
echo "Modulo kvm cargado correctamente."
fi
# 2. Carga el módulo específico para Intel
sudo modprobe kvm_intel
if [ $? -eq 0 ]; then
echo "Modulo kvm_intel cargado correctamente."
fi
echo "--- Listo. Ahora puedes usar Docker y tus contenedores. ---"
Guarda y cierra.
🔒 Paso 3: Dar Permisos de Ejecución
Para que tu sistema pueda ejecutar estos archivos como programas, solo tienes que darles permisos:
chmod +x ~/start_vbox.sh
chmod +x ~/start_docker.sh
🔄 Flujo de Trabajo: Cómo Alternar Rápido
Usar estos scripts es la parte más sencilla:
🎯 Para Usar VirtualBox:
- Cierra Docker: Asegúrate de que no haya contenedores ni VMs de Docker activos.
- Ejecuta el script de desactivación:
~/start_vbox.sh - Inicia VirtualBox y tu VM.
🐳 Para Usar Docker:
- Cierra VirtualBox: Apaga la máquina virtual y sal del programa.
- Ejecuta el script de activación:
~/start_docker.sh - Inicia Docker o tus contenedores.
¡Eso es todo! Este método te permite usar ambas herramientas de virtualización de forma eficaz y rápida. ¡Adiós al molesto error de VMX root mode!

