无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站广告联系 微信:wuyouceo QQ:184822951
查看: 15372|回复: 30

[求助] 关于GRUB4DOS中文菜单中文乱码问题

[复制链接]
发表于 2013-3-21 11:01:01 | 显示全部楼层 |阅读模式
问题描述:本人用的grub4dos-0.4.6a 下面的英文版本 前几天看见2011kuka少尉他也用英文版本做grub4dos菜单也能正常显示后,我想应该没有问题。昨天我分别用了两种形式来搞中文菜单就像夜大说的一样搞了,具体帖子是哪个地址我忘记了。第一种就是用英文版GRUB+ANSI + font命令+unifont.hex。第二种就是用中文版grub+grldr+UTF-8+fontfile+FONT。表示两种都出现乱码。并且乱码情况还不一样。第一种是小个小个的类似圈圈状的乱码,第二种是长条的线,比字的长度长一些,稀稀拉拉的乱码。非常奇怪。希望得到夜大和chenall大神们的帮助。两种情况都只是中文部分显示乱码,英文部分都正常。翻了很多帖子,大小写都已经认真核对过,不是大小写的问题。
具体代码如下:
#启动VBE模式
graphicsmode -1 100:1000 100:1000 24:32
#设置背景图为/others/grub.bmp
splashimage /others/grub.bmp
#清除所有字库然然后设置字库为 /others/unifont.hex.gz
font && font /others/unifont.hex.gz
下面是时时图像

1.jpg 2.jpg

[ 本帖最后由 2013lalasuo 于 2013-3-21 12:27 编辑 ]
发表于 2013-3-21 18:06:26 | 显示全部楼层

回复 #10 2013lalasuo 的帖子

1.16位的颜色代码.
echo -h
可以看到对应颜色表.具体的Google之.

2.又是照抄,滥用find命令的典型,也不知是从哪里抄来的,
这个问题在论坛上曾经多次提醒过,没有什么效果的样子,所以为了保证正常使用,后面的版本我有针对这个问题进行了改进.加了find命令一般不影响,但没必要最好不要加.
只要是虚拟的软盘镜像都用(fd0).除非是RAMOS或其它特殊的情况才需要(hdx)
最基本的语句只要如下.
title  DISKGEN 硬盘管理
map --mem /imgima/DGDOS.IMG (fd0)
map --hook
rootnoverify (fd0)
chainloader +1 或 chainloader (fd0)+1 因为上面已经root (fd0)了,所以可以不用再写(fd0).

3.同上滥用find命令.
所有的PE ISO都可以这样写,(0xff)可以不用管,只要知道用这个虚拟出来的是光盘格式的就行了.
一般如果是
chainloader (xxx)+1 的时候都要加root (xxx).
但是有时候因为这个(xxx)磁盘格式是GRUB4DOS无法识别的,所以才用rootnoverify (xxx)
顾名思义就是不进行检测.

4.进入了其它系统之后像DOS/PE除非重启,否则是没有办法返回grub4dos的.
回复

使用道具 举报

 楼主| 发表于 2013-3-21 11:19:44 | 显示全部楼层
夜大 chenall大  你们来帮忙看看啊  非常急。
回复

使用道具 举报

发表于 2013-3-21 11:21:52 | 显示全部楼层
菜单文件编码UTF8
正确载入字库,604k那个,正确制定字库地址
建议使用G4D的Feature版本,不要追求最新

应该没问题了
回复

使用道具 举报

 楼主| 发表于 2013-3-21 11:40:28 | 显示全部楼层

回复 #3 2011kuka 的帖子

我用的是908K的unifont.hex.gz在官方下载的啊。路径大小写都没有错。仔细检查过了,并且也都是UTF8 ,但是最后还是乱码。
补充一下:我是用解压出来的unifont.hex来搞的。
回复

使用道具 举报

 楼主| 发表于 2013-3-21 11:56:24 | 显示全部楼层
grub4dos除了menu.lst是自己搞的以外我只用了grub.exe一项 不知道grldr是否是必须项目。但是昨天晚上我搞了一晚上加不加grldr貌似都没有影响。
回复

使用道具 举报

发表于 2013-3-21 14:24:25 | 显示全部楼层
看截图很明显的是字体没有加载上,可能是你的路径不对.
测试方法.进入菜单之后按键盘的'c'键进入命令行.输入以下命令看看显示什么.

font /others/unifont.hex.gz

另外,报BUG或问题时的截图要带有版本信息,你把版本信息都隐藏起来了,也不方便查看问题.

[ 本帖最后由 chenall 于 2013-3-21 14:26 编辑 ]
回复

使用道具 举报

 楼主| 发表于 2013-3-21 16:55:22 | 显示全部楼层

回复 #6 chenall 的帖子

chenall大  问题我从昨天晚上熬夜到凌晨5点 今天8点就起来继续找  一只找到下午3点才找到。是因为语句的问题。我把font && font /others/unifont.hex.gz改成 font /others/unifont.hex.gz就可以了。不过我不知道为什么2011kuka中尉用这个语句就能用呢?我的代码可是模仿着他的那个帖子写的啊既然他的能成功,为什么我的就不能成功呢?这个会是GRUB4DOS版本的问题吗?还有就是非常奇怪。我按照2011kuka中尉的那个内外代码来搞我的窗口显示出来的也不是像他那种能移动到中间的位置。我的就是他的原版代码,只是改了代码。还请chenall大能够指点,想对Grub4DOS有更深的了解。

2011kupa的原版代码如下:

#关闭调试
debug off

#pxe detect NotExist

#隐藏顶部grub4d版本信息
call Fn.0 0x40000 "!BAT\necho -P:0000 $[0000]\t\t\t\t\t\t\t\t\t\t\t\t\0" && initscript (md)0x200+1

#启动VBE模式
graphicsmode -1 100:1000 100:1000 24:32

#设置背景图为/BOOT/GRUB/BACKBLUE.LZMA
splashimage /BOOT/GRUB/BACKBLUE.LZMA

#清除所有字库然然后设置字库为 /BOOT/GRUB/MYFONT.HEX
font && font /BOOT/GRUB/MYFONT.HEX


#指定菜单条颜色、高亮颜色、帮助信息颜色、顶部信息颜色、边框色等
color normal=0x0F highlight=0x0E helptext=0x0A heading=0x02 standard=0x02 border=0x77

#定义字距与行距:字间距1行间距8
terminal --font-spacing=1:8

#外部命令menuset 20120105 介绍:http://bbs.wuyou.net/forum.php?mod=viewthread&tid=204607
#设置menu为 横向纵向居中,高度15,宽度56,线宽1
menuset m h=15 w=56 n=1

#外部命令:热键 hotkey 20121106 介绍:http://code.google.com/p/grubutils/wiki/Hotkey
hotkey

## 菜单自动编号 (取消自动编号:write 0x8274 0)
write 0x8274 0x2001

[ 本帖最后由 2013lalasuo 于 2013-3-21 16:59 编辑 ]
回复

使用道具 举报

发表于 2013-3-21 17:22:38 | 显示全部楼层
新旧版本的关系吧.

可能中间有一些版本的font命令返回假,有一些返回真.

上面已经说了不要隐藏版本信息,很多时候从版本信息上就可以看出问题的.

一般情况下没有版本信息的报告,我都是不会回复的.

[ 本帖最后由 chenall 于 2013-3-21 17:23 编辑 ]
回复

使用道具 举报

发表于 2013-3-21 17:44:11 | 显示全部楼层
建议使用Feature版本G4D,我之前用过0.4.6a 2013-03-03版,中文也有问题
回复

使用道具 举报

 楼主| 发表于 2013-3-21 17:48:23 | 显示全部楼层

回复 #8 chenall 的帖子

