无忧启动论坛

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

[分享] vbe失败后的处理

[复制链接]
跳转到指定楼层
1#
发表于 2015-9-16 09:52:36 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 bfgxp 于 2015-9-17 06:43 编辑

自从有了vbe还从没有遇到失败的情况,直到ACER Veriton E430台式电脑上发现vbe失败了。
本来使用vbe模式是要加中文菜单的,好吧,既然失败了我就准备一个传统模式的英文菜单,并在内置菜单中使用如下命令
  1. graphicsmode -1 || configfile /en.lst
复制代码

但是测试结果怎么还是乱码的中文菜单呢?
好吧,进命令行手动执行
  1. graphicsmode -1
复制代码

显示 Error 81
继续执行
  1. graphicsmode -1 || configfile /en.lst
复制代码

确实没有载入en.lst
认真排查没有发现问题,于是继续能想到的测试,手动执行如下两条命令
  1. graphicsmode -1 | set a=
  2. echo %a%
复制代码

神奇的事情出现了,变量a不是想像中的 Error 81,而是没有任何字符,是空的。
反复多次确认没有操作错误。到了这里也有了解决方案了,使用如下代码
  1. graphicsmode -1 | set a=
  2. if not "%a:~0,8%"=="Graphics" configfile /en.lst
复制代码

解释:如果vbe成功,会显示以"Graphics"开头的一段英文,所以如果不是"Graphics"开头,则载入传统模式的英文菜单
以上代码在我的笔记本(vbe正常)与ACER Veriton E430台式电脑(vbe失败)上测试通过

附加测试:
vbe失败是因为接入了双显示器,dvi与vga各接入了一台显示器
只要拔掉dvi或vga任一显示器线,vbe都正常

需要说明的是,这台电脑是I3配置,核显 Intel HD 2500
我之前用的独立显卡AMD HD4850也是dvi与vga双显示器接入,vbe正常
也就是说不是所有双显示器接入都会出问题。
2#
发表于 2015-9-16 10:44:43 | 只看该作者
感谢分享!VBE失败神马的还真没有遇到过。真是林子大了是什么鸟都有。
回复

使用道具 举报

3#
发表于 2015-9-16 11:18:19 | 只看该作者
执行 vbeprobe 命令,看看显示的结果与别的正常电脑的显示结果有什么不同之处?

既然微软、Intel 和 OEM 厂商让 BIOS 都不能运转了,而 VBE BIOS属于旧的规范的一部分,让它出毛病也是可以理解的。

点评

[attachimg]227385[/attachimg] vbeprobe结果来了,前面都是0X0X0,一样的。  详情 回复 发表于 2015-9-16 14:01
回复

使用道具 举报

4#
 楼主| 发表于 2015-9-16 14:01:40 | 只看该作者
不点 发表于 2015-9-16 11:18
执行 vbeprobe 命令,看看显示的结果与别的正常电脑的显示结果有什么不同之处?

既然微软、Intel 和 OEM ...


vbeprobe结果来了,前面都是0X0X0,一样的。
回复

使用道具 举报

5#
 楼主| 发表于 2015-9-16 14:23:55 | 只看该作者
又把我想到的试了一下,这台主机是I3的处理器,核显 Intel HD Graphics 2500
我接了两个显示器,一个是DVI接口,一个是vga接口,拔掉任何一个显示器的线,vbe模式都能正常使用。

之前我用的另一台主机独显HD4850也接两个显示器,vbe没有问题。
回复

使用道具 举报

6#
发表于 2015-9-16 16:02:46 | 只看该作者
你的 vbeprobe 能够显示出很多 32-bit 颜色的 direct color,说明是支持的。

你可以让 chenall 或 yaya 帮你找出 graphicsmode -1 产生失败的原因(你也可以自己调试)。我猜是 graphicsmode 在执行

                current_term->startup();

的时候产生失败,其失败的原因是相应的 BIOS 调用产生失败。这可能是 BIOS 的 bug,也可能是 OEM 制造商对 grub4dos 进行的攻击。

