Saltar al contenido principal
Logo FPCode

WSL

Contenido

Tutorial de Windows Subsystem for Linux (WSL): instalación, uso básico, integración entre Windows y Linux, redes, herramientas de desarrollo y administración de distribuciones.

Introducción

Windows Subsystem for Linux, conocido como WSL, permite ejecutar distribuciones GNU/Linux dentro de Windows sin configurar un arranque dual ni mantener una máquina virtual completa de forma manual.

Con WSL puedes abrir una terminal Linux desde Windows, instalar herramientas con apt, usar Bash, ejecutar servidores locales, trabajar con Git o preparar entornos de desarrollo parecidos a los que se usan en servidores reales.

El objetivo de este tutorial es que entiendas qué es WSL, cómo instalarlo, cómo trabajar con sus distribuciones y qué precauciones debes tener al mezclar archivos, permisos, redes y herramientas de Windows y Linux.

Conocimiento previo

  • Uso básico de Windows: terminal, explorador de archivos, permisos de administrador y configuración del sistema.
  • Conceptos básicos de Linux: rutas, terminal, usuario, permisos y gestor de paquetes.
  • Comandos básicos como cd, ls, pwd, mkdir, sudo y exit.

Referencias

Índice

  1. Qué es WSL
  2. Instalación y configuración inicial
  3. Uso básico de WSL
  4. Integración entre Windows y Linux
  5. Redes y servicios
  6. Herramientas de desarrollo
  7. Administración avanzada
  8. Casos prácticos
  9. Errores frecuentes
  10. Ejercicios

1. Qué es WSL

WSL es una característica de Windows que permite ejecutar herramientas de Linux directamente sobre el sistema Windows. No sustituye a Windows ni convierte el equipo en un Linux completo, pero ofrece un entorno Linux realista y muy útil para desarrollo, administración de sistemas y aprendizaje.

Con WSL puedes:

  • Instalar distribuciones como Ubuntu, Debian, Fedora u openSUSE.
  • Ejecutar comandos y scripts de Linux.
  • Usar gestores de paquetes como apt, dnf o zypper.
  • Ejecutar servicios locales, como servidores web o bases de datos.
  • Trabajar con herramientas de desarrollo como Git, Python, Node.js, Java, Docker o VS Code.

1.1. WSL 1 y WSL 2

Existen dos generaciones principales de WSL. La recomendada para la mayoría de casos actuales es WSL 2.

WSL 1

Usa una capa de compatibilidad que traduce llamadas de Linux a Windows. Tiene buena integración con archivos de Windows, pero menor compatibilidad con algunas herramientas de Linux.

WSL 2

Usa un kernel real de Linux dentro de una máquina virtual ligera gestionada por Windows. Ofrece mejor compatibilidad, mejor rendimiento en el sistema de archivos Linux y soporte adecuado para Docker.

En un equipo moderno, lo normal es usar WSL 2 salvo que exista una necesidad concreta de WSL 1.

1.2. Ventajas frente a una máquina virtual

WSL no reemplaza a una máquina virtual en todos los escenarios, pero resulta más cómodo para muchas tareas educativas y de desarrollo:

  • Arranca rápidamente.
  • Consume menos recursos que una máquina virtual completa.
  • Permite trabajar con Windows y Linux en paralelo.
  • Integra terminales, archivos, redes y herramientas de desarrollo.
  • Evita reiniciar el equipo para cambiar de sistema operativo.

Si necesitas simular una infraestructura completa, probar un escritorio Linux o aislar mucho el entorno, una máquina virtual tradicional puede seguir siendo mejor. Para aprender comandos, programar y levantar servicios locales, WSL suele ser suficiente.

2. Instalación y configuración inicial

Antes de instalar WSL necesitas Windows 10 versión 2004 o superior, o Windows 11. También debes tener permisos de administrador para activar características del sistema.

2.1. Instalación recomendada

