إصدار Linux 6.7 kernel

بعد شهرين من التطوير، قدم لينوس تورفالدس إصدار Linux kernel 6.7. ومن أبرز التغييرات: تكامل نظام الملفات Bcachefs، ووقف دعم بنية Itanium، وقدرة Nouvea على العمل مع البرامج الثابتة GSP-R، ودعم تشفير TLS في NVMe-TCP، والقدرة على استخدام الاستثناءات في BPF، دعم futex في io_uring، وتحسين أداء جدولة fq (قائمة الانتظار العادلة)، ودعم امتداد TCP-AO (خيار مصادقة TCP) والقدرة على تقييد اتصالات الشبكة في آلية أمان Landlock، وإضافة التحكم في الوصول إلى مساحة اسم المستخدم وio_uring عبر AppArmor.

يتضمن الإصدار الجديد 18405 إصلاحًا من 2066 مطورًا، وحجم التصحيح هو 72 ميجابايت (أثرت التغييرات على 13467 ملفًا، وتمت إضافة 906147 سطرًا من التعليمات البرمجية، وتم حذف 341048 سطرًا). الإصدار الأخير يحتوي على 15291 إصلاحًا من 2058 مطورًا، وكان حجم التصحيح 39 ميجابايت. حوالي 45% من جميع التغييرات التي تم إدخالها في 6.7 تتعلق ببرامج تشغيل الأجهزة، وحوالي 14% من التغييرات تتعلق بتحديث التعليمات البرمجية الخاصة ببنيات الأجهزة، و13% تتعلق بمكدس الشبكة، و5% تتعلق بأنظمة الملفات، و3% ترتبط بالأنظمة الفرعية للنواة الداخلية.

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

  • نظام القرص الفرعي ، I / O وأنظمة الملفات
    • تعتمد النواة رمز نظام الملفات Bcachefs، الذي يحاول تحقيق الأداء والموثوقية وقابلية التوسع لـ XFS، جنبًا إلى جنب مع عناصر الوظائف المتقدمة الموجودة في Btrfs وZFS. على سبيل المثال، يدعم Bcachefs ميزات مثل تضمين أجهزة متعددة في قسم ما، وتخطيطات محركات الأقراص متعددة الطبقات (الطبقة السفلية مع البيانات المستخدمة بشكل متكرر بناءً على محركات أقراص SSD السريعة، والطبقة العليا مع البيانات الأقل استخدامًا من محركات الأقراص الثابتة)، والنسخ المتماثل (RAID) 1/10)، والتخزين المؤقت، وضغط البيانات الشفاف (أوضاع LZ4 وgzip وZSTD)، وشرائح الحالة (اللقطات)، والتحقق من التكامل باستخدام المجاميع الاختبارية، والقدرة على تخزين رموز تصحيح أخطاء Reed-Solomon (RAID 5/6)، وتخزين المعلومات في نموذج مشفر (يتم استخدام ChaCha20 وPoly1305). من حيث الأداء، يتفوق Bcachefs على Btrfs وأنظمة الملفات الأخرى القائمة على آلية النسخ عند الكتابة، ويظهر سرعة تشغيل قريبة من Ext4 وXFS.
    • يقدم نظام الملفات Btrfs وضع حصة مبسطة يسمح لك بتحقيق أداء أعلى من خلال تتبع النطاقات فقط في القسم الفرعي الذي تم إنشاؤها فيه، مما يبسط العمليات الحسابية بشكل كبير ويحسن الأداء، ولكنه لا يسمح لك بأخذ النطاقات المشتركة في العديد من الاعتبارات الأقسام الفرعية.
    • أضافت Btrfs بنية بيانات "شجرة شريطية" جديدة، مناسبة لتعيين النطاق المنطقي في المواقف التي لا تتطابق فيها التعيينات الفعلية عبر الأجهزة. تُستخدم البنية حاليًا في تطبيقات RAID0 وRAID1 لأجهزة الكتل المخصصة للمنطقة. في المستقبل، يخططون لاستخدام هذا الهيكل في RAIDs ذات المستوى الأعلى، مما سيحل عددًا من المشكلات الموجودة في التنفيذ الحالي.
    • يقدم نظام الملفات Ceph دعمًا لتعيين معرفات المستخدمين لأنظمة الملفات المثبتة، المستخدمة لمطابقة ملفات مستخدم معين على قسم خارجي مثبت مع مستخدم آخر على النظام الحالي.
    • تمت إضافة القدرة على تحديد uid وgid عند التثبيت على efivarfs للسماح للعمليات غير الجذرية بتغيير متغيرات UEFI.
    • تمت إضافة مكالمات ioctl إلى exFAT لقراءة سمات FS وتغييرها. تمت إضافة معالجة للأدلة ذات الحجم الصفري.
    • ينفذ F2FS القدرة على استخدام كتل بحجم 16 كيلو بايت.
    • تم تبديل آلية التثبيت التلقائي autofs لاستخدام واجهة برمجة تطبيقات تثبيت القسم الجديد.
    • يوفر OverlayFS خيارات التثبيت "lowerdir+" و"datadir+". تمت إضافة دعم للتركيب المتداخل لـ OverlayFS مع xattrs.
    • قام XFS بتحسين تحميل وحدة المعالجة المركزية في كود تخصيص الكتلة في الوقت الفعلي. يتم توفير القدرة على إجراء عمليات القراءة وFICLONE في وقت واحد.
    • تم تحويل رمز EXT2 لاستخدام أوراق الصفحة.
  • خدمات الذاكرة والنظام
    • تم إيقاف دعم بنية ia64 المستخدمة في معالجات Intel Itanium، والتي تم إيقافها بالكامل في عام 2021. تم تقديم معالجات Itanium بواسطة Intel في عام 2001، لكن بنية ia64 فشلت في التنافس مع AMD64، ويرجع ذلك أساسًا إلى الأداء العالي لـ AMD64 والانتقال الأكثر سلاسة من معالجات 32 بت x86. ونتيجة لذلك، تحولت اهتمامات إنتل لصالح معالجات x86-64، وظلت مجموعة Itanium عبارة عن خوادم HP Integrity، التي توقفت طلباتها منذ ثلاث سنوات. تمت إزالة كود دعم ia64 من النواة ويرجع ذلك أساسًا إلى نقص الدعم على المدى الطويل لهذه المنصة، بينما أعرب Linus Torvalds عن استعداده لإعادة دعم ia64 إلى النواة، ولكن فقط إذا كان هناك مشرف يمكنه إثبات الجودة العالية دعم هذه المنصة خارج النواة الرئيسية لمدة سنة على الأقل .
    • تمت إضافة معلمة أمر سطر kernel "ia32_emulation"، والتي تسمح لك بتمكين أو تعطيل دعم محاكاة وضع 32 بت في النوى المصممة للبنية x86-64 في مرحلة التمهيد. على الجانب العملي، يتيح لك الخيار الجديد بناء النواة مع دعم التوافق مع تطبيقات 32 بت، ولكن قم بتعطيل هذا الوضع افتراضيًا لتقليل ناقل الهجوم على النواة، نظرًا لأن واجهة برمجة تطبيقات التوافق أقل اختبارًا من النواة الرئيسية واجهات.
    • استمرار ترحيل التغييرات من فرع Rust-for-Linux المتعلقة باستخدام لغة Rust كلغة ثانية لتطوير برامج التشغيل ووحدات kernel (دعم Rust ليس نشطًا بشكل افتراضي، ولا يؤدي إلى إدراج Rust ضمن تبعيات التجميع المطلوبة للنواة). يقوم الإصدار الجديد بالانتقال إلى استخدام إصدار Rust 1.73 ويقدم مجموعة من الارتباطات للعمل مع قوائم انتظار العمل.
    • من الممكن استخدام آلية binfmt_misc لإضافة دعم لتنسيقات الملفات القابلة للتنفيذ الجديدة (على سبيل المثال، لتشغيل تطبيقات Java أو Python المترجمة) ضمن مساحات أسماء منفصلة غير مميزة.
    • توفر مجموعة cpuset لوحدة تحكم cgroup، والتي تسمح لك بالتحكم في استخدام مراكز وحدة المعالجة المركزية عند تنفيذ مهمة، تقسيمًا إلى قسم محلي وعن بعد، والذي يختلف في ما إذا كانت مجموعة cgroup الأصلية هي القسم الجذر الصحيح أم لا. تمت أيضًا إضافة الإعدادات الجديدة "cpuset.cpus.exclusive" و"cpuset.cpus.excluisve.efficiency" إلى وحدة المعالجة المركزية لربط وحدة المعالجة المركزية الحصرية.
    • ينفذ نظام BPF الفرعي دعمًا للاستثناءات، التي تتم معالجتها كمخرج طوارئ من برنامج BPF مع القدرة على فك إطارات المكدس بأمان. بالإضافة إلى ذلك، تسمح برامج BPF باستخدام مؤشرات kptr فيما يتعلق بوحدة المعالجة المركزية.
    • تمت إضافة دعم العمليات باستخدام futex إلى النظام الفرعي io_uring، وتم تنفيذ عمليات جديدة: IORING_OP_WAITID (إصدار غير متزامن من waitid)، وSOCKET_URING_OP_GETSOCKOPT (خيار getsockoptand)، وSOCKET_URING_OP_SETSOCKOPT (خيار setsockopt)، وIORING_OP_READ_MULTISHOT (عمليات القراءة المتعددة التي لا تتوقف أثناء التشغيل). هناك بيانات أو ليس المخزن المؤقت الكامل).
    • تمت إضافة تنفيذ لقوائم انتظار FIFO خفيفة الوزن ومتصلة بشكل فردي والتي تتطلب قفل دوران فقط لإلغاء قائمة الانتظار في سياق العملية والاستغناء عن قفل Spinlock للإضافات الذرية إلى قائمة الانتظار في أي سياق.
    • تمت إضافة مخزن مؤقت حلقي "objpool" مع تنفيذ قابل للتطوير لقائمة انتظار عالية الأداء لتخصيص الكائنات وإرجاعها.
    • تمت إضافة الجزء الأولي من التغييرات لتنفيذ واجهة برمجة تطبيقات futex2 الجديدة، والتي تتمتع بأداء أفضل على أنظمة NUMA، وتدعم أحجامًا أخرى غير 32 بت، ويمكن استخدامها بدلاً من استدعاء نظام futex() المتعدد.
    • بالنسبة إلى معماريات ARM32 وS390x، تمت إضافة دعم للمجموعة الحالية (cpuv4) لتعليمات BPF.
    • بالنسبة لبنية RISC-V، من الممكن استخدام وضع التحقق من Shadow-Call Stack المتوفر في Clang 17، المصمم للحماية من الكتابة فوق عنوان المرسل من وظيفة في حالة تجاوز سعة المخزن المؤقت على المكدس. يتمثل جوهر الحماية في حفظ عنوان الإرجاع في مكدس "ظل" منفصل بعد نقل التحكم إلى الوظيفة واسترداد هذا العنوان قبل الخروج من الوظيفة.
    • تمت إضافة وضع مسح جديد لصفحات الذاكرة الذكية إلى آلية دمج صفحات الذاكرة المتطابقة (KSM: Kernel Samepage Merging)، والذي يتتبع الصفحات التي تم مسحها ضوئيًا دون جدوى ويقلل من شدة إعادة مسحها. لتمكين الوضع الجديد، تمت إضافة الإعداد /sys/kernel/mm/ksm/smart_scan.
    • تمت إضافة أمر ioctl جديد PAGEMAP_SCAN، والذي، عند استخدامه مع userfaultfd()، يسمح لك بتحديد حقائق الكتابة إلى نطاق ذاكرة معين. الميزة الجديدة، على سبيل المثال، يمكن استخدامها في النظام لحفظ واستعادة حالة عمليات CRIU أو في أنظمة مكافحة الغش في اللعبة.
    • في نظام التجميع، إذا كان مترجم Clang متاحًا، فسيتم تمكين تجميع أمثلة استخدام نظام الأداء الفرعي، المكتوب كبرامج BPF، بشكل افتراضي.
    • تمت إزالة طبقة videobuf القديمة، والتي كانت تستخدم لإدارة الإطارات المؤقتة في النظام الفرعي للوسائط وتم استبدالها بتطبيق جديد لـ videobuf10 منذ أكثر من 2 سنوات.
  • المحاكاة الافتراضية والأمن
    • تمت إضافة القدرة على تشفير البيانات في كتل أصغر من حجم الكتلة في نظام الملفات إلى نظام fscrypt الفرعي. قد يكون هذا مطلوبًا لتمكين آليات تشفير الأجهزة التي تدعم الكتل الصغيرة فقط (على سبيل المثال، يمكن استخدام وحدات تحكم UFS التي تدعم حجم كتلة 4096 فقط مع نظام ملفات بحجم كتلة 16 كيلو بايت).
    • أضاف النظام الفرعي "iommufd"، الذي يسمح لك بإدارة جداول صفحات ذاكرة IOMMU (وحدة إدارة ذاكرة الإدخال/الإخراج) من خلال واصفات الملفات من مساحة المستخدم، تتبع البيانات التي لم يتم مسحها بعد من ذاكرة التخزين المؤقت (القذرة) لـ DMA العمليات، وهو أمر ضروري لتحديد الذاكرة التي تحتوي على بيانات غير مسحوبة أثناء ترحيل العملية.
    • تمت إضافة دعم تحديد قواعد التحكم في الوصول لمآخذ توصيل TCP إلى آلية Landlock، مما يسمح لك بالحد من تفاعل مجموعة من العمليات مع البيئة الخارجية. على سبيل المثال، يمكنك إنشاء قاعدة تسمح فقط بالوصول إلى منفذ الشبكة 443 لإنشاء اتصالات HTTPS.
    • أضاف النظام الفرعي AppArmor القدرة على التحكم في الوصول إلى آلية io_uring وإنشاء مساحات أسماء المستخدمين، مما يسمح لك بالسماح بشكل انتقائي بالوصول إلى هذه الإمكانات لعمليات معينة فقط.
    • تمت إضافة واجهة برمجة تطبيقات شهادة الجهاز الظاهري للتحقق من سلامة عملية تمهيد الجهاز الظاهري.
    • تدعم أنظمة LoongArch المحاكاة الافتراضية باستخدام برنامج Hypervisor KVM.
    • عند استخدام برنامج Hypervisor KVM على أنظمة RISC-V، ظهر دعم لامتداد Smstateen، الذي يمنع الجهاز الظاهري من الوصول إلى سجلات وحدة المعالجة المركزية التي لا يدعمها برنامج Hypervisor بشكل صريح. تمت إضافة دعم أيضًا لاستخدام ملحق Zicond في أنظمة الضيف، والذي يسمح باستخدام بعض عمليات الأعداد الصحيحة المشروطة.
    • في أنظمة الضيف المستندة إلى x86 والتي تعمل ضمن KVM، يُسمح بما يصل إلى 4096 وحدة معالجة مركزية افتراضية.
  • النظام الفرعي للشبكة
    • أضاف برنامج تشغيل NVMe-TCP (NVMe عبر TCP)، الذي يسمح لك بالوصول إلى محركات أقراص NVMe عبر الشبكة (NVM Express over Fabrics) باستخدام بروتوكول TCP، دعمًا لتشفير قناة نقل البيانات باستخدام TLS (باستخدام KTLS وعملية الخلفية في مساحة المستخدم tlshd للتفاوض على الاتصال).
    • تم تحسين أداء برنامج جدولة الحزم fq (الانتظار العادل)، مما جعل من الممكن زيادة الإنتاجية بنسبة 5% في ظل الأحمال الثقيلة في اختبار tcp_rr (طلب/استجابة TCP) وبنسبة 13% مع تدفق غير محدود لحزم UDP.
    • يضيف TCP إمكانية اختيارية للطابع الزمني بدقة الميكروثانية (TCP TS) (RFC 7323)، مما يسمح بتقدير أكثر دقة لوقت الاستجابة ووحدات أكثر تقدمًا للتحكم في الازدحام. لتمكينه، يمكنك استخدام الأمر "IP Route Add 10/8 ... Features tcp_usec_ts".
    • أضافت حزمة TCP دعمًا لامتداد TCP-AO (خيار مصادقة TCP، RFC 5925)، مما يجعل من الممكن التحقق من رؤوس TCP باستخدام رموز MAC (رمز مصادقة الرسالة)، باستخدام خوارزميات أكثر حداثة HMAC-SHA1 وCMAC-AES- 128 بدلاً من ذلك، كان خيار TCP-MD5 متاحًا مسبقًا استنادًا إلى خوارزمية MD5 القديمة.
    • تمت إضافة نوع جديد من أجهزة الشبكة الافتراضية "netkit"، حيث يتم ضبط منطق نقل البيانات باستخدام برنامج BPF.
    • أضاف KSMBD، وهو تطبيق على مستوى kernel لخادم SMB، دعمًا لحل أسماء الملفات التي تحتوي على أزواج بديلة من الأحرف المركبة.
    • قام NFS بتحسين تنفيذ مؤشرات الترابط مع خدمات RPC. تمت إضافة دعم لتفويض الكتابة (لـ NFSv4.1+). أضافت NFSD دعمًا لمعالج rpc_status netlink. تحسين الدعم لعملاء NFSv4.x عند إعادة التصدير إلى knfsd.
  • معدات
    • تمت إضافة الدعم الأولي للبرامج الثابتة GSP-RM إلى وحدة Nouveau kernel، والتي يتم استخدامها في NVIDIA RTX 20+ GPU لنقل عمليات التهيئة والتحكم في GPU إلى جانب وحدة التحكم الدقيقة GSP المنفصلة (معالج نظام GPU). يسمح دعم GSP-RM لبرنامج التشغيل Nouveau بالعمل من خلال مكالمات البرامج الثابتة، بدلاً من برمجة تفاعلات الأجهزة مباشرة، مما يجعل من الأسهل بكثير إضافة دعم لوحدات معالجة الرسومات NVIDIA الجديدة باستخدام المكالمات المعدة مسبقًا للتهيئة وإدارة الطاقة.
    • يدعم برنامج تشغيل AMDGPU GC 11.5 وNBIO 7.11 وSMU 14 وSMU 13.0 OD وDCN 3.5 وVPE 6.1 وDML2. تحسين الدعم للتحميل السلس (بدون وميض عند تبديل وضع الفيديو).
    • يضيف برنامج التشغيل i915 دعمًا لشرائح Intel Meteor Lake ويضيف تطبيقًا أوليًا لـ Intel LunarLake (Xe 2).
    • تمت إضافة دعم لقنوات النقل غير المتماثلة إلى مواصفات USB4 v2 (120/40G).
    • تمت إضافة دعم لـ ARM SoC: Qualcomm Snapdragon 720G (المستخدم في هواتف Xiaomi الذكية)، وAMD Pensando Elba، وRenesas، وR8A779F4 (R-Car S4-8)، وUSRobotics USR8200 (المستخدم في أجهزة التوجيه وNAS).
    • تمت إضافة دعم للهاتف الذكي Fairphone 5 ولوحات ARM Orange Pi 5، QuartzPro64، Turing RK1، Variscite MX6، BigTreeTech CB1، Freescale LX2162، Google Spherion، Google Hayato، Genio 1200 EVK، RK3566 Powkiddy RGB30.
    • تمت إضافة دعم للوحات RISC-V Milk-V Pioneer وMilk-V Duo.
    • تمت إضافة دعم للواجهات الصوتية لأجهزة الكمبيوتر المحمولة من هواوي المزودة بوحدات المعالجة المركزية AMD. تمت إضافة دعم لمكبرات الصوت الإضافية المثبتة على أجهزة الكمبيوتر المحمولة Dell Oasis 13/14/16. تمت إضافة دعم لمكبرات الصوت المدمجة ASUS K6500ZC. تمت إضافة دعم لمؤشر كتم الصوت على أجهزة الكمبيوتر المحمولة HP 255 G8 وG10. تمت إضافة دعم لبرامج تشغيل الصوت acp6.3. تمت إضافة دعم لواجهات التسجيل الاحترافية Focusrite Clarett+ 2Pre و4Pre.

في الوقت نفسه، شكلت مؤسسة البرمجيات الحرة في أمريكا اللاتينية نسخة من kernel 6.7 المجاني تمامًا - Linux-libre 6.7-gnu، خاليًا من عناصر البرامج الثابتة وبرامج التشغيل التي تحتوي على مكونات غير حرة أو أقسام تعليمات برمجية، ونطاقها محدود. من قبل الشركة المصنعة. في الإصدار 6.7، تم تحديث كود تنظيف النقطة الكبيرة في العديد من برامج التشغيل والأنظمة الفرعية، على سبيل المثال، في برامج تشغيل amdgpu وnouveau وadreno وmwifiex وmt7988 وath11k وavs وbtqca. تمت إزالة كود تنظيف برنامجي التشغيل localtalk وrtl8192u بسبب استبعادهما من النواة. تمت إزالة المكونات غير الضرورية لتنظيف برامج التشغيل xhci-pci وrtl8xxxu وrtw8822b، والتي تمت إضافتها مسبقًا عن طريق الخطأ. تنظيف أسماء blob في ملفات dts لبنية Aarch64. تمت إزالة النقط في برامج التشغيل الجديدة mt7925 وtps6598x وaw87390 وaw88399.

المصدر: opennet.ru

إضافة تعليق