Windows Subsystem for Linux

De Wikipedia, la enciclopedia libre
Ir a la navegación Ir a la búsqueda
Windows Subsystem for Linux
blogs.msdn.microsoft.com/wsl
Ubuntu on Windows 10 - bash.png
Información general
Modelo de desarrollo Código cerrado[1][2]
Desarrollador(es) Microsoft
Licencia Microsoft CLUF
Estado actual Con soporte
Reemplaza a Windows Services for UNIX
En español No

Windows Subsystem for Linux (WSL) es una capa de compatibilidad desarrollada por Microsoft para correr ejecutables de Linux (en formato ELF) nativamente en Windows 10 y Windows Server 2019.

Visión general[editar]

WSL provee una interfaz que simula un kernel de Linux (sin contener código de Linux propiamente dicho),[3]​ el cual puede correr aplicaciones de espacio de usuario GNU, por ejemplo, una instalación base de Ubuntu,[4][5][6][7]openSUSE,[8]​ SUSE Linux Enterprise Server,[9][10]Debian[11]​ y Kali Linux.[12]​ Dicho entorno puede contener una shell Bash, junto con ejecutables de línea de comandos GNU/Linux nativos (sed, awk, etc.), lenguajes de programación (Ruby, Python, etc.),[13]​ e incluso algunas aplicaciones gráficas (con la ayuda de un servidor X11).

Se puede considerar la contraparte de Wine, y al igual que este, Windows no es capaz de arrancar ejecutables ELF por sí mismo, sino que requiere de un entorno provisto por las distribuciones (descargables desde Microsoft Store e instaladas como Aplicaciones), y un lanzador provisto por dicho entorno. (véase Arquitectura más adelante para más detalles).

Introducción y disponibilidad[editar]

Cuando fue introducido junto con el Anniversary Update, sólo una imagen de Ubuntu estuvo disponible. Fall Creators Update movió el proceso de instalación de las distribuciones de Linux al Microsoft Store, y fueron introducidas imágenes de Fedora y Suse.[14]

WSL está disponible sólo para las ediciones de Windows 10 de 64 bit, y puede ser activado a partir de la versión 1607. También está disponible en Windows Server 2019.

Desarrollo[editar]

Los primeros intentos de Microsoft para alcanzar compatibilidad con sistemas tipo UNIX comenzó con Microsoft POSIX subsystem, posteriormente reemplzado por Windows Services for UNIX via MKS/Interix, el cual se volvería obsoleto tras el lanzamiento de Windows 8.1. La tecnología detrás de WSL tiene sus orígenes en el Proyecto Astoria, el cual permitió correr algunas aplicaciones Android en Windows 10 Mobile. Esta característica está disponible a partir de la entrega de Windows 10 Insider Preview build 14316.[15]

Mientras que proyectos previos de Microsoft y otros de terceros como Cygwin se han enfocado en crear sus propios entornos tipo UNIX basados en los estándares POSIX, WSL se enfoca en la compatibilidad con los ejecutables de Linux (de manera similar a Wine con los ejecutables de Windows). En lugar de envolver funcionalidades no nativas dentro de las llamadas al sistema en la API de Win32, WSL aprovecha el modo Executive de Windows NT para correr los programas de Linux como un proceso especial aislado (conocido como "pico-processes") unidos al modo Kernel ("pico-providers") como manejadores de excepciones y llamadas al sistema diferentes de los procesos de Windows NT normales.[16]

Microsoft prevee a WSL como una "herramienta enfocada principalmente a desarrolladores que trabajen con proyectos de código abierto". WSL usa menos recursos que una máquina virtual, la forma más directa de ejecutar Linux en un entorno Windows, al tiempo de permitir a los usuarios trabajar con las aplicaciones de Windows y Linux sobre el mismo conjunto de archivos.

Arquitectura[editar]

LXSS Manager Service es el servicio encargado de interactuar con el subsistema (a través de los drivers lxss.sys y lxcore.sys), y la forma en cómo Bash.exe (no confundir con las Shell provistas por las distribuciones Linux instaladas) lanza los procesos de Linux, así como también manejar las llamadas al sistema de Linux y el bloqueo de los binarios mientras la operación de ejecución está en curso.[17]

Todos los procesos Linux invocados por un usuario en particular van dentro de una "Instancia de Linux" (usualmente, el primer proceso invocado es init). Una vez que todas las aplicaciones son cerradas, se cierra la instancia (de ser necesario, se deberá cerrar forzadamente el proceso init).

Acceso al hardware y sistema de archivos[editar]

Como no hay emulación/virtualización de hardware (a diferencia de otros proyectos como coLinux), WSL hace uso directo del sistema de archivos anfitrión (a través de VolFS y DrvFS)[18]​ y parte del hardware, como la red (los servidores web por ejemplo, podrán ser accedidos a través de la mismas interfaces y direcciones IP configuradas en el host, y comparte las mismas restricciones de uso de puertos que requieren permisos administrativos, o puertos ya ocupados por otras aplicaciones), lo que garantiza la interoperabilidad.[19]

