El kernel inicia el primer proceso del espacio de usuario como PID 1 dentro de un espacio de nombres de PID. En un sistema Linux completo, este proceso init establece el entorno de servicios. En un contenedor, el PID 1 puede ser un pequeño envoltorio de init o la propia aplicación, pero sigue teniendo responsabilidades especiales de señalización y recolección de procesos hijos.
Arrancar el Sistema · Lección 5
Proceso de arranque: init
Aprende cómo el PID 1 inicializa el espacio de usuario, supervisa servicios, recolecta hijos y coordina el apagado.
Responsabilidades del PID 1
Un sistema init suele:
- iniciar y supervisar servicios, inicios de sesión, montajes y otras unidades de trabajo
- ordenar el trabajo según las dependencias y el estado de destino configurado
- adoptar y recolectar procesos hijos huérfanos
- responder a fallos de servicios conforme a una política
- coordinar el apagado y el reinicio ordenados
El límite exacto varía. La gestión de dispositivos, las redes, los registros y las tareas programadas pueden ser programas independientes supervisados por init en vez de código integrado en el PID 1.
¿Qué responsabilidad es especial para el PID 1 en su espacio de nombres de PID?
System V init y niveles de ejecución
El sysvinit tradicional utiliza configuración como /etc/inittab y scripts de inicio y apagado específicos de cada nivel de ejecución. Un nivel representa un modo de funcionamiento, pero el significado de los niveles numerados puede variar según la distribución. El orden de los scripts se basa en convenciones y las herramientas de la distribución pueden ampliarlo o paralelizarlo.
No deduzcas el sistema init activo de un equipo solo porque exista /etc/init.d/; pueden quedar scripts de compatibilidad en sistemas cuyo PID 1 sea otra implementación.
¿Qué representa un nivel de ejecución de System V?
Sistemas basados en sucesos y dependencias
Upstart introdujo un modelo de trabajos dirigido por sucesos y fue utilizado por versiones antiguas de Ubuntu y algunos otros sistemas. Actualmente tiene sobre todo interés histórico o para operar sistemas heredados.
systemd se utiliza ampliamente en las distribuciones actuales de propósito general. Modela servicios, sockets, montajes, temporizadores, dispositivos, destinos y otros recursos como unidades. Las dependencias declarativas y los mecanismos de activación permiten que el trabajo independiente avance en paralelo y a la vez preservan el orden necesario.
Otros diseños activos de init y supervisión son OpenRC, runit, s6 y BusyBox init. «Más reciente» no es una regla útil de compatibilidad; identifica qué ejecuta el sistema real y utiliza su documentación.
¿Cómo representa systemd recursos gestionados como servicios y montajes?
Identificar el init en ejecución
Examina el PID 1 en vez de adivinarlo por los archivos instalados:
$ ps -p 1 -o pid,comm,args=
$ readlink /proc/1/exe
Los permisos, los contenedores y los espacios de nombres influyen en lo que ves. Una orden ejecutada dentro de un contenedor comunica el PID 1 de ese espacio, no necesariamente el init del anfitrión. Después de identificarlo, utiliza sus herramientas nativas de estado y registros en vez de mezclar órdenes de otra familia de init.
¿Por qué es mejor examinar el PID 1 que comprobar si existe un directorio de scripts heredado?
Lección completada
Has completado Proceso de arranque: init
Ahora puedes explicar init como una función, no como una implementación obligatoria.
Relaciona el PID 1 con la inicialización de servicios, la recolección y el apagado.
Reconoce los niveles de System V como modos de funcionamiento definidos por la distribución.
Relaciona los recursos y dependencias de systemd con unidades.
Examina el PID 1 activo en el espacio de nombres pertinente antes de elegir herramientas.
Guarda tu progreso
Crea una cuenta gratuita para guardar esta lección y continuar en cualquier dispositivo.
Crear una cuenta gratuita