Windows 10 dans KVM: changez le disque de démarrage en Virtio

25

J'ai installé une machine virtuelle Windows 10 à l'aide d'un disque IDE et je voudrais maintenant changer le disque pour utiliser le pilote Virtio.

Pour les autres versions de Windows, l'approche de cette question semble suffisante - Comment migrer une machine virtuelle IDE vers une machine virtuelle virtio?

Cependant, avec Windows 10, cela entraîne un INACCESSIBLE_BOOT_DEVICEproblème.

Je suis conscient que l'approche préférée est d'utiliser le périphérique Virtio dès le départ et d'installer le pilote virtio approprié lorsque vous y êtes invité. Malheureusement, je rencontrais des problèmes distincts avec le changement de CD dans KVM (je ne pouvais pas non plus faire fonctionner 2 périphériques CDROM).

Existe-t-il un moyen de corriger ce problème sans réinstaller?

Problème similaire ici - https://me.m01.eu/blog/2015/03/windows-10-kvm-and-iscsi/#comment-36090

Graeme
la source
+1. Je ne pouvais pas comprendre moi-même ce problème. Après diverses solutions de contournement pour les versions précédentes de Windows, j'ai essayé d'installer le pilote VirtIO sur la machine virtuelle Windows après avoir branché un périphérique bloc VirtIO, mais j'ai toujours INACCESSIBLE_BOOT_DEVICEun écran bleu. J'ai fini par réinstaller sur un périphérique de démarrage VirtIO.
Deltik
Parce que je suis paresseux, je vais le poster en tant que commentaire pour que vous puissiez vérifier: Ajoutez un disque supplémentaire, avec virtio «controller». Installez le pilote lorsque Windows vous le demande. Pas besoin de créer de partitions ou quoi que ce soit. Basculez ensuite le disque de démarrage vers virtio. Parce qu'une instance de pilote de contrôleur est maintenant installée (très important), elle devrait fonctionner.
Daniel B
@DanielB: C'est exactement ce que j'ai fait. Il semble que votre suggestion fonctionne pour les versions précédentes de Windows, mais pas pour Windows 10.
Deltik
HM OK. Eh bien, je suppose que j'ai la meilleure façon de ne pas résoudre votre problème (lol): il suffit de modifier l'ISO de Windows et d'inclure les pilotes. Gardez à l'esprit qu'il doit rester amorçable. De cette façon, vous pouvez (espérons-le) installer directement dans virtio.
Daniel B
1
@DanielB: Le pilote VirtIO peut être chargé dans le processus d'installation avec un disque de pilote séparé. Si Windows 10 est installé avec le pilote VirtIO, il n'y a aucun problème. C'est juste que les instructions existantes sur Internet pour faire passer Windows d'IDE à VirtIO ne fonctionnent pas pour les machines virtuelles KVM Windows 10.
Deltik

Réponses:

24

Toutes les réponses sont correctes, mais vous devrez peut-être effectuer quelques étapes supplémentaires après avoir installé les pilotes virtio. Voici les étapes que j'ai suivies:

  1. Ouvrez une invite de commande élevée et définissez la machine virtuelle pour démarrer en mode sans échec en tapant

    bcdedit / set {current} coffre-fort minimal

  2. arrêtez la machine virtuelle et changez le type de périphérique de démarrage en virtio.

  3. démarrez la VM. Il entrera en mode sans échec.

    Remarque: En mode sans échec, tous les pilotes de démarrage seront activés et chargés, y compris le pilote virtio. Puisqu'il y a maintenant un miniport installé pour l'utiliser, le noyau va maintenant l'intégrer aux pilotes qui doivent être chargés au démarrage et ne le désactivera plus.

  4. dans la machine virtuelle démarrée, réinitialisez les paramètres bcdedit pour permettre à la machine de démarrer en mode normal en tapant (à nouveau dans l'invite de commande élevée):

    bcdedit / deletevalue {current} coffre-fort

  5. Terminé.

llegolas
la source
1
Fantastique! C'était le morceau manquant pour moi. J'ai utilisé bcdedit /set safeboot minimal, en omettant le {current}parce que je n'étais pas sûr de ce qui était censé y entrer.
Charles Green
2
@CharlesGreen {current}est littéral, vous tapez tel quel .
Marc.2377
Problème si vous disposez d'une connexion par code PIN car la connexion par mot de passe peut nécessiter un accès réseau. Je réinstalle Windows en conséquence. answers.microsoft.com/en-us/windows/forum/windows_10-security/…
Andrew Olney
J'ai essayé avec bcdedit / set {current} le réseau de démarrage sécurisé à l'étape 1 pour éviter le problème de connexion, j'ai également d'abord créé un utilisateur local pour être plus sûr et je ne pense pas vraiment que le problème m'applique de toute façon, mais puisque la machine est connecté à un domaine et je n'ai pas le contrôle de tout ce que je voulais pour m'assurer que je n'ai rien fait de mal. Et le paramètre réseau n'a au moins pas gâché le processus.
HackerBaloo
comment faites-vous 1), c'est-à-dire l'invite élevée?
Frederick Nord
16

Une réponse assez simple est fournie - et peut fonctionner dans de nombreux cas, ainsi que des conseils sur d'autres options. Si (comme moi) vous n'êtes pas en mesure de passer à l'IDE et obligé d'utiliser VirtIO, alors l'approche alternative suivante pourrait fonctionner:

  1. Ajoutez à la fois ISO 10 DVD / CD ISO Windows et le pilote virtio à VM.
  2. Démarrez le DVD / CD de Windows 10 et accédez à une invite de commande à partir de l'option du mode de réparation.
  3. Chargez le pilote via la CLI par exemple drvload e:\viostor\w10\amd64\viostor.inf
    • Dans mon cas, e: était l'endroit où l'ISO d'installation virtio a été attribuée.
    • Après le chargement du pilote f: était l'endroit où l'installation de Windows est montée.
  4. Utilisez la commande DISM pour injecter le pilote du contrôleur de stockage
    • Par exemple dism /image:f:\ /add-driver /driver:e:\viostor\w10\amd64\viostor.inf
    • Comme ci-dessus, modifiez les affectations de lettre de lecteur en fonction de votre propre environnement.

Évite d'avoir à manipuler des CD / Images de démarrage spéciaux pour Windows et à «patcher» l'image d'installation réelle de Windows à la volée.

Remarque, pour ce cas de niche, je suggère d'éviter la réparation de démarrage (qui a échoué pour moi). Il ne semblait pas savoir comment inclure vistor.inf après l'avoir chargé, et si vous l'essayez, faites attention à ne pas vouloir DVD de Windows 10 pour tout restaurer ou réinstaller ...

Crédit pour l'approche DISM: utilisation de dism pour ajouter des pilotes

JPvRiel
la source
1
Alternative à 4: Faites un clic droit sur le fichier inf -> Installer.
rbs
Faites également attention à la mise à jour de Windows qui casse cela. Selon un article reddit, "la mise à jour a effacé mes pilotes VirtIO": reddit.com/r/VFIO/comments/6b06y5/… . Cela peut se produire dans le cas du coin lorsque vous exécutez votre installation Windows à la fois comme un double démarrage et une machine virtuelle et appliquez la mise à jour sur du matériel natif ...
JPvRiel
1
Ceci, plus la réponse ci-dessous. J'ai dû faire le démarrage en mode sans échec (bcdedit / set {current} safeboot minimal), puis supprimer le démarrage en mode sans échec (bcdedit / deletevalue {current} safeboot), puis redémarrer. Après cela, cela a fonctionné avec Windows Server 2016 Essentials.
G Trawo
10

Les étapes à suivre en général sont:

  1. Installez les pilotes VirtIO dans la VM
  2. Configurer le disque système de la VM pour utiliser VirtIO
  3. Si la machine virtuelle ne démarre pas, exécutez la réparation de démarrage ou même l'installation de réparation

