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)を消さない方がいいかもしれません。