WSL

¿Es la combinación de Windows y Linux una panacea o se trata de otro dolor de cabeza?


Índice

  1. Introducción
  2. WSL 1
  3. WSL 2
  4. Uso
  5. Troubleshooting
  6. Referencias

Introducción

Pese a lo que diga o haya dicho Microsoft, hablar de un sistema operativo robusto no es hablar de Windows. Sí, como producto comercial puede ser empleado y basar en éste la operación de todo un negocio pero de ahí a que se pueda considerar «robusto», es otra cosa. La experiencia señala que si tienes algo que requiere tener a un equipo de soporte técnico atendiendo los problemas que se generan día tras día, no es algo *robusto*. Para mí, robusto es algo que te permite olvidarte de ello un tiempo.

Bueno, como sea, yo sí considero que un unix es un sistema operativo robusto y por lo mismo, dada la popularidad de los linux, Microsoft ha «dado su brazo a torcer» y, tratando de recuperar parte del terreno perdido, ha incorporado desde Windows 10 lo que ha denominado «Windows Subsystem for Linux» (WSL). Una especie de virtualización que permite tener un entorno unix interactuando con Windows.

Éstas son algunas notas en el uso de esta extraña combinación que busca hacerse de lo mejor de dos mundos (si es que hay algo bueno en Windows).


WSL 1

Estas notas iniciaron con la habilitación con lo que hoy se conoce como WSL 1. Son notas sin mucho orden, pues sólo se buscaba registrar algunas cosas que seguramente necesitaría después.

Instalación y activación

Previo a ser activado el Windows Subsystem for Linux, el comando wsl.exe puede ser encontrado y responder, aunque no necesariamente entregar algo. Por ejemplo

Microsoft Windows [Versión 10.0.19045.2965]
(c) Microsoft Corporation. Todos los derechos reservados.

C:\Users\admin>wsl --status

C:\Users\admin>

es hasta que su instalación (o quizás activación sea un mejor término) se lleva a cabo que realmente es funcional. Para su activación, desde los Settings o Control Panel de Windows, se hace uso de la opción de «Programas y Características de Windows«. El procedimiento en Windows versiones 10 y 11 (incluso Windows 11 version ARM dentro de Parallels es el mismo).

y posteriormente buscando el Windows Subsystem for Linux.

Aunque la activación del WSL no solicite el reinicio del equipo, es recomendable hacerlo.

Una vez que el equipo se ha reinicializado, la respuesta de wsl.exe debe cambiar, mostrando algo que indique el sub sistema para Linux está activo o si hay algún problema más. Abajo se ilustra una posible respuesta indicando la versión de éste (aunque ello no garantiza su activación o funcionamiento).

Microsoft Windows [Versión 10.0.19045.2965]
(c) Microsoft Corporation. Todos los derechos reservados.

C:\Users\admini>wsl --status
Versión predeterminada: 2
Habilita la característica Plataforma de máquina virtual de Windows y asegúrate de que la virtualización esté habilitada en el BIOS.
Para obtener más información, consulta https://aka.ms/wsl2-install

C:\Users\admin>

Los resultados mostrados aquí pueden ser distintos a los que otras personas obtengan debido a las características de su equipo y configuraciones. Como se muestra arriba, diferentes enlaces serán sugeridos de acuerdo a lo que wsl.exe detecte. La recomendación es seguir los enlaces y leer cabalmente la documentación o instrucciones que se presenten. Dependerá de cada caso aplicar o no lo indicado y cada uno es responsable de las decisiones tomadas.

Para el caso del ejemplo dado, en lo que respecta al propósito de esta sección6, la versión uno se activa con:

wsl --set-default-version 1

Desinstalación

Para seguir un orden inverso a lo que fue la habilitación de esta funcionalidad, que se asume debe ser lo más apropiado hablando de una desinstalación, lo primero debe ser desinstalar las distribuciones de linux descargadas.

Para ello se puede proceder de varias formas. Una de ellas es activar Settings y buscar Apps. Buscar la distribución escribiendo parcial o totalmente el nombre, por ejemplo «ubu» para Ubuntu.

Otra forma es mediante las opciones contextuales:

En lo que se refiere al WSL, para desinstalar, basta desactivar la característica de Windows (como se muestra en la activación pero a la inversa).


WSL 2

Dependiendo de la versión de Windows y características del equipo, WSL 2 puede venir ya activado o al menos instalado. Si ya está instalado, la activación de realiza de la misma forma que WSL 1.

Actualización por instalador

De requerir instalarlo, se puede proceder de varias formas. Una de ellas es por sugerencia del mismo Windows que debe dar el enlace, o desde alguna página de soporte de Microsoft, buscar la actualización a WSL 2.

