无忧启动论坛

标题: grub.exe和grldr的区别和联系是什么啊? [打印本页]

作者: wenliangyu    时间: 2010-6-6 09:38
标题: grub.exe和grldr的区别和联系是什么啊?
有一次在学习别人的启动说明时,看到说grub.exe和grldr都可以加入隐藏菜单,忽然糊涂了,这二者是什么关系啊?我以前认为grub.exe是制作grldr引导的命令行程序,实际引导、启动中都用不到grub.exe。请大侠讲解释疑一下。
作者: wangmeng052    时间: 2010-6-6 09:42
系统学习grub4dos就了解啦。
作者: liuzhaoyzz    时间: 2010-6-6 10:42
grub.exe主要是引导dos,win98,grldr主要引导ntldr,grldr.mbr主要用于在vista和win7中引导grldr。
对我这样的一般用户来说,grub4dos就约等于grldr,用的命令10%怕是都不到,什么cat,ls,geometry几乎用不上,外部命令更别说了。

[ 本帖最后由 liuzhaoyzz 于 2010-6-6 16:15 编辑 ]
作者: sratlf    时间: 2010-6-6 12:11
grldr可以直接引导  grub.exe不能

grub.exe可以在dos下调用  grldr不能
作者: sratlf    时间: 2010-6-6 12:19
标题: 回复 #4 sratlf 的帖子
也就是说设置grldr启动后  一旦退出g4d到dos  再想回到g4
d环境只能运行grub.exe

PS: #3的瞎扯  grldr可以引导Windows全部系统(只要你要引导的系统能正常使用)  同理grub.exe也可以   grldr.mbr则是专门引导grldr的  和Win7半点关系都没有
作者: MaxNlI    时间: 2010-6-6 12:48
标题: 回复 #6 liuzhaoyzz 的帖子
没办法  看你的回答我查点晕了  头次见这么解释的
作者: lianjiang    时间: 2010-6-6 15:05
个人理解:
grldr和grub.exe都是grub4dos的主体文件,grldr.mbr是个头文件。
grub.exe,是dos下运行的,在dos环境下要进入grub4dos,只能运行grub.exe.
grldr是启动系统时进入grub4ddos使用的文件,可用于硬盘,光盘等。比如你可以通过windows的启动项,光盘等进入grub,使用的文件就是grldr。由于grldr文件过大,win7的启动项无法直接使用,因此需要使用grldr的头文件grldr.mbr,通过grldr.mbr会搜索并引导grldr文件。
或者可以把grldr.mbr写入mbr,让它搜索引导grldr文件,以进入grub4dos环境。
作者: liuzhaoyzz    时间: 2010-6-6 15:32
谢谢lianjiang的权威解释,我只是想简化他们的区别,请注意我的用词”主要引导“,没有人说grldr不能用来引导dos、win98的io.sys。
sratlf说“grldr可以引导Windows全部系统”是不对的,grldr是不能直接在vista和win7中加载grub4dos环境的,vista和win7中没有grldr.mbr怕是不能引导grub4dos吧,这样说来,“grldr.mbr和win7半点关系都没有"就更加不对了,如果直接利用grldr就能在vista和win7中启动grub4dos,那三年前bean还写个grldr.mbr干嘛?

[ 本帖最后由 liuzhaoyzz 于 2010-6-6 15:49 编辑 ]
作者: lianjiang    时间: 2010-6-6 15:44
原帖由 liuzhaoyzz 于 2010-6-6 15:32 发表
谢谢lianjiang的权威解释,我只是想简化他们的区别,请注意我的用词”主要引导“,没有人说grldr不能用来引导dos、win98的io.sys。
sratlf说“grldr可以引导Windows全部系统”是不对的,grldr是不能直接在vist ...


我的不是权威解释,充其量只是一个通俗一点的说明。
对grub我只会最基本的使用,深层的理解不了。
作者: MaxNlI    时间: 2010-6-6 16:03
原帖由 liuzhaoyzz 于 2010-6-6 15:32 发表
谢谢lianjiang的权威解释,我只是想简化他们的区别,请注意我的用词”主要引导“,没有人说grldr不能用来引导dos、win98的io.sys。
sratlf说“grldr可以引导Windows全部系统”是不对的,grldr是不能直接在vist ...


你的理解错误  我说的"grldr可以引导全部Windows系统"是指第一引导文件是grldr  

即g4d启动再用chainloader引导各个系统的引导文件(nt5的ntldr或nt6的bootmgr)

你说的情况是ntldr或bootmgr启动后  再想办法引导grldr进入g4d环境

这样的话你所说的"grldr.mbr用来引导Win7"更是不对  明明是Win7的bootmgr引导了grldr  怎能说grldr.mbr用来引导Win7
作者: liuzhaoyzz    时间: 2010-6-6 16:14
MaxNlI好像是sratlf的小号?是我领会错了。我的说法确实欠妥当。还是看lianjiang的解释吧。
确实我说反了,应该说是grub.exe主要是用来在DOS/WIN98中启动grub4dos环境,grldr主要是用来在2000/XP中启动grub4dos环境,grldr.mbr主要是用来在VISTA/WIN7中启动grub4dos环境,也可以在2000/XP中启动grub4dos环境(必须要依赖grldr的支持)。

[ 本帖最后由 liuzhaoyzz 于 2010-6-6 16:29 编辑 ]
作者: MaxNlI    时间: 2010-6-6 16:31
标题: 回复 #11 liuzhaoyzz 的帖子
确实是小号

有一点你一直想错了  grldr.mbr和任何系统都没有关系  它只负责寻找根目录下的grldr并引导之  

至于是谁引导grldr.mbr  那就不管了  nt5可以  nt6也可以  装到没有系统的硬盘里同样可以

这才是编写grldr.mbr的目的  是为了在任意方式下都能找到grldr来进入g4d环境
作者: lianjiang    时间: 2010-6-6 16:47
原帖由 MaxNlI 于 2010-6-6 16:31 发表
确实是小号

有一点你一直想错了  grldr.mbr和任何系统都没有关系  它只负责寻找根目录下的grldr并引导之  

至于是谁引导grldr.mbr  那就不管了  nt5可以  nt6也可以  装到没有系统的硬盘里同样可以

这才是编写grldr.mbr的目的  是为了在任意方式下都能找到grldr来进入g4d环境


确实如此,但对于vista以上系统,grldr.mbr具有特殊的意义。
作者: liuzhaoyzz    时间: 2010-6-6 16:55
纠缠不清了,grub4dos作为一个多引导管理器,可以引导io.sys,ntldr,bootmgr,反过来他们又可以通过grub.exe,grldr,bootmgr来引导grub4dos,这就好像是世界上先有鸡还是先有蛋的讨论一样,呵呵。

[ 本帖最后由 liuzhaoyzz 于 2010-6-6 16:58 编辑 ]
作者: lianjiang    时间: 2010-6-6 17:03
找到一个权威的说明:

不点 2008-11-17 19:15
grldr 和 grldr.mbr 的区别

1. grldr 含有 16 扇区(8192 字节)的引导头,以及 GRUB 的主体程序。grldr.mbr 只有引导头(18个扇区,今后也可能会增加),而没有 GRUB 的主体程序。

2. grldr 的引导头与 grldr.mbr 的引导头的功能是一样的,都是从各个分区根目录查找 grldr 文件,载入它并执行它。但是,grldr 的引导头只有 16 扇区,无法放置磁盘几何参数的自动探测和适应代码。grldr.mbr 含有磁盘几何参数的自动探测和适应代码,这个探测代码位于 grldr.mbr 的第 17 和 18 两个扇区中。这个探测代码只有在把 grldr.mbr 安装到硬盘的 MBR 上(或者经由 VISTA 的 bootmgr 启动)时才会起作用,而经由 boot.ini 启动时,探测代码是不起作用的,这是因为在 boot.ini 的启动方式下,ntldr 只加载 grldr 的开头 16 扇区,而不加载 第17、18 扇区,这样,磁盘几何参数的自动适应代码就不存在(不在内存中)了,这个功能也就没有了。

引导头含有各种文件系统的引导支持代码。引导头的更新比较稀少,通常是几个月或者几年才更新一次。而GRUB 主体程序的更新,则很频繁(例如功能的增加、bug 的排解等),通常是几天就更新一次。无论是哪部分有更新,都会发布一个版本。

bootlace 中嵌入了 grldr.mbr,所以,一旦 grldr.mbr 有更新,bootlace 就也做了相应的更新了。

因此大多数情况下主体程序有更新,而引导头保持不变。

在 grub4dos 的每一个发布中,不管是正式的还是临时测试的,其中所有的程序都是最新的。这包括 grldr,grub.exe,bootlace.com 等。
作者: MaxNlI    时间: 2010-6-6 17:48
原帖由 liuzhaoyzz 于 2010-6-6 16:55 发表
纠缠不清了,grub4dos作为一个多引导管理器,可以引导io.sys,ntldr,bootmgr,反过来他们又可以通过grub.exe,grldr,bootmgr来引导grub4dos,这就好像是世界上先有鸡还是先有蛋的讨论一样,呵呵。



没办法  都是引导管理器  g4d ezboot syslinux  ntldr  bootmgr  等等  都可以互相引导  能不乱吗
作者: lianjiang    时间: 2010-6-6 17:55
对用户而言,先有鸡还是先有蛋,不重要。
只要知道可以用鸡生蛋,还可以用蛋孵鸡,这就足够了。呵呵。
作者: MaxNlI    时间: 2010-6-6 18:55
标题: 回复 #17 lianjiang 的帖子
万一饿了想鸡吃了怎么办呢???
作者: liuyuting    时间: 2010-6-6 22:31
太深奥了一点,没听懂,还得多学习。
作者: wqr3    时间: 2010-6-7 09:17
学了一下grub4dos,可惜没有看懂。还要继续啊!!
作者: opq    时间: 2010-7-14 15:33
#15楼的是正解也!
作者: 翅膀    时间: 2010-8-25 19:36
提示: 作者被禁止或删除 内容自动屏蔽
作者: Climbing    时间: 2010-8-26 10:13
没想到这么简单的一个问题我翻了三页,也没有找到一个完善的答案。更让我想不到的是,lianjiang写了grub4dos的入门教程,竟然也不完全了解grub.exe的作用。

lianjiang前面写了一些grldr和grub.exe的区别和联系,但不全面。而18楼则只是讲了grldr和grldr.mbr的区别和联系。

grldr和grub.exe都是grub4dos的主体文件,也就是说作为grub4dos的主体来说,二者是相同的,只不过相当于grub4dos穿了两件不同的衣服,也就是包装方式不同。之所以包装方式不同,是为了适应不同的启动环境的,grub4dos的设计中就尽可能考虑并照顾到了让其他启动管理软件方便的加载自己。其中grldr是为了方便被boot.ini(也就是ntldr)加载的,当然,grub4dos的mbr代码(也包括grldr.mbr)寻找的主体也是grldr,这一引导方式都是通过引导扇区的形式加载主体。而grub.exe最初是为了方便在dos环境下加载而设计的,实际上,grub4dos之所以叫grub for DOS,就是因为它最早由不点从linux下转移到了dos环境应用(我个人推测grub.exe的出现应该早于grldr,当然,仅是推测,因为我不了解grub4dos的初期发展情况),而grub.exe后来不断发展,可以经由dos命令行和win98的命令窗口直接启动(甚至还可以再返回dos或98),也可以通过config.sys以device形式加载。而且,再后来,grub.exe本身还兼容linux的内核格式,也就是说凡是支持linux内核加载的引导器都可以通过加载grub.exe来启动grub4dos,例如syslinux(pxelinux)及grub4dos自身的kernel命令,linux下的kexec,甚至dos下的loadlin,linux下的lilo等,都可以通过这种方式加载grub.exe并启动grub4dos。