chenall大 谢谢提醒 当然,我只是一只出顾茅庐的小鸟,上面的代码也只是用2011kuka中尉的学习一下,很多代码我还不是很理解,表示还在学习中。有几个代码我不太明白,还希望大大能帮助我成长。
1、
color normal=0x0F  里面的0x0f 我不懂这个所谓颜色的语言,我只懂#ffffff #008000这样的。希望chenall能举一个通俗易懂的例子让我好好理解。
2、
# DISKGEN 硬盘管理
title  DISKGEN 硬盘管理 \n
find --set-root /imgima/DGDOS.IMG
map --mem /imgima/DGDOS.IMG (fd0)
map --hook
chainloader (fd0)+1
rootnoverify (fd0)
是不是所有的img、ima都可以用这个语句来加载。当然如果是本地硬盘只要把Fd0换成hd0就好了?我这个是在U盘上学者搞。所以我用fd0。当然了,在U盘上或者本地硬盘上还有没有更简单的方法来加载img、ima.
3、
# 老毛桃撒手不管BootCD_070911
title  BootCD_070911 PE\n\n
find --set-root /minpe/BootCD_070911.ISO
map /minpe/BootCD_070911.ISO (0xff)
map --hook
chainloader (0xff)
是不是所有的Pe iso都可以用这样的语句来写。0xff代表了什么。这种语句加不加rootnoverify 有什么关系。如果不加会怎么样,如果加了会怎么样。就像问题2中的那种情况如果不加rootnoverify (fd0)会怎么样。
最后还希望CHENALL大附上grub4dos返回主菜单的语句。因为我在主界面上选择了DOS工具箱,如果没有这个语句,我进去了就出不来只能ctrl+alt+del了。多谢。
对chenall大、2011kuka和所有给我启发的人表示感谢。
回复

使用道具 举报

 楼主| 发表于 2013-3-21 17:50:28 | 显示全部楼层

回复 #9 2011kuka 的帖子

中尉,你的那个代码我看了,被我解决了,chenall大也解释了。这个可能是版本问题。你的那个语句font && font /BOOT/GRUB/MYFONT.HEX。要是在我这个版本中把前面的font&&去掉就可以用了。感谢你。
哦,对了 ,忘记请教了。我用你原版的代码来搞,好像菜单无法移动到中间来,我不知道是什么问题,因为我还没有深刻理解你写的外置这些语句,理解很模糊。另外,还想请教一下,这个设置的背景图是多大像素的。我前些天搞的那张不能满足了。还麻烦你说一下大小。我好去Ps一个。多谢。

[ 本帖最后由 2013lalasuo 于 2013-3-21 17:54 编辑 ]
回复

使用道具 举报

发表于 2013-3-21 20:23:15 | 显示全部楼层
to 2013lalasuo :

1)进入DOS工具菜单后返回主菜单,内置的命令是
configfile (md)4+8
我一般直接configfile (ud)/BOOT/GRUB/MENU.LST

2)menuset是外部命令,我用的是zxw的那个修改版,你需要把这个文件放到/boot/grub/目录下,如果放在其他目录,执行时需要指定路径,参见:http://bbs.wuyou.net/forum.php?mod=viewthread&tid=204607

3)我的背景图大小是800×600

附一个载入img的菜单

  1. #2 Maxdos
  2. title  MaxDOS v9.3         \nMaxdos工具箱\n\n
  3. map --mem /BOOT/IMGS/MAXDOS.IMG (fd0) || find --set-root /BOOT/IMGS/MAXDOS.IMG && map --mem /BOOT/IMGS/MAXDOS.IMG (fd0)
  4. map --hook
  5. chainloader (fd0)+1
  6. rootnoverify (fd0)
复制代码

[ 本帖最后由 2011kuka 于 2013-3-21 21:10 编辑 ]
回复

使用道具 举报

 楼主| 发表于 2013-3-21 20:39:01 | 显示全部楼层

回复 #12 chenall 的帖子

chenall大,表示,刚才打了很多问题,想问你,结果快要结束了。卡擦,断电。NND!
入正题,我仔细观察了一下,感觉不管是加载img、ima还是pe ISO好像都可以用刚才你打出来这个基本语句:
title  DISKGEN 硬盘管理
map --mem /imgima/DGDOS.IMG (fd0)
map --hook
rootnoverify (fd0)
chainloader +1 或 chainloader (fd0)+1 因为上面已经root (fd0)了,所以可以不用再写(fd0).
是不是只要在映射的时候和设置根目录的时候没有问题就可以了呢?
加载一个img、ima或者iso pe基本流程是不是就是:找映射目标、设置根目录、最后加载。 我不知道我这样理解对不对。还请chenall大多多指出错误,更正我对Grub4DOS的理解。

二、针对第四点我再清楚地说一下我现在的情况,可能是怪我也没有能表达清楚。我现在的情况是:U盘启动—纯DOS—grub-各种菜单。我从DOS运行Grub命令后进入grub菜单,诸如各种Pe、maxdos工具箱等等,然后我再DOS工具箱处继续设置了下级菜单比如有ghost、GN等等选项。在我未通过DOS工具进入DOS之前,我想在这个菜单最后一项设置一个返回上一级目录(也就是回到GRUB主目录)。我需要在DOS菜单的末尾加一个什么样的语句才能达到这个目的呢。还请CHENALL大多多指点。这样描述不知道CHENALL大能不能明白我的意思了。
回复

使用道具 举报

 楼主| 发表于 2013-3-21 20:52:43 | 显示全部楼层

回复 #13 2011kuka 的帖子

恩,我觉得还是得要find --set-root才行,以我的理解应该是在全局盘寻找,找到第一个后不管其他的是否符合都停止了。然后确定了根目录就是map。然后就在这个目录里面加载了目标了。另一方面,我又想,windows为U盘按实际情况赋予一个盘符,如果之前ROOT,那么在这种情况下是不是map就不一定起作用了。
回复

使用道具 举报

发表于 2013-3-21 20:54:55 | 显示全部楼层

回复 #14 2013lalasuo 的帖子

第一点,基本差不多吧。
第二点,#13楼有答案,如果是新版内置菜单格式,则不一样,具体论坛找一下,我也没有用过。
回复

使用道具 举报

 楼主| 发表于 2013-3-21 21:03:20 | 显示全部楼层
#2 Maxdos
title  MaxDOS v9.3         \nMaxdos工具箱\n\n
map --mem /BOOT/IMGS/MAXDOS.IMG (fd0) || find --set-root /BOOT/IMGS/MAXDOS.IMG (fd0) && map --mem /BOOT/IMGS/MAXDOS.IMG (fd0)
map --hook
chainloader (fd0)+1
rootnoverify (fd0)


不太能理解这个语句意思,语句是不是说再说 映射MAXDOS直接/BOOT/IMGS/MAXDOS.IMG (fd0)或者是在全局盘寻找呢?那么我看第一个和最后一个意思好像是一样的。为什么还要 && 后面的map --mem /BOOT/IMGS/MAXDOS.IMG (fd0)呢。||这个是什么意思  &&这个应该是或者的意思。
回复

使用道具 举报

发表于 2013-3-21 21:08:37 | 显示全部楼层
map --mem /BOOT/IMGS/MAXDOS.IMG (fd0)
映射当前分区/boot/imgs/maxdos.img到底一个软驱fd0

||
如果失败
find --set-root /BOOT/IMGS/MAXDOS.IMG
全盘查找/boot/imgsmaxdos.img,并将其所在分区设置为root

&&
如果成功则执行
map --mem /BOOT/IMGS/MAXDOS.IMG (fd0)
回复

使用道具 举报

 楼主| 发表于 2013-3-21 21:09:18 | 显示全部楼层

回复 #16 chenall 的帖子