点评

这个问题出现在双显示器接入的情况下,单显示器接入是可以的。 而且也不是所有双显示器接入都有这个情况,刚刚也说了,我之前独立显卡HD4850双接入就没有这样的问题。 所以可能是bios的bug,也许是graphicsmode没  详情 回复 发表于 2015-9-16 16:24
回复

使用道具 举报

7#
 楼主| 发表于 2015-9-16 16:24:37 | 只看该作者
不点 发表于 2015-9-16 16:02
你的 vbeprobe 能够显示出很多 32-bit 颜色的 direct color,说明是支持的。

你可以让 chenall 或 yaya  ...

这个问题出现在双显示器接入的情况下,单显示器接入是可以的。
而且也不是所有双显示器接入都有这个情况,刚刚也说了,我之前独立显卡HD4850双接入就没有这样的问题。
所以可能是bios的bug,也许是graphicsmode没有考虑两个及两个以上显示器接入的情况。
我自己到是没有能力调试,目前我只能把我想到的情况说明白。
要是chenall 或 yaya 有空的话可以帮忙看看。
回复

使用道具 举报

8#
发表于 2015-9-16 16:35:29 | 只看该作者
本帖最后由 不点 于 2015-9-16 16:36 编辑

graphicsmode 只是调用 BIOS 来进行工作,它不管、也不知道究竟有多少个显示器。

假如它调用的 BIOS 返回失败信息,那就是失败。

存在这样的可能性:BIOS 实际上执行成功了,但它返回了失败的信号给调用者,让调用者认为调用是失败的。

这有可能是 BIOS 的 bug,也有可能是攻击。总之,这需要调试,才能确定究竟是怎样一个状况。

grub4dos 本身不存在考虑几个显示器、几个硬盘、几个 CPU 的问题。grub4dos 只是调用 BIOS。而 BIOS 给出什么信息,grub4dos 就相信是什么信息。如果 BIOS 有 bug,或者故意制造 bug,那么 grub4dos 也没办法。幸运的时候,或许有个 workaround 的变通解决办法;不幸运的话,毫无对策。





点评

明白了。那就是bios的问题了。  详情 回复 发表于 2015-9-16 17:49
回复

使用道具 举报

9#
 楼主| 发表于 2015-9-16 17:49:02 | 只看该作者
不点 发表于 2015-9-16 16:35
graphicsmode 只是调用 BIOS 来进行工作,它不管、也不知道究竟有多少个显示器。

假如它调用的 BIOS 返 ...

明白了。那就是bios的问题了。

点评

不过,以上说的是个大概情况。实际情况可能比较复杂多样。也不能完全排除 grub4dos 存在 bug 的可能性。 你最好能够自己调试。如果你实在不能做调试,那就只能等待别人来帮你调试。 有鉴于微软和 Intel、AMD、  详情 回复 发表于 2015-9-16 18:08
回复

使用道具 举报

10#
发表于 2015-9-16 18:08:39 | 只看该作者
bfgxp 发表于 2015-9-16 17:49
明白了。那就是bios的问题了。

不过,以上说的是个大概情况。实际情况可能比较复杂多样。也不能完全排除 grub4dos 存在 bug 的可能性。

你最好能够自己调试。如果你实在不能做调试,那就只能等待别人来帮你调试。

有鉴于微软和 Intel、AMD、各 OEM 厂家伙同封杀 BIOS,所以,今后恐怕很难找到愿意替你调试 BIOS 的人了。BIOS 凑合着能用一天是一天,不要太过于追求完美了。如果是在 5 年前,我就愿意调试这个问题。但现在我已经不想做这事了。

如果微软继续强大,那么大家都被迫转向 EFI。如果微软逐渐走弱,那么大家都会转向 Android 等其他开放或半开放系统。这不是某个人说了算的,是要看今后大众的集体取向的。
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-4-24 15:21

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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