Aprende a usar WSL, el Subsistema de Windows 10 para Linux

Aprende a usar WSL, el Subsistema de Windows 10 para Linux

Rubén Velasco

Durante muchos años, las únicas formas de poder usar Linux junto con Windows han sido, o bien instalar un Dual-Boot con los dos sistemas operativos (pudiendo usar solo uno a la vez), o montar una máquina virtual con el segundo sistema operativo en ella. Linux y Microsoft han sido rivales durante muchos años, y han estado compitiendo por ganarse la confianza de los usuarios. Sin embargo, y para bien de todos, esta rivalidad se ha convertido en amistad, y desde hace algún tiempo podemos hacer lo que nunca habíamos podido imaginar: instalar Linux en Windows 10 o Windows 11. Así es WSL.

Qué es el Subsistema de Windows para Linux

WSL, Windows Subsystem for Linux, o Subsistema de Windows para Linux, es una característica introducida en Windows 10 que nos permite instalar un Kernel Linux directamente sobre el sistema operativo de Microsoft. Esto es posible gracias a la virtualización de Hyper-V de Microsoft, y al hacerlo vamos a poder tener acceso a todos los comandos y todos los programas de terminal de este sistema operativo directamente desde una ventana de CMD.

Por lo tanto, no, con WSL no vamos a tener una experiencia completa de escritorio de Linux, como sí obtendríamos al ejecutar Ubuntu, Debian o Kali Linux, por ejemplo, desde VirtualBox. Si es cierto que técnicamente, utiliza la virtualización por razones de rendimiento, pero, aun así, es muy diferente a ejecutar una máquina virtual completa. Todo el proceso es administrado por el usuario, pues solo nos proporciona un Shell y un entorno simple para que podamos hacer nuestro trabajo y usar comandos Bash. Estos pueden ser tan familiares como git, sshy y todas las herramientas que incorporen la distribución elegida.

Principalmente, WSL nos permite instalar una distribución completa de Linux como una aplicación cualquiera de las que podemos encontrar en su tienda de aplicaciones. Simplemente debemos descargar Ubuntu (o la distribución que queramos usar), instalarlo y tenerlo disponible a modo de aplicación que podemos iniciar, o bien un perfil en su en nuestra terminal para ejecutar junto con CMD o PowerShell.

Por lo tanto, la instalación del Bash Linux sobre Windows es un proceso muy rápido y sencillo que apenas requiere de configuraciones. Además, es muy seguro, ya que, aunque puede acceder al sistema de archivos de Windows e interactuar con el sistema operativo de Microsoft, nada de lo que hagamos en este Linux podrá hacer que Windows deje de funcionar. Una simple reinstalación de Linux volverá a hacer que todo vuelva a funcionar con normalidad. Además, como solo se carga el Kernel, es una implementación muy ligera que apenas influye en el rendimiento general del PC.

Ventajas de WSL

El Subsistema de Windows para Linux puede ser útil tanto para usuarios aficionados que empiezan a dar los primeros pasos en este sistema operativo como para usuarios avanzados y administradores de sistemas.

La finalidad principal de WSL es permitir a los administradores de sistemas, y a los programadores, usar todas las herramientas y todos los servicios de Linux directamente desde Windows sin tener que virtualizar nada más ni montar infraestructuras complicadas. Al final, vamos a poder hacer todo lo que podríamos hacer si instalásemos Linux en una máquina virtual o en otro PC, y lo usáramos desde terminal o TTY. Todos los comandos de Linux deberían funcionar sin problema en Windows, como apt o dpkg. Incluso podremos compilar código directamente desde aquí con las ventajas que aporta Linux en este sentido.

Pero esta implementación también es útil para los usuarios que están dando sus primeros pasos dentro de los sistemas Linux. Gracias a ella, cualquier usuario podrá tener a su alcance todas las herramientas de Linux sin necesidad de tener que configurar ni virtualizar nada. Y, además, tendrá la seguridad de que, si algo sale mal, solo tendrá que reinstalar la distro en WSL, ya que Windows no se verá comprometido.

