Sous WSL2 (Windows 11), la virtualisation imbriquée est prise en charge mais pas activée par défaut. Pour l'activer, vous devez :
Vous ajouter au groupe kvm
Choisir votre architecture et changer le groupe par défaut de /dev/kvm
(peut-être) Activer la virtualisation imbriquée dans %USERPROFILE%\.wslconfig
Redémarrer WSL
1. S'ajouter au groupe kvm :
Celui-ci est simple :
sudo usermod -a -G kvm ${USER}
2. Choisir votre architecture et changer le groupe par défaut de /dev/kvm
C'est aussi simple, mais WSL a un système de fichiers en lecture seule avec une surcouche tmpfs. Vous devez également activer le module spécifique au processeur pour votre architecture. Je suis sur Intel, donc c'est kvm_intel, mais sur AMD c'est kvm_amd.
Pour activer le module spécifique au processeur, changer le groupe par défaut et faire en sorte que tout cela persiste à travers les redémarrages et mises à jour, ajoutez cette section à votre fichier /etc/wsl.conf :
[boot]
command = "modprobe kvm_intel && while [ ! -e /dev/kvm ]; do sleep 0.1; done && chown root:kvm /dev/kvm && chmod 660 /dev/kvm"
Il peut y avoir un léger délai avant que le noyau ne peuple /dev avec kvm, d'où la boucle while.
3. Activer la virtualisation imbriquée
Vous n'avez pas besoin de recompiler votre distribution WSL pour activer la virtualisation imbriquée. La dernière fois que j'ai vérifié, la virtualisation imbriquée est activée par défaut. Vous pouvez confirmer avec la commande suivante :
cat /sys/module/kvm_intel/parameters/nested
Si vous voyez Y (comme dans Yes/Oui), c'est déjà activé, passez à l'étape suivante.
Si vous ne pouvez pas mettre à jour WSL vers la dernière version, ajoutez simplement cette section à votre configuration WSL sous Windows. Lancez notepad %USERPROFILE%\.wslconfig (créez le fichier s'il n'existe pas) et ajoutez :
[wsl2]
nestedVirtualization=true
Quand j'ai écrit ceci la première fois, je devais mettre la directive dans /etc/wsl.conf. Comme @athys l'a mentionné, il semble que cela appartienne désormais au fichier .wslconfig sous Windows.
4. Redémarrer WSL
Vous pouvez soit redémarrer Windows, soit fermer toutes vos fenêtres de terminal WSL et exécuter cette commande dans PowerShell, CMD ou le menu Exécuter de Windows (Windows+R)
wsl.exe --shutdown
La prochaine fois que vous ouvrirez un terminal, WSL démarrera avec les nouvelles options et la virtualisation imbriquée fonctionnera.
Plus de détails sur l'activation de la virtualisation imbriquée ici.