La procédure en détail est la suivante:

  1. Renvoyez le disque de démarrage à l'IDE.
  2. Assurez-vous que la machine virtuelle Windows est arrêtée.
  3. Téléchargez l'ISO des pilotes VirtIO à partir d' ici .
  4. Montez-le sur le lecteur de CD de la machine virtuelle.
  5. Ajoutez un périphérique de stockage de type VirtIO. L'allocation de taille n'a pas d'importance puisque vous l'utilisez pour installer les pilotes.
  6. Démarrez la machine virtuelle Windows. Il essaiera d'installer les pilotes. Si ce n'est pas le cas, ouvrez le Gestionnaire de périphériques et vous devriez voir le périphérique SCSI répertorié avec l'icône de point d'exclamation à côté. Vous pouvez choisir de mettre à jour le pilote et pointer vers le répertoire ISO monté. Une fois installé, ne redémarrez pas mais arrêtez la machine.
  7. Dans les paramètres virt-manager pour Windows, changez le type de stockage d'IDE en VirtIO.
  8. Vous pouvez supprimer le périphérique de stockage que vous avez créé précédemment. Ce n'est plus nécessaire.
  9. Démarrez Windows, il devrait démarrer et installer les pilotes SCSI. Vous devrez redémarrer après cela.
  10. Si la machine virtuelle ne démarre pas mais que les pilotes sont installés, vous pouvez essayer de faire:

    1. Réparation du démarrage qui peut résoudre certains problèmes système susceptibles d'empêcher le démarrage de Windows.
    2. La dernière solution: Réparer l'installation lors du démarrage à partir de l'ISO de Windows 10. Cela conservera toutes les applications et tous les paramètres utilisateur, actualisant simplement Windows et démarrant. Utilisez une ISO récente de Windows 10.

Si la dernière étape est malheureusement requise, une autre difficulté qui pourrait survenir est que le CD de démarrage Windows ne peut pas comprendre le disque VirtIO car ces pilotes n'y ont pas été inclus par Microsoft. Dans ce cas, il faut créer un CD / USB de démarrage personnalisé contenant ces pilotes, mais assurez-vous de démarrer à partir d'une ISO Windows qui est du même niveau que l'installation en obtenant la dernière (actuellement 1511).

Voici quelques tutoriels sur la façon de faire glisser les pilotes sous Windows:

harrymc
la source
Cette réponse fonctionnerait (et fonctionne pour d'autres versions sous Windows), sauf qu'à l'étape 9, lorsque vous essayez de démarrer, il y a une erreur INACCESSIBLE_BOOT_DEVICE (c'est là que j'étais lorsque j'ai posté la question). Une réparation de démarrage (10.1) ne fonctionne pas et l'étape 10.2 n'est pas réellement possible. Une installation de réparation ne peut être effectuée qu'en démarrant d'abord le système, sans le CD, puis en l'exécutant setup.exesur le CD. C'est ce que décrit le lien dans la question et, à ma connaissance, il n'y a pas d'autre moyen de le faire.
Graeme
Exactement quelles autres informations dois-je fournir? Je vous ai dit à plusieurs reprises que l'option n'était pas là. Le problème ici est que vous insistez constamment pour que ce soit le cas. S'il est vrai qu'il y a «des dizaines d'autres dans divers articles trouvés sur Internet», référez-en un. Liez un article qui décrit comment démarrer à partir du CD et démarrer une installation de réparation - sans démarrer au préalable le système installé et exécuter setup.exesur le CD. Liez un article d'une source fiable qui prouve que vous ne mentez pas carrément et je m'excuserai et vous donnerai votre précieux vote positif.
Graeme
Voir par exemple cette vidéo sur la façon de faire la réparation de démarrage sur Windows 10 à partir du support d'installation. Sinon, essayez d'utiliser l' invite de commande . Comme je l'ai dit ci-dessus, vous aurez peut-être besoin d'un ISO glissé - je ne sais pas si l'installation de WIn10 contient les pilotes VirtIO.
harrymc
Ou vous pouvez adapter la méthode drvload pour ajouter les pilotes VirtIO à l'image d'installation de Windows PE démarrée.
harrymc
2
Bien que la réponse ci-dessus semble bonne et semble simple, malheureusement avec ma machine virtuelle utilisant l' pc-q35-2.5émulation / le type de machine, il n'est pas possible d'ajouter un contrôleur IDE.
JPvRiel
5

la réponse de harrymc fonctionne bien pour moi.

les étapes suivantes que j'ai suivies:

  1. Installer le pilote virtio dans Windows
  2. Ajoutez un disque virtio "factice" supplémentaire. Redémarrez et vérifiez si le "mannequin" fonctionne.
  3. Si l'étape 2 fonctionne, basculez le disque de démarrage sur virtio.
  4. Redémarrer
  5. Retirez le disque virtio "factice" supplémentaire
  6. ...
sdhd
la source
Veuillez ne pas ajouter "merci" comme réponses. Investissez un peu de temps dans le site et vous obtiendrez des privilèges suffisants pour voter positivement sur les réponses que vous aimez, ce qui est la façon dont Super User vous remercie.
DavidPostill
1
C'est une réponse sous-estimée - dans Proxmox, Windows 10 a eu du mal à s'initialiser, même après avoir installé tous les pilotes. J'ai dû créer un petit disque de 1 Go en tant que périphérique de bloc VirtIO, démarrer la machine virtuelle, vérifier qu'il apparaissait correctement, puis arrêter + changer le lecteur principal en VirtIO. Windows 10 n'a pas détecté correctement le pilote du disque dur, j'ai donc dû l'amadouer pour le charger au démarrage avant de passer.
Albert H
3

Il est malheureusement possible d'avoir un pilote parfaitement installé et d'obtenir TOUJOURS un «périphérique de démarrage inaccessible». La raison est un peu choquante (je trouve): une installation Win 10 "se souvient" des pilotes qui étaient requis lors de sa première installation, et par défaut ne chargera pas d'autres pilotes de stockage au démarrage. Cela se fait, semble-t-il, au "piratage" - il est difficile d'exécuter la "même" installation sur un matériel différent. Il y a une excellente documentation sur cette "fonctionnalité" dans ce post des forums gentoo. L'essence est la suivante:

Les pilotes ciblés pour le chargement au démarrage interdit peuvent être déterminés comme suit: Dans la clé de registre Computer \ HKEY_LOCAL_MACHINE \ SYSTEM \ ControlSet001 \ Services, il existe une sous-clé pour chaque pilote connu de l'installation. Le nom de cette sous-clé est simplement le nom du pilote. Dans chaque sous-clé de pilote, il y aura une sous-clé "STARTOVERRIDE" si ce pilote doit être empêché de se charger au démarrage. En particulier, dans la sous-clé STARTOVERRIDE, il y a un paramètre dont le nom est "0". SI la valeur de ce paramètre est "3", il ne sera pas chargé au démarrage. La définition de cette valeur à 0 à la place "remplacera" le comportement.

Je vais moi-même dans Computer \ HKEY_LOCAL_MACHINE \ SYSTEM \ ControlSet001 \ Services et je recherche "STARTOVERRIDE". Chaque fois que je le trouve, s'il y a un nom en dessous appelé "0" avec la valeur "3", je change en "0". Cela semble exagéré, il vous suffit de changer le lecteur qui doit être chargé. Dans mon cas, il y en a plusieurs, et je ne me souviens plus lequel, donc je fais juste une «recherche F3» dans cette section «services».

Et un dernier conseil qui n'est pas nécessaire pour le stockage virtio actuel, signé, mais qui pourrait être destiné à quelqu'un d'autre qui lit ceci s'il souhaite utiliser un pilote plus expérimental qui n'est pas (encore) signé: j'ai trouvé cela MÊME après avoir fait ce qui précède astuce, j'avais également besoin de démarrer dans l'écran des options avancées et choisissez F7 ("désactiver la vérification de la signature du pilote"). De manière ennuyeuse, il ne suffisait pas de définir l'indicateur bcd pour désactiver la vérification du pilote, car le pilote doit se charger avant que la machine ne lise le BCD et découvre qu'il n'a pas besoin de vérifier la signature.

Dans l'ensemble, pas l'heure la plus brillante de Microsoft. Vous devez vraiment détester vos utilisateurs si vous préférez donner aux utilisateurs légitimes un écran bleu artificiel inventé plutôt que de permettre aux gens de (par exemple) remplacer un disque SATA par un disque NVMe et de le faire "simplement fonctionner".

Scott Petrack
la source
Merci d'avoir donné autant de détails, c'est la solution la plus pratique! Un fichier de registre pour importer et résoudre tout cela.
Florian Heigl