26.8. GRUB Legacy から GRUB 2 へのアップグレード
Red Hat Enterprise Linux (RHEL) バージョン 6 を 7 へインプレースアップグレードを行う場合は、GRUB Legacy
から GRUB 2
へのアップグレードは自動的に行われませんが、手動で実行できます。以下の理由から GRUB アップグレードを実行します。
-
RHEL 7 以降では、
GRUB Legacy
は維持されず、更新を受信しません。 -
GRUB Legacy
は/boot/
ディレクトリーがないと、システム上で起動できません。 -
GRUB 2
はより機能が豊富で、信頼性に優れています。 -
GRUB 2
は、より多くのハードウェア設定、ファイルシステム、ドライブレイアウトをサポートしています。
オペレーティングシステムのインプレースアップグレード後に GRUB Legacy から GRUB 2 へアップグレード。
GRUB Legacy から GRUB 2 へのアップグレード
GRUB Legacy パッケージが Red Hat Upgrade Tool によりアンインストールされていることを確認します。
~]# yum remove grub
注記grub2 パッケージをアンインストールしても、インストールされている GRUB Legacy ブートローダーには影響しません。
grub2 パッケージがインストールされていることを確認します。RHEL 7 へのアップグレード後に grub2 がシステムにない場合は、以下を実行して手動でインストールできます。
~]# yum install grub2
EFI を使用してシステムを起動した場合は、以下のパッケージをインストールします。
~]# yum install grub2-efi-x64 shim-x64
GRUB 2 設定ファイルの生成
本セクションでは、GRUB Legacy
設定を削除せずに GRUB 2
設定を追加する方法を説明します。GRUB 2
が正常に作動しない場合に備えて、GRUB Legacy
設定を残します。
以下のオプションのいずれかを使用して、
/etc/default/grub
ファイルを手動で作成します。-
/etc/default/grub
ファイルを作成します。詳細は、How to re-create the missing /etc/default/grub file in Red Hat Enterprise Linux 7?の記事を参照してください。 -
同様の Red Hat Enterprise Linux 7 システムから
/etc/default/grub
ファイルをコピーし、そのファイルを調整します。
-
ブートローダーにより異なります。
システムがレガシー BIOS を使用して起動する場合は、インストールデバイスを指定して
GRUB2
をインストールします。~]# grub2-install /dev/<DEVICE_NAME> --grub-setup=/bin/true
grub2-install
コマンドは、GRUB イメージを/boot/grub
ターゲットディレクトリーにインストールします。--grub-setup=/bin/true
オプションで、古いGRUB Legacy
設定が削除されないようにします。EFI を使用してシステムを起動している場合は、shim ブートローダーのブートエントリーを作成し、
BootOrder
変数を変更して、shim
によってファームウェアブート GRUB 2 を設定します。~]# efibootmgr -c -L 'Red Hat Enterprise Linux 7' -d /dev/device_name -p 1 -l '\EFI\redhat\shimx64.efi'
/dev/device_name を、起動可能なデバイスファイルに置き換えます。
警告設定ファイル拡張子の違いに気を付けてください。
-
.conf
は、GRUB
向けです。 -
.cfg
は、GRUB 2
向けです。
次の手順で、誤って古い
GRUB
設定ファイルを上書きしないよう気を付けてください。GRUB 2
設定ファイルを生成します。システムがレガシー BIOS を使用する場合は、以下を行います。
~]# grub2-mkconfig -o /boot/grub2/grub.cfg
システムが EFI を使用する場合は、以下を行います。
~]# grub2-mkconfig -o /boot/efi/EFI/redhat/grub.cfg
注記生成した
GRUB 2
設定ファイルをカスタマイズするには、「GRUB 2 設定ファイルのカスタマイズ」 を参照してください。変更は、/boot/grub2/grub.cfg
に直接行うのではなく、/etc/default/grub
に行う必要があります。/boot/grub2/grub.cfg
を直接変更しても、ファイルが再生成されるたびに変更が失われることになります。
GRUB Legacy ブートローダーをインストールしたまま GRUB 2 のテスト
本セクションでは、GRUB Legacy
設定を削除せずに GRUB 2
をテストする方法を説明します。GRUB Legacy
設定は、GRUB 2
設定の検証が終わるまでそのままにします。GRUB 2
設定を安全にテストするために、GRUB 2
を GRUB Legacy
から起動します。
このセクションは、レガシー BIOS ブートにのみ適用されます。EFI の場合、古いブートローダーと新しいブートローダーの両方にブートエントリーが存在し、EFI ファームウェア設定で任意のブートエントリーを選択することで、古いレガシーの GRUB を起動できます。
新しいセクションを
/boot/grub/grub.conf
に追加します。システムに別の
/boot
パーティションがある場合は、以下を使用します。title GRUB 2 Test root (hd0,0) kernel /grub2/i386-pc/core.img boot
(hd0,0) を
GRUB Legacy
の起動可能なデバイスの表示記号と置き換えます。システムに個別の
/boot
パーティションがない場合は、以下を使用します。title GRUB 2 Test root (hd0,0) kernel /boot/grub2/i386-pc/core.img boot
(hd0,0) を
GRUB Legacy
の起動可能なデバイスの表示記号と置き換えます。- システムを再起動します。
-
GRUB Legacy
メニューが表示されたら、GRUB 2 Test
エントリーを選択します。 -
GRUB 2
メニューが表示されたら、起動するカーネルを選択します。 -
上記がうまく機能しない場合は再起動し、次の起動時に
GRUB 2 Test
エントリーを選択しないでください。
BIOS を使用するシステムで GRUB Legacy ブートローダーの置き換え
GRUB 2 が正常に機能している場合は、以下を行います。
GRUB Legacy ブートローダーを GRUB 2 ブートローダーに置き換えます。
~]# grub2-install /dev/sdX
古い GRUB Legacy 設定ファイルを削除します。
~]# rm /boot/grub/grub.conf
システムを再起動します。
~]# reboot
EFI を使用するシステムの GRUB Legacy の削除
GRUB 2 が正常に機能している場合は、以下を行います。
/boot/efi/EFI/redhat/
ディレクトリーのコンテンツを確認して、Legacy GRUB のみに関連する古くなったファイルを削除します。~]# rm /boot/efi/EFI/redhat/grub.efi ~]# rm /boot/efi/EFI/redhat/grub.conf
Preupgrade Assistant ユーティリティーおよび Red Hat Upgrade Tool ユーティリティーを使用して RHEL 6 から RHEL 7 へのインプレースアップグレードを実行した場合は、
.preupg
接尾辞が付いたファイルのバックアップコピーも削除します。~]# rm /boot/efi/EFI/redhat/*.preupg
efibootmgr
コマンドを使用して\EFI\redhat\grub.efi
ファイルを参照する古いブートエントリーを見つけます。~]# efibootmgr -v | grep '\\EFI\\redhat\\grub.efi'
出力例:
Boot0001* Linux HD(1,GPT,542e410f-cbf2-4cce-9f5d-61c4764a5d54,0x800,0x64000)/File(\EFI\redhat\grub.efi)
この場合のエントリー番号は
0001
です。指定したブートエントリーを削除します。次のコマンドは、上記の例からブートエントリーを削除します。
~]# efibootmgr -Bb 0001
複数のブートエントリーがある場合は、特定された古いブートエントリーをすべて削除します。
RHEL 6 などの古いリリースから RHEL 7 にアップグレードしたら、 GRUB Legacy ブートローダーの GRUB 2 への手動アップグレードが正常に完了するまで、オペレーティングシステムはサポートされません。これは、メジャーリリース間でのパッケージのインストールがサポートされていないためです。RHEL 6 の GRUB Legacy とは異なり、RHEL 7 の場合は、GRUB 2 のみがサポート、開発、およびテストされます。