首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >解析系统启动流程:BIOS/UEFI → Bootloader → Kernel → Init

解析系统启动流程:BIOS/UEFI → Bootloader → Kernel → Init

原创
作者头像
智维攻城狮
发布2025-09-03 09:50:28
发布2025-09-03 09:50:28
38500
代码可运行
举报
文章被收录于专栏:Linux运维Linux运维
运行总次数:0
代码可运行

解析系统启动流程:BIOS/UEFI → Bootloader → Kernel → Init

在操作系统的世界里,从按下电源键到看到熟悉的登录界面,中间经历了一个精密而有序的启动流程。本文将从底层硬件到用户空间,逐步解析 BIOS/UEFI → Bootloader → Kernel → Init 的启动链路,并结合实战经验给出优化与排错建议。

1️⃣ BIOS / UEFI 阶段

1.1 BIOS(Basic Input/Output System)

  • 位置:主板固化的固件程序(ROM/Flash)
  • 作用
    • 上电自检(POST,Power-On Self Test)
    • 初始化硬件(CPU、内存、显卡、存储控制器等)
    • 按启动顺序查找可引导设备(硬盘、U盘、网络等)
    • 将控制权交给引导扇区(MBR)或 EFI 分区

1.2 UEFI(Unified Extensible Firmware Interface)

  • 优势
    • 支持 GPT 分区(突破 MBR 2TB 限制)
    • 图形化界面、鼠标操作
    • 更快的启动速度
    • 安全启动(Secure Boot)机制
  • 启动方式
    • 从 EFI 系统分区(ESP)加载 .efi 引导程序(如 grubx64.efi

💡 实战提示

  • BIOS 模式下,启动扇区位于磁盘 第一个扇区(LBA 0),大小 512 字节。
  • UEFI 模式下,ESP 分区通常是 FAT32 格式,挂载点 /boot/efi

2️⃣ Bootloader 阶段

Bootloader 是连接固件与内核的桥梁,负责将内核加载到内存并传递启动参数。

常见 Bootloader

Bootloader

适用系统

特点

GRUB2

Linux

功能强大,支持多系统引导

LILO

Linux

早期引导器,已较少使用

systemd-boot

Linux

简洁,适合 UEFI 环境

Windows Boot Manager

Windows

与 Windows 紧密集成

工作流程

  1. 读取配置文件(如 /boot/grub/grub.cfg
  2. 显示启动菜单
  3. 根据选择加载对应内核与 initramfs
  4. 将控制权交给内核

💡 实战提示

  • GRUB 故障时,可用 LiveCD 进入系统,grub-install + update-grub 修复。
  • 多系统环境建议使用 GRUB 统一管理启动项。

3️⃣ Kernel 阶段

内核是操作系统的核心,负责管理硬件与软件资源。

启动流程

  1. 解压内核映像vmlinuz
  2. 挂载临时根文件系统(initramfs/initrd)
  3. 硬件探测与驱动加载
  4. 挂载真实根文件系统
  5. 启动第一个用户空间进程(Init)

💡 实战提示

  • 内核参数可在 GRUB 菜单编辑(如 root=/dev/sda2single 单用户模式)。
  • 内核日志可通过 dmesg 查看启动过程。

4️⃣ Init 阶段

Init 是用户空间的第一个进程(PID 1),负责启动系统服务与用户会话。

常见 Init 系统

Init 系统

特点

SysVinit

传统脚本驱动,按运行级别启动

Upstart

事件驱动,Ubuntu 曾使用

systemd

并行启动,依赖管理,现代 Linux 主流

systemd 启动流程

  1. 读取 /etc/systemd/system/default.target
  2. 按依赖关系并行启动服务
  3. 切换到多用户模式或图形界面

💡 实战提示

  • 查看启动耗时:systemd-analyze
  • 查看服务启动顺序:systemd-analyze blame
  • 单用户模式修复系统:在 GRUB 内核参数添加 systemd.unit=rescue.target

5️⃣ 启动流程总览图

mermaid

代码语言:javascript
代码运行次数:0
运行
复制
graph TD
A[BIOS/UEFI] --> B[Bootloader]
B --> C[Kernel]
C --> D[Init]
D --> E[系统服务 & 用户会话]

6️⃣ 常见启动故障与排查思路

故障阶段

典型问题

排查方法

BIOS/UEFI

无法识别硬盘

检查硬件连接、BIOS 设置

Bootloader

GRUB 丢失

LiveCD 修复引导

Kernel

Kernel panic

检查内核参数、驱动模块

Init

服务无法启动

查看 journalctl -xe 日志

img
img

总结

系统启动流程是一个 分层接力 的过程:

  1. BIOS/UEFI:硬件初始化与引导设备选择
  2. Bootloader:加载内核与启动参数
  3. Kernel:硬件管理与根文件系统挂载
  4. Init:启动用户空间与服务

理解这一流程,不仅能帮助我们优化启动速度,还能在系统故障时快速定位问题。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 解析系统启动流程:BIOS/UEFI → Bootloader → Kernel → Init
    • 1️⃣ BIOS / UEFI 阶段
      • 1.1 BIOS(Basic Input/Output System)
      • 1.2 UEFI(Unified Extensible Firmware Interface)
    • 2️⃣ Bootloader 阶段
      • 常见 Bootloader
      • 工作流程
    • 3️⃣ Kernel 阶段
      • 启动流程
    • 4️⃣ Init 阶段
      • 常见 Init 系统
      • systemd 启动流程
    • 5️⃣ 启动流程总览图
    • 6️⃣ 常见启动故障与排查思路
    • 总结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档