chenall 发表于 2011-1-11 10:28:06

原帖由 zhaohj 于 2011-1-11 10:04 发表 http://bbs.wuyou.net/images/common/back.gif
set命令测试ok!
不过是否与WENV(tuxw)是否存在内存冲突?
我记得这个问题以前曾碰到过。

目前变量是直接使用WENV的方案的。应该是其它问题。

另外还有一点,尽量不要使用wenv exec的功能,因为目前的内存管理不完善。

虽然目前没有限制外部命令不能执行外命命令但,使用外部程序运行外部程序比较容易出错,用批处理来调用就没有影响了。

但是不能WENV调用批处理再用这个批处理调用外部命令,这样更容易出问题。

[ 本帖最后由 chenall 于 2011-1-11 10:29 编辑 ]

zhaohj 发表于 2011-1-11 11:16:00

把所有的exec排除,还是存在这个错误。
不知与这个是否有关:
map --rd-base=0xF00000 && map --rd-size=0x800
这段内存是否与最新的GRUB4冲突?

需要2K的安全区域

[ 本帖最后由 zhaohj 于 2011-1-11 11:18 编辑 ]

chenall 发表于 2011-1-11 11:40:20

竟然在使用15MB-16MB之间有内存?
8M-16M之内的内存有很多用途,最好不要乱用。

2K的安全区域可以从0x40000开始。
0x45000以后是变量占用的内存占用65个扇区。

我最新弄的MODBOOT占用了全部0X40000-0X45000之间的内存。

另外如果没有使用cmp命令,那6m-7m也是可以使用的。

4-6M字体占用了。

zhaohj 发表于 2011-1-11 15:43:01

改成其他区域,如0x65000,0x200000都不行。我上面是0xf00000 (5个0),所以不存在冲突问题
出现问题是set变量支持菜单开始的,也就是1-9,1-10两个版本

[ 本帖最后由 zhaohj 于 2011-1-11 16:27 编辑 ]

chenall 发表于 2011-1-11 16:40:35

原帖由 zhaohj 于 2011-1-11 15:43 发表 http://bbs.wuyou.net/images/common/back.gif
改成其他区域,如0x65000,0x200000都不行。我上面是0xf00000 (5个0),所以不存在冲突问题
出现问题是set变量支持菜单开始的,也就是1-9,1-10两个版本

0xf00000=15728640=15MB
建议还是用0x40000开始的2Kb吧。

这个只能你自己找原因了。
用debug模式跟踪一下批处理看看执行到哪个语句出错了。

zhaohj 发表于 2011-1-11 16:49:33

debug on下没出错信息死机
好像与wenv switch use_x32=on有关,第二幅图后变单步执行了,再后面死机

[ 本帖最后由 zhaohj 于 2011-1-11 16:57 编辑 ]

chenall 发表于 2011-1-11 16:51:17

批处理里面不要有DEBUG OFF
使用debug on
每执行一条批处理命令都会暂停的。
按N可以退出执行,其它键继续。

还是你处理的数据量太大了,命令行最长不能超过1500个字符。
昨天的版本嵌套2层批处理后可能会出错。
还是先下载今天的版本试一下吧。

[ 本帖最后由 chenall 于 2011-1-11 16:52 编辑 ]

zhaohj 发表于 2011-1-11 17:13:08

死机问题1-11版本已经解决。
set oempath && WENV set oempath=${oempath!\=/}
set oempath && set srspath=%srspath%%oempath%/ && echo set srspath=%srspath% >> (fd2)/ENVI.BAT

chenall 发表于 2011-1-11 17:26:39

原帖由 zhaohj 于 2011-1-11 17:13 发表 http://bbs.wuyou.net/images/common/back.gif
死机问题1-11版本已经解决。
set oempath && WENV set oempath=${oempath!\=/}
set oempath && set srspath=%srspath%%oempath%/ && echo set srspath=%srspath% >> (fd2)/ENVI.BAT

有一点需要注意一下上面的语句在批处理中执行
%srspath%%oempath%/

因为批处理执行前会先替换%%为一个 %.然后再丢给命令处理器。
所以上面会被处理成
%srspath%oempath%/

zxw 发表于 2011-1-11 19:34:06

晕啊,我一直用tuxw版wenv,测试10、11版grub4dos,总是出现貌似内存方面的问题。
试着换回chenall大的原版,哈哈,问题解决。