También hay que tener en cuenta que un problema persistente cuando ejecutamos Linux en su versión de escritorio es el soporte de hardware, especialmente en portátiles. Este problema es algo que no tendremos con WSL, ya nos aseguramos una compatibilidad total. Otra ventaja interesa es que, WSL nos va a permitir una verdadera interoperabilidad entre Windows y Linux, ya que vamos a poder explotar el sistema de archivos de Linux desde Windows y viceversa, así como iniciar programas desde las líneas de comando de uno y otro. Además, aunque aún no está disponible, en un futuro se podrán incluso ejecutar programas con interfaz gráfica.

WSL ya se ejecuta en Windows, por lo que no es necesario iniciar una máquina virtual cada vez que necesitamos de Linux, siempre y cuando no dependamos de una interfaz gráfica. Aunque una máquina virtual es más rápida y fácil de configurar, sigue siendo una máquina independiente al sistema operativo, aunque las limitaciones se reducen si activamos las opciones para compartir unidades y archivos entre el sistema operativo anfitrión y el invitado.

A la hora de compartir datos desde Windows con unidades con formato ext4, aunque Windows no ofrece soporte para este sistema de archivos, si lo vamos a encontrar en WSL, por lo que si, en algún momento nos vemos en la necesidad de acceder a unidades de nuestro equipo gestionados por el sistema de archivos de Linux, podemos recurrir a WSL para acceder sin necesidad de instalar ninguna aplicación adicional.

Si optamos por el arranque dual, debemos reservar espacio en el disco duro para instalar el sistema y asegurarse de tener medios de respaldo por si algo falla. Si queremos pasar de Windows a Linux o viceversa, la única solución para por reiniciar el equipo y arrancar con el sistema operativo que necesitamos en ese momento. Sin embargo, no es necesario si queremos acceder a los archivos que tengamos almacenados en ambas unidades, ya que Linux es compatible con el sistema de archivos NTFS y Windows es capaz de acceder a unidades ext4 a través de WSL, reduciendo así la obligación de reiniciar el equipo.

Inconvenientes y limitaciones

Una de las principales limitaciones de WSL es que no es un Kernel nativo, sino que depende de Hyper-V. Y esto arrastra una serie de problemas e inconvenientes, como, por ejemplo, la escalabilidad y el rendimiento a la hora de ejecutar determinadas tareas. También debemos tener en cuenta que WSL1 no tiene soporte para kernel-level, por lo que algunos programas, como Docker, no funcionarán. Esto ya ha sido solucionado en WSL2.

La conectividad de red funciona en WSL, pero debe pasar por varias capas. Esto implica una considerable pérdida de rendimiento a la hora de ejecutar procesos que funcionen a bajo nivel de red. Y, también hay que tener en cuenta que, hay periféricos que no funcionan correctamente debido también a cómo Hyper-V controla a este Linux.

Además, no podemos obviar que, dado que WSL se ejecuta en un entorno de Windows, es posible que esto haga pensar a muchas personas que no es necesario instalar una versión de escritorio de Linux. Y es que dado que ya tienen un escritorio con Windows es posible que no vean el sentido que puede tener instalar un sistema operativo de escritorio completamente nuevo, pues ahora van a poder ejecutar aplicaciones GUI de Linux en Windows.

Aunque podemos hacer uso de WSL en Windows Server, las distribuciones disponibles en la Microsoft Store no están diseñadas para ejecutarse como servidores, lo que puede suponer un problema para muchos usuarios. La mayoría de estas distribuciones no ejecuta systemd, por lo que la tarea de lanzar servidores es prácticamente imposible.

WSL es una excelente opción para los usuarios con necesidades básicas. Sin embargo, no está pensado para grandes cargas de trabajo de producción, sino para tareas mucho más sencilla. Aunque con el lanzamiento de WSL2, la funcionalidad ha mejorado bastante, hasta que no se lance una interfaz gráfica, WSL seguirá siendo una característica de Windows muy limitada. Si realmente queremos sacarla el máximo partido a una distribución Linux, podemos utilizar una máquina virtual, aunque también nos vamos a encontrar con determinadas limitaciones siendo la mejor solución utilizar un gestor de arranque e instalar Linux directamente junto a Windows en un mismo equipo. De esta forma, vamos a poder aprovechar al máximo todas las prestaciones que Linux pone a nuestra disposición.

Diferencias con versiones y tecnologías de virtualización

Hay varias versiones de este subsistema en función de la versión de Windows que utilicemos. Y, por supuesto, hay también diferencias con las distintas tecnologías de virtualización. A continuación, vamos a verlas todas ellas.

