grub和MBR的疑问!

为当前最终发行版之前的所有版本提供支持
kangtian
帖子: 336
注册时间: 2007-04-22 13:14
送出感谢: 0
接收感谢: 2 次

grub和MBR的疑问!

#1

帖子 kangtian » 2007-04-22 17:14

grub和MBR的疑问!


因为接触 了 LINUX所以也了解了一些系统引导的知识,但是我一直有个疑问,GRUB是引导器,MBR是主引导扇区。常常听到:把GRUB安装在MBR,我听了挺纳闷,一个扇区(512字节)怎么能容纳GRUB?
我个人理解是:所谓GRUB安装在MBR是指,在MBR里做个标记把GRUB所在的分区作为活动分区来引导系统。
还请各位高手指点。
头像
vbem
帖子: 239
注册时间: 2006-09-13 9:09
送出感谢: 0
接收感谢: 0

#2

帖子 vbem » 2007-04-22 20:51

指针的概念大概能理解吗?
就是那个意思
~_~
头像
BigSnake.NET
帖子: 12522
注册时间: 2006-07-02 11:16
来自: 廣州
送出感谢: 0
接收感谢: 7 次
联系:

#3

帖子 BigSnake.NET » 2007-04-22 20:53

MBR里的东西是用来加载/boot区(不一定.具体看安装时的设置)里的grub程序.

至于活动分区..也许被grub无视了
^_^ ~~~
要理解递归,首先要理解递归。

地球人都知道,理论上,理论跟实际是没有差别的,但实际上,理论跟实际的差别是相当大滴。
kangtian
帖子: 336
注册时间: 2007-04-22 13:14
送出感谢: 0
接收感谢: 2 次

#4

帖子 kangtian » 2007-04-23 15:07

最后在红联论坛找到答案:

能正常工作的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程序,完成后续的工作了。


这方面涉及到到系统管理和操作原理方面内容
kangtian
帖子: 336
注册时间: 2007-04-22 13:14
送出感谢: 0
接收感谢: 2 次

#5

帖子 kangtian » 2007-04-23 15:09

以上可以看出,所谓将GRUB安装在MBR实际上就是把stage1安装在MBR
kobecater000
帖子: 194
注册时间: 2006-05-04 20:00
送出感谢: 0
接收感谢: 0

#6

帖子 kobecater000 » 2007-04-23 15:25

同学,可以去看看操作系统概论里关于引导的资料,这里也不怎么说的清楚,现代操作系统一般是2次引导
livizy
帖子: 109
注册时间: 2007-10-02 23:53
送出感谢: 1 次
接收感谢: 0

顶!!!!

#7

帖子 livizy » 2008-01-05 13:01

4楼讲的挺清楚的。

我也一直不太清楚这个问题,还有就是 假如我有2个硬盘,第一个装xp,第二个装ubuntu。

按照4楼的讲解,一个硬盘应该有一个mbr,bios检查每块硬盘的mbr,那么向上面的情况ubuntu会把grub的stage1装到哪里呢? 是哪个是主盘(primany)装到哪里么 还有如果两个硬盘的mbr都有一道程序,那听谁的呢? 是哪个是主盘(primany)听哪个的么?
头像
iblicf
帖子: 3766
注册时间: 2007-01-15 17:15
送出感谢: 0
接收感谢: 0

#8

帖子 iblicf » 2008-01-05 14:04

stage 1 在你安装ubuntu 的时候已经在 MBR 里了,如果你两块硬盘,bois 虽然轮训,一般它按照主从顺序来引导,

安装的时候 xp不往 MBR 写,ubuntu 将 grub(stage1)装到 /boot 所在的硬盘 MBR ....

menu.lst 里边通过 map 方式来引导不同的硬盘,

另外,stage1 阶段,就应该能识别 ext2/3 文件系统,或者至少部分识别,证据是,
1> stage1 寻找 stage1_5 ? 别忘了此时文件系统还没挂载,linux 内核还没装呢,它怎么能找到?
2> grub 可以通过 find 来找 ext2 文件系统,fat 。。甚至其他文件系统的文件
xyz042
帖子: 31
注册时间: 2006-10-18 18:03
送出感谢: 0
接收感谢: 0

#9

帖子 xyz042 » 2008-01-05 15:25

