无忧启动论坛

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

GRUB4DOS更新建议、bug反馈专帖

    [复制链接]
发表于 2010-12-15 16:28:15 | 显示全部楼层
原帖由 zxw 于 2010-12-15 15:52 发表
2010-12-15版本,虚拟机测试通过;清华同方实机测试问题依旧,insert键调试信息同#205,显示Starting cmain()...后重启。
#209 test  版本,虚拟机、清华同方实机测试均启动失败进入命令行,实机测试insert键调 ...


麻烦再试一下这个.

grldr-test.rar

123.11 KB, 下载次数: 17, 下载积分: 无忧币 -2

回复

使用道具 举报

发表于 2010-12-15 18:07:09 | 显示全部楼层

回复 #211 chenall 的帖子

虚拟机、清华同方实机测试均启动失败进入命令行.
回复

使用道具 举报

发表于 2010-12-15 18:23:31 | 显示全部楼层
原帖由 zxw 于 2010-12-15 18:07 发表
虚拟机、清华同方实机测试均启动失败进入命令行.


只要不重启能进入命令行就算成功了.因为没有内置菜单.
回复

使用道具 举报

发表于 2010-12-15 18:25:14 | 显示全部楼层

回复 #213 chenall 的帖子

我已内置了0PE菜单
回复

使用道具 举报

发表于 2010-12-15 18:44:44 | 显示全部楼层
原帖由 zxw 于 2010-12-15 18:25 发表
我已内置了0PE菜单


测试用的版本不支持内置菜单...

已经重新上传完整版..

改成用7z压缩.
回复

使用道具 举报

发表于 2010-12-15 22:25:02 | 显示全部楼层

回复 #215 chenall 的帖子

辛苦了,c大!
compaq笔记本、清华同方、虚拟机均测试通过……
回复

使用道具 举报

 楼主| 发表于 2010-12-15 23:02:05 | 显示全部楼层
7z压缩率这么高啊。
G4D能支持7Z多么向往啊!
回复

使用道具 举报

发表于 2010-12-16 08:18:31 | 显示全部楼层
其实现在我也觉得 no_decompress 这个变量的设置不好,应该如 chenall 所说改成 do_compress 才比较自然。但当初没有仔细分析,直接借用了 GNU GRUB 中已经存在了的 no_decompress 变量。但问题是已经公布了,再改的话,会给我们自己引来不少麻烦,比如,若干年之内,可能就会接到很多询问。很多使用 0.4.4 的人,转用 0.4.5,当他发现么莫名其妙的兼容性问题出现时,他得花费不少时间去定位 “bug”。最后他可能发现了我们的 Readme 中已经说明了这个更动,但已经晚了,他耗费了不少的精力才发现这一点。所以,不兼容性的出现是不好的,即使写入 readme 也没有太大的帮助。

这次也是个教训,说明了当初设计一个变量或者一个函数的时候,就应该沉稳,尽量做到不至于将来要返工。说明当初我应该下决心把 no_compress 换成 do_compress。这个事件,对于今后我们的开发,算是一个教训了。

因此,我觉得 asm.S 末尾的接口函数,也得慎重处理。在正式版发布以前,这些接口函数要敲定。我有新的意见,在时空论坛给出。请 chenall 注意去看看。
回复

使用道具 举报

 楼主| 发表于 2010-12-16 09:49:36 | 显示全部楼层
今天想使用一个老版本的PE(COOLG),应用的是老版本的WENV,结果发现
WENV run write --offset=0x100 (fd0)/SERV_SET.BAT \r\nset PXE_SERVER=${ip}\r\n  竟然无效了,没有写入,帮忙分析一下
grldr是最新的12-15

[ 本帖最后由 zhaohj 于 2010-12-16 09:54 编辑 ]
Snap1.jpg
Snap2.jpg
回复

使用道具 举报

 楼主| 发表于 2010-12-16 11:19:03 | 显示全部楼层
是否说明新版grldr对外部命令有不兼容之处呢?
至少上面老版本wenv的子命令run
回复

