无忧启动论坛

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

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

  [复制链接]
31#
 楼主| 发表于 2010-2-9 17:33:32 | 显示全部楼层
OK,更新了,修正了当内存低于128MB时不能运行的问题.
回复

使用道具 举报

32#
 楼主| 发表于 2010-5-9 22:33:29 | 显示全部楼层
哪个版本可以,哪个版本不行?

还是哪版本以后全部不行?
回复

使用道具 举报

33#
 楼主| 发表于 2010-5-10 16:50:25 | 显示全部楼层
文件太小?NTFS不支持这么小的文件。

记得好像目前的NTFS代码访问小于4KB的文件经常会出问题的说。
回复

使用道具 举报

34#
 楼主| 发表于 2010-5-10 17:33:26 | 显示全部楼层
以前很早就会有这样的问题了吧,具体要问一下bean。

记得NTFS分区上小于4KB的文件用GRUB4DOS访问偶尔是会出问题的。
回复

使用道具 举报

35#
 楼主| 发表于 2010-5-11 10:07:53 | 显示全部楼层
我抽空试了一下,结论同上。

但是,感觉好像读取错误导致进入了死循环。

另外还有一点开启fstest后可以正常使用。

先运行
fstest提示
Filesystem tracing is now on
然后就可以访问了,晚上有空再具体跟踪一下看看。
回复

使用道具 举报

36#
 楼主| 发表于 2010-5-12 15:10:23 | 显示全部楼层
问题应该是出在ntfs模块上(可能有一个隐藏的BUG)

对NTFS模块只有上次有稍微了解了一下,还不是很清楚,抽空继续研究下,看看能不能找出来。
回复

使用道具 举报

37#
 楼主| 发表于 2010-5-13 13:35:24 | 显示全部楼层
我还是没能找到真正的原因。

由于使用fstest以后可以使用,所以就查了一下相关的代码,修改了一行和这个有关的代码,目前看起来使用正常,就是不知会不会有后遗证。

http://grub4dos-chenall.googleco ... 2010-05-13-test.zip

有条件的多多测试一下。

基于nufans.net不点上传的2010-05-13版
回复

使用道具 举报

38#
 楼主| 发表于 2010-5-19 19:31:07 | 显示全部楼层
试试这个
http://code.google.com/p/grub4do ... ip&can=2&q=
例子:
wenv set a=$u,abcdef
得到a=ABCDEF
wenv set a=$l,abcdEF
得到a=abcdef
wenv set a=$u,$input,Input string:
把输入的字符全部转成大写的
回复

使用道具 举报

39#
 楼主| 发表于 2010-5-24 11:57:13 | 显示全部楼层
已经更新了.
使用menu.lst+menu目录

以前如果使用menu.lst目录的记得修改成menu,否则可能会死机.
回复

使用道具 举报

40#
 楼主| 发表于 2010-5-24 16:15:35 | 显示全部楼层
对GRUB4DOS的这一部份我还没有研究过,不好改.

看看有没有其它人对这个感兴趣的,帮助改一下再提交补丁。^_^
回复

使用道具 举报

41#
 楼主| 发表于 2010-5-25 09:59:44 | 显示全部楼层
原帖由 33445566 于 2010-5-24 21:04 发表


网启时:grldr中的menu目录和/menu.lst可以改名吗?若可以,怎么改?


1.修改修改源码,重新编译,可以修改为任意你想要的。
2.用HEX编辑器打开GRLDR文件,查找No bootfile!,附近应该就有/MENU.LST /MENU/之类的字符串,直接修改就行了。但不能超过原来的长度。
#180
说了好像等于没说一样。

#179 ,目前的顺序是合理的。反之就不合理了。具体原因自己深究。
回复

使用道具 举报

42#
 楼主| 发表于 2010-6-20 11:22:49 | 显示全部楼层
2010-6-20
1.重写部份代码,优化效率,不再使用虚拟内存盘存放.而是直接使用内存地址0×40000(最多占用0×8200字节)
2.添加read命令,可以从指定文件中读取一序列命令执行(用于动态执行)
3.内置ECHO命令,使用wenv run ECHO时直接调用内置的echo功能显示.

