boot(7)

الاسم
boot - عملية إقلاع النظام بناءً على UNIX System V الإصدار 4

الوصف
تختلف عملية الإقلاع (أو "تسلسلالإقلاع") في تفاصيلها بين الأنظمة، ولكن يمكن تقسيمها تقريبًا إلى مراحل تتحكم فيها المكونات التالية:

(1) العتاد

(2) محمل نظام التشغيل (OS)

(3) نواة

(4) عملية مساحة المستخدم الجذر (init(8) و inittab(5))

(5) سكربتات الإقلاع

يوصف كل من هذه المكونات أدناه بمزيد من التفصيل.

  العتاد
بعد تشغيل الطاقة أو إعادة التشغيل القسري، تُمنح السيطرة لبرنامج مخزن في ذاكرة القراءة فقط (عادةً PROM)؛ ولأسباب تاريخية تتعلق بالحاسوب الشخصي، غالبًا ما يُسمى هذا البرنامج "BIOS".

يؤدي هذا البرنامج عادةً اختباراً ذاتياً أساسياً للآلة ويصل إلى الذاكرة غير المتطايرة لقراءة المزيد من المعاملات. هذه الذاكرة في الحاسوب الشخصي هي ذاكرة CMOS مدعومة ببطارية، لذا يشير إليها معظم الناس باسم "CMOS"؛ خارج عالم الحاسوب الشخصي، تُسمى عادةً "NVRAM" (ذاكرة الوصول العشوائي غير المتطايرة).

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

ملاحظة:
    قد يُوصَل الجهاز الذي يُقرأ منه محمل نظام التشغيل عبر شبكة، وفي هذه الحالة، تُحدد تفاصيل الإقلاع بشكل أكبر من خلال بروتوكولات مثل DHCP و TFTP و PXE و Etherboot وغيرها.

  محمل نظام التشغيل
تتمثل المهمة الرئيسة لمحمل نظام التشغيل في تحديد موقع النواة على جهاز ما، وتحميلها، وتشغيلها. تسمح معظم محملات نظام التشغيل بالاستخدام التفاعلي، من أجل تمكين تحديد نواة بديلة (ربما نسخة احتياطية في حال كانت آخر نواة صُرِّفت لا تعمل) وتمرير معاملات اختيارية إلى النواة.

في الحاسوب الشخصي التقليدي، يقع محمل نظام التشغيل في الكتلة الأولية بحجم 512 بايت من جهاز الإقلاع؛ تُعرف هذه الكتلة باسم "MBR" (سجل الإقلاع الرئيس).

في معظم الأنظمة، يكون محمل نظام التشغيل محدودًا جدًا بسبب قيود مختلفة. حتى في الأنظمة غير القائمة على الحاسوب الشخصي، توجد بعض القيود على حجم وتعقيد هذا المحمل، لكن قيد الحجم في MBR الخاص بالحاسوب الشخصي (512 بايت، بما في ذلك جدول الأقسام) يجعل من المستحيل تقريبًا حشر الكثير من الوظائف فيه.

لذلك، تقسم معظم الأنظمة دور تحميل نظام التشغيل بين محمل نظام تشغيل رئيس ومحمل نظام تشغيل ثانوي؛ قد يقع محمل نظام التشغيل الثانوي هذا ضمن جزء أكبر من التخزين الدائم، مثل قسم قرص.

في لينكس، غالبًا ما يكون محمل نظام التشغيل هو grub(8) (والبديل هو lilo(8)).

  نواة
عند تحميل النواة، فإنها تهيئ مكونات مختلفة من الحاسوب ونظام التشغيل؛ وعادة ما يُعتبر كل جزء من البرمجيات المسؤول عن مثل هذه المهمة "برنامج قيادة" للمكون المعني. تبدأ النواة مبدل الذاكرة الافتراضية (وهي عملية نواة، تُسمى "kswapd" في نواة لينكس الحديثة)، وتوصل نظام ملفات ما عند المسار الجذر، /.

تتعلق بعض المعاملات التي قد تُمرر إلى النواة بهذه الأنشطة (على سبيل المثال، يمكن تجاوز نظام الملفات الجذر المبدئي)؛ لمزيد من المعلومات حول معاملات نواة لينكس، اقرأ bootparam(7).

عندها فقط تنشئ النواة عملية مساحة المستخدم الأولية، والتي تُعطى الرقم 1 كمعرف عملية PID الخاص بها. تقليدياً، تنفذ هذه العملية البرنامج /sbin/init، الذي تُمرر إليه المعاملات التي لم تُعالجها النواة بالفعل.

  عملية مساحة المستخدم الجذر

ملاحظة:
    ينطبق الوصف التالي على نظام تشغيل يعتمد على UNIX System V الإصدار 4. ومع ذلك، اعتمد عدد من الأنظمة واسعة الانتشار نهجاً ذا صلة ولكنه مختلف جذرياً يُعرف باسم systemd(1)، والذي فُصِّلت عملية إقلاعه في دليل bootup(7) المرتبط به.

