无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站投放广告、加入VIP会员,请联系 微信:wuyouceo
查看: 11073|回复: 46
打印 上一主题 下一主题

GRUB4DOS发现一个BUG问题!!!(chenall老师又有一个新问题帮忙看看!)

[复制链接]
跳转到指定楼层
1#
发表于 2010-4-10 10:19:05 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
chenall老师我在前几天向你请教过这方面的问题,下面是我当时的问题,你当时说我用的外部命令版本太旧!因为后来工作上忙这个就没有时间详细的实验!今天详细实验一下发现不是外部命令版本太旧,而是GRUB4DOS在加载字体文件后就会出现下面的情况,英文版的GRUB4DOS用UNIFONT /U16.bin命令加载中文字体后同样会出现下面的问题!(GRUB4DOS和外部命令都用的是最新版本的!)但功能并不受影响,如果一次性的输入正确的路径不修改的话可以正常使用!只是输入自定义文件名和路径时不能用删除键,每按删除键一下只是在输入错了的文件名后又加入了一个乱码符号!

还有一个问题,这个不是BUG问题,WENV 设置变量是不是有字符个数的限制啊?输入自定义路径和文件名过长是不是不行啊?如果有这样的限制具体这个限制是多少个字符啊?

---------------------------------------------------------------------------------------------------
我是要写一个加载一个可启动ISO光盘或可启动IMG软盘没有找到后也加入一个可以自定义路径和文件名的程序菜单!
现在测试在输入自定义文件名和路径时不能用删除键,不小心输入错了只能执行完后再从新输入!你的不这样的!
-------------------------------------------------------------------------------------------------------
我上面说的版本太旧是指你用的外部命令。
---------------------------------------------------------------------------------------------------


谢谢chenall老师帮助解决这个问题!也期待内置菜单使用UNIFONT的问题!你的最新回复和对WENV的升级我看到了,谢谢你了!辛苦了!

同时我在应用中又遇到一个问题希望你能帮忙看看!
关于WENV设置变量在应用时有一个问题!
WENV run map --mem ${F6} (fd0)
WENV run map --mem ${WinPE} (0xff)
map --hook
chainloader (0xff)
boot
在这种应用中有一个必须满足的要求才能成功,就是F6文件必须和WinPE文件在同一个分区内才会成功!这个条件是必须得满足的,如果这两个文件分别在两个不同的分区里启动就肯定会失败!请问能不能改进WENV来解决一样的问题啊?

[ 本帖最后由 thttht 于 2010-4-17 17:47 编辑 ]
2#
发表于 2010-4-10 14:32:44 | 只看该作者
顺便也请Chenall大看下这个问题,有关Map iso的<br />
<br />
前几天帮一同学重装系统,机子是Tp sl400,装的是Xp sp3 msdn原版<br />
<br />
安装方法是用Grub4dos先加载Firadisk最新版再map --mem iso (iso放在硬盘上了)<br />
<br />
开始时一切正常,可进入Txt文本安装,也可看到硬盘,但是在复制文件时卡在72%处<br />
<br />
大概有十几分钟,然后就提示安装程序无法从源复制文件,是重试还是忽略<br />
<br />
选重试无用,继续提示,剩余28%的文件都是选的跳过,都没有复制成功<br />
<br />
怀疑是到了72%处Map的Iso失效了<br />
<br />
而且重启后再运行相同步骤到选择分区处只看到主分区和一个逻辑分区,还有两个逻辑分区不见了,显示未识别<br />
<br />
后来进Pe重新建立Mbr和分区表,再进行安装发现硬盘分区识别正常,但是到了72%还是卡死<br />
<br />
Ps:已经用这种方法成功安装过很多机子,只有一台出现这样的错误
回复

使用道具 举报

3#
发表于 2010-4-10 14:57:17 | 只看该作者

回复 #2 sratlf 的帖子

手机发帖不太好编辑,就再回复一下了

刚才忘说了,到72%卡住的文件名是Gdiplus.dll

有的时候用Ghost恢复系统也会在这个文件上卡下

不知道是不是和这个文件有关
回复

使用道具 举报

4#
发表于 2010-4-10 17:52:41 | 只看该作者
是不是使用方法有问题。我这里测试正常啊。
菜单文件有没有使用UTF格式。
回复

使用道具 举报

5#
 楼主| 发表于 2010-4-10 18:04:31 | 只看该作者
