kdump サービス起動失敗の対処 "kexec_file_load failed: Required key not available"


RHEL8へのインプレースアップグレードで、サービス起動エラー

RHEL7.8->8.2のleappを使ったインプレースアップグレードを実行した後、
サービスを確認したところ、以下2つのサービスが”Failed”。

  • Postgresql
  • kdump

PostgreSQLのエラー対処

PostgreSQLについては、OSアップグレードの中でバージョンアップしており、サービス起動時に(Postgreesの)アップグレードユーティリティを実行しようとして、インストールされていなかった事による起動失敗だったので、postgresql-upgradeをインストール、アップグレードして、サービス正常起動。

# yum install postgresql-upgrade
# postgresql-setup --upgrade

kdumpのエラー対処

kdumpについては以下のエラーでサービス起動失敗している

# systemctl status kdump
:
* kdump.service loaded failed failed Crash recovery kernel arming
* kdump.service - Crash recovery kernel arming
  Loaded: loaded (/usr/lib/systemd/system/kdump.service; enabled; vendor preset: enabled)
 Process: 25875 ExecStart=/usr/bin/kdumpctl start (code=exited, status=1/FAILURE)
localhost.localdomain dracut[27907]: *** Creating initramfs image file '/boot/initramfs-3.10.0-957.el7.x86_64kdump.img' done ***
localhost.localdomain kdumpctl[25875]: Secure Boot is enabled. Using kexec file based syscall.
localhost.localdomain kdumpctl[25875]: kexec_file_load failed: Required key not available
localhost.localdomain kdumpctl[25875]: kexec: failed to load kdump kernel
localhost.localdomain kdumpctl[25875]: Starting kdump: [FAILED]
localhost.localdomain systemd[1]: kdump.service: main process exited, code=exited, status=1/FAILURE
localhost.localdomain systemd[1]: Unit kdump.service entered failed state.
localhost.localdomain systemd[1]: kdump.service failed.

アップグレードでセキュアブートが有効となったが、UEFIの鍵データベースに必要なキーが存在しないことによる起動失敗と推測。

localhost.localdomain kdumpctl[25875]: kexec_file_load failed: Required key not available

RHEL7の現象についてだが、以下のKBのワークアラウンドを参考にしてみる。
kdump service fails with message "kexec_file_load failed: Required key not available"

  1. キーのインポート

    # mokutil --import /usr/share/doc/kernel-keys/<kernel-ver>/kernel-signing-ca.cer
    input password:
    input password again:
    

    パスワードを求められるので、適当なパスワードを決めて入力する

    参考: RHEL8 カーネルの管理、監視、および更新

  2. 再起動

    # reboot
    
  3. 直後、青い画面(Shim UEFI鍵管理コンソール)が表示されるので、キーボードでなんらかのキーを押す。

    Shim UEFI鍵管理コンソール

    ここでキーを時間内に押さないと通常のブートが始まってしまう。

  4. [Perform MOK management]画面で、[Enroll MOK]を選択。

  5. [Enroll the key(s)?]画面で[Yes]を選択してから、上記で設定したパスワードを入力。

  6. [The system must now be rebooted]画面で[OK]を選択後、再起動。

  7. OS起動後、サービスの状態確認

  8. # systemctl status kdump
    ● kdump.service - Crash recovery kernel arming
    Loaded: loaded (/usr/lib/systemd/system/kdump.service; enabled; vendor preset: enabled)
    Active: active (exited) since Thu 2020-08-20 14:03:57 JST; 22min ago
    Main PID: 2069 (code=exited, status=0/SUCCESS)
        Tasks: 0 (limit: 100065)
    Memory: 0B
    CGroup: /system.slice/kdump.service
    
    8月 20 14:03:55 athena01 systemd[1]: Starting Crash recovery kernel arming...
    8月 20 14:03:56 athena01 kdumpctl[2069]: Secure Boot is enabled. Using kexec file based syscall.
    8月 20 14:03:57 athena01 kdumpctl[2069]: kexec: loaded kdump kernel
    8月 20 14:03:57 athena01 kdumpctl[2069]: Starting kdump: [OK]
    8月 20 14:03:57 athena01 systemd[1]: Started Crash recovery kernel arming.
    

kdumpの起動確認。