一、bios与uefi
BIOS
Basic Input Output System的缩写,即“基本输入输出系统”,是计算机启动时首先加载的程序。它主要负责检测和设置硬件,并启动操作系统。BIOS于1975年首次出现,是一个行业标准的固件接口。
UEFI
Unified Extensible Firmware Interface的缩写,意为“统一可扩展固件接口”,是BIOS的替代方案。其前身是Intel在1998年开始开发的Inter Bot Initiative,后来演变为可扩展固件接口(EFI),并于2005年由统一可扩展固件接口论坛正式命名为UEFI。
立即进入“豆包AI人工智官网入口”;
立即学习“豆包AI人工智能在线问答入口”;
UEFI的优势
支持更大硬盘容量:与传统BIOS+MBR只能支持2048G的硬盘分区和4个主分区不同,UEFI+GPT不受硬盘容量和分区数量限制。虽然Windows系统有限制,最多支持128个GPT磁盘分区,最大分区18EB,且GPT格式没有主分区和逻辑分区的概念。
容错特性:UEFI采用模块化构建,具有更强的容错和纠错能力。
鼠标操作:UEFI内置图形驱动,支持原生分辨率的图形环境,用户可以使用鼠标进行操作。
扩展性强:UEFI包含一个可编程的开放接口,厂商可以利用此接口扩展功能,如备份和诊断。
支持联网:无需进入操作系统,即可通过网络进行远程故障诊断。
二、CentOS8启动流程
现代计算机是软件与硬件的复杂组合,从接通电源到系统登录,需要软件和硬件的紧密配合。我们将探讨CentOS8 x86_64系统的启动过程,虚拟机的启动流程大致相同,但某些与硬件相关的步骤由虚拟机软件处理。
系统固件(UEFI或BIOS)运行自检,并初始化部分硬件。
启动设备可能是UEFI启动固件中配置的,也可能是按照BIOS中配置的顺序搜索所有磁盘上的主启动记录(MBR)。
系统固件从MBR中读取启动加载器,然后将控制权交给启动加载器。在CentOS8中,启动加载器为GRUB2。
GRUB2从/boot/grub2/grub.cfg文件中加载配置并显示启动菜单,用户可选择要启动的内核。grub.cfg文件可以通过grub2-mkconfig命令结合/etc/grub.d/目录和/etc/default/grub文件生成。
选择内核或到达超时时间后,启动加载器从磁盘加载内核(vmlinuz)和initramfs,并将其放入内存。initramfs包含启动时所需的硬件内核模块(驱动)和初始化脚本等。可以通过lsinitrd和dracut命令结合/etc/dracut.conf.d/目录查看和配置initramfs文件。
启动加载器将控制权交给内核。
内核在initramfs中寻找硬件驱动并初始化相关硬件,然后启动/usr/sbin/init(PID=1)。在CentOS8中,/sbin/init是systemd的链接。
systemd执行initrd.target包含的所有单元,并将根文件系统挂载到/sysroot/目录。initrd.target启动时的依赖单元将根据/etc/fstab设置挂载硬盘。
内核将根文件系统从initramfs切换到/sysroot(硬盘上的根文件系统),systemd会找到磁盘上安装的systemd并自动重新执行。
硬盘上安装的systemd会查找从内核命令行传递的目标或系统中配置的默认目标,并启动相应单元,进入登录界面。默认目标是/etc/systemd/system/default.target。
注意:字符界面
如果默认目标为multi-user.target(字符界面),systemd会先执行sysinit.target初始化系统,然后执行basic.target与getty.target准备基本系统环境和终端,再启动multi-user.target下的相关应用,同时执行/etc/rc.d/rc.local(需要执行权限)和登录服务(systemd-logind.service),开启登录界面。
图形界面
在multi-user.target的基础上执行graphical.target启动所需的服务,开启图形界面。
三、运行级别切换与相关配置文件
CentOS8在启动过程中需要判断对应的运行级别,不同的运行级别会启动不同的单元。运行级别的切换涉及以下命令:
运行级别对照
因此,当使用init [0-6]切换运行级别时,系统执行的是systemctl isolate runlevel[0-6].target。
四、Boot Loader与GRUB2
在CentOS8的启动流程中,有一个称为启动加载器(boot loader)的工具。如果没有这个boot loader,就无法加载内核。在CentOS8中使用的启动加载器是Grub2。在了解Grub2之前,先简单介绍一下boot loader。
Boot Loader的两个阶段
boot loader的工作过程分为两步:
GRUB2
目前,Linux下的启动加载器有两种,一种是LILO,另一种是GRUB。由于GRUB功能更强大,支持的文件系统较多,因此越来越多的操作系统使用GRUB作为boot loader。CentOS从7开始使用功能更为强大的GRUB2。
GRUB2的优点
GRUB2与硬盘
由于grub2的主要任务是从硬盘中加载内核,所以grub2必须识别硬盘。grub2识别硬盘的方式与Linux系统有所不同。在Linux系统中,硬盘通常被识别为类似sda1的形式,而在grub2中,硬盘统一被识别为hd设备,排序方式全部用数字进行排序,而不是用字母加数字的混合形式。这样做的目的是为了定义grub2查找内核时的顺序。
grub2配置文件
grub2的配置文件建议不要随意更改。grub.cfg文件的内容由grub2-mkconfig命令自动生成,相关模板和设置存放在/etc/grub.d/目录以及/etc/default/grub文件中。如果需要修改,需要通过调整/etc/default/grub文件并使用grub2-mkconfig命令生成新的grub.cfg文件。
/etc/default/grub与/etc/grub.d/
grub2的配置文件grub.cfg内容复杂且不建议手动修改。如果需要修改,需要通过/etc/default/grub文件以及/etc/grub.d/目录内的内容来实现。
/etc/default/grub
修改完成后,需要使用grub2-mkconfig -o /boot/grub2/grub.cfg命令重新生成配置文件。
/etc/grub.d/
这些文件会按照数字顺序由小到大加载。

注意:此为紧急模式,用于紧急处理系统错误,无法使用rescue.target时,可以尝试使用此模式。
以上就是CentOS 8启动流程的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号