إصدار Linux 5.8 kernel

بعد شهرين من تطوير لينوس تورفالدس المقدمة الافراج عن النواة لينكس شنومكس. من بين أبرز التغييرات: كاشف حالة السباق KCSAN، وآلية عالمية لتوصيل الإشعارات إلى مساحة المستخدم، ودعم الأجهزة للتشفير المضمن، وآليات الأمان المحسنة لـ ARM64، ودعم معالج Baikal-T1 الروسي، والقدرة على تركيب مثيلات procfs بشكل منفصل تنفيذ آليات أمان الظل لـ ARM64 Call Stack وBTI.

أصبح Kernel 5.8 هو الأكبر من حيث عدد التغييرات لجميع النوى خلال فترة وجود المشروع بالكامل. علاوة على ذلك، فإن التغييرات لا تتعلق بأي نظام فرعي واحد، ولكنها تغطي أجزاء مختلفة من النواة وترتبط بشكل أساسي بإعادة العمل والتنظيف الداخلي. تظهر أكبر التغييرات في السائقين. تضمن الإصدار الجديد 17606 إصلاحًا من 2081 مطورًا، مما أثر على حوالي 20% من جميع الملفات الموجودة في مستودع كود kernel. حجم التصحيح هو 65 ميغابايت (أثرت التغييرات على 16180 ملفًا، وتمت إضافة 1043240 سطرًا من التعليمات البرمجية، وتم حذف 489854 سطرًا). بالمقارنة، كان لدى الفرع 5.7 15033 إصلاحًا وحجم التصحيح 39 ميجابايت. حوالي 37% من جميع التغييرات التي تم إدخالها في 5.8 تتعلق ببرامج تشغيل الأجهزة، وحوالي 16% من التغييرات تتعلق بتحديث التعليمات البرمجية الخاصة ببنيات الأجهزة، و11% تتعلق بمكدس الشبكة، و3% تتعلق بأنظمة الملفات، و4% ترتبط بالأنظمة الفرعية للنواة الداخلية.

رئيسي الابتكارات:

  • المحاكاة الافتراضية والأمن
    • يتم توفير تحميل وحدات kernel التي تحتوي على أقسام ذات تعليمات برمجية يتم فيها تعيين البتات التي تسمح بالتنفيذ والكتابة في وقت واحد. تم تنفيذ التغيير كجزء من مشروع أكبر لتخليص النواة من استخدام صفحات الذاكرة التي تسمح بالتنفيذ والكتابة في وقت واحد.
    • أصبح من الممكن الآن إنشاء مثيلات procfs منفصلة، ​​مما يسمح باستخدام نقاط تثبيت procfs متعددة، مثبتة بخيارات مختلفة، ولكنها تعكس نفس مساحة اسم معرف العملية (مساحة اسم معرف المنتج). في السابق، كانت جميع نقاط تثبيت procfs تعكس تمثيلًا داخليًا واحدًا فقط، وكان أي تغيير في معلمات التثبيت يؤثر على جميع نقاط التثبيت الأخرى المرتبطة بنفس مساحة اسم معرف العملية. من بين المجالات التي قد يكون فيها التثبيت بخيارات مختلفة مطلوبًا تنفيذ عزل خفيف الوزن للأنظمة المدمجة مع القدرة على إخفاء أنواع معينة من العمليات وعقد المعلومات في procfs.
    • تم تنفيذ دعم الآلية لمنصة ARM64
      مكدس نداء الظل، التي يقدمها مترجم Clang للحماية من الكتابة فوق عنوان الإرجاع الخاص بالوظيفة في حالة تجاوز سعة المخزن المؤقت للمكدس. يتمثل جوهر الحماية في حفظ عنوان الإرجاع في مكدس "ظل" منفصل بعد نقل التحكم إلى الوظيفة واسترداد هذا العنوان قبل الخروج من الوظيفة.

    • تمت إضافة دعم التعليمات لمنصة ARM64 ARMv8.5-BTI (مؤشر هدف الفرع) لحماية تنفيذ مجموعات التعليمات التي لا ينبغي أن تتفرع إليها. يتم تنفيذ حظر الانتقالات إلى أقسام تعسفية من التعليمات البرمجية لمنع إنشاء الأدوات الذكية في عمليات استغلال تستخدم تقنيات البرمجة الموجهة نحو العودة (ROP - البرمجة الموجهة نحو العودة؛ لا يحاول المهاجم وضع التعليمات البرمجية الخاصة به في الذاكرة، ولكنه يعمل على الأجزاء الموجودة بالفعل من تعليمات الآلة التي تنتهي بتعليمات التحكم في الإرجاع، والتي يتم من خلالها بناء سلسلة من الاستدعاءات للحصول على الوظيفة المطلوبة).
    • تمت إضافة دعم الأجهزة للتشفير المضمّن لأجهزة الحظر (التشفير المضمن). عادةً ما تكون أجهزة التشفير Inlinep مضمنة في محرك الأقراص، ولكنها تقع بشكل منطقي بين ذاكرة النظام والقرص، وتقوم بتشفير الإدخال/الإخراج وفك تشفيره بشفافية استنادًا إلى المفاتيح المحددة لـ kernel وخوارزمية التشفير.
    • تمت إضافة خيار سطر أوامر kernel "initrdmem" للسماح لك بتحديد عنوان الذاكرة الفعلية لـ initrd عند وضع صورة التمهيد الأولية في ذاكرة الوصول العشوائي.
    • تمت إضافة إمكانية جديدة: CAP_PERFMON للوصول إلى النظام الفرعي للأداء وإجراء مراقبة الأداء. CAP_BPF، والذي يسمح بعمليات BPF معينة (مثل تحميل برامج BPF) التي كانت تتطلب سابقًا حقوق CAP_SYS_ADMIN (تم الآن تقسيم حقوق CAP_SYS_ADMIN إلى مجموعة من CAP_BPF وCAP_PERFMON وCAP_NET_ADMIN).
    • تمت الإضافة جهاز virtio-mem جديد يسمح لك بتوصيل الذاكرة وتوصيلها بسرعة إلى أنظمة الضيف.
    • تم تنفيذ استدعاء عمليات التعيين في /dev/mem إذا كان برنامج تشغيل الجهاز يستخدم مناطق ذاكرة متداخلة.
    • تمت إضافة الحماية من الثغرات الأمنية الحديث المتبادل/SRBDS، والذي يسمح لك باستعادة نتائج تنفيذ بعض التعليمات التي تم تنفيذها على نواة وحدة المعالجة المركزية الأخرى.
  • خدمات الذاكرة والنظام
    • في المستند الذي يحدد قواعد تنسيق الكود، وافقت توصيات لاستخدام المصطلحات الشاملة. لا يُنصح المطورون باستخدام المجموعتين "رئيسي/تابع" و"القائمة السوداء/القائمة البيضاء"، بالإضافة إلى كلمة "تابع" بشكل منفصل. تتعلق التوصيات فقط بالاستخدامات الجديدة لهذه المصطلحات. ستظل الإشارات إلى الكلمات المحددة الموجودة بالفعل في القلب دون تغيير. في التعليمات البرمجية الجديدة، يُسمح باستخدام المصطلحات المحددة إذا لزم الأمر لدعم واجهة برمجة التطبيقات (API) وواجهة برمجة التطبيقات (ABI) المكشوفة في مساحة المستخدم، وكذلك عند تحديث التعليمات البرمجية لدعم الأجهزة أو البروتوكولات الموجودة التي تتطلب مواصفاتها استخدام مصطلحات معينة.
    • وشملت أداة التصحيح ككسان (Kernel Concurrency Sanitizer)، المصمم للكشف الديناميكي شروط السباق داخل النواة. يتم دعم استخدام KCSAN عند الإنشاء في دول مجلس التعاون الخليجي وClang، ويتطلب تعديلات خاصة في وقت الترجمة لتتبع الوصول إلى الذاكرة (يتم استخدام نقاط التوقف التي يتم تشغيلها عند قراءة الذاكرة أو تعديلها). كان تركيز تطوير KCSAN على الوقاية الإيجابية الكاذبة وقابلية التوسع وسهولة الاستخدام.
    • وأضاف آلية عالمية تسليم الإخطارات من النواة إلى مساحة المستخدم. تعتمد الآلية على برنامج تشغيل الأنبوب القياسي وتسمح لك بتوزيع الإشعارات من النواة بكفاءة عبر القنوات المفتوحة في مساحة المستخدم. نقاط تلقي الإشعارات هي أنابيب يتم فتحها في وضع خاص وتسمح بتجميع الرسائل المستلمة من kernel في المخزن المؤقت الحلقي. تتم القراءة بواسطة وظيفة القراءة () المعتادة. يحدد مالك القناة المصادر الموجودة في النواة التي تحتاج إلى المراقبة ويمكنه تحديد مرشح لتجاهل أنواع معينة من الرسائل والأحداث. من بين الأحداث، يتم حاليًا دعم العمليات باستخدام المفاتيح فقط، مثل إضافة/إزالة المفاتيح وتغيير سماتها. تم التخطيط لاستخدام هذه الأحداث في جنوم.
    • التطوير المستمر لوظيفة "pidfd" للمساعدة في التعامل مع حالات إعادة استخدام معرف PID (يرتبط pidfd بعملية محددة ولا يتغير، بينما يمكن ربط معرف PID بعملية أخرى بعد انتهاء العملية الحالية المرتبطة بمعرف PID هذا). يضيف الإصدار الجديد دعمًا لاستخدام pidfd لإرفاق عملية بمساحات الأسماء (مما يسمح بتحديد pidfd عند تنفيذ استدعاء نظام setns). يسمح لك استخدام pidfd بالتحكم في إرفاق عملية بعدة أنواع من مساحات الأسماء باستدعاء واحد، مما يقلل بشكل كبير من عدد استدعاءات النظام الضرورية وتنفيذ المرفق في الوضع الذري (إذا فشل المرفق بإحدى مساحات الأسماء، فلن يتم الاتصال بالمساحات الأخرى) .
    • تمت إضافة استدعاء نظام جديد faccessat2 ()، يختلف عن
      faccessat() وسيطة إضافية ذات أعلام تتوافق مع توصيات POSIX (سابقًا تمت محاكاة هذه الأعلام في مكتبة C، ويتيح faccessat2 الجديد تنفيذها في النواة).

    • في مجموعة C مضاف إعداد Memory.swap.high الذي يمكن استخدامه لإبطاء المهام التي تشغل مساحة كبيرة جدًا من مساحة المبادلة.
    • إلى واجهة الإدخال/الإخراج غير المتزامنة io_uring تمت إضافة دعم لاستدعاء نظام Tee().
    • آلية المضافة "مكرر BPF، مصمم لإخراج محتويات بنيات النواة إلى مساحة المستخدم.
    • قدمت القدرة على استخدام المخزن المؤقت الحلقي لتبادل البيانات بين برامج BPF.
    • في الآلية باداتا، المصمم لتنظيم التنفيذ المتوازي للمهام في النواة، إضافة دعم للمهام متعددة الخيوط مع موازنة التحميل.
    • في آلية pstore، والتي تسمح لك بحفظ معلومات تصحيح الأخطاء حول سبب العطل في مناطق الذاكرة التي لا تضيع بين عمليات إعادة التشغيل، مضاف الواجهة الخلفية لحفظ المعلومات لحظر الأجهزة.
    • من فرع النواة PREEMPT_RT انتقل تنفيذ الأقفال المحلية.
    • وأضاف واجهة برمجة تطبيقات تخصيص المخزن المؤقت الجديدة (AF_XDP)، تهدف إلى تبسيط كتابة برامج تشغيل الشبكة بدعم XDP (eXpress Data Path).
    • بالنسبة لبنية RISC-V، تم تنفيذ دعم تصحيح أخطاء مكونات kernel باستخدام KGDB.
    • قبل الإصدار 4.8، تمت زيادة متطلبات إصدار مجلس التعاون الخليجي الذي يمكن استخدامه لبناء النواة. في أحد الإصدارات القادمة، من المخطط رفع المستوى إلى دول مجلس التعاون الخليجي 4.9.
  • نظام القرص الفرعي ، I / O وأنظمة الملفات
    • في مخطط الجهاز مضاف معالج dm-ebs الجديد (محاكاة حجم الكتلة)، والذي يمكن استخدامه لمحاكاة حجم كتلة منطقية أصغر (على سبيل المثال، لمحاكاة قطاعات 512 بايت على أقراص بحجم قطاع 4K).
    • يدعم نظام الملفات F2FS الآن الضغط باستخدام خوارزمية LZO-RLE.
    • في dm-crypt مضاف دعم المفاتيح المشفرة.
    • قام Btrfs بتحسين التعامل مع عمليات القراءة في وضع الإدخال/الإخراج المباشر. عند التركيب معجل التحقق من الأقسام الفرعية المحذوفة والدلائل المتبقية بدون أحد الوالدين.
    • تمت إضافة معلمة "nodelete" إلى CIFS، مما يسمح بالتحقق من الأذونات العادية على الخادم، ولكنه يمنع العميل من حذف الملفات أو الدلائل.
    • قام Ext4 بتحسين معالجة الأخطاء اينوسبك عند استخدام مؤشرات الترابط المتعددة. أضاف xattr دعمًا لمساحة الاسم gnu.* المستخدمة في GNU Hurd.
    • بالنسبة إلى Ext4 وXFS، يتم تمكين دعم عمليات DAX (الوصول المباشر إلى نظام الملفات، وتجاوز ذاكرة التخزين المؤقت للصفحة دون استخدام مستوى جهاز الحظر) فيما يتعلق بالملفات والأدلة الفردية.
    • في استدعاء النظام ستاتكس () تمت إضافة العلم STATX_ATTR_DAX، والذي عند تحديده يقوم باسترداد المعلومات باستخدام محرك DAX.
    • الدهون الزائدة مضاف دعم للتحقق من منطقة التمهيد.
    • بالدهن تحسين التحميل الاستباقي لعناصر FS. أظهر اختبار محرك أقراص USB بطيء سعة 2 تيرابايت انخفاضًا في وقت إكمال الاختبار من 383 إلى 51 ثانية.
  • النظام الفرعي للشبكة
    • في رمز التحكم في تشغيل جسور الشبكة مضاف دعم البروتوكول MRP (بروتوكول تكرار الوسائط)، والذي يسمح بالتسامح مع الأخطاء من خلال تكرار محولات Ethernet المتعددة.
    • لنظام التحكم في حركة المرور (Tc) وأضاف إجراء "البوابة" الجديد، الذي يتيح تحديد فترات زمنية لمعالجة حزم معينة والتخلص منها.
    • تمت إضافة دعم اختبار كابل الشبكة المتصل والتشخيص الذاتي لأجهزة الشبكة إلى النواة والأداة المساعدة ethtool.
    • تمت إضافة دعم خوارزمية MPLS (تبديل الملصقات المتعددة البروتوكولات) إلى مكدس IPv6 لتوجيه الحزم باستخدام تبديل الملصقات متعدد البروتوكولات (كان MPLS مدعومًا مسبقًا لـ IPv4).
    • تمت إضافة دعم لنقل حزم IKE (Internet Key Exchange) وIPSec عبر TCP (RFC 8229) لتجاوز حظر UDP المحتمل.
    • تمت الإضافة جهاز كتلة الشبكة rnbd، والذي يسمح لك بتنظيم الوصول عن بعد إلى جهاز كتلة باستخدام نقل RDMA (InfiniBand، RoCE، iWARP) وبروتوكول RTRS.
    • في مكدس TCP مضاف دعم ضغط النطاق في استجابات الإقرار الانتقائي (SACK).
    • لـ IPv6 مُنفّذ دعم TCP-LD (RFC 6069، انقطاع الاتصال الطويل).
  • معدات
    • يتضمن برنامج تشغيل i915 DRM لبطاقات فيديو Intel دعمًا لشرائح Intel Tiger Lake (GEN12) بشكل افتراضي، والتي مُنفّذ القدرة على استخدام نظام SAGV (System Agent Geyserville) لضبط التردد والجهد ديناميكيًا اعتمادًا على استهلاك الطاقة أو متطلبات الأداء.
    • أضاف برنامج التشغيل amdgpu دعمًا لتنسيق FP16 بكسل والقدرة على العمل مع المخازن المؤقتة المشفرة في ذاكرة الفيديو (TMZ، منطقة الذاكرة الموثوقة).
    • تمت إضافة دعم لمستشعرات الطاقة لمعالجات AMD Zen وZen2، بالإضافة إلى مستشعرات درجة الحرارة لـ AMD Ryzen 4000 Renoir. يتم توفير الدعم لاستعادة معلومات استهلاك الطاقة من خلال الواجهة لـ AMD Zen وZen2 RAPL (تشغيل الحد المتوسط ​​للطاقة).
    • تمت إضافة دعم لتنسيق تعديل NVIDIA إلى برنامج التشغيل Nouveau. بالنسبة لـ gv100، تم تنفيذ القدرة على استخدام أوضاع المسح المتداخلة. تمت إضافة كشف vGPU.
    • تمت إضافة دعم لوحدات معالجة الرسوميات Adreno A405 وA640 وA650 إلى برنامج تشغيل MSM (Qualcomm).
    • وأضاف الإطار الداخلي لإدارة موارد DRM (مدير العرض المباشر).
    • تمت إضافة دعم للهواتف الذكية Xiaomi Redmi Note 7 وSamsung Galaxy S2، بالإضافة إلى أجهزة الكمبيوتر المحمولة Elm/Hana Chromebook.
    • برامج التشغيل المضافة لألواح LCD: ASUS TM5P5 NT35596، Starry KR070PE2T، Leadtek LTK050H3146W، Visionox rm69299، Boe tv105wum-nw0.
    • تمت إضافة دعم للوحات ومنصات ARM Renesas "RZ/G1H"، Realtek RTD1195، Realtek RTD1395/RTD1619، Rockchips RK3326، AMLogic S905D، S905X3، S922XH، Olimex A20-OLinuXino-LIME-eMMC، Check Point L-50،
      ، Beacon i.MX8m-Mini، Qualcomm SDM660/SDM630، Xnano X5 TV Box، Stinger96، Beaglebone-AI.

    • تمت إضافة دعم لمعالج MIPS Loongson-2K (مختصر Loongson64). بالنسبة لوحدة المعالجة المركزية Loongson 3، تمت إضافة دعم للمحاكاة الافتراضية باستخدام برنامج Hypervisor KVM.
    • أضيفت بواسطة
      دعم معالج Baikal-T1 الروسي والنظام الموجود على الشريحة المبني عليه BE-T1000. يحتوي معالج Baikal-T1 على نواتين P5600 MIPS 32 r5 تعملان بتردد 1.2 جيجا هرتز. تحتوي الشريحة على ذاكرة تخزين مؤقت L2 (1 ميجابايت)، ووحدة تحكم ذاكرة DDR3-1600 ECC، ومنفذ إيثرنت بسرعة 1 جيجابت، ومنفذين إيثرنت بسرعة 10 جيجابت، ووحدة تحكم PCIe Gen.2 x1، ومنفذين SATA 3، ومنفذ USB 4، وGPIO، وUART، وSPI، وI2C. يوفر المعالج دعم الأجهزة للمحاكاة الافتراضية وتعليمات SIMD ومسرع تشفير الأجهزة المتكامل الذي يدعم GOST 3.0-2.0. تم تطوير الشريحة باستخدام وحدة المعالج الأساسية MIPS2 P28147 Warrior المرخصة من Imagination Technologies.

وفي الوقت نفسه، مؤسسة البرمجيات الحرة في أمريكا اللاتينية شكلت
خيار نواة مجانية تماما 5.8 - لينكس ليبر 5.8 جنو، تم مسحها من البرامج الثابتة وعناصر برنامج التشغيل التي تحتوي على مكونات غير حرة أو أقسام تعليمات برمجية، والتي يقتصر نطاقها من قبل الشركة المصنعة. يعمل الإصدار الجديد على تعطيل تحميل blob في برامج تشغيل Atom ISP Video وMediaTek 7663 USB/7915 PCIe وRenesas PCI xHCI وHabanaLabs Gaudi ومحول معدل العينة غير المتزامن المحسن ومكبر الصوت Maxim Integrated MAX8723 ومعالج الصوت المنزلي المتصل Microsemi ZL98390، وI38060C إيبروم الرقيق. تم تحديث كود تنظيف النقطة الكبيرة في Adreno GPU وHabanaLabs Goya وشاشة اللمس x2 وبرامج التشغيل والأنظمة الفرعية vt86 وbtbcm.

المصدر: opennet.ru

إضافة تعليق