El método actual más sencillo es usar wsl --install desde PowerShell o Terminal de Windows con permisos de administrador.

  1. Abre Terminal de Windows o PowerShell como administrador.
  2. Ejecuta el comando de instalación.
  3. Reinicia el equipo si Windows lo solicita.
  4. Abre la distribución instalada y crea el usuario Linux inicial.
Terminal window
wsl --install

Este comando instala WSL, configura los componentes necesarios y normalmente instala Ubuntu como distribución predeterminada.

Instalación inicial de una distribución en WSL

2.2. Instalar una distribución concreta

Para ver las distribuciones disponibles:

Terminal window
wsl --list --online

Para instalar una distribución concreta:

Terminal window
wsl --install -d Debian

También puedes instalar distribuciones desde Microsoft Store.

Distribuciones Linux disponibles desde Microsoft Store

2.3. Comprobar el estado de WSL

Para comprobar qué distribuciones están instaladas y qué versión de WSL usa cada una:

Terminal window
wsl --list --verbose

Para ver información general de WSL:

Terminal window
wsl --status

Si quieres que las nuevas distribuciones usen WSL 2 por defecto:

Terminal window
wsl --set-default-version 2

2.4. Usuario inicial

La primera vez que abras una distribución, Linux pedirá crear un usuario y una contraseña. Ese usuario será independiente del usuario de Windows.

Configuración inicial del usuario de Linux en WSL

Puedes iniciar una sesión con otro usuario usando:

Terminal window
wsl -u root

Este comando no cambia el usuario predeterminado; solo inicia esa sesión con el usuario indicado. Para cambiar el usuario predeterminado de una distribución se puede usar el lanzador de la distribución, si lo ofrece, o configurar /etc/wsl.conf con la sección [user].

3. Uso básico de WSL

3.1. Abrir una distribución

Puedes abrir WSL desde el menú de inicio buscando el nombre de la distribución, por ejemplo Ubuntu.

Acceso a una distribución WSL desde el menú de inicio

También puedes abrir la distribución predeterminada desde PowerShell o CMD:

Terminal window
wsl

Para abrir una distribución concreta:

Terminal window
wsl -d Ubuntu

Para ejecutar un comando Linux sin entrar en una sesión interactiva:

Terminal window
wsl ls -la /home

3.2. Salir y detener distribuciones

Para salir de una terminal Linux:

Terminal window
exit

Cerrar la terminal no siempre detiene por completo la distribución. Para detener una distribución concreta:

Terminal window
wsl --terminate Ubuntu

Para detener todas las distribuciones y servicios de WSL:

Terminal window
wsl --shutdown

Este comando es útil después de modificar archivos de configuración como .wslconfig o /etc/wsl.conf.

3.3. Comandos principales de administración

ComandoUso
wsl --helpMuestra la ayuda de WSL.
wsl --statusMuestra el estado general de WSL.
wsl --list --verboseLista distribuciones, estado y versión.
wsl --list --onlineLista distribuciones disponibles para instalar.
wsl --install -d DebianInstala una distribución concreta.
wsl --set-default DebianCambia la distribución predeterminada.
wsl --set-version Ubuntu 2Convierte una distribución a WSL 2.
wsl --terminate UbuntuDetiene una distribución.
wsl --shutdownDetiene todas las distribuciones.
wsl --unregister UbuntuElimina una distribución y sus datos.

4. Integración entre Windows y Linux

WSL permite trabajar con Windows y Linux en el mismo equipo, pero conviene entender bien qué se comparte y qué no.

4.1. Usuarios y permisos

Los usuarios de Windows y los usuarios de Linux son distintos. Tener permisos de administrador en Windows no significa ser root dentro de Linux, y usar sudo en Linux no concede permisos de administrador sobre Windows.

Para ejecutar tareas administrativas dentro de la distribución Linux se usa sudo:

Terminal window
sudo apt update
sudo apt upgrade -y

Si olvidas la contraseña de un usuario Linux, puedes iniciar como root y cambiarla:

