الطايير
{ | مشرف قسم أنظمة التشغيل | }







السمعة:
كنا قد بدأنا رحلة اللينكس مع الوحدة الأولى وعرفنا سريعاً كيف بدأ ولماذا بدأ ثم انتقلنا لفهم علاقة اللينكس بأنظمة التشغيل المختلفة ودور نظام التشغيل في منظومه الحاسب الآلي ثم انتقلنا بعد ذلك لشرح أجزاء النظام المختلفة وفهم دور كل منها لتكوين نظام كامل فعَّال و أيضاً كيفية اختيار النظام المناسب لبيئة عملك .
وبإذن الله سنبدأ في هذه الوحدة لمحاولة فهم كيفية اقلاع النظام و كيف يتواصل مع عتاد الجهاز وتهيئة الجهاز بالشكل المناسب ليدأ العمل الفعلي و سنتطرق أيضاً للاشكال المختلفة لتثبيت النظام بالطريقة المناسبة على حسب بيئه العمل والهدف من النظام .
إذا نظرنا الى الجهاز للوهله الأولى فان الجهاز عبارة عن قطع من الخامات كالمعادن والبلاستيك وهكذا متصلين ببعضهم ... ثم بعد ذلك نقوم بتوصيل الكهرباء ثم يأتي هنا السؤال التالي ؛ كيف تلك الموصلات والقطع بالإضافة الى الكهرباء تقوم بهذا الاداء وتلك المهام ؟
وهنا يأتي دور ما يسمى بالـ Firmware او البرمجيات الثابتة
Firmware
الـ Firmware هو نوع خاص من البرامج يتم اضافته مع القطعة الـ hardware ويقوم بوظيفة اساسية هامة حيث يعمل كوسيط بين الـ hardware و باقي قطع الجهاز والبرامج فعن طريقه تحصل هذه القطعة (hardware) على التعليمات الأساسية لكيفية العمل. ولذلك يتم حفظ هذا الكود البرمجي الخاص (Firmware) في ذاكره read-only (ROM) خاصة بالقطعة نفسها ، بعكس البرامج العادية التي يتم حفظها على القرص الصلب (drive) وتعتبر ذات مستوى اعلى ... فاختصاراً يعتبر الـ Firmware التعليمات الرئيسية لكيفية العمل والتشغيل وهذا هو الغرض منها . ويتم كتابة الـ firmware من الشركة المنتجة للقطعة . فالقطع التي قد تعتبرها مجرد قطع ، مثل محرك الأقراص ، أو كارت الشبكة او الشاشة او كارت الرسوميات ، أو جهاز التحكم عن بعد الخاص بالتلفزيون ، أو جهاز التوجيه ، أو مشغل الوسائط ، أو الكاميرا ، أو الماسح الضوئي ، جميعها تحتوي على برامج تمت برمجتها في ذاكرة خاصة موجودة في القطعة نفسها.
وهنا يأتي دور الـ BIOS / UEFI ؟؟؟!
الـ BIOS، وهي اختصار لـ نظام الإدخال/الإخراج الأساسي (Basic Input/Output system) ، هو برنامج مخزن في شريحة ذاكرة ثابتة (non-volatile memory) متصلة باللوحة الأم (mother-board) فهو يخزن في مكان منفصل عن وحدات التخزين الأخرى الموجودة في النظام، وذلك لضمان حمايته من التلف أو التغيير العرضي. حيث الذاكرة قابلة للقراءة فقط على عكس البرامج العادية التي تُخزن على وحدات تخزين قابلة للإزالة مثل القرص الصلب أو محركات الأقراص الضوئية. ، ويتم تفيذه في كل مرة يتم فيها تشغيل الكمبيوتر. فهو أحد "البرامج الثابتة" (Firmware) فكما ذكرنا هو نوع من البرامج المُدمجة في أجهزة الكمبيوتر ويتحكم في وظائفها الأساسية حيث يلعب البرنامج الثابت (BIOS في هذه الحالة) دورًا هامًا في تشغيل أجهزة الكمبيوتر، حيث يتحكم في وظائف أساسية فيقوم بتحديد الأجهزة حيث يتحكم البرنامج الثابت في مكونات الأجهزة مثل لوحة المفاتيح والماوس وشاشة العرض والطابعة وهكذا . وأيضاً التواصل حيث يتيح البرنامج الثابت للأجهزة التواصل مع بعضها البعض فبالتالي له أهمية كبيرة في التشغيل حيث أنه من يقوم بتحميل نظام التشغيل وبرامج التشغيل الأخرى عند تشغيل الجهاز.
يعتمد نظام الإدخال والإخراج الأساسي (BIOS) على أن أول 440 بايت في أول جهاز تخزين - وفقًا للترتيب المُحدد في إعدادات الـ BIOS - هي المرحلة الأولى للـ Bootloader و المقصود بجهاز التخزين هو أي جهاز مُخزن للبيانات متصل بالكمبيوتر، مثل القرص الصلب أو محرك الأقراص الصلبة (SSD) أو محرك أقراص USB وتشير اعدادات الـ BIOS الى الواجهة التي تسمح لك بتغيير الإعدادات الأساسية للـ BIOS ، بما في ذلك ترتيب أجهزة التخزين التي يبحث عنها النظام للعثور على الـ Bootloader وهو برنامج صغير مسؤول عن تحميل نظام التشغيل عند تشغيل الكمبيوتر.يُتيح الـ BIOS (نظام الإدخال والإخراج الأساسي) التحكم في إعدادات النظام الأساسية لجهاز الكمبيوتر وتشمل بعض المهام التي يمكنك تنفيذها من خلاله مثل :
تغيير ترتيب بدء التشغيل حيث يمكنك تحديد أي جهاز تخزين (مثل القرص الصلب أو محرك الأقراص الضوئية) سيتم تشغيله أولاً للبحث عن نظام تشغيل عند بدء تشغيل الكمبيوتر
تمكين أو تعطيل مكونات الأجهزة حيث يمكنك تمكين أو تعطيل مكونات الأجهزة مثل بطاقة الفيديو وبطاقة الصوت وشبكة Wi-Fi
ضبط تاريخ ووقت النظام حيث يمكنك ضبط التاريخ والوقت الصحيحين لنظامك
تعيين كلمة مرور BIOS حيث يمكنك تعيين كلمة مرور لمنع الوصول غير المصرح به إلى إعدادات BIOS
إعادة ضبط إعدادات BIOS إلى الإعدادات الافتراضية حيث يمكنك إعادة ضبط جميع إعدادات BIOS إلى الإعدادات الافتراضية للمصنع في حالة حدوث مشكلة
تحديث BIOS حيث يمكنك تحديث BIOS إلى أحدث إصدار لتحسين أداء النظام أو إصلاح الأخطاء
بعض الأمثلة الإضافية على ما يمكنك تنفيذه من خلال الـ BIOS:
وأيضاً تمكين وتعطيل الميزات المختلفة التي يقدر عليها الجهاز مثل تفعيل وتعطيل خاصية الـ Virtualization
- تغيير سرعة معالج الكمبيوتر (CPU)
- ضبط إعدادات ذاكرة الوصول العشوائي (RAM)
- تمكين أو تعطيل تقنية التمهيد المزدوج
- تغيير إعدادات إدارة الطاقة
- ضبط إعدادات الأمان
ملاحظة : تختلف إمكانيات BIOS باختلاف نوع اللوحة الأم ونسخة BIOS
![]()
![]()
![]()
وهناك الـ Master Boot Record (MBR) وهو أول 512 بايت في جهاز التخزين، ويحتوي على المرحلة الأولى للـ Bootloader (أول 440 بايت) حيث يقوم الـ BIOS بتحميل هذه التعليمات وتنفيذها لبدء عملية التمهيد.
يحتوي الـ MBR أيضًا على جدول الأقسام (Partition table) . ويحدد هذا الجدول كيفية تقسيم جهاز التخزين إلى أقسام منفصلة، حيث يمكن تخزين أنظمة تشغيل مختلفة أو بيانات أخرى وفي حالة لم يحتوي الـ MBR على البيانات الصحيحة، فلن يتمكن النظام من التشغيل، ما لم يتم استخدام طريقة بديلة
ملاحظة :
- يعتبر الـ MBR تقنية قديمة نسبيًا، وهناك مخططات تقسيم أحدث مثل GPT (جدول تقسيم GUID) ويوفر مزايا عديدة مثل دعم محركات الأقراص الأكبر من 2 تيرابايت
- إذا فسد الـ MBR، فقد يكون من الممكن استعادته باستخدام أدوات وبرامج معينة أو عن طريق إعادة تثبيت نظام التشغيل
بشكل عام، الخطوات التمهيدية لنظام مزود بـ BIOS هي:
1. تنفيذ اختبار التشغيل الذاتي عند تشغيل الطاقة (POST):
2. تفعيل المكونات الأساسية بواسطة الـ BIOS:
- يتم تنفيذ عملية POST (اختبار التشغيل الذاتي عند تشغيل الطاقة) عند تشغيل الجهاز لأول مرة.
- تعمل هذه العملية على تحديد أي أعطال بسيطة في الأجهزة مثل مشاكل في الذاكرة أو المعالج أو بطاقة الفيديو.
3. تحميل المرحلة الأولى للـ Bootloader من الـ MBR بواسطة الـ BIOS:
- يقوم الـ BIOS بتنشيط المكونات الأساسية اللازمة لتحميل النظام، مثل:
- إخراج الفيديو: لعرض المعلومات على الشاشة.
- لوحة المفاتيح: لإدخال الأوامر والتفاعل مع النظام.
- وحدات التخزين: للوصول إلى البيانات اللازمة للتشغيل، مثل نظام التشغيل نفسه.
4. تحميل المرحلة الثانية للـ Bootloaer وتشغيل نواة النظام:
- يبحث الـ BIOS عن المرحلة الأولى للـ (Bootloader) في أول جهاز تخزين وفقًا للترتيب المُحدد سابقًا في إعدادات الـ BIOS.
- يقوم الـ BIOS بقراءة أول 440 بايت من جهاز التخزين هذا (والتي تسمى الـ MBR) ويقوم بتحميلها وتنفيذها.
- تقوم المرحلة الأولى للـ Bootloader بتحميل المرحلة الثانية للـ Bootloader من موقعها على جهاز التخزين.
- عرض قائمة بخيارات التمهيد المختلفة (مثل اختيار نظام تشغيل معين).
- تحميل نواة نظام التشغيل (kernel) في الذاكرة.
- بدء تشغيل العمليات الأساسية لنظام التشغيل.
ولكن ماذا عن الـ UEFI ؟!
تختلف واجهة البرامج الثابتة الموحدة الموسعة أو Unified Extensible Firmware Interface (UEFI) عن الـ BIOS في بعض النقاط الأساسية. على الرغم من كونهما نوعًا من البرامج الثابتة (Firmware) مثل الـ BIOS، إلا أن UEFI قادر على تحديد الأقسام وقراءة العديد من أنظمة الملفات (طريقة تنظيم وتخزين البيانات على جهاز تخزين) الموجودة عليها. ولا يعتمد UEFI على سجل التمهيد الرئيسي (MBR)، بل يعتمد فقط على الإعدادات المخزنة في ذاكرته غير المتطايرة (NVRAM) (نوع من الذاكرة يحتفظ ببياناته حتى عند انقطاع التيار الكهربائي) المرتبطة باللوحة الأم. تحدد هذه الإعدادات موقع البرامج المتوافقة مع UEFI، والتي تسمى تطبيقات EFI (برامج صغيرة متوافقة مع UEFI يمكنها تنفيذ وظائف مختلفة، مثل تحميل نظام التشغيل أو إجراء تشخيصات النظام) ، والتي سيتم تنفيذها تلقائيًا أو استدعاؤها من قائمة التمهيد.
يمكن أن تكون تطبيقات EFI عبارة عن برامج تحميل (bootloaders) أو أدوات لاختيار نظام التشغيل أو أدوات لتشخيص وإصلاح النظام، إلخ. يجب أن تكون موجودة على قسم من جهاز التخزين وأن تستخدم نظام ملفات متوافق. وأنظمة الملفات القياسية المتوافقة هي FAT12 و FAT16 و FAT32 و ISO-9660
ملاحظة : يسمح نهج UEFI بتنفيذ أدوات أكثر تطورًا بكثير من تلك الممكنة مع BIOS، مما يوفر تحكمًا أكبر وإمكانيات أوسع للمستخدمين. ملاحظة
يُسمى القسم الذي يحتوي على تطبيقات EFI قسم نظام EFI أو ESP اختصارًا. يجب عدم مشاركة هذا القسم مع أنظمة ملفات أخرى للنظام، مثل نظام الملفات الجذر (Root Filesystem) (القسم الرئيسي الذي يحتوي على ملفات نظام التشغيل الأساسية) أو أنظمة ملفات بيانات المستخدم.
يحتوي دليل EFI الموجود في قسم نظام EFI (ESP) على التطبيقات التي تشير إليها الإدخالات المحفوظة في الـ NVRAM
يضمن فصل قسم نظام EFI عن أنظمة الملفات الأخرى حمايته من الكتابة العرضية التي قد تؤدي إلى تلفه ومنع تشغيل النظام بشكل صحيح
بشكل عام، تكون خطوات بدء تشغيل النظام قبل تحميل نظام التشغيل على نظام مزود بـ UEFI كالآتي:
1. تنفيذ اختبار التشغيل الذاتي عند تشغيل الطاقة (POST):
- يتم تنفيذ عملية POST (اختبار التشغيل الذاتي عند تشغيل الطاقة) عند تشغيل الجهاز لأول مرة.
- تعمل هذه العملية على تحديد أي أعطال بسيطة في الأجهزة مثل مشاكل في الذاكرة أو المعالج أو بطاقة الفيديو
2. تفعيل المكونات الأساسية بواسطة الـ UEFI:
- يقوم الـ UEFI بتنشيط المكونات الأساسية اللازمة لتحميل النظام، مثل:
- إخراج الفيديو: لعرض المعلومات على الشاشة.
- لوحة المفاتيح: لإدخال الأوامر والتفاعل مع النظام.
- وحدات التخزين: للوصول إلى البيانات اللازمة للتشغيل، مثل نظام التشغيل نفسه
3. قراءة إعدادات التمهيد وتنفيذ تطبيقات EFI من الـ NVRAM و ESP:
- يقرأ برنامج UEFI الثابت الإعدادات المخزنة في الـ NVRAM (ذاكرة غير متطايرة).
- تحدد هذه الإعدادات موقع تطبيق EFI المحدد مسبقًا والمخزن في نظام الملفات لقسم نظام EFI (ESP).
- عادةً ما يكون تطبيق EFI المحدد مسبقًا هو برامج تحميل (bootloader).
4. تحميل نواة نظام التشغيل بواسطة برنامج التحميل (اختياري):
- إذا كان تطبيق EFI المحدد مسبقًا هو برنامج تحميل، فسوف يقوم بتحميل نواة نظام التشغيل في الذاكرة.
- بعد ذلك، تقوم نواة نظام التشغيل ببدء تشغيل العمليات الأساسية لنظام التشغيل.
- قد تتضمن عملية التمهيد مع UEFI خطوات إضافية اعتمادًا على تكوين النظام والبرامج المثبتة. على سبيل المثال، يمكن استخدام تطبيقات EFI أخرى لإجراء تشخيصات النظام أو اختيار نظام تشغيل معين من بين عدة أنظمة مثبتة.
يدعم معيار UEFI أيضًا ميزة تسمى التمهيد الآمن (Secure Boot)، والتي تسمح فقط بتنفيذ تطبيقات EFI الموقعة حيث أن التوقيع الرقمي (Digital Signature) هي عملية تشفير خاصة تُستخدم للتحقق من صحة ومصدر البرامج. أي تطبيقات EFI المصرح بها من قبل مُصنِّع الجهاز. تعمل هذه الميزة على زيادة الحماية من البرامج الضارة، ولكنها قد تجعل من الصعب تثبيت أنظمة تشغيل غير مشمولة بضمان المُصنِّع.
عند تمكين التمهيد الآمن، يتحقق نظام UEFI من توقيع أي تطبيق EFI قبل تنفيذه. إذا كان التوقيع صالحًا، فسيتم تنفيذ التطبيق. أما إذا كان التوقيع غير صالح، فلن يتم تنفيذه، مما يمنع تشغيل البرامج الضارة المحتملة.
قد يمنع التمهيد الآمن تثبيت بعض أنظمة التشغيل مفتوحة المصدر أو توزيعات Linux لأنها لا تكون موقعة دائمًا من قبل مُصنِّعي الأجهزة وقد يمنع التمهيد الآمن أيضًا تشغيل بعض أدوات البرامج الثابتة أو أدوات التشخيص التي لا تكون موقعة من قبل المُصنِّع ولكن يمكن تعطيل هذه الميزة من الـ BIOS/UEFI .
وقد ذكرنا ان من المهام الاساسية للـ firmware على الجهاز سواء BIOS او UEFI (المتعارف عليه نقول BIOS ونقصد به واجهة الاعدادات للـ firmware سواء كان BIOS أو UEFI ) أنه يقوم بتحديد المرحلة الأولى من الـ Bootlaoder وبدأ تنفيذها . فما دور الـ Bootloader في هذه المرحلة ؟!
BOOTLOADER
هو برنامج صغير مسؤول عن بدء تشغيل نظام التشغيل عند تشغيل الكمبيوتر ويعمل كوسيط بين نظام الإدخال والإخراج الأساسي (BIOS) ونواة نظام التشغيل.
يسمح بتشغيل أنظمة تشغيل متعددة على نفس الكمبيوتر ويوفر حماية من البرامج الضارة ويسمح بتشخيص وإصلاح مشكلات النظام.
أشهر برامج التحميل (bootloader) لنظام لينكس على معمارية x86 هو GRUB (والمعروف أيضًا باسم GRand Unified Bootloader). بمجرد استدعائه من قبل الـ BIOS أو الـ UEFI، يقوم GRUB بعرض قائمة بأنظمة التشغيل المتاحة للتشغيل.
من قائمة GRUB، يُمكنك اختيار أي من نواة نظام التشغيل (kernel) المُثبتة يجب تحميلها، وكذلك تمرير معلمات جديدة إليها. تتبع معظم معلمات ( parameters ) نواة النظام نمط [ option=value ]
- ومعلمات نواة النظام (kernel parameters) : هي تعليمات خاصة يتم تمريرها إلى نواة نظام التشغيل أثناء عملية التمهيد. يمكن استخدامها لتعديل سلوك نواة النظام أو توفير معلومات إضافية لها.
- نمط option=value: هو تنسيق شائع لمعلمات نواة النظام، حيث تشير option إلى اسم الخيار وvalue تشير إلى قيمته.
هذه الفقرة تستعرض بعض معلمات نواة لينكس (kernel parameters) الأكثر فائدة والتي يتم تمريرها إلى نواة النظام أثناء عملية التشغيل.
قائمة معلمات النواة:
acpi:
- تفعيل/تعطيل دعم ACPI (بنية واجهة التحكم في الطاقة المتقدمة).
- على سبيل المثال، يؤدي استخدام acpi=off إلى تعطيل دعم ACPI.
init:
systemd.unit:
- تحديد مشغل بديل للنظام.
- على سبيل المثال، يؤدي استخدام init=/bin/bash إلى تعيين واجهة Bash كمشغل للنظام. وهذا يعني أن تشغيل نظام التشغيل سيبدأ مباشرة بواجهة الأوامر Bash.
mem:
- تحديد وحدة systemd المطلوب تفعيلها.
- على سبيل المثال، systemd.unit=graphical.target يقوم بتفعيل واجهة المستخدم الرسومية.
- يدعم systemd أيضًا مستويات التشغيل الرقمية المحددة لـ SysV. لتفعيل مستوى التشغيل الأول (runlevel 1)، على سبيل المثال، يكفي تضمين الرقم 1 أو الحرف S (اختصار لـ "single") كمعلمة نواة. وهذا كتفعيل الـ safe mode في نظام التشغيل ويندوز للفحص وحل المشكلات.
maxcpus:
- تحديد مقدار الذاكرة العشوائية المتاحة للنظام.
- هذه المعلمة مفيدة للآلات الافتراضية لتحديد كمية الذاكرة المتاحة لكل نظام ضيف. على سبيل المثال، يؤدي استخدام mem=512M إلى تخصيص 512 ميجابايت فقط من الذاكرة لنظام التشغيل الضيف.
quiet:
- تحديد عدد المعالجات (أو نوى المعالج) المرئية للنظام في أجهزة متعددة المعالجات المتماثلة (SMP).
- مفيدة أيضًا للآلات الافتراضية.
- قيمة 0 تعطل دعم الأجهزة متعددة المعالجات ولها نفس تأثير معلمة النواة nosmp.
- على سبيل المثال، يؤدي استخدام maxcpus=2 إلى تقييد عدد المعالجات المتاحة لنظام التشغيل باثنين.
vga:
- إخفاء معظم رسائل التشغيل.
root:
- تحديد وضعية عرض الرسوميات.
- على سبيل المثال، يؤدي استخدام vga=ask إلى عرض قائمة بالأنماط المتاحة للاختيار منها.
rootflags:
- تحديد موقع قسم الجذر (root partition)، والذي قد يختلف عن القسم المحدد مسبقًا في برنامج التحميل (bootloader).
- على سبيل المثال، root=/dev/sda3 يحدد القسم الثالث على القرص الصلب sda كقسم جذر.
ro:
- خيارات ربط نظام الملفات الجذر (root filesystem).
rw:
- جعل عملية الربط الأولى لنظام الملفات الجذر للقراءة فقط (read-only).
- السماح بالكتابة في نظام الملفات الجذر أثناء عملية الربط الأولى.
في قادم الدروس سيتم التطرق بعض الشيء لشرح ما سبق بشكل أكبر وستكون لديك المعلومات الكافية لفهم الـ parameters السابقة
* ملحوظة جانبية :
ليس من الضروري عادةً تعديل معلمات نواة لينكس (kernel parameters)، ولكن يمكن أن يكون ذلك مفيدًا في تشخيص وحل مشاكل متعلقة بنظام التشغيل او تمكين وتغير طريقة عمل بعض الميزات .
يتم تمرير معلمات النواة إلى نواة لينكس أثناء عملية التشغيل ويمكن أن تؤثر على سلوكها ولكن لتطبيق معلمات نواة معينة بشكل دائم مع إعادة التشغيل ، يجب إضافتها إلى ملف التهيئة الخاص بـ GRUB (برنامج التحميل). يتم تحديد معلمات النواة في ملف التهيئة /etc/default/grub، تحديدًا ضمن السطر GRUB_CMDLINE_LINUX.
بعد تشغيل نظام التشغيل، يمكنك الاطلاع على معلمات النواة التي تم استخدامها لعملية التشغيل الحالية عن طريق قراءة ملف /proc/cmdline.
التهيئة والتمهيد للإقلاع
لا يعتمد نظام التشغيل فقط على نواة النظام (kernel) بل يعتمد أيضًا على مكونات أخرى توفر الميزات المتوقعة. حيث يتم تحميل العديد من هذه المكونات أثناء عملية تهيئة النظام (system initialization process). وتتنوع هذه المكونات ما بين نصوص shell البسيطة (simple shell scripts) وبرامج الخدمات (daemons) الأكثر تعقيدًا.
تُستخدم النصوص البسيطة (scripts) غالبًا لتنفيذ مهام قصيرة الأمد، حيث يتم تشغيلها وإنهائها خلال عملية تهيئة النظام. على سبيل المثال، يمكن استخدام نص shell لتركيب أقسام التخزين أو تفعيل بطاقات الشبكة بشكل معين.
وبالنسبة لخدمات النظام (daemons) تُعرف أيضًا بالشياطين (demons)، وهي برامج تعمل في الخلفية ولا تتطلب تفاعل مباشر من المستخدم. فقد تكون خدمات النظام نشطة طوال الوقت لأنها مسؤولة عن جوانب أساسية في نظام التشغيل. على سبيل المثال، قد تكون خدمات النظام مسؤولة عن إدارة الشبكة، أو تشغيل خدمات الخلفية مثل خادم الطباعة أو قاعدة البيانات. أو خدمات الحماية و السجلات وهكذا .
تتسم توزيعات لينكس بتنوع كبير في كيفية بناء نصوص التشغيل (startup scripts) والبرامج الخلفية (daemons) ذات الخصائص المختلفة. تاريخيًا، شكّل هذا التنوع عقبة أمام تطوير حل واحد يلبي تطلعات كل من مطوري وأنظمة تشغيل لينكس المختلفة ومستخدميها.
ومع ذلك، فإن أي أداة يختارها مطورو التوزيعات لأداء هذه الوظيفة ستكون قادرة على الأقل على بدء وتوقيف وإعادة تشغيل خدمات النظام. غالبًا ما يقوم النظام نفسه بتنفيذ هذه الإجراءات بعد تحديث البرنامج، على سبيل المثال . ولكن سيحتاج مسؤول النظام دائمًا تقريبًا إلى إعادة تشغيل الخدمة يدويًا بعد إجراء تغييرات على ملف تكوينها.
كما أنه من المفيد لمسؤول النظام أن يكون قادرًا على تفعيل مجموعة معينة من البرامج الخلفية (daemons) اعتمادًا على الظروف. على سبيل المثال، من الممكن تشغيل مجموعة خدمات دنيا فقط لأداء مهام صيانة النظام دون الحاجة لتشغيل جميع الوظائف والخدمات للبرامج المتاحة على النظام .
ملاحظة:
بالمعنى الدقيق للكلمة، يتكون نظام التشغيل فقط من النواة (kernel) ومكوناتها التي تتحكم في الأجهزة وتدير جميع العمليات. ومع ذلك، من الشائع استخدام مصطلح "نظام التشغيل" بشكل أوسع، للإشارة إلى مجموعة كاملة من البرامج المميزة التي تشكل بيئة البرامج حيث يمكن للمستخدم تنفيذ المهام الحسابية الأساسية.
أيضاً قد يشارك في العملية ما يسمى بالـ initrd وهي الـ initial ram disk :تبدأ عملية تهيئة نظام التشغيل لينكس عندما يقوم برنامج التحميل (bootloader) بتحميل نواة النظام (kernel) إلى الذاكرة العشوائية (RAM).
بعد ذلك، تقوم النواة بفتح نظام الملفات الافتراضي في الذاكرة العشوائية (initramfs).
- دور نواة النظام:
- فور تحميل النواة إلى الذاكرة، تسيطر على المعالج المركزي (CPU) وتبدأ في عملية الكشف والإعداد للمكونات الأساسية لنظام التشغيل، مثل تكوين الأجهزة الأساسية (بطاقة الرسوميات، لوحة المفاتيح، القرص الصلب، إلخ) وإدارة عناوين الذاكرة.
بمجرد توفر نظام الملفات الجذر، تقوم النواة بربط (mount) جميع أنظمة الملفات الأخرى المحددة في ملف التهيئة /etc/fstab.
- ما هو initramfs؟
- هو ملف مضغوط يحتوي على نظام ملفات مؤقت يُستخدم كجذر مؤقت لنظام التشغيل أثناء عملية التشغيل.
- الهدف الرئيسي من ملف initramfs هو توفير الوحدات (modules) الضرورية حتى تتمكن النواة من الوصول إلى نظام الملفات الجذر "الحقيقي" لنظام التشغيل.
- هذه الوحدات هي في الأساس برامج تشغيل للأجهزة (device drivers) تسمح للنواة بالتفاعل مع الأجهزة المختلفة المتصلة بالكمبيوتر.
بعد ذلك، تقوم النواة بتنفيذ البرنامج الأول، وهو أداة مساعدة تسمى init.
- ملف /etc/fstab:
- هو ملف يحتوي على معلومات حول أقسام التخزين وأنظمة الملفات الموجودة عليها، بالإضافة إلى كيفية ربطها.
أخيرًا، بعد تحميل برنامج init وإكمال مهمته، يتم إزالة ملف initramfs من الذاكرة العشوائية.
- برنامج init:
- يعتبر برنامج init مسؤولاً عن تشغيل جميع نصوص التشغيل (initialization scripts) وبرامج الخلفية (daemons) لنظام التشغيل.
- هناك تنفيذات مختلفة لهذه البرامج المسؤولة عن التشغيل مثل systemd و Upstart، ولكن init يعتبر البرنامج التقليدي الأكثر شيوعًا.
ملخص العملية:
- تحميل النواة إلى الذاكرة: يقوم برنامج التحميل بتحميل نواة نظام التشغيل إلى الذاكرة العشوائية.
- إعداد الأجهزة الأساسية: تسيطر النواة على المعالج وتبدأ في كشف وإعداد الأجهزة الأساسية.
- فتح initramfs: تقوم النواة بفتح نظام الملفات الافتراضي في الذاكرة (initramfs) والذي يحتوي على الوحدات اللازمة للوصول إلى نظام الملفات الجذر.
- ربط نظام الملفات الجذر: تقوم النواة بربط قسم نظام التشغيل الحقيقي الموجود على القرص الصلب.
- تنفيذ برنامج init: تقوم النواة بتنفيذ برنامج init المسؤول عن تشغيل بقية البرامج والخدمات.
- إزالة initramfs: بعد الانتهاء من دوره، يتم إزالة ملف initramfs من الذاكرة العشوائية.
دور الـ ramdisk في عملية تشغيل نظام لينكس
يُستخدم الـ ramdisk، أو نظام الملفات في الذاكرة العشوائية، كأداة مساعدة في عملية تشغيل نظام لينكس. يُشكل الـ ramdisk نظام ملفات مؤقتًا يتم إنشاؤه في ذاكرة الوصول العشوائي (RAM) أثناء عملية التشغيل.ما هي وظائف الـ ramdisk؟
- توفير الوحدات (modules) اللازمة:يحتوي الـ ramdisk على الوحدات (modules) الضرورية التي تسمح للنواة بالوصول إلى نظام الملفات الجذر.
- هذه الوحدات هي في الأساس برامج تشغيل للأجهزة (device drivers) تسمح للنواة بالتفاعل مع الأجهزة المختلفة المتصلة بالكمبيوتر.
- قد لا تكون هذه الوحدات متاحة في النواة نفسها، خاصةً إذا كانت متعلقة بأجهزة محددة أو جديدة.
- تسهيل الوصول إلى نظام الملفات الجذر:
- في بعض الحالات، قد يكون نظام الملفات الجذر موجودًا على جهاز تخزين مُشفّر أو يتطلب برامج تشغيل خاصة للوصول إليه.
- يمكن للـ ramdisk احتواء برامج تشغيل أو أدوات لفك تشفير نظام الملفات الجذر أو تحميله بشكل صحيح.
- تشغيل البرامج المساعدة:
- قد يحتوي الـ ramdisk على برامج مساعدة لمعالجة البيانات أو تنفيذ مهام محددة أثناء عملية التشغيل.
- على سبيل المثال، قد يحتوي على برامج للتحقق من صحة نظام الملفات أو إنشاء ملفات التهيئة المؤقتة.
- يُستخدم الـ ramdisk بشكل أساسي في أنظمة التشغيل التي تعتمد على برنامج init التقليدي.
- أصبح استخدامه أقل شيوعًا مع أنظمة التشغيل الحديثة مثل systemd، والتي تعتمد على نهج مختلف لعملية التشغيل.
- قد لا تزال بعض توزيعات لينكس تستخدم الـ ramdisk في حالات محددة، مثل عندما يكون نظام الملفات الجذر مُشفّرًا أو يتطلب برامج تشغيل خاصة.
- سرعة الوصول:
- تُعد ذاكرة الوصول العشوائية (RAM) أسرع بكثير من أجهزة التخزين مثل الأقراص الصلبة.
- يمكن أن يؤدي استخدام الـ ramdisk إلى تسريع عملية التشغيل، خاصةً إذا كان نظام الملفات الجذر موجودًا على قرص صلب بطيء.
- الراحة:
- لا يتطلب استخدام الـ ramdisk أي تكوين إضافي لنظام التشغيل.
- يتم إنشاؤه تلقائيًا أثناء عملية التشغيل.
- استهلاك الذاكرة:
- يشغل الـ ramdisk مساحة في ذاكرة الوصول العشوائية (RAM).
- قد يؤدي ذلك إلى مشاكل إذا كانت ذاكرة النظام محدودة.
- المحدودية:
- لا يمكن استخدام الـ ramdisk لبرامج أو ملفات كبيرة الحجم.
- يجب أن يكون محتواه صغيرًا بما يكفي ليتناسب مع ذاكرة الوصول العشوائية المتاحة.
يُستخدم الـ ramdisk كأداة مساعدة في عملية تشغيل نظام لينكس لتوفير الوحدات اللازمة للوصول إلى نظام الملفات الجذر وتسهيل عملية التشغيل.
- بينما أصبح استخدامه أقل شيوعًا مع أنظمة التشغيل الحديثة، لا يزال يُستخدم في بعض الحالات،
- مثل عندما يكون نظام الملفات الجذر مُشفّرًا أو يتطلب برامج تشغيل خاصة.
- تتمتع هذه الطريقة بميزة السرعة والراحة، ولكنها قد تستهلك ذاكرة الوصول العشوائية وتكون محدودة في حجم البيانات التي يمكن استيعابها.
تم استبدال الـ init ببرامج أخرى مثل :إجمالاً : لعملية تشغيل نظام لينكس:
1. تشغيل الكمبيوتر:
2. تحميل برنامج التحميل (bootloader):
- عند الضغط على زر التشغيل، يتم تشغيل وحدة الطاقة في الكمبيوتر، مما يوفر الطاقة للمكونات المختلفة.
- تبدأ وحدة معالجة البيانات المركزية (CPU) في تنفيذ التعليمات الموجودة في ذاكرة الوصول العشوائي (RAM) الخاصة بالكمبيوتر، والتي تسمى عادةً BIOS (نظام الإدخال والإخراج الأساسي).
3. تحميل نواة نظام التشغيل (kernel):
- يقوم BIOS بالبحث عن جهاز تخزين (مثل القرص الصلب) يحتوي على برنامج التحميل (bootloader).
- برنامج التحميل هو برنامج مسؤول عن تحميل نظام التشغيل إلى الذاكرة العشوائية.
- هناك أنواع مختلفة من برامج التحميل، مثل GRUB و LILO.
4. تهيئة الأجهزة الأساسية:
- يقوم برنامج التحميل بتحديد نواة نظام التشغيل التي يجب تحميلها بناءً على خيارات المستخدم أو تكوين النظام.
- يتم تحميل النواة إلى الذاكرة العشوائية وتبدأ في تنفيذ التعليمات.
5. تحميل initramfs (نظام الملفات الافتراضي في الذاكرة العشوائية):
- تتحكم نواة نظام التشغيل في وحدة المعالجة المركزية (CPU) وتبدأ في عملية كشف وإعداد الأجهزة الأساسية مثل لوحة المفاتيح، وبطاقة الرسوميات، والقرص الصلب.
- يتم تخصيص موارد النظام (مثل الذاكرة والتعليمات البرمجية) لكل جهاز.
6. ربط نظام الملفات الجذر:
- تقوم النواة بفتح نظام ملفات مضغوط يسمى initramfs، والذي يحتوي على الأدوات والوحدات اللازمة للوصول إلى نظام الملفات الجذر.
- قد يحتوي initramfs أيضًا على برامج تشغيل لأجهزة محددة غير متوفرة في النواة كالدرايفرات.
7. تنفيذ برنامج init:
- تبحث النواة عن قسم نظام التشغيل على جهاز التخزين وتقوم بربطه (mount) بنظام الملفات الجذر (/).
- يصبح نظام الملفات الجذر متاحًا للنواة والبرامج الأخرى.
8. تشغيل البرامج والخدمات:
- تبحث النواة عن ملف init في نظام الملفات الجذر وتقوم بتنفيذه.
- برنامج init هو المسؤول عن تشغيل بقية البرامج والخدمات في نظام التشغيل.
- هناك أنواع مختلفة من برامج init، مثل systemd و Upstart، ولكن برنامج init التقليدي هو الأكثر شيوعًا.
9. الوصول إلى نظام التشغيل:
- يقوم برنامج init بقراءة ملفات التهيئة (مثل /etc/init.d و /etc/systemd/system) لتحديد البرامج والخدمات التي يجب تشغيلها.
- يتم تشغيل هذه البرامج والخدمات في الخلفية وتوفر وظائف مختلفة لنظام التشغيل، مثل إدارة الشبكة، وتشغيل واجهة المستخدم الرسومية، وإدارة الخدمات الأخرى.
- بمجرد اكتمال عملية التشغيل، يصبح نظام التشغيل جاهزًا للاستخدام.
- يمكن للمستخدم تسجيل الدخول إلى النظام باستخدام اسم مستخدم وكلمة مرور، ثم تشغيل البرامج واستخدام الميزات المختلفة للنظام.
معايير SysV
يعتمد مدير الخدمات الذي يستند إلى معيار SysVinit على مفهوم مستويات التشغيل (runlevels) للتحكم في البرامج الخلفية (daemons) والموارد التي ستكون متاحة. يتم ترقيم مستويات التشغيل من 0 إلى 6، ويقوم مطورو توزيعات لينكس بتصميمها لأداء أغراض محددة. التعريفات الوحيدة لمستويات التشغيل المشتركة بين جميع التوزيعات هي المستويات 0 و 1 و 6.- المستوى 0 (Halt): وضع إيقاف التشغيل.
- المستوى 1 (Single-User Mode): وضع المستخدم الفردي، وهو مناسب لإجراء عمليات صيانة النظام.
- المستوى 6 (Reboot): إعادة تشغيل النظام.
مدير النظام systemd
systemd هو مدير نظام وخدمات حديث مع طبقة توافق لأوامر SysV ومستويات التشغيل. يتميز systemd ببنية متزامنة، ويستخدم المقابس (sockets) و D-Bus لتفعيل الخدمات، وتنفيذ البرامج الخلفية عند الطلب، ومراقبة العمليات باستخدام cgroups، ودعم لإنشاء صور للنظام، واستعادة جلسات النظام، والتحكم بنقاط الربط (mount points)، والتحكم بالخدمات بناءً على التبعيات. وفي السنوات الأخيرة، تبنت معظم توزيعات لينكس الرئيسية تدريجياً systemd كمدير نظام افتراضي لها.مدير النظام Upstart
مثل systemd، يُعد Upstart بديلاً لـ init. يركز Upstart على تسريع عملية التشغيل من خلال توازِ تشغيل تحميل خدمات النظام. تم استخدام Upstart في توزيعات مبنية على Ubuntu في إصدارات سابقة، ولكنه حاليًا تم استبداله بـ systemd.قد تحدث أخطاء أثناء عملية التشغيل، ولكنها قد لا تكون حرجة لدرجة إيقاف نظام التشغيل بالكامل. ومع ذلك، قد تؤثر هذه الأخطاء على السلوك المتوقع للنظام.
تؤدي جميع الأخطاء إلى ظهور رسائل يمكن استخدامها في تحقيقات مستقبلية، حيث أنها تحتوي على معلومات قيمة حول وقت وكيفية حدوث الخطأ. حتى في حالة عدم ظهور رسائل خطأ، يمكن أن تكون المعلومات التي تم جمعها أثناء عملية التشغيل مفيدة لأغراض الضبط والإعداد.
يتم تخزين رسائل النواة، بما في ذلك رسائل التشغيل، في مساحة ذاكرة خاصة تعرف باسم حافظة حلقات النواة (kernel ring buffer).ويتم الاحتفاظ بالرسائل في حافظة الحلقات حتى لو لم يتم عرضها أثناء عملية التهيئة، مثل عند عرض واجهة رسومية بدلاً منها.
لعرض الرسائل الحالية في حافظة حلقات النواة، يتم استخدام الأمر dmesg بدون أي خيارات إضافية.
أو الأمر journalctl![]()
تفقد جميع الرسائل الموجودة في حافظة حلقات النواة عند إطفاء النظام أو عند تنفيذ الأمر dmesg --clear.
وهكذا نكون قد شرحنا بشكل بسيط وسريع المراحل الأساسية لكيفية تهيئة الجهاز و تمهيده حتى اتمام عملية الإقلاع الكامل لنظام لينكس
التعديل الأخير: