红联Linux门户
Linux帮助

grub和MBR的疑问!

发布时间:2007-04-17 14:01:01来源:红联作者:kangtian
因为接触 了 LINUX所以也了解了一些系统引导的知识,但是我一直有个疑问,GRUB是引导器,MBR是主引导扇区。常常听到:把GRUB安装在MBR,我听了挺纳闷,一个扇区(512字节)怎么能容纳GRUB?
我个人理解是:所谓GRUB安装在MBR是指,在MBR里做个标记把GRUB所在的分区作为活动分区来引导系统。
还请各位高手指点。
文章评论

共有 7 条评论

  1. kangtian 于 2007-04-23 00:40:56发表:

    楼上的厉害,大致明白了!不过随之而来的疑问更多了。果然印证了笛卡儿的那句话。

  2. LinuxSky-Fov 于 2007-04-22 18:45:56发表:

    能正常工作的grub应该包括一下文件:stage1、stage2、*stage1_5、menu.lst。

      其中stage1要被安装(也就是写入)某个硬盘的主引导记录,或者某个活动分区(这个分区要用fdisk标记成可启动的)的启动扇区。stage1的主要的也是唯一的作用就是找到你存放在硬盘上某个地方的stage2文件,来完成后续的工作。

      stage2文件可以存在某个特定的文件系统中,比如你分了一个linux分区,在上面创建一个ext2文件系统,然后把这个文件拷贝到这个分区的某个目录下。也可以把stage2直接存放在硬盘的某个位置,也就是未分区的某个地方。不过,好像没有多少人会这么做吧。

      因为stage1的容量有限(主引导记录MBR和启动扇区的大小只能够是512字节),所以它对文件系统是无法识别的,那如果你把stage2存放在ext2或者fat格式的文件系统上,它如何来找到这个文件呢?这就要用到上面提到的那些stage1_5的文件了,它们负责解释文件系统。你的stage2放在什么格式的文件系统上,就要调用对应的那个stage1_5文件。比如,你把stage2存放在ext2格式的文件系统上,就需要e2fs_stage1_5;stage2存放在fat格式的文件系统上,就需要fat_stage1_5了。


    接下来是简单开机过程

    ①按下电源后,计算机自检(POST),如果硬件设备(CPU、内存、硬盘、光驱、各种卡)都没有问题,BIOS会检查各个硬盘的MBR,看有没有可以执行的代码,如果你把grub安装到第一个硬盘的MBR上,那BIOS就会找到它,然后把控制权交个这段代码(其实就是512字节大小的stage1)。

      ②stage1根据安装时提供的信息,如stage2在什么地方,需不需要加载文件系统的对应的stage1_5文件等,找到stage2文件,并把控制权交给stage2。

      ③stage2会需要特定位置的grub配置文件menu.lst文件(此文件是/boot/gurb/gurb.conf的链接文件),如果找到,就分析其中的内容,形成操作系统选择菜单(Grub管它叫Menu Interface),如果没有找到menu.lst或者这个文件的格式、内容有错误,那就显示grub的命令行提示符。

      ④当你选择了菜单中相应的条目,或者输入了相关的命令,就可以看是引导系统了。比如引导linux的话,stage2会负责将vmlinuz和initrd(如果有的话)装载到内存,并把控制权交给vmlinuz。

      ⑤linux的内容完成对硬件的初始化,并把控制权交给init程序,完成后续的工作了。


    这方面涉及到到系统管理和操作原理方面内容

  3. kangtian 于 2007-04-22 14:13:36发表:

    这么长时间了,也没有高手出来说下?

  4. athlonxpgzw 于 2007-04-18 00:26:40发表:

    我也有相同的疑问 望高手指教

  5. jxmy 于 2007-04-17 20:04:05发表:

    达人给解释一个啊!!!!!!!!!!!!!!!!!!!!!

  6. kangtian 于 2007-04-17 18:15:08发表:

    有没有达人解释一下啊!!!!!!!!!!!!!!!!!!!!!!!!!

  7. Lynghu 于 2007-04-17 15:39:12发表:

    也说不清楚,不过在MBR中是推荐的安装引导装载程序的地方,在有win系统的还应该要把引导装载安装到MBR中,默认安装就可以了