WSL
Contenido
- Introducción
- Conocimiento previo
- Referencias
- Índice
- 1. Introducción a WSL
- 1.1. ¿Qué es WSL?
- 1.2. WSL 1 y WSL 2
- 1.3. Ventajas frente a máquinas virtuales y dual boot
- 1.4. Requisitos previos
- 2. Instalación y configuración
- 2.1. Activación de la característica WSL en Windows
- 2.2. Instalación de distribuciones Linux
- 2.3. Actualización y eliminación de distribuciones
- 2.4. Configuración inicial de usuario
- 3. Uso básico de WSL
- 3.1. Iniciar y detener distribuciones
- 3.2. Comandos básicos
- 3.3. Ejecución de instrucciones y aplicaciones
- 4. Integración entre Windows y Linux
- 4.1. Usuarios
- 4.2. Acceso a archivos de Windows desde Linux
- 4.3. Acceso a archivos de Linux desde Windows
- 4.4. Sistema de permisos de archivos
- 4.5. Ejecución de aplicaciones y comandos cruzados
- 4.6. Variables de entorno compartidas
- 5. Redes y conectividad
- 5.1. Red en WSL 1 vs WSL 2
- 5.2. Conocer la red y configuración
- 5.2. Exposición de servicios
- 5.3. Configuración de puertos y firewall
- 6. Herramientas y aplicaciones en WSL
- 6.1. Gestor de paquetes
- 6.2. Aplicaciones
- 6.3. Compiladores y utilidades
- 6.4. Docker y contenedores
- 6.5. Integración con VS Code
- 7. Administración avanzada
- 7.1. Exportar e importar distribuciones
- 7.2. Configuración personalizada
- 7.3. Optimización de recursos
- 8. Casos prácticos
- 8.1. Entorno de desarrollo web
- 8.2. Uso de Git y control de versiones
- 8.3. Despliegue de servicios en local
- 9. Ejercicios
Introducción al uso de Windows Subsystem for Linux (WSL), la herramienta que permite ejecutar distribuciones de Linux dentro de Windows de manera nativa, facilitando el aprendizaje, el desarrollo y la integración de entornos.
Introducción
Windows Subsystem for Linux, más conocido como WSL, es una característica de Windows que permite ejecutar distribuciones completas de Linux de forma nativa dentro del propio sistema operativo. Gracias a esta integración, los usuarios pueden acceder a un entorno Linux sin necesidad de instalar máquinas virtuales pesadas ni configurar un arranque dual.
El objetivo de WSL es ofrecer la potencia y flexibilidad de Linux junto con la comodidad y compatibilidad de Windows, creando un puente ideal para estudiantes, desarrolladores y profesionales que trabajan en entornos mixtos. Con WSL es posible instalar distribuciones como Ubuntu, Debian o Fedora y utilizarlas directamente desde la terminal de Windows, sin perder rendimiento ni complicar la configuración.
En el ámbito educativo y profesional, WSL resulta especialmente útil porque:
- Facilita el aprendizaje de comandos y utilidades de Linux en equipos Windows.
- Permite montar entornos de desarrollo que requieren Linux, como servidores web, bases de datos o compiladores.
- Favorece la integración con herramientas modernas como Docker, Git o Visual Studio Code.
Por lo tanto, WSL es una herramienta que acerca lo mejor de ambos mundos: la versatilidad de Linux y la usabilidad de Windows, abriendo la puerta a un entorno de desarrollo más completo y adaptado a las necesidades actuales.
Conocimiento previo
- Gestión de Windows
- Introducción a Linux y sus comandos principales
Referencias
Índice
- Introducción a WSL
1.1. ¿Qué es WSL?
1.2. Diferencias entre WSL 1 y WSL 2
1.3. Ventajas frente a máquinas virtuales y dual boot
1.4. Requisitos previos - Instalación y configuración
2.1. Activación de la característica WSL en Windows
2.2. Instalación de distribuciones Linux
2.3. Actualización y eliminación de distribuciones
2.4. Configuración inicial de usuario - Uso Básico de WSL
3.1. Iniciar y detener distribuciones
3.2. Comandos básicos - Integración entre Windows y Linux
4.1. Usuarios
4.2. Acceso a archivos de Windows desde Linux
4.3. Acceso a archivos de Linux desde Windows
4.4. Sistema de permisos de archivo
4.5. Ejecución de aplicaciones y comandos cruzados
4.6. Variables de entorno compartidas - Redes y Servicios
5.1. Red en WSL 1 vs WSL 2
5.2. Exposición de servicios
5.3. Configuración de puertos y firewall - Herramientas y aplicaciones en WSL
6.1. Gestor de paquetes
6.2. Instalación de entornos de desarrollo
6.3. Compiladores y utilidades
6.4. Docker y contenedores
6.5. Integración con VS Code - Administración Avanzada
7.1. Exportar e importar distribuciones
7.2. Configuración personalizada
7.3. Optimización de recursos - Casos Prácticos
8.1. Entorno de desarrollo web
8.2. Uso de Git y control de versiones
8.3. Despliegue de servicios en local - Ejercicios
1. Introducción a WSL
Windows Subsystem for Linux (WSL) es una de las herramientas más relevantes que Microsoft ha incorporado en Windows durante los últimos años. Su finalidad es permitir que los usuarios puedan ejecutar un entorno Linux completo dentro de Windows, de forma nativa y sin necesidad de utilizar máquinas virtuales o configuraciones de arranque dual.
Con WSL se pueden instalar distintas distribuciones de Linux, como Ubuntu, Debian, Fedora o openSUSE, directamente desde la Microsoft Store. Una vez instaladas, se accede a ellas mediante una terminal y se pueden usar comandos, gestores de paquetes, utilidades y entornos de desarrollo propios de Linux.
Esta característica ha supuesto un gran cambio en la forma de trabajar, ya que une la potencia de Linux con la compatibilidad de Windows, ofreciendo un entorno de desarrollo mucho más flexible.
1.1. ¿Qué es WSL?
WSL (Windows Subsystem for Linux) es una capa de compatibilidad creada por Microsoft que permite ejecutar binarios de Linux en Windows de forma nativa. No se trata de un emulador ni de una máquina virtual tradicional, sino de un subsistema que traduce las llamadas del kernel de Linux al kernel de Windows (en WSL 1) o que utiliza un kernel de Linux real integrado en Windows (en WSL 2).
De esta manera, un usuario puede abrir una terminal en Windows y ejecutar comandos propios de Linux como ls, grep o apt-get, trabajar con scripts de bash, instalar servidores o compilar programas, todo ello sin salir del sistema operativo principal.
WSL convierte a Windows en un entorno mucho más versátil, ya que permite trabajar simultáneamente con aplicaciones nativas de Windows y herramientas de Linux en un mismo flujo de trabajo.
1.2. WSL 1 y WSL 2
Existen dos versiones principales de WSL:
WSL 1
- Introducido en 2016.
- Utiliza una capa de traducción entre las llamadas de Linux y Windows.
- Ventaja: integración muy rápida con el sistema de archivos de Windows.
- Limitación: menor compatibilidad con ciertas aplicaciones y menor rendimiento en procesos que requieren intensivo uso de sistema.
WSL 2
- Presentado en 2019.
- Incluye un kernel real de Linux ejecutándose sobre una tecnología ligera de virtualización.
- Ofrece compatibilidad completa con aplicaciones y utilidades de Linux.
- Mejor rendimiento en operaciones de archivos, redes y ejecución de software.
- Permite ejecutar herramientas avanzadas como Docker Desktop sin necesidad de configuraciones adicionales.
En la práctica, WSL 2 es la versión recomendada para la mayoría de los usuarios, aunque Microsoft sigue manteniendo la compatibilidad con WSL 1 en casos donde la integración de archivos con Windows sea prioritaria.
1.3. Ventajas frente a máquinas virtuales y dual boot
Antes de WSL, quienes necesitaban Linux en un equipo Windows tenían dos opciones principales: instalar una máquina virtual o configurar un arranque dual. Ambas soluciones tienen desventajas que WSL resuelve:
- ⚡ Rapidez: WSL arranca en segundos, sin la carga pesada de un hipervisor como en VirtualBox o VMware.
- 💾 Uso eficiente de recursos: consume menos memoria y CPU que una máquina virtual.
- 🔄 Integración fluida: permite copiar archivos, ejecutar comandos y usar herramientas de Windows y Linux en paralelo.
- 🖥️ Sin reinicios: no es necesario reiniciar el ordenador para cambiar entre Windows y Linux, como sucede en el arranque dual.
- 🐧 Entorno real de Linux: a diferencia de emuladores o entornos simulados, en WSL 2 se ejecuta un kernel Linux completo.
Estas ventajas han convertido a WSL en una herramienta muy popular, especialmente en educación y en entornos de desarrollo profesional.
1.4. Requisitos previos
Para poder usar WSL es necesario disponer los siguientes requisitos:
-
Sistema operativo:
- Windows 10 (versión 2004 o superior, con compilación 19041 o más reciente).
- Windows 11 (todas las versiones soportan WSL de forma nativa).
-
Configuración del sistema:
- Tener habilitada la característica Subsistema de Windows para Linux.
- En el caso de WSL 2, también se debe activar la característica de Plataforma de máquina virtual (Virtual Machine Platform).
-
Permisos: es necesario contar con privilegios de administrador para instalar o habilitar estas funciones.
-
Espacio en disco y recursos: cada distribución ocupa varios cientos de MB y, dependiendo del uso, se recomienda disponer de al menos 10 GB libres y 4 GB de memoria RAM.
Una vez cumplidos estos requisitos, la instalación de WSL y de las distribuciones Linux se puede realizar con unos pocos comandos desde PowerShell o directamente desde la Microsoft Store.
2. Instalación y configuración
Para comenzar a trabajar con WSL, primero es necesario habilitar la característica en Windows y luego instalar una distribución de Linux. Este apartado describe paso a paso cómo realizar la instalación y configuración inicial para disponer de un entorno funcional.
2.1. Activación de la característica WSL en Windows
Dependiendo de la versión de Windows, puede ser que WSL no venga activado por defecto, por lo que debemos habilitarlo manualmente. Existen dos métodos principales: a través de la interfaz gráfica y mediante línea de comandos.
- Abrir el Panel de Control y dirigirse a Programas > Activar o desactivar características de Windows.
- Marcar la casilla Subsistema de Windows para Linux.
- Si se va a instalar WSL 2, también marcar Plataforma de máquina virtual.
- Reiniciar el equipo para que los cambios tengan efecto.
- Abrir PowerShell como administrador (clic derecho sobre el icono y seleccionar “Ejecutar como administrador”).
- Ejecutar el siguiente comando para habilitar WSL:
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestartdism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart2.2. Instalación de distribuciones Linux
Para la instalación de cualquier distribución de linux se puede realizar de varias formas, pero la más sencilla y recomendada es mediante línea de comandos con PowerShell o CMD.
A partir de Windows 10 versión 2004 y Windows 11, Microsoft simplificó la instalación de WSL y la distrubución inicial con un comando único:
- Abrir PowerShell o CMD como administrador.
- Ejecutar el comando:
wsl --installEste comando realiza varias acciones:
- Habilita automáticamente las características necesarias (WSL y plataforma de máquina virtual).
- Descarga e instala la última versión de WSL 2.
- Instala Ubuntu como distribución predeterminada (puede cambiarse más adelante).
Para verificar que WSL se ha instalado correctamente se puede consultar mediante este comando:
wsl --list --verboseEsto mostrará las distribuciones instaladas y su versión de WSL.
- Abrir la Microsoft Store.
- Buscar la distribución deseada, por ejemplo: Debian, Fedora Remix, openSUSE.
- Hacer clic en Instalar.
- Una vez instalada, la distribución aparecerá en el menú de inicio y podrá iniciarse con un clic y mediante comando en PowerShell o CMD.
Aunque Ubuntu es la distribución predeterminada, Windows permite instalar otras distribuciones.
- Para listar todas las distribuciones disponibles a instalar:
wsl --list --online- Una vez seleccionada la distribución para su instalación específica se emplea el comando:
wsl --install -d <Distribución>
Cuando se instala una distribución en WSL, se genera localmente un archivo con extensión .vhdx que contiene todo el sistema de archivos de Linux. La ubicación de este archivo puede variar según la versión de Windows y de WSL que se utilice.
- En versiones anteriores o en WSL1, normalmente se encuentra en:
C:\Users\<Usuario>\AppData\Local\Packages\<Distribucion>\LocalState\ext4.vhdxEl nombre de la distribución depende de la versión instalada. Por ejemplo, para Ubuntu, podría aparecer como:
CanonicalGroupLimited.Ubuntu_<Identificador>
- En versiones más recientes de WSL2, los discos virtuales se almacenan en:
C:\Users\<Usuario>\AppData\Local\wsl2.3. Actualización y eliminación de distribuciones
Una vez se disponen de distribuciones instaladas, es importante conocer cómo mantenerlas actualizadas y cómo eliminar aquellas que ya no se necesiten.
Se puede cambiar la versión del WSL mediante el comando:
wsl --set-version <Distribución> <1|2>Se tendrá que indicar el nombre de la distribución instalada y elegir el número de versión entre WSL 1 y WSL 2 según las necesidades de compatibilidad o rendimiento.
Si de lo contrario se desea eliminar una distribución que ya no se use, se puede hacer de la siguiente manera:
wsl --unregister <Distribución>Esto elimina completamente la distribución seleccionada, liberando espacio y recursos.
Adicionalmente, el mantenimiento de las distribuciones también incluye la actualización de los paquetes y software instalados dentro de ellas. Esto se realiza como en cualquier sistema Linux, usando el gestor de paquetes correspondiente. Por ejemplo, para actualizar paquetes en distribuciones basadas en Debian/Ubuntu:
sudo apt updatesudo apt upgrade -y2.4. Configuración inicial de usuario
Al iniciar la distribución Linux por primera vez, el sistema solicitará crear un usuario y contraseña. Este paso es necesario porque define el usuario principal para trabajar en Linux:
- Abrir la distribución predeterminada desde el menú de inicio o ejecutar:
wsl- Introducir el nombre de usuario.
- Crear y confirmar la contraseña.
Opcionalmente, se puede cambiar el usuario predeterminado de la distribución con:
wsl -u <Usuario>Después de este proceso, la distribución estará lista para usarse y se podrán instalar paquetes, ejecutar comandos de Linux y empezar a desarrollar dentro de WSL.
3. Uso básico de WSL
Una vez instalada y configurada la distribución Linux en Windows, es importante conocer los principales usos y comandos básicos que permiten manejar WSL.
3.1. Iniciar y detener distribuciones
Cada distribución instalada puede iniciarse y detenerse de varias maneras.
Desde el menú de inicio:
- Buscar el nombre de la distribución, por ejemplo Ubuntu, y hacer clic para abrir la terminal.
Desde PowerShell o CMD:
- Para iniciar WSL y arrancar la distribución predeterminada:
wsl- Para iniciar una distribución específica:
wsl -d <NombreDistribución>Por defecto, cada vez que se inicie sesión se encontrará en el directorio home del usuario creado durante la configuración inicial.
Para salir del terminal de Linux, simplemente se podrá cerrar la ventana o usar el comando exit.
user@host:/mnt/c/Windows/system32$ exitEsto permite salir de la sesión de Linux y volver a Windows. Es posible que aún que estemos en Windows, la distribución siga ejecutándose en segundo plano.
Las máquinas virtuales activas siguen consumiendo recursos del sistema. Para detenerlas por completo, estando en el terminal de windows, se puede detener con:
wsl -t <NombreDistribución>O para detener todas las distribuciones activas:
wsl --shutdown3.2. Comandos básicos
WSL proporciona diferentes comandos para administrar distribuciones y acceder al entorno Linux, se puede visualizar todas sus funciones con wsl --help
A continuación se muestran los comandos más comunes:
| Comando | Descripción |
|---|---|
wsl --help | Muestra la ayuda contextual con todos los comandos disponibles. |
wsl --status | Muestra el estado actual de WSL, incluyendo la versión y la distribución predeterminada. |
wsl --list | Muestra el nombre de las distribuciones instaladas y cuál de ellas es la predeterminada. |
wsl --list --verbose | Muestra todas las distribuciones instaladas con su versión y estado. |
wsl --list --online | Muestra las distribuciones disponibles para instalar. |
wsl --install | Instala una distribución predeterminada. |
wsl --install -d <Distribución> | Instala una distribución concreta. |
wsl --unregister <Distribución> | Desinstala una distribución concreta. |
wsl --distribution <Distribución> | Accede directamente a una distribución específica. |
wsl --terminate <Distribución> | Detiene una distribución específica. |
wsl --shutdown | Detiene todas las distribuciones activas. |
wsl --set-version <Distribución> <1|2> | Cambia la versión de WSL (1 o 2) para una distribución específica. |
wsl --set-default <Distribución> | Establece la distribución predeterminada. |
wsl --export <Distribución> <Archivo.tar> | Exporta la distribución a un archivo para respaldo o migración. |
wsl --import <Nombre> <Directorio> <Archivo.tar> | Importa una distribución desde un archivo previamente exportado. |
Cada uno de estos comando dispone de las mismas opciones pero abreviadas, por ejemplo -l en lugar de --list, -t en lugar de --terminate, etc.
El listado de los comandos son los que se disponen para WSL, una vez dentro del terminal de la distribución, se pueden usar todos los comandos habituales de Linux.
3.3. Ejecución de instrucciones y aplicaciones
Con WSL se puede usar de manera flexible o directa permitiendo ejecutar aplicaciones o instrucciones del terminal desde cualquiera de los entornos Windows o Linux.
-
Ejecutar comandos de Linux directamente sin entrar en la distribución:
Terminal window wsl ls -la /home
Esto ejecuta el comando ls -la /home en la distribución predeterminada de Linux y muestra el resultado en Windows sin tener que iniciar la distribución, es decir, en ningún momento se esta ejecutando la instrucción en el terminal de Linux.
- Ejecutar aplicaciones de Windows desde el terminal de la distribución:
Se puede acceder a los archivos de Windows desde Linux usando rutas como /mnt/c/Users/... y ejecutar aplicaciones de Windows desde Linux directamente indicando el .exe de la aplicación. Por ejemplo, explorer.exe tal y como se muestra en la imagen.
4. Integración entre Windows y Linux
WSL ofrece un entorno en el que es posible ejecutar aplicaciones y servicios de Linux directamente dentro de Windows, logrando así una coexistencia práctica de ambos sistemas. Aunque se ejecuta como una característica adicional del sistema operativo Windows, WSL brinda al usuario la capacidad de interactuar con ficheros, directorios y procesos de manera muy cercana a la de un sistema Linux nativo.
Una de las ventajas más destacables es la posibilidad de acceder al sistema de archivos de Windows desde la distribución de Linux y viceversa. Esto significa que se pueden leer, modificar y compartir archivos sin necesidad de herramientas externas, lo que facilita enormemente el trabajo colaborativo entre ambos entornos.
No obstante, es importante subrayar que WSL no sustituye por completo a un Linux tradicional. Existen áreas propias de Windows —como la configuración del sistema, las políticas de seguridad, las opciones del panel de control o la administración del cortafuegos— que no pueden alterarse directamente desde WSL y requieren gestionarse de manera nativa en Windows.
4.1. Usuarios
Los usuarios creados en Windows no se comparten con WSL. Cada distribución de Linux instalada tiene su propio sistema de cuentas y contraseñas, totalmente separado del sistema Windows.
Al instalar una nueva distribución en WSL, se solicita crear un primer usuario de Linux, que será el inicial. A partir de ahí, cualquier otra cuenta debe añadirse de manera manual. Este proceso se repite cada vez que una distribución se reinstale o restablezca.
Usuario root y el uso de sudo
El usuaro administrador en WSL funciona igual que en cualquier sistema Linux: permite ejecutar comandos administrativos, por ejemplo:
sudo apt upgradeSin embargo, el usuario root solo tiene efecto dentro de la distribución de Linux. No debe confundirse con el Administrador de Windows, que sigue siendo independiente.
Si un usuario olvida su contraseña en una distribución Linux, el procedimiento es el mismo que en un sistema Linux nativo, pero requiere iniciar WSL directamente como root:
Abrir WSL como root desde Windows:
wsl -u rootActualizar la contraseña con el comando:
passwd <usuario>Tras escribir la nueva contraseña y confirmarla, el usuario podrá volver a acceder.
4.2. Acceso a archivos de Windows desde Linux
WSL monta automáticamente las unidades de Windows bajo el directorio /mnt. Esto permite acceder fácilmente a todos los archivos de Windows desde la terminal Linux:
- Unidad C:
/mnt/c/ - Unidad D:
/mnt/d/
Por ejemplo, para listar archivos en la carpeta de documentos de Windows:
ls /mnt/c/Users/Usuario/DocumentsTambién es posible editar archivos de Windows usando editores de Linux como nano, vim o incluso scripts de bash, integrando ambos entornos en el flujo de trabajo.
4.3. Acceso a archivos de Linux desde Windows
Desde Windows, se puede acceder a los archivos de WSL usando rutas especiales o explorador de archivos, accediendo mediante la ruta \\wsl$ o localizando el icono de Linux en el acceso rápido del explorador de archivos.
Ruta directa a una distribución específica:
\\wsl$\Distribución
Por ejemplo, para abrir la carpeta home de Ubuntu desde el explorador de Windows:
- Abrir el explorador de archivos.
- Escribir en la barra de direcciones:
\\wsl$\Ubuntu\home\Usuario- Esto permite copiar, mover o editar archivos directamente desde Windows.
4.4. Sistema de permisos de archivos
La gestión de permisos de archivos depende de la versión de WSL y del tipo de sistema de archivos que se esté utilizando. En general los permisos de archivos en WSL funciona de forma muy similar a un Linux nativo, aunque con algunas diferencias cuando se accede a archivos de Windows.
Tanto en WSL 1 como en WSL 2, los archivos ubicados en el sistema de archivos raíz de la distribución (/home, /usr, /etc, etc.) utilizan permisos nativos de Linux.
- Se pueden usar los comandos estándar de Linux para gestionar permisos:
chmod→ cambiar permisoschown→ cambiar propietariochgrp→ cambiar grupo
- El umask se aplica normalmente al crear nuevos archivos y directorios, limitando permisos según la configuración de la distribución.
💡 Los archivos en el sistema de archivos raíz de Linux no se ven afectados por los permisos de Windows.
Cuando se crean archivos nuevos en Linux (/ de la distro):
- Se aplican permisos estándar de Linux (umask, chmod, chown).
- No dependen de Windows ni de atributos extendidos.
Cuando se accede a archivos de Windows desde WSL (/mnt/c/), el comportamiento depende de la versión de WSL y de si se usan metadatos:
| Versión | Comportamiento |
|---|---|
| WSL 1 | Utiliza directamente la pila de permisos de Windows. Los comandos chmod y chown no afectan a los archivos de Windows. |
| WSL 2 | Los permisos se interpretan a partir de los permisos de Windows o, si se habilitan, de metadatos NTFS, permisos al estilo Linux usando atributos extendidos. |
Cuando se crean archivos nuevos en Windows:
- Sin metadatos: heredan permisos del directorio padre.
- Con metadatos: aplican el umask definido en WSL y se guardan los atributos extendidos.
Metadatos
Los metadatos permiten gestionar atributos extendidos NTFS en los archivos de Windows, que WSL puede usar para almacenar información adicional sobre permisos al estilo Linux.
| Atributo | Descripción |
|---|---|
$LXUID | ID del propietario del usuario de Linux |
$LXGID | ID del grupo propietario de Linux |
$LXMOD | Permisos en formato octal (ej: 0777) |
$LXDEV | Identificador de dispositivo (si es un archivo de dispositivo) |
⚠️ Estos metadatos solo funcionan en WSL 2 y permiten que los permisos Linux se respeten incluso en archivos de Windows.
Por defecto, los metadatos no están habilitados. Para habilitar los metadatos es necesario configurar el montaje automático de las unidades en /etc/wsl.conf agregando la siguiente sección:
[automount]options = "metadata"Al reiniciar WSL, los sistemas de archivos montados de Windows respetarán estos metadatos y el usuario y grupo predeterminados pasan a ser 1000, y la umask se establece en 022.
Los archivos creados en unidades de Windows ahora respetan los permisos de Linux, siempre dentro de los límites que permite Windows.
👉 En el apartado Configuración personalizada se explica como configurar el fichero wsl.conf
Personalización de permisos
Además de utilizar metadata, se pueden definir opciones adicionales de montaje para controlar los permisos de archivos en unidades de Windows:
Opción Descripción umask Máscara de permisos aplicada a todos los archivos fmask Máscara de permisos aplicada solo a archivos dmask Máscara de permisos aplicada solo a directorios
Ejemplo de configuración:
[automount]options = "umask=022,fmask=022,dmask=022,metadata"⚠️ La combinación de umask, fmask y dmask determina los permisos finales mediante una operación OR lógica.
Al acceder desde Windows (\wsl$), los archivos toman los permisos del usuario predeterminado de la distribución.
El umask predeterminado (022) se aplica al crear archivos desde Windows.
💡 Esto significa que las aplicaciones de Windows tienen los mismos permisos que el usuario Linux predeterminado dentro de WSL.
Para manipular atributos extendidos de los metadatos en WSL es necesario instalar el paquete attr.
- Asignar propietario y grupo:
setfattr -n user.LXUID -v 1000 archivo.txtsetfattr -n user.LXGID -v 1001 archivo.txt- Consultar atributos:
getfattr -d archivo.txtEsto mostrará valores como user.LXUID, user.LXGID y user.LXMOD.
4.5. Ejecución de aplicaciones y comandos cruzados
Con WSL se puede usar de manera flexible o directa permitiendo ejecutar aplicaciones o instrucciones del terminal desde cualquiera de los entornos Windows o Linux.
wsl ls -la /homeEsto ejecuta el comando ls -la /home en la distribución predeterminada de Linux y muestra el resultado en Windows sin tener que iniciar la distribución, es decir, en ningún momento se esta ejecutando la instrucción en el terminal de Linux.
Es posible ejecutar aplicaciones de Windows desde Linux directamente indicando el fichero .exe de la aplicación. Por ejemplo, explorer.exe tal y como se muestra en la imagen.
Gracias a esto, se puede combinar el uso de herramientas de ambos sistemas. Por ejemplo,
- Abrir la ruta del sistema de archivos de Linux con el explorador de Windows:
explorer.exe .- Ejecutar el bloc de notas de Windows sobre un fichero de Linux:
notepad.exe archivo- Copiar al portapapeles de Windows desde Linux:
echo "Texto de prueba" | clip.exeEsta interoperabilidad permite crear flujos de trabajo híbridos, combinando la potencia de Linux para desarrollo y scripts con la comodidad de Windows para aplicaciones gráficas y herramientas de productividad.
4.6. Variables de entorno compartidas
WSL permite compartir variables de entorno entre Windows y Linux para facilitar la ejecución de aplicaciones, scripts y compartir información de configuración.
Para lograr esto se dispone de WSLENV, una variable de entorno compartida que existe tanto en Windows como en WSL. Su propósito es indicar qué variables deben trasladarse entre ambos entornos y cómo deben adaptarse, manejando aspectos como formato de ruta y delimitadores de lista.
Dentro de WSLENV, cada variable se define junto con una o varios paramétros, que controlan cómo se traduce o cuándo se aplica.
/p— Traduce rutas entre el estilo Linux (WSL) y el estilo Win32 (Windows)./l— Indica que el valor es una lista de rutas: en WSL usa : y en Windows ; como separadores./u— Sólo se aplica cuando se lanza WSL desde Windows (Windows → WSL)./w— Sólo se aplica cuando se ejecuta un proceso de Windows desde WSL (WSL → Windows)
Estos parámetros se pueden combinar según la necesidad de la variable que se quiera compartir.
Inicialmente hay que predefinir la variable que se quiere compartir, en Windows se hace directamente con set o setx en PowerShell o CMD. Hay que indicar WSLENV y la variable que se quiere compartir junto con sus parámetros.
set WSLENV=<VARIABLE></parametro>Una vez definida, al iniciar WSL, la variable estará disponible dentro del entorno Linux.
echo $<VARIABLE># Salida esperada: El contenido de la variablePor ejemplo, imagina que en Windows queremos que la variable USERPROFILE esté disponible dentro de WSL, con traducción de ruta:
Tal y como se aprecia en la imagen con el parámetro /u indica que esta variable se comparte únicamente al invocar WSL desde Windows. Para incluir además la traducción de ruta, se añade /p junto con /u, ahora la ruta que hay en la variable se adapta al formato Linux.
Para compartir variables desde WSL a Windows, se sigue un proceso similar, pero definiendo WSLENV dentro de la distribución Linux.
export WSLENV=<VARIABLE></parametro>Ahora desde Windows, la variable estará disponible.
set <VARIABLE># Salida esperada: El contenido de la variable
Independientemente de la dirección en la que se comparta la variable, las variables de entorno declaradas solo sirven en la sesión actual, es decir, si se realiza exit desde Linux o se cierra el terminal desde Windows, se perderán. Para definir variables de entorno permanentes hay que añadirlas a los archivos de configuración de inicio, editando /etc/environment para todos los usuarios o .bashrc para solo el usuario específico en Linux, o a las variables de entorno del sistema, usando setx en Windows.
5. Redes y conectividad
WSL no solo permite ejecutar comandos y aplicaciones de Linux, sino que también ofrece la capacidad de trabajar con servicios de red, como si la distribución Linux fuera un equipo independiente dentro de la red.
Gracias a esto, es posible:
- Compartir carpetas entre Windows y Linux de manera directa.
- Aprovechar las herramientas de red disponibles en Linux y Windows.
- Ejecutar servicios de red, como servidores web, bases de datos o aplicaciones en red, que pueden ser accesibles desde el equipo host o incluso desde otros dispositivos en la misma red local.
5.1. Red en WSL 1 vs WSL 2
La red se comporta de manera diferente según la versión de WSL utilizada:
-
WSL 1
- Utiliza directamente la pila de red de Windows.
- La dirección IP de la distribución es la misma que la del equipo Windows.
- Los servicios que se ejecuten en Linux son accesibles desde Windows sin configuraciones adicionales.
-
WSL 2
- Funciona sobre una máquina virtual ligera con un kernel Linux real.
- Cada distribución tiene su propia dirección IP, distinta a la del equipo Windows.
- Los servicios ejecutados en WSL 2 no se exponen automáticamente a Windows ni a otros equipos en la red local, aunque Windows 11 recientes permiten acceder a ellos mediante localhost gracias al reenvío automático de puertos.
- Para otros equipos de la red, es necesario exponer o redirigir puertos manualmente.
5.2. Conocer la red y configuración
Para conocer la configuración de red, es necesario recurrir a los comandos que dispone Windows y Linux, dependiendo de la versión de WSL que se esté utilizando.
- En Windows, para ver la configuración de red:
ipconfig- En Linux, para ver la configuración de red:
ip addrEl comando ip viene por defecto en la mayoría de distribuciones, aun que existe otras alternativas como ifconfig, systemctl, nmcli, etc.. Estas herramientas no vienen por defecto y requiere que se instalen previamente.
5.2. Exposición de servicios
Para ejecutar servicios de Linux (por ejemplo, un servidor web con Apache o Nginx) y hacerlos accesibles desde Windows o desde otros dispositivos en la red local:
- Comprobar que el servicio está activo:
sudo service apache2 start- Verificar la dirección IP de la distribución:
ip addr- Acceder al servicio desde Windows usando
localhost(WSL 2 con soporte de reenvío) o la IP asignada a la distribución.
En WSL 2 también se pueden redirigir puertos manualmente con PowerShell:
netsh interface portproxy add v4tov4 listenport=8080 listenaddress=0.0.0.0 connectport=8080 connectaddress=<IP-WSL>5.3. Configuración de puertos y firewall
Para que los servicios funcionen correctamente, a veces es necesario configurar el firewall de Windows o abrir puertos:
- Abrir puerto específico en el firewall de Windows:
New-NetFirewallRule -DisplayName "WSL 8080" -Direction Inbound -LocalPort 8080 -Protocol TCP -Action Allow- Verificar reglas existentes:
Get-NetFirewallRule | where { $_.DisplayName -like "*WSL*" }- Para servicios que deben ser accesibles fuera del equipo local, asegurarse de que el router o la red permite la conexión a los puertos configurados.
6. Herramientas y aplicaciones en WSL
Otra de las funcionalidades que facilita WSL es explotar la facilidad de instalar aplicaciones en las distribuciones y funcionar de forma independiente. Uno de los usos que suele utilizarse habitualmente es la instalación de entornos de desarrollo para facilitar el trabajo y no disponer por completo de Windows. Por ejemplo, imagina el uso de cualquier herramienta propia de Linux que no está disponible para Windows o que no se dispone de permisos de instalación en Windows, en cambio, se tiene acceso a WSL.
6.1. Gestor de paquetes
En Linux no existe ejecutables que permitan la instalación de forma gráfica y empleando asistentes de instalación.
En Linux, es necesario el uso de gestores de paquetes, que facilitan la búsqueda de la aplicación de instalar de los repositorios que se disponen, a descargarla, junto con sus dependencia y finalmente proceder a la instalación
Dependiendo de la distribución, se utilizará uno u otro:
- Ubuntu/Debian:
apt - Fedora:
dnf - openSUSE:
zypper
Es muy importante que se mantenga el gestor de paquetes actualizado, con todos los repositorios al día.
sudo apt updatesudo apt upgrade -y6.2. Aplicaciones
A continuación, se expone algunas aplicaciones que son habilituales
Entornos de desarollo
WSL facilita la instalación de lenguajes y entornos completos:
- Python:
Terminal window sudo apt install python3 python3-pip - Node.js y npm:
Terminal window sudo apt install nodejs npm - Java (OpenJDK):
Terminal window sudo apt install openjdk-17-jdk - Ruby, PHP, Go u otros lenguajes también pueden instalarse desde el gestor de paquetes correspondiente.
Esto permite compilar, ejecutar y probar programas directamente en el entorno Linux sin salir de Windows.
6.3. Compiladores y utilidades
WSL incluye o permite instalar compiladores y herramientas esenciales para desarrollo:
- Compiladores:
gcc,g++,javac - Editores de texto:
vim,nano,emacs - Sistemas de control de versiones:
git,svn - Utilidades de construcción:
make,cmake
Estas herramientas son compatibles con scripts y proyectos que tradicionalmente se ejecutan en entornos Linux, facilitando la migración de software o el trabajo educativo.
6.4. Docker y contenedores
WSL 2 es compatible con Docker Desktop, lo que permite ejecutar contenedores Linux directamente en Windows:
- Instalar Docker Desktop en Windows y habilitar la integración con WSL 2.
- Usar Docker desde la terminal de WSL:
docker run hello-world- Crear contenedores para desarrollo de aplicaciones, servidores web, bases de datos o entornos de prueba sin afectar al sistema principal.
Esto abre la puerta a un flujo de trabajo profesional que combina Linux, contenedores y herramientas modernas de desarrollo.
6.5. Integración con VS Code
Visual Studio Code ofrece soporte nativo para trabajar con WSL:
- Instalar VS Code en Windows.
- Instalar la extensión Remote - WSL desde el marketplace.
- Abrir un proyecto dentro de WSL usando VS Code con:
code .- Esto permite editar archivos, depurar código y usar terminales integradas de Linux, combinando la potencia de WSL con la interfaz de VS Code en Windows.
Gracias a esta integración, los desarrolladores pueden crear un entorno completo, híbrido y eficiente, combinando lo mejor de ambos sistemas operativos.
7. Administración avanzada
Además del uso básico, existen herramientas que permite realizar tareas avanzadas de administración para personalizar el entorno, optimizar recursos y gestionar múltiples distribuciones.
7.1. Exportar e importar distribuciones
Anteriormente se vio donde se almacenan las distribuciones y sus archivos instalados, no es recomendable copiar y pegar ese contenido para portar esas máquinas. Se dispone de una herramienta para gestionar copias de seguridad y migraciones mediante exportación e importación. WSL permite crear respaldos completos de las distribuciones y transferirlas a otros equipos:
- Exportar una distribución a un archivo tar:
wsl --export <Distribución> <Archivo.tar>Esto genera un archivo con todo el contenido de la distribución, incluyendo archivos, configuraciones y usuarios.
- Importar una distribución desde un archivo tar:
wsl --import <NombreNuevaDistribución> <DirectorioDestino> <Archivo.tar>La distribución se registra como nueva y puede iniciarse normalmente. Si se intenta importar una distribución con el mismo nombre que otra ya existente, se producirá un error.
7.2. Configuración personalizada
Por defecto, al instalar WSL se aplican valores predeterminados para la configuración de las distribuciones. Aun así es posible personalizar ciertos aspectos del entorno mediante archivos de configuración específicos.
En WSL encontramos dos archivos principales que permiten personalizar el comportamiento del entorno: wsl.conf y .wslconfig.
- .wslconfig → Se utiliza para definir parámetros globales que afectan a todas las distribuciones, pero únicamente cuando se ejecutan en WSL 2.
- wsl.conf → Permite establecer configuraciones específicas por cada distribución de Linux instalada en WSL.
un archivo .wslconfig en la carpeta de usuario de Windows (C:\Users\Usuario\.wslconfig):
Ejemplo de configuración:
[wsl2]memory=4GBprocessors=2swap=2GBlocalhostForwarding=trueOpciones principales:
memory: limita la memoria máxima que WSL puede usar.processors: número de núcleos de CPU asignados.swap: tamaño de espacio de intercambio.localhostForwarding: permite acceder a servicios de WSL desde Windows mediante localhost.
Modificar estos valores permite optimizar el rendimiento y ajustar el uso de recursos según las necesidades del usuario.
El archivo wsl.conf se encuentra en el directorio /etc/ de cada distribución.
Las configuraciones que se definan aquí se aplicarán solo a esa distribución concreta, sin afectar al resto de distribuciones instaladas en el sistema.
El contenido de este archivo emplea una sintaxis sencilla basada en secciones y opciones. Cada sección se define entre corchetes [ ] y dentro se especifican las claves y sus valores.
Por ejemplo:
- [boot] → Configura el arranque de la distribución en WSL.
systemd=true→ Activa systemd como proceso principal de inicio dentro de la distro Linux.
⚠️ Tras cualquier modificación en este fichero, es necesario reiniciar WSL.
El archivo admite cinco secciones principales: [automount], [network], [interop], [user] y [boot].
-
[automount]
Controla el montaje automático de las unidades de Windows en WSL.-
enabled (boolean, por defecto
true) → Monta automáticamente las unidades (ej. C:/) en/mnt/. -
mountFsTab (boolean, por defecto
true) → Procesa el fichero/etc/fstaben cada inicio. -
root (string, por defecto
/mnt/) → Directorio base donde se montan las unidades. -
options (lista separada por comas) → Parámetros aplicados a todas las unidades montadas.
Opciones comunes dentro de
options:uid→ ID de usuario (por defecto 1000).gid→ ID de grupo (por defecto 1000).umask→ Máscara de permisos excluidos (por defecto 000).fmask→ Máscara de permisos excluidos para ficheros.dmask→ Máscara de permisos excluidos para directorios.metadata→ Habilita el uso de metadatos NTFS para permisos Linux.case→ Control de sensibilidad a mayúsculas/minúsculas (off,dir,force).
-
-
[network]
Configura la red en WSL.- generateHosts (boolean, por defecto
true) → Genera automáticamente entradas en/etc/hosts. - generateResolvConf (boolean, por defecto
true) → Crea/etc/resolv.confcon los DNS de Windows. - hostname (string, por defecto el de Windows) → Define el nombre de host de la distribución.
- generateHosts (boolean, por defecto
-
[interop]
Define la interoperabilidad con Windows.- enabled (boolean, por defecto
true) → Permite ejecutar procesos de Windows desde WSL. - appendWindowsPath (boolean, por defecto
true) → Añade rutas de Windows a la variable$PATHde WSL.
- enabled (boolean, por defecto
-
[user]
Gestiona el usuario por defecto en WSL.- default (string) → Usuario que iniciará la sesión. Por defecto es el creado en la primera instalación.
-
[boot]
Esta opción solo disponible en Windows 11 y Windows Server 2022. Establece el arranque.- systemd (booleano) → Activa systemd como proceso principal de inicio dentro de la distro Linux
Un ejemplo de configuración de este archivo podría ser:
[boot]systemd=true
[automount]enabled=trueroot=/mnt/options=metadata,umask=22,fmask=111
[network]hostname=MiWSLgenerateResolvConf=true7.3. Optimización de recursos
Para asegurar un rendimiento óptimo:
- Cerrar distribuciones inactivas:
wsl --shutdown- Ajustar
.wslconfigsegún la memoria y procesadores disponibles. - Limpiar paquetes y archivos temporales:
sudo apt autoremovesudo apt clean- Evitar usar discos de red para archivos de trabajo intensivo; utilizar el sistema de archivos de la distribución
/homepara operaciones frecuentes.
Estas prácticas ayudan a mantener un entorno WSL eficiente, estable y rápido, incluso con varias distribuciones y servicios ejecutándose simultáneamente.
8. Casos prácticos
A continuación se exponen algunos casos habituales de forma práctica en la que se le puede dar uso a WSL.
8.1. Entorno de desarrollo web
Establecer un entorno de desarrollo web para desarrollar aplicaciones y sitios web con diferentes tecnologías:
- Servidor web: Apache, Nginx o incluso Node.js.
- Bases de datos: MySQL, PostgreSQL o MongoDB.
- Lenguajes y frameworks: PHP, Python (Django, Flask), JavaScript (Node.js, Express).
Ejemplo de instalación en Ubuntu para un entorno LAMP (Linux, Apache, MySQL y PHP) básico:
sudo apt updatesudo apt install apache2 mysql-server php libapache2-mod-php php-mysqlsudo service apache2 startsudo service mysql startDespués de esto, el desarrollador puede acceder al servidor web desde Windows usando localhost y trabajar directamente con archivos ubicados en /home/usuario/proyecto.
8.2. Uso de Git y control de versiones
Establecer Git para gestionar proyectos, aprovechando herramientas nativas de Linux:
- Configuración inicial:
git config --global user.name "Nombre"git config --global user.email "tuemail@ejemplo.com"- Clonar un repositorio:
git clone https://github.com/usuario/proyecto.git- Trabajar con ramas, commits y sincronización:
git checkout -b nueva-ramagit add .git commit -m "Descripción del cambio"git push origin nueva-rama8.3. Despliegue de servicios en local
WSL permite ejecutar servicios y aplicaciones completas de manera local para pruebas o desarrollo:
- Levantar un servidor web o API:
python3 -m http.server 8000- Ejecutar contenedores Docker:
docker run -d -p 8080:80 nginx- Probar aplicaciones de bases de datos: conectar desde Windows a PostgreSQL o MySQL en WSL usando
localhosty los puertos correspondientes.
9. Ejercicios
Ejercicio 1: Comandos Básicos en WSL
Abre tu distribución Linux en WSL. Navega hasta tu directorio home y crea una carpeta llamada proyecto.
Luego, lista el contenido del directorio y muestra la ruta absoluta actual usando comandos ls y pwd.
Ejercicio 2: Instalación de Paquetes
Usando tu distribución de WSL, instala el paquete curl y verifica que se ha instalado correctamente.
Escribe el comando para mostrar la versión instalada de curl.
Ejercicio 3: Gestión de Archivos
Dentro de la carpeta proyecto creada anteriormente:
- Crea un archivo de texto llamado
notas.txt. - Añade algunas líneas de texto usando
echoo un editor comonano. - Copia el archivo a una subcarpeta llamada
backup. - Lista el contenido de ambas carpetas para comprobar que la copia se realizó correctamente.
Ejercicio 4: Uso de Git en WSL
Configura Git en tu distribución de Linux:
- Configura tu nombre de usuario y correo electrónico.
- Crea un repositorio local dentro de
proyecto. - Añade el archivo
notas.txt, realiza un commit con mensaje"Primer commit"y verifica el historial de commits.
Ejercicio 5: Servidor Web Local
Utiliza Python para levantar un servidor web local en WSL:
- Navega hasta la carpeta
proyecto. - Ejecuta el comando
python3 -m http.server 8000. - Abre un navegador en Windows y accede a
http://localhost:8000para verificar que el servidor está funcionando.