はじめに
このドキュメントでは、Secure Endpoint Linux(SEL)コネクタの障害11を特定、解決、および確認する方法について説明します。
BTFサポートの決定
コネクタがeBPFを使用してファイルシステムとネットワークのイベントを監視するためには、次のいずれかに該当する必要があります。
- 現在のカーネルで
CONFIG_DEBUG_INFO_BTF
が有効になっている場合、または
- 現在のカーネル用のカーネルヘッダがインストールされています。
カーネルでCONFIG_DEBUG_INFO_BTF
が有効になっていることが推奨されます。現在のカーネルでCONFIG_DEBUG_INFO_BTF
が有効になっているかどうかを確認するには、次のコマンドを実行します。
cat /boot/config-$(uname -r) | grep CONFIG_DEBUG_INFO_BTF
CONFIG_DEBUG_INFO_BTF=y
が表示された場合、カーネルはBTFをサポートしており、コネクタはeBPFを使用してファイルシステムとネットワークのイベントを監視できます。 Linuxコネクタバージョン1.25.0以降はeBPF CO-REをサポートしており、カーネルヘッダをインストールしなくても、BTF対応カーネルでファイルシステムとネットワークイベントを監視できます。
障害11
現在のカーネルがBTFをサポートしておらず、必要なカーネルヘッダーが欠落している場合、Linuxコネクタによって障害11が発生します。次のいずれかの手順を使用して、障害を解決します。
- カーネルとコネクタをBTF対応バージョン(推奨ソリューション)にアップグレードする
- 不足しているカーネルヘッダーをインストールする
BTF対応ディストリビューション
次のディストリビューションでは、最新のカーネルバージョンでCONFIG_DEBUG_INFO_BTF
がデフォルトで有効になっています。
- Centos/RHEL 8.2以降
- Ubuntu 20.04以降
- Oracle Linux 8.5以降
- Debian 11以降
- Alma Linux 8.3以降
- Rocky Linux 8.3以降
- SUSE Enterprise 15 SP4/openSUSE Leap 15.4以降
BTF対応カーネルへのアップグレード
新しいカーネルバージョンでBTFをサポートするディストリビューションを使用している場合は、障害11を解決するためにカーネルを更新することをお勧めします。
カーネルのアップデートに進む前に、まずLinuxコネクタをバージョン1.25.0以降にアップグレードして、コネクタがBTFをサポートしていることを確認してください。
RPMベースディストリビューション
このセクションは、次のものに適用されます。
- アルマLinux
- Amazon Linux
- CentOS Linux
- Oracle Linux Red Hat Compatible Kernel(RHCK)
- Red Hat Enterprise Linux
- ロッキーLinux
最新のカーネル・バージョンにアップグレードするには:
- カーネルに利用可能なアップデートがあるかどうかを確認します。
yum check-update
出力にkernel.x86_64
が表示されている場合は、カーネルのアップグレードが利用可能です。
- カーネルパッケージを更新します。
sudo yum update kernel
- システムを再起動します。
sudo reboot
- 新しいカーネルがBTFをサポートし、障害11がコネクタによってクリアされることを確認します。
Oracle Linux Unbreakable Enterprise Kernel(UEK)
最新のカーネル・バージョンにアップグレードするには:
- カーネルに利用可能なアップデートがあるかどうかを確認します。
yum check-update
出力にkernel-uek.x86_64
が表示されている場合は、カーネルのアップグレードを利用できます。
- カーネルパッケージを更新します。
sudo yum update kernel-uek
- システムを再起動します。
sudo reboot
- 新しいカーネルがBTFをサポートし、障害11がコネクタによってクリアされることを確認します。
SUSE Linux EnterpriseおよびopenSUSE Leap
最新のカーネル・バージョンにアップグレードするには:
- 現在のカーネルのバージョンを確認します。
uname -r
- 使用可能な
kernel-default
パッケージを一覧表示します。 zypper search -s --match-exact kernel-default
出力は次のようになります。
| kernel-default | package |
|
|
ステップ1で特定した、現在のカーネルのバージョンよりも新しいバージョン
を探します。
- 次のコマンドを使用して、新しいバージョンの
kernel-default
をインストールします。 sudo zypper install kernel-default=
- システムを再起動します。
sudo reboot
- 新しいカーネルがBTFをサポートし、障害11がコネクタによってクリアされることを確認します。
Debianベースのディストリビューション
最新のカーネル・バージョンにアップグレードするには:
- 最新のパッケージリストを取得します。
sudo apt update
- 最新のパッケージをインストールします。
sudo apt upgrade
- システムを再起動します。
sudo reboot
- 新しいカーネルがBTFをサポートし、障害11がコネクタによってクリアされることを確認します。
欠落したカーネルヘッダーのインストール
欠落したカーネルヘッダーをインストールする前に、システムをBTF対応バージョンにアップグレードしてください。これで障害11が解決しない場合、またはディストリビューションが最新バージョンのBTFをまだサポートしていない場合は、不足しているカーネルヘッダーのインストールを続行します。
RPMベースディストリビューション
このセクションは、次のものに適用されます。
- アルマLinux
- Amazon Linux
- CentOS Linux
- Oracle Linux Red Hat Compatible Kernel(RHCK)
- Red Hat Enterprise Linux
- ロッキーLinux
確認
RPMベースのディストリビューションでは、現在稼働中のカーネルにkernel-devel
パッケージをインストールする必要があります。現在実行中のカーネルにkernel-devel
パッケージがインストールされているかどうかを確認するには、次のコマンドを実行します。
rpm -qa | grep kernel-devel-$(uname -r)
結果が得られない場合は、必要なkernel-devel
パッケージが見つからないため、インストールする必要があります。
解決方法
必要なkernel-devel
パッケージをインストールするには、次のコマンドを実行します。
sudo dnf install -y kernel-devel-$(uname -r)
再検証します。障害11は、約1分後にコネクタによってクリアされます。
Oracle Linux Unbreakable Enterprise Kernel(UEK)
確認
Oracle Linux UEKを使用するには、現在稼働中のカーネルにkernel-uek-devel
パッケージをインストールする必要があります。現在実行中のカーネルにkernel-uek-devel
パッケージがインストールされているかどうかを確認するには、次のコマンドを実行します。
rpm -qa | grep kernel-uek-devel-$(uname -r)
結果が得られない場合、必要なkernel-uek-devel
パッケージが見つからないため、インストールする必要があります。
解決方法
必要なkernel-uek-devel
パッケージをインストールするには、次のコマンドを実行します。
sudo dnf install -y kernel-uek-devel-$(uname -r)
再検証します。障害11は、約1分後にコネクタによってクリアされます。
SUSE Linux EnterpriseおよびopenSUSE Leap
確認
SUSEおよびopenSUSEでは、現在稼働中のカーネルに対してkernel-default-devel
パッケージをインストールする必要があります。現在実行中のカーネルにkernel-default-devel
パッケージがインストールされているかどうかを確認するには、次のコマンドを実行します。
zypper search -si kernel-default-devel | grep $(uname -r | sed "s/-default//")
結果が得られない場合、必要なkernel-default-devel
パッケージが見つからないため、インストールする必要があります。
解決方法
カーネルヘッダーのインストール
- 使用しているカーネルバージョンに適した
kernel-default-devel
パッケージをインストールできるかどうかを確認するには、次のコマンドを実行します。 zypper search -s kernel-default-devel | grep $(uname -r | sed "s/-default//")
出力には次の構文が含まれます。
| kernel-default-devel |
|
|
|
同様の出力が表示された場合は、出力で指定されているバージョン
をメモして、ステップ2に進みます。それ以外の場合は、このセクションをスキップし、代わりにカーネルを更新し、一致するカーネルヘッダーをインストールする手順を使用します。
- 次のコマンドを使用して
kernel-default-devel
パッケージをインストールします。<version>
の部分を、前の手順で確認した使用可能なバージョンに置き換えます。 sudo zypper install --oldpackage kernel-default-devel=
kernel-default-devel
パッケージがインストールされていることを確認します。障害11は、約1分後にコネクタによってクリアされます。
カーネルの更新と一致するカーネルヘッダーのインストール
必要なkernel-default-devel
パッケージが利用できない場合は、カーネルをサポートされているバージョンに更新し、一致するカーネルヘッダーをインストールします。
- 次のコマンドを使用して、使用可能な
kernel-default
パッケージとkernel-default-devel
パッケージをリストします。 zypper search -s --match-exact kernel-default kernel-default-devel
kernel-default
パッケージとkernel-default-devel
パッケージのバージョンが一致するものを探します。例:
| kernel-default | package |
|
|
| kernel-default-devel | package |
|
|
出力で指定されたnew-version
をメモします。
注:アップグレード先の新しいカーネルが見つからない場合は、新しい配布リリースバージョンにアップグレードする必要があります。
- 次のコマンドを使用して、新しいバージョンの
kernel-default
とkernel-default-devel
をインストールします。 sudo zypper install kernel-default=
kernel-default-devel=
- システムを再起動します。
sudo reboot
- 再検証します。障害11はコネクタによってクリアされます。
Debianベースのディストリビューション
確認
Debianベースのディストリビューションでは、現在稼働中のカーネルにlinux-headers
パッケージをインストールする必要があります。現在稼働中のカーネルにlinux-headers
パッケージがインストールされているかどうかを確認するには、次のコマンドを実行します。
apt list linux-headers-$(uname -r)
結果が得られない場合、必要なlinux-headers
パッケージが見つからないため、インストールする必要があります。
解決方法
必要なlinux-headers
パッケージをインストールするには、次のコマンドを実行します。
sudo apt install linux-headers-$(uname -r)
再検証します。障害11は、約1分後にコネクタによってクリアされます。