Nova: برنامج تشغيل Rust جديد لوحدات معالجة الرسومات NVIDIA قادم إلى Linux 6.15

نوفا، رست

قبل عام أعلنت شركة Red Hatإلى عملهم على برنامج تشغيل مفتوح المصدر جديد لإدارة وحدات معالجة الرسومات NVIDIA على أنظمة Linux،جديد". على عكس سابقتها، Nouveau، تعتمد Nova على تفويض عمليات التهيئة والتحكم إلى متحكم GSP (معالج نظام وحدة معالجة الرسومات) المدمج في بطاقة الرسومات نفسها.

والآن، وفي غضون بضعة أشهر (على عكس المشاريع الجديدة الأخرى)، يبدو أن برنامج التشغيل قد اكتسب ما يكفي من النضج ليتم اقتراحه كمجموعة من التصحيحات التي سيتم دمجها في نواة Linux 6.15، حيث أن هذه هي النسخة الأولية من برنامج التشغيل على Linux.

نوفا، إنها تم تصميمه كوحدة نواة لينكس، الذي يعتمد على نظام إدارة الحقوق الرقمية لإدارة التفاعل مع وحدة معالجة الرسوميات من مساحة المستخدم. يُنظر إلى تطويره باعتباره تطورًا لـ Nouveau، مع كون الاختلاف الرئيسي هو أنه يستهدف حصريًا وحدات معالجة الرسومات التي تحتوي على برامج GSP الثابتة، والتي تغطي الطرز من سلسلة NVIDIA GeForce RTX 2000 المستندة إلى الهندسة المعمارية الدقيقة Turing.

الاختلافات مع نوفو ومزايا نوفا

Nova يسعى إلى حل المشاكل البنيوية للعصر الجديد، الأمر الذي يتطلب إصلاحًا شاملاً في مجالات مثل إدارة الذاكرة (VMM/MMU) والأقفال في الكود. على عكس Nouveau، يستفيد Nova من البرامج الثابتة GSP من NVIDIA لتبسيط تهيئة وحدة معالجة الرسومات والتحكم فيها، مما يقلل من تعقيد التعليمات البرمجية ويزيل الحاجة إلى التعامل مع البطاقات القديمة.

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

المشروع ويتم دعمها من خلال العديد من المبادرات الموازية، مثل جهاز الصدأ لإنشاء برامج التشغيل، rust-pci للتفاعل مع ناقل PCI وrust-drm للتكامل مع أنظمة DRM و GEM الفرعية. ويتم استخدام هذه الأدوات أيضًا في تطوير drm-asahi، برنامج تشغيل Rust لوحدات معالجة الرسومات M1 وM2 من Apple، مما يشير إلى التقارب في البنية الأساسية لبرامج تشغيل الرسومات المكتوبة بلغة Rust.

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

وهذا ليس الجهد الوحيد الجاري لدمج Rust في النواة. يتم حاليًا تطوير برامج تشغيل وأنظمة أخرى بهذه اللغة، مثل برنامج تشغيل وحدة معالجة الرسوميات Apple AGX، ودعم تخزين NVMe، ونظام الملفات PuzzleFS، وتنفيذات مختلفة للأمان وإدارة الأجهزة. يواصل الاتجاه نحو Rust اكتساب الزخم في نظام Linux البيئي، مما يمثل تحولاً كبيراً في كيفية معالجة الأمان والاستقرار في تطوير نواة نظام التشغيل.

مراحل التنفيذ

حاليا، نوفا في مرحلتها الأولى من التنفيذ، تم دمج nova-core، وهي وحدة تحتوي على ما يقرب من 400 سطر من التعليمات البرمجية التي تنشئ التجريدات اللازمة للتواصل مع البرامج الثابتة GSP. إلى جانب nova-core، تمت أيضًا إضافة روابط أساسية للتكامل مع البرامج الثابتة لـ NVIDIA.

ومن الجدير بالذكر أن، كان من المقرر في البداية أن يصل Nova إلى Linux 6.14 مع وحدة نوفا كور تتكون من 232 سطرًا من التعليمات البرمجية، ولكن في النهاية لم يتم تضمينها لأن جريج كرواه هارتمان ذكر بعض التفاصيل التي تحتاج إلى تلميع.

مع التأكيد الجديد بأنه سيتم تضمينه الآن، الآن سوف ينتقل المتحكم إلى المراحل التالية حيث من المخطط إضافة:

  • نوفا-drm: برنامج تشغيل DRM (مدير العرض المباشر) لإدارة التفاعل مع وحدة معالجة الرسومات من مساحة المستخدم.
  • VFIO مع مدير vGPU: سيسمح باستخدام وحدات معالجة الرسوميات الافتراضية من NVIDIA في بيئات المحاكاة الافتراضية.

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