WSL se ha convertido es una de las herramientas de desarrollo muy popular dentro de Windows 10, con esta herramienta no necesitas crear un dual boot en tu equipo (tener instalados dos sistemas operativos) para contar con todas las bondades del desarrollo de Linux. Pero como todo, WSL tiene sus detalles como el bajo rendimiento en la lectura de archivos.
Por fortuna Microsoft lanzó a través de la actualización de Windows 10 Release 2004 Build 19041 la nueva versión de WSL, WSL 2.
Las características principales de WSL 2 son un mayor rendimiento (hasta 20 veces mejor que WSL 1 🤯) y un kernel de Linux 100% nativo, y otras características como:
Además debemos considerar tener un ambiente de desarrollo lo más cercano a lo que tendremos a los servidores en producción. Si comparamos porque utilizar contra GitBash la razón es sencilla, tenemos una alta gama de herramientas de desarrollo disponibles en WSL, además de que GitBash está muy limitado a funcionar adecuadamente para que utilicemos Git.
Primero que nada necesitamos habilitar Subsistema de Windows para Linux (Windows Subsystem for Linux) y Hyper-V, una herramienta de virtualización de Microsoft necesitado para WSL 2, pues nuestra distro se vuelve una maquina virtual dentro de nuestra sistema operativo de una forma especial que da vida a WSL 2 (aquí es donde sucede la magía del rendimiento).
Presionamos la tecla Windows y escribimos características y damos clic en: Activar o desactivas las características de Windows
Fig. 1 - Activar o desactivas las características de Windows
Aparece una pequeña ventana con el listado de características disponibles para nuestor sistema, necesitamos buscar las opciones de Hyper-V y Subsistema de Windows para Linux, nos aseguramos de que esten palomeadas ambas herramientas, damos clic en Aceptar y Windows empezará a descargar los archivos necesarios y cuando termine nos pedirá reiniciar nuestra maquina por lo que aceptamos y reiniciamos Windows.
Fig. 2 - Hyper-V seleccionado
Fig. 3 - Subsistema de Windows para Linux seleccionado
Una vez que tu equipo se reinició ya podemos descargar Ubuntu a través de la Microsoft Store desde este enlace. Cuando termine la descarga iniciamos la aplicación y esperamos a que termine el proceso y establecemos nuestro usuario y contraseña de nuestra distribución de Linux.
Como verás el proceso de instalación es el mismo que WSL 1, pero aquí es donde se encuentra la diferencia principal, para ello necesitamos abrir Powershell presionando la combinación de teclas Windows + r y escribimos powershell.
Fig. 4 - Ejecutar Powershell
Nos abrirá una terminal donde ejecutaremos el siguente comando: wsl --list --verbose
o en su versión corta wsl -l -v
, al ejecutar esta linea se despliega una lista de distribuciones instalada en nuestra maquina:
NAME STATE VERSION
Ubuntu Stopped 1
Como observamos aún tenemos la versión 1 seleccionada, para establecer la versión 2 corremos el siguiente comando: wsl --set-version <el-nombre-de-la-distro> 2
o en el caso del ejemplo wsl --set-version Ubuntu 2
y presionamos Enter. Aparece un mensaje indicando que el proceso de conversión está ejecutandose y que tomará unos minutos, por lo que si gustas puedes ir por un café o estirar las piernas y brazos ya que si toma unos cuandos minutos (aproximadamente de 10 a 15 minutos).
Una vez completado el proceso volvemos a correr wsl -l -v
y deberá mostrar la lista así:
NAME STATE VERSION
Ubuntu Stopped 2
Y listo, ya tenemos WSL 2 disponible para desarrollar! 🤘
Al utilizar la versión 2 debemos tener las siguientes consideraciones:
Y por lo pronto es todo, si deseas aprender más sobre la línea de comandos puedes tomar el Curso de Introducción a la Terminal y Línea de Comandos
Volver utilizar Windows inicialmente me hizo estar preocupado debido a que en los últimos años estuve usado Linux y macOS para Desarrollo Web.
Por suerte, Windows 10 con la última actualización tiene mejoras en el entorno de desarrollo, me refiero al Subsistema de Windows para Linux o WSL 2.
Aún estoy en los primeros días de usarlo en mis proyectos personales, y hasta ahora la experiencia ha sido fascinante.
Pero bueno… el objetivo es contarte que desde la versión WSL 2 ya no es necesario activar el Hipervisor de Microsoft ( Hyper-V ) ahora lo que debes activar en la ventana de las características de Windows es Plataforma de máquina virtual, Pero espera…!! También es importante que tengas Habilitada la virtualización de tu computadora.
Para saber si tu computadora tiene esta opción habilitada es sencillo, ve al administrador de tareas en la pestaña de rendimiento veras si tu PC están habilitada o deshabilitada.
Para habilitarla la forma en que yo lo hice fue desde la configuración de la BIOS.
Y listo… tendrás un entorno de desarrollo fascinante sin tener que gastar tanto dinero en una Mac.
Nota: si saber de que otra manera habilitar la virtualización de una PC háznoslo saber, toda la comunidad te lo agradeceremos.
Seguí tu consejo para obviar la selección de HYPER V y seleccionar PLATAFORMA DE MÁQUINA VIRTUAL y SUBSISTEMA DE WINDOWS PARA LINUX lo que funcionò hasta que se despaquetaron drivers de Windows y requirió reiniciar sistema pero al comprobar en ADMINISTRADOR DE TAREAS/PERFORMANCE aùn aparece como DESHABILITADO para VIRTUALIZACIÒN.
En mi caso no permite seleccionar HYPER V.
VER VERSIÓN DE WSL:
wsl --list --verbose
ESTABLECER WSL 2:
wsl --set-default-version 2
ACTUALIZAR DESTITUTIÓN DE LUNUX A WSL2 (Ejemplo Ubuntu-20.02)
wsl --set-version <distribution name> <versionNumber>
wsl --set-version Ubuntu-20.04 2
Habia un proceso que me consumia un monton de ram!
cree un archivo en en mi
c:\Users\<user>
con el nombre de.wslconfig
y le coloqué la siguiente config, para que limitara el uso a 2GB
[wsl2]memory=2048MB swap=0localhostForwarding=true
PD: no tengo ni la menor idea de que es lo que pasa. Esa config es un resultado de una busqueda de 4 horas en google.
Muchas gracias Frank, voy a darle una revisada 👌
Tener en cuenta que se debe actualizar el kernel de su PC antes de realizar esos pasos:
https://docs.microsoft.com/en-us/windows/wsl/wsl2-kernel
Ya lo hice, actualicé el kernell y sigue siendo wsl 1
¿Alguno tuvo problemas con los permisos de accesos de windows 11 a wsl2?
Para complementar amigos dejo los esquemas de WSL 1 Y WSL 2
Ya tengo WSL 2 pero en uno paso me indicaron deshabilitar HYPER-V y no sé si deba permanecer deshabilitado. Qué debo hacer aquí?
Mi proceso no ha sido finalizado porque al activar casilla HYPER/V no permite selecciòn total sino parcial (recuadro negro en vez de signo checked)
En ese caso salen subitems, unos permiten selección/deselecciòn; los otros aparecen como inactivados para ser modificados, concretamente HYPER V HYPERVISOR es la única casilla que al no permitir selecciòn/deselecciòn, bloquea HYPER-V para check/uncheck.
Seguí el consejo del comentario de @marius para obviar la selección de HYPER V y seleccionar PLATAFORMA DE MÁQUINA VIRTUAL y SUBSISTEMA DE WINDOWS PARA LINUX.
Se despaquetaron drivers de Windows y requirió reiniciar sistema pero al comprobar en ADMINISTRADOR DE TAREAS/PERFORMANCE aùn aparece como DESHABILITADO para VIRTUALIZACIÒN.
Cómo puedo superar este escollo? Alguna idea adicional?
He logrado que las casillas mencionadas sean seleccionadas, dos veces se desempaquetaron archivos y ha pedido reinicio pero igual el equipo aparece como DESHABILITADO para VIRTUALIZACIÒN en ADMINISTRADOR DE TAREAS/PERFORMANCE. Sigo intentando…
He avanzado mas en el proceso hasta llegar a la instruccion donde el resultado es
Una vez completado el proceso volvemos a correr wsl -l -v y deberá mostrar la lista así:
NAME STATE VERSION
Ubuntu Stopped 2
En cambio me sale esto:
PS C:\Users\Usuario> wsl -1 -v
Invalid command line option: -1
Copyright © Microsoft Corporation. All rights reserved.
Usage: wsl.exe [Argument] [Options…] [CommandLine]
Arguments for running Linux binaries:
Options:
–cd <Directory>
Sets the specified directory as the current working directory.
If ~ is used the Linux user’s home path will be used. If the path begins
with a / character, it will be interpreted as an absolute Linux path.
Otherwise, the value must be an absolute Windows path.
Arguments for managing Windows Subsystem for Linux:
Arguments for managing distributions in Windows Subsystem for Linux:
PS C:\Users\Usuario>
Si me dicen qué fallò en mi proceso o cmo piedo superarlo.
Bueno, el caso es que confundí 1 con l en ese comando y al hacerlo correctamente aparece algo que tampoco es el resultado esperado:
wsl -l -v
Ubuntu Stopped 2
En mi caso queda así:
wsl -l -v
Ubuntu Stopped 1
Retomé el proceso. Ahora dice que WSL 2 requiere una actualización a su componente kernel:
PS C:\Users\Usuario> wsl --set-version Ubuntu 2
Conversion in progress, this may take a few minutes…
For information on key differences with WSL 2 please visit https://aka.ms/wsl2
WSL 2 requires an update to its kernel component. For information please visit https://aka.ms/wsl2kernel
PS C:\Users\Usuario>
Esto sigue avanzando pero sigue sin cuadrar. Ya hice la actualización al componente de kernell y resulta otro paso que no recuerdo haberlo visto en el tutorial que es
PS C:\Users\Usuario> wsl --set-version Ubuntu 2
Conversion in progress, this may take a few minutes…
For information on key differences with WSL 2 please visit https://aka.ms/wsl2
Please enable the Virtual Machine Platform Windows feature and ensure virtualization is enabled in the BIOS.
For information please visit https://aka.ms/wsl2-install
PS C:\Users\Usuario>
Luego de modificaciones adicionales en la BIOS aparece en Task Manager mi CPU con VIRTUALIZATION> ENABLE.
Aunque siguiendo el paso indicado en https://bce.berkeley.edu/enabling-virtualization-in-your-pc-bios.html desactivé HYPER-V
Alguien me ayude a este punto que no sé si el proceso vaya correctamente.
Logré instalar satisfactoriamente WSL 2 lo cual comprobé con comando wsl -l -v
PS C:\Users\Usuario> wsl -l -v
NAME STATE VERSION
Hola a todos ¿esto significa que no debe usar el explorador de windows? :
"Procura utilizar el sistema de archivos de tu distro porque si accedes a través del formato de archivos de Windows el rendimiento puede ser peor que el de WSL 1. "
Muchas gracias, me ayudo mucho 😃
Aunque, cuando intento ejecutar cualquier comando desde la consola de linux, el consumo de ram se dispara hasta 3gb ):
esto mejoro con la actualización de wls2 y mucho, pero es recomendable tener al menos 8gb de ram para un optimo funcionamiento
Aun me genera ese error de consumo excesivo de memoria. Tendré que formatear windows para checarlo.
Algo que si está un poco mal es el consumo de RAM que maneja es alto, hay trucos como este que te ayuda a minimizar el consumo de la memoria
Es el que debias usar la funcion malloc()? porque ya lo intente y se me ponia como loca la ram xdd
Ya vi que no, lo voy a intentar hacer que me genera. Gracias 😃
que es la distro?? estoy haciendo los pasos pero me quede en powershell