Linux Elastic Compute Service (ECS) インスタンスの最新のカーネルバージョンでは、パフォーマンスの向上、セキュリティの脆弱性の修正、新機能の提供が可能です。ただし、ビジネスで特定の Linux カーネルバージョンが必要な場合、またはカーネルを新しいバージョンに更新したくない場合は、パッケージマネージャーを構成してカーネル更新を無効にする必要があります。このトピックでは、Linux ECSインスタンスでカーネル更新を無効化または有効化するためにパッケージマネージャーを構成する方法について説明します。
背景情報
Linux カーネルの更新はリスクの高い操作であり、互換性のないハードウェアドライバー、無効な SELinux モジュール、インスタンスの起動失敗などの問題が発生する可能性があります。関連する更新内容を十分に理解し、カーネル更新の必要性を事前に判断することをお勧めします。
準備
関連する互換性テストを完了し、データセキュリティを確保するために Linux ECS インスタンスのスナップショットを作成します。
カーネルアップグレードを無効化または有効化するためにパッケージマネージャーを構成する
パッケージマネージャーを使用して ECS インスタンスの Linux カーネルを自動的に更新したくない場合は、パッケージマネージャーを構成してカーネル更新を無効にします。
Alibaba Cloud Linux と CentOS
次のコマンドを実行して、現在の Linux カーネルバージョンを表示します。
sudo uname -r次のコマンド出力は、カーネルバージョンが
5.10.134-16.al8.x86_64であることを示しています。5.10.134-16.al8.x86_64次のコマンドを実行して、インストールされている Linux カーネルパッケージに関する情報を表示します。
sudo rpm -qa | grep kernel次のコマンド出力は、インストールされているパッケージの名前が
kernel-5.10.134-16.al8.x86_64であることを示しています。kernel-devel-5.10.134-18.al8.x86_64 kernel-core-5.10.134-16.al8.x86_64 kernel-modules-5.10.134-16.al8.x86_64 kernel-modules-extra-5.10.134-16.al8.x86_64 kernel-modules-internal-5.10.134-16.al8.x86_64 kernel-tools-libs-5.10.134-16.al8.x86_64 kernel-tools-5.10.134-16.al8.x86_64 kernel-5.10.134-16.al8.x86_64 kernel-devel-5.10.134-16.al8.x86_64 kernel-headers-5.10.134-16.al8.x86_64次のコマンドを実行して、Yellowdog Updater, Modified (YUM) パッケージマネージャーの構成ファイルを開きます。
sudo vi /etc/yum.confIキーを押して挿入モードに入り、構成ファイルに次の内容を追加します。exclude = kernel*説明上記の内容は、カーネルのセキュリティ更新を含むすべてのカーネル更新を防止します。必要に応じて内容を追加してください。この内容により、ECS インスタンスが重要なカーネルセキュリティパッチを見逃し、インスタンスにセキュリティリスクが生じる可能性があります。
パッケージマネージャーがカーネルバージョンを自動的に更新できるようにするには、手順 5 で追加した内容を削除またはコメントアウトします。
Escキーを押し、:wqと入力し、Enter キーを押してファイルを保存して閉じます。(オプション) 構成が完了したら、次のコマンドを実行して、カーネルバージョンがロックされているかどうかを確認します。
sudo yum update --assumeno | grep kernel次のコマンド出力は、カーネルバージョンを更新できないことを示しています。
kernel-core x86_64 5.10.134-18.al8 alinux3-plus 32 M kernel-modules x86_64 5.10.134-18.al8 alinux3-plus 23 M kernel-modules-extra x86_64 5.10.134-18.al8 alinux3-plus 1.5 M kernel-modules-internal x86_64 5.10.134-18.al8 alinux3-plus 1.0 M kernel-headers x86_64 5.10.134-18.al8 alinux3-plus 2.3 M kernel-tools x86_64 5.10.134-18.al8 alinux3-plus 1.1 M kernel-tools-libs x86_64 5.10.134-18.al8 alinux3-plus 947 k Operation aborted.
Ubuntu と Debian
次のコマンドを実行して、現在の Linux カーネルバージョンを表示します。
sudo uname -r次のコマンド出力は、カーネルバージョンが
5.4.0-204-genericであることを示しています。5.4.0-204-generic次のコマンドを実行して、インストールされている Linux カーネルパッケージに関する情報を表示します。
sudo dpkg -l | grep linux-image次のコマンド出力は、インストールされているパッケージの名前が
linux-image-5.4.0-204-genericであることを示しています。ii linux-image-5.4.0-204-generic 5.4.0-204.224 amd64 Signed kernel image generic ii linux-image-5.4.0-42-generic 5.4.0-42.46 amd64 Signed kernel image generic ii linux-image-generic 5.4.0.204.200 amd64 Generic Linux kernel image次のコマンドを実行して、Linux カーネルパッケージをロックします。
sudo apt-mark hold linux-image-*説明上記の内容は、カーネルのセキュリティ更新を含むすべてのカーネル更新を防止します。必要に応じて内容を追加してください。この内容により、ECS インスタンスが重要なカーネルセキュリティパッチを見逃し、インスタンスにセキュリティリスクが生じる可能性があります。
次のコマンドを実行して、パッケージマネージャーがカーネルバージョンを自動的に更新できるようにします。
sudo apt-mark unhold linux-image-*
(オプション) 次のコマンドを実行して、ロックされている Linux カーネルバージョンのソフトウェアパッケージを表示します。パッケージは自動的に更新できません。
sudo apt-mark showhold
Fedora
次のコマンドを実行して、現在の Linux カーネルバージョンを表示します。
sudo uname -r次のコマンド出力は、カーネルバージョンが
6.10.10-200.fc40.x86_64であることを示しています。6.10.10-200.fc40.x86_64次のコマンドを実行して、インストールされている Linux カーネルパッケージに関する情報を表示します。
sudo rpm -qa | grep kernel次のコマンド出力は、インストールされているパッケージの名前が
kernel-6.10.10-200.fc40.x86_64であることを示しています。kernel-modules-core-6.8.5-301.fc40.x86_64 kernel-core-6.8.5-301.fc40.x86_64 kernel-modules-6.8.5-301.fc40.x86_64 libreport-plugin-kerneloops-2.17.15-1.fc40.x86_64 kernel-6.8.5-301.fc40.x86_64 kernel-devel-6.8.5-301.fc40.x86_64 kernel-headers-6.10.3-200.fc40.x86_64 abrt-addon-kerneloops-2.17.6-1.fc40.x86_64 kernel-modules-core-6.10.10-200.fc40.x86_64 kernel-core-6.10.10-200.fc40.x86_64 kernel-modules-6.10.10-200.fc40.x86_64 kernel-devel-6.10.10-200.fc40.x86_64 kernel-6.10.10-200.fc40.x86_64 kernel-tools-libs-6.8.5-301.fc40.x86_64 kernel-tools-6.8.5-301.fc40.x86_64次のコマンドを実行して、
Dandified YUM (DNF)パッケージマネージャーの構成ファイルを開きます。sudo vi /etc/dnf/dnf.confIキーを押して挿入モードに入り、構成ファイルに次の内容を追加します。exclude = kernel*説明上記の内容は、カーネルのセキュリティ更新を含むすべてのカーネル更新を防止します。必要に応じて内容を追加してください。この内容により、ECS インスタンスが重要なカーネルセキュリティパッチを見逃し、インスタンスにセキュリティリスクが生じる可能性があります。
パッケージマネージャーがカーネルバージョンを自動的に更新できるようにするには、手順 5 で追加した内容を削除またはコメントアウトします。
Escキーを押し、:wqと入力し、Enter キーを押してファイルを保存して閉じます。(オプション) 構成が完了したら、次のコマンドを実行して、カーネルバージョンがロックされているかどうかを確認します。
sudo dnf update --assumeno | grep kernel次のコマンド出力は、カーネルバージョンを更新できないことを示しています。
Operation aborted.
前述の方法は参考情報としてのみ提供されています。ECS インスタンスに特定の Linux カーネルバージョンが必要な場合は、カーネルバージョンの更新によって発生する問題を防ぐために、実際のビジネスシナリオに基づいてソリューションを開発することをお勧めします。
問題
問題の説明: Alibaba Cloud Linux または CentOS インスタンスのカーネルバージョンを更新すると、
No package marked for Updateエラーメッセージが表示されます。原因: インスタンスの
/etc/yum.conf構成ファイルに、カーネルの更新を妨げる構成が含まれている可能性があります。その結果、カーネルを更新できません。解決策:
次のコマンドを実行して、YUM パッケージマネージャーの構成ファイルを開きます。
sudo vi /etc/yum.confIキーを押して挿入モードに入り、上記の構成を削除またはコメントアウトします。# 構成をコメントアウトするには、構成を含む行の先頭にシャープ記号(#)を追加します。 exclude = kernel*Escキーを押し、:wqと入力し、Enter キーを押してファイルを保存して閉じます。
関連情報
Linux ECS インスタンスのカーネルを手動でアップグレードする方法については、「Linux ECS インスタンスのオペレーティングシステムカーネルをアップグレードする」をご参照ください。