Descargado el MSI se procede con su apertura y se deja que el asistente se encargue del resto, reiniciando al equipo al final.

Actualización desde la línea de comando

Otra opción es desde la línea de comando, para lo que se siguen los siguientes pasos2:

  1. Se abre una sesión Open PowerShell as Administrator y se ejecuta:
    dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
  2. Se revisa que se cumpla con el criterio para hacer el update2.
  3. Se habilita el componente «Virtual Machine Platform«.
    dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart 
  4. Y se procede a colocar el WSL 2 como versión por defecto.
    wsl --set-default-version 2

Adicionalmente es muy posible que se requiera activar la tecnología de virtualización por hardware. Lo que requiere interactuar con el BIOS, que varia de equipo a equipo y fabricante, y puede ser tecnología no soportada o implementada en el equipo y por tanto ser un equipo no apto para WSL 2. Para el caso de una Lenovo IdeaPad S340 además de resultar algo problemático y diferente llegar al BIOS, resultó ser un equipo no apto para WSL 2.

Parallels

Parallels requiere una mención especial, dado que es un «virtualizador» y en éste señala que WSL 2 es soportado sólo en Macs con Intel7. Activarlo no generará error alguno, pero al intentar instalar alguna distribución marcará problemas.

C:\Users\lalo>wsl --status
Versión predeterminada: 2

C:\Users\lalo>wsl --install
Ubuntu ya está instalado.
Iniciando Ubuntu...
Installing, this may take a few minutes...
WslRegisterDistribution failed with error: 0x80370102
Please enable the Virtual Machine Platform Windows feature and ensure virtualization is enabled in the BIOS.
For information please visit https://aka.ms/enablevirtualization
Press any key to continue...

C:\Users\lalo>wsl --set-default-version 1
The operation completed successfully.


Uso

Por el momento, esto es un compendio de diversas experiencias en el uso de este subsistema y las diferentes distribuciones de Linux soportadas.

Comando

Estas son las distintas opciones y argumentos que el comando wsl.exe soporta:

Usage: wsl.exe [Argument] [Options...] [CommandLine]

Arguments for running Linux binaries:

    If no command line is provided, wsl.exe launches the default shell.

    --exec, -e <CommandLine>
        Execute the specified command without using the default Linux shell.

    --
        Pass the remaining command line as is.

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.

    --distribution, -d <Distro>
        Run the specified distribution.

    --user, -u <UserName>
        Run as the specified user.

    --system
        Launches a shell for the system distribution.

Arguments for managing Windows Subsystem for Linux:

    --help
        Display usage information.

    --install [Options]
        Install additional Windows Subsystem for Linux distributions.
        For a list of valid distributions, use 'wsl --list --online'.

        Options:
            --distribution, -d [Argument]
                Downloads and installs a distribution by name.

                Arguments:
                    A valid distribution name (not case sensitive).

                Examples:
                    wsl --install -d Ubuntu
                    wsl --install --distribution Debian

            --no-launch, -n
                Do not launch the distribution after install.

    --mount <Disk>
        Attaches and mounts a physical disk in all WSL2 distributions.

        Options:
            --bare
                Attach the disk to WSL2, but don't mount it.

            --type <Type>
                Filesystem to use when mounting a disk, if not specified defaults to ext4.

            --options <Options>
                Additional mount options.

            --partition <Index>
                Index of the partition to mount, if not specified defaults to the whole disk.

    --set-default-version <Version>
        Changes the default install version for new distributions.

    --shutdown
        Immediately terminates all running distributions and the WSL 2
        lightweight utility virtual machine.

    --status
        Show the status of Windows Subsystem for Linux.

    --unmount [Disk]
        Unmounts and detaches a disk from all WSL2 distributions.
        Unmounts and detaches all disks if called without argument.

    --update [Options]
        If no options are specified, download and install WSL from the Microsoft Store.

        Options:
            --rollback
                Revert to the previous version of the WSL 2 kernel.

            --inbox
                Only update the inbox WSL 2 kernel. Do not install WSL from the Microsoft Store.

            --web-download
                Download the most recent version of WSL from the internet instead of the Microsoft Store.
