ManzDev
Perfil de Manz Dashboard de actividad
HTML5 Etiquetas HTML
CSS CSS vanilla
PostCSS Transformador CSS
Javascript Javascript ES2020+
NPM Node Package Manager
WebComponents Componentes web
Terminal Terminal de GNU/Linux
VueJS Framework VueJS 3
Automatizadores Empaquetadores Javascript
Dibujando con CSS ¡Dibujos hechos con sólo CSS!
Experimentos con Javascript ¡Experimentos con Javascript!

Instalación de WSL

Video de Youtube: WSL son las siglas de Subsistema de Windows para Linux, una novedad de Windows 10 para instalar Linux dentro de nuestro sistema Windows.

Si lo prefieres, este tema lo tienes disponible en formato de video en ManzDev, mi canal de Youtube. Son sesiones en vivo donde hago streaming explicando temas tecnológicos u otras cosas relacionadas. ¡Si te interesa, sígueme en Twitch! Video: Youtube: Instalación de WSL.

Tradicionalmente, Windows ha proporcionado a sus usuarios una interfaz de línea de comandos que funciona bajo su propio sistema, heredado de MS-DOS y diferente a GNU/Linux, el cuál se basa en un sistema UNIX. Sin embargo, en Windows 10, con la irrupción de Windows Subsystem for Linux (más comunmente denominado WSL), esto ha cambiado radicalmente.

Otros sistemas operativos como GNU/Linux o Mac, disponen de una interfaz de línea de comandos basada en UNIX, por lo que hasta el momento era bastante complejo tener compatibilidad entre sistemas. Con la adopción de WSL en Windows, Microsoft introduce una capa intermedia que funciona con un núcleo de Linux real (kernel) y en el que se pueden instalar distribuciones de GNU/Linux (desde la tienda oficial de Microsoft o de forma manual) como por ejemplo Ubuntu, Debian, Kali o incluso la distribución minimalista Alpine.

Requisitos previos

Para poder disponer de una terminal de GNU/Linux en nuestro Windows, antes necesitamos asegurarnos que nuestro equipo cumple los siguientes requisitos:

  • Necesitaremos tener activada la virtualización Hyper-V en la BIOS/UEFI.
  • Necesitaremos tener Windows 10, en cualquiera de sus versiones (salvo Windows S).
  • Debemos tener la característica Windows Subsystem for Linux activada.
  • Debemos tener la característica Plataforma de Máquina Virtual activada.
  • Debemos tener actualizado Windows 10 al menos hasta Mayo de 2020 (Para WSL2).

Activación de características

En la BIOS/UEFI del equipo, debes tener activada la característica Virtualización Hyper-V o Hyper-threading virtualization. Dicha característica puede encontrarse en un menú diferente, dependiendo de la marca y modelo de la placa.

Es posible activar esta característica desde el Símbolo de sistema de Windows como administrador, escribiendo el comando bcdedit /set hypervisorlaunchtype auto. Si quieres volverla a desactivar, el comando sería bcdedit /set hypervisorlaunchtype off.

Por otro lado, para activar las características mencionadas anteriormente en Windows, accedemos a Inicio y buscamos Activar o desactivar características de Windows, donde encontraremos un menú de selección para activar las casillas Subsistema de Windows para Linux y Plataforma de máquina virtual:

Instalación de características para Windows Subsystem Linux (WSL)

La primera de ellas es absolutamente necesaria, puesto que es el propio WSL. La segunda de ellas es necesaria para utilizar WSL2, y es posible que no aparezca si no tienes Windows 10 actualizado. Puedes comprobarlo, accediendo a Inicio y abriendo una terminal de Windows escribiendo CMD o Símbolo de sistema y escribiendo lo siguiente:

> ver

Microsoft Windows [Versión 10.0.19042.906]

El comando ver nos mostrará la versión instalada de Windows 10. Si es igual o superior a 10.0.19041, podremos utilizar WSL2, en caso contrario, es posible que no podamos utilizar WSL (o sólo podamos usar WSL1). Para solucionarlo, revisa las actualizaciones de Windows e instala las que tengas pendientes.

