إصدار Linux 5.12 kernel

بعد شهرين من التطوير، قدم لينوس تورفالدس إصدار Linux kernel 5.12. من بين أبرز التغييرات: دعم أجهزة الحظر المخصصة للمنطقة في Btrfs، والقدرة على تعيين معرفات المستخدم لنظام الملفات، وتنظيف بنيات ARM القديمة، ووضع الكتابة "الحريص" في NFS، وآلية LOOKUP_CACHED لتحديد مسارات الملفات من ذاكرة التخزين المؤقت ، دعم التعليمات الذرية في BPF، نظام تصحيح الأخطاء KFENCE لتحديد الأخطاء عند العمل مع الذاكرة، وضع استقصاء NAPI الذي يعمل في خيط kernel منفصل في مكدس الشبكة، مراقب ACRN، القدرة على تغيير النموذج الوقائي سريعًا في المهمة جدولة ودعم تحسينات LTO عند البناء في Clang.

يتضمن الإصدار الجديد 14170 (في الإصدار السابق 15480) إصلاحات من 1946 (1991) من المطورين، وحجم التصحيح هو 38 ميجابايت (أثرت التغييرات على 12102 (12090) ملف، وتم إضافة 538599 (868025) سطرًا من التعليمات البرمجية، و333377 (261456) تم حذف الأسطر). حوالي 43% من جميع التغييرات التي تم إدخالها في 5.12 تتعلق ببرامج تشغيل الأجهزة، وحوالي 17% من التغييرات تتعلق بتحديث التعليمات البرمجية الخاصة ببنيات الأجهزة، و12% تتعلق بمكدس الشبكة، و5% تتعلق بأنظمة الملفات، و4% ترتبط بالأنظمة الفرعية للنواة الداخلية.

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

  • نظام القرص الفرعي ، I / O وأنظمة الملفات
    • تم تنفيذ القدرة على تعيين معرفات المستخدم لأنظمة الملفات المثبتة (يمكنك تعيين ملفات مستخدم واحد على قسم خارجي مثبت مع مستخدم آخر على النظام الحالي). يتم دعم التعيين لأنظمة الملفات FAT وext4 وXFS. تسهل الوظيفة المقترحة مشاركة الملفات بين مستخدمين مختلفين وعلى أجهزة كمبيوتر مختلفة، بما في ذلك التعيين الذي سيتم استخدامه في آلية الدليل الرئيسي المحمول Systemd-Home، مما يسمح للمستخدمين بنقل أدلة المنزل الخاصة بهم إلى وسائط خارجية واستخدامها على أجهزة كمبيوتر مختلفة، ورسم الخرائط معرفات المستخدم التي لا تتطابق. تطبيق مفيد آخر هو تنظيم توفير الوصول المشترك إلى الملفات من مضيف خارجي، دون تغيير البيانات المتعلقة بمالكي الملفات في نظام الملفات فعليًا.
    • تم اعتماد تصحيحات LOOKUP_CACHED في النواة، مما يسمح للعمليات بتحديد مسار ملف من مساحة المستخدم دون حظر، بناءً على البيانات المتوفرة في ذاكرة التخزين المؤقت فقط. يتم تنشيط وضع LOOKUP_CACHED في استدعاء openat2() عن طريق تمرير علامة RESOLVE_CACHED، حيث يتم تقديم البيانات فقط من ذاكرة التخزين المؤقت، وإذا كان تحديد المسار يتطلب الوصول إلى محرك الأقراص، فسيتم إرجاع الخطأ EAGAIN.
    • أضاف نظام الملفات Btrfs دعمًا أوليًا لأجهزة الكتل المخصصة للمنطقة (الأجهزة الموجودة على الأقراص المغناطيسية الصلبة أو محركات أقراص NVMe SSD، حيث يتم تقسيم مساحة التخزين إلى مناطق تشكل مجموعات من الكتل أو القطاعات، والتي يُسمح لها بإضافة البيانات بشكل تسلسلي فقط، تحديث مجموعة الكتل بأكملها). في وضع القراءة فقط، يتم تنفيذ دعم الكتل ذات البيانات التعريفية والبيانات الأصغر من الصفحة (الصفحة الفرعية).
    • تمت إضافة القدرة على تحديد الخوارزمية ومستوى الضغط إلى نظام الملفات F2FS. تمت إضافة دعم للضغط عالي المستوى لخوارزمية LZ4. تم تنفيذ خيار التركيب check_merge.
    • تم تنفيذ أمر ioctl جديد FS_IOC_READ_VERITY_METADATA لقراءة البيانات الوصفية من الملفات المحمية باستخدام fs-verity.
    • يطبق عميل NFS وضع الكتابة "الحريص" (الكتابة = حريص)، عند تمكينه، يتم نقل عمليات الكتابة إلى الملف على الفور إلى الخادم، متجاوزًا ذاكرة التخزين المؤقت للصفحة. يتيح لك هذا الوضع تقليل استهلاك الذاكرة، ويوفر الاستلام الفوري للمعلومات حول نهاية المساحة الحرة في نظام الملفات، وفي بعض المواقف يجعل من الممكن تحقيق أداء متزايد.
    • تمت إضافة خيارات تحميل جديدة إلى CIFS (SMB): acregmax للتحكم في التخزين المؤقت للملفات وacdirmax للتحكم في التخزين المؤقت لبيانات تعريف الدليل.
    • في XFS، تم تمكين وضع فحص الحصص متعدد الخيوط، وتم تسريع تنفيذ fsync، وتم إعداد كود Growfs لتنفيذ وظيفة تقليل حجم نظام الملفات.
  • خدمات الذاكرة والنظام
    • تمت إضافة النظام الفرعي DTMP (إدارة الطاقة الحرارية الديناميكية)، مما يسمح لك بتنظيم استهلاك الطاقة للأجهزة المختلفة ديناميكيًا بناءً على حدود درجة الحرارة العامة المحددة.
    • تم تنفيذ القدرة على بناء النواة باستخدام مترجم Clang مع تضمين التحسينات في مرحلة الربط (LTO، تحسين وقت الارتباط). تختلف تحسينات LTO من خلال مراعاة حالة جميع الملفات المشاركة في عملية الإنشاء، بينما تعمل أوضاع التحسين التقليدية على تحسين كل ملف على حدة ولا تأخذ في الاعتبار شروط استدعاء الوظائف المحددة في الملفات الأخرى. على سبيل المثال، مع LTO، يكون النشر المضمّن ممكنًا لوظائف من ملفات أخرى، ولا يتم تضمين التعليمات البرمجية غير المستخدمة في الملف القابل للتنفيذ، ويتم إجراء فحص النوع والتحسين العام على مستوى المشروع ككل. يقتصر دعم LTO حاليًا على بنيات x86 وARM64.
    • من الممكن تحديد أوضاع الاستباقية (PREEMPT) في برنامج جدولة المهام في مرحلة التمهيد (preempt=none/طوعي/full) أو أثناء العمل من خلال debugfs (/debug/sched_debug)، إذا تم تحديد الإعداد PREEMPT_DYNAMIC عند بناء النواة. في السابق، كان من الممكن ضبط وضع البثق فقط على مستوى معلمات التجميع. يسمح هذا التغيير للتوزيعات بشحن النواة مع تمكين وضع PREEMPT، والذي يوفر الحد الأدنى من زمن الوصول لأجهزة الكمبيوتر المكتبية على حساب عقوبة إنتاجية صغيرة، وإذا لزم الأمر الرجوع إلى PREEMPT_VOLUNTARY (وضع متوسط ​​لأجهزة سطح المكتب) أو PREEMPT_NONE (يوفر الحد الأقصى من الإنتاجية للخوادم) .
    • تمت إضافة دعم العمليات الذرية BPF_ADD، BPF_AND، BPF_OR، BPF_XOR، BPF_XCHG وBPF_CMPXCHG إلى النظام الفرعي BPF.
    • تُمنح برامج BPF القدرة على الوصول إلى البيانات الموجودة على المكدس باستخدام مؤشرات ذات إزاحات متغيرة. على سبيل المثال، إذا كان بإمكانك في السابق استخدام فهرس العناصر الثابتة فقط للوصول إلى مصفوفة في المكدس، فيمكنك الآن استخدام فهرس متغير. يتم التحكم في الوصول فقط داخل الحدود الحالية بواسطة مدقق BPF. هذه الميزة متاحة فقط للبرامج المميزة بسبب المخاوف بشأن استغلال الثغرات الأمنية في تنفيذ التعليمات البرمجية التخمينية.
    • تمت إضافة القدرة على إرفاق برامج BPF بنقاط التتبع العارية غير المرتبطة بأحداث التتبع المرئية في مساحة المستخدم (لا يتم ضمان الحفاظ على ABI لنقاط التتبع هذه).
    • تم تنفيذ دعم ناقل CXL 2.0 (Compute Express Link) الذي يستخدم لتنظيم التفاعل عالي السرعة بين وحدة المعالجة المركزية وأجهزة الذاكرة (يسمح لك باستخدام أجهزة الذاكرة الخارجية كجزء من ذاكرة الوصول العشوائي أو الذاكرة الدائمة، كما لو كانت هذه الذاكرة تم توصيلها من خلال وحدة تحكم الذاكرة القياسية في وحدة المعالجة المركزية).
    • تمت إضافة برنامج تشغيل nvmem لاسترداد البيانات من مناطق الذاكرة المحفوظة بالبرامج الثابتة والتي لا يمكن لنظام التشغيل Linux الوصول إليها مباشرة (على سبيل المثال، ذاكرة EEPROM التي لا يمكن الوصول إليها فعليًا إلا للبرنامج الثابت، أو البيانات التي لا يمكن الوصول إليها إلا أثناء مرحلة التمهيد المبكرة).
    • تمت إزالة دعم نظام ملفات التعريف "oprofile"، والذي لم يكن مستخدمًا على نطاق واسع وتم استبداله بآلية الأداء الأكثر حداثة.
    • توفر واجهة الإدخال/الإخراج غير المتزامنة io_uring التكامل مع مجموعات التحكم التي تتحكم في استخدام الذاكرة.
    • تدعم بنية RISC-V أنظمة NUMA، بالإضافة إلى آليات kprobes وuprobes.
    • تمت إضافة القدرة على استخدام استدعاء النظام kcmp() بغض النظر عن وظيفة لقطات حالة العملية (نقطة التفتيش/الاستعادة).
    • تمت إزالة وحدات الماكرو EXPORT_UNUSED_SYMBOL() وEXPORT_SYMBOL_GPL_FUTURE()، والتي لم يتم استخدامها عمليًا لسنوات عديدة.
  • المحاكاة الافتراضية والأمن
    • تمت إضافة آلية حماية KFence (Kernel Electric Fence)، والتي تكتشف الأخطاء عند العمل مع الذاكرة، مثل تجاوز المخزن المؤقت والوصول بعد تحرير الذاكرة. على عكس آلية تصحيح أخطاء KASAN، يتميز النظام الفرعي KFence بسرعة تشغيل عالية وحمل منخفض، مما يسمح لك بالتقاط أخطاء الذاكرة التي تظهر فقط على أنظمة العمل أو أثناء التشغيل طويل المدى.
    • تمت إضافة دعم لبرنامج Hypervisor ACRN، والذي تمت كتابته مع مراعاة الاستعداد للمهام في الوقت الفعلي والملاءمة للاستخدام في أنظمة المهام الحرجة. يوفر ACRN الحد الأدنى من الحمل، ويضمن زمن وصول منخفض واستجابة كافية عند التفاعل مع المعدات. يدعم المحاكاة الافتراضية لموارد وحدة المعالجة المركزية، والإدخال/الإخراج، والنظام الفرعي للشبكة، وعمليات الرسومات والصوت. يمكن استخدام ACRN لتشغيل العديد من الأجهزة الافتراضية المعزولة في وحدات التحكم الإلكترونية ولوحات الأدوات وأنظمة معلومات السيارات وأجهزة إنترنت الأشياء الاستهلاكية وغيرها من التقنيات المدمجة. تدعم ACRN نوعين من أنظمة الضيف - أجهزة VM للخدمة المميزة، والتي تُستخدم لإدارة موارد النظام (وحدة المعالجة المركزية، والذاكرة، والإدخال/الإخراج، وما إلى ذلك)، وأجهزة VM المخصصة للمستخدم، والتي يمكنها تشغيل توزيعات Linux وAndroid وWindows.
    • في النظام الفرعي IMA (بنية قياس التكامل)، الذي يحتفظ بقاعدة بيانات تجزئة للتحقق من سلامة الملفات والبيانات الوصفية المرتبطة بها، أصبح من الممكن الآن التحقق من سلامة بيانات النواة نفسها، على سبيل المثال، لتتبع التغييرات في قواعد SELinux .
    • تمت إضافة القدرة على اعتراض مكالمات Xen الفائقة وإعادة توجيهها إلى المحاكي الذي يعمل في مساحة المستخدم إلى برنامج Hypervisor KVM.
    • تمت إضافة القدرة على استخدام Linux كبيئة جذر لبرنامج Hyper-V Hypervisor. تتمتع البيئة الجذرية بإمكانية الوصول المباشر إلى الأجهزة وتُستخدم لتشغيل أنظمة الضيف (مماثلة لـ Dom0 في Xen). حتى الآن، كان Hyper-V (Microsoft Hypervisor) يدعم Linux فقط في بيئات الضيف، ولكن تم التحكم في برنامج Hypervisor نفسه من بيئة قائمة على Windows.
    • تمت إضافة دعم للتشفير المضمن لبطاقات eMMC، مما يسمح لك باستخدام آليات التشفير المضمنة في وحدة التحكم في المحرك والتي تعمل على تشفير الإدخال/الإخراج وفك تشفيره بشفافية.
    • تمت إزالة دعم تجزئة RIPE-MD 128/256/320 وTiger 128/160/192، التي لا يتم استخدامها في النواة، بالإضافة إلى تشفير تدفق Salsa20، الذي تم استبداله بخوارزمية ChaCha20، من نظام التشفير الفرعي. تم تحديث خوارزمية blake2 لتنفيذ blake2s.
  • النظام الفرعي للشبكة
    • تمت إضافة القدرة على نقل معالج الاستقصاء NAPI لأجهزة الشبكة إلى مؤشر ترابط kernel منفصل، مما يسمح بتحسين الأداء لبعض أنواع أحمال العمل. في السابق، كان يتم إجراء الاستقصاء في سياق softirq ولم يتم تغطيته بواسطة برنامج جدولة المهام، مما جعل من الصعب إجراء تحسينات دقيقة لتحقيق أقصى قدر من الأداء. يسمح التنفيذ في سلسلة عمليات kernel منفصلة بمراقبة معالج الاستقصاء من مساحة المستخدم، وإرفاقه بنوى وحدة المعالجة المركزية الفردية، وأخذه في الاعتبار عند جدولة تبديل المهام. لتمكين الوضع الجديد في sysfs، يتم اقتراح المعلمة /sys/class/net/ /threaded.
    • التكامل في قلب MPTCP (MultiPath TCP)، وهو امتداد لبروتوكول TCP لتنظيم تشغيل اتصال TCP مع تسليم الحزم في وقت واحد عبر عدة مسارات عبر واجهات شبكة مختلفة مرتبطة بعناوين IP مختلفة. يضيف الإصدار الجديد إمكانية تعيين الأولوية لسلاسل معينة، مما يسمح، على سبيل المثال، بتنظيم عمل سلاسل المحادثات الاحتياطية التي يتم تشغيلها فقط في حالة وجود مشاكل في السلسلة الأساسية.
    • يضيف IGMPv3 دعمًا لآلية EHT (تتبع المضيف الصريح).
    • يوفر محرك تصفية الحزم الخاص بـ Netfilter القدرة على امتلاك جداول معينة للحصول على تحكم حصري (على سبيل المثال، يمكن لعملية جدار الحماية في الخلفية الحصول على ملكية جداول معينة، مما يمنع أي شخص آخر من التدخل فيها).
  • معدات
    • قمنا بتنظيف منصات ARM القديمة والتي لم تتم صيانتها. تمت إزالة التعليمات البرمجية الخاصة بالأنظمة الأساسية efm32 وpicoxcell وprima2 وtango وu300 وzx وc6x، بالإضافة إلى برامج التشغيل المرتبطة بها.
    • يوفر برنامج تشغيل amdgpu القدرة على رفع تردد التشغيل لبطاقات (OverDrive) استنادًا إلى وحدة معالجة الرسومات Sienna Cichlid (Navi 22، Radeon RX 6xxx). تمت إضافة دعم لتنسيق FP16 بكسل لـ DCE (محرك وحدة التحكم في العرض) من الجيل الثامن إلى الجيل الحادي عشر. بالنسبة إلى GPU Navy Flounder (Navi 8) وAPU Van Gogh، تم تنفيذ القدرة على إعادة تعيين GPU.
    • يقوم برنامج التشغيل i915 لبطاقات الرسومات Intel بتطبيق المعلمة i915.mitigations لتعطيل آليات العزل والحماية لصالح تحسين الأداء. بالنسبة للرقائق التي تبدأ من Tiger Lake، يتم تضمين دعم آلية VRR (تحديث المعدل المتغير)، والتي تتيح لك تغيير معدل تحديث الشاشة بشكل تكيفي لضمان السلاسة وعدم وجود فجوات أثناء الألعاب. يتم تضمين دعم تقنية Intel Clear Color لتحسين دقة الألوان. تمت إضافة دعم لـ DP-HDMI 2.1. تم تنفيذ القدرة على التحكم في الإضاءة الخلفية للوحات eDP. بالنسبة لوحدات معالجة الرسومات Gen9 التي تدعم LSPCON (Level Shifter and Protocol Converter)، يتم تمكين دعم HDR.
    • يضيف برنامج التشغيل الجديد الدعم الأولي لوحدات معالجة الرسومات NVIDIA استنادًا إلى بنية GA100 (Ampere).
    • يضيف برنامج تشغيل msm دعمًا لوحدات معالجة الرسوميات Adreno 508 و509 و512 المستخدمة في شرائح SDM (Snapdragon) 630 و636 و660.
    • تمت إضافة دعم لبطاقات الصوت Sound BlasterX AE-5 Plus وLexicon I-ONIX FW810s وPioneer DJM-750. تمت إضافة دعم لنظام الصوت الفرعي Intel Alder Lake PCH-P. تم تنفيذ دعم محاكاة البرامج لتوصيل موصل الصوت وفصله لمعالجات تصحيح الأخطاء في مساحة المستخدم.
    • تمت إضافة دعم لوحدات تحكم ألعاب Nintendo 64 المصنعة في الفترة من 1996 إلى 2003 (لم تكتمل المحاولات السابقة لتوصيل Linux إلى Nintendo 64 وتم تصنيفها على أنها برامج بخارية). الدافع وراء إنشاء منفذ جديد لمنصة قديمة، والتي لم يتم إصدارها منذ ما يقرب من عشرين عامًا، هو الرغبة في تحفيز تطوير المحاكيات وتبسيط عملية نقل الألعاب.
    • تمت إضافة برنامج تشغيل لجهاز التحكم في الألعاب Sony PlayStation 5 DualSense.
    • تمت إضافة دعم للوحات وأجهزة ومنصات ARM: PineTab وSnapdragon 888 / SM8350 وSnapdragon MTP وTwo Beacon EmbeddedWorks وIntel eASIC N5X وNetgear R8000P وPlymovent M2M وBeacon i.MX8M Nano وNanoPi M4B.
    • تمت إضافة دعم للهواتف الذكية Purism Librem5 Evergreen وXperia Z3+/Z4/Z5 وASUS Zenfone 2 Laser وBQ Aquaris X5 وOnePlus6 وOnePlus6T وSamsung GT-I9070.
    • تمت إضافة برنامج تشغيل bcm-vk للوحات تسريع Broadcom VK (على سبيل المثال، لوحات Valkyrie وViper PCIe)، والتي يمكن استخدامها لتفريغ عمليات معالجة الصوت والفيديو والصور، بالإضافة إلى العمليات المتعلقة بالتشفير، إلى جهاز منفصل.
    • تمت إضافة دعم لمنصة Lenovo IdeaPad مع إمكانية التحكم في الشحن المستمر والإضاءة الخلفية للوحة المفاتيح. يتم أيضًا توفير الدعم لملف تعريف ACPI لمنصة ThinkPad مع القدرة على التحكم في أوضاع استهلاك الطاقة. تمت إضافة برنامج تشغيل للنظام الفرعي Lenovo ThinkPad X1 Tablet Gen 2 HID.
    • تمت إضافة برنامج تشغيل ov5647 مع دعم وحدة الكاميرا لـ Raspberry Pi.
    • تمت إضافة دعم للوحات RISC-V SoC FU740 وHiFive Unleashed. تمت أيضًا إضافة برنامج تشغيل جديد لشريحة Kendryte K210.

المصدر: opennet.ru

إضافة تعليق