إقلاع (حاسوب)

In computing, booting (also known as "booting up") is a bootstrapping process that starts operating systems when the user turns on a computer system. A boot sequence is the initial set of operations that the computer performs when power is switched on. The bootloader typically loads the main operating system for the computer.

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

التاريخ

محمل إقلاع

Boot Loader هو عبارة عن برنامج مخزن على الـ 512 Byte الأولى من القرص الصلب (cylinder0 - head0 - sector1) و التي تدعى بالسجل MBR (اختصاراً لـ Master Boot Record) ، مهمة هذا البرنامج تحميل نظام التشغيل Operating System إلى الذاكرة الرئيسية RAM (اختصاراً لـRandom Access Memory)، ليتاح لوحدة المعالجة المركزية CPU (اختصاراً لـ Central Processing Unit) تولي العمل فيما بعد . فعند إقلاع الحاسب ، يبدأ نظام الـ BIOS (اختصاراً لـ Basic Input Output System) المخزن في الذاكرة ROM (اختصاراً لـRead Only Memory) الخاصة بالحاسب عمله في قيادة عمليات الإقلاع Booting ، و بعد انتهائه من القيام بمجموعة من الاختبارات الابتدائية للحاسب ، يقوم بتحميل هذا البرنامج المخزن ضمن الذاكرة الرئيسية RAM ليتولى بدوره إتمام عمليات إقلاع نظام التشغيل . و لكن عملياً فإن الحجم المحدد بـ 512 Byte ليس مخصصاً للـ Boot Loader بالكامل ، إذا أن البايتين الأخيرين من السجل MBR محجوزان بغاية تعرف الـ BIOS على السجل MBR، كما أن جزءا من حجم السجل MBR يخصص لحفظ جدول تقسيمات القرص Partition Table، و بالتالي فإن حجماً صغيراً جداً (أقل من 512 Byte) سيخصص لتخزين الـ Boot Loader و لهذا السبب فإن الـ Boot Loader غالباً ما يكون مقسوماً إلى أقسام ثلاثة هي كالتالي :


1- الـ Boot Sector Program أو ما يدعى بـ IPL (اختصاراً لـ Initial Program Loader) : و هو الجزء المخزن ضمن السجل MBR و يجري تحميله أو تفعيله من قبل الـ BIOS ، و من ثم يمكن له الوصول إلى القطاع المخزن فيه الجزء التالي من الـ Boot Loader و الذي يدعى بـ Second Stage Boot Loader .


2- الـ Second Stage Boot Loader : و هو الجزء الأهم و الأكبر ضمن الـ Boot Loader يخزن على تقسيم من نوع Bootable Partition ، إذا أنه يؤمن ما يلي:

- واجهة تخاطب User Interface على شكل واجهة أوامر Command Line أو على شكل قوائم Menus أو واجهات رسومية متقدمة GUIs (اختصاراً لـ Graphical User Interfaces) ، تتيح للمستخدم اختيار واحد من أنظمة التشغيل المخزنة ضمن القرص . - تحميل نواة نظام التشغيل التي تم اختيارها من قبل المستخدم ضمن الذاكرة الرئيسية RAM و تشغيلها ، أو تحميل برنامجBoot Loader آخر مسؤول عن تفعيل نظام تشغيل آخر ، و هذا ما يدعى بـ Chain Loading .

إن برامج Boot Loaders الخاصة بشركة Microsoft تعجز عن التعرف على أي برامج Boot Loaders تخص أنظمة تشغيل أخرى ، على عكس تلك التي تخص النظام لينكس Linux و أحد أهم هذه الـ Boot Loaders الخاصة بـالنظام لينكس ، و الشائعة الاستخدام في توزيعات مختلفة له هما البرنامجان : LILO و GRUB .


3- المنصِّب Boot Loader Installer : و هو برنامج لينكس عادي ليست له أي بنية خاصة كما القسمان السابقان و يتولى المهام التالية - إعادة كتابة الـ Boot Sector Program ضمن السجل MBR في مكانه الصحيح من الـ 512 Bytes بحيث يحافظ على المناطق المحجوزة للـ Partition Table و البايتين الأخيرين المخصصين للـ BIOS و يمنع الكتابة عليها . - إخبار الـ Boot Sector Program عن عنوان تخزين الـ Second Stage Boot Loader . - إخبار الـ Second Stage Boot Loader بالمعلومات اللازمة للتحميل الفعلي لنظام التشغيل (الإعدادات Configurations ،نوى النظم Kernels) .


كما أن لكل Boot Loader ملف خاص بمثابة ملف إعدادات يدعى Configuration file ، تتم قراءته من قبل المنصِّب Boot Loader Installer إذ تُحدد بداخله نظم التشغيل المتاحة على الحاسب (سواء كانت توزيعات Linux أو أي نظم تشغيل أخرى ) ، و ترتيبها ضمن قائمة Menu تمكن المستخدم من اختيار أحدها ، و هذا الملف يمكن لمدير النظام Administrator الوصول إليه و إجراء ت تعديلات نصية ضمنه (وفقاً لقواعد خاصة) .

