今天突发奇想:如果不依赖任何现代框架,我能在裸机上写一个能敲键盘的操作系统吗?
于是,我在一台 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:
- 下载源码:github.com/doujiaozh/m...
- 编译:
nasm -f bin boot.asm -o boot.bin和nasm -f bin kernel.asm -o kernel.bin - 合并镜像并启动:
qemu-system-i386 -drive format=raw,file=os.img
下一步愿景:AI 原生内核
目前底层骨架(分页、中断、驱动)已经搭好。下一步,我准备用 Rust 重写核心代码,保证极致的安全,并尝试把它做成一个极轻量的 Unikernel。让它不仅能跑 Shell,还能跑轻量级的 AI 推理!
今天的极客周末极度充实,欢迎对底层感兴趣的老哥来仓库交流!