首页 › programming › 从零手写操作系统内核七强精读

从零手写操作系统内核:七强频道精读

本期概述

这是「YouTube优质内容精选」第2轮,聚焦分类 programming(编程与开发)。

在「Rust系统编程」「编译器与语言实现」「游戏引擎架构」之后,本期选择一个更底层、更"硬核"、却长期被低估的编程子领域——操作系统内核手写实现(Operating System Kernel from Scratch)。它不教你怎么用框架,而是逼你直面一个问题:当没有任何库、没有任何运行时、甚至没有 printf 的时候,计算机究竟是怎么一步步"活"起来的?

本期精选的7个频道/系列,覆盖了从硬件接线到汇编引导、从保护模式与GDT到分页与堆分配、从多任务调度到Rust no_std 现代内核的完整光谱。它们的共同点只有一个字:从零(from scratch)——所有代码都在镜头前一行行敲出来,没有黑盒。

核心发现: - 学习曲线呈"三段式":硬件基础 → 引导与裸机编程 → 内存/中断/调度核心子系统。没有人能跳过第一段直接写内核。 - 语言阵营分化明显:老牌教程以 C + x86 汇编为主(生态成熟、资料多);新锐系列则用 Rust/Zig/C++ 甚至 Jai,强调内存安全与零成本抽象。 - 真正稀缺的不是"怎么做",而是"为什么":最好的频道(Ben Eater、Philipp Oppermann、Casey Muratori)的共同特质,是把 CPU、MMU、中断控制器这些被抽象层遮蔽的硬件,重新摊开给你看。 - 入门门槛仍高,但路径已被前人踩平:现在的初学者不再需要啃 80 年代的 Kernel Tutorial 残篇,7 条成熟路径任选其一即可启程。


七强频道对比总览

# 频道/系列 语言/平台 核心定位 订阅量级 最适合人群
1 Daedalus Community C / x86 汇编 完整 x86 OS 教学系列 ~31.4K 想手把手做完整OS的实战派
2 nanobyte C / GCC 工具链 引导器+内核+工具链全栈 ~30K 喜欢"每行都讲清楚"的细节控
3 Daniel McCarthy(Dragon Zap) C / 32位保护模式 69小时超长系统课 课程类 想要一站式完整课程的学习者
4 Philipp Oppermann(Writing an OS in Rust) Rust / no_std 现代安全内核标杆 GitHub 万星 Rust 学习者、现代内核方向
5 Molly Rocket(Handmade Hero / Casey Muratori) C / 手写引擎 从零无库的大型系统 数十万级 想理解"无依赖系统"如何运转
6 Tsoding / Tsoding Daily(Alexey Kutepov) C / Zig / Jai 多语言 娱乐化底层编程直播 ~200K+ 喜欢边看边玩、抗压能力强的极客
7 Ben Eater 汇编 / 面包板硬件 从门电路理解计算机 ~1.3M 需要补"硬件直觉"的纯软件背景者

逐个深度解读

1. Daedalus Community ——「Making an OS (x86)」系列

频道链接: https://www.youtube.com/@DaedalusCommunity

这是中文圈和英语圈都频频被推荐的"手把手做操作系统"代表作。其标志性系列《Making an OS (x86)》采用章节式结构,从 Chapter 1 的 CPU、汇编、启动过程讲起,一路推进到 保护模式、GDT(全局描述符表)、交叉编译器、引导器、内核入口、动态内存分配器(malloc),几乎覆盖了一个 hobby OS 的全部关键节点。

核心内容与关键洞察: 作者最大的优点是"不跳步"——他会把 GDT、IDT 这类初学者最容易卡住的抽象概念,配合实际代码和寄存器状态逐一拆解。比如 Chapter 6 专门讲"进入保护模式与设置 GDT",把段描述符每一位的含义都画了出来。他还单独做了一个《Making a simple Dynamic Memory Allocator (malloc)》视频,把 malloc/free 的边界标记法(boundary tag)实现讲透,这是很多OS教程语焉不详的部分。

