既存のWindows 7 GPTインストールがあり、既にEFIシステムパーティションがあります。
Linuxを別のハードディスクにインストールしようとしています。これもGPTフォーマットです。 EFIシステムパーティションなしでGRUBブートを取得するための有効な方法が見つからなかったので、私の質問は次のとおりです。
Grub2がWindowsと同じEFIシステムパーティションを使用することは可能ですか? grub2にそれを使用するように指示するにはどうすればよいですか?
私のセットアップを明確にするために:
gpt /dev/sda:
1 EFI System partition created by windows (100MB)
2 "Microsoft reserved partition" (200MB)
3 Windows root (rest of disk)
gpt /dev/sdb:
# After answering my own question: this partition is not needed
1 boot partition containing grub, kernels etc.(32MB)
2 crypto LVM partition (rest of disk)
Grub2に既存の/dev/sda1
EFIパーティションを使用させたい。
PS:私のメインボードはEFI対応です。
1日の調査の後、自分の質問に答えることができます。はい、可能です。そのパーティションを/ bootとして使用し、kernels/initramfs/etcを保存することもできます。そこ。
CONFIG_EFI_VARS
はモジュールefivars
としてコンパイルされているか、コンパイルされています)efibootmgr
が必要です最初にEFIパーティションを/ bootにマウントします
mount /dev/sdX1 /boot
マウントエントリを見ると、単にFAT(32)パーティションであることがわかります。 /boot
の下にディレクトリefi
があります。
Grubはefibootmgr
を呼び出すので、カーネルにコンパイルされていない場合は、evivars
をロードする必要があります。
modprobe efivars
これでgrubをインストールできます:
# Replace x86_64 with i386 for 32 bit installations
grub2-install --target=x86_64-efi
Grubは通常どおり/boot/grub2
にファイルをインストールします。すべてが正常に動作した場合は、/boot/efi/grub2
または/boot/efi/<name_of_your_distro>
というフォルダーも作成されているはずです。 --bootloader-id=insert_name_here
では、フォルダの名前を自分で指定することもできます。
Grubは自動的にefibootmgr
を呼び出し、EFIブートメニューにその名前のブートエントリを作成します(私の場合、これはEFIメニューにブート可能なデバイスとして表示されることを意味します。 EFIボード)
以降の設定は通常のgrub2設定と変わりません。grub2-mkconfig
はEFIに適切なモジュールをgrub.cfg
に追加します。
Windowsでのデュアルブートを要求したので、チェーンロードするためのGRUB構成を含めます:
EFIでのWindowsインストールのチェーンロードは、MBRディスクでのチェーンロードとは少し異なります。 ntfs
またはpart_mbr
モジュールは必要ありませんが、代わりにfat
およびpart_gpt
が必要です。
また、ルートを設定する必要はありません。この情報はWindows独自のブートマネージャーによって保存されます。代わりに、search
コマンドを指定します。そのために必要なパラメータは、
grub-probe --target=hints_string /boot/efi/EFI/Microsoft/Boot/bootmgfw.efi
これにより、EFIパーティションの場所を指定する検索用のパラメーターが提供されます。次のようになります。
--hint-bios=hd0,gpt1 --hint-efi=hd0,gpt1 --hint-baremetal=ahci0,gpt1 1ce5-7f28
読み取るセクター数をchainloader
に通知する代わりに、EFIパーティションでWindowsのEFIローダーへのパスを設定する必要があります。これは、すべてのWindows EFIインストールで同じです。結果のエントリは次のようになります。
menuentry "Microsoft Windows x86_64 UEFI-GPT" {
insmod part_gpt
insmod fat
insmod search_fs_uuid
insmod chain
search --fs-uuid --no-floppy --set=root <insert ouput from grub-probe here>
chainloader /efi/Microsoft/Boot/bootmgfw.efi
}
ソース:EFIから起動したい場合、これらはいくつかのケースをカバーしています、それらは読む価値があります: