Descripción general y solución de problemas del proceso de arranque CentOS 7 y RHEL 7

Este artículo describe el proceso de arranque para sistemas CentOS / RHEL 7.x. Si bien puede seguir siendo similar a las versiones anteriores, con RHEL 7, se está introduciendo systemd. Además del proceso de arranque, proporcionaré consejos y trucos para la solución de problemas en el camino.

Debe comprender el proceso de arranque antes de poder solucionar un problema activamente en el arranque. Revise los pasos a continuación hasta que esté familiarizado con el proceso.

Resumen de alto nivel

  • Poder + publicación.
  • Búsqueda de dispositivo de firmware.
  • El firmware lee el gestor de arranque.
  • El cargador de arranque carga la configuración (grub2).
  • El cargador de arranque carga kernel e initramfs.
  • El cargador de arranque pasa el control al kernel.
  • Kernel inicializa hardware + se ejecuta /sbin/initcomo pid 1.
  • Systemd ejecuta todos los objetivos initrd (monta el sistema de archivos en /sysroot).
  • Kernel root FS cambió de initramfs root ( /sysroot) a system rootfs ( /) y systemd se vuelve a ejecutar como versión del sistema.
  • Systemd busca el objetivo predeterminado e inicia / detiene las unidades configuradas mientras resuelve automáticamente las dependencias y aparece la página de inicio de sesión.

Para obtener más información sobre el proceso de arranque, consulte la documentación oficial del sistema operativo de su sistema.

Objetivos de Systemd

Los objetivos son básicamente comprobaciones de dependencia. Tienen una configuración de "antes" y "después" de exactamente qué servicios se requieren para cumplir ese objetivo. Por ejemplo: arp.ethernet.service, firewalld.servicey por lo tanto necesitan propone para ser iniciado y hábiles antes network.targetpuede ser alcanzado. Si no se alcanza, servicios tales como httpd, nfsy ldapno se puede iniciar. Hay 4 objetivos que se pueden establecer en RHEL / CentOS 7.

  • graphical.target (interfaz GUI)
  • multiusuario.target (modo multiusuario, inicio de sesión basado en texto)
  • rescue.target (aviso de sulogin, inicialización básica del sistema)
  • emergency.target (indicador de sulogin, pivote de initramfs completo y raíz del sistema montada en / solo lectura)

Para ver el objetivo de arranque predeterminado actual, use lo siguiente:

systemctl get-default

Tenga en cuenta que puede cambiar esto en tiempo de ejecución aislando el objetivo. Esto iniciará / detendrá todos los servicios asociados con el nuevo objetivo, así que tenga cuidado (vea systemctl isolate new.target).

Modo de usuario único

Hay momentos en los que necesitará arrancar en modo de usuario único para solucionar un problema con el sistema operativo. Para este ejemplo, le mostraré cómo utilizar el rescue.target"modo de usuario único" en RHEL / CentOS 7.

  1. Interrumpa el menú de grub2 presionando "e" para editar cuando se le solicite con el menú de grub.
  2. Busque la línea que especifica la versión del kernel ( vmlinuz ) y agregue lo siguiente:systemd.unit=rescue.target
  3. Presione "Ctrl + x" para comenzar.
  4. Luego se le solicitará la contraseña de root para continuar, una vez que salga del shell de rescate, el proceso de arranque continuará cargando su objetivo predeterminado.

Recuperando la contraseña de root

Este proceso es un poco diferente de lo que hemos usado en versiones anteriores, pero es una tarea simple y requiere muy pocos pasos para hacerlo. Si necesita recuperar credenciales, puede usar este método para obtener acceso a una VM. Todavía puede arrancar desde un CD en vivo, montar el sistema de archivos raíz y editar la contraseña, pero ese método está fechado y requiere más esfuerzo.

  1. Reinicia el sistema.
  2. Interrumpa el menú de grub2 presionando "e" para editar cuando se le solicite con el menú de grub.
  3. Mueva el cursor al final de la línea que especifica el núcleo ( vmlinuz ). Es posible que desee eliminar todas las otras consolas que no sean TTY0, sin embargo, este paso puede no ser necesario en su entorno.
  4. Anexar rd.break( sin comillas ) que interrumpirá el proceso de arranque justo antes de que el control se entregue desde initramfs al sistema real.
  5. Ctrl + x para arrancar.

En este punto, se presenta un shell raíz con el sistema de archivos raíz montado en modo de solo lectura activado /sysroot. Tendremos que volver a montarlo con privilegios de escritura.

Volver a montar /sysroot.

# mount -oremount,rw /sysroot

Cambia a una cárcel chroot.

# chroot /sysroot

Cambie la contraseña para el usuario en el que tenemos credenciales desactualizadas.

# passwd <username>

Si está utilizando SElinux, debería considerar volver a etiquetar todos los archivos antes de continuar con el proceso de arranque. Esta parte se puede omitir si no está utilizando SElinux.

# touch /.autorelabel

Salga dos veces y el sistema arrancará limpiamente desde el punto en que lo interrumpimos.

Revisión de registros de botas anteriores

Puede ser útil ver registros de intentos de arranque fallidos anteriores. Si los registros de journald se han hecho persistentes (normalmente almacenados en la memoria y liberados en el arranque), esto se puede hacer con la journalctlherramienta. Siga estos pasos si necesita configurar el registro de arranque persistente.

Como root, cree el archivo de registro para que esta información se almacene.

# mkdir -p 2775 /var/log/journal && chown :systemd-journal /var/log/journal
# systemctl restart systemd-journald

Para inspeccionar los registros de un arranque anterior, use la -bopción con journalctl. Sin ningún argumento, -bfiltrará la salida solo a los mensajes relacionados con el último arranque. Un número negativo para este argumento se filtrará en las botas anteriores. Por ejemplo:

# journalctl -b-1 -p err

Esto le mostrará los registros de errores del arranque que ocurrieron antes del más reciente. Debe cambiar el valor numérico para reflejar el arranque que necesita ver.

Reparación de errores de disco y sistema de archivos

Uno de los errores de tiempo de arranque más comunes es un /etc/fstabarchivo mal configurado . Usted NO puede utilizar el rescue.targetde fijar un /etc/fstaberror. La mayoría de estos problemas requerirán que usemos emergency.targetya que "rescate" requiere un sistema más funcional.

Los siguientes son ejemplos de problemas que requieren emergency.target:

  1. Sistema de archivos corrupto.
  2. UUID no existente en /etc/fstab.
  3. Punto de montaje inexistente en /etc/fstab.
  4. Opción de montaje incorrecta en /etc/fstab.

Importante : Después de editar el /etc/fstabarchivo en modo de emergencia, debe ejecutar lo siguiente para las medidas de seguridad:

# systemctl daemon-reload

Aquí hay un ejemplo de tutorial. Vamos a arrancar en modo de emergencia para eliminar una entrada falsa /etc/fstab.

  1. Interrumpa el menú de grub2 presionando "e" para editar cuando se le solicite con el menú de grub.
  2. Busque la línea que especifica la versión del kernel ( vmlinuz ) y agregue lo siguiente:systemd.unit=emergency.target
  3. Presione "Ctrl + x" para arrancar.
  4. Se le solicitará la contraseña de root para continuar.
  5. Vuelva a montar /para que podamos hacer cambios en el fstabarchivo:# mount -oremount,rw /
  6. Podemos usar el mountcomando para ver qué entrada está causando el error:# mount -a
  7. Elimine la entrada ofensiva del fstabarchivo.
  8. Úselo mount -anuevamente para asegurarse de que se haya resuelto el error.
  9. Use systemctl daemon-reloadcomo mencioné anteriormente para volver a cargar todos los archivos de la unidad y recrear todo el árbol de dependencias.

Una vez que salga del shell de emergencia, el sistema terminará de arrancar desde el objetivo de emergencia, luego podrá continuar como de costumbre desde ese punto. Este ejemplo solo se usó para mostrarle el proceso de uso del objetivo de emergencia para realizar cambios persistentes en los archivos del sistema.

Problemas del cargador de arranque con Grub 2

El /boot/grub2/grub.cfgarchivo es el archivo de configuración principal. NO edite nunca este archivo manualmente. En su lugar, use grub2-mkconfigpara generar la nueva configuración de grub2 usando un conjunto de archivos de configuración diferentes y la lista de los núcleos instalados. El grub2-mkconfigcomando buscará /etc/default/grubopciones como el tiempo de espera predeterminado del menú y la línea de comando del kernel para usar, luego usará un conjunto de scripts /etc/grub.d/para generar el archivo de configuración resultante.

