当前位置: 首页 > news >正文

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

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.0+x86 汇编编译器
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 启动流程、魔数 0xAA55
02-引导打印BIOS 中断 int 0x10
03-引导内存读取 BIOS 内存信息
04-引导栈栈的使用与管理
05-函数和字符串汇编函数与字符串处理
06-引导段内存段管理
07-bootsector-disk磁盘 I/O 操作
08-32bit-print32 位模式打印
09-32bit-gdt全局描述符表
10-32bit-enter进入保护模式
11-kernel-crosscompiler构建交叉编译器
12-kernel-cC 语言内核

攻略路线

第一阶段:引导程序 (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.bin

Windows 用户

# 编译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

如何学习

  1. 按顺序学习- 每章基于前一章内容,建议依次完成
  2. 先读 README- 每章开头有前置概念和学习目标
  3. 查阅代码- 代码包含详细中文注释
  4. 动手修改- 尝试修改代码加深理解

参考资源

  • os-tutorial 原仓库
  • os-tutorial 中文版
  • x86 汇编参考
  • OSDev Wiki
  • INT 10h - Wikipedia

许可

MIT License

http://www.jsqmd.com/news/577565/

相关文章:

  • 手把手教你配置 OpenAI Codex CLI:API Key 获取 + 自定义 base_url 保姆级指南
  • 旺季仓容紧张跨境卖家如何提前规划备货与入仓
  • 系统架构设计师-案例分析-Web系统设计
  • 2026年4月档案数字化机构口碑推荐,这份推荐请收好!档案库房/电子合同管理/建设项目档案管理,档案数字化公司哪家好 - 品牌推荐师
  • 临床科研场景下医疗数据安全开放共享平台设计
  • AI能力已经成为2026年的分水岭:2026年企业如何选对人力资源管理平台
  • 第一次正式读取芯片手册---ads1256
  • 成都彩色包装盒印刷厂推荐:成都台历定制厂家/成都名片定制厂家/成都定制包装礼盒厂家/成都定制牛皮织带/选择指南 - 优质品牌商家
  • Translumo:如何用开源工具实现零延迟的屏幕实时翻译?
  • 别再让Parallel Stream拖慢你的应用!手把手教你配置Java8自定义线程池(附内存泄漏避坑)
  • 一款实用汉化工具快速安装使用指南 -- cheat-engine中文版安装教程入口
  • 3分钟提升90%效率:设计师必备的智能填充解决方案
  • 16.迭代器 和 生成器
  • HoRain云--Julia字符串处理全攻略
  • Kafka消费者监控与可观测性体系:从指标收集到智能预警的完整实践
  • 分片质量决定RAG检索上限!8种主流分片方法深度解析(附代码示例)
  • 实战应用:用快马构建动态项目监控图,超越静态visio下载
  • Anaconda 环境安装:路径配置与报错解决方案
  • AI 竞争已转向编排能力:2026.3月智能体工程的核心变革
  • “敏捷已死”的迷思:从一次非典型胜利看汽车软件开发范式的理性回归
  • 学生党的AI编程经验
  • ASMR音频下载神器:asmr-downloader一键获取asmr.one海量资源
  • HoRain云--Julia正则表达式
  • 2025网盘直链解析工具LinkSwift:告别下载限速的终极解决方案
  • 07-EMC滤波器件选型(多孔珠、磁环、复合滤波器件)
  • 【底层重构】C语言100篇:从入门到天花板 第33篇 指针与结构体:指针访问结构体与动态分配
  • 【Cherry Studio + OpenClaw 2026完全指南】第二章:技能商店精选推荐与安装攻略
  • 第三天(实习无忧)
  • 实战应用:基于快马ai为python项目定制mac系统下的openclaw集成安装方案
  • 轻松加密文件生成exe,无需原程序解密