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
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.
正在同步磁盘。
[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
Aquí seleccionamos la opción "Solución de problemas" para ingresar al modo de emergencia
Escriba "1" para seleccionar Continuar y presione Entrar para continuar
Presione Enter nuevamente para ingresar al entorno Bash Shell con el mensaje "sh-4.2 #"
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
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
Aquí elegimos CD
2.4.2 Interfaz de arranque
Ingrese al modo de emergencia y restaure el sistema CenOS
Ingrese 1, presione enter
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