これについてはかなり議論されているようですが、簡単な答えは見つかりません。
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-pc
BIOS/CSM/レガシー モード用とgrub-efi-amd64
EFI/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 がアンインストールされたことに注意してください。