真正一小步,编写属于你自己的X86 Boot loader
前言
笔者一直对操作系统非常感兴趣,一直希望能够编写一款属于自己的操作系统。不过各种事情让我一直抽不开身。现在大四了,终于有时间好好搞一搞自己喜欢的东西。
经过深思熟虑,我决定还是从Boot Loader做起。国内各种网站和博客关于这方面内容的东西不是特别多,我在编写Boot Loader的时候也是摸着石头过河。国内大部分博客所写的,如”编写一个最简单的操作系统“,”编写一个基本的Boot Loader“之类的内容绝大多数都只是完成了一个Boot sector,在裸机上啪啪打出一串字符就完了。
对于一个Boot Loader, 它的基本功能肯定是要从硬盘上读取出操作系统内核(或是用户程序),再将其搬运到内存中,最后跳转到操作系统内核。
本文中的Boot Loader是一个最简单的Boot Loader,能够从硬盘中读取到用户程序并将其放到内存中指定的位置。
参考资料
- 《x86汇编语言:从实模式到保护模式》:非常好的一本书,详细地介绍了X86汇编语言。在编写一个Boot loader之前所需了解的知识,通过阅读这本书,大家基本都能够学习到。
- OSDev : 完整翔实地介绍操作系统各种相关技术的网站,包括Boot loader。
环境和工具
- Linux : 最好是Linux, 在Windows下也可以完成,不过在Linux下使用各种工具会非常方便。
- Bochs :一个非常优秀的X86计算机模拟器。它有着非常强大的调试功能。
- NASM : 汇编语言。
- dd :Linux下自带的文件复制工具
工具安装
我是在Ubuntu 下进行的开发:
- Bochs:
sudo apt-get install bochs
sudo apt-get install bochs-x
- NASM:
sudo apt-get install nasm
编写Boot Loader
在完成Boot Loader之前要大家要了解基本的X86汇编语言,还要了解计算机启动的基本过程等知识。在《x86汇编语言