إصدار Linux 6.1 kernel

بعد شهرين من التطوير، قدم لينوس تورفالدس إصدار Linux kernel 6.1. ومن أبرز التغييرات: دعم تطوير برامج التشغيل والوحدات النمطية بلغة Rust، وتحديث آلية تحديد صفحات الذاكرة المستخدمة، ومدير ذاكرة خاص لبرامج BPF، ونظام تشخيص مشاكل الذاكرة KMSAN، وKCFI (Kernelk Control). - سلامة التدفق) آلية الحماية، إدخال شجرة هيكل القيقب.

يتضمن الإصدار الجديد 15115 إصلاحًا من 2139 مطورًا، ويبلغ حجم التصحيح 51 ميجابايت، وهو أصغر بحوالي مرتين من حجم التصحيحات من النواة 2 و6.0. أثرت التغييرات على 5.19 ملفًا، وتمت إضافة 13165 سطرًا من التعليمات البرمجية، وتم حذف 716247 سطرًا. حوالي 304560% من جميع التغييرات التي تم إدخالها في 45 تتعلق ببرامج تشغيل الأجهزة، وحوالي 6.1% من التغييرات تتعلق بتحديث التعليمات البرمجية الخاصة ببنيات الأجهزة، و14% تتعلق بمكدس الشبكة، و14% تتعلق بأنظمة الملفات، و3% تتعلق بمكدس الشبكة، و3% تتعلق بأنظمة الملفات. ترتبط بالأنظمة الفرعية للنواة الداخلية.

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

  • خدمات الذاكرة والنظام
    • تمت إضافة القدرة على استخدام Rust كلغة ثانية لتطوير برامج التشغيل ووحدات kernel. السبب الرئيسي لدعم Rust هو تسهيل كتابة برامج تشغيل الأجهزة الآمنة وعالية الجودة عن طريق تقليل احتمالية ارتكاب الأخطاء عند العمل مع الذاكرة. يتم تعطيل دعم Rust افتراضيًا ولا يؤدي إلى تضمين Rust باعتباره تبعية مطلوبة لبناء kernel. تبنت النواة حتى الآن نسخة بسيطة ومبسطة من التصحيحات، والتي تم تخفيضها من 40 إلى 13 ألف سطر من التعليمات البرمجية وتوفر فقط الحد الأدنى الضروري، وهو ما يكفي لبناء وحدة نواة بسيطة مكتوبة بلغة Rust. في المستقبل، من المخطط زيادة الوظائف الحالية تدريجيا، ونقل التغييرات الأخرى من فرع Rust-for-Linux. بالتوازي، يتم تطوير المشاريع لاستخدام البنية التحتية المقترحة لتطوير برامج تشغيل محركات أقراص NVMe وبروتوكول الشبكة 9p ووحدة معالجة الرسومات Apple M1 بلغة Rust.
    • بالنسبة للأنظمة المستندة إلى بنيات AArch64 وRISC-V وLoongArch مع EFI، تم تنفيذ القدرة على تحميل صور kernel المضغوطة مباشرة. تمت إضافة معالجات لتحميل وتشغيل وتفريغ صور kernel، والتي يتم استدعاؤها مباشرة من EFI zboot. تمت أيضًا إضافة معالجات لتثبيت وحذف البروتوكولات من قاعدة بيانات بروتوكول EFI. في السابق، تم تنفيذ التفريغ بواسطة أداة تحميل تشغيل منفصلة، ​​ولكن الآن يمكن القيام بذلك بواسطة معالج في النواة نفسها - يتم تشكيل صورة النواة كتطبيق EFI.
    • يتضمن التكوين جزءًا من التصحيحات مع تنفيذ نموذج إدارة الذاكرة متعدد المستويات، والذي يسمح لك بفصل بنوك الذاكرة بخصائص أداء مختلفة. على سبيل المثال، قد يتم تخزين الصفحات الأكثر استخدامًا في الذاكرة الأسرع، بينما قد يتم تخزين الصفحات الأكثر استخدامًا في ذاكرة بطيئة نسبيًا. يقدم Kernel 6.1 آلية لتحديد مكان وجود الصفحات المستخدمة بكثرة في الذاكرة البطيئة حتى يمكن ترقيتها إلى ذاكرة سريعة، ويقدم أيضًا مفهومًا عامًا لطبقات الذاكرة وأدائها النسبي.
    • يتضمن آلية MGLRU (Multi-Generational LRU)، التي تحل محل تطبيق LRU القديم (الأقل استخدامًا مؤخرًا) استنادًا إلى قائمتي انتظار مع بنية متعددة المراحل تحدد بشكل أفضل صفحات الذاكرة المستخدمة فعليًا والتي يمكن دفعها إلى الخارج قسم المبادلة.
    • تمت إضافة دعم لبنية بيانات "شجرة القيقب" التي اقترحها مهندسو Oracle، والتي تم وضعها كبديل أكثر فعالية لبنية "الشجرة ذات اللون الأحمر والأسود". Maple Tree هو أحد أشكال B-tree الذي يدعم فهرسة النطاق وهو مصمم لتحقيق الاستخدام الفعال لذاكرة التخزين المؤقت للمعالجات الحديثة. تم بالفعل نقل بعض الأنظمة الفرعية لإدارة الذاكرة إلى شجرة القيقب، مما كان له تأثير إيجابي على أدائها. في المستقبل، يمكن استخدام شجرة القيقب لتنفيذ قفل النطاق.
    • تمت إضافة القدرة على إنشاء برامج BPF "مدمرة" مصممة خصيصًا لبدء إيقاف التشغيل في حالات الطوارئ عبر استدعاء Crash_kexec() إلى نظام BPF الفرعي. قد تكون برامج BPF هذه مطلوبة لأغراض تصحيح الأخطاء لبدء إنشاء ملف تفريغ الأعطال في وقت معين. للوصول إلى العمليات التدميرية عند تحميل برنامج BPF، يجب عليك تحديد علامة BPF_F_DESTRUCTIVE، وتنشيط sysctl kernel.destructive_bpf_enabled، والحصول على حقوق CAP_SYS_BOOT.
    • بالنسبة لبرامج BPF، من الممكن تعداد عناصر cgroup، بالإضافة إلى تعداد الموارد (الملفات، vma، العمليات، وما إلى ذلك) لموضوع أو مهمة معينة. تم تنفيذ نوع خريطة جديد لإنشاء مخازن مؤقتة لحلقات المستخدم.
    • تمت إضافة استدعاء خاص لتخصيص الذاكرة في برامج BPF (مخصص الذاكرة)، والذي يوفر تخصيصًا أكثر أمانًا للذاكرة في سياق BPF من kmalloc() القياسي.
    • تم دمج الجزء الأول من التغييرات، مما يوفر القدرة على إنشاء برامج تشغيل لأجهزة الإدخال باستخدام واجهة HID (جهاز الواجهة البشرية)، والتي يتم تنفيذها في شكل برامج BPF.
    • قامت النواة بإزالة التعليمات البرمجية بالكامل لدعم تنسيق الملف القابل للتنفيذ a.out، والذي تم إهماله في الإصدار 5.1 وتم تعطيله بالنسبة للبنيات الرئيسية منذ الإصدارين 5.18 و5.19. لقد تم إهمال تنسيق a.out منذ فترة طويلة على أنظمة Linux، ولا يتم دعم إنشاء ملفات a.out بواسطة الأدوات الحديثة في تكوينات Linux الافتراضية. يمكن تنفيذ أداة تحميل ملفات a.out بالكامل في مساحة المستخدم.
    • بالنسبة للأنظمة المستندة إلى بنية مجموعة تعليمات LoongArch المستخدمة في معالجات Loongson 3 5000 وتنفيذ RISC ISA الجديد، على غرار MIPS وRISC-V، يتم تنفيذ دعم أحداث قياس الأداء (أحداث الأداء)، وkexec، وkdump، وتجميع BPF JIT. .
    • توفر واجهة الإدخال/الإخراج غير المتزامنة io_uring وضعًا جديدًا، IORING_SETUP_DEFER_TASKRUN، والذي يسمح بتأجيل العمل المتعلق بالمخزن المؤقت للحلقة مؤقتًا حتى يتم تقديم طلب تطبيق، والذي يمكن استخدامه للعمل المجمع وتجنب مشكلات زمن الوصول بسبب الشفعة. توقيت خطا.
    • تُمنح العمليات في مساحة المستخدم القدرة على بدء تحويل مجموعة من صفحات الذاكرة العادية إلى مجموعة من صفحات الذاكرة الكبيرة (صفحات ضخمة شفافة).
    • تمت إضافة تطبيق لجهاز /dev/userfaultfd، والذي يسمح بالوصول إلى وظيفة استدعاء النظام userfaultfd() باستخدام حقوق الوصول في FS. تتيح لك وظيفة userfaultfd إنشاء معالجات للوصول إلى صفحات الذاكرة غير المخصصة (أخطاء الصفحات) في مساحة المستخدم.
    • تمت زيادة متطلبات إصدار الأداة المساعدة GNU Make - مطلوب الآن الإصدار 3.82 على الأقل لبناء النواة.
  • نظام القرص الفرعي ، I / O وأنظمة الملفات
    • تم إجراء تحسينات كبيرة على أداء نظام الملفات Btrfs، ومن بين أشياء أخرى، تمت زيادة أداء استدعاء FIEMAP ioctl بأضعاف مضاعفة. تمت إضافة دعم لعمليات الكتابة المخزنة مؤقتًا غير المتزامنة للتطبيقات التي تستخدم io_uring. تمت إضافة دعم للملفات المحمية باستخدام fs-verity إلى عملية "الإرسال".
    • أضاف نظام الملفات ext4 تحسينات في الأداء تتعلق بصيانة المجلة وتشغيل القراءة فقط.
    • نظام الملفات EROFS (نظام الملفات المحسن للقراءة فقط)، المصمم للاستخدام على الأقسام التي يمكن الوصول إليها في وضع القراءة فقط، يطبق القدرة على مشاركة البيانات المكررة في أنظمة ملفات مختلفة.
    • تمت إضافة استدعاء النظام statx() لعرض معلومات حول إمكانية تطبيق الإدخال/الإخراج المباشر على الملف.
    • تمت إضافة دعم إنشاء ملفات مؤقتة باستخدام علامة O_TMPFILE إلى النظام الفرعي FUSE (أنظمة الملفات في مساحة المستخدم).
  • المحاكاة الافتراضية والأمن
    • تم استبدال تنفيذ آلية حماية CFI (تكامل التحكم في التدفق)، مع إضافة عمليات فحص قبل كل استدعاء غير مباشر لوظيفة ما لاكتشاف بعض أشكال السلوك غير المحدد الذي قد يؤدي إلى انتهاك أمر التنفيذ العادي (تدفق التحكم) باعتباره نتيجة استخدام الثغرات التي تغير المؤشرات إلى وظائف مخزنة في الذاكرة. تم استبدال التنفيذ القياسي لـ CFI من مشروع LLVM بخيار يعتمد أيضًا على استخدام Clang، ولكن تم تكييفه خصيصًا لحماية الأنظمة الفرعية منخفضة المستوى ونواة نظام التشغيل. في LLVM، سيتم تقديم تطبيق جديد في إصدار Clang 16 وسيتم تمكينه باستخدام خيار "-fsanitize=kcfi". يتمثل الاختلاف الرئيسي مع التطبيق الجديد في أنه غير مرتبط بتحسينات وقت الارتباط (LTO) ولا يؤدي إلى استبدال مؤشرات الوظائف بروابط في جدول الانتقال السريع.
    • بالنسبة لوحدات LSM (وحدة أمان Linux)، من الممكن إنشاء معالجات تعترض العمليات لإنشاء مساحات أسماء.
    • يتم توفير الأدوات للتحقق من التوقيعات الرقمية PKCS#7 في برامج BPF.
    • تم إرجاع القدرة على الفتح في وضع عدم الحظر (O_NONBLOCK)، والتي تمت إزالتها عن غير قصد في kernel 5.6، إلى /dev/random.
    • في الأنظمة ذات بنية x86، تمت إضافة تحذير في حالة تعيين صفحات الذاكرة بواسطة أنظمة kernel الفرعية التي تسمح بالتنفيذ والكتابة في نفس الوقت. في المستقبل، يتم النظر في إمكانية الحظر الكامل لرسم خرائط الذاكرة هذه.
    • تمت إضافة آلية تصحيح أخطاء KMSAN (Kernel Memory Sanitizer) لاكتشاف استخدام الذاكرة غير المهيأة في kernel، بالإضافة إلى تسرب الذاكرة غير المهيأة بين مساحة المستخدم والأجهزة.
    • تم إجراء تحسينات على مولد الأرقام العشوائية الزائفة CRNG الآمن للتشفير والمستخدم في المكالمة العشوائية. تم إعداد التغييرات بواسطة Jason A. Donenfeld، مؤلف VPN WireGuard، وتهدف إلى تحسين أمان استخراج الأعداد الصحيحة العشوائية الزائفة.
  • النظام الفرعي للشبكة
    • يوفر مكدس TCP القدرة (يتم تعطيلها افتراضيًا) على استخدام جداول تجزئة مأخذ التوصيل بشكل منفصل لكل مساحة اسم، مما يؤدي إلى تحسين الأداء على الأنظمة التي تحتوي على عدد كبير من مساحات الأسماء.
    • تمت إزالة التعليمات البرمجية لدعم بروتوكول DECnet القديم. يتم ترك قواعد واجهة برمجة تطبيقات مساحة المستخدم في مكانها للسماح بتجميع التطبيقات التي تستخدم DECnet، ولكن لن تتمكن هذه التطبيقات من الاتصال بالشبكة.
    • تم توثيق بروتوكول netlink.
  • معدات
    • أضاف برنامج تشغيل amdgpu دعمًا لإعادة توجيه DSC (ضغط تدفق العرض) لضغط البيانات بدون فقدان البيانات عند تبادل المعلومات مع الشاشات التي تدعم دقة عالية جدًا. يستمر العمل في تقديم الدعم لمنصات AMD RDNA3 (RX 7000) وCDNA (Instinct). تمت إضافة دعم لمكونات DCN 3.2 وSMU 13.x وNBIO 7.7 وGC 11.x وPSP 13.x وSDMA 6.x وGMC 11.x IP. يوفر برنامج التشغيل amdkfd (لوحدات معالجة الرسومات AMD المنفصلة مثل Polaris) الدعم لـ GFX 11.0.3.
    • يتضمن برنامج التشغيل i915 (Intel) دعمًا لـ Meteor Lake GPU. تدعم Meteor Lake ووحدات معالجة الرسومات الأحدث واجهة DP 2.0 (DisplayPort). تمت إضافة معرفات لبطاقات الفيديو استنادًا إلى البنية الدقيقة لـ Alder Lake S.
    • تمت إضافة دعم للأنظمة الصوتية الفرعية المطبقة في معالجات Apple Silicon وIntel SkyLake وIntel KabyLake. يدعم برنامج تشغيل الصوت CS35L41 HDA وضع السكون. تمت إضافة دعم ASoC (نظام ALSA على الرقاقة) لرقائق الصوت المدمجة Apple Silicon وAMD Rembrant DSPs وAMD Pink Sardine ACP 6.2 وEverest ES8326 وIntel Sky Lake وKaby Lake وMediatek MT8186 وNXP i.MX8ULP DSPs وQualcomm SC8280XP وSM8250، SM8450 وتكساس إنسترومنتس SRC4392
    • تمت إضافة دعم للوحات LCD Samsung LTL101AL01، B120XAN01.0، R140NWF5 RH، Densitron DMT028VGHMCMI-1A TFT، AUO B133UAN02.1، IVO M133NW4J-R3، Innolux N120ACA-EA1، AUO B116XAK01.6، BOE NT116WH M- N21، إنكس N116BCA- EA2، INX N116BCN-EA1، تقنية Multi-Inno MI0800FT-9.
    • تمت إضافة دعم لوحدات تحكم AHCI SATA المستخدمة في Baikal-T1 SoC.
    • تمت إضافة دعم لشرائح Bluetooth MediaTek MT7921 وIntel Magnetor (CNVi، الاتصال المتكامل) وRealtek RTL8852C وRTW8852AE وRTL8761BUV (Edimax BT-8500).
    • أضاف برنامج التشغيل ath11k لوحدات Qualcomm اللاسلكية دعمًا للمسح الطيفي في نطاق 160 ميجاهرتز، وقام بتطبيق NAPI متعدد الخيوط، ودعم محسّن لشرائح Qualcomm WCN6750 Wi-Fi.
    • تمت إضافة برامج تشغيل للوحة مفاتيح PinePhone ولوحات اللمس InterTouch (ThinkPad P1 G3) وX-Box Adaptive Controller وPhoenixRC Flight Controller وVRC-2 Car Controller وDualSense Edge Controller وIBM Operation Panel وXBOX One Elite وأجهزة الكمبيوتر اللوحية XP-PEN Deco Pro S وIntuos Pro Small (PTH-460).
    • تمت إضافة برنامج تشغيل لمسرعات التشفير Aspeed HACE (محرك التجزئة والتشفير).
    • تمت إضافة دعم لوحدات تحكم Thunderbolt/USB4 Intel Meteor Lake المدمجة.
    • تمت إضافة دعم للهواتف الذكية Sony Xperia 1 IV وSamsung Galaxy E5 وE7 وGrand Max وPine64 Pinephone Pro.
    • دعم إضافي لـ ARM SoC واللوحات: AMD DaytonaX وMediatek MT8186 وRockchips RK3399 وRK3566 وTI AM62A وNXP i.MX8DXL وRenesas R-Car H3Ne-1.7G وQualcomm IPQ8064-v2.0 وIPQ8062 وIPQ8065 وKontron SL/ BL i.MX8MM OSM-S، MT8195 (Acer Tomato)، Radxa ROCK 4C+، NanoPi R4S Enterprise Edition، JetHome JetHub D1p. برامج تشغيل محدثة لـ SoC Samsung وMediatek وRenesas وTegra وQualcomm وBroadcom وNXP.

في الوقت نفسه، قامت مؤسسة البرمجيات الحرة لأمريكا اللاتينية بتكوين نسخة من النواة 6.1 المجانية تمامًا - Linux-libre 6.1-gnu، خالية من عناصر البرامج الثابتة وبرامج التشغيل التي تحتوي على مكونات أو أقسام غير حرة من التعليمات البرمجية، ونطاقها هو محدودة من قبل الشركة المصنعة. يقوم الإصدار الجديد بتنظيف برنامج التشغيل rtw8852b الجديد وملفات DTS لمختلف شرائح Qualcomm وMediaTek SoCs باستخدام معالجات تعتمد على بنية AArch64. تحديث رمز تنظيف النقطة الكبيرة في برامج التشغيل والأنظمة الفرعية amdgpu، i915، brcmfmac، r8188eu، rtw8852c، Intel ACPI. تم تصحيح تنظيف بطاقات التلفزيون tm6000 القديمة، cpia2 v4l، sp8870، av7110.

المصدر: opennet.ru

إضافة تعليق