أول نظام التشغيل الخاص بي يغذيه الكافيين.
هذا مشروع تعليمي ، سنرى إلى أي مدى تسير الأمور. عندما أقول "تغذي الكافيين" ، أقصد حرفيًا الكافيين ، وليس بعض إطار بناء نظام التشغيل الجديد. ولكن هذا سيكون اسمًا رائعًا لإطار بناء نظام التشغيل.
أقوم بتشغيل هذا المشروع في Ubuntu18.04 LTS. أنا أستخدم بناءًا عن بُعد باستخدام Visual Studio على جهاز الكمبيوتر ، ولكن يمكنك فقط استخدام Makefile مباشرة على جهاز Ubuntu. يعمل نظام التشغيل الخاص بي حاليًا في VM في Ubuntu. لن أوصي بتشغيل هذا "على المعادن" لأن الأخطاء يمكن أن تلوّب الكمبيوتر عن طريق تغيير بيانات BioNtaly و ROM. فيما يلي الحزم التي قمت بتثبيتها من أجل الحصول على هذا المشروع:
سيقوم Makefile بإنتاج ملف ISO في نفس الموقع مع نفس الاسم في كل مرة يتم تشغيلها. في VirtualBox ، قمت بإنشاء VM يدعى الكافيينوس مع ذاكرة الوصول العشوائي 512 ميجابايت ، ولم يتم فحص VDK/VMDK ومع وسائل الإعلام البصرية في ملف ISO ومربع "Live CD".
حتى مع ملف ISO سيتغير مع كل بناء ، سيذهب VM دائمًا إلى نفس الموقع للعثور على ISO والتمهيد منه.
الآن لديّ kernal قابلة للتمهيد. لا يفعل شيئًا سوى طباعة اسم نظام التشغيل. لقد تابعت حتى الآن Totorials ، لكن قلة قليلة تغطي أي شيء الماضي هذه النقطة. لا شيء وجدت استخدام C ++ ، فقط C.
أنا أبحث عن الجزء التالي من kernel الذي يجب أن أبنيه بعد ذلك. تخميني هو الذاكرة الديناميكية. حاليًا أحقق الإخراج باستخدام عنوان VGA لكتابة النص على الشاشة. لم أحسب المدخلات بعد. كما قلت ، لا تتخطى البرامج التعليمية نظام التشغيل "Hello World" القابل للتمهيد.
لقد اكتشفت ذاكرة الوصول العشوائي وحصلت على القيم التي تصنع Sence (Low MEM ~ = 640kB ، Low+HI ~ = 512MB) ، لذلك أنا سعيد حقًا. لقد تمكنت أيضًا من الحصول على سلسلة من محمل التمهيد عن طريق إلقاء UINT32_T في مجموعة Const char* وطباعة في المؤشر. لقد كنت أستخدم مواصفات multiboot.h من موقع gnu.org. يحتوي ملف multiboot.h على إعلانات emmpty struc و tampedef التي تتطابق مع كتل المعلومات التي يرسلها محمل التمهيد (GRUB2.02) عبر multiboot_info_t*. من خلال معرفة الكتل ، يمكنني إلقاء المؤشرات في البيانات التي أحتاجها من محمل التمهيد.