实用价值与应用场景: 如果你只想跟一个系列、做出一个能在真机/虚拟机上跑起来的 x86 多任务内核,这是路径最清晰的选择之一。配套代码可作嵌入式工程师理解 MMU、RTOS、底层调度的绝佳参考。

适合人群: 有 C 语言和基本汇编基础、想动手做一个"能跑的OS"的开发者。


2. nanobyte ——「Building an OS」系列

频道链接: https://www.youtube.com/@nanobyte-dev 系列播放列表: https://www.youtube.com/playlist?list=PLFjM7v6KGMpiH2G-kT781ByCNC_0pKpPN

nanobyte 是另一位以"细节控"著称的 OS 开发者。其《Building an OS》系列从环境搭建、交叉编译器(cross-compiler)、freestanding binary 讲起,到 用 C 写引导器(bootloader)、迁移到 GCC 工具链,每一步都配以详细解说与屏幕共享代码。

核心内容与关键洞察: 这个系列的差异化价值在于对工具链的深度讲解。很多初学者卡在第一步——交叉编译环境装不上、链接脚本(linker script)不会写、multiboot header 对不齐。nanobyte 把这些"脏活"讲得明明白白。他还时常穿插"OS开发中无聊但必要的重构"内容,真实呈现了内核开发的真实节奏:80% 时间在搭脚手架,20% 时间才在写"内核"。

实用价值与应用场景: 适合作为 Daedalus 的互补——一个讲概念深,一个讲工程细。看完能独立搭建起一套 x86 裸机开发工具链,这是所有后续内核工作的地基。

适合人群: 工科思维强、喜欢把环境配置彻底搞懂再动手的工程师。


3. Daniel McCarthy / Dragon Zap Education ——「Kernel Development Masterclass(69小时)」

频道链接: https://www.youtube.com/@DragonZapEducation (及 dragonzap.com 课程站)

这是一个体量惊人的系统化课程——整整 69 小时,目标是从零构建一个支持多任务的 32 位内核,并实现 FAT12 文件系统。从公开的短视频片段看,内容覆盖保护模式开发、任务切换、用户态/内核态分离等硬核主题。

核心内容与关键洞察: Daniel McCarthy 的教学风格偏"课堂录制",结构完整、循序渐进,适合不喜欢直播式东敲西打的系统化学习者。其 FAT12 文件系统实现部分尤其有价值——大多数OS教程止步于"能在屏幕上打印字符",而本课程把磁盘I/O、目录结构、文件读写都做了完整闭环,让OS真正"能用"。

实用价值与应用场景: 适合愿意投入数十小时、追求完整知识体系的学习者;也适合想理解文件系统、磁盘驱动如何落地的存储/固件工程师。

适合人群: 偏好付费/系统课程、希望一条龙走完内核+文件系统的开发者。


4. Philipp Oppermann ——「Writing an OS in Rust」(blog_os)

项目主页: https://os.phil-opp.com/ 代码仓库: https://github.com/phil-opp/blog_os

严格说这是博客系列,但其影响力远超任何单一YouTube频道,是现代 hobby OS 开发的事实标杆。系列从 freestanding Rust binary、VGA 文本模式、内核测试,一路讲到中断、堆分配、分页(paging)、异步内核,每一篇都对应 GitHub 上一个独立分支,可逐步 checkout 复现。

核心内容与关键洞察: 这个系列最大的革命性在于——它证明了 Rust 的内存安全可以在内核态延续。通过 #[no_std]、core 库、alloc crate,作者展示了在没有任何操作系统支持的条件下,如何用 Rust 的所有权与类型系统构建一个内核。后续版本还引入了 async/await 在内核态的应用(基于协作式任务调度),这在传统 C 内核教程里几乎看不到。

