无忧启动论坛

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

GRUB4DOS更新建议、bug反馈专帖

    [复制链接]
361#
发表于 2011-1-11 10:28:06 | 只看该作者
原帖由 zhaohj 于 2011-1-11 10:04 发表
set命令测试ok!
不过是否与WENV(tuxw)是否存在内存冲突?
我记得这个问题以前曾碰到过。


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

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

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

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

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

使用道具 举报

362#
 楼主| 发表于 2011-1-11 11:16:00 | 只看该作者
把所有的exec排除,还是存在这个错误。
不知与这个是否有关:
map --rd-base=0xF00000 && map --rd-size=0x800
这段内存是否与最新的GRUB4冲突?

需要2K的安全区域

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

使用道具 举报

363#
发表于 2011-1-11 11:40:20 | 只看该作者
竟然在使用15MB-16MB之间有内存?
8M-16M之内的内存有很多用途,最好不要乱用。

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

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

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

4-6M字体占用了。
回复

使用道具 举报

364#
 楼主| 发表于 2011-1-11 15:43:01 | 只看该作者
改成其他区域,如0x65000,0x200000都不行。我上面是0xf00000 (5个0),所以不存在冲突问题
出现问题是set变量支持菜单开始的,也就是1-9,1-10两个版本

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

使用道具 举报

365#
发表于 2011-1-11 16:40:35 | 只看该作者
原帖由 zhaohj 于 2011-1-11 15:43 发表
改成其他区域,如0x65000,0x200000都不行。我上面是0xf00000 (5个0),所以不存在冲突问题
出现问题是set变量支持菜单开始的,也就是1-9,1-10两个版本


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

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

使用道具 举报

366#
 楼主| 发表于 2011-1-11 16:49:33 | 只看该作者
debug on下没出错信息死机
好像与wenv switch use_x32=on有关,第二幅图后变单步执行了,再后面死机

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

Snap1.jpg (112.45 KB, 下载次数: 155)

Snap1.jpg

Snap2.jpg (35.79 KB, 下载次数: 143)

Snap2.jpg
回复

使用道具 举报

367#
发表于 2011-1-11 16:51:17 | 只看该作者
批处理里面不要有DEBUG OFF
使用debug on
每执行一条批处理命令都会暂停的。
按N可以退出执行,其它键继续。

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

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

使用道具 举报

368#
 楼主| 发表于 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

Snap2.jpg (38.85 KB, 下载次数: 138)

Snap2.jpg
回复

使用道具 举报

369#
发表于 2011-1-11 17:26:39 | 只看该作者
原帖由 zhaohj 于 2011-1-11 17:13 发表
死机问题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%/
回复

使用道具 举报

370#
发表于 2011-1-11 19:34:06 | 只看该作者
晕啊,我一直用tuxw版wenv,测试10、11版grub4dos,总是出现貌似内存方面的问题。
试着换回chenall大的原版,哈哈,问题解决。
回复

使用道具 举报

371#
 楼主| 发表于 2011-1-11 20:19:42 | 只看该作者
原帖由 chenall 于 2011-1-11 17:26 发表


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

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


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

下面问题怎么解决?

Snap1.jpg (73.19 KB, 下载次数: 156)

Snap1.jpg
回复

使用道具 举报

372#
发表于 2011-1-12 08:25:17 | 只看该作者
原帖由 zhaohj 于 2011-1-11 20:19 发表


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

下面问题怎么解决?


pxe detect放在菜单最前面。

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

使用道具 举报

373#
 楼主| 发表于 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大是否需要彻查?
回复

使用道具 举报

374#
发表于 2011-1-12 10:59:18 | 只看该作者
原帖由 zhaohj 于 2011-1-12 09:49 发表
昨天在测试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调试很方便的。
回复

使用道具 举报

375#
 楼主| 发表于 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 编辑 ]

Snap1.jpg (59.71 KB, 下载次数: 135)

Snap1.jpg
回复

使用道具 举报

376#
发表于 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日版本正常。
回复

使用道具 举报

377#
发表于 2011-1-12 16:04:03 | 只看该作者
原帖由 zhaohj 于 2011-1-12 11:21 发表
奇怪,可能是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就没有显示了。
回复

使用道具 举报

378#
 楼主| 发表于 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%
...
回复

使用道具 举报

379#
发表于 2011-1-12 17:13:49 | 只看该作者
原帖由 zhaohj 于 2011-1-12 16:45 发表
C大有否计划扩展set、if功能?
set a=$u,%a%  ...
set /p a=$u,please input:
set /a *0x60000=*0x60000+1
if abcd


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

使用道具 举报

380#
发表于 2011-1-12 21:59:25 | 只看该作者
@chenall大:
建议用%~d1取设备名时,默认小写。
回复

使用道具 举报

381#
发表于 2011-1-13 09:19:33 | 只看该作者
原帖由 zxw 于 2011-1-12 21:59 发表
@chenall大:
建议用%~d1取设备名时,默认小写。

你输入的是小写就是小写的了,你输入大写根本就无法执行,还有必要再进行转换吗?
不过我有另外的打算。
%~d1
现在如果是用/XX/XX.BAT来启动的默认是()
准备改成
它的实际盘符,直接用(xx,yy)或(xx)来表示,这样就保证可以随时返回这个批处理文件所在的磁盘了。

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

使用道具 举报

382#
发表于 2011-1-13 10:31:04 | 只看该作者

回复 #381 chenall 的帖子

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

原帖由 chenall 于 2011-1-13 09:19 发表

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


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

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

使用道具 举报

383#
 楼主| 发表于 2011-1-13 10:56:20 | 只看该作者
C大,今天运行DOS版的DISKGEN,发现CSPE下用DISKGEN分区与DOS下分区的分区情况不一致。
而在其他PE下使用DISKGEN与DOS下一致的,望有空时候测试一下。
下面是DOS下与CSPE下使用diskgen的分区报告:

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

Snap2.jpg (167.99 KB, 下载次数: 147)

dos下报告

dos下报告

Snap3.jpg (239.34 KB, 下载次数: 150)

CSPE下报告

CSPE下报告
回复

使用道具 举报

384#
发表于 2011-1-13 11:05:35 | 只看该作者
你用0PE试一下应该也是一样的。

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

CSPE我已经不管了。
回复

使用道具 举报

385#
发表于 2011-1-13 19:42:01 | 只看该作者
@chenall

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

使用道具 举报

386#
 楼主| 发表于 2011-1-13 23:15:53 | 只看该作者
原帖由 chenall 于 2011-1-13 11:05 发表
你用0PE试一下应该也是一样的。

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

CSPE我已经不管了。


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

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

Snap3.jpg (66.81 KB, 下载次数: 139)

Snap3.jpg
回复

使用道具 举报

387#
发表于 2011-1-14 10:14:08 | 只看该作者
原帖由 zhaohj 于 2011-1-13 23:15 发表


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


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

使用道具 举报

388#
发表于 2011-1-14 10:15:18 | 只看该作者
原帖由 sratlf 于 2011-1-13 19:42 发表
@chenall

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


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

使用道具 举报

389#
 楼主| 发表于 2011-1-14 10:28:31 | 只看该作者
确实,查看了0PE的txtsetup.sif中使用了FIRADISK。

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

使用道具 举报

390#
发表于 2011-1-14 10:56:41 | 只看该作者
原帖由 zhaohj 于 2011-1-14 10:28 发表
确实,查看了0PE的txtsetup.sif中使用了FIRADISK。

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


也许是没有交换磁盘映射,具体的忘记了。
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-4-25 20:38

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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