无忧启动论坛

标题: grldr启动后修改菜单再启动提示找不到文件 [打印本页]

作者: yjqd    时间: 2017-11-15 17:01
标题: grldr启动后修改菜单再启动提示找不到文件
win7系统bootmgr加载的grldr,C盘有boot文件夹,我在F盘建立了boot文件夹,把grldr放在F盘根目录
我把ghost.img文件放在F盘的boot文件夹中

启动grldr后,修改菜单中的:
map --mem /boot/Win98.img (fd0)

map --mem /boot/ghost.img (fd0)

确认后启动提示找不到文件

root命令返回结果为(hd0,0),奇怪,根目录应该在F盘是(hd0,3),怎么变为(hd0,0)了呢

注:如果不修改菜单启动Win98.img又正常
----------------------------------------------------------------------------------------------
grldr菜单修改前如下

pxe detect
configfile
default 0
timeout 10
terminal console
find --set-root /grldr
font /boot/unifont.hex(3500汉字).GZ
graphicsmode -1 640:480
splashimage /boot/bj2008.xpm.gz
color normal=0x0187ec highlight=0xE0 helptext=0x0187ec heading=0x0187ec standard=0x0068b7 border=0x0068b7

title 启动WIN8PE和WIN7PE
chainloader /boot/bootmgr

title 使用map启动本地硬盘上的 Win98 软盘镜像文件
map --mem /boot/Win98.img (fd0)
map --hook
chainloader (fd0)+1
rootnoverify (fd0)

title Grub 命令行
commandline

作者: 2011yaya2007777    时间: 2017-11-15 20:17
c盘根目录有grldr.
作者: yjqd    时间: 2017-11-15 21:08
2011yaya2007777 发表于 2017-11-15 20:17
c盘根目录有grldr.

谢谢回复

我查看了,所有分区根目录只有F盘有grldr,bcd也是指向的F盘的grldr,即使某分区根目录有改名的grldr也应该不会影响吧
作者: 不点    时间: 2017-11-16 06:10
这问题自己肯定能找到原因,用不着费劲来问吧?难道会修改却不会调试?
作者: 2011yaya2007777    时间: 2017-11-16 06:47
把c盘的boot文件夹删除
作者: yjqd    时间: 2017-11-16 08:28
不点 发表于 2017-11-16 06:10
这问题自己肯定能找到原因,用不着费劲来问吧?难道会修改却不会调试?

谢谢回复

调试 是指启动grldr时马上按insert键吗
作者: yjqd    时间: 2017-11-16 08:33
2011yaya2007777 发表于 2017-11-16 06:47
把c盘的boot文件夹删除

谢谢回复

C盘的boot中的bcd指向的F盘的grldr,把c盘的boot文件夹删除了,grldr又怎么能启动呢


作者: 2011yaya2007777    时间: 2017-11-16 09:11
menu.lst应当在f盘。
作者: 2011yaya2007777    时间: 2017-11-16 09:12
你的根目录在c盘
作者: yjqd    时间: 2017-11-16 09:39
2011yaya2007777 发表于 2017-11-16 09:12
你的根目录在c盘

win7是从c盘启动的,C盘的boot中的bcd指向F盘的grldr

我没有使用menu.ls,使用的是grldr内置菜单
作者: 不点    时间: 2017-11-16 20:52
yjqd 发表于 2017-11-16 08:28
谢谢回复

调试 是指启动grldr时马上按insert键吗

根据你的描述,你修改前,是正常的。你修改后不正常了。

你只要确定究竟是那一处修改造成的问题即可。

比方说,你修改了 10 个地方。你先恢复 9 个地方(保持修改前的状态),只留下一个修改,试试看行不行。如果这个修改就不正常了,那说明就是此处的修改造成的错误,这样就找到了根源。如果这个修改能正常运行,那就说明是其他 9 处的修改有问题。像这样,你逐一试验,总可以确定有毛病的修改,这样就找到了根源。

作者: yjqd    时间: 2017-11-16 21:32
本帖最后由 yjqd 于 2017-11-16 21:33 编辑
不点 发表于 2017-11-16 20:52
根据你的描述,你修改前,是正常的。你修改后不正常了。

你只要确定究竟是那一处修改造成的问题即可。 ...


谢谢回复

grldr这个文件本身的内置菜单我没修改,只是在启动grldr后在菜单选项界面修改了一项,就是把启动的dos镜像名改成了新增加的dos镜像的名称,即原来是启动的Win98.img,改成启动ghost.img
修改
map --mem /boot/Win98.img (fd0)

map --mem /boot/ghost.img (fd0)

发现修改后确认,grldr所在的根目录就会改变,变成(hd0,0)

我确实还没找到根目录改变的原因

作者: yjqd    时间: 2017-11-16 21:40
本帖最后由 yjqd 于 2017-11-16 21:46 编辑
不点 发表于 2017-11-16 20:52
根据你的描述,你修改前,是正常的。你修改后不正常了。

你只要确定究竟是那一处修改造成的问题即可。 ...


简单的说:

我的grldr原菜单,启动后只要不修改它,任何一个启动项都能正常启动,如果对菜单进行修改,不管修改多少,gfldr所在的目录都会返回到(hd0,0)

没表述准确,应该要把grldr目录固定在所在的分区这种修改除外
作者: 2011yaya2007777    时间: 2017-11-16 22:13
‘’只是在启动grldr后在菜单选项界面修改了一项,‘’  前面说没有menu.lst菜单,那么引号里的菜单是什么?菜单选项界面是什么?这些怎么显示的?通过什么文件选择?
作者: yjqd    时间: 2017-11-16 22:26
2011yaya2007777 发表于 2017-11-16 22:13
‘’只是在启动grldr后在菜单选项界面修改了一项,‘’  前面说没有menu.lst菜单,那么引号里的菜单是什么 ...

不好意思,我没拍摄图片
=====================
我使用的是grldr内置菜单

引号中的选项是:使用map启动本地硬盘上的 Win98 软盘镜像文件

选中它,按E键就可看到具体内容:

map --mem /boot/Win98.img (fd0)
map --hook
chainloader (fd0)+1
rootnoverify (fd0)

我把Win98.img改成ghost.img,回车确认,再按B键启动,提示错误15,文件没发现
作者: pseudo    时间: 2017-11-16 22:26
看样子楼主修改了grldr内置菜单。
请留意以下线索:
1、grldr的版本、日期?
2、用什么工具(名称、版本、日期)改的?
作者: yjqd    时间: 2017-11-16 22:35
pseudo 发表于 2017-11-16 22:26
看样子楼主修改了grldr内置菜单。
请留意以下线索:
1、grldr的版本、日期?

谢谢回复

看来我要拍照片了,果机传图片不太方便

先说一下:
1、2016的grldr和2017的grldr都使用过
2、编辑grldr是用的grubmenu.exe,我还不知道怎样看它的版本,此贴中菜单的修改是指启动grldr后,在菜单选项界面进行的修改


作者: yjqd    时间: 2017-11-16 23:07
pseudo 发表于 2017-11-16 22:26
看样子楼主修改了grldr内置菜单。
请留意以下线索:
1、grldr的版本、日期?

照片大于2m,重新捕获了一下

捕获1.PNG (664.1 KB, 下载次数: 173)

修改前

修改前

捕获2.PNG (659.85 KB, 下载次数: 156)

修改前

修改前

捕获3.PNG (822.49 KB, 下载次数: 168)

修改前

修改前

捕获4.PNG (729.67 KB, 下载次数: 174)

修改后

修改后

捕获5.PNG (716.21 KB, 下载次数: 161)

修改后

修改后

捕获6.PNG (757.9 KB, 下载次数: 149)

修改后启动报错

修改后启动报错

作者: yjqd    时间: 2017-11-16 23:09
2011yaya2007777 发表于 2017-11-16 22:13
‘’只是在启动grldr后在菜单选项界面修改了一项,‘’  前面说没有menu.lst菜单,那么引号里的菜单是什么 ...

yaya,我上传了照片
作者: 2011yaya2007777    时间: 2017-11-17 12:28
以 18 楼为基准讨论。
grldr 在 c 盘根目录。
win98.img 在 c:\boot\ 子目录。
ghost.img 在哪里?如果在 c:\boot\ 子目录,则修改正确。如果在 f:\boot\ 子目录,则应当是 map --mem (hd0,3)/boot/ghost.img (fd0)
前提是 f 对应 (hd0,3),这一点必须确认。
作者: 窄口牛    时间: 2017-11-17 12:51
改哪,哪就不行,意思是utf8编码问题?
作者: yjqd    时间: 2017-11-17 13:44
不点 发表于 2017-11-16 20:52
根据你的描述,你修改前,是正常的。你修改后不正常了。

你只要确定究竟是那一处修改造成的问题即可。 ...

明白一些了:

第一种情况:
用win7的bootmgr加载grldr


如果这个grldr内置菜单没有用find --set-root /xxx,启动后,root命令结果是(hd0,0)  也就是根目录是win7的bootmgr所在的目录C
如果这个grldr内置菜单用了find --set-root /xxx,启动后,root命令结果会是xxx所在的根目录,比如此帖中是在F盘,一旦对grldr启动后的菜单进行编辑,哪怕你选中菜单的某一项,按了E键,即使没编辑,回车后,按C键,输入root,root命令结果是(hd0,0),不知为什么会返回(hd0,0)

第二种情况:
用win7的bootmgr加载grldr.mbr


不管grldr.mbr放在哪个分区根目录,grldr内置菜单不管有没有用find --set-root /xxx,grldr放在哪个分区,启动后,root命令查看,它所在的根目录就是它所在的分区,比如放在E盘,root看到的就在E盘(当然,应该是(hdx,x)这各形式),如果放在F盘,root看到的就在F盘

并且对对grldr启动后的菜单进行编辑也不会自动返回目录到(hd0,0),修改后也能正常启动了

看来用win7的bootmgr加载grldr,内置菜单写上用find --set-root /xxx,如果启动后不编辑菜单,那么就可以不写绝对路径
如果启动后要编辑菜单,那么就老老实实的写上绝对路径


作者: yjqd    时间: 2017-11-17 13:51
窄口牛 发表于 2017-11-17 12:51
改哪,哪就不行,意思是utf8编码问题?

不是utf8编码问题的问题

我的内置菜单用了find --set-root /grldr,但所有的启动项中都没用绝对路径,一旦对grldr启动后的菜单进行编辑,根目录会变成(hd0,0),当然会提示找不到文件,就启动不了

作者: 2011yaya2007777    时间: 2017-11-17 18:16
第一种情况:
用win7的bootmgr加载grldr

执行了 find --set-root /xxx,root命令结果才会是xxx所在的根目录。

菜单项包含这一指令,执行菜单就会执行这一指令。
如果编辑这一菜单项,菜单项内的所有指令都没有执行,此时进入命令行执行 root 指令,仍然是原来的根目录。

第二种情况:
用win7的bootmgr加载grldr.mbr

运行了 grldr.mbr,就相当于执行了 find --set-root /grldr,所以 root 指令返回新的根目录。
作者: yjqd    时间: 2017-11-17 20:54
2011yaya2007777 发表于 2017-11-17 18:16
执行了 find --set-root /xxx,root命令结果才会是xxx所在的根目录。

菜单项包含这一指令,执行菜单就 ...

谢谢回复

我再想一想:

win7的C盘的bootmgr加载grldr这种情况,grldr不管放在哪个分区,它的原始命令目录就是bootmgr所在的C盘
此贴中grldr放在(hd0,3),也就是F盘根目录,grldr内置菜单中,find --set-root /grldr只有一处,在加载字体和图片之前,所有 title 启动项之内都没有find --set-root /grldr
当启动grld后,图片、字体被加载了,说明find --set-root /grldr被执行了,而且此时root命令返回的结果是在(hd0,3),也就是F盘根目录
此时当我又编辑title 某启动项的内容时,确认后,再执行root命令,返回的结果是在(hd0,0),也就是C盘根目录

小结:
当启动grld后,如果对某title 启动项进行编辑,虽然没执行root (hd0,0),但仍然会从(hd0,3)返回到原始命令目录,就是bootmgr所在的C盘
================================================================
刚才我测试了一下,提前用grubmenu.exe对grldr的title 使用map启动本地硬盘上的 Win98 软盘镜像文件下面增加了find --set-root /grldr,其它没作任何更改
find --set-root /grldr
map --mem /boot/Win98.img (fd0)
map --hook
chainloader (fd0)+1
rootnoverify (fd0)

启动后,用root命令返回的结果是在(hd0,3),编辑map --mem /boot/Win98.img (fd0)为map --mem /boot/ghost.img (fd0),回车确认,再root命令返回的结果是在(hd0,0),再按B键启动,成功启动了ghost.img

小结:编辑时虽然目录从(hd0,3)变为(hd0,0),但执行时,find --set-root /grldr得到了执行,目录从(hd0,0)变为(hd0,3),所以成功启动了ghost.img

============================================
要是编辑时不返回原始命令目录就好了,写菜单可以少写点内容
作者: 2011yaya2007777    时间: 2017-11-17 21:28
这个现象没注意,挺奇怪。抽时间研究一下。
作者: yjqd    时间: 2017-11-17 21:49
2011yaya2007777 发表于 2017-11-17 21:28
这个现象没注意,挺奇怪。抽时间研究一下。

可能是大家基本上都是把grldr放在C盘的,启动grldr后,不管修不修改启动菜单,它的目录都会在C盘

所以修改菜单后仍可能启动

作者: 2011yaya2007777    时间: 2017-11-18 08:27
修改菜单,或者修改grldr内置菜单
map --mem /boot/Win98.img (fd0)

map --mem /boot/Win981.img (fd0)
然后按c键进入命令行,root 命令返回 (hd0,6),没有改变。
你反映的问题没有证实。

上面帖子显示你没有使用grldr最新版本。请使用0.4.6a最新版本测试。

你是使用BOOTICE编辑的BCD文件? ”启动文件“设置为 f:\grldr?
作者: yjqd    时间: 2017-11-18 08:36
2011yaya2007777 发表于 2017-11-18 08:27
修改菜单,或者修改grldr内置菜单
map --mem /boot/Win98.img (fd0)

谢谢回复

我用grub4dos-0.4.6a-2017-10-23.7也测试过
难道是我的电脑阴差阳错出了问题
我再去试一下
作者: yjqd    时间: 2017-11-18 09:00
2011yaya2007777 发表于 2017-11-18 08:27
修改菜单,或者修改grldr内置菜单
map --mem /boot/Win98.img (fd0)

刚才测试了,用的 grub4dos-0.4.6a-2017-10-23.7z

情况还是如此
=======================================
BCD增加grldr启动项最早是用的微软的BCDEDIT命令,后来用的BOOTICE(有时记不住BCDEDIT命令了)

BOOTICE编辑时:

设备类型选的:partition
启动分区选的F盘

启动文件:
\grldr
作者: 2011yaya2007777    时间: 2017-11-18 09:17
明白了。
修改完菜单,不执行boot指令,菜单中的指令都没有执行,此时按c键进入命令行,执行root,根目录应当不会改变。

你这样修改
find --set-root /boot/ghost.img
map --mem /boot/ghost.img (fd0)
就没有问题了
作者: yjqd    时间: 2017-11-18 09:34
2011yaya2007777 发表于 2017-11-18 09:17
明白了。
修改完菜单,不执行boot指令,菜单中的指令都没有执行,此时按c键进入命令行,执行root,根目录 ...

把我虚惊一跳,我以为我在乱反映问题

刚才在惠普电脑上测试也是如此
此贴中的grldr是经过编译了的,我以为问题出在编译上,今天之前于是用过grub4dos-0.4.6a-2017-10-23.7z测试,情况也是如此
======================================
看来修改时只能多增加一条命令了
否则,根目录要回到C盘,就不能启动修改的文件了
作者: yjqd    时间: 2017-11-18 09:39
2011yaya2007777 发表于 2017-11-18 09:17
明白了。
修改完菜单,不执行boot指令,菜单中的指令都没有执行,此时按c键进入命令行,执行root,根目录 ...

不知能否改变这一情况,在你有时间和精力的情况下,也不知改变了会不会带来其它的问题
作者: 不点    时间: 2017-11-18 10:37
提醒一下楼主,你的 grldr 菜单开头这句

configfile

有可能抢先去执行 /menu.lst 文件了。如果此时当前 root 是 (hd0,0),而且存在 (hd0,0)/menu.lst 这个文件,那么控制权就会被这个文件接管,而 grldr 内置菜单中的后续语句都不会再执行了。

如果不存在 /menu.lst 文件,则 grldr 的内置菜单会继续起作用,后续的 find --set-root /grldr 就能够得到执行。

这个地方锤炼了很多年,不容易有 bug。鉴于 yaya 也没能重现 bug,我建议你还是重点检查你自己的菜单吧。估计是你修改的问题,也或者是因为你在使用某个有毛病的旧版 grub4dos 所造成的问题。

你在一楼说,未修改时,一切正常。修改后,不正常了。这本身就说明是你修改带来的问题。比如有可能是你所用的内置菜单修改工具与 grub4dos 版本不匹配造成的。

作者: yjqd    时间: 2017-11-18 11:14
不点 发表于 2017-11-18 10:37
提醒一下楼主,你的 grldr 菜单开头这句

configfile

谢谢回复

我检查了下所有根目录没有menu.lst
刚才从grub4dos-0.4.6a-2017-10-23.7z里提取grldr出来
新建文本文档,内容如下:

default 0
timeout 10
find --set-root /grldr

title 使用map启动本地硬盘上的 Win98 软盘镜像文件
map --mem /boot/Win98.img (fd0)
map --hook
chainloader (fd0)+1
rootnoverify (fd0)

title Grub 命令行
commandline

用grubmenu.exe将文本文档导入grldr
测试结果仍如前所述
观察到的现象是:
当启动grldr后,编辑title启动项中的内容后,发现root的结果从(hd0,3)变成(hd0,0)
作者: 2011yaya2007777    时间: 2017-11-18 11:25
把你的grldr发上来。你确认win98.img与ghost.img在同一文件夹?
作者: yjqd    时间: 2017-11-18 11:34
2011yaya2007777 发表于 2017-11-18 11:25
把你的grldr发上来。你确认win98.img与ghost.img在同一文件夹?

确认win98.img与ghost.img在同一文件夹

grldr你是要grub4dos-0.4.6a-2017-10-23.7z中的
还是要我导入了菜单那个grldr
作者: 2011yaya2007777    时间: 2017-11-18 12:03
新版本导入的
作者: yjqd    时间: 2017-11-18 12:12
本帖最后由 yjqd 于 2017-11-18 18:03 编辑
2011yaya2007777 发表于 2017-11-18 12:03
新版本导入的


新版本导入的grldr  已上传

请看一下
作者: yjqd    时间: 2017-11-18 12:23
2011yaya2007777 发表于 2017-11-18 12:03
新版本导入的

把grldr放在C盘之外的分区
启动后按C键,输入root看下结果
然后选中 使用map启动本地硬盘上的 Win98 软盘镜像文件
按E键
再选中 map --mem /boot/Win98.img (fd0)
按E键
你可对它编辑,或不编辑就按回车键
此时就在这个界面按C键,输入root看下结果


其它的title启动项你也可试一试
作者: yjqd    时间: 2017-11-18 12:28
yjqd 发表于 2017-11-18 12:23
把grldr放在C盘之外的分区
启动后按C键,输入root看下结果
然后选中 使用map启动本地硬盘上的 Win98 软 ...

菜单启动项如果有密码,你删除就是了
作者: yjqd    时间: 2017-11-18 12:29
2011yaya2007777 发表于 2017-11-18 12:03
新版本导入的

菜单启动项如果有密码,你删除就是了
作者: 2011yaya2007777    时间: 2017-11-18 17:54
由 bootmgr 通过 BCD 加载 F 盘的 grldr,根目录在 C 盘。执行 find --set-root /grldr 后,根目录才改变为 F 盘。
进入 grldr 内置菜单,按 2 次 E 编辑键,再按 Esc 键返回,按 C 键进入命令行,执行 root 命令,根目录改变,成为 C 盘。重现错误!

如果不改变 grldr 内置菜单,使用 menu.lst 外置菜单,菜单内容相同,按照上述操作,则根目录不会改变。

grldr 内置菜单相比 menu.lst 外置菜单,比较脆弱,改变内容也不方便,建议高手使用。必须调试好再用,且中途不能编辑。

steve6375 在 issues#155 报告,内置菜单批处理调用,失败后不终止程序,也没有错误信息显示。在 menu.lst 外置菜单则没有此现象。
作者: yjqd    时间: 2017-11-18 18:00
2011yaya2007777 发表于 2017-11-18 17:54
由 bootmgr 通过 BCD 加载 F 盘的 grldr,根目录在 C 盘。执行 find --set-root /grldr 后,根目录才改变为 ...


谢谢回复

辛苦了,yaya

感谢以上诸位朋友的帮助!




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