4楼说的是挺清楚的,但我还是有个疑问:stage1放MBR,stage2放文件系统。那stage1_5放哪里呢?难道真的放在某个未分区区域?
头像
iblicf
帖子: 3766
注册时间: 2007-01-15 17:15
送出感谢: 0
接收感谢: 0

#10

帖子 iblicf » 2008-01-05 16:26

xyz042 写了:4楼说的是挺清楚的,但我还是有个疑问:stage1放MBR,stage2放文件系统。那stage1_5放哪里呢?难道真的放在某个未分区区域?


iblicf@ubuntu:/boot/grub$ ls
total 232K
-rw-r--r-- 1 root 108K 2007-10-24 12:15 stage2
-rw-r--r-- 1 root 9.9K 2007-10-24 12:15 reiserfs_stage1_5
-rw-r--r-- 1 root 9.8K 2007-10-24 12:15 xfs_stage1_5
-rw-r--r-- 1 root 9.0K 2007-10-24 12:15 jfs_stage1_5
-rw-r--r-- 1 root 8.5K 2007-10-24 12:15 e2fs_stage1_5
-rw-r--r-- 1 root 8.3K 2007-10-24 12:15 fat_stage1_5
-rw-r--r-- 1 root 7.7K 2007-10-24 12:15 minix_stage1_5
-rw-r--r-- 1 root 4.7K 2008-01-04 11:16 menu.lst
-rw-r--r-- 1 root 4.7K 2008-01-04 11:16 menu.lst~
-rw-r--r-- 1 root 4.7K 2008-01-04 11:16 menu.lst.bak
-rw-r--r-- 1 root 4.7K 2007-11-05 20:41 menu.lst.backup
drwxr-xr-x 2 root 4.0K 2007-11-05 20:41 splashimages
-rw-r--r-- 1 root 512 2007-10-24 12:15 stage1
-rw-r--r-- 1 root 197 2007-10-24 12:15 default
-rw-r--r-- 1 root 15 2007-10-24 12:15 device.map
-rw-r--r-- 1 root 15 2007-10-24 12:15 installed-version
头像
pxw816
帖子: 296
注册时间: 2007-10-16 19:29
送出感谢: 0
接收感谢: 0
联系:

#11

帖子 pxw816 » 2008-01-05 21:50

问题很经典,学习中。个人见解:MBR中前面是主引导记录,后面还有硬盘分区表才是。继续关注中
cpu:Intel(R) Core(TM)2 Quad CPU Q6600
mem:2GB DDR2 800 *4
disk:ide320GB+(640GB+640GB)raid
video:Nvidia GTX 260+
network: Atheros AR8121/AR8113
monitor: BENQ FP92W
OS: ubuntu
头像
iblicf
帖子: 3766
注册时间: 2007-01-15 17:15
送出感谢: 0
接收感谢: 0

#12

帖子 iblicf » 2008-01-05 21:59

没错 512= MBR 446 + 分区表 64+2 (55AA) 结束标志
上次由 iblicf 在 2008-01-07 10:20,总共编辑 1 次。
头像
pxw816
帖子: 296
注册时间: 2007-10-16 19:29
送出感谢: 0
接收感谢: 0
联系:

#13

帖子 pxw816 » 2008-01-05 22:16

根据楼上和http://opens.itpub.net/post/21577/191312确定我是对的,stage1分析分区表后就可以找到stage1_5了嘛
cpu:Intel(R) Core(TM)2 Quad CPU Q6600
mem:2GB DDR2 800 *4
disk:ide320GB+(640GB+640GB)raid
video:Nvidia GTX 260+
network: Atheros AR8121/AR8113
monitor: BENQ FP92W
OS: ubuntu
头像
pxw816
帖子: 296
注册时间: 2007-10-16 19:29
送出感谢: 0
接收感谢: 0
联系:

#14

帖子 pxw816 » 2008-01-07 10:14

iblicf 写了:没错 512= MBR 446 + 分区表 64

是448,呵呵
cpu:Intel(R) Core(TM)2 Quad CPU Q6600
mem:2GB DDR2 800 *4
disk:ide320GB+(640GB+640GB)raid
video:Nvidia GTX 260+
network: Atheros AR8121/AR8113
monitor: BENQ FP92W
OS: ubuntu
头像
iblicf
帖子: 3766
注册时间: 2007-01-15 17:15
送出感谢: 0
接收感谢: 0

#15

帖子 iblicf » 2008-01-07 10:19

446+64+2(55AA)
回复

回到 “老旧版本支持”