使用道具 举报

发表于 2010-12-16 11:53:11 | 显示全部楼层
原帖由 zhaohj 于 2010-12-16 11:19 发表
是否说明新版grldr对外部命令有不兼容之处呢?
至少上面老版本wenv的子命令run



好像是有这个问题,我这里的一个也是只替换了新版的grldr其他没有任何改变(包括外部命令wenv的版本和菜单),但启动出错。替换成老版本的grldr就又好了!
回复

使用道具 举报

 楼主| 发表于 2010-12-16 12:30:02 | 显示全部楼层
改成新版本的wenv(c版),运行正常了。
想法把LST文件改成批处理文件,出错
原WIM.LST文件:
debug off
terminal console
color white/blue blue/yellow light-red/blue 10
timeout 0
default 0
title RUN WIM PE2003
map --mem  /COOLG/WIM/EXT.IMG.GZ (fd0)
map --hook
command --set-path=(fd0)/GRUB/
pause --wait=0 Copy Tools,Please waiting...
map --mem=0xb000 /COOLG/WIM/TOOLS.WIM (rd)
FAT copy (rd)+1 (fd0)/TOOLS.WIM
FAT copy /COOLG/WIM/TOOLS.INI (fd0)/
pause --wait=0 Copy Net Drivers,Please waiting...
FAT copy /COOLG/NET.CAB (fd0)/
checkrange 0x21 read 0x82a0 && pxe keep && goto 1
goto 2
title
clear
cat --length=0 /COOLG/SERV_SET.BAT || goto 2
FAT copy /COOLG/SERV_SET.BAT (fd0)/
WENV calc aa=*0x8288 & 0xff
WENV set ip=${aa}
WENV calc aa=*0x8288>>8 & 0xff
WENV set ip=${ip}.${aa}
WENV calc aa=*0x8288>>16 & 0xff
WENV set ip=${ip}.${aa}
WENV calc aa=*0x8288>>24 & 0xff
WENV set ip=${ip}.${aa}
WENV call write --offset=0x100 (fd0)/SERV_SET.BAT \r\nset PXE_SERVER=${ip}\r\n
WENV reset
goto 2
title
chainloader --force /COOLG/WIM/PXEWIM.0
--------------------------------上面正常运行

改成WIM.BAT文件:
!BAT
map --mem  /COOLG/WIM/EXT.IMG.GZ (fd0)
map --hook
:command --set-path=(fd0)/GRUB/
insmod (fd0)/GRUB/WENV
insmod (fd0)/GRUB/FAT
pause --wait=0 Copy Tools,Please waiting...
map --mem=0xb000 /COOLG/WIM/TOOLS.WIM (rd)
FAT copy (rd)+1 (fd0)/TOOLS.WIM
FAT copy /COOLG/WIM/TOOLS.INI (fd0)/
pause --wait=0 Copy Net Drivers,Please waiting...
FAT copy /COOLG/NET.CAB (fd0)/
checkrange 0x21 read 0x82a0 && pxe keep && goto 1
goto 2

:1
clear
cat --length=0 /COOLG/SERV_SET.BAT || goto 2
FAT copy /COOLG/SERV_SET.BAT (fd0)/
WENV calc aa=*0x8288 & 0xff
WENV set ip=${aa}
WENV calc aa=*0x8288>>8 & 0xff
WENV set ip=${ip}.${aa}
WENV calc aa=*0x8288>>16 & 0xff
WENV set ip=${ip}.${aa}
WENV calc aa=*0x8288>>24 & 0xff
WENV set ip=${ip}.${aa}
WENV call write --offset=0x100 (fd0)/SERV_SET.BAT \r\nset PXE_SERVER=${ip}\r\n
WENV reset

:2
delmod wenv
delmod fat
chainloader --force /COOLG/WIM/PXEWIM.0

-----------------
总菜单:
debug off
terminal console
color white/blue blue/yellow light-red/blue 10
timeout 5
default 0
title RUN WIM PE2003
/COOLG/WIM.BAT
boot
title RUN IMG PE2003
/COOLG/IMG.BAT
boot

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

使用道具 举报

 楼主| 发表于 2010-12-16 13:00:29 | 显示全部楼层
下面内存有冲突了,难道22M处内存空间被占用了?
Snap2.jpg
回复

使用道具 举报

发表于 2010-12-16 14:33:49 | 显示全部楼层
@zhaohj
#219
也许是WENV的BUG吧,你可以再试试其它命令组合.
比如不write (fd0),而是write (md)0x300+1看看是否正常...

新版GRUB4DOS运行外部命令时分配的内存是从20MB处开始的.

上面的提示好像不是内存冲突,而是来源磁盘的问题.

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

使用道具 举报

 楼主| 发表于 2010-12-16 14:51:42 | 显示全部楼层
用新版wenv,wenv call write已经正常了。
但把子菜单改成批处理还是有问题。
同样的文件,用configfile xxx.lst能正常启动的。是否与PXE有关。
我把这个PE放在ftp://60.190.19.108/zhaohj/coolg
使用方法:
把coolg整个目录拷贝,configfile /COOLG/COOLG.LST

-----------------------
目前发现两个问题:
1:批处理下map --mem问题
2:批处理下chainloader --force /COOLG/IMG/PXEIMG.0   <--这个就是STARTROM.0

coolg.lst

debug off
terminal console
color white/blue blue/yellow light-red/blue 10
timeout 5
default 0
title RUN WIM PE2003
/COOLG/WIM.BAT
boot
title RUN IMG PE2003
/COOLG/IMG.BAT
boot
title RUN WIM PE2003 (LST)
configfile /COOLG/WIM.LST

title RUN IMG PE2003 (LST)
configfile /COOLG/IMG.LST


蓝色部分是原老的,启动正常。



[ 本帖最后由 zhaohj 于 2010-12-16 14:58 编辑 ]
回复

使用道具 举报

发表于 2010-12-16 15:27:25 | 显示全部楼层
可能是WENV的问题,原因未知,只要执行过WENV,就会不正常.你可以再试试TUXW版的WENV看看是不是同样的问题.

但是改成如下就可以了.
chainloader --force ()/COOLG/WIM/PXEWIM.0
回复

使用道具 举报

 楼主| 发表于 2010-12-16 15:41:21 | 显示全部楼层
好的,马上测试

用tuxw的wenv,问题更加严重,lst菜单也执行出问题

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

使用道具 举报

 楼主| 发表于 2010-12-16 16:14:23 | 显示全部楼层
另外发现新版grldr,TFTP中的客户端的数量好像有问题(重启虚拟机没有释放),因为目前我同一虚拟机测试
Snap2.jpg
回复

使用道具 举报

发表于 2010-12-16 16:54:31 | 显示全部楼层
PXE的部份一直都是这样子的.没有变动过.
回复

使用道具 举报

 楼主| 发表于 2010-12-16 17:47:53 | 显示全部楼层
@tuxw:
下面运算出错
Snap1.jpg
回复

使用道具 举报

发表于 2010-12-16 19:51:20 | 显示全部楼层
前面的那些有可能是GRUB4DOS的BUG,我再查查看...
用insmod之后就不会有问题了.

还有用()/path来代替/path也可以暂时解决
回复

使用道具 举报

 楼主| 发表于 2010-12-16 23:08:30 | 显示全部楼层
我记得你以前说过,加载到内存的外部命令要绝对路径(没盘符的要加())加载,是否有此有关呢?
回复

使用道具 举报

发表于 2010-12-17 00:13:14 | 显示全部楼层
原帖由 zhaohj 于 2010-12-16 23:08 发表
我记得你以前说过,加载到内存的外部命令要绝对路径(没盘符的要加())加载,是否有此有关呢?


没关系,我已经找到原因了,只是还没有编译上传.

正在修改批处理执行的函数.

以后可以直接在外部命令中调用批处理的CALL/goto 标签.

之前的版本只能调用GOTO,调用CALL会失败.

这样可以配合WENV的FOR功能
例子:
!BAT
wenv for /l %%i in (1,1,5) do call call :test %%i
goto :eof
:test
echo %1

正在编译,大家明天可以测试一下.

注:在批处理中要使用%,除非明确它是一个参数,否则最好使用%%.虽然目前%a-%z之类的是不会被处理的,但判断也是需要时间的.

但是使用%%来代替%可以加快程序运行的速度.因为不需要程序进行判断.

[ 本帖最后由 chenall 于 2010-12-17 00:38 编辑 ]
回复

使用道具 举报

发表于 2010-12-22 00:51:52 | 显示全部楼层
请测试外部命令打包集的功能是否正常.
使用最新版GRUB4DOS用以下命令加载
insmod grub4dos.mod

注:.mod扩展名是必须是.不可以改变.

makemod用tc写的简易打包程序,只供测试使用,而且必需在当前目录下使用.

grub4dos.mod
包含以下几个外部命令
fat chkpci diskid ghostpwd wenv menuset unifont
使用以下命令生成的grub4dos.mod
makemod fat chkpci diskid ghostpwd wenv menuset unifont
再用gz压缩后改名得到的.



另外求一个非常简单的makemod的GUI程序.

这个.MOD文件格式非常的简单.如下的样子.
struct
{
     char filename[12];//原文件名最长11个字符.
     unsigned long size;//原文件大小4个字节;
     char data[size];//原文件内容;
} mod_file;

mod_file1
mod_file2
...
mod_filen

具体可以看一下grub4dos.mod文件内容(先用GZ解压一下).

[ 本帖最后由 chenall 于 2010-12-28 18:21 编辑 ]

grub4dos_makemod.zip

35.14 KB, 下载次数: 64, 下载积分: 无忧币 -2

回复

使用道具 举报

 楼主| 发表于 2010-12-22 08:33:31 | 显示全部楼层
makemod不支持tuxw的wenv打包

[ 本帖最后由 zhaohj 于 2010-12-22 10:45 编辑 ]
Snap1.jpg
回复

使用道具 举报

发表于 2010-12-22 13:29:10 | 显示全部楼层
原帖由 zhaohj 于 2010-12-22 08:33 发表
makemod不支持tuxw的wenv打包


嗯,这个文件太大了,目前MAKEMOD只支持最大40KB的文件.你可以先用GZ压缩一下就可以了.

或者手工制作.
方法
用WINHEX打开这个WENV
在文件最开始处添加16字节.
最前面的处写上WENV最后4个字节是WENV文件的长度.比如是50KB
就是51200=C800

最后4字节的内容就是00 C8 00 00
然后用COPY /B把这个新的文件附加到GRUB4DOS.MOD上就可以了.
回复

使用道具 举报

 楼主| 发表于 2010-12-22 14:54:59 | 显示全部楼层
copy grub4dos.mod /b + wenv /b测试不成功 (WENV已经加了16字节)

单独两个文件也不行
makemod chkpci fat
--------
insmod /grub/grub4dos.mod

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

使用道具 举报

 楼主| 发表于 2010-12-22 15:29:30 | 显示全部楼层
晕,需要12-21版本的Grub
成了。
还需要把delmod也分离出来,一次性卸载。

-------------------------
测试发现delmod *.* 能卸载所有

那就没问题了。

[ 本帖最后由 zhaohj 于 2010-12-22 15:32 编辑 ]
回复

使用道具 举报

发表于 2010-12-23 11:42:38 | 显示全部楼层
原帖由 zhaohj 于 2010-12-22 15:29 发表
晕,需要12-21版本的Grub
成了。
还需要把delmod也分离出来,一次性卸载。

-------------------------
测试发现delmod *.* 能卸载所有

那就没问题了。


delmod *
只有一个用法.
不管*后面是什么字符都是删除所有的.
回复

使用道具 举报

 楼主| 发表于 2010-12-24 10:54:31 | 显示全部楼层
为了ud,产生这么多(fd?,*),能否改进一下
Snap1.jpg
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-3-29 08:57

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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