我这里其他功能都正常啊!输入正确的自定义的路径文件名后也可以启动!英文版的加载字体也正常,显示中文没有问题!菜单文件使用UTF格式了,中文版的和英文版的在我这里都是不加载字体删除键就好用,加载字体后就不行了,这两种情况我只是改了菜单加载中文字体这部分其他的地方没有动啊,完全一样的。GRUB4DOS文件也用的是同一个!!!


find --set-root /boot/grub/fonts.gz || find --set-root /grub/fonts.gz
command --set-path=()/boot/grub/ || command --set-path=()/grub/

pxe detect
configfile
default 4
timeout 10


WENV init
debug off
#初始化并设置默认参数。
write 0x60000 0
write 0x60100 0
WENV set ISO=/boot/PE.ISO


find --set-root /BOOT/grub/fonts.gz || find --set-root /grub/fonts.gz || find --set-root /BOOT/fonts.gz || find --set-root /fonts.gz
fontfile /BOOT/grub/fonts.gz || fontfile /grub/fonts.gz || fontfile /BOOT/fonts.gz || fontfile /fonts.gz


title 【 04 】 查找并运行《 PE.ISO 光盘 》 \n\n\查找/boot/PE.ISO文件,如果没有找到提示用户输入一个文件路径,并返回重新查找。
WENV get ISO || fallback --go 14
WENV run ECHO find ${ISO} on your hard disk drive..
WENV run find --set-root ${ISO} || WENV set ISO=$input,Input new ISO file PATH: && fallback --go 3
WENV run map ${ISO} (0xff) || WENV run map --mem ${ISO} (0xff)
map --hook
chainloader (0xff)
boot

[ 本帖最后由 thttht 于 2010-4-10 18:09 编辑 ]
回复

使用道具 举报

6#
发表于 2010-4-11 10:14:25 | 只看该作者
变量名不能超过7个字符.
变量值不能超过511个字符
最多保存64个变量.

英文版grldr配合外置命令UNIFONT或FONTFILE是最理想的选择。
回复

使用道具 举报

7#
发表于 2010-4-11 16:38:14 | 只看该作者
@thttht
只有在图形模式下才会这样,其实只是显示的问题,实际上已经改了。只不过图形模式没有处理退格字符所以才会这样。

@sratlf
也许是你的内存有问题,也许是硬盘有问题。
回复

使用道具 举报

8#
发表于 2010-4-11 17:31:13 | 只看该作者

回复 #7 chenall 的帖子

不是我的机子  要是我的机子分析就方便了   

内存应该没有问题   开始也怀疑内存有问题  用MEMTEST检测了下没发现错误

就是硬盘速度很慢  而且感觉分区表好像也有问题  因为第一次安装选择硬盘时看不到最后两个分区  改了分区表后才能看见  就是还是有问题
回复

使用道具 举报

9#
 楼主| 发表于 2010-4-12 09:16:43 | 只看该作者
原帖由 chenall 于 2010-4-11 16:38 发表
@thttht
只有在图形模式下才会这样,其实只是显示的问题,实际上已经改了。只不过图形模式没有处理退格字符所以才会这样。

@sratlf
也许是你的内存有问题,也许是硬盘有问题。




我使用时发现不管是英文版的还是中文版的只要是不加载字体文件就没有这个显示问题,中文版的用fontfile /BOOT/grub/fonts.gz 加载字体,英文版的用UNIFONT /U16.BIN加载字体后才出现这个问题!不加载中文字体时就没问题!可以用退格键显示很正常!中文版和英文版加载字体后的确是向chenall老师你说的那样也能用退格键只是在显示上有问题,不知道这个可以在以后的版本中修复吗?

谢谢zhaohj ,在你们的热心帮助和讲解下我们才能有进步!学到很多有用的东西!!!
现在我一般还在用中文版的,chenall也和我说过和你一样的观点用英文版grldr配合外置命令UNIFONT,但我现在多数时候还在用内置菜单和内置外部菜单配合使用,希望grldr早点支持内置菜单UNIFONT的多语言显示的问题就好了!

变量名不能超过7个字符.
变量值不能超过511个字符
最多保存64个变量.

英文版grldr配合外置命令UNIFONT或FONTFILE是最理想的选择。

---------------------------------------------------------------------------
谢谢你们这些程序员无私的奉献我们才能用到这么好的程序!!!!

[ 本帖最后由 thttht 于 2010-4-12 10:58 编辑 ]
回复

使用道具 举报

10#
发表于 2010-4-16 14:24:18 | 只看该作者
高手分析后,又学到东西了!
回复

使用道具 举报

