web-dev-qa-db-fra.com

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

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

Pour les autres versions de Windows, l’approche de cette question semble suffire - Comment migrer un IDE VM vers une machine virtuelle virtio?

Toutefois, avec Windows 10, cela entraîne un problème INACCESSIBLE_BOOT_DEVICE.

Je suis conscient que l’approche privilégiée consiste à utiliser le périphérique Virtio dès le début et à installer le pilote virtio approprié lorsque vous y êtes invité. Malheureusement, je rencontrais des problèmes distincts lors de la modification du CD dans KVM (je ne pouvais pas faire fonctionner deux périphériques de CD-ROM).

Est-il possible de résoudre ce problème sans avoir à le réinstaller?

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

23
Graeme

Toutes les réponses sont correctes, mais il se peut que vous deviez exécuter quelques étapes supplémentaires après avoir installé les pilotes virtio. Voici les étapes que j'ai suivies:

  1. Ouvrez une invite de commande avec privilèges élevés et configurez la VM pour qu'elle démarre en mode sans échec en saisissant

    bcdedit/set {courant} safeboot minimal

  2. arrêtez le VM et changez le type de périphérique d'amorçage 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 existe maintenant un miniport installé pour l'utiliser, le noyau en fera désormais partie des pilotes à charger au démarrage et ne le désactivera plus.

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

    bcdedit/deletevalue {actuel} safeboot

  5. Terminé.

14
llegolas

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

  1. Ajoutez les ISO Windows 10 CD/CD et ISO du pilote virtio à la VM.
  2. Démarrez le DVD/CD Windows 10 et entrez dans une invite de commande à partir de l'option de mode de réparation.
  3. Chargez le pilote via le CLI, par exemple. drvload e:\viostor\w10\AMD64\viostor.inf
    • Dans mon cas, e: c’est à cet endroit que l’assemblage virtio a été attribué.
    • Après avoir chargé le pilote, f: est l'endroit où l'installation de Windows est devenue 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 de devoir jouer avec des CD/images de démarrage Windows spéciaux et "corrige" l'image d'installation Windows à la volée.

Notez que 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, veillez à éviter toute empressement du DVD de Windows 10 à tout restaurer ou tout réinstaller ...

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

10
JPvRiel

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

  1. Installer les pilotes VirtIO dans la VM
  2. Configurez le disque système de la VM pour utiliser VirtIO
  3. Si la VM ne démarre pas, exécutez Start Repair Repair ou même Repair Install.

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

  1. Renvoyez le disque de démarrage à IDE.
  2. Assurez-vous que Windows VM est arrêté.
  3. Téléchargez les pilotes ISO VirtIO depuis ici .
  4. Montez-le sur le lecteur de CD de la VM.
  5. Ajoutez un périphérique de stockage de type VirtIO. L'attribution de taille n'a pas d'importance puisque vous l'utilisez pour installer les pilotes.
  6. Démarrez la machine virtuelle Windows. Il va essayer 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 du point d'exclamation à côté. Vous pouvez choisir de mettre à jour le pilote et de pointer vers le répertoire approprié de l'ISO monté. Une fois installé, ne redémarrez pas mais éteignez la machine.
  7. Dans les paramètres virt-manager pour Windows, changez le type de stockage de IDE à 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 VM ne démarre pas mais que les pilotes sont installés, vous pouvez essayer:

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

Si la dernière étape est malheureusement requise, une autre difficulté supplémentaire peut être rencontrée si le CD de démarrage de Windows ne comprend pas le disque VirtIO, car ces pilotes n'y ont pas été inclus. Dans ce cas, vous devez créer un CD/USB de démarrage personnalisé contenant ces pilotes, mais assurez-vous de démarrer à partir d'un ISO Windows du même niveau que l'installation en obtenant le dernier (actuellement 1511).

Voici quelques tutoriels sur la façon d’installer des pilotes dans Windows:

10
harrymc

la réponse de harrymc fonctionne bien pour moi.

les étapes suivantes que j'ai suivies:

  1. Installer le pilote virtio dans Windows
  2. Ajouter un disque virtuel factice supplémentaire
  3. Basculez le disque de démarrage sur virtio
  4. Redémarrage
  5. Supprimer le disque virtuel factice supplémentaire
  6. ...
4
sdhd

Il est malheureusement possible d'avoir un pilote parfaitement installé et d'avoir 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 requis lors de sa première installation et ne charge par défaut PAS les autres pilotes de stockage au démarrage. Cela semble être du "piratage" - il est donc difficile d’exécuter la "même" installation sur un matériel différent. Il existe une excellente documentation sur cette "fonctionnalité" dans ce post des forums gentoo. L'essence est la suivante:

Les pilotes qui sont ciblés pour un chargement interdit au démarrage 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 le chargement de ce pilote doit être empêché au démarrage. En particulier, la sous-clé STARTOVERRIDE contient 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. Définir cette valeur sur 0 à la place aura un comportement "prioritaire".

Je vais moi-même dans Ordinateur\HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services et recherchez "STARTOVERRIDE". A chaque fois que je le trouve, s'il y a un nom dessous appelé "0" avec la valeur "3", je passe à "0". Cela semble excessif, il vous suffit de changer le lecteur à charger. Dans mon cas, il y en a plusieurs, et je ne me souviens jamais lequel, alors je viens de faire 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 adressé à une autre personne qui lit ceci s'il souhaite utiliser un pilote plus expérimental qui n'est pas (encore) signé: Truc, je devais aussi démarrer dans l’écran des options avancées et choisir F7 ("désactiver la vérification de la signature du conducteur"). De manière ennuyeuse, il n'était pas suffisant de définir l'indicateur bcd pour désactiver la vérification du pilote, car le pilote doit être chargé avant que l'ordinateur 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 un écran bleu artificiel artificiel à des utilisateurs légitimes plutôt que de permettre aux gens de (par exemple) remplacer un disque SATA par un disque NVMe et le laisser "fonctionner".

1
Scott Petrack