إصدار Linux 5.11 kernel

بعد شهرين من التطوير، قدم لينوس تورفالدس إصدار Linux kernel 5.11. من بين أبرز التغييرات: دعم جيوب Intel SGX، وآلية جديدة لاعتراض مكالمات النظام، وناقل مساعد افتراضي، وحظر تجميع الوحدات بدون MODULE_LICENSE()، ووضع تصفية سريع لاستدعاءات النظام في seccomp، وإنهاء دعم بنية ia64، ونقل تقنية WiMAX إلى فرع "التدريج"، والقدرة على تغليف SCTP في UDP.

يتضمن الإصدار الجديد 15480 إصلاحًا من 1991 مطورًا، وحجم التصحيح هو 72 ميجابايت (أثرت التغييرات على 12090 ملفًا، وتمت إضافة 868025 سطرًا من التعليمات البرمجية، وتم حذف 261456 سطرًا). حوالي 46% من جميع التغييرات التي تم إدخالها في 5.11 تتعلق ببرامج تشغيل الأجهزة، وحوالي 16% من التغييرات تتعلق بتحديث التعليمات البرمجية الخاصة ببنيات الأجهزة، و13% تتعلق بمكدس الشبكة، و3% تتعلق بأنظمة الملفات، و4% ترتبط بالأنظمة الفرعية للنواة الداخلية.

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

  • نظام القرص الفرعي ، I / O وأنظمة الملفات
    • تمت إضافة العديد من خيارات التثبيت إلى Btrfs لاستخدامها عند استعادة البيانات من نظام ملفات تالف: "rescue=ignorebadroots" للتثبيت، على الرغم من تلف بعض الأشجار الجذرية (المدى، uuid، إعادة تحديد البيانات، الجهاز، csum، المساحة الحرة)، " Rescue=ignoredatacsums" لتعطيل التحقق من المجموع الاختباري للبيانات و"rescue=all" لتمكين أوضاع "ignorebadroots" و"ignoredatacsums" و"nologreplay" في نفس الوقت. تم إيقاف خيار التحميل "inode_cache"، الذي تم إهماله سابقًا. تم إعداد الكود لتنفيذ الدعم للكتل ذات البيانات الوصفية والبيانات الأصغر من حجم الصفحة (PAGE_SIZE)، بالإضافة إلى دعم وضع تخصيص المساحة المخصصة للمنطقة. تم نقل الطلبات غير المخزنة مؤقتًا (الإدخال المباشر) إلى البنية الأساسية لـ iomap. تم تحسين أداء عدد من العمليات، وفي بعض الحالات، يمكن أن يصل التسارع إلى عشرات بالمائة.
    • يطبق XFS علامة "needsrepair"، التي تشير إلى الحاجة إلى الإصلاح. عند تعيين هذه العلامة، لا يمكن تحميل نظام الملفات حتى تتم إعادة تعيين العلامة بواسطة الأداة المساعدة xfs_repair.
    • يقدم Ext4 فقط إصلاحات الأخطاء والتحسينات، بالإضافة إلى تنظيف التعليمات البرمجية.
    • يُسمح بإعادة تصدير أنظمة الملفات المثبتة عبر NFS (أي يمكن الآن تصدير القسم المثبت عبر NFS عبر NFS واستخدامه كذاكرة تخزين مؤقت وسيطة).
    • أضاف استدعاء النظام Close_range()، الذي يسمح لعملية ما بإغلاق نطاق كامل من واصفات الملفات المفتوحة مرة واحدة، خيار CLOSE_RANGE_CLOEXEC لإغلاق الواصفات في وضع الإغلاق عند التنفيذ.
    • يضيف نظام الملفات F2FS استدعاءات ioctl() جديدة للسماح بالتحكم في مساحة المستخدم على الملفات التي يتم تخزينها في شكل مضغوط. تمت إضافة خيار التحميل "compress_mode =" لاختيار ما إذا كنت تريد وضع معالج الضغط على جانب kernel أو في مساحة المستخدم.
    • توفير القدرة على تحميل Overlayfs من خلال عمليات غير مميزة باستخدام مساحة اسم مستخدم منفصلة. للتحقق من الامتثال لتطبيق نموذج الأمان، تم إجراء تدقيق كامل للكود. تضيف Overlayfs أيضًا القدرة على التشغيل باستخدام نسخ من صور نظام الملفات عن طريق تعطيل التحقق من UUID اختياريًا.
    • أضاف نظام الملفات Ceph دعمًا لبروتوكول msgr2.1، والذي يسمح باستخدام خوارزمية AES-GCM عند نقل البيانات في شكل مشفر.
    • تنفذ وحدة dm-multipath القدرة على مراعاة تقارب وحدة المعالجة المركزية ("تقارب IO") عند اختيار المسار لطلبات الإدخال/الإخراج.
  • خدمات الذاكرة والنظام
    • تمت إضافة آلية جديدة لاعتراض مكالمات النظام، استنادًا إلى prctl()، والتي تتيح لك إنشاء استثناءات من مساحة المستخدم عند الوصول إلى استدعاء نظام معين ومحاكاة تنفيذه. هذه الوظيفة مطلوبة في Wine وProton لمحاكاة مكالمات نظام Windows، وهو أمر ضروري لضمان التوافق مع الألعاب والبرامج التي تقوم مباشرة بإجراء مكالمات النظام لتجاوز Windows API (على سبيل المثال، للحماية من الاستخدام غير المصرح به).
    • استدعاء النظام userfaultfd()، المصمم للتعامل مع أخطاء الصفحات (الوصول إلى صفحات الذاكرة غير المخصصة) في مساحة المستخدم، لديه الآن القدرة على تعطيل معالجة الاستثناءات التي تحدث على مستوى kernel لجعل استغلال بعض الثغرات الأمنية أكثر صعوبة.
    • أضاف نظام BPF الفرعي دعمًا للتخزين المحلي للمهام، والذي يوفر ربط البيانات بمعالج BPF محدد.
    • تمت إعادة تصميم حساب استهلاك الذاكرة بواسطة برامج BPF بالكامل - تم اقتراح وحدة تحكم cgroup بدلاً من memlock rlimit لإدارة استخدام الذاكرة في كائنات BPF.
    • توفر آلية BTF (تنسيق نوع BPF)، التي توفر معلومات التحقق من النوع في الكود الكاذب BPF، الدعم لوحدات kernel.
    • تمت إضافة دعم لاستدعاءات النظام Shutdown() وrenameat2() وunlinkat() إلى واجهة الإدخال/الإخراج غير المتزامنة io_uring. عند استدعاء io_uring_enter()، تمت إضافة القدرة على تحديد المهلة (يمكنك التحقق من دعم الوسيطة لتحديد المهلة باستخدام علامة IORING_FEAT_EXT_ARG).
    • تم نقل معمارية ia64 المستخدمة في معالجات Intel Itanium إلى الفئة اليتيمة، مما يعني توقف الاختبار. توقفت شركة Hewlett Packard Enterprise عن قبول طلبات شراء معدات Itanium الجديدة، كما فعلت شركة Intel في العام الماضي.
    • تم إيقاف دعم الأنظمة المستندة إلى بنية MicroBlaze التي لا تتضمن وحدة إدارة الذاكرة (MMU). لم يتم رؤية مثل هذه الأنظمة في الحياة اليومية لفترة طويلة.
    • بالنسبة لبنية MIPS، تمت إضافة دعم لاختبار تغطية التعليمات البرمجية باستخدام الأداة المساعدة gcov.
    • تمت إضافة دعم للناقل المساعد الافتراضي للتواصل مع الأجهزة متعددة الوظائف التي تجمع بين الوظائف التي تتطلب برامج تشغيل مختلفة (على سبيل المثال، بطاقات الشبكة مع دعم Ethernet وRDMA). يمكن استخدام الناقل لتعيين برنامج تشغيل أساسي وثانوي لجهاز ما، في المواقف التي يكون فيها استخدام النظام الفرعي MFD (الأجهزة متعددة الوظائف) مشكلة.
    • بالنسبة إلى بنية RISC-V، تمت إضافة الدعم لنظام تخصيص الذاكرة CMA (مخصص الذاكرة المتجاورة)، والذي تم تحسينه لتخصيص مناطق ذاكرة كبيرة متجاورة باستخدام تقنيات حركة صفحة الذاكرة. بالنسبة لـ RISC-V، يتم أيضًا تطبيق الأدوات لتقييد الوصول إلى /dev/mem ومراعاة وقت معالجة المقاطعة.
    • بالنسبة لأنظمة ARM 32 بت، تمت إضافة الدعم لأداة تصحيح الأخطاء KASan (مطهر عنوان Kernel)، والتي تساعد في تحديد الأخطاء عند العمل مع الذاكرة. بالنسبة لـ ARM 64 بت، تم تحويل تطبيق KASan لاستخدام علامات MTE (MemTag).
    • تمت إضافة استدعاء نظام epoll_pwait2() للسماح بانتهاء المهلات بدقة النانو ثانية (استدعاء epoll_wait يعالج المللي ثانية).
    • يعرض نظام البناء الآن خطأً عند محاولة إنشاء وحدات kernel قابلة للتحميل والتي لم يتم فيها تعريف ترخيص الكود باستخدام ماكرو MODULE_LICENSE(). من الآن فصاعدًا، سيؤدي استخدام الماكرو EXPORT_SYMBOL() للوظائف الثابتة أيضًا إلى حدوث خطأ في البناء.
    • تمت إضافة دعم لتعيين كائنات GEM من الذاكرة المستخدمة للإدخال/الإخراج، مما جعل من الممكن تسريع العمل مع مخزن الإطارات المؤقت في بعض البنيات.
    • لقد أسقط Kconfig دعم Qt4 (مع الحفاظ على دعم Qt5 وGTK وNcurses).
  • المحاكاة الافتراضية والأمن
    • تمت إضافة دعم وضع الاستجابة السريعة إلى استدعاء النظام seccomp()، والذي يسمح لك بتحديد ما إذا كان استدعاء نظام معين مسموحًا به أم محظورًا بسرعة كبيرة استنادًا إلى الصورة النقطية للإجراء الثابت المرفقة بالعملية، والتي لا تتطلب التشغيل معالج BPF.
    • مكونات kernel متكاملة لإنشاء وإدارة الجيوب القائمة على تقنية Intel SGX (Software Guard eXtensions)، والتي تسمح للتطبيقات بتنفيذ التعليمات البرمجية في مناطق مشفرة معزولة من الذاكرة، والتي يكون الوصول إليها محدودًا لبقية النظام.
    • كجزء من مبادرة للحد من الوصول من مساحة المستخدم إلى MSR (السجل الخاص بالطراز)، الكتابة إلى سجل MSR_IA32_ENERGY_PERF_BIAS، والذي يسمح لك بتغيير وضع كفاءة طاقة المعالج ("عادي"، "أداء"، "توفير الطاقة") ، يحظر.
    • تم نقل القدرة على تعطيل ترحيل المهام ذات الأولوية العالية بين وحدات المعالجة المركزية (CPU) من فرع kernel-rt لأنظمة الوقت الفعلي.
    • بالنسبة لأنظمة ARM64، تمت إضافة القدرة على استخدام علامات MTE (MemTag، ملحق وضع علامات الذاكرة) لعناوين ذاكرة معالج الإشارة. يتم تمكين استخدام MTE عن طريق تحديد خيار SA_EXPOSE_TAGBITS في sigaction() ويسمح لك بالتحقق من الاستخدام الصحيح للمؤشرات لمنع استغلال الثغرات الأمنية الناتجة عن الوصول إلى كتل الذاكرة المحررة بالفعل، وتجاوز سعة المخزن المؤقت، والوصول قبل التهيئة، والاستخدام خارج السياق الحالي.
    • تمت إضافة المعلمة "DM_VERITY_VERIFY_ROOTHASH_SIG_SECONDARY_KEYRING"، والتي تسمح للنظام الفرعي dm-verity بالتحقق من توقيعات التجزئة للشهادات الموضوعة في حلقة المفاتيح الثانوية. من الناحية العملية، يتيح لك الإعداد التحقق ليس فقط من الشهادات المضمنة في النواة، ولكن أيضًا من الشهادات التي تم تحميلها أثناء التشغيل، مما يجعل من الممكن تحديث الشهادات دون تحديث النواة بأكملها.
    • أضاف وضع المستخدم Linux دعمًا لوضع التوقف المرحلي إلى الخمول، والذي يسمح لك بتجميد البيئة واستخدام إشارة SIGUSR1 للاستيقاظ من وضع السكون.
    • أضافت آلية Virtio-mem، التي تسمح لك بتوصيل الذاكرة وفصلها عن الأجهزة الافتراضية، دعمًا لوضع الكتلة الكبيرة (BBM)، مما يجعل من الممكن نقل الذاكرة أو أخذها في كتل أكبر من حجم ذاكرة kernel الكتلة، وهو أمر ضروري لتحسين VFIO في QEMU.
    • تمت إضافة دعم تشفير CHACHA20-POLY1305 إلى تطبيق kernel لـ TLS.
  • النظام الفرعي للشبكة
    • بالنسبة لـ 802.1Q (VLAN)، تم تطبيق آلية إدارة فشل الاتصال (CFM، إدارة أخطاء الاتصال)، والتي تتيح لك تحديد حالات الفشل والتحقق منها وعزلها في الشبكات ذات الجسور الافتراضية (الشبكات الافتراضية الجسرية). على سبيل المثال، يمكن استخدام CFM لعزل المشكلات في الشبكات التي تغطي العديد من المؤسسات المستقلة التي يتمتع موظفوها بإمكانية الوصول إلى أجهزتهم الخاصة فقط.
    • تمت إضافة دعم لتغليف حزم بروتوكول SCTP في حزم UDP (RFC 6951)، مما يسمح لك باستخدام SCTP على الشبكات ذات مترجمي العناوين الأقدم الذين لا يدعمون SCTP بشكل مباشر، بالإضافة إلى تنفيذ SCTP على الأنظمة التي لا توفر وصولاً مباشرًا إلى IP طبقة.
    • تم نقل تطبيق تقنية WiMAX إلى المرحلة المرحلية ومن المقرر إزالتها في المستقبل إذا لم يكن هناك مستخدمون يحتاجون إلى WiMAX. لم يعد يتم استخدام WiMAX في الشبكات العامة، وفي النواة فإن برنامج التشغيل الوحيد الذي يمكن استخدام WiMAX من خلاله هو برنامج تشغيل Intel 2400m القديم. تم إيقاف دعم WiMAX في مكون الشبكة NetworkManager في عام 2015. حاليًا، تم استبدال WiMax بالكامل تقريبًا بتقنيات مثل LTE وHSPA+ وWi-Fi 802.11n.
    • لقد تم العمل على تحسين أداء معالجة حركة مرور TCP الواردة في وضع النسخة الصفرية، أي. دون نسخ إضافية إلى مخازن مؤقتة جديدة. بالنسبة لحركة المرور متوسطة الحجم، التي تغطي عشرات أو عدة مئات من الكيلوبايتات من البيانات، فإن استخدام Zerocopy بدلاً منrecvmsg() يكون أكثر فعالية بشكل ملحوظ. على سبيل المثال، أتاحت التغييرات التي تم تنفيذها زيادة كفاءة معالجة حركة المرور بنمط RPC برسائل بحجم 32 كيلو بايت عند استخدام النسخة الصفرية بنسبة 60-70%.
    • تمت إضافة استدعاءات ioctl() جديدة لإنشاء جسور شبكة تمتد عبر روابط PPP متعددة. تسمح الإمكانية المقترحة للإطارات بالانتقال من قناة إلى أخرى، على سبيل المثال من PPPoE إلى جلسة PPPoL2TP.
    • التكامل في قلب MPTCP (MultiPath TCP)، وهو امتداد لبروتوكول TCP لتنظيم تشغيل اتصال TCP مع تسليم الحزم في وقت واحد عبر عدة مسارات عبر واجهات شبكة مختلفة مرتبطة بعناوين IP مختلفة. يقدم الإصدار الجديد دعمًا لخيار ADD_ADDR للإعلان عن عناوين IP المتاحة التي يمكن الاتصال بها عند إضافة تدفقات جديدة إلى اتصال MPTCP موجود.
    • تمت إضافة القدرة على تكوين الإجراءات عند تجاوز ميزانية استقصاء الاتصال (استقصاء مشغول). كان وضع SO_BUSY_POLL المتوفر مسبقًا يعني التبديل إلى softirq عند استنفاد الميزانية. بالنسبة للتطبيقات التي تحتاج إلى الاستمرار في استخدام الاستقصاء، يتم اقتراح خيار جديد SO_PREFER_BUSY_POLL.
    • ينفذ IPv6 الدعم لأوضاع SRv6 End.DT4 وEnd.DT6، المستخدمة لإنشاء شبكات IPv4 L3 VPN متعددة المستخدمين وأجهزة VRF (التوجيه وإعادة التوجيه الافتراضي).
    • قام Netfilter بتوحيد تنفيذ مجموعة التعبيرات، مما جعل من الممكن تحديد تعبيرات متعددة لكل عنصر من عناصر قوائم المجموعة.
    • تمت إضافة واجهات برمجة التطبيقات إلى المجموعة اللاسلكية 802.11 لتكوين حدود طاقة SAR، بالإضافة إلى معلمات AE PWE وHE MCS. أضاف برنامج تشغيل Intel iwlwifi دعمًا لنطاق 6 جيجا هرتز (Ultra High Band). أضاف برنامج التشغيل Qualcomm Ath11k دعمًا لتقنية FILS (إعداد الارتباط الأولي السريع، الموحد كـ IEEE 802.11ai)، والتي تتيح لك التخلص من تأخيرات التجوال أثناء الترحيل من نقطة وصول إلى أخرى.
  • معدات
    • يوفر برنامج تشغيل amdgpu الدعم لـ AMD "Green Sardine" APU (Ryzen 5000) و"Dimgrey Cavefish" GPU (Navi 2)، بالإضافة إلى الدعم الأولي لـ AMD Van Gogh APU مع Zen 2 core وRDNA 2 GPU (Navi 2). تمت إضافة دعم لمعرفات Renoir APU الجديدة (استنادًا إلى Zen 2 CPU وVega GPU).
    • يدعم برنامج تشغيل i915 لبطاقات فيديو Intel تقنية IS (قياس عدد صحيح) مع تطبيق مرشح لزيادة الحجم مع مراعاة حالة وحدات البكسل المجاورة (استيفاء الجار الأقرب) لتحديد لون وحدات البكسل المفقودة. تم توسيع دعم بطاقات Intel DG1 المنفصلة. تم تنفيذ دعم تقنية "Big Joiner"، والتي كانت موجودة منذ شرائح Ice Lake / Gen11 وتسمح باستخدام محول ترميز واحد لمعالجة دفقين، على سبيل المثال، للإخراج إلى شاشة 8K عبر DisplayPort واحد. تمت إضافة وضع للتبديل بشكل غير متزامن بين مخزنين مؤقتين في ذاكرة الفيديو (القلب غير المتزامن).
    • أضاف برنامج التشغيل الجديد دعمًا أوليًا لوحدات معالجة الرسومات NVIDIA استنادًا إلى معمارية Ampere الدقيقة (GA100، GeForce RTX 30xx)، والتي تقتصر حتى الآن على أدوات التحكم في أوضاع الفيديو.
    • تمت إضافة دعم لبروتوكول 3WIRE المستخدم في لوحات LCD. تمت إضافة دعم للوحات novatek nt36672a وTDO tl070wsh30 وInnolux N125HCE-GN1 وABT Y030XX067A 3.0. بشكل منفصل، يمكننا أن نلاحظ دعم لوحة الهواتف الذكية OnePlus 6 و 6T، مما جعل من الممكن تنظيم تحميل نواة غير معدلة على الأجهزة.
    • تمت إضافة دعم لوحدة التحكم المضيف USB4 المنفصلة الأولى من Intel، Maple Ridge.
    • تمت إضافة دعم لـ Allwinner H6 I2S والأجهزة التناظرية ADAU1372 وIntel Alderlake-S وGMediatek MT8192 وNXP i.MX HDMI وXCVR وبرامج ترميز الصوت Realtek RT715 وQualcomm SM8250.
    • دعم إضافي للوحات والأجهزة والمنصات ARM: Galaxy Note 10.1، Microsoft Lumia 950 XL، NanoPi R1، FriendlyArm ZeroPi، Elimo Initium SBC، Broadcom BCM4908، Mediatek MT8192/MT6779/MT8167، MStar Infinity2M، Nuvoton NPCM730، Marvell Armada 382، ​​Mikrotik يعتمد على Marvell Prestera 98DX3236، وخوادم مزودة بـ Nuvoton NPCM750 BMC، وKontron i.MX8M Mini، وEspressobin Ultra، و"Trogdor" Chromebook، وKobol Helios64، وEngicam PX30.Core.
    • دعم مدمج لوحدة تحكم الألعاب Ouya المستندة إلى NVIDIA Tegra 3.

في الوقت نفسه، شكلت مؤسسة البرمجيات الحرة لأمريكا اللاتينية نسخة من نواة 5.11 المجانية تمامًا - Linux-libre 5.11-gnu، خالية من عناصر البرامج الثابتة وبرامج التشغيل التي تحتوي على مكونات غير حرة أو أقسام تعليمات برمجية، ونطاقها محدود. من قبل الشركة المصنعة. يقوم الإصدار الجديد بتنظيف برامج التشغيل لـ qat_4xxx (crypto)، وlt9611uxcm (dsi/hdmi Bridge)، وccs/smia++ (sensor)، وath11k_pci، وجهاز إرسال واستقبال الصوت nxp، ووحدة التحكم mhi pci. تحديث رمز تنظيف النقطة الكبيرة في برامج التشغيل والأنظمة الفرعية amdgpu، btqca، btrtl، btusb، i915 csr. تم تعطيل النقط الجديدة في m3 rproc وidt82p33 ptp Clock وQualcomm Arm64.

المصدر: opennet.ru

إضافة تعليق