يطور مشروع Kerla نواة متوافقة مع Linux في Rust

يقوم مشروع Kerla بتطوير نواة نظام تشغيل مكتوبة بلغة Rust. تم توجيه النواة الجديدة في البداية لتوفير التوافق مع نواة Linux على مستوى ABI، مما سيسمح بتشغيل الثنائيات غير المعدلة المصممة لنظام Linux في بيئة تعتمد على Kerla. يتم توزيع الكود بموجب تراخيص Apache 2.0 وMIT. يتم تطوير المشروع من قبل المطور الياباني Seiya Nuta، المعروف بإنشاء نظام التشغيل Resea microkernel المكتوب بلغة C.

في المرحلة الحالية من التطوير، يمكن لـ Kerla أن يعمل فقط على أنظمة x86_64 وينفذ استدعاءات النظام الأساسية مثل الكتابة والإحصائيات وmmap والتوجيه والاستقصاء، ويدعم الإشارات والأنابيب غير المسماة ومفاتيح السياق. لإدارة العمليات، يتم توفير استدعاءات مثل fork، wait4، وexecve. هناك دعم للمحطات الطرفية الزائفة (pty). من بين أنظمة الملفات، لا يزال initramfs (المستخدم لتركيب نظام FS الجذري) وtmpfs وdevfs مدعومًا. يتم توفير مكدس الشبكة مع دعم مآخذ TCP وUDP، والتي يتم تنفيذها على أساس مكتبة smoltcp.

قام المطور بإعداد بيئة قابلة للتمهيد يتم تشغيلها في QEMU أو في جهاز Firecracker الظاهري باستخدام برنامج تشغيل Virtio-net، والذي يمكنك الاتصال به بالفعل عبر SSH. يتم استخدام Musl كمكتبة نظام، ويتم استخدام BusyBox كأدوات مساعدة للمستخدم.

يطور مشروع Kerla نواة متوافقة مع Linux في Rust

استنادًا إلى Docker، تم إعداد نظام بناء يسمح لك بإنشاء ملفات initramfs التمهيدية الخاصة بك باستخدام Kerla core. يتم تطوير غلاف nsh الشبيه بالأسماك ومكدس Kazari GUI استنادًا إلى بروتوكول Wayland بشكل منفصل.

يطور مشروع Kerla نواة متوافقة مع Linux في Rust

يؤدي استخدام لغة Rust في المشروع إلى تقليل عدد الأخطاء في التعليمات البرمجية من خلال تطبيق تقنيات الترميز الآمن وتحسين كفاءة تحديد المشكلات عند العمل مع الذاكرة. يتم توفير المعالجة الآمنة للذاكرة في Rust في وقت الترجمة من خلال التحقق من المرجع، وتتبع ملكية الكائن وعمر الكائن (النطاق)، وكذلك من خلال تقييم صحة الوصول إلى الذاكرة أثناء تنفيذ التعليمات البرمجية. بالإضافة إلى ذلك، يوفر Rust الحماية ضد تجاوزات الأعداد الصحيحة، ويتطلب التهيئة الإلزامية للقيم المتغيرة قبل الاستخدام، ويطبق مفهوم المراجع والمتغيرات غير القابلة للتغيير (غير القابلة للتغيير) افتراضيًا، ويوفر كتابة ثابتة قوية لتقليل الأخطاء المنطقية، ويبسط معالجة قيمة الإدخال بفضل مرافق مطابقة الأنماط.

من أجل تطوير المكونات ذات المستوى المنخفض، مثل نواة نظام التشغيل، يوفر Rust الدعم للمؤشرات الأولية، وتعبئة البنية، وإدراجات المجمع المضمنة، ودمج ملف المجمع. للعمل دون الارتباط بالمكتبة القياسية، توجد حزم صناديق منفصلة لتنفيذ العمليات على السلاسل والمتجهات وأعلام البت. من بين المزايا، هناك أيضًا أدوات مدمجة لتقييم جودة التعليمات البرمجية (Linter، ومحلل الصدأ) وإنشاء اختبارات الوحدة التي يمكن تشغيلها ليس فقط على الأجهزة الحقيقية، ولكن أيضًا في QEMU.

المصدر: opennet.ru

إضافة تعليق