CentOS 8启动流程

一、bios与uefi

BIOS

Basic Input Output System的缩写,即“基本输入输出系统”,是计算机启动时首先加载的程序。它主要负责检测和设置硬件,并启动操作系统。BIOS于1975年首次出现,是一个行业标准的固件接口。

UEFI

Unified Extensible Firmware Interface的缩写,意为“统一可扩展固件接口”,是BIOS的替代方案。其前身是Intel在1998年开始开发的Inter Bot Initiative,后来演变为可扩展固件接口(EFI),并于2005年由统一可扩展固件接口论坛正式命名为UEFI。

UEFI的优势

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

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

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

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

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

二、CentOS8启动流程

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

接通电源

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

系统固件搜索可启动设备

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

读取启动加载器(boot loader)

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

grub.cfg

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

initramfs

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

启动加载器放权

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

内核初始化

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

启动initrd.target并挂载

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),开启登录界面。

图形界面

豆包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.targetrunlevel1.target -> rescue.targetrunlevel2.target -> multi-user.targetrunlevel3.target -> multi-user.targetrunlevel4.target -> multi-user.targetrunlevel5.target -> graphical.targetrunlevel6.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启动流程的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/465366.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
App开发行业中不为人知的陷阱
上一篇 2025年11月8日 05:13:41
想知道windows7和10区别
下一篇 2025年11月8日 05:14:00

