WSL

Recursos

  • versiones anteriores de WSL
  • Install WSL-install
  • Comandos básicos para WSL-basic-commandssource=recommendations
  • Comparación de las versiones de WSL-compare-versions

    Concepto

WSL (Windows Subsystem for Linux) es una capa de compatibilidad que permite ejecutar distribuciones Linux dentro de Windows sin necesidad de usar una máquina virtual tradicional o realizar un arranque dual.

Permite trabajar con herramientas y entornos típicos de Linux directamente desde Windows, integrando:

  • Sistema de archivos
  • Red
  • Terminal
  • Herramientas de desarrollo

WSL está especialmente diseñado para:

  • desarrollo de software
  • administración de sistemas
  • automatización
  • uso de herramientas nativas de Linux dentro de Windows

Esto facilita flujos de trabajo híbridos entre entornos Windows y Linux.

Arquitectura

WSL funciona mediante dos enfoques principales dependiendo de la versión.

WSL 1

WSL 1 traduce las llamadas del kernel Linux a llamadas del kernel de Windows.

Características:

  • no usa virtualización completa
  • acceso muy rápido al sistema de archivos de Windows
  • menor compatibilidad con algunas herramientas Linux

Ventajas:

  • bajo consumo de recursos
  • arranque instantáneo

Limitaciones:

  • compatibilidad parcial con aplicaciones que dependen del kernel Linux real
  • menor compatibilidad con contenedores avanzados

WSL 2

WSL 2 ejecuta un kernel Linux real dentro de una máquina virtual ligera usando virtualización basada en Hyper-V.

Características:

  • kernel Linux real
  • mayor compatibilidad
  • mejor soporte para contenedores
  • integración con Docker

Ventajas:

  • compatibilidad completa con herramientas Linux
  • mejor rendimiento en operaciones de archivos dentro del sistema Linux
  • soporte completo para contenedores

Consideraciones:

  • acceso a archivos de Windows puede ser ligeramente más lento
  • usa más recursos que WSL 1

Casos de uso

WSL se utiliza principalmente para:

  • desarrollo web
  • desarrollo backend
  • desarrollo con contenedores
  • testing en entornos Linux
  • scripting y automatización

Ejemplos de herramientas utilizadas en WSL:

  • git
  • ssh
  • docker
  • python
  • node
  • herramientas de compilación

También permite ejecutar múltiples distribuciones Linux simultáneamente, por ejemplo:

  • Ubuntu
  • Debian
  • Kali Linux
  • Alpine Linux

Instalación y configuración

La instalación moderna se realiza mediante powershell con un único comando.

Instalación automática

wsl --install

`

Este comando:

  • habilita las características necesarias de Windows
  • instala WSL
  • descarga una distribución Linux (normalmente Ubuntu)
  • configura WSL 2 por defecto Después se requiere reiniciar el sistema.

Instalación manual

En sistemas antiguos puede requerir:

  • activar Subsistema de Windows para Linux
  • activar Plataforma de máquina virtual
  • instalar kernel WSL
  • instalar distribución Linux desde Microsoft Store

Configuraciones relacionadas pueden encontrarse en:

  • sistema windows 10 conf

Gestión de distribuciones

WSL permite instalar y administrar varias distribuciones Linux.

Listar distribuciones

wsl --list --verbose

o

wsl -l -v

Muestra:

  • distribuciones instaladas
  • estado
  • versión WSL usada

Cambiar versión de WSL

wsl --set-version <distro> 2

Ejemplo:

wsl --set-version Ubuntu 2

Establecer versión por defecto

wsl --set-default-version 2

Iniciar distribución

wsl

o

wsl -d Ubuntu

Apagar WSL

wsl --shutdown

Esto detiene todas las distribuciones y la VM de WSL 2.

Sistema de archivos

WSL permite acceder a archivos de Windows y Linux.

Acceso a archivos de Windows desde Linux

Las unidades de Windows se montan en:

/mnt/c
/mnt/d
/mnt/e

Ejemplo:

/mnt/c/Users

Acceso a archivos de Linux desde Windows

Los archivos Linux se encuentran en:

\\wsl$

Ejemplo en explorador:

\\wsl$\Ubuntu\home\usuario

WSL Networking

WSL tiene integración de red con Windows.

Características principales:

  • comparte conexión de red con el host
  • acceso a internet automático
  • comunicación entre Windows y Linux

Comunicación Windows → WSL

Desde Windows se puede acceder a servicios de WSL usando:

localhost

Ejemplo:

http://localhost:3000

Comunicación WSL → Windows

WSL puede acceder al host Windows mediante:

localhost

o usando la IP del host.

Puertos

Los puertos abiertos en WSL suelen exponerse automáticamente en Windows. Ejemplo: Servidor en WSL:

python -m http.server 8000

Accesible desde Windows:

http://localhost:8000

Integración con Docker

WSL 2 es ampliamente utilizado para ejecutar Docker en Windows. Ventajas:

  • rendimiento cercano a Linux nativo
  • uso de kernel Linux real
  • mejor compatibilidad con contenedores

Docker Desktop utiliza WSL 2 como backend para:

  • ejecutar contenedores
  • gestionar redes
  • almacenar volúmenes

Esto permite ejecutar entornos completos de desarrollo Linux dentro de Windows.

No, aún quedan varios conceptos importantes de WSL que no aparecen en tu nota actual. Ya cubriste bien:

  • concepto general
  • WSL1 vs WSL2
  • instalación básica
  • gestión de distros
  • filesystem
  • networking básico
  • integración con Docker

Pero faltan varios temas clave en entornos reales:

  1. WSL configuration (.wslconfig / wsl.conf)
  2. gestión de recursos (CPU, RAM, swap)
  3. systemd en WSL
  4. interop Windows ↔ Linux
  5. GPU support
  6. GUI apps (WSLg)
  7. mount de discos
  8. import/export de distros
  9. backup y migración
  10. performance tuning
  11. integración con herramientas de desarrollo
  12. WSL kernel management
  13. networking avanzado
  14. diferencias filesystem ext4 vs Windows
  15. seguridad y aislamiento

La mejor forma es crear una nota separada para no sobrecargar la actual.

Te dejo una nota nueva expandiendo WSL sin repetir contenido.

WSL advanced

Configuración global de WSL

WSL permite controlar el comportamiento de la máquina virtual mediante el archivo: .wslconfig

Este archivo se ubica en: C:\Users<usuario>.wslconfig

Permite configurar:

  • memoria máxima
  • número de CPUs
  • swap
  • networking
  • kernel personalizado

Ejemplo de configuración

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

`

