WSL es el subsistema de GNU/Linux para Windows. Con él puedes utilizar una terminal de GNU/Linux dentro de Windows 10 (o superior). Antes de comenzar a utilizarlo, debes tener instalada una distribución de GNU/Linux, por lo que vamos a comprobar cuál tenemos instalada.
En este artículo revisaremos que tengas perfectamente instalada y configurada la WSL, o resolveremos posibles problemas que puedas tener.
Vamos a abrir una terminal de Windows pulsando Win+R y escribiendo cmd
. Una vez hecho esto, en la ventana que nos aparece escribimos wsl --list
:
> 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 todas en esta lista. Observa que una de ellas debe aparecer con el texto (predet.)
, que es la distribución WSL por defecto. Si queremos cambiar una y establecerla como predeterminada, solo tenemos que escribir wsl --set-default Debian
o wsl -s Debian
.
Si no te aparece ninguna distribución al escribir
wsl --list
o te menciona que el comandowsl
no existe, ve al apartado Instalación de WSL, ya que te falta completar su instalación.
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.
Es posible que nuestra distribución se instalara como una distribución 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.
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:
Hacemos click en Siguiente, y en breve lo tendremos actualizado.
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 beta con las últimas mejoras, conocida como Windows Terminal Preview. |
Para que Windows Terminal se vea correctamente utilizando WSL, recomiendo seguir los siguientes pasos:
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. 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.
Si lo deseas, por aquí tienes más información sobre la Configuración de Windows Terminal.
Por otro lado, si Windows Terminal no te convence como emulador de terminal, 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. |
Tabby | GitHub | Una terminal moderna para la nueva era |
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, como ya comenté anteriormente, pienso que 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.
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 WSL2Debian
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, en algún caso, al acceder a estas rutas aparezca vacía. Esto suele ocurrir porque Windows aún no ha iniciado el subsistema WSL, basta con abrir una terminal para forzar a que arranque.
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:
Esto puede ser una forma interesante para intercomunicar ambos sistemas mediante scripts o tareas.
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:
/etc/wsl.conf
, el cuál ya contendrá algunas lineas.[user]
la añadimos, si ya la tiene, la modificamos.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.
¿Has olvidado la contraseña de root
de la distribución WSL? No te preocupes. Si tienes acceso a la cuenta de administrador de tu Windows, puedes recuperarla muy facilmente. Para ello, vamos a hacer lo siguiente:
wsl -u root
. Esto abrirá una terminal de WSL como usuario root
.passwd
. Ahora te pedirá la nueva contraseña de root.Listo. Si queremos cambiar la contraseña de otro usuario, repetimos escribiendo passwd usuario
, donde usuario
es el nombre del usuario en cuestión.
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.
Soy Manz, vivo en Tenerife (España) y soy streamer partner en Twitch y profesor. Me apasiona el universo de la programación web, el diseño y desarrollo web y la tecnología en general. Aunque soy full-stack, mi pasión es el front-end, la terminal y crear cosas divertidas y locas.
Puedes encontrar más sobre mi en Manz.dev