Nota: También es posible comprobar que versión tenemos instalada pulsando +R y escribiendo winver. Si tenemos la versión 2004 o superior, podremos utilizar WSL2.

¿Qué distros tengo en WSL?

Windows Subsystem for Linux funciona de modo que podemos tener varias distribuciones instaladas en nuestro sistema y utilizar la que queramos. Para ver que distribuciones tenemos instaladas, abrimos una terminal de Windows (CMD) y escribimos wsl --list:

> wsl --list

El subsistema de Windows para Linux no tiene distribuciones instaladas.
Para instalar las distribuciones, se puede visitar Microsoft Store:
https://aka.ms/wslstore

En el caso de tener alguna distribución de Linux instalada, nos aparecerían en la lista, como veremos un poco más adelante.

Si en lugar de aparecernos el mensaje anterior nos muestra un error por no encontrar el comando wsl, muy probablemente no tengamos instalada la característica Windows Subsystem for Linux que mencionamos en el apartado anterior.

Instalar Linux (WSL)

El primer paso que deberíamos realizar es instalar una distribución de GNU/Linux en nuestro WSL. Existen muchas de ellas para elegir. Personalmente suelo elegir Debian, aunque también hay otras distribuciones:

Distribución Página oficial Enlace a tienda Microsoft Descarga manual (.appx)
Debian Linux Debian Debian MS Store Debian .appx
Ubuntu Linux Ubuntu Ubuntu MS Store Ubuntu 20.04 .appx
Kali Linux Kali Kali MS Store Kali Linux .appx
Open Suse Open Suse Open Suse MS Store Open Suse .appx
Alpine Linux ¹ Alpine Alpine MS Store

¹ No oficial.

Las distribuciones se pueden instalar automáticamente desde la tienda oficial de Microsoft, o manualmente, ejecutando un archivo .appx que contiene la distribución de Linux a instalar. Si lo hacemos de la primera forma, se instalará de forma transparente, si lo hacemos de la segunda forma, nos mostrará una ventana similar a la siguiente:

WSL: Instalación de Debian en Windows Subsystem Linux

Una vez instalada la distribución de Linux en nuestro sistema, tras esperar un corto espacio de tiempo, al iniciarla por primera vez nos aparecerá una ventana parecida a esta:

Installing, this may take a few minutes...
Please create a default UNIX user account. The username does not need to match your Windows username.
For more information visit: https://aka.ms/wslusers
Enter new UNIX username:

En ella, se nos preguntará el nombre de usuario y su correspondiente contraseña para utilizar en nuestra distribución de Linux de WSL. El nombre de usuario debe estar en minúsculas y no es necesario que coincida con el nombre que tengamos en nuestra cuenta de Windows.

Una vez hecho esto, escribimos exit (o cerramos la ventana y volvemos a abrir un símbolo del sistema). Vamos a comprobar que todo ha ido bien y tenemos una distribución instalada:

> wsl --list
Distribuciones del subsistema de Windows para Linux:
Debian (predet.)

Como se puede ver, en nuestro caso nos aparece una distribución Debian (marcada como predeterminada). Si instalasemos varias distribuciones las veríamos en esta lista, y podríamos seleccionar una como predeterminada escribiendo wsl --set-default Debian o wsl -s Debian.

¿Estoy utilizando WSL1 o WSL2?

Si deseas conocer si la distribución de Linux que tienes instalada está utilizando WSL1 o WSL2, es tan fácil como escribir el comando anterior con los siguientes parámetros:

> wsl --list --verbose
  NAME                   STATE           VERSION
* Debian                 Running         2
  docker-desktop         Stopped         2
  docker-desktop-data    Stopped         2

De esta forma podrás saber las distribuciones que tienes instaladas, si están en funcionamiento actualmente y en que versión de WSL.

Es conveniente migrar a WSL2, ya que ofrece mayor rendimiento y características que WSL1. Si acabas de instalar WSL, comprueba siempre en que versión de WSL tienes tus distros.

Convertir distro WSL1 a WSL2

