Systemd/es

systemd es un moderno reemplazo (cuando está ejecutándose) de sysvinit y RC para los sistemas Línux. Tiene soporte en Gentoo como una alternativa del sistema de inicio (init).

El núcleo de línux
systemd hace uso de muchas características modernas del núcleo de Línux. Ahora mismo, el límite inferior de la versión del núcleo (para usar systemd) se encuentra en el ebuild 2.6.39. En versiones recientes de, hay una manera eficaz de seleccionar las opciones del núcleo, tanto obligatorias como opcionales, para systemd (leer la configuración del núcleo para obtener más detalles):

Para configurar las opciones del núcleo manualmente (que es la única opción cuando no utilice ), se requieren o recomiendan las siguientes opciones de configuración del núcleo:

Para un sistema UEFI active también las siguientes opciones:

Si el sistema está utilizando el planificador BFQ, se recomienda, por los desarrolladores de BFQ, activar «BFQ hierarchical scheduling support» bajo «Enable the block layer -> IO Schedulers».

Para obtener una lista actualizada, consulte la sección «REQUIREMENTS» en el archivo README.

El directorio
El directorio es utilizado por systemd, y otras aplicaciones, como almacenamiento no persistente para los datos que se ejecutan en tiempo real como los archivos, sockets y archivos de estado.

El paquete systemd creará él mismo el directorio. Sin embargo, tenga en cuenta que este cambio provocará el montaje automático del mismo en OpenRC, y puede desencadenar su uso por los diferentes paquetes de software.

Los desarrolladores solo dan soporte al archivo siendo este un enlace simbólico de. Si no se crea este enlace simbólico también causará problemas con  y. En el pasado algunas utilidades escribieron información (como opciones de montaje) en y, por lo tanto, se dio por hecho que era un archivo normal. Hoy en día todo el software tiene en cuenta esto que para evitar dicho problema. Sin embargo, antes de cambiar el archivo para convertirse en un vínculo simbólico, revise para asegurarse de que el sistema no está afectado por ninguna regresión reportada.

Para crear el enlace simbólico, ejecute:

Asegurarse de que /usr está presente en el arranque
Para una configuración separada de, utilice un initramfs para que monte antes de iniciar systemd. Por ahora, esto implica que se puede utilizar o  hasta que el apoyo a  esté disponible en. Dele un tiempo para realizar la migración:

Cuando utilice dracut, active el módulo usrmount, si no se ha activado por sí mismo al montar automáticamente.

Cuando se utilice genkernel-next, antes de recompilar el núcleo, asegúrese de ajustar la variable UDEV en el archivo de configuración de a. Esto colocará dentro de initramfs:

Consulte la Guía de initramfs para conocer otras alternativas.

Utililizar LVM2 y initramfs
Cuando se utiliza sys-fs/lvm2 y el sistema se arranca usando un initramfs, dicho initramfs tendrá que ser creado con, ejecutando:

es, o bien, o bien algún otro objetivo de genkernel que implique la creación de un initramfs. Para obtener más información, mire la salida de :

Cuando se utiliza LVM, el demonio debe iniciarse también. De lo contrario systemd será incapaz de montar volúmenes LVM. se puede activar en :

Instalación
contiene udev. Una vez instalado, puede retirarse, dado que systemd será asistido por.

Active el parámetro global de USE  (en ). Al mismo tiempo, el parámetro USE  debe ser desactivado para evitar conflictos con el servicio. También es posible cambiar a un subperfil systemd para utilizar parámetros USE por defecto más coherentes, en cuyo caso no es necesario cambiar :

Finalmente, actualice el sistema con los nuevos parámetros:

Cuando se producen problemas de dependencias (como bloqueando ),  podría ser que estuviera registrado en el archivo word. Trate de resolver esto desmarcándolo:

Arrancar con systemd
Para poder arrancar systemd, hay que cambiar el  que el núcleo (o initramfs) utiliza como ejecutable.

Las siguientes subsecciones documentan cómo intercambiar el en uno de los gestores de arranque o en el núcleo.

Grub Legacy (0.x)
El argumento  debe ser añadido a la línea de órdenes del núcleo. Un extracto de ejemplo de se vería así:

Si a pesar de esto el sistema arranca usando OpenRC, pruebe utilizando  en lugar de.

Grub 2
Cuando se utiliza, añada la opción init a GRUB_CMDLINE_LINUX :

Cuando el archivo de configuración de GRUB 2 esté hecho a mano (solo expertos), añada el parámetro  a la orden   o.

Cuando utilice initrd obtenido con genkernel-next, use  en lugar de.

En la configuración del núcleo
La configuración de init también puede ser introducida en la configuración del núcleo. Consulte. Tenga en cuenta que esta técnica funciona tanto para como para.

Definir la contraseña de root
En este punto no se olvide de establecer la contraseña root del sistema. Si algo sale mal, systemd pedirá la contraseña de root para entrar en modo de mantenimiento.

Configuración tras la instalación
systemd soporta algunos archivos de configuración del sistema para ajustar los detalles más básicos del sistema.

Nombre del equipo
Para establecer el nombre del equipo, cree/edite el archivo y simplemente ponga el nombre deseado para el equipo.

Cuando arranca con systemd, dispone de una herramienta llamada que permite editar  y. Para cambiar el nombre del equipo, ejecute:

Remítase a para obtener más información.

Idioma del sistema
Por lo general, los locales migrarán correctamente desde OpenRC al instalar systemd. Cuando sea necesario, el idioma se puede ajustar en, según las instrucciones dadas por el manual de Gentoo:

Una vez arrancado el sistema con systemd, la herramienta se puede utilizar para establecer la configuración regional y el mapa de teclas de la consola o de X11. Para cambiar la configuración regional del sistema, ejecute la siguiente orden:

Para cambiar el mapa de teclado de la consola virtual:

Y, por último, para configurar la distribución del teclado en X11:

Si es necesario el modelo, variante y opciones pueden especificarse así:

Fecha y hora
La fecha y hora del sistema se pueden ajustar mediante la utilidad. Esto también permitirá a los usuarios configurar la sincronización horaria del sistema sin necesidad de depender de o de otros proveedores que implementa el propio systemd.

Para aprender a utilizar solo tiene que ejecutar:

Cargar módulos automáticamente
La carga automática de un módulo está configurada en un archivo diferente, o mejor dicho, en un directorio de archivos. Los archivos de configuración se almacenan en el directorio. Al arranque, se carga cada archivo que contiene una lista de módulos. El formato del archivo es una lista de módulos separados por saltos de línea, y dicho archivo puede tener cualquier nombre, siempre y cuando termine en. La carga del módulo se puede separar por programa, servicio o cualquier forma que se adapte a sus preferencias personales. Un ejemplo para los módulos de  se enumeran a continuación:

systemd-networkd
systemd-networkd es útil para realizar una configuración sencilla de las interfaces de red cableada. Está desactivado por defecto.

Para configurar systemd-networkd, cree un archivo dentro del directorio. Vea systemd.network(5) como referencia. Una configuración de DHCP sencilla sería como sigue:

Advierta que systemd-networkd no actualiza de forma predeterminada. Para tener systemd administrando la configuración de DNS, sustituya con un enlace simbólico y ponga en marcha systemd-resolved.

NetworkManager
A menudo NetworkManager se utiliza para configurar los ajustes de red. Para ello, solo tiene que ejecutar la siguiente orden cuando se utiliza un escritorio corriendo con X11:

Si ese no es el caso y la red necesita ser configurada desde consola, dele a nmcli una oportunidad, o siga un proceso de configuración asistida por :

nmtui es una interfaz curses que guiará al usuario en el proceso de configuración mientras se ejecuta en modo consola.

Manejar los archivos de registo
systemd tiene su propia manera de manejar los archivos de registro sin necesidad de depender de ningún sistema de registro externo (como or ). Los mensajes ahora se pueden leer con. Aún así, systemd puede ser configurado para utilizar una herramienta externa de su preferencia para el manejo de los registros. Vea para aprender acerca de cómo configurar journald para que se ajuste a sus necesidades personales.

Algunas opciones comunes de :

Para obtener más información y muchas más opciones, eche un vistazo a.

/tmp está ahora en tmpfs
A menos que algún otro sistema de archivos esté montado de forma explícita para en, systemd montará  como tmpfs. Eso significa que se vacía en cada arranque y su tamaño se limitará a 50% del tamaño de la memoria RAM del sistema. Para saber por qué este se comporta así y cómo modificarlo, eche un vistazo a Sistemas de archivos API.

Configurar la verbosidad de proceso de arranque
Al migrar a systemd lo usuarios suelen notar diferencias en cuanto a la salida verbosa del proceso de arranque:


 * La opción de arranque  no solo influye en la salida de información sobre el núcleo, sino también sobre la del propio systemd. No obstante, mientras se configura systemd para la máquina, la opción de monstrar los errores, que fue descartada, podría volver a surgir. Por tanto, después de configurar systemd, añada de nuevo la opción «quiet» para conseguir una salida concisa de información del arranque (y, por ende, un arranque más rápido).
 * Incluso pasando la opción de arranque, systemd todavía se puede configurar para mostrar su estado poniendo el parámetro.
 * Cuando no utilice la opción de arranque, algunos mensajes podrían sobrescribir las consolas. Esto es causado por la configuración del núcleo (ver man 5 proc y buscar ). Para ajustarlo pase el parámetro de arranque   al núcleo (y actualice el valor de acuerdo a su preferencia, por ejemplo, establezca un valor más bajo, como 1).

Servicios
En algún momento el sistema tendrá que ser reiniciado para que systemd se ponga marcha (en modo de sistema). Procure leer todo el presente documento para asegurarse de que systemd se configura tan completamente como sea posible antes de reiniciar (el equipo). Tenga en cuenta que, así como la utilidad funciona con systemd mientras este no está ejecutándose, por el contrario la utilidad  no hará nada útil sin que systemd esté ejecutándose. Complete la configuración de los servicios (activación e iniciación de los servicios) después de entrar en el sistema que ejecuta systemd.

Servicios OpenRC
Aunque originalmente systemd intentó dar soporte a los antiguos scripts de init.d en ejecución, este apoyo no se adapta bien para un RC basado en dependencias como OpenRC y, por lo tanto, se desactiva por completo en Gentoo. OpenRC ofrece medidas adicionales para garantizar que los scripts de init.d no se ejecuten cuando no se utilice OpenRC para arrancar el sistema (de lo contrario los resultados serían impredecibles).

Listar servicios disponibles
Todas las unidades de servicios disponibles se pueden enumerar usando el argumento  con :

Los siguientes sufijos de archivos son de interés:

Por otro lado, la herramienta se puede utilizar para enumerar todos los servicios (incluidos los implícitos):

Y, por último, para comprobar los servicios que fallaron al iniciar:

Activar, desactivar, iniciar y detener servicios
La forma habitual de activar un servicio es usando la siguiente orden:

Los servicios pueden ser igualmente desactivados:

Estas órdenes activan los servicios utilizando el nombre por defecto en el target por defecto (ambos especificados en la sección «Install» del archivo de servicio). Sin embargo, algunos servicios, o bien no proporcionan esta información, o bien los usuarios prefieren tener otro nombre/target.

Tenga en cuenta que estas órdenes solo activan o desactivan el servicio en cuestión cuando el sistema se inicie de nuevo en un próximo arranque; para iniciar el servicio inmediatamente (si necesidad de reinicio del sistema), utilice:

Los servicios también pueden ser detenidos:

Instalar archivos de unidad personalizados
Los archivos de unidad personalizados se pueden colocar en, donde van a ser reconocidos después de ejecutar :

está reservado para los archivos de servicios instalados por el gestor de paquetes.

