إصدار Linux 6.3 kernel

بعد شهرين من التطوير ، أصدر Linus Torvalds نواة Linux 6.3. من بين التغييرات الملحوظة: تنظيف منصات ARM القديمة وبرامج تشغيل الرسومات ، والتكامل المستمر لدعم لغة Rust ، وأداة hwnoise ، ودعم هياكل الأشجار ذات اللون الأحمر والأسود في BPF ، ووضع BIG TCP لـ IPv4 ، ومعيار Dhrystone المدمج ، والقدرة على التعطيل التنفيذ في memfd ، ودعم إنشاء برامج تشغيل HID باستخدام BPF ، تم إجراء تغييرات على Btrfs لتقليل تجزئة مجموعة الكتل.

قبل الإصدار الجديد 15637 إصلاحًا من 2055 مطورًا ؛ حجم التصحيح - 76 ميغا بايت (التغييرات أثرت على 14296 ملفًا ، تمت إضافة 1023183 سطرًا من التعليمات البرمجية ، وحذف 883103 سطرًا). للمقارنة ، في الإصدار السابق ، تم اقتراح 16843 إصلاحًا من 2178 مطورًا ؛ حجم الباتش - 62 ميجا بايت. ترتبط حوالي 39٪ من جميع التغييرات التي تم إدخالها في 6.3 kernel ببرامج تشغيل الأجهزة ، وحوالي 15٪ من التغييرات تتعلق بتحديث التعليمات البرمجية الخاصة بهياكل الأجهزة ، و 10٪ تتعلق بمكدس الشبكات ، و 5٪ بأنظمة الملفات ، و 3 ٪ إلى الأنظمة الفرعية الداخلية لـ kernel.

الابتكارات الرئيسية في kernel 6.3:

  • خدمات الذاكرة والنظام
    • تم إجراء عملية تنظيف كبيرة للشفرة المتعلقة بلوحات ARM القديمة وغير المستخدمة ، مما أدى إلى تقليل حجم مصادر النواة بمقدار 150 ألف سطر. تمت إزالة أكثر من 40 منصة ARM قديمة.
    • نفذت القدرة على إنشاء برامج تشغيل لأجهزة الإدخال باستخدام واجهة HID (جهاز الواجهة البشرية) المنفذة في شكل برامج BPF.
    • استمرار النقل من فرع Rust-for-Linux للوظائف الإضافية المتعلقة باستخدام Rust كلغة ثانية لتطوير برامج التشغيل ووحدات النواة. لا يتم تمكين دعم الصدأ افتراضيًا ، ولا ينتج عنه تضمين Rust باعتباره تبعية إلزامية لبناء kernel. تم توسيع الوظائف المقدمة في الإصدارات السابقة مع دعم أنواع القوس (تنفيذ مؤشرات عد مرجعية) ، ScopeGuard (ينظف عندما يكون خارج النطاق) ، و ForeignOwnable (يوفر حركة المؤشر بين C و Rust code). تمت إزالة الوحدة النمطية "استعارة" من الحزمة "تخصيص" (اكتب "Cow" والسمة "ToOwned"). من الملاحظ أن حالة دعم Rust في النواة قد اقتربت بالفعل من بدء قبول الوحدات النمطية الأولى المكتوبة في Rust في النواة.
    • يدعم نظام Linux في وضع المستخدم (تشغيل kernel كعملية مستخدم) على أنظمة x86-64 التعليمات البرمجية المكتوبة بلغة Rust. تمت إضافة دعم لإنشاء نظام Linux في وضع المستخدم باستخدام clang مع تمكين تحسينات وقت الارتباط (LTO).
    • تمت إضافة أداة hwnoise لتتبع التأخيرات الناتجة عن سلوك الأجهزة. يتم تحديد الانحرافات في وقت تنفيذ العمليات (الارتعاش) عند تعطيل معالجة المقاطعة ، والتي تتجاوز واحد ميكرو ثانية في 10 دقائق من العمليات الحسابية.
    • تمت إضافة وحدة kernel مع تطبيق Dhrystone المعياري الذي يمكن استخدامه لتقييم أداء وحدة المعالجة المركزية في التكوينات بدون مكونات مساحة المستخدم (على سبيل المثال ، في مرحلة النقل لـ SoCs الجديدة التي تنفذ تحميل kernel فقط).
    • تمت إضافة "cgroup.memory = nobpf" خيار سطر أوامر kernel لتعطيل محاسبة استهلاك الذاكرة لبرامج BPF ، والتي يمكن أن تكون مفيدة للأنظمة ذات الحاويات المعزولة.
    • بالنسبة لبرامج BPF ، يُقترح تنفيذ بنية بيانات الشجرة باللون الأحمر والأسود ، والتي تستخدم kfunc + kptr (bpf_rbtree_add ، bpf_rbtree_remove ، bpf_rbtree_first) بدلاً من إضافة نوع تعيين جديد.
    • في آلية التسلسلات القابلة لإعادة التشغيل (rseq ، التسلسلات القابلة لإعادة التشغيل) أضافت القدرة على تمرير معرفات التنفيذ المتوازي (معرّف التزامن لخريطة الذاكرة) المحددة برقم وحدة المعالجة المركزية إلى العمليات. يوفر Rseq وسيلة لتنفيذ العمليات بسرعة ذرية ، والتي ، في حالة مقاطعتها بواسطة مؤشر ترابط آخر ، يتم تنظيفها وإعادة المحاولة.
    • تدعم معالجات ARM تعليمات SME 2 (تمديد المصفوفة القابلة للتطوير).
    • بالنسبة إلى معماريات s390x و RISC-V RV64 ، يتم تنفيذ دعم آلية "BPF trampoline" ، مما يسمح بتقليل الحمل عند تحويل المكالمات بين برامج kernel و BPF.
    • في الأنظمة ذات المعالجات القائمة على بنية RISC-V ، تم استخدام تعليمات "ZBB" لتسريع عمليات السلسلة.
    • بالنسبة للأنظمة القائمة على بنية مجموعة تعليمات LoongArch (المستخدمة في معالجات Loongson 3 5000 وتنفيذ RISC ISA جديد مشابه لـ MIPS و RISC-V) ، ودعم التوزيع العشوائي لمساحة عنوان kernel (KASLR) ، ونقل النواة في الذاكرة (إعادة تحديد موقع) ) ، تتوقف نقاط الأجهزة وآلية kprobe.
    • آلية DAMOS (مخططات العمليات القائمة على مراقبة الوصول إلى البيانات) ، والتي تسمح لك بتحرير الذاكرة بناءً على تكرار الوصول إلى الذاكرة ، تدعم المرشحات لاستبعاد مناطق معينة من الذاكرة من المعالجة في DAMOS.
    • الحد الأدنى من مكتبة C القياسية Nolibc يدعم بنية s390 ومجموعة تعليمات Arm Thumb1 (بالإضافة إلى دعم ARM و AArch64 و i386 و x86_64 و RISC-V و MIPS).
    • تم تحسين Objtool لتسريع عمليات إنشاء النواة وتقليل ذروة استهلاك الذاكرة أثناء عمليات الإنشاء (عند إنشاء النواة في وضع "allyesconfig" ، لا توجد مشكلات في الإنهاء القسري للعمليات على الأنظمة ذات ذاكرة الوصول العشوائي (RAM) بسعة 32 جيجابايت).
    • توقف دعم تجميع النواة بواسطة مترجم Intel ICC ، والذي ظل عاطلاً عن العمل لفترة طويلة ولم يعرب أحد عن رغبته في إصلاحه.
  • نظام القرص الفرعي ، I / O وأنظمة الملفات
    • يدعم tmpfs تعيين معرف مستخدم نظام الملفات المثبت ، والذي يستخدم لتعيين ملفات مستخدم معين على قسم خارجي محمل إلى مستخدم آخر على النظام الحالي.
    • في Btrfs ، لتقليل تجزئة مجموعات الكتل ، يتم تقسيم النطاقات حسب الحجم عند تخصيص الكتل ، أي تقتصر أي مجموعة من الكتل الآن على نطاقات صغيرة (تصل إلى 128 كيلوبايت) ومتوسطة (تصل إلى 8 ميجابايت) وكبيرة. تم إعادة صياغة تنفيذ raid56. إعادة تصميم الكود لفحص المجاميع الاختبارية. تم إجراء تحسينات في الأداء لتسريع عملية الإرسال بما يصل إلى 10 مرات عن طريق التخزين المؤقت للدلائل وتنفيذ الأوامر عند الحاجة فقط. 10 مرات أسرع في عمليات fiemap عن طريق تخطي عمليات التحقق من الروابط الخلفية للبيانات المشتركة (لقطات). يتم تسريع العمليات باستخدام البيانات الوصفية بنسبة XNUMX٪ عن طريق تحسين البحث عن المفاتيح في هياكل b-tree.
    • تم تحسين أداء ext4 FS من خلال السماح لعمليات متعددة بأداء عمليات الإدخال / الإخراج المباشرة في وقت واحد إلى الكتل المخصصة مسبقًا باستخدام أقفال inode المشتركة بدلاً من الأقفال الحصرية.
    • في f2fs ، تم العمل لتحسين قابلية قراءة الكود. تم إصلاح المشكلات المهمة المتعلقة بالكتابة الذرية وذاكرة التخزين المؤقت للمدى الجديد.
    • مصمم لأقسام القراءة فقط ، EROFS (نظام الملفات المحسن للقراءة فقط) لديه القدرة على ربط عمليات فك ضغط الملفات المضغوطة بوحدة المعالجة المركزية لتقليل زمن الوصول إلى البيانات.
    • أضاف جدولة BFQ I / O دعمًا لمحركات الأقراص الدوارة المتقدمة ، مثل تلك التي تستخدم محركات أقراص متعددة يتم التحكم فيها بشكل منفصل (Multi Actuator).
    • تمت إضافة دعم تشفير البيانات باستخدام خوارزمية AES-SHA2 إلى تنفيذ عميل وخادم NFS.
    • أضاف النظام الفرعي FUSE (أنظمة الملفات في مساحة المستخدم) دعمًا لآلية امتداد الاستعلام ، مما يسمح لك بوضع معلومات إضافية في الاستعلام. بناءً على هذه الميزة ، يتم تنفيذ إضافة معرفات المجموعة إلى طلب FS ، والتي تعد ضرورية لمراعاة حقوق الوصول عند إنشاء كائنات في FS (create ، mkdir ، symlink ، mknod).
  • المحاكاة الافتراضية والأمن
    • يضيف برنامج Hypervisor KVM لأنظمة x86 دعمًا لمكالمات Hyper-V المفرطة الممتدة ويوفر لهم إعادة التوجيه إلى معالج يعمل في بيئة مضيفة لمساحة المستخدم. أتاح التغيير إمكانية تنفيذ دعم التشغيل المتداخل لـ Hyper-V hypervisor.
    • تسهل KVM تقييد وصول نظام الضيف إلى أحداث PMU (وحدة مراقبة الأداء) المتعلقة بقياس الأداء.
    • تمت إضافة آلية memfd ، التي تتيح لك تحديد منطقة الذاكرة من خلال واصف ملف يتم تمريره بين العمليات ، القدرة على إنشاء مناطق يُحظر فيها تنفيذ الكود (memfd غير القابل للتنفيذ) ومن المستحيل تعيين حقوق التنفيذ في مستقبل.
    • تمت إضافة عملية prctl PR_SET_MDWE جديدة لمنع محاولات تضمين حقوق الوصول إلى الذاكرة التي تسمح بالكتابة والتنفيذ في نفس الوقت.
    • تمت إضافة وتمكين الحماية الافتراضية ضد هجمات فئة Specter ، والتي يتم تنفيذها على أساس الوضع التلقائي IBRS (تكهنات محسّنة غير مباشرة متفرعة) مقترح في معالجات AMD Zen 4 ، والذي يسمح لك بتمكين وتعطيل تنفيذ المضاربة للتعليمات أثناء المقاطعة المعالجة واستدعاءات النظام ومفاتيح السياق. تؤدي الحماية المقترحة إلى انخفاض النفقات العامة مقارنةً بحماية Retpoline.
    • يعالج ثغرة يمكن أن تتجاوز الحماية من هجوم Specter v2 عند استخدام تقنية خيوط المعالجة المتعددة المتزامنة (SMT أو Hyper-Threading) والتي تنتج عن تعطيل STIBP (مؤشر ترابط فردي غير مباشر للتنبؤ بالفرع) عند تحديد وضع حماية IBRS.
    • بالنسبة للأنظمة المستندة إلى ARM64 ، تمت إضافة هدف بناء "Virtconfig" جديد ، والذي عند تحديده ، ينشط فقط الحد الأدنى من مجموعة مكونات النواة المطلوبة للتمهيد في أنظمة المحاكاة الافتراضية.
    • تمت إضافة دعم لتصفية مكالمات النظام باستخدام آلية seccomp لبنية m68k.
    • تمت إضافة دعم لأجهزة CRB TPM2 المضمنة في معالجات AMD Ryzen (المخزن المؤقت لاستجابة الأوامر) استنادًا إلى تقنية Microsoft Pluton.
  • النظام الفرعي للشبكة
    • تمت إضافة واجهة netlink لتكوين الطبقة الفرعية PLCA (تجنب تصادم الطبقة المادية) ، المحددة في مواصفات IEEE 802.3cg-2019 والمستخدمة في شبكات Ethernet 802.3cg (10Base-T1S) المحسّنة لتوصيل أجهزة إنترنت الأشياء والأنظمة الصناعية. يعمل استخدام PLCA على تحسين الأداء على شبكات إيثرنت للوسائط المشتركة.
    • تم إيقاف دعم واجهة برمجة تطبيقات "الامتدادات اللاسلكية" لإدارة الواجهات اللاسلكية لشبكة WiFi 7 (802.11be) ، نظرًا لأن واجهة برمجة التطبيقات هذه لا تغطي جميع الإعدادات الضرورية. عند محاولة استخدام واجهة برمجة تطبيقات "الامتدادات اللاسلكية" ، والتي تستمر في دعمها كطبقة تمت محاكاتها ، سيتم الآن عرض تحذير لمعظم الأجهزة الحالية.
    • تم إعداد وثائق تفصيلية حول netlink API (لمطوري kernel ولمطوري تطبيقات مساحة المستخدم). تم تنفيذ الأداة المساعدة ynl-gen-c لإنشاء كود C بناءً على مواصفات YAML لبروتوكول Netlink.
    • تمت إضافة دعم الخيار IP_LOCAL_PORT_RANGE إلى مآخذ الشبكة لتبسيط تكوين الاتصالات الصادرة من خلال مترجمي العناوين دون استخدام SNAT. عند استخدام نفس عنوان IP على عدة مضيفين ، يسمح IP_LOCAL_PORT_RANGE لكل مضيف باستخدام النطاق الخاص به من منافذ الشبكة الصادرة ، وعلى البوابة لإعادة توجيه الحزم بناءً على أرقام المنافذ.
    • بالنسبة لـ MPTCP (MultiPath TCP) ، يتم تنفيذ القدرة على معالجة التدفقات المختلطة التي تستخدم بروتوكولات IPv4 و IPv6. MPTCP هو امتداد لبروتوكول TCP لتنظيم عملية اتصال TCP مع تسليم الحزم في وقت واحد على طول مسارات متعددة من خلال واجهات شبكة مختلفة مرتبطة بعناوين IP مختلفة.
    • بالنسبة إلى IPv4 ، يتم تنفيذ إمكانية استخدام امتداد BIG TCP ، والذي يسمح بزيادة الحد الأقصى لحجم حزمة TCP حتى 4 جيجا بايت لتحسين تشغيل الشبكات الداخلية عالية السرعة لمراكز البيانات. يتم تحقيق هذه الزيادة في حجم الحزمة مع حقل رأس 16 بت من خلال تنفيذ حزم "جامبو" لها حجم رأس IP مضبوطًا على 0 والحجم الفعلي الذي يتم إرساله في حقل منفصل 32 بت في رأس مرفق منفصل.
    • تمت إضافة معلمة sysctl جديدة default_rps_mask ، يمكنك من خلالها تعيين تكوين RPS الافتراضي (توجيه حزمة التلقي) ، وهو المسؤول عن توزيع معالجة حركة المرور الواردة عبر مراكز وحدة المعالجة المركزية على مستوى معالج المقاطعة.
    • توقف دعم قواعد الانتظار لتقييد حركة مرور CBQ (قائمة الانتظار على أساس الفئة) ، ATM (دوائر ATM الافتراضية) ، dsmark (علامة الخدمة المتباينة) ، tcindex (مؤشر التحكم في حركة المرور) ، وحركة مرور RSVP (بروتوكول حجز الموارد). تم التخلي عن هذه الضوابط لفترة طويلة ولم يكن أحد على استعداد لمواصلة دعمها.
  • معدات
    • تمت إزالة جميع برامج تشغيل الرسومات القائمة على DRI1: i810 (بطاقات الرسومات المدمجة Intel 8xx القديمة) ، و mga (Matrox GPU) ، و r128 (ATI Rage 128 GPU بما في ذلك بطاقات Rage Fury ، و XPERT 99 و XPERT 128) ، و Savage (S3 Savage GPU) ، و sis ( Crusty SiS GPU) و tdfx (3dfx Voodoo) وعبر (VIA IGP) ، والتي تم إهمالها في عام 2016 ولم يتم دعمها في Mesa منذ عام 2012.
    • تمت إزالة برامج تشغيل الإطارات الاحتياطية القديمة (fbdev) omap1 و s3c2410 و tmiofb و w100fb.
    • تمت إضافة برنامج تشغيل DRM إلى VPU (وحدة المعالجة متعددة الاستخدامات) المدمجة في وحدات المعالجة المركزية Intel Meteor Lake (الجيل الرابع عشر) ، المصممة لتسريع رؤية الكمبيوتر وعمليات التعلم الآلي. يتم تنفيذ برنامج التشغيل باستخدام النظام الفرعي "التسريع" ، والذي يهدف إلى توفير الدعم لمسرعات الحوسبة ، والتي يمكن توفيرها في شكل ASICs منفصلة وككتل IP داخل SoC و GPU.
    • يوسع برنامج التشغيل i915 (Intel) الدعم لبطاقات رسومات Intel Arc (DG2 / Alchemist) المنفصلة ، ويوفر دعمًا أوليًا لوحدات معالجة الرسومات Meteor Lake ، ويتضمن دعمًا لوحدات معالجة الرسومات Intel Xe HP 4tile.
    • يضيف برنامج تشغيل amdgpu دعمًا لتقنية AdaptiveSync والقدرة على استخدام العرض الآمن مع شاشات متعددة. دعم محدث لـ DCN 3.2 (Display Core Next) و SR-IOV RAS و VCN RAS و SMU 13.x و DP 2.1.
    • تمت إضافة دعم الأنظمة الأساسية SM8350 و SM8450 SM8550 و SDM845 و SC8280XP إلى برنامج تشغيل msm (GPU Qualcomm Adreno).
    • أسقط برنامج تشغيل Nouveau دعم مكالمات ioctl القديمة.
    • تمت إضافة الدعم التجريبي لـ NPU VerSilicon (معالج الشبكة العصبية VeriSilicon) إلى برنامج تشغيل etnaviv.
    • تم تنفيذ برنامج التشغيل pata_parport لمحركات أقراص IDE المتصلة عبر منفذ متوازي. أتاح برنامج التشغيل المضاف إزالة برنامج التشغيل القديم PARIDE من النواة وترقية نظام ATA الفرعي. يتمثل أحد قيود برنامج التشغيل الجديد في عدم القدرة على توصيل طابعة وقرص في نفس الوقت عبر منفذ متوازي.
    • تمت إضافة برنامج تشغيل ath12k للبطاقات اللاسلكية على أساس شرائح Qualcomm مع دعم Wi-Fi 7. دعم إضافي للبطاقات اللاسلكية على أساس شرائح RealTek RTL8188EU.
    • دعم إضافي لـ 46 لوحة استنادًا إلى بنية ARM64 ، بما في ذلك Samsung Galaxy tab A (2015) ، و Samsung Galaxy S5 ، و BananaPi R3 ، و Debix Model A ، و EmbedFire LubanCat 1/2 ، و Facebook Greatlakes ، و Orange Pi R1 Plus ، و Tesla FSD ، وكذلك الأجهزة استنادًا إلى SoC Qualcomm MSM8953 (Snapdragon 610) و SM8550 (Snapdragon 8 Gen 2) و SDM450 و SDM632 و Rockchips RK3128 TV box و RV1126 Vision و RK3588 و RK3568 و RK3566 و RK3588 و RK3328 و TI K3 (AM642 / AM 654 / AM AM68).

في الوقت نفسه ، شكلت مؤسسة البرمجيات الحرة في أمريكا اللاتينية نوعًا مختلفًا من النواة المجانية تمامًا 6.3 - Linux-libre 6.3-gnu ، خالية من البرامج الثابتة وعناصر برنامج التشغيل التي تحتوي على مكونات غير مجانية أو أقسام التعليمات البرمجية ، والتي يقتصر نطاقها على الشركة المصنعة. في الإصدار 6.3 ، تم تنظيف blobs في برامج تشغيل ath12k و aw88395 و peb2466 الجديدة ، وكذلك في ثلاثة ملفات جديدة لأجهزة qcom المستندة إلى AArch64. تم تحديث كود تنظيف blobs في برامج التشغيل والأنظمة الفرعية amdgpu و xhci-rcar و qcom-q6v5-pas و sp8870 و av7110 وكذلك في برامج تشغيل بطاقات DVB مع فك تشفير البرامج وملفات BPF المجمعة مسبقًا. برامج تشغيل التطهير المتوقفة mga و r128 و tm6000 و cpia2 و r8188eu حيث تمت إزالتها من النواة. تنظيف محسّن لـ i915 driver blob.

المصدر: opennet.ru

إضافة تعليق