نظام تشغيل صغير 32 بت X86 PC يعتمد على نواة متجانسة مع بعض الميزات التي تشبه Unix ، مكتوبة في مجموعة فرعية من C ++.
يرجى ملاحظة: لا يزال هذا الوثقة الوصفية عملًا مستمرًا :-)
نظام تشغيل سطح مكتب صغير ، مع ميزات تشبه UNIX ، مكتوبة في مجموعة فرعية C ++ يمكن فهمها لطلاب TI في السنة الأولى في Hogeschool Utrecht ، بحيث يمكن استخدامها في سياق تعليمي.
حيثما أمكن ، يتم التضحية بالأداء والميزات لتقليل التعقيد وزيادة قابلية القراءة. يجب أن يساعد هذا البرنامج أن يكون أكثر فهمًا للاستخدام في سياق تعليمي. ومع ذلك ، يجب تنفيذ الموضوعات المهمة من Courses OS في Hogeschool Utrecht.
على الرغم من أنه يجب أن يتم تشغيله بشكل جيد على الأجهزة الحقيقية ، إلا أن Rikaios تم تطويره مع وضع محاكي أو جهاز افتراضي في الاعتبار - الأجهزة المدعومة محدودة عن قصد من أجل البساطة.
إخلاء مسؤولية إلزامية: قد يذوب نظام التشغيل اللوحة الأم الخاصة بك ويأكل ماوس حيوانك الأليف عند تشغيله على أجهزة حقيقية ، ولا توجد ضمانات ، Yada Yada ، يرجى قراءة إخلاء المسئولية في ملف الترخيص قبل تشغيله على جهاز الكمبيوتر العائلي.
انظر دليل ./Aux. لا تتوقع أي شيء مبهرج - إنه حاليًا كل التقاطات الطرفية التسلسلية!
تم تطوير نظام التشغيل مع مجموعة الميزات الحالية في فترة 6 أشهر تقريبًا من فبراير إلى يوليو 2019.
Rikaios ليس بعد بديل Linux الكامل ؛-)
هناك بعض الميزات التي تحتاج إلى عمل أو يتم عملها حاليًا (انظر أيضًا القسم المساهم):
grep -ERn 'TODO|FIXME|XXX' src/kernel/src src/kernel/include src/user/لاحظ أن الهدف من Rikaios هو البقاء صغيرًا: من المحتمل ألا يتم النظر في مكدس الشبكة أو سائق USB للتنفيذ.
تحتاج إلى تثبيت هذا البرنامج (على مضيف Linux-ish) لإنشاء وتشغيل Rikaios:
يجب أن تكون أرقام الإصدار حديثة ، خاصة بالنسبة لـ Clang و LLVM و LLD. يتم توفير Dockerfile Linux Arch (بفضل peikos) التي تتضمن إصدارات متوافقة من التبعيات المذكورة أعلاه.
يمكنك استخدام GCC بدلاً من Clang/LLVM إذا كنت ترغب في ذلك ، شريطة أن يكون لديك Toolchain GCC لـ i686-elf. راجع src/kernel/Makefile للحصول على تفاصيل حول كيفية تبديل أدوات.
| دليل | وصف |
|---|---|
/src/boot | Bootloader (Bootsector و Stage2) |
/src/boot/utils | تثبيت تحميل التشغيل |
/src/kernel | رمز النواة |
/src/kernel/include | رؤوس النواة المعرضة لمستخدم المستخدم |
/src/kernel/include/os-std | مكتبة OS القياسية (الرياضيات ، الحاويات ، إلخ) |
/src/user | برنامج userland |
/src/user/libsys | مكتبة نظام المستخدم C ++ |
/src/disk | (FAT32) نظام الملفات المتاح لنظام التشغيل |
| Makefile | وصف |
/src/Makefile | يبني كل شيء ، ويقوم بإنشاء أقراص التمهيد ويدير المحاكيات |
/src/boot/Makefile | يبني محول التمهيد والمثبت |
/src/kernel/Makefile | يبني نواة |
/src/user/Makefile | يبني userland |
يتضمن كل makefile أعلاه (إن وجدت) ملف Makefile.local في نفس الدليل. يتيح لك ذلك تجاوز أي أسماء ومسارات قابلة للتنفيذ من أدوات ، وإضافة أهداف إضافية اختياريًا.
لا تنس أن تمر -j 4 (أو أعلى) لجعلها لزيادة أداء البناء على أنظمة متعددة الأزهار.
هذا يبني kernel وموظف التمهيد ويقوم بإنشاء قرص التمهيد يتم تشغيله مع QEMU Virtualizer / Emulator. يتم فتح اتصال متسلسل بنظام التشغيل في المحطة التي تقوم بها بتشغيل الأمر Make.
اجعل القرص && قم بتشغيل
في الوقت الحالي ، لا يوجد لدى برنامج تشغيل SHELL و TTY قدرات تحرير الخط المتطورة ودعم تاريخ خط الأوامر. للراحة ، يمكنك لف QEMU باستخدام rlwrap للاستفادة من مرافق تحرير الخط على الجانب المضيف من الأشياء (الموصى بها بقوة):
اصنع القرص && rlwrap -a جعل تشغيله
من أجل التشغيل في VirtualBox ، قم بما يلي:
vdi :اصنع VDI
ثم:
disk.vdi كقرص IDEالآن يجب أن تكون قادرًا على بدء تشغيل VM من خلال VirtualBox.
لاحظ أن الإدخال/الإخراج التسلسلي قد يكون من الصعب الوصول إلى العمل. لا يتفاعل إصدار نظام التشغيل الحالي مع الشاشة ولوحة المفاتيح/الفئران بشكل افتراضي.
بمجرد تشغيل النظام وتشغيله ، يجب أن ترى موجهًا في المحطة التسلسلية (إذا كنت قد قمت بتوصيل شاشة ، فقد تظهر شاشة دفقة أيضًا). يمكنك التفاعل مع نظام التشغيل باستخدام المحطة التسلسلية. للبدء ، جرب أمر help .
يتم توفير عدد من برامج المرافق على القرص. عرض البرامج المثبتة عن طريق كتابة ls bin (على افتراض أنك لا تزال في دليل /disk0p1 ). يمكن تنفيذ جميع برامج ELF في /disk0p1/bin كأوامر دون كتابة المسار الكامل (فكر في الأمر كدليل $PATH ). وبالمثل ، يمكن تشغيل أي ملفات ELF في دليل العمل ، مثل forth.elf ، فقط عن طريق كتابة اسمها.
لمعرفة كيفية عمل المرافق ، أو لإضافة ملفك الخاص ، راجع ملف ReadMe في دليل src/user لهذا المستودع.
سيؤدي الضغط على لوحة المفاتيح (في نافذة الفيديو ، وليس المحطة التسلسلية) إلى تمكين قذيفة kernel ، وهي أداة تصحيح مدمجة. يمكن استخدام ذلك لطباعة الإحصاءات والمعلومات المختلفة حول العمليات والذاكرة (انظر أمر help عندما يكون في KSHELL).
يمكنك تصحيح النواة مع Qemu أو Bochs:
انظر ./SRC/GDBRC لخيارات بدء التشغيل (يمكنك تجاوز مسار الملف هذا في Makefile.local ).
اصنع قرصًا
انظر ./SRC/BOCHSRC لخيارات التكوين (يمكنك تجاوز مسار الملف هذا في Makefile.local ).
اصنع القرص وتصنع bochs
ld.lld: خطأ: غير قادر على العثور على مكتبة -lclang_rt.builtins -i386
locate clang_rt.builtins )kernel/Makefile.local ، مع المحتويات: LD_BUILTIN_DIR += /the/directory/containing/the/clang/lib أفهم أن الوثائق المتاحة للجمهور محدودة حاليًا ، لذا يرجى عدم التردد في فتح مشكلة أو إرسال بريد إلكتروني إلي.
يرجى فتح مشكلة github / gitlab حتى نتمكن من التأكد من عدم وجود جهد مكرر :-)
يجب إضفاء الطابع الرسمي على عملية ذلك في الأسابيع المقبلة - هناك بعض المشكلات / الميزات المفتوحة التي يمكن بالتأكيد العمل عليها ، بدرجات متفاوتة من الصعوبة / الحجم. سأقوم بتوثيق هذا قريبا ™.
هذا المشروع مرخص بموجب ترخيص Apache 2.0. يرجى الاطلاع على ./license لمزيد من المعلومات.
تم كتابة نظام التشغيل هذا من نقطة الصفر ، مع الاستثناء التالي فقط: