关于启动引导系统的一些理解和疑问

启动讨论 grub/grub2/syslinux/grub4dos/Lilo
回复
头像
iamfbi
帖子: 1081
注册时间: 2009-02-06 9:18
来自: 小僧乃吐蕃国大雪山大轮寺护国法师座下四大护法之西域妖僧是也

关于启动引导系统的一些理解和疑问

#1

帖子 iamfbi » 2010-02-10 13:14

:em06 我算是个好学的懒人,没翻过很多帖子,直接就来提问了。

一直以来我搞不清楚引导是怎么回事,WIN下的都不理解,LINUX下的就更不明白了。
最近在UBUNTU,XP,WIN7,之间换来换去,总折腾引导这个事,有一些理解,来说说,大家看是不是那么回事。

一个硬盘里有一个主引导扇区。

主引导扇区里面装的是MBR,分区表,和一个叫magic number的东东。

MBR里面记录的是从哪一个分区启动,我的理解记录了活动分区的信息(又有称激活分区或作用分区)。

确定了活动分区后,就到分区的引导扇区,这里有个东西叫PBR,里面装的是从哪一个文件引导的信息(XP指向“ntldr”,WIN7指向“bootmgr”,linux指向“grldr”),然后从这个文件开始就可以启动操作系统了。

过程是 MBR-PBR-"ntldr,grldr",所以我的理解是在双系统情况下,MBR不是我们要改的东西,PBR才是要修改的东西。
我上面说的可能仅限于WIN下吧,linux下我还不知道是怎么回事,因为我一直用的ntldr指向GRUB4DOS来引导UBUNTU,现在安装UBUNTU的时候我不敢安装引导功能,因为有一次我安装了后把C盘文件全弄没了

所以,安装WIN会重写MBR,安装UBUNTU出一样会重写MBR?把UBUNTU所在盘设为活动盘?

而menu.lst中这一句
  title WindowsXP
  root (hd0,0)
  makeactive
  chainloader +1
则是在UBUNTU作为活动分区时,把引导指向第一个分区。然后读取分区中的PBR来引导XP。
所以在GRUB4DOS中,如果PBR本来就指向grldr的话,这句代码是无法引导XP的。它不能像boot.ini那样直接指向一个文件?

至于GRUB和GRUB2的区别在哪,我倒是完全不了解了。

望大家能指点一二,是幸。
Laptop: i5-460m hm55 4g 320g hd5470 14'led 2.3kg (acer 4738g)
Windows XP 7 8 all in one partition.
Ubuntu 10.04 LTS
Mac OS X 10.6.7
折腾笔记
论坛随手记
头像
iamfbi
帖子: 1081
注册时间: 2009-02-06 9:18
来自: 小僧乃吐蕃国大雪山大轮寺护国法师座下四大护法之西域妖僧是也

Re: 关于启动引导系统的一些理解和疑问

#2

帖子 iamfbi » 2010-02-10 13:42

1.jpg
:em06 献丑献到尽,我还按我的理解画了个图
Laptop: i5-460m hm55 4g 320g hd5470 14'led 2.3kg (acer 4738g)
Windows XP 7 8 all in one partition.
Ubuntu 10.04 LTS
Mac OS X 10.6.7
折腾笔记
论坛随手记
头像
tiyuanmaster
帖子: 73
注册时间: 2009-06-14 20:14
联系:

Re: 关于启动引导系统的一些理解和疑问

#3

帖子 tiyuanmaster » 2010-02-10 18:31

iamfbi 写了::em06
MBR里面记录的是从哪一个分区启动,

确定了活动分区后,就到分区的引导扇区,linux指向“grldr”

过程是 MBR-PBR-"ntldr,grldr",所以我的理解是在双系统情况下,MBR不是我们要改的东西,PBR才是要修改的东西。
呵呵,我只看到了引用的地方,提几个小小的地方供兄弟参考哈:
MBR里边的内容根据不同的引导工具作用是不一样的,nt方式作用是查找活动分区,并加载活动分区的引导扇区。
grub legacy 则是stage1的内容。

至于引导扇区,假如你把grub legacy装在了MBR中,那么你的linux分区的引导扇区就是空的,也就是不需要了。
你可以用dd命令将你linux分区的第一个扇区连同后面的几个扇区都导出来看看就知道了。

刍荛之见,有浅陋之处还望海涵一二 :em06
其实我是不懂装懂的…………………………
头像
onshoestring
论坛版主
帖子: 4666
注册时间: 2009-09-06 5:53

Re: 关于启动引导系统的一些理解和疑问

#4

帖子 onshoestring » 2010-02-10 19:06

winxp
mbr-pbr-ntldr(读boot.ini)-引导xp

win7
mbr-pbr-boomgr(读bcd)-winloader.exe-引导win7

xp+win7
mbr-pbr-boomgr(读bcd)-winloader.exe-引导win7
      |
     ntldr(读boot.ini)-引导xp

linux:
  mbr(stage1)-stage2-引导linux 或 mbr(stage1)-stage1.5-stage2-引导linux
这个是billbear说的grub1,grub2我还不太清楚。
第一个分区通常不是紧接在 mbr 后面的。mbr 是0磁道1扇区,而第一个分区一般从 1 磁道开始,中间通常隔着 63 个备用空白扇区,刚好可以放下 stage 1.5。当然,如果第一分区紧接在 mbr 之后,或 mbr 之后的空白扇区已被使用,将不会安装 stage 1.5。强行指定安装 stage 1.5 会报 Error 34 : No spare sectors on the disk 而不能安装。
没有 stage 1.5 时,stage 1 可以直接指向 stage 2。stage 1.5 的好处是它能够识别文件系统,从 stage 1.5 找 stage2 时,它是找分区上叫 stage2 的 文件。而 stage1 直接找 stage2 则是直接指向 stage2 文件在磁盘上的物理地址,这样如果 stage2 文件被挪动并且原位置被其他数据覆盖,引导就会失败。
stage2应该会读menu.lst。

安装grub时可以选择安装到mbr还是分区。
如果成功安装到分区应该也可以用
root (hdX,Y)
chainloader +1
来引导,不过我没试过。

grldr应该是grub4dos文件,可以放到boot.ini或menu.lst文件中加载。
回复