Minix的启动过程分为两步,第一步运行masterboot.s或者bootblock.s中的内容。对于有分区的硬盘,它的第一个扇区是MBR(Master Boot Record),其中包含有引导代码和分区表。如果硬盘有子分区,则每个子分区的第一个扇区也具有单独的引导代码。此外,引导代码也可以被放到软盘的第一个扇区。masterboot.s的代码存放在MBR中,它适合引导装在不同分区上的Minix。如果masterboot.s被载入到内存的0x7c00处,它的任务就是找到引导分区(或软盘),加载其中的第一个扇区中的引导信息。在引导分区(或软盘)的第一个扇区存放有Minix的初级引导程序,即bootblock.s。它也被加载到0x7c00位置,它的任务是将boot monitor(Minix的次级引导程序,磁盘中的/boot文件)加载到内存的0x10000处,并跳转到0x10000+0x0030处执行。
关于bootblock.s的分析,可以参考http://blog.donews.com/zwell/articles/70010.aspx,注意由于版本不同,文章内容可能与下载到的代码有出入。
第二部分的启动程序boot monitor由boothead.s、bootimage.c、boot.c和rawfs.c等文件连接成。boot monitor的代码从boothead.s开始执行,在进行一些准备工作后程序就跳转到boot.c的boot函数(boothead.s的其他代码在后面还将调用),boot函数会在显示器上打印:
Minix boot monitor 2.19
Press ESC to enter the monitor
此时可以按ESC键进入启动环境,