无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站投放广告、加入VIP会员,请联系 微信:wuyouceo
查看: 7383|回复: 12
打印 上一主题 下一主题

[求助] 关于MBR和PBR修改的一些疑惑(含测试结果,新手不懂求分析啊~~)

[复制链接]
跳转到指定楼层
1#
发表于 2011-2-27 11:50:09 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
由于新买了硬盘,想在两个硬盘装多个系统,就导致系统引导出错,在修复的过程中,发现一个微软自己出的一个修复工具,bootsect,其中VISTA第一版本只能修改PBR,而WIN7版本(在安装盘BOOT目录中)则既能修复PBR也能修复MBR。


我以前好像只是修复MBR,还没有修复过PBR,所以就想试试到底是怎么回事。


首先我在网上查资料,大概了解了MBR是硬盘的首扇区,PBR一般都位于分区的首扇区,至于引导过程我看过,还没有怎么理解~先不说这个~


我想测试一下MBR和PBR的作用和关系(相对于WINDOWS系统),本机系统WIN7,安装在C盘(硬盘的第一个主分区,单系统,另外一个新买的硬盘没有插上),修改MBR和PBR工具为WIN7安装包中的Bootsect.exe(我改名为bootsect_for_win7.exe),测试结果用的是坛里的简易启动测试器(我用过,感觉模拟的挺真实的)~~~


测试1:MBR写入XP的引导信息,C盘的PBR写入WIN7的引导信息:
         
     测试方法:
            1.管理员运行命令行提示符
            2.切换到bootsect所在目录
            3.bootsect.exe /nt52 c: /mbr      ;设置C盘所在的硬盘的MBR为XP引导
               bootsect.exe /nt60 c:              ;设置C盘的PBR为WIN7引导信息

      测试结果:
             系统能够正常引导

测试2:MBR写入XP的引导信息,C盘的PBR写入XP的引导信息:
      
      测试方法:
             4.接上,运行bootsect.exe /nt52 c:   ;设置C盘的PBR为XP引导

      测试结果:
   
              系统引导过程提示找不到NTLDR文件

测试3:MBR写入WIN7的引导信息,C盘的PBR写入XP的引导信息:

      测试方法:
             5.接上,运行bootsect.exe /nt60 c: /mbr    ;设置C盘所在的硬盘的MBR为WIN7引导

      测试结果:

               系统能够正常引导



至此,我对MBR和PBR的以及WIN引导过程彻底迷糊了,怎么会出现这种结果呢?两种系统的MBR引导信息一样吗?



不好意思图片总是传不上去,我再想想办法,还有现在有些乱,有些问题说不清,我会再编辑帖子的,还请大家给一些帮助~~~~~



图片用附件形式上传上去了,因为大小限制就剪了些~~~~~





我觉得一个可能的解释是MBR和硬盘的第一个扇区是指的同一个地方,所以上述命令只是重复的覆盖一个区域,所以是上述结果。


但我在一个帖子上看到过好像MBR不属于任何一个分区,我找找看那个帖子还能找到不,希望大家给意见啊~~~~~



再加上个bootsect.exe帮助中,/mbr的帮助信息:
/mbr的帮助信息是:
Updates the Master Boot Record without changing the partition table on sector 0 of the disk that contains the partition specified by sys, all, or drive letter. When used with /nt52 option, the master boot record is compatible with operating systems older tha Windows Vista. When used with the /nt60 option, the master boot record is compatible with Windows Vista, Windows Sever 2008 or later.

它的意思好像是更新包含指定盘的硬盘的第一扇区的引导记录,而不改变分区表。

[ 本帖最后由 201151 于 2011-2-27 15:56 编辑 ]

1MBR引导XP_PBR引导WIN7_命令执行_20110227.jpg (94.7 KB, 下载次数: 86)

1MBR引导XP_PBR引导WIN7_命令执行_20110227.jpg

1MBR引导XP_PBR引导WIN7_运行截图_正常引导WIN7_20110227.jpg (88.57 KB, 下载次数: 101)

1MBR引导XP_PBR引导WIN7_运行截图_正常引导WIN7_20110227.jpg

2MBR引导XP_PBR更改为引导XP_命令执行_20110227.jpg (90.8 KB, 下载次数: 105)

2MBR引导XP_PBR更改为引导XP_命令执行_20110227.jpg

2MBR引导XP_PBR更改为引导XP_运行截图_找不到NTLDR_20110227.jpg (70.46 KB, 下载次数: 94)

2MBR引导XP_PBR更改为引导XP_运行截图_找不到NTLDR_20110227.jpg

3MBR引导WIN7_PBR引导XP_命令执行_20110227.jpg (88.43 KB, 下载次数: 98)

3MBR引导WIN7_PBR引导XP_命令执行_20110227.jpg