Hay ciertas ubicaciones (como las carpetas del sistema) y configuraciones cuyo acceso/modificación está restringido, incluso ejecutando sudo desde la shell. Se debe lanzar una instancia con privilegios elevados para obtener un "sudo real" y permitir dicho acceso.[20]

Limitaciones[editar]

Este subsistema no es capaz de correr todo el software Linux, como los binarios de 32 bits,[21][22]​ o esos que requieren servicios específicos del kernel de Linux sin implementar en WSL. Dado que no existe un kernel de Linux "real" en WSL, tampoco se han lanzado las cabeceras del kernel, lo que impide construir controladores y otros programas que dependen del kernel.

Es posible ejecutar algunas aplicaciones gráficas (como Mozilla Firefox) instalando un servidor X11 dentro del entorno de Windows (como Xming),[23]​ aunque no exento de problemas, como la falta de soporte de audio o aceleración por hardware (dando como resultado un pobre rendimiento gráfico). El soporte para OpenCL y CUDA tampoco está implementando, aunque planificado para futuros lanzamientos.[24][25]

Dado lo anterior, Microsoft indica explícitamente que WSL está orientado al desarrollo de aplicaciones, y no como un entorno de escritorio o servidor de producción, recomendando el uso de máquinas virtuales (Hyper-V o Kubernetes) y Azure para esos propósitos.[20]

Capturas de pantalla[editar]

Véase también[editar]

Referencias[editar]

  1. «Will this be Open Source?». GitHub. 
  2. «Windows Subsystem for Linux is not open source». GitHub. 
  3. Gerwitz, Mike. «GNU/kWindows». mikegerwitz.com. Consultado el 8 de abril de 2018. 
  4. Harsh, Mike (30 de marzo de 2016). «Run Bash on Ubuntu on Windows». Building Apps for Windows. Microsoft. 
  5. Finley, Klint (30 de marzo de 2016). «Why Microsoft Making Linux Apps Run on Windows Isn't Crazy». Wired. Condé Nast. 
  6. Kirkland, Dustin (30 de marzo de 2016). «Ubuntu on Windows – The Ubuntu Userspace for Windows Developers». Ubuntu Insights. Canonical. 
  7. Hammons, Jack (9 de abril de 2016). «Bash on Ubuntu on Windows». MSDN. Microsoft. 
  8. Get openSUSE Leap 42 - Microsoft Store
  9. Get SUSE Linux Enterprise Server 12 - Microsoft Store
  10. Yegulalp, Serdar (12 de mayo de 2017). «Windows Subsystem for Linux welcomes Suse and Fedora options». InfoWorld. Consultado el 16 de septiembre de 2017. 
  11. «Debian GNU/Linux for WSL now available in the Windows Store» (en inglés estadounidense). Consultado el 7 de marzo de 2018. 
  12. «Kali Linux in the Windows App Store» (en inglés estadounidense). Consultado el 9 de marzo de 2018. 
  13. «Frequently Asked Questions for WSL». Microsoft. Consultado el 13 de noviembre de 2016. 
  14. «Ubuntu now available from the Windows Store!». Windows Command Line Tools For Developers Blog. 10 de julio de 2017. Consultado el 11 de agosto de 2017. 
  15. Aul, Gabe (6 de abril de 2016). «Announcing Windows 10 Insider Preview Build 14316». Windows Experience Blog. Microsoft. 
  16. «Windows Subsystem for Linux Overview» (en inglés estadounidense). Consultado el 22 de abril de 2018. 
  17. «Windows Subsystem for Linux Overview». Blog oficial de MSDN. 22 de abril de 2016. 
  18. «WSL File System Support». Blog oficial de MSDN. 15 de junio de 2016. 
  19. «Networking un WSL». Blog oficial de MSDN. 08 de noviembre de 2016. 
  20. a b «Preguntas frecuentes sobre WSL». Documentación de Microsoft. Consultado el 18 de junio de 2018. 
  21. «Please enable WSL to run 32 bit ELF binaries». Foros de Windows developer feedback (Microsoft/UserVoice). 
  22. «Support for 32-bit i386 ELF binaries». GitHub. 
  23. «Windows 10's Bash shell can run graphical Linux applications with this trick». PC World. Consultado el 28 de mayo de 2017. 
  24. «GPU not accesssible for running tensorflow and installing CUDA · Issue #1788 · Microsoft/WSL». GitHub (en inglés). Consultado el 7 de julio de 2018. 
  25. «OpenCL & CUDA GPU support» (en inglés). 15 de septiembre de 2016. Consultado el 7 de julio de 2018. 

Enlaces externos[editar]