Description
Abordons la virtualisation de Windows 11, sous Debian Sid, avec QEMU, avec pour prérequis nécessaire l’utilisation de TPM, Secure-Boot, partage de données entre la machine hôte et la VM, … sans oublier l’UEFI.
Ce processus convient aussi pour un Windows 10 virtualisé nécessitant les mêmes prérequis.
Pré-requis
L’hôte sera paramétré en tant que pont et la VM fera partie du même réseau que l’hôte.
Je n’aborde pas ici la configuration de l’hôte en tant que bridge réseau.
Lire mon article : Debian : Pont réseau pour QEMU
Windows 11
Le téléchargement de l’image ISO de Windows 11 se fait depuis : https://www.microsoft.com/software-download/windows11
Procurez-vous légalement une clé de licence Windows.
⇒ Les prérequis minimum pour une machine virtuelle exécutant Windows 11 sont les suivants :
- 64 Go de stockage
- 4 Go mémoire
- 2 CPU virtuels
QEMU
QEMU doit être installé:
$ sudo apt install libosinfo-bin qemu-system virt-manager
libosinfo-bin
est un outil pour interroger la base de données osinfo.virt-manager
est une application de bureau pour gérer des machines virtuelles.
TPM, Secure-Boot, UEFI
Parmi les pré-requis de Windows 11, il y a la gestion :
- de TPM.
- du Secure Boot
- et de l’UEFI.
Il nous installer les binaires suivants :
$ sudo apt install ovmf swtpm swtpm-tools
Client graphique
Pour accéder à l’interface graphique de la VM, au choix
- le serveur Spice (par défaut)
- ou VNC.
Spice
Par défaut l’interface graphique de la VM est configurée sur spice.
Il faut installer les paquets spice-vdagent et spice-client-gtk :
$ sudo apt install spice-vdagent spice-client-gtk
Ce tutoriel se base sur l’utilisation de spice.
VNC
Pour utiliser l’interface graphique avec le serveur VNC, un client comme tigervnc-viewer peut être suffisant.
$ sudo apt install tigervnc-viewer
Ce tutoriel n’aborde pas plus cette utilisation… si ce n’est de pararmètrer le client VNC d’interroger localhost et le port VNC par défaut (à moins que vous l’ayez changé, dans ce cas agissez en conséquence).
Création de la VM
Droits utilisateur
Ajoutez votre utilisateur au groupe libvirt, voire libvirt-qemu.
$ sudo adduser your-id libvirt
$ sudo adduser your-id libvirt-qemu
Ensuite, choisissez pour faire l’installation de la VM :
- soit en mode CLI,
- soit par l’installateur graphique virt-manager
virt-install CLI
Partant du principe d’un répertoire dédié dans votre homme, nommé VM :
- Création de la VM:
$ cd ~/VM
$ ROOT="$(pwd)"
$ name=Win11Test
$ path="${ROOT}/${name}.qcow2"
$ size=64
$ qemu-img create -f qcow2 "${path}" "${size}G"
- Démarrage de l’installation :
$ isofile=Win11_23H2_French_x64v2.iso
$ fs_dest="C:\\vmshare"
$ fs_src="${ROOT}/vmshare"
$ cdrom="${ROOT}/${isofile}"
$ conn="qemu:///system"
$ cpu="check=none,mode=host-passthrough,migratable=on"
$ disk="device=disk,format=qcow2,path=${path},size=${size},target.bus=sata,target.dev=sda,type=file"
$ fs="accessmode=passthrough,source=${fs_src},target=${fs_dest},type=mount,driver.type=virtiofs"
$ graphic=spice
$ machine=q35
$ mem="4096,maxMemory=16384"
$ memBacking="source.type=memfd,access.mode=shared"
$ net="bridge=br0,model.type=e1000,type=bridge"
$ os="detect=on,name=win11"
$ tpm="emulator,version=2.0"
$ vcpu="2,maxvcpus=4"
$ virt-install --accelerate --cdrom "${cdrom}" --connect "${conn}" --cpu "${cpu}" --disk "${disk}" --filesystem "${fs}" --graphics type="${graphic}" --hvm --machine "${machine}" --memory "${mem}" --memorybacking="${memBacking}" --name ${name} --network "${net}" --os-variant "${os}" --tpm "${tpm}" --vcpus "${vcpu}"
Direction vers l’interface graphique de la nouvelle fenêtre qui vient de s’ouvrir, titrée “Win11Test”, assez rapidement pour pouvoir valider le choix de démarrer sur le CD-ROM.
Selon votre puissance machine hôte, l’installation de Windows se fait en quelques minutes…
Gestionnaire graphique virt-manager
-
Veillez à activer l’option d’architecture en spécifiant l’*Architecture : x86_64 :
-
Choisir le chemin de l’ISO d’installation de Windows :
-
Choisir les paramètres mémoire et CPU :
-
Activer le stockage en sélectionnant un personnalisé :
-
Dans votre home, créez un volume de stockage personnalisé
-
Commençons l’installation de la VM
- Veillez à sélectionner le type de réseau, en tant que Bridge device
- et à lui donner le nom correct de votre pont, dans le champ Device name
Le reste est le processus d’installation de Windows…
Installation de Windows
Je ne développe pas le processus d’installation en lui-même ; il ne différe en rien d’une installation sur une machine physique.
Partage
Le moyen le plus simple actuellement pour partager des copier-coller, des fichiers entre l’hôte et l’invité est l’utilisation du serveur spice ; l’utilisation de VNC n’est pas compatible pour ce propos.
D’autres possibilités sont l’usage de SSHFS, voire Samba, qui ne seront pas abordés dans cet article.
⇒ Sur l’hôte :
$ sudo apt install qemu-guest-agent spice-vdagent
⇒ Dans la VM :
Une fois l’installation de Windows terminée, et dans votre session utilisateur, avec n’importe quel navigateur web, allez télécharger :
-
l’utilitaire WinFSP : https://winfsp.dev/rel/
C’est l’équivalent de Fuse pour Windows.- Veillez à l’installation du Core - ce qui est normalement proposé par défaut
(voir ci-dessous : WinFSP )
- Veillez à l’installation du Core - ce qui est normalement proposé par défaut
-
les outils VirtIO : https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/latest-virtio/virtio-win-guest-tools.exe
Cet ensemble packagé par l’équipe Fedora comprend les pilotes logiciels nécessaires à la paravirtualisation et l’émulation matérielle ; il embarque aussi l’agent Spice pour la gestion de l’affichage graphique, et son redimensionnement automatique, le copier-coller entre l’hôte et la VM, la redirection des périphériques USB vers la VM.- Veillez à l’installation de Viofs
(voir ci-dessous : VirtIO )
- Veillez à l’installation de Viofs
virt-install
Lors de l’installation par le biais de l’outil virt-install en CLI, normalement vous avez paramétré :
- les variables
fs_dest
etfs_src
nécessaires pour paramétrer correctement la variable--filesystem
- ainsi que la variable
memoryBacking
qui est nécessaire pour le partage mémoire.
virt-manager
Si vous avez fait l’installation de la VM par le biais de virt-manager, arrêtez proprement la VM, puis paramétrez le partage de fichier.
- Affichez les détails de la VM
- Cliquez sur Mémoire pour activer l’option Enable shared memory
- Puis cliquez sur le bouton [ Ajouter un matériel ], en bas à gauche de la fenêtre des détails…
- Sélectionnez le choix Système de fichiers et paramétrez :
- Pilote : virtiofs
- Chemin de la source : Parcourez vers votre répertoire de partage sur votre hôte, tel que
~/VM/vmshare
- chemin de la cible :
C:\vmshare
- vous pouvez choisir d’exporter les fichiers en lecture seule, en cliquant sur la case à cocher adéquate.
- cliquez sur le bouton [ Terminer ]
Au redémarrage de la VM, le chemin de la cible sera privilégié en tant que lecteur Z:… si bien sûr, vous avez réalisé l’installation des deux binaires WinFSP et VirtIO ; sinon faites-le.
WinFSP
-
Veillez à ce que le module Core soit validé - ce qui est normalement le cas par défaut.
-
Terminez classiquement l’installation, sans autre détail.
VirtIO
-
Veillez à ce que le module Viofs soit validé - ce qui est normalement le cas par défaut.
-
Pendant la phase d’installation:
- l’affichage de la VM va clignoter et se redimentionner automatiquement - c’est normal.
- le copier-coller entre l’hôte et la VM est disponible, aussi.
-
Une fois l’installation terminée, allez dans le gestionnaire de services :
- Déroulez jusqu’au service Virtio-FS Service, double-cliquez dessus
- changez le type de démarrage pour le mettre en mode Automatique en lieu du mode Manuel
- cliquez sur le bouton [ Démarrer ]
- Déroulez jusqu’au service Virtio-FS Service, double-cliquez dessus
-
Redémarrez la VM
-
Une fois à nouveau dans la session, cliquez sur l’explorateur de fichiers, puis sur Ce PC, vous devrez y trouver le lecteur Z: connecté sur C:\vmshare.
Vous pouvez maintenant faire transiter les fichiers désirés entre l’hôte et la VM.
Test partage fichier
Voilà !
À partir de maintenant, vous êtes opérationnel ;)
Dépannage
Q : Le service Virtio-FS refuse de démarrer !
R : Avez-vous installé WinFSP en premier ? Si ce n’est pas le cas, faites-le ; ensuite vous pourrez le démarrer.
Q : J’ai redémarré la VM, mais le partage de fichiers sur Z: n’est pas actif !
R :
- Dans les paramètres de la VM, avez-vous bien paramétré une Système de fichiers ?
- Vérifiez vos chemin de la source (sur l’hôte) et chemin de la cible (celui dans la VM).
- Avez-vous bien paramétré le service Virtio-FS ? Vérifiez qu’il soit démarré
Documentations
-
https://www.linux-kvm.org/page/WindowsGuestDrivers/Download_Drivers
-
https://github.com/virtio-win/virtio-win-pkg-scripts/blob/master/README.md
-
https://www.debugpoint.com/install-windows-ubuntu-virt-manager/
-
https://getlabsdone.com/how-to-enable-tpm-and-secure-boot-on-kvm/
Remerciements
Tout particulièrement à @Clochette ;)
Enjoy-IT!
Enjoy-ID!