zhaohj 发表于 2011-1-11 20:19:42

原帖由 chenall 于 2011-1-11 17:26 发表 http://bbs.wuyou.net/images/common/back.gif


有一点需要注意一下上面的语句在批处理中执行
%srspath%%oempath%/

因为批处理执行前会先替换%%为一个 %.然后再丢给命令处理器。
所以上面会被处理成
%srspath%oempath%/

呵呵,改成%srspath%%%oempath%/问题解决。

下面问题怎么解决?

chenall 发表于 2011-1-12 08:25:17

原帖由 zhaohj 于 2011-1-11 20:19 发表 http://bbs.wuyou.net/images/common/back.gif


呵呵,改成%srspath%%%oempath%/问题解决。

下面问题怎么解决?

pxe detect放在菜单最前面。

暂时无解,我也发现过几次,但是没有找到原因,看代码都是正常的。

zhaohj 发表于 2011-1-12 09:49:52

昨天在测试SRSF6过程中,其中的一个批处理makeinf.bat使用了0x40000内存地址:
map --rd-base=0x40000 && map --rd-size=0x800
...
fat copy (rd)+1 (fd1)/SRS.INF
出现死机,后来改成:
fat mkfile size=2k (fd1)/SRS.INF
因为">"以前是没清空内存的,是后来改变的。
-----------------
怀疑要么是tuxw的wenv问题引起的内存冲突,要么...
问题可以重现,C大是否需要彻查?

chenall 发表于 2011-1-12 10:59:18

原帖由 zhaohj 于 2011-1-12 09:49 发表 http://bbs.wuyou.net/images/common/back.gif
昨天在测试SRSF6过程中,其中的一个批处理makeinf.bat使用了0x40000内存地址:
map --rd-base=0x40000 && map --rd-size=0x800
...
fat copy (rd)+1 (fd1)/SRS.INF
出现死机,后来改成:
fat mkfile size=2 ...

现在没有太多时间,你自己跟踪调试一下吧。你自己写的批处理对流程肯定比较清楚。

现在批处理用debug on调试很方便的。

zhaohj 发表于 2011-1-12 11:21:34

奇怪,可能是1-10版本的问题,1-11版本问题无法重现。

批处理中,debug on后,下面这两句:
echo !BAT > (fd2)/DRIVERS.BAT
WENV for /f "tokens=3 delims==," %i in ( (fd1)/SYSINF ) do (set a=$u,%i ; check %<-$${a} loop ; echo cat --length=0 $${srspath}$${a} key(&&) FAT copy /o $${srspath}$${a} (fd1)/) >> (fd2)/DRIVERS.BAT

生成的DRIVERS.BAT见图,怎么取消set a=$u,%i 生成的输出?

[ 本帖最后由 zhaohj 于 2011-1-12 12:43 编辑 ]

blithewind 发表于 2011-1-12 13:04:14

