تثبيت وتوقيع وحدات نواة مخصصة على نظام التشغيل SLES 15 Secure Boot

قد يتم تجميع برنامج تشغيل تابع لجهة خارجية على نظام SUSE Linux Enterprise Server 15 بشكل صحيح، ولكنه قد يفشل في التحميل مع ظهور رسالة "المفتاح المطلوب غير متوفر" أو "تم رفض المفتاح بواسطة الخدمة". عندما يفرض التمهيد الآمن UEFI توقيعات الوحدات النمطية، يكون الحل هو توقيع وحدة النواة المخصصة بشهادة موثوقة، وتسجيل تلك الشهادة من خلال إدارة مفتاح مالك الجهاز (MOK)، ثم تحميل الوحدة النمطية بشكل طبيعي - دون تعطيل التمهيد الآمن.

يفترض هذا الإجراء وجود نظام SLES 15 UEFI قياسي يستخدم SUSE shim، kernel-defaultونواة، وصلاحيات المسؤول، ومصدر موثوق لبرنامج التشغيل. وهو يُعنى .koبالوحدات النمطية المُخصصة، ولا يشمل توقيع نواة بديلة أو تغيير مفاتيح منصة البرامج الثابتة. تتبع الأمثلة نموذج إدارة SLES 15 SP6/SP7؛ تحقق من اختلافات الحزمة ونكهة النواة في حزمة الخدمة المُثبتة لديك.

1. تحقق من خاصية التمهيد الآمن ونواة النظام قيد التشغيل أولاً

سجّل الدخول بصلاحيات المسؤول وحدّد النواة التي قمت بتشغيلها فعلياً. لا يكفي تطابق اسم الحزمة وحده لإثبات إمكانية تحميل وحدة نمطية في تلك النواة.

uname -r
mokutil --sb-state
ls -ld "/lib/modules/$(uname -r)/build"
يعرض الطرفية الأمر uname -r، وحالة التمهيد الآمن لـ mokutil، وفحص دليل بناء النواة قيد التشغيل.
تحقق من إصدار النواة النشط وحالة التمهيد الآمن قبل تثبيت برنامج التشغيل أو توقيعه.

إذا mokutilأفاد النظام بتفعيل ميزة التمهيد الآمن، فمن المرجح أن يكون سبب فشل التحميل المتعلق بالمفتاح هو وجود توقيع غير موثوق. أما إذا كانت هذه الميزة معطلة، فيُرجى البحث عن أسباب أخرى قبل إنشاء المفاتيح؛ إذ قد يكون لفرض توقيع النواة بشكل صريح دورٌ في ذلك. راجع سجل النواة بعد فشل التحميل للاطلاع على رسالة الرفض الفعلية.

sudo journalctl -k -b --no-pager | tail -n 50

افحص الوحدة المرشحة قبل تثبيتها. استبدل اسم الملف الحقيقي بالمثال؛ vermagicيجب أن يتطابق مع إصدار نواة النظام الحالية وخصائص البناء المتوافقة.

modinfo -F name /path/to/mydriver.ko
modinfo -F vermagic /path/to/mydriver.ko
يعرض الطرفية نموذجًا لقائمة modinfo لبرنامج تشغيل نواة خارجي ومسار أداة توقيع النواة
قم بمراجعة بيانات تعريف الوحدة، وخاصة vermagic، بدلاً من افتراض أن أي ملف .ko سيتوافق مع SLES 15.

2. استخدم حزمة برامج تشغيل مدعومة أو أنشئ وحدة نمطية متوافقة

أولاً، اطلب من مُورّد الأجهزة أو البرامج حزمة وحدة نواة (KMP) متوافقة مع نظام SLES وموقّعة مسبقاً. يُفضّل هذا على تثبيت ملف تنفيذي يدوياً، إذ قد يُوفّر المُورّد آلية لتحديث النواة وعملية تسجيل شهادات موثقة. لا يُعتمد توقيع المُورّد تلقائياً على جميع أجهزة التمهيد الآمن.

