# ليلو

ليلو (بالإنجليزية: LILO)‏ هو برمجية إقلاع أو ما يعرف أيضاً بمدير إقلاع مخصصة لانظمة التشغيل التي تعتمد على نواة لينكس، الاسم ليلو (بالإنجليزية: LILO)‏ يمثل أول حرفين للمصطلح (LInux LOader) والتي تعني حرفيا «محمل لينكس» حيث يتم تحميل نظام التشغيل على الذاكرة الرئيسية للجهاز.

## نظرة عامة

اعتبر ليلو مدير الإقلاع الافتراضي الأول في معظم توزيعات لينكس وذلك في السنوات التي لحقت شهرة البرمجية لودلين (بالإنجليزية: Loadlin)‏ ، واليوم فإن معظم التوزيعات اللينكسية تقوم باستخدام (جنو جرب) لإقلاع نظام التشغيل.
المعلومات الوحيدة المتوفرة لبرمجية الإقلاع ليلو في بداية عملية اقلاع النظام هي المعلومات المخزنة في البيوس وهذه المعلومات هي التي تمكن ليلو من القيام بالولوج إلى القرص الصلب الذي يحوي بدوره على نظام التشغيل اللازم تحميله في الذاكرة الرئيسية لجهاز الحاسوب، ولهذا السبب ومع قطع البيوس القديمة جدا فإن المساحة المخصصة لحفظ معلومات نظام التشغيل في هذه القطع تكون محدودة بالقطاعات المرمزة من 0 إلى 1023 في أول قرصين صلبين للنظام.
أما بالنسبة لقطع البيوس الحديثة فإن ليلو يستطيع استخدام ما مقداره (32 بت) من ما يسمى ب «عنونة القطاعات المنطقية» (بالإنجليزية: logical block addressing)‏ للولوج إلى جميع الأقراص الصلبة المخزنة في البيوس والتي تسمح البيوس بالولوج إليها.
تجدر الإشارة أيضا إلى أن ليلو لا يعتمد على نظام ملفات معين ويستطيع القيام بعملية الإقلاع من عدة مصادر مثل القرص المرن أو القرص الصلب، ومن الأهمية بمكان ان نذكر ان ليلو لا يدعم ظهور أكثر من 16 نظام تشغيل في قائمته الرئيسية لاختيار نظام واحد وتحميله.
و توجد أيضا قائمة كبيرة بالمعلمات التي يمكن التحكم بها بشكل منفصل لكل نظام يظهر على القائمة الرئيسية لبرمجية الإقلاع ليلو، على سبيل المثال يمكنك القيام بتحديد جذر النظام بشكل منفصل ومنفرد لكل نظام تشغيل يظهر على هذه القائمة.
يضاف إلى السابق ذكره انه يمكن تخزين ليلو في واحد من الأماكن التالية:
* سجل الإقلاع الرئيسي أو ما يعرف بال (MBR (Master Boot Record
* قطاع الإقلاع وهو قطاعٌ على القرص الصلب مخصص لعملية الإقلاع (و في هذه الحالة يجب تخزين برمجية دلالية لتؤشر إلى قطاع الإقلاع في سجل الإقلاع الرئيسي)

## ملفات ليلو
### الملف lilo.conf

يتواجد هذا الملف في المسار etc/lilo.conf/ ويحوي نوعين رئيسيين من القطاعات:
* النوع الأول يتضمن الخيارات العامة مثل المعلمات التي تحدد سمات الموقع التمهيدي.
* النوع الثاني يتضمن خيارات مرتبطة بنظم التشغيل التي تظهر على القائمة الرئيسية، من الأهمية بمكان ان نذكر ان هذه الخيارات يمكن تكرارها إلى 16 تكرار وفي هذا إشارة إلى ما سبق ذكره من ان ليلو يدعم إلى حد 16 نظام تشغيل يمكن اظهاره على القائمة الرئيسية لبرمجية الإقلاع.
ويمكن أيضا الرجوع إلى صفحات التوثيق للمزيد من المعلومات. التالي هو مثال للملف التعريفي lilo.conf:
ملاحظة: بعد التنصيب السليم لليلو ستظهر قائمة لانظمة التشغيل لينكس وفري بي ‌إس ‌دي

### المسار /boot/

يقوم ليلو بتخزين عدد من الملفات في هذا المسار.

### قطاع الإقلاع - Master Boot Record

يستطيع ليلو أيضا الكتابة على قطاع الإقلاع:

## المخرجات

عندما يقوم ليلو بتحميل نفسه سوف يظهر الكلمة “LILO” وكل حرف تتم طباعته قبل أو بعد نشاط أو سلوك معين، وان فشل ليلو في أي مرحلة من مراحل عملية الإقلاع فإن مقدار ما يتم طباعته من الاحرف من كلمة “LILO” يدلل على المشكلة، التالي هو توضيح للفكرة السابقة الذكر:
* في حال عدم طباعة أي حرف على الشاشة فذلك يعني انه لم يتم تحميل أي جزء من ليلو.
* في حال طباعة الحرف (L) فذلك يعني ان المرحلة الأولى من عملية الإقلاع قد تمت بنجاح ولكن المرحلة الثانية فشلت وعادة ما يعني ذلك حدوث خطأ في الأجزاء الصلبة للنظام أو وجود خطأ في المعلمات المخصصة للقرص الصلب في البيوس ولكن ليس بالضرورة ان يكون هذا السبب.
* في حال طباعة الأحرف (LI) فذلك يعني ان المرحلة الأولى من عملية الإقلاع قد تمت بنجاح وقامت بتحميل - Load المرحلة الثانية من عملية الإقلاع ولكنها -أي المرحلة الأولى- فشلت في تنفيذ - Execute المرحلة الثانية وعادة ما يحدث ذلك لوجود معلمات خاطئة عن القرص الصلب في البيوس
* في حال طباعة الأحرف (LIL) فذلك يعني ان المرحلة الثانية من عملية الإقلاع قد تم تحميلها - Loaded ولكنها لا تستطيع القيام بتحميل جدول التوصيف (descriptor table) من ملف الربط (map file) وعادة ما يعني ذلك حدوث خطأ في الأجزاء الصلبة للنظام أو وجود خطأ في المعلمات المخصصة للقرص الصلب في البيوس ولكن ليس بالضرورة ان يكون هذا السبب.
* في حال طباعة الأحرف (?LIL) فذلك يعني ان المرحلة الثانية من عملية الإقلاع قد تم تحميلها - Loaded في عنوان ذاكرة رئيسي خاطئ وعادة ما يعني ذلك وجود معلمات خاطئة عن القرص الصلب في البيوس
* في حال طباعة الأحرف (-LIL) ذلك يعني ان جدول التوصيف (descriptor table) غير سليم.
* في حال طباعة الأحرف (LILO) فذلك يعني ان جميع أجزاء مدير الإقلاع تم تحميلها بنجاح.

## رموز الأخطاء

من الامثلة على رموز الأخطاء التي قد يظهرها ليلو: (L 01 01 01, L 07 07 07 الخ...)، نسرد تاليا قائمة بأخطاء ليلو مربوطة برموزها الرقمية:
| رمز الخطأ | اسم الخطأ | وصف الخطأ |
| 0x00 | خطأ داخلي (Internal Error) | يتم اصدار هذا الخطأ عن طريق برمجية قراءة القطاع الموجودة كجزء من برمجية الإقلاع ليلو وهذا في حالة وجود تضارب داخلي وهذا بدوره يمكن أن يحدث نتيجة وجود تلف في بعض الملفات المتعلقة بليلو ولذلك ننصح باعادة بناء ملف الربط (map file)، ويمكن أيضا حدوث هذا الخطأ في حالة محاولة الولوج إلى قطاعات تتجاوز الترميز رقم 1024 وذلك عند القيام بانتقاء الخيار (LINEAR). |
| 0x01 | أمر غير مسموح بتنفيذه (Illegal Command) | هذا الخطأ غير وارد الحدوث! (ولا حتى أي نوع من الأخطاء يجب أن يحدث!) ولكن ان حدث هذا الخطأ فهناك احتمالية ان يكون ذلك مؤشر على محاولة للولوج إلى قرص صلب غير مدعوم عن طريق البيوس والبتالي تأكد من ان البيوس تستطيع رؤية هذا القرص الصلب (و تأكد أيضا من تفاصيل البيوس لديك!). |
| 0x02 | علامة عنوانية غير موجودة (Address mark not found) | عادة ما يعني هذا وجود مشكلة داخلية، ننصحك في هذه الحالة بإعادة محاولة الإقلاع عدة مرات. |
| 0x03 | قرص محمي من الكتابة (Write-protected disk) | يحصل ذلك فقط في حالات الحاجة إلى الكتابة على القرص الصلب. |
| 0x04 | القطاع غير موجود (Sector not found) | يشير هذا الخطأ عادة إلى عدم حصول تطابق هندسي في قطاعات القرص الصلب، ان كنت تقوم بالإقلاع من منصة (سكزي SCSI) أو من (مقبس الملحقات التقني المتقدم IDE Disk) فعليك التأكد من ان ليلو حصل على معلومات القطاعات الهندسية السليمة من نواة نظام التشغيل وتأكد أيضا من ان تعريف القطاع الهندسي في ليلو يطابق تعريف القرص الصلب، قد تساعدك إزالة الخيار (COMPACT) و/أو اضافة الخيارات (LBA32) و (LINEAR). |
| 0x06 | تغيير المسار النشط (Change line active) | يعتبر هذا خطأ عابر أو عارض، كل ما تستطيع القيام به هو اعادة الإقلاع مرة أخرى لحل المشكلة. |
| 0x07 | تهيئة خاطئة (Invalid initialization) | يشير هذا الخطأ إلى فشل البيوس في تهيئة المتحكم بالقرص الصلب، راجع معلمات البيوس لديك للتأكد من التهيئة السليمة للبيوس (كما يمكنك استخدام ما يعرف ب قرص الإنقاذ واعادة تشغيل ليلو). |
| 0x08 | تجاوز تنفيذ DMA (DMA overrun) | هذا الخطأ يجب أن لا يحصل وان حصل قم باعادة تشغيل ليلو |
| 0x09 | محاولة تجاوز DMA حدود ال 64 كيلوبايت (DMA attempt across 64k boundary) | هذا الخطأ لا يجب أن يحدث ولكنه قد يكون إشارة إلى عدم تطابق هندسي في قطاعات القرص الصلب، ننصحك ببحث الحلول الواردة في الخطأ المرموز له ب (0x04). |
| 0x0C | قرص غير مهيئ (Invalid media) | لا يجب حصول هذا الخطأ، قم بالاعادة مرة أخرى. |
| 0x10 | خطأ CRC (CRC error) | يوجد خطأ ما في القرص الصلب، حاول القيام بالإقلاع عدة مرات. |
| 0x11 | تصحيح ECC ناجح (ECC correction successful) | حدوث خطأ في القراءة ولكن تم تصحيحه، لا يستطيع ليلو تمييز هذه الحالة ولذلك يقوم بإيقاف عملية الإقلاع والتحميل، قم بإعادة الإقلاع مرة أخرى. |
| 0x20 | خطأ في المتحكمات (Controller error) | لا يوجد وصف لهذا الخطأ ولكن التعليق الوحيد الذي نملكه هو ان هذا الخطأ ما كان يجب حدوثه أساسا |
| 0x40 | خطأ في الولوج (Seek failure) | عادة ما تكون هذه مشكلة في القرص الصلب، حاول اعادة الإقلاع من جديد. |
| 0x80 | انقضاء مهلة الانتظار للقرص (Disk timeout) | هذا الخطأ عادة ما يعني ان القرص غير جاهز للإقلاع وذلك لعدة أسباب محتملة منها ان القرص غير صالح أو ان الرأس المدبب لعملية القراءة والكتابة غير سليمو ان كنت تقوم بمحاولة الإقلاع من قرص مرن فقد تكون نسيت اغلاق باب الجهاز وان لم تكن هذه الأسباب فعليك القيام باعادة الإقلاع مرة أخرى. |
| 0x99 | المرحلة الثانية من عملية الإقلاع غير سليمة (Invalid Second Stage) | قم بالرجوع إلى الخطأ المرموز له ب (0x04) لمحاولة حل المشكلة. |
| 0x9A | ليلو لا يستطيع العثور على المرحلة الثانية للإقلاع (Can't Find Second Stage) | تأكد من وجود أداة الإقلاع السليمة، على سبيل المثال (boot=/dev/hda1) بينما يجب أن تكون على سجل الإقلاع الرئيسي وتأكد أيضا من عدم وجود خطأ كتابي (boot=/dev/<<NO TYPO IN HERE>>). |
| 0xBB | خطأ في البيوس (BIOS error) | الرجاء مراجعة الخطوات الواردة في الخطأ المرموز له ب (0x04). |