حلّ المجتمع

لا تبدأ تطبيقات ZimaOS تلقائيًا بعد إعادة التشغيل: فحوصات بيئة تشغيل Docker

After upgrading to ZimaOS 1.4.3, multiple apps could be started manually but returned to a stopped state after reboot. One contributor traced a broader Docker startup failure to an NVIDIA runtime systemd override.

بدأ هذا الموضوع باعتباره شكوى من التشغيل التلقائي للتطبيقات، لكن ردًا لاحقًا حدّد نمط فشل أعمق: إذ تعذّر تشغيل Docker نفسه لأن تجاوزًا في systemd فرض استخدام nvidia-container-runtime على مضيف كان مسار وقت التشغيل فيه غير متوافق.

لقطة شاشة للوحة تحكم ZimaOS تُظهر تطبيقات الحاويات باللون الرمادي بعد إعادة التشغيل على الإصدار 1.4.3
إحدى لقطات الشاشة الأصلية التي تُظهر تطبيقات كان يمكن تشغيلها يدويًا، لكنها لم تستمر بعد إعادة التشغيل.
قائمة تطبيقات ZimaOS تُظهر تطبيقات إضافية فشل تشغيلها تلقائيًا بعد التحديث إلى الإصدار 1.4.3
وثّق الموضوع الأصلي تأثر عدة تطبيقات تعتمد على Docker بعد التحديث.
عرض لوحة تحكم ZimaOS على الهاتف مع توقف عدة تطبيقات حاويات عن العمل تلقائيًا بعد إعادة التشغيل
لقطة شاشة أصلية أخرى من تقرير التشغيل التلقائي للتطبيقات.
لوحة تطبيقات ZimaOS تُظهر حالة الحاوية المتأثرة بعد إعادة تشغيل النظام على الإصدار 1.4.3
دليل أصلي من المجتمع يُظهر حالة التطبيقات المتكررة بعد إعادة التشغيل.

تحقق أولًا مما إذا كان Docker قيد التشغيل

إذا فشلت عدة تطبيقات غير مترابطة بعد إعادة التشغيل، فتحقق من خدمة Docker قبل تعديل كل تطبيق على حدة. يوضح دليل استكشاف أخطاء عفريت Docker وإصلاحها حالات فشل بدء العفريت الناتجة عن تعارض الإعدادات وتجاوزات systemd.

تساعد متطلبات متجر تطبيقات ZimaOS في تحديد التطبيقات التي تعتمد على Docker، بينما يوضح تطبيق Docker الأول سير العمل المعتاد للحاويات في ZimaOS. وتكون المشكلة التي تؤثر في عدة حاويات في الوقت نفسه أقرب إلى أن تكون في طبقة العفريت/وقت التشغيل، لا تسعة أخطاء مستقلة في التطبيقات.

سياسة إعادة التشغيل ليست الطبقة الوحيدة

توضح سياسات إعادة تشغيل Docker أن سياسات إعادة التشغيل تتحكم فيما يفعله العفريت بالحاويات المتوقفة. لكنها لا تفيد إذا تعذّر على عفريت Docker نفسه بدء التشغيل بصورة صحيحة.

كان إصلاح وقت تشغيل NVIDIA خاصًا بالنظام

عطّل أحد المساهمين تجاوزًا في systemd خاصًا بـ Docker، كان يضيف صراحةً nvidia-container-runtime. وبعد إعادة التشغيل، عاد Docker إلى العمل، لكن دعم وحدة معالجة الرسومات NVIDIA لم يعد مكوّنًا عبر ذلك التجاوز.

يوصي دليل NVIDIA Container Toolkit حاليًا بتهيئة Docker باستخدام nvidia-ctk runtime configure --runtime=docker ثم إعادة تشغيل Docker. وهذا سياق مهم: لا ينبغي اعتبار إعادة تسمية ملف تجاوز من موضوع قديم في المجتمع الطريقة الحديثة الشاملة لتهيئة وقت تشغيل NVIDIA أو إزالته.

تحقق من المساحة الحرة قبل تعديل ملفات النظام

حاول مستخدم لاحق إعادة تسمية التجاوز، فتلقى الرسالة No space left on device. وهذا سبب جذري مختلف يجب حله أولًا. توفّر تغييرات ZimaOS 1.5 سياقًا لإصدارات تغييرات ZimaOS، بينما يكون سير عمل استكشاف أخطاء ZimaOS وإصلاحها مفيدًا عند ظهور عطل أوسع على مستوى المضيف بعد التحديث.

ترتيب تشخيصي أكثر أمانًا

  1. تحقق مما إذا كان Docker نشطًا، وافحص سجلاته الأخيرة.
  2. تأكد من أن قرص النظام غير ممتلئ.
  3. تحقق من سياسات إعادة تشغيل الحاويات فقط بعد التأكد من سلامة العفريت.
  4. إذا أشارت السجلات إلى تحميل وقت تشغيل NVIDIA، فافحص إعداد وقت التشغيل الحالي قبل تغييره.
  5. انسخ أي تجاوز مخصص في systemd احتياطيًا قبل تعديله.

الخلاصة

لا يثبت الموضوع الأصلي أن كل مشكلة تشغيل تلقائي في ZimaOS 1.4.3 كانت لها الأسباب نفسها. ففي أحد الأنظمة، منع تجاوز لوقت تشغيل NVIDIA في Docker العفريت من بدء التشغيل بصورة طبيعية؛ وفي نظام آخر، كشف الإصلاح المقترح امتلاء قرص النظام. شخّص حالة عفريت Docker والتخزين قبل تطبيق حل التجاوز التاريخي.