Proceso de arranque de Linux y resolución de problemas de fallas de inicio (reparar fallas del sector MBR y reparar fallas de arranque GRUB)


Uno, proceso de arranque del sistema operativo Linux

El inicio del sistema es el comienzo del funcionamiento del sistema operativo. Antes de que el usuario pueda iniciar sesión en el sistema normalmente, el proceso de inicio de Linux completa una serie de tareas de inicialización y carga los programas y terminales de comando necesarios para preparar el inicio de sesión del usuario.

1. Descripción general del proceso de arranque

marca

1.1 Autoprueba de encendido

  • Una vez que se enciende el host del servidor, la CPU, la memoria, la tarjeta gráfica, el teclado y otros dispositivos se probarán de manera preliminar de acuerdo con la configuración del BIOS de la placa base (sistema básico de entrada y salida). Después de que la prueba sea exitosa, el control del sistema se transferirá de acuerdo con la secuencia de inicio preestablecida. La mayoría de las veces, se transferirá. Al disco duro local
  • Se detecta el primer dispositivo capaz de arrancar el sistema, como un disco duro o una unidad óptica

Arranque 1.2 MBR

  • Al iniciar el sistema desde el disco duro local, primero transfiera el control del sistema a la partición que contiene el archivo de inicio del sistema operativo de acuerdo con la configuración de MBR (Master Boot Record) en el primer sector del disco duro; o directamente de acuerdo con el inicio en el registro MBR Información para llamar al menú de inicio (por ejemplo, GRUB)
  • Ejecute el programa de arranque GRUB de arranque ubicado en el sector MBR

1.3 Menú GRUB

  • Para el sistema operativo Linux, GRUB (cargador de arranque unificado) es el programa de cargador de arranque multisistema más utilizado. Una vez que el
    control del sistema se pasa a GROB, el menú de arranque se mostrará para que el usuario elija y de acuerdo con la opción seleccionada (o use el valor predeterminado) ) Cargue el archivo del kernel de Linux y luego transfiera el control del sistema al kernel.
    Centos 7 usa el cargador de arranque GRUB2. El
    programa de arranque GRUB lee el archivo de configuración de GRUB /boot/grub2/grub.cfg para obtener el kernel y la configuración del sistema de archivos espejo

1.4 Cargar el kernel de Linux

  • El kernel de Linux es un archivo binario especial precompilado, entre varios recursos de hardware y programas del sistema, responsable de la asignación y programación de recursos. Una vez que el
    kernel asume el control del sistema, controlará completamente el proceso de ejecución de todo el sistema operativo Linux.
  • En el sistema Centos 7, el archivo de kernel predeterminado se encuentra en "/boot/vmlinuz-3.10.0-514.e17.x86_64"
  • Cargue el kernel y el sistema de archivos espejo en la memoria

1.5 inicialización del proceso init

  • Para completar el proceso de arranque del sistema, el kernel de Linux primero carga el programa "/ sbin / init" en el sistema en la memoria para ejecutarlo (el programa en ejecución se llama proceso), el proceso de inicio es responsable de completar la inicialización de todo el sistema y finalmente espera a que el usuario continúe iniciar sesión
  • Cargue el controlador de hardware, el kernel carga el proceso de inicio en la memoria para ejecutar

Proceso 2.init

  • Los procesos (programas en ejecución) en el sistema Linux están marcados con números. El número de identificación de cada proceso se llama PID. En el proceso de arranque de Linux, "/ sbin / init" es el primer programa cargado por el kernel. Por lo tanto, el número PID correspondiente al proceso de inicio es siempre "1".
  • Una vez que se ejecuta el proceso init, continuará ejecutando otros programas en el sistema y generará continuamente nuevos procesos. Estos procesos se denominan procesos secundarios del proceso init. Por otro lado, el proceso init es el proceso principal de estos procesos.
    Por supuesto, estos procesos secundarios también se pueden generar. Los respectivos subprocesos continúan multiplicándose a la vez y finalmente forman un frondoso árbol de procesos, que en conjunto brindan servicios a los usuarios.
  • Init es el "antepasado" de todos los procesos que mantienen todo el sistema Linux. Por lo tanto, no se permite que el proceso init se termine fácilmente. Cuando
    necesite cambiar entre diferentes estados operativos del sistema, puede enviar los parámetros de ejecución correctos al proceso init, lo cual lo hace el propio init. Operaciones relacionadas

3.Sistema

  • Systemd es un software de inicio del sistema operativo Linux
  • CentOS7 utiliza un nuevo método de inicio Systemd para reemplazar el tradicional SysVinit
  • SysVinit tradicional se basa en la ejecución en serie de scripts de Shell para iniciar los servicios, lo que resulta en una baja eficiencia y un inicio lento del sistema.
  • Systemd puede iniciar más procesos de servicio en paralelo y tiene la capacidad de iniciar servicios a pedido, por lo que se inician menos procesos, lo que aumenta la velocidad de inicio del sistema.
  • El primer proceso de inicio que se ejecuta en CentOS7 es / lib / systemd / systemd

4. Tipo de unidad Systemd

Tipo de unidad nombre de la extensión Descripción
Servicio .Servicio Describe un servicio del sistema
Enchufe .enchufe Describir un conector para la comunicación entre procesos.
Dispositivo .dispositivo Describe un archivo de dispositivo reconocido por el kernel
Montar .montar Describe el punto de montaje de un sistema de archivos.
Automount .automount Describir un dispositivo de intercambio de memoria o un archivo de intercambio.
Intercambiar .intercambiar Describir un dispositivo de intercambio de memoria o un archivo de intercambio.
Camino .camino Describir un archivo o directorio en un sistema de archivos.
Temporizador .Temporizador Descripción: un temporizador (utilizado para implementar tareas de programación de tipo cron)
Instantánea .instantánea Se usa para guardar el estado de un sistema.
Alcance .alcance Utilice la interfaz de bus de systemd para crear procesos externos mediante programación
Rebanada .rebanada Describir un grupo de procesos del sistema de gestión organizados por jerarquía en Cgroup
Objetivo .objetivo Describe un conjunto de unidades systemd

5. Objetivo de Systemd correspondiente al nivel de ejecución

Nivel de ejecución Destino Systemd 的 Descripción
0 objetivo Estado de apagado, el host se apagará cuando se use este nivel
1 objetivo de rescate Modo de usuario único, puede iniciar sesión en el sistema sin verificación de contraseña, que se utiliza principalmente para el mantenimiento del sistema
2 multi-user.target Nivel de ejecución definido por el usuario / específico del dominio. El valor predeterminado es igual a 3 (no se admite el acceso a la red)
3 multi-user.target Modo multiusuario completo con interfaz de caracteres, la mayoría de los servidores se ejecutan en este nivel
4 multi-user.target Nivel de ejecución definido por el usuario / específico del dominio. El valor predeterminado es equivalente a 3
5 objetivo gráfico El modo multiusuario de la interfaz gráfica proporciona un entorno operativo de escritorio gráfico
6 reboot.target Reiniciar, el host se reiniciará cuando se use este nivel

2. Eliminar fallas de inicio

1. Reparar la falla del sector MBR

1.1 Causas de falla

  • Daños provocados por virus, troyanos, etc.
  • Operación incorrecta de la partición, errores de lectura y escritura del disco

1.2 Fenómeno de falla

  • No se puede encontrar el programa de arranque, inicio interrumpido
  • No se puede cargar el sistema operativo

1.3 Soluciones

  • Los archivos de respaldo deben hacerse con anticipación
  • Arranque en modo de emergencia con el CD de instalación
  • Restaurar desde el archivo de respaldo

1.4 Práctica

1.4.1 Hacer una copia de seguridad de los datos del sector MBR en otros discos (/ dev / sdb1)

  • Primero agregue un nuevo disco duro
  • Nueva partición
[root@localhost ~]# fdisk /dev/sdb
欢迎使用 fdisk (util-linux 2.23.2)。

更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。

Device does not contain a recognized partition table
使用磁盘标识符 0xbd9ad88f 创建新的 DOS 磁盘标签。

命令(输入 m 获取帮助):n
Partition type:
   p   primary (0 primary, 0 extended, 4 free)
   e   extended
Select (default p): p
分区号 (1-4,默认 1):
起始 扇区 (2048-83886079,默认为 2048):
将使用默认值 2048
Last 扇区, +扇区 or +size{K,M,G} (2048-83886079,默认为 83886079):
将使用默认值 83886079
分区 1 已设置为 Linux 类型,大小设为 40 GiB

命令(输入 m 获取帮助):w
The partition table has been altered!

Calling ioctl() to re-read partition table.
正在同步磁盘。
  • formato
[root@localhost ~]# mkfs.xfs /dev/sdb1
meta-data=/dev/sdb1              isize=512    agcount=4, agsize=2621376 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=0, sparse=0
data     =                       bsize=4096   blocks=10485504, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal log           bsize=4096   blocks=5119, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0

  • Montar
[root@localhost ~]# mkdir /backup
[root@localhost ~]# mount /dev/sdb1 /backup/

  • Apoyo
