Systemd/es

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 makes use of many modern Linux kernel features. Right now, the lower bound on kernel version is set in the ebuild to 2.6.39. In recent versions of, there is a convenient way of selecting the mandatory and optional kernel options for 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
The directory is used by systemd and other applications as a non-persistent storage for runtime data like  files, sockets and state files.

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.

Upstream only supports the file being a symlink to. Not creating this symlink will also cause problems with  and. In the past some utilities wrote information (like mount options) into and thus it was supposed to be a regular file. Nowadays all software is supposed to avoid this problem. Still, before switching the file to become a symbolic link, please check to be sure that the system is not affected by any reported regressions.

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:

is either  or one of the other genkernel targets which imply the creation of an initramfs. For more information, look at the output of :

When LVM is used, the daemon needs to be started as well. Otherwise systemd will be unable to mount LVM volumes. can be enabled in :

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

Enable the  USE flag globally (in ). The  USE flag should also be disabled to prevent conflicts with the  service. It is also possible to switch to a systemd subprofile to use saner USE flags defaults in which case it is not necessary to change :

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
In order to run systemd, switch the that the executable kernel (or the initramfs) uses.

The following subsections document how to switch the in one of the boot managers or the kernel.

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
When is used, add the init option to 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
The init configuration can also be hard-coded in the kernel configuration. See. Note that this technique works for both and.

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.

Post-installation configuration
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.

When booted using systemd, a tool called exists for editing  and. To change the hostname, run:

Refer to for more options.

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:

Once booted with systemd, the tool is used to set locale and console or X11 keymaps. To change the system locale, run the following command:

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

Time and date
Time and date can be set using the utility. That will also allow users to set up synchronization without needing to rely on or other providers than systemd's own implementation.

To learn how to use simply run:

Cargar módulos automáticamente
Automatic module loading is configured in a different file, or rather directory of files. The configuration files are stored in. On boot every file with a list of modules will be loaded. The file format is a list of modules separated by newlines and can have any name as long as it ends with. The module loading can be separated by program, service or whatever way that fits personal preference. An example is listed below:

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

To configure systemd-networkd, create a file under. See systemd.network(5) for reference. A simple DHCP configuration is given below:

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:

If that is not the case and the network needs to be configured from console, give nmcli a try, or follow a guided configuration process through :

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 has its own way of handling log files without needing to rely on any external log system (like or ). Messages can now be read with. It can still be configured to use a preferred external tool for handling them. See to learn how to configure journald to suit personal needs.

Some common options:

For more information and many more options, look at.

/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
When migrating to systemd users usually notice differences regarding verbosity of boot process:


 * 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  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
At some point the system will need to be rebooted in order to get systemd running (in system mode). Be sure to read all of this document to ensure systemd is configured as completely as possible before rebooting. Note that works with systemd not running, but that  will not do anything useful without systemd running. Complete the service configuration (enabling and starting of services) after logging in to the system running 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
All available service units can be listed using the  argument of :

Los siguientes sufijos de archivos son de interés:

Alternatively the tool can be used to list all services (including implicit ones):

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

Enabling, disabling, starting, and stopping services
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
Custom unit files can be placed in, where they will be recognized after running :

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.

However, cron also runs the scripts in and other locations. Several packages place scripts there that they expect to be run daily. This behavior can be emulated with systemd by installing. Then activate the new cron replacement with the following commands:

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 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  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 does not seem to respect (see ) so it needs to be configured through the  file:

You may need to create a new service file from your file. To do this, enable the  USE flag for. It will install. Executing it will create a service file in, which you can now copy to , adjust manually and add to the desired runlevel.

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:

The error raises due to systemd-networkd working under a non-root user with grsecurity refusing access to the complete structure for such users. To disable this option, disable the CONFIG_GRKERNSEC_SYSFS_RESTRICT kernel option.

Recursos externos

 * FAQ
 * Tips and tricks