8 votes

Windows 7 ne s'installe pas sur KVM avec qemu

J'essaie d'installer Windows 7 en tant que système d'exploitation invité dans une machine virtuelle hébergée par ma boîte Ubuntu Karmic 64 bits. J'arrive à sélectionner mes paramètres de langue et à cliquer sur "Installer maintenant", mais peu de temps après, je vois apparaître un écran bleu de la mort.

J'ai essayé quelques variantes, y compris l'utilisation de la version 32 bits de Windows 7, qui échoue très rapidement. Le site virt-install La commande que j'ai essayée inclut ceci :

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

Les quelques informations que j'ai pu trouver suggéraient que 'Vista' devait fonctionner comme variante --os. Je n'ai pas trouvé de valeurs spécifiques à Windows 7.

Voici mon écran bleu :

BSOD

J'ai trouvé très peu de choses en cherchant sur Google, donc je suppose qu'il ne s'agit pas d'un cas où KVM ne supporte tout simplement pas Windows 7.

Mise à jour :

J'ai pu créer avec succès une VM Windows 7 à l'aide de l'application graphique "Virtual Machine Manager", mais je ne comprends pas vraiment la cause du problème avec la VM créée avec virt-install . La comparaison des fichiers de configuration sous /etc/libvirt/qemu fournit quelques indices, bien que je n'en sache pas assez pour les interpréter correctement. Les différences intéressantes dans les deux configurations VM sont :

--- 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'/>

Je ne sais pas si cela signifie que la VM qui fonctionne n'utilise pas du tout qemu, ou s'il y a une autre différence dans la façon dont il est utilisé avec kvm.

Mise à jour2 :

J'ai donc répondu à ma propre question (en grande partie) ci-dessous. Une VM KVM doit utiliser l'émulation CPU propre à KVM plutôt que celle de qemu pour que je puisse installer Windows 7. Je ne suis pas sûr qu'il y ait quelque chose à faire pour le faire fonctionner sur un CPU à émulation qemu, ou si une version plus récente le supportera. Mais au moins, il est possible de le faire fonctionner sur une VM KVM.

7voto

Evan Plaice Points 1467

Voici le moyen le plus simple

À moins que vous n'ayez une raison spécifique d'installer un GuestOS à l'aide de virt-install, voici la façon "simple" de le faire sans virt-install.

J'ai une VM qui fonctionne avec Windows 7 installé. Voici comment je l'ai créée.

Étape 1 : créer l'image du disque virtuel

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

Cela crée un disque virtuel au format qcow2. En fixant la taille de la partition à 100g (gigaoctets), vous pourrez pas allouer 100 Go d'espace physique sur le disque dur. La partition virtuelle ne prendra que l'espace nécessaire aux données qu'elle contient. Les 100 Go permettent simplement de ne jamais avoir besoin d'augmenter la taille de la partition. L'augmentation de la taille par défaut d'une image qcow2 est toujours très difficile à réaliser. .

Étape 2 : Installer le système d'exploitation

Si vous utilisez un cd-rom physique réel pour charger le système d'exploitation, utilisez la commande suivante.

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

Si vous utilisez une image disque pour charger le système d'exploitation, utilisez cette commande.

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

Voici la répartition des commandes :

  • kvm - appelle la machine virtuelle du noyau (évident)
  • -m 750 - alloue 750mb de mémoire pour la machine virtuelle
  • -cd-rom configure le cd-rom. Pour un disque physique, utilisez le même disque que votre HostOS. Pour une image, fournissez un chemin vers le fichier image.
  • -boot d démarre la machine virtuelle à partir du cd-rom

Je fixe l'empreinte mémoire pour le chargement initial à 750 pour être prudent et être sûr que l'installation se termine sans manquer de mémoire. Pour les chargements suivants, je la fixe généralement à 512.

