我在 Win7 老电脑上从零手搓了一个操作系统内核:32位分页、中断接管与 Shell 终端

今天突发奇想:如果不依赖任何现代框架,我能在裸机上写一个能敲键盘的操作系统吗?

于是,我在一台 13 年前的 Windows 7 电脑上,用纯 NASM 汇编,从引导扇区(Boot Sector)一路干到了 32 位保护模式、分页(Paging)、IDT 中断接管,甚至实现了一个可以输入的 Shell 终端!

核心跨越:接管 IRQ1 键盘中断

现在的 CPU 不再是个"聋子"。我通过重映射 8259A PIC 芯片,解除了键盘屏蔽,并利用 IDT(中断描述符表)抓住了硬件的 IRQ1 中断。

每次你按下键盘,CPU 都会进入我的 keyboard_handler,读取端口 0x60 的扫描码,查表翻译成 ASCII 字符并打印在显存上。

交互与滚屏:让系统"活"起来

敲击键盘,屏幕上立刻出现字母;按下回车,自动换行并打印出新的提示符 >。如果你输入了超过 24 行,屏幕还会自动向上滚动。

极简复现

不需要安装庞大的 GCC 交叉编译器,只要 NASM 和 QEMU:

  1. 下载源码:github.com/doujiaozh/m...
  2. 编译:nasm -f bin boot.asm -o boot.bin 和 nasm -f bin kernel.asm -o kernel.bin
  3. 合并镜像并启动:qemu-system-i386 -drive format=raw,file=os.img

下一步愿景:AI 原生内核

目前底层骨架(分页、中断、驱动)已经搭好。下一步,我准备用 Rust 重写核心代码,保证极致的安全,并尝试把它做成一个极轻量的 Unikernel。让它不仅能跑 Shell,还能跑轻量级的 AI 推理!

今天的极客周末极度充实,欢迎对底层感兴趣的老哥来仓库交流!

相关推荐
OpenAnolis小助手14 小时前
RISC-V 基础软件的工程化与性能优化实践
性能优化·操作系统·龙蜥社区·risc-v
二级小助手1 天前
四级 Linux 应用与开发工程师笔记:8086 汇编、存储器、接口芯片和操作系统计算题整理
汇编语言·操作系统原理·计算机等级考试·计算机四级·四级linux应用与开发工程师·计算机组成与接口
青梅味猪大肠1 天前
【操作系统-60】临近适应算法
java·linux·开发语言·嵌入式硬件·算法·操作系统
波儿菜2 天前
Xcode MCP 助力运行时二进制分析
人工智能·程序员·汇编语言
PMAOS5 天前
4G 功能机操作系统选型指南:KaiOS、Mocor、MAUI、PMAOS 的能力边界与验证方法
嵌入式硬件·ai·操作系统
罗四强5 天前
第10篇:打包上架:签名、打包 HAP、发布到华为应用市场
分布式·操作系统·harmonyos·arkts·鸿蒙系统
Liaiyang666 天前
空圈容错视角-HarmonyOS 7 架构体检:从被动容错到主动免疫的真伪验证与生态反推
操作系统·harmonyos·架构设计·ai-agent·端云协同·鸿蒙7·空圈容错
OpenAnolis小助手6 天前
龙蜥社区亮相 GOSIM AI Vision Forum 共话“Agentic Native”开源新
人工智能·ai·开源·操作系统·龙蜥社区·agent
阿里云基础软件6 天前
Agent 任务提速 10.71%,内存占用降低 21.60%|Alibaba Cloud Linux 4 重大发布
java·linux·人工智能·操作系统·agent
OpenAnolis小助手8 天前
多租户公有云共享 CXL 内存池场景下的内存卸载研究
人工智能·操作系统·龙蜥社区·risc-v·agentic os