centos7启动过程,是一个复杂但有序的过程,centos7开机启动的主要步骤:
导航
0.加电质检,加载BIOS
1.根据顺序,加载MBR
2.加载内核
3.运行initramfs/initrd
4.挂载根文件系统
5.启动init系统
6.用户空间的初始化
7.终端和登录服务启动
首先加载基本输入输出系统,BIOS 中包含硬件 CPU、内存、硬盘等相关信息,包含设备启动顺序信息、硬盘信息、内存信息、时钟信息、即插即用(Plug-and-Play,PNP,例如u盘的等外部设备),特性等。加载完 BIOS信息,计算机将根据顺序进行启动。
读取并执行启动设备的MBR(Master Boot Record 即主引导记录)中的Boot Loader
MBR存储在计算机硬盘的第一个扇区(通常是第0个扇区)中的一个特殊的引导扇区。它包含了启动计算机所需的重要信息,如分区表、引导程序等。 Boot Loader就是MBR中的引导程序,例如GRUB就是引导程序中的一种多操作系统启动程序。BootLoader会被复制到内存中,然后进行启动引导。
BootLoader加载内核流程:(centos中常用的BootLoader是GRUB 2)
第一阶段(加载内核映像):GRUB 会提供一个菜单,让用户选择要启动的操作系统或不同的内核版本。用户选择后,GRUB 会将选定的内核版本加载到RAM中的特定空间,并进行解压和展开。注:GRUB会从硬盘上读取内核映像(vmlinux或vmlinuz,后者是压缩过的)并加载到内存中。内核映像包含了操作系统启动所需的核心代码。
第二阶段(初始化内核):GRUB 将控制权移交给Linux内核,包括探测可识别的硬件设备、加载硬件驱动程序等。内核在内存中加载时,为了模拟系统环境,会生成一个ramdisk(内存上临时虚拟的系统)文件,这个文件可以是initramfs或initrd。内核通过ramdisk加载必要的驱动程序和核心模块,以准备挂载真正的根文件系统。
在CentOS 7中,内核启动后会执行initramfs(或早期版本的initrd)脚本。这些脚本包含了用于加载额外模块、启动临时文件系统等所需的代码。initramfs使得内核能够在没有完整根文件系统的情况下进行初始化。注:initramfs/initrd是Linux系统启动过程中的一个关键组件,它允许内核在挂载根文件系统之前执行必要的初始化任务。
initramfs/initrd脚本执行完毕后,内核会挂载根文件系统,它使操作系统能访问其文件和目录。除了根文件系统外,系统还会根据/etc/fstab
等配置文件挂载其他文件系统,如/home
、/var
等分区。
在centos7中systemd是默认的init系统。一旦根文件系统被挂载,内核就会启动systemd,由systemd接管后续的启动过程。systemd负责启动系统上的服务、会话和管理守护进程。
graphical.target
(图形界面)或multi-user.target
(多用户文本界面)。/etc/rc.d/rc.local
等初始化脚本会被执行以完成额外的系统配置。然而,在systemd下,这些脚本的作用可能已经被systemd单元文件所取代。