无忧启动论坛

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

GRUB4DOS更新建议、bug反馈专帖

    [复制链接]
961#
发表于 2011-5-26 23:30:32 | 只看该作者
0524的版本有点小问题,关于显示unifont字体的。

1、使用mkisofs.exe生成ISO,g4d版本为2011-5-24,unifont为2011-5-10,菜单切换正常,均正常显示中文菜单。见下图:



2、使用UltraISO对 上面 生成的ISO做任意修改后保存,测试启动即乱码:

可进子菜单:

除了不显示中文外,其它都正常。

3、将grub4dos版本换为2011-5-23后,其它条件均不变,重复1、2菜单切换均正常,修改ISO后也正常显示中文菜单:
回复

使用道具 举报

962#
发表于 2011-5-26 23:45:44 | 只看该作者

回复 #965 blithewind 的帖子

这个不能确定是GRUB4DOS新版的问题吧,而且官方是不推荐用UltraISO修改ISO。
回复

使用道具 举报

963#
发表于 2011-5-27 00:44:37 | 只看该作者
原帖由 chenall 于 2011-5-26 23:45 发表
这个不能确定是GRUB4DOS新版的问题吧,而且官方是不推荐用UltraISO修改ISO。

由于mkisofs.exe参数限制,当ISO中文件名很长且命名规则不规范时,需要用UltraISO重新设置属性。 比如加入非RAM PE、加入全新安装XP或win7等。换用之前的老版,都是可以保存修改的。
unifont命令也没有问题。

整个过程的差异仅仅在于换了个grldr,感觉还是有点问题。

[ 本帖最后由 blithewind 于 2011-5-27 00:53 编辑 ]
回复

使用道具 举报

964#
发表于 2011-5-27 00:48:33 | 只看该作者

回复 #967 blithewind 的帖子

你可以再试几次,如果说因为修改了ISO的内容而出现这种情况,基本上是没有办法确定问题原因。

另外你可以在命令行下加载字体看看提示,很有可能是字体文件出错了。

当然了你也可以提供一个最小化版的可以重现该错误的ISO,以供测试。这样比较容易定位问题。
回复

使用道具 举报

965#
发表于 2011-5-27 01:21:53 | 只看该作者
原帖由 chenall 于 2011-5-27 00:48 发表
你可以再试几次,如果说因为修改了ISO的内容而出现这种情况,基本上是没有办法确定问题原因。

另外你可以在命令行下加载字体看看提示,很有可能是字体文件出错了。

当然了你也可以提供一个最小化版的可以 ...



好的。传了一个最小化ISO,请C大测试一下。

http://u.115.com/file/aq20yvl4
回复

使用道具 举报

966#
 楼主| 发表于 2011-5-27 08:11:23 | 只看该作者
原帖由 tuxw 于 2011-5-26 22:10 发表


寻找活动分区的方法不可靠,geometry 的输出信息太长了,一个扇区很悬(增加暂存扇区数,也会受管道缓冲区长度限制),分区稍微复杂点活动分区又靠后时就会失败
活动分区最多只有4个可能,逐个判断反而更简洁 ...


嗯,当逻辑分区很多时可能会溢出;另外活动分区在扩展分区的后面也有可能溢出。
很好,就用你的方法!
回复

使用道具 举报

967#
发表于 2011-5-27 09:39:48 | 只看该作者
grldr 引导buldr

当 root 为ud时进入buldr后将会丢失(boot) 即ud,但root为(hdx) 或者(hdx,y) 时候正常。
回复

使用道具 举报

968#
发表于 2011-5-27 09:59:03 | 只看该作者
原帖由 blithewind 于 2011-5-27 00:44 发表

由于mkisofs.exe参数限制,当ISO中文件名很长且命名规则不规范时,需要用UltraISO重新设置属性。 比如加入非RAM PE、加入全新安装XP或win7等。换用之前的老版,都是可以保存修改的。
unifont命令也没有问题。 ...



mkisofs有自己的参数来处理文件名不规范的情况  

例如 -l 参数来支持iso9660长文件名  --allow-lowercase 参数来允许文件名使用小写字母(违反iso9660规定)  


其他的可以看下置顶贴的帮助文档  3.3制作iso镜像部分  并不需要使用ultraiso来修改iso属性
回复

使用道具 举报

969#
发表于 2011-5-27 11:01:07 | 只看该作者

回复 #971 jianliulin 的帖子

buldr如放在ud,我是这样处理的:
calc *0x82b9&0xff || root (fd0) ! root (hd0)
回复

