Después de tres meses de desarrollo, se ha lanzado la versión del gestor de sistemas systemd 260. Cambios clave: cese del soporte para scripts de servicios en formato System V, mecanismo «mstack» para montar jerarquías de montaje multicapa, utilidad systemd-report, soporte para la integración de systemd-networkd con ModemManager, soporte para servicios portátiles personalizados, concepto «xaccess» en systemd-logind y systemd-udevd.
Entre los cambios en la nueva versión:
- Se ha descontinuado el soporte para scripts de servicios en formato System V y se ha dejado de suministrar los componentes rc-local.service, systemd-sysv-install, systemd-rc-local-generator y systemd-sysv-generator.
- Se ha implementado el mecanismo «mstack» (Mount Stack), que permite usar directorios con el sufijo «.mstack/» para formar una jerarquía de directorios compuesta, creada mediante el montaje secuencial y la superposición de imágenes de disco y partes del sistema de archivos utilizando OverlayFS y «mount --bind». Se han añadido el comando systemd-mstack, la opción «--mstack» en systemd-nspawn y el parámetro RootMStack en las unidades, que se pueden usar para montar y desmontar a la vez todos los elementos definidos en la configuración «.mstack», por ejemplo, para recrear rápidamente una imagen de contenedor o un entorno de trabajo del servicio. Cada archivo o subdirectorio en «.mstack/» define un nivel de montaje o una capa de «overlayfs.»
Por ejemplo, la siguiente configuración «foobar.mstack/» define un overlayfs con dos capas en modo de solo lectura desde las imágenes de disco base.raw y app.raw (especificadas como enlaces simbólicos), y un directorio «rw» con capacidad de escritura sobre ellas: foobar.mstack/layer@0.raw → ../base.raw foobar.mstack/layer@1.raw → ../app.raw foobar.mstack/rw/
- Se han implementado los marcos «metrics» y «report», que pueden ser utilizados por componentes del sistema para generar estadísticas a través de Varlink en el directorio /run/systemd/report/. Se ha añadido la utilidad systemd-report, que genera un informe consolidado combinando estadísticas de todos los componentes y lo presenta en formato JSON. Actualmente, las métricas son proporcionadas únicamente por el gestor de servicios y systemd-networkd.
- En systemd-networkd, se ha asegurado la integración con ModemManager y se ha añadido la sección «[MobileNetwork]» con configuraciones de APN, AllowedAuthenticationMechanisms, User, Password, IPFamily, AllowRoaming, PIN, OperatorId, RouteMetric y UseGateway, lo que permite utilizar systemd-networkd para conectarse a operadores móviles a través de un módem.
- Se ha agregado la posibilidad de ejecutar systemd-portabled como un servicio de usuario, iniciado por un usuario no privilegiado. Se han añadido las banderas «—user» y «—system» a la herramienta portablectl para seleccionar el tipo de servicio. Los servicios portátiles («Portable Services») son servicios del sistema presentados como contenedores independientes (se suministran en forma de imagen del sistema, pero se manejan como un servicio normal).
- Se ha añadido soporte para el concepto de «xaccess» (Acceso Ampliado) en systemd-logind y systemd-udevd, lo que permite proporcionar acceso a la GPU para usuarios con acceso remoto que físicamente no utilizan un monitor ni dispositivos de entrada en el sistema local (similar al acceso uaccess, que abarca a los usuarios que trabajan físicamente con la computadora). Para configurar las sesiones, se sugiere establecer la variable de entorno XDG_SESSION_EXTRA_DEVICE_ACCESS a través de PAM.
- Se ha propuesto un conjunto canónico de archivos con identificadores de hardware en /usr/lib/systemd/boot/hwids/ para automatizar la configuración del DeviceTree en imágenes UKI (Imagen del Núcleo Unificado), que vincula los identificadores de dispositivos con elementos del DeviceTree. Con este conjunto, UKI encuentra y carga automáticamente el DTB (Device Tree Blob) necesario durante el arranque, sin necesidad de crear imágenes específicas para cada dispositivo. Actualmente, se han generado archivos hwid para dispositivos ARM64 basados en chips Snapdragon.
- Se ha añadido un nuevo campo «FANCY_NAME» en /etc/os-release, que se diferencia de «PRETTY_NAME» por la capacidad de utilizar glifos Unicode no ASCII. Cuando el campo «FANCY_NAME» está presente, se utilizará en la salida de systemd, systemd-hostnamed y hostnamectl en lugar de «PRETTY_NAME».
- Los servicios que ofrecen interfaces públicas Varlink se han consolidado en un único directorio /run/varlink/registry/ mediante enlaces simbólicos. Se ha implementado el comando ‘varlinkctl list-registry’ para ver la lista de dichos servicios.
- En las unidades se ha implementado la opción de especificar el valor «managed» en el parámetro PrivateUsers para la asignación automática de rangos de identificadores de usuario y grupo (UID/GID) a la unidad a través de systemd-nsresourced.
- Se ha añadido la configuración RefreshOnReload a las unidades para actualizar extensiones y credenciales al reiniciar la unidad.
- Se ha añadido la configuración BindNetworkInterface a las unidades para vincular automáticamente todos los sockets creados en la unidad a la interfaz de red especificada.
- Se han añadido las configuraciones ConditionPathIsSocket y AssertPathIsSocket a los units para modificar el comportamiento o la finalización abrupta del unit si las rutas especificadas no son sockets.
- Se ha añadido el comando ‘enqueue-marked’ a systemctl, que invoca el método D-Bus EnqueueMarkedJobs(). El parámetro ‘—marked’ que se utilizaba anteriormente para estos fines ha sido declarado obsoleto.
- Se ha añadido la configuración MemoryTHP a los servicios para gestionar el uso de páginas de memoria grandes en los servicios (THP — Transparent Huge Pages).
- Se ha añadido el soporte para el parámetro FirewallMark en los archivos .delegate de systemd-resolved para asignar una etiqueta de firewall en la pila de red para el tráfico DNS generado.
- Se ha añadido el comando ‘acquire’ a systemd-sysupdate para dividir las etapas de carga e instalación o actualización. Se ha implementado el soporte para marcar las particiones como parcialmente cargadas.
- Se ha añadido la opción ‘—image-format’ a systemd-vmspawn para seleccionar el formato (qcow2 o raw) de la imagen de disco.
- Se ha implementado el soporte para el formato ‘JSON’ en la opción ‘—list’ de systemd-inhibit con la posibilidad de utilizar las banderas ‘—what’, ‘—who’, ‘—why’ y ‘—mode’ para filtrar la salida.
- Se ha añadido soporte básico para el control de integridad de las particiones cifradas en systemd-repart utilizando dm-integrity.
- Se ha añadido el comando ‘extract-certificate’ a la utilidad systemd-keyutil para mostrar el contenido de los certificados X.509.
- Se ha implementado el soporte para la autenticación interactiva mediante polkit en systemd-sysext y varlinkctl.
- Se ha añadido una política de polkit que permite invocar systemd-ask-password como un usuario no privilegiado.
- Se ha añadido la posibilidad de cargar imágenes OCI en systemd-importd con el comando ‘importctl pull-oci’, que se guardan en forma de imágenes para montarse a través de ‘mstack’.
- Se ha añadido soporte para los colores SYSTEMD_COLORS=auto-16, SYSTEMD_COLORS=auto-256 y SYSTEMD_COLORS=auto-24bit.
- Se han proporcionado archivos ejecutables completamente funcionales systemd-sysusers y systemd-tmpfiles (anteriormente se recolectaban versiones reducidas).
- Se ha añadido un ‘prekill hook’ en systemd-oomd que permite conectar controladores que se activan antes de terminar forzosamente un proceso debido a falta de memoria en el sistema.
- Se ha reanudado, pero marcada como obsoleta, la posibilidad de utilizar usuarios y grupos no del sistema en las reglas de udev (OWNER=\/GROUP=) y configuraciones de systemd-networkd (User=\/Group=).
- Se ha aprovechado la funcionalidad que apareció en xfsprogs 6.17.0 de la utilidad mkfs.xfs para desplegar el contenido inicial del sistema de archivos desde el directorio especificado en systemd-repart.
- Se han aumentado los requisitos para las versiones mínimas: núcleo de Linux 5.4 → 5.10 (recomendado 5.14, y para una funcionalidad completa — 6.6), libidn → libidn2, Python 3.7.0 → 3.9.0, glibc 2.31 → 2.34, OpenSSL 1.1.0 → 3.0.0, cryptsetup 2.0.1/2.3.0 → 2.4.0, elfutils 158 → 177, libblkid 2.24 → 2.37, libseccomp 2.3.1 → 2.4.0.
- Se han revisado y simplificado las reglas para garantizar la portabilidad y estabilidad, en las que se han reforzado los compromisos para evitar regresiones visibles para los usuarios en las interfaces públicas.
Fuente: opennet.ru
