Capítulo 3. La inicialización del sistema

# Capítulo 3. La inicialización del sistema

Es inteligente por su parte como administrador de sistemas conocer profundamente como el sistema Debian comienza y se configura. Aunque los detalles concretos están en el código fuente de los paquetes instalados y su documentación, es un poco abrumador para la mayoría de nosotros.

Lo siguiente es una descripción general de los puntos principales de la inicialización de un sistema Debian. Dado que el sistema Debian evoluciona constantemente, debe consultar la documentación más reciente.

- El Manual del kernel de Debian Linux es la principal fuente de información sobre el kernel de Debian.

- `bootup`(7) describe el proceso de arranque del sistema basado en `systemd` . (Debian reciente)

- `boot`(7) describe el proceso de arranque del sistema basado en UNIX System V Release 4. (Older Debian)

## 3.1. Un resumen del proceso de arranque

Un sistema informático pasa por diferentes fases en el proceso de arranque desde el encendido hasta que le ofrece al usuario la funcionalidad completa del sistema operativo (SO).

Por simplicidad, limité la discusión a la de una típica plataforma PC con la instalación por defecto.

El proceso normal de arranque es como un cohete de cuatro fases. Cada fase del cohete cede el control del sistema a la siguiente.

- Sección 3.1.1, “Fase 1: UEFI”

- Sección 3.1.2, “Fase 2: el cargador de arranque”

- Sección 3.1.3, “Fase 3: el sistema mini-Debian”

- Sección 3.1.4, “Fase 4: el sistema normal Debian”

Desde luego, esto puede ser configurado de otra manera. Por ejemplo, si compila su propio núcleo, puede saltar el paso del sistema mini-Debian. Así que, por favor, no asuma cuál es el caso de su sistema hasta que no lo compruebe por si mismo.

### 3.1.1. Fase 1: UEFI

La Interfaz del firmware extensible unificada (UEFI) define un administrador de arranque como parte de la especificación UEFI. Cuando se enciende un ordenador, el administrador de inicio es la primera etapa del proceso de inicio que verifica la configuración de inicio y, según su configuración, luego ejecuta el cargador de inicio del sistema operativo o el kernel del sistema operativo especificado (generalmente el cargador de inicio). La configuración de arranque está definida por variables almacenadas en la NVRAM, incluidas las variables que indican las rutas del sistema de archivos a los cargadores o kernels del sistema operativo.

Una partición de sistema EFI (ESP) es una partición de dispositivo de almacenamiento de datos que se usa en ordenadores que se adhieren a la especificación UEFI. Accedido por el firmware UEFI cuando se enciende un ordeandor, almacena aplicaciones UEFI y los archivos que estas aplicaciones necesitan para ejecutarse, incluidos los cargadores de arranque del sistema operativo. (En el sistema de PC heredado, se puede usar la BIOS almacenada en el MBR)

### 3.1.2. Fase 2: el cargador de arranque

El cargador de arranque es la segunda fase del proceso de arranque que comienza con la UEFI. Carga la imagen del núcleo del sistema y la imagen de initrd en memoria y pasa el control a estos. La imagen de initrd es la imagen del sistema de archivos raíz y su compatibilidad depende del cargador usado.

El sistema Debian normalmente usa el kernel Linux como el kernel del sistema predeterminado. La imagen initrd para el kernel Linux 5.x actual es técnicamente la imagen initramfs (sistema de archivos RAM inicial).

Hay disponibles muchos cargadores de arranque y opciones de configuración.

Tabla 3.1. Relación de cargadores de arranque

paquete | popularidad | tamaño | initrd | cargador de arranque | descripción
--- | --- | --- | --- | --- | ---
grub-efi-amd64 | I:436 | 142 | Soporte | GRUB UEFI | Esto es lo bastante inteligente como para comprender las particiones de disco y los sistemas de archivos como vfat, ext4, …. (UEFI)
grub-pc | V:16, I:539 | 479 | Soporte | GRUB 2 | Es lo bastante inteligente para comprender las particiones de disco y los sistemas de archivos como vfat, ext4, …. (BIOS)
grub-rescue-pc | V:0, I:0 | 7323 | Soporte | GRUB 2 | Imagen de rescate de inicio GRUB 2 (CD and disquete) (versión PC/BIOS)
grml-rescueboot | V:0, I:1 | 36 | N/A | GRUB 2 plug-in | grml-rescueboot adds live Linux ISO images to the grub2 boot menu
syslinux | V:2, I:31 | 325 | Soporte | Isolinux | Entiende el sistema de archivos ISO9660. Es usado por arranque de CD.
syslinux | V:2, I:31 | 325 | Soporte | Syslinux | Entiende el sistema de archivos MSDOS (FAT). Es usado para el arranque de disquete.
loadlin | V:0, I:0 | 87 | Soporte | Loadlin | Nuevo sistema para el arranque del sistema FreeDOS/MSDOS.
mbr | V:0, I:3 | 47 | No soportado | MBR por Neil Turton | Este el software libre que sustituye MBR de MSDOS. Solo comprende particiones de disco.