Note : AFIAK, la commande kvm ne fonctionne que dans les versions plus récentes de Debian/Ubuntu ou leurs dérivés. Si elle ne fonctionne pas, la commande équivalente (et plus courante) est qemu-system-x86_64 ou qemu-kvm pour 32 bits.

Après avoir effectué l'ensemble du processus d'installation, la VM devrait redémarrer dans un système d'exploitation fonctionnel. Pour recharger la VM, il suffit de lancer cette commande :

kvm -m 512 vdisk.img

Avec les commutateurs de ligne de commande dont vous avez besoin pour monter des disques physiques supplémentaires, du matériel, etc. Pour trouver des informations sur les commutateurs de ligne de commande, consultez kvm --help.

Si vous ne comprenez pas la différence entre la "paravirtualisation" et la "virtualisation native" Matthias a déjà donné une excellente explication des différences. .

Pour une explication plus approfondie de ce processus, cliquez ici. lire cet article .

3voto

Matthias Points 31

La raison de ce problème d'installation de Windows avec la virtualisation qemu est la différence entre la "paravirtualisation" de qemu et la "virtualisation native" de KVM. La paravirtualisation signifie qu'elle simule un CPU et nécessite un noyau spécial du côté du client (système virtuel) afin que ce système sache comment appeler correctement les fonctions du CPU. C'est la raison pour laquelle tous les systèmes ne sont pas capables de fonctionner avec qemu sans KVM.

D'autre part, les systèmes virtuels utilisant KVM peuvent accéder directement au CPU (parce que KVM utilise le support de la virtualisation matérielle AMD/Intel). Dans ce cas, aucun noyau spécial n'est nécessaire. L'inconvénient est que l'hôte doit avoir un CPU moderne qui supporte cette virtualisation matérielle (appelée SVM sur AMD et VT-x pour Intel) et que le système client doit être capable de fonctionner sur ce CPU (ce qui n'est pas un problème, car la plupart des systèmes peuvent fonctionner sur un x86), ce qui réduit la portabilité.

2voto

ThunderHorse Points 353

L'exception 0x1e est KMODE_EXCEPTION_NOT_HANDLED Il s'agit généralement d'une erreur liée au matériel ou au pilote du périphérique. Je pense que, pour une raison quelconque, Windows n'apprécie pas le matériel émulé de la machine virtuelle.

Avez-vous essayé d'utiliser VirtualBox ? Ils ont une version pour Karmic Koala, et ils supportent Windows 7 (j'utilise Win7 en ce moment sur une boîte Windows XP).

1voto

Insyte Points 9294

Après quelques recherches et la consultation d'un collègue, le problème semble provenir de l'émulation du CPU qemu. Ma commande virt-install a créé la machine virtuelle KVM en utilisant l'émulation de CPU de qemu. VMM a créé une machine virtuelle KVM en utilisant l'émulation de CPU propre à KVM (tout en continuant à utiliser qemu pour émuler d'autres parties du PC, puisque la version actuelle de KVM utilise qemu pour cela).

En ajoutant le paramètre --accelerate à ma commande virt-install, je suis en mesure de créer une VM et d'y installer Windows 7.

La réponse semble donc être que Windows 7 ne peut pas être installé sur une machine virtuelle utilisant l'émulation de CPU qemu-kvm-0.11.0, mais cela peut être contourné en utilisant la propre émulation de CPU de KVM. Cela se fait en utilisant l'option --accelerate de virt-install. Le paramètre du fichier de configuration sera <domain type="kvm"> plutôt que <domain type="qemu"> .

0voto

Mike Mestnik Points 1

L'autre différence que je vois par rapport à ce qui précède est que KVM ne devrait être qu'une émulation 32bit... ou au moins avec votre diff XML qui ressort.

On dirait que le support 64bit a été ajouté à KVM, donc qemu-system-x86_64 avec --accelerate peut/pourrait vous donner à la fois KVM et 64bit, à condition que votre noyau soit construit pour cela par votre distribution.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X