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

25

Ich habe eine virtuelle Windows 10-Maschine mithilfe einer IDE-Festplatte installiert und möchte nun die Festplatte so ändern, dass der Virtio-Treiber verwendet wird.

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

Bei Windows 10 führt dies jedoch zu einem INACCESSIBLE_BOOT_DEVICEProblem.

Mir ist bewusst, dass der bevorzugte Ansatz darin besteht, das Virtio-Gerät von Anfang an zu verwenden und den entsprechenden virtio-Treiber zu installieren, wenn Sie dazu aufgefordert werden. Leider hatte ich einige Probleme beim Wechseln der CD in KVM (ich konnte auch nicht zwei CD-ROM-Geräte zum Laufen bringen).

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

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

Graeme
quelle
+1. Ich konnte dieses Problem nicht selbst herausfinden. Nach verschiedenen Problemumgehungen für frühere Windows-Versionen habe ich versucht, den VirtIO-Treiber auf der Windows-VM zu installieren, nachdem ich ein VirtIO-Block-Gerät angeschlossen habe, aber ich habe immer noch einen INACCESSIBLE_BOOT_DEVICEblauen Bildschirm. Ich habe mich dann auf einem VirtIO-Startgerät neu installiert.
Deltik
Da ich faul bin, werde ich es als Kommentar veröffentlichen, damit Sie Folgendes überprüfen können: Fügen Sie eine zusätzliche Festplatte mit virtio "controller" hinzu. Installieren Sie den Treiber, wenn Windows Sie dazu auffordert. Keine Notwendigkeit, Partitionen oder etwas zu erstellen. Dann schalten Sie die Bootdiskette auf virtio. Da jetzt eine Controller-Treiberinstanz installiert ist (sehr wichtig), sollte diese funktionieren.
Daniel B
@DanielB: Genau das habe ich getan. Es scheint, dass Ihr Vorschlag für frühere Versionen von Windows, aber nicht Windows 10
funktioniert
Hm okay Nun, dann habe ich wohl die beste Möglichkeit, Ihr Problem nicht zu lösen (lol): Ändern Sie einfach die Windows-ISO und fügen Sie die Treiber hinzu. Denken Sie daran, dass es bootfähig bleiben muss. Auf diese Weise können Sie (hoffentlich) direkt auf virtio installieren.
Daniel B
1
@DanielB: Der VirtIO-Treiber kann während des Installationsvorgangs mit einer separaten Treiber-CD geladen werden. Wenn Windows 10 mit dem VirtIO-Treiber installiert ist, gibt es kein Problem. Es ist nur so, dass die im Internet vorhandenen Anweisungen zum Wechseln von Windows von IDE zu VirtIO für virtuelle Windows 10 KVM-Maschinen nicht funktionieren.
Deltik

Antworten:

24

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, denen ich gefolgt bin:

  1. Öffnen Sie eine Eingabeaufforderung mit erhöhten Rechten, und legen Sie fest, dass die VM durch Eingabe in den abgesicherten Modus gestartet wird

    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 im abgesicherten Modus eingegeben.

    Hinweis: Im abgesicherten Modus werden alle Starttreiber aktiviert und geladen, einschließlich des virtio-Treibers. Da jetzt ein Miniport zur Verwendung installiert ist, wird dieser vom Kernel zu einem Teil der Treiber, die beim Booten geladen werden sollen, gemacht und nicht wieder deaktiviert.

  4. Setzen Sie in der gestarteten VM die bcdedit-Einstellungen zurück, damit der Computer durch Eingabe von (erneut in der Eingabeaufforderung mit erhöhten Rechten) in den normalen Modus gestartet werden kann:

    bcdedit / deletevalue {current} safeboot

  5. Getan.

