Red Hat Training

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

25.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 は、より多くのハードウェア設定、ファイルシステム、ドライブレイアウトをサポートしています。

アップグレードの要件

Red Hat Enterprise Linux 7 システムをアップグレードする前に、GRUB Legacy の手動でのバックアップを実行してください。GRUB Legacy は、grub パッケージで利用できる点に注意してください。

手順25.2 GRUB Legacy の手動でのバックアップを作成

  1. grub パッケージをダウンロードします。
    ~]#  yum reinstall -y --downloadonly grub
  2. ダウンロードパッケージを見つけます。
    ~]# find /var/cache/yum/ | grep "grub"

    注記

    yum のデフォルトキャッシュロケーションを変更していない場合、キャッシュは /var/cache/yum/ ディレクトリーにあります。yum のデフォルトキャッシュロケーションを変更している場合は、設定を確認してください。詳細は「Working with Yum Cache」「Configuring Yum and Yum Repositories」 を参照してください。
  3. /root/ ディレクトリーなど、パッケージを安全な場所にコピーします。
    ~]# cp /var/cache/yum/x86_64/6Server/rhel/packages/grub-0.97-99.el6.x86_64.rpm /root/

    重要

    grub パッケージを /boot/ ディレクトリーにコピーしないでください。/boot/ に十分な空きスペースがないと、RHEL 6 から RHEL 7 へのインプレースアップグレードに失敗することがあります。詳細は、プレアップグレードおよびアップグレードのドキュメントを参照してください。

オペレーティングシステムのインプレースアップグレード後に GRUB Legacy から GRUB 2 へアップグレード。

手順25.3 GRUB Legacy から GRUB 2 へのアップグレード

  1. バックアップから grub パッケージをインストールします。
    ~]# rpm --install --force --nodeps grub-0.97-99.el6.x86_64.rpm
    この手順は、GRUB Legacy から GRUB 2 へのアップグレードが途中で失敗した場合のリカバリーオプションを確保します。パッケージには様々なバージョンが存在する可能性もあるため、バックアップしたパッケージの正確な名前を使用する必要がある点に注意してください。
  2. grub2 パッケージがインストールされていることを確認します。RHEL 7 へのアップグレード後に grub2 がシステム上にない場合は、以下を実行して手動でインストールできます。
    ~]# yum install grub2

