Microsoft y Canonical se han asociado para agregar soporte systemd al subsistema de Windows para Linux, lo que permite instalar una mayor cantidad de aplicaciones compatibles.
systemd es una aplicación de software de Linux que actúa como administrador de sistemas y servicios para inicializar demonios/servicios durante el arranque del sistema operativo. Systemd también admite herramientas que permiten a los administradores de Linux administrar y controlar fácilmente estos servicios una vez que se han iniciado.
Como systemd es responsable de iniciar todos los demás servicios, se ejecuta como el primer proceso (PID 1) creado por el kernel de Linux al inicio. Luego, todos los demás servicios de inicio inicial son iniciados y administrados por systemd, como se muestra en el árbol de procesos a continuación desde Ubuntu.
Como WSL actualmente usa init como administrador de sistemas y servicios, las aplicaciones de Linux que requieren systemd, como Snap, microk8s (Kubernetes) y systemctl, no funcionan correctamente.
WSL ahora es compatible con systemd
Ayer, Microsoft y Canonical anunciaron que la versión preliminar más reciente del Subsistema de Windows para Linux en las compilaciones de Windows 11 Insider ahora es compatible con systemd, lo que le permite instalar aplicaciones que requieren el administrador de servicios.
«La compatibilidad con systemd requería cambios en la arquitectura de WSL. Como systemd requiere PID 1, el proceso de inicio de WSL iniciado dentro de la distribución de Linux se convierte en un proceso secundario de systemd», explicó Craig Loewen de Microsoft en un nuevo anuncio .
«Debido a que el proceso de inicio de WSL es responsable de proporcionar la infraestructura para la comunicación entre los componentes de Linux y Windows, cambiar esta jerarquía requirió repensar algunas de las suposiciones hechas con el proceso de inicio de WSL».
Si está ejecutando una compilación de Windows 11 Insider, puede actualizar a la versión preliminar de WSL 0.67.6 o posterior con el
1 | wsl --update |
comando. Una vez que termine de actualizarse, puede verificar su versión instalada usando el
1 | wsl --version |
comando, como se muestra a continuación.
Ahora debe habilitar systemd iniciando la distribución WSL de Linux deseada y agregando las siguientes líneas a /etc/wsl.conf:
1
2 [boot]
systemd=true
Como la carpeta /etc es propiedad de root, debe usar sudo con su editor de consola favorito para editar el archivo. Por ejemplo,
1 | sudo vi /etc/wsl.conf |
.
Cabe señalar que este proceso debe realizarse para cada distribución que desee habilitar systemd.
Ahora cierre la ventana de su distribución WSL y, desde la línea de comandos de Windows 11 (Símbolo del sistema o PowerShell), apague sus distribuciones WSL con el
1 | wsl.exe --shutdown |
comando.
Vuelva a iniciar su distribución de Linux y verá que systemd se está ejecutando como PID 1, lo que indica que se está ejecutando como el administrador de servicios y sistemas para WSL.
Para obtener más información sobre cómo funciona systemd en WSL y cómo le permitirá ejecutar más aplicaciones en WSL, puede ver este video de Craig Loewen de Microsoft y Oliver Smith de Canonical.