无忧启动论坛

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

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

  [复制链接]
421#
发表于 2010-10-8 22:04:18 | 只看该作者

回复 #420 sratlf 的帖子

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

使用道具 举报

422#
发表于 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 大大看下。
回复

使用道具 举报

423#
发表于 2010-10-8 23:11:23 | 只看该作者

回复 #422 paladin15 的帖子

你WENV文件在什么位置  有用command --set-path=  处理吗  

或者你继续向下执行一条  wenv get  看是什么结果  感觉应该是wenv run find --set-root ${path}后找不到wenv造成的
回复

使用道具 举报

424#
发表于 2010-10-8 23:14:41 | 只看该作者
你的外部命令放在哪里?
从你的执行结果看,你的U盘本身是(fd0), 当你 map --mem /0pe/memtest.img (fd0), map --hook 后,你就不能访问U盘上的外部命令了,当前 (fd0) 是 memtest.img 虚拟出来的,手动启动时不需要其它文件了,所以成功。

还有一种可能是在 wenv run find --set-root ${path} 这一步它先找到了你硬盘上的memtest.img,手动启动没问题。但 find 改变了当前目录可能导致外部命令不能访问
回复

使用道具 举报

425#
发表于 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 编辑 ]
回复

使用道具 举报

426#
发表于 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
回复

使用道具 举报

427#
 楼主| 发表于 2010-10-8 23:37:52 | 只看该作者
又改了一下,上传了一个标志为test的版本,因为改动比较大,把之前放在主函数里面的子命令全部分开成一个一个的小函数。比较方便以后查错或增加功能。

   5.添加内置变量?_GET用于GET命令,存放的时变量的长度。
   6.为了方便以后添加新功能,还有查错,重新整理了代码,每个命令使用独立的函数来实现(以前都是在同一个函数里面)
   7."check" 命令增加一个功能,后面可以加一个WENV命令方便使用。并且可以check连用一个例子:
   wenv set a=10
   wenv check ${a}>=10 check ${a}<=20 run echo a is between 10 and 20
   wenv check ${a}==10 set b=${a}
现在的check命令就是相当于if了。
注: check后面可以接一个wenv支持的命令(这样可以省去一次加载WENV的过程),也可以不接(就和以前的版本一样).

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

使用道具 举报

428#
 楼主| 发表于 2010-10-8 23:42:56 | 只看该作者
原帖由 paladin15 于 2010-10-8 23:29 发表
我的wenv放在量产USB-CDROM 的/grub/,没用command --set-path=  处理
执行一条  wenv get  看是什么结果
grub>wenv get
  path=/0pe/memtest.img
        counts = 1   max = 63

找不到wenv的错误提示不 ...


cdrom光驱的文件系统是有分大小写的,怎么现在还有人不了解啊。汗.....

一会儿用大写一会儿用小写的。
回复

使用道具 举报

429#
发表于 2010-10-8 23:48:40 | 只看该作者

回复 #428 chenall 的帖子

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

使用道具 举报

430#
发表于 2010-10-8 23:48:46 | 只看该作者
我用过一个精简版的VM,在家里的电脑,文件名及路径一定要大写,不然就"File not found”

遇到错误时,要先学会排查:
1)尽量使用标准的写法,如路径及文件名全大写,上面可以加一句wenv set path=$u,${path}
2)语法要标准,象wenv run find --set-root ${path}  (fd0)没这个写法,(fd0)多余;
3)在错误处,看一下:
wenv          命令是否有效
command    查看外部命令路径
root            查看当前设备是什么
回复

使用道具 举报

431#
发表于 2010-10-8 23:56:12 | 只看该作者

回复 #425 paladin15 的帖子

我能先问句  /0pe/memtest.img  是怎么来的吗
回复

使用道具 举报

432#
发表于 2010-10-9 00:00:32 | 只看该作者

回复 #431 sratlf 的帖子

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

使用道具 举报

