Hace años sería impensable que Microsoft Windows desarrollara un sistema Linux integrado (Windows Subsystem Linux) dentro de sus sistemas operativos… La primera versión WSL1 era propietaria pero WSL2 (mayo 2019) es de código abierto, además supone un cambio de arquitectura ejecutando mediante virtualización un kernel de Linux en una máquina virtual ligera.
Con la nueva versión, las distribuciones de Linux se ejecutan como contenedores aislados dentro de la máquina virtual administrada de WSL2 aunque se mantienen ambas posibilidades de instalación según requisitos:
WSL1 | WSL2 | |
Se ejecuta con versiones de VMWare 15.5.X y VirtualBox 6+ | Sí | ¿? |
VM administradas | No | Sí |
Kernel de Linux completo | No | Sí |
Compatibilidad completa con las llamadas del sistema | No | Sí |
Rendimiento entre sistemas de archivos del sistema operativo | Sí | No |
Compatibilidad con systemd | No | Sí |
Compatibilidad con IPv6 | No | Sí |
Conociendo las opciones vamos a instalar Kali Linux sobre Windows 11 con WSL2, lo que creará un disco duro virtual con formato ext4 y se comunicará mediante el protocolo de red 9P (Plan 9 Filesystem Protocol o Styx)
Nos aseguremos de tener el último Kernel WSL2 para procesadores x64, lo descargamos e instalamos como requisito previo. Lo que realmente instala es una versión reducida y muy rápida de máquina virtual, sin tener que instalar Hyper-V completamente, permitiendo ejecutar binarios ELF64 en Windows.
Desde el terminal instalamos las características necesarias (necesitaremos un procesador con virtualización activada en la BIOS):
Opción 1:
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all
Opción 2:
Indicaremos que vamos a usar WSL2 por defecto, ejecutamos la instalación de Kali desde línea de comandos, aunque se pueden iniciar desde la Tienda de Microsoft:
wsl --set-default-version 2
wsl --list --online
wsl --install --distribution kali-linux
Si todo es correcto, lo primero que haremos es actualizar la versión e instalar la versión habitual más completa, por defecto es la mínima:
sudo apt update
sudo apt full-upgrade -y
#sudo apt install kali-linux-everything -y
sudo apt install kali-linux-large -y
Si queremos acceder al entorno gráfico, todavía no está integrado oficialmente por Microsoft pero existe el proyecto Win-Kex:
sudo apt install kali-win-kex -y
Podemos acceder de 3 modos diferentes al escritorio completo, iniciando desde el propio terminal o desde el terminal de Linux, además de integrar en el menú de inicio de Windows las aplicaciones…
Window | Enhanced Session | Seamless | |
cmd / PS | kex –win -s | kex –esm –ip -s | kex –sl -s |
bash | wsl -d kali-linux kex –win -s | wsl -d kali-linux kex –esm –ip -s | wsl -d kali-linux kex –sl -s |
Pulsar F8 para desconectar de la sesión VNC | Mediante RDP | Desde el propio menú de inicio |
La integración completa permite utilizar desde el propio terminal WSL la instrucción:
# no olvidar el punto "." para indicar el directorio
explorer.exe .
Lo que nos abrirá el explorador de Windows en el directorio actual del shell de Linux, abriendo una ruta de red hacia \\wsl.localhost (también accesible desde \\wsl$\
Comandos interesantes para iniciarse en WSL:
# Instancias y versiones de WLS en activo
wsl -l -v
# Versiones de kernels disponibles
wsl -l -q
# Forzar apagado de WSL
wsl --shutdown
# Localización del disco duro EXT4 de WSL
%LOCALAPPDATA%\Packages\KaliLinux.XXXXXXX\LocalState\ext4.vhdx
# Montar unidad externa E: con formato de Windows
sudo mkdir /mnt/e
sudo mount -t drvfs e: /mnt/e
Solución de errores habituales:
· Error 0x80004005 al iniciar la aplicación desde Windows
wslregisterdistribution failed with error 0x80004005
Debemos asegurarnos que el servicio LxssManager encargado de interactuar con el subsistema se inicia de forma automática
reg add HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LxssManager /t REG_DWORD /v start /d 2 /f
· Al intentar actualizar la distribución no es capaz de descargar:
Editamos los orígenes para cambiar http por https:
sudo apt edit-sources
Nos aseguramos que el servidor DNS es correcto, editamos el archivo y añadimos
sudo nano /etc/resolv.conf