无忧启动论坛

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

GRUB4DOS更新建议、bug反馈专帖

    [复制链接]
 楼主| 发表于 2010-11-11 10:28:39 | 显示全部楼层
留下两个问题:
1:PXE列表问题
2:ZIP支持问题
回复

使用道具 举报

 楼主| 发表于 2010-11-12 22:37:11 | 显示全部楼层
C大,11-6的grldr测试版总算发现问题了:
http://bbs.wuyou.net/forum.php?m ... p;page=9#pid2083067
回复

使用道具 举报

 楼主| 发表于 2010-11-15 17:04:25 | 显示全部楼层
configfile会改变debug状态为debug 1,这个看来是grldr的bug
回复

使用道具 举报

发表于 2010-11-15 17:18:09 | 显示全部楼层
原帖由 zhaohj 于 2010-11-15 17:04 发表
configfile会改变debug状态为debug 1,这个看来是grldr的bug


这个可以算是bug,也可以不算.

configfile 是一个不可返回命令,执行的效果其实就是相当于重新加载GRLDR的过程只是省略了前面的过程直接加载新配置文件.

加载新的configfile相当于是进入了新的环境.

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

使用道具 举报

 楼主| 发表于 2010-11-15 22:10:54 | 显示全部楼层
但下面这个肯定是bug,为何现在find会终止或找不到文件,可能与这个有关:
返回值不应该Error 15,不然终止了。
目前只有errorcheck off

[ 本帖最后由 zhaohj 于 2010-11-15 22:17 编辑 ]
Snap1.jpg
回复

使用道具 举报

发表于 2010-11-15 23:23:05 | 显示全部楼层
这个是正常的啊,找不到就返回错误。以前的版本一直是这样的吧。
回复

使用道具 举报

 楼主| 发表于 2010-11-16 09:31:12 | 显示全部楼层
测试版感觉总还有点问题,我同样的菜单,一个能执行,一个就无论如何执行不下去。
下面是虚拟成(fd2)的,find找不到
Snap1.jpg
回复

使用道具 举报

 楼主| 发表于 2010-11-16 09:35:49 | 显示全部楼层
而当root (fd2)时就没问题
Snap2.jpg
回复

使用道具 举报

发表于 2010-11-16 12:45:59 | 显示全部楼层
你看一下map --status的状态里面的软驱数量是多少。。
find是根据这个来查找的。

猜测可能是先map (fd2)再映射(fd1) (fd0),这样会导致软驱的数量没有增加

当root (fd2)时可以找到这是肯定的,因为查找时优先找当前root设备(之前的版本会找不到)

[ 本帖最后由 chenall 于 2010-11-16 12:48 编辑 ]
回复

使用道具 举报

 楼主| 发表于 2010-11-16 15:31:27 | 显示全部楼层
是先map (fd2),这个是主程序。
Snap1.jpg
回复

使用道具 举报

 楼主| 发表于 2010-11-16 15:43:49 | 显示全部楼层
测试发现,如果先map (fd0) (fd1),floppies_curr=2
再map (fd2),也不会增加floppies_curr,始终是2
可能是镜像文件非标准引起的?
再次测试,用标准格式的,也不会增加floppies_curr值,最多是2

下面的图是按顺序(fd0)~(fd3)map的

[ 本帖最后由 zhaohj 于 2010-11-16 15:49 编辑 ]
Snap1.jpg
回复

使用道具 举报

发表于 2010-11-16 16:28:27 | 显示全部楼层
原帖由 zhaohj 于 2010-11-16 15:43 发表
测试发现,如果先map (fd0) (fd1),floppies_curr=2
再map (fd2),也不会增加floppies_curr,始终是2
可能是镜像文件非标准引起的?
再次测试,用标准格式的,也不会增加floppies_curr值,最多是2

下面的 ...


哦,看来你得想其它办法解决问题了。因为标准的电脑中最多只有两个软驱,可能因为这个原因所以这个值不会大于2.

具体看不点怎么解释了。
回复

使用道具 举报

发表于 2010-11-16 16:52:59 | 显示全部楼层
刚上传了一个新的GRUB4DOS测试版本。

尝试支持多个外部命令同时运行。(即外部命令再次调用其它外部命令)

例子
wenv call exec chkpci ${pcicfg}

注:中间的exec是为了兼容之前的设计,代表执行的是一个外部程序。

另外请尽量不要在外部命令中调用那些不可返回的命令像configfile。因为会造成内存占用无法释放。

这个版本主要测试多外部命令执行还有目前简易内存管理机制是否有问题。
回复

使用道具 举报

 楼主| 发表于 2010-11-17 00:54:49 | 显示全部楼层
全面测试了新版grldr,没发现问题。稳定性也不错。
回复

使用道具 举报

 楼主| 发表于 2010-11-17 00:58:38 | 显示全部楼层
最理想的状况是不分内部命令、外部命令。
回复

使用道具 举报

 楼主| 发表于 2010-11-17 01:11:11 | 显示全部楼层
>及>>(管道),传输给FAT生成的文件,在grub下使用是没有问题的。但这个文件后要给其他系统使用,还是有问题的,