实用价值与应用场景: 如果你的目标是现代内核开发(Rust for Linux 风格、嵌入式 RTOS、安全关键系统),这是必读。它也是最好的 Rust 进阶教材之一——理解 no_std 几乎等于理解了 Rust 的所有权模型在最底层的边界。

适合人群: Rust 学习者、对内存安全内核、async runtime 实现感兴趣的开发者。


5. Molly Rocket / Casey Muratori ——「Handmade Hero」

频道链接: https://www.youtube.com/@MollyRocket 完整播放列表: https://www.youtube.com/playlist?list=PLnuhp3Xd9PYTt6svyQPyRO_AAuMWGxPzU 个人频道: https://www.youtube.com/@caseymuratori

Handmade Hero 是一个传奇项目:Casey Muratori 每天直播、从零开始,用一个游戏引擎+游戏的全过程,演示了"不依赖任何第三方库"的软件开发哲学。虽然主题是游戏,但其对内存管理、平台层抽象、热重载、性能优化、手写渲染的讲解,本质上就是一次大型的系统编程教学。

核心内容与关键洞察: Casey 最著名的论断是 "Data-Oriented Design(面向数据设计)" 与对 OOP 过度抽象的批判(代表作《The Big OOPs: Anatomy of a Thirty-five-year Mistake》在 2025 Better Software Conference 再次引发热议)。他的核心方法论:先想清楚数据如何在内存中布局,再谈代码结构。这种思维方式对内核开发同样适用——缓存命中率、内存对齐、分支预测,都建立在"数据怎么摆放"之上。

实用价值与应用场景: Handmade Hero 是理解"无依赖系统如何从零运转"的最佳教材。完整档案达数百集,是耐心者的宝库。其平台层(platform layer)抽象手法,直接可迁移到 OS 内核的 HAL 设计。

适合人群: 追求极致性能、想理解软件与硬件真实交互、有大量时间投入的资深开发者。


6. Tsoding / Tsoding Daily(Alexey Kutepov)

频道链接: https://www.youtube.com/tsoding (主频道) 日志频道: https://www.youtube.com/c/TsodingDaily (~204K–208K 订阅)

Tsoding 自称做的是 "Recreational Programming"(娱乐性编程)——这是一位俄裔程序员以直播形式进行的底层/系统编程"真人秀"。他在频道上用 C、Zig、Jai、Python 等多语言实现各种有趣项目,包括自研语言、模拟器、底层工具,并经常即兴重构。

核心内容与关键洞察: Tsoding 的价值不在于某一条固定教程路径,而在于展示了真实程序员的工作状态:犯傻、调试、推翻重来、吐槽。其播放量最高的视频之一《Writing the Worst Code of My Life》以及《I rewrote my entire project in Jai》都体现了一种反教条的态度——代码先跑通,再谈优雅。对内核学习者的启发是:不必追求一开始就写出完美内核,"丑陋但能跑"也是合法的中间态。

实用价值与应用场景: 适合作为正课之外的"佐餐"——在你被 GDT 搞崩溃时,看 Tsoding 边写边骂,能极大缓解焦虑。他对自研语言/字节码 VM 的实现,对理解内核中的解释器、调度器很有启发。

适合人群: 抗压能力强、喜欢娱乐化学习氛围、对语言实现感兴趣的极客。


7. Ben Eater ——「8-bit Computer & 6502」系列

频道链接: https://www.youtube.com/@BenEater

Ben Eater 是这套清单里最特别的一位——他不写 OS,却几乎是所有 OS 学习者的"必修前置课"。他的代表作是用面包板(breadboard)从门电路搭建一台 8 位计算机,并讲解 6502 CPU、RAM、ALU、总线、微指令的工作原理;此外还有 TCP/IP 网络协议从底层拆解的系列。

核心内容与关键洞察: 为什么 OS 学习者要看 Ben Eater?因为操作系统本质上是"管理硬件"的程序,而不理解 CPU 怎么取指执行、MMU 怎么做地址翻译、中断引脚怎么触发,"内核"就永远是一团抽象。Ben Eater 用最直观的方式——你能看见每一根线、看见时钟脉冲、看见寄存器变化——把被抽象层掩盖的硬件直觉还给你。他的讲解节奏之慢、之清晰,被公认为计算机科学普及的天花板。

实用价值与应用场景: 强烈建议在动手写内核之前先看完 8-bit computer 系列(约 1–2 周)。它会让你之后理解保护模式、分页、中断向量时,有一种"哦,原来如此"的通透感。

适合人群: 纯软件背景、缺乏硬件直觉的所有开发者——无论是否打算写内核。


本期知识结构图

下图呈现7个频道与操作系统内核核心知识域的映射关系,以及建议的学习路径分层:

graph TD
    Goal["目标:从零写出一个能跑的OS内核"]

    subgraph L1["第1层 · 硬件直觉(前置必看)"]
        BE["Ben Eater<br/>面包板 8-bit 计算机<br/>6502 / 门电路 / 总线"]
    end

    subgraph L2["第2层 · 引导与裸机编程"]
        DA["Daedalus Community<br/>GDT / IDT / 保护模式"]
        NB["nanobyte<br/>交叉编译器 / 引导器 / 工具链"]
        DM["Daniel McCarthy<br/>多任务内核 + FAT12"]
    end

    subgraph L3["第3层 · 现代内核与抽象思想"]
        PO["Philipp Oppermann<br/>Rust no_std / 分页 / async"]
        MH["Handmade Hero<br/>面向数据设计 / 平台层"]
    end

    subgraph L4["第4层 · 心态与娱乐佐餐"]
        TS["Tsoding<br/>真实编程状态 / 反教条"]
    end

    Goal --> L1
    BE -->|"理解CPU/内存后才能动手"| L2
    DA -.互补.-> NB
    NB -.互补.-> DM
    L2 -->|"概念扎实后升级"| L3
    PO -.风格对照.-> MH
    L3 --> L4
    TS -.全程佐餐.-> L2
    TS -.全程佐餐.-> L3

    classDef layer1 fill:#e3f2fd,stroke:#1976d2,stroke-width:2px;
    classDef layer2 fill:#fff3e0,stroke:#f57c00,stroke-width:2px;
    classDef layer3 fill:#e8f5e9,stroke:#388e3c,stroke-width:2px;
    classDef layer4 fill:#fce4ec,stroke:#c2185b,stroke-width:2px;
    class BE layer1;
    class DA,NB,DM layer2;
    class PO,MH layer3;
    class TS layer4;

内核子系统与频道对照:

graph LR
    subgraph Kernel["操作系统内核核心子系统"]
        Boot["引导 Boot/Loader"]
        Mem["内存管理 MMU/分页/堆"]
        IRQ["中断与异常 IDT/ISR"]
        Sched["进程/线程调度"]
        FS["文件系统与磁盘IO"]
        SysC["系统调用 用户/内核态"]
    end

    BE2["Ben Eater"] --> IRQ
    DA2["Daedalus"] --> Boot
    DA2 --> Mem
    DA2 --> IRQ
    NB2["nanobyte"] --> Boot
    NB2 --> Mem
    DM2["Daniel McCarthy"] --> Sched
    DM2 --> FS
    PO2["Philipp Oppermann"] --> Mem
    PO2 --> IRQ
    PO2 --> SysC
    MH2["Handmade Hero"] --> Mem
    MH2 --> Sched