إذا كنتَ مضطرًا لبناء برنامج التشغيل، فقم بتثبيت ملفات التطوير المتوافقة مع نواة نظام التشغيل لديك. بالنسبة لهذا kernel-defaultالإصدار، تتضمن حزم SLES المعتادة حزمة تطوير النواة الافتراضية، وملفات تطوير النواة، وأدوات البناء. يعتمد توفر المستودع وإصداراته على التسجيل ووحدات SLES المُفعّلة.

sudo zypper install gcc make openssl mokutil kernel-devel kernel-default-devel
rpm -q kernel-default-devel kernel-devel
readlink -f "/lib/modules/$(uname -r)/build"
طرفية بنمط SLES تعرض تثبيت zypper لمتطلبات تطوير النواة وتوقيعها
قم بتثبيت حزم تطوير النواة وأدوات التشفير المتوافقة قبل العمل مع وحدة نمطية مخصصة.

إذا كان مجلد الإنشاء مفقودًا أو كانت حزمة التطوير تستهدف إصدارًا مختلفًا من نواة النظام، فقم بإصلاح عدم التوافق بين الحزمة ونواة النظام أولًا. قد تتطلب النواة المثبتة حديثًا إعادة تشغيل مُتحكَّم بها قبل البدء في عملية الإنشاء.

من دليل مصدر برنامج التشغيل الموثوق، استخدم تعليمات بناء المورّد. بالنسبة للوحدات النمطية التقليدية القائمة على kbuild، يقوم الأمر أدناه بالبناء على نواة النظام قيد التشغيل؛ فهو لا يقوم بتنزيل أو إنشاء برنامج تشغيل تلقائيًا.

cd /path/to/driver-source
make -C "/lib/modules/$(uname -r)/build" M="$PWD" modules
نافذة طرفية تعرض أمر kbuild make الذي يقوم بتجميع وحدة نواة خارجية مقابل نواة SLES قيد التشغيل
استخدم شجرة بناء النواة ودليل مصدر برنامج التشغيل لإنتاج ملف .ko مطابق.

تخطَّ عملية التجميع إذا كان لديك بالفعل ملف متوافق .koمن مورد موثوق. لا تقم أبدًا بتحميل وحدة نمطية باستخدام ملف خاطئ vermagic؛ فالتوقيع لا يمكنه إصلاح ملف ثنائي غير متوافق.

3. أنشئ مفتاح التوقيع ووقّع الوحدة النمطية المثبتة

أنشئ مفتاح RSA مخصصًا وشهادة X.509 في دليل خاص بالجذر فقط. سيتم تسجيل الشهادة العامة؛ ويجب حماية المفتاح الخاص لأن من يتحكم به يمكنه توقيع وحدات إضافية قد يثق بها هذا الجهاز.

sudo -i
umask 077
mkdir -p /root/module-signing
cd /root/module-signing
openssl req -new -x509 -newkey rsa:3072 -sha256 -days 3650 -nodes \
  -subj "/CN=SLES Custom Module Signing/" \
  -keyout MOK.priv -out MOK.pem
openssl x509 -in MOK.pem -outform DER -out MOK.der
chmod 600 MOK.priv
يعرض الطرفية أمر OpenSSL الذي يقوم بإنشاء مفتاح RSA خاص محلي وشهادة توقيع وحدة X.509
قم بإنشاء زوج مفاتيح منفصل لتوقيع الوحدة النمطية واحتفظ بالمفتاح الخاص مقيدًا للمسؤول.

-nodesيُنشئ هذا المثال مفتاحًا خاصًا غير مُشفّر؛ أما بالنسبة لخط أنابيب التوقيع في بيئة الإنتاج، فيُرجى استخدام مفتاح مُشفّر محمي بشكل مناسب أو خدمة توقيع خارجية وفقًا لسياسة الأمان الخاصة بك. مدة الصلاحية المذكورة هنا (عشر سنوات) هي مدة توضيحية فقط، وليست توصية رسمية بشأن مدة صلاحية الشهادة.

انسخ الوحدة النمطية المُكتملة إلى دليل الوحدات النمطية في نواة النظام قيد التشغيل. وقّع الملف المُثبّت بدقة بعد أي تعديلات على الملفات، مثل التغليف أو إزالة الملفات غير الضرورية أو غيرها. استبدل اسم mydriverالوحدة النمطية ومسارها باسمها الأساسي وموقعها الفعليين.

install -D -m 0644 /path/to/mydriver.ko \
  "/lib/modules/$(uname -r)/extra/mydriver.ko"
SIGN_FILE="$(readlink -f /lib/modules/$(uname -r)/build)/scripts/sign-file"
test -x "$SIGN_FILE" || echo "Locate the sign-file binary for this kernel"
"$SIGN_FILE" sha256 /root/module-signing/MOK.priv \
  /root/module-signing/MOK.der \
  "/lib/modules/$(uname -r)/extra/mydriver.ko"
modinfo -F signer "/lib/modules/$(uname -r)/extra/mydriver.ko"
طرفية تعرض مثالاً على استدعاء ملف التوقيع وفحص مُوقِّع modinfo لوحدة نواة
قم بتطبيق التوقيع على ملف .ko المثبت وافحص حقل التوقيع الخاص به قبل تحميله.

إذا sign-fileلم يكن الملف موجودًا في ذلك المسار، فابحث عن الأداة المرفقة مع ملفات بناء النواة المطابقة بدلاً من نسخ نسخة غير ذات صلة. يشير ظهور المُوقِّع إلى أن الملف يحتوي على بيانات تعريف التوقيع، ولا يُثبت ذلك تسجيل المُوقِّع. لا تقم أبدًا بحذف أو تعديل الوحدة بعد التوقيع.

4. قم بتسجيل الشهادة العامة باستخدام MOK

استورد الشهادة العامة بصيغة DER، ثم MOK.privعيّن كلمة مرور التسجيل لمرة واحدة المطلوبة mokutil. جهّز الوصول إلى وحدة التحكم قبل إعادة التشغيل؛ تتم عملية التفويض في واجهة MokManager عند بدء التشغيل، وليس في جلسة SSH.

mokutil --import /root/module-signing/MOK.der
mokutil --list-new
reboot
قائمة تمهيد زرقاء بنمط MokManager مع تمييز خيار "تسجيل مفتاح مالك الجهاز" فوق خيارات مفتاح مالك الجهاز الأخرى.
في قائمة وقت بدء تشغيل UEFI، حدد "تسجيل MOK" وقم بتأكيد تسجيل الشهادة المطلوبة.

عند إعادة التشغيل التالية، اختر "تسجيل MOK" ، واتبع تعليمات التأكيد، وأدخل كلمة المرور لمرة واحدة، ثم تابع عملية الإقلاع. يختلف شكل القائمة حسب إصدار البرنامج الثابت ونسخة shim. العودة إلى نظام Linux دون تأكيد التسجيل تجعل الشهادة الجديدة غير موثوقة.

بعد بدء التشغيل، تحقق من تسجيل الشهادة المحددة:

sudo mokutil --test-key /root/module-signing/MOK.der
sudo mokutil --list-enrolled

5. قم بتحميل الوحدة النمطية الموقعة وعزل الأخطاء المتبقية

قم بتحديث بيانات تعريف تبعيات الوحدة النمطية وقم بتحميل الوحدة النمطية باسمها، وليس بمسار الملف الكامل. modprobeيحل هذا التبعيات ويحترم تكوين الوحدة النمطية القياسي.

sudo depmod -a
sudo modprobe mydriver
lsmod | grep -w mydriver
modinfo -F signer mydriver
نافذة طرفية تعرض أوامر modprobe و lsmod و kernel-log المستخدمة للتحقق من وحدة نمطية موقعة
تأكد من ظهور الوحدة النمطية الموقعة في قائمة الوحدات النمطية المحملة، وافحص سجل النواة بحثًا عن الأخطاء.

إذا استمر فشل التحميل، فاختر الإجراء التصحيحي الذي يتوافق مع الأدلة:

  • تم رفض المفتاح أو المفتاح المطلوب غير متوفر: أعد التشغيل mokutil --test-key؛ تأكد من أن الملف الذي قمت بتثبيته هو الملف الموقع وتحقق مما إذا كان تحديث برنامج التشغيل قد استبدله.
  • تنسيق الوحدة غير صالح: قارن modinfo -F vermagicمع uname -r، وأعد بناء النواة النشطة، وتحقق من بنية وحدة المعالجة المركزية.
  • رمز غير معروف أو تبعية مفقودة: inspect journalctl -k -b، والوحدات النمطية المطلوبة من البائع، وواجهة برمجة التطبيقات للنواة؛ التوقيع الآخر لن يحل مشكلة الرموز المفقودة.

بالنسبة لبرامج تشغيل التخزين أو الشبكة الضرورية لبدء التشغيل، اختبرها أولاً على نظام غير إنتاجي وتأكد من توفر وحدة تحكم الاسترداد. فعّل التحميل التلقائي فقط بعد أن يعمل برنامج التشغيل بشكل موثوق؛ راجع وثائق SUSE /etc/modules-load.d/للوحدات التي لا يتم تحميلها عند اكتشاف الجهاز.

تحقق من النتيجة بعد إعادة التشغيل

أعد تشغيل الجهاز مرة أخرى خلال فترة الصيانة إذا كان التحميل المستمر مهمًا. تأكد من بقاء خاصية التمهيد الآمن مُفعّلة، وتسجيل المفتاح العام، ووجود الوحدة النمطية، وعدم وجود أي خطأ جديد في التحقق أو التوافق من النواة. أعد بناء أو تثبيت وتوقيع الملفات المُحدّثة .koبعد ترقيات النواة أو برامج تشغيل المورّد.

mokutil --sb-state
sudo mokutil --test-key /root/module-signing/MOK.der
modinfo -F signer mydriver
lsmod | grep -w mydriver
sudo journalctl -k -b --no-pager | tail -n 30

الوثائق الأساسية: SUSE SLES 15 SP6: UEFI ومفاتيح مالك الجهاز ؛ SUSE: إدارة وحدات النواة ؛ نواة لينكس: آلية توقيع الوحدات ؛ نواة لينكس: بناء الوحدات الخارجية . تم تحديث دليل إدارة SLES 15 SP6 في 17 سبتمبر 2026؛ يجب التأكد من سلوك الأوامر لمثبتات برامج التشغيل الخارجية وأنواع النواة غير الافتراضية مع القائمين على صيانتها.

اترك تعليقاً

أتمتة عمليات النسخ الاحتياطي المتسقة لـ Nextcloud باستخدام Restic و Cron

أتمتة عمليات النسخ الاحتياطي المتسقة لـ Nextcloud باستخدام Restic و Cron

قم بعمل نسخ احتياطية لملفات Nextcloud و MariaDB معًا، وجدول لقطات Restic المشفرة باستخدام cron، وتحقق من الاستعادة دون المخاطرة بالخادم المباشر.

تشغيل خادم أوبونتو في وضع الطوارئ: دليل إنقاذ خطوة بخطوة

تشغيل خادم أوبونتو في وضع الطوارئ: دليل إنقاذ خطوة بخطوة

قم بتشخيص وضع الطوارئ في خادم أوبونتو بأمان. اقرأ سجلات بدء التشغيل، وتحقق من مجلدات الجذر و fstab، وأصلح الوحدة المعطلة، وتعامل مع أخطاء نظام الملفات، وتحقق من إعادة التشغيل النظيفة.

نسخ احتياطي واستعادة صندوق بريد Zimbra CE باستخدام ملفات TGZ

نسخ احتياطي واستعادة صندوق بريد Zimbra CE باستخدام ملفات TGZ

قم بتصدير صندوق بريد فردي من إصدار Zimbra Community Edition، وتحقق من صحة نسخة TGZ الاحتياطية الخاصة به، واستعد العناصر المفقودة دون الكتابة فوق البريد الموجود.

السماح للمستخدمين المعتمدين بإنشاء غرف Jitsi باستخدام تسجيل الدخول عبر Keycloak

السماح للمستخدمين المعتمدين بإنشاء غرف Jitsi باستخدام تسجيل الدخول عبر Keycloak

السماح فقط للحسابات المعتمدة ببدء غرف Jitsi Meet باستخدام Keycloak ومصادقة الرمز المميز، مع إبقاء إمكانية انضمام الضيوف متاحة عند الحاجة.

مزامنة مستخدمي Active Directory مع ONLYOFFICE DocSpace عبر LDAP

مزامنة مستخدمي Active Directory مع ONLYOFFICE DocSpace عبر LDAP

قم بتوصيل ONLYOFFICE DocSpace بـ Active Directory أو OpenLDAP، واستورد المستخدمين والمجموعات بأمان، وقم بتعيين حقول الحساب، وجدول مزامنة موثوقة.

إضافة الخطوط إلى خادم مستندات ONLYOFFICE: دوكر مقابل لينكس

إضافة الخطوط إلى خادم مستندات ONLYOFFICE: دوكر مقابل لينكس

قم بتثبيت الخطوط المخصصة في خادم مستندات ONLYOFFICE، وقارن عمليات تحميل Docker الدائمة مع النسخ المباشرة، وأعد بناء قائمة الخطوط، وتحقق من النتيجة.

دبيان 12 على خادم افتراضي خاص ذي ذاكرة وصول عشوائي منخفضة: كيفية تقليل أعطال نفاد الذاكرة في MySQL

دبيان 12 على خادم افتراضي خاص ذي ذاكرة وصول عشوائي منخفضة: كيفية تقليل أعطال نفاد الذاكرة في MySQL

تشخيص عمليات إيقاف MySQL بسبب نفاد الذاكرة على Debian 12، والتحقق من حدود ذاكرة VPS، وتكوين التبديل، وضبط ذاكرة قاعدة البيانات والتزامن دون تقديم حل شامل.

تثبيت وتوقيع وحدات نواة مخصصة على نظام التشغيل SLES 15 Secure Boot

تثبيت وتوقيع وحدات نواة مخصصة على نظام التشغيل SLES 15 Secure Boot

قم بتحميل وحدة نواة SLES 15 مخصصة دون تعطيل خاصية التمهيد الآمن. طابق النواة قيد التشغيل، ووقّع ملف .ko، وسجّل مفتاح MOK، وتحقق من التحميل.

ضع مستندات ONLYOFFICE خلف HAProxy دون تعطيل التحرير

ضع مستندات ONLYOFFICE خلف HAProxy دون تعطيل التحرير

قم بتكوين HAProxy HTTPS، وإعادة توجيه الرؤوس، ومهلات WebSocket، وفحوصات السلامة لـ ONLYOFFICE Docs، ثم تحقق من التحرير والحفظ.

إعادة توجيه سجلات النظام الآمنة في SLES باستخدام rsyslog وبروتوكول TLS المتبادل

إعادة توجيه سجلات النظام الآمنة في SLES باستخدام rsyslog وبروتوكول TLS المتبادل

إرسال سجلات نظام SLES إلى جامع rsyslog عن بعد عبر TLS مصادق عليه، مع عمليات التحقق من الشهادات، وتخزين الانقطاعات مؤقتًا، واختبارات التسليم.