Feral هي نواة متجانسة ، تمامًا كمشروع هواية صغير لبناء نظام تشغيل كامل من نقطة الصفر ، حتى لو كان ذلك ببطء شديد.
تم تصميم FERAL لتشغيل أنظمة الكمبيوتر الحديثة مع BIOS متوافقة بشكل معقول. في الوقت الحالي ، لا تدعم Feral UEFI ، على الرغم من أن المنفذ قيد التقدم.
وحشي ، في الوقت الحالي ، يفترض وجود اثنين من الصور 8259a الموجودة في الحواسيب الدقيقة المتوافقة مع أجهزة الكمبيوتر التقليدية. على micros الحديثة ، ربما يكون لدى Southbridge ، مثل X399 أو X470 ، شيئًا متوافقًا. في المستقبل ، تعتزم Veral الانتقال إلى استخدام ميزات المعالج الأحدث ، مثل APIC ، وفي النهاية Xapic و X2APIC. بالإضافة إلى ذلك ، سوف تدعم الوحشية المعالجة المتعددة المتماثلة.
حاليًا ، تتضمن الأجهزة التي يتم اختبارها جهاز كمبيوتر مع لوحة أم "X4" 4 "X4" ووحدة المعالجة المركزية N3700 ("Braswell") مع ذاكرة الوصول العشوائي 4GB ، وهو كمبيوتر محمول 17Z مع 2500U (Zen 1) ، وفي المستقبل ، X5-Z8350 مع 2 جيجا بايت من ذاكرة الوصول العشوائي ("Cherry Trail").
في المستقبل ، تهدف Feral إلى تشغيل أجهزة AARCH64 (BCM2711) ، و Power (SFORZA) ، و RV64GC (U540) ، مع منافذ مكتوبة في مكان ما بهذا الترتيب.
من الناحية المعمارية ، فإن Feral هي نواة متجانسة بسيطة ، والتي تشترك معماريًا في العديد من التشابهات مع Mach و Plan 9 ، وخاصة الأخير. تفضل Feral أن تضع معظم الوظائف في برامج التشغيل ، بدلاً من الخبز مباشرة في النواة نفسها ، للسماح بمزيد من المرونة ، وفضح الموارد كموقع للشبكة والمقبس ، لتعكس بشكل أفضل كيفية عمل العمليات الحديثة وتخزينها.
على سبيل المثال ، لفتح ملف ، يستفسر أحدهم من خادم الملفات ، وهو عملية مملوكة لـ kernel ، والتي تفتح مقبسًا يقبل حركة المرور الواردة. يمكن بعد ذلك قراءتها من أو كتابتها ، اعتمادًا على كيفية فتح المقبس.
الفكرة الأساسية هي أخذ نموذج ومرونة microkernels وتطعيمها في بنية نواة متجانسة تقليدية ، والتضحية بالقدرة على القيام بأشياء مثل إعادة تشغيل برامج تشغيل نظام الملفات مع الحفاظ على الفوائد مثل الهندسة المعمارية النظيفة ، وطبقة السائقين ، ومقدمي السائقين المتعددين.
تم إنشاء Feral بالنسبة لي لمعرفة المزيد حول تصميم أنظمة التشغيل ، أثناء الخروج من طريقة "Make *Nix Clone" التقليدية: لا حرج في ذلك ، لكنني أود استكشاف طرق مختلفة لفضح ميزات الأجهزة والنظام إلى جانب مجرد صنع ملف في مكان ما. بالإضافة إلى ذلك ، أود استكشاف مدى اختلاف نظام التشغيل الجديد من الأنظمة التقليدية بينما يسهل نقل البرامج الموجودة إلى.
على الرغم من أن هذه الصورة عفا عليها الزمن ، لأن بعض هذه الأنظمة الفرعية يجب أن يتم امتصاصها في النواة ، في معظمها ، يكون هذا دقيقًا للنية: 
يستخدم Feral الآن cmake للبناء. يتم تضمين برنامج نصي للمنفعة للحالة الشائعة للبناء لـ X86_64 و QEMU في vm_test.sh ، ومع تمكين كعب GDB في vm_test_gdb.sh .
للبناء يدويًا ، يجب عليك استخدام Clang كمترجم C الخاص بك. بالنسبة إلى هدف X86-64-PC بدون دعم EFI ، يمكنك استخدام ملف أدوات CMAKE/x86_64-pc.cmake مع معلمة -DCMAKE_TOOLCHAIN_FILE=cmake/x86_64-pc.cmake . سيؤدي ذلك إلى إنشاء kernel بشكل صحيح مثل "feralker" ، وستكون هناك حاجة إلى بعض الخطوات الإضافية لإنشاء ملف ISO قابل للتمهيد. راجع ملف vm_test.sh للحصول على التفاصيل.
يجب أن تعمل Feral بشكل مريح على أي جهاز كمبيوتر يقوم بتنفيذ مجموعة تعليمات X86-64 (أي على الأقل K8 CPU) ، وما لا يقل عن 1 جيجابايت من ذاكرة النظام. سيتم تخفيض متطلبات الذاكرة هذه في المستقبل ، ولكن في الوقت الحالي مطلوب لجعل الأمور أسهل قليلاً عند إعداد kernel في البداية.
تتوقع Feral أن يكون محول عرض متوافق مع VGA موجودًا لجهاز كمبيوتر. على هذا النحو ، ستحتاج إلى شكل من أشكال محول الفيديو القادر على التشغيل في وضع VGA. تنفذ معظم وحدات المعالجة المركزية من فئة المستهلك ووحدة معالجة الرسومات هذا في واحد على الأقل من وحدات معالجة الرسومات الخاصة بهم.
حاليًا ، يتم اختبار Feral بشكل حصري على الأجهزة الظاهرية أعلى Zen 1 1950x ، وحفنة من آلات Zen 1 الأصغر. من المحتمل أن يعمل Feral بشكل جيد على أجهزة أخرى ، ولكن لم يتم اختباره.
يجب تسمية المجلدات بطريقة لتجنب الأحرف غير الضرورية (أي ، "Inc 'vs".
يجب تصدير الوظائف التي يجب تصديرها بين الوحدات النمطية عمومًا اتفاقية التسمية (النظام الفرعي) (الغرض من الوظائف) (نوع الاختياري من النوع) ، مثل "KestartProcessor". عندما تكون الوظيفة خاصة بالهندسة المعمارية ، يجب أن تكون مسبقة بالهندسة المعمارية التي تنتمي إليها ، مثل "AARCH64STARTPAGING ()" ، أو "x86setupidt ()". لمزيد من التفاصيل ، راجع Formatting.txt
بالإضافة إلى ذلك ، يجب أن تستخدم الوظائف وحدات الماكرو في ، inout ، OPT ، وما إلى ذلك لتحديد ما تفعله الوظيفة بوضوح مع الوسيطة. تتوسع وحدات الماكرو هذه إلى لا شيء ، ولا توجد إلا للمساعدة في الوثائق.
نواة أساسية خفيفة الوزن. غالبية الوظائف في السائقين. تتواصل العمليات إلى libos (تذهب syscalls إلى طاولة kernel التي تخبر سائق Libos بأن هذا كان يسمى).
تعامل السائقين مع مكالمات النظام للسماح بتشغيل البرامج "الأجنبية" غير المعدلة ، مثل إصدار GNU MACH من GCC ، أو لعبة DOS المفضلة لدى الجميع على المريخ.
مستقر ، kernel abi. يجب أن يعمل سائقو الطرف الثالث عبر مراجعات طفيفة. استخدم مؤشر PNEXT لأي تغييرات خطيرة.
تم تضمين نظام ملفات الإصدار المستقر ، بحيث لا يحذف deltree العرضي كل شيء إلى الأبد. افترض أن المستخدم لا يقوم بنسخ احتياطية.
(في النهاية) قم بإنشاء برامج تشغيل متوافقة تمامًا مع عائلة "Vega" و "Navi" من وحدات معالجة الرسومات.
دعم ملحقات المحاكاة الافتراضية x86-64 ("Pacifica").
شيء مثل سجن chroot أو حاويات ، للسماح للوحشية بأن تكون مفيدة لعمليات الخادم.
شيء ممتع للعمل على ذلك قد يكون مفيدًا يومًا ما؟