无忧启动论坛

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

[讨论] GRUB4DOS的grldr如果寻找OS的PBR,希望不会是Bug

[复制链接]
跳转到指定楼层
1#
发表于 2011-4-3 10:19:28 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
GRUB4DOS确实是一个强大的引导管理程序,它能够加载放在任意分区中的grldr文件,然后加载它,通过菜单的选择,能够加载任意分区中的操作系统。。。
在WINDOWS的引导过程中,是这样的顺序:MBR---活动分区引导记录----OS引导文件----系统启动
从这两者的对比中,GRUB4DOS确实大胜几筹。。
但是在使用GRUB4DOS时,希望加载非活动分区中的PBR不会成为GRUB4DOS的使用障碍。
如果grldr文件只是寻找任意分区中的操作系统引导文件,例如XP的NTLDR,WIN7的Boontmgr,那就好,因为不会受到PBR的影响,但是如果GRUB4DOS在加载NTLDR和Bootmgr之前,还会加载这个分区中的分区引导记录,这就麻烦了,因为分区引导引导一般不会在分区中显示出来,它是隐藏在扇区中的,万一什么原因使分区引导记录受到破坏了,那系统启动就受到极大影响了。。
希望这个问题能受到chenall、不点、bean 等的重视。。
(在以上叙述中,如果我在MBR引导过程中的理解有误,希望各位大师能指出来,并能给出引导的详细的解释,本人将感激不尽。。。。)
欢迎各位的讨论。。
22#
 楼主| 发表于 2014-6-30 18:30:43 | 只看该作者
不点 发表于 2014-6-30 14:37
如果是 bug,其实都容易解决。比如说,如果仅仅是第一个按键有问题,那我们可以忽略第一个按键,这样就不会 ...

严格来说,其它键无问题,就是4个方向键的问题,刚启动时,第一次按这4个方向键的任何一个,就会进入命令编辑状态
回复

使用道具 举报

21#
发表于 2014-6-30 14:37:50 | 只看该作者
如果是 bug,其实都容易解决。比如说,如果仅仅是第一个按键有问题,那我们可以忽略第一个按键,这样就不会进入 e 编辑环境中了。所以需要你摸索一段时间,看看是不是只有第一个按键出现问题。

但假如是厂家故意制造的问题,那就不容易解决了。因为你可以解决,但厂家后续会生产新的 bug,捉迷藏,让你解决不完。

点评

严格来说,其它键无问题,就是4个方向键的问题,刚启动时,第一次按这4个方向键的任何一个,就会进入命令编辑状态  详情 回复 发表于 2014-6-30 18:30
回复

使用道具 举报

20#
 楼主| 发表于 2014-6-30 14:10:08 | 只看该作者
不点 发表于 2014-6-30 00:46
那我明白了,可能是技嘉主板对扩展键盘的 BIOS 调用支持得不好造成的。

我先研究一下源代码,看看能不能 ...

又测试过了,目前为止,只发现在技嘉主板上有这个问题,我测试我的小黑thinkpad t410和thinkpad t430,以及我的华硕f8se和宏基上网本AOD270,都没有出现这个启动按键的问题。按这个来说,真是跟主板有关,那么如何能修复在技嘉主板上出现的这个BUG呢?
回复

使用道具 举报

19#
发表于 2014-6-30 00:46:58 | 只看该作者
那我明白了,可能是技嘉主板对扩展键盘的 BIOS 调用支持得不好造成的。

我先研究一下源代码,看看能不能有个 workaround。不着急,请耐心等待几天。

点评

又测试过了,目前为止,只发现在技嘉主板上有这个问题,我测试我的小黑thinkpad t410和thinkpad t430,以及我的华硕f8se和宏基上网本AOD270,都没有出现这个启动按键的问题。按这个来说,真是跟主板有关,那么如何能  详情 回复 发表于 2014-6-30 14:10
回复

使用道具 举报

18#
 楼主| 发表于 2014-6-30 00:22:43 | 只看该作者
不点 发表于 2014-6-30 00:10
初步怀疑是 hotkey 造成的。你去掉 hotkey,看看问题是否消失。

或者你换用最新版的 hotkey,看看问题是 ...

已测试,非hotkey的问题,用的hotkey是最新版的,用最新版的试过了,去掉hotkey,也出现了那个问题
回复

使用道具 举报

17#
发表于 2014-6-30 00:10:21 | 只看该作者
初步怀疑是 hotkey 造成的。你去掉 hotkey,看看问题是否消失。

或者你换用最新版的 hotkey,看看问题是否解决。

点评

已测试,非hotkey的问题,用的hotkey是最新版的,用最新版的试过了,去掉hotkey,也出现了那个问题  详情 回复 发表于 2014-6-30 00:22
回复

使用道具 举报

16#
 楼主| 发表于 2014-6-29 23:55:26 | 只看该作者
菜单是内置的,内置到grldr中的,会不会是fbintool版本和grub4dos不一致才会这样的?
default 0
timeout 30
color normal=0x1F highlight=0xE1 helptext=0x1D heading=0x0A standard=0x0F border=0x1F
graphicsmode -1 100:1000 100:1000
font (ud)/source/font/unifont.hex.gz
write 0x8274 0x2001
insmod /command/hotkey
hotkey

title DiskGenius
map (ud)/boot/img/DGDOS_IMG462.img (fd0) || map --mem (ud)/boot/img/DGDOS_IMG462.img (fd0)
map --hook
chainloader (fd0)+1
rootnoverify (fd0)

title ^B Acronis2013
map (ud)/boot/iso/Acronis2013.iso (0xff) || map --mem (ud)/boot/iso/Acronis2013.iso (0xff)
map --hook
chainloader (0xff)

title Acronis2013_PlusPack
map (ud)/boot/iso/Acronis2013_PlusPack.iso (0xff) || map --mem (ud)/boot/iso/Acronis2013_PlusPack.iso (0xff)
map --hook
chainloader (0xff)

title 命令行
commandline

title Reboot
reboot

title [H] Halt
halt
回复

使用道具 举报

15#
 楼主| 发表于 2014-6-29 23:54:03 | 只看该作者
不点 发表于 2014-6-29 22:44
你好。会不会是你的键盘有毛病?我曾经遇到一个华硕的笔记本,它一开机就自动按下了 M 键,并且连续不断地 ...

这个问题,也不是在一台电脑上出现了,这半年以来,我试过少说30台电脑,都是这样的,每次从grub4dos启动进入界面,想通过方向下键选择菜单,总是进入了命令编辑状态,再必须按Esc,才可以返回菜单,再按方向键就正常了。我测试过0.4.4和0.4.5c和0.4.6,都是这样的问题,我怀疑是我的菜单写的有问题,你帮我看一下,谢谢,菜单文件在我发的那个贴子里面
回复

使用道具 举报

14#
发表于 2014-6-29 22:44:57 | 只看该作者
本帖最后由 不点 于 2014-6-29 22:46 编辑

你好。会不会是你的键盘有毛病?我曾经遇到一个华硕的笔记本,它一开机就自动按下了 M 键,并且连续不断地发送 M 键。只要随便按一下别的某个键,就正常了。这可能是主板的毛病,也可能是键盘硬件的毛病。

我怀疑你的情况是自动按下了 e 键。你可以试试换一台机器,看看毛病是否可以重现。

点评

这个问题,也不是在一台电脑上出现了,这半年以来,我试过少说30台电脑,都是这样的,每次从grub4dos启动进入界面,想通过方向下键选择菜单,总是进入了命令编辑状态,再必须按Esc,才可以返回菜单,再按方向键就正  详情 回复 发表于 2014-6-29 23:54
回复

使用道具 举报

13#
 楼主| 发表于 2014-6-29 20:38:26 | 只看该作者
不点 发表于 2011-4-3 20:35
理论归理论,实践归实践。百度百科没有错,是你理解错了。

百度百科所讲的是一般规律、一般理论。在“一 ...

你好,不点兄,有个困扰我很久的问题,每次一进入grub4dos,第一的任何按键都会失灵,效果和按下e键的效果一样,再按Esc返回后,就正常了,每次一进入都这样,这是bug吗??感谢不尽
回复

