19 marzo 2025

Error en Virtualbox "can't operate in vmx root mode"

VIRTUALBOX
Hace años que vengo utilizando Virtualbox para probar otros sistemas operativos, y sobre todo, para probar nuevas versiones y distribuciones linux sin tener que tocar mi sistema principal.

Hace unos días se actualizó el kernel Linux en LMDE 6 (Debian) a la versión 6.12.12 . Desde entonces al arrancar las máquinas virtuales de Virtualbox me devuelve este error: 

VBoxManage: error: 

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)

Después de mucho buscar he encontrado un par de soluciones en internet.
La primera solución es editar este archivo:

sudo nano /etc/modprobe.d/blacklist.conf

y añadirle estas dos lineas:

    blacklist kvm

    blacklist kvm_intel  (si es Intel)

    blacklist kvm_amd  (si es AMD)

guardamos y reiniciamos. 

Esto funciona, pero tiene un inconveniente. Si utilizas otra aplicación que necesite kvm, como Qemu/kvm, esta no va a funcionar. Si no utilizas nada de esto, esta es una solución al problema con Virtualbox.

Y vamos con la segunda, que es la que he utilizado. Consiste en ejecutar en consola estas dos lineas antes de ejecutar Virtualbox:

    Si el procesador es Intel:

sudo modprobe -r kvm_intel
sudo modprobe -r kvm

    Si el procesador es AMD:

sudo modprobe -r kvm_amd
sudo modprobe -r kvm

Una vez hecho esto funciona, pero también pienso que es un engorro hacer esto cada vez que queramos entrar en Virtualbox, así que he hecho un script:    

#!/bin/bash

    # Eliminar módulos KVM si están cargados
    if lsmod | grep -q kvm_intel; then
        sudo modprobe -r kvm_intel || echo "No se pudo descargar kvm_intel"
    fi

    if lsmod | grep -q kvm; then
        sudo modprobe -r kvm || echo "No se pudo descargar kvm"
    fi

    # Ejecutar VirtualBox
  VirtualBox "$@" &

Con esto lo hacemos todo, incluso nos abre el programa.

Con esto estaría terminado, pero opcionalmente, podemos hacer que no nos pida el password cada vez que ejecutemos el script. Esto lo hacemos modificando el archivo etc/sudoers de esta forma.

    Editamos el archivo con:

sudo visudo

    y al final añadimos la linea:

tu_usuario ALL=(ALL) NOPASSWD: /sbin/modprobe -r kvm_intel, /sbin/modprobe -r kvm

    sustituyendo tu_usuario por tu nombre de usuario real.

Guardamos y listo.

Espero que os sirva, al menos mientras modifican el kernel o VirtualBox.

No hay comentarios:

Publicar un comentario

Gracias por tu comentario