Pixelaula.
Linux por dentro · Lección 3 de 5

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.

⏱ 25–35 min▶ Video de 83 s🧪 Laboratorio con 4 misiones
00 · En 83 segundos

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.

    01 · De apagado a listo

    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:

    1. 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.
    2. 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.
    3. 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.
    4. 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.
    5. El resto del espacio de usuario. Terminales, la shell y, en un escritorio, el administrador de pantalla y el servidor gráfico.
    Escena 1

    Enciende la máquina y avanza etapa por etapa. Mira quién tiene el control y qué hay en memoria.

    02 · Quién arranca los servicios

    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.
    Escena 2

    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.

    03 · Qué, cuándo y cómo

    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.target es «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-reloadvuelve a leer los archivos de units y rehace el árbol de dependencias
    start · stop · restartarranca, detiene o reinicia el servicio ahora
    enable · disablehace que arranque, o no, con el sistema
    statusresumen del estado con las últimas líneas de su registro
    reload · killpide 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.

    Escena 3

    Acabas de copiar saludo.service en /etc/systemd/system. Aplica los comandos en el orden que quieras y mira el estado.

    04 · Más herramientas

    Registros y compañía

    • journalctl: un solo lugar para todos los registros de los componentes de systemd. Con -u filtra por unit y con -b muestra 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; con blame, cuánto tardó cada servicio.
    05 · Predice

    Antes de leer la respuesta

    Laboratorio

    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.

    Repaso

    Comprueba lo que entendiste

    Cada respuesta incorrecta explica por qué parece correcta y en qué falla.