إطلاق نظام GNU Shepherd 0.9 init

بعد مرور عامين على تشكيل آخر إصدار مهم، تم نشر مدير الخدمة GNU Shepherd 0.9 (dmd سابقًا)، والذي يتم تطويره بواسطة مطوري توزيعة GNU Guix System كبديل لنظام التهيئة SysV-init الذي يدعم التبعيات . تتم كتابة البرنامج الخفي والأدوات المساعدة للتحكم في Shepherd بلغة Guile (أحد تطبيقات لغة المخطط)، والتي تُستخدم أيضًا لتحديد الإعدادات والمعلمات لبدء الخدمات. يتم استخدام Shepherd بالفعل في توزيعة GuixSD GNU/Linux ويهدف أيضًا إلى استخدامه في GNU/Hurd، ولكن يمكن تشغيله على أي نظام تشغيل متوافق مع POSIX تتوفر له لغة Guile.

يقوم Shepherd بعمل بدء وإيقاف الخدمات من خلال مراعاة العلاقات بين الخدمات، وتحديد وبدء تشغيل الخدمات التي تعتمد عليها الخدمة المحددة بشكل ديناميكي. يدعم Shepherd أيضًا اكتشاف التعارضات بين الخدمات ومنعها من العمل بشكل متزامن. يمكن استخدام المشروع كنظام التهيئة الرئيسي (init مع PID 1)، وفي نموذج منفصل لإدارة العمليات الخلفية للمستخدمين الفرديين (على سبيل المثال، تشغيل tor وprivoxy وmcron وما إلى ذلك) مع التنفيذ مع الحقوق. من هؤلاء المستخدمين.

الابتكارات الرئيسية:

  • يتم تنفيذ مفهوم الخدمات المؤقتة (العابرة)، ويتم تعطيلها تلقائيًا بعد الانتهاء بسبب إنهاء العملية أو استدعاء طريقة "الإيقاف"، والتي قد تكون مطلوبة للخدمات المركبة التي لا يمكن إعادة تشغيلها بعد إيقاف التشغيل.
  • لإنشاء خدمات تشبه inetd، تمت إضافة الإجراء "make-inetd-constructor".
  • لإنشاء الخدمات التي يتم تنشيطها أثناء نشاط الشبكة (بأسلوب تنشيط مقبس systemd)، تمت إضافة إجراء "make-systemd-constructor".
  • تمت إضافة إجراء لبدء الخدمة في الخلفية - "البدء في الخلفية".
  • تمت إضافة المعلمات ":supplementary-groups" و"#:create-session" و"#:resource-limits" إلى إجراء "make-forkexec-constructor".
  • تمكين العملية دون حظر أثناء انتظار ملفات PID.
  • بالنسبة للخدمات التي لا تحتوي على المعلمة "#:log-file"، يتم توفير الإخراج إلى syslog، وبالنسبة للخدمات التي تحتوي على المعلمة #:log-file، تتم كتابة السجل في ملف منفصل يشير إلى وقت التسجيلات. يتم تخزين السجلات من عملية الراعي غير المميزة في الدليل $XDG_DATA_DIR.
  • تم إيقاف دعم البناء باستخدام Guile 2.0. تم حل المشكلات عند استخدام إصدارات Guile 3.0.5-3.0.7.
  • مكتبة Fibers 1.1.0 أو الأحدث مطلوبة الآن للعمل.

المصدر: opennet.ru

إضافة تعليق