WSL1 vs WSL2

Con la actualización de mayo de 2020 para Windows 10, Microsoft llevó a los usuarios WSL2, una versión actualizada y mejorada de WSL1. La principal diferencia entre la primera versión y la segunda versión de este subsistema es que mientras que la primera se ejecutaba en una capa intermedia entre el hardware y el sistema operativo, ahora WSL2 cuenta con su propia máquina virtual de Hyper-V que, junto con un Kernel especialmente compilado para este fin, permite interactuar mucho mejor con las llamadas del sistema, mejorando el rendimiento y todas las posibilidades que nos ofrece.

WSL2 cuenta con un hipervisor nativo que permite ejecutar un Kernel real directamente en Windows. Con esto, se solucionan todos los problemas de rendimiento y se compatibilidad con servicios y programas, consiguiendo incluso una mejora de rendimiento de hasta un 500% al realizar determinadas tareas. La entrada y salida de datos también se ha mejorado considerablemente, pudiendo incluso acceder a ellos desde el propio explorador de archivos, y además ahora es mucho más rápido y sencillo cambiar de distribución.

Windows 11 incluye por defecto la versión WSL2, con todas las mejoras y optimizaciones esperadas. Y, además, Windows 11 también incluye una nueva plataforma de virtualización que veremos más adelante: WSA:

WSL2 vs máquina virtual

Entonces, ¿qué ventajas (e inconvenientes) aporta WSL2 frente a instalar Linux en una máquina virtual como VirtualBox o VMware? La primera diferencia es que, mientras que un Linux en una máquina virtual está aislado, WSL2 está totalmente integrado con Windows, por lo que ambos sistemas pueden interactuar entre sí. Además, el Subsistema de Windows puede cargar Linux en tan solo un segundo, mientras que una máquina virtual es bastante más lenta a la hora de arrancar el sistema.

El consumo de recursos es también muy considerable. Mientras que WSL2 es muy ligero y gasta muy poca memoria RAM, una máquina virtual consume muchos más recursos en este aspecto, ya que comparte la memoria RAM y el uso del procesador para mantener en funcionamiento tanto el sistema operativo anfitrión (Windows) como el sistema operativo invitado (Linux), por lo que en equipos justos de recursos, puede no ser una opción a considerar.

Y, aunque es cierto que una máquina virtual ofrece más control y más opciones de personalización, Windows Subsystem for Linux solo se ejecuta cuando lo necesitamos, y solo carga los procesos y servicios necesarios para lo que necesitemos hacer.

Si no sabemos qué sistema usar, os recomendamos usar una máquina virtual cuando:

  • Necesitemos sacarle todo el provecho a Linux.
  • Tengamos previsión de escalabilidad en función de los niveles de producción.
  • Queramos usar un sistema operativo con interfaz y aplicaciones de entorno gráfico.
  • Vayamos a hacer un uso intensivo de la red en el que el rendimiento es esencial.

Y podemos optar por WSL cuando:

  • Queramos ejecutar comandos básicos de Linux.
  • Queramos gastar poca memoria y pocos recursos del PC.
  • Necesitemos eficiencia de almacenamiento.
  • No queramos/podamos/sepamos usar máquinas virtuales.
  • Queramos un acceso rápido al sistema de archivos, e interactuar con el sistema de archivos de Windows directamente.

WSL vs Docker

Otra de las tecnologías más usadas cuando hablamos de virtualización es Docker. A diferencia de los métodos anteriores, esta tecnología no crea un entorno Linux completo que podemos usar sin limitaciones, sino que se crea, dentro de un contenedor, un entorno Linux mínimo sobre el cual debemos ejecutar tan solo un programa o servicio. La ventaja de esta tecnología es que todo lo que ejecutamos dentro de este contenedor funciona de forma aislada a todo lo demás. Es decir, si necesitamos tener en marcha dos servicios diferentes (por ejemplo, un servidor web y un servidor FTP), no los crearemos dentro de un mismo contenedor, sino que crearemos dos contenedores conectados, y dentro de cada uno se ejecutará cada servicio.

