حاولت صنع نظام التشغيل في التجميع. فشلت. كان الرمز قشريًا. هذه هي محاولتي الثانية على ما أعتقد.
أنا أستخدم محمل التمهيد Limine مع بروتوكول Stivale.
نظرًا لأن هذا الريبو يستخدم Limine كوحدة فرعية ، فسيتعين عليك استنساخ هذا الريبو بشكل متكرر باستخدام:
git clone --recursive https://github.com/soumitradev/BruhOS.git
ينصح بشدة إعداد برنامج التحويل البرمجي العرضي إذا كنت ترغب في تجميع هذا المشروع. يتم تضمين ملف toolchain.sh الأساسي في جذر هذا الريبو الذي يقوم بتثبيت برنامج التحويل البرمجي العرضي لمنصة X86_64 لملفات ELF.
بعد تثبيت برنامج التحويل البرمجي المتقاطع ، يمكنك تشغيل make run تشغيل نظام التشغيل في QEMU.
اعتبارًا من الآن ، تتوفر الأوامر التالية:
make all : اجعل ملف .hdd لنظام التشغيل. هذا كل شيء.make disk : اجعل ملف .hdd لنظام التشغيل. هذا كل شيء.make run : قم بعمل ملف .hdd لنظام التشغيل وقم بتشغيله في QEMU.make log : قم بعمل ملف .hdd لنظام التشغيل ، وقم بتشغيله ، ودع QEMU تنشئ سجلات.make logs : قم بعمل ملف .hdd لنظام التشغيل ، وقم بتشغيله ، ودع QEMU تقوم بإنشاء سجلات.make debug : قم بعمل ملف .hdd لنظام التشغيل ، وقم بتشغيله ، وإرفاقه بـ GDB للتصحيح.make clean : قم بتنظيف دليل العمل وإزالة جميع القطع الأثرية. سيقوم تشغيل البرنامج النصي toolchain.sh ~/.local/bin/cross_compiler/x86_64/ ويشمل GCC و GDB و BinuTils. ثنائيات المترجمات المتقاطعة لها بادئة x86-64-elf- . على سبيل المثال ، لتشغيل gcc ، سيتعين عليك تشغيل ~/.local/bin/cross_compiler/x86_64/bin/x86-64-elf-gcc . لاحظ كيف يتم إعداد البادئة إلى الثنائي الذي نريد تشغيله.
ملاحظة: لجعل هذه العملية أسرع ، سيتعين عليك تعيين عدد مؤشرات الترابط كمتغير ، والذي عادة ما يكون أكثر من عدد مؤشرات الترابط التي يمتلكها جهازك. يحتوي الجهاز الخاص بي على 8 مؤشرات ترابط ، لذلك قمت بتعيين متغير THREADS في برنامج toolchain.sh script إلى 9. يرجى التحقق من عدد مؤشرات الترابط التي لديك ، وتغيير هذا المتغير في البرنامج النصي toolchain.sh وفقًا لذلك.
اعتبارًا من كتابة هذا النحو ، فإن أحدث إصدارات GCC و GDB و BinuTils هي 10.2.0 و 9.2 و 2.35 على التوالي. إذا كنت تريد إصدارًا مختلفًا ، استبدل متغيرات BINUTILSVERSION و GCCVERSION و GDBVERSION في نفس البرنامج toolchain.sh .
ملاحظة: لا تقم بتشغيل هذا البرنامج النصي باعتباره superuser. سيتطلب تشغيل البرنامج النصي اتصالًا مستقرًا للإنترنت وفنجانًا من القهوة لأنه يستغرق بعض الوقت ؛)
Limine هو أكثر محمولة التمهيد الملحمية الموجودة على الإطلاق.
كانت Qword و Rock و Dripos مفيدة للغاية. هذا الرمز هو إلى حد كبير مجموعة من الكود الخاص بهم. الكود الخاص بهم مكتوبة بشكل جيد وسهل الفهم وهو مكان رائع بشكل عام لبدء تعلم OSDEV.
يعد خادم Discord OSDEV مكانًا رائعًا للتعلم وطرح الأسئلة ، وهو مجتمع رائع بشكل عام.
لقطات الشاشة لأن الأمر لا يستحق الوقت الذي يقضيه في الحصول على مخطط الأدوات لاختبار نواة نصف مقلوبة.


تستخدم جميع الملفات المعيار C ++ 17 ، ولا تستخدم أي مكتبة قياسية باستثناء libgcc (واضح لتطوير OS/kernel). يجب تنظيف جميع ملفات الكائنات وملفات إنشاء kernel قبل الالتزام باستخدام make clean أو حذف الملفات يدويًا. يتضمن Gitignore بعض المرشحات الأساسية ، ولكن دائمًا تحقق من أنك لا ترتكب أي مصنوعات مصنوعة من البناء.
جميع الملفات باستثناء Makefile مسافة بادئة مع مسافة بادئة مع مسافة 2. نعم ، أحب 4 مسافات ، ولكن لدي بعض الخبرة السابقة ، فإن هذا يمكن أن يولد أشجارًا ضخمة مثل الهياكل ، ويبدو أنظف مع مسافة بادئة للمساحة. يتطلب Makefile المسافة البادئة بحكم التعريف. تنسيقه سيؤدي إلى كسره.
تأكد من أنك تستخدم إرشادات تنسيق Google . يمكن تعيين هذا في VS Code.
لا تدفع أي ارتباطات دون اختبار والتأكد من عملها.
إذا كانت الميزات الأساسية تعمل كما هو مخصص لاستخدامها ، فدفع ارتكابك. لا أتوقع منك أن تتخلى عن كل عيب أمني وتصحيحه قبل الدفع.
قد أضيف نصًا مسبقًا للتحقق في وقت لاحق يتأكد من أن الكود الخاص بك يتبع هذه المعايير.