无忧启动论坛

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

[求助] 一个奇怪的引导出错现象

[复制链接]
跳转到指定楼层
1#
发表于 2011-12-23 22:25:53 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
用虚拟VHD在虚拟机上挂了个PE

这个PE是用NTLDR引导的,我之前用bootice处理了grub引导NTLDR

虚拟机里面启动正常。
可是我要把控制权直接交给NTLDR。
于是把MBR设置NT5.x,PBR设置NTLDR。
可是启动就出错了
如图所示:

2#
发表于 2011-12-24 07:45:44 | 只看该作者
NTLDR 的微软引导扇区不含自动几何参数探测代码,因此,在理论上它比 grldr.mbr 有更高的失败率。

所有那些 “ 不含 CHS 自适应代码 ” 的引导扇区,都有同样的问题存在,是不治之症。只有一种办法来让它们成功启动,即,绝对保证 MBR 的分区表 以及 BPB 里面的 H、S 与 BIOS 将要认定的 H、S 是完全一样的,不能有丝毫差别。

而含有 几何参数自适应功能的引导代码,则不需要你在分区表以及 BPB 中写入正确的 H、S 值,错了也不影响启动,因为它能探测出 BIOS 所认定的 H、S 值,从而采用探测到的值来保证后续的启动过程顺利进行。

目前只有 grldr.mbr 和 fbinst 有此功能。这两者又有差别,互有优缺点,分析如下:

1。grldr.mbr 无须重新分区,安装方便。但失败率比 fbinst 高。
2。fbinst 成功率比 grldr.mbr 高很多,但安装时需要重新分区,这带来一定的麻烦,很可能正是因为这一点,才使得它不太容易被汉语圈以外的人采纳。也有人报告 grldr.mbr 成功而 fbinst 失败的情况。
回复

使用道具 举报

3#
发表于 2011-12-24 08:57:07 | 只看该作者

回复 #1 小豪diao 的帖子

已经不关MBR的事了,楼主的出错提示中MBR已经正确读取PBR并把引导权交给PBR,楼主可以尝试写BOOTMGR的PBR(NTFS分区如果BOOTMGR文件不存在会引导NTLDR),看一下结果又如何。
回复

使用道具 举报

4#
发表于 2011-12-24 09:41:32 | 只看该作者

回复 #3 2010_zheng 的帖子

错。

grldr.mbr 的几何参数探测功能本身是在 MBR 上,因为 PBR 上没有放置探测代码。

如果不采用探测代码,则任何一个引导程序都是一样的(前面解释过了),它们之间没有本质的差别。楼主已经证明了,即使微软的引导代码(在 PBR 上),也找不到自己的 NTLDR 文件,倒是 MBR 上的 grldr.mbr 代码(把 GRLDR 字符串修改为 NTLDR 字符串)后,能够找到 NTLDR。这里面就差一个 CHS 的自动适应能力,别的都没什么差别。
回复

使用道具 举报

5#
 楼主| 发表于 2011-12-24 13:40:18 | 只看该作者

回复 #3 2010_zheng 的帖子

经过ABS的备份还原的实验后,今天早上来实验又发现可以引导了。而且设置bootmggr第一引导,ntldr第二引导。
也是可以跳到NTLDR,总之就是。早上就正常了 = =
回复

使用道具 举报

6#
发表于 2011-12-24 13:40:36 | 只看该作者

回复 #4 不点 的帖子

呵呵,从我回复楼主的观点上来说,哪点错了?既然我回复了#1,观点就不针对#2了。

不否认grub4dos的强大,但和ms的mbr/pbr引导观点上本来就不同,grub4dos认为不管你引导区参数正确与否,我都可以启动,而ms则认为你一定要符合我的要求,才可以启动,从出发点不同注定ms的mbr/pbr引导能力不如grub4dos,这点不容置疑。

至于兼容性,很不好说清楚,包括投票贴都只反映了极少的个例,GRUB4DOS 0.4.5b 2011-05-19应该不算旧的版本了,我也遇见grldr加载后所有对文件操作失效的例子,包括所有的find -set或ls命令(印象中出错提示为no such partition),幸好再换更新的版本后解决。这个例子不算在mbr/pbr之内了,而是grldr已经加载后的情况了。grldr.mbr前期版本普遇到过搜索不到grldr的现象,后期版本基本没遇到问题。

所以,引导功能强大当然是grub4dos,但兼容性还是不好判断

我#2是从ms的引导流程上进行看待问题,而不是从grub4dos的角度看楼主的问题

[ 本帖最后由 2010_zheng 于 2011-12-24 13:51 编辑 ]
回复

使用道具 举报

7#
 楼主| 发表于 2011-12-24 13:42:37 | 只看该作者

回复 #4 不点 的帖子

我昨天找到一个可以正常启动的XP虚拟磁盘,用bootice把它的pbr和mbr备份出来,然后还原到这个虚拟磁盘上。结果还是一样的失败。
回复

使用道具 举报

8#
发表于 2011-12-24 13:44:49 | 只看该作者
原帖由 小豪diao 于 2011-12-24 13:40 发表
经过ABS的备份还原的实验后,今天早上来实验又发现可以引导了。而且设置bootmggr第一引导,ntldr第二引导。
也是可以跳到NTLDR,总之就是。早上就正常了 = =


ABS我没用过,看样子在对引导区的处理方面和ghost差不多,当引导区的参数错误时,用ghost备份后再进行还原可以修复。
回复

使用道具 举报

9#
 楼主| 发表于 2011-12-24 13:46:00 | 只看该作者
我是觉得不点说的耶没错,貌似就是所谓的NTLDR”探测“比较死板问题导致。
但这个出错情况到底是为什么,我还是不晓得,RP?
回复

使用道具 举报

10#
发表于 2011-12-24 13:46:45 | 只看该作者
原帖由 小豪diao 于 2011-12-24 13:42 发表
我昨天找到一个可以正常启动的XP虚拟磁盘,用bootice把它的pbr和mbr备份出来,然后还原到这个虚拟磁盘上。结果还是一样的失败。


MBR和PBR不是问题,你引起的问题是引导区中的分区参数表,而BOOTICE的备份和还原是不修复这段引起引导失败的参数表的
回复

使用道具 举报

11#
发表于 2011-12-24 13:48:17 | 只看该作者
原帖由 小豪diao 于 2011-12-24 13:46 发表
我是觉得不点说的耶没错,貌似就是所谓的NTLDR”探测“比较死板问题导致。
但这个出错情况到底是为什么,我还是不晓得,RP?


呵呵,好象没人说不点说错了
回复

使用道具 举报

12#
 楼主| 发表于 2011-12-24 13:48:26 | 只看该作者

回复 #8 2010_zheng 的帖子

你的分析也没错……的确不关MBR的事。
昨天我也有试过把pbr设置bootmgr,而根目录没有bootmgr。
然后也是一样的错误。这说明是NTLDR的问题吗?

对了!我的这个虚拟硬盘里面装的是PE系统,2003核心的,跟这个有关吗?
回复

使用道具 举报

13#
 楼主| 发表于 2011-12-24 13:49:30 | 只看该作者
<br />
MBR和PBR不是问题,你引起的问题是引导区中的分区参数表,而BOOTICE的备份和还原是不修复这段引起引导失败的参数表的
<br />

这个回答很有针对性……
回复

使用道具 举报

14#
 楼主| 发表于 2011-12-24 13:51:13 | 只看该作者
两边倒了……
整理下思路

不点的解释是:ntldr的容错性差导致的。
而zheng的说法是因为bootice在处理分区表问题导致
回复

使用道具 举报

15#
发表于 2011-12-24 14:00:29 | 只看该作者
原帖由 小豪diao 于 2011-12-24 13:51 发表
两边倒了……
整理下思路

不点的解释是:ntldr的容错性差导致的。
而zheng的说法是因为bootice在处理分区表问题导致


不,不点不是这个意思,不是ntldr的容错性,而是微软的MBR/PBR这两种引导程序的容错性差引起,你根本还没加载成功NTLDR。grldr.mbr其实功能上包括了MBR和PBR两部分了。

我也不是指bootice处理分区问题,本来这段参数表就不是这些程序处理的,包括MS的bootsect都不处理这一段的内容,这段内容一般由格式化时就已经固定(包括ghost的分区恢复操作会重写这段参数表),打个例子,你在LBA环境下格式化了一个分区后生成的参数表,在你BIOS把硬盘参数设置为LARGE模式就有可能会引起引导失败。

MS的PBRFAT32和NTFS这两个最常见的引导程序处理方式没统一,FAT32的DL值而BPB表中获得,而NTFS的DL值则从MBR中继承。一些U盘在系统中格式化后成FAT32后一般BPB参数表该值为0,作为引导时就会引起和楼主同一现象的故障提示。
回复

使用道具 举报

16#
发表于 2011-12-24 14:13:52 | 只看该作者

回复 #15 2010_zheng 的帖子

我认为,ms的fat引导的整个思路就是“脑残”的思路。如果ms从一开始就不在bpb里保存dl值和chs参数,而是坚持使用bios传递的dl和int 13h返回的chs参数,那么就不会有现在的混乱了。
回复

使用道具 举报

17#
发表于 2011-12-24 14:15:55 | 只看该作者

回复 #10 2010_zheng 的帖子

>>> 你引起的问题是引导区中的分区参数表

你所说的 “ 分区参数表 ” 是什么意思?我猜猜看,你是不是说的就是 BPB 表?

如果 “是” 的话,我前面已经解释了,在没有 H、S 自动探测代码的情况下,必须完全 “ 正确 ” 才能引导成功,无论是不是微软的引导代码,都是如此。从楼主到目前为止的描述,似乎也验证了。

在你所说的 “分区参数表” (即我所说的 BPB 表)中,其他敏感的系统参数都不可以随便更改,更改之后整个分区就不可识别了,(大约)只有 H 和 S 可以更改。就是说,一个不正确的 H 和 S,会导致微软的引导代码失败。但位于 MBR 上的 grldr.mbr 却能够避免失败。这就是自动几何探测强的地方啊。技术关键点就在这里呢。

>>> 从我回复楼主的观点上来说,哪点错了?

哪点错了,难道你还不明白?难道需要再重复写一遍?(不幸的是,在上一段,我已经重复写了。)

>>> 既然我回复了#1,观点就不针对#2了。

你针不针对 2 楼,有什么关系呢?这里是论坛,任何人都可以从自己理解的角度出发,来考虑问题。而且这又是在 grub4dos 讨论专区里面。难道不允许我回复你的帖子?

从回复时间来看,你的回帖在我的回帖之后 1 个多小时,你应该看到了我的回帖。可你贴子的内容仍旧说是与 MBR 无关。尽管你是回复 1 楼,但我也可以认为,你可能也 “附带地” 回复了 2 楼。所以我也接着 “澄清”,以免别人误解。

[ 本帖最后由 不点 于 2011-12-24 15:37 编辑 ]
回复

使用道具 举报

18#
发表于 2011-12-24 14:21:04 | 只看该作者
原帖由 不点 于 2011-12-24 14:15 发表
>>> >>> 从我回复楼主的观点上来说,哪点错了?

哪点错了,难道你还不明白?难道需要再重复写一遍?(不幸的是,在上一段,我已经重复写了。)

>>> 既然我回复了#1,观点就不针对#2了。

你针不针对 2 楼,有什么关系呢?这里是论坛,任何人都可以从自己理解的角度出发,来考虑问题。而且这又是在 grub4dos 讨论专区里面。难道不允许我回复你的帖子?


呵呵,我从没有说你错了,你不用来这里对我说教吧。

倒是我从MS的引导角度上对楼主而说的#3的说法哪一点错了,请明示!难道我就一定要从grldr.mbr的角度一并分析才算正确?

我#3只说了 - 已经不关MBR的事了,楼主的出错提示中MBR已经正确读取PBR并把引导权交给PBR

你一定要说我错了的意思是说关MBR事?或根本没已经正确读取pbr?还是不允许我从ms的引导角度上说,这里是grub4dos专区就一定要从grldr.mbr的角度上说?可是楼主的出错提示明明就是ms的错误提示,呵呵,你永远是对的,可是我错在哪的确不清楚。

