مرحبا بكم في ... اه ... BrightSystem؟
إنه نظام التشغيل x86_64 مكتوب بالكامل من نقطة الصفر (بدون تبعيات) ، مصنوعة من قبل لك حقًا.
تمت كتابة هذا المشروع دون مساعدة من Github Codestealer أو Openai's ChatGpThief أو غيرها من الخوارزميات التنبؤية مماثلة لسرقة المحتوى.
TLDR: الكارثة المتوسطة والثانية! هزار!
_old لديه نواة وظيفية تستخدم المكتبات الرائعة من Phil-OPP وعدد قليل من الآخرين. لم يتم توثيق الرمز جيدًا ، لكنه ليس معقدًا للغاية ، لذلك يجب أن يكون قابلاً للقراءة إلى حد ما. تم صنعه لمنتدى رائع لتطوير نظام التشغيل في مدرستي الثانوية.
كل شيء آخر هو إعادة كتابة التبعية WIP الخاصة بي. في الوقت الحالي ، يحتوي على محمولة التمهيد BIOS التي يمكنها إدخال وضع 64 بت. والخطوة التالية هي تنفيذ محلل ELF ، ثم محمل ELF ، ثم تحميل kernel (والذي سيكون ببساطة ملف elf).
تم توثيق الإصدار الجديد من BS بشكل جيد للغاية ، بما في ذلك الموارد لمزيد من البحث. جزء من هدفي هو جعل هذا الرمز التجريبي الممتاز لمبرمجي المستقبل للرجوع والتعلم من.
كل مجلد لديه readme ونأمل أن يكون محسوسًا ذاتيًا ، ولكن إليك جدول محتويات تقريبي لهذا الريبو:
boot : جميع الصناديق في BS 'Bootloader.kernel : bs 'kernel (فارغة حاليًا حتى يتم كتابة محمل قزم).lib : مكتبات مساعد تستخدمها BS. يحتوي هذا على أدوات بناء ، و Frieren (محمل WIP ELF) ، ومكتبة مشتركة (والتي سيتم تقسيمها قريبًا إلى صناديق متعددة). تحتوي هذه الصناديق على مكتبات خاصة بها لأنها تستخدمها صناديق متعددة في BS (على سبيل المثال ، يقوم جهاز تحميل التشغيل بتحميل ELF ، لكن نظام التشغيل النهائي سيكون قادرًا على ذلك أيضًا).qemu : قفص يبني BS في قرص نهائي ويطلقه في QEMU. بالنسبة للنسخة القديمة الأكثر وظيفية من BS مع التبعيات ، قم بتشغيل cargo r في المجلد _old .
يستخدم الإصدار الجديد نظام البناء المخصص الخاص بي ، Bargo ، لذلك ستحتاج إلى تثبيت ذلك أولاً (الخوف لا - Bargo لديه فقط تبعية واحدة ، محلل تومل الخالي من التبعية ، وينبغي أن يتجمع في ثوان). يعد Bargo نوعًا من الغلاف حول البضائع ، بحيث يمكنك استخدامه بنفس الطريقة تقريبًا - bargo b للبناء ، bargo r للتشغيل ، -r لوضع الإصدار ، إلخ.
إذا كنت تتساءل لماذا تستخدم BS BARGO بدلاً من البضائع ، فذلك لأن البضائع لا تحتوي على جميع الميزات التي أحتاجها. أحتاج إلى نصوص ما بعد البناء ، والقدرة على استخدام build-std لأهداف متعددة ، نظرًا لأن جهاز تحميل التشغيل لديه هدف مختلف عن Kernel و OS. حاولت لساعات ، لكنني لم أستطع التوصل إلى طريقة عاقلة لتنفيذ هذا في شحن الفانيليا.
يعمل كلا الإصدارين في QEMU ، لذا تأكد من تثبيته أولاً. إذا كنت ترغب في إنشاءه وتشغيله يدويًا ، فإن الأمر الذي يتم استخدامه تحت الغطاء يتلخص بشكل أساسي في هذا: cargo b; qemu-system-x86_64 -drive format=raw,file=target/bs.bin,index=0 . بالنسبة للإصدار القديم ، ستحتاج إلى تحميل الملف _old/disk.bin بدلاً من target/bs.bin .