首页 > 运维 > linux运维 > 正文

CentOS 8启动流程

星夢妙者
发布: 2025-07-15 09:48:41
原创
591人浏览过

一、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的优势

  1. 支持更大硬盘容量:与传统BIOS+MBR只能支持2048G的硬盘分区和4个主分区不同,UEFI+GPT不受硬盘容量和分区数量限制。虽然Windows系统有限制,最多支持128个GPT磁盘分区,最大分区18EB,且GPT格式没有主分区和逻辑分区的概念。

  2. 容错特性:UEFI采用模块化构建,具有更强的容错和纠错能力。

  3. 鼠标操作:UEFI内置图形驱动,支持原生分辨率的图形环境,用户可以使用鼠标进行操作。

  4. 扩展性强:UEFI包含一个可编程的开放接口,厂商可以利用此接口扩展功能,如备份和诊断。

  5. 支持联网:无需进入操作系统,即可通过网络进行远程故障诊断。

二、CentOS8启动流程

现代计算机是软件与硬件的复杂组合,从接通电源到系统登录,需要软件和硬件的紧密配合。我们将探讨CentOS8 x86_64系统的启动过程,虚拟机的启动流程大致相同,但某些与硬件相关的步骤由虚拟机软件处理。

  1. 接通电源

系统固件(UEFI或BIOS)运行自检,并初始化部分硬件。

  1. 系统固件搜索可启动设备

启动设备可能是UEFI启动固件中配置的,也可能是按照BIOS中配置的顺序搜索所有磁盘上的主启动记录(MBR)。

  1. 读取启动加载器(boot loader)

系统固件从MBR中读取启动加载器,然后将控制权交给启动加载器。在CentOS8中,启动加载器为GRUB2。

  1. grub.cfg

GRUB2从/boot/grub2/grub.cfg文件中加载配置并显示启动菜单,用户可选择要启动的内核。grub.cfg文件可以通过grub2-mkconfig命令结合/etc/grub.d/目录和/etc/default/grub文件生成。

  1. initramfs

选择内核或到达超时时间后,启动加载器从磁盘加载内核(vmlinuz)和initramfs,并将其放入内存。initramfs包含启动时所需的硬件内核模块(驱动)和初始化脚本等。可以通过lsinitrd和dracut命令结合/etc/dracut.conf.d/目录查看和配置initramfs文件。

  1. 启动加载器放权

启动加载器将控制权交给内核。

  1. 内核初始化

内核在initramfs中寻找硬件驱动并初始化相关硬件,然后启动/usr/sbin/init(PID=1)。在CentOS8中,/sbin/init是systemd的链接。

  1. 启动initrd.target并挂载

systemd执行initrd.target包含的所有单元,并将根文件系统挂载到/sysroot/目录。initrd.target启动时的依赖单元将根据/etc/fstab设置挂载硬盘。

  1. 切换根文件系统

内核将根文件系统从initramfs切换到/sysroot(硬盘上的根文件系统),systemd会找到磁盘上安装的systemd并自动重新执行。

  1. 启动相应目标

硬盘上安装的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),开启登录界面。

图形界面

豆包AI编程
豆包AI编程

豆包推出的AI编程助手

豆包AI编程483
查看详情 豆包AI编程

在multi-user.target的基础上执行graphical.target启动所需的服务,开启图形界面。

三、运行级别切换与相关配置文件

CentOS8在启动过程中需要判断对应的运行级别,不同的运行级别会启动不同的单元。运行级别的切换涉及以下命令:

  • systemctl isolate .../init [0-6]:切换运行级别
  • systemctl get-default:查看当前的默认运行级别
  • systemctl set-default ...:设置默认的运行级别
  • runlevel:查看之前的运行级别和当前的运行级别

运行级别对照

  • runlevel0.target -> poweroff.target
  • runlevel1.target -> rescue.target
  • runlevel2.target -> multi-user.target
  • runlevel3.target -> multi-user.target
  • runlevel4.target -> multi-user.target
  • runlevel5.target -> graphical.target
  • runlevel6.target -> reboot.target

因此,当使用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的工作过程分为两步:

  • stage1:执行boot loader的主程序,必须安装在MBR或启动扇区。由于空间限制,仅存放最小化的boot loader,不包含配置文件。
  • stage2:通过主程序加载配置文件。boot loader的主程序加载所有相关的配置文件,包括定义文件系统类型的和CentOS8中的grub.cfg文件,这些文件通常存放在/boot目录中。

GRUB2

目前,Linux下的启动加载器有两种,一种是LILO,另一种是GRUB。由于GRUB功能更强大,支持的文件系统较多,因此越来越多的操作系统使用GRUB作为boot loader。CentOS从7开始使用功能更为强大的GRUB2。

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

  • GRUB_TIMEOUT=5:定义启动菜单默认等待时间,单位为秒。
  • GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)":定义获取操作系统名称的方式。
  • GRUB_DEFAULT=saved:定义开机时默认启动的项目,可以是数字、标题名称或saved(表示默认启动上次成功启动的操作系统)。
  • GRUB_DISABLE_SUBMENU=true:是否隐藏子菜单。
  • GRUB_TERMINAL_OUTPUT="console":定义启动时的界面使用哪种终端输出,值包含console、serial、gfxterm、vga_text等。
  • GRUB_CMDLINE_LINUX="resume=/dev/mapper/cl-swap rd.lvm.lv=cl/root rd.lvm.lv=cl/swap rhgb quiet":定义额外的启动参数。
  • GRUB_DISABLE_RECOVERY="true":是否启用修复模式。
  • GRUB_ENABLE_BLSCFG=true:是否启用bootloader规范。

修改完成后,需要使用grub2-mkconfig -o /boot/grub2/grub.cfg命令重新生成配置文件。

/etc/grub.d/

  • 00_header:设置默认参数。
  • 00_tuned:额外调整的值。
  • 01_menu_auto_hide:与菜单隐藏相关的设置。
  • 01_users:与用户相关的设置。
  • 10_linux:与内核相关的设置。
  • 20_ppc_terminfo:与终端相关的设置。
  • 20_linux_xen:与虚拟化相关的设置。
  • 30_os-prober:与操作系统检测相关。
  • 30_uefi-firmware:与UEFI启动设置相关,需要硬件支持。
  • 40_custom&41_custom:自定义设置。

这些文件会按照数字顺序由小到大加载。

CentOS 8启动流程

注意:此为紧急模式,用于紧急处理系统错误,无法使用rescue.target时,可以尝试使用此模式。

以上就是CentOS 8启动流程的详细内容,更多请关注php中文网其它相关文章!

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号