Linux أحذية برقبة / بووت

كما اتضح ، ليس هناك الكثير لعملية التمهيد:

1. يجد محمل التمهيد صورة kernel على ملف disk، وتحميله في الذاكرة ، وبدء تشغيله.
2. نواة تهيئة الأجهزة وبرامج التشغيل STI.
3. تقوم النواة بتحميل الملف الجذرsystem.
4. يبدأ النواة الأولية ودعا لجدولة.
5. التهيئة يحدد بقية العمليات في الحركة.
6. وكان آخر العمليات التي تبدأ التهيئة كجزء من تسلسل التمهيد تسمح لك لتسجيل الدخول.

يعد تحديد كل مرحلة من مراحل عملية التمهيد أمرًا لا يقدر بثمن في إصلاح مشكلات التمهيد وفهم system ككل. للبدء ، لا تقم بتشغيل محمل الإقلاع ، وهي الشاشة الأولية أو المطالبة التي تحصل عليها بعد أن يقوم الكمبيوتر باختبار التشغيل الذاتي ، ويسأل عن التشغيل system يهرب. بعد قيامك بالاختيار ، يقوم محمل التمهيد بتشغيل ملف Linux kernel ، تسليم التحكم في system إلى النواة.

هناك مناقشة تفصيلية للنواة في مكان آخر في هذا الكتاب الذي يتم اقتباس هذا المقال. يغطي هذا المقال نواة مرحلة التهيئة، المرحلة التي تطبع فيها النواة مجموعة من الرسائل حول الأجهزة الموجودة على system. تبدأ النواة init مباشرة بعد أن تعرض رسالة تعلن أن النواة قد قامت بتركيب ملف ملف الجذرsystem:

VFS: الخيالة الجذر (ملفات ext2system) يقرأ فقط.

بعد فترة وجيزة ، سترى رسالة حول بدء التشغيل ، متبوعًا بـ system رسائل بدء تشغيل الخدمة ، وأخيراً تحصل على مطالبة بتسجيل الدخول من نوع ما.

ملحوظة : في ريد هات Linux، الملاحظة الأولية واضحة بشكل خاص ، لأنها "ترحب" بك في Red Hat Linux. " تظهر جميع الرسائل بعد ذلك النجاح أو الفشل بين قوسين على الجانب الأيمن من الشاشة.

الأكثر من هذا الفصل يتعامل مع الحرف الأول، لأنه هو حيث جزء من تسلسل التمهيد لديك أكثر سيطرة.
الحرف الأول

لا يوجد شيء مميز حول init. إنه برنامج مثل أي برنامج آخر على Linux system، وستجده في / sbin مع ملفات أخرى system ثنائيات. الغرض الرئيسي من init هو بدء وإيقاف البرامج الأخرى في تسلسل معين. كل ما عليك معرفته هو كيف يعمل هذا التسلسل.

هناك بعض الاختلافات المختلفة ، ولكن معظمها Linux التوزيعات تستخدم System تمت مناقشة نمط V هنا. تستخدم بعض التوزيعات إصدارًا أبسط يشبه تهيئة BSD ، ولكن من غير المحتمل أن تواجه هذا الإصدار.

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

في أي وقت من الأوقات على أ Linux system، مجموعة أساسية معينة من العمليات قيد التشغيل. هذه الحالة من macيسمى hine مستوى التشغيل الخاص به ، ويشار إليه برقم من 0 إلى 6. system يقضي معظم وقته في مستوى تشغيل واحد. ومع ذلك ، عند إغلاق ملف machine down ، ينتقل init إلى مستوى تشغيل مختلف من أجل إنهاء system الخدمات بطريقة منظمة وإخبار النواة بالتوقف. مستوى تشغيل آخر مخصص للمستخدم الفردي mode، مناقشتها لاحقا.

أسهل طريقة للتعرف على مستويات التشغيل هي فحص ملف التكوين init، /etc/inittab. ابحث عن سطر مثل ما يلي:

