Instalar Linux en Windows por medio de WSL2 (Windows Subsystem for Linux).
Backend Windows Linux

Instalar Linux en Windows por medio de WSL2 (Windows Subsystem for Linux).

Silverio Martínez García
Silverio Martínez García

Para todas aquellas personas como en mi caso que tengan instalados en su pc Windows y Linux y ejecutando ambos mediante arranque dual, este artículo puede ser de gran interés.

Con WSL2 lo que se consigue es poder instalar una imagen Linux en Windows y ejecutarla mediante virtualización.

En mi caso prefiero Windows para programar y Linux para ejecutar y desplegar ya que al fin y al cabo cuando subo algún servicio a la nube suele ser en una máquina Linux (por precio, seguridad y rendimiento), pero antes siempre hago pruebas en local y me toca reiniciar el pc y arrancar en Linux.

Al utilizar WSL2 en realidad ya no hace falta tener instalado Linux en otra partición y utilizar el arranque dual.
Simplemente desde Windows se arranca la imagen de Linux y podremos utilizar la terminal para hacer todo lo que deseemos, ya que estaremos trabajando sobre un Linux de verdad.

Requisitos para instalar WSL2 en Windows:

  1. Tu versión de Windows debe ser de 64 bits.

  2. Debes de tener Windows actualizado. Hay que tener una versión igual o superior a la 1903.
    Para ver la versión de Windows actual presiona la tecla 'Windows + R' y teclea 'winver'.

  3. Tu procesador debe soportar virtualización (en procesadores Intel VT-x y en Amd AMD-V). Además debe de estar habilitada dicha virtualización en la Bios.
    Lo normal es que si tu procesador tiene menos de 6 años ya tenga virtualización y esté activada en la Bios.

Para comprobar si el requisito nº 3 es correcto puedes pulsar las teclas CTRL + Mayúsculas + Esc y se abrirá el Administrador de Tareas de Windows.
En la pestaña Rendimiento seleccionando la CPU se puede ver si la opción Virtualization está activada:

Instalar WSL2 - Administrador de Tareas - Virtualización activada

Instalar WSL en Windows:

Para instalar WSL pulsa las teclar Windows + R y se abrirá la ventana de ejecutar. A continuación escribe OptionalFeatures.exe y se abrirá la ventana para instalar caracteríticas opcionales.

Selecciona las opciones Plataforma de máquina virtual (Virtual Machine Platform) y Subsistema de Windows para Linux (Windows Subsystem for Linux).

Después de la instalación habrá que reiniciar el sistema.

Instalar WSL en Windows 10

A continuación hay que actualizar el kernel de Linux en Windows.
Se puede descargar desde este enlace

Se instala como cualquier programa Windows, darle a siguiente y finalizar.

Después de haber instalado WSL, reiniciado y actualizado el Kernel de Linux es necesario seleccionar la versión de WSL que se ejecutará por defecto.
Esto es necesario porque cuando se instala WSL se instalan conjuntamente la versión 1 y la 2.

Para asegurarse que siempre se utilice la version WSL2 abre una terminal de PowerShell como administrador y teclea:

wsl --set-default-version 2

Instalar distribución de Linux:

Para instalar una imagen de Linux hay que ir a la WindowsStore y buscar por 'Linux'.
La más utilizada es Ubuntu, pero puedes instalar otras distros desde la WindowsStore. Ten en cuenta que algunas son de pago, aunque no es lo normal.
Te dejo los enlaces para acceder directamente a las distros de Ubuntu:

Ubuntu 18.04 LST

Ubuntu 20.04 LST

Utilizar la distribución de Linux con WSL2:

Una vez instalado WSL2 y la distribución de Linux solo falta arrancarla por medio del comando wsl.

Desde una terminal de Windows o PowerShell teclea lo siguiente:

  • wsl -l
    Con este comando se listan todas las imágenes que tienes instaladas en su sistema para ejecutar con wsl.
    En mi caso aparecen varias imágenes porque tengo Docker instalado, pero la que nos intersa es la de Ubuntu-20.04.
Listar imágenes con wsl -l

  • wsl -d <nombre de la distribución que se quiere arrancar>
    Con este comando se arranca la distribución deseada escribiendo su nombre completo.
    Lo que sucederá es que en la misma terminal de windows se nos abrirá una session en la distribución Linux arrancada.
    El usuario de Linux es el mismo que usamos en Windows y tiene privilegios de root utilizando el comando sudo.
Arrancar distribución Linux con comando wsl

Al igual que en Linux, podemos tener varias sesiones abiertas.
Si desde otra terminal de Windows volvemos a ejecutar el comando wsl -d, como la distro Linux ya está arrancada lo que sucede es que se abre otra sessión en una nueva consola.

  • wsl -h
    Con este comando se muestran todos los demás parámetros que podemos utilizar con wsl.

Compartir archivos entre Windows y distro Linux WSL2:

Si te fijas en la imagen de arriba (después de ejecutar el comando 'wsl -d'), nada más arrancar la distribución de Ubuntu me indica que estoy en el path:
very@OPTIMUS:/mnt/c

Lo que quiere decir que en nuestro Linux se ha montado la partición C: de nuestro disco duro donde tenemos instalado Windows.

Si escribimos en nuestro terminal Linux el comando 'ls -laF' podremos comprobar que el contenido es el mismo que si escribimos desde la consola de Windows c:\>dir.

Por lo tanto, abriendo desde Windows el explorador de archivos y copiando cualquier archivo en la partición C: de nuestro disco duro podremos acceder desde Linux a su contenido y viceversa.

Como en cualquier Linux, el directorio /mnt es donde se montan dispositivos y particiones. Podemos navegar hasta la raíz del sistema con el comando 'cd /' y hasta nuestro home con 'cd ~'.

Comunicación por red entre Windows y distro Linux WSL2:

Por defecto la distro Linux instalada no tendrá el firewall activado.
He hecho pruebas activándolo y despúes de buscar más info en internet he llegado a la conclusión de que activar el firewall en nuestro nuevo Linux no es recomendable.
Al activar el firewall de Linux se pierde la conexión a internet desde nuestra distro.

Windows comparte la conexión de red con nuestra distro Linux.
Windows ya tiene un firewall configurado y al contenido de Linux solo accederemos desde nuestro Windows por lo tanto no es necesario activar ningún firewall y la conexión de red es la misma para ambos sistemas operativos.

Si en nuestro nuevo Linux instalamos un servidor Http como Apache (puerto 80) o un Servicio Web SpringBoot (puerto 8080) por ejemplo, desde Windows podremos acceder a ellos de la misma forma que si se estuviesen ejecutando en el propio Windows:

http://localhost:80/miWeb
http://127.0.0.1:8080/api

Conclusión:

En este artículo hemos visto como instalar una distribución Linux en Windows y ejecutarla por medio de WSL2 sin necesidad de tener que reiniciar el equipo para ejecutar Linux con arranque dual.

Es una manera mucho más cómoda de trabajar para todos los que programemos en Windows, ya que al fin y al cabo si te dedicas a programar Backend siempre vas a tener que trastear con Linux.

Enlaces de interés: