引言-从零开始编写操作系统-引导

张开发
2026/4/8 6:42:38 15 分钟阅读

分享文章

引言-从零开始编写操作系统-引导
os-tutorial从零开始编写操作系统 - 中文教程简介本教程基于 cfenollosa/os-tutorial 和 ruiers/os-tutorial-cn。项目背景原教程是基于macOS系统开发的操作系统编写教程而本项目是我在Windows 11系统上学习和实践过程中的笔记与总结。除了对原教程进行翻译和实现外我还补充了概念总结文档- 用大白话解释 CPU 寄存器、中断机制等概念额外代码示例- 更多实用的汇编代码示例和注释️Windows 环境指南- 针对 Windows 用户的详细环境搭建说明这个项目是做什么的简单说就是教你怎么写一个操作系统。不用担心很难我们会从最基础的开始先写个能让电脑识别的启动扇区然后在屏幕上打印几个字再学着用汇编写点小功能最后慢慢加上 C 语言内核整个过程就像搭积木一样一块一块往上加。适合谁看对计算机底层好奇的同学想了解操作系统原理的朋友有一定编程基础但没写过 OS 的开发者Windows 用户原教程主要针对 macOS/Linux单纯想玩一玩汇编的爱好者特点循序渐进- 每章 5-15 分钟即可完成代码驱动- 边学边写理论结合实践中文文档- 详细的中文注释和说明Windows 友好- 基于 Windows 11 实践包含 Windows 环境搭建概念补充- 用大白话讲解技术概念寄存器、中断等无需 GRUB- 从零编写自己的引导程序真正理解启动原理前置要求不需要任何操作系统开发经验但建议了解基本的编程概念十六进制/二进制命令行操作 支持一下如果这个教程对你有帮助欢迎到 GitHub 项目点个 star 支持⭐ github.com/nexa1024/os-tutorial你的 star 是我继续更新的动力谢谢 环境要求工具最低版本用途NASM2.0x86 汇编编译器QEMU任意版本x86 系统模拟器Git可选版本控制Windows 用户请参阅00-环境准备/README.md目录结构os-tutorial/ ├── 00-环境准备/ # 开发环境搭建指南 ├── 01-引导扇区/ # BIOS 启动流程、魔数 0xAA55 ├── 02-引导打印/ # BIOS 中断 int 0x10 屏幕打印 ├── 03-引导内存/ # 读取系统内存信息 ├── 04-引导栈/ # 栈的使用与管理 ├── 05-函数和字符串/ # 汇编函数与字符串处理 ├── 06-引导段/ # 内存段管理 ├── 07-bootsector-disk/ # 磁盘 I/O 操作 ├── 08-32bit-print/ # 32 位模式打印 ├── 09-32bit-gdt/ # 全局描述符表 ├── 10-32bit-enter/ # 进入保护模式 ├── 11-kernel-crosscompiler/# 构建交叉编译器 ├── 12-kernel-c/ # C 语言内核 └── ...学习进度章节状态描述00-环境准备✅NASM、QEMU 安装配置01-引导扇区✅BIOS 启动流程、魔数 0xAA5502-引导打印✅BIOS 中断 int 0x1003-引导内存⏳读取 BIOS 内存信息04-引导栈⏳栈的使用与管理05-函数和字符串⏳汇编函数与字符串处理06-引导段⏳内存段管理07-bootsector-disk⏳磁盘 I/O 操作08-32bit-print⏳32 位模式打印09-32bit-gdt⏳全局描述符表10-32bit-enter⏳进入保护模式11-kernel-crosscompiler⏳构建交叉编译器12-kernel-c⏳C 语言内核攻略路线第一阶段引导程序 (00-07)环境搭建 → 引导扇区 → 屏幕打印 → 内存管理 → 栈 → 函数 → 段 → 磁盘第二阶段保护模式 (08-10)32位打印 → GDT → 进入保护模式第三阶段C 语言内核 (11-12)交叉编译 → C内核 → 中断 → Shell → 文件系统 → 多任务快速开始编译并运行第一个引导程序# 进入目录cd01-引导扇区# 编译nasm-fbin boot_sect_simple.asm-oboot_sect_simple.bin# 在 QEMU 中运行qemu-system-x86_64 boot_sect_simple.binWindows 用户# 编译nasm-f bin boot_sect_simple.asm-o boot_sect_simple.bin# 运行qemu-system-x86_64 boot_sect_simple.bin# 或无图形模式qemu-system-x86_64-nographic boot_sect_simple.bin如何学习按顺序学习- 每章基于前一章内容建议依次完成先读 README- 每章开头有前置概念和学习目标查阅代码- 代码包含详细中文注释动手修改- 尝试修改代码加深理解参考资源os-tutorial 原仓库os-tutorial 中文版x86 汇编参考OSDev WikiINT 10h - Wikipedia许可MIT License

更多文章