[ 有不完美的解决办法 ]UEFI 下如何实现 Win8 和 openSUSE 和 Arch 的三重引导

UEFI 启动的 openSUSE 和 Win8 如何共存呢?
之前一直想装双系统的,我有两块硬盘,在第一块上装了 openSUSE, 用 grub-efi 启动一切正常,但是只要在第二块硬盘上装了 Arch 的话 openSUSE 的启动就会丢失,在选择启动磁盘那里找不到 openSUSE 的启动项了!!
安装的时候还专门只插了一块硬盘的啊!!
现在想装个 Win8,但是担心 Win8 的 UEFI 启动又会破坏 openSUSE 的启动项,所以一直没敢动手。
怎么让两个系统并存呢


装个 refind 就可以了

Sent from my MI 2 using Xparent Skyblue Tapatalk 2

community.acer.com/t5/Notebooks-Netbooks/Dual-boot-Windows-8-and-openSUSE-12-3-on-the-Acer-Aspire-V5-122P/td-p/115393

还是比较困惑,主要是 UEFI 的引导过程一直没搞清楚。
如果是 BIOS 的话大概启动流程应该是这样的:

1.BIOS 通电,系统自检
2. 自检完成后引导目标磁盘的 mbr
3.mbr 加载 bootload
4.bootload 启动系统 

所以多硬盘的话就很简单了,选择启动哪个硬盘 bios 就去找哪个硬盘的 mbr。
但是 uefi 就比较纠结了,比如下图



通过硬盘 ID 就可以看出第一条和倒数第三条是同一个硬盘,但是第一条是不能启动的,会进入 UEFI 设置界面,只有倒数第三条才能启动。
问题就是如果装了其他 UEFI 引导的系统——比如 arch 或者黑苹果——那么 opensuse 那条就会消失,即使不在同一块硬盘上安装、安装时只插一块硬盘也不行。
请问谁能说一下 UEFI 的引导过程究竟是怎样的

我也不太清楚(我没有能研究它的硬件),我翻译过 openSUSE:UEFI - openSUSE 你可以找找它说没。另外 release notes 里也会有一些提示。

给我的感觉像是,bios -> uefi -> boot (grub2)-> root 的序列。然后 uefi 是个像内存似的东西,非常小,大一点的东西就会把它灌满。甚至多大的东西能灌满它微软自己都不知道它就知道 Win8 没事(之前三星装 Linux 变砖事件就因为这个)。我们解决这个问题的方法是往 uefi 保留缓冲区里写个小到可以忽略不计的脚本,这个脚本告诉它去引导 /boot 下的 grub2-efi。而这个是 openSUSE 独家的(因为咱跟微软关系好,SuSE 对某些文档能看到或者看得多),各家的实现都不一样,有些可能直接把 grub2-efi 给从 /boot 挪到 uefi 缓冲区里去了(别家的实现它们自己也没有文档,基本就是黑科技,就一两个人明白他干了啥)。

我觉得这个问题你可以想象为 Android 刷 ROM,刷了 CM 就没 MIUI,我还真没见过谁把两个发行版的 uefi 启动器毫无冲突地都扔到 uefi 缓冲区里去。(没听说谁装了 uefi 三系统的)因为缓冲区就那么大。

所以我觉得你现在应该考虑的是让哪个发行版滚蛋的问题。当然我也完全有可能混淆了 uefi 和 secureboot 的关系,缓冲区指的是后者也说不定。

还有一个思路是,只装 openSUSE,其它系统完全不装引导程序,用 openSUSE 的 grub2-efi 去从它们的 / 分区直接引导它们。因为仅从技术规格来说 openSUSE 有最有节操你变砖风险最低的实现。但我没硬件,也没装过“其它发行版”,不知道它们能不能实现完全不装 grub。

背景信息记忆模糊仅供参考。使用前请自行看我开头给的链接确认。

最后那个思路不错啊,我怎么就没想到啊,直接让 openSUSE 的 grub 去找其他的内核就可以了,好办法