Linux系统启动过程的阶段有哪些

来源:IPIPP.com作者:头衔:全栈工程师
导读:本期聚焦于小伙伴创作的《Linux系统启动过程的阶段有哪些》,敬请观看详情,探索知识的价值。以下视频、文章将为您系统阐述其核心内容与价值。如果您觉得《Linux系统启动过程的阶段有哪些》有用,将其分享出去将是对创作者最好的鼓励。

Linux系统启动是从硬件上电到用户可正常操作系统的完整流程,整个过程由多个阶段依次衔接完成,每个阶段都有明确的职责和对应的执行程序。

Linux系统启动过程的阶段有哪些

Linux系统启动的核心阶段

1. BIOS/UEFI硬件自检阶段

按下电源键后,主板上的BIOS(基本输入输出系统)或UEFI(统一可扩展固件接口)首先运行,完成硬件检测工作。这个阶段会检查CPU、内存、硬盘、显卡等硬件是否正常,同时根据预设的启动顺序查找可引导设备,比如硬盘、U盘、光盘等。找到引导设备后,会读取设备第一个扇区的内容,也就是主引导记录(MBR)或者GPT分区表的引导信息,将后续引导权交给引导加载程序。

2. 引导加载程序(Bootloader)阶段

最常见的Linux引导加载程序是GRUB2,它会被BIOS/UEFI加载到内存中运行。这个阶段的主要作用是为用户展示启动选项,比如选择不同内核版本、进入救援模式等。用户选择启动项后,GRUB2会从硬盘中加载Linux内核文件和初始内存文件系统(initramfs)到内存,然后将控制权交给内核。

如果是GRUB2的配置场景,相关配置文件内容示例如下:

# GRUB2配置文件示例 /etc/default/grub
GRUB_DEFAULT=0
GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
GRUB_CMDLINE_LINUX="crashkernel=auto rd.lvm.lv=centos/root rd.lvm.lv=centos/swap rhgb quiet"
GRUB_DISABLE_RECOVERY="true"

3. 内核初始化阶段

内核被加载到内存后,首先会进行自身解压和初始化,检测所有硬件设备,加载对应的硬件驱动。之后内核会挂载initramfs作为临时根文件系统,initramfs中包含了挂载真实根文件系统所需的驱动和工具。内核完成临时文件系统挂载后,会切换到真实的系统根目录,然后启动第一个用户空间进程,也就是PID为1的进程,传统系统中是init进程,现代多数发行版中是systemd进程。

4. 用户空间初始化阶段

PID为1的进程会负责后续的系统初始化工作。如果是init进程,会根据/etc/inittab文件的配置,依次启动不同运行级别对应的系统服务。如果是systemd进程,会读取对应的target单元文件,按照依赖关系依次启动系统服务、挂载文件系统、配置网络等。这个阶段会完成系统基础服务的启动,比如日志服务、网络服务、定时任务服务等。

查看当前systemd默认启动target的命令示例如下:

# 查看当前系统默认启动的target
systemctl get-default
# 查看multi-user.target包含的所有服务单元
systemctl list-dependencies multi-user.target

5. 用户登录阶段

系统服务启动完成后,会启动终端程序或者显示管理器。如果是命令行模式,会展示登录提示符,用户输入用户名和密码后,系统验证通过会加载用户对应的shell环境,比如bash。如果是图形界面模式,显示管理器会展示图形化登录界面,用户登录后进入桌面环境,此时整个启动流程完成,用户可以正常操作系统。

不同启动阶段的故障排查方向

如果系统启动失败,可以根据卡住的阶段定位问题:如果是硬件自检阶段卡住,通常是硬件故障或者启动顺序配置错误;如果是引导加载程序阶段卡住,可能是GRUB2配置损坏或者内核文件丢失;如果是内核初始化阶段卡住,可能是硬件驱动不兼容或者initramfs文件损坏;如果是用户空间初始化阶段卡住,可能是某个系统服务启动失败导致。

启动阶段核心执行程序常见故障原因
硬件自检BIOS/UEFI硬件损坏、启动顺序错误
引导加载GRUB2引导配置损坏、内核文件丢失
内核初始化Linux内核驱动不兼容、initramfs损坏
用户空间初始化init/systemd服务启动失败、配置文件错误
用户登录终端/显示管理器用户密码错误、shell配置损坏
注意:不同Linux发行版的启动细节可能存在差异,比如部分嵌入式Linux系统可能使用简化的init程序,没有systemd和GRUB2,但是核心的硬件检测、内核加载、服务初始化的逻辑是一致的。

理解Linux系统启动的每个阶段,不仅能帮助用户快速定位启动类故障,也能更深入理解Linux系统的运行原理,为后续的运维和开发工作打下基础。

Linux启动过程init进程systemdbootloader修改时间:2026-07-05 11:36:23

免责声明:​ 已尽一切努力确保本网站所含信息的准确性。网站内容多为原创整理与精心编撰,观点力求客观中立。本站旨在免费分享,内容仅供个人学习、研究或参考使用。若引用了第三方作品,版权归原作者所有。如内容涉及您的权益,请联系我们处理。
内容垂直聚焦
专注技术核心技术栏目,确保每篇文章深度聚焦于实用技能。从代码技巧到架构设计,为用户提供无干扰的纯技术知识沉淀,精准满足专业提升需求。
知识结构清晰
覆盖从开发到部署的全链路。AI、前端、编程、数据库、服务器、建站、系统层层递进,构建清晰学习路径,帮助用户系统化掌握开发与运维所需的核心技术。
深度技术解析
拒绝泛泛而谈,深入技术细节与实践难点。无论是数据库优化还是服务器配置,均结合真实场景与代码示例进行剖析,致力于提供可直接应用于工作的解决方案。
专业领域覆盖
精准对应开发生命周期。从前端界面到后端编程,从数据库操作到服务器运维,形成完整闭环,一站式满足全栈工程师和运维人员的技术需求。
即学即用高效
内容强调实操性,步骤清晰、代码完整。用户可根据教程直接复现和应用于自身项目,显著缩短从学习到实践的距离,快速解决开发中的具体问题。
持续更新保障
专注既定技术方向进行长期、稳定的内容输出。确保各栏目技术文章持续更新迭代,紧跟主流技术发展趋势,为用户提供经久不衰的学习价值。