web-dev-qa-db-ja.com

USBスティックへのGRUBのインストール:この「EFIディレクトリが見つかりません」というエラーが発生し続ける

私はそれを起動可能にするためにUSBスティックにgrubをインストールしようとしています。 1つのUSB(rescatuxとtails)で複数のディストリビューションを実行するために、USBマルチブートを作成するためにブート可能にしたいです。私はこれをやった:

Sudo mkdir -p /media/MULTIBOOT/boot

その後:

Sudo grub-install --target=x86_64-efi --boot-directory=/media/MULTIBOOT/boot /dev/sdc1

そして、私はこのエラーを受け取ります:

X86_64-efiプラットフォーム用のインストール。 grub-install:エラー:EFIディレクトリが見つかりません。

Ubuntu 14.04 LTSがあり、それは64ビットです。

これは私のUSB構成です: enter image description here

これを試すのはこれが初めてで、ここで少し迷っています。/dev/sdc1または/dev/sdcを使用する必要がありますか?

私は(同様の結果で)この他の選択肢を試しました:

Sudo grub-install --target=x86_64-efi --boot-directory=/media/victoria/MULTIBOOT/boot /dev/sdc

問題はどこにありますか?

ご協力いただきありがとうございます!

2
Rosamunda

GRUBの設定とインストールのいくつかの側面が私のスキルレベルを超えており、あなたがしたいことについてのあいまいさのために(質問に対するsudodusで指定されているように)あなたの質問)。そうは言っても、役立つと思われるいくつかの観察と提案を行うことができます。

  • GRUBをUbuntuから通常実行中のEFIシステムにインストールすると、GRUBは EFI System Partition(ESP)、EFI/ubuntu/grubx64.efiになりますその場所を指すNVRAMエントリ。
  • 対照的に、EFIブート可能なUSBドライブは、通常、USBドライブのESP上のEFI/BOOT/bootx64.efiと呼ばれるブートローダーから起動します。通常、このファイル名はfallback filename、と呼ばれ、NVRAMエントリが有効なブートローダーをポイントしていない場合、EFIは最後の手段としてそのファイル名を探すことになっています、またはユーザーが組み込みのブートマネージャーメニューからブートメディアを選択した場合。したがって、この場所にインストールするには、grub-installコマンドを調整するか(これをサポートしていることを100%も確信していません)、手動でファイルをコピーする必要があります。
  • 上記を複雑にし、コンピューターがセキュアブートを使用している場合、UbuntuはShimshimx64.efi)と呼ばれるプログラムをインストールし、 grubx64.efiではなく。同様に、外部メディアを起動するには、元のshimx64.efiEFI/BOOT/bootx64.efiという名前を付ける必要があります。どちらの場合でも、ShimはShimと同じディレクトリでgrubx64.efiを起動します。
  • セキュアブートを使用してnotの場合、UbuntuのGRUBはgrub.cfgディレクトリで/boot/grubファイルを探します。これはESPではないでしょう。ただし、セキュアブートをアクティブにして起動すると、grubx64.efigrub.cfgと同じディレクトリでgrubx64.efiを探します。ただし、そのgrub.cfg/boot/grub/grub.cfgを探してロードするため、効果は同じですが、パスはより複雑です。どちらの場合でも、ESPと/boot/grubを保持するパーティションの両方に依存しています。一部のディストリビューションでは、設定が異なります。たとえば、Fedoraは、最終的なgrub.cfgおよび関連するすべてのファイルをESPに配置します。
  • /boot/grub/grub.cfgファイルは、新しいカーネルまたはGRUBバイナリをインストールするたびに実行される構成スクリプトによって構築(または再構築)されます。これはシングルブートシステムでは正常に機能しますが、別のLinuxディストリビューションでマルチブートしている場合は、面倒なことになります。特に、Distribution AのGRUBがブートプロセスを制御し、Distribution Bのカーネルを更新した場合、update-grubを実行するまで、GRUBは新しいDistribution Bカーネルを表示しません。 (または同様の)ディストリビューションAで.

これらの要素の間で、GRUBで必要なことを行うには、標準のファイル名ではなく、代替のファイル名にインストールする必要があります。シムを写真に詰め込む必要があるかもしれません。また、2つのディストリビューションのセットアップのためにgrub.cfgを微調整する必要があるかもしれません。それはやるべきことがたくさんあります。これらすべてをGRUBで行う必要がある場合、私のアプローチは、両方のディストリビューションをUSBドライブに内蔵ハードディスクのようにインストールし、GRUB(またはShim)をフォールバックファイル名に移動/名前変更することです。 。これには、grub.cfgファイルを使用する必要がないという利点があります。大きな注意点の1つは、UbuntuのUbiquityインストーラーではなくUNetbootinやRufusなど、通常とは異なる方法でインストールするものを使用する場合、完全に異なるアプローチを必要とする方法で式が変更される可能性があることです。ハードディスクでUbuntuを使用してGRUBをUSBドライブにインストールし、USBドライブからの起動に使用しようとしているようです。このアプローチは、あなたがGRUBエキスパートよりもはるかに熟練している場合に機能するかもしれませんが、十分なあいまいな変数があり、あなたのアプローチは複雑な鉱山の分野である可能性があります。

別の方法は、my rEFInd boot manager。 を使用することです。フォールバックファイル名にインストールする必要がありますが、rEFIndはブート時にカーネルをスキャンするため、新しいカーネルをインストールすることで混乱する可能性は低くなります。あるディストリビューションで、他のディストリビューションを使用してGRUBまたはrEFIndをインストールした場合。 OTOH、セキュアブートを使用する場合は、余分なフープ( rEFIndのセキュアブートページ に記載)を使用して、おそらくUSBのブートに使用するすべてのコンピューターで機能するようにジャンプする必要があります。ドライブ。また、ディストリビューション固有のカーネルオプションを処理するために、ディストリビューション用のboth/boot/refind_linux.confファイルを作成する必要があるかもしれません。 (詳細については、 rEFInd Linuxのドキュメント 、特にそのページの下半分を参照してください。)

3
Rod Smith