3.10 /bootがbtrfsサブボリューム上にある場合、カーネルのアップグレード時にgrubbyの致命的エラーが発生する

/bootがbtrfsサブボリュームでホストされている場合、GRUB 2ではinitramfsおよびvmlinuzのパス名を正しく処理できません。 この問題は、ユーザーが新しいカーネルを更新またはインストールする際と、grubbyがGRUB 2構成の更新を試行する際に発生します。 Oracle Linux 7 update 3のフレッシュ・インストール実行時にRHCKまたはUEKカーネルをアップグレードする場合は、次のエラーが表示されます。

grubby fatal error: unable to find a suitable template

システムの再起動時、カーネルが更新された後に、システムは古いカーネルにブートされます。

同様に、Oracle Linux 7 update 2からOracle Linux 7 update 3へのアップグレード時に、/bootディレクトリがbtrfsサブボリュームでホストされている場合、アップグレードの完了後、システムは古いOracle Linux 7 update 2カーネルにブートされます。

この問題を回避するには、カーネルがインストールまたはアップグレードされた直後に、grub2-mkconfigを使用して/etc/grub2/grub.cfgを再作成します。 次に例を示します。

# grub2-mkconfig -o /boot/grub2/grub.cfg

生成された構成内のカーネル・メニュー・エントリのリストを取得します。

# grep -P "submenu|^menuentry" /boot/grub2/grub.cfg | cut -d "'" -f2

リストからデフォルト・カーネルとして実行するカーネル・エントリを選択し、次のコマンドを使用して、menu entry titleをリストで特定したカーネル・エントリのタイトルに置き換え、このエントリをデフォルトに設定します。

# grub2-set-default "menu entry title"

grub2-editenv listコマンドを使用して、saved_entryが選択したカーネル・メニューのタイトルに更新されていることを確認できます。

再起動し、uname -aを使用して、システムの再起動時に正しいカーネルが動作していることを確認します。

(バグID 22750169)