您的位置:首页 > 运维架构 > Linux

关于Linux系统下Grub启动流程的讨论总结

2011-10-04 09:23 579 查看
关于Linux系统下Grub启动流程的讨论总结

传统的启动流程:

加载并运行MBR->扫描分区表->定位活动分区->加载活动分区引导扇区内容(至内存)并执行

系统引导过程主要由以下几个步骤组成(以硬盘启动为例,红字表示安装grub过后的情况):

开机;

BIOS加点自检(POST——Power On Self Test),内存地址为0FFF:0000;

将0头0道1扇区,也就是Boot Sector读入内存地址0000:7C00处;

检查(WORD)0000:7dfe是否等于0xaa55(一点是小端,一点是表明头结束,的确取对了地方).若不等于则转去尝试其他介质;如果没有其他启动介质,则显示 "No ROM BASIC" ,然后死机;

跳转到0000:7c00处执行MBR中的程序;

MBR先将自己复制到0000:0600处,然后继续执行;假如先装XP后装LINUX,并且LINUX没有装在MBR,那这个MBR中的数据还是WIN写的数据,它的作用都是下步中所说的作用,就是搜索主分区表中标志为活动的分区,那么这个时候就必须把GRUB所在的主分区设置为活动的分区,这个时候才能正常的启动GRUB,然后GRUB的STAGE1在调STAGE1.5和其他的,从而来引导整个系统。
假如说先装XP后装LINUX,但是GRUB装在了MBR,那样STAGE1直接调入内存,STAGE1在调STAGE1.5和STAGE2等,从而来引导系统。那这个时候是不需要将GRUB其他文件所在的主分区设为活动分区的,它直接调STAGE1.5等,然后再调STAGE2等,来识别文件系统,从而实现可多启动。

在主分区表中搜索标志为活动的分区。如果发现没有活动分区或者不止一个活动分区,则停止;

将活动分区的第一个扇区读入内存地址0000:7c00处;

检查(WORD)0000:7dfe是否等于0xaa55,若不等于则显示 "Missing Operating System",然后停止,或尝试软盘启动;

跳转到0000:7c00处继续执行特定系统的启动程序;

启动系统。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: