Skip to content
Gains Summary
Main Navigation 首页 / Home
C++ 编程 / C++ Programming
系统与高性能 / Systems & Performance
Web 开发 / Web Development
人工智能 / Artificial Intelligence
工业软件 / Industrial Software
其他内容 / Other Topics
C++ 编程 / C++系统与性能 / SystemsWeb 开发 / Web人工智能 / AI工业软件 / Industrial

外观

Sidebar Navigation

← 系统与高性能 / Systems & Performance

操作系统 / Operating Systems

1. OS 底层知识学习路线 / A Learning Path for Operating System Internals

2. 存储硬件基础 — 磁盘到底怎么存数据 / Storage Hardware Fundamentals: How Disks Store Data

3. BIOS vs UEFI — 固件的本质 / BIOS and UEFI: Understanding Firmware

4. 磁盘分区表 — GPT 与 MBR / Disk Partition Tables: GPT and MBR

5. 文件系统核心概念 — inode、journal、COW / Filesystem Concepts: Inodes, Journaling, and Copy-on-Write

6. 常见文件系统格式详解 — FAT 到 ZFS 的进化史 / Filesystem Formats from FAT to ZFS

7. Linux 启动全流程 — 从通电到登录提示符 / The Linux Boot Process from Power-On to Login

8. Windows 启动全流程 — 与 Linux 的对比视角 / The Windows Boot Process in Comparison with Linux

9. Linux 文件系统层次结构 (FHS) — 目录树的哲学 / The Linux Filesystem Hierarchy Standard

10. Linux 挂载机制 — mount、VFS 与 fstab / Linux Mounting with Mount, VFS, and Fstab

11. Linux 磁盘管理实战 — 从分区到挂载全流程 / Practical Linux Disk Management from Partitioning to Mounting

12. Windows 磁盘与文件系统 — 盘符帝国的秩序 / Windows Disks and Filesystems

13. ext4 深入 — 从超级块到 Extent Tree / Ext4 in Depth from Superblocks to Extent Trees

14. btrfs 深入 — B-tree 是万能的 / Btrfs in Depth and Its B-Tree Architecture

15. 双系统 — EFI 分区共存与 GRUB chainload / Dual Boot with Shared EFI Partitions and GRUB Chainloading

本页目录

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│
└───────────────────┘    └───────────────────┘    └───────────────────┘
1
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 的故事
  • fdisk vs gdisk vs parted:什么时候用哪个

为什么重要:

你 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——一切皆文件哲学的最高体现
  • /tmp vs /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
  • mount umount findmnt lsblk 命令实战

为什么重要:

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-3g vs 内核 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.efi
    • EFI/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]] - 工业软件学习路线

学习状态:🟡 开始学习

最后更新于:

Pager
上一篇← 系统与高性能 / Systems & Performance
下一篇2. 存储硬件基础 — 磁盘到底怎么存数据 / Storage Hardware Fundamentals: How Disks Store Data

持续记录,持续成长

Copyright © Tidenflow