起動可能なデバイスのファイルを決める

  1. 起動可能なデバイス向けに GRUB Legacy の表示記号を探します。そのためには、GRUB Legacy 設定ファイルの /boot/grub/grub.conf を表示し、root 行を探します。
    # grub.conf generated by anaconda
    #
    # Note that you do not have to rerun GRUB 2 after making changes to this file
    # NOTICE:  You have a /boot partition.  This means that
    #          all kernel and initrd paths are relative to /boot/, eg.
    #          root (hd0,0)
    #          kernel /vmlinuz-version ro root=/dev/mapper/vg_rhel68-lv_root
    #          initrd /initrd-[generic-]version.img
    #boot=/dev/sda
    default=0
    timeout=5
    splashimage=(hd0,0)/grub/splash.xpm.gz
    hiddenmenu
    title Red Hat Enterprise Linux Server (2.6.32-642.4.2.el6.x86_64)
    root (hd0,0)
    kernel /vmlinuz-2.6.32-642.4.2.el6.x86_64 ro root=/dev/mapper/vg_rhel68-lv_root rd_NO_LUKS  KEYBOARDTYPE=pc KEYTABLE=us LANG=en_US.UTF-8 rd_NO_MD SYSFONT=latarcyrheb-sun16 crashkernel=auto rd_LVM_LV=vg_rhel68/lv_root rd_LVM_LV=vg_rhel68/lv_swap rd_NO_DM rhgb quiet
    initrd /initramfs-2.6.32-642.4.2.el6.x86_64.img
    title Red Hat Enterprise Linux 6 (2.6.32-642.el6.x86_64)
    root (hd0,0)
    kernel /vmlinuz-2.6.32-642.el6.x86_64 ro root=/dev/mapper/vg_rhel68-lv_root rd_NO_LUKS  KEYBOARDTYPE=pc KEYTABLE=us LANG=en_US.UTF-8 rd_NO_MD SYSFONT=latarcyrheb-sun16 crashkernel=auto rd_LVM_LV=vg_rhel68/lv_root rd_LVM_LV=vg_rhel68/lv_swap rd_NO_DM rhgb quiet
    initrd /initramfs-2.6.32-642.el6.x86_64.img
    各メニューエントリーについて、root 行は起動可能なデバイスを指定しています。この例では、hd0,0 が起動可能なデバイスです。
  2. /boot/grub/device.map が正確でない場合のみ、この手順を実行します。この状況は、たとえば、ハードウェア設定の変更後に発生することがあります。
    1. /boot/grub/device.map を再作成します。
      ~]# grub-install --recheck /dev/sda
      古い設定は /boot/grub/device.map.backup に自動的にバックアップが作成されます。
    2. 前の手順でデバイスマッピング設定が壊れてしまった場合は、バックアップを復元します。
      ~]# rm /boot/grub/device.map
      ~]# cp /boot/grub/device.map.backup /boot/grub/device.map
  3. デバイスファイルに対する GRUB Legacy のデバイスの表示記号のマッピングを決定します。そのためには、/boot/grub/device.map ファイルで、手順 1 で見つけたデバイスに対応するエントリーを見つけます。
    # this device map was generated by anaconda
    (hd0)     /dev/sda
    (hd1)     /dev/sdb
    この例では、デバイス hd0 のデバイスファイルは /dev/sda として一覧に表示されています。
    デバイスファイルの名前を書き留めておいてください。これは次の手順で使用します。

GRUB 2 設定ファイルの生成

元の GRUB Legacy 設定を削除せずに、 GRUB 2 設定を追加します。GRUB 2 が正常に作動しない場合に備えて、GRUB Legacy 設定を残します。
  1. GRUB 2 ファイルを /dev/sdX ディスクの /boot/grub/ ディレクトリーにインストールします。
    ~]# grub2-install --grub-setup=/bin/true /dev/sdX
    /dev/sdX「起動可能なデバイスのファイルを決める」 で決めた起動可能なデバイスファイルに置き換えます。
    --grub-setup=/bin/true オプションで、古い GRUB Legacy 設定が削除されないようにします。

    警告

    設定ファイル拡張子の違いに気を付けてください。
    • .conf は、GRUB 向けです。
    • .cfg は、GRUB 2 向けです。
    次の手順で、誤って古い GRUB 設定ファイルを上書きしないよう気を付けてください。
  2. /boot/grub2/grub.cfg を生成します。
    ~]# grub2-mkconfig -o /boot/grub2/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 から起動します。
  1. 新しいセクションを /boot/grub/grub.conf に追加します。
    title GRUB 2 Test
    root (hd0,0)
    kernel /grub2/i386-pc/core.img
    boot
    (hd0,0)GRUB Legacy の起動可能なデバイスの表示記号と置き換えます。
  2. システムを再起動します。
  3. GRUB Legacy メニューが表示されたら、GRUB 2 Test エントリーを選択します。
  4. GRUB 2 メニューが表示されたら、起動するカーネルを選択します。
  5. 上記がうまく機能しない場合は再起動し、次の起動時に GRUB 2 Test エントリーを選択 しない でください。

GRUB Legacy の置き換えおよび削除

GRUB 2 が正常に機能したら、GRUB Legacy を置き換え、システムから削除します。
  1. GRUB Legacy 起動セクターを GRUB 2 ブートローダーで上書きします。
    ~]# grub2-install /dev/sda
  2. grub パッケージをアンインストールします。
    ~]# yum remove grub
GRUB 2 へのアップグレードはこれで完了です。