Solucionar problemas del subsistema de Windows para Linux

A continuación se abordan algunos escenarios comunes de solución de problemas asociados con WSL, pero considere la posibilidad de buscar también los problemas notificados en el repositorio de productos de WSL en GitHub.

Presentación de un problema, un informe de errores o una solicitud de característica

Los problemas del repositorio de productos de WSL le permiten:

  • Buscar problemas existentes para ver si hay algún asociado que experimenta el mismo problema. Tenga en cuenta que, en la barra de búsqueda, puede quitar "is:open" para incluir los problemas que ya se han resuelto en la búsqueda. Considere la posibilidad de comentar o indicar que le gusta algún problema abierto para el que le gustaría expresar interés de seguir como una prioridad.
  • Presentación de un nuevo problema. Si ha experimentado un problema con WSL y parece que no existe, puede seleccionar el botón verde Nuevo problema y, a continuación, elegir WSL - Informe de errores. Deberá incluir un título para el problema, el número de compilación de Windows (ejecute cmd.exe /c ver para ver el número de compilación actual), tanto si ejecuta WSL 1 o 2, el número de versión actual del kernel de Linux (ejecute wsl.exe --status o cat /proc/version), el número de versión de la distribución (ejecute lsb_release -r), cualquier otra versión de software implicada, los pasos de reproducción, el comportamiento esperado, el comportamiento real y los registros de diagnóstico si están disponibles y son adecuados. Para más información, consulte Contribución a WSL.
  • Para presentar una solicitud de característica, seleccione el botón verde Nuevo problema y, a continuación, seleccione Solicitud de característica. Tendrá que atender algunas preguntas de descripción de la solicitud.

También puede:

Problemas de instalación

  • Error 0x80070003 en la instalación

    • El Subsistema de Windows para Linux solo se ejecuta en la unidad del sistema (normalmente se trata de la unidad C:). Asegúrate de que las distribuciones estén almacenadas en la unidad del sistema:
    • Abra Configuración ->Sistema -->Almacenamiento ->Más opciones de almacenamiento: Cambiar la ubicación de almacenamiento del contenido nuevoPicture of system settings to install apps on C: drive
  • Error 0x8007019e de WslRegisterDistribution

    • El componente opcional del Subsistema de Windows para Linux no está habilitado:
    • Abra el Panel de control ->Programas y características ->Activar o desactivar la característica de Windows -> Seleccione Subsistema de Windows para Linux o use el cmdlet de PowerShell mencionado al comienzo de este artículo.
  • Error en la instalación 0x80070003 o 0x80370102

    • Asegúrate de que la virtualización está habilitada dentro del BIOS del equipo. Las instrucciones sobre cómo hacerlo variarán de un equipo a otro y lo más probable es que esta característica esté en opciones relacionadas con la CPU.
    • WSL2 requiere que la CPU admita la característica de traducción de direcciones de segundo nivel (SLAT), que se introdujo en procesadores Intel Nehalem (primera generación Intel Core) y AMD Opteron. Las CPU anteriores (como Intel Core 2 Duo) no podrán ejecutar WSL2, incluso si la plataforma de máquina virtual está instalada correctamente.
  • Error al intentar actualizar: Invalid command line option: wsl --set-version Ubuntu 2

    • Asegúrese de que tiene el Subsistema de Windows para Linux habilitado y de que usa la compilación 18362 de Windows o posterior. Para habilitar WSL, ejecute este comando en un símbolo del sistema de PowerShell con privilegios de administrador: Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux.
  • La operación solicitada no se pudo completar debido a una limitación del sistema de disco virtual. Los archivos de disco duro virtual deben estar sin comprimir y sin cifrar y no deben ser dispersos.

    • Anule la selección de la casilla "Compress contents" ("Comprimir contenido") (y también la de "Cifrar los contenidos" si está activada). Para ello, abra la carpeta de perfil de la distribución de Linux. Debe encontrarse en una carpeta del sistema de archivos de Windows, como %USERPROFILE%\AppData\Local\Packages\CanonicalGroupLimited....
    • En este perfil de distribución de Linux, debe haber una carpeta denominada LocalState. Haga clic con el botón derecho en ella para mostrar un menú de opciones. Seleccione Propiedades > Opciones avanzadas y, a continuación, asegúrese de que las casillas "Comprimir contenido para ahorrar espacio en disco" y "Cifrar contenido para proteger datos" no estén seleccionadas (activadas). Si se le pregunta si quiere aplicar esto solo a la carpeta actual o a todas las subcarpetas y archivos, seleccione "solo esta carpeta", ya que solo quiere borrar la marca de compresión. A continuación, el comando wsl --set-version debería funcionar.

