標準様式

grub2 がクラッシュした場合の復旧方法

版

版

日付

記述

発行

作成

日付

記述

発行

作成

版

日付

2018/11/28

記述

1

発行

プロフェッショナルサービス

作成

表題

grub2 がク ラッシュした場 合の復旧方法

確認

承認

確認

承認

新規発行
確認
No

承認
版
ﾍﾟｰｼﾞ

11/5

標準様式
RedHawk7./7.5 で、grub2 がクラッシュした場合に、 grub2-install を実行しても、復旧しない原因と対策を報告します。

原因は、
http://download.rhn.redhat.com/errata/RHBA -2018-3264.htmlに記述されていますが、XFS の CRC が有効になると、grub2 がこれを拒否するようです。
grub2 は、grub2-2.02-0.65 が最高で、これ以降の版は、RHEL/CentOS ではサポートされていません。
---------------------------------------------RHEL/CentOS7.2 では、xfs_info /boot を実行すると crc = 0 を出力します。
mkfs.xfs のマンページは以下のように変更されています。

RHEL/CentOS7.2
では、デフォルトで、 mkfs.xfs はメタデータ CRC を有効にしません。
RHEL/CentOS7.3 , RHEL/CentOS 7.5
では、デフォルトで、 mkfs.xfs はメタデータ CRC を有効にします。

また、次の文が xfs_admin の man ページにあります。
----------------------------------U uuid
フ ァ イ ル シ ス テ ム の UUID を uuid に 設 定 し ま す 。 サ ン プ ル の UUID は 、"c1b9d5a2-f162-11cf-9ece-0020afc76f16"のようになります。
UUID はまた、ヌル UUID にファイルシステムの UUID をセットした、ゼロであっても よいです。uuid も生成され、ファイルシステム用の新しい UUID が生成されます。CRC が 有
効なファイル システム では、古いカ ーネルが ファイルシス テムをマ ウントできな いように、これは互換性のないフラグを設定することに注意してください。この互換性のないフラグを削除するには、restore を使用して元の UUID を復元し、必要に応じて互換性のない機能フラグを削除します。
----------------------------------つまり、互換性のないフラグが CRC 有効に設定されています。
そして、互換性のないフラグは、grub2-install の古いコードでチェックされ、XFS フォーマットを検出することができません。

表題

grub2 がク ラッシュした場 合の復旧方法

No版
ﾍﾟｰｼﾞ

1
2/5

標準様式
grub2 がクラッシュした場合の復旧方法

CentOS7.3/7.5 の レ ス キ ュ ー モ ー ド で 起 動 し て も 、 同 一 バ ー ジ ョ ン の も の で あ る た め 、grub2-2.02-0.65 の grub2-install では復旧しません。

また、現在リリースされている RHEL/CentOS 版

grub2-2.02-0.65 では、本不具合には対応していません。

結論としては、ORACLE Linux の grub2-2.02-0.76 をインストールすると解決します。
https://mirror.netcologne.de/oracle-linux-repos/ol7_latest/getPackage/
以下は、RedHawk7.5 で確認しました。

方法１①

grub2-2.02-0.65 のまま、復旧させる

CentOS のレスキューモードで立ち上げる。

②/mnt/systemimage 下にディスクの内容がマウントされていますので、この状態で、外部USB ディスクにバックアップを tar で作成します。
なお、マウントは手動で行う必要があり、シングルディスクの場合には、sda レスキューDVD
sdb 起動ディスクになっていますので、USB ディスクはsdc です。

従って、# mkdir /backup# mount /dev/sdc1 /backup# cd /mnt/sysimage# tar xvfz ../../backup/root/image.tar.gz# cd /; umount /backup;sync③

バックアップが取れたので、再度起動ディスクに RedHawk をインストールします。

④バックアップイメージの必要な部分をコピーします。

表題grub2 がク ラッシュした場 合の復旧方法

No版ﾍﾟｰｼﾞ

13/5

標準様式
方法２

grub2-2.02-0.76 をインストールして、復旧させる

CentOS のレスキューモードで立ち上げる。

①②/mnt/systemimage 下にディスクの内容がマウントされていますので、以下の手順で復旧させます。

# chroot /mnt/sysimage# source /etc/bashrc

USB を挿入し、grub2-2.02-0.76 をインストールします。

③# mount /dev/sdc1 /mnt
# cd /usr/local/src# tar xvfz /mnt/grub2-2.02-0.76.gz# cd grub2-2.02-0.76# ./upgrade.sh
この時、grub2-2.02-0.65が削除され grub2-2.02-0.76 がインストールされます

grub2-install を実行し、再起動します。

④# grub2-install /dev/sdb# exit<== 起動ディス クは sdb です<== chroot が終了# exit<==レスキューモード終了し、reboot します

upgarde.sh の内容#!/bin/sh
rpm -e --nodeps grub2-1:2.02-0.65.el7.centos.2.x86_64
if [ -d /usr/lib/grub/x86_64-efi ]thenrpm -e --nodeps grub2-efi-x64-2.02-0.65.0.2.el7.x86_64
rpm -e --nodeps grub2-efi-x64-modules-2.02-0.65.0.2.el7.noarchelse
rpm -e --nodeps grub2-pc-2.02-0.65.el7.centos.2.x86_64
rpm -e --nodeps grub2-pc-modules-2.02-0.65.el7.centos.2.noarchfi
表題grub2 がク ラッシュした場 合の復旧方法

No版ﾍﾟｰｼﾞ

14/5

標準様式
rpm -e --nodeps grub2-tools-extra-2.02-0.65.el7.centos.2.x86_64
rpm -e --nodeps grub2-tools-2.02-0.65.el7.centos.2.x86_64
rpm -e --nodeps grub2-tools-minimal-2.02-0.65.el7.centos.2.x86_64
rpm -e --nodeps grub2-common-2.02-0.65.el7.centos.2.noarch

rpm -ivh grub2-common-2.02-0.76.0.3.el7.noarch.rpm
rpm -ivh grub2-tools-minimal-2.02-0.76.0.3.el7.x86_64.rpm
rpm -ivh grub2-tools-2.02-0.76.0.3.el7.x86_64.rpm
rpm -ivh grub2-tools-extra-2.02-0.76.0.3.el7.x86_64.rpm
if [ -d /usr/lib/grub/x86_64-efi ]thenrpm -ivh grub2-efi-x64-modules-2.02-0.76.0.3.el7.noarch.rpm
rpm -ivh grub2-efi-x64-2.02-0.76.0.3.el7.x86_64.rpm
else
rpm -ivh grub2-pc-modules-2.02-0.76.0.3.el7.noarch.rpm
rpm -ivh grub2-pc-2.02-0.76.0.3.el7.x86_64.rpm
firpm -ivh grub2-2.02-0.76.0.3.el7.x86_64.rpm

表題

grub2 がク ラッシュした場 合の復旧方法

No版ﾍﾟｰｼﾞ

15/5