无忧启动论坛

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

[讨论] 关于FORMAT对DBR扇区修改的讨论、、、、

[复制链接]
跳转到指定楼层
1#
发表于 2011-4-13 09:30:53 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
     大家知道,FORMAT是一款DOS中的高级格式化工具,它有一个重要的作用是能够在执行高级格式化的时候,写入此分区的DBR,在DBR中添加引导程序,DBR中的引导程序在不同版本的操作系统中是不同的。。。。(这些是讨论如下问题的前提)
      在制作一个简单的启动盘时,它也可以发挥作用,可以这样,用FORMAT格式化一个空软盘,将任何版本的MS.DOS的IO.SYS、MSDOS.SYS与COMMAND.COM三个系统文件集资直接拷入,得到该版本的系统启动盘,这样就得到了一个简单的启动盘、、、
但是,大家想过没有,我们平时在格式化硬盘的时候,大多数用的不是FORMAT格式化工具,而是其它的格式化工具,像DISKMAN,它可以在分区过后,立即执行高级格式化,
这样格式化的分区,也能安装操作系统。
但是问题是:
用DISKMAN格式化的时候,难道也能写入DBR扇区的引导程序?

DISKMAN格式化的时候,只能指定格式化成某种格式,如FAT32,NTFS,但是没有说格式成某种操作系统的格式
但事实是用DISKMAN格式化过的分区,是既能安装WINDOWS XP,也能安装WINDOWS 7
但是WINDOWS XP和WINDOWS 7系统所在分区中的DBR主引导程序是不同的
那么为什么用DISKMAN格式化过的分区,既能安装WINDOWS XP,也能安装WINDOWS 7?
假设操作系统所在分区的DBR引导程序不是DISKMAN指定的,那么难道安装操作系统时,操作能写入DBR的引导程序吗?
如果能写入,那么是用什么程序写入的呢?如果不能写入,那么DBR中的引导程序是什么软件写入的?
如上的一些问题,欢迎大家的讨论,希望在大家的讨论中,能让这个问题明晰起来。。。。
(如能论坛中的各位高手及大侠能够加入到讨论中,我将感激不尽。。在此鞠躬致谢!)


文献中这样说:“DBR引导代码主要根据DBR中的BPB表定义的文件系统格式参数,来访问和搜索操作系统的启动文件,对于WINDOWS XP系统,就是查找到NTLDR,并将NTLDR装入内存,再把引导控制权移交给NTLDR,第四阶段的引导就开始了”
在这段的第一句中,BPB表定义的文件系统格式参数,是如何被定义的,是在格式化分区之后安装操作系统时,被操作系统所定义的吗?还是被FORMAT定义的?那么这个定义是如果进行的?
DBR是由5个部分组成的,其中有系统版本号和磁盘参数块,也即BPB,再就是DOS引导程序,DOS引导程序是引导XP系统的NTLDR,还是引导WIN7系统的BOOTMGR,是根据什么判断的呢?是根据系统版本号还是BPB参数块??
欢迎大家的讨论。。。
对于不同的操作系统,DBR中的DOS引导程序到底是不是一样的呢?
我个人觉得DOS引导程序可以是一样,如果它是一样的话,DOS引导程序照样可以根据系统DBR中的系统版本号和BPB参数来判断引导何种启动文件(NTLDR或者bootmgr)
但是有的文献中说,不同操作系统系统的DOS引导程序是不同的,那我就不懂了,如果说WINDOWS XP和WIN7的所在分区的引导程序不同,那么不同在哪里?又是哪个程序写入的DOS引导程序,才让它不同?
大家觉得呢?
清华大学的一个著名的数据恢复方面的教授说:“DBR是由5个部分组成的,1.跳转指令 2厂商标识和系统版本号 3.磁盘参数块BPB  4.DOS引导程序  5结束标志 DBR的结束标志与分区表的结束标志相同,也是55AA,占用两个字节。
以上5个部分共占用512个字节,正好是一个扇区,该扇区的内容除第5部分结束标志字固定不变外,其余4个部分都是不确定的,会根据操作系统的版本,安装的磁盘类型不同而变化”。
以上是教授的一段话,他说会根据操作系统的版本而变化,难道意思是说,操作系统可以改写DBR中的某些代码吗?
但是又有文献中说,DBR是由高级格式化工具FORMAT写入的
DBR中的引导程序去引导操作系统的启动文件,到底是靠FORMAT写入的引导程序,还是操作系统写入的引导程序(如果它能写的话)?
这个关系到底是怎样的啊??
大家来讨论吧,谢谢
不点大师,你快出马吧,我一直期待着你过来讨论,我一直都很佩服你在启动方面的研究和你在论坛中的文采
不点大师,如果你能指点一二,本人将感激不尽,一生难忘你的教诲!

[ 本帖最后由 dgxhls 于 2011-4-13 22:02 编辑 ]
2#
 楼主| 发表于 2011-4-13 11:12:42 | 只看该作者
也欢迎其它的大师来讨论,无忧启动是个高手云集的地方,不点大师的同门兄弟也很多,欢迎大家一起来讨论,感激感激!
回复

使用道具 举报

3#
发表于 2011-4-13 11:35:33 | 只看该作者
建议你搜索作者:天涯海角1216
把他以前发的相关知识贴看下。
发现你是白来无忧了简单问题让你写了这么多回复。
回复

使用道具 举报

4#
 楼主| 发表于 2011-4-13 13:50:51 | 只看该作者

回复 #8 yjd 的帖子

你是没有看懂我这个帖子的意思,所以你就随便说让我看天涯海角的帖子,他的帖子我看过了,但没有找到答案。
我的这个问题,很多著名文献中都没有讲解的很清楚,你凭什么一句话就回答了我,如果你能回答我的问题,麻烦你给个具体的回答。如果你发现了详细解释,请你发个答案的连接也行,谢谢了
回复

使用道具 举报

5#
发表于 2011-4-13 14:14:22 | 只看该作者
"那么为什么用DISKMAN格式化过的分区,既能安装WINDOWS XP,也能安装WINDOWS 7?
"
我一般不用diskman来做格式化,我猜测在安装xp(或7)时在安装过程中写入了DBR。
通过一些工具可以看到dbr,建议你验证一下。
回复

使用道具 举报

6#
发表于 2011-4-14 11:56:56 | 只看该作者
你是没有看懂我这个帖子的意思,所以你就随便说让我看天涯海角的帖子,他的帖子我看过了,但没有找到答案。
我的这个问题,很多著名文献中都没有讲解的很清楚,你凭什么一句话就回答了我,如果你能回答我的问题,麻烦你给个具体的回答。如果你发现了详细解释,请你发个答案的连接也行,谢谢了

文章太长了没详细看完。被我瞄到这个
  1. 到底是靠FORMAT写入的引导程序,还是操作系统写入的引导程序
复制代码
你既然查了那么多资料。这句话不应该说吧谁写入的你还在迷糊?
好吧我也是菜鸟都是我滴错sorry
回复

使用道具 举报

7#
 楼主| 发表于 2011-4-14 12:11:51 | 只看该作者
坛主把我的帖子整理了的吧?谢谢了,呵呵
回复

使用道具 举报

8#
发表于 2011-4-14 21:31:35 | 只看该作者
我来说一下,希望楼主能看明白。

DBR扇区对于FAT32 来说只有一个扇区。 BPB 数据块的位置是固定的,除去BPB 占用的位置,其它我都认为是 程序代码。 刚开始的三个字节固定是跳转代码。 对于XP跟WIN7来说,如果FAT32你是用XP格式化的磁盘,那么引导代码就是用来引导 NTLDR的,如果是在WIN7下格式化的磁盘,那么引导代码就是用来引导BOOTMGR的。也就是说你用哪个系统格式化 的磁盘,引导代码就是哪个系统的,引导代码在磁盘格式化时就已经产生了。如果用WINPM 格式化的磁盘,那么代码就是WINPM的,不过,不知道它的代码是引导NTLDR还是其它,没试过。但我查看过它格式化的磁盘,代码是它自己的。

对于一个磁盘来说,没有引导代码,并不影磁盘的访问,只是会影响启动。
NTFS 跟FAT32 总体是一样的,只不过NTFS的引导代码占用了好几个扇区,WIN7的引导代码要比XP的引导代码占用扇区多。

每一个固定的分区格式,BPB的位置都是固定的。不能更改。  

DISKMAN格式过的分区有没有代码,要看DISKMAN 它自己。

一个磁盘,无论是FAT32还是NTFS,不管它原来的引导代码是什么,你在重装系统时,DBR代码肯定会被相应的更改成对应的代码,这没有什么好纠结的。 这也就是你在C盘安装了WIN7,再安装XP,就不能引导 WIN7的原因所在。 因为引导代码换成引导NTLDR而不是引导BOOTMGR了。  另外,BOOTSECT。EXE 可以自己指定要更改成什么引导代码。
回复

使用道具 举报

9#
 楼主| 发表于 2011-4-15 12:17:53 | 只看该作者

回复 #8 sgw888 的帖子

你的回帖我看完了,感谢你的参与!
bootsect.exe是VISTA自带的一个修改启动代码的程序
那你说WIN XP安装盘中的修改启动代码的程序是什么呢?
那我这样理解,你说行吗?格式化程序的目的只是在分区中留出一个扇区,作为DBR,这个扇区中的主引导代码是什么不重要,重要的是这个扇区中有放主引导代码的位置,你说呢?在DOS时代,格式化程序FORMAT格式化时就自动划分了DBR扇区,并在里面填了DOS系统的启动代码,但是在WINDOWS时代,有很多种格式化工具,它们在格式化的时候,也有一个划分DBR扇区的作用,但是主引导代码具体是什么,还是要看所安装的操作系统中的那个修改引导代码的程序,像VISTA的bootsect.exe或者是其它的
说到底,安装操作系统时,引导代码就会是此操作系统的引导代码,具体来说是,引导代码是此操作系统中的写引导代码程序所决定的,再说具体点,就是写引导代码的那个程序所加的是哪个参数。
例如:在BOOTSECT.EXE中

参数/nt60 使用基于内核为nt60的操作系统的主引导代码,有:Windows vista和Windows7等
  引导文件为 bootmgr
  参数/nt52 使用基于内核为nt52的操作系统的主引导代码,即:Windows xp
  引导文件为 ntldr
总结:格式化工具只是划分一个一扇区大小的位置,用来放引导代码
         引导代码的类型是由操作系统安装盘中的写引导代码的那个程序决定的,例如bootsect.exe

大家还有什么意见或者看法,说出来吧,大家一起讨论
留给下一楼的问题:
bootsect.exe是VISTA自带的一个修改启动代码的程序
那WIN XP安装盘中的修改启动代码的程序是什么呢?




[ 本帖最后由 2011after 于 2011-4-15 12:26 编辑 ]
回复

使用道具 举报

10#
发表于 2011-4-15 14:25:40 | 只看该作者
严格来说,对于格式化程序来讲,它的主要作用是用于创建文件系统。
这儿,我要以FAT32为例,因为NTFS我并不熟悉。
格式化是一个复杂的过程,相比分区而言。格式化以后,就创建了文件系统。
首先要构造DBR扇区,引导代码当然是次要的,最重要的还是与文件系统紧密相关的BPB参数块。其中包括磁头数,分区大小扇区数,根目录簇号,每个簇的大小,占用扇区多少等等。 构造了DBR扇区,接下来就是构造FAT表,也就是文件分配表,然后是根目录。 根目录默认是空的。

上面是一个大体的过程。 了解了这些,你就能明白,格式化实际上就是创建文件系统的一个过程。

引导代码那只是附加的东西。  对于XP,或者WIN7,或者理解为微软的系统,在格式化时,引导代码就一起产生了,引导代码总是跟文件系统一块产生的。   但是你用第三方的格式化程序就不一定了。

另外,楼主,不要再去纠结,XP 是哪个程序去修改启动代码的了。 对于BOOTSECT 来说,他只是微软提供给我们的一个方便的小工具而已,微软自己而言,实际上根本没必要去弄个单独的程序来更新 DBR 扇区的代码。 在XP提供的命令恢复控制台中,就有FIXMBR跟FIXBOOT这两个命令用于修复主引导代码跟DBR代码。 以前的时候,这些代码被破坏,主引导还好说,有DISKMAN等,DBR代码当时好像只能用 命令恢复控制台了,现在就N多选择了。
回复

使用道具 举报

11#
发表于 2011-4-15 14:47:41 | 只看该作者
借问一下,是不是bootice这类改写DBR的工具只会改变前面的引导代码而不会去碰后面的BPB表?
回复

使用道具 举报

12#
 楼主| 发表于 2011-4-15 22:46:28 | 只看该作者

回复 #10 sgw888 的帖子

我在论坛里开设这个帖子是为了弄清楚DBR的形成原因,这和纠不纠结没有关系的。
如果对于DBR的形成原因不清楚,那么在电脑DBR出问题的时候,就麻烦了,并不是你说的,一出问题,就非得进入命令恢复控制台去修复,更多的时候,问题来了后,连命令恢复控制台都进不了,这时,也不一定像你说的这样,再装个系统就了事,再装个系统是可以省事,系统装了后,DBR当然是恢复正常了。但是难道电脑每次出问题,就装系统吗,有时候连控制台都进不了。靠装系统解决电脑故障,是最简单、最没有技术含量、最低级、效率最低的一种办法。。
你想表达的意思我明白,你几个回帖都是强调系统装完后,系统就会自动创建DBR及其中的引导代码。但是你没有说到关键点上,没有指出在装系统时,到底是哪个程序创建了DBR及其中的引导代码。fixboot及FIXMBR是能修复,不错,但是这两个程序是否为系统中DBR中引导代码的创建程序,你没有指出来。
可能对于你而言,你觉得没有必要去弄清原因,但那仅限于你而已。。。你不能要求别人的想法和你的一样。
不过和你来回几个回贴,觉得你为人不错,我内心很感激你对于这个帖子的参与,真诚的谢谢。。
回复

