OS 底层知识学习路线 / A Learning Path for Operating System Internals
📅 创建时间:2026-06-17 🏷️ 标签:#OS #底层 #启动 #文件系统 #学习路线 📚 前置知识:计算机组成原理基础
📋 文档目标
本文档为操作系统底层知识学习提供系统性的路线图。通过本系列学习,你将:
- 理解存储硬件的工作原理——HDD 和 SSD 到底在盘片/芯片里做了什么
- 理解固件(BIOS/UEFI)的本质——按下电源键之后发生的第一件事
- 掌握磁盘分区表——GPT 和 MBR 的二进制结构及其设计逻辑
- 理解文件系统的核心概念——inode、journal、COW 到底是什么
- 横向对比主流文件系统格式——FAT32/NTFS/ext4/btrfs/XFS 的 trade-off
- 理解 Linux 完整启动链——从 GRUB 到登录提示符
- 理解 Windows 启动链——Boot Manager 如何与 UEFI 协作
- 掌握 Linux 磁盘管理实战——能够独立完成分区、格式化、挂载
- 深入 ext4 和 btrfs 的内部结构——从数据结构到设计哲学
- 理解双系统如何共存——EFI 分区里到底放了什么
🗺️ 学习路径总览
┌─────────────────────────────────────────────────────────────────────────────┐
│ OS 底层知识学习路线 │
└─────────────────────────────────────────────────────────────────────────────┘
第1阶段:通用基础(第1-5篇)
┌───────────────────┐ ┌───────────────────┐ ┌───────────────────┐
│ 存储硬件 │ → │ BIOS vs UEFI │ → │ 分区表 │
│ HDD/SSD/NVMe │ │ 固件的本质 │ │ GPT / MBR │
└───────────────────┘ └───────────────────┘ └───────────────────┘
↓
┌───────────────────┐ ┌───────────────────┐
│ 文件系统核心概念 │ → │ 文件系统格式对比 │
│ inode/journal/COW │ │ FAT/NTFS/ext4/... │
└───────────────────┘ └───────────────────┘
第2阶段:启动链路(第6-7篇)
┌─────────────────────────────────────────────────────────────────┐
│ │
│ ┌───────────────────────┐ ┌───────────────────────┐ │
│ │ Linux 启动全流程 │ ↔ │ Windows 启动全流程 │ │
│ │ 通电→GRUB→内核→登录 │ 对比 │ 通电→BootMgr→登录 │ │
│ └───────────────────────┘ └───────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────┘
第3阶段:Linux 文件系统(第8-11篇)
┌───────────────────┐ ┌───────────────────┐
│ Linux 目录结构 │ → │ 挂载机制 │
│ FHS │ │ mount / fstab │
└───────────────────┘ └───────────────────┘
↓ ↓
┌───────────────────┐ ┌───────────────────┐
│ 磁盘管理实战 │ │ Windows 对照 │
│ fdisk→mkfs→mount│ │ 盘符vs挂载点 │
└───────────────────┘ └───────────────────┘
第4阶段:深入与收尾(第12-14篇)
┌───────────────────┐ ┌───────────────────┐ ┌───────────────────┐
│ ext4 深入 │ → │ btrfs 深入 │ → │ 双系统共存 │
│ inode/block group│ │ COW/subvolume │ │ EFI分区/chainload│
└───────────────────┘ └───────────────────┘ └───────────────────┘2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
📚 各章节详情
第1阶段:通用基础
01 - 存储硬件基础
文件名:01-storage-hardware.md
核心内容:
- HDD:盘片、磁头、磁道、扇区——机械硬盘的物理世界
- SSD:NAND Flash、FTL 映射层、GC(垃圾回收)、写入放大
- NVMe 协议:为什么比 SATA 快那么多——队列深度与 PCIe 直连
- LBA 寻址:从 CHS 到逻辑块地址——操作系统看到的是什么
- 4K 扇区与 512e 模拟
lsblk输出的每一列到底代表什么
为什么重要:
不理解硬件,就理解不了为什么分区要对齐、为什么 SSD 需要 TRIM、为什么 btrfs 的 COW 在 HDD 上是灾难。这一章把
lsblk的输出变成可理解的信息。
预计学习时间:40 分钟
02 - BIOS vs UEFI:固件的本质
文件名:02-firmware-bios-uefi.md
核心内容:
- 按下电源键到第一条指令执行——CPU 的复位向量
- BIOS:16 位实模式、中断向量表、POST 自检、Legacy 启动
- 为什么 BIOS 是"历史的包袱"——1MB 地址空间、MBR 512 字节的根源
- UEFI:32/64 位保护模式、GUID 分区表、ESP 分区、安全启动
- CSM(兼容性支持模块):新旧世界的桥梁
- 如何查看你的电脑是 BIOS 还是 UEFI 模式
为什么重要:
BIOS/UEFI 决定了分区表选 MBR 还是 GPT,决定了 bootloader 怎么装。Arch 安装第一步就是确认
/sys/firmware/efi是否存在——这一章告诉你为什么。
预计学习时间:45 分钟
03 - 磁盘分区表:GPT 与 MBR
文件名:03-partition-table.md
核心内容:
- 为什么需要分区——一个磁盘装多个系统的需求
- MBR 结构:引导代码(446B) + 分区表(64B) + 魔数(2B)——深入每个字节
- 主分区 / 扩展分区 / 逻辑分区的蹩脚设计
- GPT 结构:Protective MBR + GPT Header + Partition Entry Array
- GPT 的分区类型 GUID——为什么每个分区有"身份证"
- 分区对齐:1MiB 偏移的来历——4K 扇区与 SSD page 的故事
fdiskvsgdiskvsparted:什么时候用哪个
为什么重要:
你 Arch 安装时用
fdisk创建的分区,本质上是在一张表里写入起始 LBA 和结束 LBA。理解分区表结构,才理解"删除分区"为什么不会删除数据。
预计学习时间:50 分钟
04 - 文件系统核心概念
文件名:04-filesystem-concepts.md
核心内容:
- 文件系统的职责:从"给一个文件名"到"读一个磁盘块"
- inode 概念:为什么文件名和文件数据是分开存储的
- 目录的本质:一张"文件名 → inode 号"的映射表
- 超级块(Superblock):文件系统的"身份证"
- 日志(Journal):为什么突然断电不会损坏文件系统
- 写时复制(COW):btrfs 和 ZFS 的核心设计哲学
- 硬链接 vs 符号链接——inode 视角的解释
- 权限模型:UGO/rwx 的存储方式
为什么重要:
文件系统是"磁盘"和"文件"之间的翻译层。不理解 inode,
ls -i的输出就是一堆神秘的数字。这一章让这些数字变成有意义的东西。
预计学习时间:45 分钟
05 - 常见文件系统格式详解
文件名:05-filesystem-formats.md
核心内容:
- FAT32:最简单的文件系统——FAT 表 + 目录项 + 簇链,为什么有 4GB 限制
- exFAT:FAT32 的进化——去掉 4G 限制,专为闪存优化
- NTFS:Windows 的基石——MFT(主文件表)、$MFT 文件、ADS(备用数据流)、ACL 权限、USN 日志
- ext4:Linux 的默认选择——extent tree、延迟分配、journal 三种模式
- btrfs:下一代 Linux 文件系统——COW、subvolume、snapshot、透明压缩、内置 RAID
- XFS:为大文件而生——B+ 树分配组、延迟分配、在线扩容
- ZFS:完整存储栈——pool + dataset、copy-on-write、checksum、scrub
- 横向对比表:什么时候选什么文件系统
为什么重要:
你 Arch 安装时选了 btrfs——但为什么不是 ext4?为什么
/boot只能是 FAT32?这一章回答这些"选型"问题。
预计学习时间:50 分钟
第2阶段:启动链路
06 - Linux 启动全流程
文件名:06-linux-boot.md
核心内容:
- 阶段1:UEFI/BIOS → 找到 ESP 里的
.efi文件 → 执行 - 阶段2:GRUB 的工作——加载
grub.cfg、显示菜单、加载内核 - 阶段3:Linux 内核解压——
bzImage的自解压过程 - 阶段4:initramfs——为什么需要临时根文件系统、里面放了什么
- 阶段5:systemd 作为 PID 1——挂载真实根文件系统、启动服务
- 阶段6:getty → 登录提示符
- 完整链路回顾——每个阶段的输入和输出
为什么重要:
这是整个系列的"主线剧情"。你每天开机看到的 GRUB 菜单,背后是这六个阶段的协作。理解这条链路,启动问题不再需要重装系统。
预计学习时间:50 分钟
07 - Windows 启动全流程
文件名:07-windows-boot.md
核心内容:
- 阶段1:UEFI →
bootmgfw.efi(Windows Boot Manager) - 阶段2:BCD(Boot Configuration Database)——Windows 的"grub.cfg"
- 阶段3:
winload.efi加载 Windows 内核(ntoskrnl.exe) - 阶段4:内核初始化——HAL、驱动、SMSS、Winlogon
- 与 Linux 启动链的逐步对比
- 快速启动(Fast Startup)的本质——休眠内核会话
为什么重要:
理解 Windows 启动链不是为了学 Windows——而是要理解"同样是 UEFI 启动,为什么两个 OS 的引导路径完全不同"。这对理解双系统的 EFI 分区结构至关重要。
预计学习时间:35 分钟
第3阶段:Linux 文件系统
08 - Linux 文件系统层次结构 (FHS)
文件名:08-linux-fhs.md
核心内容:
/根目录——树的起点/boot——为什么必须单独分区(ESP 要求 FAT32 的兼容性原因)/home——用户数据的家,为什么单独分区便于重装/etc——配置的王国,文本文件 vs Windows 注册表/var——不断变化的数据(日志、缓存、数据库)/usr——/usr/bin、/usr/lib、/usr/share 的拆分逻辑/proc和/sys——伪文件系统,内核数据的窗口/dev——一切皆文件哲学的最高体现/tmpvs/var/tmp——临时的两种语义
为什么重要:
FHS 不是随意设计的。每个目录的位置都有历史原因和工程考量。你 Arch 安装时挂载了
/、/boot、/home三个分区——这一章解释为什么是这三个。
预计学习时间:40 分钟
09 - Linux 挂载机制
文件名:09-linux-mount.md
核心内容:
mount系统调用:把块设备"插"到目录树- VFS(Virtual File System)——Linux 的"文件系统抽象层"
/etc/fstab详解:六列每一列的含义和常见错误- UUID vs 设备路径——为什么 fstab 用 UUID 而不是
/dev/sda1 - bind mount——把目录挂到另一个目录
- tmpfs 与 ramfs——内存里的文件系统
- 挂载选项详解:
noatime、compress、discard、subvol mountumountfindmntlsblk命令实战
为什么重要:
Arch 安装时你执行的那串
mount命令,本质上是在告诉内核:"把这个块设备上的文件系统,挂到这棵目录树的这个位置"。理解 VFS 和挂载机制,df -h的输出就完全透明了。
预计学习时间:45 分钟
10 - Linux 磁盘管理实战
文件名:10-linux-disk-practice.md
核心内容:
- 完整演练:从插入一块新磁盘到文件可读写
lsblk查看磁盘拓扑fdisk/gdisk创建分区mkfs.ext4/mkfs.btrfs格式化mount挂载/etc/fstab实现开机自动挂载df -h/du -sh检查使用量
parted非交互式分区脚本wipefs清除旧文件系统签名blkid查看 UUID 和文件系统类型ls -la /dev/disk/by-uuid/——内核给你的 UUID 快捷方式- 常见错误排查:分区表残留、挂载点非空、UUID 冲突
为什么重要:
这是你在 Arch 安装那天做的所有磁盘操作的回放与详解。学完这一章,你应该能不看任何教程独立完成 Linux 安装的磁盘部分。
预计学习时间:50 分钟
11 - Windows 磁盘与文件系统
文件名:11-windows-disk-fs.md
核心内容:
- 磁盘管理 MMC——Windows 的"fdisk"
diskpart——命令行分区工具详解- 基本磁盘 vs 动态磁盘
- 盘符(Drive Letter)的本质:DOS 遗产,不是挂载点
- NTFS 挂载到目录——Windows 也支持类 Unix 挂载
- NTFS 深入:MFT 主文件表的结构、$MFT 元文件、ADS(备用数据流)、USN Journal
- ReFS:微软的下一代文件系统——COW、checksum、与 btrfs/ZFS 的对比
- Storage Spaces:Windows 的软件 RAID 和存储池
- Linux 如何读写 NTFS——
ntfs-3gvs 内核ntfs3驱动
为什么重要:
作为对照品,Windows 的文件系统设计处处能照出 Linux 的影子。盘符和挂载点的对比尤其能加深对 Linux 挂载机制的理解。
预计学习时间:40 分钟
第4阶段:深入与收尾
12 - ext4 深入
文件名:12-ext4-deep-dive.md
核心内容:
- 超级块结构——文件系统的元数据之锚
- Block Group 布局——为什么把磁盘分成多个组
- inode 结构深入——12 个直接指针 + 间接块 + 二级间接 + 三级间接
- Extent Tree——ext4 对间接块的革命性替代
- Journal 三种模式:journal / ordered / writeback——真实场景的性能和安全性对比
- ext2 → ext3 → ext4 演进史——每个版本解决了什么问题
dumpe2fs/debugfs实操:直接从磁盘读 inode 数据
为什么重要:
ext4 是 Linux 世界装机量最大的文件系统。它的设计是教科书级的——块组、extent、journal 三个概念构成了经典文件系统架构。
预计学习时间:55 分钟
13 - btrfs 深入
文件名:13-btrfs-deep-dive.md
核心内容:
- btrfs 的整体架构——B-tree 是一切
- COW 的底层实现——一棵叶子被修改,整条路径复制
- Subvolume——btrfs 的"分区",但不需要预先规划大小
- Snapshot——基于 COW 的瞬间快照,几乎不占空间
- 透明压缩(zstd/lzo/zlib)——读时解压,写时压缩,应用无感知
- 内置 RAID 支持——不需要 mdadm
- Send/Receive——增量传输子卷状态
- btrfs 的已知缺陷:RAID5/6 write hole、碎片化、fsck 不完善
- 与 ZFS 的对比——性能、生态、成熟度
为什么重要:
你在 Arch 安装时选择了 btrfs——这是 Linux 世界最具雄心的文件系统。理解它的 COW 和 subvolume 设计,才能用好快照、回滚这些让你"不怕折腾"的特性。
预计学习时间:55 分钟
14 - 双系统:EFI 分区共存与 GRUB chainload
文件名:14-dual-boot.md
核心内容:
- EFI 分区(ESP)的内部结构——Linux 和 Windows 各自放了什么
EFI/Microsoft/Boot/bootmgfw.efiEFI/Linux/grubx64.efi或EFI/systemd/systemd-bootx64.efi
- UEFI 启动项管理——
efibootmgr和 NVRAM 启动条目 - GRUB 的
os-prober——如何自动发现 Windows 并生成菜单项 - GRUB chainload 原理——把执行权交给另一个
.efi文件 - systemd-boot 的多系统配置
- 常见故障:Windows 更新覆盖 EFI 条目、GRUB 找不到 Windows
- 修复实战:用 Arch Live USB 重建 GRUB 和 EFI 条目
为什么重要:
这是整个系列的终点。你每天开机看到的 GRUB 菜单——
Arch Linux和Windows Boot Manager两个选项——这一章完整解释这两个选项的来龙去脉。这一章也是最实用的:双系统出问题时不需要重装。
预计学习时间:40 分钟
📊 学习统计
| 指标 | 数值 |
|---|---|
| 文档总数 | 15 篇(含本总览) |
| 总预计学习时间 | 约 10.5 小时 |
| 覆盖文件系统 | FAT32 / exFAT / NTFS / ext4 / btrfs / XFS / ZFS / ReFS |
| 覆盖启动方式 | BIOS Legacy / UEFI / CSM |
| 实战环节 | Linux 磁盘管理完整演练、双系统修复演练 |
| 深入程度 | 从通电到登录的全链路追踪 |
🎯 学习目标检验
完成本路线后,你应该能够:
- [ ] 解释 HDD 和 SSD 在物理层面的本质差异,以及这些差异如何影响文件系统设计
- [ ] 画出从按下电源键到 Linux 登录提示符的完整时序图
- [ ] 对比 BIOS Legacy 启动和 UEFI 启动的每一步差异
- [ ] 解析 MBR 的 512 字节结构,说出每个字节的用途
- [ ] 解析 GPT Header 和 Partition Entry 的关键字段
- [ ] 解释 inode、journal、COW 三种机制解决了什么问题
- [ ] 为不同场景(桌面/服务器/NAS/移动存储)选择合适的文件系统
- [ ] 独立完成
fdisk → mkfs → mount → fstab的全部分区操作 - [ ] 理解
/etc/fstab每一列的含义,并能排查挂载失败问题 - [ ] 解释 GRUB chainload 如何实现双系统切换
- [ ] 用
efibootmgr管理 UEFI 启动项
🚀 开始学习
第一步:01 - 存储硬件基础
或根据你的兴趣跳转到任意章节——每篇都是自包含的(前置知识用双链标注)。
相关笔记
- [[/04-ai/01-llm-engineering/00-llm-overview]] - LLM 学习路线
- [[/04-ai/02-agent-engineering/00-agent-overview]] - Agent 学习路线
- [[/05-industrial-software/00-overview]] - 工业软件学习路线
学习状态:🟡 开始学习