Product SiteDocumentation Site

فصل 9. خدمات يونكس

9.1. إقلاع النظام
9.2. تسجيل الدخول عن بعد
9.2.1. الدخول البعيد الآمن: SSH
9.2.2. استخدام سطوح المكتب الرسومية البعيدة
9.3. إدارة الصلاحيات
9.4. واجهات الإدارة
9.4.1. الإدارة على واجهة وب: webmin
9.4.2. ضبط الحزم: debconf
9.5. أحداث syslog
9.5.1. المبدأ والآلية
9.5.2. ملف الإعداد
9.6. المخدم الفائق inetd
9.7. جدولة المهام باستخدام cron وatd
9.7.1. صيغة ملف crontab
9.7.2. استخدام الأمر at
9.8. جدولة المهام غير المتزامنة: anacron
9.9. الحصص التخزينية
9.10. النسخ الاحتياطي
9.10.1. النسخ الاحتياطي باستخدام rsync
9.10.2. استعادة الأجهزة دون نسخ احتياطي
9.11. التوصيل الساخن: hotplug
9.11.1. مقدمة
9.11.2. مشكلة التسمية
9.11.3. طريقة عمل udev
9.11.4. مثال واقعي
9.12. إدارة الطاقة: Advanced Configuration and Power Interface ‏(ACPI)
يغطي هذا الفصل عدداً من الخدمات الأساسية المشتركة بين العديد من أنظمة يونكس التي يجب أن يعرفها كل مدير نظام.

9.1. إقلاع النظام

عند إقلاع الحاسب، تعرض الرسائل العديدة التي تمر على الشاشة العديد من الإعدادات وعمليات التهيئة الجارية. قد ترغب أحياناً بتعديل هذه المرحلة قليلاً، مما يعني أنك تحتاج فهمها جيداً. هذا هو الهدف من هذا القسم.
أولاً، يتولى BIOS التحكم بالحاسوب، ويتعرف على الأقراص، ويحمل سجل الإقلاع الرئيسي Master Boot Record، وينفذ محمّل الإقلاع. ثم يتولى محمل الإقلاع التحكم، ويبحث عن النواة على القرص، ثم يحملها وينفذها. بعدها تُهيَّأ النواة، وتبدأ النواة البحث عن القسم الذي يحوي نظام الملفات الجذر وتربطه (mount)، وأخيراً تستدعي النواة البرنامج الأول: init. عادةً، يقع هذا ”القسم الجذر“ وبرنامج init هذا في نظام ملفات ظاهري ليس له وجود إلا في الذاكرة RAM في الحقيقة (ومن هنا أتى اسمه initramfs، وسابقاً كان يدعى ”initrd“ اختصاراً للعبارة ”initialization RAM disk“). يُحمَّل نظام الملفات هذا إلى الذاكرة بوساطة محمل الإقلاع، وغالباً يتم تحميله من ملف على القرص الصلب أو من الشبكة. يحوي نظام الملفات هذا الحد الأدنى من المتطلبات التي تحتاجها االنواة لتحميل نظام الملفات الجذر ”الحقيقي“: قد تكون هذه المتطلبات وحدات تعريف للسواقة الصلبة، أو أجهزة أخرى لا يستطيع النظام الإقلاع دونها، أو غالباً ما تكون سكربتات تهيئة ووحدات لتجميع مصفوفات RAID، أو لفتح الأقسام المشفرة، أو تفعيل حيزات LVM، الخ. بعد ربط القسم الجذر، يسلم initramfs التحكم إلى init الحقيقي. وينتقل الجهاز إلى عملية الإقلاع النظامية.
حالياً، يُقدِّم sysv-rc‏ (”SystemV“) عملية ”init الحقيقية“، ويشرح هذا القسم نظام الإقلاع هذا.
تنفذ Init عدة عمليات، وفقاً للتعليمات في الملف /etc/inittab. أول برنامج ينفذ هو /etc/init.d/rcS (التابع لمرحلة sysinit)، وهو سكربت ينفذ جميع البرامج في المجلد /etc/rcS.d/.
من ضمن هذه البرامج سوف تجد –على التعاقب– برامجاً مسؤولة عن:
  • إعداد لوحة مفاتيح الطرفية؛
  • تحميل التعاريف: تحمّل النواة معظم التعاريف عند اكتشاف العتاد؛ بعدها تحمل التعاريف الإضافية آلياً إذا كانت الوحدات الموافقة لها مذكورة في /etc/modules؛
  • التحقق من سلامة نظام الملفات؛
  • ربط الأقسام المحلية؛
  • إعداد الشبكة؛
  • ربط نظم الملفات الشبكية (NFS).
بعد هذه المرحلة، تتولى init التحكم وتبدأ تشغيل البرامج المفعلة في مستوى التشغيل الافتراضي (وهو عادة المستوى 2)، حيث تنفذ /etc/init.d/rc 2، وهو سكربت يشغل جميع الخدمات المذكورة في المجلد /etc/rc2.d/ والتي يبدأ اسمها بالحرف ”S“. كان يستخدم العدد المؤلف من خانتين الذي يتلو الحرف قديماً لتحديد ترتيب تشغيل الخدمات، لكن حالياً أصبح نظام الإقلاع الافتراضي يعتمد على insserv، الذي يجدول كل شيء آلياً حسب اعتماديات السكربتات. بالتالي على كل سكربت إقلاعي أن يصرح عن الشروط التي يجب تلبيتها عند تشغيل أو إيقاف الخدمة (إذا كان يجب تشغيل الخدمة قبل أو بعد خدمة أخرى مثلاً)؛ بعدها تشغلهم init بالترتيب الذي يحقق هذه الشروط. لم يعد الترقيم الثابت يؤخذ بعين الاعتبار إذن (لكن أسماء السكربتات يجب أن تبدأ دائمًا بحرف ”S“ يتبعه خانتين من الأرقام ثم الاسم الفعلي للسكربت الذي يستخدم مع الاعتماديات). عموماً، يبدأ تشغيل الخدمات الأساسية (مثل خدمة rsyslog التي تجمع السجلات، أو خدمة تعيين المنافذ portmap) أولاً، تليها الخدمات القياسية والواجهة الرسومية (gdm).
يسمح نظام الإقلاع الاعتمادي هذا بأتمتة عملية إعادة الترقيم، وهذه عملية متعبة جداً لو كانت ستتم يدوياً، كما يحد من الأخطاء البشرية، بما أن الجدولة تجري وفقاً للقيود المفروضة. هناك أيضاً ميزة أخرى، وهي أن تشغيل الخدمات يمكن أن يتم على التوازي إذا كانت مستقلة عن بعضها، وهذا يسرع عملية الإقلاع.
تفرق init بين عدة مستويات تشغيلية، بحيث يمكن التبديل من أحد هذه المستويات إلى الآخر بالأمر telinit new-level. تبدأ init فوراً تنفيذ /etc/init.d/rc مرة ثانية ولكن في المستوى التشغيلي الجديد. بعدها يبدأ هذا السكربت تشغيل الخدمات الناقصة وإيقاف الخدمات التي لم تعد مرغوبة. لإتمام هذه المهمة، يستند هذا السكربت على محتويات /etc/rcX.d (حيث X تمثل المستوى الجديد). السكربتات التي تبدأ بالحرف ”S“ (من كلمة ”Start“) هي الخدمات التي يجب تشغيلها؛ أما التي تبدأ بالحرف ”K“ (من كلمة ”Kill“) فهي الخدمات التي يجب إيقافها. لا يشغل السكربت أي خدمة كانت فعالة مسبقاً في المستوى التشغيلي السابق.
افتراضياً، تستخدم دبيان أربعة مستويات تشغيلية:
  • المستوى 0 يستخدم مؤقتاً فقط أثناء إيقاف تشغيل الحاسب. ولذلك فهو لا يحوي إلا عدة سكربتات ”K“ فقط.
  • المستوى 1، ويعرف أيضاً بوضع المستخدم الوحيد single-user mode، وهو يمثل النظام في وضع الأداء المنخفض؛ فهو يُحَمِّل الخدمات الأساسية فقط، وهو يستخدم لأغراض الصيانة بعيداً عن تفاعل المستخدمين.
  • المستوى 2 هو مستوى العمل الطبيعي، الذي يتضمن خدمات الشبكة، والواجهة الرسومية، واتصالات المستخدمين، الخ.
  • المستوى 6 يشبه المستوى 0، عدا أنه يستخدم في طور إيقاف التشغيل الذي يسبق إعادة الإقلاع.
هناك مستويات تشغيل أخرى، بالأخص المستويات من 3 إلى 5. افتراضياً تعمل هذه المستويات مثل المستوى 2 تماماً، لكن يستطيع مدير النظام تعديلها (بإضافة أو حذف سكربتات في مجلد /etc/rcX.d الموافق) لتكييفها مع حاجاته الخاصة.
تسلسل الإقلاع في حاسب يعمل باستخدام لينكس

شكل 9.1. تسلسل الإقلاع في حاسب يعمل باستخدام لينكس

كافة السكربتات المخزنة في مجلدات /etc/rcX.d المختلفة هي في الحقيقة روابط رمزية فقط —يُنشِئها البرنامج update-rc.d عند تثبيت الحزمة— تشير إلى السكربتات الفعلية المخزنة في /etc/init.d/. يستطيع مدير النظام ضبط الخدمات المتاحة في كل مستوى تشغيلي من خلال إعادة استدعاء update-rc.d مع البارامترات المعدلة. تشرح صفحة الدليل update-rc.d(1)‎ صيغة استخدامها بالتفصيل. نرجو أن تلاحظ أن إزالة جميع الروابط الرمزية (باستخدام البارامتر remove) ليست طريقة جيدة لتعطيل الخدمة. بل عليك إعدادها بحيث لا تعمل في المستوى التشغيلي المطلوب بكل بساطة (مع الحفاظ على الاستدعاءات الموافقة لإيقافها في حال كانت الخدمة تعمل في المستوى التشغيلي السابق). بما أن واجهة update-rc.d متشابكة نوعاً ما، فقد تفضل استخدام rcconf (من الحزمة rcconf) الذي يوفر واجهة أليفة للمستخدم.
أخيراً، تبدأ init تشغيل البرامج لمختلف الطرفيات الظاهرية (getty). بعدها تعرض سطر أوامر، الذي ينتظر إدخال اسم المستخدم، ثم تنفذ login user لبدء جلسة عمل.