Windows 10 en KVM: cambie el disco de arranque a Virtio

25

He instalado una máquina virtual con Windows 10 usando un disco IDE y ahora me gustaría cambiar el disco para usar el controlador Virtio.

Para otras versiones de Windows, el enfoque en esta pregunta parece ser suficiente: ¿cómo migrar una VM IDE a una VM virtio?

Sin embargo, con Windows 10, esto lleva a un INACCESSIBLE_BOOT_DEVICEproblema.

Soy consciente de que el enfoque preferido es usar el dispositivo Virtio desde el principio e instalar el controlador virtio apropiado cuando se le solicite. Lamentablemente, tuve algunos problemas por separado al cambiar el CD en KVM (tampoco pude hacer funcionar 2 dispositivos CDROM).

¿Hay alguna forma de corregir este problema sin reinstalar?

Problema similar aquí: https://me.m01.eu/blog/2015/03/windows-10-kvm-and-iscsi/#comment-36090

Graeme
fuente
+1. No pude resolver este problema yo mismo. Después de varias soluciones para versiones anteriores de Windows, intenté instalar el controlador VirtIO en la VM de Windows después de enchufar un dispositivo de bloque VirtIO, pero aún tengo INACCESSIBLE_BOOT_DEVICEpantalla azul. Terminé reinstalando en un dispositivo de arranque VirtIO.
Deltik
Como soy vago, lo publicaré como un comentario para que lo verifiques: agrega un disco adicional, con virtio "controlador". Instale el controlador cuando Windows se lo solicite. No es necesario crear particiones ni nada. Luego cambie el disco de arranque a virtio. Debido a que ahora está instalada una instancia de controlador de controlador (muy importante), debería funcionar.
Daniel B
@DanielB: Eso es exactamente lo que hice. Parece que su sugerencia funciona para versiones anteriores de Windows, pero no para Windows 10.
Deltik
Hm, está bien Bueno, supongo que tengo la mejor manera de no resolver su problema (risas): solo modifique el ISO de Windows e incluya los controladores. Tenga en cuenta que debe permanecer arrancable. De esa manera, puede (con suerte) instalar directamente en virtio.
Daniel B
1
@DanielB: el controlador VirtIO se puede cargar en el proceso de instalación con un disco de controlador separado. Si Windows 10 está instalado con el controlador VirtIO, no hay problema. Es solo que las instrucciones existentes en Internet para cambiar Windows de IDE a VirtIO no funcionan para máquinas virtuales KVM de Windows 10.
Deltik

Respuestas:

24

Todas las respuestas son correctas, pero es posible que deba realizar algunos pasos adicionales después de haber instalado los controladores virtio. Aquí están los pasos que seguí:

  1. Abra un símbolo del sistema elevado y configure la VM para que arranque en modo seguro escribiendo

    bcdedit / set {current} safeboot minimal

  2. apague la VM y cambie el tipo de dispositivo de arranque a virtio.

  3. arrancar la VM. Entrará en modo seguro.

    Nota: en modo a prueba de errores, todos los controladores de inicio de arranque se habilitarán y cargarán, incluido el controlador virtio. Como ahora hay un minipuerto instalado para usarlo, el núcleo ahora lo hará parte de los controladores que se cargarán en el arranque y no lo deshabilitará nuevamente.

  4. en la VM arrancada, restablezca la configuración de bcdedit para permitir que la máquina arranque en el modo Normal escribiendo (en el símbolo del sistema elevado nuevamente):

    bcdedit / deletevalue {current} safeboot

  5. Hecho.

llegolas
fuente
1
¡Fantástico! Esta fue la parte que faltaba para mí. Solía bcdedit /set safeboot minimal, omitiendo el {current}porque no estaba seguro de lo que se suponía que debía ir allí.
Charles Green
2
@CharlesGreen {current}es literal, escribe como está.
Marc.2377
Problema si tiene un inicio de sesión con PIN porque el inicio de sesión con contraseña puede requerir acceso a la red. Estoy reinstalando Windows como resultado. answers.microsoft.com/en-us/windows/forum/windows_10-security/…
Andrew Olney
Intenté con la red de arranque seguro bcdedit / set {current} en el paso uno para evitar el problema de inicio de sesión, también creé un usuario local para estar más seguro y realmente no creo que el problema se haya aplicado a mí de todos modos, pero dado que la máquina es conectado a un dominio y no tengo control de todo lo que quería asegurarme de que no hice nada malo. Y el parámetro de red al menos no estropeó el proceso.
HackerBaloo
¿Cómo se hace 1), es decir, el mensaje elevado?
Frederick Nord
16

