Instalación de WSL2

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 Windows 10 o superior (cualquier versión salvo Windows S).
  • La virtualización Hyper-V activada en la BIOS/UEFI (habitual en equipos nuevos).
  • La característica Windows Subsystem for Linux activada.
  • La característica Plataforma de Máquina Virtual activada.
  • Se recomienda tener las actualizaciones de Windows al día para mayor compatibilidad.

Recientemente, Microsoft ha añadido una forma automática de instalar WSL en nuestro sistema WSL, por lo que te recomiendo echarle un vistazo a esta instalación automática antes de nada, para ahorrarnos pasos si es posible.

Instalación automática

Desplegamos el menú de Inicio y escribimos Símbolo de Sistema, pulsamos con botón derecho y seleccionamos Ejecutar como Administrador. Nos aparece una terminal de texto, donde escribiremos wsl --install -d Debian. Personalmente, prefiero Debian, pero en el caso de querer instalar Ubuntu, simplemente omitimos el -d Debian y escribimos simplemente wsl --install.

Una vez hecho esto, reiniciamos la máquina. Esto realizará los pasos necesarios para tener WSL:

  • Habilitar las características opcionales necesarias.
  • Descargar el último kernel de Linux más reciente.
  • Establecer WSL2 como predeterminado.
  • Instalar Debian (o Ubuntu) como distribución de Linux en WSL.

Si este método ha funcionado correctamente, al ejecutar el comando wsl --list debería mostrarnos que tenemos una distribución Debian instalada. En ese caso, puedes saltarte la sección Instalación manual e ir directamente a ¿Qué distros tengo en WSL?.

Instalación manual

Si por alguna razón no te ha funcionado la instalación automática (o no te sirve el comando wsl --install -d Debian) detallo a continuación los pasos que habría seguir para hacerla manualmente.

Virtualización Hyper-V

En la BIOS/UEFI del equipo, debes tener activada la característica Virtualización Hyper-V o Hyper-threading virtualization. Para comprobar si la tenemos activada, pulsamos CTLR+ALT+SUPR y vamos al Administrador de tareas, a la pestaña Rendimiento. Si marcamos CPU, en las opciones inferiores podremos ver un texto que dice Virtualización: Habilitado:

Administrador de tareas / CPU / Virtualización

En ese caso, tenemos la virtualización Hyper-V activada en la BIOS y podemos saltar al siguiente punto. En caso contrario, quizás no se encuentre habilitada y debamos activarla en la BIOS. 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. Para volverla a desactivar, el comando sería bcdedit /set hypervisorlaunchtype off.

Activación de características

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 Win+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.

Ten en cuenta que el nombre de usuario que escribas va a ser el que utilizarás en WSL de forma habitual. Por ejemplo, si utilizamos el nombre de usuario manz, nuestra carpeta de usuario será /home/manz.

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 terminal de WSL

Hay que tener bien claro que bajo Windows, la terminal que utilizamos tradicionalmente es cmd.exe o Símbolo de sistema, lo que nos arranca una interfaz de línea de comandos de Windows. 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, como es el caso de Windows Terminal:

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.

Para que Windows Terminal se vea correctamente utilizando WSL, recomiendo seguir los siguientes pasos:

  • Instalar Windows Terminal Preview (versión con más novedades)
  • Instalar una tipografía compatible con carácteres especiales. Mi preferida: Victor Mono Nerd Fonts
  • Configurar la carpeta de inicio del usuario. En Windows Terminal, accedemos a la configuración con CTRL+,, buscamos en la lista nuestra distribución WSL (Debian) y en el apartado Directorio de inicio escribimos ~.

IMPORTANTE: Ten en cuenta que los tres pasos anteriores son indispensables para que se vea correctamente la terminal. Especial hincapié en el último punto, /home/manz por ejemplo, ya que bajo WSL debemos trabajar siempre en nuestra partición de Linux, ya que el acceso directo a discos NTFS de Windows desde WSL es aún bastante lento.

Por aquí tienes más información sobre la Configuración de Windows Terminal. Por otro lado, si Windows Terminal no te convence, puedes buscar en la siguiente lista otros emuladores de terminal alternativos:

Emulador GitHub Descripción
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.

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.

Tabla de contenidos