怎样写一个简单的操作系统(10)
时间:2026-01-15
时间:2026-01-15
怎样写一个简单的操作系统
dd status=noxfer conv=notrunc if=myfirst.bin of=myfirst.flp
使用‘dd’命令把我们的内核文件直接复制到软件映像的第一个扇区。做完这些之后,我们就可以使用QEMU PC模拟器用下面的命令进行引导:
qemu -fda myfirst.flp
瞧!你的操作系统将在虚拟机里面启动起来了。如果你真的想在一台个人计算机上使用它,你可以把软盘映像写到一个真正的软盘上去,并设置为从它启动,或者生成一个CD - ROM的ISO映像。如果你使用后一种方法,你需要创建一个新的目录cdiso,并把myfirst.flp放到这个文件夹下面。然后在你的home目录下输入如下命令:
mkisofs -o myfirst.iso -b myfirst.flp cdiso/
执行之后将生成一个CD – ROM的ISO映像文件,名字叫myfirst.iso。这是使用之前那个可引导的虚拟软盘映像生成的。现在你可以把这个ISO文件刻录到你的CD-R里面去,并且用它来引导你的计算机。(要注意的是你要直接把它刻录为一个iso映像,而不是把它复制到光盘上面)
接下来,如果你想改进自己的操作系统——浏览一下Mike OS的源代码你也许能获得一些灵感。需要记住的是,引导程序被限制在512个字节,如果你想做更多的事情,你需要让你的引导程序从磁盘上装入一个单独的文件,然后执行它,Mike OS中就是这么做的。
进阶
现在你已经有了一个非常简单的引导加载程序。下一步呢?这里给出一些建议:
1、增加更多的子程序——在你的内核中已经有了print_string子程序,你可以添加子程序获得字符串或者是移动鼠标等等。关于实现这些的方法,你可以在网上搜索一下BIOS的调用。
2、加载文件——引导程序被限制在512字节,因此你没有太多发挥的余地。不过你可以用引导程序把磁盘上后续的一些扇区加载到内存(RAM)里面,并跳转到该处继续执行。或者你研究一下软盘驱动器上使用的文件系统FAT12,然后再实现它。(可以看一下Mike OS里面的一个实现,文件位置:
source/bootload/bootload.asm)
3、加入某个项目——本文档是由Mike OS的首席开发Mike Saunders撰写的,Mike OS是一个简单的基于x86汇编语言的16位操作系统,一旦你完全理解了这里介绍的一些概念,你就可以深入代码进行挖掘并为它增加功能。查看系统的开发手册的链接(译注:这个项目的地址),可以获得更多的信息,你也可以加入这个项目的邮件组。