رحلة الإقلاع (The Boot Process): من BIOS/UEFI إلى الـ Kernel وصولاً إلى الـ Target
رحلة الإقلاع (The Boot Process): من BIOS/UEFI إلى الـ Kernel وصولاً إلى الـ Target
تبدأ أي جلسة عمل على لينكس قبل أن ترى شاشة تسجيل الدخول بوقت طويل، إذ يمر النظام بسلسلة مترابطة من المراحل الدقيقة تُعرف باسم عملية الإقلاع. فهم هذه الرحلة لا يفيد فقط في بناء معرفة تقنية عميقة، بل يساعد أيضاً في تشخيص الأعطال، وتسريع الإقلاع، وفهم العلاقة بين العتاد والبرمجيات على مستوى منخفض.
إذا كنت قد قرأت سابقاً مقدمة إلى عالم لينكس: التاريخ، الفلسفة، وفهم النواة (Kernel) فستعرف أن Kernel هي القلب الفعلي للنظام. لكن هذا القلب لا يعمل من تلقاء نفسه؛ بل يحتاج إلى سلسلة تمهيد تبدأ من البرنامج الثابت على اللوحة الأم، مروراً بمحمل الإقلاع، وانتهاءً ببيئة التشغيل التي يحددها systemd عبر مفهوم target.
نظرة عامة: ما الذي يحدث لحظة ضغط زر التشغيل؟
بشكل مبسط، تمر عملية الإقلاع في لينكس عبر خمس طبقات رئيسية: تهيئة العتاد، اختيار وسيط الإقلاع، تحميل محمل الإقلاع، تشغيل النواة وبيئة التمهيد المبكر، ثم إطلاق خدمات النظام حتى الوصول إلى الهدف التشغيلي النهائي.
- تشغيل البرنامج الثابت
BIOSأوUEFI. - فحص المكونات الأساسية وتنفيذ اختبار
POST. - العثور على محمل الإقلاع مثل
GRUB. - تحميل
Kernelوملفinitramfs. - تشغيل
PID 1ثم الخدمات حتى الوصول إلىmulti-user.targetأوgraphical.target.
المرحلة الأولى: BIOS و UEFI وفحص العتاد
BIOS هو النموذج التقليدي القديم للبرنامج الثابت، بينما UEFI هو البديل الأحدث والأكثر مرونة. كلاهما يعمل قبل نظام التشغيل، ومهمته الأولى التأكد من أن المعالج والذاكرة والأقراص والأجهزة الأساسية في حالة تسمح ببدء الإقلاع.
في هذه المرحلة يُنفذ اختبار يسمى POST أو Power-On Self-Test. وإذا كان هناك خلل في الذاكرة أو بطاقة العرض أو وسيط التخزين فقد يتوقف الجهاز هنا قبل الوصول حتى إلى محمل الإقلاع.
الفرق العملي بين BIOS و UEFI
BIOSيعتمد غالباً على جدول تقسيمMBR.UEFIيدعمGPTوأقراصاً أكبر وواجهة أكثر حداثة.UEFIيستطيع قراءة قسم خاص يسمىEFI System Partition.- يمكن استخدام ميزات أمنية مثل
Secure BootمعUEFI.
أي عدم توافق بين وضع التثبيت ووضع الإقلاع قد يمنع تشغيل النظام؛ فمثلاً تثبيت لينكس في وضع
UEFIثم محاولة الإقلاع في وضعLegacy BIOSيؤدي كثيراً إلى فشل الإقلاع.
المرحلة الثانية: العثور على محمل الإقلاع
بعد نجاح البرنامج الثابت في تهيئة العتاد، يبحث عن وسيط الإقلاع وفق ترتيب محدد داخل الإعدادات. هنا تبدأ مهمة محمل الإقلاع، وهو برنامج صغير مسؤول عن تحميل نواة النظام وتمرير المعاملات الأولية إليها.
الأشهر في توزيعات لينكس هو GRUB. في أنظمة BIOS قد يوجد جزء منه في بداية القرص، بينما في أنظمة UEFI يوجد ملفه التنفيذي داخل قسم EFI.
ماذا يفعل GRUB فعلياً؟
- يعرض قائمة الأنظمة أو الأنوية المتاحة.
- يحمّل ملف النواة مثل
vmlinuz. - يحمّل ملف التهيئة المبكرة
initramfsأوinitrd. - يمرر معاملات مثل
roأوquietأوsystemd.unit=rescue.target.
إذا كنت تعمل على بيئات متعددة الإقلاع أو أنظمة افتراضية، فهذه المرحلة ترتبط مباشرة بما ناقشناه في اختيار التوزيعة المناسبة (Distros) وطرق التثبيت (VirtualBox, Dual Boot, WSL2) لأن نوع التثبيت يؤثر في شكل محمل الإقلاع وترتيب عمله.
المرحلة الثالثة: تحميل Kernel و initramfs
بعد اختيار الإدخال المناسب من محمل الإقلاع، تُحمّل النواة إلى الذاكرة. لكن النواة وحدها لا تكفي دائماً للوصول مباشرة إلى نظام الملفات الجذري الحقيقي. هنا يظهر دور initramfs، وهو نظام ملفات مؤقت في الذاكرة يحتوي على أدوات وسواقات لازمة للوصول إلى القرص الجذري.
هذه الخطوة تكون حاسمة عند استخدام أقراص LVM أو تشفير LUKS أو تعريفات تخزين خاصة. ولهذا يرتبط فهمها أيضاً بمقال التعامل مع الأقراص والتخزين (Storage, Partitions, LVM).
ما الذي تفعله النواة بعد التحميل؟
- تفك ضغط نفسها وتبدأ التهيئة المبكرة.
- تكتشف المعالج والذاكرة والأجهزة الرئيسية.
- تحمّل السواقات الضرورية أو الوحدات
modules. - تركب نظام الملفات الجذري الحقيقي ثم تسلّم التحكم لأول عملية في النظام.
عند ظهور رسالة مثل
Kernel panicفغالباً تكون المشكلة في عدم القدرة على الوصول إلىroot filesystemأو في تمرير معاملات خاطئة للنواة أو تلف ملفات الإقلاع.
المرحلة الرابعة: من PID 1 إلى systemd
بعد أن تصبح النواة جاهزة وتتوفر بيئة الملفات الأساسية، تشغّل أول عملية مستخدم تحمل المعرّف PID 1. في أغلب التوزيعات الحديثة تكون هذه العملية هي systemd.
وظيفة systemd هي تنظيم مرحلة ما بعد النواة: تركيب أنظمة الملفات، تشغيل الخدمات، إدارة الاعتماديات، وتهيئة الجلسة النصية أو الرسومية. وقد تناولنا ذلك بتفصيل أوسع في إدارة الخدمات باستخدام (systemd) و (systemctl).
ما معنى Target؟
مفهوم target في systemd يشبه نقطة الوصول النهائية التي يريد النظام بلوغها. كل target يجمع خدمات ووحدات مرتبطة بسيناريو تشغيل معين.
rescue.targetللصيانة والاسترداد.multi-user.targetلوضع نصي متعدد المستخدمين.graphical.targetلتشغيل الواجهة الرسومية.
كيف تفحص حالة الإقلاع عملياً؟
بعد تشغيل النظام يمكنك استخدام بعض الأوامر لفهم ما حدث أثناء الإقلاع، وخصوصاً عند التشخيص أو تحليل التأخير. كما أن الاطلاع على السجلات يكمل ما شرحناه في مراقبة السجلات (Logs) وتحليل الأخطاء (journalctl, /var/log).
systemctl get-default
systemctl list-units --type=target
systemd-analyze
systemd-analyze blame
journalctl -b
dmesg | less
تفيد هذه الأوامر في معرفة default target، والخدمات البطيئة، ورسائل النواة، وأخطاء الإقلاع المسجلة في الجلسة الحالية. وإذا كنت تحتاج مهارات أقوى لقراءة المخرجات النصية فارجع إلى أدوات عرض ومعالجة النصوص (cat, nano, vim, less, tail) والأنابيب وإعادة التوجيه (Pipes and Redirections: |, >, >>).
أشهر مشاكل الإقلاع ولماذا تحدث
1) فشل العثور على محمل الإقلاع
قد يحدث بسبب تلف إعدادات GRUB أو تغيير ترتيب الأقراص أو حذف قسم EFI.
2) توقف عند initramfs
غالباً سببه عدم القدرة على تركيب القسم الجذري، أو تغير أسماء الأجهزة مثل /dev/sda و/dev/nvme0n1، أو وجود خطأ في ملف /etc/fstab.
3) بطء واضح بعد بدء systemd
هنا يكون السبب في العادة خدمة متأخرة أو انتظار شبكة أو نقطة تركيب فاشلة. لمثل هذه الحالات يفيد الربط مع موضوع تحسين أداء النظام (Performance Tuning) وحل المشكلات المتقدمة (Troubleshooting).
لماذا يُعد فهم رحلة الإقلاع مهماً للمسؤول والمطور؟
فهم الإقلاع يمنحك قدرة أفضل على التشخيص، خصوصاً في الخوادم، والأنظمة الافتراضية، وبيئات الاسترداد. كما يشرح لك لماذا تعتمد بعض الخدمات على توفر الشبكة أو التخزين قبل أن تبدأ، ولماذا قد يفشل النظام بعد تحديث نواة أو تعديل في إعدادات القرص.
هذه المعرفة تساعدك أيضاً عند التعامل مع بنية الملفات الحرجة مثل /boot و/etc و/var/log، وهو ما يتقاطع مع هيكلية ملفات لينكس (Filesystem Hierarchy Standard – FHS).
خاتمة
رحلة الإقلاع في لينكس ليست خطوة واحدة، بل سلسلة من التسليمات الدقيقة بين العتاد والبرنامج الثابت ومحمل الإقلاع والنواة ومدير الخدمات. يبدأ كل شيء من BIOS أو UEFI، ثم ينتقل إلى GRUB، ثم إلى Kernel وinitramfs، وأخيراً إلى systemd target الذي يحدد شكل بيئة التشغيل النهائية.
كلما فهمت هذه السلسلة بوضوح، أصبحت أكثر قدرة على التعامل مع الأعطال، واتخاذ قرارات صحيحة أثناء التثبيت، وتفسير سلوك النظام منذ اللحظة الأولى لبدء التشغيل وحتى جاهزية الخدمة أو الواجهة التي تعتمد عليها.
3 comments