Personalizar archivos de unidad
Cuando solo se necesitan cambios menores en una unidad, no hay necesidad de crear una copia completa del archivo de unidad original en. Sobrescribir la configuración en una unidad proporcionada por el gestor de paquetes se puede lograr mediante archivos colocados en un directorio llamado precedido con el nombre de la unidad original (por ejemplo ) en.

Se necesita una recarga de los servicios para informar a systemd de los cambios:

A continuación, es necesario reiniciar el servicio para aplicar los cambios:

Compruebe que la propiedad cambiada se ha aplicado al servicio:

Activar un servicio bajo un nombre personalizado
Cuando el nombre proporcionado por «Alias» en la sección «[Install]» de la unidad no cumple con sus expectativas y proporciona un nuevo valor permanente para este a través de una personalización que no es el valor deseado, se puede crear manualmente un enlace simbólico en (que apunte a otro servicio/target). El nombre del directorio puede especificar un target u otro servicio que dependerá de otro nuevo.

Por ejemplo, para instalar el servicio  como  en el target :

Para desactivar el servicio, basta con retirar el enlace simbólico:

Servicios nativos
Algunos de los paquetes de Gentoo ya instalan archivos de unidad de systemd. Para estos servicios, no se necesita mas que activarlos. Un breve resumen de los archivos de unidad que instalan los paquetes, se puede ver en systemd eclass users list.

La siguiente tabla, lista las coincidencias de los servicios de systemd con los de OpenRC:

Servicios con temporizador
Desde la versión 197, systemd soporta temporizadores, haciendo de cron un programa innecesario en un sistema systemd. Desde la versión 212, se da soporte a los servicios persistentes, reemplazando, incluso, a anacron. Los temporizadores persistentes se ejecutan en la próxima oportunidad, si el sistema se apaga cuando se programó el temporizador.

El siguiente es un ejemplo de cómo hacer un temporizador simple que se ejecuta en el contexto de un usuario. Será ejecutado incluso si el usuario no inicia sesión. Cada servicio con temporizador necesita un temporizador, y un archivo de servicio que se activa por el temporizador de la siguiente manera:

En primer lugar, hay que decirle a systemd que recargue los archivos de servicio:

Es posible realizar la copia de seguridad manualmente ejecutando la siguiente orden:

Se puede iniciar y detener el temporizador manualmente de la siguiente manera:

Por último, para activar el temporizador en cada inicio del sistema, ejecute:

Para comprobar los últimos resultados de la ejecución del servicio:

Correos electrónicos para comunicar fallos
Si un servicio programado se ejecuta y falla, se puede enviar un correo electrónico al usuario o administrador para informarle. Esto es posible con la línea «onfailure» que especifica lo que debería suceder si un servicio falla. Un fallo es detectado cuando el script invocado devuelve un código distinto de cero.

Habrá que cambiar el script de la siguiente manera:

Esto requiere que tenga el servicio instalado, que se puede encontrar en kylemanna's systemd-utils repository.

Sustituir cron
Los archivos con temporizador y de servicios vistos antes también se pueden añadir a para hacerlos disponibles a todo el sistema. La sección «install» debería decir entonces  para activar el servicio al iniciar el sistema.

Sin embargo, también cron ejecuta los scripts situados en y otros lugares. Varios paquetes colocan scripts allí donde se espera que se ejecuten diariamente. Este comportamiento puede ser emulado con systemd instalando. Luego active el nuevo reemplazo de cron con las siguientes órdenes:

Solución de problemas

 * Upstream debugging guide
 * Upstream debugging guide
 * Upstream debugging guide

/dev/kmsg buffer overrun, some messages lost

 * Problema: Cuando se inicia el sistema, se muestra el mensaje  en un bucle infinito. La pantalla de acceso no se llega a mostrar ya que no se alcanza ese punto del proceso de arranque.


 * Solución: En la mayoría de los casos este problema está causado porque la opción CONFIG_POWER_SUPPLY_DEBUG está habilitada en el núcleo. La solución actual consiste en deshabilitar esta opción en el núcleo, recompilar, instalar e iniciar el nuevo núcleo. Se puede encontrar la descripción de la solución en este hilo de los foros de Gentoo. Tal y como indica un usuario del foro, este problema se ha observado también cuando se utiliza una EEPROM I2C en un sistema incrustado . La solución en este caso consiste en deshabilitar la opción CONFIG_I2C_DEBUG_CORE del núcleo.

