البداية

الإصدار 7 من يونكس : قائمة /etc ، تعرض init و rc
الإصدار 7 من يونكس: محتويات البرنامج النصي /etc/rc Bourne shell

في أنظمة تشغيل الكمبيوتر المستندة إلى يونكس ، فإن init (اختصار لـ initialization ) هي أول عملية يتم بدء تشغيلها أثناء تشغيل نظام التشغيل. Init هي عملية شيطانية تستمر في العمل حتى يتم إيقاف تشغيل النظام. إنها السلف المباشر أو غير المباشر لجميع العمليات الأخرى وتتبنى تلقائيًا جميع العمليات اليتيمة . يتم تشغيل Init بواسطة النواة أثناء عملية التمهيد ؛ سيحدث ذعر النواة إذا لم تتمكن النواة من تشغيلها، أو إذا ماتت لأي سبب. يتم عادةً تعيين معرف العملية 1 لعملية Init.

في أنظمة يونكس مثل System III و System V ، انحرف تصميم init عن الوظيفة التي يوفرها init في Research Unix ومشتقاته من BSD . حتى أوائل العقد الأول من القرن الحادي والعشرين، [1] [ فشل التحقق ] استخدمت معظم توزيعات Linux init تقليديًا كان متوافقًا إلى حد ما مع System V، بينما تستخدم بعض التوزيعات مثل Slackware نصوص بدء التشغيل على غرار BSD، والتوزيعات الأخرى مثل Gentoo لها إصداراتها المخصصة.

منذ ذلك الحين، تم إنشاء العديد من تنفيذات init الإضافية، في محاولة لمعالجة قيود التصميم في الإصدارات التقليدية. وتشمل هذه launchd ، و Service Management Facility ، وsystemd ، وRunit ، و OpenRC .

البحث في نمط Unix/نمط BSD

يقوم برنامج init الخاص بنظام التشغيل Unix بتشغيل البرنامج النصي shell للتهيئة الموجود في /etc/rc، [2] ثم يقوم بتشغيل getty على المحطات الطرفية تحت سيطرة /etc/ttys. [3] لا توجد مستويات تشغيل؛ /etc/rcيحدد الملف البرامج التي يتم تشغيلها بواسطة init. تتمثل ميزة هذا النظام في أنه بسيط وسهل التحرير يدويًا. ومع ذلك، قد تتطلب البرامج الجديدة المضافة إلى النظام إجراء تغييرات على الملفات الموجودة التي تخاطر بإنتاج نظام غير قابل للتمهيد.

كان BSD init، قبل 4.3BSD، هو نفسه init الخاص بـ Research UNIX؛ [4] [5] في 4.3BSD ، أضاف الدعم لتشغيل نظام نوافذ مثل X على محطات طرفية رسومية تحت سيطرة /etc/ttys. [6] [7] لإزالة متطلب التحرير /etc/rc، دعمت متغيرات BSD منذ فترة طويلة ملفًا خاصًا بالموقع /etc/rc.localيتم تشغيله في غلاف فرعي بالقرب من نهاية تسلسل التمهيد.

تم تقديم نظام معياري بالكامل مع NetBSD 1.5 وتم نقله إلى FreeBSD 5.0 ​​والإصدارات اللاحقة. ينفذ هذا النظام البرامج النصية في /etc/rc.dالدليل. على عكس ترتيب البرامج النصية في System V، والذي يتم اشتقاقه من اسم ملف كل برنامج نصي، يستخدم هذا النظام علامات اعتماد صريحة توضع داخل كل برنامج نصي. [8] يتم تحديد الترتيب الذي يتم به تنفيذ البرامج النصية بواسطة أداة rcorder بناءً على المتطلبات المذكورة في هذه العلامات.

نمط SysV

sysv-rc-conf ، أداة مساعدة TUI تحدد نصوص التهيئة على غرار SysV التي سيتم تشغيلها في كل مستوى تشغيل