Arguments for managing distributions in Windows Subsystem for Linux:

    --export <Distro> <FileName>
        Exports the distribution to a tar file.
        The filename can be - for standard output.

    --import <Distro> <InstallLocation> <FileName> [Options]
        Imports the specified tar file as a new distribution.
        The filename can be - for standard input.

        Options:
            --version <Version>
                Specifies the version to use for the new distribution.

    --list, -l [Options]
        Lists distributions.

        Options:
            --all
                List all distributions, including distributions that are
                currently being installed or uninstalled.

            --running
                List only distributions that are currently running.

            --quiet, -q
                Only show distribution names.

            --verbose, -v
                Show detailed information about all distributions.

            --online, -o
                Displays a list of available distributions for install with 'wsl --install'.

    --set-default, -s <Distro>
        Sets the distribution as the default.

    --set-version <Distro> <Version>
        Changes the version of the specified distribution.

    --terminate, -t <Distro>
        Terminates the specified distribution.

    --unregister <Distro>
        Unregisters the distribution and deletes the root filesystem.

Estado

Para conocer el estado del entorno de WSL y la versión activa:

C:\Users\lalo>wsl --status
Default Version: 1
Please enable the Virtual Machine Platform Windows feature and ensure virtualization is enabled in the BIOS.
For information please visit https://aka.ms/enablevirtualization

Para conocer las distribuciones instaladas:

C:\Users\lalo>wsl --list
Windows Subsystem for Linux has no installed distributions.
Distributions can be installed by visiting the Microsoft Store:
https://aka.ms/wslstore

Distribuciones linux soportadas

La instalación de una distribución linux se hace con el comando wsl --install -d <distro>, donde <distro> es el nombre de la distribución que se busca instalar. Abajo se muestra la ayuda que wsl.exe proporciona a este respecto.

C:\Users\lalo>wsl --install
Windows Subsystem for Linux is already installed.
The following is a list of valid distributions that can be installed.
Install using 'wsl --install -d <Distro>'.

NAME                   FRIENDLY NAME
Ubuntu                 Ubuntu
Debian                 Debian GNU/Linux
Ubuntu-18.04           Ubuntu 18.04 LTS
Ubuntu-20.04           Ubuntu 20.04 LTS
Ubuntu-22.04           Ubuntu 22.04 LTS
openSUSE-Tumbleweed    openSUSE Tumbleweed

Pantalla

Elementos de configuración de pantalla o características de la terminal o consola.

Scroll

Para poder conservar y posteriormente consultar lo que se muestra en pantalla es necesario  ajustar el scroll. Mediante  Properties → Layout → Screen Buffer Size → Height se permite a la emulación el asignar recursos de memoria para conservar la salida a stout y stderr.

Sin embargo, lo anterior no es suficiente, ya que como se mencionó, eso es para el subsistema linux. La aplicación de Windows debe también estar configurada para que haga uso de los recursos asignados para el subsistema linux. En este caso  activando la opción QuickEditMode.

En lo que se refiere al tamaño del cursor, este se controla desde las opciones de la aplicación en Windows.

Algunas particularidades y consideraciones

La interacción con Windows puede traer algunas complicaciones. Manejar archivos del subsistema linux usando el explorador de Windows es posible pero los archivos pueden no mostrarse inmediatamente en el File Explorer (por ejemplo, al copiar o mover un archivo del entorno Windows al de linux). Hasta donde se ha visto, para el caso del WSL 1 lo mejor es cerrar la sesión de Ubuntu y volver a abrirla. En ocasiones los archivos en el entorno de Ubuntu quedarán en modo 000 y deberán ajustarse los permisos para poder hacer uso de ellos. Borrar archivos desde el File Explorer hará que el explorador no actualice el contenido del file system.

Similarmente, en el entorno Ubuntu podrán manipularse archivos pero no se verán estas acciones en el File Explorer. Debe cerrarse la sesión en Ubuntu y volver a abrirla para que se actualice el contenido.

Borrar directorios con contenido hará que el File Explorer indique que se requiere de permisos de administración aunque esto sea infructuoso. Recordemos que en unix un directorio no puede borrarse mientras tenga archivos en éste (a menos que se force la acción rm -rf o rm -f). Eliminando el contenido del directorio hará que éste pueda ser borrado sin problemas con el File Explorer de Windows.

Desempeño

Para monitoreo del desempeño, la utilería sar puede ser instalada con

$ sudo apt install sysstat

y requiere que la recolección de estadísticas del sistema estén habilitadas (ver sección Troubleshooting).


Troubleshooting

Las anotaciones de esta sección notas parten de un mensaje de error o problema experimentado. En general, si el texto está en inglés se trata de un mensaje de error.

«Please check if data collecting is enabled»

Al tratar de usar la utilería sar, el mensaje de error «Please check if data collecting is enabled» aparece.

$ sar
Cannot open /var/log/sysstat/sa09: No such file or directory
Please check if data collecting is enabled
...
The sysstat service and associated timers need to be started. Check [1].

