GRUB2はEFIシステムパーティションをWindowsと共有できますか?


30

既存の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/sda1EFIパーティションを使用するようにします。

PS:私のメインボードはEFI対応です。

回答:


22

1日の調査の後、自分の質問に答えることができます。はい、可能です。そのパーティションを/ bootとして使用して、kernels / initramfs / etcを保存することもできます。そこ。

要件:

  • Grub> = 2.00(1.98および1.99は機能しません)
  • GrubはLinuxカーネルからインストールする必要があり、LinuxカーネルはEFI変数をサポートしています(CONFIG_EFI_VARSモジュール内またはモジュールとしてコンパイルefivars
  • EFIブートエントリを作成するには、次のものが必要です。 efibootmgr

セットアップ:

最初にEFIパーティションを/ bootにマウントします

mount /dev/sdX1 /boot

マウントエントリを見ると、それが単なるFAT(32)パーティションであることがわかります。下に/bootディレクトリがありefiます。

grubはを呼び出すefibootmgrのでevivars、カーネルにコンパイルされていない場合、をロードする必要があります。

modprobe efivars

これでgrubをインストールできます。

# Replace x86_64 by i386 for 32 bit installations
grub2-install --target=x86_64-efi

Grubは通常どおりにファイルをインストールします/boot/grub2。すべてが正常に機能した場合は、フォルダー/boot/efi/grub2またはがあるはず/boot/efi/your_distros_nameです。では--bootloader-id=isert_name_here、あなたはまた、フォルダ自身の名前を指定することができます。

Grubはefibootmgr自動的に呼び出し、EFIブートメニューにその名前のブートエントリを作成します(私の場合、EFIメニューにブート可能なデバイスとして表示されますが、これはすべてのEFIボードに当てはまるかどうかわかりません)

さらなるセットアップは通常のgrub2セットアップと変わりません。EFI grub2-mkconfigに適切なモジュールを追加しますgrub.cfg

Windowsのチェーンローディング:

Windowsとのデュアルブートを要求したので、それをチェーンロードするためのgrub構成を含めます。

EFIでのWindowsインストールのチェーンロードは、MBRディスクでのインストールとは少し異なります。あなたは必要はありませんntfspart_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から起動する場合は、読む価値があります。


私(Fedora24)のために私は10 EFIパーティションに窓を配置しmount /dev/sdXX /boot/efiた後、続いこれとRANをbcdedit /set {bootmgr} path \EFI\fedora\shim.efiブートストラップEFIへの窓から。
jozxyqk
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.