## Instalación y configuración de WSL

- ¿Para qué Sirve esta Guía?
- Activar WSL
- Instalación de Distribución de Linux
- Servidor X
- Windows Terminal (Opcional)

### ¿Para qué Sirve esta Guía?

Esta es una guía, rápida y simple, de cómo instalar y configurar Windows Subsystem for Linux (WSL) para las condiciones del ramo. Destinada a alumnos sin ninguna experiencia previa con el uso de Linux.

### Activar WSL

Primero, necesitamos activar las caracteristicas relacionadas con WSL. Para esto, abrimos PowerShell en modo administrador, y ejecutamos

dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart

Para activar también las caracteristas de WSL2, ejecutamos también

dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
Alternativamente, podemos activar ambas características buscando en Windows Activar o Desactivar Características de Windows, y activamos Plataforma de Maquina Virtual y Subsistema de Windows para Linux

Terminado esto, pasamos a reiniciar el equipo para guardar los cambios. Descargamos e instalamos el paquete de instalacion de WSL para plataformas Intel y AMD en el siguiente link.
En caso de utilizar un equipo con plataforma Snapdragon u otro dispositivo ARM, utilizar este link
Hecho esto, es posible que WSL tenga seleccionado por defecto su version inicial WSL (y no WSL2). Para modificar esto, abrimos Powershell, y ejecutamos
wsl --set-default-version 2

### Instalación de Distribucion de Linux

Abrimos la Microsoft Store, y descargamos la distribucion de Linux a usar. Para una lista completa de las distribuciones de Linux aceptadas por WSL, puede consultar la lista distribuciones aceptadas.

Una vez instalada, la iniciamos, lo que instalará el terminal. Finalizada la instalacion, nos pedirá definir el nombre de usuario y contraseña. El nombre de usuario solo puede tener letras, numeros, guion (-) y guion bajo (_).

Con la terminal de nuestra distribucion de Linux ejecutandose, ejecutamos en Poweshell

wsl --list --verbose
Si todo se ha instalado correctamente, veremos nuestra distribucion de Linux, en estado running, y bajo la columna VERSION, un numero 2 (Referente a WSL2).

Felicitaciones, ahora tiene una terminal de Linux, totalmente funcional, corriendo en su equipo Windows.

IMPORTANTE: Recuerde que todo lo que instale en su distribucion de Linux, es independiente de lo que instale en Windows, esto significa que es posible instalar JAVA 14 en Windows, y correr JAVA 11 en su distribucion de Linux. De la misma manera, puede instalar varias distribuciones distintas, todas independientes entre si.

Si desea mas información de WSL, puede consultar la documentacion oficial de Microsoft

### Servidor X

Si bien WSL2 permite ejecutar aplicaciones graficas desde cualquier distribucion de Linux instalada, esta característica esta disponible solo para equipos Windows Insider, por lo que, en la mayoria de los casos, es necesario instalar un servidor X. El servidor X que utilizaremos sera VcXsrv Windows X Server, disponible en el siguiente link.

La instalación es directa, y no requiere configuracion especial. Una vez instalado, se creará un acceso directo en el escritorio el cual tendremos que inicar cada vez que se desee utilizar aplicaciones graficas en WSL. Es importante corroborar que la opcion Disable access control esté seleccionada, para que no existan problemas de permisos al intentar ejecutar aplicaciones.

El siguiente paso es definir la variable DISPLAY en la distribucion de Linux que estemos usando. Esto se debe a que WSL2 no se ejecuta con la misma IP que la maquina Windows.

Para hacer esto, en WSL ejecutamos los siguientes comandos
export DISPLAY=$(awk '/nameserver / {print $2; exit}' /etc/resolv.conf 2>/dev/null):0
export LIBGL_ALWAYS_INDIRECT=1
Para evitar tener que ejecutar ese comando cada vez que WSL se inicia, es posible agregar los comandos anteriores al final del archivo /etc/bash.bashrc, el cual pueden editar, por ejemplo, ejecutando
sudo nano /etc/bash.bashrc

Para probar que todo haya sido configurado de manera correcta, podemos intentar correr aplicaciones GUI desde la terminal de Linux.

Para instalar GEDIT, un editor de texto basico, ejecutamos

sudo apt install gedit
gedit

Para instalar un conjunto de aplicaciones x11

sudo apt install x11-apps
xeyes

### Windows Terminal (Opcional)

Ya que estaremos trabajando con distintas terminales, nos será util unificar todas las terminales en una terminal "unica". Para eso, es recomendable descargar Windows Terminal desde la Microsoft Store

Esta aplicacion nos permite manejar todas las terminales instaladas desde una misma ventana, asi como configurar atajos del teclado, seleccionar una terminal por defecto, y copiar y pegar entre disintas terminales.