Cómo solucionar el error Inaccessible Boot Device en Proxmox tras migrar Windows

El pantallazo azul (BSOD) con el código de detención INACCESSIBLE_BOOT_DEVICE (error 0x0000007B) es el fallo más crítico al migrar máquinas virtuales Windows Server (2016, 2019, 2022) o Windows 10/11 desde VMware ESXi o Hyper-V hacia Proxmox VE.

Este error ocurre porque Windows intenta arrancar utilizando los controladores de almacenamiento del hipervisor anterior (como el controlador PVSCSI de VMware o IDE de Hyper-V). Al encontrarse en el entorno KVM de Proxmox con un disco configurado como VirtIO SCSI, el kernel de Windows no tiene el controlador vioscsi.sys inicializado en la base de datos de arranque crítico del registro, provocando el bloqueo inmediato del sistema.

// EJECUCIÓN RÁPIDA (TL;DR) – MÉTODO SATA DUAL

# Si la VM no arranca y necesitas levantarla en 2 minutos:

  1. Apaga la VM en Proxmox.
  2. Ve a Hardware > selecciona el Hard Disk principal y pulsa Detach (el disco pasa a estado “Unused”).
  3. Haz doble clic en el disco “Unused” y reconéctalo seleccionando como bus: SATA (puerto 0).
  4. Añade un segundo disco temporal pequeño de 1 GB con bus VirtIO SCSI.
  5. Monta la ISO oficial virtio-win.iso en la unidad de CD.
  6. Enciende la VM. Windows arrancará sin pantallazo azul usando sus controladores SATA nativos y cargará automáticamente el driver VirtIO al detectar el disco de 1 GB.
  7. Apaga la VM, elimina el disco de 1 GB, desconecta el principal de SATA y vuelve a mapearlo como VirtIO SCSI para obtener el máximo rendimiento de I/O.

Causa Raíz del Error 0x0000007B en KVM

Cuando completas el procedimiento descrito en nuestra Guía Maestra para migrar de VMware a Proxmox VE 8, el disco virtual se transfiere de forma íntegra a nivel de bloques. Sin embargo, la pila de almacenamiento de Windows funciona bajo una jerarquía estricta:

  • Fase de carga del kernel (ntoskrnl.exe): Windows consulta la clave del registro HKLM\SYSTEM\CurrentControlSet\Services buscando el servicio de arranque que controla el bus donde reside la partición del sistema C:.
  • El conflicto de bus: Si el disco está mapeado como bus SCSI en Proxmox pero el servicio vioscsi está deshabilitado (Start=3 en lugar de Start=0) o ausente, Windows pierde el acceso a los bloques de disco a mitad del arranque y aborta mediante el volcado de memoria INACCESSIBLE_BOOT_DEVICE.

Método 1: Reparación mediante el truco del Controlador SATA Dual (Recomendado)

Este método es el más limpio porque no requiere utilizar consolas de recuperación de Windows ni comandos complejos.

Paso 1: Cambiar el bus del disco primario a SATA

  1. En el panel de Proxmox VE, selecciona tu máquina virtual Windows y dirígete a la pestaña Hardware.
  2. Haz clic sobre el disco primario (por ejemplo, scsi0) y pulsa el botón Detach de la barra superior.
  3. El disco aparecerá abajo como Unused Disk 0.
  4. Selecciónalo, pulsa Edit y en el desplegable de Bus selecciona SATA, asignando el número 0. Haz clic en Add.
  5. Ve a Options > Boot Order y asegúrate de que sata0 esté marcado y en primera posición de la lista.

Paso 2: Forzar la carga del controlador VirtIO

Para que Windows aprenda a comunicarse con el bus VirtIO SCSI antes de cambiar el disco definitivo:

  1. En Hardware, pulsa Add > Hard Disk.
  2. Crea un disco de 1 GB en cualquier almacenamiento local, pero selecciona obligatoriamente como bus: SCSI (VirtIO SCSI Single).
  3. Asegúrate de tener montada la ISO virtio-win.iso en la unidad de CD-ROM.
  4. Enciende la máquina virtual y abre la consola NoVNC.

Windows arrancará con normalidad gracias a la compatibilidad nativa del controlador SATA. Una vez que inicies sesión como Administrador, abre el Administrador de Dispositivos: verás que el sistema reconoce la controladora SCSI de Red Hat e instala el driver necesario para gestionar el disco de 1 GB.

Paso 3: Retorno a VirtIO SCSI de alto rendimiento

El controlador ya está validado y activo en el registro de Windows. Ahora devolvemos la máquina a su configuración óptima:

  1. Apaga la máquina virtual.
  2. Elimina el disco temporal de 1 GB.
  3. Desconecta (Detach) el disco del sistema de sata0.
  4. Vuelve a añadirlo como SCSI (puerto 0), marcando las casillas Discard (para liberar espacio automáticamente) y emulación SSD.
  5. Ajusta el Boot Order para que scsi0 sea el primer dispositivo de arranque.
  6. Enciende el servidor. Windows iniciará de forma instantánea bajo VirtIO SCSI sin volver a fallar.

Método 2: Inyección de Controladores Offline mediante DISM (Modo Rescate)

Si el servidor tiene políticas de seguridad corporativas que impiden el arranque en modo SATA, puedes inyectar los controladores directamente en la imagen de Windows apagada usando el entorno de recuperación (WinPE).

Paso 1: Arrancar en el instalador de Windows

  1. Conecta la ISO de instalación de Windows Server en la VM y coloca la unidad de CD en primer lugar del orden de arranque.
  2. Inicia la VM y presiona cualquier tecla para arrancar desde el CD.
  3. En la primera pantalla del asistente, pulsa Siguiente y haz clic en Reparar el equipo (Repair your computer) en la esquina inferior izquierda.
  4. Navega a Solucionar problemas (Troubleshoot) > Símbolo del sistema (Command Prompt).

Paso 2: Identificar las letras de unidad

En el entorno WinPE, las letras de disco suelen cambiar. Ejecuta:

diskpart
list volume
exit

Identifica qué letra tiene asignada la partición de Windows (normalmente D: o E: en WinPE) y qué letra tiene la unidad de CD donde está la ISO de VirtIO (por ejemplo, F:).

Paso 3: Inyectar el controlador con la herramienta DISM

Ejecuta el siguiente comando adaptando las letras de unidad a tu caso:

dism /image:D:\ /add-driver /driver:F:\vioscsi\2k22\amd64\vioscsi.inf

(Si utilizas Windows Server 2019, sustituye 2k22 por 2k19 en la ruta de la carpeta).

El comando devolverá el mensaje: La operación se completó correctamente. Escribe exit, apaga la máquina virtual, retira la ISO de recuperación y Windows arrancará sin inconvenientes directamente desde el bus VirtIO SCSI.

Optimizaciones Obligatorias tras la Recuperación

Una vez recuperado el acceso al sistema operativo, aplica estas dos tareas de mantenimiento:

  1. Instalar el servicio QEMU Guest Agent: Ejecuta el instalador ubicado en la ISO de VirtIO dentro de la ruta guest-agent\qemu-ga-x86_64.msi. Esto permite la sincronización de memoria y la ejecución limpia de instantáneas durante las tareas de respaldo en repositorios NFS de Synology.
  2. Compactación del disco virtual: Las máquinas migradas desde VMware suelen conservar espacio no reclamado en el archivo de disco. Puedes recuperar gigabytes de almacenamiento siguiendo nuestra guía para reducir discos virtuales QCOW2 en Proxmox.

Preguntas Frecuentes

¿Puedo dejar el disco permanentemente en modo SATA?

Funcionar funcionará, pero el bus SATA en KVM está emulado por software, lo que genera una sobrecarga de CPU de hasta un 25% y limita la tasa de IOPS. El controlador VirtIO SCSI Single es paravirtualizado (comunicación directa con el kernel de Linux), ofreciendo el rendimiento nativo del hardware.

¿Qué hago si el pantallazo azul persiste tras inyectar el controlador?

Verifica en la configuración de la VM (pestaña Options > BIOS) si el servidor original utilizaba OVMF (UEFI) o SeaBIOS (Legacy). Si migraste una máquina instalada originalmente en modo BIOS tradicional configurándola como UEFI en Proxmox (o viceversa), el gestor de arranque BCD no encontrará la partición activa.


Guía técnica elaborada por Gustavo Dulcey, Ingeniero de Sistemas especializado en Infraestructura de Servidores, Migraciones Cloud y Virtualización KVM.

Deja un comentario