有条件的朋友麻烦测试一下.

更多资料可以访问去我的搏客查看.
回复

使用道具 举报

43#
 楼主| 发表于 2010-6-20 15:09:29 | 显示全部楼层
原帖由 pseudo 于 2010-6-20 13:49 发表
强!
老菜单可大为简化。

可惜没时间重写了。


新的版本可以直接替换旧的版本使用.只是取消了init和unload这些相关的命令.

另外从内存读取字符串有一点修改,现在只读一行,以回车符或\0计算.碰到\0或回车符都算一行结束.

这个得再考虑看看以什么方式比较好,也许会加一个参数来控制.

[ 本帖最后由 chenall 于 2010-6-20 15:13 编辑 ]
回复

使用道具 举报

44#
 楼主| 发表于 2010-6-23 08:28:39 | 显示全部楼层
我试一下,可能是BUG.
回复

使用道具 举报

45#
 楼主| 发表于 2010-6-23 09:16:58 | 显示全部楼层
已经修复这个BUG.

可以的.

另外新版参数不再区分大小写.

[ 本帖最后由 chenall 于 2010-6-23 09:23 编辑 ]
回复

使用道具 举报

46#
 楼主| 发表于 2010-6-23 10:21:54 | 显示全部楼层
原帖由 zhaohj 于 2010-6-23 09:36 发表
wenv set命令正常。
wenv read 内置的ECHO可能还有大写小写之分,试了新版大写没显示出来。echo小写可以。哈哈,与原来的正好相反。

另:wenv read 读文本的最后一行,如果是换行符最好不执行。不然变帮助--help


又犯了一个错.已更新.

如果是回车符是没有执行的啊...
回复

使用道具 举报

47#
 楼主| 发表于 2010-6-23 12:00:40 | 显示全部楼层
193执行起来没有问题啊.
回复

使用道具 举报

48#
 楼主| 发表于 2010-6-23 12:03:46 | 显示全部楼层
如果是放在文件是批执行的,因为calc返回的时计算结果,当值为0时也是返回0
我已经重新上传了一个版本,对于批执行不再判断返回值,也就是不管里面是什么命令执行结果如何,都执行到底.
回复

使用道具 举报

49#
 楼主| 发表于 2010-6-23 16:28:00 | 显示全部楼层
没有发现,可能是使用方法有误.
回复

使用道具 举报

50#
 楼主| 发表于 2010-6-24 15:27:55 | 显示全部楼层
原帖由 zxw 于 2010-6-24 14:48 发表
0PE中实机测试:wenv set还是有问题。wenv get  变量不显示。
但不进入0PE实机测试正常。可能新版wenv与0PE占用内存地址发生冲突?

贴图上来看一下,包括你使用的GRUB4DOS和WENV的版本号...
回复

使用道具 举报

51#
 楼主| 发表于 2010-6-24 18:17:25 | 显示全部楼层
原帖由 zxw 于 2010-6-24 17:24 发表
grldr 2010.6.21
wenv 2010.5.19
wenvnew 2010.6.23
9255992557


你可以试试以下命令
write 0x40000 0x12345678
read 0x40000

看看是不是这个地址被你的主板或其它程序给保护了.

另外
wenv get 或wenv set都可以获取当前设置的变量列表.

cat --hex (md)0x200+1看看变量有没有被设置上去.

[ 本帖最后由 chenall 于 2010-6-24 18:19 编辑 ]
回复

使用道具 举报

52#
 楼主| 发表于 2010-6-24 18:53:00 | 显示全部楼层
原帖由 zxw 于 2010-6-24 18:31 发表

@chenall大:问题原因查到了,是与gfxmenu有冲突。
取消gfxmenu,一切正常。


看来gfxmenu有使用了这一部份的内存?有空我再看看gfxmenu的相关代码看看它到底占用了哪些内存.