Opciones comunes:

  • memory
  • processors
  • swap
  • swapfile
  • kernel
  • nestedVirtualization
  • localhostForwarding

Después de modificarlo es necesario reiniciar WSL:

wsl --shutdown

Configuración interna de Linux

Cada distribución Linux puede configurarse mediante:

/etc/wsl.conf

Este archivo controla el comportamiento del entorno Linux.

Ejemplo

[automount]
enabled=true
root=/mnt/

[network]
generateHosts=true
generateResolvConf=true

[user]
default=usuario

Opciones importantes:

  • automount de discos Windows
  • configuración de red
  • usuario por defecto
  • configuración de systemd

systemd en WSL

Las versiones modernas de WSL permiten ejecutar systemd.

Esto habilita:

  • servicios Linux
  • gestores de servicios
  • contenedores avanzados

Activación en /etc/wsl.conf:

[boot]
systemd=true

Después reiniciar WSL.

Servicios ahora disponibles:

  • docker
  • ssh
  • cron
  • systemctl

WSL Interoperability

WSL permite ejecutar comandos de Windows desde Linux y viceversa.

Ejecutar comandos Windows desde WSL

notepad.exe

Ejemplo:

explorer.exe .

Abre el directorio actual en el explorador de Windows.

Ejecutar comandos Linux desde Windows

wsl ls

Ejemplo:

wsl docker ps

Esto permite automatización híbrida.

Aplicaciones gráficas (WSLg)

WSL soporta aplicaciones gráficas Linux mediante WSLg.

Permite ejecutar:

  • editores gráficos
  • herramientas GUI
  • IDEs Linux

Ejemplo:

gedit

Características:

  • soporte Wayland
  • aceleración GPU
  • audio
  • integración con Windows

Las aplicaciones aparecen como ventanas normales de Windows.

GPU Support

WSL permite acceso a GPU para:

  • machine learning
  • CUDA
  • computación paralela

Compatible con:

  • NVIDIA CUDA
  • DirectML

Ejemplo de frameworks compatibles:

  • TensorFlow
  • PyTorch

Requisitos:

  • Windows 11 o Windows 10 actualizado
  • drivers compatibles con WSL

Mount de discos

WSL permite montar discos físicos directamente.

Ejemplo:

wsl --mount <disk>

Esto permite montar:

  • discos físicos
  • particiones Linux
  • sistemas ext4

Ejemplo:

wsl --mount \\.\PHYSICALDRIVE1

También se pueden montar manualmente dentro de Linux.

Importar y exportar distribuciones

WSL permite exportar una distro a un archivo.

Exportar distro

wsl --export Ubuntu ubuntu-backup.tar

Importar distro

wsl --import UbuntuBackup C:\WSL\Ubuntu ubuntu-backup.tar

Esto permite:

  • backups
  • migración entre equipos
  • clonar entornos

Gestión del kernel

WSL utiliza un kernel Linux mantenido por Microsoft.

Se puede:

  • actualizar automáticamente
  • usar kernel personalizado

Ubicación del kernel personalizado:

.wslconfig

Ejemplo:

[wsl2]
kernel=C:\\kernel\\customKernel

Esto permite:

  • añadir módulos
  • modificar configuraciones del kernel

Performance tuning

Buenas prácticas para rendimiento:

  • trabajar dentro del filesystem Linux
  • evitar editar archivos Linux desde Windows
  • limitar RAM de WSL
  • usar SSD

Ejemplo de directorio recomendado:

/home/user/project

No recomendado:

/mnt/c/project

Esto mejora:

  • compilación
  • npm
  • docker builds

Networking avanzado

Cada instancia de WSL tiene:

  • una interfaz virtual
  • una IP interna

Se puede consultar con:

ip addr

Windows y WSL se comunican mediante NAT.

Configuraciones avanzadas incluyen:

  • port forwarding
  • acceso desde red local
  • proxies

Integración con herramientas de desarrollo

WSL es muy utilizado con:

  • VSCode
  • Docker
  • Kubernetes
  • herramientas CLI Linux

Ejemplo de integración:

  • VSCode Remote WSL

Esto permite:

  • editar archivos Linux desde Windows
  • ejecutar terminal Linux integrada
  • usar herramientas Linux directamente.

Seguridad y aislamiento

WSL no es una VM completa aislada como un hipervisor tradicional.

Características:

  • comparte kernel virtualizado
  • integración con filesystem Windows
  • acceso a red del host

Por lo tanto:

  • no se considera aislamiento de seguridad fuerte
  • está pensado para desarrollo y testing

WSL filesystem

Concepto

El filesystem de WSL define cómo se gestionan, almacenan y comparten los archivos entre:

  • el sistema Linux que corre dentro de WSL
  • el sistema operativo Windows del host

WSL implementa un sistema híbrido que permite:

  • acceder a archivos Linux desde Windows
  • acceder a archivos Windows desde Linux
  • montar discos físicos
  • compartir rutas entre ambos sistemas

Dependiendo de la versión de WSL, el comportamiento del filesystem cambia significativamente.

Filesystem en WSL1 vs WSL2

WSL1

WSL1 no utiliza un sistema de archivos Linux real.
En su lugar usa una traducción de llamadas al sistema entre Linux y Windows.

Características:

  • acceso muy rápido a archivos Windows
  • compatibilidad limitada con permisos Linux
  • algunas herramientas Linux no funcionan correctamente
  • no existe un filesystem ext4 real

Los archivos Linux se almacenan internamente dentro del perfil de usuario de Windows.

WSL2

WSL2 utiliza un filesystem Linux real (ext4) dentro de un disco virtual.

Esto permite:

  • compatibilidad completa con herramientas Linux
  • permisos POSIX reales
  • mejor rendimiento en operaciones Linux

El sistema Linux vive dentro de un disco virtual:

Disco virtual de WSL

ext4.vhdx

ext4.vhdx