使用道具 举报

12#
发表于 2011-4-3 22:29:52 | 只看该作者
原帖由 2011after 于 2011-4-3 12:55 发表
很高兴看到你的观点,按照你的说法,GRUB4DOS也是可以加载具体的扇区,但是我觉得没有必要让GRUB4DOS去加载具体的扇区,因为GRUB4DOS相对于WINDOWS的引导机制来说,可贵之处恰好就是能够在任意分区中搜索grldr文件,从而加载操作系统引导文件,启动操作系统。如果让还让G4D去搜索某一个固定的扇区,那就不够灵活了,就失去了G4D的优势。。。

恰恰相反,这种加载方式可以不管文件系统如何,而直接加载。使用绝对扇区数的情况下是不用理会分区的。也不需要去搜索,因为使用者非常清楚文件位置。
再者,我觉得你的表述有些不妥,你说G4D可以加载具体的扇区,这样的理解是错误的,不是让G4D去加载具体的扇区,因为加载具体的扇区不是G4D去做的,而是WINDOWS引导机制的MBR去做的,

我不认为MBR就得是windows机制的。
你说G4D没干加载的活,那chainloader命令是干啥的?

当你没有写入grldr.mbr到硬盘MBR时,而只是写入到了分区引导记录中时,那么grldr.mbr就到了分区引导程序中,这时,grldr.mbr还是被windows的MBR引导的,不能算G4D的功劳,你觉得呢

windows没有MBR,硬盘的MBR
向pbr写grub4dos引导仅仅是启动grub4dos的一种方式。不管是何种方式启动到grub4dos环境,下面可以做的事情就多了。

因为分区引导引导一般不会在分区中显示出来,它是隐藏在扇区中的,万一什么原因使分区引导记录受到破坏了,那系统启动就受到极大影响了。。

这个不用担心,只要分区表不被破坏,启动该分区下的/ntldr或者/bootmgr都没有问题的。
回复

使用道具 举报

11#
发表于 2011-4-3 20:35:33 | 只看该作者

回复 #4 2011after 的帖子

理论归理论,实践归实践。百度百科没有错,是你理解错了。

百度百科所讲的是一般规律、一般理论。在“一般”之外,还有“特殊”情况,你不能够要求一个百科全书能够把所有的知识点、所有的细节都讲明白。比如你要学习爱因斯坦的相对论,你必须学习物理学专著,而不能仅仅从一个像“潜科学”杂志这类普及读物中学习到它的精髓。

同理,你要学习 grub4dos,就得看 grub4dos 的教程、文档,而不能够去看那些一般性的普及读物。看了也好,但应该活学活用,不能死搬教条。尤其是软件发展,速度很快。软件发展1年,进步速度胜过人类社会其他方面发展十年。不仅学习 grub4dos 应该这样,你学习其他各门知识,也都应该是这样,以前的知识,有可能被打破、被更新。这不等于说,以前的知识是错误的,只不过不能完全应用于现在的情况罢了。

点评

你好,不点兄,有个困扰我很久的问题,每次一进入grub4dos,第一的任何按键都会失灵,效果和按下e键的效果一样,再按Esc返回后,就正常了,每次一进入都这样,这是bug吗??感谢不尽  详情 回复 发表于 2014-6-29 20:38
回复

使用道具 举报

10#
发表于 2011-4-3 16:44:11 | 只看该作者
回楼上,你说的有些地方是不对的。
如果你用XP的磁盘管理,创建一个分区,并且格式化,不管你格成FAT32格式,还是NTFS格式,DBR代码都是NT52,也就是说只能引导NTLDR。
如果你使用WIN7的磁盘管理,创建一个分区,并且格式化,不管是FAT32还是NTFS格式,DBR代码都是NT60。 也就是引导BOOTMGR。
FAT32跟NTFS的DBR引导代码是不同的!!!! FAT32只有有限的字节用于存储引导代码,但NTFS有多个扇区可以用来存储引导代码,NT60的引导代码在NTFS分区上面占用了8个多扇区,而FAT32分区引导代码只能占用 除去BPB参数块剩下的单个扇区的位置,也就是说还不到一个扇区。