学习路径建议(务实版)

  1. 第 0–2 周:建硬件直觉。看 Ben Eater 的 8-bit 计算机系列(约 40 集),建立"代码如何变成电信号"的物理图景。
  2. 第 3–8 周:跟一个完整 x86 系列。Daedalus 或 nanobyte 任选其一作为主线,另一个作查漏补缺的参考。目标是让一个能在 QEMU/真机启动的"Hello Kernel"跑起来。
  3. 第 9–14 周:补齐核心子系统。用 Daniel McCarthy 的课程补 FAT12/调度,或转向 Philipp Oppermann 用 Rust 重写内核,体会内存安全的现代写法。
  4. 长期:思想升级。有空就翻 Handmade Hero,吸收面向数据设计;累了就开 Tsoding 直播解压。

关键提醒: 写内核最大的敌人不是难度,而是环境配置(交叉编译器、QEMU、GRUB/multiboot、链接脚本)。前两周最容易卡在这一步——不要怀疑自己的智商,这是所有人共同的"新手村"。


延伸推荐

  1. OSDev Wiki(wiki.osdev.org) —— hobby OS 开发的"圣经级"参考,查 GDT/IDT/ACPI 任何细节必去之处。
  2. MIT OpenCourseWare 6.S081 / 6.828(Operating System Engineering) —— 学术殿堂级课程,配套 xv6 教学内核与经典论文(Paging、Virtual Memory、Scheduling)研读,把"工程实现"升华为"原理理解"。
  3. "Operating Systems: Three Easy Pieces"(OSTEP) —— 免费在线教材,用对话体讲清虚拟化、并发、持久化三大主题,是理论侧的最佳补充。
  4. Write Your Own 64-bit OS Kernel 系列 —— 较新的现代 64 位长模式内核教程,适合想跳过 16/32 位历史包袱、直奔 64 位的开发者。
  5. OSDev Subreddit / Discord 社区 —— 遇到奇怪崩溃时,这里通常能在几小时内给出指向性建议。

参考来源

  1. Daedalus Community — Making an OS (x86) Chapter 1 — 完整 x86 操作系统章节式教学系列起点,验证频道定位与 31K+ 订阅体量。
  2. nanobyte — Building an OS 播放列表 — 引导器/工具链/内核全栈系列,验证其对交叉编译与工程细节的覆盖。
  3. Philipp Oppermann — Writing an OS in Rust 与 GitHub phil-opp/blog_os — Rust no_std 现代内核标杆,验证分篇逐步可复现的教学结构。
  4. Molly Rocket — Handmade Hero Complete 播放列表 与 Casey Muratori 个人频道 — 验证"从零无库"系统开发与面向数据设计主张。
  5. Ben Eater 频道 与 MIT OCW 6.828 Operating System Engineering — 分别验证"硬件直觉前置课"与"学术原理补充"两个延伸方向。

本文由「51学通信」技术团队出品。51学通信由通信行业18年老兵爱卫生(微信ID: gprshome201101)维护,聚焦5G/6G核心网、3GPP标准解读、通信前沿技术深度分析。 出版作品有《5G核心网原理与实践》《IMS原理与实践》等4本通信专业书籍。知识星球「51学通信」提供深度技术答疑和行业洞察。

[!tip] 51学通信知识星球 星主:爱卫生(微信:gprshome201101)——公众号「51学通信」创办者,19 年通信行业运维与讲师经验,著有《GPRS网络信令实例详解》《EPC原理与实践》《5G核心网原理与实践》三本纸质书(各大电商平台有售)。 星球定位:深耕 5G 核心网、IMS、NFV/AI、云原生等 ICT 领域,主打运维岗位与信令分析。 当前规模:5200 篇主题 / 990 个回答,198 元/年。 加入福利:加入星球后请加爱卫生微信,拉您进知识星球年度陪伴与答疑群——不限量回复您的各种问题,另有群内分享。 AI 加持:51学通信知识星球已作为 skill 接入 WorkBuddy,使用 deepseek-4-flash 在海量星球帖子中精准找贴、找视频、找 FAQ 和案例,做总结、找文档和 PPT 等场景全覆盖。

51学通信知识星球海报-扫码加入