grub和MBR的疑问!
版面规则
我们都知道新人的确很菜,也喜欢抱怨,并且带有浓厚的Windows习惯,但既然在这里询问,我们就应该有责任帮助他们解决问题,而不是直接泼冷水、简单的否定或发表对解决问题没有任何帮助的帖子。乐于分享,以人为本,这正是Ubuntu的精神所在。
我们都知道新人的确很菜,也喜欢抱怨,并且带有浓厚的Windows习惯,但既然在这里询问,我们就应该有责任帮助他们解决问题,而不是直接泼冷水、简单的否定或发表对解决问题没有任何帮助的帖子。乐于分享,以人为本,这正是Ubuntu的精神所在。
-
- 帖子: 336
- 注册时间: 2007-04-22 13:14
grub和MBR的疑问!
grub和MBR的疑问!
因为接触 了 LINUX所以也了解了一些系统引导的知识,但是我一直有个疑问,GRUB是引导器,MBR是主引导扇区。常常听到:把GRUB安装在MBR,我听了挺纳闷,一个扇区(512字节)怎么能容纳GRUB?
我个人理解是:所谓GRUB安装在MBR是指,在MBR里做个标记把GRUB所在的分区作为活动分区来引导系统。
还请各位高手指点。
因为接触 了 LINUX所以也了解了一些系统引导的知识,但是我一直有个疑问,GRUB是引导器,MBR是主引导扇区。常常听到:把GRUB安装在MBR,我听了挺纳闷,一个扇区(512字节)怎么能容纳GRUB?
我个人理解是:所谓GRUB安装在MBR是指,在MBR里做个标记把GRUB所在的分区作为活动分区来引导系统。
还请各位高手指点。
- BigSnake.NET
- 帖子: 12522
- 注册时间: 2006-07-02 11:16
- 来自: 廣州
- 联系:
-
- 帖子: 336
- 注册时间: 2007-04-22 13:14
最后在红联论坛找到答案:
能正常工作的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程序,完成后续的工作了。
这方面涉及到到系统管理和操作原理方面内容
能正常工作的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程序,完成后续的工作了。
这方面涉及到到系统管理和操作原理方面内容
-
- 帖子: 194
- 注册时间: 2006-05-04 20:00
- iblicf
- 帖子: 3766
- 注册时间: 2007-01-15 17:15
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 。。甚至其他文件系统的文件
安装的时候 xp不往 MBR 写,ubuntu 将 grub(stage1)装到 /boot 所在的硬盘 MBR ....
menu.lst 里边通过 map 方式来引导不同的硬盘,
另外,stage1 阶段,就应该能识别 ext2/3 文件系统,或者至少部分识别,证据是,
1> stage1 寻找 stage1_5 ? 别忘了此时文件系统还没挂载,linux 内核还没装呢,它怎么能找到?
2> grub 可以通过 find 来找 ext2 文件系统,fat 。。甚至其他文件系统的文件
-
- 帖子: 31
- 注册时间: 2006-10-18 18:03
- iblicf
- 帖子: 3766
- 注册时间: 2007-01-15 17:15
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
- iblicf
- 帖子: 3766
- 注册时间: 2007-01-15 17:15
- pxw816
- 帖子: 296
- 注册时间: 2007-10-16 19:29
根据楼上和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
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