相关推荐

  • Linux如何卸载deb软件包并清理配置文件

    Linux如何卸载deb软件包并清理配置文件Linux如何卸载deb软件包并清理配置文件Linux如何卸载deb软件包并清理配置文件Linux如何卸载deb软件包并清理配置文件

    使用apt purge可彻底卸载deb包并清除配置文件,配合autoremove清理残留依赖,必要时手动删除遗留文件以保持系统整洁。 在Linux系统中,尤其是基于Debian的发行版(如Ubuntu),使用 .deb 包安装软件非常常见。当你需要彻底卸载一个deb软件包并清除其配置文件时,可以使用…

    2026年9月11日 用户投稿
    000
  • Workerman如何监控性能?Workerman性能指标查看?

    要监控%ignore_a_1%性能,需结合系统工具、内置status命令和专业监控系统。首先通过top、htop查看CPU和内存使用,free -h检查内存,netstat分析连接状态;重点关注TIME_WAIT等异常。利用php your_start.php status获取各子进程PID、连接数…

    2026年9月11日
    100
  • windows怎么配置ntp服务器_Windows网络时间同步配置方法

    首先启用Windows NTP服务器需修改注册表并重启时间服务,其次配置NTP客户端可通过自动设置或手动指定服务器同步时间,企业环境可使用组策略统一管理,还可通过PowerShell脚本实现批量自动化配置。 如果您发现Windows系统的时钟显示不准确,可能导致程序运行异常或日志记录时间错乱,这通常…

    2026年9月11日
    100
  • 如何使用豆包电脑网页版_豆包网页版正版安装指南

    首先访问豆包官网https://www.doubao.com登录使用AI功能,其次可利用网页划词翻译、固定标签页提升效率,并可下载桌面版实现数据同步与扩展功能。 ☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 免费无限量使用 DeepSeek R1 模型☜☜☜ 如果您想在电脑上使用豆包的网页版…

    2026年9月11日
    500
  • Workerman怎么进行资源隔离?Workerman资源限制设置?

    Workerman通过多进程模型实现操作系统级资源隔离,每个Worker进程独立运行,互不影响,主进程可监控并重启异常进程以保障服务稳定。为防止资源滥用,可通过PHP的memory_limit限制单个进程内存,结合Worker::$max_request参数定期重启进程以释放内存;CPU资源则依赖操…

    2026年9月11日
    100
  • VSCode的悬浮窗口可以固定吗?

    可通过快捷键Ctrl+K Ctrl+I(Win/Linux)或Cmd+K Cmd+I(macOS)手动打开更稳定的提示窗口,实现类似固定悬浮窗的效果。 VSCode 的悬浮窗口(比如鼠标悬停时出现的提示框)默认是临时显示的,会随着鼠标移开或点击编辑器其他区域而消失。目前 VSCode 原生并不支持直…

    2026年9月11日
    100
  • win11怎么重命名本地账户_Win11本地账户重命名方法

    可通过控制面板、计算机管理或命令提示符修改Windows 11本地账户名称:先使用控制面板更改显示名称,再通过计算机管理修改用户全名,或用管理员权限的命令提示符执行net user命令完成重命名操作。 如果您希望在Windows 11系统中更改本地账户的显示名称,但发现默认设置选项有限,则需要通过特…

    2026年9月11日
    100
  • VSCode怎么自动加空格_VSCode自动格式化与空格插入规则设置教程

    开启VSCode自动格式化需设置editor.formatOnSave并安装对应语言插件,如JavaScript可搭配Prettier,通过.prettierrc配置空格规则,确保团队统一代码风格。 VSCode自动加空格,简单来说,就是让你的代码更美观、更易读。它可以通过配置VSCode的格式化规…

    2026年9月11日
    300
  • mac怎么调整双击速度_mac鼠标双击速度设置

    调整Mac双击速度可解决触控板或鼠标双击失灵问题,首先进入系统设置→辅助功能→指针控制→鼠标与触控板→更多选项,调节双击滑块并用笑脸图标测试;若无效,更换正常鼠标测试,确认是否硬件故障;再将原鼠标连接至其他电脑,排查是否为设备本身问题。 如果您在使用Mac时发现鼠标或触控板的双击操作难以触发,或者容…

    2026年9月11日
    200
  • win11剪贴板历史记录在哪里看 win11查看剪贴板历史记录方法

    要找回Windows 11中复制的内容,需先开启剪贴板历史记录功能。依次点击“开始”→“设置”→“系统”→“剪贴板”,将“剪贴板历史记录”开关打开;随后使用Win + V快捷键调出历史面板,查看并选择已复制的文本或图片;可对重要内容点击图钉图标进行固定,防止被自动清除;若需跨设备同步,进入“剪贴板”…

    2026年9月11日
    200
  • 百度浏览器搜索结果不准确怎么办 百度浏览器搜索结果优化方法

    答案是掌握正确的搜索方法和优化技巧能解决百度搜索结果不准确的问题。具体包括:使用减号排除无关词、双引号精确匹配短语、site指令限定网站内搜索、filetype指令查找特定文件,并可组合使用;利用时间、内容类型筛选及开启纯净阅读模式减少广告干扰;通过访问加密链接、更新浏览器、设默认主页和清除缓存等方…

    2026年9月11日
    100
  • windows10如何快速启动到高级启动选项菜单_windows10高级启动方法教程

    能登录系统时可通过设置中的更新与安全进入高级启动;2. 按住Shift键并重启可直接进入恢复环境;3. 连续三次强制关机后第四次启动将触发自动修复;4. 使用管理员命令提示符执行shutdown /r /o /f /t 0命令进入选项界面;5. 系统崩溃时可用Windows安装U盘启动并选择修复计算…

    2026年9月11日
    100
  • Linux命令行编辑器vim快捷键总结

    答案是掌握Vim的核心在于理解其模式设计与快捷键逻辑,通过沉浸式练习形成肌肉记忆,利用动词-名词命令结构提升编辑效率,从而在键盘驱动下实现高效文本操作。 Vim快捷键是Linux命令行下高效文本编辑的核心,它们将编辑操作转化为一种近乎本能的语言,一旦掌握,能极大提升开发和系统管理效率。虽然初学时其独…

    2026年9月11日
    200
  • Workerman怎么进行代码调试?Workerman断点调试技巧?

    Workerman调试需结合日志、变量输出和Xdebug断点。日志可用Worker::log()或重定向输出;多进程调试建议设$worker->count=1或结合xdebug_break()与PID条件触发;推荐辅以Monolog日志体系、单元测试、服务监控和代码审查提升效率。 Worker…

    2026年9月11日
    100
  • Linux如何查看软件包的依赖关系树

    Linux如何查看软件包的依赖关系树Linux如何查看软件包的依赖关系树Linux如何查看软件包的依赖关系树Linux如何查看软件包的依赖关系树

    在Linux中查看软件包依赖树需根据发行版选择命令:Debian/Ubuntu用apt-cache depends或apt depends;RHEL/CentOS/Fedora用dnf repoquery –requires –tree;Arch Linux用pactree(…

    2026年9月11日 用户投稿
    200
  • windows10如何重置文件关联的默认程序_windows10默认程序重置方法

    首先通过右键菜单选择默认应用修复单个文件关联,若问题普遍存在可重置系统默认应用设置;接着使用SFC和DISM命令扫描修复系统文件;必要时手动检查注册表中HKEY_CLASSES_ROOT下的文件扩展名关联项;若有备份可通过DISM命令导入AppAssociations.xml恢复全部关联配置。 如果…

    2026年9月11日
    100
  • 暗藏精彩,疾速来袭!飞利浦 Evnia 27M2N8800 畅享“电影级”游戏视界

    暗藏精彩,疾速来袭!飞利浦 Evnia 27M2N8800 畅享“电影级”游戏视界暗藏精彩,疾速来袭!飞利浦 Evnia 27M2N8800 畅享“电影级”游戏视界暗藏精彩,疾速来袭!飞利浦 Evnia 27M2N8800 畅享“电影级”游戏视界暗藏精彩,疾速来袭!飞利浦 Evnia 27M2N8800 畅享“电影级”游戏视界

    在电竞行业快速发展的今天,游戏显示器已经从简单的硬件配件转变为连接虚拟世界与玩家情感的核心交互工具。玩家的需求已从早期单一的高刷新率追求,转变为对色彩准确性、动态流畅性和护眼体验等多维度的全面升级。飞利浦旗下的高端电竞品牌 evnia 始终坚持“各有各的 young”的理念,致力于将尖端显示技术和玩…

    2026年9月11日 用户投稿
    100
  • 淘宝店铺前期大量铺货有用吗?一键铺货怎么上架?从0到1000件!淘宝一键铺货实战教程,7天打造爆款矩阵!

    淘宝开店初期,铺货策略是每位新手卖家必须面对的重要抉择。虽然大量上架商品看似能迅速积累销量与评价,但其背后也潜藏诸多利弊。与此同时,一键铺货上架作为一种高效操作方式,也有明确的流程和注意事项。本文将深入剖析淘宝新店前期铺货的优劣势,全面解读一键铺货的具体操作步骤,并分享实用的高效铺货技巧与风险防控方…

    2026年9月11日
    200
  • 为什么VSCode的插件会影响性能?

    插件影响VSCode性能主要因共享扩展主机进程,低效代码、频繁I/O操作、不当激活事件及插件冲突导致CPU和内存占用过高,建议定期审查并优化插件使用。 VSCode 的插件(也称为扩展)会影响性能,主要是因为它们在编辑器运行时加载并执行代码。虽然插件能大幅提升开发效率,但如果使用不当或安装了质量不佳…

    2026年9月11日
    000
  • Linux如何强制某个用户下线

    强制下线Linux用户需终止其所有进程,先用ps或pkill命令查找并结束进程,推荐先发SIGTERM信号优雅终止,无效再用SIGKILL;可通过锁定账户或修改shell防止再次登录,操作需root权限并注意数据丢失与系统稳定风险。 强制Linux用户下线,其实就是终止该用户的所有进程。理解这一点,…

    2026年9月11日
    200

发表回复

登录后才能评论
关注微信