Subsistema de Windows para Linux


De Wikipedia, la enciclopedia libre
  (Redirigido desde WSLg )
Saltar a navegación Saltar a búsqueda

El Subsistema de Windows para Linux ( WSL ) es una capa de compatibilidad para ejecutar ejecutables binarios de Linux (en formato ELF ) de forma nativa en Windows 10 , Windows 11 , [2] y Windows Server 2019 .

En mayo de 2019, se anunció WSL 2 , [3] introduciendo cambios importantes como un kernel de Linux real , [4] a través de un subconjunto de características de Hyper-V . Desde junio de 2019, WSL 2 está disponible para los clientes de Windows 10 a través del programa Windows Insider , incluida la edición Home. [5] WSL no está disponible para todos los usuarios de Windows 10 de forma predeterminada. Puede instalarse uniéndose al programa Windows Insider o mediante la instalación manual. [6]

Visión general

La primera versión de WSL proporciona una interfaz de kernel compatible con Linux desarrollada por Microsoft, que no contiene código de kernel de Linux , [7] que luego puede ejecutar un espacio de usuario GNU encima, como el de Ubuntu , [8] [9] [10] [11] openSUSE , [12] SUSE Linux Enterprise Server , [13] [14] [15] Debian [16] y Kali Linux . [17] Tal espacio de usuario podría contener un lenguaje de comandos y shell GNU Bash , con herramientas nativas de línea de comandos GNU ( sed , awk , etc.), intérpretes de lenguajes de programación ( Ruby , Python , etc.) e incluso aplicaciones gráficas (utilizando un servidor X11 en el lado del host). [18]

La arquitectura se rediseñó en WSL 2, [3] con un kernel de Linux ejecutándose en un entorno de máquina virtual ligero .

Introducción y disponibilidad

WSL beta se introdujo en Windows 10 versión 1607 (actualización de aniversario) el 2 de agosto de 2016. Solo se admitía Ubuntu (con Bash como shell predeterminado). WSL beta también se llamó "Bash en Ubuntu en Windows" o "Bash en Windows".

WSL ya no era beta en Windows 10 versión 1709 (Fall Creators Update), lanzado el 17 de octubre de 2017. Se podían instalar varias distribuciones de Linux y estaban disponibles para su instalación en la Tienda Windows . [15]

WSL solo está disponible en las versiones de 64 bits de Windows 10 a partir de la versión 1607. También está disponible en Windows Server 2019.

Microsoft anunció WSL 2 el 6 de mayo de 2019, [3] que presenta un backend completamente nuevo basado en VM (basado en un subconjunto de características de Hyper-V) en lugar de la capa de adaptación de llamada al sistema anterior. WSL 2 se envió con Windows 10 versión 2004, [19] y también se actualizó a Windows 10 versión 1903 y 1909. [20]

El soporte de GPU para WSL 2 se introdujo en la compilación de Windows 20150. [21] El soporte de GUI para WSL 2 se introdujo en la compilación de Windows 21364. [22] Ambos se envían en Windows 11.

Microsoft presentó una versión de WSL de la Tienda Windows el 11 de octubre de 2021 para Windows 11. [23]

Desarrollo

La primera incursión de Microsoft para lograr una compatibilidad similar a Unix en Windows comenzó con el Subsistema POSIX de Microsoft , reemplazado por los Servicios de Windows para UNIX a través de MKS / Interix , que finalmente quedó en desuso con el lanzamiento de Windows 8.1 . La tecnología detrás del Subsistema de Windows para Linux se originó en el inédito Proyecto Astoria , que permitió que algunas aplicaciones de Android se ejecutaran en Windows 10 Mobile . [24] Primero estuvo disponible en Windows 10 Insider Preview build 14316. [25]

Mientras que los proyectos anteriores de Microsoft y Cygwin de terceros se habían centrado en crear sus propios entornos únicos tipo Unix basados ​​en el estándar POSIX , WSL apunta a la compatibilidad nativa con Linux. En lugar de incluir la funcionalidad no nativa en las llamadas al sistema Win32 como estos sistemas anteriores utilizaban, el diseño inicial de WSL (WSL 1) aprovechó el ejecutivo del kernel de NT para servir a los programas de Linux como procesos mínimos especiales y aislados (conocidos como "pico procesos" ) adjuntos al kernel modo "pico proveedores" como llamada de sistema dedicada y excepción manipuladores distintos de los de un proceso NT vainilla, optando por reutilizar las implementaciones NT existentes siempre que sea posible. [26]

Aunque WSL (a través de este diseño inicial) fue mucho más rápido y posiblemente mucho más popular que sus hermanos proyectos UNIX-on-Windows, los ingenieros del kernel de Windows encontraron dificultades para tratar de aumentar el rendimiento de WSL y la compatibilidad de syscall al intentar remodelar el kernel NT existente para reconocer y funcionar correctamente en la API de Linux . En una conferencia de Microsoft Ignite en 2018, los ingenieros de Microsoft ofrecieron una descripción general de alto nivel de una nueva tecnología Hyper-V VM "liviana" para la contenedorización donde un kernel virtualizado podría hacer uso directo de primitivas NT en el host. [27]En 2019, Microsoft anunció una arquitectura WSL (WSL 2) completamente rediseñada que utiliza esta tecnología de VM liviana que aloja imágenes reales (personalizadas) del kernel de Linux, que afirma ser totalmente compatible con syscall. [4]

Microsoft ve WSL como "principalmente una herramienta para desarrolladores, especialmente desarrolladores web y aquellos que trabajan en proyectos de código abierto". [18] En septiembre de 2018, Microsoft dijo que "WSL requiere menos recursos (CPU, memoria y almacenamiento) que una máquina virtual completa" (que antes de WSL era la forma más directa de ejecutar software Linux en un entorno Windows), mientras también permite a los usuarios utilizar aplicaciones de Windows y herramientas de Linux en el mismo conjunto de archivos. [18]

En abril de 2021, Microsoft lanzó una versión de prueba de Windows 10 que también incluye la capacidad de ejecutar aplicaciones de interfaz gráfica de usuario (GUI) de Linux utilizando WSL 2 y CBL-Mariner . [28] [29] El Subsistema de Windows para Linux GUI (WSLg) fue lanzado oficialmente en la conferencia Microsoft Build 2021 . Se incluye en Windows 10 Insider build 21364 o posterior. [30]

Arquitectura

WSL 1

Servicio de administrador de LXSS

LXSS Manager Service es el servicio encargado de interactuar con el subsistema (a través de los controladores lxss.sys y lxcore.sys), y la forma en que Bash.exe (no confundir con los Shells que brindan las distribuciones de Linux) lanza los procesos de Linux, además de manejar las llamadas al sistema Linux y los bloqueos binarios durante su ejecución. [31]

Todos los procesos de Linux invocados por un usuario en particular van a una "Instancia de Linux" (normalmente, el primer proceso invocado es init ). Una vez que se cierran todas las aplicaciones, se cierra la instancia.

wsl.exe

El wsl.exe comando se usa para administrar distribuciones en el Subsistema de Windows para Linux en la línea de comandos . Puede enumerar las distribuciones disponibles, establecer una distribución predeterminada y desinstalar distribuciones. [32] El comando también se puede utilizar para ejecutar archivos binarios de Linux desde el símbolo del sistema de Windows o Windows PowerShell . [33] wsl.exe reemplaza lo lxrun.exeque está obsoleto a partir de Windows 10 1803 y versiones posteriores. [34]

Ejemplos de

Ejecute el unamecomando en WSL con PowerShell.

PS C: \ temp> wsl uname --todos los Linux WikiMachine 4.4.0-18362-Microsoft # 1-Microsoft Lun 18 de marzo 12:02:00 PST 2019 x86_64 x86_64 x86_64 GNU / Linux

Ejemplo usando un sudocomando desde el símbolo del sistema.

C: \ temp> wsl sudo apt-get update [sudo] contraseña para el nombre de usuario: Hit: 1 https://archive.ubuntu.com/ubuntu xenial InRelease Get: 2 https://security.ubuntu.com/ubuntu xenial- seguridad InRelease [94,5 kB]

Acceso al hardware y al sistema de archivos

El diseño de WSL 1 no presenta emulación / virtualización de hardware (a diferencia de otros proyectos como coLinux) y hace uso directo del sistema de archivos host (a través de VolFSy DrvFS) [35] y algunas partes del hardware, como la red, lo que garantiza la interoperabilidad. Por ejemplo, se puede acceder a los servidores web a través de las mismas interfaces y direcciones IP configuradas en el host, y comparten las mismas restricciones sobre el uso de puertos que requieren permisos administrativos o puertos ya ocupados por otras aplicaciones. [36]

Hay ciertas ubicaciones (como carpetas del sistema) y configuraciones cuyo acceso / modificación está restringido, incluso cuando se ejecuta como root, con sudo desde el shell. Se debe iniciar una instancia con privilegios elevados para que "sudo" otorgue privilegios de root reales y permita dicho acceso. [18]

Limitaciones

WSL 1 no es capaz de ejecutar todo el software de Linux, como los binarios de 32 bits, [37] [38] o aquellos que requieren servicios específicos del kernel de Linux no implementados en WSL. Debido a la falta de un kernel de Linux "real" en WSL 1, los módulos del kernel, como los controladores de dispositivo, no se pueden ejecutar. WSL 2, sin embargo, utiliza instancias de kernel de Linux virtualizadas en vivo.

Es posible ejecutar algunas aplicaciones gráficas (GUI) (como Mozilla Firefox ) instalando un servidor X11 dentro del entorno de Windows (host) (como VcXsrv o Xming ), [39] aunque no sin salvedades, como la falta de soporte de audio (aunque esto se puede remediar instalando PulseAudio en Windows de manera similar a X11) o aceleración de hardware (lo que da como resultado un rendimiento gráfico deficiente). El soporte para OpenCL y CUDA tampoco se está implementando actualmente, aunque está previsto para versiones futuras. [40] [41]

Microsoft declaró que WSL fue diseñado para el desarrollo de aplicaciones, y no para computadoras de escritorio o servidores de producción , recomendando el uso de máquinas virtuales ( Hyper-V ), Kubernetes y Azure para esos fines. [18]

Benchmarks

En los puntos de referencia, el rendimiento de WSL 1 suele estar cerca de las distribuciones nativas de Linux Ubuntu, Debian, Intel Clear Linux u otras distribuciones de Linux. En algunas pruebas, la E / S es un cuello de botella para WSL. [42] [43] [44] Microsoft afirma que el backend WSL 2 rediseñado ofrece un aumento de veinte veces en la velocidad en ciertas operaciones en comparación con WSL 1. [4]

En junio de 2020, un benchmark con 173 pruebas con un AMD Threadripper 3970x muestra un buen rendimiento con WSL 2 (20H2) con un 87% del rendimiento de Ubuntu 20.04.0 LTS nativo. Esta es una mejora con respecto a WSL 1, que tiene solo el 70% del rendimiento de Ubuntu nativo en esta comparación. WSL 2 mejora el rendimiento de E / S, proporcionando un nivel casi nativo. [45] Una comparación de 69 pruebas con Intel i9 10900K en mayo de 2020 muestra casi el mismo rendimiento relativo. [46]

En diciembre de 2020, un benchmark con 43 pruebas con un AMD Ryzen 5900X muestra un buen desempeño con WSL 2 (20H2) con 93% del desempeño del nativo 20.04.1 LTS. Esta es una mejora con respecto a WSL 1, que tiene solo el 73% en esta comparación. [47]

WSL 2

La versión 2 introduce cambios en la arquitectura. Microsoft ha optado por la virtualización a través de un subconjunto altamente optimizado de características de Hyper-V, para ejecutar el kernel y las distribuciones (basadas en el kernel), prometiendo un rendimiento equivalente a WSL 1. Para compatibilidad con versiones anteriores , los desarrolladores no necesitan cambiar nada. en sus distribuciones publicadas. La configuración de WSL 2 se puede modificar mediante la configuración global de WSL , contenida en un archivo INI nombrado .wslconfigen la carpeta de perfil de usuario . [48] [49]