عندما يبدأ /sbin/init، فإنه يقرأ /etc/inittab للحصول على المزيد من التعليمات. يحدد هذا الملف ما يجب تشغيله عندما يُطلب من برنامج /sbin/init الدخول في مستوى تشغيل معين، مما يمنح المدير طريقة سهلة لإنشاء بيئة لاستخدام ما؛ يرتبط كل مستوى تشغيل بمجموعة من الخدمات (على سبيل المثال، مستوى التشغيل S هو وضع المستخدم الواحد، ومستوى التشغيل 2 يتضمن تشغيل معظم خدمات الشبكة).

يمكن للمدير تغيير مستوى التشغيل الحالي عبر init(1)، والاستعلام عن مستوى التشغيل الحالي عبر runlevel(8).

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

  سكربتات الإقلاع

ملاحظة:
    ينطبق الوصف التالي على نظام تشغيل يعتمد على UNIX System V الإصدار 4. ومع ذلك، فإن عدداً من الأنظمة واسعة الانتشار (Slackware Linux و FreeBSD و OpenBSD) لديها مخطط مختلف نوعاً ما لسكربتات الإقلاع.

لكل خدمة مدارة (البريد، خادم nfs، cron، إلخ)، يوجد سكربت بدء تشغيل واحد يقع في دليل محدد (/etc/init.d في معظم إصدارات لينكس). يقبل كل من هذه السكربتات وسيطاً واحداً هو الكلمة "start" (مما يؤدي إلى بدء الخدمة) أو الكلمة "stop" (مما يؤدي إلى إيقاف الخدمة). قد يقبل السكربت اختيارياً معاملات أخرى ملائمة (مثل "restart" للإيقاف ثم البدء، و "status" لعرض حالة الخدمة، وما إلى ذلك). يعرض تشغيل السكربت بدون معاملات الوسائط الممكنة.

  أدلة التسلسل
لجعل سكربتات معينة تبدأ/تتوقف عند مستويات تشغيل محددة وبترتيب معين، توجد أدلةتسلسل، عادة ما تكون على الشكل /etc/rc[0-6S].d. في كل من هذه الأدلة، توجد روابط (عادةً رمزية) للسكربتات في الدليل /etc/init.d.

يُستدعى سكربت رئيس (عادةً /etc/rc) من inittab(5)؛ يستدعي هذا السكربت الرئيس سكربت كل خدمة عبر رابط في دليل التسلسل المعني. كل رابط يبدأ اسمه بـ 'S' يُستدعى بالوسيط "start" (وبالتالي تبدأ الخدمة). كل رابط يبدأ اسمه بـ 'K' يُستدعى بالوسيط "stop" (وبالتالي تتوقف الخدمة).

لتحديد ترتيب البدء أو الإيقاف ضمن نفس مستوى التشغيل، يحتوي اسم الرابط على رقم-الترتيب. وأيضًا، للتوضيح، عادةً ما ينتهي اسم الرابط باسم الخدمة التي يشير إليها. على سبيل المثال، الرابط /etc/rc2.d/S80sendmail يبدأ خدمة sendmail(8) في مستوى التشغيل 2. يحدث هذا بعد تشغيل /etc/rc2.d/S12syslog ولكن قبل تشغيل /etc/rc2.d/S90xfs.

إدارة هذه الروابط تعني إدارة ترتيب الإقلاع ومستويات التشغيل؛ في العديد من الأنظمة، توجد أدوات للمساعدة في هذه المهمة (مثل chkconfig(8)).

  ضبط الإقلاع
غالبًا ما يُسمى البرنامج الذي يقدم خدمة باسم "عفريت". عادةً، قد يتلقى العفريت خيارات ومعاملات متنوعة من سطر الأوامر. للسماح لمدير النظام بتغيير هذه المدخلات دون تحرير سكربت إقلاع كامل، يُستخدم ملف ضبط منفصل، ويقع في دليل محدد حيث يمكن لسكربت إقلاع مرتبط العثور عليه (/etc/sysconfig في أنظمة Red Hat القديمة).

في أنظمة UNIX القديمة، كان مثل هذا الملف يحتوي على خيارات سطر الأوامر الفعلية للعفريت، ولكن في أنظمة لينكس الحديثة (وكذلك في HP-UX)، فإنه يحتوي فقط على متغيرات صدفة. يقرأ سكربت الإقلاع في /etc/init.d ملف ضبطه ويضمنه (أي أنه "يستمد" ملف ضبطه) ثم يستخدم قيم المتغيرات.

الملفات
/etc/init.d/, /etc/rc[S0-6].d/, /etc/sysconfig/

انظر أيضًا
init(1), systemd(1), inittab(5), bootparam(7), bootup(7), runlevel(8), shutdown(8)

ترجمة
تُرجمت هذه الصفحة من الدليل بواسطة زايد السعيدي <zayed.alsaidi@gmail.com>

هذه الترجمة هي وثيقة مجانية؛ راجع رخصة جنو العامة الإصدار 3 (https://www.gnu.org/licenses/gpl-3.0.html) أو ما بعده للاطلاع على شروط حقوق النشر. لا توجد أي ضمانات.

إذا وجدت أي أخطاء في ترجمة صفحة الدليل هذه، يرجى إرسال بريد إلكتروني إلى قائمة بريد المترجمين: kde-l10n-ar@kde.org.