Para el sistema UEFI, GRUB2 primero lee la partición ESP y usa el UUID especificado para `search.fs_uuid` en "`/boot/efi/EFI/debian/grub.cfg`" para determinar el partición del archivo de configuración del menú GRUB2 "`/boot/grub/grub.cfg`".

Las secciones clave del archivo de configuración del menú de GRUB2 se ven así:

    menuentry 'Debian GNU/Linux' ... {
            load_video
            insmod gzio
            insmod part_gpt
            insmod ext2
            search --no-floppy --fs-uuid --set=root fe3e1db5-6454-46d6-a14c-071208ebe4b1
            echo    'Loading Linux 5.10.0-6-amd64 ...'
            linux   /boot/vmlinuz-5.10.0-6-amd64 root=UUID=fe3e1db5-6454-46d6-a14c-071208ebe4b1 ro quiet
            echo    'Loading initial ramdisk ...'
            initrd  /boot/initrd.img-5.10.0-6-amd64
    }

Para esta parte de `/boot/grub/grub.cfg`, esta entrada de menú significa lo siguiente.

Tabla 3.2. El significado de la entrada del menú de la parte anterior de `/boot/grub/grub.cfg`

configuración | valor
--- | ---
Módulos GRUB2 cargados | `gzio`, `part_gpt`, `ext2`
usada la partición del sistema de archivos raíz | partición identificada por `UUID=fe3e1db5-6454-46d6-a14c-071208ebe4b1`
ruta de la imagen del núcleo en el sistema de archivos raíz | `/boot/vmlinuz-5.10.0-6-amd64`
parámetro de arranque del núcleo utilizado | "`root=UUID=fe3e1db5-6454-46d6-a14c-071208ebe4b1 ro quiet`"
ruta de la imagen initrd en el sistema de archivos raíz | `/boot/initrd.img-5.10.0-6-amd64`

On Debian system, "`/boot/grub/grub.cfg`" is managed by the installed GRUB package (e.g. `grub-efi-amd64`) and direct user modification to this file is deprecated. You should customize configuration files in "`/etc/grub.d/`" and "`/etc/default/grub`", instead. Then configure the GRUB configuration files and update NVRAM variables to automatically boot into Debian by:

    # dpkg-reconfigure grub-efi-amd64

| Sugerencia
You can show kernel boot log messages by removing "`quiet`" from the "`GRUB_CMDLINE_LINUX_DEFAULT`" value in "`/etc/default/grub`".

| Sugerencia
You can add GRUB splash background by placing its image file in "`/boot/grub/`".

See "`info grub`", `grub-install`(8), `grub-mkconfig`(8).

### 3.1.3. Fase 3: el sistema mini-Debian

El sistema mini-Debian es la fase 3 del proceso de arranque que comienza con el cargador de arranque. Este ejecuta el núcleo del sistema con el sistema de archivos raíz en memoria. Esta es una fase preparatoria opcional del proceso de arranque.

| Nota
En este documento el término «el sistema mini-Debian« es como el autor describe la tercera fase del proceso de arranque. El sistema se conoce como initrd o sistema initramfs. El instalador de Debian usa un sistema parecido en memoria.

El primer programa que se ejecuta en el sistema de archivo raíz en memoria es `/init`». Es un programa que inicia el núcleo en el espacio de usuario y entrega el control para la próxima fase. Este sistema mini-Debian ofrece flexibilidad al módulo al proceso de arranque, como agregar módulos del núcleo antes de que el proceso principal de arranque o el montaje de un sistema de archivos raíz cifrado.

- El programa `/init`es una secuencia de códigos si initramfs ha sido creado por `initramfs-tools`.

  - Puede interrumpir esta parte del proceso de arranque para obtener un intérprete de órdenes de supuerusuario dándole al arranque del núcleo el parámetro «`break=init`» etc. Consulte el archivo de órdenes `/init`» para conocer más formas de interacción. Este entorno del intérprete de órdenes es suficientemente complejo para realizar una reconocimiento avanzado del hardware de su equipo.

  - Las órdenes disponibles en este sistema mini-Debian son básicas y las funciones principales las aporta la herramienta GNU llamada `busybox`(1).