Docker es multiplataforma, y hace alusión al eslogan «Build, Share, and Run», por lo que es muy fácil poner en marcha cualquier servicio y mantenerlo. Incluso hacer copias de seguridad. Además, todo el entorno virtualizado es mucho más seguro gracias a que cada servicio está aislado, y un fallo en uno de ellos no dará acceso a todo el sistema a un atacante. Por desgracia, no todo son ventajas, y es que, al trabajar con contenedores, el desarrollo se hace siempre en producción (con el riesgo que eso supone), y además hay que dar más vuelta hasta entrar en la consola de desarrollo.

Cómo activar Bash en Windows

El proceso para poder usar Linux desde Windows se divide principalmente en dos partes. La primera de ellas es activar el Subsistema Linux para Windows. Para ello, en el apartado de búsqueda de Windows debemos buscar «Características de Windows» para poder abrir la herramienta que nos permite activar o desactivar las herramientas y los servicios avanzados del sistema.

Abrir características de Windows 10

En la nueva ventana que nos aparecerá tendremos que activar dos casillas. La primera de ellas será Hyper-V, para poder activar el hipervisor de Windows, y la segunda de ellas será el Subsistema de Windows para Linux.

Aceptamos los cambios, reiniciamos el PC cuando nos lo pida, y cuando el ordenador vuelva a arrancar ya estará preparado para ejecutar Linux.

Desde PowerShell

Si lo preferimos, podemos hacer esto mismo ejecutando los siguientes comandos en una ventana de PowerShell con permisos de Administrador. Lo primero será preparar el sistema para instalar esta característica opcional con:

Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux

Reiniciamos el PC y, a continuación, ejecutaremos este comando que nos permitirá habilitar Hyper-V en nuestro sistema:

dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart

Y el segundo, activar el subsistema de Windows para Linux.

dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart

Activar WSL desde PowerShell

Con un comando de CMD

Además, si tenemos una versión de Windows 10 igual, o superior, a la 2004, o 20H1, así como Windows 11, con la llegada de WSL2 también podemos activar esta consola con un simple comando de CMD:

wsl --install

Instalar WSL2

Importante: actualizar el Kernel de Ubuntu para WSL2

Es probable, sobre todo si hemos usado WSL1 alguna vez, que al pasar a esta nueva versión del Subsistema de Windows para Linux veamos un mensaje como «WSL 2 requires an update to its kernel component. For information please visit https://aka.ms/wsl2kernel». Este mensaje lo que nos quiere decir es que debemos actualizar el Kernel de Linux en Windows para poder usar el subsistema.

Este proceso es muy sencillo. Lo único que debemos hacer es acceder a este enlace, bajar el instalador e instalarlo en nuestro PC. Listo. Tras reiniciar el ordenador ya tendremos el Kernel actualizado, y WSL2 funcionará sin problemas.

Descargar Linux en Windows

Ya tenemos activado WSL, pero de momento no sirve de nada. Para poder empezar a usarlo, tenemos que bajar la distro que queramos instalar en nuestro Windows. Aunque poco a poco va habiendo más distros adaptadas a este subsistema, el número de alternativas disponibles es aún bastante limitado. Y no vale bajarlas de cualquier sitio, sino que tenemos que descargarlas desde la Microsoft Store.

Podemos encontrar todas las distros para WSL de la Microsoft Store escribiendo «Linux» en el buscador de la tienda.

Linux en la MS Store

Las principales distribuciones que podemos encontrar son las siguientes.

openSUSE Leap 42
openSUSE Leap 42
Developer: SUSE
Kali Linux
Kali Linux
Developer: Kali Linux
Debian
Debian
Alpine WSL
Alpine WSL
Developer: agowa338

Bajamos la distro que queramos de la tienda y la instalamos en Windows. Ya estaría lista para empezar a utilizarla. Pero antes de nada nos vamos a asegurar de que utilizamos la versión 2 de WSL para poder disfrutar de sus ventajas. Esto podemos hacerlo abriendo una ventana de PowerShell con permisos de Administrador y ejecutando el siguiente comando, cambiando «distro» por el nombre de la distro que hayamos bajado.

wsl --set-version distro 2

Si no sabemos el nombre de la distro, podemos ver todas las que tenemos instaladas con el comando:

wsl --list --quiet

Este comando tardará unos minutos en ejecutarse. Cuando acabe, ya tendremos nuestro WSL2 con la distro que hayamos elegido lista para usarla.

Actualiza de WSL a WSL2

