Si se instala Windows 11 ARM mediante UTM en un Mac con Apple Silicon y posteriormente se intenta utilizar WSL2, puede aparecer un error indicando que la virtualización no está habilitada o que la BIOS no permite utilizarla.
En este escenario existe una particularidad importante: Windows ya está funcionando dentro de una máquina virtual.
La arquitectura es:
Mac M1
│
└── UTM / QEMU
│
└── Windows 11 ARM
│
└── WSL2
│
└── Ubuntu
WSL2 necesita utilizar virtualización para ejecutar su máquina virtual Linux. El problema aparece cuando se intenta crear esta segunda capa de virtualización dentro de Windows.
En una configuración como esta, una alternativa sencilla es utilizar WSL1.
1. WSL1 frente a WSL2
La principal diferencia para este escenario es que WSL1 no necesita ejecutar una máquina virtual Linux de la misma forma que WSL2.
Por tanto, podemos utilizar:
Mac M1
│
└── UTM
│
└── Windows 11 ARM
│
└── WSL1
│
└── Ubuntu
Esto evita la necesidad de virtualización anidada.
WSL1 permite utilizar un entorno Linux desde Windows para trabajar con:
- Bash
- comandos Linux
- Python
- Git
- herramientas de desarrollo
- scripts
- utilidades de administración
- numerosas herramientas de ciberseguridad
Para muchos trabajos de desarrollo y formación puede ser suficiente.
2. Configurar WSL1 como versión predeterminada
Abrimos PowerShell como administrador y ejecutamos:
wsl --set-default-version 1
A partir de ese momento, las nuevas distribuciones que instalemos utilizarán WSL1 por defecto.
3. Instalar Ubuntu
Si todavía no tenemos Ubuntu instalado:
wsl --install -d Ubuntu
Windows descargará e instalará la distribución.
Después podremos iniciar Ubuntu mediante:
wsl
o directamente:
ubuntu
4. Si Ubuntu ya estaba instalado
Si ya habíamos instalado Ubuntu y estaba configurado para utilizar WSL2, no es necesario volver a instalarlo.
Podemos convertirlo a WSL1:
wsl --set-version Ubuntu 1
El nombre de la distribución debe coincidir con el que aparece en nuestro sistema.
Para comprobarlo:
wsl -l -v
Por ejemplo:
NAME STATE VERSION
* Ubuntu Stopped 1
La columna importante es:
VERSION
Si aparece:
1
Ubuntu está funcionando mediante WSL1.
5. Comprobar las distribuciones instaladas
También podemos utilizar:
wsl --list --verbose
que proporciona información similar:
NAME STATE VERSION
* Ubuntu Running 1
Si Ubuntu aparece como VERSION 1, ya estamos utilizando WSL1.
6. ¿Qué ocurre con el problema de la BIOS?
En este caso es importante entender que el mensaje puede resultar confuso.
El Mac M1 no tiene una BIOS tradicional que tengamos que abrir para activar la virtualización como ocurriría en un PC convencional.
La situación es más parecida a:
Mac M1
↓
macOS
↓
UTM / QEMU
↓
Windows 11 ARM
↓
WSL2
Windows está funcionando como sistema operativo invitado dentro de UTM y WSL2 intenta crear otra capa de virtualización.
En nuestra configuración, Windows detecta que está funcionando bajo un hipervisor, pero no dispone de las extensiones necesarias para utilizar esa virtualización de nuevo.
Por eso podemos encontrarnos con valores como:
VirtualizationFirmwareEnabled : False
VMMonitorModeExtensions : False
y con el mensaje:
Se detectó un hipervisor.
No se mostrarán las características necesarias para Hyper-V.
No significa necesariamente que UTM esté funcionando mal. El problema está relacionado con la virtualización anidada.
7. ¿Por qué WSL1 soluciona el problema?
La diferencia fundamental para este escenario es:
WSL2
Windows
↓
Virtual Machine Platform
↓
Máquina virtual Linux
↓
Ubuntu
Por tanto, necesita capacidades de virtualización adicionales.
WSL1
Windows
↓
Subsistema Linux
↓
Ubuntu
No necesitamos crear esa segunda máquina virtual Linux.
Por eso WSL1 es una solución especialmente interesante cuando Windows está ejecutándose dentro de otra máquina virtual.
8. Comprobar que Ubuntu funciona
Una vez instalado Ubuntu:
wsl
Deberíamos entrar en la terminal Linux:
user@windows:~$
Podemos comprobar el sistema:
uname -a
y probar algunos comandos habituales:
pwd
ls
whoami
ip addr
También podemos comprobar Python:
python3 --version
o Git:
git --version
9. ¿WSL1 sirve para ciberseguridad?
Para determinadas prácticas, sí.
Por ejemplo, puede utilizarse para trabajar con:
Bash
Python
Git
SSH
curl
wget
grep
awk
sed
netcat
DNS
scripts
automatización
y muchas herramientas de análisis y desarrollo.
Sin embargo, WSL1 no es equivalente a una máquina Linux completa. Algunas herramientas que necesitan características específicas del kernel Linux, determinados módulos, acceso avanzado a red, contenedores o virtualización pueden requerir WSL2 o una máquina virtual Linux independiente.
Para esos casos, una alternativa especialmente sencilla en un Mac M1 es instalar Ubuntu ARM64 directamente en UTM, en lugar de intentar ejecutar Ubuntu mediante WSL2 dentro de Windows.
10. Comandos principales
Si ya tenemos Ubuntu instalado:
wsl --set-version Ubuntu 1
Comprobamos:
wsl -l -v
Y esperamos:
NAME STATE VERSION
* Ubuntu Stopped 1
Para iniciar Ubuntu:
wsl
Para establecer WSL1 como predeterminado para futuras instalaciones:
wsl --set-default-version 1
Conclusión
Cuando Windows 11 ARM está instalado dentro de UTM en un Mac M1, intentar utilizar WSL2 introduce una segunda capa de virtualización que puede no estar disponible en esa configuración.
En lugar de modificar la máquina virtual de UTM o cambiar versiones de QEMU, una solución sencilla es utilizar WSL1:
wsl --set-default-version 1
y, si Ubuntu ya está instalado:
wsl --set-version Ubuntu 1
Después:
wsl -l -v
Si aparece:
Ubuntu Stopped 1
ya tenemos Ubuntu funcionando mediante WSL1 dentro de Windows 11 ARM ejecutándose en UTM sobre un Mac M1.