11#
发表于 2010-4-16 15:36:27 | 只看该作者
加载中文后,选中某一菜单后进入下一个菜单,这个“下一菜单”如果不用中文的,可以退出图形界面:
terminal console
这样避免了退格键乱码问题。

新版SRS_F6就是这样处理的(0415中文版)。
回复

使用道具 举报

12#
 楼主| 发表于 2010-4-16 17:19:20 | 只看该作者
谢谢!学习了!这的确是个好办法!
回复

使用道具 举报

13#
发表于 2010-4-17 16:56:45 | 只看该作者
我明天会再发布一个版本(WENV和GRUB4DOS要一起更新)

解决这个问题,新wenv的input功能将可以使用自动完成等功能(和GRUB4DOS命令行一样),这样可以更方便操作。因为直接调GRUB4DOS的get_cmdline功能.

晚上如果有空再顺便看看能不能解决内置菜单使用UNIFONT的问题。

[ 本帖最后由 chenall 于 2010-4-17 16:57 编辑 ]
回复

使用道具 举报

14#
 楼主| 发表于 2010-4-17 17:42:30 | 只看该作者
谢谢chenall老师帮助解决这个问题!也期待内置菜单使用UNIFONT的问题!
同时还有一个问题希望你能帮忙看看!
关于WENV设置变量在应用时有一个问题!
WENV run map --mem ${F6} (fd0)
WENV run map --mem ${WinPE} (0xff)
map --hook
chainloader (0xff)
boot
在这种应用中有一个必须满足的要求才能成功,就是F6文件必须和WinPE文件在同一个分区内才会成功!这个条件是必须得满足的,如果这两个文件分别在两个不同的分区里启动就肯定会失败!请问能不能改进WENV来解决一样的问题啊?
回复

使用道具 举报

15#
发表于 2010-4-17 17:54:18 | 只看该作者
虚拟机测试,UNIFONT第一次正常,第二次启动有时会花屏。
关闭虚拟机再次打开运行又正常,感觉不太稳定。
回复

使用道具 举报