Si tenemos ya creado un sistema WSL1 en el PC, y queremos poder aprovecharnos de las mejoras que nos ofrece el nuevo subsistema WSL2, entonces lo que debemos hacer es ejecutar el siguiente comando en la ventana de CMD para indicar al sistema que queremos que pase la distro actual de WSL a WSL2.

wsl --set-version nombre_distro 2

Debemos cambiar «nombre_distro» por el nombre de la distro en cuestión. Podemos ver las distros instaladas (y sus nombres) con el comando:

wsl --list --verbose

Primer uso

La primera vez que abramos la distro, esta dará comienzo a un proceso de instalación y configuración automático. Este proceso no tardará mucho, y en un punto de este nos pedirá que le especifiquemos el usuario y la contraseña que le queramos dar. Tanto el nombre de usuario como la contraseña no tienen que estar relacionados con los datos que utilizamos en Windows, son completamente independiente y exclusivos para la distribución que hayamos instalado.

Tras esta configuración inicial, nuestro Linux dentro de Windows estará listo para usarlo. Pero, antes de nada, debemos actualizarlo. Esto podemos hacerlo fácilmente igual que si actualizáramos Linux en un ordenador real o una máquina virtual. Bastará con ejecutar:

sudo apt update && sudo apt upgrade

Ubuntu Subsistema Linux para Windows

Cómo abrir Linux en Windows

Gracias a WSL vamos a poder usar las herramientas y los programas de Windows directamente desde CMD o PowerShell. Para ello, simplemente tenemos que ejecutar el comando «wsl», seguido del comando que queremos ejecutar, en la ventana de PowerShell. Por ejemplo, «wsl ls» nos mostrará el contenido del directorio actual.

Pero si queremos tener acceso directo sobre la terminal de la distro Linux, entonces lo que debemos hacer es buscar el lanzador de la distro instalada en el menú inicio de Windows, y ejecutarlo desde ahí. También podemos ejecutar el comando «bash.exe» desde PowerShell para lanzar la implementación completa de Linux en Windows.

La consola de WSL tendrá una apariencia similar a la de un terminal Linux, y la diferenciaremos porque, además de aparecer el logotipo de la distro en la barra de título de la ventana, podremos ver que las líneas comienzan por usuario@equipo.

Usar WSL2 con entorno gráfico

Microsoft aún no ha habilitado el entorno gráfico de WSL. Este llegará en un futuro (no muy lejano) como parte de una actualización de WSL2. Pero mientras llega, si queremos poder usar el subsistema de Windows para Linux como si fuese una máquina virtual, con el ratón y las ventanas, es necesario recurrir a proyectos externos. Y el más avanzado es Win-KeX.

Win-KeX, o Windows Kali Desktop eXperience, es un entorno gráfico desarrollado por los responsables de Kali Linux para permitir a los usuarios usar este subsistema en modo gráfico. Este nos carga una ventana de escritorio remoto (por VNC) y nos permite usar la distro Kali como si se tratase de un sistema operativo instalado, por ejemplo, en VirtualBox. Además, tiene un modo que nos permite integrarlo junto al escritorio de Windows de manera que podremos usar al mismo tiempo programas de Linux y de Windows.

Kali Linux WSL2 Seamless

El Subsistema de Windows para Android

Una de las novedades que va a llegar con Windows 11 es la posibilidad de ejecutar aplicaciones de Android dentro del sistema operativo. Para ello, Microsoft va a usar un concepto similar al del Subsistema de Windows para Linux, junto con algunas tecnologías presentes en los procesadores más modernos. Esto significa que, aunque va a ser una función gratuita para todos, solo podrán hacer uso de ella los que tengan un procesador Intel, de décima generación en adelante, de gama media o alta.

Eso sí, la forma de usarlo es mucho más sencilla que la de este subsistema. Gracias a un acuerdo con Amazon App Store, podremos buscar las aplicaciones en la propia tienda de Windows, la Microsoft Store, bajarlas e instalarlas. Y estas se ejecutarán directamente, sin tener que ejecutar otros comandos ni nada, disfrutrando de la interfaz gráfica que nos ofrecen y no como actualmente podemos disfrutar de Linux en Windows a través de WSL. Es de suponer que, con el tiempo, Linux implementará una interfaz gráfica para WSL, ya que la utilidad real que tiene en la actualidad está limitada a un número muy reducido de usuarios, especialmente aquellos que tienen amplios conocimienetos de este sistema operativo.

1 Comentario