Minios هي نواة نظام تشغيل مصغرة لمتعلمي تطوير نظام التشغيل والتي يمكن أن تعمل على وحدة المعالجة المركزية لعمارة X86 32 بت. تركز Minios على تعلم المفاهيم الأساسية والمبادئ الأساسية والمبادئ الأساسية في تطوير نظام التشغيل ، وتنفيذ مختلف الأنظمة الفرعية الأساسية أو الوحدات النمطية في نظام التشغيل استنادًا إلى الأجهزة العامة.
تعد نواة نظام التشغيل الشائعة مثل Linux و FreeBSD جيدة ، لكنها ليست مناسبة للمبتدئين في تطوير kernel. من ناحية ، تطورت نواة نظام التشغيل هذه لسنوات عديدة وتراكمت كمية هائلة من التعليمات البرمجية (الإصدار المبكر من Linux kernel v2.6.12 الذي تم إصداره في عام 2005 كان لديه بالفعل حوالي 4 ملايين سطر من الكود). من ناحية أخرى ، نظرًا لاحتياجات التطبيقات في بيئات الإنتاج ، تحتوي رموز النواة هذه على عدد كبير من التفاصيل غير المرتبطة بالمبادئ الأساسية لنظام التشغيل ، وهو أمر صعب على المبتدئين لفهم النقاط الرئيسية. لذلك ، بدءًا من نواة نظام التشغيل البسيط مع كمية صغيرة من التعليمات البرمجية ، باستخدام وقت قصير للتعرف على المفاهيم الأساسية والمبادئ الأساسية والمبادئ الأساسية لحقل تطوير Kernel لنظام التشغيل ، وإتقان هذه المعرفة الأساسية إلى مستوى معين ، ثم تكريس نفسك لتطوير نواة عملية مثل Linux ، استراتيجية واقعية ومتوسطة نسبيًا. حتى إذا لم تكن تخطط للانخراط في تطوير kernel ، فإن تعلم بعض المعرفة الأساسية حول نظام التشغيل من خلال نواة سهلة البدء سيساعدك على كتابة تطبيقات أكثر قوة وأداء.
تم تطوير Minios بشكل أساسي على أساس لغة C ولغة التجميع x86 ، وتشمل أدوات التطوير المستخدمة:
من بينها ، BinuTils هي مجموعة من الأدوات لتشغيل الملفات الثنائية ، بما في ذلك أدوات لإنشاء مكتبات ثابتة ، وأدوات لشرائط لإزالة جداول الرموز من الملفات الثنائية لتقليل حجم الملف ، إلخ.
يتم تشغيل Minios حاليًا من القرص المرن ، وعملية بدء التشغيل هي:
نظرًا لأن Minios عبارة عن نواة نظام تشغيل للمتعلمين ، فهي تعمل حاليًا بشكل أساسي في الأجهزة الافتراضية ، مع الأجهزة الافتراضية الاختيارية بما في ذلك Bochs و QEMU.
قم بتشغيل Minios في Bochs
sudo apt-get install bochs تحت نظام Ubuntu لتثبيته. يمكنك تنزيل الكود المصدري لـ Bochs أولاً ثم تجميعه وتثبيته. يمكنك تحديد الإصدار المطلوب من bochs عند التثبيت من خلال رمز المصدر.tar zxvf misc/80m.img.tar.gz . ، وإزالة ضغط صورة القرص الثابت من حزمة ضغط صورة القرص الثابت.bochs في الدليل الحالي لبدء الجهاز الظاهري bochs. سيقوم Bochs أولاً بقراءة معلومات التكوين من ملف BochSRC ، ثم تأكيد معلومات مطالبة التشغيل المقدمة من Bochs للسماح للمينيوز بالتشغيل في Bochs.قم بتشغيل Minios في Qemu
sudo apt-get install qemu-system-x86 ضمن نظام Ubuntu للتثبيت ، أو يمكنك تنزيل الكود المصدري لـ QEMU للتجميع والتثبيت.tar zxvf misc/80m.img.tar.gz . ، وإزالة ضغط صورة القرص الثابت من حزمة ضغط صورة القرص الثابت../launch-qemu.sh في الدليل الحالي لبدء الجهاز الظاهري QEMU ، ثم ستبدأ Minios مباشرة في QEMU. لا يستخدم جهاز QEMU الظاهري ملف تكوين مثل BochSRC. يتم تحديد معلومات التكوين من خلال خيارات سطر الأوامر. يحتوي البرنامج النصي على QEMU.SH على خيارات التكوين المستخدمة حاليًا. يمكن تصحيح المصغرة على مستوى التجميع باستخدام وظيفة تصحيح الأخطاء المدرجة في BOCHS أو QEMU ، ولكن طريقة التصحيح هذه ليست مريحة للغاية للاستخدام لأن برنامج التجميع طويل ويصعب قراءته. لحسن الحظ ، يتمتع كل من Bochs و QEMU بدعم GDB مدمج. من خلال الاندماج مع وظيفة تصحيح الأخطاء عن بُعد التي توفرها GDB ، يمكن تصحيح المصغرة في رمز المصدر C.
تصحيح التصحيح المصغر مع bochs+gdb
./launch-bochs-gdb.sh في دليل مصدر Minios. سيتم تشغيل البرنامج النصي Running Shell GDB في نافذة طرفية جديدة وتحميل نسخة التصحيح من kernel binary.target remote :2345 في واجهة أمر GDB لإنشاء اتصال مع Bochs.تصحيح التصحيح المصغر مع QEMU+GDB
./launch-bochs-gdb.sh في دليل مصدر Minios. سيتم تشغيل البرنامج النصي Running Shell GDB في نافذة طرفية جديدة وتحميل نسخة التصحيح من kernel binary.target remote :1234 في واجهة أمر GDB لإنشاء اتصال مع QEMU. # 编译 MiniOS 内核和用户程序 init,并写入到软盘镜像 a.img 中
make image
# 清除所有 .o 目标文件
make clean
# 清除所有 .o 目标文件和可执行文件
make realclean