呵呵,我还从来没有用过gfxmenu.
回复

使用道具 举报

53#
 楼主| 发表于 2010-6-25 09:06:01 | 显示全部楼层
原帖由 zxw 于 2010-6-25 00:42 发表
@zhaohj:
谢谢,又领悟到一点东西。
——————————————————————————
@chenall:
wenv run echo 一个语句后应补\0吧?
在批处理echo的语句重叠在同一行了。


看了gfxmenu好像没有使用这一部份的内存.

麻烦试试这个.第一次使用时会对这一部份内存进行初始化.

你可以使用gfxmenu试试看这个能不能正常使用,还有gfxmenu是否正常.我没有用过gfxmenu没测试.

wenv.zip

3.18 KB, 下载次数: 22, 下载积分: 无忧币 -2

回复

使用道具 举报

54#
 楼主| 发表于 2010-6-25 10:33:40 | 显示全部楼层
原帖由 zxw 于 2010-6-25 10:17 发表
OK,使用楼上这个版本正常了。谢谢chenall大。

测试wenvnew 2010.6.23时,用cat --hex (md)0x200+1,显示的就是grxmenu内置的菜单。



gfxmenu使用正常吗?我看到gfxmenu好像没有使用这部份的内存,启动时直接把0x40000内存清0了.
回复

使用道具 举报

55#
 楼主| 发表于 2010-6-25 16:37:18 | 显示全部楼层
原帖由 zxw 于 2010-6-25 15:00 发表

无论使用gfxmenu与否:
1.调用wenv(新旧版本)前后,cat --hex (md)4+8显示的内容均为内置菜单。
92628

2.而调用wenv(新旧版本)之前,cat --hex (md)0x200+1 前半部分显示的内置菜单末尾部分,后半部分显 ...


gfxmenu的代码看起来有点复杂.你能不能把你的菜单文件(包括GFXMENU文件)只包括必要的文件上传给我测试一下?

不过我要过两天才有时间测试了,你们可以自己测试一下看看具体问题出在哪里?比如执行到哪一个命令重启了之类的,可以在每个命令之前加pause.

也许应该为wenv另外找一块内存来存放.

[ 本帖最后由 chenall 于 2010-6-25 16:39 编辑 ]
回复

使用道具 举报

56#
 楼主| 发表于 2010-6-26 15:48:18 | 显示全部楼层
我考虑不周,大概星期二我再改一下。现在用手机上。
1.可能允许自定义使用的内存起始位置。
2.zhaohj说的不错,32个足够了。
3.会加上清除已设变量的功能。
回复

使用道具 举报

57#
 楼主| 发表于 2010-6-28 22:21:58 | 显示全部楼层
先用这个试试
内存使用0x45000位置开始

增加了一个参数reset清除所有已经设置的变量。

如果wenv set xxx=后面不指定变量的值则是清除该变量(类似于CMD的SET功能)

wenv.zip

7.88 KB, 下载次数: 27, 下载积分: 无忧币 -2

回复

使用道具 举报

58#
 楼主| 发表于 2010-6-29 00:31:59 | 显示全部楼层
原帖由 zxw 于 2010-6-29 00:28 发表
测试了一下:
不调用gfxmenu仍然没有什么问题。
调用gfxmenu:
      1.不进入0PE,cat --hex (md)0x228+1显示为0字节,调用wenv 设置变量正常显示变量名。configfile (md)4+8 后运行正常。
      2.进入0PE( ...

我试了好像是正常的啊.也许是其它的问题和WENV无关.
像UNIFONT和GFXMENU是使用同一块内存的.
回复

使用道具 举报

59#
 楼主| 发表于 2010-6-29 01:01:33 | 显示全部楼层
新的wenv有初始化过了.你应该看看0x227+1的内容.
回复

使用道具 举报

60#
 楼主| 发表于 2010-6-29 23:41:44 | 显示全部楼层
gfxmenu、UNIFONT还有FONTFILE都是使用了4-6M之间的内存。
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-5-4 20:46

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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