Maestro، نواة ونظام تشغيل يشبه Unix مكتوب من الصفر بلغة Rust

مايسترو

لقطة شاشة مايسترو

اكتسب الصدأ شعبية كافية لدرجة أنها أصبحت واحدة من تلك التي تم اختيارها لدمجها كلغة ثانوية في Linux، وكذلك في أنظمة التشغيل الأخرى، كما هو الحال في Android، الذي يحتوي بالفعل على جزء من التعليمات البرمجية في Rust، وWindows أيضًا أعطى الموافقة، من بين أمور أخرى.

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

وسبب ذكر ذلك هو أنني صادفت مؤخرًا خبرًا لفت انتباهي وهو ذلك تم تقديم مشروع يتم من خلاله تطوير نواة مكتوبة بلغة Rust وهو متوافق جزئيًا مع Linux.

اسم هذا المشروع "معلم" وكما ذكر، هي نواة تشبه Unix مكتوبة بلغة Rust وتقوم بتنفيذ مجموعة فرعية من استدعاءات النظام من Linux kernel يكفي لخلق بيئات عمل قياسية. على هذا النحو، فإن مشروع "Maestro" ليس شيئًا جديدًا، حيث ذكر المطور أن المشروع ولد في عام 2018، ولكن في ذلك الوقت تمت كتابته بلغة C ونظرًا لفوائد وخصائص Rust المختلفة، تمت إعادة كتابة المشروع من صفر.

على صفحة المشروع تم توضيح أسباب التغيير:

في تلك اللحظة قررت التحول إلى Rust (مشروعي الأول بهذه اللغة)، والذي كان يمثل عدة مزايا:

  • أعد تشغيل المشروع من البداية، باستخدام الدروس المستفادة من الأخطاء السابقة.
  • كن أكثر إبداعًا قليلاً من مجرد كتابة نواة تشبه Linux في لغة C. بعد كل شيء، ما عليك سوى استخدام Linux في ذلك الوقت.
  • استخدم أمان لغة Rust للاستفادة من بعض صعوبات برمجة kernel. يتيح لك استخدام نظام الكتابة Rust نقل بعض المسؤولية عن سلامة الذاكرة من المبرمج إلى المترجم.

في تطوير النواة، يعد تصحيح الأخطاء أمرًا صعبًا للغاية لعدة أسباب:

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

المتعلق ب خصائص المشروع، فمن الواضح أن النواة متجانسة وهو مدعوم حاليًا فقط على أنظمة x86 في وضع 32 بت. تغطي قاعدة كود kernel حوالي 49 ألف سطر، ويمكن تنفيذها على الأجهزة الحقيقية وفي البيئات الافتراضية، مثل QEMU أو VirtualBox.

في التطوير الحالي لـ «المايسترو»، تم تنفيذ 31% منها (135 من 437) من مكالمات نظام Linux. هذا هو يكفي لتحميل بيئة وحدة تحكم تعتمد على مكتبة Bash وMusl Standard C. بالإضافة إلى ذلك، يمكن للبيئة المبنية على Maestro تشغيل بعض الأدوات المساعدة من مجموعة GNU coreutils والتعبئة الأساسية من أي نظام Unix. حاليًا، يتم العمل على تنفيذ مكدس الشبكات، كما يتم العمل أيضًا على تطوير خادم X11، ومدير الحزم، ومحمل التمهيد، والمثبت وغيرها من الأدوات المساعدة الأساسية لبناء نظام التشغيل.

بين تبرز ميزات Maestro المتوفرة الأتى::

  • وحدات تحكم للوحة المفاتيح والمحطة الطرفية PS/2 مع وضع النص ودعم جزئي لتسلسلات ANSI.
  • نظام تخصيص الذاكرة مع دعم الذاكرة الافتراضية.
  • جدولة المهام تعتمد على خوارزمية round-robin مع دعم إشارات POSIX.
  • تعريف أجهزة PCI.
  • وحدة تحكم IDE/PATA.
  • نظام الملفات Ext2
  • دعم أنظمة الملفات الافتراضية /tmp و/proc.
  • القدرة على تركيب أقسام القرص FS وMBR وGPT.
  • دعم initramfs.
  • وحدة تحكم RTC للمؤقت والوقت الدقيق.
  • دعم لتحميل وحدات النواة.
  • القدرة على تشغيل الملفات القابلة للتنفيذ بتنسيق ELF.

إلى مهتم بمعرفة المزيد عن المشروع، يمكنك التحقق من التفاصيل في الرابط التالي.  أما بالنسبة للمهتمين بكود المشروع فليعلموا أنه كذلك وزعت بموجب ترخيص معهد ماساتشوستس للتكنولوجيا.