GNU/Linux >> Tutoriales Linux >  >> Linux

La guía definitiva del subsistema de Windows para Linux (Windows WSL)

El subsistema de Windows para Linux o Windows WSL es una excelente solución para que los desarrolladores trabajen de forma nativa dentro de Linux directamente en su versión de escritorio de Windows 10.

Si ha pasado demasiado tiempo particionando discos duros para tener varios sistemas Linux instalados con Windows, está de suerte con este artículo.

El hada madre de código de Microsoft ha decidido darle otra opción:el subsistema de Windows para Linux (WSL). WSL hace que ejecutar un sistema Linux junto con Windows sea mucho más fácil y flexible.

En este tutorial, aprenderá cómo comenzar con WSL. Aprenderá cómo comenzar a aprender a usar algunas herramientas ingeniosas que hacen que WSL sea aún más versátil que usar bash o PowerShell solos.

¿Qué es WSL?

WSL o C:\Windows\System32\wsl.exe es una herramienta de Windows que le permite instalar una distribución de Linux como una aplicación desde la tienda de Windows.

Dado que WSL es un ejecutable simple de Windows, puede llamarlo desde un símbolo del sistema o desde un terminal de PowerShell. Profundizaremos en ese tema más adelante. Por ahora, es importante entender un poco más sobre lo que WSL está haciendo debajo del capó.

Cómo habilitar WSL

Configurar y habilitar WSL implica instalar una distribución de Linux junto con Windows 10. Pero de una manera que permita que los dos sistemas operativos diferentes interactúen entre sí.

Requisitos previos

Si es un profesional de TI que tiene problemas con demasiadas solicitudes de restablecimiento de contraseña en Active Directory, consulte Specops uReset, una solución SSPR segura.

Para instalar WSL en Windows, debe cumplir un requisito; debe tener una computadora con Windows 10 de 64 bits compilación 18917 o posterior.

Puede encontrar su compilación de Windows 10 ejecutando la utilidad winver.

Habilitación de la característica WSL de Windows

WSL es muy fácil de habilitar; no se requiere descarga. Es simplemente una característica única de Windows.

Para habilitar WSL, abra PowerShell como administrador y ejecute lo siguiente:

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

Relacionado:Cómo ejecutar PowerShell como administrador

Una vez completado, reinicia tu computadora y ¡listo!

Descarga de una distribución de Linux para WSL

WSL no instala ninguna distribución de Linux por sí solo. Tendrás que instalar uno. Una vez que vuelva a funcionar Windows 10, comience a configurar la distribución de Linux que haya elegido.

Primero, abra Microsoft Store y busque 'WSL'. Pronto debería ver aparecer una lista de distribuciones de Linux.

A continuación, elija la distribución que prefiera e instálela. Este tutorial usará Ubuntu 18.04. En el momento de escribir este artículo, también tiene algunas otras distribuciones disponibles, como:

  • Ubuntu 16.04 LTS
  • Ubuntu 18.04 LTS
  • OpenSUSE Leap 15
  • OpenSUSE Leap 42
  • SUSE Linux Enterprise Server 12
  • SUSE Linux Enterprise Server 15
  • Kali Linux
  • Debian GNU/Linux
  • Remezcla de Fedora para WSL
  • Pengwin
  • WSL alpino

Configurando su versión de WSL

Es posible que deba habilitar Linux para que funcione con la versión 2 de WSL. Si es así, puede hacerlo siguiendo las instrucciones a continuación.

En una consola de PowerShell:

  1. Enumere qué versiones de Linux ha instalado ejecutando wsl -l o wsl --list .
  2. Una vez que tenga la lista, copie el nombre de la distribución que desea ejecutar con WSL2 y ejecute wsl --set-version 2 , reemplazando con el nombre que copió anteriormente.
  3. Confirme que el comando fue exitoso ejecutando wsl -l -v o wsl --list --verbose . Este comando devolverá una lista completa de distribuciones de WSL y la versión que usa cada distribución.

También puede configurar su versión WSL predeterminada para cualquier distribución que instale en el futuro a WSL2 ejecutando wsl --set-default-version 2

Inicio de WSL

Para comenzar a usar WSL, abra una terminal de PowerShell y escriba wsl . Si configuró WSL correctamente, ingresará a un terminal bash que se ejecuta en la distribución WSL de su elección. Desde aquí, puede ejecutar los comandos de Linux que desee.

A continuación encontrará una referencia a todas las opciones del wsl.exe proporciona al iniciar.

Comando Explicación Ejemplo
ejec, -e Ejecutará el comando usando sin usar el shell predeterminado wsl -e curl google.com
Pasa cualquier cosa después de este parámetro al shell predeterminado. Omitir el operador también funcionará. wsl — curl google.com, wsl curl google.com
distribución, -d Abre una terminal en el shell de la distribución especificada wsl -d Ubuntu-18.04
usuario, -u Ejecuta el comando WSL como el usuario especificado siempre que el usuario exista en esa distribución wsl -d Ubuntu-18.04 -u usuario_tux
exportar Exporta la distribución especificada a un archivo tar en su sistema local. wsl –exportar Ubuntu ./Test-Ubuntu.tar
importar [–versión] Importa un archivo tar como una nueva distribución de WSL. Puede especificar la versión de WSL con la opción –version wsl –importar Prueba-Ubuntu C:\datos\Prueba-Ubuntu .\Prueba-Ubuntu.tar
lista, -l [Opciones] wsl –lista
todos Lista de todas las distribuciones de WSL instaladas wsl -l –todos
corriendo Enumerar solo las distribuciones de WSL que se están ejecutando actualmente wsl -l –en ejecución
silencio, -q Mostrar solo los nombres de distribución de WSL wsl -l -q
detallado, -v Mostrar información detallada sobre todas las distribuciones de WSL wsl -l -v
establecer predeterminado, -s Establece la distribución de WSL especificada como distribución predeterminada para los comandos de WSL. wsl -s Prueba-Ubuntu
establecer-versión-predeterminada Cambia la versión WSL predeterminada para todas las nuevas distribuciones instaladas en ese sistema wsl –set-default-versión 2
set-version Cambia la versión WSL de la distribución especificada wsl –set-version Test-Ubuntu 2
apagar Termina inmediatamente todas las distribuciones de WSL en ejecución wsl –apagado
terminar, -t Termina la distribución de WSL especificada wsl -t Prueba-Ubuntu
anular el registro de Anula el registro de la distribución WSL especificada wsl:cancelar el registro de prueba-Ubuntu
ayuda Mostrar información sobre el uso de WSL wsl –ayuda

Una vez que se sienta cómodo usando estos conmutadores, descubrirá que ejecutar y administrar aplicaciones a través de WSL es mucho más fácil que administrar máquinas virtuales Linux por su cuenta.

Consejo rápido:descubra todos los indicadores y argumentos para WSL ejecutando wsl --help .

Cuando termines, escribe exit para volver a la terminal de PowerShell.

Compartir recursos de Windows/Linux a través de WSL

Una de las mejores partes de WSL es que puede compartir sin problemas los recursos de Windows y Linux entre sí. En este momento, puede compartir sistemas de archivos, variables de entorno, recursos de red y herramientas de línea de comandos como cmd y PowerShell.

Todos los ejemplos que verá en esta sección son a través de la distribución WSL Ubuntu Linux. Su kilometraje puede variar si ha elegido descargar una distribución diferente.

Compartir sistemas de archivos

El sistema de archivos es una de las cosas más útiles para compartir con WSL. WSL le permite trabajar con ambos sistemas de archivos como si fueran uno solo.

El sistema de archivos de Windows 10 se monta como un directorio en Linux, mientras que su sistema de archivos de Linux se montará como una carpeta en Windows.

Encontrar el sistema de archivos de Linux desde Windows con variables de entorno

Cuando instala una distribución de Linux con WSL, a veces agregará una variable de entorno de Windows. En el caso de la distribución WSL Ubuntu Linux, creará una variable de entorno llamada UBUNTU_HOME. Esta variable de entorno apunta a Linux /home/ubuntu directorio desde Windows y WSL Ubuntu.

La ruta definida en UBUNTU_HOME se puede usar para ejecutar secuencias de comandos que usan recursos entre ellos, o establecer una ubicación predeterminada para la terminal de Windows (que se trata más adelante).