3MBR引导WIN7_PBR引导XP_运行截图_成功启动_20110227.jpg (98.5 KB, 下载次数: 99)

3MBR引导WIN7_PBR引导XP_运行截图_成功启动_20110227.jpg

bootsect_for_win7.zip

38.98 KB, 下载次数: 51, 下载积分: 无忧币 -2

2#
发表于 2011-2-27 12:48:54 | 只看该作者
MBR就像一本书的总目录一样,是不属于书内任何一个章节的,主分区的DBR是位于分区的第一扇区,扩展磁盘的DBR不是位于分区的第一个扇区,EBR才是位于扩展分区的第一个扇区上,DBR与EBR之间有一个分区间隔,分区间隔通常是3Fh,在Vista和Win7下是800h,严格来讲,DBR不是分区的构造,而是磁盘的构造,当我们分好区的时候,只有DPT和EBR存在,并没有DBR这个结构出现,只有当我们开始格式化时,DBR才会随着磁盘文件系统的创建而生成,它是访问这个逻辑磁盘的钥匙,是逻辑磁盘定义的总领。
回复

使用道具 举报

3#
 楼主| 发表于 2011-2-27 13:04:19 | 只看该作者
是我对硬盘的结构还不了解,我再好好看看~~~~


可是上面的测试结果怎么解释呢?
回复

使用道具 举报

4#
发表于 2011-2-27 13:51:33 | 只看该作者

回复 #4 201151 的帖子

我没看你的实验过程描述,也就不做评论,我只是讲一讲MBR、EBR和DBR之间的关系。
回复

使用道具 举报

5#
发表于 2011-2-27 13:57:38 | 只看该作者
系统的启动是一个复杂的过程,任何一个环节出问题,最终的结果都是启动失败。
第一步是MBR引导代码的加载,这是第一个环节,至于MBR里面的引导代码是XP的,还是VISTA,WIN7的或者是其它第三方的,我觉得问题不大,只要MBR代码能够实现加载活动分区的引导代码并把控制权移交就完成任务了。
第二步是活动分区引导代码的启动过程了。这一步相对来说比第一步要重要,因为,这一步是要加载系统的核心文件并把启动控制权交给系统核心文件的过程了。  如果分区的引导代码是XP的,那么会尝试加载NTLDR文件,请注意,它只会加载当前分区的NTLDR。  如果分区的引导代码是WIN7的,就会加载BOOTMGR。  只有在加载NTLDR或者BOOTMGR之后,下一步的过程就是NTLDR或者是BOOTMGR的引导过程了。
第三步,如果是NTLDR,会根据BOOT。INI的文件内容来继续启动系统,如果是BOOTMGR,则会根据BCD文件的内容加载系统。这一步中BOOT。INI或者BCD文件内容有误的话,会导致启动失败。

多硬盘的情况要考虑BOOT。INI跟BCD文件内容。这个是比第二步更加需要注意的一部分。
回复

使用道具 举报

6#
发表于 2011-2-27 14:32:51 | 只看该作者
#6说得已经很清楚了。再针对楼主的测试说一下:

nt5的mbr和nt6的mbr在楼主的机器上实现同一功能(不考虑特殊机器上的不同结果),所以楼主加不加/mbr的结果相同,因此操作的结果区别只在/nt52和/nt60参数上

测试1,最终结果为/nt60,即PBR加载BOOTMGR,楼主C盘根目录上存在该文件,成功
测试2,最终结果为/nt52,即PBR加载NTLDR,楼主C盘根目录不存在NTLDR,所以失败
其它测试结果同上。

/nt60,(NTFS),首先加载BOOTMGR,当不存在BOOTMGR,再加载NTLDR,两文件都不存在则引导失败
/nt60,(FAT32),加载BOOTMGR,BOOTMGR不存在则引导失败
/nt52,(NTFS+FAT32),只加载NTLDR,不存在则引导失败

[ 本帖最后由 2010_zheng 于 2011-2-27 14:34 编辑 ]
回复

使用道具 举报

7#
 楼主| 发表于 2011-2-27 15:40:59 | 只看该作者

回复 #5 sgw888 的帖子

你讲的很清楚,好像XP和WIN7写入MBR的引导代码都只是加载活动分区的引导代码。。。。。而我只有一个活动分区,所以不管用哪个都能启动~

这样讲来如果我先将分区引导记录设成XP的,再将MBR设为WIN7的,再应该不能启动了。但我刚才又设置了下,命令是:
bootsect /nt52 c:
bootsect /nt60 c: /mbr

