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


41

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

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にアップグレードすることには本当に利点がありますか?)。

考え?

回答:


23

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

EFI / UEFIモードでの起動は、ハッキングのようなものではありません。しかし、EFIの実装は品質が大きく異なり、EFIのWeb上の全体的な専門知識とサポートのレベルは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 / legacyモードgrub-efi-amd64用とEFI / UEFIモード用です。EFIモードのインストールでは、GRUB(おそらくライブCD / USB)をEFIモードでインストールするために使用しているものを何でもブートする必要があります。これを行うには、コンピューターの組み込みのブートマネージャーを使用する必要があります。これは通常、ファンクションキーを介してアクセスされますが、詳細はコンピューターによって異なります。


非常に役立つ答えをありがとう。仮想マシンで動作するものを少しいじってもらいました。「実稼働」マシン(2台のハードドライブを搭載)でこれを実行しようとすると、いくつかの問題grub2-install grub-setup=/bin/true /dev/sdaがありgrub2-install: error: More than one install device?.ます。稼働中のVMでは開始セクターは32としてマークされていますが、実動マシンでは2048です。これが関連するかどうかはわかりません。
ロバートS

Flowが答えで示唆しているように、BIOSブートパーティションのパーティションタイプは0x04に設定する必要があります。0x04でなければ、grubはインストールに失敗します。これは、たとえばfdiskの「t」コマンドで設定できます。
user1225999

BIOSブートパーティションなしで grub 2をインストールする方法はありますか?UEFIのみを使用します。
CMCDragonkai

1
EFIモードのインストールでは、GRUB 2はBIOSブートパーティションを使用しません。GRUBが要求している場合、EFIモードではなくBIOSモードで起動している可能性があります。:件名に私のWebページ上で説明したようにしてくださいあなたのCSMは、無効になっていることを、あなたのブートオプションをチェックrodsbooks.com/efi-bootloaders/csm-good-bad-ugly.html
ロッド・スミス

6

古いスタイルの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

3

ブートパーティションを機能させるには、fat32でフォーマットする必要があります

mkfs.vfat -F32 /dev/sdXY

あなたのためにそれを修正する必要があります

また、ブートフラグをpartedでオンにする必要があります。

set 1 boot on
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.