Otras distribuciones pueden definir una variable de entorno similar. Inspeccione las variables de entorno de Windows con el comando de PowerShell Get-ChildItem -Path $Env:\ después de instalar una nueva distribución de Linux para ver si se ha agregado alguna.

Este atajo de variable de entorno es útil si desea poner todo en /home/ubuntu directorio. Pero profundicemos un poco más en cómo llegó allí y de qué otra manera puedes alcanzarlo.

Buscar el sistema de archivos Linux desde Windows a través de la carpeta de paquetes de Microsoft Store

No se garantiza que todas las distribuciones de WSL vengan con una manera fácil de hacer referencia a ellas. Es importante que aprenda a encontrar el sistema de archivos de Linux de una forma alternativa.

Dado que la mayoría de las distribuciones de WSL Linux se instalarán desde la tienda de Microsoft, puede buscar el sistema de archivos de Linux en el mismo lugar que otras aplicaciones de la tienda de Windows. Navegue a %PERFIL DE USUARIO%\AppData\Local\Packages\ para encontrar el directorio donde van las aplicaciones de la tienda de Windows. A continuación, asuma el control de la carpeta, ya que normalmente está protegida de forma predeterminada.

Verá muchas subcarpetas en la carpeta de paquetes donde se puede presentar su sistema de archivos de distribución de Linux. La distribución WSL Ubuntu, por ejemplo, estaba bajo CanonicalGroupLimited.Ubuntu18.04onWindows_79rhkp1fndgsc carpeta para mí.

Si navega a la carpeta del paquete, encontrará el sistema de archivos de Linux. Para WSL Ubuntu, se encuentra en LocalState\rootfs carpeta. Este es el directorio raíz de su distribución de Linux.

Encontrar el sistema de archivos de Windows desde Linux

Para encontrar el sistema de archivos de Windows 10 desde Linux, abra WSL en Windows. WSL luego abrirá una terminal bash. Esta terminal bash se iniciará en tu UBUNTU_HOME directorio por defecto.

También puede encontrar la raíz de sus volúmenes de almacenamiento de Windows. Cada una de sus unidades de letras de Windows (C, D, E, etc.) se trata como una unidad montada del sistema de archivos WSL Linux. Encontrará cada volumen montado como /mnt/c , /mnt/d , etc. siempre que tenga privilegios de root.

El sistema de archivos WSL2

Navegar por el sistema de archivos WSL es bastante sencillo. Cualquiera que no esté familiarizado con la estructura del sistema de archivos de Linux apreciará poder navegar con el Explorador de Windows. Pero si quieres cambiarte a WSL2, será un poco más complicado.

WSL2 cambia la forma en que todo funciona bajo el capó para compartir sistemas de archivos. Para empezar, el sistema de archivos ahora es un disco duro virtual en vhdx formato en lugar de un directorio.

Puede encontrar el vhdx archivo en %USERPROFILE%\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu18.04onWindows_79rhkp1fndgsc\LocalState para una distribución WSL Ubuntu.

Descubrirá que los archivos VHDX se pueden montar en Windows con el Administrador de discos herramienta. Sin embargo, los discos virtuales no se pueden montar mientras la distribución WSL está registrada.

Compartir variables de entorno

Las variables de entorno son una parte crucial de cualquier sistema operativo, lo que facilita la referencia a archivos binarios y ejecutables en cualquier lugar de sus aplicaciones.

Antes de la compilación 17063 de Windows 10, la única variable de entorno compartida entre Windows 10 y WSL Linux era la RUTA. variable. Desde entonces, es posible compartir variables de entorno utilizando WSLENV la variable de entorno.

Uso de WSLENV variable de entorno para compartir otras variables de entorno puede parecer un poco meta. Para compartir variables de entorno entre plataformas, en realidad debe establecer variables de entorno dentro de otra variable de entorno.

Resumen

Compartir variables de entorno es un proceso de tres pasos a continuación. La única diferencia importante cuando se comparte en Windows/Linux es el argumento de cambio utilizado (referencia completa a continuación).

  1. Defina la variable de entorno en Windows o Linux.
  2. Establecer WSLENV variable de entorno igual a la variable de entorno definida previamente seguida de un argumento de cambio (para traducción de ruta).
  3. Lea la variable de entorno en Windows o Linux.