«System has not been booted with systemd as init system (PID 1). Can’t operate»

Este es un mensaje propio del subsistema linux (unix). Su resolución depende de la distribución o de algún otro factor. Dada la amplitud de las respuestas es mejor copiar el mensaje y hacer una búsqueda en la Internet (sorry).

«Please enable the Virtual Machine Platform Windows feature and ensure virtualization is enabled in the BIOS«

El mensaje de error aparece al tratar de activar WSL 2 y completo se lee:

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
Press any key to continue…

Si aparece en una ventana que se abrió al tratar de hacer uso de WSL o alguna de las distribuciones de linux instaladas, al presionar una tecla, la ventana se cierra. WSL 2 requiere soporte de hardware que puede no estar presente en todos los equipos o puede no estar activado por defecto. La activación puede hacerse de muchas formas, desde el BIOS, desde la configuración del mismo Windows o desde la línea de comando (¿de qué depende? No está muy claro, puede ser por el hardware o por el tipo de licencia de Windows).

Una forma de activarlo desde la línea de comando es:

PS C:\Windows\system32> DISM /Online /Enable-Fe ature /All /FeatureName:Microsoft-Hyper-V

Deployment Image Servicing and Management tool
Version: 10.0.19041.572

Image Version: 10.0.19041.685

Enabling feature(s)
[==========================100.0%==========================]
The operation completed successfully.
Restart Windows to complete this operation.
Do you want to restart the computer now? (Y/N) Y

«Error: 0x1bc For information on key differences with WSL 2

please visit https://aka.ms/wsl2&#8243;

Si al tratar de hacer uso de WSL 2:

PS C:\Windows\system32>wsl --set-default-version 2

se muestra el mensaje de error:

Error: 0x1bc For information on key differences with WSL 2 please visit https://aka.ms/wsl2

se debe a que ya que WSL no está habilitado, debe hacerse manualmente3. Además de lo ya indicado al inicio de esta página, esto puede hacerse:

Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux

Adicionalmente, esto que puede requerir actualizar el kernel4,5.


Referencias

  1. Tom Halle, «sar: enable data collecting«, StackExchange, ServerFault forum, web. Asked 2018.05.18; answered 2018.05.18; consulted: 2019.07.10. URL: https://serverfault.com/questions/913087/sar-enable-data-collecting.
  2. Microsoft, Inc., «Windows Subsystem for Linux Installation Guide for Windows 10Microsoft, web. Published: 2020.05.12; visited: 2020.08.13. URL: https://docs.microsoft.com/en-us/windows/wsl/install-win10.
  3. Microsoft, Inc., «‘wsl’ command not recognized after enabling WSL2«, GitHub, web. Opened: 2019.06.13; consulted: 2020.08.13. URL: https://github.com/MicrosoftDocs/WSL/issues/405.
  4. Microsoft, Inc., «Error 0x1bc when setting wsl default version», GitHub, web. Opened: 2020.07.25; visited: 2020.08.13. URL: https://github.com/microsoft/WSL/issues/5651.
  5. Microsoft, Inc., «Updating the WSL 2 Linux kernel», Microsoft, web. Published: , visited: 2020.08.13. URL: https://docs.microsoft.com/nl-nl/windows/wsl/wsl2-kernel.
  6. Microsoft, Inc., «Comparing WSL Versions«, Microsoft Ignite, web. Published: 2023.03.19; visited: 2023.10.27. URL: https://learn.microsoft.com/en-us/windows/wsl/compare-versions.
  7. Parallels International GmbH, «WSL Support in Parallels Desktop«, Parallels Knowledge Base, web. Published: 2023.05.12; visited: 2023.10.27. URL: https://kb.parallels.com/129234.
  8. Microsoft, Inc., «Troubleshooting Windows Subsystem for Linux«, Microsoft Ignite, web. Published: 2023.05.10; visited: 2023.10.27. URL: https://learn.microsoft.com/en-us/windows/wsl/troubleshooting.

Twitter Wordpress eMail
© Todos los derechos reservados.
Dr. Eduardo René Rodríguez Ávila
Creación: 2019.05.16
Última actualización: 2023.10.27
El contenido de este sitio puede ser copiado y reproducido libremente mientras no sea alterado y se cite su origen. Marcas y productos registrados son citados por referencia y sin fines de lucro o dolo. Todas las opiniones son a título personal del o los autores de éstas y, salvo sea expresado de otro modo, deben considerarse como registro y expresión de la experiencia de uso de aquello que es tratado. Para conocer más sobre la posición de privacidad y responsabilidad de lo que se presenta en este sitio web y como ha sido obtenido, consulte la declaración al respecto.