إصدار Linux 5.6 kernel

بعد شهرين من تطوير لينوس تورفالدس المقدمة الافراج عن النواة لينكس شنومكس. ومن أبرز التغييرات: تكامل واجهة WireGuard VPN، ودعم USB4، ومساحات الأسماء للوقت، والقدرة على إنشاء معالجات ازدحام TCP باستخدام BPF، والدعم الأولي لـ MultiPath TCP، وتخليص النواة من مشكلة 2038، وآلية "bootconfig" زونفس.

الإصدار الجديد قبل 13702 إصلاحًا من 1810 مطورًا،
حجم التصحيح - 40 ميجابايت (أثرت التغييرات على 11577 ملفًا، تمت إضافة 610012 سطرًا من التعليمات البرمجية،
تمت إزالة 294828 سطرًا). حوالي 45٪ من إجمالي ما تم تقديمه في 5.6
ترتبط التغييرات ببرامج تشغيل الأجهزة، حوالي 15٪ من التغييرات لها
الموقف تجاه تحديث التعليمات البرمجية الخاصة ببنيات الأجهزة، 12%
المرتبطة بمكدس الشبكة، و 4٪ بأنظمة الملفات و 3٪ بالداخلية
الأنظمة الفرعية للنواة.

رئيسي الابتكارات:

  • النظام الفرعي للشبكة
    • أضيفت بواسطة تنفيذ واجهة VPN WireGuard، والذي يتم تنفيذه بناءً على طرق التشفير الحديثة (ChaCha20، Poly1305، Curve25519، BLAKE2s)، سهل الاستخدام، خالي من التعقيدات، وقد أثبت نفسه في عدد من التطبيقات الكبيرة ويوفر أداءً عاليًا للغاية (3,9 مرات أسرع من OpenVPN من حيث من الإنتاجية). يستخدم WireGuard مفهوم توجيه مفتاح التشفير، والذي يتضمن إرفاق مفتاح خاص بكل واجهة شبكة واستخدامه لربط المفاتيح العامة. يتم تبادل المفاتيح العامة لإنشاء اتصال بطريقة مشابهة لـ SSH. أساسيات التشفير المطلوبة لكي يعمل WireGuard كان عليه ترحيلها من المكتبة زنك كجزء من Crypto API القياسي و متضمن في القلب 5.5.
    • التي تكامل المكونات اللازمة لدعم MPTCP (MultiPath TCP)، وهو امتداد لبروتوكول TCP لتنظيم تشغيل اتصال TCP مع تسليم الحزم في وقت واحد عبر عدة مسارات عبر واجهات شبكة مختلفة مرتبطة بعناوين IP مختلفة. بالنسبة لتطبيقات الشبكة، يبدو هذا الاتصال المجمع كاتصال TCP عادي، ويتم تنفيذ كل منطق فصل التدفق بواسطة MPTCP. يمكن استخدام Multipath TCP لزيادة الإنتاجية وزيادة الموثوقية. على سبيل المثال، يمكن استخدام MPTCP لتنظيم نقل البيانات على الهاتف الذكي باستخدام روابط WiFi و4G في وقت واحد، أو لتقليل التكاليف عن طريق توصيل خادم باستخدام عدة روابط رخيصة بدلاً من رابط واحد باهظ الثمن.
    • أضيفت بواسطة دعم نظام معالجة قائمة انتظار الشبكة sch_ets (اختيار ناقل الحركة المحسن، IEEE 802.1Qaz)، والذي يوفر القدرة على توزيع عرض النطاق الترددي بين فئات مختلفة من حركة المرور. إذا كان الحمل على فئة حركة مرور معينة أقل من عرض النطاق الترددي المخصص، فإن خدمات الاختبارات التربوية تسمح لفئات حركة المرور الأخرى باستخدام عرض النطاق الترددي المتاح (غير المستخدم). تم تكوين Qdisc sch_ets كنظام PRIO ويستخدم فئات حركة المرور لتحديد حدود النطاق الترددي الصارمة والمشتركة. تعمل "خدمات الاختبارات التربوية" كمزيج من التخصصات بريو и الحد من مخاطر الكوارث - إذا كانت هناك فئات مرور محدودة للغاية، فسيتم استخدام PRIO، ولكن إذا لم تكن هناك حركة مرور في قائمة الانتظار، فإنه يعمل مثل DRR.
    • تمت إضافة نوع جديد من برامج BPF BPF_PROG_TYPE_STRUCT_OPS، والذي يسمح لك بتنفيذ معالجات وظائف kernel من خلال BPF. حاليًا، يمكن بالفعل استخدام هذه الميزة لتنفيذ خوارزميات التحكم في ازدحام TCP في شكل برامج BPF. كمثال عرضت برنامج BPF مع تنفيذ الخوارزمية DCTCP.
    • مقبول في الصميم التغييرات، أدوات الترجمة ethtool مع ioctl() للاستخدام واجهة نت لينك. تسهل الواجهة الجديدة إضافة الملحقات، وتحسن معالجة الأخطاء، وتسمح بإرسال الإشعارات عندما تتغير الحالة، وتبسط التفاعل بين النواة ومساحة المستخدم، وتقلل من عدد القوائم المسماة التي تحتاج إلى المزامنة.
    • تمت إضافة تطبيق لخوارزمية إدارة قائمة انتظار الشبكة FQ-PIE (Flow Queue PIE)، والتي تهدف إلى تقليل التأثير السلبي للتخزين المؤقت للحزم المتوسطة على معدات الشبكة الطرفية (bufferbloat). يُظهر FQ-PIE كفاءة عالية عند استخدامه في الأنظمة التي تحتوي على مودم كبل.
  • نظام القرص الفرعي ، I / O وأنظمة الملفات
    • لنظام الملفات Btrfs مضاف التنفيذ غير المتزامن لعملية DISCARD (وضع علامة على الكتل المحررة التي لم تعد بحاجة إلى تخزينها فعليًا). في البداية، تم تنفيذ عمليات DISCARD بشكل متزامن، مما قد يؤدي إلى تدهور الأداء بسبب انتظار محركات الأقراص حتى اكتمال الأوامر المقابلة. يتيح لك التنفيذ غير المتزامن عدم الانتظار حتى يكمل محرك الأقراص DISCARD وتنفيذ هذه العملية في الخلفية.
    • في اكس اف اس تم تنفيذها تنظيف التعليمات البرمجية التي تستخدم عدادات الوقت القديمة 32 بت (تم استبدال نوع time_t بـ time64_t)، مما أدى إلى مشكلة 2038. تم إصلاح الأخطاء وتلف الذاكرة الذي حدث على الأنظمة الأساسية 32 بت. تمت إعادة صياغة التعليمات البرمجية للعمل مع السمات الموسعة.
    • إلى نظام الملفات ext4 صنع تحسينات الأداء المتعلقة بالتعامل مع قفل inode أثناء عمليات القراءة والكتابة. تحسين أداء إعادة الكتابة في وضع الإدخال/الإخراج المباشر. لتبسيط تشخيص المشكلات، يتم تخزين رموز الخطأ الأول والأخير في الكتلة الفائقة.
    • على نظام الملفات F2FS مُنفّذ القدرة على تخزين البيانات في شكل مضغوط. بالنسبة لملف أو دليل فردي، يمكن تمكين الضغط باستخدام الأمر "chattr +c file" أو "chattr +c dir; المس دير/ملف". لضغط القسم بأكمله، يمكنك استخدام الخيار "-opress_extension=ext" في أداة التثبيت المساعدة.
    • تتضمن النواة نظام ملفات ZoneFS، مما يبسط العمل على المستوى المنخفض باستخدام أجهزة التخزين المخصصة للمنطقة. محركات الأقراص المخصصة تعني الأجهزة الموجودة على الأقراص المغناطيسية الصلبة أو محركات أقراص NVMe SSD، حيث يتم تقسيم مساحة التخزين إلى مناطق تشكل مجموعات من الكتل أو القطاعات، والتي يُسمح فيها فقط بإضافة البيانات بشكل تسلسلي، وتحديث مجموعة الكتل بأكملها. تم تطوير FS ZoneFS بواسطة Western Digital ويقوم بربط كل منطقة في محرك الأقراص بملف منفصل يمكن استخدامه لتخزين البيانات في الوضع الأولي دون التلاعب على مستوى القطاع والكتلة، أي. يسمح للتطبيقات باستخدام واجهة برمجة التطبيقات للملفات بدلاً من الوصول مباشرة إلى جهاز الحظر باستخدام ioctl.
    • في NFS، يتم تعطيل تثبيت الأقسام عبر UDP بشكل افتراضي. تمت إضافة دعم للقدرة على نسخ الملفات مباشرة بين الخوادم، المحددة في مواصفات NFS 4.2. تمت إضافة خيار تحميل جديد "softreval"، والذي يسمح باستخدام قيم السمات المخزنة مؤقتًا في حالة فشل الخادم. على سبيل المثال، عند تحديد هذا الخيار، بعد عدم توفر الخادم، يظل من الممكن التحرك على طول المسارات في قسم NFS والوصول إلى المعلومات التي استقرت في ذاكرة التخزين المؤقت.
    • تم تنفيذها تحسين أداء آلية FS-Verity المستخدمة لمراقبة سلامة الملفات الفردية والمصادقة عليها. زيادة سرعة القراءة المتسلسلة بفضل استخدام شجرة تجزئة Merkle. تم تحسين أداء FS_IOC_ENABLE_VERITY في حالة عدم وجود بيانات في ذاكرة التخزين المؤقت (تم تطبيق القراءة الوقائية للصفحات التي تحتوي على بيانات).
  • المحاكاة الافتراضية والأمن
    • لقد تم إهمال القدرة على تعطيل وحدة SELinux أثناء التشغيل، وسيتم حظر إلغاء تحميل SELinux المنشط بالفعل في المستقبل. لتعطيل SELinux، ستحتاج إلى تمرير المعلمة "selinux=0" في سطر أوامر kernel.
    • أضيفت بواسطة دعم مساحات الأسماء للوقت (مساحات أسماء الوقت)، مما يسمح لك بربط حالة ساعة النظام بالحاوية (CLOCK_REALTIME،
      CLOCK_MONOTONIC، CLOCK_BOOTTIME)، استخدم وقتك الخاص في الحاوية، وعند ترحيل الحاوية إلى مضيف آخر، تأكد من أن قراءات CLOCK_MONOTONIC وCLOCK_BOOTTIME تظل دون تغيير (ضع في الاعتبار الوقت بعد التحميل، مع أو بدون مراعاة كونك في وضع السكون ).

    • تمت إزالة تجمع الحظر /dev/random. سلوك /dev/random مشابه لـ /dev/urandom من حيث منع حظر الإنتروبيا بعد تهيئة التجمع.
    • يتضمن النواة الأساسية برنامج تشغيل يسمح لأنظمة الضيف التي تقوم بتشغيل VirtualBox بتركيب الدلائل المصدرة بواسطة البيئة المضيفة (VirtualBox Shared Folder).
    • تمت إضافة مجموعة من التصحيحات إلى نظام BPF الفرعي (مرسل BPF)، عند استخدام آلية Retpoline للحماية من هجمات فئة Spectre V2، فإنها تسمح لك بزيادة كفاءة استدعاء برامج BPF عند حدوث الأحداث المرتبطة بها (على سبيل المثال، تجعل من الممكن تسريع استدعاء معالجات XDP عند حدوث وصول حزمة الشبكة).
    • تمت إضافة برنامج تشغيل لدعم TEE (بيئة التنفيذ الموثوقة) المضمنة في وحدات AMD APUs.
  • خدمات الذاكرة والنظام
    • أضاف BPF الدعم للوظائف العالمية. يتم تنفيذ التطوير كجزء من مبادرة لإضافة دعم للمكتبات للوظائف التي يمكن تضمينها في برامج BPF. ستكون الخطوة التالية هي دعم الامتدادات الديناميكية التي تسمح بتحميل الوظائف العامة، بما في ذلك استبدال الوظائف العالمية الموجودة أثناء استخدامها. يضيف نظام BPF الفرعي أيضًا دعمًا لمتغير عملية الخريطة (المستخدم لتخزين البيانات المستمرة)، والذي يدعم التنفيذ في الوضع الدفعي.
    • تمت الإضافة يتيح لك جهاز "cpu_cooling" تبريد وحدة المعالجة المركزية شديدة الحرارة عن طريق وضعها في حالة الخمول لفترات قصيرة من الوقت.
    • تمت إضافة مكالمة النظام openat2()، والذي يقدم مجموعة من العلامات الإضافية للحد من دقة مسار الملف (حظر عبور نقاط التثبيت، والروابط الرمزية، والروابط السحرية (/proc/PID/fd)، والمكونات "../".
    • بالنسبة للأنظمة غير المتجانسة المستندة إلى بنية big.LITTLE، التي تجمع بين نوى وحدة المعالجة المركزية القوية والأقل كفاءة في استخدام الطاقة في شريحة واحدة، يتم تعيين المعلمة uclamp_min عند تنفيذ المهام في الوقت الفعلي (ظهر في النواة 5.3 هناك آلية لتأمين الحمل). تضمن هذه المعلمة أن يقوم المجدول بوضع المهمة على نواة وحدة المعالجة المركزية التي تتمتع بأداء كافٍ.
    • يتم تحرير النواة من مشاكل 2038. تم استبدال المعالجات الأخيرة المتبقية، والتي تستخدم نوع 32 بت (موقّع int) time_t لعداد الوقت التاريخي، والذي، مع الأخذ في الاعتبار تقرير عام 1970، يجب أن يتجاوز في عام 2038.
    • التحسين المستمر لواجهة الإدخال/الإخراج غير المتزامنة io_uringفيها مؤمن دعم العمليات الجديدة: IORING_OP_FALLOCATE (حجز المناطق الفارغة)، IORING_OP_OPENAT،
      IORING_OP_OPENAT2،
      IORING_OP_CLOSE (فتح وإغلاق الملفات)،
      IORING_OP_FILES_UPDATE (إضافة وإزالة الملفات من قائمة الوصول السريع)،
      IORING_OP_STATX (طلب معلومات الملف)،
      IORING_OP_READ،
      IORING_OP_WRITE (نظيرات مبسطة لـ IORING_OP_READV وIORING_OP_WRITEV)،
      IORING_OP_FADVISE،
      IORING_OP_MADVISE (المتغيرات غير المتزامنة للمكالمات posix_fadvise وmadvise)، IORING_OP_SEND،
      IORING_OP_RECV (إرسال واستقبال بيانات الشبكة)،
      IORING_OP_EPOLL_CTL (إجراء العمليات على واصفات ملف epoll).

    • تمت إضافة مكالمة النظام pidfd_getfd()، مما يسمح لعملية ما باسترداد واصف ملف لملف مفتوح من عملية أخرى.
    • مُنفّذ آلية "bootconfig" التي تتيح، بالإضافة إلى خيارات سطر الأوامر، تحديد معلمات النواة من خلال ملف الإعدادات. لإضافة مثل هذه الملفات إلى صورة initramfs، يُقترح استخدام الأداة المساعدة bootconfig. يمكن استخدام هذه الميزة، على سبيل المثال، لتكوين kprobes في وقت التمهيد.
    • أعيد تصميمها آلية انتظار كتابة وقراءة البيانات في الأنابيب غير المسماة. أتاح هذا التغيير تسريع مهام مثل التجميع المتوازي للمشاريع الكبيرة. ومع ذلك، يمكن أن يؤدي التحسين إلى حالة تعارض في إصدار GNU بسبب خطأ في الإصدار 4.2.1، والذي تم إصلاحه في الإصدار 4.3.
    • تمت إضافة علامة PR_SET_IO_FLUSHER إلى prctl()، والتي يمكن استخدامها لتمييز العمليات الخالية من الذاكرة والتي لا ينبغي أن تخضع لقيود عندما تكون ذاكرة النظام منخفضة.
    • استنادًا إلى نظام توزيع الذاكرة ION المستخدم في Android، تم تنفيذ نظام فرعي أكوام dma-buf، والذي يسمح لك بالتحكم في تخصيص مخازن DMA المؤقتة لمشاركة مناطق الذاكرة بين برامج التشغيل والتطبيقات والأنظمة الفرعية المختلفة.
  • بنيات الأجهزة
    • تمت إضافة دعم لامتداد E0PD، الذي ظهر في ARMv8.5 ويسمح بالحماية ضد الهجمات المتعلقة بالتنفيذ التخميني للتعليمات على وحدة المعالجة المركزية. تؤدي الحماية المستندة إلى E0PD إلى حمل أقل من حماية KPTI (عزل جدول صفحات Kernel).
    • بالنسبة للأنظمة المعتمدة على بنية ARMv8.5، تمت إضافة دعم لتعليمات RNG، مما يوفر الوصول إلى مولد الأرقام العشوائية الزائفة للأجهزة. في النواة، يتم استخدام تعليمات RNG لتوليد الإنتروبيا عند تهيئة مولد الأرقام العشوائية الزائفة المقدم من kernel.
    • تمت إزالة الدعم لـ MPX (امتدادات حماية الذاكرة) المضافة في النواة 3.19 ويسمح لك بتنظيم فحص المؤشرات للتأكد من احترام حدود مناطق الذاكرة. لم يتم استخدام هذه التقنية على نطاق واسع في المترجمين وتمت إزالتها من دول مجلس التعاون الخليجي.
    • بالنسبة لبنية RISC-V، تم تنفيذ دعم أداة تصحيح الأخطاء KASan (مطهر عنوان Kernel)، مما يساعد على تحديد الأخطاء عند العمل مع الذاكرة.
  • معدات
    • تم تنفيذ دعم المواصفات USB 4.0، والذي يعتمد على بروتوكول Thunderbolt 3 ويوفر إنتاجية تصل إلى 40 جيجابت في الثانية، مع الحفاظ على التوافق مع الإصدارات السابقة مع USB 2.0 وUSB 3.2. قياسا على صاعقة تسمح لك واجهة USB 4.0 بتوصيل بروتوكولات مختلفة عبر كابل واحد باستخدام موصل نوع C، بما في ذلك PCIe وDisplay Port وUSB 3.x، بالإضافة إلى تطبيقات البرامج للبروتوكولات، على سبيل المثال، لتنظيم روابط الشبكة بين المضيفين. يعتمد التنفيذ على برنامج تشغيل Thunderbolt المضمن بالفعل في Linux kernel ويقوم بتكييفه للعمل مع الأجهزة المضيفة والأجهزة المتوافقة مع USB4. تضيف التغييرات أيضًا دعمًا لأجهزة Thunderbolt 3 إلى تنفيذ برنامج Connection Manager، وهو المسؤول عن إنشاء أنفاق لتوصيل أجهزة متعددة من خلال موصل واحد.
    • في سائق AMDGpu مضاف الدعم الأولي لتقنية حماية النسخ HDCP 2.x (حماية المحتوى الرقمي ذي النطاق الترددي العالي). تمت إضافة دعم لشريحة AMD Pollock ASIC المستندة إلى Raven 2. تم تنفيذ القدرة على إعادة ضبط وحدة معالجة الرسومات لعائلتي Renoir وNavi.
    • برنامج تشغيل DRM لبطاقات فيديو Intel مضاف تم تنفيذ دعم DSI VDSC للرقائق المستندة إلى البنية الدقيقة لـ Ice Lake وTiger Lake، وتم تنفيذ LMEM mmap (الذاكرة المحلية للجهاز)، وتم تحسين تحليل VBT (Video BIOS Table)، وتم تنفيذ دعم HDCP 2.2 لرقائق Coffee Lake.
    • استمر العمل على توحيد كود برنامج تشغيل amdkfd (لوحدات معالجة الرسوميات المنفصلة، ​​مثل فيجي وتونغا وبولاريس) مع برنامج تشغيل amdgpu.
    • تمت إعادة صياغة برنامج التشغيل k10temp، مما أضاف دعمًا لعرض معلمات الجهد والتيار لوحدات المعالجة المركزية AMD Zen، بالإضافة إلى معلومات موسعة من مستشعرات درجة الحرارة المستخدمة في وحدات المعالجة المركزية Zen وZen 2.
    • في السائق الجديد مضاف دعم وضع تحميل البرامج الثابتة الذي تم التحقق منه لوحدات معالجة الرسومات NVIDIA استنادًا إلى معمارية Turing الدقيقة (GeForce RTX 2000)، مما جعل من الممكن تمكين دعم التسريع ثلاثي الأبعاد لهذه البطاقات (مطلوب تنزيل البرامج الثابتة الرسمية باستخدام توقيع NVIDIA الرقمي). تمت إضافة دعم لمحرك الرسومات TU3x. تم حل مشاكل HD Audio.
    • تمت إضافة دعم لضغط البيانات عند إرسالها عبر DisplayPort MST (النقل متعدد الدفق).
    • تمت إضافة سائق جديد "ath11k» لرقائق كوالكوم اللاسلكية التي تدعم 802.11ax.
      يعتمد برنامج التشغيل على مكدس mac80211 ويدعم أوضاع نقطة الوصول ومحطة العمل وعقدة الشبكة.

    • من خلال sysfs، يتم توفير الوصول إلى قراءات مستشعر درجة الحرارة القابلة للقراءة والمستخدمة في محركات الأقراص الثابتة الحديثة ومحركات أقراص SSD.
    • ساهم تغييرات كبيرة على نظام الصوت ALSA، تهدف إلى تخليص الكود من مشاكل 2038 (تجنب استخدام نوع time_t 32 بت في الواجهات snd_pcm_mmap_status وsnd_pcm_mmap_control). تمت إضافة دعم لبرامج ترميز الصوت الجديدة
      كوالكوم WCD9340/WCD9341، ريالتيك RT700، RT711، RT715، RT1308، إنجينيك JZ4770.

    • مضاف برامج تشغيل لوحات LCD Logic PD 28, Jimax8729d MIPI-DSI, igenic JZ4770, Sony acx424AKP, Leadtek LTK500HD1829, Xinpeng XPP055C272, AUO B116XAK01, GiantPlus GPM940B0,
      بنك إنجلترا NV140FHM-N49,
      ساتوز SAT050AT40H12R2,
      شارب LS020B1DD01D.

    • أضيفت بواسطة دعم لوحات ARM ومنصات Gen1 Amazon Echo (المعتمد على OMAP3630)، وSamsung Galaxy S III mini (GT-I8190)، وAllwinner Emlid Neutis، وLibre Computer ALL-H3-IT، وPineH64 Model B، وAibretech Amlogic GX PC،
      أرمادا سوليد رن كلير فوج جي تي آر، إن إكس بي جيتوركس GW59xx،
      تولينو شاين 3 قارئ الكتب الإلكترونية،
      الفنانين المضمنين COM (i.MX7ULP)، وSolidRun Clearfog CX/ITX وHoneyComb (LX2160A)، وGoogle Coral Edge TPU (i.MX8MQ)،
      Rockchip Radxa Dalang Carrier، Radxa Rock Pi N10، VMARC RK3399Pro SOM
      ST Ericsson HREF520، Inforce 6640، SC7180 IDP، Atmel/Microchip AM9X60 (ARM926 SoC، Kizboxmini)، ST stm32mp15، AM3703/AM3715/DM3725، ST Ericsson ab8505، Unisoc SC9863A، Qualcomm SC7180. تمت إضافة دعم لوحدة تحكم PCIe المستخدمة في Raspberry Pi 4.

وفي الوقت نفسه، مؤسسة البرمجيات الحرة في أمريكا اللاتينية شكلت
خيار نواة مجانية تماما 5.6 - لينكس ليبر 5.6 جنو، تم مسحها من البرامج الثابتة وعناصر برنامج التشغيل التي تحتوي على مكونات غير حرة أو أقسام تعليمات برمجية، والتي يقتصر نطاقها من قبل الشركة المصنعة. يعمل الإصدار الجديد على تعطيل تحميل البيانات الثنائية الكبيرة الحجم في برامج تشغيل AMD TEE وATH11K وMediatek SCP. تم تحديث كود تنظيف النقطة الكبيرة في برامج تشغيل وأنظمة فرعية AMD PSP وamdgpu وnouveau.

المصدر: opennet.ru

إضافة تعليق