web-dev-qa-db-ja.com

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にアップグレードすることにこれほどの問題がある場合の利点はありますか?)。 ).

考えですか?

38
Robert S

まず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サイズをわずかに下回っていますが、ほんの数セクター分です。おそらくうまくいくでしょうが、将来的には失敗する可能性があります) BIOS起動パーティション用のスペースを確保するために、パーティションを1〜2MiB縮小することができます。これは従来の場所ですが、このパーティションはディスク上の最初のパーティションである必要はありません必要はありません

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

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

19
Rod Smith

古いスタイルのBIOS起動モードでGPTパーティションを使用したい場合は、grub-installを付けてgrubをインストールしたいデバイス上に数メガバイト(16MiBでも大丈夫で将来的には有効)のBIOSパーティションを作成する必要があります。

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

# 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
6
Flow

ブートパーティションは、動作させるためにfat32でフォーマットする必要があります。

mkfs.vfat -F32 /dev/sdXY

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

また、起動フラグをオンにする必要があります。

set 1 boot on
3
Kevin Huntly