Aquí hay un diagrama textual de esta relación.

/boot/grub2/grub.cfg
               |
               |__________________
               |                  |
         /etc/default/grub         /etc/grub.d/*

Importante: Para editar el archivo principal grub.cfg, deberá realizar los cambios deseados en /etc/default/gruby en los archivos /etc/grub.d/y luego crear uno nuevo grub.cfgejecutando:

# grub2-mkconfig > /boot/grub2/grub.cfg

Solución de problemas de grub

Es importante comprender la sintaxis del /boot/grub2/grub.cfgarchivo antes de solucionar problemas.

  • Primero, las entradas de arranque se codifican dentro de los bloques 'menuentry'. En estos bloques, linux16y initrd16las líneas apuntan al núcleo para ser cargados desde el disco (junto con la línea de comandos del kernel) y el initramfs para ser cargado. Durante la edición interactiva en el arranque, la pestaña se usa para encontrar estas líneas.
  • Las líneas "establecer raíz" dentro de esos bloques no apuntan al sistema de archivos raíz para el sistema RHEL / CentOS 7, sino que apuntan al sistema de archivos desde el cual grub2 debe cargar los archivos kernel e initramfs. La sintaxis es harddrive.partitiondónde hd0está el primer disco duro del sistema y hd1es el segundo. Las particiones se indican como msdos1para la primera partición MBR o gpt1para la primera partición GPT.

Ejemplo de /boot/grub2/grub.cfg:

### BEGIN /etc/grub.d/10_linux ###
menuentry 'CentOS Linux (3.10.0-514.26.2.el7.x86_64) 7 (Core)' --class centos --class gnu-linux --class gnu --class os --unrestricted $menuentry_id_option 'gnulinux-3.10.0-514.el7.x86_64-advanced-a2531d12-46f8-4a0f-8a5c-b48d6ef71275' {
    load_video
    set gfxpayload=keep
    insmod gzio
    insmod part_msdos
    insmod ext2
    set root='hd0,msdos1'
    if [ x$feature_platform_search_hint = xy ]; then
      search --no-floppy --fs-uuid --set=root --hint='hd0,msdos1'  123455ae-46f8-4a0f-8a5c-b48d6ef71275
    else
      search --no-floppy --fs-uuid --set=root 123455ae-46f8-4a0f-8a5c-b48d6ef71275
    fi

Si necesita reinstalar el gestor de arranque en un dispositivo, use el siguiente comando.

# grub2-install <device>

Arreglando una instalación de grub rota

Para los casos en que el sistema no se iniciará después de llegar al menú grub2.

  • Debería comenzar editando el menú de grub y buscando errores de sintaxis. Si encuentra uno, corríjalo y entre al sistema para hacer cambios persistentes para solucionar el problema.
  • Si no puede encontrar ningún error, consulte la sección anterior donde iniciamos en el objetivo de emergencia. Deberá volver a montar root ( /) nuevamente.
  • Vea la configuración actual de grub2 con el siguiente comando: # grub2-mkconfig
  • Si no ve ningún error, es probable que alguien haya editado el /boot/grub2/grub.cfgarchivo. No modifique este archivo. Reconstruya la configuración con el siguiente comando:# grub2-mkconfig > /boot/grub2/grub.cfg

Una vez que haya reconstruido la configuración de grub, debería poder reiniciar sin tener ningún problema.



Leave a Comment

ZPanel y Sentora en CentOS 6 x64

ZPanel y Sentora en CentOS 6 x64

ZPanel, un panel de control de alojamiento web popular, se bifurcó en 2014 a un nuevo proyecto llamado Sentora. Aprende a instalar Sentora en tu servidor con este tutorial.

Cómo instalar Vtiger CRM Open Source Edition en CentOS 7

Cómo instalar Vtiger CRM Open Source Edition en CentOS 7

Aprende cómo instalar Vtiger CRM, una aplicación de gestión de relaciones con el cliente, en CentOS 7 para aumentar tus ventas y mejorar el servicio al cliente.

Cómo instalar MODX Revolution en un CentOS 7 LAMP VPS

Cómo instalar MODX Revolution en un CentOS 7 LAMP VPS

¿Usando un sistema diferente? MODX Revolution es un sistema de gestión de contenido (CMS) de nivel empresarial rápido, flexible, escalable, gratuito y de código abierto escrito i

Configure su propia red privada con OpenVPN

Configure su propia red privada con OpenVPN

Vultr le ofrece una increíble conectividad de red privada para servidores que se ejecutan en la misma ubicación. Pero a veces quieres dos servidores en diferentes países.

How to Install and Configure CyberPanel on Your CentOS 7 Server

How to Install and Configure CyberPanel on Your CentOS 7 Server

Using a Different System? Introduction CyberPanel is one of the first control panels on the market that is both open source and uses OpenLiteSpeed. What thi

Install eSpeak on CentOS 7

Install eSpeak on CentOS 7

Using a Different System? ESpeak can generate text-to-speech (TTS) audio files. These can be useful for many reasons, such as creating your own Turin

Cómo instalar Thelia 2.3 en CentOS 7

Cómo instalar Thelia 2.3 en CentOS 7

¿Usando un sistema diferente? Thelia es una herramienta de código abierto para crear sitios web de comercio electrónico y administrar contenido en línea, escrito en PHP. Código fuente de Thelia i

Monitoree sus dispositivos usando LibreNMS en CentOS 7

Monitoree sus dispositivos usando LibreNMS en CentOS 7

¿Usando un sistema diferente? LibreNMS es un completo sistema de monitoreo de red de código abierto. Utiliza SNMP para obtener los datos de diferentes dispositivos. Una variedad

Cómo instalar Cacti 1.1 en CentOS 7

Cómo instalar Cacti 1.1 en CentOS 7

Cacti es una herramienta de gráficos y monitoreo de red de código abierto y libre escrita en PHP. Con la ayuda de RRDtool (herramienta de base de datos Round-Robin), Cacti se puede usar t

Cómo usar Sudo en Debian, CentOS y FreeBSD

Cómo usar Sudo en Debian, CentOS y FreeBSD

Usar un usuario sudo para acceder a un servidor y ejecutar comandos a nivel raíz es una práctica muy común entre Linux y Unix Systems Administrator. El uso de un sud

Cómo supervisar de forma segura los servidores remotos con Zabbix en CentOS 7

Cómo supervisar de forma segura los servidores remotos con Zabbix en CentOS 7

¿Usando un sistema diferente? Zabbix es un software gratuito y de código abierto listo para empresas que se utiliza para monitorear la disponibilidad de sistemas y componentes de red.

Cómo instalar MODX CMS y Nginx en CentOS 7

Cómo instalar MODX CMS y Nginx en CentOS 7

MODX es un sistema de gestión de contenido gratuito y de código abierto escrito en PHP. Utiliza MySQL o MariaDB para almacenar su base de datos. MODX está diseñado para el negocio i

Cómo instalar YOURLS en CentOS 7

Cómo instalar YOURLS en CentOS 7

YOURLS (Your Own URL Shortener) es una aplicación de análisis de datos y acortamiento de URL de código abierto. En este artículo, cubriremos el proceso de instalación

Setup Nginx-RTMP on CentOS 7

Setup Nginx-RTMP on CentOS 7

Using a Different System? RTMP is great for serving live content. When RTMP is paired with FFmpeg, streams can be converted into various qualities. Vultr i

Cómo instalar LimeSurvey en CentOS 7

Cómo instalar LimeSurvey en CentOS 7

LimeSurvey es una herramienta de encuestas en línea gratuita y de código abierto que se utiliza ampliamente para publicar encuestas en línea y para recopilar comentarios de encuestas. En este artículo, voy a

Cómo instalar Vanilla Forum en CentOS 7

Cómo instalar Vanilla Forum en CentOS 7

¿Usando un sistema diferente? Vanilla forum es una aplicación de foro de código abierto escrita en PHP. Es totalmente personalizable, fácil de usar y admite dispositivos externos.

Instalación de Netdata en CentOS 7

Instalación de Netdata en CentOS 7

¿Usando un sistema diferente? Netdata es una estrella en ascenso en el campo del monitoreo de métricas del sistema en tiempo real. En comparación con otras herramientas del mismo tipo, Netdata:

Cómo instalar el servidor Just Cause 2 (JC2-MP) en CentOS 7

Cómo instalar el servidor Just Cause 2 (JC2-MP) en CentOS 7

En este tutorial, aprende bien cómo configurar un servidor multijugador Just Cause 2. Requisitos previos Asegúrese de que el sistema esté completamente actualizado antes de comenzar

Cómo instalar Starbound Server en CentOS 7

Cómo instalar Starbound Server en CentOS 7

¿Usando un sistema diferente? En este tutorial, explicaré cómo configurar un servidor Starbound en CentOS 7. Requisitos previos Necesitas tener este juego contigo

Instalación y configuración de ZNC en CentOS 7

Instalación y configuración de ZNC en CentOS 7

ZNC es un enlace IRC gratuito y de código abierto que permanece permanentemente conectado a una red para que los clientes puedan recibir mensajes enviados mientras están desconectados. Thi

ZPanel y Sentora en CentOS 6 x64

ZPanel y Sentora en CentOS 6 x64

ZPanel, un panel de control de alojamiento web popular, se bifurcó en 2014 a un nuevo proyecto llamado Sentora. Aprende a instalar Sentora en tu servidor con este tutorial.

Cómo instalar Vtiger CRM Open Source Edition en CentOS 7

Cómo instalar Vtiger CRM Open Source Edition en CentOS 7

Aprende cómo instalar Vtiger CRM, una aplicación de gestión de relaciones con el cliente, en CentOS 7 para aumentar tus ventas y mejorar el servicio al cliente.

Cómo instalar el servidor Counter-Strike 1.6 en Linux

Cómo instalar el servidor Counter-Strike 1.6 en Linux

Esta guía completa le mostrará cómo configurar un servidor Counter-Strike 1.6 en Linux, optimizando el rendimiento y la seguridad para el mejor juego. Aprende los pasos más recientes aquí.

¿Puede la IA luchar con un número cada vez mayor de ataques de ransomware?

¿Puede la IA luchar con un número cada vez mayor de ataques de ransomware?

Los ataques de ransomware van en aumento, pero ¿puede la IA ayudar a lidiar con el último virus informático? ¿Es la IA la respuesta? Lea aquí, sepa que la IA es una bendición o una perdición

ReactOS: ¿Es este el futuro de Windows?

ReactOS: ¿Es este el futuro de Windows?

ReactOS, un sistema operativo de código abierto y gratuito, está aquí con la última versión. ¿Puede satisfacer las necesidades de los usuarios de Windows de hoy en día y acabar con Microsoft? Averigüemos más sobre este estilo antiguo, pero una experiencia de sistema operativo más nueva.

Manténgase conectado a través de la aplicación de escritorio WhatsApp 24 * 7

Manténgase conectado a través de la aplicación de escritorio WhatsApp 24 * 7

Whatsapp finalmente lanzó la aplicación de escritorio para usuarios de Mac y Windows. Ahora puede acceder a Whatsapp desde Windows o Mac fácilmente. Disponible para Windows 8+ y Mac OS 10.9+

¿Cómo puede la IA llevar la automatización de procesos al siguiente nivel?

¿Cómo puede la IA llevar la automatización de procesos al siguiente nivel?

Lea esto para saber cómo la Inteligencia Artificial se está volviendo popular entre las empresas de pequeña escala y cómo está aumentando las probabilidades de hacerlas crecer y dar ventaja a sus competidores.

La actualización complementaria de macOS Catalina 10.15.4 está causando más problemas que resolver

La actualización complementaria de macOS Catalina 10.15.4 está causando más problemas que resolver

Recientemente, Apple lanzó macOS Catalina 10.15.4, una actualización complementaria para solucionar problemas, pero parece que la actualización está causando más problemas que conducen al bloqueo de las máquinas Mac. Lee este artículo para obtener más información

13 Herramientas comerciales de extracción de datos de Big Data

13 Herramientas comerciales de extracción de datos de Big Data

13 Herramientas comerciales de extracción de datos de Big Data

¿Qué es un sistema de archivos de diario y cómo funciona?

¿Qué es un sistema de archivos de diario y cómo funciona?

Nuestra computadora almacena todos los datos de una manera organizada conocida como sistema de archivos de diario. Es un método eficiente que permite a la computadora buscar y mostrar archivos tan pronto como presiona buscar.