Systemd/es

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

systemd is a modern SysV-style init and rc (run command) replacement for Linux systems. It is supported in Gentoo as an alternate init system.

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 02.06.39. En versiones recientes de, hay una manera eficaz de seleccionar las opciones del núcleo, tanto obligatorias como opcionales, para systemd:

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 archivos pid, 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 mount y df. 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. Consulte la Initramfs Gentoo Guide para obtener instrucciones al respecto.

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 genkernel --help:

Cuando se utiliza LVM, el demonio lvmetad debe iniciarse también. De lo contrario systemd será incapaz de montar volúmenes LVM. lvmetad 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 systemd-logind. 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 init que el núcleo (o initramfs) utiliza como ejecutable.

Las siguientes subsecciones documentan cómo intercambiar el init 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 grub2-mkconfig</tt>, añada la opción init a :

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 «Processor type and features -> Built-in kernel command line». Tenga en cuenta que esta técnica funciona tanto para grub como para grub2.

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 posterior a 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 hostnamectl</tt> que permite editar y. Para cambiar el nombre del equipo, ejecute:

Remítase a man hostnamectl 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 localectl</tt> 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 timedatectl</tt>. 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 timedatectl</tt> 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 virtualbox.conf</tt> 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</tt>:

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 syslog-ng o rsyslog). Los mensajes ahora se pueden leer con journalctl</tt>. Aún así, systemd puede ser configurado para utilizar una herramienta externa de su preferencia para el manejo de los registros. Escriba man journald.conf y aprenda acerca de cómo configurar journald para que se ajuste a sus necesidades personales.

/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).


 * The boot option  not only influences the kernel output, but also that of systemd itself. Then, while setting up systemd for the machine, drop the option to see any errors could arise more easily. After that, add it back to get a quiet (and faster) boot.
 * Even passing the  boot option, systemd can still be configured to show its status by also passing.
 * When not using the  boot option, some messages might be overwriting consoles. That is caused by the kernel configuration (see man 5 proc and look for ). To tweak it pass the   boot parameter to the kernel (and update the value according to preference, for instance set a lower value like 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 journalctl</tt> funciona con systemd mientras este no está ejecutándose, por el contrario la utilidad systemctl</tt> 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 systemctl</tt>:

Los siguientes sufijos de archivos son de interés:

Por otro lado, la herramienta systemctl</tt> 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 systemctl daemon-reload</tt>:

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 al instalar primero y luego systemd-cron. Basta con ejecutar ./configure --enable-persistent y make. Ignore systemd-crontab-generator si solo la ejecución de los archivos situados en son de interés. Solo tiene que copiar los archivos desde a. Después asegúrese de ajustar la ruta a run-parts</tt> en los archivos de servicios. El script run-parts</tt> está ubicado, en Gentoo, en. Por último, active el nuevo reemplazo cron con las siguientes órdenes:

Solución de problemas

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

Graphical sessions opened in random places
By default systemd only launches a getty</tt> process when it's going to be used. This causes some display managers (like GDM) to use the remaining TTYs for opening graphical sessions on demand, which can result in having consoles and graphical sessions placed randomly depending on the order they were used.

To stick with a more "classical" behavior (i.e, consoles placed from to  and graphical sessions using the remaining TTYs) force it to always launch <tt>getty</tt> on those:

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»:

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

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.

Véase también

 * Comparison of init systems
 * 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