La instalación de distribución reside dentro de un sistema de archivos con formato ext4 dentro de un disco virtual , y el sistema de archivos del host es accesible de forma transparente a través del protocolo 9P , [50] de manera similar a otras tecnologías de máquinas virtuales como QEMU . [51] Para los usuarios, Microsoft prometió hasta 20 veces el rendimiento de lectura / escritura de WSL 1. [52] Desde Windows se proporciona un redirector de red IFS para el acceso a archivos invitados de Linux utilizando el prefijo de ruta UNC de .\\wsl$

WSL 2 requiere Windows 10 versión 1903 o superior, con compilación 18362 o superior, para sistemas x64, y versión 2004 o superior, con compilación 19041 o superior, para sistemas ARM64. [53]

Capturas de pantalla

  • Bash ejecutándose en Windows 10

  • Firefox para Linux que se ejecuta en WSL

  • Administrador de paquetes Synaptic que se ejecuta en WSL

Controversia

Se ha expresado la preocupación de que el Subsistema de Windows para Linux podría ser una forma de " adoptar, extender y extinguir " Linux. [54] [55] Richard Stallman ha expresado su temor de que la integración de la funcionalidad de Linux en Windows sólo obstaculice el desarrollo de software libre , y calificó esfuerzos como WSL como "un paso atrás en la campaña por la libertad". [56] Linus Torvalds , por el contrario, dijo que no le preocupaba la adquisición de Linux por parte de Microsoft, porque creía que la licencia GPL 2 de Linux y el tamaño del proyecto lo hacían imposible, además de citar la mayor cooperación de Microsoft con la comunidad Linux. . [57]

Ver también

  • Esfera azul
  • Capas de compatibilidad del sistema operativo de FreeBSD
  • Tipos de zonas de SmartOS
  • Terminal de Windows
  • Xenix

Referencias

  1. ^ Craig Loewen (12 de junio de 2019). "WSL 2 ahora está disponible en Windows Insiders" . Línea de comandos de Windows .
  2. ^ Junio ​​de 2021, Darren Allan 23. "Windows 11 podría ejecutar sin problemas aplicaciones gráficas de Linux" . TechRadar . Consultado el 29 de junio de 2021 .
  3. ↑ a b c Craig Loewen (6 de mayo de 2019). "Anuncio de WSL 2" . Herramientas de línea de comandos de Windows para desarrolladores .
  4. ^ a b c mscraigloewen. "Acerca de WSL 2" . docs.microsoft.com .
  5. ^ "Preguntas frecuentes sobre la construcción de publicaciones de WSL 2" . Herramientas de línea de comandos de Windows para desarrolladores . 14 de mayo de 2019.
  6. ^ craigloewen-msft. "Instale WSL en Windows 10" . docs.microsoft.com . Consultado el 11 de junio de 2021 .
  7. ^ Gerwitz, Mike. "Ventanas GNU / kW" . mikegerwitz.com . Consultado el 8 de abril de 2018 .
  8. ^ Harsh, Mike (30 de marzo de 2016). "Ejecute Bash en Ubuntu en Windows" . Creación de aplicaciones para Windows . Microsoft .
  9. ^ Finley, Klint (30 de marzo de 2016). "Por qué Microsoft hace que las aplicaciones de Linux se ejecuten en Windows no es una locura" . Cableado . Condé Nast .
  10. ^ Kirkland, Dustin (30 de marzo de 2016). "Ubuntu en Windows: el espacio de usuario de Ubuntu para desarrolladores de Windows" . Perspectivas de Ubuntu . Canonical .
  11. ^ Hammons, Jack (9 de abril de 2016). "Bash en Ubuntu en Windows" . MSDN . Microsoft .
  12. ^ Obtenga openSUSE Leap 42 - Microsoft Store
  13. ^ Obtenga SUSE Linux Enterprise Server 12 - Microsoft Store
  14. ^ Yegulalp, Serdar (12 de mayo de 2017). "El Subsistema de Windows para Linux da la bienvenida a las opciones de Suse y Fedora" . InfoWorld . Consultado el 16 de septiembre de 2017 .
  15. ^ a b "Novedades de WSL en Windows 10 Fall Creators Update - Línea de comandos de Windows" . Línea de comandos de Windows . 11 de octubre de 2017 . Consultado el 15 de octubre de 2021 .
  16. ^ "Debian GNU / Linux para WSL ahora disponible en la Tienda Windows" . Herramientas de línea de comandos de Windows para desarrolladores . Consultado el 7 de marzo de 2018 .
  17. ^ "Kali Linux en la tienda de aplicaciones de Windows" . Consultado el 9 de marzo de 2018 .
  18. ^ a b c d e "Preguntas frecuentes sobre WSL" . Microsoft . Consultado el 13 de noviembre de 2016 .
  19. ^ "WSL 2 estará generalmente disponible en Windows 10, versión 2004 - Línea de comandos de Windows" . Línea de comandos de Windows . 13 de marzo de 2020 . Consultado el 15 de octubre de 2021 .
  20. ^ "La compatibilidad con WSL 2 llegará a las versiones 1903 y 1909 de Windows 10 - Línea de comandos de Windows" . Línea de comandos de Windows . 20 de agosto de 2020 . Consultado el 15 de octubre de 2021 .
  21. ^ "Entrenamiento ML acelerado por GPU dentro del subsistema de Windows para Linux - Blog de desarrolladores de Windows" . Blog de Windows . 17 de junio de 2020 . Consultado el 16 de octubre de 2021 .
  22. ^ "La vista previa inicial del soporte de la aplicación GUI ahora está disponible para el subsistema de Windows para Linux - Línea de comandos de Windows" . Línea de comandos de Windows . 21 de abril de 2021 . Consultado el 16 de octubre de 2021 .
  23. ^ "¡Ya está disponible una vista previa de WSL en Microsoft Store! - Línea de comandos de Windows" . Línea de comandos de Windows . 11 de octubre de 2021 . Consultado el 16 de octubre de 2021 .
  24. ^ Bright, Peter (6 de abril de 2016). "Por qué Microsoft necesitaba hacer que Windows ejecutara software Linux" . Ars Technica . Condé Nast .
  25. ^ Aul, Gabe (6 de abril de 2016). "Anuncio de Windows 10 Insider Preview Build 14316" . Blog de experiencia de Windows . Microsoft .
  26. ^ "Subsistema de Windows para Linux Descripción general" . Subsistema de Windows para Linux . Consultado el 22 de abril de 2018 .
  27. ^ Microsoft Ignite (2 de octubre de 2018), aspectos internos del sistema operativo: análisis profundo técnico de las innovaciones del sistema operativo - BRK3365 , consultado el 7 de mayo de 2019
  28. ^ Foley, Mary Jo (21 de abril de 2021). "La nueva compilación de prueba de Windows 10 agrega la primera vista previa de las aplicaciones de GUI de Linux en WSL" . ZDNet . Consultado el 23 de abril de 2021 .
  29. ^ https://devblogs.microsoft.com/commandline/the-initial-preview-of-gui-app-support-is-now-available-for-the-windows-subsystem-for-linux-2/
  30. ^ Abrams, Lawrence (29 de mayo de 2021). "Manos a la obra con WSLg: Ejecución de aplicaciones GUI de Linux en Windows 10" . Ordenador que suena . Consultado el 30 de mayo de 2021 .
  31. ^ Jack Hammons (22 de abril de 2016). "Resumen del subsistema de Windows para Linux" . Blog del Subsistema de Windows para Linux en MSDN .
  32. ^ Administrar y configurar el subsistema de Windows para Linux
  33. ^ Subsistema de Windows para la interoperabilidad de Linux con Windows
  34. ^ Referencia de comandos para el subsistema de Windows para Linux
  35. ^ Jack Hammons (15 de junio de 2016). "Soporte del sistema de archivos WSL" . Blog del Subsistema de Windows para Linux en MSDN .
  36. ^ Jack Hammons (8 de noviembre de 2016). "Redes WSL" . Blog del Subsistema de Windows para Linux en MSDN .
  37. ^ "Habilite WSL para ejecutar binarios ELF de 32 bits" . Comentarios de desarrolladores de Windows (Microsoft / UserVoice) .
  38. ^ "Soporte para binarios ELF i386 de 32 bits" . GitHub .
  39. ^ "El shell Bash de Windows 10 puede ejecutar aplicaciones gráficas de Linux con este truco" . PC World . Consultado el 10 de septiembre de 2018 .
  40. ^ "No se puede acceder a la GPU para ejecutar tensorflow e instalar CUDA · Edición n. ° 1788 · Microsoft / WSL" . GitHub . Consultado el 10 de septiembre de 2018 .
  41. ^ "Soporte de GPU OpenCL y CUDA" . Comentarios de desarrolladores de Windows (Microsoft / UserVoice) . 15 de septiembre de 2016 . Consultado el 10 de septiembre de 2018 .
  42. ^ "Subsistema de Windows para Linux" . Phoronix .
  43. ^ Larabel, Michael (12 de octubre de 2018). "Un vistazo al rendimiento de la actualización de Windows 10 de octubre de 2018 con WSL" . Phoronix .
  44. ^ Larabel, Michael (5 de noviembre de 2018). "Las mejoras de WSL en la actualización de Windows 10 de octubre de 2018" . Phoronix .
  45. ^ Larabel, Michael (24 de junio de 2020). "Ubuntu 20.04 frente al rendimiento de Windows 10 WSL / WSL2 en más de 170 puntos de referencia" . Phoronix .
  46. ^ Larabel, Michael (17 de junio de 2020). "Rendimiento de Windows 10 de mayo de 2020 para WSL vs. WSL2" . Phoronix .
  47. ^ Larabel, Michael (16 de diciembre de 2020). "Subsistema de Windows para rendimiento de Linux / WSL2 con AMD Ryzen 9 5900X" . Phoronix .
  48. ^ Loewen, Craig (26 de julio de 2019). "Novedades de WSL en Insiders Preview Build 18945" . Devblog de Microsoft . Archivado desde el original el 26 de julio de 2019 . Consultado el 26 de julio de 2019 . En esta nueva actualización, agregamos la capacidad de comenzar a usar opciones de configuración global para WSL. Estas opciones están dirigidas a usuarios avanzados que desean personalizar aún más su experiencia WSL.
  49. ^ Hillis, Ben (25 de julio de 2019). "MicrosoftDocs / WSL | Compilación 18947" . GitHub . Archivado desde el original el 26 de julio de 2019 . Consultado el 26 de julio de 2019 .
  50. ^ "Una inmersión profunda en cómo WSL permite que Windows acceda a archivos de Linux" . Herramientas de línea de comandos de Windows para desarrolladores . 30 de mayo de 2019 . Consultado el 24 de junio de 2019 .
  51. ^ Jujjuri, Venkateswararao; Van Hensbergen, Eric; Liguori, Anthony; Pulavarty, Badari (13 a 16 de julio de 2010). "VirtFS: un sistema de transferencia de archivos compatible con la virtualización" (PDF) . Simposio de Linux .
  52. ^ "Anuncio de WSL 2" . Herramientas de línea de comandos de Windows para desarrolladores . 6 de mayo de 2019 . Consultado el 24 de junio de 2019 .
  53. ^ "Instrucciones de instalación para WSL 2" . Consultado el 7 de mayo de 2020 .
  54. ^ "¿Deberíamos preocuparnos de que Microsoft 'adopte, amplíe y extinga' Linux?" . Consultado el 7 de marzo de 2018 .
  55. ^ "Microsoft anunció la compatibilidad con la GUI de la aplicación Linux" . Consultado el 20 de mayo de 2020 .
  56. ^ "Richard Stallman vs CEO de Canonical: '¿Microsoft amará Linux hasta la muerte? ' " . Consultado el 27 de julio de 2020 .
  57. ^ Vaughn-Nichols, Steven (7 de octubre de 2019). "A Linus Torvalds no le preocupa que Microsoft se haga cargo de Linux" . ZDNet . Consultado el 19 de diciembre de 2020 .

enlaces externos

  • Blog de la línea de comandos de Windows
  • WSL en Microsoft Docs
  • WSL en GitHub
  • WSL2-Linux-Kernel en GitHub
  • Blog de herramientas de línea de comandos de Windows para desarrolladores
  • Brown, Pete (22 de julio de 2016). "Diversión con el subsistema de Windows para Linux" . Blog de desarrolladores de Windows . Microsoft.
Obtenido de " https://en.wikipedia.org/w/index.php?title=Windows_Subsystem_for_Linux&oldid=1051201719 "