Noticia systemd 260: Fin de System V, montajes mstack y métricas Varlink

systemd


Tras tres meses de desarrollo, se ha liberado systemd 260, una versión que marca un punto de no retorno al eliminar definitivamente el soporte para los antiguos scripts de System V, obligando a los mantenedores de software a transicionar hacia archivos de unidad nativos.

Más allá de la limpieza de código heredado, esta entrega introduce herramientas avanzadas para la composición de sistemas de archivos, métricas unificadas y una delegación de permisos con mas precisión tanto para usuarios locales como remotos.

Principales novedades de systemd 260​


Una de las incorporaciones más notables es el mecanismo «mstack» (Montaje en pila). Esta característica estandariza la creación de jerarquías de directorios compuestas utilizando OverlayFS y montajes vinculados (mount –bind). En la práctica, permite definir una estructura de capas mediante directorios con el sufijo .mstack/.

Por ejemplo, un directorio aplicacion.mstack/ puede contener enlaces simbólicos a dos imágenes de disco de solo lectura (como el sistema base y las dependencias de la aplicación) y definir un directorio superior con permisos de escritura. A través del nuevo comando systemd-mstack, el parámetro RootMStack en los archivos de unidad, o la opción –mstack en systemd-nspawn, el sistema montará y desmontará toda esta topología en una sola operación.

Esto facilita enormemente el despliegue de contenedores inmutables, entornos de pruebas efímeros o la ejecución de imágenes OCI (que ahora pueden descargarse directamente con importctl pull-oci y montarse vía mstack).

Métricas Unificadas y Conectividad Móvil​


Otra de las mejoras que presenta la nueva version de systemd 260, son los nuevos marcos de trabajo «metrics» y «report». Cualquier componente del sistema puede ahora exportar sus estadísticas a través del protocolo Varlink hacia el directorio «report». La nueva utilidad systemd-report se encarga de recolectar esta telemetría dispersa, generar un informe consolidado y exportarlo en formato JSON. Actualmente, el gestor de servicios (PID 1) y systemd-networkd ya están inyectando datos en este flujo.

Hablando de red, systemd-networkd se integra nativamente con ModemManager. A través de la nueva sección [MobileNetwork] en los archivos de configuración, los administradores pueden definir parámetros como el APN, PIN, usuario, contraseña e ID del operador, permitiendo establecer conexiones de banda ancha celular (4G/5G) directamente desde el gestor de red del sistema.

Gestión de Usuarios, GPU y Servicios Portátiles​


El modelo de privilegios mejoro para adaptarse a casos de uso modernos. El demonio de servicios portátiles (systemd-portabled) ahora puede ejecutarse a nivel de usuario sin requerir privilegios de root. Los servicios portátiles son, en esencia, imágenes de sistema empaquetadas como contenedores autónomos que se gestionan como un servicio estándar (systemctl).

Para entornos de escritorio remoto y servidores de cálculo, systemd-logind y systemd-udevd introducen el concepto de «xaccess» (Acceso Extendido). Tradicionalmente, la lógica «uaccess» garantizaba acceso a la GPU y periféricos solo a los usuarios con una sesión local activa frente al teclado. Con «xaccess», los usuarios remotos que inician una sesión gráfica sin estar físicamente frente al equipo pueden obtener acceso acelerado al hardware de renderizado. Esto se configura pasando la variable XDG_SESSION_EXTRA_DEVICE_ACCESS a través de PAM.

Automatización de Arranque y Ajustes en Archivos de Unidad​


El proceso de arranque basado en Imágenes de Kernel Unificadas (UKI) soluciona un problema histórico en arquitecturas ARM. systemd 260 propone un directorio canónico que asocia identificadores de hardware con sus respectivos Device Tree Blobs (DTB). Con esto, una única imagen UKI genérica puede arrancar en múltiples dispositivos ARM64 (actualmente enfocado en chips Snapdragon), detectando y cargando el DTB correcto en tiempo de arranque sin necesidad de compilar un kernel específico para cada placa.

A nivel de configuración de servicios (units), las adiciones son numerosas:

  • Asignación Dinámica de UID/GID: El parámetro PrivateUsers=managed delega a systemd-nsresourced la asignación automática de un rango transitorio de 65536 identificadores de usuario y grupo, ideal para contenedores anidados.
  • Control de Memoria THP: Los servicios ahora pueden controlar granularmente el uso de Páginas de Memoria Grandes Transparentes (Transparent Huge Pages) mediante la directiva MemoryTHP=.
  • Protección OOM Personalizada: systemd-oomd estrena (prekill hook), permitiendo que otros componentes ejecuten acciones síncronas antes de que un proceso sea asesinado por falta de memoria.

Finalmente, el archivo os-release soporta ahora el campo FANCY_NAME, permitiendo a las distribuciones utilizar glifos Unicode no ASCII en su nombre de presentación, el cual tendrá prioridad sobre PRETTY_NAME en las salidas de consola. A nivel de requisitos, el kernel base mínimo se ha elevado a la versión 5.10 (recomendándose 6.6 para aprovechar funciones como el planificador SCHED_EXT).

Finalmente si estas interesado en poder conocer mas al respecto, puedes consultar los detalles en el siguiente enlace.

Continúar leyendo...