Llegolas
quelle
1
Fantastisch! Dies war das fehlende Stück für mich. Ich habe das bcdedit /set safeboot minimalweggelassen, {current}weil ich nicht sicher war, was da reingehen sollte.
Charles Green
2
@CharlesGreen {current}ist wörtlich, Sie geben so ein, wie es ist.
Marc.2377
Problem, wenn Sie über eine PIN-Anmeldung verfügen, da für die Kennwortanmeldung möglicherweise ein Netzwerkzugriff erforderlich ist. Als Ergebnis installiere ich Windows neu. answers.microsoft.com/en-us/windows/forum/windows_10-security/…
Andrew Olney
Ich habe mit bcdedit / set {current} safeboot network in Schritt 1 versucht, um das Anmeldeproblem zu vermeiden. Außerdem habe ich zuerst einen lokalen Benutzer erstellt, um besonders sicher zu sein, und ich glaube nicht, dass das Problem auf mich zutrifft, aber da es sich um einen Computer handelt mit einer Domain verbunden und ich habe nicht die Kontrolle über alles, was ich wollte, um sicherzustellen, dass ich nichts falsch gemacht habe. Und der Netzwerkparameter hat den Prozess zumindest nicht beeinträchtigt.
HackerBaloo
wie machst du 1), das heißt die erhöhte Eingabeaufforderung?
Frederick Nord
16

Eine ziemlich einfache Antwort wird bereitgestellt - und kann in vielen Fällen zusammen mit Hinweisen auf andere Optionen funktionieren. Wenn Sie (wie ich) nicht zur IDE wechseln können und zur Verwendung von VirtIO gezwungen werden, funktioniert möglicherweise der folgende alternative Ansatz:

  1. Fügen Sie VM sowohl Windows 10-DVD / CD-ISO als auch Virtio-Treiber-ISO hinzu.
  2. Booten Sie von Windows 10 DVD / CD und rufen Sie im Reparaturmodus eine Eingabeaufforderung auf.
  3. Laden Sie den Treiber über die CLI, z drvload e:\viostor\w10\amd64\viostor.inf
    • In meinem Fall wurde e: der virtio install ISO zugewiesen.
    • Nach dem Laden des Treibers wurde in f: 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 Zuordnungen der Laufwerkbuchstaben entsprechend Ihrer Umgebung.

Vermeidet es, spezielle Windows-Boot-CDs / Images zu erstellen und das eigentliche Windows-Installations-Image im laufenden Betrieb zu "patchen".

Beachten Sie, dass ich für diesen Nischenfall die Vermeidung der Startreparatur vorschlagen würde (was für mich fehlgeschlagen ist). Es schien nicht zu wissen, wie man vistor.inf nach dem Laden einbindet, und wenn Sie es versuchen, achten Sie darauf, dass Windows 10 nicht danach strebt, alles wiederherzustellen oder neu zu installieren ...

Credit for DISM-Ansatz: Verwenden von dism zum Hinzufügen von Treibern

JPvRiel
quelle
1
Alternative zu 4: Klicken Sie mit der rechten Maustaste auf die INF-Datei -> Installieren.
rbs
Achten Sie auch auf Windows-Updates, die dies verhindern. Laut einem reddit-Beitrag hat "das Update meine VirtIO-Treiber gelöscht": reddit.com/r/VFIO/comments/6b06y5/… . Dies kann in der Ecke der Fall sein, wenn Sie Ihre Windows-Installation sowohl als Dual-Boot- als auch als VM-Installation ausführen und das Update auf nativer Hardware anwenden ...
JPvRiel
1
Dies plus die Antwort unten. Ich musste den Start im abgesicherten Modus (bcdedit / set {current} safeboot minimal) durchführen und dann den Start im abgesicherten Modus (bcdedit / deletevalue {current} safeboot) entfernen und dann neu starten. Danach funktionierte es mit Windows Server 2016 Essentials.
G Trawo
10

Die folgenden Schritte sind im Allgemeinen auszuführen:

  1. Installieren Sie die VirtIO-Treiber in der VM
  2. Stellen Sie den Systemdatenträger der VM für die Verwendung von VirtIO ein
  3. Wenn die VM nicht startet, führen Sie Startup Repair oder Repair Install aus

Die Vorgehensweise im Detail ist:

  1. Senden Sie die Startdiskette an IDE zurück.
  2. Stellen Sie sicher, dass die Windows-VM heruntergefahren ist.
  3. Laden Sie die virtio Treiber ISO von hier .
  4. Hängen Sie es in das CD-Laufwerk für die VM ein.
  5. Fügen Sie ein Speichergerät vom Typ VirtIO hinzu. Die Größenzuweisung spielt keine Rolle, da Sie sie zum Installieren der Treiber verwenden.
  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. Daraufhin sollte das SCSI-Gerät mit dem Ausrufezeichen angezeigt werden. Sie können den Treiber aktualisieren und auf das entsprechende Verzeichnis des bereitgestellten ISO verweisen. Starten Sie den Computer nach der Installation nicht neu, sondern fahren Sie ihn herunter.
  7. Ändern Sie in den virt-manager-Einstellungen für Windows den Speichertyp von IDE in VirtIO.
  8. Sie können das zuvor erstellte Speichergerät entfernen. Es wird nicht mehr benötigt.
  9. Starten Sie Windows, es sollte starten und die SCSI-Treiber installieren. Sie müssen danach neu starten.
  10. Wenn die VM nicht startet, die Treiber jedoch installiert sind, versuchen Sie möglicherweise Folgendes:

    1. Starthilfe , mit der bestimmte Systemprobleme behoben werden können, die den Start von Windows verhindern könnten.
    2. Die letzte Lösung: Reparieren Sie die Installation beim Booten von Windows 10 ISO. Dadurch bleiben alle Anwendungen und Benutzereinstellungen erhalten, lediglich Windows wird aktualisiert und der Startvorgang wird gestartet. Verwenden Sie ein aktuelles Windows 10-ISO.

Wenn der letzte Schritt leider erforderlich ist, besteht eine weitere Schwierigkeit darin, dass die Windows-Start-CD den VirtIO-Datenträger nicht versteht, da diese Treiber nicht von Microsoft enthalten waren. In diesem Fall muss eine benutzerdefinierte Boot-CD / USB erstellt werden, die diese Treiber enthält. Stellen Sie jedoch sicher, dass Sie von einer Windows-ISO starten, die der Installationsstufe entspricht, indem Sie die neueste (derzeit 1511) herunterladen.

Hier sind einige Tutorials, wie man Treiber in Windows einbindet:

Harrymc
quelle
Diese Antwort würde funktionieren (und funktioniert auch für andere Windows-Versionen), mit der Ausnahme, dass in Schritt 9 beim Versuch, den Computer zu booten, ein INACCESSIBLE_BOOT_DEVICE-Fehler auftritt (dies war der Zeitpunkt, an dem ich die Frage gestellt habe). Eine Startreparatur (10.1) funktioniert nicht und Schritt 10.2 ist eigentlich nicht möglich. Eine Reparaturinstallation kann nur durchgeführt werden, indem zuerst das System ohne die CD gebootet und dann setup.exeauf der CD ausgeführt wird. Dies ist, was der Link in der Frage beschreibt und meines Wissens gibt es keine andere Möglichkeit, dies zu tun.
Graeme
Welche weiteren Informationen soll ich genau liefern? Ich habe dir wiederholt gesagt, dass die Option nicht da ist. Das Problem dabei ist, dass Sie immer darauf bestehen, dass es so ist. Wenn es in verschiedenen Artikeln im Internet „Dutzende anderer Artikel gibt“, beziehen Sie sich auf einen. Verknüpfen Sie einen Artikel, in dem beschrieben wird, wie Sie von der CD booten und eine Reparaturinstallation starten, ohne zuvor das installierte System zu booten und setup.exeauf der CD auszuführen . Verknüpfen Sie einen Artikel aus einer zuverlässigen Quelle, die beweist, dass Sie nicht direkt lügen, und ich werde mich entschuldigen und Ihnen Ihre wertvolle Gegenstimme geben.
Graeme
In diesem Video erfahren Sie beispielsweise, wie Sie die Starthilfe unter Windows 10 vom Installationsmedium ausführen. Wenn nicht, versuchen Sie, die Eingabeaufforderung zu verwenden . Wie oben bereits erwähnt, benötigen Sie möglicherweise ein Slipstream-ISO. Ich habe keine Ahnung, ob die WIn10-Installation die VirtIO-Treiber enthält.
Harrymc
Alternativ können Sie die drvload-Methode anpassen, um die VirtIO-Treiber zum gebooteten Windows PE-Installationsimage hinzuzufügen.
Harrymc
2
Obwohl die obige Antwort gut klingt und einfach aussieht, ist es bei meiner VM, die die pc-q35-2.5Maschinenemulation / den Maschinentyp verwendet , leider nicht möglich, einen IDE-Controller hinzuzufügen.
JPvRiel
5

Die Antwort von Harrymc funktioniert gut für mich.