Por defecto, en nuestro Windows 10, actualmente las distribuciones se instalan como distros utilizando WSL1. Sin embargo, WSL2 está disponible y proporciona múltiples mejoras, ya que incorpora un kernel de Linux real utilizando Hyper-V, ofreciendo así un rendimiento más alto, a la vez que mejor soporte y compatibilidad.

Para aprovechar las últimas ventajas de WSL, es necesario convertir las distribuciones a WSL2, cosa que podemos hacer simplemente escribiendo wsl --set-version Debian 2, lo que convertirá nuestra distribución «Debian» a WSL2:

En el caso de que nos aparezca el error Habilita la característica Plataforma de máquina virtual de Windows y asegúrate de que la virtualización esté habilitada en el BIOS. revisa los puntos mencionados en activación de características.

Si todo ha ido bien, nos debería aparecer una pantalla similar a esta:

> wsl --set-version Debian 2
Conversión en curso, esto puede tardar unos minutos...
Para información sobre las diferencias clave con WSL 2, visita https://aka.ms/wsl2
Conversión completada.

En el caso de que nos aparezca el mensaje La distribución ya es la versión solicitada. significa que no se requiere conversión, ya que la distribución actual ya es WSL2.

Si estamos completamente seguros de querer que todas las distribuciones que utilicemos a partir de ahora sean WSL2, no tenemos más que escribir el comando wsl --set-default-version 2, que indicará a WSL que todas las distribuciones que utilicemos funcionen bajo WSL2 por defecto. De esta forma, el paso anterior no será necesario a partir de ahora.

Actualización de su componente kernel

En algunos casos, es posible que nos aparezca un error similar al siguiente:

> wsl --set-version Debian 2
Conversión en curso, esto puede tardar unos minutos...
Para información sobre las diferencias clave con WSL 2, visita https://aka.ms/wsl2
WSL 2 requiere una actualización de su componente de kernel. Para obtener información, visita https://aka.ms/wsl2kernel

Este problema ocurre porque necesitamos actualizar el kernel de Linux para Windows. Podemos hacerlo simplemente descargando la actualización oficial desde su página: wsl_update_x64.msi. Esto nos mostrará una actualización con el siguiente aspecto:

WSL Kernel Update

Hacemos click en Siguiente, y en breve lo tendremos actualizado.

Iniciar distro de Linux WSL

Hay que tener bien claro que bajo Windows, la terminal que utilizamos es cmd.exe o Símbolo de sistema, lo que nos arranca una interfaz de línea de comandos de Windows. Es en esta interfaz donde podemos ejecutar el comando wsl.

Para arrancar una distribución de Linux de las que hemos instalado, tendremos que acceder escribiendo wsl (para entrar en la distribución predeterminada) o escribiendo wsl -d Debian para indicar la distribución a la que queremos entrar, en el caso de tener varias.

Sin embargo, ya te habrás dado cuenta que la terminal de Windows (CMD) es bastante pobre y limitada, sobre todo en cuanto a características de personalización. La mejor opción, ahora que tenemos WSL, es instalar un buen y moderno emulador de terminal, que nos de una buena experiencia al utilizar la terminal.

Algunos de los mejores emuladores de terminal para Windows son los siguientes:

Emulador GitHub Descripción
Terminal GitHub Nueva terminal oficial de Microsoft, conocida como Windows Terminal.
Terminal Prev GitHub Versión «Preview» (beta) con las últimas mejoras de Windows Terminal.
ConEmu GitHub ConEmu-Maximus5, potente emulador de terminal ultra-personalizable.
Cmder GitHub Fork de ConEmu, orientado a usabilidad y aspecto visual.
Hyper GitHub Emulador de terminal basado en Electron.
wsl-terminal GitHub Emulador de terminal diseñado especialmente para WSL.
ConsoleZ GitHub Fork de Console2, orientado en una mejor experiencia visual.
FluentTerminal GitHub Emulador de terminal construída como aplicación universal de Windows (UWP).
Terminus GitHub Emulador de terminal moderno y visual.

