开发操作系统(1)
今天准备开始学习开发操作系统了。
就叫它 XIAOJIOS 吧~
学习开发操作系统的原因呢,第一点还是因为咱们国家的一个情况,我还是希望掌握开发 OS 的一个技术的,第二点是因为很多操作系统的机制希望去学习一下,并且尝试自己编写一份。
这里参照一本书《30天自制操作系统》,主要也是跟着它学习的。
环境准备
今天主要用到两个工具:
nas汇编文件的编译方式为:
1 | nasm xxx.nas -o xxx.img |
qemu启动加载 img 文件的方式为:
1 | qemu-system-x86_64 -drive file=os.img,if=floppy |
编写nas汇编文件
这里就用它给的吧,毕竟这个格式要说是自己写的我自己都不信。
1 | ; hello.nas |
这里需要注意的是,本书原本给的文件中,使用新版本的 nasm
可能会报错:
1 | helloos.nas:41: error: attempt to reserve non-constant quantity of BSS space |
这里我们需要把那句话改为:
1 | RESB 0x1fe-($-$$);或者改为下面的那句话 |
所以这里的目的就是用 0x00 填充 完 0x1fe 的大小即可。
第0x001fe和0x001ff(扇区最后两个字节)的内容应当是0x55,0xaa,这样才能被计算机认定为启动区IPL(initial program loader),但是第一章的代码并不能称之为启动区,因为下一步并没有加载其他程序。
汇编+运行
用以下命令得到 img 文件:
1 | nasm hello.nas -o XIAOJIOS.img |
qemu 启动
1 | qemu-system-x86_64 |
完成!
希望能坚持下去,能在第三十天看到一个完整的操作系统。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 xia0ji233's blog!