Terminal window
wsl -u root
Terminal window
passwd nombre_usuario

4.2. Archivos de Windows desde Linux

WSL monta las unidades de Windows dentro de /mnt.

Unidad de WindowsRuta en WSL
C:\/mnt/c/
D:\/mnt/d/

Ejemplo:

Terminal window
ls /mnt/c/Users/Usuario/Documents
Acceso a archivos de Windows desde Linux en WSL

Para proyectos de programación, suele ser mejor trabajar dentro del sistema de archivos Linux, por ejemplo en /home/usuario/proyecto, porque el rendimiento y los permisos son más consistentes en WSL 2.

4.3. Archivos de Linux desde Windows

Desde Windows puedes acceder a los archivos de Linux con el explorador usando:

\\wsl$\Ubuntu\home\usuario

En versiones recientes también puede aparecer como:

\\wsl.localhost\Ubuntu\home\usuario
Acceso a distribuciones WSL desde el explorador de Windows
Acceso a archivos Linux desde Windows

4.4. Ejecutar aplicaciones entre sistemas

Desde Linux puedes abrir aplicaciones de Windows si llamas a su ejecutable:

Terminal window
explorer.exe .
notepad.exe archivo.txt

También puedes copiar texto al portapapeles de Windows:

Terminal window
echo "Texto de prueba" | clip.exe

4.5. Permisos en archivos

Los permisos dependen de dónde estén los archivos.

Archivos dentro de Linux

Los archivos ubicados en rutas como /home, /etc o /usr usan permisos propios de Linux. Puedes gestionarlos con comandos habituales:

Terminal window
chmod 644 archivo.txt
chown usuario:grupo archivo.txt
Archivos de Windows montados en /mnt

Los archivos de /mnt/c/ o /mnt/d/ dependen del sistema de permisos de Windows. WSL puede representar permisos Linux sobre archivos de Windows, pero no debes asumir que funcionarán igual que en el sistema de archivos interno de la distribución.

Si necesitas conservar permisos Linux de forma fiable, trabaja dentro de /home.

Metadatos en unidades Windows

WSL permite habilitar metadatos para guardar información de permisos Linux en unidades Windows montadas. Se configura en /etc/wsl.conf:

[automount]
options = "metadata,umask=022,fmask=011,dmask=000"

Opciones habituales:

OpciónSignificado
metadataGuarda metadatos Linux en archivos de Windows.
umaskDefine permisos por defecto para nuevos archivos y directorios.
fmaskAjusta permisos aplicados a archivos.
dmaskAjusta permisos aplicados a directorios.

Después de cambiar wsl.conf, reinicia WSL:

Terminal window
wsl --shutdown

5. Redes y servicios

WSL permite ejecutar servicios de red, como servidores web, APIs o bases de datos, y acceder a ellos desde Windows.

5.1. Red en WSL 1 y WSL 2

En WSL 1 la distribución comparte más directamente la pila de red de Windows. En WSL 2, la distribución se ejecuta dentro de una máquina virtual ligera y normalmente usa una red virtualizada.

En muchos casos, si levantas un servicio en WSL 2, podrás abrirlo desde Windows usando localhost:

Terminal window
python3 -m http.server 8000

Y en Windows:

http://localhost:8000

Para consultar la IP dentro de Linux:

Terminal window
ip addr

Para consultar la red desde Windows:

Terminal window
ipconfig

En versiones recientes de WSL existen mejoras como el modo de red mirrored, configurable en .wslconfig, que facilita algunos escenarios de conectividad. Aun así, en entornos educativos conviene comprobar siempre el comportamiento real del equipo y de la red.

5.2. Exponer servicios a otros equipos

Acceder desde Windows al servicio de WSL no es lo mismo que exponerlo a otros equipos de la red local.

Si otros equipos deben acceder al servicio, puede ser necesario:

  • Configurar el firewall de Windows.
  • Redirigir puertos con netsh.
  • Revisar si WSL usa NAT o modo de red reflejada.
  • Comprobar las políticas de la red del centro o empresa.

