martinezmartinez.es

Niveles de ejecución / objetivos de arranque y apagar o reiniciar el sistema LINUX

enero 5, 2025 | by juancmmartinez@gmail.com

Linux-Logo

El administrador de servicios es el primer programa lanzado por el núcleo durante el proceso de
arranque, por lo que su PID (número de identificación del proceso) siempre es 1

Estándar SysVinit

Se ordenan por runlevels del 0 al 6

  • Runlevel 0 Apagado del sistema.
  • Runlevel 1, s o usuario único Modo de usuario único, sin red y otras capacidades no esenciales (modo de mantenimiento).
  • Runlevel 2, 3 o 4 Modo multiusuario. Los usuarios pueden iniciar sesión por consola o red. Los niveles de
  • ejecución 2 y 4 no se usan con frecuencia.
  • Runlevel 5 Modo multiusuario. Es equivalente a 3, más el inicio de sesión en modo gráfico.
  • Runlevel 6 Reinicio del sistema

Donde se almacenan los scripts de los runlevels

El init es el encargado de gestionar los niveles de ejecución y de lanzar los scripts necesarios para iniciar los servicios asociados a cada nivel. A través del archivo /etc/inittab, init sabe qué nivel de ejecución se debe iniciar por defecto y qué servicios deben ejecutarse en cada nivel. Los scripts dentro de /etc/init.d/ son los encargados de manejar la activación o desactivación de los servicios.

/etc/inittab

id:runlevels:action:process

el comando runlevel mostrara el estado en el que se encuentra el SO

Systemd ¿Qué es systemd?

systemd es el sistema de inicio más común en Linux que gestiona los servicios y recursos del sistema, denominados «unidades» (units). Cada unidad consta de un nombre, un tipo y un archivo de configuración correspondiente.

Tipos de Unidades en systemd

  1. service: Para gestionar servicios activos del sistema (pueden iniciarse, detenerse o recargarse).
  2. socket: Relacionado con sockets de archivos o redes; activa una unidad de servicio cuando se recibe una solicitud.
  3. device: Asocia unidades a dispositivos de hardware reconocidos por el núcleo del sistema.
  4. mount: Define puntos de montaje en el sistema de archivos, similar a las entradas en /etc/fstab.
  5. automount: Similar a mount, pero monta automáticamente cuando se accede al punto de montaje.
  6. target: Agrupación de otras unidades, gestionadas como una sola unidad (similar a niveles de ejecución en SysV).
  7. snapshot: Representa el estado guardado del sistema (no siempre disponible).

Comandos básicos de systemctl

systemctl es la herramienta principal para gestionar las unidades en systemd. Aquí algunos comandos comunes:

  • Iniciar una unidad: systemctl start unit.service
  • Detener una unidad: systemctl stop unit.service
  • Reiniciar una unidad: systemctl restart unit.service
  • Ver el estado de una unidad: systemctl status unit.service
  • Comprobar si está activa: systemctl is-active unit.service
  • Habilitar la unidad al iniciar: systemctl enable unit.service
  • Deshabilitar la unidad al iniciar: systemctl disable unit.service
  • Verificar si una unidad está habilitada: systemctl is-enabled unit.service

Objetivos y Niveles de Ejecución

  • Objetivos (target): Agrupan unidades para un objetivo común, como multi-user.target (equivalente al nivel de ejecución 3 en SysV).
  • Cambiar el objetivo actual: systemctl isolate multi-user.target
  • Establecer el objetivo predeterminado: systemctl set-default multi-user.target
  • Ver el objetivo predeterminado: systemctl get-default

Archivos de configuración

  • Los archivos de configuración de las unidades se encuentran en /lib/systemd/system/.
  • Para ver todas las unidades disponibles: systemctl list-unit-files.
  • Para listar unidades activas: systemctl list-units.

Gestión de energía

  • Suspender: systemctl suspend (pone el sistema en modo de bajo consumo).
  • Hibernar: systemctl hibernate (guarda el estado en disco para restaurarlo al reiniciar).

Consideraciones de configuración energética

  • Las acciones de eventos relacionados con la energía (como suspender o hibernar) se configuran en /etc/systemd/logind.conf o sus directorios correspondientes.
  • Si otro administrador de energía está presente (como acpid), podría interferir con las acciones de energía de systemd.

Resumen rápido:

  • systemd gestiona servicios y recursos del sistema mediante unidades, como service, socket y device.
  • Usamos el comando systemctl para controlar estas unidades.
  • También gestiona los objetivos del sistema, que reemplazan los antiguos niveles de ejecución.
  • systemd puede controlar eventos de energía, como suspensión y hibernación, si no hay otros servicios de energía en uso.

Este conjunto de herramientas proporciona un control eficiente y organizado sobre cómo se inicia, gestiona y detiene el sistema.

Upstart

Upstart es un sistema de inicialización utilizado en versiones anteriores de Ubuntu Linux antes de su transición a systemd en 2015. Este sistema de inicio fue diseñado para gestionar el arranque del sistema, los servicios y las tareas en segundo plano. A continuación, se resumen los puntos más importantes:

  1. Ubicación de los scripts:
    • Los scripts de inicialización de Upstart se encuentran en el directorio /etc/init/. Estos scripts son utilizados para administrar servicios y procesos en el sistema.
  2. Comando para listar servicios:
    • Se puede enumerar los servicios del sistema utilizando el comando initctl list. Este comando muestra todos los servicios gestionados por Upstart junto con su estado actual y su PID (número de identificación del proceso).
    • Ejemplo de salida de initctl list: avahi-cups-reload stop/waiting
      avahi-daemon start/running, process 1123
      mountall-net stop/waiting
      mountnfs-bootclean.sh start/running
      nmbd start/running, process 3085
  3. Gestión de servicios:
    • Iniciar un servicio: Para iniciar un servicio, como una terminal virtual, se puede usar el comando start. Por ejemplo, para iniciar la sexta terminal virtual (tty6):
      start tty6
    • Ver el estado de un servicio: El comando status muestra el estado actual de un servicio o recurso. Por ejemplo:
      status tty6
      Esto mostraría algo como:
      tty6 start/running, process 3282
    • Detener un servicio: Para detener un servicio, se utiliza el comando stop. Por ejemplo:
      stop tty6
  4. No utiliza /etc/inittab:
    • Upstart no depende del archivo /etc/inittab para definir los niveles de ejecución. En su lugar, gestiona los servicios mediante sus propios scripts y comandos.
    • A pesar de esto, algunos comandos heredados de SysV init, como runlevel y telinit, todavía pueden ser utilizados en sistemas con Upstart para verificar y alternar entre los niveles de ejecución.
  5. Transición a systemd:
    • Upstart fue principalmente desarrollado para Ubuntu Linux con el objetivo de facilitar el arranque paralelo de los procesos.
    • Ubuntu dejó de usar Upstart a partir de 2015, cuando adoptó systemd como su sistema de inicialización y gestión de servicios.

En resumen:
Upstart es un sistema de inicialización que usaba Ubuntu antes de la adopción de systemd. Se caracteriza por la gestión de servicios a través de scripts en /etc/init/, comandos como start, stop, y status, y la falta de dependencia del archivo /etc/inittab. Aunque Upstart ya no se usa en distribuciones modernas de Ubuntu, algunos comandos y conceptos pueden seguir presentes en sistemas antiguos.

RELATED POSTS

View all

view all