Microsoft WSL

El Subsistema de Windows para Linux (Windows Subsystem for Linux, ó WSL) incorporado en Windows 10 permite a los desarrolladores ejecutar un entorno de Linux directamente en Windows sin la sobrecarga de una máquina virtual convencional.

Hay dos versiones, pero se pueden alternar. Microsoft recomienda WSL 2 por sus características mejoradas. Pero es preferible WSL 1 si:

  • la velocidad de acceso desde Linux al sistema de ficheros de Windows es un requisito crítico;
  • o si hay problemas por la asignación dinámica de IP en el nuevo WSL 2.

Cómo habilitar WSL y configurar WSL 1

Según la guía de instalación, para habilitar la nueva característica WSL sólo hay que ejecutar desde una PowerShell como administrador el siguiente comando:

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

Reiniciar el equipo para instalar tu distribución Linux preferida desde una PowerShell del usuario. Se recomienda Ubuntu:

WSL --install -d Ubuntu

Una vez instalado se ejecuta la shell de inicio:

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: manuelcillero
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully
Installation successful!
To run a command as administrator (user "root"), use "sudo ".
See "man sudo_root" for details.

Con esto se crea el usuario root y un usuario por defecto para acceder a la shell de Linux. Una vez dentro se pueden crear otros usuarios. Para empezar se recomienda actualizar:

$ sudo apt update
$ sudo apt upgrade
$ sudo apt dist-upgrade
$ sudo apt autoremove

En /mnt/c se monta la estructura de carpetas del disco C:\. Y voilà, Linux funcionando en Windows.

El nuevo WSL 2

Verificar los requisitos para instalar WSL 2. Si no está habilitado, hay que instalar la característica Máquina Virtual desde una PowerShell como administrador:

dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart

y descargar para instalar un paquete de actualización del kernel de Linux. Y reiniciar el equipo.

Comandos útiles

Con esto, desde la PowerShell del usuario se podrá ejecutar:

  • WSL --set-default-version 2
    Para establecer WSL 2 como versión predeterminada.
  • WSL --list --verbose
    Mostrará las distribuciones de Linux instaladas y su versión WSL. Y también las instancias de Docker, que se entiende perfectamente con WSL 2 (se inicia y ejecuta considerablemente más rápido y se habilita tanto en Windows como en Linux).
  • WSL --setdefault
    Cambiará la distribución de Linux por defecto. Se verá con un * al ejecutar WSL --list.
  • WSL --set-version Ubuntu 2
    Cambiará la distribución Ubuntu a la versión 2 de WSL. Se podrá regresar a la 1 cambiando el valor final.
  • WSL --user
    Ejecutará la distribución por defecto con un usuario específico creado previamente.
  • WSL --export Ubuntu directorio\de\archivo.tar
    Detendrá la ejecución de la distribución Ubuntu y exportará todo su contenido al archivo.tar indicado.
  • WSL --import UbuntuImportado directorio\de\instalación directorio\de\archivo.tar
    Creará una nueva distribución en el directorio indicado de un archivo.tar exportado previamente.
  • WSL --install
    Configurará WSL e instalará Ubuntu de una tacada. Con WSL --install -d Debian se instalaría Debian.
  • WSL --shutdown
    Finalizará todas las distribuciones en ejecución, incluidas las de Docker. Con WSL --terminate Ubuntu se finalizará sólo Ubuntu.

Uso de los recursos del anfitrión

Es conveniente recortar el uso de recursos del anfitrión, especialmente si se usa con Docker, porque acapara la memoria RAM y limita la capacidad de respuesta del equipo. Microsoft está en ello, pero la mejor solución es parar con WSL --shutdown, crear un archivo %UserProfile%\.wslconfig con:

[wsl2]
memory=6GB     # Máxima cantidad de memoria disponible para WSL2
processors=5   # Número de procesadores asignados a WSL2

y reiniciar WSL desde una PowerShell como administrador:

Restart-Service LxssManager

Cygwin

Si no es posible usar WSL en el equipo, una buena opción es instalar Cygwin. Consiste en una colección de herramientas, shells y comandos habituales en sistemas Unix para usar desde Microsoft Windows.

Instalación

El procedimiento de instalación es sencillo:

  • Descargar el instalador setup-x86_64.exe.
  • Ejecutar como administrador y seguir las indicaciones; por ejemplo desde internet (https://mirrors.kernel.org), para todos los usuarios, en el directorio por defecto C:\cygwin64.
  • Al acabar se puede mover el instalador a esta carpeta porque se usará para añadir o eliminar paquetes del propio Cygwin.

Directorio de inicio del usuario

Para hacer que el directorio de inicio del usuario sea su propia carpeta de Windows ejecutar como administrador el terminal de Cygwin64 y editar el archivo /etc/nsswitch.conf para incluir esta línea:

db_home: windows

Guardar el archivo. Cerrar todos los terminales de Cygwin64. Puede ser necesario ejecutar un nuevo terminal para copiar los archivos de configuración del directorio original a la carpeta de Windows:

$ cp -p '/home/{Carpeta Usuario}/.*' ~/

Chocolatey

Chocolatey es un gestor de paquetes que facilita la instalación y la gestión del software que desarrolladores, administradores y usuarios requieren en sus equipos Windows.

Instalación

La instalación de Chocolatey se hace desde la PowerShell de Windows como administrador, ejecutar:

Set-ExecutionPolicy Bypass -Scope Process -Force; iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))

y comprobar la instalación:

> choco
Chocolatey v0.10.15
Please run 'choco -?' or 'choco  -?' for help menu.

Paquetes disponibles

En la página de búsqueda puede consultarse el listado de paquetes mantenido por la comunidad.

Comandos habituales

Los comandos también se ejecutan desde la PowerShell, como administrador. Los más comunes son:

Instalar un paquete (install)

choco install 7zip
choco install notepadplusplus googlechrome 7zip

Puede usarse cinst como atajo de choco install. Las opciones se aplicarían a todos los ítems.

Ver paquetes instalados (list)

choco list -l

Puede usarse clist como atajo de choco list. Con otras opciones de interés como -li ó -lia.

Comprobar paquetes (outdated)

choco outdated

Devuelve los paquetes con versiones más recientes. Normalmente se usará sin opciones.

Actualizar paquetes (upgrade)

choco upgrade chocolatey
choco upgrade notepadplusplus googlechrome 7zip

Puede usarse cup como atajo de choco upgrade. Las opciones se aplicarían a todos los ítems.

Desinstalar un paquete (uninstall)

choco uninstall 7zip
choco uninstall notepadplusplus googlechrome 7zip

Puede usarse cuninst como atajo de choco uninstall. Las opciones se aplicarían a todos los ítems.

Última revisión: 25/11/2022

0 comentarios

Dejar un comentario

¿Quieres unirte a la conversación?
Siéntete libre de contribuir!

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *