恕我直言,不加640:480,其实应该是24:32吧,把24:32去掉就可以了 最小公倍数应该也不是24:32,而应该是3:4才是最恰当的 |
恕我直言,你这个用法还是错的: graphicsmode -1 100:1000 100:1000 24:32 640:480 应该是这样: graphicsmode -1 100:1000 100:1000 24:32 参数不可以随便增加,虽然现在的版本检查不严,允许你写上多余的尾巴(多余的部分不起作用),但将来的版本不一定允许你写多余的参数。 |
请教老师一个问题:GfxMenu。。。VBE。。。message 这三者之间到底啥关系?问题很菜,希望老师能给补补课 |
贴出菜单看下 |
不点 发表于 2013-5-11 17:36 "另外,你前面提到的graphicsmode -1 640:480 也是错误的用法。不过,系统检查不严格,没有按错误处理罢了。就是说,上述这条命令按 graphicsmode -1 640 来处理了。"这两个参数显示效果并不都是一样的。比如:graphicsmode -1 640和graphicsmode -1 640:800,显示结果就会不一样。 菜鸟发言,莫笑 |
本站有 grub4dos 讨论区,可以在置顶的文档中学习。也可以在 internet 上搜索资料。 我知道,那些能够接触到 grub4dos 的人,都不是普通人,都是比较特殊的人。有很多人都是当地的电脑高手,经常给周围的人解决电脑的故障。 |
本帖最后由 不点 于 2013-5-12 11:42 编辑 graphicsmode 命令的第一个参数,是直接指定图形模式的值。按照视频 BIOS 的规范,小于 0x100 的值,都是老式的 VGA 图形模式,而大于或等于 0x100 的模式,才是新型的 VBE 图形模式。 0x6A 就属于旧的 VGA 图形模式的一种,它是 800x600 的分辨率。新版 grub4dos 不再支持旧的 VGA 图形模式,开发者不保证 VGA 模式一定能够在新版下正常使用。因此,用户在新版之下应该使用新的 VBE 图形模式。 graphicsmode 命令的第一个参数,如果是 -1,它表示,将替用户探测出一个符合用户所指定条件的 VBE 图形模式。用户也可以指定一个大于或等于 0x100 的模式值,不过,那可不具有普遍适应性。新版的 VBE 规范没有定义模式值以及它们所代表的分辨率。所以,如果直接指定模式值,那是无法保证在其他电脑上通用的。新版 VBE 也没有规定究竟有哪些分辨率是必须支持的。因此,你不敢保证 640x480 一定被所有的 VBE BIOS 支持。同理,也不敢保证 800x600,1024x768,以及其他任何一个分辨率,一定被所有的 VBE BIOS 支持。 补充:还有这样的可能性,某些早期的主板或显卡的 BIOS 不支持 VBE,只支持旧的 VGA 模式。那样的话,graphicsmode 命令将失败出错。不过这样的电脑,似乎很难见到了。 有人还遇到了这样一台旧的笔记本电脑:它支持 VBE,但是颜色深度只支持 16 位的,不支持 24 位和 32 位的。这样的话,grub4dos 也不支持它。这有点遗憾。grub4dos 的开发者当初权衡了一下,决定放弃对 16 位以下色深的支持,只支持 24 位和 32 位色深,这样能够降低 grub4dos 处理的复杂度,使得程序代码能够针对 24 位和 32 位色深进行优化。所幸的是,老式笔记本也消失殆尽了,只遇到了一个案例。 继续思考这个问题。有这样的可能性:虽然你的 BIOS 支持 VBE,也支持 24 位或 32 位色深。但是,对于某个特殊的分辨率(例如 1024x768),却只支持 16 位色深。那样的话,grub4dos 在这台电脑上也就无法支持 1024x768 的分辨率了。 640x480 是一个古老的分辨率,它很有名气,因为 Win98 时代它就成为了一个标准,恰如 1.44M 软盘成为标准软盘那样。有理由相信,大多数 VBE BIOS 都支持 640x480 的分辨率。然而前面提到过,新版 VBE 规范不强制 VBE BIOS 一定支持以往的旧规范所规定的分辨率。因此,即使 640x480,也有可能不被某个新的 VBE BIOS 支持了。 |
1028x800 ?没听说过这么个分辨率,你是指 1280x800?(还是指 1024x800?不过这似乎也很少见到。) 分辨率究竟支持多少种,那是没有规定的。就是说,不同的机器,有不同的情况,没法确定。 如果你希望设置为最大支持的分辨率,那就用 graphicsmode -1 -1 -1 24:32 这个命令中限制颜色深度为 24 位至 32 位,这样比较安全,因为这是 grub4dos 的 vbe 模式所支持的颜色深度,其他的颜色深度不被 grub4dos 支持。 而如果你希望设置为 1280x800,可以用以下两条命令: graphicsmode -1 -1 -1 24:32 graphicsmode -1 1280 800 24:32 其中,第一条命令保证适应几乎所有的机器,设定最大可能支持的分辨率,总可以成功进入 vbe 模式。 第二条命令的意思是,在 bios 支持的情况下,设定为 1280x800 的分辨率。这第二条命令是有可能失败的,因为有些机器不支持这么一个特殊的分辨率。可以把上述两条命令整理为一个命令行,如下: graphicsmode -1 -1 -1 24:32 && graphicsmode -1 1280 800 24:32 由 && 和 || 等操作符连接的两条或多条命令,会忽略出错代码,整体上按成功执行处理,不管有没有出错。 这样,当 BIOS 支持 1280x800 的分辨率时,结果也正是如此设定的。否则,当 BIOS 不支持 1280x800 的分辨率时,其结果是,设定为 BIOS 所支持的最大分辨率。 |
不错的背景图。 |
糊涂兄的菜单,用到了 grub4dos 的很多新的特性。坦率地说,由于自己身体差,也很少研究 chenall 以及其他开发者开发的新命令、新用法、新功能。所以,我也并不能了解每条命令的含义。我只能就我所了解的部分,给出自己的意见,供参考。 你的这条 graphicsmode 命令,我个人觉得适应性比较强,这是我推荐的用法。我的视角是从硬件适应性来考虑的,不是从别的角度来考虑的。我把硬件适应性看得比较重。就是说,尽量保证这条命令不至于失败,不至于出错。 但是,你把 splashimage 命令以及 font 命令都放在 graphicsmode 命令之前,我觉得不好。应该把 graphicsmode 命令放在 splashimage 和 font 之前。否则,如果某个电脑不支持某个分辨率的图片,就有可能在执行 splashimage 命令时死机。而如果先执行 graphicsmode 命令来确定电脑所支持的分辨率,这样做就是安全的了,不容易出现意外。 我得声明,我并不考虑美化之类的问题。图片的分辨率,尽量设置得大一些,好让屏幕能够铺满。不可以用图片的分辨率为基准来设定硬件的分辨率,因为刚才解释过了,那会在某些机器上产生死机之类的问题。制作合适的图片,适应于各种硬件分辨率,那是一种艺术的考量,不是技术上的考虑。这就是我个人的看法。不同的机器的 bios,具有不同的分辨率,不可以一刀切,把分辨率定死了。所以,那条 graphicsmode 命令的作用就在这里了,它的目的就是适应不同的情况。否则的话,如果定死了分辨率,那还要这条 graphicsmode 命令干什么?这条 graphicsmode 命令的目的就是替用户灵活确定一个合适的分辨率的,保证既能进入 vbe 图形模式,又能有着自己所希望的分辨率。当然了,根据用户自己的偏好,100:1000 可以调整为别的,比如 200:900 之类的。 |
本帖最后由 糊涂 于 2013-5-11 17:45 编辑 辛苦不点大师指点一下下面两个菜单头 command --set-path=/BOOT/GRUB/ splashimage /BOOT/GRUB/back.lzma font /BOOT/GRUB/UNIFONT.HEX color normal=15 highlight=10 heading=7 standard=0x0F border=0 call Fn.0 0x40000 "!BAT\necho -P:0000 $[0000]\t\t\t\t\t\t\t\t\t\0" && initscript (md)0x200+1 MENUSETTING 2 14 0 15 15 2 50 6 write 0x8274 0 二级菜单 command --set-path=/BOOT/GRUB/ splashimage /BOOT/GRUB/back.lzma font /BOOT/GRUB/UNIFONT.HEX graphicsmode -1 100:1000 100:1000 24:32 color normal=15 highlight=10 heading=7 standard=0x0F border=0 call Fn.0 0x40000 "!BAT\necho -P:0000 $[0000]\t\t\t\t\t\t\t\t\t\0" && initscript (md)0x200+1 MENUSETTING 2 14 0 15 15 2 50 6 write 0x8274 0 #加载背景图像 bmp格式或bmp经gz,lzma压缩 splashimage (ud)/BOOT/GRUB/back.lzma || splashimage (ud)/BOOT/GRUB/back.gz #加载字库文件 FONT_CN.GZ为精简版,unifont.hex.gz为多国语言字库 font (ud)/BOOT/GRUB/FONT_CN.GZ || font (ud)/BOOT/GRUB/UNIFONT.HEX.GZ #分辨率设置 在加载背景图像时也可取消graphicsmode命令让其自动适应 。若不加载背景图像 graphicsmode不可省略,否则不能加载字库。 graphicsmode -1 100:1000 100:1000 24:32 |
我刚刚看了最新的源代码,确认不存在下面的用法: graphicsmode -1 100:1000 100:1000 24:32 640:480 这可能是你自己杜撰的用法,也可能是复制别人的错误用法。 另外,你前面提到的 graphicsmode -1 640:480 也是错误的用法。不过,系统检查不严格,没有按错误处理罢了。就是说,上述这条命令按 graphicsmode -1 640 来处理了。 但是,错误的用法,也许有人偏偏喜欢,那就是另外一种性质的问题了,只要自己满意就行。 我只是看到了问题,然后提醒一下楼主以及过路的人,注意查阅 grub4dos 讨论区中的置顶文档,了解 graphicsmode 命令的各个参数的意义,以确保使用正确的命令。 |
本帖最后由 糊涂 于 2013-5-11 10:00 编辑 我也不懂,瞎玩儿的 command --set-path=/BOOT/GRUB/ splashimage /BOOT/GRUB/back.lzma font /BOOT/GRUB/UNIFONT.HEX color normal=15 highlight=10 heading=7 standard=0x0F border=0 call Fn.0 0x40000 "!BAT\necho -P:0000 $[0000]\t\t\t\t\t\t\t\t\t\0" && initscript (md)0x200+1 |
本帖最后由 糊涂 于 2013-5-11 09:08 编辑 图片效果不错吧 |
24bit的应该可以的,我一直都是用24bit的图做背景。 |
Powered by Discuz! X3.3
© 2001-2017 Comsenz Inc.