الرئيسية
» كيف
»
فشل تحميل وحدة الإقلاع في نظام SLES: ابحث عن برنامج التشغيل وقم بإصلاحه
فشل تحميل وحدة الإقلاع في نظام SLES: ابحث عن برنامج التشغيل وقم بإصلاحه
عندما يُظهر نظام SLES رسالة "فشل بدء تحميل وحدات النواة" أثناء الإقلاع، افحص systemd-modules-load.serviceالسجلات أولاً لتحديد الوحدة التي فشلت. إذا كانت الوحدة إدخالاً اختيارياً قديماً، فاحذف هذا الطلب من إعداداتها؛ أما إذا كانت مطلوبة، فأصلح عدم توافق برنامج التشغيل أو النواة بدلاً من تعطيل الخدمة.
ينطبق هذا الإجراء على نظام SUSE Linux Enterprise Server (SLES) 15، باستخدام وثائق إدارة SLES 15 SP7 كمرجع. يجب تشغيل الأوامر من وحدة تحكم محلية أو جلسة SSH فعّالة مع sudoإمكانية الوصول.
ما معنى الرسالة قبل إجراء أي تغيير
وحدة النواة هي برنامج تشغيل أو ميزة في النواة يمكن تحميلها بشكل منفصل. أثناء بدء التشغيل، systemd-modules-load.serviceتعالج طلبات تحميل وحدات محددة، بما في ذلك تلك المُعرّفة في modules-load.dالملفات. قد يؤدي فشل الطلب إلى تعطل تلك الخدمة حتى مع استمرار تشغيل أجزاء أخرى من الخادم.
تُشير SUSE إلى أن معظم برامج التشغيل تُحمّل تلقائيًا عند اكتشاف الأجهزة. عادةً ما تكون قائمة الوحدات النمطية اليدوية غير ضرورية، لذا فإن وجود إدخال قديم احتمال وارد، ولكن رسالة بدء التشغيل وحدها لا تُثبت ذلك. حافظ على إمكانية الوصول إلى وحدة التحكم، والتقط لقطة للنظام أو نسخة احتياطية من الإعدادات إن وُجدت، ولا تُلغِ تحميل برامج تشغيل التخزين أو الشبكة أو المجموعة لمجرد إخفاء التحذير. راجع دليل إدارة وحدات نواة SUSE للطراز المدعوم.
الخطوة 1: اقرأ حالة الخدمة وسجل بدء التشغيل الخاص بها
ابدأ بفحص حالة systemd. systemdفهو مدير الخدمات المسؤول عن بدء تشغيل الخدمات والإبلاغ عن حالتها.
-bيُقيّد هذا الخيار journalctlعملية الإقلاع الحالية، -uويختار هذه الخدمة. ابحث أعلى سطر "فشل مع النتيجة" الأخير عن رسائل مثل "تعذر العثور على الوحدة النمطية"، أو خيار غير صالح، أو خطأ في الأذونات أو التوقيع. سجّل اسم الوحدة النمطية ونص الخطأ بدقة. لا تفترض وجود الوحدة النمطية المذكورة في المثال أدناه على خادمك.
مثال على عرض حالة الخدمة: تحدد الوحدة الفاشلة خدمة بدء التشغيل التي تحتاج إلى تحقيق.مثال على سجل بدء التشغيل: اسم الوحدة التوضيحية example_driver هو الدليل للتتبع، وليس فشلًا مؤكدًا في SLES.
إذا كانت سجلات الخدمة غير حاسمة، فتحقق من رسائل النواة للحصول على تفاصيل إضافية:
sudo journalctl -k -b --no-pager
إذا تعذّر على الكمبيوتر الوصول إلى حساب مستخدم صالح، فقم بتشغيل نواة نظام تشغيل أقدم من خلال GRUB إن وُجدت، أو استخدم وسائط استعادة SLES. لا تُعدّل الوحدات النمطية الأساسية للتشغيل من جلسة تحكم عن بُعد غير مُختبرة. تُوثّق SUSE عوامل تصفية السجل في فصل إدارة journalctl .
الخطوة الثانية: ابحث عن إعدادات بدء التشغيل التي تطلب ذلك
لنفترض أسماء المجلات example_driver. استبدل هذا العنصر النائب باسم الوحدة النمطية الفعلي، ثم ابحث في قوائم الوحدات النمطية:
يُشير كل سطر مطابق إلى الملف الذي يطلب تلك الوحدة النمطية عند بدء التشغيل. عادةً ما يوجد تكوين المسؤول المحلي في المسار <مسار التكوين> /etc/modules-load.d/، بينما قد تُوفّر الحزمة ملفها في المسار <مسار /usr/lib/modules-load.d/الحزمة>. يُعطى الملف المحلي الذي يحمل نفس الاسم الأساسي الأولوية على ملف المورّد، كما هو موضح في دليل تكوين systemd الخاص بشركة SUSE . إذا لم يُعثر على شيء، فابحث أيضًا cat /proc/cmdlineعن طلبات الوحدات النمطية عند بدء التشغيل، وتأكد من نسخ اسم الخطأ بشكل صحيح.
افتح الملف المطابق وحدد ما إذا كان الإدخال لا يزال مطلوبًا من قِبل الجهاز أو التطبيق. يختلف طلب وحدة نمطية لجهاز قديم تمت إزالته عن برنامج تشغيل وحدة تحكم التخزين أو برنامج مراقبة المجموعة.
مثال على التكوين المحلي: قم بتغيير إدخال الوحدة الاختيارية فقط بعد التأكد من الغرض منه.
الخطوة 3: اختبر الوحدة، ثم قم بتطبيق الإصلاح المناسب
يتحقق من نواة النظام قيد التشغيل وما إذا كان برنامج التشغيل متوفرًا لها. modprobeيقوم بتحميل وحدات النواة وحل التبعيات؛ ويقوم -nخياره بإجراء تشغيل تجريبي دون إدراج أي تبعيات.
استبدل الملف مرة أخرى example_driver. تساعد عملية التشغيل التجريبي في تحديد مشاكل البحث أو التكوين، لكنها لا تثبت أن برنامج التشغيل سيُهيأ بنجاح على جهازك أو يجتاز فحوصات توقيع التمهيد الآمن. توصي SUSE باستخدام هذه الطريقة modprobeبدلاً من insmodالتحميل المباشر؛ وتظهر تفاصيل علامات التشغيل التجريبي في دليل modprobe .
أمثلة على عمليات التحقق: قارن النواة قيد التشغيل مع الوحدة التي تقوم بفحصها قبل إجراء التغييرات.
إذا كان إدخال اختياري قديم يشير إلى وحدة مفقودة
قم بعمل نسخة احتياطية من الملف المحلي المحدد، ثم قم بتعطيل السطر القديم فقط. على سبيل المثال، إذا /etc/modules-load.d/example.confكان هذا هو المصدر المؤكد:
sudo cp -a /etc/modules-load.d/example.conf \
/etc/modules-load.d/example.conf.bak
sudoedit /etc/modules-load.d/example.conf
example_driverغيّر إدخالًا واحدًا إلى # example_driver، ثم احفظ التغييرات، واترك طلبات الوحدات الأخرى كما هي. إذا كان المصدر ملف حزمة ضمن /usr/lib، فلا تعدّل ملف الحزمة مباشرةً؛ استخدم نسخة محلية مُراجعة بشكل صحيح أو اطلب تصحيح إعدادات الحزمة. لا تحذف طلب وحدة لمجرد أن modinfoالنظام يُبلغ عن فقدانه إذا كان الجهاز المقابل مطلوبًا.
في حال كان أحد الوحدات المطلوبة مفقودًا أو غير متوافق
لا تقم بتعطيل السطر. تأكد من أن حزمة تعريفات التشغيل تدعم مخرجات الأمر ` uname -rsudo` وحزمة خدمة SLES المثبتة. قد تشير رسالة "لم يتم العثور على الوحدة" إلى أن تعريف التشغيل المطابق لم يتم تثبيته أو لم تتم إعادة بنائه بعد تحديث النواة. تشير رسالة "تنسيق وحدة غير صالح" إلى مشكلة توافق؛ ويمكن لسجلات النواة تحديد المشكلة بدقة أكبر. استعد أو أعد تثبيت تعريف التشغيل المطابق المدعوم من خلال تعليمات SUSE أو تعليمات مُصنِّع الأجهزة. تجنب نسخ أي .koملفات عشوائية من نواة مختلفة.
إذا كانت الوحدة موجودة ولكن فهرس تبعيتها قديم بشكل واضح، فأعد بناء هذا الفهرس للنواة الحالية وأعد محاولة التشغيل التجريبي:
sudo depmod -a "$(uname -r)"
sudo modprobe -n -v example_driver
لا تُثبّت هذه الخطوة برنامج تشغيل مفقودًا. إذا ظهرت لك رسالة "المفتاح المطلوب غير متوفر" أو رفض توقيع الوحدة النمطية على نظام التمهيد الآمن، فاتبع إجراءات تسجيل المفتاح الموثوق وتوقيع برنامج التشغيل من SUSE؛ ولا تُعطّل التمهيد الآمن كحلٍّ عام. توضح SUSE قيود برامج التشغيل الخارجية في إرشادات نشر التمهيد الآمن .
الخطوة الرابعة: تأكد من أن عملية الإقلاع التالية نظيفة
بعد تصحيح الإعدادات أو استعادة برنامج التشغيل، أعد تشغيل المُحمِّل وتحقق من حالته. لا تقم بذلك إلا بعد التأكد من صحة جميع الإدخالات المتبقية؛ إذ ستؤدي إعادة التشغيل إلى محاولة تحميل الملفات المُهيأة مرة أخرى.
إذا نجحت الوحدة، فجدول إعادة تشغيل مُتحكم بها مع إمكانية الوصول إلى وحدة التحكم، ثم أعد تشغيل أوامر الحالة والسجل. يتم التأكد من الإصلاح عندما لا تتعطل الخدمة عند إعادة التشغيل، وعندما تستمر جميع الأجهزة أو البرامج المطلوبة التي تعتمد على الوحدة في العمل. إذا عاد الخطأ، فقارن السجل الجديد بالسجل القديم: فقد تكون وحدة أخرى مدرجة معطلة أيضًا. احتفظ بالنسخة الاحتياطية حتى يجتاز هذا الفحص؛ لا تقم بإخفائها systemd-modules-load.serviceلمجرد كتم رسالة بدء التشغيل.