Windows 10 in KVM: Ändern Sie die Bootdiskette in Virtio

Ich habe eine virtuelle Windows 10-Maschine mit einer IDE-Festplatte installiert und möchte jetzt die Festplatte ändern, um den Virtio-Treiber zu verwenden.

Für andere Windows-Versionen scheint der Ansatz in dieser Frage ausreichend zu sein - Wie migriert man eine IDE-VM auf eine Virtio-VM?

Bei Windows 10 führt dies jedoch zu einem Problem mit INACCESSIBLE_BOOT_DEVICE.

Mir ist bewusst, dass der bevorzugte Ansatz darin besteht, das Virtio-Gerät von Anfang an zu verwenden und das entsprechende Virtio zu installieren treiber bei Aufforderung. Leider hatte ich einige separate Probleme mit dem Ändern der CD in KVM (ich konnte auch 2 CDROM-Geräte nicht zum Laufen bringen).

Gibt es eine Möglichkeit, dieses Problem ohne Neuinstallation zu beheben?

Ähnliches Problem hier - https://me.m01.eu/blog/2015/03/windows-10-kvm-and-iscsi/#comment-36090

Author: Community, 2016-03-27

6 answers

Alle Antworten sind korrekt, aber Sie müssen möglicherweise einige zusätzliche Schritte ausführen, nachdem Sie virtio-Treiber installiert haben. Hier sind die Schritte, die ich befolgt habe:

  1. Öffnen Sie eine erhöhte Eingabeaufforderung und stellen Sie die VM in den abgesicherten Modus zu booten, indem Sie

    bcdedit /set {current} safeboot minimal

  2. Fahren Sie die VM herunter und ändern Sie den Startgerätetyp in virtio.

  3. Starten Sie die VM. Es wird sicher eintreten Modus.

    Hinweis: Im abgesicherten Modus werden alle Boot-Start-Treiber aktiviert und geladen, einschließlich des Virtio-Treibers. Da jetzt ein Miniport installiert ist, um ihn zu verwenden, wird der Kernel ihn jetzt zu einem Teil der Treiber machen, die beim Booten geladen werden sollen, und ihn nicht erneut deaktivieren.

  4. Setzen Sie in der gebooteten VM die bcdedit-Einstellungen zurück, damit der Computer in den normalen Modus booten kann, indem Sie (erneut in der Eingabeaufforderung) Folgendes eingeben:

    bcdedit /deletevalue {current} safeboot

  5. Fertig.

 35
Author: llegolas,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2017-09-26 10:26:58

Eine ziemlich einfache Antwort gibt - und kann in vielen Fällen zusammen mit Hinweisen auf andere Optionen funktionieren. Wenn Sie (wie ich) nicht zu IDE wechseln können und VirtIO verwenden müssen, funktioniert möglicherweise der folgende alternative Ansatz:

  1. Fügen Sie Windows 10 DVD/CD ISO und virtio driver ISO zur VM hinzu.
  2. Booten windows 10 DVD / CD und erhalten Sie eine Eingabeaufforderung von Repair mode Option.
  3. Laden Sie den Treiber über die CLI z.B. drvload e:\viostor\w10\amd64\viostor.inf
    • In meinem Fall e: wurde die virtio install ISO zugewiesen.
    • Nach dem Laden des Treibers f: wurde dort die Windows-Installation gemountet.
  4. Verwenden Sie den Befehl DISM, um den Speichercontrollertreiber zu injizieren
    • z. B. dism /image:f:\ /add-driver /driver:e:\viostor\w10\amd64\viostor.inf
    • Ändern Sie wie oben die Laufwerksbuchstabenzuweisungen nach Ihren eigenen Umgebung.

Vermeidet es, mit speziellen Windows-Boot-CDs/ - Images und "Patches" das eigentliche Windows-Installationsabbild im laufenden Betrieb zu erstellen.

Beachten Sie, dass ich für diesen Nischenfall vorschlagen würde, eine Startup-Reparatur zu vermeiden (die für mich fehlgeschlagen ist). Es schien nicht zu wissen, wie man Vistor einbezieht.und nach dem Laden, und wenn Sie es versuchen, achten Sie darauf, Windows 10 DVD Eifer zu vermeiden, alles wiederherzustellen oder neu zu installieren...

