OS القمر
Moon OS هو kernel micro-kernel يستهدف بنية X86_64 و ARMV6 ، تهدف إلى أن تكون مثل POSIX في المستقبل.

لقطات الشاشة:
bootsplash:
الحذاء المطول:
ذعر النواة: 
سمات
- دعم بنيات متعددة:
- X86_64 PCS مع دعم ACPI
- 4 مستوى الترحيل
- Stacktrace/الرمز الخلفي
- مخصص بصيص مخصصة للبلاط.
- مكالمات النظام عبر
syscall (لا يوجد دعم لمكالمات النظام القائم على int )
- Nintendo 3DS (ARMV6)
- سائق I2C
- bootrom ivt
- عرض سلاسل على الشاشة
الميزات المشتركة (كلا البنى تدعم هذا):
- أوبسان
- حجج التمهيد قابلة للتشكيل (هادئة/مطوّلة)
- محمل قزم
- الجدولة البدائية (سيتم تحسين العمل الإضافي ، في الوقت الحالي ، يركز My على الحصول على كل شيء وتشغيله (IPC ، الخوادم ، libc ، إلخ)))
الميزات المستقبلية:
- المواضيع
- كاسان
- ACPI
- smbios
- تعدد المهام
- العديد من برامج تشغيل الأجهزة بما في ذلك على سبيل المثال لا الحصر:
- بطاقات الشبكة
- سائقي التخزين
- GPU's
- وأكثر من ذلك بكثير
- libc لألعاب المستخدم
قائمة القريبة من المستقبل
- استفد أفضل من APIC (يتم استخدامه حاليًا في المؤقت فقط)
- نظام الذاكرة الافتراضية
- مدير ذاكرة فعلي جديد؟ (غير متأكد)
هذا يعمل حاليًا على:
- جدولة
- IPC
- النقل MLIBC
- initrd
- في مكتبة إلغاء الضغط في kernel لإلغاء ضغط initrd
- برنامج (MACHENT MACHENT) الأصلي لإنشاء وإضافة ملفات (للحفاظ على وحدات لائقة) إلى initrd.
- تحميل وتقديم صورة من initrd (TGA ، BMP)
- إضافات جديدة لجعل منفذ ARMV6 أكثر قابلية للاستخدام (برنامج تشغيل بطاقة SD ، GPU ، VBLANK)
تجول في الدليل:
- LIBS/ - المرافق لا ترتبط بشكل صارم بالنواة (جدولة ، مدير الذاكرة ، إلخ) ، ولكن مطلوب منها للعمل.
- kernel/ - رمز مصدر النواة
- التمهيد/ - كل ما يحتاجه القمر من أجل التمهيد
- Service/-خوادم Micro-kernel الخاصة + libc
- UsperSpace/-ملفات تحميل التشغيل ، والتكوينات ، والوحدات النمطية ، وما إلى ذلك. تتم إضافة العديد من الملفات تلقائيًا في وقت الإنشاء.
تثبيت
المبنى: (على افتراض أنك تستخدم توزيعة قائمة على دبيان)
تثبيت الأدوات المطلوبة:
- تحديث Sudo APT
- Sudo APT تثبيت GCC nasm qemu-system-x86 libfuse-dev ruby ruby-rubygems
- Sudo GEM تثبيت ceedling # اختبار
بناء نواة
-
make all - بناء النواة -
make run - قم بتشغيل kernel في QEMU وقم بإنشائه إذا لزم الأمر (x86_64 فقط) -
make kvm - قم بتشغيل kernel في QEMU مع KVM وقم بإنشائها إذا لزم الأمر (x86_64 فقط) - خيارات سطر الأوامر لـ
kvm run :-
modern=yes - محاكاة الميزات الحديثة (x86_64 فقط)
تكوين الهندسة المعمارية:
- ما عليك سوى تحرير متغيرين في
Make.conf :-
ARCH BOARD . يتم توثيق القيم المسموح بها في تعليق.
رحلتي: (مصدر إلهام للوافدين الجدد)
لطالما أردت إنشاء نظام تشغيل ، لذلك قررت ذات يوم بناء واحد. تبين أنه الكثير من العمل ، وفي ذلك الوقت غمرني تمامًا إلى النقطة التي أخذت فيها فترات راحة طويلة (لعدة أشهر) لأن المعلومات كانت شحيحة للغاية ، وما هي المعلومات القليلة التي تم قراءتها.
لقد كتبت حوالي 4 "نواة" خلال تجربة التعلم في تطوير نظام التشغيل ، وفي كل مرة بدأت من جديد لأنني كنت غارقًا جدًا- لم يتخطى أي منها GDT:/ (Heck ، بعضها فقط من محولات التمهيد التي تسمى إدخال kernel وحلقتها)
إذا كنت مبتدئًا يبحث عن فهم ما يفعله هذا الرمز وكيف يمكنك كتابة kernel الخاصة بك بمعلومات محدثة ، فيرجى الانضمام إلى خادم Discord OSDEV (مرتبط في Osdev Wiki في الأسفل) ولا تستسلم عندما يصبح الأمر صعبًا في البداية.
لقد بدأت في تطوير نواة منذ حوالي 8 أشهر في وقت كتابة هذا التقرير (مع عدة فترات من الفواصل التي استمرت شهرًا) ، وما زلت أمتلك أشياء كثيرة لأتعلمها ، ومع ذلك فإن try harder في مساعدتي في الحصول على النضالات وكتابة نواة لم يكن لديّ لسرقة أو نسخ الرمز من البرامج التعليمية أو المشاريع الأخرى خارج المعرفة.
آمل أن يكون هذا قد ألهمك لاستخدام هذه العقلية عندما تبدو الأمور صعبة للغاية.
حظا سعيدا ~ v01d (تيم).
شكر خاص
- شكرًا على مواقع الويب مثل Lowlevel.eu أو Osdev Wiki ، ولكن أيضًا بعض مطوري OS رائع ومفيدون حقًا على GitHub و Discord.
الانتهاء من اللمس (الموارد التي أستخدمها)
- https://www.cs.cmu.edu/~ralf/files.html
- https://ethv.net/workshops/osdev/notes/notes-3.html
- https://osdev.wiki (عاريات ولكن ما يصل إلى أوسديف ويكي)
- https://wiki.osdev.org