Se proporciona una respuesta bastante simple , y puede funcionar en muchos casos, junto con sugerencias sobre otras opciones. Si (como yo) no puede cambiar a IDE y se ve obligado a usar VirtIO, entonces el siguiente enfoque alternativo podría funcionar:

  1. Agregue tanto Windows 10 DVD / CD ISO como virtio driver ISO a VM.
  2. Inicie Windows 10 DVD / CD y acceda a un símbolo del sistema desde la opción de modo de reparación.
  3. Cargue el controlador a través de la CLI, por ejemplo drvload e:\viostor\w10\amd64\viostor.inf
    • En mi caso, e: fue donde se asignó el virtio install ISO.
    • Después de cargar el controlador f: fue donde se montó la instalación de Windows.
  4. Use el comando DISM para inyectar el controlador del controlador de almacenamiento
    • P.ej dism /image:f:\ /add-driver /driver:e:\viostor\w10\amd64\viostor.inf
    • Como se indicó anteriormente, cambie las asignaciones de letras de unidad según su propio entorno.

Evita la necesidad de jugar con CD / imágenes de arranque especiales de Windows y 'parches' de la imagen de instalación de Windows real sobre la marcha.

Tenga en cuenta que, para este caso de nicho, sugeriría evitar la reparación de inicio (que falló para mí). No parecía saber cómo incluir vistor.inf después de cargarlo, y si lo intentas, ten cuidado de evitar el deseo de DVD de Windows 10 para restaurar o reinstalar todo ...

Crédito para el enfoque DISM: uso de dism para agregar controladores

JPvRiel
fuente
1
Alternativa a 4: haga clic derecho en el archivo inf -> Instalar.
rbs
Además, ten cuidado con las actualizaciones de Windows que rompen esto. Según una publicación de reddit, "la actualización borró mis controladores VirtIO": reddit.com/r/VFIO/comments/6b06y5/… . Esto podría suceder en el caso de la esquina cuando ejecuta su instalación de Windows como arranque dual y VM y aplica la actualización cuando está en hardware nativo ...
JPvRiel
1
Esto, más la respuesta a continuación. Tuve que hacer el arranque en Modo seguro (bcdedit / set {current} safeboot minimal) y luego eliminar el arranque en Modo seguro (bcdedit / deletevalue {current} safeboot), y luego reiniciar. Después de eso, funcionó con Windows Server 2016 Essentials.
G Trawo el
10

Los pasos a seguir en general son:

  1. Instale los controladores VirtIO en la VM
  2. Configure el disco del sistema de la VM para usar VirtIO
  3. Si la VM no arranca, ejecute Reparación de inicio o incluso Reparar Instalar

El procedimiento en detalle es:

  1. Devuelva el disco de arranque a IDE.
  2. Asegúrese de que la máquina virtual de Windows esté apagada.
  3. Descargue los controladores ISO de VirtIO desde aquí .
  4. Móntelo en la unidad de CD para la VM.
  5. Agregue un dispositivo de almacenamiento que sea del tipo VirtIO. La asignación de tamaño no importa, ya que la está utilizando para instalar los controladores.
  6. Inicie la VM de Windows. Intentará instalar los controladores. Si no es así, abra el Administrador de dispositivos y debería ver el dispositivo SCSI enumerado con el icono de signo de exclamación al lado. Puede elegir actualizar el controlador y apuntar al directorio apropiado de ISO montado. Una vez instalado, no reinicie, pero apague la máquina.
  7. En la configuración de virt-manager para Windows, cambie el tipo de almacenamiento de IDE a VirtIO.
  8. Puede eliminar el dispositivo de almacenamiento que creó anteriormente. Ya no es necesario.
  9. Inicie Windows, debería arrancar e instalar los controladores SCSI. Deberá reiniciar después de que lo haga.
  10. Si la VM no arranca pero los controladores están instalados, puede intentar hacer lo siguiente:

    1. Reparación de inicio que puede solucionar ciertos problemas del sistema que pueden impedir que Windows se inicie.
    2. La última solución: Reparar Instalar al arrancar desde la ISO de Windows 10. Esto mantendrá todas las aplicaciones y configuraciones de usuario, solo actualiza Windows y arranca. Use un ISO de Windows 10 reciente.

Si desafortunadamente se requiere el último paso, una dificultad más que se puede encontrar es si el CD de arranque de Windows no puede entender el disco VirtIO porque Microsoft no incluyó estos controladores. En este caso, es necesario crear un CD / USB de arranque personalizado que contenga estos controladores, pero asegúrese de comenzar desde un ISO de Windows que esté en el mismo nivel que la instalación obteniendo el último (actualmente 1511).

Aquí hay algunos tutoriales sobre cómo incorporar controladores en Windows:

harrymc
fuente
Esta respuesta funcionaría (y funciona para otras versiones en Windows), excepto que en el paso 9, cuando intentas arrancar hay un error INACCESSIBLE_BOOT_DEVICE (aquí estaba cuando publiqué la pregunta). Una reparación de inicio (10.1) no funciona y el paso 10.2 en realidad no es posible. Una instalación de reparación solo se puede realizar iniciando primero el sistema, sin el CD, y luego ejecutándolo setup.exeen el CD. Esto es lo que describe el enlace en la pregunta y, que yo sepa, no hay otra forma de hacerlo.
Graeme
¿Qué otra información se supone que debo proporcionar exactamente? Te he dicho repetidamente que la opción no está allí. El problema aquí es que usted insiste continuamente en que lo es. Si es el caso de que hay 'docenas de otros en varios artículos encontrados en Internet', consulte uno. Enlace un artículo que describe cómo arrancar desde el CD e iniciar una instalación de reparación, sin primero arrancar el sistema instalado y ejecutarlo setup.exeen el CD. Enlace un artículo de una fuente confiable que demuestre que no está mintiendo y le pediré disculpas y le daré su valioso voto.
Graeme
Vea, por ejemplo, este video sobre cómo realizar la Reparación de inicio en Windows 10 desde los medios de instalación. De lo contrario, intente utilizar el símbolo del sistema . Como dije anteriormente, es posible que necesites un ISO integrado: no tengo idea si la instalación de WIn10 contiene los controladores VirtIO.
harrymc
O puede adaptar el método drvload para agregar los controladores VirtIO a la imagen de instalación de Windows PE arrancada.
harrymc
2
Si bien la respuesta anterior suena bien y parece simple, desafortunadamente con mi VM usando la pc-q35-2.5emulación / tipo de máquina, no es posible agregar un controlador IDE.
JPvRiel
5

La respuesta de harrymc funciona bien para mí.

los siguientes pasos seguí:

  1. Instale el controlador virtio en windows
  2. Agregue un disco virtio "ficticio" adicional. Reinicie y verifique si el "dummy" funciona.
  3. Si el Paso 2 funciona, cambie el disco de arranque a virtio.
  4. Reiniciar
  5. Retire el disco virtio adicional "ficticio"
  6. ...
sdhd
fuente
Por favor no agregue "gracias" como respuestas. Invierta algo de tiempo en el sitio y obtendrá los privilegios suficientes para votar las respuestas que le gusten, que es la forma de Súper Usuario de decir gracias.
DavidPostill
1
Esta es una respuesta subestimada: en Proxmox, Windows 10 tuvo problemas para inicializarse, incluso después de instalar todos los controladores. Tuve que crear un pequeño disco de 1 GB como un dispositivo de bloque VirtIO, iniciar la VM, verificar que apareciera correctamente y luego apagar y cambiar la unidad principal a VirtIO. Windows 10 no detectó correctamente el controlador HDD, por lo que tuve que convencerlo para que lo cargara en el arranque antes de realizar el cambio.
Albert H
3

Desafortunadamente, es posible tener el controlador perfectamente instalado y TODAVÍA obtener un "Dispositivo de arranque inaccesible". La razón es un poco impactante (me parece): una instalación de Win 10 "recuerda" los controladores que se requerían cuando se instaló por primera vez, y por defecto NO cargará otros controladores de almacenamiento en el momento del arranque. Esto se hace, parece, a la "piratería": hace que sea difícil ejecutar la "misma" instalación en un hardware diferente. Hay una gran documentación sobre esta "característica" en esta publicación de los foros de gentoo. La esencia es la siguiente:

Los controladores destinados a la prohibición de cargar en el arranque se pueden determinar de la siguiente manera: Dentro de la clave de registro Computer \ HKEY_LOCAL_MACHINE \ SYSTEM \ ControlSet001 \ Services hay una subclave para cada controlador conocido en la instalación. El nombre de esta subclave es solo el nombre del controlador. Dentro de cada subclave del controlador, habrá una subclave "STARTOVERRIDE" si no se puede cargar el controlador en el arranque. En particular, dentro de la subclave STARTOVERRIDE hay un parámetro cuyo nombre es "0". SI el valor de este parámetro es "3", no se cargará en el momento del arranque. Establecer este valor en 0 en su lugar 'anulará' el comportamiento.

Yo solo voy a Computer \ HKEY_LOCAL_MACHINE \ SYSTEM \ ControlSet001 \ Services y busco "STARTOVERRIDE". Cada vez que lo encuentro, si hay un nombre debajo de él llamado "0" con el valor "3", cambio a "0". Esto parece excesivo, solo necesita cambiar la unidad que necesita cargar. En mi caso, hay varios de ellos, y nunca recuerdo cuál, así que solo hago una "búsqueda F3" dentro de esa sección de "servicios".

Y un consejo final que no es necesario para el almacenamiento actual, firmado, virtio, pero podría ser para alguien más que lea esto si quieren usar un controlador más experimental que (todavía) no está firmado: descubrí que INCLUSO después de hacer lo anterior truco, TAMBIÉN necesitaba arrancar en la pantalla de opciones avanzadas y elegir F7 ("deshabilitar la verificación de firma del controlador"). Molesto, no fue suficiente configurar el indicador bcd para deshabilitar la verificación del controlador, porque el controlador debe cargarse antes de que la máquina lea el BCD y descubra que no necesita verificar la firma.

En general, no es la hora más brillante de Microsoft. Realmente tiene que odiar a sus usuarios si prefiere darles a los usuarios legítimos una pantalla azul artificial inventada que permitir que la gente (digamos) reemplace un disco SATA con un disco NVMe y haga que "funcione".

Scott Petrack
fuente
¡Gracias por dar tantos detalles, esta es la solución más viable! Un archivo para importar y resolverlo todo.
Florian Heigl