WSL
- Sistemas
- Virtualizacion
- Hyper-V
- powershell
- Docker
- sistema windows 10 conf
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:
- WSL configuration (.wslconfig / wsl.conf)
- gestión de recursos (CPU, RAM, swap)
- systemd en WSL
- interop Windows ↔ Linux
- GPU support
- GUI apps (WSLg)
- mount de discos
- import/export de distros
- backup y migración
- performance tuning
- integración con herramientas de desarrollo
- WSL kernel management
- networking avanzado
- diferencias filesystem ext4 vs Windows
- 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:
memoryprocessorsswapswapfilekernelnestedVirtualizationlocalhostForwarding
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:
enabledactiva el montaje automáticorootdefine el directorio de montajeoptionspermite definir metadatamountFsTabpermite 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/cpara 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
- WSL
- WSL filesystem
- Docker
- Sistemas
- Virtualizacion
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:
truehabilita acceso a puertos WSL desde Windowsfalselo 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
localhostsiempre que sea posible - evitar depender de IP de WSL
- publicar puertos en Docker
- usar
0.0.0.0para 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
- WSL
- WSL filesystem
- WSL networking
- Docker
- Sistemas
- Virtualizacion
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,cargoogo
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=0desactiva swapswap=2GBdefine 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 statusmá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/cpara 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)
- WSL
- WSL filesystem
- WSL networking
- WSL performance tuning
- Docker
- Virtualizacion
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:
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:
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.
Comunidades
Lugares donde seguir el desarrollo de WSL:
- https://github.com/microsoft/WSL/issues
- https://www.reddit.com/r/bashonubuntuonwindows
- https://www.reddit.com/r/devops
- https://www.reddit.com/r/docker
- https://stackoverflow.com/questions/tagged/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
¿Te gusta este contenido? Suscríbete vía RSS