我的猜想是:  如果你的激活主分区是FAT32格式,DBR是NT60,并且主引导记录,是普通的主引导,不能是NT60的主引导。 当分区根目录不存在BOOTMGR,只有NTLDR的时候,可能无法引导。

上面是我的猜想,可能是错误的!!!
如果是NTFS格式,DBR是NT60的引导,当分区不存在BOOTMGR,只有NTLDR的时候,可能会引导NTLDR。
回复

使用道具 举报

9#
 楼主| 发表于 2011-4-3 15:50:00 | 只看该作者

回复 #6 sgw888 的帖子

DBR(也称PBR)这个分区引导记录,是由高级格式化工具产生的,当你仅使用WINDOWS的操作系统时(XP和WIN7),不管是哪种WINDOWS操作系统,DBR都能引导该操作系统的引导文件(如NTLDR和Bootmgr),那么可以说,对于WINDOWS系统来说,DBR具有通用性,XP和WIN7都能被引导,对于这个问题,你有何看法呢?或者是你觉得我的叙述有哪些不妥吗?
洗耳恭听。。。。
回复

使用道具 举报

8#
 楼主| 发表于 2011-4-3 15:03:38 | 只看该作者

回复 #6 sgw888 的帖子

你解释的很好,很感激这个话题中有你写的这样明智的文字,我觉得就应该把你的这些话加到GRUB4DOS的帮助文件里。。。。。,GRUB4DOS真灵活!
回复

使用道具 举报

7#
发表于 2011-4-3 14:21:51 | 只看该作者
楼上的几位解释的很全面的,支持了啊。
回复

使用道具 举报

6#
发表于 2011-4-3 13:49:42 | 只看该作者
我来解释一下吧。首先我要说明一下,GRUB4DOS是一个强大的引导器!
GRUB4DOS 本身能够读取NTFS/FAT32分区,可以直接引导NTLDR跟BOOTMGR。
我们要启动GRUB4DOS有多种途径,多种方法。
比如光盘要启动GRUB4DOS,我们可以直接把GRLDR做为启动文件。
硬盘启动GRLDR,可以安装GRLDR.MBR到MBR扇区,这样的启动方式就是下面:
BIOS--》硬盘MBR[ GRLDR.MBR 程序]  --->分区根目录下的 GRLDR
很显然,这种方式,GRUB4DOS 优先抢得了控制权。

硬盘启动GRLDR还有一种方式是:  利用NTLDR 或者是 BOOTMGR 加载GRLDR,这样的启动方式就是下面:

NTLDR:    BIOS--》 硬盘MBR --》激活分区的DBR [称为PBR也行] ---> NTLDR ---》GRLDR
BOOTMGR: BIOS--> 硬盘MBR--> 激活分区的DBR ---> BOOTMGR---> GRLDR.MBR--->GRLDR

在进入GRUB4DOS的环境之后,也就是GRUB4DOS获得控制权之后,你要启动XP或者WIN7,也有多种方式:

方式一: 直接启动NTLDR
例:
chainloader (hd0,0)/ntldr
方式二: 加载分区引导程序DBR[或者称为PBR]
chainloader (hd0,0)+1

方式一跟方式二的区别在于,一个是直接加载NTLDR,另一个是由DBR来加载NTLDR

方式三:启动BOOTMGR  跟方式一相同,只不过启动的是BOOTMGR
chainloader (hd0,0)/bootmgr

方式四:通过DBR,加载BOOTMGR
chainloader (hd0,0)+1
注意,方式二跟方式四是完全一样的,DBR 是NT52,就会引导NTLDR,DBR是NT60,就会引导BOOTMGR,如此而已。

方式五: 直接加载硬盘MBR。
chainloader (hd0)+1  这样是直接加载硬盘的MBR引导。

GRUB4DOS 是不是很强大,很灵活????
回复

使用道具 举报

5#
 楼主| 发表于 2011-4-3 12:55:08 | 只看该作者

