إقلاع (حاسوب)
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)
Power On Self Test (POST)
Other kinds of boot sequences
Initial Program Load
إعادة الاقلاع
Hard reboot
Soft reboot
الأخطاء
كويك-بوت
انظر أيضا
- Boot disk, Live CD, Live USB
- Comparison of boot loaders
- PC booter
- Linux startup process
- Microreboot
- Multi boot
- Network booting
- RedBoot open source boot loader for embedded systems
- U-Boot yet another open source boot loader for embedded systems.
- Pspboot boot loader for embedded systems based on the Texas Instruments AR7 chipset
- Adam2 alternative boot loader for embedded systems based on the Texas Instruments AR7 chipset
- Windows NT Startup Process
- Windows Vista startup process (Boot Configuration Data, Windows Boot Manager)
- Bootkit
المصادر
- xs4all.nl : How Boot Loaders Work
- linuxdevcenter.com : LILO and GRUB-Boot Loaders Made Simple by Judith Myerson
- ibm.com : Boot loader showdown-Getting to know LILO and GRUB by Laurence Bonney
- Gnu.org : GNU GRUB Manual 1.98
- netadmintools.com : LILO Document
قراءات إضافية
- How Computers Boot Up
- Practical bootloader tutorial for ATmega microcontrollers
- Booting with Grub at OSDEV Community
- A tutorial on writing hello world bootloader
- Booting From Scratch
- Matthew Vea. "x86 BootStrap Programming Tutorial".
- FreeBSD
- Nathan Boeger and Mana Tominaga. "Bootstrapping FreeBSD".
- Linux
- Roberto Alsina. "The Linux boot process unveiled".
- Greg O'Keefe. "From power up to Linux bash prompt HOWTO".
- Chao-Kuei Hung 洪朝貴. "Mk-boot-usb: a Script to Create Multiple-Bootable USB Keys".
- Mac OS X
- Amit Singh. "Mac OS X Boot Process".
- Windows
- Jonathan de Boyne Pollard (1996). "The DOS and DOS/Windows boot processes". Frequently Given Answers.
- "Multi-booting, running different versions of Windows on your PC".
- "Windows Mobile 5.0 Soft Reset".
- "Pocket PC devices hard reset and soft reset".
- Multibooting: