إصدار Linux 6.6 kernel

بعد شهرين من التطوير، أصدر لينوس تورفالدس نواة لينكس 6.6. ومن بين التغييرات الأكثر أهمية: جدولة المهام الجديدة EEVDF؛ آلية كومة الظل للحماية من الاستغلال؛ دعم fs-verity في OverlayFS؛ تنفيذ الحصص و xattr في tmpfs؛ إعداد fsck عبر الإنترنت في XFS؛ تحسين تتبع تصدير الرموز "GPL فقط"؛ دعم منافذ الشبكة في io_uring؛ عشوائية الذاكرة في kmalloc(); لقد تم إيقاف استخدام ReiserFS؛ تمت إضافة العناصر الأساسية لبرنامج تشغيل NVK Vulkan إلى Nouveau.

يتضمن الإصدار الجديد 15291 إصلاحًا من 2058 مطورًا، وحجم التصحيح 39 ميجابايت (التغييرات أثرت على 14844 ملفًا، وتمت إضافة 553359 سطرًا من التعليمات البرمجية، وتمت إزالة 284012 سطرًا). كان الإصدار الأخير يحتوي على 14674 إصلاحًا من مطوري عام 2016، وكان حجم التصحيح 78 ميجابايت. حوالي 44% من جميع التغييرات التي تم تقديمها في 6.6 مرتبطة ببرامج تشغيل الأجهزة، وحوالي 17% من التغييرات مرتبطة بتحديث الكود الخاص بهندسة الأجهزة، و11% مرتبطة بمكدس الشبكة، و4% مرتبطة بأنظمة الملفات، و3% مرتبطة بأنظمة فرعية داخلية للنواة.

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

  • خدمات الذاكرة والنظام
    • تم تنفيذ جدول مهام جديد، EEVDF (أقرب موعد نهائي افتراضي مؤهل أولاً)، ليحل محل جدول CFS (المجدول العادل تمامًا)، والذي تم شحنه بدءًا من kernel 2.6.23. يأخذ المجدول الجديد في الاعتبار العمليات التي تلقت موارد معالج غير كافية أو تلقت كمية غير عادلة من وقت المعالج عند اختيار العملية التالية لنقل التنفيذ إليها. في الحالة الأولى، يتم نقل السيطرة على العملية قسراً، أما في الحالة الثانية، على العكس من ذلك، يتم تأجيلها. كان المجدول CFS القديم يستخدم القواعد التجريبية والضبط الدقيق لتحديد العمليات التي تحتاج إلى اهتمام خاص، بينما يتتبع المجدول الجديد هذه العمليات بشكل أكثر وضوحًا ولا يتطلب ضبطًا دقيقًا. من المتوقع أن يعمل EEVDF على تقليل زمن الوصول للمهام التي واجهت CFS صعوبة في جدولتها.
    • تم إجراء تغييرات على التعامل مع رموز GPL الداخلية فقط، بهدف جعل الأمر أكثر صعوبة بالنسبة للوحدات النمطية الملكية لاستخدام طبقات GPL لتجاوز قيود الوصول إلى أنظمة فرعية للنواة تسمح فقط بالوصول إلى الكود المرخص بموجب GPL. في وظيفة symbol_get()، يتم منع الوحدات النمطية الملكية من البحث عن الرموز التي تم وضع علامة عليها كـ GPL فقط، وعلى العكس من ذلك، لن تتمكن وحدات GPL من العثور على الرموز التي تم تصديرها بواسطة الوحدات النمطية الملكية.
    • تمت إضافة إعدادات إضافية غير مرتبطة لقائمة العمل لتحسين كفاءة إعادة استخدام ذاكرة التخزين المؤقت لوحدة المعالجة المركزية على الأنظمة الكبيرة ذات ذاكرة التخزين المؤقت L3 المتعددة. يتضمن النواة أيضًا أداة مساعدة، tools/workqueue/wq_dump.py، للتحقق من التكوين الحالي لطوابير العمل.
    • تم تحديث نظام io_uring الفرعي ليشمل الدعم الأولي للعمليات والأوامر الخاصة بمقبس الشبكة. تمت إضافة sysctl io_uring_disabled لتعطيل io_uring على مستوى النظام. كما يعمل io_uring أيضًا على تسريع الإدخال/الإخراج المباشر في الوضع غير المتزامن بشكل كبير. يصل معدل زيادة الإنتاجية وانخفاض زمن الوصول للإدخال والإخراج بعد إجراء التغييرات إلى 37%.
    • تم تنفيذ مُجمِّع JIT لـ BPF لهندسة PA-RISC.
    • تم تحديث الإعداد /sys/devices/system/cpu/smt/control لدعم المعلمات الرقمية التي تحدد عدد الخيوط المتاحة لكل نواة وحدة المعالجة المركزية (في السابق، كانت قيم "on" و"off" فقط مدعومة لتمكين وتعطيل دعم تعدد الخيوط المتماثل). يمكن استخدام الميزة الجديدة في بعض معالجات PowerPC التي تدعم تقنية SMT الساخنة لتمكين تقنية SMT بشكل انتقائي على أنوية محددة أثناء وقت التشغيل.
    • استمرار نقل التغييرات من فرع Rust-for-Linux المتعلقة باستخدام لغة Rust كلغة ثانية لتطوير برامج التشغيل ووحدات النواة (دعم Rust غير نشط بشكل افتراضي، ولا يؤدي إلى تضمين Rust في قائمة تبعيات البناء الإلزامية للنواة). تم الانتهاء من عملية التحول إلى استخدام إصداري Rust 1.71.1 وbindgen 0.65.1. تم تنفيذ نوع 'Zeroable'. تمت إضافة وحدات الماكرو الإجرائية "لصق!" و '#[derive(Zeroable)]'. تم ضمان التوافق مع '#[pin_data]'. تمت إضافة وظائف التهيئة '{,pin_}init_array_from_fn()' والطريقة '{,pin_}chain'. تم توسيع إمكانيات وحدة "الأنواع". تم تحديث إطار عمل اختبار وحدة kunit لدعم تشغيل الاختبارات من وثائق Rust.
    • تمت إضافة النظام الفرعي "eventfs"، والذي يسمح بتقليل استهلاك الذاكرة بشكل كبير في نظام التتبع من خلال التخلص من تخزين الهياكل غير الضرورية المستخدمة لتمثيل نقاط التتبع في نظام الملفات. في السابق، تم إنشاء هياكل مماثلة لجميع نقاط التتبع، بغض النظر عما إذا كان تم استخدام التتبع أم لا. مع eventfs، يمكن إنشاء مثل هذه الهياكل بشكل ديناميكي، فقط عندما تكون هناك حاجة إليها.
    • تم توسيع قدرات أداة الأداء.
    • تمت إضافة معلومات لتشخيص كفاءة آلية Kernel Samepage Merging (KSM) إلى ملف /proc/pid/smaps.
    • تمت إزالة واجهة برمجة التطبيقات Frontswap التي تسمح بوضع مساحة المبادلة في الذاكرة التي لا يمكن معالجتها بشكل مباشر ولا توفر معلومات في الوقت الفعلي حول مقدار المساحة الخالية. تم استخدام هذه الواجهة البرمجية فقط في zswap، لذلك تقرر استخدام هذه الوظيفة بشكل مباشر في zswap، والتخلص من الطبقات غير الضرورية.
    • بالنسبة لهندسة RISC-V، تمت إضافة الدعم للوصول إلى عدادات الأداء من مساحة المستخدم والقدرة على وضع تفريغ أساسي بعد تعطل في منطقة خارج حدود 4 جيجابايت.
    • تمت إضافة الدعم الأولي لتعليمات ARM SME (امتداد المصفوفة القابلة للتطوير).
    • تم تنفيذ القدرة على استخدام أدوات التصحيح KDB وKGDB وkcov وKFENCE وKASAN على الأنظمة ذات بنية LoongArch.
    • تمت إضافة الدعم لملفات اختبار النواة في نظام التكامل المستمر GitLab، والذي يستخدم في تطوير برامج تشغيل الرسومات.
  • نظام القرص الفرعي ، I / O وأنظمة الملفات
    • يدعم نظام ملفات OverlayFS الآن تخزين تجزئات fs-verity في السمة الممتدة overlay.verity (xattr)، والتي يمكن استخدامها للتحقق من سلامة وأصالة الملفات في طبقات OverlayFS السفلية باستخدام التجزئات والمفاتيح التشفيرية. وبالتالي، يتضمن OverlayFS الآن جميع التغييرات المطلوبة لمشروع Composefs للعمل كطبقة أعلى OverlayFS وEROFS.
    • تم إعداد نظام ملفات XFS لتنفيذ القدرة على استخدام أداة fsck للتحقق من المشكلات المكتشفة وتصحيحها عبر الإنترنت، دون الحاجة إلى إلغاء تثبيت نظام الملفات. بالإضافة إلى ذلك، ينفذ XFS القدرة على استخدام مجلدات كبيرة في ذاكرة التخزين المؤقت للصفحة ويضيف بعض التحسينات ذات الصلة التي تعمل على تحسين الأداء بشكل كبير لبعض أنواع أحمال العمل.
    • يدعم نظام الملفات tmpfs الآن السمات الممتدة للمستخدم (user xattrs)، والإدخال/الإخراج المباشر، والحصص المحددة للمستخدم والمجموعة. تم تثبيت إزاحات الدليل، مما أدى إلى حل المشكلات المتعلقة بتصدير tmpfs عبر NFS.
    • تمت إضافة علم FSCONFIG_CMD_CREATE_EXCL إلى واجهة برمجة تطبيقات إدارة التثبيت لتحسين الأمان، ومنع مشاركة الكتلة الفائقة عبر نقاط تثبيت متعددة (يمنع ربط قسم واحد بنقاط تثبيت متعددة). توفر أداة التثبيت خيار "--exclusive" لتمكين هذا العلم.
    • يدعم نظام VFS الفرعي الآن التغييرات التشغيلية للمعلمات باستخدام وقت الوصول ووقت التغيير (atime، mtime). في السابق، كانت بيانات الوقت تنعكس مع بعض التأخير، مما جعل من الصعب تتبع مدى أهمية البيانات في ذاكرة التخزين المؤقت في أنظمة مثل NFS (بسبب التأخير في اكتشاف التغييرات في الملف، قد يعتبر النظام عن طريق الخطأ أن البيانات الموجودة في ذاكرة التخزين المؤقت ذات صلة). الميزة الجديدة متاحة لأنظمة Btrfs وExt4 وtmpfs وXFS.
    • لقد أوقف نظام التشغيل Btrfs استخدام آلية التحقق من سلامة النظام المضمنة، والتي يتم تمكينها في وقت البناء عبر معلمة BTRFS_FS_CHECK_INTEGRITY. تظل الآلية المحددة غير مدعومة، ولم تعد قيد الاختبار، وتسبب حملاً إضافيًا على وحدة المعالجة المركزية والذاكرة. بالإضافة إلى ذلك، قام Btrfs بتحسين أداء كود فحص FS الجديد (scrub).
    • لقد أضاف نظام الملفات Ext4 فحوصات دورية لتحديثات superblock وقام بتسريع عمليات تخصيص الذاكرة عند الإضافة إلى نهاية الملف.
    • يدعم نظام FUSE الفرعي الآن سمة btime ("وقت الميلاد")، والتي تحدد الوقت الذي تم فيه إنشاء العقدة.
    • يُحظر تغيير الأذونات الخاصة بالروابط الرمزية.
    • تمت إضافة نداء النظام fchmodat2()، والذي يختلف عن نداء النظام fchmodat() من خلال وسيطة إضافية لتحديد العلامات. من بين الأعلام، يتم دعم AT_SYMLINK_NOFOLLOW وAT_EMPTY_PATH فقط حاليًا، مما يسمح لوظيفة libc fchmodat() بتنفيذ حظر إلغاء الرجوع إلى الروابط الرمزية والقدرة على استخدام موصوف ملف عند تحديد مسار فارغ دون حلول بديلة.
    • تم إضافة دعم لخوارزمية ضغط Deflate إلى نظام الملفات EROFS (نظام الملفات القابل للتمديد للقراءة فقط)، وهو نظام ملفات مصمم للاستخدام على الأقسام التي يمكن الوصول إليها في وضع القراءة فقط. لتسريع عملية البحث عن السمات الممتدة، يتم استخدام بنية مرشح بلوم الاحتمالية.
    • تمت إضافة إعداد CONFIG_BUFFER_HEAD، مما يسمح ببناء النواة دون استخدام بنية buffer_head. عند البناء بدون buffer_head، يمكنك استخدام أجهزة الكتلة وبعض أنظمة الملفات، مثل xfs، وbtrfs، وcramfs، وerofs، وsquashfs.
    • تم تحديث برنامج تشغيل جهاز كتلة ublk، والذي يسمح بنقل منطق محدد إلى جانب عملية مساحة المستخدم، لدعم أجهزة التخزين المقسمة (تقسيم مجموعات الكتل أو القطاعات إلى مناطق، يُسمح فيها فقط بإضافة البيانات بشكل متسلسل، مع تحديث المجموعة بأكملها من الكتل).
    • تم نقل تنفيذ نظام الملفات ReiserFS من الفئة المدعومة إلى الفئة القديمة. من المقرر أن ينتهي دعم ReiserFS في عام 2025. تشمل الأسباب المذكورة لإلغاء دعم ReiserFS الركود في دعم نظام الملفات هذا، ومشكلة 2038 التي لم يتم حلها، ونقص قدرات التسامح مع الأخطاء، والرغبة في تقليل الجهد المطلوب لدعم تغييرات نظام الملفات الشائعة المتعلقة بدعم واجهة برمجة التطبيقات الجديدة، وiomap، وfolios.
    • ينفذ خادم NFS آلية لتفويض عمليات الكتابة لـ NFSv4، مما يحسن كفاءة تخزين كتابة الملفات مؤقتًا لتقليل حركة المرور. تم تمكين الدعم لعملية READ_PLUS المحددة في NFS 4.2.
    • تمت إضافة دعم fscrypt إلى نظام ملفات Ceph.
  • المحاكاة الافتراضية والأمن
    • تمت إضافة تنفيذ لآلية Shadow Stack، والتي تسمح بحظر تشغيل العديد من الثغرات الأمنية باستخدام إمكانيات الأجهزة الخاصة بمعالجات Intel للحماية من الكتابة فوق عنوان العودة من وظيفة في حالة حدوث تجاوز في المخزن المؤقت في المكدس. جوهر الحماية هو أنه بعد نقل التحكم إلى وظيفة، يتم حفظ عنوان الإرجاع بواسطة المعالج ليس فقط في المكدس العادي، ولكن أيضًا في مكدس "ظل" منفصل، ولا يمكن تغييره بشكل مباشر. قبل الخروج من الوظيفة، يتم استخراج عنوان العودة من المكدس الظلي ومقارنته بعنوان العودة من المكدس الرئيسي. يؤدي عدم تطابق العنوان إلى إنشاء استثناء، مما يحظر المواقف التي نجح فيها الاستغلال في الكتابة فوق عنوان في المكدس الرئيسي. يتم دعم مجموعة الظل المادية فقط في الإصدارات ذات 64 بت، بينما تستخدم الإصدارات ذات 32 بت محاكاة البرامج.
    • تمت إضافة الدعم للبناء باستخدام مُجمِّع Clang مع تمكين وضع حماية CFI (سلامة تدفق التحكم)، والذي يمنع انتهاكات ترتيب التنفيذ الطبيعي (تدفق التحكم) نتيجة لاستخدام الثغرات التي تعدل مؤشرات الوظيفة المخزنة في الذاكرة.
    • بالنسبة لهندسة RISC-V، يتم تمكين التوزيع العشوائي لموضع النواة في الذاكرة عند بدء التشغيل.
    • تمت إضافة علامة SECCOMP_USER_NOTIF_FD_SYNC_WAKE_UP إلى نداء النظام seccomp()، مما يسمح بمعالجة الأحداث من العمليات التي تتم مراقبتها بشكل متزامن من أجل تشغيل أكثر كفاءة لمجدول المهام.
    • توفر وظيفة kmalloc() توزيعًا عشوائيًا لمخابئ الشرائح، مما يجعل استغلال نقاط ضعف النواة أكثر صعوبة.
    • تمت إزالة الخيارات المتعلقة بتمكين نظام فرض التحكم في الوصول SELinux من الإشارة إلى وكالة الأمن القومي الأمريكية. نظرًا لأن المشروع كان يتطور تحت جناح المجتمع لمدة 20 عامًا ويدعمه صيانون مستقلون، فقد تقرر التبديل إلى استخدام اسم "SELinux" بدلاً من "NSA SELinux" في التعليقات والوثائق في Kconfig (على سبيل المثال، تم تغيير شرح معلمة بناء SECURITY_SELINUX من "NSA SELinux Support" إلى "SELinux Support").
    • يحتوي استدعاء النظام userfaultfd() الآن على عملية UFFDIO_POISON التي تسمح بوضع علامة على صفحات الذاكرة على أنها مسمومة، والتي يمكن استخدامها لترحيل صفحات الذاكرة التالفة. آلة افتراضية من نظام إلى آخر.
    • تمت إضافة واجهة رمزية جديدة (/dev/vfio/devices/vfioX) إلى نظام VFIO الفرعي لإدارة أجهزة VFIO، مما يسمح للمستخدم بفتح ملف مباشرة باستخدام جهاز، دون الوصول إلى واجهة المجموعة القديمة /dev/vfio/$groupID.
    • В الخادم أسقطت خدمة NFS دعم أنواع تشفير Kerberos القديمة باستخدام خوارزميات DES و 3DES.
    • عند التشغيل في بيئة Hyper-V hypervisor، تمت إضافة الدعم لأنظمة الضيوف المحمية بواسطة تقنية AMD SEV-SNP (الترقيم المتداخل الآمن) وIntel TDX (امتدادات النطاق الموثوقة).
    • عند بناء النواة في وضع "W=1"، يكون المترجم لديه تحذيرات "-Wformat-overflow"، و"-Wformat-truncation"، و"-Wstringop-overflow"، و"-Wrestrict" مفعلة بشكل افتراضي. تم تمكين تحذير "-Wenum-conversion" لجميع الإصدارات.
  • النظام الفرعي للشبكة
    • تم توسيع نطاق تنفيذ عائلة عناوين AF_XDP (مسار البيانات السريع) لدعم الحزم المخزنة في مخازن مؤقتة متعددة (على سبيل المثال، قد تحتوي إحدى المخازن المؤقتة على رأس الحزمة، وقد تحتوي الثانية على بيانات، أو قد تحتوي سلسلة من المخازن المؤقتة المتعددة على إطارات إيثرنت ضخمة). يمكن الآن للبرامج التي تستخدم مآخذ AF_XDP استقبال وإرسال الحزم من مخازن مؤقتة متعددة في وقت واحد.
    • تم تحديث نظام BPF الفرعي لدعم إلغاء تجزئة حزم IPv4 وIPv6، بالإضافة إلى القدرة على تصفية الحزم المجزأة.
    • يحتوي BPF على معالج update_socket_protocol جديد يسمح لبرامج BPF بتغيير البروتوكول المطلوب للمنافذ الجديدة. على سبيل المثال، يمكن لبرنامج BPF استبدال بروتوكول TCP بشفافية باستخدام MPTCP (TCP متعدد المسارات) لتحسين حركة مرور التطبيقات. يضيف BPF أيضًا الدعم للتحكم في توجيه الحزم عبر التدفقات المختلفة في MPTCP.
    • تمت إزالة علم التطوير التجريبي من وحدة ksmbd، التي توفر تنفيذًا على مستوى النواة لخادم الملفات استنادًا إلى بروتوكول SMB3. تمت إضافة الدعم لدمج عمليات القراءة (قراءة الاستعلامات المركبة).
  • معدات
    • تم تحديث نظام DRM (مدير العرض المباشر) لدعم التشغيل الفعال لبرنامج تشغيل NVK مفتوح المصدر مع تنفيذ واجهة برمجة تطبيقات الرسومات Vulkan لبطاقات الرسومات NVIDIA. تم تصميم برنامج تشغيل Nouveau DRM في الأصل لتنفيذ OpenGL، لذا فهو يفتقر إلى العناصر الأساسية اللازمة لبرامج تشغيل Vulkan للعمل بشكل فعال، مثل دعم الكائنات المتزامنة وإدارة مساحة العناوين الافتراضية.
    • يدعم برنامج تشغيل AMDGPU SDMA 6.1.0، وHDP 6.1، وSMUIO 14.0، وPSP 14.0، وIH 6.1، وGFX 9.4.3. تمت إعادة صياغة كود تحميل البرامج الثابتة لـ PSP (معالج أمان النظام الأساسي). تم توسيع الدعم لتقنية المزامنة التكيفية FreeSync (تمت إضافة دعم لـ Freesync Panel Replay V2).
    • يستمر برنامج التشغيل i915 في دعم شرائح Intel Meteor Lake. تم تحسين الدعم لتقنية حماية النسخ HDCP (حماية المحتوى الرقمي عالي النطاق الترددي). تمت إعادة صياغة الكود للتفاعل مع الشاشة.
    • تمت إزالة الخيارات الخاصة بتعطيل تحميل التعليمات البرمجية الدقيقة في وقت البناء من Kconfig - MICROCODE_INTEL وMICROCODE_AMD. يتم الآن بناء النواة دائمًا باستخدام كود تمهيد التعليمات البرمجية الدقيقة لأنظمة x86، ولكن يمكن تعطيل تمهيد التعليمات البرمجية الدقيقة الفعلي عن طريق تحديد معلمة النواة 'dis_ucode_ldr'.
    • يتمتع نظام الصوت الآن بالقدرة على التحكم في أجهزة الصوت المتصلة عبر نظام IIO (الإدخال والإخراج الصناعي).
    • تمت إضافة الدعم لواجهات الصوت Intel LunarLake وIntel ArrowLake وAMD ACP5x وبرامج الترميز Cirrus Logic CS42L43 وRealtek RT1017 وTI TAS2781، بالإضافة إلى مكبرات الصوت Cirrus Logic CS35L56 وwinic aw88261. تمت إضافة الدعم لـASoC AMD Van Gogh.
    • تمت إضافة برنامج تشغيل USB MIDI 2.0 Gadget، الذي يحاكي واجهة USB MIDI 2.0، والمرتبط بجهاز ALSA UMP rawmidi.
    • تمت إضافة الدعم لوحدات التحكم Ethernet من Broadcom ASP 2.0 وMarvell 88Q2XXX.
    • تمت إضافة الدعم للوحات Visionox R66451 وTDO TL050HDV35 وKD070FHFID015 وInanbo T28CP45TN89 وEDT ET028013DMA ووحدات التحكم في العرض Loongson ووحدات التحكم في شاشة اللمس Azoteq IQS7222D/IQS7210A/7211A.
    • تمت إضافة دعم لـ ARM SoC Qualcomm SM4450 (Snapdragon 4 Gen 2)، وTI AM62P5، وIntel Agilex5، وQualcomm ipq5018، وAN400 (Amlogic T7)
    • تمت إضافة الدعم للوحات ARM Samsung Galaxy Tab 3 8.0، FriendlyElec NanoPC T6، Amlogic A311D2، Khadas Vim4، Xiaomi SM7125، Facebook Yosemite 4، Orange Pi Zero 3، Radxa ROCK 4SE.

في الوقت نفسه، قامت مؤسسة البرمجيات الحرة لأمريكا اللاتينية بإنشاء نسخة من نواة 6.6 المجانية تمامًا - Linux-libre 6.6-gnu، خالية من عناصر البرامج الثابتة وبرامج التشغيل التي تحتوي على مكونات غير حرة أو أقسام من التعليمات البرمجية التي يقتصر نطاق تطبيقها على الشركة المصنعة. يتضمن الإصدار 6.6 كود تنظيف الكائنات المحدث في برامج التشغيل والأنظمة الفرعية المختلفة، مثل TI gigabit RU ethernet، وMediaTek 792x wifi، وCirrus Logic cs42l43 mfd، وcs35l56 HD-audio، وبرامج تشغيل SoC aw88261. تم تنظيف أسماء الكائنات في ملفات dts لهندسة Aarch64. تم إزالة الكتل في برامج تشغيل ivpu الجديدة وبرامج تشغيل البلوتوث وبرامج تشغيل الشاشة التي تعمل باللمس ومُشفِّر/فك تشفير Qualcomm Venus V4L2.

المصدر: opennet.ru

إضافة تعليق