Sesiones gráficas abiertas en lugares aleatorios
Por defecto, systemd lanza únicamente un proceso cuando se va a utilizar. Esto causa que algunos gestores gráficos (como GDM) utilicen los TTYs que queden para abrir sesiones gráficas bajo demanda lo cual puede resultar en tener las consolas y las sesiones gráficas repartidas de forma aleatoria dependiendo en el orden en el que se hayan utilizando.

Para que el comportamiento sea más "clásico" (esto es, las consolas se emplazan desde la  a la  y las sesiones gráficas utilizan los TTY que quedan) forzar a lanzar siempre  en ellas:

lvm
Cuando se cambia de OpenRC a systemd y se necesita lvm para montar correctamente los volúmenes del sistema, hay que activar el servicio lvm:

A pesar de que este servicio podría no ser necesario para la activación del volumen raíz (si lvm está integrado en initramfs), podrían no funcionar sin él otros volúmenes LVM, a menos que se active el servicio.

systemd-bootchart
Como systemd-bootchart podría intentar iniciar, reconfigúrelo para invocar systemd en su lugar:

El resultado de bootchart es un informe en formato SVG ubicado en.

syslog-ng en conflicto con systemd
systemd crea como socket de datagramas  de modo que syslog-ng necesita ser leído desde un unix-dgram en lugar de un unix-stream, de lo contrario syslog-ng utiliza una transmisión «mala»:

Fuente syslog-ng para systemd
No es necesario añadir  al fichero de configuración. Causará el fallo de (al menos en la versión syslog-ng-3.7.2). Actualizar la línea  mencionada en el artículo sobre syslog-ng como se muestra a continuación:

Configuración de sys-fs/cryptsetup
systemd no parece respetar (vea ) por lo que necesita ser configurado a través del archivo :

Respecto al fichero del sistema, puede ser necesario crear un nuevo fichero de servicio. Para hacer esto, habilitar el ajuste USE  para. Esto instalará. Al lanzarlo se creará el fichero de servicio en que puede copiarse a. Ajustarlo manualmente y añadirlo al nivel de ejecución deseado.

Comprobar la unidades que fallan al inicio
Compruebe si hay unidades que no pudieron comenzar con:

Activar modalidad de depuración de errores
Para obtener más información estableca lo siguiente en :

O, active la depuración de errores en consola, que abre una terminal en tty9. Esto ayuda a depurar errores de los servicios durante el proceso de arranque.

La utilización de e4rat
Recuerde editar para configurar 'init' para, de lo contrario se mantendrá el arranque de OpenRC.

Rigidez de GRSecurity
Con grsecurity activado, systemd-networkd podría registrar el error siguiente:

El error aumenta debido a que cuando systemd-networkd trabaja bajo un usuario no root, grsecurity denegará el acceso a la estructura completa de para dichos usuarios. Para desactivar esta opción, desactive la opción del núcleo CONFIG_GRKERNSEC_SYSFS_RESTRICT.

También se pueden encontrar alguno problemas con los permisos si se ha activado CONFIG_GRKERNSEC_PROC, leer más en la incidencia.

shutdown -rF no fuerza la ejecución de fsck
El servicio es el responsable de lanzar  cuando se necesita. No aplica para la opción  de  per en lugar de eso se aplica a los siguientes parámetros de inicio del núcleo.

Véase también

 * Comparison of init systems - Un artículo donde se comparan y contrastan las diferencias de los sistemas init de Gentoo.
 * Sakaki's EFI Install Guide - En particular, el capítulo Configuring systemd and installing necessary tools
 * OpenRC to Systemd Cheatsheet

Recursos externos

 * FAQ
 * Tips and tricks