Personalmente, uno de mis preferidos era ConEmu, el cuál tiene multitud de opciones de personalización y permite configurar prácticamente cualquier aspecto del mismo, como por ejemplo, crear una tarea llamada {Shells::WSL} que ejecute wsl.exe al abrir la terminal, y así utilice directamente la distribución de Linux por defecto de WSL.

Sin embargo, para utilizar bajo WSL está mucho más preparado Windows Terminal, el cuál recomiendo en su versión Preview si estás utilizando WSL.

Acceder a Linux desde Windows

Si queremos acceder a una partición de nuestra distro de Linux WSL2 desde el Explorador de archivos de Windows, es posible accediendo a la siguiente ruta:

\\wsl$\Debian\home\manz

Donde:

  • \\wsl$\ Es el acceso a WSL2
  • Debian Es el nombre de nuestra distro de Linux WSL
  • \home\manz Es la ruta de linux a acceder (también es posible indicar las slashes no invertidas)

En algunos casos, también es posible acceder desde el apartado de Red de Windows (si tienes activado los archivos y carpetas compartidas). Es posible que acceder a estas rutas en algún caso aparezca una carpeta vacía. Esto suele ocurrir porque Windows aún no ha iniciado el subsistema WSL, basta con abrir una terminal para obligarlo a que arranque.

Convertir rutas Windows a WSL

Si lo necesitas, WSL incorpora un comando llamado wslpath, que te permite hacer traducciones de rutas Windows a rutas Linux y viceversa desde nuestra terminal de Linux. Para ello, solo tienes que escribir el comando wslpath RUTA_WINDOWS para obtener la misma ruta en formato Linux, o al contrario, escribir el comando wslpath -w RUTA_LINUX para obtener la ruta en formato Windows:

WSL: wslpath

Esto puede ser una forma interesante para intercomunicar ambos sistemas mediante scripts o tareas.

Establecer nuestro usuario por defecto

Si queremos cambiar el usuario por defecto de nuestra distro WSL, es decir, el usuario con el que se inicia la sesión, podemos hacerlo de la siguiente forma:

  • Editamos el fichero /etc/wsl.conf, el cuál ya contendrá algunas lineas.
  • Si no contiene la sección [user] la añadimos, si ya la tiene, la modificamos.
  • En el valor default= escribimos el nombre de nuestro usuario (¡siempre en minúsculas!)

Quedaría algo así:

$ cat /etc/wsl.conf

[automount]
root = /
options = "metadata"

[network]
generateResolvConf = true

[user]
default=manz

Es posible que tengamos que reiniciar o hacer un wsl --shutdown desde un símbolo de sistema para obligar a WSL que apague el núcleo de WSL y vuelva a arrancarlo, y así actualizar la configuración y haga efecto.

Exportar e importar distros de WSL

WSL ofrece un sistema muy práctico y sencillo para hacer copias de seguridad o exportar/importar distros con todo su contenido idéntico, algo muy útil si queremos hacer backups o exportar una distro para recuperarla en otro equipo.

Para ello, vamos a un Símbolo de sistema (terminal de Windows) y escribimos lo siguiente:

> wsl --export Debian backup-wsl.tar

Esto exportará todo el sistema de archivos de la distribución Debian y lo empaquetará en el archivo backup-wsl.tar. Este proceso puede llevar un buen rato, dependiendo de la velocidad de tu disco duro y del tamaño de ladistro, ¡no desesperes!

Luego, la operación inversa para recuperar la distro sería la siguiente:

> wsl --import Debian C:\wsl\debian backup-wsl.tar --version 2

Con esta linea, importaremos el fichero exportado previamente en backup-wsl.tar como una distro llamada Debian, indicando que debe guardarse en la carpeta c:\wsl\debian y que debe usar WSL2.

Manz
Publicado por Manz

Docente, divulgador informático y Streamer de código. Amante del CSS y de la plataforma web en general. Autor de Emezeta.com tiempo atrás. Ha trabajado como profesor en la Universidad de La Laguna y es director del curso de Programación web FullStack y FrontEnd de EOI en Tenerife. En sus ratos libres, busca GIF de gatos en Internet.