回复 #2 lafter 的帖子

很高兴看到你的观点,按照你的说法,GRUB4DOS也是可以加载具体的扇区,但是我觉得没有必要让GRUB4DOS去加载具体的扇区,因为GRUB4DOS相对于WINDOWS的引导机制来说,可贵之处恰好就是能够在任意分区中搜索grldr文件,从而加载操作系统引导文件,启动操作系统。如果让还让G4D去搜索某一个固定的扇区,那就不够灵活了,就失去了G4D的优势。。。
再者,我觉得你的表述有些不妥,你说G4D可以加载具体的扇区,这样的理解是错误的,不是让G4D去加载具体的扇区,因为加载具体的扇区不是G4D去做的,而是WINDOWS引导机制的MBR去做的,当你没有写入grldr.mbr到硬盘MBR时,而只是写入到了分区引导记录中时,那么grldr.mbr就到了分区引导程序中,这时,grldr.mbr还是被windows的MBR引导的,不能算G4D的功劳,你觉得呢
回复

使用道具 举报

4#
 楼主| 发表于 2011-4-3 12:40:00 | 只看该作者

回复 #3 不点 的帖子

不点兄,按照你的说法,百度百科中关于PBR的解释对于GRUB4DOS已经是错误的了,百度百科中是这样叙述的:“操作系统的引导过程的一个环节,系统启动时顺序 BIOS -> MBR -> DPT -> PBR-> 寻找根目录下 NTLDR(XP)/bootmgr(WIN7/Vista)/grldr(Grub)/btldr.mbr(BootLink) 等可用于引导的程序。。。。“
如果加载PBR是古老的方法,那么应该将百度中的解释改为这样:“但是对于GRUB4DOS,系统启动时的顺序是:BIOS-<MBR-<DPT-<grldr引导文件".......
另外,我还有个问题想请教您,既然G4D既能写入grldr.mbr到硬盘第一扇区的引导程序中(即覆盖原mbr),也能写入到分区引导记录中,那么问题是:直接让grldr.mbr写入到主引导记录中,能够搜索任意分区中的grldr文件,这样已经够灵活了,为什么还要让grldr.mbr写入到分区引导记录PBR中呢?这样做的好处和优势是什么呢?
不点兄,很乐意听听你的高见。。。。

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

使用道具 举报

3#
发表于 2011-4-3 11:32:32 | 只看该作者
在 MBR 上放置 grldr.mbr,并把要搜索的文件改成 NTLDR 而不是 GRLDR(BOOTICE 有此功能,我就是用 BOOTICE 做的)。如此,就可以启动微软的 XP 了。这我已经在多个环境下测试成功(测试机器数目超过 100 台),目前没有遇到失败的情况。把要搜索的文件改成 BOOTMGR 来启动 Win7 应该也是没问题的。最近 BOOTICE 支持在 MBR 上安装 wee,因此,如果 0pe 的下一个版本采用了新版的 BOOTICE,我就有可能测试 wee 的表现了。

采用 chainloader PBR 的方法是古老的 grub legacy 早已具有的功能。目前看来那已经属于落后的方法了(就启动 Windows 而言)。当然,grub4dos 仍然可以使用古老的方法,因为 grub4dos 兼容 grub legacy。
回复

使用道具 举报

2#
发表于 2011-4-3 10:49:40 | 只看该作者
都加载了NTLDR/BOOTMGR了,怎么可能中途返回去再加载个PBR呢?
而加载PBR的话,那么控制权就交给pbr了,与grub4dos没啥关系了。
恰当的表述是这样的,grub4dos可以加载 PBR的备份文件,从而实现启动该分区中的某种系统。这种系统不是唯一的,由写入PBR的引导类型而定,由于可多次对PBR写入不同类型的引导程序并备份为不同的文件,因此可以实现在一个分区下的多种系统共存。
对于加载的文件来讲,grub4dos加载的可以是搜索的到的文件,也可以通过处理加载具体的扇区。你的忧虑应该不成问题。

[ 本帖最后由 lafter 于 2011-4-3 10:51 编辑 ]
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-11-15 17:31

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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