Uso de systemd para administrar servicios de Linux con WSL

Subsistema de Windows para Linux (WSL) ahora admite systemd, un sistema de inicialización y un administrador de servicios que usan muchas distribuciones populares de Linux, como Ubuntu, Debian, etc. (¿Qué es systemd?).

El valor predeterminado del sistema de inicialización ha cambiado recientemente de SystemV, con systemd ahora el valor predeterminado para la versión actual de Ubuntu que se instalará con el wsl --installcomando predeterminado. Las distribuciones de Linux distintas de la versión actual de Ubuntu pueden seguir usando el init de WSL, similar al de SystemV. Para cambiar a systemd, vea Habilitación del sistema.

¿Qué es systemd en Linux?

Según systemd.io: "systemd es un conjunto de bloques de creación básicos para un sistema Linux. Proporciona un sistema y administrador de servicios que se ejecuta como PID 1 e inicia el resto del sistema".

Principalmente un sistema de inicialización y un administrador de servicios, systemd incluye características como el inicio a petición de demonios, el mantenimiento de puntos de montaje y montaje automático, la compatibilidad con instantáneas y el seguimiento de procesos mediante grupos de control de Linux.

La mayoría de las distribuciones principales de Linux ahora ejecutan systemd, por lo que habilitarlo en WSL acerca aún más la experiencia al uso de Linux sin sistema operativo. Consulte el anuncio de vídeo con demostraciones systemd o ejemplos de uso de systemd a continuación para obtener más información sobre lo que systemd tiene que ofrecer.

¿Cómo habilitar systemd?

Systemd es ahora el valor predeterminado para la versión actual de Ubuntu que se instalará con el comando wsl --install predeterminado .

Para habilitar systemd para cualquier otra distribución de Linux que se ejecute en WSL 2 (cambiando el valor predeterminado de mediante el init de systemv):

  1. Asegúrese de que la versión de WSL sea 0.67.6 o posterior. (Para comprobarlo, ejecute wsl --version. Para actualizar, ejecute wsl --update o descargue la versión más reciente en Microsoft Store.)

  2. Abra una línea de comandos para la distribución de Linux y escriba cd / para acceder al directorio raíz y, a continuación ls para enumerar los archivos. Verá un directorio denominado "etc" que contiene el archivo de configuración de WSL para la distribución. Abra este archivo para que pueda realizar una actualización con el editor de texto Nano escribiendo: nano /etc/wsl.conf.

  3. Agregue estas líneas en el archivo wsl.conf que ahora tiene abierto para cambiar el init usado para systemd:

    [boot]
    systemd=true
    
  4. Salga del editor de texto Nano (Ctrl + X, seleccione Y para guardar el cambio). A continuación, deberá cerrar la distribución de Linux. Puede usar el comando wsl.exe --shutdown en PowerShell para reiniciar todas las instancias de WSL.

Enable systemd on WSL 2

Una vez reiniciada la distribución de Linux, systemd estará en ejecución. Puede confirmar mediante el comando: systemctl list-unit-files --type=service, que mostrará el estado de los servicios asociados a la distribución de Linux.

Obtenga más información sobre configuración avanzada en WSL, incluida la diferencia entre los archivos de configuración de wsl.conf (específicos de la distribución) y .wslconfig (global), cómo actualizar la configuración de montaje automático, etc.

Vídeo de demostración de SystemD

Microsoft se ha asociado con Canonical para ofrecer soporte técnico a systemd en WSL. Craig Loewen (PM para WSL en Microsoft) y Oliver Smith (PM para Ubuntu en WSL en Canonical) anuncian compatibilidad con systemd y muestran algunas demostraciones de lo que habilita.

Ejemplos de systemd

Algunos ejemplos de aplicaciones Linux que dependen de systemd son:

  • snap: un sistema de empaquetado de software e implementación desarrollado por Canonical para sistemas operativos que usan el kernel de Linux y el sistema de inicialización systemd. Los paquetes se denominan "snaps", la herramienta de línea de comandos para compilar snaps se denomina "Snapcraft", el repositorio central donde se pueden descargar o instalar los snaps se denomina "Snap Store" y el demonio necesario para ejecutar snaps (descargar desde la tienda, montar en su lugar, limitar y ejecutar aplicaciones fuera de ellas) se denomina "snapd". Todo el sistema se conoce a veces como "snappy". Error al ejecutar el comando: snap install spotify o snap install postman.

  • microk8s: una instancia de Kubernetes de producción mínima, de código abierto y de bajo nivel, que automatiza la implementación, el escalado y la administración de aplicaciones en contenedores. Siga las instrucciones para instalar MicroK8s en WSL2, consulte el Tutorial de introducción o vea el vídeo en Kubernetes en Windows con MicroK8s y WSL 2.

  • systemctl: una utilidad de línea de comandos que se usa para controlar e inspeccionar el sistema y para ayudarle a interactuar con los servicios en la distribución de Linux. Pruebe el comando: systemctl list-units --type=service para ver qué servicios están disponibles y su estado.

Algunos tutoriales relacionados que muestran formas de usar systemd:

¿Cómo afecta la habilitación de systemd a la arquitectura de WSL?

La habilitación del soporte técnico de systemd requiere cambios en la arquitectura de WSL. Como systemd requiere PID 1, el proceso de inicialización de WSL iniciado dentro de la distribución de Linux se convierte en un proceso secundario del sistema. Dado que el proceso de inicialización de WSL es responsable de proporcionar la infraestructura para la comunicación entre los componentes de Linux y Windows, cambiar esta jerarquía requiere replantearse algunas de las suposiciones realizadas con el proceso de inicialización de WSL. Se tuvieron que realizar modificaciones adicionales para garantizar un apagado limpio (ya que el apagado está controlado ahora por systemd) y para tener compatibilidad con WSLg, el componente de WSL que ejecuta interfaces gráficas de usuario (GUI) de Linux o las aplicaciones de Linux que se muestran en ventanas en lugar de la línea de comandos.

También es importante tener en cuenta que, con estos cambios, los servicios con sistema NO mantendrán activa la instancia de WSL. La instancia de WSL permanecerá activa de la misma manera que hizo antes de esta actualización, sobre la que puede consultar más información en esta entrada de blog sobre soporte técnico de tareas en segundo plano de 2017.