Je migre mon PC de Windows 10 en Linux. Il y a quelques choses pour lesquelles j'ai toujours besoin de Windows et je suis actuellement double-démarrage, avec Windows et Linux sur des disques physiques distincts. J'aimerais vous échapper du double démarrage et exécuter mon installation Windows 10 virtualisée sous KVM + Libvirt + QEMU.
La partie délicate ici semble être que mon installation Windows 10 a été effectuée via UEFI (avec la table de partition GPT) plutôt que le BIOS Legacy BIOS MBR. Voici ce que mon disque Windows ressemble à:
$ Sudo parted /dev/nvme0n1 print
Model: Unknown (unknown)
Disk /dev/nvme0n1: 500GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:
Number Start End Size File system Name Flags
1 1049kB 524MB 523MB ntfs Basic data partition hidden, diag
2 524MB 628MB 104MB fat32 EFI system partition boot, esp
3 628MB 645MB 16.8MB Microsoft reserved partition msftres
4 645MB 500GB 499GB ntfs Basic data partition msftdata
Comme il a été configuré comme UEFI, il semble que certaines étapes supplémentaires soient nécessaires pour virtualiser, car LibVirt ne semble pas supporter UEFI hors de la boîte. Ce que j'ai essayé était d'exporter chacune des partitions ci-dessus comme une image Qcow2, avec une commande comme celle-ci:
$ qemu-img convert -f raw -O qcow2 /dev/nvme0n1p1 win10_part1.qcow2
Et répété pour les quatre partitions. Ensuite, j'ai créé une machine virtuelle sous ART-Manager, important les quatre disques Qcow2. J'ai installé le package "OVMF" pour ma distribution (Manjaro) et ajouté cette ligne dans le fichier de configuration XML de la machine virtuelle, dans la section "OS":
<loader type='rom'>/usr/share/ovmf/x64/OVMF_CODE.fd</loader>
Lorsque je démarre la machine virtuelle, je vois l'écran Splash Tianocore. Mais cela me laissa tomber dans une coque Grub2, plutôt que de trouver le chargeur de démarrage Windows.
J'ai également essayé de démarrer cette VM à partir de l'ISO de Windows 10, en espérant que je pourrais "réparer" le système pour démarrer. Mais ça n'a pas marché.
Je suis sûr que je manque quelque chose. Encore mieux serait de convertir cela en MBR Boot, juste pour éviter la dépendance OVMF.
Le commentaire de Dylan, je l'ai fait travailler, mais un certain nombre de petits problèmes sont arrivés en cours de route, je pensais que je les posterais ici au cas où d'autres ont des problèmes similaires.
Comme Dylan a écrit, la première étape a été créée pour créer une image du Disque entier, plutôt que des disques individuels par partition. J'ai utilisé cette commande:
qemu-img convert -f raw -O qcow2 /dev/nvme0n1 win10_import.qcow2
J'ai ensuite créé la machine virtuelle dans virt-manager, en spécifiant l'image de disque ci-dessus ("win10_import.qcow2") comme mon lecteur.
Ensuite, il était d'utiliser le micrologiciel OVMF (Tianocore) UEFI. Cela a été fait en installant le paquet OVMF ("OVMF" sur Manjaro), puis l'ajoutez à la définition XML de la machine virtuelle:
<os>
<type Arch='x86_64' machine='pc-q35-3.0'>hvm</type>
<loader type='rom'>/usr/share/ovmf/x64/OVMF_CODE.fd</loader>
</os>
Après cela, Windows serait toujours Crash pendant la botte, avec une crise bluescreen et l'erreur "Exception de thread du système non manipulé". Pour une raison quelconque, il n'a pas aimé le paramètre CPU de la "configuration du processeur de la copie hôte". J'ai changé en "Core2duo", et cela a démarré. En ce moment, j'utilise "Sandybridge" et cela fonctionne également. (Pour ce que ça vaut la peine, j'ai créé un autre, séparé Win10 VM faisant une nouvelle installation à partir de zéro. que VM a fonctionné avec la "configuration du processeur de la copie hôte". My La CPU est AMD Ryzen 5 2400g.)
Problème suivant que j'ai rencontré était que Windows 10 a été insupportablement lent. D'une manière ou d'une autre, j'ai réussi à créer le VM avec l'hyperviseur "QEMU TCG", plutôt que "KVM". Cela a du sens, comme l'ancien est émulation et terriblement lentement, tandis que cette dernière est une véritable virtualisation assistée du matériel. (Comment cela s'est passé: tout en essayant de faire fonctionner cela, j'ai également fait une mise à niveau du BIOS sur le système physique, qui réinitialisez tous mes paramètres de BIOS, dont une virtualisation désactivée (appelée "SVM" dans mon BIOS). Une fois que j'ai corrigé que , J'ai pu utiliser l'hyperviseur de la vitesse quasi native KVM.)
Le prochain numéro était que la résolution de l'écran était bloquée à 800x600. Windows ne me laisserait pas le changer. Je pourrais faire un correctif ponctuel en appuyant sur Esc dès que la machine à bottes, à droite lorsque l'éclaboussure Tianocore apparaît. Cela me prend dans les paramètres UEFI, où je peux forcer une résolution plus élevée. Mais ce n'est pas une solution permanente.
Depuis ma machine virtuelle spécifiée QXL comme périphérique vidéo, je devais installer les pilotes QXL dans Windows. Cette page, Création de machines virtuelles Windows à l'aide de pilotes Virtio explique comment faire cela. La version courte est la suivante: Téléchargez le Virtio-Win ISO sur la machine hôte. Ajoutez-le à la VM sous forme de lecteur de CD-ROM. Ensuite, démarrez dans la machine virtuelle, naviguez sur le bon dossier du CD-ROM et installez tous les pilotes Virtio nécessaires. Spécifiquement, pour QXL Video sur Windows 10, le dossier "QXLDOD" a le bon pilote.
QEMU/LIBVIRT Attendez-vous à ce que vous fournissez un disque virtuel: vos fichiers Qcow2 doivent être du disque et non des partitions. En faisant ce que vous avez fait, vous avez 4 fichiers Qcow2, chacun avec une seule partition. Vous avez cassé la structure précédente, ce n'est pas une surprise que GRUB Je ne peux plus démarrer votre système.
Je vous suggère de convertir tout le lecteur physique en un seul fichier QCow2, puis de connecter ce lecteur virtuel à votre VM.
Vous devriez être capable de supprimer le GRUB fichier EFI à partir de la partition EFI (voir les outils de libguestfs) et obtenir la conduite du menu de démarrage, car le chargeur de démarrage de Windows doit être chargé par l'UEFI de VM.
Si quelqu'un d'autre trébuche sur cette question, il existe une autre alternative pour l'utilisation d'une installation de Windows natif comme VM à Linux:
J'ai géré le n ° 2 ci-dessus, mais cela peut être tout à fait impliqué. Il devient assez complexe et risque si Linux et Windows partagent le même appareil.
Cela ne vaut que l'effort supplémentaire pour diverses raisons:
Il y avait de nombreuses mises en garde/de contournement:
md0
Construit à partir de <GPT table clone image/loopback> + <recovery raw> + <EFI clone image/loopback> + <windows system raw> + <end of device GPT backup table/loopback>
.J'ai utilisé une configuration similaire sur un 2e système, mais j'ai beaucoup simplifié la vie, beaucoup plus facile d'avoir 2 périphériques de stockage séparés, un pour Linux, l'autre pour Windows.