使用道具 举报

970#
发表于 2011-5-27 11:09:42 | 只看该作者
原帖由 sratlf 于 2011-5-27 09:59 发表

mkisofs有自己的参数来处理文件名不规范的情况  

例如 -l 参数来支持iso9660长文件名  --allow-lowercase 参数来允许文件名使用小写字母(违反iso9660规定)  

其他的可以看下置顶贴的帮助文档   ...

这个知道的。
mkisofs.exe在joliet格式下,最多支持64位字符的长文件名。而解开的非RAM PE、win7全新安装文件中都有文件名超过64位字符的。这是mkisofs.exe处理不了的。
而UDF格式下,cdlinux或者XP全新安装不能正常运行。我的合盘,如果不加win7安装及非RAM PE,则mkisofs是胜任的,存在以上两种情况之一,则需要对ISO修改。
回复

使用道具 举报

971#
发表于 2011-5-27 11:12:44 | 只看该作者
原帖由 zxw 于 2011-5-27 11:01 发表
buldr如放在ud,我是这样处理的:
calc *0x82b9&0xff || root (fd0) ! root (hd0)


这样当然可以,很早以前我也问过bean ,他说是grldr传给buldr的磁盘号bois不认 , 我是想grldr能否自动将ud转为(hdx)或者(fdx)
回复

使用道具 举报

972#
发表于 2011-5-27 15:43:55 | 只看该作者

回复 #975 jianliulin 的帖子

嗯,这个我会看一下。
回复

使用道具 举报

973#
发表于 2011-5-27 15:56:22 | 只看该作者
@blithewind
我试了一下,我不知道你是如何引导GRLDR的,但是问题不在于GRLDR。而在于引导的程序。可能它没有完整的加载到GRLDR。

我试了进入命令行之后再次chainloader /wuyou它就正常了。

也许是ultraiso在保存的时候触发了什么东西,记得之前论坛上有人提供了一个ultraiso的什么补丁,你可以试一下也许就可以解决了。
回复

使用道具 举报

974#
发表于 2011-5-27 16:09:22 | 只看该作者
原帖由 blithewind 于 2011-5-27 11:09 发表

这个知道的。
mkisofs.exe在joliet格式下,最多支持64位字符的长文件名。而解开的非RAM PE、win7全新安装文件中都有文件名超过64位字符的。这是mkisofs.exe处理不了的。
而UDF格式下,cdlinux或者XP全新安装 ...


使用-joliet-long参数试试?  支持最长103个unicode字符的joliet文件名
回复

使用道具 举报

975#
发表于 2011-5-27 18:05:06 | 只看该作者
原帖由 jianliulin 于 2011-5-27 09:39 发表
grldr 引导buldr

当 root 为ud时进入buldr后将会丢失(boot) 即ud,但root为(hdx) 或者(hdx,y) 时候正常。


试试这个看看是否正常。

对于buldr应该kernel/chainloader都可以启动,你可以两种都试一下。

grldr_test.rar

128.82 KB, 下载次数: 15, 下载积分: 无忧币 -2

回复

使用道具 举报

976#
发表于 2011-5-27 19:42:45 | 只看该作者
原帖由 sratlf 于 2011-5-27 16:09 发表 使用-joliet-long参数试试?  支持最长103个unicode字符的joliet文件名
我合盘时用的批处理有这个参数的.
回复

使用道具 举报

977#
发表于 2011-5-27 19:54:41 | 只看该作者
原帖由 chenall 于 2011-5-27 15:56 发表 @blithewind 我试了一下,我不知道你是如何引导GRLDR的,但是问题不在于GRLDR。而在于引导的程序。可能它没有完整的加载到GRLDR。我试了进入命令行之后再次chainloader /wuyou它就正常了。也许是ultr ...
谢C大测试.应该是UI在保存时破坏了引导文件.我重新加载引导文件后ISO正常了.但奇怪的是,前面版本的grldr做引导时,UI保存时不会受到破坏
回复

使用道具 举报

978#
发表于 2011-5-28 00:15:17 | 只看该作者
原帖由 chenall 于 2011-5-27 18:05 发表


试试这个看看是否正常。

对于buldr应该kernel/chainloader都可以启动,你可以两种都试一下。



测试正常, 用kernel命令直接进入命令行,用chainloader命令则可以进入菜单
回复

使用道具 举报

979#
发表于 2011-5-28 10:38:17 | 只看该作者
@chenall
内置变量用什么方式延缓替换?(试过了2个%不成功)