433#
发表于 2010-10-9 00:01:57 | 只看该作者
原帖由 chenall 于 2010-10-8 23:37 发表
现在的check命令就是相当于if了。
注: check后面可以接一个wenv支持的命令(这样可以省去一次加载WENV的过程),也可以不接(就和以前的版本一样).
...


这个“IF”功能很有价值。

下面这句话又看不懂了,C大解释下
5.添加内置变量?_GET用于GET命令,存放的时变量的长度。
回复

使用道具 举报

434#
 楼主| 发表于 2010-10-9 00:08:06 | 只看该作者
原帖由 zhaohj 于 2010-10-9 00:01 发表


这个“IF”功能很有价值。

下面这句话又看不懂了,C大解释下
5.添加内置变量?_GET用于GET命令,存放的时变量的长度。


呵呵,就是你前面想要的获得变量长度的功能啊。
例子:
wenv set a=1234567
wenv get a
wenv run echo a have ${?_GET} letters

也就是使用wenv get以后就可以用变量${?_GET}来获得它的长度。
注:这个变量是不显示的。

另外,现在的WENV功能已经有很多了,为了方便一些新手。
有没有哪位朋友愿意写一个wenv的详细readme?
回复

使用道具 举报

435#
发表于 2010-10-9 00:10:22 | 只看该作者
原帖由 chenall 于 2010-10-8 23:37 发表
又改了一下,上传了一个标志为test的版本,因为改动比较大,把之前放在主函数里面的子命令全部分开成一个一个的小函数。比较方便以后查错或增加功能。

   5.添加内置变量?_GET用于GET命令,存放的时变量的长 ...

是应该分开,包括一些过长的函数都应该细化成子程序
基础函数可以单独放在一个C文件中,对这个文件的改动要谨慎,wenv.c 只负责功能变化,这样改起来较方便。现在没有一个好用的IDE,wenv.c 太长了,有文件编辑器改老要前后找

[ 本帖最后由 tuxw 于 2010-10-9 00:14 编辑 ]
回复

使用道具 举报

436#
发表于 2010-10-9 00:14:47 | 只看该作者
这个readme不难写,因为都有现成的,如果没有人写那我来代笔。

不过最好等新版稳定了,万一又变...
回复

使用道具 举报

437#
发表于 2010-10-9 00:18:29 | 只看该作者
原帖由 chenall 于 2010-10-9 00:08 发表


呵呵,就是你前面想要的获得变量长度的功能啊。
例子:
wenv set a=1234567
wenv get a
wenv run echo a have ${?_GET} letters

也就是使用wenv get以后就可以用变量${?_GET}来获得它的长度。
注: ...


有这个变量,以后基本可以Append了。
回复

使用道具 举报

438#
发表于 2010-10-9 00:19:07 | 只看该作者
原帖由 paladin15 于 2010-10-9 00:00 发表
是我量产完U盘,剩余空间格式化成FAT32以后复制进去的。
或者你是想我问这个IMG是哪来的。我是从兄弟的ISO中提取的,忘记了是哪位仁兄了,抱歉!运行完后显示是memtest v4.10



不明白了  不知道为什么你可以find找到  却map不了  而且不是WENV找不到的错误提示  而是刚才find的文件找不到的错误提示  无语。。。。
回复

使用道具 举报

439#
发表于 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盘这样。
另外说明一下,我在家里的兼容机上测试结果一样。
回复

使用道具 举报

440#
发表于 2010-10-9 00:22:24 | 只看该作者
原帖由 paladin15 于 2010-10-9 00:00 发表
是我量产完U盘,剩余空间格式化成FAT32以后复制进去的。
或者你是想我问这个IMG是哪来的。我是从兄弟的ISO中提取的,忘记了是哪位仁兄了,抱歉!运行完后显示是memtest v4.10


问题就在这里了,img 放在 U 盘 (fd0)  上,你又将它 map 成 (fd0),现在的,img 的基础都没有了怎么可能成功?这个问题是grub4dos用法的问题,你用不用wenv都会有问题

你可以手动试试
map --mem (fd0)/memtest.img (fd0)
map (fd0) (fd1)
map --hook
ls (fd0)/ 这里应该失败
ls (fd1)/

[ 本帖最后由 tuxw 于 2010-10-9 00:23 编辑 ]
回复

使用道具 举报

441#
 楼主| 发表于 2010-10-9 00:25:30 | 只看该作者
原帖由 <i>tuxw</i> 于 2010-10-9 00:10 发表
是应该分开,包括一些过长的函数都应该细化成子程序<br />
基础函数可以单独放在一个C文件中,对这个文件的改动要谨慎,wenv.c 只负责功能变化,这样改起来较方便。现在没有一个好用的IDE,wenv.c 太长了,有文件编 ...


使用有代码折叠功能的编辑器都很方便的啊,我现在用notepad2。

[ 本帖最后由 chenall 于 2010-10-9 00:30 编辑 ]
回复

使用道具 举报

442#
 楼主| 发表于 2010-10-9 00:28:08 | 只看该作者
原帖由 <i>zhaohj</i> 于 2010-10-9 00:14 发表

不过最好等新版稳定了,万一又变...

现在的命令基本语法都不会有很大的变化,以后一般是新增功能功增强,所以没有多大关系。


内置变量?_GET是否还有点问题?

呵呵,这是正常的。
因为wenv get xxx 命令总是把变量xxx的长度存在?_GET中。




论坛是不是该升级了?对chrome支持很差。。

[ 本帖最后由 chenall 于 2010-10-9 00:31 编辑 ]
回复

使用道具 举报

443#
发表于 2010-10-9 00:30:53 | 只看该作者
wenv的功能越来越强大了,如字符处理及最新的“IF”功能,呵呵,以后就省事多了!


内置变量?_GET是否还有点问题?

不好意思,我一发帖就发现是自己属于理解不够,纯属用法上的错误,就马上删掉,以免误导。

[ 本帖最后由 zxw 于 2010-10-9 00:34 编辑 ]
回复

使用道具 举报

444#
发表于 2010-10-9 00:39:47 | 只看该作者

回复 #443 zxw 的帖子

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

使用道具 举报

445#
发表于 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启动不成功应该不是你说的原因
回复

使用道具 举报

446#
 楼主| 发表于 2010-10-9 00:47:28 | 只看该作者
原帖由 paladin15 于 2010-10-9 00:42 发表
按照你的命令执行是会出错。Error 17: Cannot mount selected partition
不过我测试过了
手动运行命令及屏显如下:
grub>find --set-root /0pe/memtest.img
  (fd0)
grub>map --mem /0pe/memtest.img (fd0 ...


贴上你的完整菜单,还有执行出错的截图。。

另外如果是提示
Error 15: File not found
那就不是wenv找不到,而是你后面的文件没有找到,可以加几个调试的语句进去,比如在出错命令的前一句加上
wenv get
还有直接map命令的比较。
回复

使用道具 举报

447#
发表于 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 。
可能是下载的文件损坏了,但我能解压?
可能是量产过程中出错了?
回复

使用道具 举报

448#
发表于 2010-10-9 01:01:07 | 只看该作者

找到原因了

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

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

使用道具 举报

449#
发表于 2010-10-9 08:19:25 | 只看该作者
${VARIABLE:X:-Y}从左到右(从0开始计数),从x开始提取,倒数y个字符不要;
${VARIABLE:-X:-Y}从倒数x个字符开始(从1开始计数),倒数Y个字符不要;如果y>=x,则为空。

测试正常
${?_GET}测试正常

[ 本帖最后由 zhaohj 于 2010-10-9 09:12 编辑 ]

Snap1.jpg (24.49 KB, 下载次数: 90)

Snap1.jpg

Snap2.jpg (17.82 KB, 下载次数: 98)

Snap2.jpg

Snap3.jpg (42.33 KB, 下载次数: 98)

初步实现了append

初步实现了append

Snap4.jpg (49.48 KB, 下载次数: 90)

Snap4.jpg
回复

使用道具 举报

450#
发表于 2010-10-9 08:36:56 | 只看该作者

又有问题了

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

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-11-26 07:38

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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