Opciones para compartir

Puede hacer que las variables estén disponibles de cuatro maneras diferentes según la plataforma en la que desee que aparezca la variable de entorno mediante el uso de interruptores (tabla que se muestra a continuación).

  • El sistema de archivos de Windows solo estará disponible desde sí mismo
  • El sistema de archivos WSL solo estará disponible desde WSL
  • El sistema de archivos WSL estará disponible tanto en WSL Linux como en Windows
  • El sistema de archivos de Windows estará disponible tanto en WSL Linux como en Windows
Bandera Explicación
/p Ruta única. Una variable establecida con esto se traducirá entre Windows y WSL Linux y estará disponible para ambos.
/l Lista de rutas. Similar a /p , excepto que puede aceptar más de una ruta. En Windows, esta lista estará delimitada por punto y coma, mientras que en WSL Linux estará delimitada por dos puntos.
/u Ruta Unix. Solo se puede acceder a una ruta configurada con esta marca cuando se invoca WSL Linux desde Windows. Se puede usar con el /p o /l banderas
/w Ruta de Windows. Solo se puede acceder a una ruta configurada con esta marca cuando se invoca Windows desde WSL Linux. Se puede usar con el /p o /l banderas

Traducción de ruta

La principal razón para compartir variables de entorno es la traducción de rutas. Como ya sabrá, Windows tiene carpetas de perfil de usuario como Linux tiene directorios de perfil de usuario, por ejemplo. Cada usuario tiene una "carpeta de inicio" predeterminada como C:\Users\ en Windows y /home/ en Linux.

Usando el /p y /l conmutadores, WSL traducirá estas rutas de carpeta entre plataformas.

Compartir y traducir rutas de Windows con Linux

Puede compartir una sola ruta o varias rutas a la vez usando el /p y /l interruptores.

En un símbolo del sistema de Windows y con una variable de entorno de Windows definida llamada DESKTOP , asigna un valor de DESKTOP/p al WSLENV variable. Esto le permite acceder a él desde WSL Linux. Puede ver un ejemplo a continuación.

Se puede realizar exactamente el mismo procedimiento para múltiples rutas a la vez usando el /l cambiar.

Compartir y traducir rutas de Linux con Windows

Compartir y traducir la ruta de Linux con Windows es el mismo procedimiento que con Windows, aunque se utilizan comandos específicos de Linux para establecer variables de entorno.

Para obtener una visión más profunda de las variables de entorno compartidas, consulte este artículo de Microsoft.

Compartir recursos de red

El componente de red es otro recurso útil para compartir entre Windows y WSL Linux.

Interfaces de red físicas frente a virtualizadas

En WSL2, las interfaces de red están virtualizadas. Las interfaces de red virtualizadas significan que las instancias de red WSL2 pueden tener diferentes configuraciones de IP que sus contrapartes de Windows 10.

En el momento de escribir este artículo, las direcciones IP para WSL2 Linux utilizan la traducción de direcciones de red (NAT) para acceder a los recursos de red en Windows, aunque Microsoft ha mencionado que la eliminación de NAT ocupa un lugar destacado en su acumulación de problemas por solucionar.

Resolución de DNS del cliente

WSL seguirá generando /etc/resolv.conf y /etc/hosts archivos para permitir la resolución de DNS. Siempre que no anule explícitamente ese comportamiento en /etc/wsl.conf , la resolución DNS del cliente seguirá funcionando como se esperaba.

Aprenderá más sobre el wsl.conf archivo más adelante en la publicación.

Usando PowerShell y Bash juntos

Una de las características más interesantes de WSL es la capacidad de pasar información sin problemas hacia y desde PowerShell y Bash en WSL.

PowerShell –> Bash

Dado que el ejecutable de WSL acepta la entrada de la canalización, puede llamar al wsl.exe comando dentro de PowerShell y acepte stdin. Esto le permite usar WSL para pasar objetos completos de PowerShell a WSL que luego se procesan con el terminal bash. Puede ver un ejemplo a continuación.

Bash –> PowerShell/Cmd

También puede pasar información de bash en WSL a PowerShell y cmd con la misma facilidad. A continuación puede ver un ejemplo de ejecución de Linux ls comando y pasar la salida a PowerShell Select-Object cmdlet a través de la canalización.

También puede llamar a algunas utilidades cmd de Windows desde WSL y devolver el resultado a Linux siempre que ambos comandos estén en la ruta del sistema.

Recuerde que WSL sabe cuál es la ruta del sistema en ambos lados porque tiene acceso a la variable PATH de Windows de forma predeterminada

A continuación puede ver que puede ejecutar ipconfig , que es un comando de Windows, desde WSL y pase esa salida a Linux grep dominio. También puede ver lo contrario de llamar al comando de Linux cuál y pasar la salida a Windows ipconfig comando.

Problemas de traducción

Hay algunas advertencias para pasar la salida del comando de un lado a otro entre bash y PowerShell.

Un gran problema es cómo PowerShell y bash devuelven la información. PowerShell es un lenguaje de programación orientado a objetos, mientras que bash es una herramienta de manipulación de cadenas. Cualquier objeto de PowerShell canalizado a bash se aplanará como una cadena. Por el contrario, cualquier salida de bash canalizada a PowerShell se convertirá en un objeto de cadena.

Puede sortear el comportamiento de alguna manera al convertir o convertir explícitamente tipos de objetos en PowerShell como en el ejemplo a continuación. Pero si espera pasar objetos entre PowerShell y WSL sin ningún trabajo adicional, se sentirá decepcionado.

Convirtiendo la fecha de bash como [datetime] class en PowerShell, ahora tenemos un objeto de PowerShell válido que podemos usar en nuestro script. Si está escribiendo secuencias de comandos que necesitan ir de Windows a WSL y viceversa, es posible hacerlo con un pequeño masaje en el código.

Instalar un subsistema de Windows para la GUI de Linux con Xfce4

Cuando las herramientas de línea de comandos no son suficientes, es hora de usar las GUI. Si necesita ejecutar una utilidad gráfica en WSL, explorar una distribución personalizada o aún no está familiarizado con bash, puede instalar una GUI de Linux.

Xfce

Linux tiene muchos entornos de escritorio disponibles. Uno de los más comunes para configurar WSL se llama Xfce. Al momento de escribir este artículo, Xfce se encuentra en la versión 4. Hay otros entornos de escritorio disponibles, pero en este artículo, aprenderá cómo configurar Xfce4.

xRDP

Cuando tenga configurado un entorno de escritorio Linux, necesitará un servicio que comprenda el protocolo RDP. En este artículo, nos centraremos en el servidor xRDP. xRDP es un servidor RDP de código abierto para Linux que le permite usar clientes RDP para conectarse a Linux como si pudiera hacerlo con hosts de Windows.

Configuración

Para acceder a una GUI de Linux desde Windows con Xfce4 y xRDP, siga las instrucciones a continuación. En una terminal WSL:

  1. Descargar e instalar Xfce4 – Descarga e instala Xfce4 usando el comando sudo apt-get -y install xfce4 && sudo apt-get -y install xubuntu-desktop . Esto tomará un rato. Espera.
  2. Instalar el servidor xRDP – Descargue e instale xRDP ejecutando sudo apt-get -y install xrdp .
  3. Configurar xRDP para xfce4 – echo xfce4-session > ~/.xsession
  4. Reiniciar xRDPsudo service xrdp restart
  5. Buscar la dirección IP de la distribución de WSLifconfig | grep inet

En este punto, debería poder abrir una sesión RDP desde Windows 10. Abra la ventana de conexión de escritorio remoto usando mstsc y proporcione la dirección IP de Linux que se encuentra en el paso 5.

Si todo va bien, puede abrir una conexión RDP a la distribución de Linux que se ejecuta en su sistema operativo Windows como se muestra a continuación.

Consejos y trucos

Ahora que conoce los conceptos básicos de WSL y cómo usarlo, ¿qué sigue? Afortunadamente, hay muchas herramientas diseñadas para WSL o que funcionan bien con él.

Establecer elementos de configuración de WSL en el arranque con wsl.conf

Existe un archivo de configuración en WSL en /etc/wsl.conf. Este archivo contiene opciones de configuración que se ejecutan cada vez que se inicia la distribución WSL. Cuando el wsl.conf el archivo existe, WSL incorporará cualquier configuración en este archivo cada vez que se inicie la distribución de Linux.

Hay algunas secciones diferentes dentro de wsl.conf archivo que puede configurar.

  • Montaje automático – Montaje de unidades desde Windows al inicio
  • Red – Generar resolv.conf o los anfitriones archivo
  • Interoperabilidad – Habilitar o deshabilitar la interoperabilidad con Windows

Para más detalles sobre wsl.conf archivo, echa un vistazo a Microsoft Establecer configuración de inicio de WSL página.

Desarrollo en WSL con Visual Studio Code (VS Code)

VS Code aparentemente se integra con todo y WSL no es una excepción. Desde VS Code, puede configurar un espacio de trabajo en su WSL Distro pero manipularlo completamente con VS Code en Windows. ¡Ni siquiera necesitas tener una terminal funcionando!

Para configurar VS Code en Windows para que funcione con WSL, obviamente primero necesitará tener VS Code para Windows instalado. También asegúrese de tener el Remote – WSL Extensión de VS Code instalada.

Una vez que haya instalado la extensión, ahora puede conectarse abriendo una terminal WSL y ejecutando code . es el directorio desde donde desea ejecutar VS Code. VS Code luego detectará que se encuentra en una distribución de WSL, abrirá una ventana y establecerá una conexión con el espacio de trabajo.

Confirme que funcionó observando el ícono de conexión WSL en la esquina inferior izquierda de VS Code. Debería ver que tiene el nombre de su distribución WSL.

Incluso puede usar el terminal integrado para interactuar directamente con el espacio de trabajo de WSL. No es necesario ejecutar una ventana separada para los comandos de git bash.

Agregar subsistema de Windows para Linux a la terminal de Windows

Otro caso de uso útil de WSL es agregar la consola de WSL a la Terminal de Windows.

Desde Windows Terminal, agrega cada distribución de WSL en su propia pestaña. También puedes personalizar el aspecto de cada pestaña para que no te pierdas.

Si está utilizando una distribución WSL que establece una variable de entorno para el directorio de usuario como UBUNTU_HOME , también puede configurarlo como el directorio de inicio de su terminal.

Si desea ver un tutorial completo en video sobre cómo configurar WSL para que funcione con Windows Terminal, consulte el video instructivo de TechSnips a continuación.

Pensamientos de Cierre

Si es un profesional de TI que tiene problemas con demasiadas solicitudes de restablecimiento de contraseña en Active Directory, consulte Specops uReset, una solución SSPR segura.

Microsoft lanzó WSL para permitir a los desarrolladores de Linux la capacidad de desarrollar en Windows. Hasta ahora, WSL ha sido un paso en la dirección correcta.

Parece que WSL será un componente crucial de la nueva estrategia amigable de código abierto de Microsoft. Si Microsoft va a enfrentarse a Apple para que sea el dispositivo en el que los desarrolladores escriban su código, será una batalla cuesta arriba. Pero WSL es una carta fuerte para jugar.

WSL brinda muchos beneficios bienvenidos a los desarrolladores como:

  • Significativamente más ligero que ejecutar máquinas virtuales Linux locales
  • Eliminar la sobrecarga de instalar y administrar un hipervisor
  • No más requisitos para discos duros con varias particiones
  • No más cargadores de arranque grub complicados

WSL simplemente se enciende y se ejecuta para que todos podamos codificar felices para siempre.


Linux
  1. Una guía de la terminal de Linux para principiantes

  2. Explicación del subsistema de Windows para Linux, WSL y WSL2

  3. Uso del subsistema de Windows para Linux (WSL) de Sublime Text

  4. Montar un recurso compartido de Windows en el Subsistema de Windows para Linux

  5. ¿Cómo configuro el tamaño del puntero del mouse X en el subsistema de Windows para Linux?

Cómo instalar WSL (Subsistema de Windows para Linux) en Windows 11

Cómo instalar el subsistema de Windows para Linux

Cómo matar o terminar un proceso de Linux:la guía definitiva

Una guía práctica para el comando chroot en Linux

Los 15 mejores emuladores de Windows para entusiastas de Linux

Los 15 mejores emuladores de Linux para sistemas Windows