无忧启动论坛

标题: 求解 Grub4Dos 的 find --set-root 命令…… [打印本页]

作者: xiaoyuan0417    时间: 2009-4-22 10:21
标题: 求解 Grub4Dos 的 find --set-root 命令……
本人用 Grub4Dos 引导 U 盘上的 Hiren's Boot CD,HBCD 为文件夹,hbcd.txt 为标识文件……

引导、运行成功的情况是:
命令:find --set-root /hbcd.txt
结构:
U 盘/HBCD
U 盘/hbcd.txt

引导、运行失败的情况是:
命令:find --set-root /HBCD/hbcd.txt
结构:
U 盘/HBCD
U 盘/HBCD/hbcd.txt
命令:find --set-root /Tool/hbcd.txt
结构:
U 盘/Tool/HBCD      
U 盘/Tool/hbcd.txt


标识文件只能放在根目录下吗?
作者: Climbing    时间: 2009-4-22 10:44
标识文件可以放到子目录中。
作者: xiaoyuan0417    时间: 2009-4-22 10:45
原帖由 Climbing 于 2009-4-22 10:44 发表
标识文件可以放到子目录中。


两种失败情况的原因分别是啥呢?
作者: xianglang    时间: 2009-4-22 11:24
如果是CD,请注意目录和文件名大小写。
作者: wind_fsm    时间: 2009-4-22 12:33
未必是 find --set-root 的错吧,下面这种方法不知楼主试过没有

在 grub4dos 菜单按 c 进入命令行,然后输入你的语句如:find --set-root /HBCD/hbcd.txt,回车看提示是什么,如果是 File Not Find,那就表明真是这句话的问题,可以在命令行多测试一下,一般能找到问题
作者: xiaoyuan0417    时间: 2009-4-22 15:36
原帖由 wind_fsm 于 2009-4-22 12:33 发表 未必是 find --set-root 的错吧,下面这种方法不知楼主试过没有在 grub4dos 菜单按 c 进入命令行,然后输入你的语句如:find --set-root /HBCD/hbcd.txt,回车看提示是什么,如果是 File Not Find,那就表明 ...


错误提示信息都是:找不到 HBCD 文件夹……
作者: wind_fsm    时间: 2009-4-22 15:51
标题: 回复 #6 xiaoyuan0417 的帖子
呵呵,你的提示好奇怪,会提示“找不到 HBCD 文件夹”,你翻译过了?不是在开玩笑吧,什么版本的Grub4Dos?你的 grldr 传上来测试一下
作者: xiaoyuan0417    时间: 2009-4-22 16:05
原帖由 wind_fsm 于 2009-4-22 15:51 发表
呵呵,你的提示好奇怪,会提示“找不到 HBCD 文件夹”,你翻译过了?不是在开玩笑吧,什么版本的Grub4Dos?你的 grldr 传上来测试一下


谢谢关注,谢谢回复!
这点英文还是能读懂滴,呵呵……
刚才想了想,估计是 HBCD 的一些工具运行时,需要在根目录下找 HBCD 文件夹……

grldr.rar

112.94 KB, 下载次数: 69, 下载积分: 无忧币 -2


作者: wind_fsm    时间: 2009-4-22 17:35
标题: 回复 #8 xiaoyuan0417 的帖子
呵呵,应该是我们俩的测试方式不一样,因为按我说的方式是不会出现那样的提示的,所以我觉得奇怪,不过按你说的应该不是 find --set-root 的问题

用你的 grldr 没有启动成功,不知道是什么原因

贴个图说明一下我的测试方法
grub4dos启动后首先显示这个菜单界面


在上面界面中按 c 出现下面界面,在命令行中输入语句即可看到执行结果,图中测试了两条语句,第一个是找到文件的情况,第二个是未找到文件的情况

作者: wind_fsm    时间: 2009-4-22 17:48
你用的版本居然是 GRUB4DOS 0.4.4 2009-04-06,在哪儿下载的啊?
我在 http://download.gna.org/grub4dos/ 最新的只找到 grub4dos-0.4.4.zip  31-Mar-2009
作者: xiaoyuan0417    时间: 2009-4-22 18:53
原帖由 wind_fsm 于 2009-4-22 17:48 发表
你用的版本居然是 GRUB4DOS 0.4.4 2009-04-06,在哪儿下载的啊?
我在 http://download.gna.org/grub4dos/ 最新的只找到 grub4dos-0.4.4.zip  31-Mar-2009


感谢相助!!!
对我遇到的问题的准确描述应当是:可以引导进入 HBCD 菜单,运行其中的工具时提示找不到 HBCD 文件夹……
看来,不是引导问题,是有些工具运行时必须到根目录下找文件夹……
我是从下载的 PE 中“借”来的 Grub4Dos……不好意思的说……
作者: Climbing    时间: 2009-4-22 19:29
到现在我也没有搞明白楼主遇到了什么问题,总之,问题描述不清,无从判断。

最新版的grub4dos下载在这个链接上:
http://grub4dos.nufans.net
作者: xiaoyuan0417    时间: 2009-4-22 20:19
原帖由 Climbing 于 2009-4-22 19:29 发表
到现在我也没有搞明白楼主遇到了什么问题,总之,问题描述不清,无从判断。

最新版的grub4dos下载在这个链接上:
http://grub4dos.nufans.net


呵呵,看来是我拙于表达啦……
我原来以为,通过 find --set-root /Tool/hbcd.txt 命令,就能够将 Tool 文件夹设定为根目录,HBCD 中的工具运行时,也能够到 Tool 文件夹中寻找 HBCD……
现在的理解是:find --set-root /Tool/hbcd.txt 命令只是将 hbcd.txt 所在的驱动器设为要目录……
是否正确,请赐教!
作者: wind_fsm    时间: 2009-4-22 20:47
原帖由 xiaoyuan0417 于 2009-4-22 20:19 发表
现在的理解是:find --set-root /Tool/hbcd.txt 命令只是将 hbcd.txt 所在的驱动器设为要目录……

是的,就是这样,这个命令是将 hbcd.txt 所在的驱动器设置为根

另外谢谢版主,但是你说的网址访问不成功

[ 本帖最后由 wind_fsm 于 2009-4-22 20:50 编辑 ]
作者: Climbing    时间: 2009-4-22 20:58
find --set-root只是用来寻找并设置grub4dos的根设备,不加参数,没有其它的功能。

还是搞不明白你的tool和HBCD分别是什么东东,所以没法进一步说明什么。

root命令有一个设置当前目录的功能,假设:
chainloader /Tool/PE/setupldr.bin

可以用root命令如此简化:
root ()/Tool/PE
chainloader /setupldr.bin

grub4dos的readme.txt中相关的说明:
******************************************************************************
***                  New Feature of Relative Path Support                  ***
******************************************************************************

Use the `root' or `rootnoverify' command to specify the `working directory'.

For example:

                root  (hd0,0)/boot/grub

This specifies that the working dir is (hd0,0)/boot/grub. So all subsequent
filenames of the form "/..." will actually refer to (hd0,0)/boot/grub/...

That is to say:

                cat  /menu.lst

will be equivalent to

                cat  (hd0,0)/boot/grub/menu.lst



******************************************************************************
***                 Notation For The Current Root Device                   ***
******************************************************************************


The notation `()' can be used to access the current root device. You may use
`find --set-root ...' to set the current root device, but the find command
does not set the `working dir' of the root device. In this case you should
use `()' to set the working dir after the find command:

                root  ()/boot/grub

Update 2008-05-01:

        FIND can also set the `working directory' now. For example:

                find  --set-root=/tmp  /boot/grub/menu.lst

        It is equivalent to this pair of commands:

                find  --set-root  /boot/grub/menu.lst
                root  ()/tmp

作者: Climbing    时间: 2009-4-22 21:00
标题: 回复 #14 wind_fsm 的帖子
无忧的域名解析服务器出现了问题,请通过以下网址访问:
http://nufans.net/grub4dos/
作者: wind_fsm    时间: 2009-4-22 21:38
标题: 回复 #16 Climbing 的帖子
谢谢,这个网址可以访问

楼主成功的情况是 hbcd.txt 不在 HBCD 目录,这时候你的 HBCD 目录为空还是只有特定的几个文件?
看你失败的情况应该是 HBCD 只能在根目录,另外会不会是这个目录必须为空或者是只能有它自己的文件不能有其它文件存在
作者: xiaoyuan0417    时间: 2009-4-22 22:26
谢谢二位,我刚接触 Grub4Dos,描述问题词不达义,见笑了……
我再尝试,然后汇报……
作者: shn    时间: 2009-4-24 12:50
学习了。grub4dos需要定义hd0,0这个位置,u盘启动非常难弄,有的机子能在u盘启动时把u盘当第一个分区,有的就死活不成,联想的removeable.dev如此……

还是我学习不到家啊,难道有什么命令能够搞定这个吗?find命令能通过文件标定是哪个位置,但是能标定的hd0,0还是hd1,0吗?这个bios认定的东西能改吧

[ 本帖最后由 shn 于 2009-4-24 12:52 编辑 ]
作者: neteasylive    时间: 2009-4-24 13:09
grub的部分问题
通过改menu.lst里描写目标文件的改成大写能解决不少莫名其妙的问题
作者: Climbing    时间: 2009-4-24 13:48
标题: 回复 #20 neteasylive 的帖子
所谓的莫名其妙,是因为你缺乏基础知识。在我看来,很少遇到grub4dos的莫名其妙问题,至于大写小写,该大写的就大写,该小写的就小写,没有什么好莫名其妙的。

例如,grub4dos本身是区分大小写的软件,所以,它的命令和关键字你只能用小写。至于路径和文件名,有的文件系统不区分大小写,例如FAT和NTFS,那么这时候你的文件名也可以不区分,但在区分大小写的文件系统上,例如Ext、光盘,你就要严格按照实际的情况来进行。
作者: xianglang    时间: 2009-4-24 14:47
原帖由 Climbing 于 2009-4-24 13:48 发表
所谓的莫名其妙,是因为你缺乏基础知识。在我看来,很少遇到grub4dos的莫名其妙问题,至于大写小写,该大写的就大写,该小写的就小写,没有什么好莫名其妙的。

例如,grub4dos本身是区分大小写的软件,所以, ...


没用过UNIX或者LINUX等的用户,大多对文件名与目录区分大小写都不知道或者不在意。
作者: xiaoyuan0417    时间: 2009-4-24 15:31
该问题的提出,源于要把 Hiren's BootCD 集成到基于 Syslinux 引导的工具光盘……具体作法是:

1.将  Hiren's BootCD 的所有文件放在 HBCD 文件夹中,置于光盘根目录下;

2.通过 Syslinux 调用 Grub4Dos,引导 HBCD 文件夹中的软盘镜像启动文件……之所以劳驾 Grub4Dos,是因为 Syslinux 在引导软盘镜像方面的致命缺陷。

按上述方法集成,一切顺利,可以启动运行 Hiren's BootCD 的各类工具!

后来又不想将 HBCD 放在光盘根目录下,而是放在 Tool 文件夹中,让光盘看起来更清爽些……
所以就想到了 Grub4Dos 的 find --set-root 命令……

尝试至今,都以失败告终,具体表现是:

能够进入 Hiren's BootCD 菜单,但运行其中的工具时,提示“找不到 HBCD 文件夹”……

请高手赐教……
作者: wind_fsm    时间: 2009-4-24 17:32
1. 解压 HBCD 下面的 boot.gz 得到文件 boot.img
2. 提取 boot.img 中文件 AUTOEXEC.BAT、STARTUP.BAT,修改这两个文件中的 hbcd 为你想要的路径
3. 提取 boot.img 中文件 DRIVERS.CAB
4. 解压 DRIVERS.CAB,将 temp 目录下所有 bat 文件中的 hbcd 修改为你想要的路径

5. 用修改后的文件重新压缩 DRIVERS.CAB
6. 更新 boot.img 中的  AUTOEXEC.BAT、STARTUP.BAT、DRIVERS.CAB
7. 压缩 boot.img 为 boot.gz

这样大部分的工具应该可以使用了,还不能使用的工具请解压对应的 uha 文件看看里面是否还涉及 hbcd 路径
作者: xiaolongkun0    时间: 2009-4-24 18:23
原帖由 shn 于 2009-4-24 12:50 发表
学习了。grub4dos需要定义hd0,0这个位置,u盘启动非常难弄,有的机子能在u盘启动时把u盘当第一个分区,有的就死活不成,联想的removeable.dev如此……

还是我学习不到家啊,难道有什么命令能够搞定这个吗? ...

在U盘上,我个人不建议用FIND,FIND在U盘上并不通用。
我在我的U盘上,在grub4dos的命令符下直接用find得到证明,实际显示的只有硬盘而没有u盘盘符。
使用虚拟机测试,用find查找软盘和硬盘和光盘是没有任何问题的,这个我也得到了证明,但实机就是不行,其实不用find通用性会更强些的。
作者: xiaoyuan0417    时间: 2009-4-24 19:33
原帖由 wind_fsm 于 2009-4-24 17:32 发表
1. 解压 HBCD 下面的 boot.gz 得到文件 boot.img
2. 提取 boot.img 中文件 AUTOEXEC.BAT、STARTUP.BAT,修改这两个文件中的 hbcd 为你想要的路径
3. 提取 boot.img 中文件 DRIVERS.CAB
4. 解压 DRIVERS.CAB, ...


后来换了个思路,直接把 Hiren's BootCD 的光盘镜像放在 Tool 文件夹中,用 Grub4Dos 加载,在 U 盘上测试通过,各类工具运行正常,但在光盘上却不成,仍然提示找不到 HBCD 文件夹……

为何 U 盘和光盘有差别呢?

[ 本帖最后由 xiaoyuan0417 于 2009-4-24 19:46 编辑 ]
作者: Climbing    时间: 2009-4-24 22:49
标题: 回复 #23 xiaoyuan0417 的帖子
这个帖子充分说明了“提问的智慧”这篇文章的重要性和实用性。

直到看到楼主在23楼的回复,我才算明白了到底是怎么回事。我没有用过Hiren的bootcd,但从上面的反馈看,它应该是一张基于DOS的启动光盘,它的启动方式是先启动一张DOS软盘映像并在DOS下加载光驱的驱动,并从光驱根目录下的HBCD文件夹中寻找自己的其它工具。

搞明白了这些,稍微有点儿常识的人就应该知道,这跟grub4dos的find命令有什么关系呢?grub4dos在这个过程中只是负责启动那个DOS软盘映像,只要成功启动了它,剩下的都是这张软盘映像的事情了(再与grub4dos无关了),正如24楼所回复的,你要修改这张DOS软盘映像中的内容来适应你的改动。

看你来来回回说了这么多,其实最有用的就是23楼这个帖子。

结论:楼主基本不了解什么是提问的智慧;楼主不懂光盘启动、DOS及相关基础知识;楼主基本上不理解grub4dos是什么东东。
作者: Climbing    时间: 2009-4-24 22:57
标题: 回复 #25 xiaolongkun0 的帖子
在grub4dos下没有盘符这个概念,请你自己先搞清楚这些基本概念。

grub4dos的find搜索是有其内置的顺序的,一般来说先从硬盘开始挨个分区搜索,并将找到的第一个匹配的分区作为结果返回。假设你的U盘排在搜索顺序的后面并且这个搜索有多个结果,当然就不会找到你的U盘,例如你搜索/boot/grub/menu.lst,如果硬盘上某分区有这个文件,而你的U盘被识别为软盘,当然,就不会找到你的U盘。所以,你应该在U盘上设立唯一的查找标志,例如,你可以在U盘上建立/boot/blabla.usb(确保这个文件不会有重复就行了),这样,只要grub4dos能够正常访问你的U盘,那么它就一定能够找到你的U盘。
作者: xiaoyuan0417    时间: 2009-4-25 08:52
原帖由 Climbing 于 2009-4-24 22:49 发表
这个帖子充分说明了“提问的智慧”这篇文章的重要性和实用性。

直到看到楼主在23楼的回复,我才算明白了到底是怎么回事。我没有用过Hiren的bootcd,但从上面的反馈看,它应该是一张基于DOS的启动光盘,它的启 ...


哈哈哈哈……看来这帖子把版主气着了……大可不必呢……
不了解也罢,不懂也罢,不理解也罢,俺总是有兴趣琢磨琢磨启动光盘滴……如果俺啥都懂了,就不会来这里“泡坛”咧……

对26#的情况,还是不理解的说……

无论如何,感谢版主的回复……
作者: xiaolongkun0    时间: 2009-4-25 11:50
原帖由 Climbing 于 2009-4-24 22:57 发表
在grub4dos下没有盘符这个概念,请你自己先搞清楚这些基本概念。

grub4dos的find搜索是有其内置的顺序的,一般来说先从硬盘开始挨个分区搜索,并将找到的第一个匹配的分区作为结果返回。假设你的U盘排在搜索 ...

其实我就是按你的思维方法去操作的,可惜我的U盘和主板不识这套操作手法。看来我的主板和U盘要比别人的“高级”点。

[ 本帖最后由 xiaolongkun0 于 2009-4-25 11:54 编辑 ]
作者: shn    时间: 2009-4-25 20:13
我确认我的u盘里find的却是唯一标识,因为硬盘里没动过这些工具。认成removeable.dev后,我觉得可能是认为是软盘,而非hdd造成的这个结果。也不是所有的联想电脑都这样,至少我们单位那几个用AMIbios的能够启动,就是phinx的不行啊。我觉得是这个原因:把usb-hdd认成软盘了。
作者: shn    时间: 2009-4-26 13:36
终于找到原因了。不知道为什么找不到menu,但是内置了就行了。明明在还是找不到,不知道为什么
作者: xiaoyuan0417    时间: 2009-4-26 19:38
原帖由 shn 于 2009-4-26 13:36 发表
终于找到原因了。不知道为什么找不到menu,但是内置了就行了。明明在还是找不到,不知道为什么


U 盘,CD 和 DVD 对大小写要求是不一样的,多试几次……




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