簡介
本文檔介紹如何辨識、解決和驗證Secure Endpoint Linux聯結器中的故障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為基準的分配
本節適用於:
- Alma Linux
- Amazon Linux
- CentOS Linux
- Oracle Linux Red Hat相容核心(RHCK)
- Red Hat Enterprise Linux
- Rocky 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
- 列出可用的
核心預設
包: 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為基準的分配
本節適用於:
- Alma Linux
- Amazon Linux
- CentOS Linux
- Oracle Linux Red Hat相容核心(RHCK)
- Red Hat Enterprise Linux
- Rocky Linux
驗證
基於RPM的分發程式要求為當前運行的核心安裝核心級
程式包。要驗證當前運行的核心是否安裝了核心級
程式包,請運行:
rpm -qa | grep kernel-devel-$(uname -r)
如果沒有結果,則表示所需的核心開發
軟體套件缺失,需要安裝。
解析
若要安裝必要的核心層級
套件,請執行命令:
sudo dnf install -y kernel-devel-$(uname -r)
重新驗證。故障11會在約一分鐘後由聯結器清除。
Oracle Linux Unbreakable Enterprise Kernel (UEK)
驗證
Oracle Linux UEK要求為當前運行的核心安裝核心級的
程式包。要驗證當前運行的核心是否安裝了kernel-uek-level
程式包,請運行:
rpm -qa | grep kernel-uek-devel-$(uname -r)
如果沒有結果,則表示所需的kernel-uek-level
軟體套件缺失,需要安裝。
解析
要安裝所需的kernel-uek-level
軟體套件,請運行命令:
sudo dnf install -y kernel-uek-devel-$(uname -r)
重新驗證。故障11會在約一分鐘後由聯結器清除。
SUSE Linux Enterprise和openSUSE Leap
驗證
SUSE和openSUSE要求為當前運行的核心安裝kernel-default-devely
程式包。要驗證當前運行的核心是否安裝了kernel-default-devely
程式包,請運行:
zypper search -si kernel-default-devel | grep $(uname -r | sed "s/-default//")
如果沒有結果,則表示缺少所需的kernel-default-devely
程式包,需要安裝該程式包。
解析
安裝核心標頭
- 要確定是否可以安裝適用於您核心版本的正確
kernel-default-devely
軟體套件,請運行以下命令: zypper search -s kernel-default-devel | grep $(uname -r | sed "s/-default//")
輸出包括以下語法:
| kernel-default-devel |
|
|
|
如果看到類似的輸出,則請注意輸出中指定的version
,並繼續步驟2。否則,請略過此區段,改用步驟更新核心並安裝相符的核心標頭。
- 使用以下命令安裝
kernel-default-devely
程式包,將<version>
替換為上一步中確定的可用版本: sudo zypper install --oldpackage kernel-default-devel=
- 驗證是否已安裝
kernel-default-devely
軟體套件。約一分鐘後,聯結器會清除故障11。
更新核心並安裝相符的核心標頭
如果所需的kernel-default-devely
軟體套件不可用,請將核心更新為受支援的版本並安裝匹配的核心標頭。
- 使用以下命令列出可用的
kernel-default
和kernel-default-devely
程式包: zypper search -s --match-exact kernel-default kernel-default-devel
查詢kernel-default
和kernel-default-devely
軟體套件的匹配版本。舉例來說:
| 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。