Ejemplo de redirección de puerto desde PowerShell como administrador:

Terminal window
netsh interface portproxy add v4tov4 listenport=8080 listenaddress=0.0.0.0 connectport=8080 connectaddress=<IP-WSL>

Ejemplo de regla de firewall:

Terminal window
New-NetFirewallRule -DisplayName "WSL 8080" -Direction Inbound -LocalPort 8080 -Protocol TCP -Action Allow

6. Herramientas de desarrollo

WSL resulta especialmente útil para instalar herramientas de desarrollo que suelen estar pensadas para Linux.

6.1. Gestores de paquetes

Cada distribución usa su propio gestor de paquetes.

DistribuciónGestor habitual
Ubuntu / Debianapt
Fedoradnf
openSUSEzypper

En Ubuntu o Debian, antes de instalar paquetes conviene actualizar los repositorios:

Terminal window
sudo apt update
sudo apt upgrade -y

6.2. Lenguajes y utilidades

Ejemplos de instalación en Ubuntu:

Terminal window
sudo apt install git curl build-essential
sudo apt install python3 python3-pip
sudo apt install nodejs npm
sudo apt install openjdk-17-jdk

También puedes instalar editores de terminal como nano o vim, herramientas de compilación como make o cmake, y clientes para bases de datos.

6.3. Docker y contenedores

WSL 2 es la base recomendada para usar Docker Desktop en Windows con contenedores Linux.

Flujo habitual:

  1. Instalar Docker Desktop en Windows.
  2. Activar la integración con WSL 2.
  3. Seleccionar las distribuciones que podrán usar Docker.
  4. Ejecutar Docker desde la terminal de WSL.
Terminal window
docker run hello-world

6.4. Integración con Visual Studio Code

Visual Studio Code puede abrir carpetas dentro de WSL con la extensión WSL.

Desde una terminal WSL, entra en tu proyecto y ejecuta:

Terminal window
code .

VS Code se abrirá en Windows, pero trabajando contra el entorno Linux. Esto permite usar terminales, intérpretes, dependencias y extensiones dentro de WSL.

7. Administración avanzada

7.1. Exportar e importar distribuciones

Exportar una distribución crea una copia en un archivo .tar:

Terminal window
wsl --export Ubuntu C:\copias\ubuntu.tar

Importar una distribución desde esa copia:

Terminal window
wsl --import UbuntuCopia C:\WSL\UbuntuCopia C:\copias\ubuntu.tar
Exportar e importar una distribución de WSL

Este procedimiento es útil para copias de seguridad, migraciones o laboratorios donde se quiere repartir una distribución ya preparada.

7.2. Configuración con .wslconfig

El archivo .wslconfig se coloca en la carpeta del usuario de Windows:

C:\Users\Usuario\.wslconfig

Sirve para configurar opciones globales de WSL 2.

[wsl2]
memory=4GB
processors=2
swap=2GB
localhostForwarding=true

Opciones frecuentes:

OpciónUso
memoryLimita la memoria máxima disponible para WSL 2.
processorsLimita el número de procesadores.
swapDefine el tamaño de intercambio.
localhostForwardingPermite acceder desde Windows a servicios publicados en WSL mediante localhost.
networkingModePermite configurar modos de red, como mirrored en versiones compatibles.

Después de modificar .wslconfig, ejecuta:

Terminal window
wsl --shutdown

7.3. Configuración con /etc/wsl.conf

El archivo /etc/wsl.conf se configura dentro de cada distribución y afecta solo a esa distribución.

Ejemplo:

[boot]
systemd=true
[automount]
enabled=true
root=/mnt/
options="metadata,umask=022"
[network]
hostname=mi-wsl
generateResolvConf=true
[user]
default=usuario

Secciones habituales:

SecciónUso
[boot]Configuración de arranque, como systemd=true.
[automount]Montaje automático de unidades Windows.
[network]Nombre de host y generación de archivos de red.
[interop]Ejecución de programas Windows desde Linux y uso del PATH de Windows.
[user]Usuario Linux predeterminado.

Tras modificarlo, reinicia WSL con wsl --shutdown.

7.4. Variables de entorno con WSLENV

WSLENV permite compartir variables de entorno entre Windows y WSL indicando cómo deben traducirse.

Indicadores principales:

IndicadorSignificado
/pTraduce rutas entre formato Windows y Linux.
/lIndica que el valor es una lista de rutas.
/uPasa la variable de Windows a WSL.
/wPasa la variable de WSL a Windows.

Ejemplo en PowerShell para compartir una variable de Windows hacia WSL:

Terminal window
$env:MI_RUTA = "C:\Users\Usuario\proyecto"
$env:WSLENV = "MI_RUTA/p/u"
wsl echo '$MI_RUTA'
Uso de variables de entorno compartidas de Windows a Linux

Ejemplo desde Linux hacia procesos de Windows:

Terminal window
export MI_VARIABLE="valor"
export WSLENV="MI_VARIABLE/w"
cmd.exe /C echo %MI_VARIABLE%
Uso de variables de entorno compartidas de Linux a Windows

8. Casos prácticos

8.1. Entorno de desarrollo web

En Ubuntu puedes instalar un entorno básico con Apache, MySQL y PHP:

Terminal window
sudo apt update
sudo apt install apache2 mysql-server php libapache2-mod-php php-mysql
sudo service apache2 start
sudo service mysql start

Después puedes abrir http://localhost desde Windows.

8.2. Proyecto con Git

Configura Git dentro de WSL:

Terminal window
git config --global user.name "Nombre Apellidos"
git config --global user.email "correo@example.com"

Crea un proyecto:

Terminal window
mkdir proyecto-wsl
cd proyecto-wsl
git init

8.3. Servidor local con Python

Puedes levantar un servidor web sencillo:

Terminal window
python3 -m http.server 8000

Desde Windows, abre:

http://localhost:8000

9. Errores frecuentes

ProblemaCausa habitualSolución
wsl no se reconoceWSL no está instalado o la terminal no se reinicióinstalar WSL y abrir una terminal nueva
No se puede usar WSL 2virtualización desactivada o Windows no actualizadoactivar virtualización en BIOS/UEFI y actualizar Windows
Un servicio no abre desde Windowspuerto incorrecto, servicio detenido o firewallcomprobar servicio, puerto y reglas de firewall
El proyecto va lentoarchivos en /mnt/c/ con muchas operacionesmover el proyecto a /home/usuario
sudo pide contraseñaes la contraseña del usuario Linuxintroducir la contraseña creada en la distribución
Se borró una distro por erroruso de wsl --unregisterrestaurar desde una exportación si existe

10. Ejercicios

Ejercicio 1: Comandos básicos en WSL

Abre tu distribución Linux en WSL. Crea una carpeta llamada proyecto, entra en ella, muestra la ruta actual con pwd y lista su contenido con ls -la.

Ejercicio 2: Instalación de paquetes

Actualiza los repositorios e instala curl. Después comprueba la versión instalada con curl --version.

Ejercicio 3: Gestión de archivos

Crea un archivo notas.txt, añade varias líneas de texto, crea una carpeta backup y copia el archivo dentro de ella.

Ejercicio 4: Git en WSL

Configura tu nombre y correo de Git, inicializa un repositorio en proyecto, añade notas.txt y realiza un commit con el mensaje Primer commit.

Ejercicio 5: Servidor web local

Ejecuta python3 -m http.server 8000 dentro de una carpeta de pruebas y accede desde Windows a http://localhost:8000.

WSL es una herramienta muy práctica para aprender Linux y preparar entornos de desarrollo en equipos Windows. La clave es recordar que combina dos mundos: usa Linux para comandos, paquetes y servicios, pero revisa siempre cómo interactúa con archivos, permisos, red y aplicaciones de Windows.