`

Este archivo contiene:

  • todo el sistema Linux
  • configuraciones
  • paquetes instalados
  • archivos del usuario

Ubicación del filesystem Linux

En WSL2 el filesystem se almacena en un archivo virtual.

Ubicación típica:

C:\Users\<usuario>\AppData\Local\Packages\<distro>\LocalState\ext4.vhdx

Ejemplo de distro:

C:\Users\<usuario>\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu...\LocalState\

Este archivo representa el disco completo del sistema Linux.

No debe modificarse manualmente.

Acceso a archivos Linux desde Windows

Windows permite acceder al filesystem Linux mediante una ruta especial.

Ruta de red WSL

\\wsl$

Ejemplo:

\\wsl$\Ubuntu\home\usuario

Esto permite:

  • abrir archivos Linux en Windows
  • copiar archivos entre sistemas
  • editar archivos desde herramientas Windows

Sin embargo, editar archivos Linux desde Windows puede causar problemas de rendimiento en proyectos grandes.

Acceso a archivos Windows desde WSL

Las unidades de Windows se montan automáticamente dentro de WSL.

Ubicación base:

/mnt

Ejemplo de unidades montadas:

/mnt/c
/mnt/d
/mnt/e

Ejemplo de acceso:

/mnt/c/Users/usuario/Documents

Esto permite usar archivos de Windows desde herramientas Linux.

Automount de unidades Windows

WSL monta automáticamente las unidades de Windows al iniciar la distribución.

La configuración se controla mediante:

/etc/wsl.conf

Ejemplo de configuración:

[automount]
enabled=true
root=/mnt/
options="metadata"

Opciones comunes:

  • enabled activa el montaje automático
  • root define el directorio de montaje
  • options permite definir metadata
  • mountFsTab permite usar fstab

Permisos de archivos

Linux usa permisos POSIX basados en:

  • usuario
  • grupo
  • otros

Ejemplo de permisos:

-rwxr-xr-x

Windows utiliza NTFS con un sistema de permisos basado en ACL.

Esto crea diferencias importantes en:

  • propiedad de archivos
  • permisos
  • ejecución de scripts

Metadata en NTFS

WSL puede almacenar metadata Linux dentro de NTFS para simular permisos POSIX.

Configuración:

options="metadata"

Esto permite usar comandos como:

chmod
chown

Sin metadata activada:

  • los permisos Linux no se aplican correctamente
  • todos los archivos pueden aparecer con permisos similares

Rendimiento del filesystem

El rendimiento depende de dónde se almacenen los archivos.

Mejor rendimiento

Trabajar dentro del filesystem Linux:

/home/usuario/project

Ventajas:

  • operaciones de archivos rápidas
  • compilaciones más rápidas
  • mejor rendimiento con git
  • mejor rendimiento con npm

Menor rendimiento

Trabajar dentro del filesystem Windows:

/mnt/c/project

Esto puede causar:

  • builds más lentos
  • operaciones git más lentas
  • problemas con herramientas que observan cambios de archivos

Compartir proyectos entre Windows y WSL

Existen dos estrategias comunes.

Proyecto dentro del filesystem Linux

Ubicación:

/home/usuario/project

Windows accede mediante:

\\wsl$\Ubuntu\home\usuario\project

Ventajas:

  • mejor rendimiento
  • compatibilidad Linux completa

Proyecto dentro del filesystem Windows

Ubicación:

C:\project

WSL accede mediante:

/mnt/c/project

Ventajas:

  • herramientas Windows acceden directamente

Desventajas:

  • menor rendimiento en Linux

Montar discos manualmente

WSL permite montar discos manualmente dentro del sistema Linux.

Ejemplo:

sudo mount /dev/sdb /mnt/disk

También se pueden montar discos físicos desde Windows usando WSL.

Ejemplo:

wsl --mount \\.\PHYSICALDRIVE1

Esto permite montar:

  • discos externos
  • particiones Linux
  • discos con filesystem ext4

Uso de fstab

WSL soporta el archivo:

/etc/fstab

Este archivo permite montar discos automáticamente al iniciar la distribución.

Ejemplo:

/dev/sdb /mnt/data ext4 defaults 0 0

Para habilitar el uso de fstab:

[automount]
mountFsTab=true

Filesystems soportados

Dentro de WSL se pueden usar varios sistemas de archivos.

ext4

Filesystem principal de Linux en WSL2.

Características:

  • journaling
  • permisos POSIX
  • alto rendimiento

drvfs

Filesystem que conecta Linux con discos Windows.

Se utiliza en rutas como:

/mnt/c

Permite acceder a NTFS desde Linux.

tmpfs

Filesystem temporal almacenado en memoria.

Ejemplo:

/tmp

Se utiliza para:

  • archivos temporales
  • almacenamiento rápido en memoria

Problemas comunes del filesystem

Observadores de archivos

Herramientas como:

  • webpack
  • vite
  • nodemon

pueden fallar al observar archivos en:

/mnt/c

Solución:

  • mover proyectos al filesystem Linux.

Permisos incorrectos

Problemas comunes:

  • scripts no ejecutables
  • permisos ignorados en NTFS

Solución:

  • activar metadata
  • trabajar dentro del filesystem ext4.

Corrupción del disco virtual

Si WSL se apaga incorrectamente puede dañarse el archivo:

ext4.vhdx

Por eso es recomendable apagar WSL correctamente cuando se detectan problemas:

wsl --shutdown

Buenas prácticas

Para optimizar el filesystem en WSL:

  • almacenar proyectos en /home
  • evitar /mnt/c para compilaciones grandes
  • usar SSD
  • usar herramientas Linux dentro de WSL
  • evitar modificar archivos Linux desde Windows durante procesos críticos
  • usar git dentro de WSL para repositorios Linux

Estas prácticas mejoran significativamente el rendimiento y la estabilidad del entorno.

WSL networking

Concepto

El networking de WSL define cómo se comunica el entorno Linux con:

  • el sistema host Windows
  • internet
  • otros dispositivos de la red
  • contenedores y servicios locales

En WSL2, la red funciona mediante virtualización con NAT, lo que significa que el sistema Linux vive dentro de una red virtual separada creada por Windows.

Esto permite:

  • acceso automático a internet
  • comunicación entre Windows y WSL
  • exposición de servicios mediante localhost
  • integración con herramientas como Docker

Arquitectura de red en WSL2

En WSL2 existe una arquitectura de red virtual.

Componentes principales:

  • Host Windows
  • Virtual switch de Hyper-V
  • Adaptador virtual WSL
  • Máquina virtual Linux

Flujo simplificado:


Linux (WSL2 VM)
│
Virtual Network Adapter
│
Hyper-V Virtual Switch
│
Windows Host
│
Router / Internet

`

Esto significa que:

  • WSL tiene su propia IP interna
  • el host Windows actúa como gateway NAT

Interfaces de red en WSL

Dentro de Linux se pueden ver las interfaces con:

Ver interfaces

ip addr

`

Ejemplo típico:

eth0
lo

eth0

Interfaz principal de red.

Ejemplo de IP:

172.25.160.1xx

Esta IP:

  • cambia cada vez que WSL se reinicia
  • pertenece a la red virtual NAT

lo (loopback)

Interfaz local:

127.0.0.1

Usada para comunicación interna.

NAT en WSL

WSL2 utiliza NAT (Network Address Translation).

Esto significa:

  • WSL tiene una IP privada
  • Windows traduce las conexiones hacia internet

Ejemplo:

WSL IP: 172.25.x.x
Host Windows: 192.168.x.x
Router: 192.168.x.1

Ventajas:

  • configuración automática
  • aislamiento parcial
  • acceso a internet inmediato

Desventaja:

  • WSL no es accesible directamente desde la red local.

Comunicación Windows → WSL

Windows puede acceder a servicios en WSL mediante:

localhost

Esto se llama localhost forwarding.

Ejemplo:

Servidor ejecutándose en WSL:

python3 -m http.server 8000

Acceso desde Windows:

http://localhost:8000

WSL redirige automáticamente el puerto.

Esto funciona para:

  • servidores web
  • APIs
  • bases de datos
  • contenedores

Comunicación WSL → Windows

WSL puede acceder al host Windows también mediante:

localhost

Ejemplo:

Servidor ejecutándose en Windows:

http://localhost:3000

Desde WSL:

curl localhost:3000

Esto funciona porque Windows y WSL comparten la interfaz loopback virtual.

Obtener IP del host Windows

A veces es necesario obtener la IP del host.

Comando:

cat /etc/resolv.conf

Ejemplo:

nameserver 172.25.160.1

Esta dirección normalmente corresponde al host Windows.

También se puede usar:

ip route

Exponer servicios a la red local

Por defecto, los servicios en WSL solo son accesibles desde el host.

Para exponerlos a la red local se puede usar port forwarding en Windows.

Portproxy

Comando en Windows:

netsh interface portproxy add v4tov4 listenport=8080 listenaddress=0.0.0.0 connectport=8080 connectaddress=<WSL_IP>

Esto permite que otros dispositivos accedan a:

http://IP_WINDOWS:8080

Obtener IP de WSL

Para configurar port forwarding se necesita la IP de WSL.

hostname -I

Ejemplo:

172.25.160.45

Configuración de localhost forwarding

El forwarding automático se controla desde:

.wslconfig

Ejemplo:

[wsl2]
localhostForwarding=true

Opciones:

  • true habilita acceso a puertos WSL desde Windows
  • false lo desactiva

Después reiniciar WSL:

wsl --shutdown

Redes con Docker en WSL

Cuando se usa Docker dentro de WSL:

existen varias capas de red:

Docker container
      │
Docker bridge
      │
WSL network
      │
Windows host
      │
Internet

Esto implica:

  • redes virtuales adicionales
  • puertos publicados con -p

Ejemplo:

docker run -p 8080:80 nginx

Accesible desde Windows:

http://localhost:8080

Bridge networking

WSL no soporta oficialmente bridge directo a la red física de forma simple.

Esto se debe a que la red se gestiona mediante Hyper-V NAT.

Sin embargo existen métodos avanzados:

  • crear virtual switch externo
  • conectar VM WSL manualmente
  • usar scripts de configuración

Este enfoque es más complejo y normalmente innecesario.

Cambios de IP en WSL

La IP de WSL cambia al reiniciar:

  • reiniciar WSL
  • reiniciar Windows
  • ejecutar wsl --shutdown

Esto ocurre porque la red NAT se recrea.

Por eso es recomendable:

  • usar localhost
  • evitar dependencias de IP fija.

Diagnóstico de red

Comandos útiles dentro de WSL.

Ver IP

hostname -I

Ver rutas

ip route

Ver interfaces

ip addr

Probar conectividad

ping google.com

Probar conexión local

curl localhost

Firewall de Windows

El firewall de Windows puede bloquear conexiones hacia WSL.

Si un servicio no es accesible:

  • revisar firewall
  • permitir puerto
  • comprobar reglas de red

Ejemplo de puerto común:

  • 3000
  • 5000
  • 8000
  • 8080

Problemas comunes

Servicio no accesible desde Windows

Posibles causas:

  • servidor escuchando solo en 127.0.0.1
  • firewall bloqueando
  • puerto incorrecto

Solución común:

configurar servidor para escuchar en:

0.0.0.0

Ejemplo:

python3 -m http.server 8000 --bind 0.0.0.0

Acceso lento a servicios

Puede deberse a:

  • antivirus
  • firewall
  • red virtual saturada

Cambios de IP

Solución recomendada:

  • usar localhost
  • automatizar scripts de detección de IP.

Buenas prácticas

Para trabajar correctamente con networking en WSL:

  • usar localhost siempre que sea posible
  • evitar depender de IP de WSL
  • publicar puertos en Docker
  • usar 0.0.0.0 para servicios
  • revisar firewall si un puerto no responde
  • reiniciar red con:
wsl --shutdown

Estas prácticas hacen el networking de WSL más predecible y estable.

WSL performance tuning

Concepto

El performance tuning de WSL consiste en optimizar el rendimiento del entorno Linux ejecutándose dentro de Windows.

Aunque WSL2 ofrece un rendimiento cercano a Linux nativo, existen factores que pueden degradarlo si no se configuran correctamente:

  • uso ineficiente del filesystem
  • consumo excesivo de RAM
  • demasiados procesos en segundo plano
  • configuración incorrecta de CPU o swap
  • interacción constante con el filesystem de Windows

Optimizar estos aspectos mejora:

  • compilaciones
  • builds de Docker
  • ejecución de scripts
  • herramientas como npm, pip, cargo o go

Dónde almacenar los proyectos

Uno de los factores más importantes de rendimiento es la ubicación de los archivos del proyecto.

Ubicación recomendada

Trabajar dentro del filesystem Linux:

/home/usuario/proyecto

`