عند مقارنته بإصداراته السابقة، قدم نظام UNIX System III من شركة AT&T نمطًا جديدًا لتكوين بدء تشغيل النظام، [9] والذي نجا (مع التعديلات) في نظام UNIX System V ولذلك يُطلق عليه "نمط SysV init".

في أي لحظة، يكون نظام التشغيل V قيد التشغيل في إحدى الحالات المحددة مسبقًا، والتي تسمى مستويات التشغيل . يكون مستوى تشغيل واحد على الأقل هو الحالة التشغيلية الطبيعية للنظام؛ وعادةً ما تمثل مستويات التشغيل الأخرى وضع المستخدم الفردي (المستخدم لإصلاح نظام معيب)، وإيقاف تشغيل النظام، والعديد من الحالات الأخرى. يؤدي التبديل من مستوى تشغيل إلى آخر إلى تشغيل مجموعة من البرامج النصية لكل مستوى تشغيل، والتي عادةً ما تقوم بتثبيت أنظمة الملفات، وبدء تشغيل أو إيقاف تشغيل الديمونات ، وبدء تشغيل أو إيقاف نظام X Window ، وإيقاف تشغيل الجهاز، وما إلى ذلك.

مستويات التشغيل

تصف مستويات التشغيل في System V حالات معينة لجهاز ما، وتتميز بالعمليات والشياطين التي تعمل في كل منها. بشكل عام، هناك سبعة مستويات تشغيل، ثلاثة منها تعتبر "قياسية"، لأنها ضرورية لتشغيل النظام:

  1. اغلاق
  2. وضع المستخدم الفردي (يُعرف أيضًا باسم S أو s )
  3. إعادة التشغيل

بصرف النظر عن هذه الأنظمة القياسية، فإن أنظمة يونكس والأنظمة الشبيهة بها تتعامل مع مستويات التشغيل بشكل مختلف إلى حد ما. فالقاسم المشترك، وهو /etc/inittabالملف، يحدد ما يفعله كل مستوى تشغيل تم تكوينه في نظام معين.

مستويات التشغيل الافتراضية

نظام التشغيل مستوى التشغيل الافتراضي
ايكس 2
مضاد اكس 5
جنتو لينكس 3 [10]
تجربة المستخدم HP 3 (وحدة تحكم/خادم/متعدد المستخدمين) أو 4 (رسومية)
لينكس من الصفر 3
سلاكوير لينكس 3
سولاريس / إيلوموس 3 [11]
إصدار UNIX System V 3.x و4.x 2
يونكس وير 7.x 3

في توزيعات Linux التي تستخدم افتراضيًا مستوى التشغيل 5 في الجدول الموجود على اليمين، يستدعي مستوى التشغيل 5 بيئة رسومية متعددة المستخدمين تعمل بنظام X Window System ، عادةً باستخدام مدير عرض مثل GDM أو KDM . ومع ذلك، عادةً ما يحتفظ نظاما التشغيل Solaris و illumos بمستوى التشغيل 5 لإيقاف تشغيل الجهاز وإيقاف تشغيله تلقائيًا.

في معظم الأنظمة، يمكن لجميع المستخدمين التحقق من مستوى التشغيل الحالي باستخدام الأمر runlevelأو who -r. [12] عادةً ما يقوم المستخدم الجذر بتغيير مستوى التشغيل الحالي عن طريق تشغيل الأمرين telinitأو init. /etc/inittabيحدد الملف مستوى التشغيل الافتراضي بالإدخال :initdefault:.

في أنظمة يونكس، يتم تغيير مستوى التشغيل عن طريق تشغيل الخدمات المفقودة فقط (حيث يحدد كل مستوى فقط تلك التي تم تشغيلها/إيقافها). [ بحاجة لمصدر ] على سبيل المثال، قد يؤدي تغيير النظام من مستوى التشغيل 3 إلى 4 إلى تشغيل خادم X المحلي فقط. بالعودة إلى مستوى التشغيل 3، سيتم إيقافه مرة أخرى.

تنفيذات أخرى

تقليديًا، أحد العيوب الرئيسية لـ init هو أنه يبدأ المهام بشكل تسلسلي، وينتظر انتهاء تحميل كل منها قبل الانتقال إلى المهمة التالية. عندما تنتهي عمليات بدء التشغيل بحظر الإدخال/الإخراج (I/O)، فقد يؤدي هذا إلى تأخيرات طويلة أثناء التمهيد. قد يؤدي تسريع الإدخال/الإخراج، على سبيل المثال باستخدام أقراص SSD، إلى تقصير التأخيرات ولكنه لا يعالج السبب الجذري.

لقد تم بذل جهود مختلفة لاستبدال شياطين التهيئة التقليدية لمعالجة هذه المشكلة وغيرها من مشاكل التصميم، بما في ذلك:

  • BootScripts في GoboLinux
  • busybox-init ، مناسب لأنظمة التشغيل المضمنة ، يستخدمه Alpine Linux ، و SliTaz 5(Rolling)، و Tiny Core Linux ، و VMware ESXi ، ويستخدمه OpenWrt قبل استبداله بـ procd
  • دينيت، مدير الخدمة ونظام التهيئة. [13]
  • Epoch، نظام تهيئة Linux أحادي الخيط يركز على البساطة وإدارة الخدمة [14]
  • ginitd، وهي حزمة برامج تتكون من نظام init ونظام إدارة الخدمة [15]
  • Initng ، وهو بديل كامل لـ init مصمم لبدء العمليات بشكل غير متزامن
  • launchd ، بديل لـ init في Darwin / macOS / iOS / tvOS بدءًا من Mac OS X v10.4 (يقوم بتشغيل SystemStarter لتشغيل عمليات "rc.local" وSystemStarter القديمة)
  • OpenRC ، مولد عملية يستخدم init الذي يوفره النظام، مع توفير عزل العملية، والبدء المتوازي، والاعتماد على الخدمة؛ يستخدمه Alpine Linux و Gentoo ومشتقاته، ومتاح كخيار في Devuan و Artix Linux
  • runit ، وهو بديل كامل متعدد الأنظمة لـ init مع بدء تشغيل الخدمات بالتوازي، ويستخدم بشكل افتراضي في Void Linux [16]
  • منشأة إدارة خدمة Sun (SMF)، وهي عبارة عن استبدال/إعادة تصميم كامل لـ init من الألف إلى الياء في illumos / Solaris بدءًا من Solaris 10، ولكن تم إطلاقها باعتبارها الخدمة الوحيدة بواسطة init الأصلي على غرار System V
  • Shepherd ، خدمة GNU ومدير الديمون الذي يوفر تهيئة غير متزامنة تعتمد على التبعية؛ مكتوبة بلغة Guile Scheme ومقصود منها أن تكون قابلة للاختراق بشكل تفاعلي أثناء التشغيل العادي للنظام [17]
  • s6، مجموعة برامج تتضمن نظام init. [18] [19]
  • systemd ، مجموعة برامج، بديل كامل لـ init في Linux تتضمن برنامج init daemon، مع بدء تشغيل الخدمات بشكل متزامن، ومدير الخدمة، وميزات أخرى.
  • SystemStarter ، مُنشئ عملية يتم بدء تشغيله بواسطة init على غرار BSD في نظام التشغيل Mac OS X قبل نظام التشغيل Mac OS X v10.4
  • Upstart ، وهو بديل كامل لـ init مصمم لبدء العمليات بشكل غير متزامن. بدأه Ubuntu واستخدمه حتى عام 2014. كما تم استخدامه في Fedora 9، [20] [21] و Red Hat Enterprise Linux 6 [22] و Google ChromeOS . [23]

اعتبارًا من فبراير 2019 ، تم اعتماد systemd من قبل معظم توزيعات Linux الرئيسية. [24]

انظر أيضا

مراجع

  1. ^ "لينارت بوتيرينج يتحدث عن صعود systemd المضطرب". The New Stack . 2018-11-08. مؤرشف من الأصل في 2018-11-08 . تم الاسترجاع في 2024-01-30 .
  2. ^ init(8)  –  دليل مبرمج يونكس الإصدار 7
  3. ^ ttys(5)  –  دليل مبرمج يونكس الإصدار 7
  4. ^ init(8)  –  دليل مدير نظام 4.2BSD
  5. ^ ttys(5)  –  دليل تنسيقات الملفات 4.2BSD
  6. ^ init(8)  –  دليل مدير نظام 4.3BSD
  7. ^ ttys(5)  –  دليل تنسيقات الملفات 4.3BSD
  8. ^ Andrew Smallshaw (7 ديسمبر 2009). "Unix and Linux startup scripts, Part 2". مؤرشف من الأصل في 18 ديسمبر 2009. تم الاسترجاع في 6 يونيو 2011 .
  9. ^ "init(8)". minnie.tuhs.org . مؤرشف من الأصل في 2021-07-27 . تم الاسترجاع 2015-09-12 .
  10. ^ "Initscripts". وثائق Gentoo Linux . Gentoo.org. 2014-12-13. مؤرشف من الأصل في 2020-12-03 . تم الاسترجاع في 2020-12-08 .
  11. ^ "Run Levels". إدارة Oracle Solaris: المهام الشائعة . Oracle . مؤرشف من الأصل في 2016-04-10 . تم الاسترجاع في 2017-11-14 .
  12. ^ "صفحات دليل UNIX: مستوى التشغيل (8)". Unixhelp.ed.ac.uk. 1997-05-27. مؤرشف من الأصل في 2014-07-14 . تم الاسترجاع في 2014-07-12 .
  13. ^ "GitHub - davmac314/dinit: خدمة مراقبة / نظام "init"". GitHub . مؤرشف من الأصل في 2021-12-12 . تم الاسترجاع في 2021-12-12 .
  14. ^ "الصفحة الرئيسية لنظام Epoch Init". مؤرشف من الأصل في 2014-08-02 . تم الاسترجاع في 2014-07-31 .
  15. ^ وود ماثيوسون، إس إم (2024/12/16). "ginitd: نظام init الفعال".
  16. ^ "الصفحة الرئيسية لـ Void Linux". مؤرشف من الأصل في 2020-08-29 . تم الاسترجاع 2020-08-31 .
  17. ^ "The Shepherd - GNU Project". مؤسسة البرمجيات الحرة، المحدودة. مؤرشف من الأصل في 2016-02-12 . تم الاسترجاع في 2016-01-16 .
  18. ^ "s6: لماذا نحتاج إلى مجموعة إشراف أخرى". مؤرشف من الأصل في 2021-09-13 . تم الاسترجاع 2021-09-13 .
  19. ^ "s6 init system". مؤرشف من الأصل في 2021-09-13.
  20. ^ ميزات مقبولة في فيدورا 14، 2010-07-13، تم أرشفة النسخة الأصلية في 2022-03-27 ، تم استرجاعها في 2010-07-13
  21. ^ "Fedora defers systemd to F15". Linux Weekly News. 2010-09-14. مؤرشف من الأصل في 2010-09-19 . تم الاسترجاع في 2010-09-17 .
  22. ^ "النشر". Red Hat Enterprise Linux 6: الملاحظات الفنية . Red Hat . مؤرشف من الأصل في 2018-08-29 . تم الاسترجاع في 2013-12-31 .
  23. ^ Software Architecture: Chromium OS design documentation، تم أرشفتها من الأصل في 9 أبريل 2022 ، تم استرجاعها في 25 يناير 2014
  24. ^ انظر Systemd#Adoption
  • صفحة دليل FreeBSD init
  • ورقة بحثية تلخص مخططات التهيئة لنظام التشغيل يونكس (2007)
  • مرفق إدارة خدمات Solaris - دليل البدء السريع على موقع Wayback Machine (تم أرشفته في 31 ديسمبر 2005)
  • تاريخ أنظمة التهيئة الحديثة (1992–2015) محفوظ في 2015-10-11 على موقع Wayback Machine
تم الاسترجاع من "https://en.wikipedia.org/w/index.php?title=Init&oldid=1264925378"
Original text
Rate this translation
Your feedback will be used to help improve Google Translate