Chenall大,你说新版内置菜单格式则不一样,具体的新版是从哪个版本以上呢?表示跟着你走才有希望。哈哈。
回复

使用道具 举报

 楼主| 发表于 2013-3-21 21:10:47 | 显示全部楼层

回复 #18 2011kuka 的帖子

学到东西了,这个可以有。非常好的命令。这样都加上就万无一失了。
回复

使用道具 举报

发表于 2013-3-21 21:11:28 | 显示全部楼层
哈哈,你们慢慢聊,我打游戏去啦


拉拉所,还是那个建议,你得多看看完整的说明文档,有个相对全面的认识才好
回复

使用道具 举报

 楼主| 发表于 2013-3-21 21:13:16 | 显示全部楼层
已经修改成功。

[ 本帖最后由 2013lalasuo 于 2013-3-21 21:56 编辑 ]
回复

使用道具 举报

 楼主| 发表于 2013-3-21 21:38:31 | 显示全部楼层

回复 #21 2011kuka 的帖子

进入DOS工具菜单后返回主菜单,内置的命令是 configfile (md)4+8
我一般直接configfile (ud)/BOOT/GRUB/MENU.LST


configfile (md)4+8 为什么这样写呢?我看不太懂。4+8是什么意思   

configfile (ud)/BOOT/GRUB/MENU.LST  这个给力啊  哈哈  多直观。我马上改。      回复错了 NND
回复

使用道具 举报

 楼主| 发表于 2013-3-22 10:59:14 | 显示全部楼层

回复 #8 chenall 的帖子

感觉Z大写的run很强大啊,命令看起来更简单一些,  CHENALL大。Z大的Run模块可以一键安装Windows么?  或者不是一键也好。手动也好啊。只要安装原版就好。还有在纯DOS下可以安装Windows么?想请教。。。
回复

使用道具 举报

发表于 2013-3-24 07:21:14 | 显示全部楼层
文字乱码的问题很简单:是MENU.LST的文件格式的问题。如果是用UNIFONT字体,MENU.LST要保存成UNICODE的格式。如果是用ANSI的字体,MENU.LST要保存成ANSI的格式。否则乱码。
回复

使用道具 举报

发表于 2013-4-16 23:51:25 | 显示全部楼层
遇到同样问题了,我要仔细看一下。
回复

使用道具 举报

发表于 2013-11-3 09:06:26 | 显示全部楼层
本帖最后由 2012withthewind 于 2013-11-3 09:11 编辑

我的問題跟你相同,花了一天終於讓我研究出方法了
我使用grub4dos-0.4.6a-2013-10-30版的grub.exe加多國字庫unifont.hex.gz

問題出在多國字庫unifont.hex.gz點綴太多,gz文件內不要點綴就可以實現多國字體

未修改的unifont.hex.gz
1.jpg
修改過的unifont.hex.gz
2.jpg

#多國語言字庫命令
find --set-root /unifont.GZ
font /unifont.GZ

我用0.4.6a-2013-10-30版的grub.exe作了一個多國語言IMG文件樣本
http://pan.baidu.com/s/11jvq3
3.jpg
回复

使用道具 举报

发表于 2020-4-22 23:38:06 | 显示全部楼层
Cracada 发表于 2013-3-21 17:44
建议使用Feature版本G4D,我之前用过0.4.6a 2013-03-03版,中文也有问题

你好,哪个版本是feature 版本?烦给个链接,谢谢
回复

使用道具 举报

发表于 2020-5-4 23:42:55 | 显示全部楼层
chenall 发表于 2013-3-21 18:06
1.16位的颜色代码.
echo -h
可以看到对应颜色表.具体的Google之.

同样的问题一直没解决
回复

使用道具 举报

发表于 2020-5-4 23:43:18 | 显示全部楼层
chenall 发表于 2013-3-21 18:06
1.16位的颜色代码.
echo -h
可以看到对应颜色表.具体的Google之.

同样的问题一直没解决
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-3-29 04:42

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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