我在SRSF6生成软盘镜像时就发现了这个问题。
最理想的情况是>处理后,清空这个文件,这样减少用户的其他操作。
我现在不得不在内存清空文件大小的区域,复制给文件。
回复

使用道具 举报

发表于 2010-11-17 11:09:16 | 显示全部楼层
原帖由 zhaohj 于 2010-11-17 00:58 发表
最理想的状况是不分内部命令、外部命令。


对啊!!目前的外部命令都是比较常用的命令,稳定后能否考虑内置???
回复

使用道具 举报

发表于 2010-11-17 14:41:45 | 显示全部楼层
原帖由 jianliulin 于 2010-11-17 11:09 发表


对啊!!目前的外部命令都是比较常用的命令,稳定后能否考虑内置???


目前的GRUB4DOS程序已经够大的了,不会考虑内置,但是会有其它解决方案。
我还在考虑中,大家有什么好的方案也可以提出来。

理想状态是简单的打包然后附加在GRLDR尾部就可以使用。(GRUB.EXE不考虑)
回复

使用道具 举报

发表于 2010-11-17 16:40:51 | 显示全部楼层
@zhaohj
抱歉,没有看明白你前面所指的问题。
另外这里的问题也是稀里糊涂的。
http://bbs.wuyou.net/forum.php?m ... p;page=8#pid2086963


新的GRUB4DOS版本已经上传,重写优化了command_func(外部命令调用)的代码。

现在写外部命令可以省去以下几行。
        void *p = &main;
        char *arg = p - (*(int *)(p - 8));
        int flags = (*(int *)(p - 12));
直接把主函数声明为
int main(char *arg,int flags)就可以了。
回复

使用道具 举报

 楼主| 发表于 2010-11-17 17:22:07 | 显示全部楼层
哦,正在调试中;
发现11-17版本grldr会卡住,大概是wenv调用fat的时候

卡住后,按回车键就进入到命令行了

[ 本帖最后由 zhaohj 于 2010-11-17 17:24 编辑 ]
Snap1.jpg
回复

使用道具 举报

发表于 2010-11-17 17:24:28 | 显示全部楼层
这个应该是语法检查不够严格的地方。
1.jpg

以前的版本也一样。
回复

使用道具 举报

 楼主| 发表于 2010-11-17 22:42:27 | 显示全部楼层
这个问题比较纠结:在11-6的grub上正常运行的SRSF6.IMG,只更换grldr到11-17版本
出现:
初步怀疑是内存冲突或破坏所致。

[ 本帖最后由 zhaohj 于 2010-11-17 22:59 编辑 ]
Snap1.jpg
回复

使用道具 举报

发表于 2010-11-17 23:22:32 | 显示全部楼层
新版GRUB4DOS使用了从32MB开始的内存。

如果说有比较大的区别的话可能就在这里了,你可以检查一下是不是有使用了32MB处的内存.
回复

使用道具 举报

 楼主| 发表于 2010-11-18 00:01:34 | 显示全部楼层
0xb00000(11M~12M)这块区域有使用吗?
这块区域我当做临时存放的。
回复

使用道具 举报

发表于 2010-11-18 00:10:09 | 显示全部楼层
记得之前有用过这一块内存,具体的忘了在哪里用到了,应该是外部命令。
回复

使用道具 举报

 楼主| 发表于 2010-11-18 00:17:21 | 显示全部楼层
那现在最小的内存安全区域是那一块?
<1m就可以
--------------
换成其他内存区域0xf00000,也出现相同错误。

感觉错误是批处理结束后返回引起的,看下面已完成写操作,我的批处理已经结束,但还是出现错误:

[ 本帖最后由 zhaohj 于 2010-11-18 00:32 编辑 ]
Snap1.jpg
回复

使用道具 举报

发表于 2010-11-18 00:31:25 | 显示全部楼层
原帖由 zhaohj 于 2010-11-17 22:42 发表
这个问题比较纠结:在11-6的grub上正常运行的SRSF6.IMG,只更换grldr到11-17版本
出现:
初步怀疑是内存冲突或破坏所致。


这个要跟踪一下具体执行的命令是什么。
回复

使用道具 举报

发表于 2010-11-18 00:32:34 | 显示全部楼层
原帖由 zhaohj 于 2010-11-18 00:17 发表
那现在最小的内存安全区域是那一块?


批处理里面有非法字符?
回复

使用道具 举报

 楼主| 发表于 2010-11-18 00:37:38 | 显示全部楼层
我都一条命令一条命令手动输入过,都没有问题。
但运行批处理就不行,到结束处出现上述错误,实际上这时全部命令已经完成,是退出批处理出现的问题。

问题出在批处理模块上。
回复

使用道具 举报

 楼主| 发表于 2010-11-18 00:39:59 | 显示全部楼层
如果批处理中有非法命令,也不会终止的。
ERROR27是系统错误

我的批处理在http://bbs.wuyou.net/forum.php?mod=viewthread&tid=159851&page=83#pid2087181

[ 本帖最后由 zhaohj 于 2010-11-18 00:41 编辑 ]
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-3-29 23:56

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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