Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
El 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 sistema de inicialización predeterminado ha cambiado recientemente de SystemV a systemd, el cual ahora es el estándar para la versión actual de Ubuntu que se instalará utilizando el comando predeterminado wsl --install
. Las distribuciones de Linux distintas de la versión actual de Ubuntu pueden seguir usando el init de WSL, similar a SystemV init. Para cambiar a systemd, consulte Cómo habilitar systemd.
¿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 principales distribuciones de Linux ahora ejecutan systemd, por lo que habilitarlo en WSL acerca aún más la experiencia al uso de Linux en un entorno bare-metal. Consulte el anuncio de vídeo con demostraciones de 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 utilizar systemv init):
Asegúrese de que la versión de WSL sea 0.67.6 o posterior:
- para comprobar, ejecute
wsl --version
; si el comando produceInvalid command line option: --version
error, debe actualizar WSL; - para actualizar, ejecute
wsl --update
o descargue la versión más reciente de Microsoft Store.
- para comprobar, ejecute
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
.Agregue estas líneas en el archivo
wsl.conf
que ahora tiene abierto para cambiar el init usado para systemd:[boot] systemd=true
Salga del editor de texto Nano (Ctrl + X, escriba Y para guardar el cambio y confirmar con la tecla
enter
).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.Una vez que reinicie la distribución de Linux, se ejecutará systemd. Puede comprobarlo mediante el comando
systemctl status
para mostrar el estado en ejecución y el comandosystemctl list-unit-files --type=service
, que mostrará el estado de los servicios asociados a la distribución de Linux.
Si la distribución de Linux es Debian/Ubuntu/Kali Rolling, no solo debe haber instalado el paquete systemd, sino también asegurarse de que el paquete systemd-sysv esté instalado.
sudo apt-get update -y && sudo apt-get install systemd systemd-sysv -y
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 llevar soporte para systemd a WSL. Vea Craig Loewen (PM para WSL en Microsoft) y Oliver Smith (PM para Ubuntu en WSL en Canonical) anuncian compatibilidad con el sistema y muestran algunas demostraciones de lo que habilita.
Tutoriales de Oliver basados en estas demostraciones en el blog de Ubuntu: incluye "Usar snap para crear una instancia de Nextcloud en minutos en WSL", "Gestiona tus proyectos web con LXD" y "Ejecutar un .Net Echo Bot como un servicio systemd en Ubuntu WSL"
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 init de systemd. Los paquetes se denominan "snaps", la herramienta de línea de comandos para crear 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 ubicación, limitar y ejecutar aplicaciones a partir de ellos) se denomina "snapd". Todo el sistema se conoce a veces como "snappy". Pruebe a ejecutar el comando:
snap install spotify
.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 sobre 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 habilitar systemd a la arquitectura de WSL?
La habilitación de la compatibilidad con systemd requirió 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. Es necesario realizar modificaciones adicionales para garantizar un apagado limpio (ya que el apagado está controlado por systemd now) y tener compatibilidad con WSLg, el componente de WSL que ejecuta interfaces gráficas de usuario (GUIs) de Linux o las aplicaciones 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 de systemd NO mantendrán activa tu 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.
Windows Subsystem for Linux