无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站广告联系 微信:wuyouceo QQ:184822951
楼主: chenall
打印 上一主题 下一主题

grub4dos 外部命令 wenv [2010-10-17 ]

  [复制链接]
1#
发表于 2010-10-8 13:11:18 | 显示全部楼层

wenv制成ISO量产后有BUG?

我的菜单如下:
title 【 9 】输入路径运行ISO、IMG或IMA,直接回车运行/MY.IMG
wenv set path=$input,Input full name of the file:
wenv run find --set-root ${path}
wenv set suffix=$U,${path##.}
wenv ${suffix}== && find --set-root /MY.IMG && map --mem /MY.IMG (fd0) && map --hook && rootnoverify (fd0) && chainloader (fd0)+1 && boot
wenv ${suffix}==ISO && wenv run map --mem ${path} (0xff) && map --hook && chainloader (0xff) && boot
wenv ${suffix}==IMG && wenv run map --mem ${path} (fd0) && map --hook && rootnoverify (fd0) && chainloader (fd0)+1 && boot
wenv ${suffix}==IMA && wenv run map --mem ${path} (fd0) && map --hook && rootnoverify (fd0) && chainloader (fd0)+1 && boot
---------------
在量产后,运行此菜单会报错,我进入命令行模式测试,发现是在运行 wenv run map --mem ${path} (fd0) 这一步会出现找不到路径类似的错误。我把这里改成map --mem /MY.IMG (fd0)运行则正常。请C大测试,不知道各位有没有遇到?
回复

使用道具 举报

2#
发表于 2010-10-8 14:22:51 | 显示全部楼层

回复 #397 sratlf 的帖子

同样的菜单我在虚拟机里运行正常呀。
一定要加$U?
我手动输入是以/开头的。
回复

使用道具 举报

3#
发表于 2010-10-8 14:35:20 | 显示全部楼层
我刚刚又测试了下,把IMG或ISO放在硬盘上,然后用量产后的U盘启动,运行上面396楼的菜单运行正常。
现在考虑是不是因为量产后的U盘剩余部分格式化成了ZIP盘的原因,我再测试下格式化成HDD模式能不能正常启动。
回复

使用道具 举报

4#
发表于 2010-10-8 15:23:57 | 显示全部楼层

回复 #398 paladin15 的帖子

title 【 9 】输入路径运行ISO、IMG或IMA,直接回车运行/MY.IMG
wenv set path=$U,$input,Input full name of the file:   $U不一定需要吧?
wenv run find --set-root ${path}
wenv set suffix=${path#.}                #是取第一个.后面的,要取最后一个.后面的符吧。
wenv get suffix || find --set-root /MY.IMG && map --mem /MY.IMG (fd0) && map --hook && rootnoverify (fd0) && chainloader (fd0)+1 && boot
wenv ${suffix}==ISO && wenv run map --mem ${path} (0xff) && map --hook && chainloader (0xff) && boot
wenv ${suffix}<>ISO && wenv run map --mem ${path} (fd0) && map --hook && rootnoverify (fd0) && chainloader (fd0)+1 && boot

我写的菜单在ISO或IMG在硬盘上时启动正常,放文件到U盘上就不行了。
回复

使用道具 举报

5#
发表于 2010-10-8 16:01:31 | 显示全部楼层

回复 #403 sratlf 的帖子

${VAR##STRING} 提取STRING字符串后面的内容,从右往左第一个位置开始.
应该是取两个##
U盘上的文件可以访问,因为我手动 map --mem /MY.IMG (fd0) 可以正常运行,但是 wenv run map --mem ${path} (fd0) 不行。
回复

使用道具 举报

6#
发表于 2010-10-8 17:50:44 | 显示全部楼层

回复 #405 sratlf 的帖子

wenv get 符合要求
wenv放在/grub/ 目录,没有用指定
find --set-root 后还能找到wenv

在U盘不行,在硬盘可以呀,奇怪了,就这里不明白,晕了。
回复

使用道具 举报

7#
发表于 2010-10-8 21:39:46 | 显示全部楼层

回复 #409 sratlf 的帖子

首先谢谢两位大的回复,不过我还是不太明白。可能是我说得不太清楚。
我的测试环境是把菜单做成ISO,量产到U盘,然后在U盘的可见区域放入MY.IMG,在硬盘一分区中放入HDD.IMG,编辑菜单如下:
title 【 9 】输入路径运行ISO、IMG或IMA,直接回车运行/MY.IMG
wenv set path=$input,Input full name of the file:
wenv run find --set-root ${path}
wenv set suffix=$U,${path##.}
wenv ${suffix}== && find --set-root /MY.IMG && map --mem /MY.IMG (fd0) && map --hook && rootnoverify (fd0) && chainloader (fd0)+1 && boot
wenv ${suffix}==ISO && wenv run map --mem ${path} (0xff) && map --hook && chainloader (0xff) && boot
wenv ${suffix}==IMG && wenv run map --mem ${path} (fd0) && map --hook && rootnoverify (fd0) && chainloader (fd0)+1 && boot
wenv ${suffix}==IMA && wenv run map --mem ${path} (fd0) && map --hook && rootnoverify (fd0) && chainloader (fd0)+1 && boot
-------------
我运行此菜单,输入/MY.IMG,执行出错,我手动一步步执行,发现出错在 wenv run map --mem ${path} (fd0)
再次运行输入HDD.IMG,执行成功
第三次执行,直接回车也运行成功。
在这里我就不明白了,既然直接回车可以运行成功,说明能读取U盘中的文件,而且运行HDD.IMG成功,说明菜单也应该是没问题的。

chenall  大大说的“因为你find --set-root 之后还在同一个分区上,当然可以了。”,这里我应该不是在同一分区上,U盘是量产的。

sratlf 大大说的“假如WENV在U盘  要加载的img在硬盘  你用find --set-root 将root改到硬盘上  同时还没有指定WENV在哪  那向下执行 map --mem 肯定会有错误”,情况也不是这样的,我在USB-ROM中启动,然后find --set-root都要改变root,但在硬盘上wenv可以运行正常呀。

希望两位大大帮我分析下问题出在哪了,麻烦了!

补充一点,我用ISO在虚拟机上测试都正常,这就相当于前面测试环境中的硬盘测试。

[ 本帖最后由 paladin15 于 2010-10-8 21:41 编辑 ]
回复

使用道具 举报

8#
发表于 2010-10-8 21:52:41 | 显示全部楼层

回复 #417 sratlf 的帖子

${suffix}== &&  判断是否为空最好用 WENV get suffix ||    这个改过来了
不为ISO的也改过来了。

虚拟机可以截图,但是虚拟机可以用U盘启动吗?我测试好像不行呀。
真实机器要拍照,我手边也没相机。

[ 本帖最后由 paladin15 于 2010-10-8 21:54 编辑 ]
回复

使用道具 举报

9#
发表于 2010-10-8 21:58:17 | 显示全部楼层
WENV get suffix ||

这里我一直不明白,版主大大用大写的WENV可以正常运行呀?我只能用小写的。
回复

使用道具 举报

10#
发表于 2010-10-8 22:04:18 | 显示全部楼层

回复 #420 sratlf 的帖子

哈哈,恍然大悟!没转过弯来。
回复

使用道具 举报

11#
发表于 2010-10-8 22:28:10 | 显示全部楼层

回复 #420 sratlf 的帖子

实机已测试。
联想品牌机,G31主板,core7500CPU,2G内存,PNY 双子星16G U盘,量产工具SM3255AB_J0330,量产成后剩余空间为USB-ZIP,FAT32格式
手动运行命令及屏显如下:
grub>find --set-root /0pe/memtest.img
  (fd0)
grub>map --mem /0pe/memtest.img (fd0)
  Autodetect number-of-heads failed. Use default value 2
  Autodetect sectors-per-track failed. Use default value 18
grub>map --hook
grub>chainloader (fd0)+1
grub>boot
成功启动
第二次手动,简单演示就不读取了,直接设定
grub>wenv set path=/0pe/memtest.img
grub>wenv run find --set-root ${path}
  (fd0)
grub>wenv run map --mem ${path} (fd0)
  Error 15: File not found
报错就没往下测了。
sratlf 大大看下。
回复

使用道具 举报

12#
发表于 2010-10-8 23:29:32 | 显示全部楼层

回复 #423 sratlf 的帖子

我的wenv放在量产USB-CDROM 的/grub/,没用command --set-path=  处理
执行一条  wenv get  看是什么结果
grub>wenv get
  path=/0pe/memtest.img
        counts = 1   max = 63

找不到wenv的错误提示不一样,如下:
grub>WENV
Warning! No such command:WENV

[ 本帖最后由 paladin15 于 2010-10-8 23:34 编辑 ]
回复

使用道具 举报

13#
发表于 2010-10-8 23:34:28 | 显示全部楼层

回复 #424 tuxw 的帖子

你的外部命令放在哪里?
我的wenv放在量产USB-CDROM 的/grub/,没用command --set-path=  处理

我查找了,硬盘上没有/0pe/memtest.img
grub>find --ignore-floppies /0pe/memtest.img
Error 15: File not found
回复

使用道具 举报

14#
发表于 2010-10-8 23:48:40 | 显示全部楼层

回复 #428 chenall 的帖子

C大,我前面写大写的WENV是为了回复给sratlf,说明不是因为找不到wenv而报错。我自己一直是用小写的wenv。
回复

使用道具 举报

15#
发表于 2010-10-9 00:00:32 | 显示全部楼层

回复 #431 sratlf 的帖子

是我量产完U盘,剩余空间格式化成FAT32以后复制进去的。
或者你是想我问这个IMG是哪来的。我是从兄弟的ISO中提取的,忘记了是哪位仁兄了,抱歉!运行完后显示是memtest v4.10
回复

使用道具 举报

16#
发表于 2010-10-9 00:21:17 | 显示全部楼层

回复 #430 zhaohj 的帖子

谢谢提醒!
对于第2点,我没写过那样的语句哦。
测试情况如下:
grub>wenv set path=/0pe/memtest.img
grub>wenv run find --set-root ${path}
  (fd0)
grub>wenv run map --mem ${path} (fd0)
  Error 15: File not found
grub>wenv get
  path=/0pe/memtest.img
        counts = 1   max = 63
grub>command
Current default path: (bd)/grub/
grub>root
(fd0): Filesystem type is fat, Using whole disk

各位有条件量产一个U盘测试吗?看是所有量产后的U盘都这样,还只是我的U盘这样。
另外说明一下,我在家里的兼容机上测试结果一样。
回复

使用道具 举报

17#
发表于 2010-10-9 00:39:47 | 显示全部楼层

回复 #443 zxw 的帖子

你手真快,我刚想指出来,就发现帖子没了。
回复

使用道具 举报

18#
发表于 2010-10-9 00:42:13 | 显示全部楼层

回复 #440 tuxw 的帖子

按照你的命令执行是会出错。Error 17: Cannot mount selected partition
不过我测试过了
手动运行命令及屏显如下:
grub>find --set-root /0pe/memtest.img
  (fd0)
grub>map --mem /0pe/memtest.img (fd0)
  Autodetect number-of-heads failed. Use default value 2
  Autodetect sectors-per-track failed. Use default value 18
grub>map --hook
grub>chainloader (fd0)+1
grub>boot
成功启动

用wenv启动不成功应该不是你说的原因
回复

使用道具 举报

19#
发表于 2010-10-9 00:58:19 | 显示全部楼层

回复 #446 chenall 的帖子

问题已经找到了。
我重新你载你的wenv-2010-10-08-test,放入U盘根目录,然后手动运行,指定command --set-path=(fd0)/,后面测试完全正常。
问题又来了,为什么我USB-CDROM中的不行呢?我下的是wenv-2010-10-07.zip 。
可能是下载的文件损坏了,但我能解压?
可能是量产过程中出错了?
回复

使用道具 举报

20#
发表于 2010-10-9 01:01:07 | 显示全部楼层

找到原因了

我算了一下四个文件MD5值,发现两个同版本的wenv.c的MD5值不一样。应该是此文件损坏了。
在这里我能不能建议下,是否能在执行wenv的同时检测下文件的完整性呢?
还有,谢谢各位的回复。谢谢啦!

[ 本帖最后由 paladin15 于 2010-10-9 01:03 编辑 ]
回复

使用道具 举报

21#
发表于 2010-10-9 08:36:56 | 显示全部楼层

又有问题了

为什么同样的文件损坏,运行硬盘上的IMG可以成功,但U盘上的同样的IMG却失败呢?
回复

使用道具 举报

22#
发表于 2010-10-9 13:42:35 | 显示全部楼层

回复 #451 chenall 的帖子

抱歉,给大家添麻烦了!
就此问题不再提问了,最后一帖。
如果版主觉得此帖多余请删除!
回复

使用道具 举报

23#
发表于 2010-10-9 14:36:02 | 显示全部楼层
@zhaohj
字符串运算的2-5,通俗点说,一个#或%是取尽可能多的字符,而两个的##或%%是取尽可能少的字符。
这样是不是更易记忆呢。
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-5-31 02:52

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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