其实总体上我们可以把grub看成一个mini os,他有shell,支持script,有文件系统……
我们可以把stage1 stage1-5看成一个boot loader,而stage2则是一个os,只不过这个os是专门load其他os的os,为此,stage2支持像kernel,initrd,chainloader等等为此目的而设置的内部“命令
1.简略流程
(如果你不熟悉grub,建议您先看完这这一节再向后)
a,Bios执行int 0x19,加载MBR至0x7c00并跳转执行。
如果你安装grub到mbr,grub的安装程序会把stage1(512B)拷贝到mbr。
视stage2的大小,安装程序会在stage1中嵌入stage1-5或者stage2的磁盘位置信息。
b,stage1开始执行,它在进行直接加载stage1-5或者stage2并跳转执行(还有些额外的工作,这里忽略先)
stage1-5很无辜,除了加载stage2以外它没有其他任何作用。
所以,不论是哪种情况,这一步的结果都是stage2开始运行了。
c,stage2这个mini os终于开始正式运行了!它会把系统切入保护模式,设置好c运行环境(主要是bss)
他会找config文件先(就是我们的menulist),如果没有的话就执行一个shell,等待我们输入命令。
然后grub的工作就是输入命令-解析命令-执行命令的循环,当然stage2本身也很无辜,他是为加载其他os
而存在的,所以如果情况允许,在他执行boot命令以后就会把控制权转交出去!
转载自
阅读(404) | 评论(0) | 转发(0) |