Grub2ブートローダにWindows 10を追加する

Grub2ブートローダにWindows 10を追加する

40_customを修正し、以下を追加して、ブートローダオプションにWindowsを追加する一般的な手順を完了しました。

menuentry "Windows 10" {
     insmod part_gpt
     insmod chain
     set root='(hd0,msdos2)'
     chainloader +1
     }

ただし、ブートローダでWindowsを選択すると、「エラー:無効な署名です。続行するには任意のキーを押します」というメッセージが表示されます。なぜこのエラーが発生するのかわかりません。どうすれば解決できますか?編集:ここに構文エラーがあると言っていますが、何も表示されません。 if [ "${grub_platform}" == "pc" ]; then menuentry "Microsoft Windows Vista/7/8/8.1/10 BIOS/MBR" { insmod part_msdos insmod ntfs insmod search_fs_uuid insmod ntldr
search --fs-uuid --set=root --hint-bios=hd0,msdos1 --hint-efi=hd0,msdos1 --hint-baremetal=ahci0,msdos1 XXXXXXXXXXXXXXXX ntldr /bootmgr } fi

EDIT2:sudo fdisk -lの出力

~$ sudo fdisk -l
Disk /dev/sda: 298.1 GiB, 320072933376 bytes, 625142448 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x71b1e4fb

Device     Boot     Start       End   Sectors   Size Id Type
/dev/sda1              63     80324     80262  39.2M de Dell Utility
/dev/sda2  *    223580160 286285823  62705664  29.9G 83 Linux
/dev/sda3        30801920 223580159 192778240  91.9G  7 HPFS/NTFS/exFAT
/dev/sda4       286287870 625141759 338853890 161.6G  5 Extended
/dev/sda5       571742208 573741055   1998848   976M 82 Linux swap / Solaris
/dev/sda6       573743104 625141759  51398656  24.5G 83 Linux
/dev/sda7       286287872 345180159  58892288  28.1G 83 Linux

Partition table entries are not in disk order.


Disk /dev/sdb: 7.5 GiB, 8004829184 bytes, 15634432 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x037cbc77

Device     Boot Start      End  Sectors  Size Id Type
/dev/sdb1  *     2048 15634431 15632384  7.5G  c W95 FAT32 (LBA)

ベストアンサー1

お客様は以前の指示に従い、Windows が MBR パーティションを使用すると予想しています。

「無効な署名」エラーは、セキュアブートが有効になっていることを示します。セキュアブートが有効になると、すべてのブートローダは秘密キーで署名され、一致する公開キーはファームウェアNVRAMのセキュアブート変数に含める必要があります。 GRUB は、ユーザーが指定したパーティションの最初のセクタを忠実に読み込みますが、そのセクタに適切なセキュアブートシグネチャが含まれていないため、ファームウェアはそのセクタの実行を拒否します。

セキュアブートには、デフォルトのUEFIスタイルブートが前提条件として必要です。システムでセキュアブートを無効にすることはできますが、GRUBがすでに起動しているため、これは不要な場合があります。

insmod part_gptディスクには通常、UEFIブートスタイルで使用されるGPTスタイルのパーティションがあると予想されますが、set root=(hd0,msdos2)MBRパーティションも必要であることが示唆されています。

GPTパーティションを使用するDebianシステムでは、次の行は次のset rootとおりですset root='hd0,gpt1'。システムがGPTパーティションを使用している場合は、gptN代わりにパーティション識別子を使用してくださいmsdosN

GRUBはまた、chainloader +1パーティションの最初のブロックからブートブロックを読み取るように指示されます。 UEFIのデフォルトブートにはそのようなものはありません。 UEFIモードでWindowsを起動するには、set root行がWindowsブートローダを含むEFIシステムパーティションを指す必要があり、チェーンローダ行はchainloader /EFI/Microsoft/Boot/bootmgfw.efi

おすすめ記事