إصدار Linux 5.19 kernel

بعد شهرين من التطوير، قدم لينوس تورفالدس إصدار Linux kernel 5.19. من بين أبرز التغييرات: دعم بنية معالج LoongArch، وتكامل تصحيحات "BIG TCP"، ووضع عند الطلب في fscache، وإزالة التعليمات البرمجية لدعم تنسيق a.out، والقدرة على استخدام ZSTD لضغط البرامج الثابتة، وواجهة لـ إدارة إزالة الذاكرة من مساحة المستخدم، وزيادة موثوقية وأداء مولد الأرقام العشوائية الزائفة، ودعم Intel IFS (الفحص الميداني)، وAMD SEV-SNP (الترحيل المتداخل الآمن)، وIntel TDX (امتدادات المجال الموثوقة) وARM امتدادات SME (امتداد المصفوفة القابلة للتطوير).

في الإعلان، قال لينوس إنه على الأرجح سيكون إصدار kernel التالي برقم 6.0، نظرًا لأن فرع 5.x قد جمع إصدارات كافية لتغيير الرقم الأول في رقم الإصدار. يتم إجراء تغيير الترقيم لأسباب جمالية وهو خطوة شكلية تخفف من الانزعاج بسبب تراكم عدد كبير من المشكلات في السلسلة.

ذكر لينوس أيضًا أنه استخدم كمبيوتر محمول من Apple يعتمد على بنية ARM64 (Apple Silicon) مع بيئة Linux المستندة إلى توزيع Asahi Linux لإنشاء الإصدار. إنها ليست محطة العمل الأساسية الخاصة بـ Linus، ولكنه استخدم النظام الأساسي لاختبار مدى ملاءمتها لعمل kernel ولضمان قدرته على إنتاج إصدارات kernel أثناء السفر باستخدام كمبيوتر محمول خفيف الوزن في متناول اليد. في السابق، منذ سنوات عديدة، كان لدى Linus خبرة في استخدام معدات Apple للتطوير - لقد استخدم ذات مرة جهاز كمبيوتر يعتمد على وحدة المعالجة المركزية ppc970 وجهاز كمبيوتر محمول Macbook Air.

يتضمن الإصدار الجديد 16401 إصلاحًا من 2190 مطورًا (في الإصدار الأخير كان هناك 16206 إصلاحًا من 2127 مطورًا)، وحجم التصحيح هو 90 ميجابايت (أثرت التغييرات على 13847 ملفًا، وتمت إضافة 1149456 سطرًا من التعليمات البرمجية، وتم حذف 349177 سطرًا). حوالي 39% من جميع التغييرات التي تم إدخالها في 5.19 تتعلق ببرامج تشغيل الأجهزة، وحوالي 21% من التغييرات تتعلق بتحديث التعليمات البرمجية الخاصة ببنيات الأجهزة، و11% تتعلق بمكدس الشبكات، و4% تتعلق بأنظمة الملفات، و3% ترتبط بالأنظمة الفرعية للنواة الداخلية.

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

  • نظام القرص الفرعي ، I / O وأنظمة الملفات
    • تم تحويل نظام الملفات EROFS (نظام الملفات المحسن للقراءة فقط)، المخصص للاستخدام على أقسام للقراءة فقط، لاستخدام النظام الفرعي fscache، الذي يوفر التخزين المؤقت للبيانات. أدى هذا التغيير إلى تحسين أداء الأنظمة بشكل كبير حيث يتم إطلاق عدد كبير من الحاويات من صورة مستندة إلى EROFS.
    • تمت إضافة وضع القراءة عند الطلب إلى النظام الفرعي fscache، والذي يُستخدم لتحسين EROFS. يتيح لك الوضع الجديد تنظيم التخزين المؤقت للقراءة من صور FS الموجودة في النظام المحلي. وعلى النقيض من وضع التشغيل المتوفر في البداية، والذي يركز على التخزين المؤقت في نظام الملفات المحلي للبيانات المنقولة عبر أنظمة ملفات الشبكة، فإن وضع "عند الطلب" يفوض وظائف استرداد البيانات وكتابتها إلى ذاكرة التخزين المؤقت إلى وحدة منفصلة عملية الخلفية تعمل في مساحة المستخدم.
    • يوفر XFS القدرة على تخزين مليارات السمات الموسعة في عقدة i. تمت زيادة الحد الأقصى لعدد النطاقات لملف واحد من 4 مليارات إلى 247. وتم تنفيذ وضع للتحديث التلقائي للعديد من سمات الملفات الموسعة في وقت واحد.
    • قام نظام الملفات Btrfs بتحسين العمل مع الأقفال، مما سمح بزيادة الأداء بنسبة 7% تقريبًا عند الكتابة مباشرة في الوضع الحالي. يتم زيادة أداء العمليات في وضع NOCOW (بدون النسخ عند الكتابة) بنسبة 3% تقريبًا. تم تقليل الحمل على ذاكرة التخزين المؤقت للصفحة عند تشغيل أمر "الإرسال". تم تقليل الحد الأدنى لحجم الصفحات الفرعية من 64 كيلو بايت إلى 4 كيلو بايت (يمكن استخدام صفحات فرعية أصغر من صفحات kernel). تم إجراء انتقال من استخدام شجرة الجذر إلى خوارزمية XArrays.
    • تمت إضافة وضع إلى خادم NFS لتوسيع فترة الحفاظ على حالة القفل التي حددها العميل الذي توقف عن الاستجابة للطلبات. يسمح لك الوضع الجديد بتأخير إزالة القفل لمدة تصل إلى يوم ما لم يطلب عميل آخر قفلًا منافسًا. في الوضع العادي، يتم مسح الحظر بعد 90 ثانية من توقف العميل عن الاستجابة.
    • يطبق النظام الفرعي لتتبع الأحداث في fanotify FS علامة FAN_MARK_EVICTABLE، والتي يمكنك من خلالها تعطيل تثبيت العقد i المستهدفة في ذاكرة التخزين المؤقت، على سبيل المثال، لتجاهل الفروع الفرعية دون تثبيت أجزائها في ذاكرة التخزين المؤقت.
    • أضاف برنامج تشغيل نظام الملفات FAT32 دعمًا للحصول على معلومات حول وقت إنشاء الملف من خلال استدعاء نظام statx مع تنفيذ إصدار أكثر كفاءة ووظيفية من stat()، والذي يُرجع معلومات موسعة حول الملف.
    • تم إجراء تحسينات كبيرة على برنامج التشغيل exFAT للسماح بالمسح المتزامن لمجموعة من القطاعات عندما يكون وضع "dirsync" نشطًا، بدلاً من التطهير المتسلسل لكل قطاع على حدة. من خلال تقليل عدد طلبات الكتلة بعد التحسين، زاد أداء إنشاء عدد كبير من الأدلة على بطاقة SD بأكثر من 73-85%، اعتمادًا على حجم المجموعة.
    • تتضمن النواة التحديث التصحيحي الأول لبرنامج التشغيل ntfs3. منذ أن تم تضمين ntfs3 في kernel 5.15 في أكتوبر الماضي، لم يتم تحديث برنامج التشغيل وانقطع الاتصال بالمطورين، لكن المطورين استأنفوا الآن نشر التغييرات. أدت التصحيحات المقترحة إلى القضاء على الأخطاء التي تؤدي إلى تسرب الذاكرة وتعطلها، وحل المشكلات المتعلقة بتنفيذ xfstests، وتنظيف التعليمات البرمجية غير المستخدمة، وإصلاح الأخطاء المطبعية.
    • بالنسبة لـ OverlayFS، تم تنفيذ القدرة على تعيين معرفات المستخدم لأنظمة الملفات المثبتة، والتي يتم استخدامها لمطابقة ملفات مستخدم معين على قسم خارجي مثبت مع مستخدم آخر على النظام الحالي.
  • خدمات الذاكرة والنظام
    • تمت إضافة دعم أولي لبنية مجموعة تعليمات LoongArch المستخدمة في معالجات Loongson 3 5000، والتي تطبق RISC ISA الجديد، على غرار MIPS وRISC-V. تتوفر بنية LoongArch بثلاثة نكهات: 32 بت (LA32R)، و32 بت عادي (LA32S)، و64 بت (LA64).
    • تمت إزالة التعليمات البرمجية لدعم تنسيق الملف القابل للتنفيذ a.out، والذي تم إهماله في الإصدار 5.1. لقد تم إهمال تنسيق a.out منذ فترة طويلة على أنظمة Linux، ولا يتم دعم إنشاء ملفات a.out بواسطة الأدوات الحديثة في تكوينات Linux الافتراضية. يمكن تنفيذ أداة تحميل ملفات a.out بالكامل في مساحة المستخدم.
    • لقد تم إيقاف دعم خيارات التمهيد الخاصة بـ x86: nosp، وnosmap، وnosmep، وnoexec، وnoclflush).
    • تم إيقاف دعم بنية وحدة المعالجة المركزية القديمة h8300 (Renesas H8/300)، والتي ظلت بدون دعم لفترة طويلة.
    • إمكانات موسعة تتعلق بالاستجابة لاكتشاف الأقفال المقسمة ("الأقفال المقسمة") التي تحدث عند الوصول إلى البيانات غير المحاذاة في الذاكرة نظرًا لحقيقة أنه عند تنفيذ تعليمات ذرية، تتقاطع البيانات مع خطين من ذاكرة التخزين المؤقت لوحدة المعالجة المركزية. تؤدي مثل هذه العوائق إلى انخفاض كبير في الأداء. إذا كانت النواة ستصدر سابقًا، افتراضيًا، تحذيرًا يحتوي على معلومات حول العملية التي تسببت في الحظر، فسيتم الآن إبطاء العملية الإشكالية بشكل أكبر للحفاظ على أداء بقية النظام.
    • تمت إضافة دعم لآلية IFS (الفحص الميداني) المطبقة في معالجات Intel، والتي تتيح لك تشغيل اختبارات تشخيص وحدة المعالجة المركزية ذات المستوى المنخفض والتي يمكنها تحديد المشكلات التي لم يتم اكتشافها بواسطة الأدوات القياسية بناءً على رموز تصحيح الأخطاء (ECC) أو بتات التكافؤ . تكون الاختبارات التي يتم إجراؤها في شكل برامج ثابتة قابلة للتنزيل، ومصممة بشكل مشابه لتحديثات الكود الصغير. نتائج الاختبار متاحة عبر sysfs.
    • تمت إضافة إمكانية تضمين ملف bootconfig داخل النواة، مما يسمح، بالإضافة إلى خيارات سطر الأوامر، بتحديد معلمات النواة من خلال ملف الإعدادات. يتم تنفيذ التضمين باستخدام خيار التجميع 'CONFIG_BOOT_CONFIG_EMBED_FILE=»/PATH/TO/BOOTCONFIG/FILE»'. في السابق، كان يتم تحديد تكوين التمهيد من خلال إرفاقه بصورة initrd. يسمح التكامل في kernel باستخدام Bootconfig في التكوينات التي لا تحتوي على initrd.
    • تم تنفيذ القدرة على تنزيل البرامج الثابتة المضغوطة باستخدام خوارزمية Zstandard. تمت إضافة مجموعة من ملفات التحكم /sys/class/firmware/* إلى sysfs، مما يسمح لك ببدء تحميل البرامج الثابتة من مساحة المستخدم.
    • توفر واجهة الإدخال/الإخراج غير المتزامنة io_uring علامة جديدة، IORING_RECVSEND_POLL_FIRST، والتي، عند تعيينها، سترسل أولاً عملية شبكة لتتم معالجتها باستخدام الاستقصاء، مما يمكنه حفظ الموارد في المواقف التي تكون فيها معالجة العملية مع بعض التأخير مقبولة. أضاف io_uring أيضًا دعمًا لاستدعاء نظام المقبس()، واقترح إشارات جديدة لتبسيط إدارة واصفات الملفات، وأضاف وضع "متعدد اللقطات" لقبول عدة اتصالات في وقت واحد في استدعاء القبول()، وأضاف عمليات لإعادة توجيه NVMe الأوامر مباشرة إلى الجهاز.
    • توفر بنية Xtensa الدعم لأداة تصحيح الأخطاء KCSAN (Kernel Concurrency Sanitizer)، المصممة لاكتشاف حالات السباق ديناميكيًا داخل kernel. تمت إضافة دعم أيضًا لوضع السكون والمعالجات المساعدة.
    • بالنسبة إلى بنية m68k (Motorola 68000)، تم تنفيذ جهاز افتراضي (محاكي النظام الأساسي) يعتمد على محاكي Android Goldfish.
    • بالنسبة لبنية AArch64، تم تنفيذ دعم امتدادات Armv9-A SME (امتداد المصفوفة القابلة للتوسيع).
    • يسمح نظام eBPF الفرعي بتخزين المؤشرات المكتوبة في هياكل الخريطة، كما يضيف دعمًا للمؤشرات الديناميكية.
    • تم اقتراح آلية استباقية جديدة لاستعادة الذاكرة تدعم التحكم في مساحة المستخدم باستخدام ملف Memory.reclaim. ستؤدي كتابة رقم إلى الملف المحدد إلى محاولة طرد العدد المقابل من البايتات من المجموعة المرتبطة بالمجموعة cgroup.
    • تحسين دقة استخدام الذاكرة عند ضغط البيانات في قسم المبادلة باستخدام آلية zswap.
    • بالنسبة لبنية RISC-V، يتم توفير الدعم لتشغيل الملفات التنفيذية 32 بت على أنظمة 64 بت، ويتم إضافة وضع لربط السمات المقيدة بصفحات الذاكرة (على سبيل المثال، لتعطيل التخزين المؤقت)، ويتم تنفيذ وظيفة kexec_file_load() .
    • تم تكييف تنفيذ الدعم لأنظمة Armv32T وArmv4 ذات 5 بت للاستخدام في بنيات kernel العالمية متعددة المنصات المناسبة لأنظمة ARM المختلفة.
  • المحاكاة الافتراضية والأمن
    • ينفذ نظام EFI الفرعي القدرة على نقل المعلومات السرية بشكل سري إلى أنظمة الضيف دون الكشف عنها للنظام المضيف. يتم توفير البيانات من خلال دليل الأمان/coco في ملف Securityfs.
    • وضع الحماية التأمينية، الذي يقيد وصول المستخدم الجذر إلى kernel ويحظر مسارات تجاوز التمهيد الآمن لـ UEFI، قد أزال ثغرة سمحت بتجاوز الحماية عن طريق معالجة مصحح أخطاء kernel.
    • تم تضمين تصحيحات تهدف إلى تحسين موثوقية وأداء منشئ الأرقام العشوائية الزائفة.
    • عند البناء باستخدام Clang 15، يتم تنفيذ دعم آلية التوزيع العشوائي لهياكل النواة.
    • توفر آلية Landlock، التي تسمح لك بالحد من تفاعل مجموعة من العمليات مع البيئة الخارجية، دعمًا للقواعد التي تسمح لك بالتحكم في تنفيذ عمليات إعادة تسمية الملفات.
    • تم تحويل النظام الفرعي IMA (بنية قياس النزاهة)، المصمم للتحقق من سلامة مكونات نظام التشغيل باستخدام التوقيعات الرقمية والتجزئة، إلى استخدام وحدة fs-verity للتحقق من الملف.
    • تم تغيير منطق الإجراءات عند تعطيل الوصول غير المميز إلى نظام eBPF الفرعي - في السابق تم تعطيل جميع الأوامر المرتبطة باستدعاء النظام bpf()، وبدءًا من الإصدار 5.19، تم ترك الوصول إلى الأوامر التي لا تؤدي إلى إنشاء الكائنات . يتطلب هذا السلوك عملية مميزة لتحميل برنامج BPF، ولكن بعد ذلك يمكن للعمليات غير المميزة أن تتفاعل مع البرنامج.
    • تمت إضافة دعم لامتداد AMD SEV-SNP (الترحيل المتداخل الآمن)، والذي يوفر عملاً آمنًا مع جداول صفحات الذاكرة المتداخلة ويحمي من هجمات "undeSErVed" و"SEVerity" على معالجات AMD EPYC، والتي تسمح بتجاوز AMD SEV (المحاكاة الافتراضية المشفرة الآمنة) ) آلية الحماية.
    • تمت إضافة دعم لآلية Intel TDX (امتدادات المجال الموثوق بها)، والتي تتيح لك منع محاولات الجهات الخارجية للوصول إلى الذاكرة المشفرة للأجهزة الافتراضية.
    • أضاف برنامج التشغيل Virtio-blk، المستخدم لمحاكاة أجهزة الحظر، دعمًا للإدخال/الإخراج باستخدام الاستقصاء، والذي أدى، وفقًا للاختبارات، إلى تقليل زمن الوصول بحوالي 10%.
  • النظام الفرعي للشبكة
    • تتضمن الحزمة سلسلة من تصحيحات BIG TCP التي تسمح لك بزيادة الحد الأقصى لحجم حزمة TCP إلى 4 جيجابايت لتحسين تشغيل شبكات مراكز البيانات الداخلية عالية السرعة. يتم تحقيق زيادة مماثلة في حجم الحزمة مع حجم حقل رأس 16 بت من خلال تنفيذ الحزم "الضخمة"، حيث يتم تعيين الحجم في رأس IP الخاص بها على 0، ويتم إرسال الحجم الفعلي في ملف منفصل 32 بت الحقل في رأس مرفق منفصل. في اختبار الأداء، أدى تعيين حجم الحزمة إلى 185 كيلو بايت إلى زيادة الإنتاجية بنسبة 50% وتقليل زمن انتقال البيانات بشكل ملحوظ.
    • استمر العمل على دمج الأدوات في مكدس الشبكة لتتبع أسباب إسقاط الحزم (أكواد الأسباب). يتم إرسال رمز السبب عندما يتم تحرير الذاكرة المرتبطة بالحزمة ويسمح بحالات مثل تجاهل الحزمة بسبب أخطاء الرأس، واكتشاف انتحال rp_filter، والمجموع الاختباري غير الصالح، ونفاد الذاكرة، وتشغيل قواعد IPSec XFRM، ورقم تسلسل غير صالح TCP، وما إلى ذلك.
    • تمت إضافة دعم للتراجع عن اتصالات MPTCP (MultiPath TCP) لاستخدام TCP العادي، في المواقف التي لا يمكن فيها استخدام ميزات MPTCP معينة. يعد MPTCP امتدادًا لبروتوكول TCP لتنظيم تشغيل اتصال TCP مع تسليم الحزم في وقت واحد عبر عدة مسارات عبر واجهات شبكة مختلفة مرتبطة بعناوين IP مختلفة. تمت إضافة واجهة برمجة التطبيقات للتحكم في تدفقات MPTCP من مساحة المستخدم.
  • معدات
    • تمت إضافة أكثر من 420 ألف سطر من التعليمات البرمجية المتعلقة ببرنامج تشغيل amdgpu، منها حوالي 400 ألف سطر عبارة عن ملفات رأس تم إنشاؤها تلقائيًا لبيانات تسجيل ASIC في برنامج تشغيل AMD GPU، ويوفر 22.5 ألف سطر آخر التنفيذ الأولي لدعم AMD SoC21. تجاوز إجمالي حجم برنامج التشغيل لوحدات معالجة الرسوميات AMD 4 ملايين سطر من التعليمات البرمجية. بالإضافة إلى SoC21، يتضمن برنامج تشغيل AMD دعمًا لـ SMU 13.x (وحدة إدارة النظام)، ودعمًا محدثًا لـ USB-C وGPUVM، وهو مستعد لدعم الأجيال القادمة من RDNA3 (RX 7000) وCDNA (AMD Instinct) المنصات.
    • يتمتع برنامج التشغيل i915 (Intel) بقدرات موسعة تتعلق بإدارة الطاقة. تمت إضافة معرفات لوحدات معالجة الرسوميات Intel DG2 (Arc Alchemist) المستخدمة على أجهزة الكمبيوتر المحمولة، وتوفير الدعم الأولي لمنصة Intel Raptor Lake-P (RPL-P)، وإضافة معلومات حول بطاقات الرسومات Arctic Sound-M)، وتنفيذ ABI لمحركات الحوسبة، تمت إضافتها لـ دعم بطاقات DG2 لتنسيق Tile4، بالنسبة للأنظمة المستندة إلى بنية Haswell الدقيقة، يتم تنفيذ دعم DisplayPort HDR.
    • لقد تحول برنامج التشغيل Nouveau إلى استخدام المعالج drm_gem_plane_helper_prepare_fb؛ وتم تطبيق تخصيص الذاكرة الثابتة على بعض الهياكل والمتغيرات. أما بالنسبة لاستخدام وحدات kernel مفتوحة المصدر بواسطة NVIDIA في Nouveau، فإن العمل حتى الآن يتعلق بتحديد الأخطاء وإزالتها. في المستقبل، من المقرر استخدام البرامج الثابتة المنشورة لتحسين أداء برنامج التشغيل.
    • تمت إضافة برنامج تشغيل لوحدة التحكم NVMe المستخدمة في أجهزة كمبيوتر Apple استنادًا إلى شريحة M1.

في الوقت نفسه، قامت مؤسسة البرمجيات الحرة لأمريكا اللاتينية بتكوين نسخة من النواة المجانية تمامًا 5.19 - Linux-libre 5.19-gnu، خالية من عناصر البرامج الثابتة وبرامج التشغيل التي تحتوي على مكونات أو أقسام غير حرة من التعليمات البرمجية، ونطاقها هو محدودة من قبل الشركة المصنعة. يقوم الإصدار الجديد بتنظيف برامج التشغيل الخاصة بـ pureLiFi X/XL/XC وTI AMx3 Wkup-M3 IPC. كود تنظيف blob المحدث في Silicon Labs WFX وAMD amdgpu وQualcomm WCNSS Peripheral Image Loader وRealtek Bluetooth وMellanox Spectrum وMarvell WiFi-Ex وIntel AVS وIFS وبرامج تشغيل pu3-imgu والأنظمة الفرعية. تم تنفيذ معالجة ملفات جهاز Qualcomm AArch64. تمت إضافة دعم لنظام تسمية مكونات البرنامج الثابت Sound Open الجديد. توقف عن تنظيف برنامج تشغيل ATM Ambassador، والذي تمت إزالته من النواة. تم نقل إدارة تنظيف البيانات الثنائية الكبيرة الحجم في HDCP وMellanox Core إلى علامات kconfig المنفصلة.

المصدر: opennet.ru

إضافة تعليق