init (Español)

From ArchWiki

Estado de la traducción: esta traducción de init fue revisada el 2019-11-03. Si existen cambios puede actualizarla o avisar al equipo de traducción.
Advertencia: Arch Linux solo tiene soporte oficial para systemd. [1]Cuando utilice un sistema init diferente, por favor mencione esto en las solicitudes de soporte.

Init (abreviatura del término inglés initialization) es el primer proceso que se inicia durante el arranque del sistema. Es un demonio cuyo proceso continúa ejecutándose hasta que se apaga el sistema. Init es el ancestro directo o indirecto de todos los demás procesos, y adopta automáticamente todos los procesos huérfanos. El kernel lo inicia utilizando un nombre de archivo codificado. Si el kernel no puede iniciarlo, se producirá un «kernel panic». A init generalmente se le asigna el identificador de proceso (PID) 1.

Los scripts de init (o rc) son lanzados para garantizar la funcionalidad básica en el inicio y apagado del sistema. Esto incluye el (des)montaje del sistemas de archivos y el lanzamiento de los demonios. Un gestor de servicios va un paso más allá al proporcionar un control activo sobre los procesos ejecutados, o la supervisión de procesos. Un ejemplo es monitorear los bloqueos y reiniciar los procesos en consecuencia.

Estos componentes se combinan con el sistema init. Algunos inits incluyen el administrador de servicios en el proceso de inicio, o tienen scripts de inicio en estrecha relación con ellos. A estas entradas se hace referencia como «integradas», aunque las entradas en diferentes categorías pueden depender explícitamente entre sí.

Inits (integrados)

  • anopa — Sistema de inicialización construido alrededor del conjunto de supervisión s6
https://jjacky.com/anopa/ || anopaAUR
  • GNU Shepherd — Sistema de inicialización escrito en Guile.
https://www.gnu.org/software/shepherd/ || shepherdAUR
  • OpenRC — Sistema de inicialización basado en dependencias.
https://www.gentoo.org/proj/en/base/openrc/ || openrcAUR openrc-arch-services-gitAUR
  • systemd — Sistema de inicialización basado en dependencias con una notable paralelización, supervisión de procesos mediante cgroups y capacidad de depender de un punto de montaje dado o servicio dbus.
https://freedesktop.org/wiki/Software/systemd/ || systemd

Inits

  • BusyBox — Utilidades para sistemas de rescate e incrustados.
https://busybox.net/ || busybox
  • ninit — Fork de minit
http://riemann.fmi.uni-sofia.bg/ninit/ || ninitAUR[enlace roto: package not found]
  • sinit — Init simple inicialmente basado en la inicialización mínima de Rich Felker.
https://core.suckless.org/sinit || sinitAUR
  • SysVinit — Sistema tradicional V de init.
https://savannah.nongnu.org/projects/sysvinit || sysvinitAUR

Scripts de init

  • initscripts-fork — Fork de los scripts de SysVinit mantenido en Arch Linux.
https://bitbucket.org/TZ86/initscripts-fork/overview || initscripts-forkAUR
  • minirc — Script de inicialización mínimo diseñado para BusyBox.
https://github.com/hut/minirc/ || minirc-gitAUR

Gestores de servicios

  • daemontools — Colección de herramientas para gestionar servicios UNIX.
https://cr.yp.to/daemontools.html || daemontoolsAUR[enlace roto: package not found]
  • Monit — Monit es una herramienta de supervisión de procesos para Unix y Linux. Con monit, el estado del sistema se puede ver directamente desde la línea de órdenes o mediante el servidor web HTTP(S) nativo.
https://mmonit.com/monit/ || monit
  • perp — Supervisor de proceso persistente (servicio) y marco de administración para UNIX.
http://b0llix.net/perp/ || perpAUR
  • runit — Esquema de inicialización de UNIX con supervisión de servicio, un reemplazo para SysVinit y otros esquemas de init.
http://smarden.org/runit/ || runitAUR[enlace roto: package not found]
  • s6 — Pequeño conjunto de programas para UNIX, diseñado para permitir la supervisión del servicio en la línea de daemontools y runit.
https://skarnet.org/software/s6/ || s6AUR

Configuración

Migrar servicios en ejecución

Para ejecutar demonios bajo el nuevo init, guarde una lista de demonios en ejecución:

$ systemctl list-units --state=running "*.service" > daemons.list

y configure los #Scripts de init en consecuencia. Vea también [2].

Nota: systemd-tmpfiles(8), kernel modules y sysctl puede que también necesiten configuración.

logind

logind requiere que systemd sea el proceso de inicio. [3] Como tal, las sesiones locales y otras funciones no estarán disponibles.

Sugerencia: una versión independiente de logind está disponible como elogind-gitAUR [4]
Permisos del dispositivo

Añada usuarios a los grupos de usuarios respectivos para acceder al dispositivo y reiniciarlo. La pertencia actual al grupo debe verificarse primero con id user.

# usermod -a -G video,audio,power,disk,storage,optical,lp,scanner user

Consulte también Users and groups#Pre-systemd groups. Para crear reglas de grupo para usar con Polkit, vea Polkit#Bypass password prompt.

Rootless X (1.16)

Como Xorg.wrap no verifica si logind está activo [5], los derechos de root para Xorg deben activarse manualmente:

/etc/X11/Xwrapper.config
needs_root_rights = yes
Administración de energía

Consulte pm-utilsAUR y acpid para reemplazar la administración de energía con systemd.

Tareas programadas

Arch utiliza los archivos timer en lugar de cron por defecto. Vea archlinux-cronjobs para conocer trabajos cron básicos.

Dbus

Las instancias de usuario de dbus-daemon son lanzadas por systemd/User [6]. Cuando requiera IPC (del inglés «comunicación inter procesos) entre aplicaciones de escritorio, restaure 30-dbus.sh:

/etc/X11/xinit/xinitrc.d/30-dbus.sh
#!/bin/bash

# launches a session dbus instance
if [ -z "${DBUS_SESSION_BUS_ADDRESS-}" ] && type dbus-launch >/dev/null; then
  eval $(dbus-launch --sh-syntax --exit-with-session)
fi

Consejos y trucos

systemd-nspawn

systemd-nspawn es una herramienta para sistemas systemd. Sin embargo, desde Linux 2.6.19 es posible ejecutar systemd en un sistema no systemd utilizando el espacio de nombres PID. Para ello, el kernel debe configurarse con CONFIG_PID_NS y CONFIG_NAMESPACES).

El espacio de nombres PID crea una nueva jerarquía de procesos que comienzan con PID 1. Además de esto, systemd requiere que se monte un sistema de archivos raíz enjaulado (chrooteado). Por lo tanto, debe al menos realizar un montaje de «bind», porque de lo contrario algunos servicios fallarán con:

"Failed at step NAMESPACE spawning" due to "Invalid operation" 

dado que systemd intentará volver a montar la raíz con la opción private.

Para configurar un entorno enjaulado (chroot) con un nuevo espacio de nombre PID puede usar jchroot.[7] [8]. Asegúrese de no montar /proc dentro de la nueva raíz antes de realizar chroot, de lo contrario, systemd detectará el entorno chroot. Puede montarlo más tarde una vez que se esté ejecutando systemd.

Reemplazar udev

Advertencia: reemplazar udev no es necesario ya que systemd-udev es funcional sin systemd como PID 1. Algunos reemplazos como eudev tampoco pueden coexistir con systemd —asegúrese de que un init alternativo se inicie antes de su instalación—.
  • eudev — eudev es un fork de udev iniciado por el proyecto Gentoo. Está diseñado y probado principalmente con OpenRC.
https://wiki.gentoo.org/wiki/Eudev || eudevAUR eudev-gitAUR
  • mdev — Administrador de dispositivos para su utilización en sistemas integrados.
https://git.busybox.net/busybox/plain/docs/mdev.txt || busybox

Véase también