Microsoft ha publicado una nueva versión de su kernel para Windows Subsystem for Linux 2 o WSL2, bautizada linux-msft-wsl-6.18.54.1. Basada en el kernel Linux 6.18 LTS, la actualización llega después de WSL 3.0.2, la versión de la aplicación que añadió soporte para servidores de gran tamaño y almacenamiento VHD disperso en fase experimental. El nuevo kernel trae mejoras en el controlador gráfico DXGKRNL y reactiva varias funciones que llevaban tiempo deshabilitadas.
El kernel de WSL2 no es una copia exacta de Linux: Microsoft mantiene una versión downstream, configurada específicamente para funcionar dentro del subsistema de Windows. Os explicamos en qué consiste esta nueva compilación: linux-msft-wsl-6.18.54.1 se actualiza contra la versión upstream 6.18.54, y de ahí que incorpore todas las correcciones de errores y de seguridad más recientes publicadas hasta la fecha. Microsoft, además, ha revisado varios de los parches propios que añade para que el entorno funcione de forma óptima dentro de WSL2.
WSL2 simplifica la sincronización gráfica
La novedad más relevante de esta versión afecta a DXGKRNL, el controlador fuera del árbol principal (out-of-tree) con el que Microsoft ofrece soporte gráfico DirectX en WSL2. El parche introduce el fence sharing nativo, que cambia cómo se gestionan los objetos de sincronización entre el host y la máquina invitada. Vamos a ver en qué consiste exactamente este cambio, porque afecta directamente a cómo WSL2 coordina las tareas gráficas entre ambos entornos.
Según la documentación del propio parche, la creación y la apertura de fences nativos pasan ahora por el canal vmbus global, manteniendo el bloqueo del canal activo durante la operación. El objeto de sincronización global del host se devuelve mediante un parámetro de salida explícito, de forma que el device_handle del invitado se conserva para aperturas posteriores. Los resultados se copian al espacio de usuario antes de publicar el handle, lo que evita que un fallo en esa copia deje un handle visible para el modo usuario. El parche, por último, elimina una llamada kref_get sobrante, para que el recuento de referencias case con el de dxgkio_create_sync_object.
Vuelven DRM, VGEM, PPP e ISO9660
Más allá del apartado gráfico, Microsoft ha cambiado la configuración del kernel para recuperar funciones que llevaban tiempo fuera y para activar por defecto otras que antes había que habilitar a mano. Estos son los cambios concretos que trae la compilación linux-msft-wsl-6.18.54.1:
- Soporte DRM y VGEM: se reactivan el Direct Rendering Manager y VGEM, necesarios para la aceleración gráfica y la virtualización de memoria.
- Soporte PPP: vuelve el protocolo punto a punto, que hace falta en ciertas configuraciones de red y conexiones remotas.
- ISO9660 integrado: el soporte para el sistema de archivos de discos ópticos pasa a estar compilado dentro del kernel, en lugar de cargarse como módulo aparte.
- BPF LSM por defecto: se habilita de serie el soporte para aplicar políticas de seguridad mediante programas BPF, lo que permite un control más fino sobre las operaciones del kernel.
Ninguno de estos cuatro cambios es exclusivo de esta versión del kernel de Linux en general, pero sí marca la primera vez que WSL2 los trae activados de serie en su rama 6.18. Si dependéis de alguna de estas funciones para vuestro entorno de desarrollo, notaréis la diferencia en cuanto actualicéis.
Qué cambia respecto a WSL 3.0.2
Conviene no confundir esta actualización del kernel con el lanzamiento de WSL 3.0.2, publicado recientemente. El kernel es la base técnica sobre la que corre todo el subsistema; WSL 3.0.2, en cambio, es la versión de la aplicación y las herramientas de usuario que gestionan el entorno completo. Fue esa versión la que trajo el soporte para ejecutar WSL2 en servidores de gran tamaño y el soporte experimental para almacenamiento VHD disperso (sparse VHD). El nuevo kernel no añade por sí mismo esas funciones de almacenamiento: lo que hace es preparar la base para que todo el conjunto funcione con las últimas correcciones y con mayor estabilidad.
Para quienes usáis WSL2 a diario, los efectos más directos están en la vuelta de DRM y VGEM para tareas gráficas, el soporte PPP para ciertas configuraciones de red, ISO9660 integrado para trabajar con imágenes de disco y BPF LSM activado de serie para quien gestione políticas de seguridad a ese nivel. Si queréis comprobar qué versión del kernel corre en vuestra distribución y cuándo llegará la actualización a vuestro equipo, lo mejor es consultar la documentación oficial de Microsoft o las notas de la release publicadas en GitHub.
Los detalles completos de la configuración y de los parches aplicados a linux-msft-wsl-6.18.54.1 están disponibles en el repositorio de GitHub que Microsoft mantiene para el kernel de WSL2. Lo que no se especifica es el calendario exacto ni el método con el que este kernel llegará a los usuarios finales, algo habitual en estas publicaciones de kernel downstream, que suelen distribuirse mediante actualizaciones automáticas de WSL antes de confirmarse oficialmente para todos los canales.
