自己动手从零构建Linux操作系统_前言
目录
前言
我用AI写了本书
本书是靠人工经验选方向,用AI辅助实验以及交叉手工验证等方式完成,原创在本站(https://oser.space),会不定期更新和修改,以本站为准,欢迎关注。

这本书想解决什么问题?
很多人每天都在用 Linux——敲命令、跑服务、部署容器——却对它「底层是怎么跑起来的」只有一个模糊的概念。
内核、Shell、根文件系统、/init、UEFI、GRUB……这些词耳熟能详,可一旦要把它们亲手拼装成一个能启动的系统,大多数没实际经验的人都会卡住:
- 内核到底是怎么被「加载」到内存的?
- 为什么要有 initramfs?它和真正的根文件系统是什么关系?
- UEFI 固件找到的那个
BOOTX64.EFI到底是什么格式? - 一块硬盘里的文件,怎么就变成了系统中的
/?
市面上讲内核源码的书太多、而且比较深,讲 Linux 运维/使用的书又往往停在「会用」这一层。 本书想补上中间的断层:—— 从编出一个能启动的内核开始,一步步走到可以从磁盘镜像开机、最终可实际在生产上更新和使用UI界面和软件更新的操作系统。
💡 核心理念:理解一个东西最好的方式,是亲手把它做一遍。 当你为了让一个自己编译的内核进入 Shell,不得不去理解 initramfs、
/init、switch_root、 UEFI 启动链时,这些概念就不再是死记硬背的名词,而是你亲手踩过坑、调通过的零件。
目标读者
本书假定你:
- ✅ 熟悉 Linux 基本命令(
ls、cd、mount、cp等),能在终端里工作 - ✅ 写过或至少读过简单的 Shell 脚本
- ✅ 知道什么是「编译」(有
gcc、make的基本概念) - ⚠️ 不需要精通汇编、不需要读过内核源码、不需要懂硬件电路
如果你属于「用过 Linux,但一直好奇它底层长什么样」的那一类人,这本书就是为你写的。
我们会造出什么样的系统?
最终想法是造出一个能在生产环境使用的、有图形界面、有软件更新的操作系统。可以真实的用起来,采用最新的Linux内核(可能会随着内核更新而更新),紧跟最新技术。
你会学到什么(已规划的内容,随时更新)
| 章节 | 主题 | 关键收获 | 文章链接 |
|---|---|---|---|
| 第 1 章 | 内存中的 Linux | 编译最小化内核、静态编译 Toybox、构建 initramfs、用 QEMU 直接启动进入 Shell;从源码视角理解内核启动全过程(_start → 解压 → start_kernel → /init) |
第1章直达 |
| 第 2 章 | 从磁盘启动 | UEFI 启动流程、GPT 分区、GRUB(嵌入配置)、ext4 文件系统、switch_root 根切换、loop 设备制作磁盘镜像、持久存储验证 |
第2章直达 |
| 后续章节 | 待补充 | 网络配置、显卡与图形输出、安全加固等 | (待补充) |
🎯 阅读建议:务必亲手实践。本书每一步都给出可复制的命令,并附「踩坑记录」—— 那些让你内核 panic、启动失败的真实错误,正是理解机制的最佳切口。
致谢与约定
- 本书示例基于 Alpine Linux 3.22 + Linux 7.1 + Toybox 0.8.13 + QEMU/OVMF 验证。
- 命令行中
$表示普通提示符,命令本身不含$;#为注释或 root 提示符,依上下文而定。 - 工具链版本会演进,若遇编译失败,通常只需临时禁用对应
CONFIG_XXX(书中已注明常见情形)。
现在,让我们从一台「什么都没有」的虚拟机开始——
第 1 章,我们要让一个自己编译的 Linux 内核,在 QEMU 里跑起来,并进入 Shell。