Del botón al PID 1
Entre que presionas el botón y aparece el escritorio pasan cinco etapas. Al terminar sabrás crear un servicio que arranque solo.
Primero, la idea completa
Mira el video entero o salta a la parte que quieras repasar. Después, cada idea tiene su propia escena para tocarla.
Las etapas del arranque
Arrancar es llevar la máquina desde que se enciende hasta un estado en el que se puede usar: se inicializa el hardware, se carga el kernel y se lanzan los servicios. En Linux eso pasa en cinco etapas:
- UEFI o BIOS. En equipos modernos, el firmware UEFI guarda la configuración de arranque en su memoria NVRAM y sabe qué cargador ejecutar. En equipos antiguos, la BIOS hace una prueba del hardware al encender (POST), lo inicializa y entrega el control al cargador.
- Cargador de arranque. Tiene un solo objetivo: arrancar el kernel. Hay varios, como GRUB 2, systemd-boot, SYSLINUX o rEFInd; antes se usaban LILO y GRUB 1.
- Kernel. Vive en
/boot, comprimido. Se descomprime y carga en memoria, inicializa sus subsistemas, sistemas de archivos y controladores, y entrega el control al sistema init. - Init. Es el primer proceso, con PID 1: la raíz de toda la jerarquía de procesos. Lanza los demonios (servicios) y sigue vivo hasta que se apaga el sistema.
- El resto del espacio de usuario. Terminales, la shell y, en un escritorio, el administrador de pantalla y el servidor gráfico.
Enciende la máquina y avanza etapa por etapa. Mira quién tiene el control y qué hay en memoria.
SysV init y systemd
El sistema init tradicional era SysV init, heredado de Unix. Definía niveles de ejecución (estados del sistema) y guardaba sus scripts en /etc/init.d. Arrancaba los demonios uno tras otro, y cada distribución lo configuraba a su manera, así que era poco portátil.
Hoy casi todas las distribuciones usan systemd (Debian y Ubuntu desde 2015). Corre como PID 1 y arranca el resto del sistema. Sus mejoras:
- Una forma uniforme de administrar el arranque en todas las distribuciones.
- Arranca servicios en paralelo en cuanto sus dependencias están listas.
- Monitoreo, control de recursos con cgroups y auditoría integrados. Además de servicios, maneja registros, red y la hora.
Los mismos servicios, arrancados en secuencia o en paralelo. Las barras ámbar esperan a una dependencia: ssh necesita la red y la red necesita udev.
Units
A systemd se le dice qué ejecutar, cuándo y cómo mediante units, cada una descrita en un archivo. Las más comunes:
- service: cómo manejar un servicio o una aplicación.
- target: agrupa dependencias; por ejemplo,
multi-user.targetes «sistema listo para usuarios». - mount: un punto de montaje.
- timer: temporizadores, como las tareas programadas.
systemd busca los archivos en tres lugares: /lib/systemd/system (los que instalan los paquetes), /etc/systemd/system (los del administrador) y /run/systemd/system (cambios temporales que se pierden al reiniciar).
Se manejan con systemctl:
daemon-reload | vuelve a leer los archivos de units y rehace el árbol de dependencias |
start · stop · restart | arranca, detiene o reinicia el servicio ahora |
enable · disable | hace que arranque, o no, con el sistema |
status | resumen del estado con las últimas líneas de su registro |
reload · kill | pide al servicio releer su configuración · lo detiene a la fuerza |
Ojo: start y enable son independientes. Un servicio puede estar corriendo ahora y no volver a arrancar al reiniciar, o al revés.
Acabas de copiar saludo.service en /etc/systemd/system. Aplica los comandos en el orden que quieras y mira el estado.
Registros y compañía
journalctl: un solo lugar para todos los registros de los componentes de systemd. Con-ufiltra por unit y con-bmuestra el arranque actual.bootctl: revisa el estado del cargador de arranque y maneja los cargadores instalados.timedatectl: configura y muestra la fecha y la hora.coredumpctl: procesa los volcados de memoria guardados cuando un programa se cae; útil para depurar.- ampliación
systemd-analyze: cuánto tardó cada etapa del arranque; conblame, cuánto tardó cada servicio.
Antes de leer la respuesta
Tu turno: un servicio propio
Una máquina recién arrancada. Averigua quién es el PID 1 y cuánto tardó cada etapa del arranque. Luego instala tu propio servicio, uno que saluda con la hora cada segundo, haz que arranque con el sistema y lee sus registros.
Comprueba lo que entendiste
Cada respuesta incorrecta explica por qué parece correcta y en qué falla.