Hoy vamos a resolver como usar una virtualización anidada dentro de un entorno de Hiper-V en Windows 10, 11, o superior.
La virtualización anidada es una técnica que permite ejecutar máquinas virtuales (VM) dentro de otra VM. Es decir, un VM inception. Una muñeca matrusca de VM.
¿Y para qué queremos hacer esto? ¿para ser unos flipaos de la vida que se molan a si mismo? Bueno sí, también, … pero no solo para eso.
En realidad es más fácil de lo que te piensas llegar a esta situación: por ejemplo, si estás usando una máquina virtual para desarrollo, o una máquina virtual para hacer pruebas con máquinas virtuales.
Pero es más, es posible que lo necesitéis simplemente con usar Windows Subsystem for Linux (WSL) o Windows Subsystem for Android (WSA) en una máquina virtual.
Porque WSL y WSA son herramientas geniales que internamente usan virtualización para funcionar. Así que si usáis una máquina virtual para desarrollo… ¡oh, oh! Os va a dar problemita.
Afortunadamente es muy fácil activar la virtualización nested. En primer lugar abrimos una consola de comandos, y obtenemos un listado de nuestras máquinas virtuales con este comando,
Get-VM
Nos aseguramos de que la máquina en la que queremos activar la virtualización anidada esté parada. Si no, la paramos con este comando.
Stop-VM -Name 'your-vm-name'
Donde evidentemente tendrás que cambiar ‘your-vm-name’ por el nombre de la máquina con la que quieres trabajar.
La configuración de la VM debe ser de la versión 8.0 o superior. En cualquier caso, y por si acaso, actualizamos la máquina virtual con este comando,
Update-VMVersion -Name 'your-vm-name'
Finalmente, ahora sí, activamos la virtualización anidada en la máquina virtual con este comando.
Set-VMProcessor -VMName 'your-vm-name' -ExposeVirtualizationExtensions $True
Volvemos a iniciar nuestra VM. Ya podremos acceder a ella y proceder a instalar el rol o característica de Hyper-V y cualquier otra dependiente de él. Con la virtualización anidada habilitada, podremos ejecutar máquinas virtuales dentro de la VM anfitriona y probar diferentes entornos de virtualización.
Esta opción es muy útil para probar diferentes entornos de virtualización y hacer pruebas de integración con diferentes sistemas operativos. Y como hemos visto, es cuestión de un par de comandos activarla.