Cómo determinar y solucionar problemas de arranque en Linux

Cómo determinar y solucionar problemas de arranque en Linux

El sistema de Linux es tan rápido que la mayoría de los desplazados de salida se desplazan demasiado rápido para leer el texto (que muestra los servicios que se inician) enviados a la consola. Por lo tanto, observar problemas/errores de arranque se convierte en un pequeño desafío para nosotros.

En este artículo, explicaremos brevemente las diferentes etapas en un proceso de arranque del sistema Linux, luego aprenderemos cómo establecer y llegar al fondo de los problemas de arranque: en términos archivos para buscar o comandos para ver los mensajes de arranque del sistema.

Resumen del proceso de arranque de Linux

En resumen, una vez que presionamos el Encendido botón, el Biografía (Basic Input Output System) Un programa integrado en una placa base realiza un CORREO (Poder en la auto prueba) - Donde se escanean hardware como discos, RAM (memoria de acceso aleatorio), teclado, etc. En caso de un error (hardware faltante/mal funcionamiento), se informa en la pantalla.

Durante CORREO, el Biografía También busca el dispositivo de arranque, el disco para estadurarse (generalmente el primer disco duro, sin embargo, podemos configurarlo para que sea un DVD, USB, tarjeta de red, etc.

Entonces el sistema se conectará al disco y buscará el Registro de arranque principal (512 bytes de tamaño) que almacena el cargador de arranque (446 bytes de tamaño) y el resto de la información espacial almacena información sobre particiones de disco (cuatro máximos) y el MBR en sí mismo.

Leer sugerido: 4 mejores cargadores de arranque de Linux

El cargador de arranque identificará y apuntará, así como cargará el Núcleo y el archivo initrd (disco RAM de inicialización: proporciona el acceso del núcleo al sistema de archivos raíz montado y los módulos/controladores almacenados en /lib directorio), que generalmente se almacenan en el /bota directorio del sistema de archivos.

Después de cargar el núcleo, se ejecuta init (o systemd en las distribuciones de Linux más nuevas), el primer proceso con Pid 1, que a su vez inicia todos los demás procesos en el sistema. También es el último proceso que se ejecuta en el apagado del sistema.

Cómo averiguar problemas de arranque de Linux o mensajes de error

Como mencionamos anteriormente, los procesos de arranque de Linux ocurren rápidamente que ni siquiera podemos leer claramente la mayor parte de la salida enviada a la consola.

Entonces, tomar nota de problemas/errores de arranque exige que un administrador del sistema busque ciertos archivos importantes junto con comandos particulares. Y estos incluyen:

/var/log/boot.Registro: registra mensajes de arranque del sistema

Este es probablemente el primer archivo que desea buscar, para ver todo lo que se desarrolla durante el arranque del sistema.

En lugar de esforzarse tanto de seguir la salida en la pantalla durante el arranque, podemos ver este archivo después de que el proceso de arranque se haya completado para ayudarnos a determinar y resolver problemas/errores de arranque.

Usamos el comando CAT para ese propósito de la siguiente manera (a continuación hay una muestra de este archivo):

# cat/var/log/boot.registro 
Ver registros de arranque de Linux
[OK] Comenzó el estado del interruptor de matar a RF de cargar/guardar RF. [Tiempo] Agregado Waiting Waition para el dispositivo Dev-Disk-by \ x2duuid-53E41CE9 \ X2DDC18 \ X2D458C \ X2DBC08 \ X2D584C208ED615.dispositivo. [Depender] La dependencia falló para/dev/disk/by-uuid/53E41CE9-DC18-458C-BC08-584C208ED615. [Depender] La dependencia falló para el intercambio. [OK] alcanzó la inicialización del sistema objetivo. [OK] escuchando el enchufe de activación de demonio uuid. [OK] comenzó la limpieza diaria de directorios temporales. [OK] escuchando en el programador de tazas. [OK] comenzó actividades diarias apt. [Ok] alcanzó temporizadores objetivo. [OK] escuchando en el socket de activación de la pila Avahi MDNS/DNS-SD. [OK] Comenzó el cheque de eventos ACPI. [OK] Comenzó la actualización de dispare resolvconf para NetworkD DNS. [OK] comenzó el planificador de tazas. [OK] alcanzó las rutas objetivo. [OK] escuchando en el sistema de bus de mensajes del sistema D-bus. [OK] escuchando en acpid escuchar enchufe. Iniciar el registro de inicio del sistema de la consola ... [OK] escuchando en el socket de servicio web de la cabina. [Ok] alcanzó los enchufes objetivo. [OK] alcanzó el sistema básico de destino. Inicio de LSB: Establezca el gobernador de escala de frecuencia de la CPU en "Ondemand" ... [OK] comenzó el evento ACPI Daemon. [OK] comenzó MintSystem.servicio. Comenzar detectar las GPU disponibles y tratar cualquier cambio de sistema ... Inicio de LSB: Daemon para equilibrar las interrupciones para los sistemas SMP ... Inicio del servicio Bluetooth ... [OK] Comenzó el actualizador de la base de datos de Clamav Virus. Inicio de LSB: Inicia syslogd ... [OK] Comenzó el Procesamiento de fondo de fondo regular Daemon. Iniciar Administrador de módem ... Servicio de cuentas de inicio .. 

De la salida anterior, podemos ver que hay problemas de arranque indicados en las líneas a continuación.

[Depender] La dependencia falló para/dev/disk/by-uuid/53E41CE9-DC18-458C-BC08-584C208ED615. [Depender] La dependencia falló para el intercambio. 

Asunto: Problema con la partición de intercambio; El sistema no pudo leer el archivo/dispositivo/partición de intercambio o no está presente.

Verifiquemos si el sistema está usando espacio de intercambio con comando gratuito.

# gratis Total usado Buff/caché compartido gratuito MEM: 3742792 2421060 433696 287376 888036 967000 Swap: 0 0 0 

Alternativamente, podemos ejecutar el comando swapon Para ver el resumen del uso del espacio de intercambio del sistema (no obtendremos ninguna salida).

# Swapon -S 

Podemos resolver este problema, creando un espacio de intercambio en Linux.

Nota: El contenido de este archivo se borra al apagado del sistema: los nuevos datos se almacenan en él en un nuevo arranque.

/var/log/mensajes - registros generales del sistema

Este archivo almacena mensajes generales del sistema, incluidos los mensajes que se registran durante el arranque del sistema.

Para verlo, escriba:

# cat/var/log/mensajes 
Ver mensajes de registro del sistema
4 de junio 13:04:44 Tecmint syslogd (GNU inetutils 1.9.4): Reiniciar 4 de junio 13:19:55 Tecmint - Mark - 4 de junio 13:39:55 Tecmint - Mark - 4 de junio 13:59:55 Tecmint - Mark - 4 de junio 14:19:55 Tecmint - Mark - 4 de junio 14:20:17 Tecmint Vmunix: [4945.388740] I915 0000: 00: 02.0: Bar 6: [??? 0x00000000 Flags 0x2] tiene una alineación falsa 4 de junio 14:20:17 Tecmint Vmunix: [4945.388837] I915 0000: 00: 02.0: Bar 6: [??? 0x00000000 Flags 0x2] tiene una alineación falsa 4 de junio 14:20:17 Tecmint Vmunix: [4945.388903] I915 0000: 00: 02.0: Bar 6: [??? 0x00000000 Flags 0x2] tiene una alineación falsa 4 de junio 14:20:17 Tecmint Vmunix: [4945.388930] I915 0000: 00: 02.0: Bar 6: [??? 0x00000000 Flags 0x2] tiene una alineación falsa 4 de junio 14:20:17 Tecmint Vmunix: [4945.389334] I915 0000: 00: 02.0: Bar 6: [??? 0x00000000 Flags 0x2] tiene una alineación falsa 4 de junio 14:20:17 Tecmint Vmunix: [4945.389402] PCIPEPORT 0000: 00: 1C.0: Bar 15: Asignado [MEM 0xdfa00000-0xdfbfffff 64bit pref] .. 

Debido a que este archivo puede ser relativamente largo, podemos verlo en páginas, use el más comando (que incluso muestra un porcentaje) como este.

# más/var/log/mensajes 

Los contenidos de /var/log/mensajes A diferencia del archivo anterior, no se borra el cierre porque no solo contiene mensajes de arranque, sino también mensajes relacionados con otras actividades del sistema. Por lo tanto, los archivos más antiguos se comprimen y se mantienen en el sistema para una inspección posterior como se muestra a continuación.

# Mensaje LS -L* -RW-R-R-- 1 Root Root 1206127 Jun 10 14:20 Mensajes -RW-R-R-- 1 Root Root 1419494 Jun 4 13:00 Mensajes.1 -rw-r-r-- 1 raíz raíz 153011 28 de mayo 09:30 mensajes.2.GZ 

DMESG - Muestra mensajes de kernel

El comando DMESG puede mostrar operaciones una vez que el proceso de arranque se ha completado, como las opciones de línea de comandos pasadas al núcleo; Componentes de hardware detectados, eventos cuando se agrega un nuevo dispositivo USB, o errores como la falla de NIC (tarjeta de interfaz de red) y los controladores informan que no hay actividad de enlace detectada en la red y mucho más.

# dmesg 
Mostrar mensajes de núcleo
[0.000000] Inicialización de cgroup subsys cpuset [0.000000] Inicialización de la CPU de cgroup subsys [0.000000] Inicialización de CGROUP Subsys CPUACCT [0.000000] Linux versión 4.4.0-21-Generic ([correo electrónico protegido]) (GCC versión 5.3.1 20160413 (Ubuntu 5.3.1-14ubuntu2)) #37-UBUNTU SMP Mon 18 de abril 18:33:37 UTC 2016 (Ubuntu 4.4.0-21.37-Genérico 4.4.6) [0.000000] Línea de comando: boot_image =/boot/vmlinuz-4.4.0-21 Root-Genérica = UUID = 57B36D48-1938-43C2-BF85-E97BC9F423EA RO Splash Quiet Splash [0.000000] CPU Kernel compatible con el núcleo: [0.000000] Intel GenuineIntel [0.000000] AMD Authenticamd [0.000000] Centauro Centaurhauls [0.000000] x86/fpu: xstate_offset [2]: 576, xstate_sizes [2]: 256 [0.000000] x86/fpu: característica XSave de soporte 0x01: 'X87 Registros de puntos flotantes' [0.000000] x86/fpu: característica XSave de soporte 0x02: 'Registros de SSE' [0.000000] x86/fpu: característica XSave de soporte 0x04: 'Registros AVX' [0.000000] x86/fpu: características de Xstate habilitadas 0x7, el tamaño de contexto es 832 bytes, utilizando formato 'estándar'. [0.000000] x86/fpu: Uso de interruptores de contexto de FPU 'ansiosos'. [0.000000] E820: Mapa de RAM físico proporcionado por el BIOS: [0.000000] BIOS-E820: [MEM 0x0000000000000000-0X000000000008FFFF] USABLE [0.000000] BIOS-E820: [MEM 0x0000000000090000-0X0000000000000BFFFF] Reservado [0.000000] BIOS-E820: [MEM 0x0000000000100000-0X000000001FFFFFFF] USABLE [0.000000] BIOS-E820: [MEM 0x0000000020000000-0X00000000201FFFFF] Reservado [0.000000] BIOS-E820: [MEM 0x0000000020200000-0X0000000040003FFF] USABLE [0.000000] BIOS-E820: [MEM 0x0000000040004000-0X0000000040004FFF] Reservado [0.000000] BIOS-E820: [MEM 0x0000000040005000-0X0000000080B2FFFF] USABLE [0.000000] BIOS-E820: [MEM 0x0000000080B30000-0X0000000080D31FFF] Reservado [0.000000] BIOS-E820: [MEM 0x0000000080D32000-0X00000000CE3EFFF] USABLE [0.000000] BIOS-E820: [MEM 0x00000000CE3EF000-0X0000000000CE5EFFF] TIPO 20 [0.000000] BIOS-E820: [MEM 0x00000000CE5EF000-0X0000000000DAEEFFF] Reservado [0.000000] BIOS-E820: [MEM 0x00000000DAEEF000-0X0000000000DAF9EFFF] ACPI NVS .. 

JournalCtl - Contenido de consulta de Systemd Journal

Esto es útil en la mayoría de las distribuciones de Linux actuales utilizando Systemd: el Sistema y Service Manager más nuevo. En él, el registro del sistema se realiza a través del componente del diario: una ubicación centralizada para todos los mensajes registrados por diferentes componentes.

Estos mensajes incluyen mensajes de kernel y arranque; mensajes de syslog o varios servicios. Podemos usarlo para revisar los mensajes de arranque y establecer problemas de arranque leyendo la salida e identificación de líneas de interés (errores señalados por líneas rojas dependiendo de la configuración del color del texto terminal).

# Journalctl 
Mostrar contenido de Systemd
13 de junio 16:35:32 TECMINT MTP-PROBE [963]: Comprobación del bus 2, dispositivo 5: "/sys/dispositivos/pci0000: 00/0000: 00: 1D.0/u junio de junio 16:35:32 Tecmint MTP-Probe [963]: Bus: 2, dispositivo: 5 no era un dispositivo MTP 13 de junio 16:35:54 Tecmint Systemd [1]: Dev-Disk-by \ x2Duuid -53E41CE9 \ X2DDC18 \ X2D458C \ X2DBC08 \ X2D584C208ED615. 13 de junio 16:35:54 Tecmint Systemd [1]: tiempo de espera esperando el dispositivo dev-disish-by \ x2duuid-53e41ce9 \ x2ddc18 \ x2d 13 de junio 16:35:54 TecMint Systemd [1]: dependencia fallida para /dev /dev / disco/by-uuid/53e41ce9-dc18-458c-bc08-584c2 13 de junio 16:35:54 TecMint Systemd [1]: La dependencia falló para el intercambio. 13 de junio 16:35:54 Tecmint Systemd [1]: intercambio.Objetivo: Swap de trabajo.El objetivo/inicio falló con el resultado 'Dependencia'. 13 de junio 16:35:54 Tecmint Systemd [1]: Dev-Disk-by \ x2duuid-53E41CE9 \ x2ddc18 \ x2d458c \ x2dbc08 \ x2d584c208ed615. 13 de junio 16:35:54 Tecmint Systemd [1]: Dev-Disk-by \ x2duuid-53E41CE9 \ x2ddc18 \ x2d458c \ x2dbc08 \ x2d584c208ed615. 13 de junio 16:35:54 TecMint Systemd [1]: Inicialización del sistema objetivo alcanzado. 13 de junio 16:35:54 Tecmint Systemd [1]: Comenzando los eventos ACPI. 13 de junio 16:35:54 Tecmint Systemd [1]: Escuchar en el programador de tazas. 13 de junio 16:35:54 Tecmint Systemd [1]: Iniciar sesión de inicio del sistema de consola ... 13 de junio 16:35:54 TecMint Systemd [1]: Comenzó la limpieza diaria de directorios temporales. 

Lo anterior es una muestra de la salida del comando que muestra un error que ya identificamos al ver /var/log/boot.registro: el error de partición de intercambio. Para ver más líneas de salida, simplemente presione [Ingresar] botón.

También consulte estas guías útiles sobre el arranque del sistema Linux y la gestión de servicios en relación con los gerentes de sistemas y servicios comunes:

  1. Gestión de procesos en RHEL 7: arranque, cierre y todo lo demás
  2. Administración de procesos y servicios de inicio del sistema (Sysvinit, Systemd y Upstart)
  3. La historia detrás de 'init' y 'systemd': por qué 'init' necesitaba ser reemplazada con 'systemd'

En este artículo, explicamos en resumen las diferentes etapas en el proceso de arranque del sistema Linux, así como aprendimos a establecer y posiblemente resolver problemas de arranque. Para agregar cualquier pensamiento a esta guía, use el formulario de comentarios a continuación.