Windows 7 kann auf KVM mit Qemu nicht installiert werden

22589
Kief

Ich versuche, Windows 7 als Gastbetriebssystem in einer virtuellen Maschine zu installieren, die von meiner 64-Bit-Karmic-Box von Ubuntu gehostet wird. Ich komme so weit, meine Spracheinstellungen auszuwählen und auf "Jetzt installieren" zu klicken, aber kurz darauf bekomme ich einen blauen Bildschirm mit dem Tod.

Ich habe ein paar Variationen ausprobiert, einschließlich der 32-Bit-Version von Windows 7, die sehr schnell ausfällt. Der virt-installBefehl, den ich ausprobiert habe, beinhaltet Folgendes:

sudo virt-install --connect qemu:///system -n ksm-win7 -r 2048 \ --disk path=/home/kief/VM-Images/ksm-win7.qcow2,size=50 \ -c /var/Software/Windows7/Full/64bit/SW_DVD5_SA_Win_Ent_7_64BIT_English_Full_MLF_X15-70749.ISO \ --vnc --os-type windows --os-variant vista --hvm 

Die begrenzten Informationen, die ich finden konnte, schlugen vor, dass "Vista" als --os-Variante funktionieren sollte. Ich habe keine spezifischen Werte für Windows 7 gefunden.

Hier ist mein blauer Bildschirm:

BSOD

Ich habe von Googling sehr wenig gefunden. Ich vermute also, dass KVM nicht einfach Windows 7 unterstützt.

Aktualisieren:

Ich konnte mit der grafischen App "Virtual Machine Manager" erfolgreich eine Windows 7-VM erstellen, obwohl ich die Ursache des Problems mit der erstellten VM nicht wirklich verstehe virt-install. Ein Vergleich der Konfigurationsdateien unter / etc / libvirt / qemu liefert einige Hinweise, obwohl ich nicht genug weiß, um sie richtig zu interpretieren. Die interessanten Unterschiede zwischen den beiden VM-Konfigurationen sind:

--- win7-virt-install.xml +++ win7-vmm.xml -<domain type='qemu'> +<domain type='kvm'> @@ -21 +21 @@ - <emulator>/usr/bin/qemu-system-x86_64</emulator> + <emulator>/usr/bin/kvm</emulator> @@ -23 +23 @@ - <source file='/home/kief/VM-Images/ksm-win7.qcow2'/> + <source file='/var/lib/libvirt/images/ksm-win7x64.img'/> 

Ich bin nicht sicher, ob dies bedeutet, dass die funktionierende VM überhaupt kein Qemu verwendet oder ob es einen anderen Unterschied in der Art und Weise gibt, wie es mit kvm verwendet wird.

Update2:

Daher habe ich unten (meistens) meine eigene Frage beantwortet. Eine KVM-VM muss die KVM-eigene CPU-Emulation anstelle von Qemu verwenden, damit Windows 7 installiert werden kann. Ich bin mir nicht sicher, ob es etwas gibt, was getan werden kann, damit es mit einer Qemu-Emulations-CPU funktioniert, oder ob eine neuere Version dies unterstützt. Zumindest ist es jedoch möglich, sie auf einer KVM-VM auszuführen.

8

6 Antworten auf die Frage

7
Evan Plaice

Hier ist der einfache Weg

Wenn Sie nicht genau wissen, warum Sie ein GuestOS mit virt-install installieren, können Sie dies ganz einfach ohne virt-install tun.

Ich habe eine funktionierende VM mit Windows 7 installiert. So habe ich es erstellt.

Schritt 1: Erstellen Sie das Image der virtuellen Festplatte

qemu-img create -f qcow2 vdisk.img 100g 

Dadurch wird eine virtuelle Festplatte im Format qcow2 erstellt. Wenn Sie die Partitionsgröße auf 100 g (Gigabyte) einstellen, werden 100 GB physischer Festplattenspeicher nicht zugewiesen. Die virtuelle Partition benötigt nur so viel Speicherplatz wie die darin enthaltenen Daten. Die 100g machen es einfach so, dass Sie (hoffentlich) niemals die Größe vergrößern müssen. Das Erhöhen der Standardgröße eines qcow2-Bildes ist nach wie vor eine Schwierigkeit für a ** .

Schritt 2: Installieren Sie das Betriebssystem

Wenn Sie eine tatsächliche physische CD-ROM zum Laden des Betriebssystems verwenden, verwenden Sie den folgenden Befehl.

sudo kvm -m 750 -cdrom /dev/sr0 -boot d vdisk.img 

Wenn Sie ein Betriebssystem-Image verwenden, um das Betriebssystem zu laden, verwenden Sie diesen Befehl.

sudo kvm -m 750 -cd-rom /path/to/image/image.iso -boot d vdisk.img 

Hier ist die Aufschlüsselung der Befehle:

  • kvm - ruft die virtuelle Kernel-Maschine auf (offensichtlich)
  • -m 750 - weist der virtuellen Maschine 750 MB Arbeitsspeicher zu
  • -cd-rom richtet die CD-Rom ein. Verwenden Sie für eine physische Festplatte dieselbe Festplatte wie Ihr HostOS. Geben Sie für ein Bild einen Pfad zur Bilddatei an.
  • -boot d bootet die virtuelle Maschine von der CD-ROM

Ich habe den Speicherbedarf für das anfängliche Laden auf 750 eingestellt, um konservativ zu sein, sodass ich sicher sein kann, dass die Installation abgeschlossen wird, ohne dass der Speicher ausläuft. Für nachfolgende Ladungen setze ich es normalerweise auf 512.

