web-dev-qa-db-ja.com

OSXのCLOVERX64.efiをGRUBから起動しようとすると、「無効な署名」

Grub2を使用してマルチブートの状況を作成しようとしています。これはかなり新しいのでご容赦ください。ただし、EFIパーティションから起動する機能が不足しているだけです。私の状況の詳細は次のとおりです。

  • / dev/sba上のUbuntuバージョン15.10 64ビット– hd1
  • / dev/sdc上のWindows 10 64ビット– hd
  • EFIパーティションからのOS X 64ビットブート。/dev/sdbでhd2

各OSは個別のハードドライブにあります。

すべてが完全に起動しますstandalone。すなわち、(w/o)grub。 UbuntuとWindows 10の両方を正常に起動できます。私が抱えている問題は、OS XドライブのEFIパーティションを起動することです。インターネットに関する広範な調査の後、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が表示されます。私はカーネルを調査しましたが、現時点では答えが見つかりません。これは厳密にテストシステムであるため、システムのクラッシュについてはあまり心配していません。

誰かアイデアがあれば教えてください。

1
Sparky4460

編集:Cloverは公式のAppleブートローダーとMacではなく、この答えを書いたときに期待していたHackintoshブートローダーであることを思い出しただけです。


invalid signature OSXインストールは、Windowsプラットフォームでのセキュアブートのようなセキュアブートチェーンを期待しているようです。ここに当てはまるかどうかはわかりませんが、通常はhfs-blessまたはMac blessコマンドを使用して、Mac上の非OSXインストールのEFIブートを許可しました。 Linux Foundationsプリローダーが未署名のEFIローダーのギャップを埋める方法と同様に、blessは理論的には外部ローダー(GRUB)がOSXを起動できるようにする必要があります。

hfs-blessMactel PPA で利用可能です。

ところでchainloaderは正しく、Sudo grub-mkconfig -o /boot/grub/grub.cfgおよびSudo update-grubは同じです。whereisを実行してパスを見つけ、update-grubエディターで。 ????

0
LiveWireBT

LiveWireBTは正しい軌道に乗っていますが、答えは少し異なります。 LiveWireBTと同様に、これはセキュアブートの問題だと思います。問題は、知る限りでは、Cloverはセキュアブートを明示的にサポートしていないことです。たとえそれがあったとしても、Appleはそうではないので、Appleのブートローダーはセキュアブートキーで署名されていません。Cloverは、セキュアブートの場合に署名が必要な方法でEFIアプリケーションを起動することで動作しますただし、アクティブであるため、ファームウェアで提供されたキーによって署名されていない場合、Cloverを介して起動されたものはすべて失敗します。

この問題の簡単な解決策は、ファームウェアでセキュアブートを無効にすることです。セキュアブートを無効にすると、セキュアブートチェックは行われず、すべてが機能します。このアプローチの問題は、セキュアブートの利点が得られないことです。つまり、マルウェアは理論的にはコンピューターのブート前環境を制御できますが、これは修正が非常に困難です。知る限りでは、そのような攻撃は野生ではまれ(存在しない可能性があります)ですが、可能です。

中程度の複雑さの解決策は、GRUB= my rEFInd。 で置き換えるか、補足することです。rEFIndはセキュアブートをサポートしますが、GRUBとは異なる方法で行うため、 -onプログラムは、それをサポートするために明示的に記述されていない場合でもShimを使用します。したがって、rloverからCloverを起動すると、CloverはShimが認識するキーで署名されたプログラムを起動できます。クローバー、クローバーのドライバー、アップルのboot.efi独自のキーを使用します。これにより、セットアップとメンテナンスの負担が増えます。

最も複雑なソリューションは、コンピューターの現在のセキュアブートキーのセットを独自のセットに置き換えることです。このセットにはMicrosoftのキーを含めることができますが、Clover、Cloverのドライバー、Appleのboot.efi。これらはすべて、セキュアブートがアクティブな状態で起動します。 GRUB、rEFInd、またはその他の何でも起動できます。 (Cloverをメインブートローダーとして設定し、それを使用してWindows、GRUB、OS Xから選択することもできます。)主な欠点は、キーの交換がかなり複雑なプロセスであることです。詳細に説明します ここで 試してみたい、または試してみたいかどうかを評価するために少なくとも読んでみたいと思っているなら。また、この方法を使用する場合、Clover、Appleブートローダーなど)を更新するときに、更新されたバイナリに定期的に署名する必要がある場合があります。 rEFIndソリューションと同じです。

1
Rod Smith