Solucion: VirtualBox no puede usar la virtualización por hardware (VT-x/AMD-V)

Emular Raspberry Pi en una máquina virtual con VirtualBox 

Si estás utilizando Kubuntu o alguna otra distribución Linux con escritorio KDE, es posible que al intentar ejecutar máquinas virtuales en VirtualBox te encuentres con errores relacionados con la virtualización por hardware. En mi caso, descubrí que el sistema ya tenía cargados los módulos del kernel correspondientes a KVM (Kernel-based Virtual Machine), una tecnología de virtualización de bajo nivel utilizada por herramientas como QEMU o libvirt.


Este conflicto puede surgir especialmente si instalaste previamente herramientas relacionadas con emulación de Raspberry Pi u otros entornos ARM que utilizan KVM como backend, incluso si no los usás activamente. Cuando los módulos kvm y kvm_intel (o kvm_amd) están cargados, toman control de las extensiones de virtualización del procesador, impidiendo que VirtualBox acceda a ellas.

Solución: Un script para descargar KVM antes de iniciar VirtualBox

La solución consiste en descargar estos módulos del kernel antes de lanzar VirtualBox. Para ello, preparé un pequeño script en Bash que hace lo siguiente:

  • Verifica si los módulos kvm y kvm_intel/kvm_amd están cargados.
  • Si lo están, los descarga usando modprobe -r.
  • Luego, lanza VirtualBox como mi usuario normal, para asegurar compatibilidad con el entorno gráfico.

Este es el contenido del script:

#!/bin/bash
echo "🔐 Solicitando permisos..."
[ "$EUID" -ne 0 ] && exec sudo "$0" "$@"

echo "🔍 Verificando si KVM está cargado..."
if lsmod | grep -q kvm; then
    echo "⚠️  KVM está cargado. Intentando desactivarlo..."

    if lsmod | grep -q kvm_intel; then
        modprobe -r kvm_intel && echo "✅ kvm_intel descargado."
    elif lsmod | grep -q kvm_amd; then
        modprobe -r kvm_amd && echo "✅ kvm_amd descargado."
    fi

    if modprobe -r kvm; then
        echo "✅ kvm descargado exitosamente."
    else
        echo "❌ No se pudo descargar kvm. Puede estar en uso."
        exit 1
    fi
else
    echo "✅ KVM no está cargado."
fi

echo "🚀 Iniciando VirtualBox como usuario normal..."
sudo -u "$SUDO_USER" virtualbox & disown

exit 0

Lo guardé en /home/efrain/Scripts/VirtualBox.sh y le di permisos de ejecución con:

chmod +x /home/efrain/Scripts/VirtualBox.sh

Crear un acceso directo para el escritorio

Para poder ejecutarlo cómodamente con doble clic, creé un archivo .desktop en mi escritorio con el siguiente contenido:

[Desktop Entry]
Type=Application
Name=VirtualBox - Script de Inicio
Comment=Desactiva KVM y lanza VirtualBox
Exec=konsole -e /home/efrain/Scripts/VirtualBox.sh
Icon=virtualbox
Categories=System;Emulator;
Terminal=false
StartupNotify=false

Luego le di permisos de ejecución también al acceso directo:

chmod +x ~/Escritorio/VirtualBox.desktop

La clave está en que konsole -e lanza una terminal para que pueda ingresar la contraseña de sudo, ya que sin una terminal interactiva el script no puede solicitarla correctamente.

Resultado

Gracias a este pequeño script y acceso directo, puedo usar VirtualBox en Kubuntu sin errores de virtualización, incluso cuando el sistema haya cargado previamente módulos de KVM por otros entornos. Esta solución es sencilla, reversible y no requiere desinstalar nada.

Espero que te sirva si te encontrás con un problema similar. Si tenés dudas o sugerencias, podés dejarme un comentario.