Subsistema de Windows para Linux
Subsistema de Windows para Linux (WSL) es una capa de compatibilidad desarrollada por Microsoft para ejecutar binarios de Linux (en formato ELF) nativamente en Windows 10, Windows Server 2019, Windows 11 y Windows Server 2022.
Subsistema de Windows para Linux | ||
---|---|---|
Ubuntu corriendo sobre WSL | ||
Información general | ||
Tipo de programa | Componente de Microsoft Windows | |
Desarrollador | Microsoft | |
Modelo de desarrollo |
Código cerrado (ver. 1)[1][2] | |
Licencia |
Microsoft CLUF (ver. 1) | |
Estado actual | Con soporte | |
Lanzamientos | ||
Windows Services for UNIX | Subsistema de Windows para Linux | |
Enlaces | ||
A partir de junio de 2019 está disponible WSL versión 2, el cual incorpora cambios importantes, como el uso de un núcleo Linux real.[4]
Visión general
editarWSL provee una interfaz que simula un kernel de Linux (sin contener código de Linux propiamente dicho),[5] el cual puede ejecutar aplicaciones de espacio de usuario GNU, por ejemplo, una instalación base de Ubuntu,[6][7][8][9] openSUSE,[10] SUSE Linux Enterprise Server,[11][12] Debian[13] y Kali Linux.[14] 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.),[15] 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
editarCuando fue introducido junto con el Anniversary Update, solo 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.[16]
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.
El 6 de mayo de 2019 se anunció la versión 2 de WSL,[17][18][19] el cual incorpora un núcleo Linux real.[4] A partir de junio de 2019 está disponible a través del programa Windows Insider[20] en todas las ediciones de Windows 10 (incluyendo Home).[21] Ambas versiones pueden coexistir, y Microsoft no tiene planes para relegar WSL 1.[21]
Desarrollo
editarLos primeros intentos de Microsoft para alcanzar compatibilidad con sistemas tipo UNIX comenzó con Microsoft POSIX subsystem, posteriormente reemplazado por Windows Services for UNIX vía 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.[22]
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.[23]
Microsoft prevé 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
editarVersión 1
editarLXSS 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.[24]
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
editarComo 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
)[25] y parte del hardware, como la red (los servidores web por ejemplo, podrán ser accedidos a través de las 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.[25]
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.[26]
Limitaciones
editarEste subsistema no es capaz de correr todo el software Linux, como los binarios de 32 bits,[27][28] o esos que requieren servicios específicos del núcleo Linux sin implementar en WSL. Dado que no existe un núcleo Linux "real" en WSL, tampoco se han lanzado las cabeceras del kernel, lo que impide construir controladores y otros programas que dependen del kernel (como drivers, o contenedores como Docker).
Es posible ejecutar algunas aplicaciones gráficas (como Mozilla Firefox) instalando un servidor X11 dentro del entorno de Windows (como Xming),[29] 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.[30][31]
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.[26]
Versión 2
editarLa versión 2 introduce cambios radicales en la arquitectura. Microsoft ha optado por la virtualización a través de un subconjunto de características de Hyper-V, junto con un núcleo Linux real altamente optimizado (basado en la rama principal 4.19),[4] lo que habilita acceso completo a la API de Linux, permitiendo ejecutar servicios como Docker.[32] Los desarrolladores no necesitan hacer cambios en sus distribuciones, manteniendo la compatibilidad con WSL 1. A diferencia de una máquina virtual, las instancias de WSL2 arrancan instantáneamente.[cita requerida]
La instalación de la distribución reside en su propia imagen de disco virtual con formato ext4, y el acceso al sistema de archivos anfitrión se lleva a cabo de manera transparente a través del protocolo 9P.[33] Se promete un incremento sustancial en el rendimiento de lectura y escritura.[17]
Capturas de pantalla
editarVéase también
editarReferencias
editar- ↑ «Will this be Open Source?». GitHub.
- ↑ «Windows Subsystem for Linux is not open source». GitHub.
- ↑ «WSL2 COPYING file». GitHub.
- ↑ a b c mscraigloewen. «About WSL 2». docs.microsoft.com (en inglés estadounidense). Consultado el 24 de junio de 2019.
- ↑ Gerwitz, Mike. «GNU/kWindows». mikegerwitz.com. Consultado el 8 de abril de 2018.
- ↑ Harsh, Mike (30 de marzo de 2016). «Run Bash on Ubuntu on Windows». Building Apps for Windows. Microsoft.
- ↑ Finley, Klint (30 de marzo de 2016). «Why Microsoft Making Linux Apps Run on Windows Isn't Crazy». Wired. Condé Nast.
- ↑ Kirkland, Dustin (30 de marzo de 2016). «Ubuntu on Windows – The Ubuntu Userspace for Windows Developers». Ubuntu Insights. Canonical.
- ↑ Hammons, Jack (9 de abril de 2016). «Bash on Ubuntu on Windows». MSDN. Microsoft.
- ↑ Get openSUSE Leap 42 - Microsoft Store
- ↑ Get SUSE Linux Enterprise Server 12 - Microsoft Store
- ↑ Yegulalp, Serdar (12 de mayo de 2017). «Windows Subsystem for Linux welcomes Suse and Fedora options». InfoWorld. Consultado el 16 de septiembre de 2017.
- ↑ «Debian GNU/Linux for WSL now available in the Windows Store» (en inglés estadounidense). Consultado el 7 de marzo de 2018.
- ↑ «Kali Linux in the Windows App Store» (en inglés estadounidense). Consultado el 9 de marzo de 2018.
- ↑ «Frequently Asked Questions for WSL». Microsoft. Consultado el 13 de noviembre de 2016.
- ↑ «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.
- ↑ a b «Announcing WSL 2». Windows Command Line Tools For Developers (en inglés estadounidense). 6 de mayo de 2019. Consultado el 24 de junio de 2019.
- ↑ Velasco, Rubén (13 de junio de 2019). «WSL 2 novedades del nuevo Subsistema Linux de Windows 10 20H1». SoftZone. Consultado el 24 de junio de 2019.
- ↑ Pastor, Javier (8 de mayo de 2019). «Por qué Microsoft va a hacer un kernel de Linux y lo va a integrar en Windows 10». Xataka. Consultado el 24 de junio de 2019.
- ↑ «WSL 2 is now available in Windows Insiders». Windows Command Line Tools For Developers (en inglés estadounidense). 12 de junio de 2019. Consultado el 24 de junio de 2019.
- ↑ a b «WSL 2 Post BUILD FAQ». Windows Command Line Tools For Developers (en inglés estadounidense). 14 de mayo de 2019. Consultado el 24 de junio de 2019.
- ↑ Aul, Gabe (6 de abril de 2016). «Announcing Windows 10 Insider Preview Build 14316». Windows Experience Blog. Microsoft.
- ↑ «Windows Subsystem for Linux Overview» (en inglés estadounidense). Consultado el 22 de abril de 2018.
- ↑ «Windows Subsystem for Linux Overview». Blog oficial de MSDN. 22 de abril de 2016.
- ↑ a b «WSL File System Support». Blog oficial de MSDN. 15 de junio de 2016.
- ↑ a b «Preguntas frecuentes sobre WSL». Documentación de Microsoft. Consultado el 18 de junio de 2018.
- ↑ «Please enable WSL to run 32 bit ELF binaries». Foros de Windows developer feedback (Microsoft/UserVoice). Archivado desde el original el 23 de agosto de 2019. Consultado el 13 de junio de 2018.
- ↑ «Support for 32-bit i386 ELF binaries». GitHub.
- ↑ «Windows 10's Bash shell can run graphical Linux applications with this trick». PC World. Consultado el 28 de mayo de 2017.
- ↑ «GPU not accesssible for running tensorflow and installing CUDA · Issue #1788 · Microsoft/WSL». GitHub (en inglés). Consultado el 7 de julio de 2018.
- ↑ «OpenCL & CUDA GPU support» (en inglés). 15 de septiembre de 2016. Archivado desde el original el 7 de julio de 2018. Consultado el 7 de julio de 2018.
- ↑ «Docker Desktop WSL 2 backend». Docker Documentation (en inglés). 10 de julio de 2020. Consultado el 11 de julio de 2020.
- ↑ «A Deep Dive Into How WSL Allows Windows to Access Linux Files». Windows Command Line Tools For Developers (en inglés estadounidense). 30 de mayo de 2019. Consultado el 24 de junio de 2019.
Enlaces externos
editar- Windows Subsystem for Linux blog
- WSL on Microsoft Docs
- Subsistema de Windows para Linux en GitHub.
- Windows Command Line Tools For Developers blog
- Brown, Pete (22 de julio de 2016). «Fun with the Windows Subsystem for Linux». Windows Developer Blog. Microsoft.