Screenshot of WSL distro property settings

Nota:

En mi caso, la carpeta LocalState de la distribución de Ubuntu 18.04 se encontraba en C:\Users<my-user-name>\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu18.04onWindows_79rhkp1fndgsc.

Consulte el subproceso n.º 4103 de la documentación sobre WSL en GitHub, en el que se realiza el seguimiento de este problema para obtener información actualizada.

  • El término 'wsl' no se reconoce como nombre de cmdlet, función, archivo de script o programa ejecutable.

  • Error: el Subsistema de Windows para Linux no tiene ninguna distribución instalada.

    • Si recibe este error después de haber instalado las distribuciones de WSL:
    1. Ejecute la distribución al menos una vez antes de invocarla desde la línea de comandos.
    2. Compruebe si puede ejecutar cuentas de usuario independientes. La ejecución de la cuenta de usuario principal con permisos elevados (en modo de administrador) no debería producir este error, pero debe asegurarse de que no ejecuta accidentalmente la cuenta de administrador integrada que viene con Windows. Se trata de una cuenta de usuario independiente y no mostrará ninguna distribución de WSL instalada por diseño. Para obtener más información, consulte Habilitar y deshabilitar la cuenta integrada de administrador.
    3. El archivo ejecutable de WSL solo se instala en el directorio del sistema nativo. Cuando se ejecuta un proceso de 32 bits en un Windows de 64 bits (o en ARM64, cualquier combinación no nativa), el proceso no nativo hospedado realmente ve una carpeta System32 diferente. (La que ve un proceso de 32 bits en la versión x64 de Windows se almacena en el disco en \Windows\SysWOW64). Para acceder al System32 "nativo" desde un proceso hospedado, busque en la carpeta virtual \Windows\sysnative. En realidad, no estará presente en el disco, pero el solucionador de rutas de acceso del sistema de archivos la encontrará.
  • Error: Esta actualización solo se aplica a las máquinas con el Subsistema de Windows para Linux.

    • Para instalar el paquete MSI de actualización del kernel de Linux, WSL es necesario y debe habilitarse primero. Si se produce un error, verá el mensaje: This update only applies to machines with the Windows Subsystem for Linux.
    • Hay tres posibles motivos para ver este mensaje:
    1. Todavía tiene una versión antigua de Windows que no es compatible con WSL 2. Consulte el paso 2 para conocer los requisitos de la versión y los vínculos de la actualización.

    2. WSL no está habilitado. Tendrá que volver al paso 1 y asegurarse de que la característica WSL opcional está habilitada en la máquina.

    3. Después de habilitar WSL, es necesario un reinicio para que surta efecto. Reinicie la máquina e inténtelo de nuevo.

  • Error: WSL 2 requiere una actualización en su componente de kernel. Para obtener más información, visite https://aka.ms/wsl2kernel.

    • Si falta el paquete del kernel de Linux en la carpeta %SystemRoot%\system32\lxss\tools, se mostrará este error. Para resolverlo, instale el paquete MSI de actualización del kernel de Linux en del paso 4 de estas instrucciones de instalación. Es posible que deba desinstalar el paquete MSI desde "Agregar o quitar programas" e instalarlo de nuevo.

Problemas comunes

Tengo la versión 1903 de Windows 10 y sigo sin ver las opciones de WSL 2

Probablemente, se debe a que la máquina aún no ha adquirido la adaptación para WSL 2. La forma más sencilla de resolverlo es dirigirse a Configuración de Windows y hacer clic en "Buscar actualizaciones" para instalar las actualizaciones más recientes en el sistema. Consulte las instrucciones completas sobre cómo adquirir la adaptación.

Si pulsa "Buscar actualizaciones" y sigue sin recibir la actualización, puede instalar KB KB4566116 manualmente.

Error: 0x1bc cuando wsl --set-default-version 2

Puede ocurrir cuando el valor de "Mostrar idioma" o "Configuración regional del sistema" no es Inglés.

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

El error real de 0x1bc es:

WSL 2 requires an update to its kernel component. For information please visit https://aka.ms/wsl2kernel

Para obtener más información, consulte el problema 5749.

No se puede acceder a los archivos WSL desde Windows

Un servidor de archivos de protocolo 9P proporciona el servicio en el lado de Linux para permitir que Windows tenga acceso al sistema de archivos de Linux. Si no puede acceder a WSL con \\wsl$ en Windows, podría deberse a que 9P no se inició correctamente.

Para comprobarlo, puede consultar los registros de inicio mediante: dmesg |grep 9p, lo que le mostrará los errores. Una salida correcta se parece a la siguiente:

[    0.363323] 9p: Installing v9fs 9p2000 file system support
[    0.363336] FS-Cache: Netfs '9p' registered for caching
[    0.398989] 9pnet: Installing 9P2000 support

Consulte este subproceso de Github para más explicaciones sobre este problema.

No se puede iniciar la distribución WSL 2 y solo se ve "WSL 2" en la salida

Si el idioma para mostrar no es el inglés, es posible que vea una versión truncada de un texto de error.

C:\Users\me>wsl
WSL 2

Para resolver este problema, visite https://aka.ms/wsl2kernel e instale el kernel manualmente siguiendo las instrucciones de esa página de documentación.

Se muestra el mensaje command not found al ejecutar un archivo .exe de Windows en Linux

Los usuarios pueden ejecutar archivos ejecutables de Windows como notepad.exe directamente desde Linux. A veces, puede que se encuentre con el mensaje "comando no encontrado", como en el siguiente ejemplo:

$ notepad.exe
-bash: notepad.exe: command not found

Si no hay ninguna ruta de acceso Win32 en el parámetro $PATH, interop no encontrará el archivo .exe. Para comprobarlo, puede ejecutar echo $PATH en Linux. Se espera que aparezca una ruta de acceso Win32 (por ejemplo, /mnt/c/Windows) en la salida. Si no se muestra ninguna ruta de acceso de Windows, lo más probable es que el shell de Linux haya sobrescrito el parámetro PATH.

A continuación se muestra un ejemplo en el que la ruta /etc/profile en Debian contribuyó al problema:

if [ "`id -u`" -eq 0 ]; then
  PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
else
  PATH="/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games"
fi

La manera correcta de hacerlo en Debian consiste en quitar las líneas anteriores. También puede anexar el parámetro $PATH durante la asignación, como se indica a continuación. No obstante, esto genera otros problemas con WSL y VSCode.

if [ "`id -u`" -eq 0 ]; then
  PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:$PATH"
else
  PATH="/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games:$PATH"
fi

Si quiere obtener más información, consulte las incidencias 5296 y 5779.

"Error: 0x80370102 The virtual machine could not be started because a required feature is not installed" (Error: 0x80370102 No se pudo iniciar la máquina virtual porque una característica necesaria no está instalada).

Habilite la característica de Windows de plataforma de máquina virtual y asegúrese de que la virtualización esté habilitada en el BIOS.

  1. Consulte Requisitos de sistema de Hyper-V.

  2. Si el equipo es una máquina virtual, habilite la virtualización anidada de forma manual. Inicie PowerShell como administrador y ejecute:

    Set-VMProcessor -VMName <VMName> -ExposeVirtualizationExtensions $true
    
  3. Siga las instrucciones del fabricante del equipo sobre cómo habilitar la virtualización. En general, esto puede implicar el uso del BIOS del sistema para asegurarse de que estas características se habilitan en la CPU. Las instrucciones para este proceso pueden variar de un equipo a otro. Consulte este artículo de Bleeping Computer para ver un ejemplo.

  4. Reinicie el equipo después de habilitar el componente opcional Virtual Machine Platform.

  5. Asegúrese de que el inicio del hipervisor está habilitado en la configuración de arranque. Puede validar esto ejecutando lo siguiente (PowerShell con privilegios elevados):

     bcdedit /enum | findstr -i hypervisorlaunchtype
    

    Si ve hypervisorlaunchtype Off, el hipervisor está deshabilitado. Para habilitar este elemento, ejecute una instancia de PowerShell con privilegios elevados:

     bcdedit /set {current} hypervisorlaunchtype Auto
    
  6. Además, si tiene instalados hipervisores de terceros (por ejemplo, VMware o VirtualBox), asegúrese de que tengan las versiones más recientes que pueden admitir (VMware 15.5.5+ y VirtualBox 6+) o de que estén desactivados.

Obtenga más información sobre cómo configurar la virtualización anidada al ejecutar Hyper-V en una máquina virtual.

Bash pierde la conectividad de red una vez que se conecta a una VPN

Si después de conectarte a una VPN en Windows, Bash pierde la conectividad de red, prueba esta solución desde dentro de Bash. Esta solución alternativa te permitirá invalidar manualmente la resolución de DNS a través de /etc/resolv.conf.

  1. Toma nota del servidor DNS de la VPN con ipconfig.exe /all
  2. Haz una copia del resolv.conf existente sudo cp /etc/resolv.conf /etc/resolv.conf.new
  3. Desvincula el elemento resolv.com actual sudo unlink /etc/resolv.conf
  4. sudo mv /etc/resolv.conf.new /etc/resolv.conf
  5. Edite /etc/wsl.conf y agregue este contenido al archivo. (Puede encontrar más información sobre esta configuración aquí)
[network]
generateResolvConf
  1. Abre /etc/resolv.conf y
    a. Elimine la primera línea del archivo que tiene un comentario que describe la generación automática
    b. Agrega la entrada de DNS de (1) anterior como primera entrada de la lista de servidores DNS.
    c. Cierra el archivo.

Una vez que hayas desconectado la VPN, tendrás que revertir los cambios a /etc/resolv.conf. Para ello, haz lo siguiente:

  1. cd /etc
  2. sudo mv resolv.conf resolv.conf.new
  3. sudo ln -s ../run/resolvconf/resolv.conf resolv.conf

Iniciar WSL o instalar una distribución devuelve un código de error

Sigue estas instrucciones para recopilar registros detallados y registrar un problema en GitHub.

Actualización de WSL

Hay dos componentes del Subsistema de Windows para Linux que pueden requerir actualización.

  1. Para actualizar el Subsistema de Windows para Linux, use el comando wsl --update en PowerShell o CMD.

  2. Para actualizar los archivos binarios de usuario de distribución de Linux específicos, use el comando apt-get update | apt-get upgrade en la distribución de Linux que quiere actualizar.

Errores de actualización de apt-get

Algunos paquetes usan características que aún no se han implementado. udev, por ejemplo, todavía no se admite y produce varios errores de tipo apt-get upgrade.

Para corregir los problemas relacionados con udev, sigue estos pasos:

  1. Escribe lo siguiente en /usr/sbin/policy-rc.d y guarda los cambios.

    #!/bin/sh
    exit 101
    
  2. Agrega los permisos de ejecución en /usr/sbin/policy-rc.d:

    chmod +x /usr/sbin/policy-rc.d
    
  3. Ejecute los siguientes comandos:

    dpkg-divert --local --rename --add /sbin/initctl
    ln -s /bin/true /sbin/initctl
    

"Error: 0x80040306" en la instalación

Esto se relaciona con el hecho de que no se admite la consola heredada. Para desactivar la consola heredada:

  1. Abre cmd.exe.
  2. Haga clic con el botón derecho en barra de título -> Propiedades -> y desactive Usar consola heredada.
  3. Haga clic en Aceptar

"Error: 0x80040154" después de una actualización de Windows

La característica Subsistema de Windows para Linux puede deshabilitarse durante una actualización de Windows. Si esto ocurre, debes volver a habilitar la característica de Windows. Las instrucciones para habilitar el Subsistema de Windows para Linux se pueden encontrar en la guía de instalación manual.

Cambiar el idioma de visualización

La instalación de WSL intentará cambiar automáticamente la configuración regional de Ubuntu para que coincida con la configuración regional de la instalación de Windows. Si no quieres que esto pase, puedes ejecutar este comando para cambiar la configuración regional de Ubuntu una vez finalizada la instalación. Ten en cuenta que tendrás que reiniciar bash.exe para que este cambio surta efecto.

En el ejemplo siguiente se cambia la configuración regional a en-US:

sudo update-locale LANG=en_US.UTF8

Problemas de instalación después de una restauración del sistema de Windows

  1. Elimina la carpeta %windir%\System32\Tasks\Microsoft\Windows\Windows Subsystem for Linux.
    Nota: No lo hagas si tu característica opcional está completamente instalada y en funcionamiento.
  2. Habilitar la característica opcional WSL (si aún no lo está)
  3. Reiniciar
  4. lxrun /uninstall /full
  5. Instala bash.

Sin acceso a Internet en WSL

Algunos usuarios han informado de problemas con aplicaciones de firewall específicas que bloquean el acceso a Internet en WSL. Los firewalls que dan error son:

  1. Kaspersky
  2. AVG
  3. Avast
  4. Symantec Endpoint Protection

En algunos casos, si desactivas el firewall podrás acceder. En otros casos, simplemente tener instalado el firewall parece bloquear el acceso a Internet.

Si usa el Firewall de Microsoft Defender, la desactivación de "Bloquear todas las conexiones entrantes, incluidas las de la lista de aplicaciones permitidas" permite el acceso.

Error de permiso denegado al usar ping

En cuanto a la Actualización de aniversario de Windows (versión 1607), es necesario tener privilegios de administrador en Windows para ejecutar ping en WSL. Para ejecutar ping, ejecuta Bash en Ubuntu en Windows como administrador o ejecuta bash.exe desde un símbolo del sistema de CMD/PowerShell con privilegios de administrador.

Para versiones posteriores de Windows (compilación 14926+) ya no es necesario tener privilegios de administrador.

Bash se bloquea

Si mientras trabajas con Bash, ves que Bash se bloquea (o interbloquea) y no responde a las entradas, ayúdanos a diagnosticar el problema mediante la recopilación y la generación de informes de un volcado de memoria. Ten en cuenta que con estos pasos se bloqueará tu sistema. No lo hagas si no te sientes cómodo al hacerlo o guarda el trabajo antes de hacerlo.

Para recopilar un volcado de memoria

  1. Cambia el tipo de volcado de memoria a "volcado de memoria completa". Al cambiar el tipo de volcado, toma nota del tipo actual.

  2. Sigue los pasos para configurar el bloqueo mediante el control de teclado.

  3. Reproduce el bloqueo o interbloqueo.

  4. Bloquea el sistema con la secuencia de claves de (2).

  5. El sistema se bloqueará y recopilará el volcado de memoria.

  6. Una vez que se reinicie el sistema, informa memory.dmp a secure@microsoft.com. La ubicación predeterminada del archivo de volcado es %SystemRoot%\memory.dmp o C:\Windows\memory.dmp si C: es la unidad del sistema. En el correo electrónico, indica que el volcado de memoria es para el equipo de WSL o de Bash en Windows.

  7. Restaura el tipo de volcado de memoria a la configuración original.

Comprobar el número de compilación

Para encontrar la arquitectura de tu PC y el número de compilación de Windows, abre:
Configuración>Sistema>Acerca de

Busca los campos Compilación del SO y Tipo de sistema.
Screenshot of Build and System Type fields

Para encontrar el número de compilación de Windows Server, ejecuta lo siguiente en PowerShell:

systeminfo | Select-String "^OS Name","^OS Version"

Confirmar que WSL está habilitado

Para confirmar que el Subsistema de Windows para Linux está habilitado, puede ejecutar lo siguiente en una ventana PowerShell con privilegios elevados:

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

Problemas de conexión del servidor de OpenSSH

Al intentar conectarte al servidor SSH se produce el error siguiente: "Connection closed by 127.0.0.1 port 22" (Conexión cerrada por 127.0.0.1 puerto 22).

  1. Asegúrate de que el servidor OpenSSH esté en ejecución:

    sudo service ssh status
    

    y que has seguido este tutorial: https://ubuntu.com/server/docs/service-openssh

  2. Detén el servicio sshd e inicia sshd en modo de depuración:

    sudo service ssh stop
    sudo /usr/sbin/sshd -d
    
  3. Comprueba los registros de inicio y asegúrate de que HostKeys estén disponibles y de no ver mensajes de registro como:

    debug1: sshd version OpenSSH_7.2, OpenSSL 1.0.2g  1 Mar 2016
    debug1: key_load_private: incorrect passphrase supplied to decrypt private key
    debug1: key_load_public: No such file or directory
    Could not load host key: /etc/ssh/ssh_host_rsa_key
    debug1: key_load_private: No such file or directory
    debug1: key_load_public: No such file or directory
    Could not load host key: /etc/ssh/ssh_host_dsa_key
    debug1: key_load_private: No such file or directory
    debug1: key_load_public: No such file or directory
    Could not load host key: /etc/ssh/ssh_host_ecdsa_key
    debug1: key_load_private: No such file or directory
    debug1: key_load_public: No such file or directory
    Could not load host key: /etc/ssh/ssh_host_ed25519_key
    

Si ve estos mensajes y faltan las claves en /etc/ssh/, tendrá que volver a generar las claves o simplemente purgar e&instalar el servidor OpenSSH:

sudo apt-get purge openssh-server
sudo apt-get install openssh-server

"No se encontró el ensamblado al que se hace referencia." al habilitar la característica opcional WSL.

Este error está relacionado con un estado de instalación incorrecta. Complete los pasos siguientes para intentar corregir este problema:

  • Si estás ejecutando el comando para habilitar la característica WSL desde PowerShell, intenta usar la GUI en su lugar desde el menú Inicio: busca "activar o desactivar las características de Windows" y, a continuación, en la lista, selecciona "Subsistema de Windows para Linux", lo que instalará el componente opcional.

  • Actualiza la versión de Windows. Para ello, ve a Configuración, Actualizaciones y haz clic en "Buscar actualizaciones".

  • Si se produce un error en ambos casos y necesitas acceder a WSL, considera la posibilidad de realizar una actualización local. Para ello, vuelve a instalar Windows 10 con los medios de instalación y selecciona "Conservar todo" para asegurarte de que las aplicaciones y los archivos se conservan. Puedes encontrar instrucciones sobre cómo hacerlo en la página Reinstalar Windows 10.

Si ves este error:

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@         WARNING: UNPROTECTED PRIVATE KEY FILE!          @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions 0777 for '/home/artur/.ssh/private-key.pem' are too open.

Para corregirlo, anexa lo siguiente al archivo /etc/wsl.conf:

[automount]
enabled = true
options = metadata,uid=1000,gid=1000,umask=0022

Ten en cuenta que, al agregar este comando, se incluirán metadatos y se modificarán los permisos de archivo en los archivos de Windows que se muestran en WSL. Para obtener más información, consulta los Permisos del sistema de archivos.

La ejecución de comandos de Windows devuelve un error dentro de una distribución

Algunas distribuciones disponibles en Microsoft Store aún no son totalmente compatibles con la ejecución de comandos de Windows de forma predefinida. Si recibe un error -bash: powershell.exe: command not found al ejecutar powershell.exe /c start . o cualquier otro comando de Windows, siga estos pasos para resolverlo:

  1. En la distribución de WSL, ejecute echo $PATH.
    Si no incluye /mnt/c/Windows/system32, hay algo que redefine la variable PATH estándar.
  2. Consulte la configuración del perfil con cat /etc/profile.
    Si contiene la asignación de la variable PATH, edite el archivo para comentar el bloque de asignación de PATH con un carácter # .
  3. Compruebe si wsl.conf está presente cat /etc/wsl.conf y asegúrese de que no contenga appendWindowsPath=false. En caso contrario, coméntelo.
  4. Para reiniciar la distribución, escriba wsl -t seguido del nombre de la distribución o ejecute wsl --shutdown en CMD o PowerShell.

No se puede realizar el arranque después de instalar WSL 2

Somos conscientes de un problema que afecta a los usuarios en el que no pueden realizar el arranque después de instalar WSL 2. Mientras realizamos el diagnóstico completo del problema, los usuarios han comunicado que este puede solucionarse si se cambia el tamaño del búfer o se instalan los controladores adecuados. Consulte este problema de GitHub para ver sus actualizaciones más recientes.

Errores de WSL 2 cuando el componente ICS está deshabilitado

La conexión compartida a Internet (ICS) es un componente necesario de WSL 2. El servicio de red de host (HNS) usa el servicio ICS para crear la red virtual subyacente en la que se basa WSL 2 para la conexión compartida de host, NAT, DNS y DHCP.

Deshabilitar el servicio ICS (SharedAccess) o bien ICS mediante la directiva de grupo impedirá que se cree la red HNS de WSL. Esto producirá errores al crear una nueva imagen de la versión 2 de WSL y el siguiente error al intentar convertir una imagen de la versión 1 a la versión 2.

There are no more endpoints available from the endpoint mapper.

Los sistemas que requieren WSL 2 deben dejar el servicio ICS (SharedAccess) en el estado de inicio predeterminado, Manual (desencadenar inicio), y cualquier directiva que deshabilite ICS debe sobrescribirse o quitarse. Aunque deshabilitar el servicio ICS interrumpirá WSL 2 y no es una acción recomendada, se pueden deshabilitar secciones de ICS siguiendo estas instrucciones.

Uso de versiones anteriores de Windows y WSL

Hay varias diferencias a tener en cuenta si ejecuta una versión anterior de Windows y WSL, como Windows 10 Creators Update (octubre de 2017, compilación 16299) o Actualización de aniversario (agosto de 2016, compilación 14393). Se recomienda actualizar a la versión Windows más reciente. Por si no es posible, se describen algunas de las diferencias a continuación.

Diferencias entre los comandos de interoperabilidad:

  • bash.exe se ha reemplazado por wsl.exe. Los comandos de Linux se pueden ejecutar desde el símbolo del sistema de Windows o desde PowerShell, pero para las primeras versiones de Windows, puede que tengas que usar el comando bash. Por ejemplo: C:\temp> bash -c "ls -la". Los comandos de WSL pasados a bash -c se reenvían al proceso de WSL sin modificaciones. Las rutas de acceso de archivo deben especificarse en el formato de WSL y se debe tener cuidado al escapar caracteres relevantes. Por ejemplo, C:\temp> bash -c "ls -la /proc/cpuinfo" o C:\temp> bash -c "ls -la \"/mnt/c/Program Files\"".
  • Para ver qué comandos están disponibles para una distribución determinada, ejecuta [distro.exe] /?. Por ejemplo, con Ubuntu: C:\> ubuntu.exe /?.
  • La ruta de acceso de Windows se incluye en $PATH de WSL.
  • Al llamar a una herramienta de Windows desde una distribución de WSL en una versión anterior de Windows 10, deberás especificar la ruta de acceso del directorio. Por ejemplo, para llamar a la aplicación Bloc de notas de Windows desde la línea de comandos de WSL, escriba: /mnt/c/Windows/System32/notepad.exe.
  • Para cambiar el usuario predeterminado a root, use este comando en PowerShell C:\> lxrun /setdefaultuser root y, a continuación, ejecute Bash.exe para iniciar sesión en C:\> bash.exe. Restablezca la contraseña con el comando de contraseña de la distribución ($ passwd username) y, a continuación, cierre la línea de comandos de Linux: $ exit. Desde el símbolo del sistema de Windows o PowerShell, restablezca el usuario predeterminado a su cuenta de usuario de Linux normal: C:\> lxrun.exe /setdefaultuser username.

Desinstalación de la versión heredada de WSL

Si originalmente instaló WSL en una versión de Windows 10 anterior a Creators Update (octubre de 2017, compilación 16299), se recomienda migrar los archivos, los datos, etc. necesarios de la distribución de Linux anterior que instaló a una distribución más reciente instalada a través de Microsoft Store. Para quitar la distribución heredada de la máquina, ejecute lo siguiente desde una línea de comandos o una instancia de PowerShell: wsl --unregister Legacy. También tiene la opción de quitar manualmente la distribución heredada anterior mediante la eliminación de la carpeta %localappdata%\lxss\ (y todo su contenido) mediante el Explorador de archivos de Windows o PowerShell: rm -Recurse $env:localappdata/lxss/.