Gutschrift für DISM-Ansatz: Mit dism treiber hinzufügen

 25
Author: JPvRiel,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2017-04-18 18:29:30

Die folgenden Schritte sind im Allgemeinen:

  1. Installieren Sie die VirtIO-Treiber in der VM -
  2. Legen Sie die Systemfestplatte der VM auf VirtIO
  3. Wenn die VM nicht startet, führen Sie Startup Repair oder sogar Repair Install aus

Die Prozedur im Detail ist:

  1. Geben Sie die Bootdiskette an die IDE zurück.
  2. Stellen Sie sicher, dass die Windows-VM heruntergefahren wird.
  3. Laden Sie die VirtIO-Treiber-ISO von hier herunter.
  4. Montieren Sie es auf dem CD-Laufwerk für die VM.
  5. Fügen Sie ein Speichergerät vom Typ VirtIO hinzu. Die Größenzuordnung spielt keine Rolle, da Sie die Treiber damit installieren.
  6. Starten Sie die Windows-VM. Es wird versucht die Treiber zu installieren. Wenn dies nicht der Fall ist, öffnen Sie den Geräte-Manager und Sie sollten das SCSI-Gerät mit dem Ausrufezeichen daneben aufgelistet sehen. Sie können den Treiber aktualisieren und auf das entsprechende Verzeichnis der ISO verweisen. Starten Sie den Computer nach der Installation nicht neu, sondern fahren Sie ihn herunter.
  7. In der virt-Manager-Einstellungen für Windows, ändern Sie den Speichertyp von IDE zu VirtIO.
  8. Sie können das zuvor erstellte Speichergerät entfernen. Es wird nicht mehr benötigt.
  9. Starten Sie Windows, es sollte hochfahren und die SCSI-Treiber installieren. Sie müssen danach neu starten.
  10. Wenn die VM nicht startet, aber die Treiber installiert sind, können Sie es versuchen zu tun ist :

    1. Startup Repair , das bestimmte Systemprobleme beheben kann, die Windows möglicherweise verhindern ab.
    2. Die letzte Lösung: Repair Install beim Booten von der Windows 10 ISO. Dadurch bleiben alle Anwendungen und Benutzereinstellungen erhalten, nur Windows aktualisieren und booten. Verwenden Sie eine aktuelle Windows 10 ISO.

Wenn der letzte Schritt leider erforderlich ist, eine weitere Schwierigkeit, die sein könnte dies ist, wenn die Windows-Boot-CD die VirtIO-Diskette nicht verstehen kann, weil diese Treiber wurden von Microsoft nicht darin enthalten. In diesem Fall muss ein benutzerdefinierte Boot-CD / USB, die enthält diese Treiber, aber stellen Sie sicher, dass Sie von einer Windows-ISO starten, die ist auf der gleichen Ebene wie die Installation, indem Sie die neueste (derzeit 1511).

Hier sind einige Tutorials zum Slipstream-Treiber in Windows:

 11
Author: harrymc,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2016-04-10 12:06:00

Die Antwort von harrymc funktioniert gut für mich.

Die folgenden Schritte habe ich befolgt:

  1. Installieren Sie den Virtio-Treiber unter Windows
  2. Fügen Sie einen zusätzlichen "Dummy" virtio Disk hinzu. Starten Sie neu und prüfen Sie, ob der "Dummy" funktioniert.
  3. Wenn Schritt 2 funktioniert, wechseln Sie die Bootdiskette auf virtio.
  4. Reboot
  5. Entfernen Sie den zusätzlichen" Dummy " virtio Disk
  6. ...
 8
Author: sdhd,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2019-11-23 22:06:20

Es ist leider möglich, den Treiber perfekt installiert zu haben und IMMER NOCH "unzugängliches Startgerät" zu erhalten."Der Grund ist etwas schockierend (finde ich): Eine Win 10-Installation "merkt" sich die Treiber, die bei der ersten Installation erforderlich waren, und lädt standardmäßig beim Booten KEINE anderen Speichertreiber. Dies geschieht anscheinend zu "Piraterie" - es macht es schwierig, die" gleiche " Installation auf unterschiedlicher Hardware auszuführen. Es gibt einige großartige Dokumentation zu diesem "Feature" in diesem post aus den gentoo Foren. Die Essenz ist wie folgt: -

