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 antes habíamos podido imaginar: instalar Linux en Windows 10. Así es WSL.

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.

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 10 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 10 no se verá comprometido.

Además, aunque aún no está disponible, en un futuro se podrán incluso ejecutar programas con interfaz gráfica.

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, además, hay periféricos que no funcionan correctamente debido también a cómo Hyper-V controla a este Linux.

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.

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.

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.

Cómo activar Bash en Windows 10

El proceso para poder usar Linux desde Windows 10 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 10 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 10, 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, 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 10

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 10. 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.

Ubuntu 20.04 LTS
Ubuntu 20.04 LTS
Developer: ‪Canonical Group Limited‬
openSUSE Leap 42
openSUSE Leap 42
Developer: ‪SUSE‬
SUSE Linux Enterprise Server 15
SUSE Linux Enterprise Server 15
Developer: ‪SUSE‬
Kali Linux
Kali Linux
Developer: ‪Kali Linux‬
Debian
Debian
Developer: ‪The Debian Project‬
Alpine WSL
Alpine WSL
Developer: ‪agowa338‬

Bajamos la distro que queramos de la tienda y la instalamos en Windows 10. 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 del mismo nos pedirá que le especifiquemos el usuario y la contraseña que le queramos dar.

Tras esta configuración inicial, nuestro Linux dentro de Windows 10 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 10

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.