使用道具 举报

13#
 楼主| 发表于 2011-4-15 22:52:36 | 只看该作者

回复 #11 onlyu2000 的帖子

在BPB表中,03H偏移量处的几个字节中存有操作系统版本号,如果你用BOOTICE去改写引导代码,假设你把引导代码改写成了引导XP的NTLDR时,那么操作系统版本号就会是XP这个相关版本的;如果你把引导代码改成了引导WIN7的bootmgr,那么BPB表中的操作系统版本号,就会是WINDOWS 7系统的版本
回复

使用道具 举报

14#
发表于 2011-4-16 10:01:48 | 只看该作者
候,问题来了后,连命令恢复控制台都进不了,这时,也不一定像你说的这样,再装个系统就了事,再装个系统是可以省事,系统装了后,DBR当然是恢复正常了。但是难道电脑每次出问题,就装系统吗,有时候连控制台都进不了。靠装系统解决电脑故障,是最简单、最没有技术含量、最低级、效率最低的一种办法。。
你想表达的意思我明白,你几个回帖都是强调系统装完后,系统就会自动创建DBR及其中的引导代码。但是你没有说到关键点上,没有指出在装系统时,到底是哪个程序创建了DBR及其中的引导代码。fixboot及FIXMBR是能修复,不错,但是这两个程序是否为系统中DBR中引导代码的创建程序,你没有指出来。

肯定是windows自带diskpart分区工具,格式化类型就做好了。你真是死钻牛角尖。

恢复控制台进去,难道就没有别的方法了?现在pe到处都是。
从接触电脑到现在我就从来没用过恢复控制台。
回复

使用道具 举报

15#
 楼主| 发表于 2011-4-16 10:43:16 | 只看该作者

回复 #14 yjd 的帖子

什么叫死钻牛角尖了,我这和钻牛角尖没有关系。
再不想跟你们争了,就这样了,此贴在无忧到此结束
回复

使用道具 举报

16#
发表于 2011-4-16 11:15:17 | 只看该作者
还是回一个帖子给你吧,看在你这么认真的份上。
我真的觉得,你可能不是在钻牛角尖,但可能你问问题,没有问到重点上,而不是我回帖没有说到重点上。你没有问实质性的问题,我当然也就没有回答实质性的问题。

对于DBR,对我们而言,真正有实用意义的就是在 它的引导代码被破坏的时候,你可以修复它,或者在你不确定它有没有损坏的时候,刷新一下代码,这个都是可以的。可以这么说,就算你重新刷写了代码,只要操作得当,就是有益无害的。   这样的工具很多不是吗??BOOTSECT。EXE 就可以做到,不但可以刷新 MBR代码,也可以更新DBR代码。

BOOTICE 那就更加强大了!!! 它不但可以更改MBR跟DBR代码,它还可以在你刷新代码之前去识别原来的引导代码类型。BOOTICE是很棒的。它超过BOOTSECT,不论是思想还是实现代码。

系统不能启动,原因是很多的,我也并没有说非要通过重装系统来解决,只是你理解有误罢了。

在DBR或者MBR代码损坏的情形下,你可以在PE下面,用BOOTICE   BOOTSECT 来重写主引导代码跟DBR代码,安全起见,两个都刷新一下。

要是在以前,只有XP的时候,在PE还没有如此盛行的时候,用XP的原版安装光盘,启动系统,进入命令恢复控制台,使用FIXMBR FIXBOOT就可以轻易的修复MBR跟DBR。这难道很复杂吗??起动个控制台跟PE 差不多的速度。

命令控制台是XP安装光盘中本身就集成了的,可以运行DISKPART,FORMAT 跟我提到的修复命令。一般情形下,它总是可以成功启动的。

如果你指的是DBR 除了引导代码的其它部分损坏,如果牵涉到重要的参数,那就是数据恢复的范畴了,用所有的DBR代码修复程序都不可能修复,它们只管程序代码,不会去动BPB参数。BPB如果损坏,磁盘会无法访问,要么提示未格式化,要么就是RAW。

就说这么多了。
回复

使用道具 举报

17#
发表于 2011-4-16 22:43:20 | 只看该作者

回复 #16 sgw888 的帖子

佩服,这个帖子的确很经典,也佩服楼主的韧劲,呵呵
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2025-8-4 01:23

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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