المقدمة
يوضح هذا المستند كيفية تعريف الخطأ 11 وحلها والتحقق منه في موصل Linux الآمن لنقطة النهاية.
معلومات أساسية
يؤدي الموصل إلى ظهور الخطأ 11 عندما يكون غير قادر على تحميل وحدة eBPF النمطية اللازمة لمراقبة نشاط النظام وأحداثه.
بداية من موصل Linux الإصدار 1.25، يعطي الموصل الأولوية لإعادة توجيه المسار الرئيسي (Compile Once - Run Everywhere) eBPF المشترك (Compile Once - Run Everywhere) لمراقبة أحداث النظام على عناصر kernel التي تدعم BTF، دون الحاجة إلى تثبيت رؤوس kernel. تعد هذه الطريقة الخاصة بإمكانية ملاحظة النظام أكثر فعالية وهي الخيار المفضل.
يرجع الموصل إلى طريقة تحميل eBPF القديمة التي تتطلب تثبيت رؤوس kernel عند إستخدام إصدارات موصل Linux الأقدم من 1.25 أو التي تعمل على kernel الذي لا يدعم BTF. عادة لا يتم تضمين هذه الرؤوس في عمليات تثبيت التوزيع القياسية ويلزم تثبيتها بشكل منفصل.
ينشأ الخطأ 11 إذا فشل الموصل في تحميل وحدة eBPF باستخدام أي من النهجين، مما يشير إلى أن النظام في حالة غير محمية. يوضح هذا المستند بالتفصيل الخطوات الضرورية المطلوبة لحل هذه المشكلة.
تحديد دعم BTF
يتطلب الموصل أن تكون إحدى هذه المكونات صحيحة لتحميل وحدة eBPF النمطية اللازمة لمراقبة نظام الملفات ونشاط الشبكة:
1. يحتوي kernel الحالي على تمكين config_debug_info_btf
. (هذا هو الخيار المفضل).
2. يتم تثبيت رؤوس kernel الخاصة بإصدار kernel الجاري تشغيله حاليا على النظام.
للتحقق مما إذا كان kernel الذي تقوم بتشغيله حاليا قد تم تمكين config_debug_info_btf
، قم بتشغيل الأمر:
cat /boot/config-$(uname -r) | grep CONFIG_DEBUG_INFO_BTF
إذا كنت ترى CONFIG_DEBUG_INFO_BTF=y
، فإن kernel يدعم BTF ويمكن للموصل مراقبة نظام الملفات وأحداث الشبكة باستخدام eBPF.
BTF غير مدعومة
إذا كان يتم تشغيل الإصدار 1.25 من الموصل أو الأحدث، فعليك مراجعة ترقية kernel إلى إصدار يدعم BTF. يمكن العثور على قائمة بالتوزيعات التي تم تمكين BTF عليها بشكل افتراضي في وقت لاحق في هذا المستند.
إذا كان kernel الحالي لا يدعم BTF، فإن الموصل يتطلب تثبيت ملفات رأس kernel. يتم رفع الخطأ 11 إذا كان الموصل غير قادر على تحديد موقع هذه الملفات المطلوبة. أستخدم الخطوات الموضحة في تثبيت رأس kernel المفقود لحل هذه المشكلة.
التوزيعات المدعومة لبروتوكول BTF
يتم تمكين هذه التوزيعات config_debug_info_btf
بشكل افتراضي في أحدث إصدار من kernel:
- Centos/RHEL 8.2 والإصدارات الأحدث
- Ubuntu 20.04 والإصدارات الأحدث
- نظام التشغيل Oracle Linux 8.5 والإصدارات الأحدث
- دبيان 11 وما بعده
- Alma Linux 8. 3 والإصدارات الأحدث
- Rocky Linux 8.3 والإصدارات الأحدث
- SUSE Enterprise 15 SP4 / OpenSUSE LEAP 15.4 والإصدارات الأحدث
الترقية إلى kernel مدعوم ل BTF
إذا كنت على توزيع يدعم BTF في إصدار kernel متأخر، فيفضل أن تقوم بتحديث kernel الخاص بك لحل الخطأ 11.
قبل المتابعة لتحديث kernel الخاص بك، قم أولا بترقية موصل Linux إلى الإصدار 1.25.0 أو الأحدث لضمان أن الموصل يدعم BTF.
التوزيعات القائمة على RPM
ينطبق هذا القسم على:
- ألما لينكس
- أمازون لينكس
- سنت أو إس لينكس
- نواة Oracle Linux Red Hat المتوافقة مع RHCK
- نظام التشغيل Red Hat Enterprise Linux
- روكي لينكس
للترقية إلى أحدث إصدار من kernel:
- تحقق مما إذا كانت هناك تحديثات متوفرة ل kernel:
yum check-update
إذا رأيت kernel.x86_64
في الإخراج، فستتوفر ترقية kernel.
- تحديث حزمة kernel:
sudo yum update kernel
- أعد تشغيل النظام:
sudo reboot
- تحقق من أن kernel الجديد يدعم BTF ومن مسح الخطأ 11 بواسطة الموصل.
Oracle Linux Enterprise Kernel غير القابل للكسر (UEK)
للترقية إلى أحدث إصدار من kernel:
- تحقق مما إذا كانت هناك تحديثات متوفرة ل kernel:
yum check-update
إذا رأيت kernel-uek.x86_64
في الإخراج، فهناك ترقية kernel متوفرة.
- تحديث حزمة kernel:
sudo yum update kernel-uek
- أعد تشغيل النظام:
sudo reboot
- تحقق من أن kernel الجديد يدعم BTF ومن مسح الخطأ 11 بواسطة الموصل.
SUSE Linux Enterprise و OpenSUSE LEAP
للترقية إلى أحدث إصدار من kernel:
- تحقق من إصدار kernel الحالي:
uname -r
- سرد الحزم
الافتراضية ل kernel
المتوفرة: zypper search -s --match-exact kernel-default
يظهر المخرج على هيئة:
| kernel-default | package |
|
|
ابحث عن إصدار
أكبر من إصدار kernel الحالي، المحدد في الخطوة 1.
- ركبت صيغة جديد من
kernel-default
مع الأمر: sudo zypper install kernel-default=
- أعد تشغيل النظام:
sudo reboot
- تحقق من أن kernel الجديد يدعم BTF ومن مسح الخطأ 11 بواسطة الموصل.
توزيعات دبيان
للترقية إلى أحدث إصدار من kernel:
- إسترداد أحدث قوائم الحزم:
sudo apt update
- قم بتثبيت أحدث الحزم:
sudo apt upgrade
- أعد تشغيل النظام:
sudo reboot
- تحقق من أن kernel الجديد يدعم BTF ومن مسح الخطأ 11 بواسطة الموصل.
تثبيت رأس Kernel مفقود
قبل تثبيت رأس kernel مفقود، حاول ترقية نظامك إلى إصدار BTF مدعوم. إذا لم يؤدي هذا إلى حل الخطأ 11 أو إذا لم يكن برنامجك يدعم BTF بعد في أحدث إصدار، فتابع تثبيت رأس kernel المفقود.
التوزيعات القائمة على RPM
ينطبق هذا القسم على:
- ألما لينكس
- أمازون لينكس
- سنت أو إس لينكس
- نواة Oracle Linux Red Hat المتوافقة مع RHCK
- نظام التشغيل Red Hat Enterprise Linux
- روكي لينكس
التحقق من الصحة
تتطلب التوزيعات القائمة على RPM تثبيت حزمة kernel-
devel للkernel الجاري تشغيله حاليا. للتحقق من تثبيت حزمة kernel-devel
ل kernel الجاري تشغيله حاليا، قم بتشغيل:
rpm -qa | grep kernel-devel-$(uname -r)
في حالة عدم وجود نتائج، تكون حزمة kernel-devel
المطلوبة مفقودة وتحتاج إلى تثبيتها.
في حالة تثبيت حزمة kernel
-Development الصحيحة واستمرار الموصل في رفع الخطأ 11، قد يكون قد تم التلاعب ببعض الملفات المطلوبة. يتحقق هذا الأمر مما إذا كان قد تم تعديل أي ملفات أو أنها مفقودة:
rpm --verify --nomtime --noghost kernel-default-devel
إذا كانت أي ملفات مفقودة أو معدلة، يجب
إزالة تثبيت Kernel-DevelopmentPackage وإعادة تثبيتها لضمان توفر الملفات المطلوبة. لا يوفر هذا الأمر أي مخرجات إذا كانت كل ملفات الحزمة سليمة وغير معدلة.
قرار
لتثبيت الحزمة kernel-devel
المطلوبة، قم بتشغيل الأمر:
sudo dnf install -y kernel-devel-$(uname -r)
إعادة التحقق. يتم مسح الخطأ 11 بواسطة الموصل بعد دقيقة تقريبا.
Oracle Linux Enterprise Kernel غير القابل للكسر (UEK)
التحقق من الصحة
تتطلب Oracle Linux UEK تثبيت حزمة kernel-uek-devel
للعنصر الأساسي الذي يتم تشغيله حاليا. للتحقق من تثبيت حزمة kernel-uek-devel
ل kernel الجاري تشغيله حاليا، قم بتشغيل:
rpm -qa | grep kernel-uek-devel-$(uname -r)
في حالة عدم وجود نتائج، تكون الحزمة kernel-uek-devel
المطلوبة مفقودة وتحتاج إلى التثبيت.
قرار
لتثبيت الحزمة kernel-uek-devel
المطلوبة، قم بتشغيل الأمر:
sudo dnf install -y kernel-uek-devel-$(uname -r)
إعادة التحقق. يتم مسح الخطأ 11 بواسطة الموصل بعد حوالي دقيقة.
SUSE Linux Enterprise و OpenSUSE LEAP
التحقق من الصحة
يتطلب SUSE و OpenSUSE تثبيت حزمة kernel الافتراضية
ل kernel الجاري تشغيله حاليا. للتحقق من تثبيت حزمة kernel-default-devel
ل kernel الجاري تشغيله حاليا، قم بتشغيل:
zypper search -si kernel-default-devel | grep $(uname -r | sed "s/-default//")
في حالة عدم وجود نتائج، تكون حزمة kernel الافتراضية
المطلوبة مفقودة وتحتاج إلى تثبيتها.
قرار
تثبيت رؤوس kernel
- لتحديد ما إذا كانت حزمة
kernel
-default-devel الصحيحة لإصدار kernel الخاص بك متوفرة للتثبيت، قم بتشغيل الأمر: zypper search -s kernel-default-devel | grep $(uname -r | sed "s/-default//")
يتضمن الإخراج الصياغة:
| kernel-default-devel |
|
|
|
إذا رأيت مخرجات مماثلة، بعد ذلك لاحظ الإصدار
المحدد في الإخراج واستمر في الخطوة 2. وإلا، فقم بتخطي هذا القسم واستخدم بدلا من ذلك الخطوات لتحديث kernel وتثبيت رؤوس kernel المطابقة.
- قم بتثبيت حزمة
kernel-default-devel
باستخدام هذا الأمر، مع إستبدال <version>
بالإصدار المتوفر المحدد في الخطوة السابقة: sudo zypper install --oldpackage kernel-default-devel=
- تحقق من تثبيت حزمة
kernel-default-devel
. يتم مسح الخطأ 11 بواسطة الموصل بعد دقيقة تقريبا.
تحديث Kernel وتثبيت رؤوس kernel المطابقة
إذا لم تكن حزمة kernel الافتراضية
المطلوبة متوفرة، فقم بتحديث kernel الخاص بك إلى إصدار مدعوم وقم بتثبيت رؤوس kernel المطابقة.
- قم بسرد حزم
kernel الافتراضية
وkernel-default-devel
المتوفرة باستخدام الأمر: zypper search -s --match-exact kernel-default kernel-default-devel
ابحث عن الإصدارات المطابقة من الحزم الافتراضية ل kernel
وkernel-default-devel
. على سبيل المثال:
| kernel-default | package |
|
|
| kernel-default-devel | package |
|
|
لاحظ الإصدار الجديد
المحدد في الإخراج.
ملاحظة: إذا تعذر عليك العثور على kernel أحدث للترقية إليه، فيجب الترقية إلى إصدار إصدار توزيع أحدث.
- قم بتثبيت الإصدارات الجديدة من
kernel-default
وkernel-default-devel
باستخدام الأمر: sudo zypper install kernel-default=
kernel-default-devel=
- أعد تشغيل النظام:
sudo reboot
- إعادة التحقق. تم مسح الخطأ 11 بواسطة الموصل.
توزيعات دبيان
التحقق من الصحة
تتطلب التوزيعات القائمة على Debian تثبيت حزمة رؤوس لينوكس
للنواة العاملة حاليا. للتحقق من تثبيت حزمة Linux-head
ل kernel الجاري تشغيله حاليا، قم بتشغيل:
apt list linux-headers-$(uname -r)
في حالة عدم وجود نتائج، تكون حزمة رؤوس Linux
المطلوبة مفقودة وتحتاج إلى التثبيت.
قرار
لتثبيت حزمة رؤوس لينوكس
المطلوبة، قم بتشغيل الأمر:
sudo apt install linux-headers-$(uname -r)
إعادة التحقق. يتم مسح الخطأ 11 بواسطة الموصل بعد دقيقة تقريبا.