16#
发表于 2010-4-17 18:00:31 | 只看该作者
原帖由 thttht 于 2010-4-17 17:42 发表
谢谢chenall老师帮助解决这个问题!也期待内置菜单使用UNIFONT的问题!
同时还有一个问题希望你能帮忙看看!
关于WENV设置变量在应用时有一个问题!
WENV run map --mem ${F6} (fd0)
WENV run map --mem ${ ...


不太明白你指的是什么?

如果你的F6和WINPE都是绝对路径,应该都是要成功的吧.
回复

使用道具 举报

17#
发表于 2010-4-17 18:02:48 | 只看该作者
原帖由 thttht 于 2010-4-17 17:42 发表
谢谢chenall老师帮助解决这个问题!也期待内置菜单使用UNIFONT的问题!
同时还有一个问题希望你能帮忙看看!
关于WENV设置变量在应用时有一个问题!
WENV run map --mem ${F6} (fd0)
WENV run map --mem ${ ...


改成这样行吗?
WENV run find --set-root ${F6}
WENV run map --mem ()${F6} (fd0)
WENV run find --set-root ${WinPE}
WENV run map --mem ()${WinPE} (0xff)

注意没/,因为${F6}已经带路径。
回复

使用道具 举报

18#
发表于 2010-4-17 18:03:28 | 只看该作者
原帖由 zhaohj 于 2010-4-17 17:54 发表
虚拟机测试,UNIFONT第一次正常,第二次启动有时会花屏。
关闭虚拟机再次打开运行又正常,感觉不太稳定。


我还没有发现这样的情况.....
回复

使用道具 举报

19#
发表于 2010-4-17 18:19:01 | 只看该作者
这个我虚拟机可以重现,明天截个图看看。
花屏后,菜单的英文字符都不对齐了。
回复

使用道具 举报

20#
发表于 2010-4-19 08:23:30 | 只看该作者
"find 命令添加一个 --ignore-oem 参数"是什么意思?
回复

使用道具 举报

21#
 楼主| 发表于 2010-4-19 08:50:34 | 只看该作者
原帖由 chenall 于 2010-4-17 18:00 发表


不太明白你指的是什么?

如果你的F6和WINPE都是绝对路径,应该都是要成功的吧.


find --set-root /boot/grub/fonts.gz || find --set-root /grub/fonts.gz
command --set-path=()/boot/grub/ || command --set-path=()/grub/

pxe detect
configfile
default 4
timeout 10


WENV init
debug off
#初始化并设置默认参数。
write 0x60000 0
write 0x60100 0
WENV set ISO=/boot/PE.ISO

find --set-root /BOOT/grub/fonts.gz || find --set-root /grub/fonts.gz || find --set-root /BOOT/fonts.gz || find --set-root /fonts.gz
fontfile /BOOT/grub/fonts.gz || fontfile /grub/fonts.gz || fontfile /BOOT/fonts.gz || fontfile /fonts.gz

title 【 04 】 查找并运行《 PE.ISO 光盘 》 \n\n\查找/boot/PE.ISO文件,如果没有找到提示用户输入一个文件路径,并返回重新查找。
WENV get ISO || fallback --go 14
WENV run ECHO find ${ISO} on your hard disk drive..
WENV run find --set-root ${ISO} || WENV set ISO=$input,Input new ISO file PATH: && fallback --go 3
WENV run map ${ISO} (0xff) || WENV run map --mem ${ISO} (0xff)
map --hook
chainloader (0xff)
boot

在这样的时候必须要PE.ISO文件在和grub程序及外部命令文件在同一个分区内才会成功!这个条件是必须得满足的,如果这两个文件分别在两个不同的分区里,启动就肯定会失败!不知道我这回的意识说明白了吗?

不知道是我菜单那里有问题才出现这样的错误!还是现在就有这样的限制!请chenall老师帮我看看我这个问题出在那里?

[ 本帖最后由 thttht 于 2010-4-19 11:39 编辑 ]
回复

使用道具 举报

22#
发表于 2010-4-19 15:05:52 | 只看该作者
对不起,我还是没有完全明白。
具体是什么失败,WENV执行失败?map命令失败?还是????

不过对于command --set-path建议使用一个绝对路径(尽量保证这个路径一直可以访问)
回复

使用道具 举报

23#
发表于 2010-4-19 15:10:36 | 只看该作者
一:外部命令不能调用外部命令;
二:太多的find不是一个好习惯,反而会造成更多的失败;G4D不是高级语言,很多受硬件制约。
三:上面WENV run find --set-root ${ISO},如不成功,执行WENV set ISO=$input,Input new ISO file PATH: && fallback --go 3,肯定无条件转到3
      如果WENV run find --set-root ${ISO}成立,下面的语句肯定会执行的。

四:WENV set ISO=/boot/PE.ISO写法有问题,要么全大写,要么全小写。find中也是。大小写混合肯定失败。
回复

使用道具 举报

24#
发表于 2010-4-19 15:17:04 | 只看该作者
报告C大,新版WENV解决了input图形模式下的输入问题。感谢!

另外,UNIFONT及FONTFILE有什么办法卸载?能不能做个参数 --u
回复

使用道具 举报

25#
发表于 2010-4-19 16:21:07 | 只看该作者
http://chenall.net/2010/04/grub4dos_unifont/

呵呵,我忘了给unifont加帮助提示信息了,本身有卸载功能的
--unload
回复

使用道具 举报

26#
发表于 2010-4-19 17:49:52 | 只看该作者
又发生字符错位了,不过不是每次

Snap1.jpg (130.88 KB, 下载次数: 84)

Snap1.jpg
回复

使用道具 举报

27#
发表于 2010-4-19 18:08:07 | 只看该作者
原帖由 zhaohj 于 2010-4-19 17:49 发表
又发生字符错位了,不过不是每次


看来英文版GRUB加载中文字库的效果,不如中文版GRUB加载中文字库的显示效果稳定。
回复

使用道具 举报

28#
发表于 2010-4-19 22:31:30 | 只看该作者
是用UNIFONT还是FONTFILE?
回复

使用道具 举报

29#
发表于 2010-4-19 22:37:35 | 只看该作者
错误在所难免,发现错误才能改正错误。

上面都写了半个汉字(左半边),还有半个汉字(右半边)哪里去了?

用UNIFONT
回复

使用道具 举报

30#
发表于 2010-4-19 23:35:22 | 只看该作者
能不能把你的菜单文件传给我一下,我看看有没有办法重现。

另外因为程序是在4M-6M中运行的,如果有其它程序修改了这其中的内存数据就有可能造成这种情况。
你试试在出现这种情况后进入命令行执行以下命令看看它的值是多少。
read 0x400018

程序没有对内存数据进行保护(因为我不懂,呵呵)。

[ 本帖最后由 chenall 于 2010-4-19 23:59 编辑 ]
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2025-8-27 04:28

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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