لمحة تاريخية

مع بدايات ظهور توزيعات لينكس و تعددها ، لم يكن هناك من اختلاف حول برنامج الـ Boot Loader المستخدم في إقلاع النظام ، إذ أن معظم هذه التوزيعات اعتمدت على LILO (اختصاراً لـ LInux LOader) كبرنامج إقلاع نظام افتراضي ، إلى أن جاءت النسخة 7.2 من التوزيعة Red Hat عام 2001، و أوضحت ضمن تعليمات إصدارها أن برنامج الـ Boot Loader الافتراضي الذي تستخدمه النسخة هو البرنامج GRUB (اختصاراً لـ GRand Unified Bootloader) بدلاً من LILO .

LILO

Configuration file

إن للبرنامج LILO ملف configuration يخزن في /etc/lilo.conf ، نجد له بنية مشابهة للمثال التالي:

boot=/dev/hda
map=/boot/map
install=/boot/boot.b
prompt
timeout=100
compact
default=Linux
image=/boot/vmlinuz-2.4.18-14
    label=Linux
    root=/dev/hdb3
    read-only
    password=linux
other=/dev/hda
    label=WindowsXP

حيث تعبر المعاملات parameters السابقة عن التالي:

boot= : تستخدم لإخبار LILO بموقع تخزين البرنامج Boot Loader .

map= : تستخدم لإخبار LILO بموقع ال map file الذي يستخدمه لتخزين كافة العناوين و المؤشرات الخاصة بالقسمين Boot Sector Program و Second Stage Boot Loader .

install= : تستخدم لإخبار LILO بموقع الملف الذي يخزن فيه البرنامجان السابقان (Boot Sector & second stage) ، و يخزن الجزء من هذا الملف الخاص بالأول ضمن السجل MBR نفسه.

prompt : و هو الأمر المعطى لـ LILO بإظهار الواجهة لتي تتيح للمستخدم اختيار نظام التشغيل الذي يريده.

timeout= : و هو عدد الأجزاء العشرية من الثانية التي يتوجب على الـ Loader انتظارها قبل البدء بتشغيل نظام التشغيل الافتراضي تلقائياً في حال لم يقم المستخدم بتحديد أي من الخيارات المتاحة .

default=: تستخدم لإخبار LILO بأية نسخة نظام التشغيل الذي سيشغله كحالة افتراضية بعد انقضاء الفترة timeout . لكل توزيعة لينكس مخزنة على الحاسب لا بد من أن نعرفها ضمن (image=) كما هو في المثال السابق بهدف تحديد موقع نواتها Kernel ، و مجموعة من المعاملات الأخرى التي تخص هذه التوزيعة و هي:

label= : نوع نظام التشغيل الذي سيجري إظهاره للمستخدم (Mac, Windows, Linux) .

root= : المسار الفيزيائي الحقيقي لملفات النظام الفعلية على لقرص الصلب ، و هو هنا مدون بصيغة hdb3 و تعني :

HD : القرص الصلب Hard disk

b : أي القرص الفيزيائي الثاني ، إذا أن ترقيم الأقراص هنا في حال تعددها يجري وفق الأحرف a, b, c …

3 : التقسيمة الثالثة (Third Partition) ضمن القرص الصلب الثاني.

password= : كلمة سر دخول النظام .

في حين أن تعريف نظم التشغيل الأخرى المختلفة عن لينكس يجري ضمن (other=) التي نسند إليها مسار نظام التشغيل المجاور للينكس .. و هو هنا windows .


تحميل البرنامج عند الإقلاع Initial Boot Process

عندما يقوم LILO بتحميل نفسه عند الإقلاع فإنه يطبع على الشاشة الأحرف L, I, L, O على عدة مراحل ، بحيث يتاح لمستخدم كشف المرحلة التي حدثت فيها المشكلة في حال وقوع أية أخطاء ، و هذه المراحل هي كالتالي:

• L : تم تحميل القسم الأول Boot Sector Program بنجاح .

• LI : تم تحميل القسم الثاني Secondary Boot Loader بنجاح .

• LIL : القسم الثاني Secondary Boot Loader تم تنفيذه (execution) بنجاح .

•؟LIL : القسم الثاني Secondary Boot Loader تم تحميله في عنوان خاطئ .

•-LIL : تعني خطأ في الجدول الموصِّف Descriptor Table الموجود ضمن الـ map file .

• LILO : تم تحميل كافة أجزاء LILO بشكل سليم.


GRUB

Configuration file

إن للبرنامج LILO ملف configuration يخزن في /boot/grub/grub.conf ، نجد له بنية مشابهة للمثال التالي:

default=0
timeout=10
splashimage=(hd1,2)/grub/splash.xpm.gz
password --md5 $1$opeVt0$Y.br.18LyAasRsGdSKLYlp1
title Red Hat Linux
password --md5 $1$0peVt0$Y.br.18LyAasRsGdSKLYlp1
root (hd1,2)
kernel /vmlinuz-2.4.18-14 ro root=LABEL=/
initrd /initrd-2.4.18-14.img
title Windows XP
password --md5 $1$0peVt0$Y.br.18LyAasRsGdSKLYlp1
rootnoverify (hd0,0)
chainloader +1

حيث تعبر المعاملات parameters السابقة عن التالي:

default= : تستخدم لإخبار GRUB بأية نسخة نظام التشغيل الذي سيشغله كحالة افتراضية بعد انقضاء الفترة timeout .

timeout= : و هو عدد الثواني التي يتوجب على الـ Loader انتظارها قبل البدء بتشغيل نظام التشغيل الافتراضي في حال لم يقم المستخدم بتحديد أي من الخيارات المتاحة .

splashimage= : تستخدم لإخبار GRUB بمسار الصورة التي سيجري استخدامها كخلفية لواجهة المستخدم الرسومية GUI (Graphical User Interface) الخاصة بـ GRUB .

password= : يستخدم هذا الجزء لتحديد كلمة السر التي تتيح للمستخدم الوصول إلى النمط التفاعلي للإقلاع Interactive Boot Options الذي يتح للمستخدم الدخول إلى تفاصيل عملية الإقلاع و التحكم بها .

title= : يجري ضمن هذا الجزء تعريف واحد من أنظمة التشغيل المنصبة على الحاسب ، و بتعدد أنظمة التشغيل ، تتعدد التعريفات title.

إن للمعاملات root و password نفس الوظائف الكائنة في LILO مع ملاحظة الفرق في تسمية GRUB للتقسيمة الثالثة للقرص الصلب الثاني ، حيث تمت تسميتها بـ (hd1, 2) على اعتبار أن ترقيم الأقراص و التقسيمات هنا يبدأ من الصفر.

kernel : اسم نواة النظام المراد إقلاعه ، ضمن المسار root.

chainloader +1 : و تستخدم لإخبار GRUB باستخدام آلية chain loading اللازمة هنا لتشغيل نظام windows .

تحميل البرنامج عند الإقلاع Initial Boot Process

تبدأ عملية تحميل GRUB تماماً كما في LILO بتحميل الجزء الأول من الـ Loader من السجل MBR و لكن بعد ذلك، لا يجري الانتقال مباشرة إلى المرحلة الثانية، وإنما يدخل GRUB ضمن مرحلة متوسطة بينهما يمكن تسميتها بـ stage 1.5 تخزن تعليماتها ضمن الـ 30 Kilobytes الأولى التالية تماماً للـ MBR هدفها تسريع عملية الوصول للمسار /boot/grub/ و من ثم تحميل المرحلة التالية المعبر عنها بالجزء الثاني للـ Loader حيث يتم عندها قراءة الملف

مقارنـة

• سهولة الاستخدام : LILO لا يدعم واجهات استخدام رسومية GUIs كما هو الحال في GRUB ، و إنما تبدو واجهته على شكل قائمة نصية يختار منها المستخدم النظام المراد . • لا يدعم LILO النمط التفاعلي للإقلاع Interactive Boot Interface الموجود ضمن GRUB . • لا يدعم LILO عمليات الإقلاع من شبكة Network Booting ، بينما يؤمن GRUB هذه الميزة . • يحتفظ LILO بعناوين لكافة نوى النظم المتوفرة شكل فيزيائي على السجل MBR ، و من ثم ، عند كل إضافة جديدة لأي نظام تشغيل جديد إلى الحاسب تتطلب من المستخدم إعادة كتابة الجزء الأول من LILO Loader ضمن السجل MBR بشكل يدوي ، و تعتبر هذه العملية خطرة لأن أي خطأ في تنظيم الـ MBR ( أي misconfigured MBR ) سيجعل نظام LILO كاملاً غير قابل للإقلاع (Unbootable) ، في حين أن أي خطأ مشابه في GRUB لن يلغي إمكانية الإقلاع ، و إنما سينقل المستخدم إلى واجهة الأوامر Command Line Interface حيث يتمكن فيها من إعادة خطوات عملية الإقلاع بشكل يدوي الواحدة تلو الأخرى . • عند التعديل على الملف Configuration file الخاص بـ LILO (أي lilo.conf) لن يتم كشفه تلقائياً عند الإقلاع من قبل LILO و إنما يحتاج المستخدم للقيام بعملية تحديث refresh للسجل MBR و ذلك بإعادة تشغيل الجزء الثالث من الـ Loader و هو المنصِّب (Boot Loader Installer) ، بينما يتم في GRUB بشكل تلقائي (Automatically) قراءة محتويات الملف grub.conf عند كل عملية إقلاع (Booting) جديدة للحاسب و أخذ التعديلات المجراة على الملف بعين الاعتبار .


. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Other CPUs and architectures have different

Boot sequence on standard PC (IBM-PC compatible)

A hex dump of FreeBSD's boot0 MBR
AwardBIOS during booting. BIOS is dated to 1997


Power On Self Test (POST)

Other kinds of boot sequences

Initial Program Load

إعادة الاقلاع

Hard reboot

Soft reboot

الأخطاء

كويك-بوت

انظر أيضا

المصادر


قراءات إضافية

الكلمات الدالة: