Linux 系统启动过程

《Linux 系统启动过程》

🚀 学习目标

  1. 掌握 Linux 系统从开机到登录的整个启动流程。
  2. 理解各个阶段的作用,如 BIOS、GRUB、内核加载、init 进程等。
  3. 能够排查常见启动问题,如 GRUB 故障、内核崩溃等。
  4. 结合阿里云 ECS 实际环境,理解云服务器的启动机制。

🧠 核心重点(表格提炼)

阶段 名称 关键知识点
1️⃣ BIOS/UEFI 自检硬件、寻找可启动设备
2️⃣ MBR & GRUB 引导程序,选择操作系统
3️⃣ 内核加载 初始化硬件、挂载根文件系统
4️⃣ init/systemd 启动系统服务、进入运行级别
5️⃣ 登录界面 提供终端或图形界面供用户登录

🔍 详细讲解

1. BIOS/UEFI 阶段 💾

BIOS(Basic Input Output System)是主板上的一块芯片,负责计算机开机后的第一道程序。

  • 执行加电自检(POST),检查内存、硬盘、CPU 是否正常。
  • 搜索可引导设备(如硬盘、U盘、光驱)。
  • 将控制权交给第一个可引导设备的 MBR(主引导记录)

📌 注意:

  • 在物理机中你可能需要按 DelF2 进入 BIOS 设置启动顺序。
  • 在阿里云 ECS 中,这个阶段由虚拟化平台自动处理,通常不可见。

2. MBR 与 GRUB 阶段 📦

✅ MBR(Master Boot Record)

  • 位于硬盘的第一个扇区(前 512 字节)。
  • 包含:
    • Bootloader(引导代码)
    • 分区表信息
    • 结束标志

如果 MBR 损坏,系统将无法启动!

✅ GRUB(Grand Unified Bootloader)

  • 是一个功能强大的引导程序,用于加载 Linux 内核。
  • 常见版本:GRUB LegacyGRUB2
  • 支持多系统启动(例如同时安装 Windows 和 Linux)

📄 示例:GRUB 菜单截图(伪代码)

GNU GRUB version 2.06
+----------------------------+
| Ubuntu                     |
| Advanced options for Ubuntu|
| CentOS Linux               |
| Memory test (+)            |
+----------------------------+
Use the ↑ and ↓ keys to select an option.

📌 注意:

  • 如果你在阿里云 ECS 上使用的是 CentOS 或 Ubuntu,大多数情况下默认使用 GRUB2
  • 若 GRUB 出现问题,可通过 LiveCD 或救援模式修复。

3. 内核加载阶段 🧠

此阶段的核心任务是将 Linux 内核(vmlinuz)和初始 RAM 磁盘(initrd)加载进内存,并开始执行内核。

主要工作包括:

  • 初始化 CPU、内存、存储控制器等硬件。
  • 挂载临时根文件系统(initramfs 或 initrd)。
  • 加载必要的驱动程序(如硬盘控制器驱动)。
  • 挂载真正的根文件系统(rootfs)。

📄 查看当前使用的内核版本命令:

uname -r

📌 注意:

  • 如果你的根文件系统路径配置错误(如 /etc/default/grub 中的 GRUB_CMDLINE_LINUX),可能导致系统无法挂载根目录而进入紧急模式。
  • 在阿里云 ECS 中,你可以通过 串口控制台 查看启动日志,帮助排错。

4. init/systemd 阶段 🚀

这是系统初始化的关键阶段,决定哪些服务和进程会被启动。

传统方式:System V init(旧版)

  • 使用 /etc/inittab 定义运行级别(runlevel)。
  • 不同 runlevel 对应不同状态:
    • 0:关机
    • 1:单用户模式(恢复用)
    • 3:多用户模式(无图形界面)
    • 5:图形界面模式
    • 6:重启

新一代方式:systemd(现代主流)

  • 更快、更智能、支持并行启动。
  • 单元(unit)管理所有资源(服务、套接字、定时器等)。
  • 默认目标(target)代替 runlevel:
target 类似 runlevel 功能
poweroff.target runlevel 0 关机
rescue.target runlevel 1 单用户模式
multi-user.target runlevel 3 多用户无图形界面
graphical.target runlevel 5 图形界面
reboot.target runlevel 6 重启

📄 查看当前默认启动目标:

systemctl get-default

📄 切换启动目标:

sudo systemctl set-default multi-user.target

📌 注意:

  • systemd 的日志可以通过 journalctl 查看。
  • 阿里云 ECS 一般使用的是 systemd 架构,建议熟悉其基本命令。

5. 登录界面阶段 📲

系统完成初始化后,会显示登录提示符或图形登录界面。

  • 文本登录界面:由 gettyagetty 提供。
  • 图形登录界面:由 gdm(GNOME)、sddm(KDE)等提供。

📄 查看当前登录终端:

who -b

📌 注意:

  • 如果你连接的是阿里云 ECS,通常使用的是 SSH 登录,不会看到图形界面。
  • 可以通过修改 /etc/ssh/sshd_config 来配置 SSH 登录行为(如禁用 root 登录)。

⚙️ 实战案例:ECS 启动异常排查指南 🛠️

假设你的 ECS 实例在启动时出现异常,无法正常登录,以下是排查思路:

1. 使用阿里云控制台的“串口控制台”查看启动日志

  • 登录阿里云控制台 ➝ 找到你的 ECS 实例 ➝ 点击“远程连接” ➝ 选择“串口控制台”
  • 观察是否有如下关键词:
    • kernel panic
    • mount failed
    • grub rescue>
    • no such partition

2. 常见问题及解决方法

错误信息 原因 解决方案
kernel panic 内核损坏或驱动缺失 重装内核、更新 initramfs
mount failed 根文件系统路径错误 修改 grub.cfg 或重建 initramfs
grub rescue> GRUB 文件丢失 使用 chroot 修复 GRUB
failed to mount /sysroot 文件系统损坏 fsck 检查磁盘
could not write bytes: broken pipe SSH 服务未启动 使用串口登录后手动启动 sshd

📌 小技巧:

  • 在阿里云中可以创建镜像快照备份系统盘,防止误操作导致系统损坏。
  • 可使用 dracutupdate-initramfs 工具重建 initramfs。

📚 学习延伸建议

方向 推荐内容
深入了解 GRUB info grubman grub.cfg
理解 initramfs dracut, mkinitcpio, update-initramfs
systemd 管理 systemctl list-units, journalctl -b
启动排错实战 使用 LiveCD 模式修复 MBR、GRUB、文件系统

🧩 总结一句话:

“掌握 Linux 启动过程,就像掌握了打开系统的钥匙🔑 —— 无论你是运维、开发还是安全工程师,这都是必备技能!”

是否继续下一章?我将继续输出:

  • 《Linux 文件系统详解》📁
  • 《用户与权限管理实战》🔐
  • 《Shell 脚本编程入门》🖥️

请告诉我你想深入的方向吧!🎯

posted @ 2023-03-27 19:59  红尘过客2022  阅读(105)  评论(0)    收藏  举报