Virtualiser Windows 11 sur Proxmox VE
Guide d'installation de Windows 11 sur Proxmox VE avec les meilleurs réglage.
Au sommaire :
- Création de la machine virtuelle
- Installation
- Post-installation
- Optimisations
- Créer un template
- Installer SPICE (optionnel)
- Activer le PCI Passthrough (optionnel)
1-Création de la machine virtuelle
Téléchargez l'ISO de Windows 1 à 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" ("archive" est mon disque dur de 8 To où je stocke mes images et sauvegardes).
Par défaut, "Guest OS" est paramétré sur Microsoft Windows et 11/2022.
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, Proxmox VE 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 Proxmox VE).
Validez la configuration en cliquant sur "Finish".
Ensuite, 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".
Il vous faudra également ajouter un lecteur CD pour pouvoir monter les pilotes VirtIO. Allez dans Hardware\Add\CD/DVD Drive
Et sélectionnez le lieu de stockage (local par défaut) et votre image de VirtIO.
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.
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),
Commencez par installer le pilote vioserial (périphériques PCI).
Ensuite, installez l'agent Qemu. Cela permettra à Proxmox VE 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 dans quelques instants. 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,
Reprenons où nous en étions. Copiez le dossier "Balloon" dans "C:\Program Files" et installez le pilote.
Enfin, exécutez "cmd" en administrateur et installez le service "blnsvr.exe -i" comme indiqué sur la photo ci-dessous.
Allez dans "Service" et vous remarquerez que le service "Balloon Service" est bien activé et ce, à chaque démarrage.
Enfin, installez NetKVM comme indiqué sur la capture d'écran ci-dessous pour activer la carte réseau. Vous pouvez aussi passez par "Device Manager".
Pour ceux qui ont une carte réseau en 10 Gbits/s, vous allez vous régaler. C'est pris en charge par VirtIO.
4-Optimisations
La configuration de base est suffisante mais si vous souhaitez allez plus loin, voici quelques optimisations supplémentaires.
Désactiver le mode Tablet
Dans Proxmox VE, 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) :
Source de l'astuce :
Installez OpenSSH Server
Depuis Windows 10, il est désormais possible de se connecter au système via le protocole SSH comme sur Linux (plus besoin du logiciel Putty) avec l’intégration native de OpenSSH.
L'avantage c'est qu'avec Filezilla ou n'importe quel navigateur de fichiers sous Linux, vous pouvez utiliser le protocole SFTP (File Transfert Protocol over SSH).
Que ce soit en local, à travers un VPN ou sur l'internet publique (faut être fêlé pour ouvrir le port 22 de sa box), vous pouvez transférer des fichiers en utilisant le cryptage du protocole SSH (le FTP ne dispose d'aucun cryptage).
Pour installer OpenSSH Server, allez dans la barre de recherche et cliquez sur "Settings".
Cliquez sur Apps\Optional features\View features et cochez la case pour installer OpenSSH Server.
Enfin, pour activer le service au démarrage, allez dans « services ».
Localisez le service "OpenSSH SSH Server".
Et dans "Startup type", basculez du mode "Manuel" à "Automatic" puis cliquez sur "Start" pour démarrer le service à chaque démarrage.
Lancez "cmd" dans la barre de recherche WIndows et tapez "ipconfig /all" pour connaitre votre adresse IP (IPv4 Address).
Sur le client Filezilla de votre poste client, tapez :
- Hôte : sftp://ip-address (sftp://192.168.0.83 dans l'exemple),
- Identifiant : admin (compte utilisateur),
- Mot de passe : celui du compte "admin",
Cochez "Toujours faire confiance à cet hôte, ajouter cette clé au cache" vu que c'est la première fois que vous vous connecté dessus en SFTP.
Et admirez le résultat!!!! À vous les transferts de fichiers cryptés via le protocole SFTP.
Winget
Winget (pour Windows Package Manager) est ni plus, ni moins qu'une copie du système de dépôt existant depuis des lustres sur Linux.
Winget inclus un peu plus de 1400 paquets au moment de la sortie de la version 1.0 (2021).
Téléchargez le lien suivant : https://github.com/microsoft/winget-cli/releases/download/v1.2.10271/Microsoft.DesktopAppInstaller_8wekyb3d8bbwe.msixbundle
Ensuite, cliquez et installez le à l'aide du Windows Store.
Cliquez sur "Get".
Winget est désormais disponible en utilisant la commande éponyme à travers Powershell.
Si je cherche VLC par exemple, je peut le télécharger en version standard (.exe) ou au format UWP (Universal Windows Platform).
Et pour en savoir plus, un excellent tutoriel du site "Le Crabe Info".
Chocolatey
Si vous voulez aller plus loin, Chocolatey dispose d'un dépôt d'applications largement plus conséquent que Winget.
Pour l'installer, ouvrez Powershell en administrateur et lancez la commande suivante.
Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://community.chocolatey.org/install.ps1'))
Si je cherche VLC par exemple, je peut le télécharger en version standard (.exe) ou carrément en portable.
RDP (Remote Desktop Protocol)
- Allez dans Settings\System\Remote Desktop et cliquez sur "Off" pour le mettre sur "On",
- Cliquez sur "Confirm",
Le RDP est désormais activé.
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 Proxmox VE, 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.