关于 UEFI 的问题

这个星期闲着没事干,把公司电脑原有的 XP 换成了 Windows 8+Arch,同时把磁盘格式改成了 UEFI+GPT,结果遇到了几个问题。

1、这台电脑的主板芯片组是 Intel H61,按理说是对 UEFI 有支持的。但是根据实际测试,OEM 厂商似乎对 UEFI 标准的实施不严格,导致启动项中认不出采用 grub-efi 的 Arch。即使用 EFI stub 的方法也不行,完全认不出。

2、无奈之下只好采用 UEFI 引导 Windows,同时用传统 BIOS 引导 Arch 的混合引导模式。好在这块主板虽然没提供 UEFI 和 BIOS 的相关配置项,但是好歹是开了 BIOS 兼容模式的,所以引导没问题。这也刚好验证了我以前的想法完全可行,即,在支持 UEFI 和 BIOS 兼容的主板上,可以同时采用不同的引导方式,而不是局限于单一的 UEFI 或 BIOS。

3、Arch 的 GNOME 桌面安装完成后居然无法用 NetworkManager 来连接网络,而如果禁用 NM,直接 dhcpcd 的话又没问题。百思不得其解。

本文的重点还是在 UEFI。经过这次的经验,我发现各个 OEM 厂商在实施和执行 UEFI 标准的时候似乎很不统一,虽然不知道是不是因为和 UEFI 的版本有关。但我个人觉得,至少对于 UEFI 多系统启动这种东西,应该是和版本无关,早就支持的东西。

之前我也碰到了两款对 UEFI 标准实施不严格导致 UEFI 功能不全的主板,一款是我笔记本自带的华硕 Intel HM65,一款是台式机之前所配的技嘉 AMD 970。前者的表现为,虽然支持 UEFI,但是却完全无法以 UEFI 模式启动,会导致黑屏和死机,因此我只能在里面玩玩 EFI shell。而后者则是不支持对 UEFI 启动项的管理,也未提供相关配置项,EFI shell 也不受支持。也就是说,无法实现纯 UEFI 引导双系统或混合引导。

与公司电脑的这块主板一比较就发现,三家厂商,在对待 UEFI 标准上居然会有截然不同的功能差异。但至少有一点是共通的:它们都没有提供 UEFI 的完整功能支持。

根据这种现象,我就推断,是否 OEM 厂商在实行 UEFI 标准时各自对其进行了修改和定制,导致部分功能被阉割,最后出来的就是残缺的 UEFI 支持。如果是这样,我倒是真心考虑想买一块 Intel 原厂的主板,看看 Intel 作为 UEFI 标准的发起人,是否在自家的主板上实现了完整的 UEFI 实施标准。当然,这几年 Intel 的原厂主板不仅型号稀少,而且价格偏高。我身边也没有人在用 Intel 原厂主板,大概这得等到我第二台台式机的时候才有机会验证了吧。

PS:既然证明 UEFI+BIOS 的混合引导可行,有空我打算在这台机器试试 FreeBSD 或 PC-BSD。