die folgenden schritte habe ich befolgt:

  1. Installieren Sie den virtio-Treiber in Windows
  2. Fügen Sie eine zusätzliche "Dummy" -Virtio-Disk hinzu. Starten Sie neu und prüfen Sie, ob der "Dummy" funktioniert.
  3. Wenn Schritt 2 funktioniert, schalten Sie die Bootdiskette auf virtio um.
  4. Starten Sie neu
  5. Entfernen Sie die zusätzliche virtuelle "Dummy" -Diskette
  6. ...
SDHD
quelle
Bitte geben Sie als Antwort nicht "Danke" an. Wenn Sie etwas Zeit in die Website investieren, erhalten Sie ausreichende Berechtigungen , um die von Ihnen gewünschten Antworten zu verbessern.
DavidPostill
1
Dies ist eine unterschätzte Antwort - in Proxmox hatte Windows 10 auch nach der Installation aller Treiber Probleme beim Initialisieren. Ich musste eine kleine 1-GB-Festplatte als VirtIO-Blockgerät erstellen, die VM starten, überprüfen, ob sie korrekt angezeigt wurde, und dann herunterfahren und das Hauptlaufwerk in VirtIO ändern. Windows 10 hat den Festplattentreiber nicht richtig erkannt, daher musste ich ihn überreden, ihn beim Booten zu laden, bevor ich den Switch ausführte.
Albert H
3

Es ist leider möglich, dass der Treiber perfekt installiert ist und STILL "nicht zugreifbares Startgerät" erhält. Der Grund ist etwas schockierend (finde ich): Eine Win 10-Installation "merkt" sich die Treiber, die bei der Erstinstallation benötigt wurden, und lädt standardmäßig KEINE anderen Speichertreiber beim Booten. Dies geschieht anscheinend durch "Piraterie" - es macht es schwierig, die "gleiche" Installation auf unterschiedlicher Hardware auszuführen. Es gibt einige großartige Dokumentationen zu diesem "Feature" in diesem Beitrag aus den Gentoo-Foren. Das Wesentliche ist wie folgt:

Die Treiber, für die das Laden beim Start verboten ist, können wie folgt ermittelt werden: Im Registrierungsschlüssel Computer \ HKEY_LOCAL_MACHINE \ SYSTEM \ ControlSet001 \ Services befindet sich ein Unterschlüssel für jeden der Installation bekannten Treiber. Der Name dieses Unterschlüssels ist nur der Name des Treibers. In jedem Treiberschlüssel befindet sich ein Unterschlüssel "STARTOVERRIDE", wenn verhindert werden soll, dass dieser Treiber beim Booten geladen wird. Insbesondere gibt es innerhalb des Unterschlüssels STARTOVERRIDE 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 überschrieben.

Ich selbst gehe einfach zu Computer \ HKEY_LOCAL_MACHINE \ SYSTEM \ ControlSet001 \ Services und suche nach "STARTOVERRIDE". Jedes Mal, wenn ich es finde, wenn es einen Namen mit dem Namen "0" mit dem Wert "3" gibt, wechsle ich zu "0". Dies scheint zu viel des Guten zu sein, Sie müssen nur das Laufwerk wechseln, das geladen werden muss. In meinem Fall gibt es mehrere von ihnen, und ich kann mich nie daran erinnern, weshalb ich einfach eine "F3-Suche" innerhalb dieses Abschnitts "Dienste" durchführe.

Und noch ein letzter Tipp, der für den aktuellen, signierten, virtuellen Speicher nicht benötigt wird, aber für jemanden, der dies liest, wenn er einen experimentelleren Treiber verwenden möchte, der (noch) nicht signiert ist: Ich habe das AUCH gefunden, nachdem ich die obigen Schritte ausgeführt habe Trick, ich musste auch in den erweiterten Optionen-Bildschirm booten und wählen Sie F7 ("Deaktivieren der Überprüfung der Treibersignatur"). Ärgerlicherweise reichte es nicht aus, das bcd-Flag zu setzen, um die Treiberüberprüfung zu deaktivieren, 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 Blue-Screen bieten möchten, als den Leuten zu erlauben, eine SATA-Festplatte durch eine NVMe-Festplatte zu ersetzen und "einfach funktionieren" zu lassen.

Scott Petrack
quelle
Vielen Dank für die vielen Details, dies ist die praktikabelste Lösung! Ein Regfile, um alles zu importieren und zu lösen.
Florian Heigl