- El programa `/init` es un programa binario `systemd` si initramfs fue creado por `dracut`.

  - Los comandos disponibles en este sistema mini-Debian son básicamente el ambiente `systemd`(1).

| Atención
Necesita utilizar el parámetro «`-n`» en la orden `mount` cuando interaccione con el sistema de solo lectura del sistema de archivos raíz.

### 3.1.4. Fase 4: el sistema normal Debian

The normal Debian system is the 4th stage of the boot process which is started by the mini-Debian system. The system kernel for the mini-Debian system continues to run in this environment. The root filesystem is switched from the one on the memory to the one on the physical storage device.

El programa init se ejecuta en primer lugar con el PID=1 preparando el proceso de arranque principal para el comienzo de muchos programas. La ruta de archivo por defecto para el programa init es «`/usr/sbin/init`» pero se puede modificar por un parámetro de arranque del núcleo como «`init=/path/to/init_program`».

"`/usr/sbin/init`" tiene un enlace simbólico a "`/lib/systemd/systemd`" después de Debian 8 Jessie (lanzado en 2015).

| Sugerencia
Puede comprobar cual es el sistema init real que usa su equipo mediante la orden «`ps --pid 1 -f`».

Tabla 3.3. Relación de sistemas de arranque en el sistema Debian

paquete | popularidad | tamaño | descripción
--- | --- | --- | ---
`systemd` | V:903, I:978 | 10639 | Demonio `init`(8) basado en actos con concurrencia (opción a `sysvinit`)
`cloud-init` | V:3, I:6 | 3231 | sistema de inicialización para instancias de la infraestructura en la nube
`systemd-sysv` | V:892, I:979 | 94 | las páginas de manual y los enlaces necesarios para que `systemd` reemplace a `sysvinit`
`init-system-helpers` | V:906, I:985 | 133 | herramientas de ayuda para cambiar entre `sysvinit` y `systemd`
`initscripts` | V:17, I:69 | 203 | archivos de órdenes de inicio y parada del sistema
`sysvinit-core` | V:3, I:3 | 369 | Programa estilo System-V `init`(8)
`sysv-rc` | V:35, I:73 | 91 | Mecanismo de cambio del nivel de ejecución estilo System-V
`sysvinit-utils` | V:715, I:999 | 106 | Programas estilo System-V (`startpar`(8), `bootlogd`(8), …)
`lsb-base` | V:250, I:363 | 12 | Funcionalidad de secuencia de órdenes «Linux Standard Base« init 3.2
`insserv` | V:41, I:73 | 132 | herramientas para organizar la secuencia de arranque usando las dependencias del archivo de órdenes init.d LSB
`kexec-tools` | V:1, I:5 | 320 | Reinicio (reinicio caliente) `kexec`(8) de la herramienta kexec
`systemd-bootchart` | V:0, I:0 | 131 | analizador de desempeño del proceso de arranque
`mingetty` | V:0, I:2 | 36 | únicamente para consola `getty`(8)
`mgetty` | V:0, I:0 | 315 | sustituto de «modem« inteligente `getty`(8)

| Sugerencia
Ver la wiki de Debian : AcelerandoElProcesodeArranque para los consejos actualizados para mejorar la velocidad del proceso de arranque.

## 3.2. Rescue system

| Aviso
Do not perform system administration tasks around the boot strap process without having a rescue system.

Availability of a rescue system enables us to perform challenging tasks such as:

- Booting a system from a broken boot loader installation
- Fixing a broken boot loader installation
- Extracting data from a broken unbootable system
- Editing filesystems, disk partitions, and LVM volumes involving the root filesystem

Typically, a rescue system is provided as a ISO image file and written to a removable storage media such as:

- USB flash drive prepared as Sección 9.7.2, “Escribiendo directamente en el disco”

- CD / DVD prepared as Sección 9.7.7, “Escritura directa al CD/DVD-R/RW”

For simplicity, USB flash drive cases are mentioned as examples below but CD or DVD may be used as well.

| Sugerencia
You may need to change some UEFI NVRAM variables to boot arbitrary boot loaders on the removable storage media.

### 3.2.1. GRUB UEFI rescue system on USB

The GRUB UEFI rescue system with menu can be started by turning on system power with the "GRUB UEFI rescue system on USB" inserted.

This "GRUB UEFI rescue system on USB" is prepared by writing the Super Grub2 Disk ISO image to USB flash drive in advance.

In case of broken boot loader configuration by the installation of another operating system etc., you can fix this by:

- Start the GRUB UEFI rescue system to discover bootable installed systems automatically.

- Start the installed Debian system from the GRUB menu.

- At Linux root shell prompt:

      # dpkg-reconfigure grub-efi-amd64

| Nota
The bootable GRUB rescue ISO image can be generated by following "`info grub-mkrescue`", too. It offers a CLI GRUB shell prompt but doesn't offer automatic discovery of bootable installed systems.

### 3.2.2. Linux live rescue system on USB

The Linux live rescue system can be started by turning on system power with the "Linux live rescue system on USB" inserted.

This "Linux live rescue system on USB" can be prepared by writing one of Linux live ISO images based on Debian to a USB flash drive in advance. Here are some examples of such Linux live images.

- Debian Live images

- Kali Linux Live

- Grml Live Linux

Here are some use cases of this Linux live rescue system:

- Fix the broken boot loader configuration caused by the installation of another operating system etc.:

  - Start the Linux live rescue system.

  - Mount the partition containing the root filesystem of the unbootable installed Debian system to "`/mnt`".

  - At Linux root shell prompt:

        # chroot /mnt dpkg-reconfigure grub-efi-amd64

- Fix the broken `dpkg` package:

  - Start the Linux live rescue system.

  - Mount the partition containing the root filesystem of the installed Debian system with the broken `dpkg` package to "`/mnt`".

  - At Linux root shell prompt:

        # dpkg --root /mnt -i /mnt/var/cache/apt/archives/dpkg_old_version_amd64.deb

- Perform normally prohibited changes such as filesystem operations to the installed system (see Sección 9.6, “Trucos del almacenamiento de datos”).

| Aviso
Your GUI screen of the Linux live system may be locked after the inactivity.

| Sugerencia

- It's a good idea to set your password as soon as you start a Linux live system.

- You may set your password for example by "`sudo passwd user`" from the user's shell prompt on the Linux virtual consoles (see Sección 1.1.6, “Consolas virtuales”).

- Some Linux live systems may set their default "user/password": "Debian Live" = "user/live", "Kali Linux Live" = "kali/kali"

### 3.2.3. Linux live rescue system from GRUB

The Linux live rescue system can be started from the GRUB menu entry. The GRUB configuration for this is prepared by the following:

- Install the `gmrl-rescueboot` package

- Find a Linux live ISO image which has "`/boot/grub/loopback.cfg`" in its image.

  - ISO images mentioned in Sección 3.2.2, “Linux live rescue system on USB” have "`/boot/grub/loopback.cfg`" in their image.

- Copy some of these Linux live ISO images to the "`/boot/grml/`" directory.

- Update GRUB menu by:

      # dpkg-reconfigure grub-efi-amd64

Upon turning on system power, the GRUB displays menu with candidates for Linux live rescue systems.

## 3.3. Systemd

### 3.3.1. Arranque de systemd

Cuando se inicia el sistema Debian, `/usr/sbin/init` enlazado a `/usr/lib/systemd` se inicia como el proceso init del sistema (`PID=1`) propiedad de root (`UID=0`). Ver `systemd`(1).

El proceso de inicio de `systemd` genera procesos en paralelo en función de los archivos de configuración de la unidad (ver `systemd.unit`(5)) que están escritos en estilo declarativo en lugar de un estilo de procedimiento similar a SysV .

Los procesos generados se colocan en grupos de control de Linux individuales con el nombre de la unidad a la que pertenecen en la jerarquía privada de systemd (ver cgroups y Sección 4.7.5, “Características de seguridad de Linux”).

Las unidades para el modo sistema se cargan desde la "Ruta de la búsqueda de las unidades del sistema" descrita en `systemd.unit`(5). Las principales por prioridad son las siguientes:

- "`/etc/systemd/system/*`": Unidades del sistema creadas por el administrador

- "`/run/systemd/system/*`": Unidades de tiempo de ejecución

- "`/lib/systemd/system/*`": Unidades del sistema instaladas por el gestor de paquetes de la distribución

Las interdependencias se describen mediante directivas «`Wants=`», «`Requires=`», «`Before=`», «`After=`», … (ver "MAPPING OF UNIT PROPERTIES TO THEIR INVERSES" en `systemd.unit`(5)). El control de recursos también se define (ver `systemd.resource-control`(5)).

El sufijo del archivo de configuración de la unidad codifica sus tipos como:

- *.service describe el proceso que está controlado y supervisado por `systemd`. Consulte `systemd.service`(5).

- *.device describe el dispositivo utilizado por `sysfs`(5) como el árbol de dispositivos `udev`(7). Consulte `systemd.device`(5).

- *.mount describe el punto de montaje del sistema de archivos que está controlado y supervisado por `systemd`. Consulte `systemd.mount`(5).

- *.automount describe puntos de automontaje de sistemas de archivos que están controlados y supervisados por `systemd`. Consulte `systemd.automount`(5).

- *.swap describe dispositivos o archivos de intercambio controlado y supervisado por `systemd`. Ver `systemd.swap`(5).

- *.path describe rutas supervisadas por `systemd` para la activación basada en la ruta. Consulte `systemd.path`(5).

- *.socket describe conexiones controladas y supervisadas por `systemd` para la activación basada en conexiones. Consulte `systemd.socket`(5).

- *.timer describe el temporizador controlado y supervisado por `systemd` para la activación en función de temporizadores. Consulte `systemd.timer`(5).

- *.slice gestiona recursos mediante `cgroups`(7). Consulte `systemd.slice`(5).

- *.scope se crean de forma programada utilizando los interfaces del bus de `systemd` para gestionar un conjunto de procesos del sistema. Ver `systemd.scope`(5).

- Los grupos *.target y otros archivos de configuración de unit se usan para crear puntos de sincronización durante el arranque. Consulte `systemd.target`(5).

Tras el arranque del sistema (esencialmente init), el proceso `systemd` intenta iniciar `/lib/systemd/system/default.target` (normalmente enlazado simbólicamente a "`graphical.target`". Primero, algunas unidades objetivo especiales (ver `systemd.special`(7) como "`local-fs.target`", "`swap.target`" y "`cryptsetup.target`" son llamadas a montar el sistema de archivos. Luego, otras unidades objetivo son llamadas por las dependencias de la unidad objetivo. Para más detalles, lea `bootup`(7).

`Systemd` ofrece características de compatibilidad con versiones anteriores. Los archivos de órdenes de inicio de estilo SysV en «`/etc/init.d/rc[0123456S].d/[KS]< name`» son también analizados y `telinit`(8) se traducen a peticiones de activación de systemd.

| Atención
Los niveles de inicio emulados del dos al cuatro son enlaces simbólicos al mismo «`multi-user.target`».

### 3.3.2. Inicio de sesión en Systemd

Cuando un usuario se conecta al sistema Debian a través de `gdm3`(8), `sshd`(8), etc., `/lib/systemd/system --user` se inicia como el proceso de gestor de servicios del usuario propiedad del usuario correspondiente. Ver `systemd`(1).

El proceso de gestor de servicios del usuario `systemd` genera procesos en paralelo basándose en los archivos declarativos de la configuración de unidades (ver `systemd.unit`(5) y `user@.service`(5)).

Las unidades para el modo de usuario se cargan desde la "Ruta de búsqueda de unidades del usuario" descrita en `systemd.unit`(5). Las principales son las siguientes en orden de prioridad:

- "`~/.config/systemd/user/*`": Unidades de configuración del usuario

- "`/etc/systemd/user/*`": Unidades de usuario creadas por el administrador

- "`/run/systemd/user/*`": Unidades de tiempo de ejecución

- "`/lib/systemd/user/*`": Unidades del usuario instaladas por el gestor de paquetes de la distribución

Se gestionan del mismo modo que Sección 3.3.1, “Arranque de systemd”.

## 3.4. Los mensajes del núcleo

El mensaje de error que se muestra en la consola se determina mediante la configuración de su nivel de umbral.

    # dmesg -n3

Tabla 3.4. Lista de niveles de error del núcleo

valor del nivel de error | nombre del nivel de error | significado
--- | --- | ---
0 | KERN_EMERG | sistema no usable
1 | KERN_ALERT | se deben tomar medidas de forma inmediata
2 | KERN_CRIT | estado crítico
3 | KERN_ERR | estado de error
4 | KERN_WARNING | estado de aviso
5 | KERN_NOTICE | estado normal pero significativo
6 | KERN_INFO | información
7 | KERN_DEBUG | mensajes de depuración

## 3.5. El sistema de mensajes

En `systemd`, se registran diariamente tanto los mensajes del núcleo como los del sistema por el servicio `systemd-journald.service` (también conocido como `journald`) ya sea en un archivo binario persistente debajo de "`/var/log/journal`" o en datos binarios volátiles debajo de "`/run/log/journal/`". Se accede a estos datos de registro binario mediante el comando `journalctl`(1). Por ejemplo, puede mostrar el registro desde el último arranque como:

    $ journalctl -b

Tabla 3.5. Lista de fragmentos de comando típicos de `journalctl`

Operación | nombre de la orden,
--- | ---
Ver el registro de los servicios del sistema y el kernel desde el último arranque | "`journalctl -b --system`"
Ver el registro de los servicios del usuario actual desde el último arranque | "`journalctl -b --user`"
Ver el registro de las tareas de "`$unit`" del último arranque | "`journalctl -b -u $unit`"
Ver el registro de trabajos de "`$unit`" (estilo "`tail -f`") desde el último arranque. | "`journalctl -b -u $unit -f`"

En `systemd`, la utilidad de registro del sistema `rsyslogd`(8) puede estar desinstalada. Si está instalada, cambia su comportamiento para leer los datos de registro binarios volátiles (en lugar del valor predeterminado anterior al sistema "`/dev/log`") y para crear datos de registro permanentes tradicionales del sistema ASCII. Esto se puede personalizar mediante "`/etc/default/rsyslog`" y "`/etc/rsyslog.conf`" tanto para el archivo de registro como para la visualización en pantalla. Ver `rsyslogd`(8) y `rsyslog.conf`(5). Ver también Sección 9.3.2, “Analizador de registros”.

## 3.6. Gestión del sistema

`systemd` ofrece no solo init system sino también operaciones genéricas de administración del sistema con el comando `systemctl`(1).

Tabla 3.6. Lista de típicos snippets de comandos `systemctl`

Operación | nombre de la orden,
--- | ---
Lista de todos los tipos de unidades disponibles | "`systemctl list-units --type=help`"
Lista de todas las unidades de destino en memoria | "`systemctl list-units --type=target`"
Lista de todas las unidades de servicio en memoria | "`systemctl list-units --type=service`"
Listar todas las unidades de dispositivo en memoria | "`systemctl list-units --type=device`"
Listar todas las unidades de montaje en memoria | "`systemctl list-units --type=mount`"
Listar todas las unidades socket en memoria | "`systemctl list-sockets`"
Listar todas las unidades de temporizador en memoria | "`systemctl list-timers`"
Iniciar "`$unit`" | "`systemctl start $unit`"
Detener "`$unit`" | "`systemctl stop $unit`"
Recargar la configuración específica del servicio | "`systemctl reload $unit`"
Parar y arrancar todo "`$unit`" | "`systemctl restart $unit`"
Iniciar "`$unit`" y detener todas las demás | "`systemctl isolate $unit`"
cambiar a "`graphical`" (sistema de interfaz gráfica) | "`systemctl isolate graphical`"
Cambiar a "`multiusuario`" (sistema de línea de comandos) | "`systemctl isolate multi-user`"
Cambiar a "`rescate`" (sistema CLI de usuario único) | "`systemctl isolate rescue`"
Enviar kill a "`$unit`" | "`systemctl kill $unit`"
Ver si el servicio "`$unit`" está activado | "`systemctl is-active $unit`"
Ver si el servicio "`$unit`" ha fallado | "`systemctl is-failed $unit`"
Comprobar el estado de "`$unit|$PID|device`" | "`systemctl status $unit|$PID|$device`"
Mostrar las propiedades de"`$unit|$job`" | "`systemctl show $unit|$job`"
Fallo en el reset "`$unit`" | "`systemctl reset-failed $unit"`
Listar la dependencia de todos los servicios de la unidad | "`systemctl list-dependencies --all`"
Lista de archivos de unidad instalados en el sistema | "`systemctl list-unit-files`"
Habilitar "`$unit`" (añadir symlink) | "`systemctl enable $unit`"
Desactivar "`$unit`" (eliminar enlace simbólico) | "`systemctl disable $unit`"
desbloquear "`$unit`" (eliminar el enlace simbólico a "`/dev/null`") | "`systemctl unmask $unit`"
Máscara "`$unidad`" (enlace simbólico agregado a "`/dev/null`") | "`systemctl mask $unit`"
Obtener la configuración del destino predeterminado | "`systemctl get-default`"
Establece el objetivo predeterminado en "`graphical`" (sistema gráfico) | "`systemctl set-default graphical`"
Establece el objetivo predeterminado en "`multiusuario`" (sistema CLI) | "`systemctl set-default multi-user`"
Mostrar el entorno de trabajo | "`systemctl show-environment`"
Establecer entorno de trabajo "`variable`" a "`value`" | "`systemctl set-environment variable=value`"
Entorno de trabajo no fijado en"`variable`" | "`systemctl unset-environment variable`"
Recargar todos los archivos de unidades y demonios | "`systemctl daemon-reload`"
Apagar el sistema | "`systemctl poweroff`"
Apagar y reinicio del sistema | "`systemctl reboot`"
Suspender el sistema | "`systemctl suspend`"
Hibernar el sistema | "`systemctl hibernate`"

Aquí, "`$unit`" en los ejemplos anteriores puede que sea solo nombre de unidad (los sufijos como `.service` y `.target` son opcionales) o , en muchos casos, especificaciones de unidades múltiples (shell-style globs "`*`", "`?`", "`[]`" usando `fnmatch`(3) que se comparará con los nombres principales de todas las unidades actualmente en memoria).

Los comandos de cambio de estado del sistema en los ejemplos anteriores suelen estar precedidos por "`sudo`" para tener el privilegio administrativo necesario.

La salida de "`systemctl status $unit|$PID|$device`" usa puntos de colores ("●") para resumir el estado de la unidad de un vistazo.

- Un "●" blanco indica un estado "inactivo" o en estado de "desactivación".

- Un "●" rojo indica un estado de "fallo" o "error".

- Un "●" verde indica el estado "Activo", "Recargando" o "Activando".

## 3.7. Otros monitores del sistema

Aquí hay una lista de otros comandos de monitoreo impares bajo `systemd`. Lee las páginas más relevantes, incluidas `cgroups`(7).

Tabla 3.7. Lista de otros fragmentos de comandos de supervisión en `systemd`

Operación | nombre de la orden,
--- | ---
Mostrar el tiempo dedicado a cada paso de la inicialización | "`systemd-analyze time`"
Lista de todas las unidades en el momento de inicializar | "`systemd-analyze blame`"
Cargar y detectar errores en el archivo "`$unit`" | "`systemd-analyze verify $unit`"
Mostrar breve información del estado de tiempo de ejecución del usuario que llama | "`loginctl user-status`"
Mostrar breve información del estado de tiempo de ejecución del usuario que llama | "`loginctl session-status`"
Seguimiento del proceso de arranque por el cgroups | "`systemd-cgls`"
Seguimiento del proceso de arranque por el cgroups | "`ps xawf -eo pid,user,cgroup,args`"
Seguimiento del proceso de arranque por el cgroups | Leer sysfs bajo "`/sys/fs/cgroup/`"

## 3.8. Configuración del sistema

### 3.8.1. El nombre del equipo (hostname)

El núcleo mantiene el nombre de host del sistema . La unidad del sistema iniciada por `systemd-hostnamed.service` establece el nombre de host del sistema en el momento del arranque con el nombre almacenado en " `/etc/hostname` ". Este archivo debe contener solo el nombre de host del sistema, no un nombre de dominio completo.

Para obtener el nombre del equipo actual ejecute `hostname`(1) sin ningún parámetro.

### 3.8.2. El sistema de archivos

Las opciones de montaje de discos normales y de sistemas de archivos en red se configuran en «`/etc/fstab`». Ver `fstab`(5) y Sección 9.6.7, “Optimización de los sistemas de archivos a través de las opciones de montaje”.

Los sistemas de archivos cifrados se configuran en «`/etc/crypttab`». Ver `crypttab`(5)

La configuración de RAID mediante software con `mdadm`(8) está en «`/etc/mdadm/mdadm.conf`». Ver `mdadm.conf`(5).

| Aviso
Una vez montados todos los sistemas de archivos , los archivos temporales en «`/tmp`», «`/var/lock`» y «`/var/run`» se borran en cada inicio.

### 3.8.3. Inicialización del interfaz de red

Comunmente el interfaz `lo` se inicializa mediante «`networking.service`» y el resto de interfaces de un sistema de escritorio moderno Debian que use `systemd` mediante «`NetworkManager.service`».

Para configurarlos consulte Capítulo 5, Configuración de red.

### 3.8.4. Inicialización del sistema en la nube

La instancia del sistema en la nube puede lanzarse como un clon de "Imágenes oficiales de la nube de Debian" o imágenes similares. Para dicha instancia del sistema, personalidades como el nombre de host, el sistema de archivos, la red, la configuración regional, las claves SSH, los usuarios y los grupos pueden configurarse utilizando funcionalidades proporcionadas por los paquetes `cloud-init` y `netplan.io` con múltiples fuentes de datos como archivos colocados en la imagen original del sistema y datos externos proporcionados durante su lanzamiento. Estos paquetes permiten la configuración declarativa del sistema utilizando datos YAML.

Más información en "Computación en nube con Debian y sus descendientes", "Documentación de Cloud-init" y Sección 5.4, “La moderna configuración de la red para la nube”.

### 3.8.5. Ejemplo de personalización para ajustar el servicio sshd

Con la instalación predeterminada, muchos servicios de red (ver Capítulo 6, Aplicaciones de red) se inician como procesos demonios después de `network.target` en el arranque por `systemd`. No es una excepción "`sshd`". Cambiemos esto a inicio bajo demanda de "`sshd`" como ejemplo de personalización.

Primero, deshabilite la unidad de servicio instalada en el sistema.

     $ sudo systemctl stop sshd.service
     $ sudo systemctl mask sshd.service

El sistema de activación de sockets bajo demanda de los clásicos servicios de Unix era a través del superservidor `inetd` (o `xinetd`). Bajo `systemd`, se puede habilitar el equivalente añadiendo *.socket y *.service archivos de configuración de la unidad.

`sshd.socket` para especificar un socket de escucha

    [Unit]
    Description=SSH Socket for Per-Connection Servers

    [Socket]
    ListenStream=22
    Accept=yes

    [Install]
    WantedBy=sockets.target

`sshd@.service` como el archivo de servicio de `sshd.socket`

    [Unit]
    Description=SSH Per-Connection Server

    [Service]
    ExecStart=-/usr/sbin/sshd -i
    StandardInput=socket

Entonces, vuelve a cargar.

     $ sudo systemctl daemon-reload

## 3.9. El sistema udev

Desde el núcleo de Linux 2.6 en adelante, udev system > aporta mecanismos automáticos de descubrimiento e inicialización (ver `udev`(7)). Después del descubrimiento de cada dispositivo por parte del núcleo, el sistema udev comienza un proceso de usuario el cual usa la información del sistema de archivos sysfs filesystem (ver Sección 1.2.12, “procfs y sysfs”), carga los módulos necesarios para el núcleo mediante el programa `modprobe`(8) (ver Sección 3.10, “La inicialización del módulo del núcleo”) y crea los nodos de dispositivo correspondientes.

| Sugerencia

Si por cualquier motivo «`/lib/modules/núcleo-version/modules.dep`» no fue generado correctamente por `depmod`(8) , los módulos no pueden ser cargados por el sistema udev como se debería. Para solucionarlo ejecute «`depmod -a`».

Para las reglas de montaje de «`/etc/fstab`», los nodos de dispositivos no necesitan nombres estáticos. Se puede usar UUID para los dispositivos montados en lugar de los nombres de los dispositivos como «`/dev/sda`». Ver Sección 9.6.3, “Acceso al particionado utilizando UUID”.

Ya que udev es un sistema en evolución, dejaré los detalles para otra documentación y se describirá de forma mínima aquí.

| Aviso
No intente ejecutar programas de larga duración como el script de copia de seguridad con `RUN` en las reglas udev como se menciona en `udev`(7). Por favor, cree un archivo `systemd.service`(5) apropiado y actívelo en su lugar. Ver Sección 10.2.3.2, “Montar la copia de seguridad activada por el acto”.

## 3.10. La inicialización del módulo del núcleo

El programa `modprobe`(8) nos permite configurar el núcleo de Linux en ejecución desde el proceso de usuario añadiendo o eliminando módulos al núcleo. El sistema udev (ver Sección 3.9, “El sistema udev”) automatiza su llamada para ayudar a la inicialización de módulos en el núcleo.

No existen módulos que no correspondan a hardware ni módulos controladores de hardware especiales como los que necesitan ser precargados al estar enumerados en el archivo «`/etc/modules`» (ver `modules`(5)).

- Los módulos TUN/TAP aportan el dispositivo virtual de red punto a punto (TUN) y el dispositivo virtual de red ethernet (TAP),

- Los módulos netfilter aportan capacidades de cortafuego (`iptables`(8), Sección 5.7, “Infraestructura Netfilter”) y

- los módulos del controlador watchdog timer.

Los archivos de configuración del programa `modprobe`(8) están ubicados en el árbol bajo el directorio «`/etc/modprobes.d/`» como se detalla en `modprobe.conf`(5). (Si quiere evitar que algunos módulos del núcleo se carguen de forma automática, inclúyalos en la lista negra que es el archivo «`/etc/modprobes.d/blacklist`».)

El archivo «`/lib/modules/version/modules.dep`» creado por el programa `depmod`(8) describe las dependencias de los módulos usados por el programa `modprobe`(8).

| Nota
Si tiene problemas en la carga de módulos cuando se inicia su carga de módulos o con `modprobe`(8), «`depmod -a`» puede solucionarlo reconstruyendo «`modules.dep`».

El programa `modinfo`(8) muestra información acerca de los módulos del núcleo de Linux.

El programa `lsmod`(8) da formato al contenido de «`/proc/modules`», mostrando los módulos del núcleo que están cargados en este momento.

| Sugerencia
Puede determinar cual es el hardware de su sistema. Ver Sección 9.5.3, “Identificación del hardware”. Puede configurar su hardware en tiempo de arranque y activar las funcionalidades del hardware conocidas. Ver Sección 9.5.4, “Configuración del hardware”. Seguramente pueda añadir soporte a sus dispositivos especiales recompilando el núcleo. Ver Sección 9.10, “El núcleo”.

Capítulo 2. Gestión de paquetes Debian |  | Capítulo 4. Autenticación y controles de acceso