Red Hat Training

A Red Hat training course is available for Red Hat Enterprise Linux

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 へのアップグレード

  1. GRUB Legacy パッケージが Red Hat Upgrade Tool によりアンインストールされていることを確認します。

    ~]# yum remove grub
    注記

    grub2 パッケージをアンインストールしても、インストールされている GRUB Legacy ブートローダーには影響しません。

  2. grub2 パッケージがインストールされていることを確認します。RHEL 7 へのアップグレード後に grub2 がシステムにない場合は、以下を実行して手動でインストールできます。

    ~]# yum install grub2
  3. EFI を使用してシステムを起動した場合は、以下のパッケージをインストールします。

    ~]# yum install grub2-efi-x64 shim-x64

GRUB 2 設定ファイルの生成

本セクションでは、GRUB Legacy 設定を削除せずに GRUB 2 設定を追加する方法を説明します。GRUB 2 が正常に作動しない場合に備えて、GRUB Legacy 設定を残します。

  1. 以下のオプションのいずれかを使用して、 /etc/default/grub ファイルを手動で作成します。

  2. ブートローダーにより異なります。

    1. システムがレガシー BIOS を使用して起動する場合は、インストールデバイスを指定して GRUB2 をインストールします。

      ~]# grub2-install /dev/<DEVICE_NAME> --grub-setup=/bin/true

      grub2-install コマンドは、GRUB イメージを /boot/grub ターゲットディレクトリーにインストールします。

      --grub-setup=/bin/true オプションで、古い GRUB Legacy 設定が削除されないようにします。

    2. 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 設定ファイルを上書きしないよう気を付けてください。

  3. GRUB 2 設定ファイルを生成します。

    1. システムがレガシー BIOS を使用する場合は、以下を行います。

      ~]# grub2-mkconfig -o /boot/grub2/grub.cfg
    2. システムが 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 2GRUB Legacy から起動します。

注記

このセクションは、レガシー BIOS ブートにのみ適用されます。EFI の場合、古いブートローダーと新しいブートローダーの両方にブートエントリーが存在し、EFI ファームウェア設定で任意のブートエントリーを選択することで、古いレガシーの GRUB を起動できます。

  1. 新しいセクションを /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 の起動可能なデバイスの表示記号と置き換えます。

  2. システムを再起動します。
  3. GRUB Legacy メニューが表示されたら、GRUB 2 Test エントリーを選択します。
  4. GRUB 2 メニューが表示されたら、起動するカーネルを選択します。
  5. 上記がうまく機能しない場合は再起動し、次の起動時に GRUB 2 Test エントリーを選択しないでください。

BIOS を使用するシステムで GRUB Legacy ブートローダーの置き換え

GRUB 2 が正常に機能している場合は、以下を行います。

  1. GRUB Legacy ブートローダーを GRUB 2 ブートローダーに置き換えます。

    ~]# grub2-install /dev/sdX
  2. 古い GRUB Legacy 設定ファイルを削除します。

    ~]# rm /boot/grub/grub.conf
  3. システムを再起動します。

    ~]# reboot

EFI を使用するシステムの GRUB Legacy の削除

GRUB 2 が正常に機能している場合は、以下を行います。

  1. /boot/efi/EFI/redhat/ ディレクトリーのコンテンツを確認して、Legacy GRUB のみに関連する古くなったファイルを削除します。

    ~]# rm /boot/efi/EFI/redhat/grub.efi
    ~]# rm /boot/efi/EFI/redhat/grub.conf
  2. Preupgrade Assistant ユーティリティーおよび Red Hat Upgrade Tool ユーティリティーを使用して RHEL 6 から RHEL 7 へのインプレースアップグレードを実行した場合は、.preupg 接尾辞が付いたファイルのバックアップコピーも削除します。

    ~]# rm /boot/efi/EFI/redhat/*.preupg
  3. 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 です。

  4. 指定したブートエントリーを削除します。次のコマンドは、上記の例からブートエントリーを削除します。

    ~]# efibootmgr -Bb 0001

    複数のブートエントリーがある場合は、特定された古いブートエントリーをすべて削除します。

警告

RHEL 6 などの古いリリースから RHEL 7 にアップグレードしたら、 GRUB Legacy ブートローダーの GRUB 2 への手動アップグレードが正常に完了するまで、オペレーティングシステムはサポートされません。これは、メジャーリリース間でのパッケージのインストールがサポートされていないためです。RHEL 6 の GRUB Legacy とは異なり、RHEL 7 の場合は、GRUB 2 のみがサポート、開発、およびテストされます。