WSL
Contenido
- Introducción
- Conocimiento previo
- Referencias
- Índice
- 1. Qué es WSL
- 1.1. WSL 1 y WSL 2
- 1.2. Ventajas frente a una máquina virtual
- 2. Instalación y configuración inicial
- 2.1. Instalación recomendada
- 2.2. Instalar una distribución concreta
- 2.3. Comprobar el estado de WSL
- 2.4. Usuario inicial
- 3. Uso básico de WSL
- 3.1. Abrir una distribución
- 3.2. Salir y detener distribuciones
- 3.3. Comandos principales de administración
- 4. Integración entre Windows y Linux
- 4.1. Usuarios y permisos
- 4.2. Archivos de Windows desde Linux
- 4.3. Archivos de Linux desde Windows
- 4.4. Ejecutar aplicaciones entre sistemas
- 4.5. Permisos en archivos
- 5. Redes y servicios
- 5.1. Red en WSL 1 y WSL 2
- 5.2. Exponer servicios a otros equipos
- 6. Herramientas de desarrollo
- 6.1. Gestores de paquetes
- 6.2. Lenguajes y utilidades
- 6.3. Docker y contenedores
- 6.4. Integración con Visual Studio Code
- 7. Administración avanzada
- 7.1. Exportar e importar distribuciones
- 7.2. Configuración con .wslconfig
- 7.3. Configuración con /etc/wsl.conf
- 7.4. Variables de entorno con WSLENV
- 8. Casos prácticos
- 8.1. Entorno de desarrollo web
- 8.2. Proyecto con Git
- 8.3. Servidor local con Python
- 9. Errores frecuentes
- 10. Ejercicios
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,sudoyexit.
Referencias
- Microsoft Learn - Windows Subsystem for Linux
- Microsoft Learn - Basic commands for WSL
- Microsoft Learn - WSL configuration
- Wikipedia - Windows Subsystem for Linux
Índice
- Qué es WSL
- Instalación y configuración inicial
- Uso básico de WSL
- Integración entre Windows y Linux
- Redes y servicios
- Herramientas de desarrollo
- Administración avanzada
- Casos prácticos
- Errores frecuentes
- 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,dnfozypper. - 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.
- Abre Terminal de Windows o PowerShell como administrador.
- Ejecuta el comando de instalación.
- Reinicia el equipo si Windows lo solicita.
- Abre la distribución instalada y crea el usuario Linux inicial.
wsl --installEste comando instala WSL, configura los componentes necesarios y normalmente instala Ubuntu como distribución predeterminada.
2.2. Instalar una distribución concreta
Para ver las distribuciones disponibles:
wsl --list --onlinePara instalar una distribución concreta:
wsl --install -d DebianTambién puedes instalar distribuciones 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:
wsl --list --verbosePara ver información general de WSL:
wsl --statusSi quieres que las nuevas distribuciones usen WSL 2 por defecto:
wsl --set-default-version 22.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.
Puedes iniciar una sesión con otro usuario usando:
wsl -u rootEste 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.
También puedes abrir la distribución predeterminada desde PowerShell o CMD:
wslPara abrir una distribución concreta:
wsl -d UbuntuPara ejecutar un comando Linux sin entrar en una sesión interactiva:
wsl ls -la /home3.2. Salir y detener distribuciones
Para salir de una terminal Linux:
exitCerrar la terminal no siempre detiene por completo la distribución. Para detener una distribución concreta:
wsl --terminate UbuntuPara detener todas las distribuciones y servicios de WSL:
wsl --shutdownEste comando es útil después de modificar archivos de configuración como .wslconfig o /etc/wsl.conf.
3.3. Comandos principales de administración
| Comando | Uso |
|---|---|
wsl --help | Muestra la ayuda de WSL. |
wsl --status | Muestra el estado general de WSL. |
wsl --list --verbose | Lista distribuciones, estado y versión. |
wsl --list --online | Lista distribuciones disponibles para instalar. |
wsl --install -d Debian | Instala una distribución concreta. |
wsl --set-default Debian | Cambia la distribución predeterminada. |
wsl --set-version Ubuntu 2 | Convierte una distribución a WSL 2. |
wsl --terminate Ubuntu | Detiene una distribución. |
wsl --shutdown | Detiene todas las distribuciones. |
wsl --unregister Ubuntu | Elimina 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:
sudo apt updatesudo apt upgrade -ySi olvidas la contraseña de un usuario Linux, puedes iniciar como root y cambiarla:
wsl -u rootpasswd nombre_usuario4.2. Archivos de Windows desde Linux
WSL monta las unidades de Windows dentro de /mnt.
| Unidad de Windows | Ruta en WSL |
|---|---|
C:\ | /mnt/c/ |
D:\ | /mnt/d/ |
Ejemplo:
ls /mnt/c/Users/Usuario/Documents
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\usuarioEn versiones recientes también puede aparecer como:
\\wsl.localhost\Ubuntu\home\usuario
4.4. Ejecutar aplicaciones entre sistemas
Desde Linux puedes abrir aplicaciones de Windows si llamas a su ejecutable:
explorer.exe .notepad.exe archivo.txtTambién puedes copiar texto al portapapeles de Windows:
echo "Texto de prueba" | clip.exe4.5. Permisos en archivos
Los permisos dependen de dónde estén los archivos.
Los archivos ubicados en rutas como /home, /etc o /usr usan permisos propios de Linux. Puedes gestionarlos con comandos habituales:
chmod 644 archivo.txtchown usuario:grupo archivo.txtLos 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.
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ón | Significado |
|---|---|
metadata | Guarda metadatos Linux en archivos de Windows. |
umask | Define permisos por defecto para nuevos archivos y directorios. |
fmask | Ajusta permisos aplicados a archivos. |
dmask | Ajusta permisos aplicados a directorios. |
Después de cambiar wsl.conf, reinicia WSL:
wsl --shutdown5. 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:
python3 -m http.server 8000Y en Windows:
http://localhost:8000Para consultar la IP dentro de Linux:
ip addrPara consultar la red desde Windows:
ipconfigEn 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:
netsh interface portproxy add v4tov4 listenport=8080 listenaddress=0.0.0.0 connectport=8080 connectaddress=<IP-WSL>Ejemplo de regla de firewall:
New-NetFirewallRule -DisplayName "WSL 8080" -Direction Inbound -LocalPort 8080 -Protocol TCP -Action Allow6. 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ón | Gestor habitual |
|---|---|
| Ubuntu / Debian | apt |
| Fedora | dnf |
| openSUSE | zypper |
En Ubuntu o Debian, antes de instalar paquetes conviene actualizar los repositorios:
sudo apt updatesudo apt upgrade -y6.2. Lenguajes y utilidades
Ejemplos de instalación en Ubuntu:
sudo apt install git curl build-essentialsudo apt install python3 python3-pipsudo apt install nodejs npmsudo apt install openjdk-17-jdkTambié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:
- Instalar Docker Desktop en Windows.
- Activar la integración con WSL 2.
- Seleccionar las distribuciones que podrán usar Docker.
- Ejecutar Docker desde la terminal de WSL.
docker run hello-world6.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:
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:
wsl --export Ubuntu C:\copias\ubuntu.tarImportar una distribución desde esa copia:
wsl --import UbuntuCopia C:\WSL\UbuntuCopia C:\copias\ubuntu.tar
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\.wslconfigSirve para configurar opciones globales de WSL 2.
[wsl2]memory=4GBprocessors=2swap=2GBlocalhostForwarding=trueOpciones frecuentes:
| Opción | Uso |
|---|---|
memory | Limita la memoria máxima disponible para WSL 2. |
processors | Limita el número de procesadores. |
swap | Define el tamaño de intercambio. |
localhostForwarding | Permite acceder desde Windows a servicios publicados en WSL mediante localhost. |
networkingMode | Permite configurar modos de red, como mirrored en versiones compatibles. |
Después de modificar .wslconfig, ejecuta:
wsl --shutdown7.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=trueroot=/mnt/options="metadata,umask=022"
[network]hostname=mi-wslgenerateResolvConf=true
[user]default=usuarioSecciones habituales:
| Sección | Uso |
|---|---|
[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:
| Indicador | Significado |
|---|---|
/p | Traduce rutas entre formato Windows y Linux. |
/l | Indica que el valor es una lista de rutas. |
/u | Pasa la variable de Windows a WSL. |
/w | Pasa la variable de WSL a Windows. |
Ejemplo en PowerShell para compartir una variable de Windows hacia WSL:
$env:MI_RUTA = "C:\Users\Usuario\proyecto"$env:WSLENV = "MI_RUTA/p/u"wsl echo '$MI_RUTA'
Ejemplo desde Linux hacia procesos de Windows:
export MI_VARIABLE="valor"export WSLENV="MI_VARIABLE/w"cmd.exe /C echo %MI_VARIABLE%
8. Casos prácticos
8.1. Entorno de desarrollo web
En Ubuntu puedes instalar un entorno básico con Apache, MySQL y PHP:
sudo apt updatesudo apt install apache2 mysql-server php libapache2-mod-php php-mysqlsudo service apache2 startsudo service mysql startDespués puedes abrir http://localhost desde Windows.
8.2. Proyecto con Git
Configura Git dentro de WSL:
git config --global user.name "Nombre Apellidos"git config --global user.email "correo@example.com"Crea un proyecto:
mkdir proyecto-wslcd proyecto-wslgit init8.3. Servidor local con Python
Puedes levantar un servidor web sencillo:
python3 -m http.server 8000Desde Windows, abre:
http://localhost:80009. Errores frecuentes
| Problema | Causa habitual | Solución |
|---|---|---|
wsl no se reconoce | WSL no está instalado o la terminal no se reinició | instalar WSL y abrir una terminal nueva |
| No se puede usar WSL 2 | virtualización desactivada o Windows no actualizado | activar virtualización en BIOS/UEFI y actualizar Windows |
| Un servicio no abre desde Windows | puerto incorrecto, servicio detenido o firewall | comprobar servicio, puerto y reglas de firewall |
| El proyecto va lento | archivos en /mnt/c/ con muchas operaciones | mover el proyecto a /home/usuario |
sudo pide contraseña | es la contraseña del usuario Linux | introducir la contraseña creada en la distribución |
| Se borró una distro por error | uso de wsl --unregister | restaurar 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.