استكمالا للسلسلة
كيف يمكننى عمل ملف Kernel أستطيع تحميله ؟
تستطيع كتابته بطرق عديدة تستطيع اخبار GCC أن يقوم باخراج ملف ثنائى بدون relocations او ملفات Headers أو اى معلومات اخرى سأفترض انا ان هذا ما سوف تفعله
مثال
LD my_kernel.o -o kernel.bin -oformat binary -Ttext 0x100000
GCC -c my_kernel.c
نأتى الان الى شرح التعليمات السابقة
-c
تخبر GCC أنه عليه ترجمة الملف الى ملف Object ولا يقوم بعملية الربط (Link)
أما
-oformat binary
فتخبر الGCC بأن يقوم بعملية Link للمخرج الى ملف بدون Headers أو relocations بحيث يكون يكون Plain فيكون الملف مجرد صورة ثنائية مباشرة
-Ttext 0x100000
هنا نقوم لاخبار الLinker انك تريد عنوان نصك (Code segment) أن يكون معلما بالذاكرة 1MB
تحميل صورة الملف الثنائى للكيرنل الخاص بك الى الOffest المناسب
هل هناك طريقة اسهل لتحميل النواة الخاصة بى ؟
نعم هناك طريقة اسهل لتحميل النواة الخاصة بك وهذا باستخدام boot loader جاهز
وافضل الboot loaders هو GRUB وهو سو يقوم بالمهمة الصعبة لتحميل النواة الحاصة بك
لم تعد بحاجة إلى القلق بشأن محاولة لتمكين السطر A20، وإيجاد نواة ملف على القرص وكذلك نظام الملفات الذى ستكون عليه النواة
انظمة الاقلاع / قوائم الاقلاع:
Bootloaders وقوائم الاقلاع هما برنامجان مختلفان
الفرق بين الاثنين هو بسيط قائمة التمهيد يسمح لك لتحديد نظام التشغيل الذي تريد التمهيد ولكن لا يتم تحميل أي جزء من نظام التشغيل التي في الذاكرة.
Boot loader يسمح لك لتحديد نظام التشغيل الذي تريد التحميل منه وتحميل أجزاء منه في الذاكرة
فمثلا System Commander هى من boot menu لكن GRUB هو Boot Loader
باستخدام Boot Loader فوق boot menu
يمكنك ان تخفف الكثير من القلق والتوتر فى المراحل الاولى بالنسبة لمبرمجى انظمة التشغيل الهاويين عندما يقومون بتحميل النواة الخاصة بهم للمرة الاولى بعد كتابتها
فال boot loader قوم بتحميل النواة الخاصة بك بغض النظر عن نظام الملفات
bootloaders الجيدة تعترف ببعض تنسيقات الملفات القابلة للتنفيذ. اما اذا تجاهلت ولم ترد استخدام boot loader جاهز ينبغى عليك كتابة boot loader خاص بك بالاعتماد على نظام ملفات ليقوم بقراءة وتحميل النواة الخاصة بك
نهاية الفصل الثانى
المصادر
OS-FAQS
OS Dev Forums