原帖由 zhaohj 于 2011-1-12 11:21 发表 奇怪,可能是1-10版本的问题,1-11版本问题无法重现。批处理中,debug on后,下面这两句:echo !BAT > (fd2)/DRIVERS.BATWENV for /f "tokens=3 delims==," %i in ( (fd1)/SYSINF ) do (set a=$u,%i ;... 应该是10日的版本有点问题 我测试合盘时把SRSF6和SRS_F6两个模块都集成了,用10日的版本SRSF6总是重启,11日版本正常。

chenall 发表于 2011-1-12 16:04:03

原帖由 zhaohj 于 2011-1-12 11:21 发表 http://bbs.wuyou.net/images/common/back.gif
奇怪,可能是1-10版本的问题,1-11版本问题无法重现。

批处理中,debug on后,下面这两句:
echo !BAT > (fd2)/DRIVERS.BAT
WENV for /f "tokens=3 delims==," %i in ( (fd1)/SYSINF ) do (set a=$u,%i ;...

debug off就没有显示了。

zhaohj 发表于 2011-1-12 16:45:54

C大有否计划扩展set、if功能?
set a=$u,%a%...
set /p a=$u,please input:
set /a *0x60000=*0x60000+1
if abcd<-%a%
...

chenall 发表于 2011-1-12 17:13:49

原帖由 zhaohj 于 2011-1-12 16:45 发表 http://bbs.wuyou.net/images/common/back.gif
C大有否计划扩展set、if功能?
set a=$u,%a%...
set /p a=$u,please input:
set /a *0x60000=*0x60000+1
if abcd

没有,再扩展下去还不如直接用WENV了。

zxw 发表于 2011-1-12 21:59:25

@chenall大:
建议用%~d1取设备名时,默认小写。

chenall 发表于 2011-1-13 09:19:33

原帖由 zxw 于 2011-1-12 21:59 发表 http://bbs.wuyou.net/images/common/back.gif
@chenall大:
建议用%~d1取设备名时,默认小写。
你输入的是小写就是小写的了,你输入大写根本就无法执行,还有必要再进行转换吗?
不过我有另外的打算。
%~d1
现在如果是用/XX/XX.BAT来启动的默认是()
准备改成
它的实际盘符,直接用(xx,yy)或(xx)来表示,这样就保证可以随时返回这个批处理文件所在的磁盘了。

也许晚上发布的版本会有这个改进。

zxw 发表于 2011-1-13 10:31:04

回复 #381 chenall 的帖子

我的意思是用户输入了大写就强制转换设备名为小写,这样可以容错。

原帖由 chenall 于 2011-1-13 09:19 发表 http://bbs.wuyou.net/images/common/back.gif

现在如果是用/XX/XX.BAT来启动的默认是()
准备改成
它的实际盘符,直接用(xx,yy)或(xx)来表示,这样就保证可以随时返回这个批处理文件所在的磁盘了。
...

用(xx)来表示,这个好,强烈支持!

[ 本帖最后由 zxw 于 2011-1-13 16:56 编辑 ]

zhaohj 发表于 2011-1-13 10:56:20

C大,今天运行DOS版的DISKGEN,发现CSPE下用DISKGEN分区与DOS下分区的分区情况不一致。
而在其他PE下使用DISKGEN与DOS下一致的,望有空时候测试一下。
下面是DOS下与CSPE下使用diskgen的分区报告:

[ 本帖最后由 zhaohj 于 2011-1-13 10:57 编辑 ]

chenall 发表于 2011-1-13 11:05:35

你用0PE试一下应该也是一样的。

这是因为使用了虚拟磁盘的原因。

CSPE我已经不管了。

sratlf 发表于 2011-1-13 19:42:01

@chenall

c大set命令能否增强一下可以将输入字符全部转为大写或小写

zhaohj 发表于 2011-1-13 23:15:53

原帖由 chenall 于 2011-1-13 11:05 发表 http://bbs.wuyou.net/images/common/back.gif
你用0PE试一下应该也是一样的。

这是因为使用了虚拟磁盘的原因。

CSPE我已经不管了。

晚上测试了0PE下diskgen,竟然与DOS下分区一致,迷糊了。

[ 本帖最后由 zhaohj 于 2011-1-13 23:18 编辑 ]

chenall 发表于 2011-1-14 10:14:08

原帖由 zhaohj 于 2011-1-13 23:15 发表 http://bbs.wuyou.net/images/common/back.gif


晚上测试了0PE下diskgen,竟然与DOS下分区一致,迷糊了。

不同的驱动,肯定不一样。这个应该是FIRADISK的驱动。

chenall 发表于 2011-1-14 10:15:18

原帖由 sratlf 于 2011-1-13 19:42 发表 http://bbs.wuyou.net/images/common/back.gif
@chenall

c大set命令能否增强一下可以将输入字符全部转为大写或小写

好吧,为了方便我还是加上好了,反正就几行代码。比较复杂的就不考虑了。

zhaohj 发表于 2011-1-14 10:28:31

确实,查看了0PE的txtsetup.sif中使用了FIRADISK。

但我在CSPE的ext.zip\upsys,把FIRADISK.sys改名为wdsys.sys,放入upsys目录下,结果也是一样的。

chenall 发表于 2011-1-14 10:56:41

原帖由 zhaohj 于 2011-1-14 10:28 发表 http://bbs.wuyou.net/images/common/back.gif
确实,查看了0PE的txtsetup.sif中使用了FIRADISK。

但我在CSPE的ext.zip\upsys,把FIRADISK.sys改名为wdsys.sys,放入upsys目录下,结果也是一样的。

也许是没有交换磁盘映射,具体的忘记了。
页: 3 4 5 6 7 8 9 10 11 12 [13] 14 15 16 17 18 19 20 21 22
查看完整版本: GRUB4DOS更新建议、bug反馈专帖