المعرف: 5: initdefault:

هذا الخط يعني أن ملف default runlevel على system هو 5. جميع الأسطر في ملف inittab تأخذ هذا النموذج، مع أربعة حقول مفصولة بنقطتين بالترتيب التالي:
# A المعرف الفريد (سلسلة قصيرة، مثل هوية في المثال السابق)
# عدد المطبقة مستوى التشغيل (ق)
# الإجراء الذي يجب أن يتخذه البادئ (في المثال السابق ، الإجراء هو تعيين default مستوى التشغيل إلى 5)
# A الأوامر لتنفيذ (اختياري)

لا يوجد أمر لتنفيذه في الحرف السابقdefault مثال لأن الأمر لا معنى له في سياق إعداد default مستوى الجري. انظر قليلاً إلى الأسفل في inittab ، حتى ترى سطرًا مثل هذا:

l5: 5: الانتظار :/ الخ / rc.d / الهلال الأحمر 5

يؤدي هذا الخط إلى تشغيل معظم ملفات system التكوين والخدمات من خلال الدلائل rc * .d و init.d. يمكنك أن ترى أن init تم تعيينها لتنفيذ أمر يسمى /etc/rc.d/rc 5 عندما تكون في مستوى التشغيل 5. يخبر إجراء الانتظار متى وكيف تقوم init بتشغيل الأمر: قم بتشغيل rc 5 مرة واحدة عندما enterعلى مستوى التشغيل 5 ، ثم انتظر حتى ينتهي هذا الأمر قبل القيام بأي شيء آخر.

هناك العديد من الإجراءات المختلفة في addition إلى الحرف الأولdefault وانتظر ، خاصة فيما يتعلق بإدارة الطاقة ، وتخبرك صفحة دليل inittab (5) بكل شيء عنها. يتم شرح العناصر التي من المرجح أن تصادفها في الأقسام التالية.

بيضة

يؤدي إجراء respawn إلى قيام init بتشغيل الأمر التالي، وإذا انتهى الأمر من التنفيذ، فسيتم تشغيله مرة أخرى. من المحتمل أن ترى شيئًا مشابهًا لهذا السطر في ملف inittab الخاص بك:

1: 2345: بيضة :/ سبين / mingetty tty1

توفير برامج غيتي يطالب تسجيل الدخول. السطر السابق هو لأول وحدة التحكم الظاهرية (/ ديف / tty1)، واحدة ترى عند الضغط على ALT أو CONTROL-ALT-F1 F1. العمل بيضة يجلب الجزء الخلفي موجه تسجيل الدخول بعد تسجيل الخروج.

ctrlألتديل

• ctrlيتحكم إجراء التديل في ما system يفعل عندما تضغط على CONTROL-ALT-DELETE على وحدة تحكم افتراضية. على الأكثر systems ، هذا نوع من أوامر إعادة التشغيل باستخدام أمر إيقاف التشغيل.

sysinit

إن إجراء sysinit هو أول شيء يجب تشغيل init عند بدء تشغيله ، من قبل enterفي أي مستويات تشغيل.

كيف يعالج في مستويات التشغيل بدء

أنت الآن جاهز لمعرفة كيفية بدء تشغيل system الخدمات ، قبل أن تسمح لك بتسجيل الدخول. أذكر هذا السطر inittab من السابق:

l5: 5: الانتظار :/ الخ / rc.d / الهلال الأحمر 5

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

بالنسبة إلى مستوى التشغيل 5 ، في هذا المثال ، من المحتمل أن تكون الأوامر إما في /etc/rc.d/rc5.d أو /etc/rc5.d. يستخدم Runlevel 1 rc1.d ، ويستخدم مستوى التشغيل 2 rc2.d وهكذا. قد تجد ما يلي items في دليل rc5.d:

S10sysklogd S20ppp S99gpm
S12kerneld S25netstd_nfs S99httpd
S15netstd_init S30netstd_misc S99rmnologin
S18netbase S45pcmcia S99sshd
S20acct S89atd
S20logoutد S89 كرون

و5 الأمر RC يبدأ البرامج في هذا الدليل مستوى التشغيل عن طريق تشغيل الأوامر GMT:

S10sysklogd الرئيسية
S12kerneld الرئيسية
S15netstd_init الرئيسية
S18netbase الرئيسية
...
S99sshd الرئيسية

لاحظ وسيطة البداية في كل أمر. حرف S الموجود في اسم الأمر يعني أنه يجب تشغيل الأمر في البداية mode، ويحدد الرقم (00 إلى 99) مكان بدء الأمر في التسلسل rc.

اتفاقية روتردام *. أوامر D هي البرامج النصية قذيفة التي عادة ما تبدأ البرامج في الملف / sbin أو / البيرة / دليل. عادة، يمكنك معرفة ما أحد الأوامر في الواقع لا من خلال النظر في السيناريو مع أقل أو البيجر برنامج آخر.

يمكنك بدء إحدى هذه الخدمات يدويًا. على سبيل المثال ، إذا كنت تريد بدء تشغيل برنامج خادم ويب httpd يدويًا ، فقم بتشغيل بدء S99httpd. وبالمثل ، إذا احتجت في أي وقت إلى قتل إحدى الخدمات عندما يكون ملف machine قيد التشغيل ، يمكنك تشغيل الأمر في دليل rc * .d باستخدام وسيطة التوقف (S99httpd stop ، على سبيل المثال).

تحتوي بعض أدلة rc*.d على أوامر تبدأ بـ K (لكلمة "kill" أو "stop". mode). في هذه الحالة، يقوم rc بتشغيل الأمر باستخدام الوسيطة stop بدلاً من start. من المرجح أن تواجه أوامر K في مستويات التشغيل التي تغلق ملف system إلى أسفل.

Addجي وإزالة الخدمات

إذا كنت تريد addأو حذف أو تعديل الخدمات في أدلة rc*.d، فأنت بحاجة إلى إلقاء نظرة فاحصة على الملفات الموجودة بداخلها. تكشف القائمة الطويلة عن هيكل مثل هذا:

lrwxrwxrwx. . . S10sysklogd -> .. / init.d / sysklogd
lrwxrwxrwx. . . S12kerneld -> .. / init.d / kerneld
lrwxrwxrwx. . . S15netstd_init -> .. / init.d / netstd_init
lrwxrwxrwx. . . S18netbase -> .. / init.d / netbase
...

الأوامر الموجودة في دليل rc*.d هي في الواقع روابط رمزية للملفات الموجودة في دليل init.d، عادةً في /etc أو /etc/rc.d. Linux تحتوي التوزيعات على هذه الروابط بحيث يمكنهم استخدام نفس البرامج النصية لبدء التشغيل لجميع مستويات التشغيل. هذه الاتفاقية ليست مطلبًا بأي حال من الأحوال ، ولكنها غالبًا ما تجعل التنظيم أسهل قليلاً.

لمنع أحد الأوامر الموجودة في دليل init.d من العمل في مستوى تشغيل معين ، قد تفكر في إزالة الارتباط الرمزي في دليل rc * .d المناسب. يعمل هذا ، ولكن إذا ارتكبت خطأ وتحتاج في أي وقت إلى إعادة الارتباط إلى مكانه ، فقد تواجه مشكلة في تذكر الاسم الدقيق للرابط. لذلك ، لا يجب عليك إزالة الروابط الموجودة في مجلدات rc * .d ، ولكن بدلاً من ذلك ، add شرطة سفلية (_) إلى بداية اسم الرابط مثل هذا:

MV _S99httpd S99httpd