[root@localhost ~]# cd /backup/
[root@localhost backup]# ls
[root@localhost backup]# dd if=/dev/sda of=/backup/mbr.bak bs=512 count=1
记录了1+0 的读入
记录了1+0 的写出
512字节(512 B)已复制,0.000197902 秒,2.6 MB/秒
[root@localhost backup]# ls
mbr.bak

1.4.2 Simulación de la destrucción del sector de arranque MBR

  • Destrucción simulada
[root@localhost backup]# dd if=/dev/zero of=/dev/sda bs=512 count=1
记录了1+0 的读入
记录了1+0 的写出
512字节(512 B)已复制,9.7308e-05 秒,5.3 MB/秒
  • Reinicie el sistema y pruébelo
[root@localhost backup]# init 6
Connection closing...Socket close.

Connection closed by foreign host.

Disconnected from remote host(CentOS 7-3) at 16:58:38.

Type `help' to learn how to use Xshell prompt.
[D:\~]$ 

1.4.3 Interfaz de arranque

  • Después de reiniciar, descubrí que no se ingresó la interfaz del sistema, pero apareció el asistente de instalación
    marca
  • Aquí seleccionamos la opción "Solución de problemas" para ingresar al modo de emergencia
    marca
  • Escriba "1" para seleccionar Continuar y presione Entrar para continuar
    marca
  • Presione Enter nuevamente para ingresar al entorno Bash Shell con el mensaje "sh-4.2 #"
sh-4.2# mkdir /backupdir
sh-4.2# mount /dev/sdb1 /backupdir        ##挂载带有备份文件的分区
sh-4.2# dd if=/backupdir/mbr.bak of=/dev/sda bs=512 count=1        ##恢复备份数据
sh-4.2# exit       ##执行exit命令退出临时Shell环境,系统将会自动重启
  • OK El sistema comienza a reiniciarse, y luego se encuentra que es normal, puede ingresar directamente al sistema

2. Reparar la falla de arranque de GRUB

2.1 Causas de falla

  • El programa de arranque GRUB en MBR está dañado
  • Falta el archivo grub.conf, la configuración de arranque es incorrecta

2.2 Fenómeno de falla

  • El arranque del sistema se detiene, mostrando el mensaje "grub>"

2.3 Soluciones

  • Intente ingresar manualmente el comando de arranque
  • Ingrese al modo de emergencia, reescriba o restaure grub.conf desde la copia de seguridad
  • Reconstruir el programa grub en el sector MBR

2.4 Práctica

  • La interfaz de arranque entra en modo de emergencia y el archivo de configuración del menú de GRUB se reconstruye

2.4.1 Fallo simulado

/boot/grub/目录下的包是用于启动菜单的背景图片及样式
/boot/grub2/grub.cfg        ##Grub配置文件
  • Eliminar grub.cfg para simular una falla
  • Aquí no necesitamos hacer una copia de seguridad, porque se reconstruye directamente
[root@localhost boot]# cd grub2
[root@localhost grub2]# ls
device.map  fonts  grub.cfg  grubenv  i386-pc  locale
[root@localhost grub2]# rm -rf grub.cfg
[root@localhost grub2]# ls
device.map  fonts  grubenv  i386-pc  locale
  • Ingrese reiniciar para reiniciar, luego ingresará a esta interfaz
    marca
  • Preste atención, cómo ingresamos a la interfaz de arranque en este momento, la velocidad de la mano debe ser rápida, presione "ESC" inmediatamente después de hacer clic en el reinicio, intente varias veces, siempre tendrá éxito
    marca
  • Aquí elegimos CD
    marca

2.4.2 Interfaz de arranque

  • Ingrese al modo de emergencia y restaure el sistema CenOS
    marca
    marca
  • Ingrese 1, presione enter
    marca
  • Cambie al entorno raíz del sistema (esta vez puede usar la tecla TAB para completar)
sh-4.2# chroot /mnt/sysimage
bash-4.2#
  • Reinstale el programa de arranque GRUB en el sector MRB del primer disco duro (/ dev / sda)
bash-4.2# grub2-install /dev/sda
  • Reconstruir el archivo de configuración del menú de GRUB
bash-4.2# grub2-mkconfig -o /boot/grub2/grub.cfg
  • Salga del entorno chroot y reinicie
bash-4.2# exit
sh-4.2# reboot
  • OK, puede ingresar a la interfaz del sistema, verifiquémoslo nuevamente y encontraremos que grub.cfg lo tiene nuevamente
[root@localhost ~]# cd /boot/grub2
[root@localhost grub2]# ls
device.map  fonts  grub.cfg  grubenv  i386-pc  locale

Supongo que te gusta

Origin blog.csdn.net/weixin_51486343/article/details/110202636
Recomendado
Clasificación