既然grldr和grub.exe都是grub4dos的主体,为什么不将它们两个合成一个文件?这个问题只能用人力有时而穷来解答,也就是说,一个文件无法兼容所有的格式,只好分成多个,或许将来技术发展了,这个问题有可能得到解决。

另外,bootlace.com也是一个两栖程序,它既可以运行于dos环境,也可以运行于linux环境,也就是说,它同时是dos和linux下的可执行程序。
作者: jianliulin    时间: 2010-8-26 14:58
grub.exe 进入grub后找不到ud分区
作者: Climbing    时间: 2010-8-26 16:39
我个人理解,(ud)设备有点儿类似于(pd)设备(pxe启动时),你必须从(ud)上启动时grub4dos才会识别(ud)设备,也就是说,在grub4dos启动之前,已经有BIOS级的仿真或驱动程序提供了相关设备的访问接口,才有可能在进入grub4dos之后识别相应的设备。对于(ud)来说就是bean的fbinst安装的程序(它用于驱动ud文件系统),而对于(pd)来说就是pxe的相关启动规范也就是pxe stack。同样的,你从硬盘上启动grldr,它也不会识别你的(ud)。

想让grub.exe支持ud,就要从ud直接启动grub.exe,例如,先从ud启动grldr,然后再通过grldr进入grub.exe。
作者: 2010yunxifeng    时间: 2010-8-26 19:34
精彩啊 小弟一直潜水中 看了这么好的贴 不得不顶
作者: Climbing    时间: 2010-8-26 22:53
最近无忧论坛出现很多很活跃的新用户,标志是用户名都以2010打头(如楼上这位),几乎所有的新帖或回帖都要被他们占领了,怀疑是同一个人的马甲。目的不详,值得注意。
作者: lianjiang    时间: 2010-8-27 10:37
原帖由 Climbing 于 2010-8-26 10:13 发表
没想到这么简单的一个问题我翻了三页,也没有找到一个完善的答案。更让我想不到的是,lianjiang写了grub4dos的入门教程,竟然也不完全了解grub.exe的作用。



对grub4dos知之甚少,由于基础太差,对基本概念基本是无法理解。
我只会一些最基本的用法。
07年初,看到有人由于搜索了一圈,也仍然不会最基本的使用,跑到论坛里发帖子抱怨grub4dos的资料太少。
因此才想写一个稍微全一点的入门教程,只讲用法,纯粹是班门弄斧。呵呵。
作者: Climbing    时间: 2010-8-27 12:21
标题: 回复 #28 lianjiang 的帖子
唉,是我不对,其实我也只是了解一些grub4dos的基本用法,象pseudo或chenall他们开发的那些高级用法,我基本上也是一窍不通的。现在学东西都是不求甚解。
作者: lianjiang    时间: 2010-8-27 14:20
原帖由 Climbing 于 2010-8-27 12:21 发表
唉,是我不对,其实我也只是了解一些grub4dos的基本用法,象pseudo或chenall他们开发的那些高级用法,我基本上也是一窍不通的。现在学东西都是不求甚解。

那些高级用法确实够变态。呵呵
他们用的菜单,只有膜拜的份。
作者: lianjiang    时间: 2010-8-27 14:24
原帖由 Climbing 于 2010-8-26 22:53 发表
最近无忧论坛出现很多很活跃的新用户,标志是用户名都以2010打头(如楼上这位),几乎所有的新帖或回帖都要被他们占领了,怀疑是同一个人的马甲。目的不详,值得注意。

是不是论坛新注册用户限制只能以2010开头?
作者: fujianabc    时间: 2010-8-27 14:47
的确是先有grub.exe再有grldr的。

我最早接触grub4dos时就是只有grub.exe。
作者: 不点    时间: 2010-8-27 15:06
grldr 是根据中国 DOS 联盟上的一位会员的想法而做出来的。我也忘记了他是谁。

做成 grldr 起初是很困难的一件事。主要困难在于,如何让 BOOT.INI 来启动它。通过试验发现 BOOT.INI 有 8192 字节的启动秘密,后来还发现在偏移 0x200 以后的若干个字节区域有“跳转”秘密。
作者: Climbing    时间: 2010-8-27 15:17
连grub4dos他爹都被引来了,由他来总结陈辞吧,这肯定是最权威的了。
作者: 20106    时间: 2010-8-31 01:11
可惜没有看懂。还要继续啊!!
作者: zxw    时间: 2010-8-31 09:33
原帖由 Climbing 于 2010-8-26 16:39 发表
想让grub.exe支持ud,就要从ud直接启动grub.exe,例如,先从ud启动grldr,然后再通过grldr进入grub.exe。

这样也不行,grub.exe也不支持ud。目前还未找到grub.exe支持ud的好方法。估计还要运用些高级变态的写法,保存ud的磁盘状态后,或许可以。
作者: Climbing    时间: 2010-8-31 10:55
标题: 回复 #36 zxw 的帖子
我几乎从来没有用过fbinst(只参加过最初版本的开发测试),我一直不信任U盘这种启动介质及其启动方式,所以很少接触与U盘相关的技术,包括PloP。
作者: kayuk    时间: 2011-3-15 16:05
翻了四页才知道这个帖子最终还是夭折了
作者: qwe027    时间: 2011-3-15 21:24
原帖由 sratlf 于 2010-6-6 12:11 发表
grldr可以直接引导  grub.exe不能

grub.exe可以在dos下调用  grldr不能

  

正解 言简意赅
作者: 2011loflof    时间: 2012-1-2 11:08
好精彩,学习了,谢谢各位前辈!
作者: 不点    时间: 2012-1-2 16:26
软件发展到今天,这个话题又有新的结论了。grub.exe 在大多数情况下已经可以取代 grldr 了。原来 grldr 具有的功能,grub.exe 也具有了。只有一个例外:grldr 可以作为无仿真模式的光盘引导映像,而 grub.exe 不能直接作为这样的光盘引导映像。

随着 yaya 写出光盘引导扇区,这就进一步减小了 grub.exe 在光盘上的与 grldr 的差距。yaya 的通用引导扇区,只要把字串 GRLDR 改为 grub.exe,应该也可以用于光盘上 grub.exe 的引导。目前不一定能行,但这稍加改进,应该不难做到的。

grldr 这个文件名具有兼容的意义,大家可能已经习惯用它了。但如果有人喜欢形式上的统一,那么,grub.exe 可以满足这样的要求。假如几年前刚一开始的时候我们就能够达到这样的统一性,也许 grldr 这个文件就不会存在了。因此,grldr 这个文件,也是历史的一个产物。
作者: colorain    时间: 2012-1-3 10:57
mark一下,确实有点容易混~
作者: dreamneo    时间: 2012-1-23 15:05
标题: 回复 #10 MaxNlI 的帖子
这个解释我觉得我明白点了
作者: 888888888888888    时间: 2014-8-15 09:03
一个帖子翻了几年时间啊  厉害
  启动我也才第一天学,我也只是想会用而已
  不求甚解就不求甚解吧
作者: pseudo    时间: 2014-8-15 15:18
鉴于两者相近,0pe自1.5版起,允许去掉grub.0pe(grub.exe直接改名)文件,需要时根据grldr文件当场自动生成它。经yaya完善,其生成不受grldr版本变化影响,具有通用性。
作者: onerenjie    时间: 2014-8-19 09:51
太精彩了,有种华山论剑的感觉。




欢迎光临 无忧启动论坛 (http://bbs.wuyou.net/) Powered by Discuz! X3.3