Die Treiber, die auf forbidden-to-load-at-Boot ausgerichtet sind, können wie folgt bestimmt werden: Innerhalb des Registrierungsschlüssels Computer\HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services gibt es einen Unterschlüssel für jeden Treiber, der der Installation bekannt ist. Der Name dieses Unterschlüssels ist nur der Name des Treibers. Innerhalb jedes Treiberunterschlüssels befindet sich ein Unterschlüssel "STARTOVERRIDE", wenn verhindert werden soll, dass dieser Treiber beim Booten geladen wird. In insbesondere gibt es innerhalb des STARTOVERRIDE-Unterschlüssels einen Parameter mit dem Namen "0" . WENN der Wert dieses Parameters "3" ist, wird er beim Booten nicht geladen. Wenn Sie diesen Wert stattdessen auf 0 setzen, wird das Verhalten "außer Kraft gesetzt".

Ich selbst gehe einfach zu Computer\HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services und suche nach "STARTOVERRIDE". Jedes Mal, wenn ich es finde, wenn sich darunter ein Name namens "0" mit dem Wert "3" befindet, wechsle ich zu "0". Dies scheint übertrieben zu sein, Sie müssen nur das Laufwerk wechseln das muss geladen werden. In meinem Fall gibt es mehrere von ihnen, und ich erinnere mich nie an welche, also mache ich einfach eine "F3-Suche" in diesem Abschnitt "Dienste".

Und ein letzter Tipp, der für den aktuellen, signierten Virtio-Speicher nicht benötigt wird, aber möglicherweise für jemand anderen, der dies liest, wenn er einen experimentelleren Treiber verwenden möchte, der (noch) nicht signiert ist: Ich fand das AUCH nach dem obigen Trick Musste ich AUCH in den Bildschirm mit den erweiterten Optionen booten und F7 auswählen ("Treibersignatur deaktivieren Überprüfung"). Ärgerlicherweise reichte es nicht aus, das BCD-Flag so einzustellen, dass die Treiberüberprüfung deaktiviert wird, da der Treiber geladen werden muss, bevor der Computer die BCD liest und feststellt, dass die Signatur nicht überprüft werden muss.

Alles in allem nicht Microsofts glänzendste Stunde. Sie müssen Ihre Benutzer wirklich hassen, wenn Sie legitimen Benutzern lieber einen künstlichen blauen Bildschirm geben möchten, als es den Leuten zu erlauben, eine SATA-Festplatte durch eine NVMe-Festplatte zu ersetzen und sie "einfach funktionieren" zu lassen."

 5
Author: Scott Petrack,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2019-05-22 02:58:45

Wow, viele Spielereien. Warum nicht einfach den QEMU - Ansatz von Arch Wiki verwenden? Halten Sie zuerst Ihr virtio-win-0.1-81.iso bereit. Download von RedHat.

1 - Erstellen Sie eine gefälschte (dummy -) Festplatte mit $ qemu-img create -f qcow2 fake.qcow2 1G.

2-Halten Sie Ihr Windows-Bootlaufwerk als IDE oder SATA oder was auch immer, fügen Sie das neue gefälschte Laufwerk als sekundäres Laufwerk hinzu, aber der Treiber für dieses sollte virtio sein.

2a-Wenn Sie libvirt verwenden, fügen Sie das gefälschte Laufwerk hinzu, indem Sie die XML-Datei der VM bearbeiten, und fügen Sie Folgendes hinzu :

<disk type='file' device='disk'>
  <driver name='qemu' type='qcow2'/>
  <source file='/full/path/to/fake.qcow2'/>
  <target dev='vda' bus='virtio'/>
</disk>

2b - wenn mit QEMU direkt starten Sie Ihre VM mit $ qemu-system-x86_64 -m 512 -drive file=windows_disk_image,if=ide -drive file=fake.qcow2,if=virtio -cdrom virtio-win-0.1-81.iso

3-Starten Sie Ihre VM und installieren Sie den Treiber viostor von Win .ISO.

4-Fahren Sie nach der Installation die Windows-VM herunter, entfernen Sie die XML-Konfiguration (falls libvirt) und löschen Sie die Fälschung.qcow2 und starten Sie Ihre Win VM.

5-Viel Spaß!

 2
Author: Adriano_pinaffo,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2020-03-14 01:16:29