Virtualiser Windows 11 sur Proxmox VE
Au sommaire :
- 1-Création de la machine virtuelle
- 2-Installation
- 3-Post-installation
- 4-Créer un template
1-Création de la machine virtuelle
Téléchargez l'ISO de Windows 11 à cette adresse : https://www.microsoft.com/fr-fr/software-download/windows11
Puis ajoutez là sur votre serveur en allant dans Datacenter\<nomduserveur>\local\ISO Images\Upload puis "Select File".
Ensuite, créez une machine virtuelle et donnez lui un nom.
Dans "Use CD/DVD disk image file 'iso", sélectionnez votre image. Si vous êtes sur le stockage par défaut, elles sont stockés dans "local".
Par défaut, "Guest OS" est paramétré sur Microsoft Windows et 11/2022/2025.
Téléchargez l'image contenant les pilotes de VirtIo à cette adresse :
https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/stable-virtio/virtio-win.iso
Et comme l'ISO de Windows 11, ajoutez là dans votre serveur en allant dans Datacenter\<nomduserveur>\local\ISO Images\Upload\Select File et cliquez sur "Upload".
- Cochez "Add additional drive for VirtIO drivers"
- Laissez sur "local"
- Sélectionnez l'image VirtIO
Ensuite, activez "Qemu Agent" et sélectionnez "local-lvm" pour stocker la partition EFI et le module TPM 2.0, vous savez, le module qui vous empêche d'installer Windows 11 sur des postes plus anciens. Ici, vous n'aurez rien à craindre.
Qemu Agent est comme son nom l'indique l'agent de liaison de l'émulateur Qemu. Il est utile pour envoyer des informations comme l'adresse IP ainsi que pour démarrer ou éteindre la machine virtuelle.
Par défaut, PVE sélectionne le bios OVMF (Open Virtual Machine Firmware) qui est le portage open-source du standard UEFI et le profil machine q35 qui est plus moderne que le i440fx. Il est obligatoire pour transmettre un périphérique physique (PCI passthrough).
Également, il sélectionne par défaut VirtIO SCSI comme contrôleur SCSI qui nous sera utile lorsqu'on utilisera les pilotes de para-virtualisation. Pour en savoir plus :
Dans "Cache", sélectionnez "Write back" pour de meilleures performances et "SCSI" dans "Bus/Device" car il remplace VirtIO Block qui est déprécié et IDE/SATA ne sont pas assez performants en lecture/écriture,
Sélectionnez également "SSD emulation" pour indiquer à la machine virtuelle quelle tourne sur un SSD et non un disque dur, cela permettra d’allonger la durée de vie du SSD. Pensez aussi à activer "Discard" pour une meilleure gestion du provisionnement dynamique.
Dans "Cores, ajoutez 2 ou 4 cores selon votre configuration et dans "Type", changez la valeur par défaut "kvm64" par "host". Le mode "host" permet un accès direct au CPU sans couche d'abstraction. Il est obligatoire pour Windows car sans le mode "host", beaucoup d'applications risque de planter.
Dans "Memory", sélectionnez 4096 Mib (4 Go de mémoire vive). Privilégier la mémoire fixe sans balloon pour Windows car Il est notoire que cette option est facteur d'instabilité et pose des soucis de performance (pour Linux, la mémoire dynamique ne pose aucun soucis). Voir le lien ci-dessous pour plus d’informations :
Dans "Model", sélectionnez le pilote de para-virtualisation VirtIO pour la carte réseau. La carte ne sera pas reconnu par défaut par Windows, nous verront comment l'installer à l'avance.
Par défaut, le pare-feu du serveur est activé et il est connecté au pont vmbr0 (pont par défaut de PVE).
Validez la configuration en cliquant sur "Finish".
On est enfin prêt. Are you ready ? Let's ROCK baby!!!!!
2-Installation
Démarrez la machine virtuelle
Appuyez sur n'importe quelle touche pour démarrer le DVD.
Sélectionnez "Anglais" comme langue et "France" pour le clavier et l'horloge. Habituez-vous à travailler systématiquement en anglais.
Cliquez sur "Install now".
Activez votre licence Windows ou bien cliquez sur "i don't have a product key".
Sélectionnez la version que vous souhaitez. Moi j'installe la version professionnelle en général pour bitlocker, Hyper-V, le RDP et d'autres options d'entreprise. Pour en savoir plus :
Validez les Conditions générales d'utilisation (CGU).
Cliquez sur "Custom Install Windows only (advanced)".
Vous remarquerez que le stockage n'est pas reconnu. Normal car vous avez choisis le bus/device SCSI sous VirtIO et Windows n'embarque pas les pilotes VirtIO en natif. Il va donc falloir installer le pilote lié au stockage via le deuxième lecteur monté dans la machine virtuelle.
Cliquez sur "Load driver" puis sur "Browse".
Naviguez dans le lecteur CD et allez dans le dossier "D:\vioscsi\w11\amd64" et cliquez sur "OK". Cela va charger le pilote.
Cliquez sur "Next" pour installer le pilote.
Enfin, sélectionnez le disque, créez des partitions si vous le souhaitez puis cliquez sur "Next".
La machine virtuelle ayant redémarré, arrivé à cet écran, sélectionnez "France" comme pays puis à l'écran suivant, sélectionnez "French" si vous avez un clavier AZERTY.
Passez cette étape (ajout d'un deuxième clavier).
Cliquez sur "I don't have internet", vous installerez le pilote réseau plus tard.
MAJ (13/01/2023) : Microsoft force à utiliser une adresse mail pour s'authentifier.
Faites Shift + F10 puis sur le CLI, tapez la commande suivante pour bypass cette étape.
oobe\BypassNRO.cmd
Cliquez sur "Continue with limited setup". Vu le nid à espions qu'est devenu Windows depuis la version 10, je conseille de ne pas lié votre instance à un compte Microsoft. Ce n'est que mon avis.
Allez plutôt créer un compte "admin" avec mot de passe et ajoutez les réponses aux questions de sécurité.
Répondez systématiquement "non" aux demandes de Microsoft d'accéder à vos données personnelles (même si ça sert à rien).
3-Post-installation
Lorsque vous arrivez au bureau, allez dans "Device Manager" (gestionnaire de périphériques).
Vous remarquerez qu'il manque deux pilotes :
- Ethernet Controller
- PCI Device
Vous devrez installer 4 pilotes :
- vioserial (périphériques PCI ou PCI Simple Communication Controller),
- NetKVM (carte réseau ou Ethernet Controller),
- Balloon (ballooning),
- Qemu-Guest-Agent (agent de liaison avec l'émulateur Qemu),
Entrez dans le lecteur contenant contenant les pilotes VirtIO et cliquez sur "virtio-win-gt-x64.exe" pour installer l'ensemble des pilotes.
Ensuite, installez l'agent Qemu. Cela permettra à PVE de récupérer de précieuse informations comme l'adresse IP de votre machine virtuelle. Il permet également de recevoir les instructions du serveur comme les commandes "shutdown" et "reboot".
On vois que Qemu-guest-agent envoie bien les information de la machine virtuelle au serveur hôte.
Petit aparté. Dans "Task Manager", si l'option "SSD Emulation" n'est pas activé, le disque est reconnu en tant que HDD (disque dur mécanique) et non pas en tant que SSD à mémoire flash, ce qui fait que les lectures/écritures sont beaucoup plus fréquentes et risque de diminuer la durée de vie du disque physique.
Idem pour le service "Ballooning" qu'on va installer. On est à 1,5 Go de mémoire vive (monté jusqu'à 1,7 Go après la capture d'écran).
En activant l'option "SSD Emulation" et en installant le service "Balloon Service", on constate :
- Que le disque est bien reconnu comme SSD
- La mémoire vive est passé de 1,5/1,17 Go à 1,2 Go
Copiez le dossier "Balloon" dans "C:\Program Files (x86)" et installez le pilote.
Enfin, lancez "cmd" en administrateur, allez à la racine du dossier puis tapez la commande "blnsvr.exe -i".
Allez dans "Service" et vous remarquerez que le service "Balloon Service" est bien activé et ce, à chaque démarrage.
Enfin dans PVE, penser à désactiver l’option « USB Tablet Device » de la machine virtuelle pour réduire la charge processeur (Zwindler en parle dans son article sur pfSense).
5-Créer un template
Si vous avez fini vos optimisations, vous pouvez lancer sysprep qui facilite le clonage du système dans le cas d'un déploiement de masse.
Allez dans "C:\Windows\System32\Sysprep" et cliquez sur "sysprep.exe". Vous cochez "Generalize" et vous choisissez l'option "Shutdown".
Puis dans PVE, vous transformez votre machine virtuelle en template.
Vous pourrez créer deux types de clone :
- Un clone complet
- Un clone lié,
L'avantage du clone lié c'est qu'il est adapté à un usage homelab et vous permettra d'effectuer différents tests, surtout qu'il consomme peu d'espace sur le disque car il va continuer d'écrire à partir du template.
En ce qui concerne le clone complet, comme son nom l'indique, c'est une copie carbone du template d'origine, idéal pour déployer une instance persistante.