grub2-install: 「この GPT パーティション ラベルには BIOS ブート パーティションが含まれていません」

grub2-install: 「この GPT パーティション ラベルには BIOS ブート パーティションが含まれていません」

これについてはかなり議論されているようですが、簡単な答えは見つかりません。

grub2 をインストールしようとすると、次のエラーが発生します:

# grub2-install /dev/sda
Installing for i386-pc platform.
grub2-install: warning: this GPT partition label contains no BIOS Boot Partition; embedding won't be possible.
grub2-install: warning: Embedding is not possible.  GRUB can only be installed in this setup by using blocklists.  However, blocklists are UNRELIABLE and their use is discouraged..
grub2-install: error: will not proceed with blocklists.

/dev/sda のレイアウトは次のとおりです。

Disk /dev/sda: 111.8 GiB, 120034123776 bytes, 234441648 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: gpt
Disk identifier: 7ECE06D0-9F0C-44FF-BCFB-142283172CCA

Device        Start       End   Sectors  Size Type
/dev/sda1      2048    411647    409600  200M Linux filesystem (/boot)
/dev/sda2    411648   4605951   4194304    2G Linux swap
/dev/sda3   4605952  46548991  41943040   20G Linux filesystem (/)
/dev/sda4  46548992 234441614 187892623 89.6G Linux LVM (/var)

この問題を回避する簡単な方法はありますか? ディスクの先頭に「BIOS ブート パーティション」として小さなパーティションを作成する必要があることは理解しています。 1 つのオプションは、スワップを論理ボリュームとして /dev/sda4 に移動し、/dev/sda2 を /boot として使用することだと思います。

あるいは、grub-legacyに戻って、そのことを心配しなくてもいいのです(本当にこれほど多くの問題が発生するのであれば、grub2 にアップグレードする利点はあるのでしょうか?

ご意見は?

答え1

まず、BIOS/CSM/レガシー モード ブートを使用するか、EFI/UEFI モード ブートを使用するかを決定する必要があります。前者は 1980 年代から PC がブートする方法ですが、醜くハックっぽいシステムであり、すぐに絶滅するでしょう。Windows は BIOS モード ブートを MBR パーティション テーブルに結び付けますが、これは使用されていません (ただし、使用することはできます。ディスクは GPT を必要とするほど大きくありません)。Linux、FreeBSD、およびその他のほとんどの最新 OS はより柔軟で、GPT からの BIOS モード ブートをサポートしていますが、ファームウェアによって複雑になる場合があり、もちろん、後で Windows をデュアル ブート セットアップでインストールすることにした場合は、変更や妥協が必要になります。

EFI/UEFI モードのブートはそれほどハックではありませんが、EFI の実装は品質に大きくばらつきがあり、Web 上の EFI に関する専門知識とサポートの全体的なレベルは BIOS よりも低くなっています。Windows は GPT の使用を EFI モードのブートに結び付けているため、コンピューターに Windows をインストールする予定がある場合は、間違いなく EFI を選択してください。古いコンピューターは BIOS のみです。EFI は 2011 年半ばに市場で普及し始めたため、それより古いコンピューターの場合は EFI を使用できない可能性があります。

BIOSモードで起動する場合は、BIOS ブート パーティションディスクの先頭にこのパーティション用の十分なスペースがありますが、これを機能させるにはセクター アラインメント値を 1 (通常の 2048 から) に設定する必要があります。 でこれが実行できるかどうかはすぐにはわかりませんがparted、 で実行できますgdisk。 (ディスクの先頭のスペースは、BIOS ブート パーティションの推奨サイズである 1MiB をわずかに下回っていますが、わずか数セクター分です。おそらく問題なく動作しますが、将来的に失敗する可能性もあります。) または、パーティションのいずれかを 1 ~ 2MiB 縮小して、BIOS ブート パーティション用のスペースを確保することもできます。このパーティションはないディスク上の最初のパーティションに配置する必要がありますが、これが通常の場所です。

EFI/UEFIモードで起動する場合は、EFI システム パーティション (ESP)。このパーティションは FAT 形式でフォーマットされている必要があり、BIOS ブート パーティションよりも大幅に大きくなければならないため、作成するにはサイズを変更する必要があります。550MiB のサイズをお勧めしますが、緊急の場合はその 10 分の 1 でも問題ないかもしれません。

GRUB をインストールするには、まず正しい GRUB パッケージがインストールされていることを確認する必要があります。すべてのディストリビューションでの名前はわかりませんが、Ubuntu では、grub-pcBIOS/CSM/レガシー モード用とgrub-efi-amd64EFI/UEFI モード用になります。EFI モードでのインストールでは、GRUB のインストールに使用しているもの (おそらくライブ CD/USB) を EFI モードで起動する必要もあります。これを行うには、コンピューターに組み込まれているブート マネージャーを使用する必要がある場合があります。通常はファンクション キーを使用してアクセスしますが、詳細はコンピューターによって異なります。

答え2

すでにこの小さなパーティションがあるので、最初のパーティションは1ではなく2048から始まります。

/dev / sda1 2048 411647 409600 200M Linux file system (/boot)

ラベルの種類を変更する必要があります。ブートバイオス_グラブたとえばpartedを通して:

parted /dev/sda
set 1 boot off
set 1 bios_grub on
q

また:

grub2-install /dev/sda

答え3

古いスタイルの BIOS ブート モードで GPT パーティションを使用する場合は、grub をインストールするデバイスに数メガバイト (16MiB で十分であり、将来性があるはずです) の BIOS パーティションを作成する必要がありますgrub-install

たとえば、fdiskディスク上のどこかに「BIOS ブート」タイプのパーティションを作成するために使用します。出力例:

# fdisk -l /dev/sda
Disk /dev/sda: 931.5 GiB, 1000204886016 bytes, 1953525168 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: gpt
Disk identifier: 57E16A16-36B4-4445-A216-031EF6501415

Device        Start        End    Sectors   Size Type
/dev/sda1      2048    4196351    4194304     2G Linux RAID
/dev/sda2   4196352   35653631   31457280    15G Linux RAID
/dev/sda3  35653632   37750783    2097152     1G Linux swap
/dev/sda4  37750784   37816319      65536    32M BIOS boot
/dev/sda5  37816320 1953525134 1915708815 913.5G Linux LVM

答え4

ちょうど今、GPT ディスク (Ubuntu 18.04 Server) を搭載した EFI モードのマシンでこの問題が発生しました。ある日、マシンが GRUB シェルまでしか起動しなくなってしまいました。

どういうわけか、grub-pc (BIOS モード / i386 マシン用) はインストールされていましたが、grub-efi はインストールされていませんでした。問題が特定されると、修正は簡単でした。

# apt install grub-efi
# update-grub
# grub-install

最初のコマンドで grub-pc がアンインストールされたことに注意してください。

関連情報