في وقت التمهيد ، يتجاهل rc _S99httpd لأنه لا يبدأ بـ S أو K. علاوة على ذلك ، لا يزال الاسم الأصلي واضحًا ، ولديك وصول سريع إلى الأمر إذا كنت في مأزق وتحتاج إلى بدء تشغيله يدويًا.

إلى add خدمة ، يجب عليك إنشاء برنامج نصي مثل الآخرين في دليل init.d ثم إنشاء ارتباط رمزي في دليل rc * .d الصحيح. أسهل طريقة لكتابة نص برمجي هي فحص البرامج النصية الموجودة بالفعل في init.d ، وإنشاء نسخة من تلك التي تفهمها ، وتعديل النسخة.

متى addفي إحدى الخدمات ، تأكد من اختيار مكان مناسب في تسلسل التمهيد لبدء الخدمة. إذا بدأت الخدمة في وقت مبكر جدًا ، فقد لا تعمل ، بسبب الاعتماد على خدمة أخرى. بالنسبة للخدمات غير الأساسية ، معظمها systems administratorتفضل s الأرقام الموجودة في التسعينيات ، بعد معظم الخدمات التي تأتي مع system.

Linux تأتي التوزيعات عادةً مع أمر لتمكين وتعطيل الخدمات في الدلائل rc * .d. على سبيل المثال ، في دبيان ، الأمر هو update-rc.d ، وفي ريد هات Linux، الأمر هو chkconfig. تتوفر أيضًا واجهات المستخدم الرسومية. يساعد استخدام هذه البرامج في الحفاظ على اتساق دلائل بدء التشغيل ويساعد في الترقيات.

تلميح: أحد أكثر الملفات شيوعًا Linux installation problems هو خادم XFree86 الذي تم تكوينه بشكل غير صحيح والذي ينقر على التشغيل وإيقاف التشغيل ، مما يجعل ملف system غير صالحة للاستخدام على وحدات التحكم. لإيقاف هذا السلوك، قم بالتمهيد إلى المستخدم المفرد mode وقم بتغيير مستوى التشغيل أو خدمات مستوى التشغيل. ابحث عن شيء يحتوي على xdm، أو gdm، أو kdm في مجلدات rc*.d، أو /etc/inittab.

السيطرة على الحرف الأول

في بعض الأحيان، تحتاج إلى إعطاء init ركلة صغيرة لتطلب منه تبديل مستويات التشغيل، أو إعادة قراءة ملف inittab، أو فقط shut down ال system. لأن init هي دائمًا العملية الأولى في ملف system، معرف العملية الخاص به هو دائمًا 1.

يمكنك التحكم في الحرف الأول مع telinit. على سبيل المثال، إذا كنت تريد أن تتحول إلى مستوى التشغيل 3، استخدم هذا الأمر:

telinit 3

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

عندما كنت في حاجة إلى add أو إزالة مهام إعادة النشر أو إجراء أي تغيير آخر على ملف inittab، فيجب عليك إخبار init بالتغيير وجعله يعيد قراءة الملف. يستخدم بعض الأشخاص kill -HUP 1 لإخبار init بالقيام بذلك. تعمل هذه الطريقة التقليدية على معظم إصدارات يونكس، طالما قمت بكتابتها بشكل صحيح. ومع ذلك، يمكنك أيضًا تشغيل أمر telinit هذا:

telinit س

يمكنك أيضًا استخدام telinit s للتبديل إلى المستخدم الفردي mode.

اغلاق

يتحكم init أيضًا في كيفية استخدام ملف system يغلق ويعيد التشغيل. الطريقة الصحيحة ل shut down a Linux machine هو استخدام أمر إيقاف التشغيل.

هناك طريقتان أساسيتان لاستخدام إيقاف التشغيل. إذا أوقفت system، فإنه يغلق macتهدأ وتحافظ عليه. لتصنع macتوقف فورًا ، استخدم هذا الأمر:

اغلاق-H الآن

على الأكثر modern machines مع الإصدارات الحديثة بشكل معقول من Linux، توقف يقطع الطاقة إلى macهاين. يمكنك أيضًا إعادة تشغيل ملف macهاين. لإعادة التشغيل ، استخدم -r بدلاً من -h.

تستغرق عملية الاغلاق عدة ثوان. لا يجب عليك إعادة تعيين أو إيقاف تشغيل ملف macخلال هذه المرحلة.

في المثال السابق ، حان الوقت الآن shut down. هذه الحجة إلزامية ، لكن هناك طرق عديدة لتحديدها. إذا كنت تريد macلكي تنخفض في وقت ما في المستقبل ، إحدى الطرق هي استخدام + n ، حيث n هو عدد الدقائق التي يجب أن ينتظرها الإغلاق قبل القيام بعمله. للآخرين options، انظر إلى صفحة دليل الاغلاق (8).

لتصنع system أعد التشغيل خلال 10 دقائق ، قم بتشغيل هذا الأمر:

اغلاق-R + 10

On Linux، يقوم إيقاف التشغيل بإعلام أي شخص قام بتسجيل الدخول بأن ملف macإن الطاقة تنخفض، لكنها لا تؤدي سوى القليل من العمل الحقيقي. إذا قمت بتحديد وقت غير الآن، فسيقوم إيقاف التشغيل بإنشاء ملف يسمى /etc/nologin. عند وجود هذا الملف، سيتم system يحظر عمليات تسجيل الدخول من قبل أي شخص باستثناء المستخدم المتميز.

متى system وصل وقت الإغلاق أخيرًا ، يخبر الإغلاق init أن تنتقل إلى مستوى التشغيل 0 للتوقف والتشغيل فى المستوى 6 لإعادة التشغيل. عندما يبدأ enterمستوى التشغيل 0 أو 6 s ، يتم إجراء كل ما يلي ، والذي يمكنك التحقق منه من خلال النظر إلى النصوص البرمجية داخل rc0.d و rc6.d:

1. التهيئة يقتل كل عملية ما في وسعها (لأنه عند التحول إلى أي مستوى التشغيل الأخرى).

# تشغيل أوامر rc0.d / rc6.d الأولية ، قفل system الملفات في مكانها الصحيح وإجراء الاستعدادات الأخرى لإيقاف التشغيل.
# أوامر rc0.d/rc6.d التالية تقوم بإلغاء تحميل كافة الملفاتsystemغير الجذر.
# أوامر rc0.d/rc6.d الإضافية تعيد تحميل الملف الجذرsystem للقراءة فقط.
# المزيد من أوامر rc0.d/rc6.d تكتب جميع البيانات المخزنة مؤقتًا إلى الملفsystem مع برنامج المزامنة.
# الأوامر rc0.d / rc6.d النهائي نقول للنواة لإعادة تشغيل أو إيقاف مع إعادة التمهيد، وقف، أو برنامج POWEROFF.

تتصرف برامج إعادة التشغيل والإيقاف بشكل مختلف لكل مستوى تشغيل ، مما قد يتسبب في حدوث ارتباك. بواسطة default، تستدعي هذه البرامج إيقاف التشغيل باستخدام الحرفين -r أو -h options، ولكن إذا كان system هو بالفعل في مستوى التوقف أو إعادة التشغيل ، تخبر البرامج النواة أن تغلق نفسها على الفور. إذا كنت تريد حقًا إغلاق ملف macتراجع بسرعة (بغض النظر عن أي ضرر محتمل من الإغلاق غير المنظم) ، استخدم الخيار -f.

شغوفة بالتكنولوجيا ، أكتب بسرور StealthSettings.com منذ عام 2006. لدي خبرة واسعة في أنظمة التشغيل: macOS, Windows سي Linuxبل أيضًا في لغات البرمجة ومنصات التدوين (WordPress) وللمتاجر عبر الإنترنت (WooCommerce، ماجنتو، بريستاشوب).

اترك تعليق