このトピックでは、Alibaba Cloud Linuxオペレーティングシステムを実行するElastic Compute service (ECS) インスタンスで、カーネル修正プログラムの取得、カーネル修正プログラムの有効化または無効化、およびkpatchサービスの無効化を行う方法について説明します。

このタスクについて

次のセクションでは、カーネル修正プログラムに関連する操作について説明します。
  • カーネル修正プログラムの取得方法と詳細の表示方法については、カーネル修正プログラムの取得のセクションを参照してください。
  • オペレーティングシステムでカーネル修正プログラムを有効にする方法については、カーネル修正の有効化のセクションを参照してください。
  • 修正プログラムが異常な場合にオペレーティングシステムでカーネル修正プログラムを無効にする方法については、カーネル修正を無効にするのセクションを参照してください。
  • オペレーティングシステムでKernel Live Patching (KLP) 機能が有効になっているが、サーバーの再起動時にオペレーティングシステムがホットフィックスのすべてのカーネルモジュールをロードしない場合は、kpatchサービスを無効にできます。 詳細については、kpatchサービスを無効にするのセクションをご参照ください。

カーネル修正プログラムの取得

各カーネル修正プログラムは、RPMパッケージを使用してリリースされます。 次のいずれかの方法を使用して、修正プログラムのインストールパッケージを取得できます。
  • Alibaba Cloud LinuxのCVEアナウンスプラットフォームの使用
    1. 一般的な脆弱性と露出 (CVE) アナウンスプラットフォームにアクセスします。
      リリースされたすべての修正プログラムは、CVEアナウンスプラットフォームに表示されます。 Alibaba Cloud LinuxディストリビューションのCVEアナウンスプラットフォームの次のWebサイトにアクセスできます。
    2. [アドバイザリID] をクリックして、リスト内の情報を並べ替えます。 ホットフィックスを時間の降順に配置します。
      次の図に示すように、HOTFIXで始まるアドバイザリIDはカーネルホットフィックスです。セキュリティ更新プログラムの並べ替え
      次の表に、各CVEアナウンスプラットフォームの情報を示します。
      説明
      影響を受けるパッケージ カーネル修正プログラムのパッケージ名。 名前の先頭にはkernel-hotfix- が付き、末尾にはAlibaba Cloud Linuxオペレーティングシステムのマイナーバージョン番号が付きます。
      修正プログラムがAlibaba Cloud Linuxオペレーティングシステムに適用可能かどうかは、修正プログラムのパッケージ名のサフィックスに基づいて判断できます。 例:
      • kernel-hotfix-5928799-5.al8[影響を受けるパッケージ] 列に表示され、マイナーバージョン番号が5.al8のオペレーティングシステムに修正プログラムが適用可能であることを示します。
      • Alibaba Cloud Linux 3オペレーティングシステムでuname -rコマンドを実行すると、5.10.23-5.al8.x86_64が返されます。
      すべてのAlibaba Cloud Linux 3オペレーティングシステムのマイナーバージョン番号は5.al8です。 そのため、kernel-hotfix-5928799-5.al8修正プログラムはAlibaba Cloud Linux 3に適用されます。
      すべてのAlibaba Cloud Linux 2オペレーティングシステムのバージョン番号はal7です。
      アドバイザリID 修正プログラムのリリースシーケンス番号。 ホットフィックスは、CVEホットフィックスとBugfixホットフィックスに分類されます。 次のセクションでは、修正プログラムの命名規則について説明します。
      • CVEホットフィックスの接頭辞にはHOTFIX-SA- が付いています。
      • Bugfixホットフィックスの接頭辞にはHOTFIX-BA- が付いています。
      修正プログラムの [アドバイザリID] をクリックして詳細を表示し、修正プログラムのRPMパッケージをダウンロードできます。
      CVE ID 固定するCVEのID。 Bugfix修正プログラムの場合、CVE ID列は空です。
    3. [アドバイザリID] 列のホットフィックスのリリースシーケンス番号をクリックして、ホットフィックスの詳細ページに移動します。
      詳細ページでは、修正プログラムに関する詳細と、修正プログラムに対応するRPMパッケージの名前を表示できます。 更新されたパッケージ

      各RPMパッケージ名は、次の形式です。kernel-hotfix- {hotfix_id}-{オペレーティングシステムのマイナーバージョン番号}-{hotfixのバージョン番号}-{hotfixのタイムスタンプ}{オペレーティングシステムのメジャーバージョン番号}{システムアーキテクチャ} rpm

      次のセクションでは、前の図のRPMパッケージ名について説明します。
      • 5928799: 修正プログラムのID。
      • 5.al8: Alibaba Cloud Linux 3のマイナーバージョン番号。 この修正プログラムは、Alibaba Cloud Linux 3のカーネルバージョンがこのバージョンと一致している場合にのみ使用できます。 ECSインスタンスでuname -rコマンドを実行して、オペレーティングシステムのカーネルバージョンを表示できます。
      • 1.0: 修正プログラムのRPMパッケージのバージョン番号。
      • 20210720165816: 修正プログラムが作成された時刻。 修正プログラムは、2021年7月20日の16:58:16に作成されました。 以前のバージョンの一部の修正プログラムでは、このフィールドに無効な値が表示される場合があります。
      • al8: Alibaba Cloud Linux 3のバージョン番号。 すべてのAlibaba Cloud Linux 3オペレーティングシステムのバージョン番号はal8です。
        すべてのAlibaba Cloud Linux 2オペレーティングシステムのバージョン番号はal7です。
      • x86_64: オペレーティングシステムのアーキテクチャ。
  • YUMリポジトリの使用

    yum listコマンドを実行して、カーネル修正プログラムのインストールパッケージを確認できます。 詳細については、「カーネル修正の有効化」をご参照ください。

