尝试从GRUB启动OSX的CLOVERX64.efi时出现`invalid signature`

我正在尝试使用grub2创建多重启动情况。 请原谅我,因为我对此很新。 但是,我觉得我相当接近,我只是缺少从EFI分区启动的能力。 以下是我的情况详情:

  • Ubuntu版本15.10 64位/ dev / sba – hd1
  • Windows 10 64位/ dev / sdc – hd0
  • OS X 64位从EFI分区启动。 在/ dev / sdb – hd2

每个操作系统都位于单独的硬盘驱动器上

所有启动完全独立 。 即(w / o)grub。 我能够成功启动到Ubuntu和Windows 10.我遇到的问题是启动到OS X驱动器上的EFI分区。 经过对Internet的广泛研究后,我为EFI分区提出了以下grub2菜单。

menuentry "OSX" { insmod chain insmod part_gpt insmod search_fs_uuid search --fs-uuid --no-floppy --set=root 8366-0C13 chainloader /EFI/CLOVER/CLOVERX64.efi } 

这将加载到40_custom文件中。 加载后我然后运行sudo grub-mkconfig -o /boot/grub/grub.cfg然后sudo update-grub菜单出现正常,但是当我选择Yosemite项目时,我收到错误。

  • Windows 10和Ubuntu项目启动正常。
  • hd2第1部分的UUID为8366-0C13
  • CLOVERX64.efi文件确实存在于该位置。

如果我运行ls命令,分区和所有文件都可以正常运行。

运行OSX菜单项时收到的错误是invalid signature 。 我尝试将最后一行改为boot而不是chainloader然后我得到一个错误, you need to load the kernel first 。 我研究了内核,此时我没有找到任何答案。 这严格来说是一个测试系统,所以我不太关心系统崩溃。

如果有人有任何想法,请告诉我。

编辑:记得Clover是一个Hackintosh引导程序,而不是官方Apple引导程序和Mac,这是我在写这个答案时的预期。


invalid signature声音,如您的OSX安装需要安全的启动链,如Windows平台上的安全启动。 我不确定这是否适用于此,但通常使用hfs-bless或Macs bless命令来允许在Mac上启用非OSX安装的EFI。 类似于Linux Foundations preloader如何填补无符号EFI加载程序的空白,理论上应该启用外部加载程序(GRUB)来启动OSX。

hfs-bless可在Mactel PPA中找到 。

顺便说一句。 chainloader应该是正确的,并且sudo grub-mkconfig -o /boot/grub/grub.cfgsudo update-grub是相同的,只需要在whereis中找到路径并在编辑器中查看update-grub 。 😉

LiveWireBT走在正确的轨道上,但答案有点不同。 像LiveWireBT一样,我认为这是一个安全启动问题。 麻烦的是,AFAIK,Clover没有明确支持安全启动; 即使它确实如此,Apple也没有,因此Apple的启动加载程序没有使用安全启动密钥签名。 如果安全启动处于活动状态,Clover将以需要签名的方式启动EFI应用程序,因此如果没有通过固件中提供的密钥签名,通过Clover启动的任何内容都将失败。

解决此问题的简单方法是在固件中禁用安全启动。 禁用安全启动后,将不会进行安全启动检查,一切都会正常工作。 这种方法的问题在于您无法获得安全启动的任何好处,这意味着恶意软件理论上可以控制您的计算机的预启动环境,这很难修复。 AFAIK,这种攻击在野外仍然很少(可能不存在),但它们是可能的。

中等复杂度的解决方案是用我的rEFInd替换或补充GRUB 。 rEFInd支持安全启动,但它以与GRUB不同的方式实现,因此即使没有明确编写支持,后续程序也会使用Shim。 因此,如果Clover是从rEFInd启动的,Clover将能够启动使用Shim识别的密钥签名的程序。 要使这种方法起作用,您需要使用自己的密钥签署Clover,Clover的驱动程序和Apple的boot.efi ,这将增加一些设置和维护负担。

最复杂的解决方案是用您自己的设备替换计算机当前的安全启动密钥集。 这个集合可以包括Microsoft的密钥,但它也可以包含您自己的密钥,您可以使用它来签署Clover,Clover的驱动程序和Apple的boot.efi 。 这些都应该在安全启动激活时启动。 您可以通过GRUB,rEFInd或其他任何方式启动。 (您甚至可以将Clover设置为主引导加载程序,并使用它在Windows,GRUB和OS X之间进行选择。)主要缺点是交换密钥是一个相当复杂的过程。 我在这里详细介绍,如果你有兴趣尝试,或至少阅读它来评估是否尝试。 此外,如果您使用此路由,则在更新Clover,Apple引导加载程序以及其他可能时,您可能必须定期签署更新的二进制文件。 这将为正在进行的系统维护增加一个小负担,就像在rEFInd解决方案中一样。