LinuxディストリビューションがインストールされているUSBドライブにGrubをインストールします。

LinuxディストリビューションがインストールされているUSBドライブにGrubをインストールします。

2つのLinuxディストリビューションがインストールされているUSBドライブを作成しようとしています。アイデアは、USBドライブを持って当時私が持っていたコンピュータからディストリビューションを起動することでした。私はこれがおそらく悪い習慣であることを知っていますが、試してみたかったのです。

以下に基づいて、USBドライブにKali Linuxディストリビューションをインストールしようとしました。この動画ここで、VirtualBox VM は USB ドライブにオペレーティングシステムをインストールするために使用されます。

初めて試したときに仮想マシンをEFIモードで起動しなかったため、OSはレガシーモードでインストールされました(起動手順はMBRに記録されます)。従来の起動をサポートするPCから起動すると、すべてがうまく機能しますが、Microsoft Surface(従来の起動をサポートしていない)から起動しようとすると、外付けドライブから起動できないようです。

そのため、仮想マシンでEFIモードを有効にした状態でKaliを再インストールしてみましたが、今回も運が悪く、Surfaceでディストリビューションを起動できませんでした。レガシーモードでディストリビューションがインストールされているSurfaceから起動しようとした場合と状況は同じです。 Surfaceは起動可能なUSBドライブをまったく認識しません。

インターネット検索を介してUSB /外部ドライブにGRUBをインストール/再インストールするためのいくつかのソリューションが見つかりましたが、試してみると、USBドライブにGRUBをインストールしたのと同じデバイスから起動する場合にのみ機能するようです。たとえば、VirtualBox VMを使用してUSBデバイスにGRUBをインストールすると、そのVirtualBox VMからKaliディストリビューションをUSBデバイスとしてのみ起動できます。

ここに何か抜けたようです。誰かが私が明確に説明し、修正するのを助けることができますか?

役立つように、Kali LinuxのEFIモードでインストールした後、USBドライブパーティションとUSBドライブのESPパーティションの内容を説明するスクリーンショットを添付します。

分割

ESPパーティションコンテンツ

- - 更新 - -

EFIブート可能な2台のコンピュータからシステムを起動しました。 ESPのKaliブートローダを/ EFI / Kaliから代替パス/ EFI / BOOTに移動し、ブートローダ名を「grubx64.efi」から代替名「bootx64.efi」に変更しました。起動プロセスが開始されない理由がわかりません。 /EFI/Kali/grubx64.efi 誰にでも手がかりがありますか?

これで、すべてをレガシーモード(BIOSを使用)で起動できます。これは可能ですか? UEFIとレガシーモードでUSBドライブを起動することは可能ですが、実際のEFI起動可能な設定で何も台無しにせずにすべてを設定する方法はありますか?

答え1

@oldfredの有用な洞察に基づいて、多数のテストと詳細な調査を行った後に問題を解決したようです。この答えでは、私がこれを達成した方法と私が見つけた結果を簡単に説明したいと思います。

各コンピュータでデュアルブート(Kali + AVLinux)システムを起動するか、単に起動します。バイオス開始のみ可能EFI起動を開始するか、両方を起動します。

これを行うための主な要件は、BIOSモードとEFIモードでgrubをインストールすることです。以下を使用してデバイス/ディスクを準備します。GPTパーティションテーブルを作成してからBIOS_bootパーティションとデバイスの最初のEFIシステムパーティション。 2種類のパーティションの作成方法に関する豊富な資料がオンラインであるため、簡単に作成できます。 (例えばBIOS_bootパーティションEFIパーティション)。

より明確にするために、デバイスパーティションのスクリーンショットを添付してください。

デュアルブートBIOS + EFI用のデバイスパーティション

ここでトピックを次のように分割します。EFIの起動小計BIOS ブート部分

EFIガイドライン

質問で述べたように、VirtualBox VMを使用してデュアルブートシステムの最初のディストリビューション(Kali Linux)もインストールしました(EFIブートモードの場合:つまり、EFI *が有効なVirtualBox VMを起動します)。インストーラの.isoファイルは次のようにロードされます。 VMのCD-ROMドライブの内容。

どのコンピュータでもシステムを起動できないことを除いて、インストールはうまくいきました(インストールに使用したのと同じ仮想マシンを除いてはわかりません)。

その理由は、grub-installKaliインストーラが実行されたときにgrubを私のEFIパーティションパスに置き、/EFI/Kali/grubx64.efi@oldfredが提案したように:

外部デバイスは /EFI/Boot/bootx64.efi UEFI からのみ起動します。

そのため、EFIパーティションのブートローダをパスごとに移動して/EFI/Kali/grubx64.efi名前を変更してシステムを起動できました/EFI/BOOT/bootx64.efi

また、さらなる調査によると、grubを再インストールすると問題を取り除くことができることがわかりました(下記の方法に従ってfe)。これ質問)--removableコマンド呼び出しにパラメータを追加してくださいgrub-install

したがって、ガイドのコマンドは次のようになります。

grub-install --removable /dev/sdX

これにより、ブートローダが/EFI/BOOT/BOOTX64.EFIパスに配置され、問題が解決されます。

* EFIブートをサポートするPCでインストーラを実行するのとほぼ同じです。

BIOS(レガシー)ブート

BIOS_bootパーティションを作成したら、package *を介してBIOS起動モード用のgrubをインストールする必要があります(MBRへのインストールとも呼ばれます)grub-pc。 EFIディレクトリをマウントしないことを除いて、プロセスはEFIブートモード用のgrubインストールとほぼ同じです。

sudo mount /dev/sdXX /mnt/boot/efi

i386-pcgrub-install コマンドでターゲットプラットフォームを指定します。

grub-install --target=i386-pc /dev/sdX

grub-pc*実際には、このパッケージがMBRにgrubをインストールするために使用されること(したがってBIOSブートモードに適している)と、このパッケージがEFIパーティションにgrubをインストールするために使用されること(EFIブートモードに適しています)を読んでください。grub-efiない限り、わからない。 EFIパーティションにgrubをインストールしてgrub-pcパッケージをインストールしたため、100%はわかりません。

関連情報