Hinweis: AFIAK, der Befehl kvm funktioniert nur in neueren Versionen von Debian / Ubuntu oder deren Ableitungen. Wenn dies nicht funktioniert, lautet der Befehl qemu-system-x86_64 oder qemu-kvm für 32 Bit.

Nachdem Sie den gesamten Installationsprozess durchlaufen haben, sollte die VM in einem funktionierenden Betriebssystem neu gestartet werden. Um die VM erneut zu laden, starten Sie einfach diesen Befehl:

kvm -m 512 vdisk.img 

Bei allen Befehlszeilenschaltern müssen Sie zusätzliche physische Laufwerke, Hardware usw. einbinden. Informationen zu Befehlszeilenschaltern finden Sie in kvm --help.

Wenn Sie den Unterschied zwischen "Paravirtualisierung" und "nativer Virtualisierung" nicht verstehen , hat Matthias die Unterschiede bereits gut erklärt .

Für eine ausführlichere Erklärung dieses Prozesses lesen Sie diesen Artikel .

3
Matthias

Der Grund für dieses Problem bei der Installation von Fenstern mit der qemu-Virtualisierung ist der Unterschied zwischen qemu "Paravirtualisierung" und KVMs "nativer Virtualisierung". Paravirtualisierung bedeutet, dass eine CPU simuliert wird und ein spezieller Kernel auf der Seite des Clients (virtuelles System) erforderlich ist, damit dieses System weiß, wie die CPU ordnungsgemäß funktioniert. Dies ist der Grund dafür, dass nicht alle Systeme ohne KVM mit qemu laufen können.

Auf der anderen Seite können virtuelle Systeme, die KVM verwenden, direkt auf die CPU zugreifen (weil KVM AMD / Intel Hardware Virtualization-Unterstützung verwendet). In diesem Fall ist kein spezieller Kernel erforderlich. Der Nachteil ist, dass der Host über eine moderne CPU verfügen muss, die diese Hardware-Virtualisierung unterstützt (SVM bei AMD und VT-x für Intel), und dass das Client-System auf dieser CPU ausgeführt werden kann (kein Problem bei den meisten Systemen) kann auf einem x86 laufen), was die Portabilität reduziert.

+1 Eine großartige Erklärung für die Unterschiede zwischen 'Paravirtualisierung' und 'nativer Virtualisierung' Evan Plaice vor 13 Jahren 1
2
Jared Harley

Die 0x1e-Ausnahme ist KMODE_EXCEPTION_NOT_HANDLEDnormalerweise ein Fehler in Bezug auf die Hardware oder den Gerätetreiber. Ich schätze, dass Windows aus irgendeinem Grund die emulierte Hardware der virtuellen Maschine nicht mag.

Haben Sie versucht, VirtualBox zu verwenden ? Sie haben eine Version für Karmic Koala und unterstützen Windows 7 (Ich verwende Win7 derzeit auf einer Windows XP-Box).

Danke, ich möchte bei KVM bleiben, da wir es mit Eukalyptus verwenden. Dies ist für mich ebenso eine Lernübung wie eine pragmatische Notwendigkeit, Windows 7 auszuführen. Kief vor 14 Jahren 0
1
Kief

Nach einigen Nachforschungen und Beratungen mit einem Kollegen scheint das Problem mit der Qemu-CPU-Emulation zu sein. Mein virt-install-Befehl erstellte die virtuelle KVM-Maschine mit der Qemu-CPU-Emulation. VMM erstellte eine virtuelle KVM-Maschine unter Verwendung der KVM-eigenen CPU-Emulation (obwohl Qemu weiterhin zum Emulieren anderer Teile des PCs verwendet wird, da die aktuelle Version von KVM dafür Qemu verwendet).

Durch Hinzufügen des Parameters --accelerate zu meinem Befehl virt-install kann ich eine VM erstellen und Windows 7 darauf installieren.

Die Antwort scheint also zu sein, dass Windows 7 nicht mithilfe der CPU-Emulation qemu-kvm-0.11.0 auf einer virtuellen Maschine installiert werden kann. Dies kann jedoch durch die Verwendung der KVM-eigenen CPU-Emulation umgangen werden. Dies erfolgt mit der Option --accelerate zur virtuellen Installation. Der Parameter der Konfigurationsdatei lautet <domain type="kvm">nicht <domain type="qemu">.

Danke dafür! Ich habe die XML-Datei wie vorgeschlagen bearbeitet, Qemu durch kvm ersetzt und Win7 64bit ohne Probleme installiert! (läuft auf Fed12 64bit) vor 13 Jahren 0
0
Mike Mestnik

The other difference I see from above is that KVM should be 32bit emulation only... or at least with your XML diff that stands out.

Looks like 64bit support has been added to KVM, so qemu-system-x86_64 with --accelerate might/could give you both KVM and 64bit, provided your kernel is built for it by your distribution.

0
Jiab77

Ich konnte die Installation starten, indem ich zunächst die Anzeige cirruswie hier beschrieben änderte : https://ubuntuforums.org/showthread.php?t=2325843&s=67c08420c394b532ea814a0c46752914&p=13500324#post13500324

  1. Installieren Sie Win 7 mit Cirrus-Grafik, fahren Sie VM herunter
  2. Fügen Sie einen zweiten Grafikadapter als "qxl" hinzu
  3. booten Sie vm und installieren Sie den qxl-Treiber
  4. Fahren Sie VM herunter und entfernen Sie den Cirrus-Adapter
Vielen Dank für Ihren Kommentar, ich habe die komplette Lösung hinzugefügt. Jiab77 vor 7 Jahren 0