カーネル修正の有効化

  1. ホットフィックスが必要なAlibaba Cloud Linux ECSインスタンスに接続します。
    詳細については、「概要」をご参照ください。
  2. 次のコマンドを実行して、kpatchユーティリティをインストールします。
    sudo yum -yインストールkpatch
  3. 修正プログラムをインストールします。
    1. 次のコマンドを実行して、オペレーティングシステムのカーネルバージョンを表示します。
      sudo uname -r
      この例では、次のコマンド出力は、オペレーティングシステムのマイナーバージョン番号が5.al8であることを示しています。
      5.10.23-5.al8.x86_64
    2. yum listコマンドを実行して、オペレーティングシステムに適用可能なカーネルの修正プログラムを照会します。
      コマンド構文:
      sudo yum list  grep "kernel-hotfix"  grep "<オペレーティングシステムのマイナーバージョン番号>"
      この例では、オペレーティングシステムのマイナーバージョン番号は5.al8です。 以下のコマンドを実行します。
      sudo yum list  grep "kernel-hotfix"  grep "5.al8"
      次のようなコマンド出力が返されます。
      kernel-hotfix-5928799-5.al8.x86_64 1.0-20210720165816.al8 alinux3-plus
      kernel-hotfix-5956925-5.al8.x86_64 1.0-20210726171200.al8 alinux3-plus 
    3. 指定された修正プログラムをインストールします。
      この例では、kernel-hotfix-5928799-5.al8.x86_64を使用して、yumコマンドを実行して修正プログラムをインストールする方法を示します。
      YUMリポジトリを使用して修正プログラムをインストールする場合、を含める必要はありません。コマンド内のrpm (RPMパッケージのサフィックス) 。
      sudo yum -yインストールkernel-hotfix-5928799-5.al8.x86_64
  4. 次のコマンドを実行して、kpatchユーティリティを使用して修正プログラムのステータスを確認します。
    sudo kpatchリスト
    次のようなコマンド出力は、カーネル修正プログラムがインストールされ、有効であることを示します。
    ロードされたパッチモジュール:
    kpatch_5928799 [有効]
    
    インストール済みパッチモジュール:
    kpatch_5928799 (5.10.23-5.al8.x86_64)

カーネル修正を無効にする

修正プログラムにエラーが存在する場合 (たとえば、修正プログラムが有効にならない場合) 、次の手順を実行してカーネル修正プログラムを無効にできます。この例では、yumコマンドを使用します。

  1. 次のコマンドを実行して、無効にできる修正プログラムを表示します。
    sudo yum list installed  grep kernel-hotfix
    次のようなコマンド出力が返されます。
    kernel-hotfix-5928799-5.al8.x86_64 1.0-20210720165816.al8 @ alinux3-plus
  2. 次のコマンドを実行して、エラーが存在するhotfixパッケージを削除します。
    この例では、kernel-hotfix-5928799-5.al8.x86_64の修正プログラムが使用されます。
    sudo yum -y kernel-hotfix-5928799-5.al8.x86_64を削除
  3. 次のコマンドを実行して、エラーが存在する修正プログラムが削除されているかどうかを確認します。
    sudo kpatchリスト
    次のようなコマンド出力は、修正プログラムがインストールされておらず、有効であることを示します。
    ロードされたパッチモジュール:
    
    インストール済みパッチモジュール:

kpatchサービスを無効にする

hotfixがインストールされていて有効であるが、サーバーの再起動時にオペレーティングシステムがhotfixのすべてのカーネルモジュールをロードしない場合は、次の手順を実行してkpatchサービスを無効にできます。

  1. 次のコマンドを実行して、kpatchサービスが有効かどうかを確認します。
    sudo systemctl is-enabled kpatch.service
    コマンド出力のenabledは、kpatchサービスが有効になっていることを示します。
  2. 次のコマンドを実行して、kpatchサービスを無効にします。
    sudo systemctl disable kpatch.service
    次のようなコマンド出力は、kpatchサービスが無効になっていることを示します。
    symlink /etc/systemd/system/multi-user.target.wants/kpatch.serviceを削除しました。
  3. 次のコマンドを実行して、kpatchサービスのステータスを確認します。
    sudo systemctlステータスkpatch.service
    次のようなコマンド出力は、kpatchサービスが無効になっていることを示します。
     kpatch.service-「kpatchカーネルパッチの适用」
       Loaded: loaded (/usr/lib/systemd/system/kpatch.service; 無効; ベンダープリセット: 無効)
    sudo systemctl enable kpatch.serviceコマンドを実行して、kpatchサービスを有効にします。