CentOS9 でKernel起動失敗 bad shim signature.

CentOS Stream 9において, kernel 5.14.0-171.el9.x86-_64 をインストールした際に、

error: ../../grub-core/kern/efi/sb.c:183:bad shim signature.
error: ../../grub-core/loader/i386/efi/linux.c:259:you need to load the kernel first.

Press any key to continue...

と表示されて起動しなくなりました。

Bootメニューで1つ前のカーネルを指定すれば起動しますが自動起動しなくなるので大変です。
原因はわかりませんがKernelを元に戻す方法を調べました。

カーネルバージョンを元に戻す方法

上記を参考にしていますが、
まずは1つ前のカーネルで起動します。以下rootで操作しています。

# grubby --info=ALL | grep kernel
kernel="/boot/vmlinuz-5.14.0-171.el9.x86_64"
kernel="/boot/vmlinuz-5.14.0-168.el9.x86_64"
kernel="/boot/vmlinuz-0-rescue-1549a6774d694c8db1fba3a18bab70eb"

171が起動しないカーネル。168が一つ前のカーネル(起動中)

168にデフォルトを変更します。

# grubby --set-default "/boot/vmlinuz-5.14.0-168.el9.x86_64"
The default is /boot/loader/entries/1549a6774d694c8db1fba3a18bab70eb-5.14.0-168.el9.x86_64.conf with index 1 and kernel /boot/vmlinuz-5.14.0-168.el9.x86_64

問題のカーネル(-171)を消すためにインストール済みのリストを取得
この場合は、一番下の kernel-5.14.0-171.el9.x86_64 がそうですね。

# rpm -qa | grep kernel
kernel-core-5.14.0-168.el9.x86_64
kernel-modules-5.14.0-168.el9.x86_64
kernel-5.14.0-168.el9.x86_64
kernel-tools-libs-5.14.0-171.el9.x86_64
kernel-tools-5.14.0-171.el9.x86_64
kernel-core-5.14.0-171.el9.x86_64
kernel-modules-5.14.0-171.el9.x86_64
kernel-5.14.0-171.el9.x86_64

問題のカーネルを消します。(171とつくcoreとmodulesも全部消すのが正しいかと。toolsは168がないので消さない方が良いのかな?とにかく復旧ならkernerlだけ消しとけばOK!問題の先送り!)

# dnf remove kernel-5.14.0-171.el9.x86_64

再起動すれば古いカーネルで正しく起動しました。
原因は不明ですが、再度インストールしても同じエラーがでたのでCentOS側の修正を待つか次のカーネルを待った方が良いと思います。
強いて言えば、今回は試しにCockpit経由で更新作業をしました。その後はコンソール側からdnf updateを行いましたが同じエラーが出ます。

自動アップデートにしてると再度インストールされてしまうので、カーネル(171)を消さない方がいいかもしれません。