[ 本帖最后由 2010_zheng 于 2011-12-24 14:31 编辑 ]
回复

使用道具 举报

19#
 楼主| 发表于 2011-12-24 14:36:26 | 只看该作者
我就是墙头草,刚开始就是看谁说的有理就觉得谁是对的,后来就发现了两个人从两个角度分析。没有对错之分。
总之受益者无非是楼主我啦~好多新词汇,我得去搜索下,扩展下这方面的知识。嘎嘎

[ 本帖最后由 小豪diao 于 2011-12-24 14:38 编辑 ]
回复

使用道具 举报

20#
发表于 2011-12-24 14:42:38 | 只看该作者

回复 #17 不点 的帖子

我觉得bpb里不止H和S可以错,DL号也可以错。

或者说,这仨就不该存在。
回复

使用道具 举报

21#
 楼主| 发表于 2011-12-24 14:47:03 | 只看该作者

回复 #20 wannaknow 的帖子

有个问题,那,什么h,s,dl ,出错,那经过各种折腾后,早上又都全部正常了
之前是说那些是在格式化后就固定了。这点有点乱
回复

使用道具 举报

22#
发表于 2011-12-24 14:48:13 | 只看该作者
苦命的楼主,不过没关系,有争论才有动力撒!
回复

使用道具 举报

23#
发表于 2011-12-24 15:02:21 | 只看该作者
我首先指出你的一个错误:你说你从来没有说我错了,但是,你指出我说你错了,你不满意(或者否认),这本身就是说我错了。论坛、论坛,本来就是辩论的地方,本来就有 “ 正确 ” 与 “ 错误 ” 的争辩,回避它,是没有用的。

我要是错了,根本不怕人指出。谁指出错误,我感谢谁。

如果我对你有 “说教”,我道歉。但是我自认为主观上从未有这种念头。

>>> 倒是我从MS的引导角度上对楼主而说的#3的说法哪一点错了,请明示!

可惜的是,你在 3 楼并未特别指明是以 “微软” 的思路来说的。你不指明,别人就可以随意理解。所以说,别人理解“ 错 ” 了,并且又反过来说你 “ 错 ” 了,这都很正常,没啥奇怪的。这里不是 MS 论坛,而是 grub4dos 论坛,大家的讨论,肯定不愿意停留在若干年前的 MS 的水平上,而是希望用最新的技术,给出最有力的答复。我们不能 “ 以老眼光看新问题 ”,因为那是 “ 裹足不前 ”。以一种眼光看问题,那结果可能判定是 “ 对 ” 的。但换个角度,以另外一种眼光看同一个问题,则可能判定是 “ 错 ” 的。这不稀奇,很正常。我觉得是你理解力有问题,所以,看到一个 “ 错 ” 字,就以为是挨 “ 批评 ” 了。事实上,“ 对 ” 和 “ 错 ” 都是正常的。

>>> 还是不允许我从ms的引导角度上说

当然不会是这样的。

>>> 可是楼主的出错提示明明就是ms的错误提示

失败是 MS 的失败,但原因的探讨,可以超出这个范围吧?总不能一直停留在 MS 的范畴而不能前进一步吧?你来到这里,你也经常使用 grub4dos,这本身不就说明,你是超出 MS 的范畴了吗?

>>> 呵呵,好象没人说不点说错了

我不是神。说错了是有可能的。高深技术讨论,难免出现错误。出错不丢人。不出错恐怕才不对劲。

>>> 可是楼主的出错提示明明就是ms的错误提示,呵呵,你永远是对的,可是我错在哪的确不清楚。

我认为,你这句话,暴露了你的 “攻击性”。就是 “ 你永远是对的 ” 这句。不过,我声明,我完全不在乎,任何攻击,对于我来说,都等于 0,完全与不存在是一样的,我也不可能计较。

>>> 所以,引导功能强大当然是 grub4dos,但兼容性还是不好判断

既然你的身份是 grub4dos 的用户,所以,我有理由 “ 不失时机地 ” 向你推销 grub4dos,顺便也为 grub4dos 做一个广告。grub4dos 除了功能强大以外,兼容性还 “ 真的 ”不错。楼主的问题就是一个证明。假如你是一个攻击者的话,你能够承认 grub4dos 的强大功能,这也算是 grub4dos 多年被打压而仍然有生命力的极好的证明:连攻击者都不得不承认了。如果你不是攻击者,你不要在乎我说的话,而且我相信,你甚至能够理解我。——对不起,我又把我的哲学运用到这里了,用来对付潜在的攻击者。向攻击者们说声 “ 对不起 ” 了!

[ 本帖最后由 不点 于 2011-12-24 15:58 编辑 ]
回复

使用道具 举报

24#
发表于 2011-12-24 15:05:53 | 只看该作者
原帖由 wannaknow 于 2011-12-24 14:42 发表
我觉得bpb里不止H和S可以错,DL号也可以错。

或者说,这仨就不该存在。


这都是细节了。总扇区数错了也没关系。
回复

使用道具 举报

25#
发表于 2011-12-24 15:08:02 | 只看该作者

回复 #21 小豪diao 的帖子

这仨是保存在你那分区的第一扇区上的。格式化的时候这仨会被改写(一般是255/63,盘号对于“类软盘"u盘是0x00,移动硬盘是0x80)
平常,这仨一般不变,你可以把它们改成别的,我只知道xp手欠,喜欢改盘号。
你的所谓“折腾”,就会改写这仨了,所以有时候“折腾”会影响u盘的启动兼容性。
回复

使用道具 举报

26#
发表于 2011-12-24 15:18:00 | 只看该作者

回复 #24 不点 的帖子

这仨会严重影响默认xp版fat引导扇区的启动成功率。

比如一个一般的u盘,在我的电脑上u启是0x80   255   63。

如果我手动把bpb里的盘号改成0x80,默认xp版fat引导扇区就能直接u启成功。

但是xp很喜欢纠正这个“错误”的盘号,因此经常会坏掉,失败。

我后来改了引导程序一条指令,使其相信dl而不是bpb里的盘号,就不怕xp手欠了。
回复

使用道具 举报

27#
发表于 2011-12-24 15:21:22 | 只看该作者
原帖由 wannaknow 于 2011-12-24 14:13 发表
我认为,ms的fat引导的整个思路就是“脑残”的思路。如果ms从一开始就不在bpb里保存dl值和chs参数,而是坚持使用bios传递的dl和int 13h返回的chs参数,那么就不会有现在的混乱了。


好像没这么简单。

我觉得那可能是历史遗留的问题。是逐步的发展所造成的。当初只有软盘的存在,而最初的软盘没有 int13/ah=8 的功能调用。甚至今天的软盘(包括 USB 被识别为软盘时)也可能没有 int13 的功能 8。于是才有 BPB 表决定软盘的几何参数。这不是 MS 的错误,而是历史遗留的问题。
回复

使用道具 举报

28#
 楼主| 发表于 2011-12-24 15:24:10 | 只看该作者

回复 #26 wannaknow 的帖子

为什么软件不做这个功能去干涉这仨蛋疼的玩意儿呢
回复

使用道具 举报

29#
发表于 2011-12-24 15:44:25 | 只看该作者

标题

原帖由 不点 于 2011-12-24 15:02 发表
我首先指出你的一个错误:你说你从来没有说我错了,但是,你指出我说你错了,你不满意(或者否认),这本身就是说我错了。论坛、论坛,本来就是辩论的地方,本来就有 “ 正确 ” 与 “ 错误 ” 的争辩,回避它, ...


呵呵,不承认错误居然可以理解成一样认为你错,不得不感叹中文的博大精深和对文字灵活应用的重要性,呵

你看不懂我#3从微软的角度说,那如果从grub4dos的角度上说我能那样描述吗?呵呵,也许我汉字的确运用不灵所以大家看不清楚了

也许一开始就应该说清楚微软的落后,这样就不会引起第一感觉好象我在否定某些事那样了
回复

使用道具 举报

30#
发表于 2011-12-24 15:53:32 | 只看该作者
呵呵,看了不点编辑后的回帖,我终于明白,一个人如果始终认为别人在攻击他的话会很累,怪不得一小段回帖会遇到如此回复。也不难理解为什么说我错了。
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-12-3 04:04

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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