Ventajas:

  • acceso directo al disco virtual ext4
  • operaciones de archivos mucho más rápidas
  • mejor rendimiento en herramientas de desarrollo

Esto es especialmente importante para:

  • npm install
  • compilaciones
  • repositorios grandes de git
  • builds de contenedores

Ubicación menos eficiente

Trabajar sobre el filesystem Windows:

/mnt/c/proyecto

Problemas comunes:

  • acceso más lento
  • operaciones de I/O más costosas
  • watchers de archivos menos eficientes

Esto ocurre porque WSL debe traducir operaciones entre ext4 y NTFS.

Configuración de recursos de WSL

WSL permite controlar el uso de recursos mediante el archivo:

.wslconfig

Ubicación:

C:\Users\<usuario>\.wslconfig

Este archivo controla:

  • RAM máxima
  • CPUs asignadas
  • swap
  • comportamiento de la VM

Limitar memoria RAM

Ejemplo de configuración:

[wsl2]
memory=8GB

Esto evita que WSL consuma toda la memoria del sistema.

Buenas prácticas:

  • usar entre 50% y 70% de la RAM total
  • dejar memoria disponible para Windows

Ejemplo en un sistema con 16GB:

memory=10GB

Configurar CPUs

También se puede limitar el número de núcleos usados.

[wsl2]
processors=4

Esto es útil cuando:

  • se ejecutan múltiples VMs
  • se necesita reservar CPU para Windows
  • se ejecutan builds intensivos

Configurar swap

WSL crea automáticamente un archivo swap.

Se puede controlar con:

[wsl2]
swap=2GB

Opciones comunes:

  • swap=0 desactiva swap
  • swap=2GB define tamaño

En sistemas con mucha RAM se puede reducir o desactivar.

Ejemplo:

swap=1GB

Reiniciar WSL después de cambios

Después de modificar .wslconfig es necesario reiniciar WSL:

wsl --shutdown

Esto reinicia la máquina virtual Linux.

Optimizar uso de Docker

Cuando se usa Docker dentro de WSL:

es recomendable que:

  • Docker use el backend WSL2
  • los volúmenes estén en filesystem Linux

Ejemplo de volumen recomendado:

/home/usuario/app

Evitar:

/mnt/c/app

Esto mejora:

  • builds
  • acceso a archivos
  • rendimiento de contenedores

Optimizar git

Para repositorios grandes:

preferir:

/home/usuario/repositorio

Beneficios:

  • operaciones git status más rápidas
  • mejor rendimiento en git checkout
  • menor latencia en cambios de archivos

También es recomendable usar git dentro de WSL, no desde Windows.

Optimizar herramientas de desarrollo

Herramientas afectadas por filesystem lento:

  • node
  • python
  • rust
  • go
  • java

Por ejemplo:

npm install puede ser varias veces más lento en /mnt/c.

Mover proyectos a /home reduce significativamente el tiempo.

Controlar procesos en segundo plano

Demasiados procesos activos pueden degradar el rendimiento.

Ver procesos activos:

top

o

htop

Esto permite identificar:

  • procesos que consumen CPU
  • consumo excesivo de memoria
  • servicios innecesarios

Reducir servicios innecesarios

Si se usa systemd, algunos servicios pueden arrancar automáticamente.

Ver servicios activos:

systemctl list-units --type=service

Desactivar servicios innecesarios reduce:

  • consumo de RAM
  • uso de CPU
  • tiempo de arranque

Optimizar watchers de archivos

Herramientas modernas usan file watchers:

  • webpack
  • vite
  • nodemon
  • next.js

Si el proyecto está en /mnt/c pueden ocurrir:

  • retrasos en detección de cambios
  • alto consumo de CPU

Solución:

mover proyecto a:

/home/usuario/proyecto

Optimización de acceso a Windows

Cuando es necesario trabajar con archivos Windows:

preferir copiar archivos al entorno Linux antes de procesarlos.

Ejemplo:

cp /mnt/c/datos/dataset.csv ~/dataset.csv

Procesar dentro del filesystem Linux mejora el rendimiento.

Mantener WSL actualizado

Mantener WSL actualizado mejora rendimiento y estabilidad.

Actualizar WSL:

wsl --update

Ver versión instalada:

wsl --version

Las versiones modernas incluyen mejoras en:

  • filesystem
  • networking
  • soporte GPU
  • integración con Windows

Reducir consumo de memoria

WSL puede acumular memoria usada.

Para liberar memoria se puede reiniciar WSL:

wsl --shutdown

Esto:

  • libera RAM
  • reinicia la VM
  • limpia procesos residuales

Diagnóstico de rendimiento

Herramientas útiles dentro de WSL.

Ver uso de CPU y memoria:

top

Ver uso de disco:

df -h

Ver procesos que más consumen:

ps aux --sort=-%mem

Ver carga del sistema:

uptime

Problemas comunes de rendimiento

Builds muy lentos

Causa frecuente:

proyecto ubicado en /mnt/c.

Solución:

mover proyecto a /home.

Consumo excesivo de RAM

Causa:

WSL usa memoria dinámica.

Solución:

configurar .wslconfig.

Docker lento

Causa:

volúmenes ubicados en NTFS.

Solución:

usar filesystem Linux.

Buenas prácticas

Para obtener el mejor rendimiento en WSL:

  • almacenar proyectos en /home
  • evitar /mnt/c para compilaciones
  • limitar recursos con .wslconfig
  • usar Docker dentro del filesystem Linux
  • usar herramientas Linux dentro de WSL
  • reiniciar WSL cuando el consumo de RAM crezca demasiado
  • mantener WSL actualizado

Estas prácticas permiten que WSL funcione con un rendimiento cercano a un sistema Linux nativo.

WSL resources and tools (2025-2026)

Estado de WSL a 2026

WSL sigue siendo una de las herramientas principales para desarrollo Linux en Windows y continúa evolucionando activamente.

Cambios importantes recientes:

  • WSL se distribuye como paquete independiente del sistema operativo
  • puede actualizarse con wsl --update
  • soporte para GPU, GUI apps (WSLg), systemd y contenedores
  • integración profunda con herramientas de desarrollo modernas

En 2025 Microsoft liberó el código de WSL como proyecto open source, permitiendo que la comunidad contribuya directamente al desarrollo del sistema.

Fuente:
The Windows Subsystem for Linux is now open source

Esto marca un cambio importante en el ecosistema:

  • mayor velocidad de desarrollo
  • contribuciones externas
  • mayor transparencia del sistema

Herramientas esenciales para WSL

Visual Studio Code + Remote WSL

Una de las integraciones más utilizadas.

Permite usar VSCode en Windows mientras el entorno de ejecución está en Linux.

Características:

  • editar archivos Linux desde Windows
  • debugging remoto
  • terminal integrada
  • ejecución de extensiones dentro de WSL

Instalación típica desde WSL:

code .

