导语:
“Booting”这个词听起来简单,但它其实是计算机界最浪漫的比喻——计算机必须自己把自己生出来。
今天用最经典的系统管理教材《UNIX and Linux System Administration Handbook》第5版,给你把整个过程讲透,尤其是那个最容易让人困惑的第4步!
计算机开机时,到底发生了什么?
很多人以为按下电源键就完事了,其实背后是一个从零到一、自己拉自己起来的不可能任务。
这个过程的英文叫 Booting,它是 Bootstrapping 的缩写,来源于一句古老的英语习语:
pull yourself up by your own bootstraps
—— 拽着自己的靴带把自己拉起来
正常人不可能拽着鞋带把自己提起来,对吧?但计算机开机干的,就是这个违反直觉的事:内存里什么都没有,却要靠一小段代码把自己完整地“拉”出来运行。
经典教材《UNIX and Linux System Administration Handbook》(第5版)把整个引导过程概括成四个定义广泛的任务。这四个任务不是具体命令,而是高层次的本质拆解,让你一眼看清底层逻辑:
1. Finding, loading, and running bootstrapping code
查找、加载并运行引导代码
- 它负责自检硬件(POST),然后从硬盘/EFI分区找到 Bootloader(比如 GRUB、systemd-boot)。
- Bootloader 被加载到内存并开始运行。
→ 相当于“摸黑找到手电筒并打开它”。
2. Finding, loading, and running the OS kernel
查找、加载并运行操作系统内核
- Bootloader 继续工作,找到内核文件(通常是
/boot/vmlinuz)。 - 内核接管硬件初始化、挂载根文件系统(rootfs)。
→ 相当于“点亮客厅大灯”,系统大脑正式醒来。
3. Running startup scripts and system daemons
运行启动脚本和系统守护进程
- 内核启动第一个用户空间进程(在现代Linux里是 systemd)。
- systemd 执行所有 unit 文件,启动网络、SSH、日志、Docker、图形界面等服务。
- 终于出现登录界面。
→ 很多人以为这就“开机完成了”,其实只是前半场结束。
4. Maintaining process hygiene and managing system state transitions
维护进程卫生 + 管理系统状态转换(最容易被忽略的一步!)
- 进程卫生:清理僵尸进程(zombie)、管理内存、监控服务健康、自动重启崩溃的服务、处理信号(reload、kill)。
- 状态转换:切换运行级别(single-user → multi-user → graphical)、处理休眠/唤醒、热插拔设备、容器启动、重启流程等。
为什么要把这步也算进“引导过程”?
因为在现代 Linux(尤其是 systemd 时代),启动从来不是一个“结束点”,而是一个持续进行的生命周期。
教材原文特别强调:
“只要系统处于启动状态,最后一个要点中包含的活动就会继续,因此引导和正常操作之间的界限本质上有点模糊。”
大白话翻译:
systemd 既是接生婆,又是终身保姆。
前三步把系统“生出来”,第4步则负责从出生到关机的全生命周期管理。
所以你永远看不到一个明确的“引导结束”时刻——它一直在后台默默工作,直到你按下关机键。
总结:为什么这么设计?
这种“模糊边界”的设计,正是 Linux 系统管理哲学的核心:
不要把开机当成一次性事件,而是当成系统全生命周期管理的起点。
这也是 systemd 能取代老式 SysV init 的根本原因——它把“引导”和“运行”无缝融合,让整个系统更健壮、更可控。
下次你的服务器重启卡在某个阶段,或者你写了个 systemd unit 文件时,记得想想这句话:
我们都在拽着自己的靴带,努力把自己拉起来。
你get到了吗?
欢迎在评论区告诉我:
- 你是用 GRUB 还是 systemd-boot?
- 还是想让我再展开讲讲 initramfs / early boot 的细节?
喜欢就点个在看,转发给正在学 Linux 的朋友~
我们下期见,继续聊硬核底层!