set a=
set a=1 && echo %a%
这样不能显示

我现在只能用wenv来避免
set a=1 && wenv echo ${a}
回复

使用道具 举报

980#
 楼主| 发表于 2011-5-28 12:43:02 | 只看该作者
这个问题可能影响到结果

[ 本帖最后由 zhaohj 于 2011-5-28 12:49 编辑 ]

Snap1.jpg (14.7 KB, 下载次数: 130)

Snap1.jpg
回复

使用道具 举报

981#
发表于 2011-5-28 12:50:24 | 只看该作者
这个不是返回值的问题,而是整命令行被加载时变量就直接替换了
我认为应该先解析命令行,替换到 && 之前,后面的等到命令被执行时再替换,或者支持一种延缓替换的语法

[ 本帖最后由 tuxw 于 2011-5-28 12:51 编辑 ]
回复

使用道具 举报

982#
 楼主| 发表于 2011-5-28 13:08:22 | 只看该作者
是啊,&&是一条命令,所有的变量即时替换了:
set a=2
set a=1 && set b=%a% echo %b%变量替换后变成=> set a=1 && set b=2 echo %b%
-----------------
这个问题以前也遇到过,关于calc的问题,在新版的grub4dos-help有提到连续命令&&注意点,不然会导致计算错误。
目前看来C大并不打算更改现状,只有使用时小心为好。

[ 本帖最后由 zhaohj 于 2011-5-28 13:09 编辑 ]
回复

使用道具 举报

983#
发表于 2011-5-28 15:30:58 | 只看该作者
这个是源用cmd的设计,为了避免自己在写批处理时出现混乱,所以保持和CMD的语法一致。

而且执行速度也比较快。
回复

使用道具 举报

984#
发表于 2011-5-29 00:21:00 | 只看该作者

回复 #983 tuxw 的帖子

目前没有这样的设计,也许会考虑增强一下call命令,这样就和CMD类似了。
若非必要建议还是分开写。
回复

使用道具 举报

985#
发表于 2011-5-29 12:29:50 | 只看该作者
原帖由 blithewind 于 2011-5-27 19:54 发表 谢C大测试.应该是UI在保存时破坏了引导文件.我重新加载引导文件后ISO正常了.但奇怪的是,前面版本的grldr做引导时,UI保存时不会受到破坏
0528版恢复正常了。
回复

使用道具 举报

986#
发表于 2011-5-29 16:00:46 | 只看该作者

回复 #989 blithewind 的帖子

比较奇怪,我并没有针对这个作任何的改动呀。

你有空的话可以多试试几个版本。

注:我编译的版本,ROY编译的版本,不点编译的版本。

不点的上传在这里
http://nufans.net/grub4dos/tinybit/

googlecode上看下上传者就知道是谁编译的。

我怀疑和编译的环境可能有关系。
回复

使用道具 举报

987#
 楼主| 发表于 2011-5-29 18:32:45 | 只看该作者
C大,SRSF6无菜单版本已上传,后续的工作你再做吧。
http://bbs.wuyou.net/forum.php?m ... p;page=1#pid2075547
回复

使用道具 举报

988#
发表于 2011-5-29 23:14:30 | 只看该作者
chenall  目前grldr 执行完SRSF6 获取驱动后,在命令行里执行find 会有多个无效的软盘分区

回复

使用道具 举报

989#
发表于 2011-5-29 23:57:48 | 只看该作者
为了支持(fdx,y)的格式的后遗症。

不过不影响使用,其实像上面的也不一定全是无效的,你可以试一下,有可能就有其中一个可以访问。^_^。

对这些比较熟的朋友可以改造一下next_partition函数来解决。

或者制作软盘镜像时,把第一扇区的分区表位置的值清零就不会了。
回复

使用道具 举报

990#
发表于 2011-5-30 05:49:49 | 只看该作者
我认为楼上 chenall 的说法,似乎不完全准确。

jianliulin 贴出的图片,说明主分区是存在的。而这一点,正是 grub4dos 对待主分区的一个特殊处理。在 grub4dos 看来,所有的主分区,都是“存在”的。

当然了,如果事先判断分区表是否合法,只有对于合法的分区表,再来执行分区枚举,这样就不会有问题了。

分区表合法性,可以用 probe_mbr 函数来检查。不过,这个函数的检查很严格,一个稍稍有错的分区表,都通不过检查。
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-5-24 23:53

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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