但结果还是能够启动(用启动测试器测试的,等下我就关机试试~~~


应该是不能启动的啊!


我在帖子最后面又加入了/mbr参数的帮助内容和我所用的bootsect.exe~



刚才电脑重启了,也能进入 系统,我真的怀疑MBR和第一主分区的PBR是一个地方了~~~~~




我明白了,应该是我对命令理解的问题,bootsect.exe /nt60 c: /mbr,这条命令不但把MBR写入了NT60的引导,还在分区引导记录写入了启动信息。。。。


所以,前面的在MBR写入NT52或60的引导,只要在PBR写入的是NT52的就一定不能启动!我再找工具试试~~~~


我用:
mbrfix /drive 1 fixmbr /yes      ;设置MBR为NT52
bootsect /nt60 c:                     ;设置第一分区PBR为NT60
然后用bootice查看结果,分区引导记录和MBR的确实不一样,所以是我对命令理解有误的问题~


现在再验证一下bootsect /nt60 c: /mbr是不是在MBR和PBR都进行了操作~~~~

[ 本帖最后由 201151 于 2011-2-27 16:19 编辑 ]
回复

使用道具 举报

8#
 楼主| 发表于 2011-2-27 15:42:51 | 只看该作者

回复 #2 lvyanan 的帖子

我找了些FAT32的资料,明天好好看看~~~


我在7#又做了个尝试,感觉MBR和第一分区的引导记录是指一个地方,我不懂。


但结果表明,应该可能是一个地方~



能不能给些硬盘相关的学习资料啊。。。。。刚来,求学习~~~~~
回复

使用道具 举报

9#
 楼主| 发表于 2011-2-27 15:49:23 | 只看该作者

回复 #6 2010_zheng 的帖子

nt5的mbr和nt6的mbr在楼主的机器上实现同一功能(不考虑特殊机器上的不同结果),所以楼主加不加/mbr的结果相同:
                   指的是NT5和NT6的MBR功能相同吗?

所以楼主加不加/mbr的结果相同,因此操作的结果区别只在/nt52和/nt60参数上:
                   加不加/mbr,的结果相同是什么意思?我理解的加上/mbr是在C:所在的硬盘的MBR中写入引导记录,不知道对不对,也不知道你的理解?


测试1,最终结果为/nt60,即PBR加载BOOTMGR,楼主C盘根目录上存在该文件,成功
测试2,最终结果为/nt52,即PBR加载NTLDR,楼主C盘根目录不存在NTLDR,所以失败
             最终结果为/ntxx,指的是MBR的引导记录是NTxx还是PBR的引导记录是NTxx,还是这里的MBR和PBR相同?


新手求教,听不懂,还请详细告知啊~~~~~~

[ 本帖最后由 201151 于 2011-2-27 15:50 编辑 ]
回复

使用道具 举报

10#
发表于 2011-2-27 16:12:59 | 只看该作者
这样讲来如果我先将分区引导记录设成XP的,再将MBR设为WIN7的,再应该不能启动了。但我刚才又设置了下,命令是:
bootsect /nt52 c:
bootsect /nt60 c: /mbr

上面两个命令是连续执行的吗??
如果是的话,你先将分区引导代码改成了引导NTLDR的,然后,又改成引导BOOTMGR的了,如此而已。
回复

使用道具 举报

11#
 楼主| 发表于 2011-2-27 16:25:04 | 只看该作者
那两个命令是先执行一个 ,就紧接着执行另外一个的。


刚刚又测试了下,是你说的那样执行的,我太粗心了!!!!





但最后证明了NT52和NT60的MBR引导程序是可以通用的,这个事实我以前从来没有注意过~~~~~~~~~



明天好好学下硬盘的构造和分区,真的该好好学下了~



同时,谢谢你的分析 ~~~

[ 本帖最后由 201151 于 2011-2-27 16:27 编辑 ]
回复

使用道具 举报

12#
发表于 2011-9-20 17:33:36 | 只看该作者
学习了。MBR中的引导程序应该都是差不多的,
1、首先要确定PBR是xp的还是Windows 7的。
2、如果PBR是xp的,活动分区必须要有:ntldr、ntdetect.com和boot.ini才可完成启动。
3、如果PBR是Windows 7的,活动分区必须要有:bootmgr和boot\bcd才可完成启动。
4、修改PBR的方法:
在命令提示符中输入:bootsect /nt60 sys
(nt60是添加启动控制台,即修改PBR为Windows 7的;若要删除启动控制台,命令为:bootsect /nt52 sys,即修改PBR为xp的。)
备注:bootsect.exe在Windows 7安装光盘的boot文件夹下
回复

使用道具 举报

13#
发表于 2011-9-20 18:01:15 | 只看该作者
回楼主,你再做此类测试我觉得用BOOTICE好啊,个人认为WIN7和XP的MBR应该是不一样,以前的DG在WIN7里面重建主引导后会导致无法启动,新版的DG后来才解决这个问题
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2024-12-1 13:56

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表