`

Esto abre VSCode conectado a la distribución Linux mediante VSCode Server dentro de WSL.

Tutorial oficial: Linux development on Windows with WSL and VS Code

Extensión recomendada:

Remote - WSL

Docker Desktop (backend WSL2)

Docker utiliza WSL2 como backend de virtualización.

Ventajas:

  • contenedores Linux nativos
  • mejor rendimiento que Hyper-V VM tradicionales
  • integración directa con distros WSL

Flujo típico:

Docker container
      │
Docker engine
      │
WSL2 VM
      │
Windows host

Documentación oficial:

Use WSL with Docker Desktop

Docker recomienda trabajar con el código dentro de la distribución Linux para obtener mejor rendimiento.

Windows Terminal

Terminal moderna para Windows que funciona especialmente bien con WSL.

Características:

  • múltiples shells
  • pestañas
  • perfiles para distros Linux
  • GPU rendering
  • configuraciones avanzadas

Ejemplo de perfiles:

  • Ubuntu
  • Debian
  • PowerShell
  • cmd

Es actualmente la terminal estándar para usar WSL.

Repositorio:

https://github.com/microsoft/terminal

Dev Containers

Tecnología usada con VSCode y Docker.

Permite crear entornos de desarrollo reproducibles.

Estructura típica:

.devcontainer
 ├─ devcontainer.json
 └─ Dockerfile

Ventajas:

  • entorno reproducible
  • dependencias aisladas
  • integración directa con WSL y Docker

Documentación:

https://containers.dev

Uso común en:

  • proyectos grandes
  • equipos de desarrollo
  • DevOps

WSLg (Linux GUI en Windows)

WSLg permite ejecutar aplicaciones gráficas Linux directamente en Windows.

Ejemplo:

gedit

Características:

  • soporte Wayland
  • aceleración GPU
  • integración con Windows

Repositorio oficial:

https://github.com/microsoft/wslg

Las aplicaciones GUI se muestran como ventanas nativas de Windows.

Systemd support

WSL soporta systemd en versiones modernas.

Esto permite ejecutar servicios como:

  • docker
  • ssh
  • cron
  • systemctl

Activación en:

/etc/wsl.conf

Configuración:

[boot]
systemd=true

Documentación:

https://learn.microsoft.com/windows/wsl/systemd

Esto mejora la compatibilidad con sistemas Linux modernos.

GPU acceleration

WSL soporta aceleración GPU para:

  • machine learning
  • CUDA
  • compute workloads

Frameworks compatibles:

  • TensorFlow
  • PyTorch
  • CUDA
  • DirectML

Documentación:

https://learn.microsoft.com/windows/wsl/tutorials/gpu-compute

Esto permite usar GPUs directamente desde Linux dentro de Windows.

Distribuciones Linux recomendadas

Las distros más usadas en WSL:

Ubuntu

La más popular.

Ventajas:

  • documentación extensa
  • gran compatibilidad
  • soporte oficial

Debian

Preferida para:

  • entornos estables
  • servidores
  • DevOps

Kali Linux

Utilizada para:

  • pentesting
  • seguridad
  • herramientas de auditoría

Alpine Linux

Ligera y minimalista.

Usada para:

  • contenedores
  • entornos pequeños

Lista oficial de distribuciones:

https://learn.microsoft.com/windows/wsl/install-manual#downloading-distributions

Herramientas CLI comunes en WSL

Un entorno WSL moderno suele incluir herramientas Linux estándar.

desarrollo

  • git
  • curl
  • wget
  • build-essential
  • make
  • gcc

scripting

  • bash
  • zsh
  • tmux
  • fzf

administración

  • htop
  • ncdu
  • net-tools
  • iproute2

contenedores

  • docker
  • podman
  • kubectl

Herramientas modernas para productividad

Algunas herramientas populares en entornos WSL modernos.

starship

Prompt moderno para terminal.

Repositorio:

https://github.com/starship/starship

Características:

  • rápido
  • multiplataforma
  • altamente configurable

zoxide

Alternativa moderna a cd.

Repositorio:

https://github.com/ajeetdsouza/zoxide

Aprende automáticamente los directorios frecuentes.

Ejemplo:

z project

bat

Alternativa a cat con:

  • syntax highlighting
  • integración git

Repositorio:

https://github.com/sharkdp/bat

eza

Reemplazo moderno de ls.

Repositorio:

https://github.com/eza-community/eza

Características:

  • colores
  • iconos
  • árbol de directorios

ripgrep

Búsqueda de texto extremadamente rápida.

Repositorio:

https://github.com/BurntSushi/ripgrep

Ejemplo:

rg "function"

Mucho más rápido que grep.

Herramientas DevOps usadas con WSL

WSL se usa mucho en entornos DevOps.

Herramientas comunes:

  • terraform
  • ansible
  • kubectl
  • helm
  • aws-cli
  • gh CLI

Esto permite trabajar con infraestructura Linux desde Windows.

Recursos oficiales

Documentación principal:

https://learn.microsoft.com/windows/wsl

Incluye:

  • instalación
  • networking
  • filesystem
  • debugging

Repositorio oficial:

https://github.com/microsoft/WSL

Aquí se encuentran:

  • código fuente
  • issues
  • roadmap
  • contribuciones

Desde 2025 el proyecto es open source, permitiendo contribuciones de la comunidad.

Fuente: https://blogs.windows.com/windowsdeveloper/2025/05/19/the-windows-subsystem-for-linux-is-now-open-source/

Comunidades

Lugares donde seguir el desarrollo de WSL:

Estas comunidades suelen compartir:

  • soluciones a problemas
  • configuraciones optimizadas
  • herramientas nuevas

Tendencias del ecosistema WSL

A 2026 las tendencias más claras son:

desarrollo híbrido Windows + Linux

WSL permite:

  • herramientas Linux
  • IDE Windows
  • integración total

desarrollo cloud-native

WSL es muy usado para:

  • Docker
  • Kubernetes
  • DevContainers
  • infraestructura cloud

workstation de desarrollo

Muchas empresas usan WSL como entorno principal de desarrollo en Windows.

Especialmente en:

  • backend
  • DevOps
  • cloud engineering