Microsoft anunció recientemente que pronto enviarán un kernel de Linux que está integrado directamente en Windows 10. Esto permitirá a los desarrolladores aprovechar la plataforma Windows 10 al desarrollar aplicaciones para Linux. De hecho, este es el siguiente paso en la evolución del subsistema de Windows para Linux (WSL). Revisemos la versión 1 de WSL antes de entrar en la brecha de la intergación del kernel de Linux y lo que significa.
Si desea comenzar con WSL (V1), aquí hay una guía para eso.
Versión WSL1
El subsistema de Windows para Linux realmente debería llamarse un subsistema de Linux para Windows. Ofrece un controlador (un subsistema) para el sistema operativo Windows, que traduce las llamadas del sistema Linux en llamadas del sistema de Windows 10 nativas que el núcleo NT entiende.
Esto crea una ilusión algo creíble para los binarios de Linux que, de hecho, están funcionando por encima de un núcleo de Linux! Esto funciona lo suficientemente bien como para que no solo pueda ejecutar binarios simples de 64 bits compilados para Linux, sino que puede ejecutar un usuario completo (un.k.una distribución de Linux como Debian o Ubuntu) encima de WSL V1. Entonces, cuando instala Ubuntu en Microsoft Store, solo obtiene los binarios de Ubuntu Userland que Canonical se envía para el entorno WSL V1 de Microsoft.
Sin embargo, WSL V1 todavía está lejos de ser perfecto. Cierta semántica que esperaría un sistema de Linux son totalmente inaceptables en Windows. Por ejemplo, no puede cambiar el nombre del archivo de un archivo abierto en Windows, pero puede hacerlo en Linux.
Otros ejemplos obvios incluyen el bajo rendimiento del sistema de archivos de WSL V1 y su incapacidad para ejecutar Docker.
WSL V2 El núcleo de Linux
Esta nueva versión de WSL resuelve todos estos problemas al incluir el núcleo Linux que se ejecuta en Hyper-V Hypervisor. A lo largo de su anuncio y demostraciones, Craig Loewen y su colega de Microsoft enfatizaron en el punto de que, en el futuro, Microsoft invertirá enormemente en tecnología de virtualización.
El uso de un kernel de Linux resuelve todos los problemas semánticos que no se pueden resolver usando solo una capa de traducción de llamadas del sistema. Este kernel de Linux será muy liviano y será mantenido por Microsoft con todos los cambios en el núcleo de Linux hecho de código abierto. En su demostración, mostraron cómo puede migrar las aplicaciones WSL V1 existentes para ejecutarse sin modificar en un entorno WSL V2. El rendimiento del sistema de archivos ha mejorado en 3-4 veces y todo el sistema se siente mucho más receptivo.
Como funciona?
Entonces, básicamente, tenemos una VM de Linux con muchas aplicaciones de usuarios, e.G, OpenSuse o Debian o Ubuntu Userlandland. Obtiene más de una distribución en su máquina de Windows, con una sola VM de Linux, así que eso es bueno. Pero también implica que cada vez que abre su terminal WSL Ubuntu, está arrancando una VM completa! Eso va a tomar un tiempo, bien?
En realidad no. El kernel de Linux es realmente lo suficientemente pequeño y liviano como para que Microsoft haya podido tener tiempos de arranque locos (~ 1 segundo). Lo lograron eliminando todo el código del cargador de arranque y, dado que es una VM, cargan directamente el núcleo de Linux en su espacio de direcciones en la memoria y configuran algunos estados de la VM que el núcleo espera. Este es el mismo mecanismo que alimenta otra nueva característica de Windows 10 que es Windows Sandbox.
Tiene una huella de memoria muy pequeña, se carga en un segundo y el formato nativo del sistema de archivos EXT4 le permite ofrecer una experiencia de usuario muy suave. La VM solo funciona cuando lo necesitas.
Además, no está completamente aislado como una VM tradicional. Puede interactuar fácilmente con el resto del sistema de Windows, incluidos los archivos en sus unidades de Windows utilizando WSL V2. No es una VM aislada sino una parte integrada de Windows 10. ¿Cómo logra eso??
Long vive el plan 9
Con WSL V1, acceder a archivos y directorios en sus invitados de Windows fue trivial. Su UserSerland de Linux es solo una aplicación en Windows, por lo que puede leer y escribir archivos originalmente pertenecientes al sistema operativo nativo con bastante facilidad.
Con WSL V2, tiene una VM ejecutándose con su disco duro virtual (formateado con Ext4, por supuesto) y si queremos una experiencia similar como la de WSL V1, necesitamos algunos mecanismos adicionales. Ingrese el Plan 9.
Plan 9, también escrito como, 9p es un sistema operativo desarrollado originalmente en Bell Labs. Si bien es poco probable que alguna vez lo encuentre en su producción, todavía sigue vivo, ya que otros sistemas operativos adoptan ideas interesantes que se incuban en él, incluido el protocolo 9P para un servidor de archivos.
Sistemas de archivos
WSL V2 tendrá un servidor de protocolo 9P que se ejecuta en su host Windows 10 y un cliente de 9p que se ejecuta dentro de sus aplicaciones WSL. Esto le permite acceder a los archivos de Windows 10 de forma nativa dentro de su entorno WSL. La unidad C: se montará AT /MNT /C, al igual que WSL V1, y el entorno WSL puede alcanzar cada archivo dentro del host Windows 10.
Lo contrario también será cierto. Habrá un servidor de protocolo 9p que se ejecuta en su entorno Linux con su cliente correspondiente en Windows 10 Host. Esto permitirá a los usuarios acceder a su sistema de archivos Linux (EXT4) desde el entorno de Windows 10. Permitiéndole editar su código fuente o archivos de configuración utilizando su IDE favorito instalado en Windows, enumerando todos los directorios usando Windows 10 File Explorer y mucho más. Esencialmente, ejecutará sus distribuciones de Linux favoritas con la interfaz de usuario de Windows 10.
Estibador
En su anuncio, Microsoft también insinuó que Docker también utilizará este nuevo entorno para enviar su Future Docker para las aplicaciones de Windows. Dado que hay un kernel de Linux, ejecutar Docker encima, será bastante fácil. En la demostración, ejecutaron Docker encima de Ubuntu ejecutando WSL V2 y funcionó como si se estuviera ejecutando en una instalación nativa de Ubuntu.
Para dar un ejemplo muy superficial, si ha trabajado con DockerFiles en un sistema de Windows, debe haber notado los problemas de seguridad causados por la falta de permisos de archivos de UNIX. Eso ya no será un problema. Docker en Windows ya usa una VM personalizada para proporcionar contenedores de Linux, presumiblemente, ahora usará WSL V2 para usar el kernel de Linux que Microsoft envía.
En general, estoy muy impresionado con lo que Microsoft está haciendo para proporcionar un refugio para los desarrolladores de Linux que también quieren usar Windows. Con suerte, a largo plazo, fomentará una gran polinización cruzada entre los dos ecosistemas diferentes.
Si está ejecutando Windows 10 Home, Pro o Enterprise Edition, puede probar WSL V2 optando por las compilaciones previas de Windows 10. Aquí hay una guía sobre cómo hacer eso.