Después de cinco meses de desarrollo, se presenta la versión del gestor de sistema systemd 251.
Principales cambios:
- Se han incrementado los requisitos del sistema. La versión mínima del núcleo de Linux admitida se ha elevado de 3.13 a 4.15. Se requiere la presencia del temporizador CLOCK_BOOTTIME. Para la compilación, se necesita un compilador con soporte para el estándar C11 y extensiones de GNU (para los archivos de encabezado se sigue utilizando el estándar C89).
- Se ha añadido la utilidad experimental systemd-sysupdate para la detección, descarga e instalación automáticas de actualizaciones utilizando un mecanismo atómico de reemplazo de particiones, archivos o directorios (se utilizan dos particiones/archivos/directorios independientes, en uno de los cuales se encuentra el recurso que está en funcionamiento, y en el otro se instala la siguiente actualización, después de lo cual las particiones/archivos/directorios se intercambian).
- Se presenta una nueva biblioteca compartida interna libsystemd-core-.so, que se instala en el directorio /usr/lib/systemd/system y que corresponde a la biblioteca existente libsystemd-shared-.so. El uso de la biblioteca compartida libsystemd-core-.so permite reducir el tamaño total de instalación gracias a la reutilización del código binario. El número de versión se puede definir a través del parámetro 'shared-lib-tag' en el sistema de construcción meson y permite a las distribuciones proporcionar varias versiones de estas bibliotecas simultáneamente.
- Se ha implementado la transmisión a los manejadores OnFailure/OnSuccess de las variables de entorno $MONITOR_SERVICE_RESULT, $MONITOR_EXIT_CODE, $MONITOR_EXIT_STATUS, $MONITOR_INVOCATION_ID y $MONITOR_UNIT con información sobre la unidad monitoreada.
- Para las unidades, se ha implementado la configuración ExtensionDirectories, que se puede utilizar para organizar la carga de componentes de extensión del sistema (System Extension) desde directorios normales, en lugar de imágenes de disco. El contenido del directorio de extensión del sistema se superpone mediante OverlayFS y se aplica para extender la jerarquía de directorios /usr/ y /opt/, añadiendo archivos adicionales durante el funcionamiento, incluso si los directorios especificados están montados en modo solo lectura. También se ha añadido soporte para especificar el directorio en el comando 'portablectl attach --extension='.
- Para las unidades que fueron terminadas forzosamente por el manejador systemd-oomd debido a la falta de memoria en el sistema, se ha asegurado la transmisión de la señal 'oom-kill' y el reflejo en el atributo 'user.oomd_ooms' del número de terminaciones forzadas.
- Se han añadido nuevos especificadores de ruta %y/%Y para las unidades, que reflejan la ruta normalizada a la unidad (con la resolución de enlaces simbólicos). También se han añadido los especificadores %q para la sustitución del valor PRETTY_HOSTNAME y %d para la sustitución de CREDENTIALS_DIRECTORY.
- En los servicios no privilegiados, que se ejecutan con un usuario normal utilizando la opción "--user", se permite la modificación de las configuraciones RootDirectory, MountAPIVFS, ExtensionDirectories, *Capabilities*, ProtectHome, *Directory, TemporaryFileSystem, PrivateTmp, PrivateDevices, PrivateNetwork, NetworkNamespacePath, PrivateIPC, IPCNamespacePath, PrivateUsers, ProtectClock, ProtectKernelTunables, ProtectKernelModules, ProtectKernelLogs y MountFlags. Esta opción solo está habilitada si se han activado los espacios de nombres de usuario en el sistema.
- En la configuración LoadCredential, se permite especificar un nombre de directorio como argumento, en cuyo caso se intenta cargar las credenciales de todos los archivos en el directorio especificado.
- En systemctl, en el parámetro "--timestamp", se ha añadido la capacidad de especificar la opción "unix" para mostrar la hora en formato epoch (número de segundos desde el 1 de enero de 1970).
- En "systemctl status" se ha implementado la opción "old-kernel", que se muestra si el kernel cargado en la sesión tiene un número de versión más antiguo que el kernel básico disponible en el sistema. También se ha añadido la opción "unmerged-usr" para determinar si el contenido de los directorios /bin/ y /sbin/ se ha formado sin enlaces simbólicos a /usr.
- Para los generadores ejecutados por el proceso PID 1, se han proporcionado nuevas variables de entorno $SYSTEMD_SCOPE (ejecución desde un servicio del sistema o del usuario), $SYSTEMD_IN_INITRD (ejecución desde initrd o entorno host), $SYSTEMD_FIRST_BOOT (indicador de primer arranque), $SYSTEMD_VIRTUALIZATION (indicación de virtualización o si se ejecuta en un contenedor) y $SYSTEMD_ARCHITECTURE (arquitectura para la que se compiló el kernel).
- En el manejador PID 1, se ha implementado la capacidad de cargar parámetros de credenciales del sistema desde la interfaz fw_cfg de QEMU o a través de la especificación en la línea de comandos del kernel con el parámetro systemd.set_credential. En la directiva LoadCredential se asegura la búsqueda automática de credenciales en los directorios /etc/credstore/, /run/credstore/ y /usr/lib/credstore/, si se especifica un camino relativo como argumento. Se ha aplicado un comportamiento similar para la directiva LoadCredentialEncrypted, que además verifica los directorios /etc/credstore.encrypted/, /run/credstore.encrypted/ y /usr/lib/credstore.encrypted/.
- En systemd-journald se ha estabilizado la capacidad de exportar en formato JSON. Se ha añadido soporte para la exportación en formato JSON (flag «—json») en los comandos «journalctl —list-boots» y «bootctl list».
- En udev se han añadido nuevos archivos con bases de datos hwdb, que contienen información sobre dispositivos portátiles (PDA, calculadoras, etc.) y dispositivos utilizados en la creación de sonido y video (mesas de DJ, pad de teclas).
- En udevadm se han añadido nuevas opciones «—prioritized-subsystem» para asignar prioridad a la secuencia de sistemas (se utiliza en systemd-udev-trigger.service para procesar primero los dispositivos de bloque y TPM), «—type=all», «—initialized-match» y «—initialized-nomatch» para seleccionar dispositivos inicializados o no inicializados, «udevadm info —tree» para mostrar el árbol de objetos en la jerarquía /sys/. También se han añadido nuevos comandos «wait» y «lock» en udevadm para esperar la aparición de un registro sobre el dispositivo en la base de datos y bloquear un dispositivo de bloque durante la formateación o escritura de la tabla de particiones.
- Se ha añadido un nuevo conjunto de enlaces simbólicos a dispositivos /dev/disk/by-diskseq/ para identificar dispositivos de bloque por su número de secuencia («diskseq»).
- En los archivos .link de la sección [Match] se ha añadido soporte para el parámetro «Firmware» para hacer coincidir un dispositivo según la cadena que describe el firmware.
- En systemd-networkd, para las rutas unicast configuradas a través de la sección [Route], el valor de scope se ha cambiado por defecto a «link» para coincidir con el comportamiento del comando «ip route». Se ha añadido el parámetro Isolated=true|false en la sección [Bridge] para configurar el atributo del mismo nombre de los puentes de red en el núcleo. En la sección [Tunnel] se ha añadido el parámetro External para establecer túneles de tipo external (modo de recopilación de metadatos). En la sección [DHCPServer] se han añadido los parámetros BootServerName, BootServerAddress y BootFilename para configurar la dirección del servidor, el nombre del servidor y el nombre del archivo de inicio que se envían el servidor al DHCP durante el arranque en modo PXE. En la sección [Network] se ha eliminado el parámetro L2TP, y en su lugar se puede utilizar una nueva configuración Local en los archivos .netdev para la vinculación a la interfaz L2TP.
- Se ha añadido una nueva unidad «systemd-networkd-wait-online@.service», que se puede utilizar para esperar a que se levante una interfaz de red específica.
- Se ha implementado la posibilidad de usar archivos .netdev para crear dispositivos virtuales WLAN, para cuya configuración se ha propuesto la sección [WLAN].
- En los archivos .link/.network en la sección [Match] se ha implementado el parámetro Kind para la coincidencia según el tipo de dispositivo («bond», «bridge», «gre», «tun», «veth»).
- Se ha garantizado el arranque de systemd-resolved en una etapa anterior del proceso de inicio, incluida la implementación del inicio desde initrd cuando systemd-resolved está presente en la imagen initrd.
- En systemd-cryptenroll se ha añadido la opción —fido2-credential-algorithm para seleccionar el algoritmo de cifrado de credenciales y la opción —tpm2-with-pin para gestionar la entrada del PIN al desbloquear la partición utilizando TPM. En /etc/crypttab se ha añadido una opción similar tpm2-pin. Al desbloquear dispositivos a través de TPM, se asegura el cifrado de los parámetros para protegerse contra la interceptación de claves de cifrado.
- En systemd-timesyncd se ha añadido una API de D-Bus para obtener información de forma dinámica desde el servidor NTP a través de IPC.
- Para determinar la necesidad de salida en color en todos los comandos, se ha implementado una verificación de la variable de entorno COLORTERM además de las previamente verificadas NO_COLOR, SYSTEMD_COLORS y TERM.
- En el sistema de construcción Meson se ha implementado la opción install_tag para la construcción e instalación selectiva de componentes necesarios: pam, nss, devel (pkg-config), systemd-boot, libsystemd, libudev. Se ha añadido una opción de construcción default-compression para seleccionar el algoritmo de compresión para systemd-journald y systemd-coredump.
- En sd-boot se ha añadido una configuración experimental en loader.conf llamada «reboot-for-bitlocker» para iniciar Microsoft Windows con BitLocker TPM.
Fuente: opennet.ru
