إصدار Linux 5.1 kernel

بعد شهرين من تطوير لينوس تورفالدس المقدمة الافراج عن النواة لينكس شنومكس. من بين أبرز التغييرات: واجهة جديدة للإدخال/الإخراج غير المتزامن io_uring، والقدرة على استخدام NVDIMM كذاكرة الوصول العشوائي (RAM)، ودعم الذاكرة الافتراضية المشتركة في Nouveau، ودعم المراقبة القابلة للتطوير لأنظمة الملفات الكبيرة جدًا عبر fanotify، والقدرة على تكوين ضغط Zstd المستويات في Btrfs، ومعالج cpuidle TEO الجديد، وتنفيذ مكالمات النظام لحل مشكلة 2038، والقدرة على التمهيد من أجهزة مخطط الجهاز بدون initramfs، ووحدة SafeSetID LSM، ودعم التصحيحات المباشرة المدمجة.

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

  • نظام القرص الفرعي ، I / O وأنظمة الملفات
    • تم تنفيذ واجهة جديدة للإدخال/الإخراج غير المتزامن - io_uring، والذي يتميز بدعمه لاستقصاء الإدخال/الإخراج والقدرة على العمل مع التخزين المؤقت أو بدونه. دعونا نتذكر أن آلية الإدخال/الإخراج غير المتزامنة المقترحة مسبقًا "aio" لم تدعم الإدخال/الإخراج المخزن مؤقتًا، ويمكن أن تعمل فقط في وضع O_DIRECT (بدون تخزين مؤقت وتجاوز ذاكرة التخزين المؤقت)، وكانت تواجه مشكلات في القفل بسبب انتظار توفر البيانات التعريفية، و عرضت تكاليف عامة كبيرة بسبب نسخ البيانات في الذاكرة.

      داخل واجهة برمجة التطبيقات
      حاول مطورو io_uring إزالة أوجه القصور في واجهة aio القديمة. بواسطة إنتاجية io_uring قريب جدًا من SPDK ويتقدم بشكل كبير على libaio عند العمل مع تمكين الاقتراع. تم إعداد مكتبة لاستخدام io_uring في التطبيقات النهائية التي تعمل في مساحة المستخدم liburing، والذي يوفر إطارًا عالي المستوى عبر واجهة kernel؛

    • في آلية تتبع الأحداث في FS fanotify() مضاف دعم لتتبع حالات تغيير الكتلة والهيكل مباشر (أحداث إنشاء وحذف ونقل الدلائل). تساعد الميزات المقدمة في حل مشكلات قابلية التوسع التي تنشأ عند إنشاء تتبع تغيير متكرر في أنظمة ملفات كبيرة جدًا باستخدام آلية inotify (كان من الممكن في السابق تتبع التغييرات المباشرة فقط من خلال inotify، ولكن
      الأداء في ظروف التتبع العودي للأدلة المتداخلة الكبيرة ترك الكثير مما هو مرغوب فيه). الآن يمكن إجراء هذه المراقبة بشكل فعال من خلال fanotify؛

    • على نظام الملفات Btrfs مضاف القدرة على تخصيص مستوى الضغط لخوارزمية zstd، والتي يمكن اعتبارها حلاً وسطًا مثاليًا بين lz4 السريع ولكن غير الفعال والضغط البطيء ولكن الجيد xz. قياسًا على الطريقة التي كان من الممكن بها سابقًا ضبط مستوى الضغط عند استخدام zlib، تمت إضافة دعم خيار التثبيت "-oضغط = zstd:level" لـ zstd. أثناء الاختبار، قدم المستوى الأول الأدنى ضغطًا للبيانات بمقدار 2.658 مرة مع سرعة ضغط 438.47 ميجابايت/ثانية، وسرعة فك ضغط 910.51 ميجابايت/ثانية واستهلاك ذاكرة 780 ميجابايت، والمستوى الأقصى 15 قدم 3.126 مرة، ولكن مع ضغط سرعة 37.30 ميجابايت/ثانية التفريغ 878.84 ميجابايت/ثانية واستهلاك الذاكرة 2547 ميجابايت؛
    • أضيفت بواسطة القدرة على التمهيد من نظام الملفات الموجود على جهاز تعيين الجهاز، دون استخدام initramfs. بدءًا من إصدار kernel الحالي، يمكن استخدام أجهزة مخطط الجهاز مباشرة أثناء عملية التمهيد، على سبيل المثال، كقسم مع نظام الملفات الجذر. تم تكوين القسم باستخدام معلمة التمهيد "dm-mod.create". تتضمن وحدات مخطط الأجهزة المسموح بتحميلها ما يلي: "crypt" و"delay" و"linear" و"snapshot-origin" و"verity"؛
    • تمت إضافة علامة F2FS_NOCOW_FL إلى نظام الملفات F2FS الموجه نحو محركات الأقراص المحمولة، مما يسمح لك بتعطيل وضع النسخ عند الكتابة لملف معين؛
    • تمت إزالة نظام الملفات من النواة إكسوفس، وهو أحد أشكال ext2، تم تكييفه للعمل مع مخازن كائنات OSD (جهاز التخزين القائم على الكائنات). تمت أيضًا إزالة دعم بروتوكول SCSI لأجهزة تخزين الكائنات هذه؛
  • المحاكاة الافتراضية والأمن
    • تمت إضافة خيار PR_SPEC_DISABLE_NOEXEC إلى prctl() للتحكم في التنفيذ التخميني لتعليمات العملية المحددة. يتيح لك الخيار الجديد تعطيل التنفيذ التخميني بشكل انتقائي للعمليات التي من المحتمل أن تتعرض للهجوم بواسطة هجوم Spectre. يستمر القفل حتى الاستدعاء الأول لـ exec();
    • تم تنفيذ وحدة LSM معرف_الإعدادات_الرقمية، والذي يسمح لخدمات النظام بإدارة المستخدمين بشكل آمن دون تصعيد الامتيازات (CAP_SETUID) ودون الحصول على امتيازات الجذر. يتم تعيين الامتيازات عن طريق تحديد القواعد في Securityfs بناءً على قائمة بيضاء من الارتباطات الصالحة (في النموذج "UID1:UID2")؛
    • تمت إضافة تغييرات منخفضة المستوى مطلوبة للتحميل المستند إلى المكدس لوحدات الأمان (LSMs). تقديم خيار تمهيد kernel "lsm" للتحكم في الوحدات التي سيتم تحميلها وبأي ترتيب؛
    • تمت إضافة دعم مساحات أسماء الملفات إلى النظام الفرعي للتدقيق؛
    • موسع إمكانيات البرنامج المساعد لدول مجلس التعاون الخليجي، والذي يسمح لك بحظر التسريبات المحتملة لمحتويات الذاكرة.يتم توفير تهيئة أي متغيرات يتم استخدامها في التعليمات البرمجية من خلال الوصول المرجعي على المكدس؛
  • النظام الفرعي للشبكة
    • للمآخذ مُنفّذ خيار جديد "SO_BINDTOIFINDEX" مشابه لـ
      "SO_BINDTODEVICE"، ولكن مع استخدام رقم فهرس واجهة الشبكة بدلاً من اسم الواجهة كوسيطة؛

    • أضاف مكدس mac80211 القدرة على تعيين معرفات BSSID متعددة (عناوين MAC) لجهاز واحد. كجزء من مشروع لتحسين أداء WiFi، أضاف مكدس mac80211 حساب وقت البث والقدرة على توزيع وقت البث بين محطات متعددة (عند التشغيل في وضع نقطة الوصول، تخصيص وقت إرسال أقل للمحطات اللاسلكية البطيئة، بدلاً من توزيع الوقت بالتساوي بين الجميع محطات)؛
    • آلية المضافة "صحة ديفلينك"، والذي يوفر إشعارات عند حدوث مشكلات في واجهة الشبكة؛
  • خدمات الذاكرة والنظام
    • مُنفّذ تسليم إشارة آمن يسمح بإعادة استخدام PID. على سبيل المثال، عند استدعاء القتل سابقًا، يمكن أن ينشأ موقف حيث يمكن تحرير معرف PID المستهدف مباشرة بعد إرسال الإشارة بسبب إنهاء العملية وشغله بعملية أخرى، وينتهي الأمر بتمرير الإشارة إلى عملية أخرى. للتخلص من مثل هذه المواقف، تمت إضافة استدعاء نظام جديد pidfd_send_signal، والذي يستخدم واصفات الملفات من /proc/pid لضمان ربط العملية بشكل مستقر. حتى إذا تم إعادة استخدام معرف العملية (PID) أثناء معالجة استدعاء النظام، فلن يتغير واصف الملف ويمكن استخدامه بأمان لإرسال إشارة إلى العملية؛
    • أضيفت بواسطة القدرة على استخدام أجهزة الذاكرة الدائمة (الذاكرة الدائمة مثلاً NVDIMM) مثل ذاكرة الوصول العشوائي. حتى الآن، كانت النواة تدعم أجهزة مثل أجهزة التخزين، ولكن الآن يمكن استخدامها أيضًا كذاكرة وصول عشوائي إضافية. يتم تنفيذ هذه الميزة استجابةً لرغبات المستخدمين الذين يرغبون في تحمل تأخر الأداء ويريدون استخدام واجهة برمجة تطبيقات إدارة ذاكرة Linux kernel الأصلية بدلاً من استخدام أنظمة تخصيص ذاكرة مساحة المستخدم الحالية التي تعمل أعلى mmap لـ dax ملف؛
    • تمت إضافة معالج خامل جديد لوحدة المعالجة المركزية (cpuidle، يقرر متى يمكن وضع وحدة المعالجة المركزية في أوضاع توفير الطاقة العميقة؛ كلما كان الوضع أعمق، زاد التوفير، ولكن أيضًا كلما استغرق الخروج من الوضع وقتًا أطول) - TEO (حاكم موجه نحو أحداث المؤقت ). حتى الآن، تم اقتراح معالجين لـ cpuidle - "القائمة" و"السلم"، ويختلفان في الاستدلال. واجه معالج "القائمة" مشكلات في اتخاذ قرارات إرشادية، ولحل هذه المشكلات تقرر إعداد معالج جديد. يتم وضع TEO كبديل لمعالج "القائمة"، مما يسمح بأداء أعلى مع الحفاظ على نفس المستوى من استهلاك الطاقة.
      يمكنك تنشيط المعالج الجديد باستخدام معلمة التمهيد "cpuidle.governor=teo"؛

    • كجزء من العمل للقضاء مشاكل 2038، الناتج عن تجاوز سعة النوع time_t 32 بت، يتضمن استدعاءات النظام التي توفر عدادات زمنية 32 بت لبنيات 64 بت. ونتيجة لذلك، يمكن الآن استخدام بنية time_t ذات 64 بت في جميع البنيات. تم أيضًا تنفيذ تغييرات مماثلة في النظام الفرعي للشبكة للحصول على الخيارات الطابع الزمني مآخذ الشبكة
    • في نظام الترقيع الساخن للنواة (الترقيع المباشر) مضاف ميزة "الاستبدال الذري" لتطبيق سلسلة من التغييرات ذريًا على وظيفة واحدة. تتيح لك هذه الميزة توزيع التصحيحات الموجزة التي تغطي العديد من التغييرات في وقت واحد، بدلاً من عملية تطبيق التصحيحات المباشرة خطوة بخطوة بترتيب محدد بدقة، وهو أمر يصعب الحفاظ عليه. في حين أنه في السابق كان يجب أن يعتمد كل تغيير لاحق على حالة الوظيفة بعد التغيير الأخير، فمن الممكن الآن نشر عدة تغييرات مرتبطة بحالة أولية واحدة في وقت واحد (أي يمكن للمشرفين الحفاظ على تصحيح موحد واحد بالنسبة للنواة الأساسية بدلاً من ذلك). سلسلة من البقع التي تعتمد على بعضها البعض)؛
    • أعلن تم إهمال الدعم لتنسيق الملف القابل للتنفيذ a.out و
      إزالة رمز لإنشاء الملفات الأساسية بتنسيق a.out، وهو في حالة مهجورة. لم يتم استخدام تنسيق a.out على أنظمة Linux لفترة طويلة، كما أن إنشاء ملفات a.out لم يكن مدعومًا منذ فترة طويلة بواسطة الأدوات الحديثة في تكوينات Linux الافتراضية. بالإضافة إلى ذلك، يمكن تنفيذ أداة تحميل ملفات a.out بالكامل في مساحة المستخدم؛

    • تمت إضافة القدرة على تحديد وإزالة التعليمات البرمجية غير المستخدمة إلى آلية التحقق من برنامج BPF. تتضمن النواة أيضًا تصحيحات مع دعم Spinlock للنظام الفرعي BPF، مما يوفر إمكانات إضافية لإدارة التنفيذ المتوازي لبرامج BPF؛
  • معدات
    • في سائق نوفو مضاف دعم إدارة الذاكرة غير المتجانسة، مما يسمح لوحدة المعالجة المركزية ووحدة معالجة الرسومات بالوصول إلى مناطق الذاكرة المتزامنة الشائعة. يتم تنفيذ نظام الذاكرة الافتراضية المشتركة (SVM، الذاكرة الافتراضية المشتركة) على أساس النظام الفرعي HMM (إدارة الذاكرة غير المتجانسة)، والذي يسمح باستخدام الأجهزة مع وحدات إدارة الذاكرة الخاصة بها (MMU، وحدة إدارة الذاكرة)، والتي يمكنها الوصول الذاكرة الرئيسية. على وجه الخصوص، باستخدام HMM، يمكنك تنظيم مساحة عنوان مشتركة بين وحدة معالجة الرسومات ووحدة المعالجة المركزية، حيث يمكن لوحدة معالجة الرسومات الوصول إلى الذاكرة الرئيسية للعملية. يتم تمكين دعم SVM حاليًا فقط لوحدات معالجة الرسوميات من عائلة Pascal، على الرغم من توفير الدعم لوحدات معالجة الرسوميات Volta وTuring أيضًا. علاوة على ذلك، في نوفو مضاف ioctl جديد للتحكم في ترحيل مناطق ذاكرة العملية إلى ذاكرة GPU؛
    • في برنامج تشغيل Intel DRM لـ GPU Skylake والإصدارات الأحدث (gen9+) متضمن افتراضيًا، يقوم وضع التشغيل السريع بإزالة التغييرات غير الضرورية في الوضع أثناء التمهيد. مضاف новые معرفات الأجهزة المستندة إلى البنى الدقيقة لـ Coffelake وIce Lake. لرقائق كوفيليك مضاف دعم جي في تي (المحاكاة الافتراضية لوحدة معالجة الرسومات). لوحدات معالجة الرسومات الافتراضية مُنفّذ دعم VFIO EDID. لألواح LCD MIPI/DSI مضاف دعم عناصر ACPI/PMIC. مُنفّذ أوضاع التلفزيون الجديدة 1080p30/50/60 TV؛
    • تمت إضافة دعم لـ Vega10/20 BACO GPU إلى برنامج تشغيل amdgpu. تم تنفيذ إدارة الطاقة Vega 10/20 وجداول التحكم في مبرد Vega 10. تمت إضافة معرفات أجهزة PCI جديدة لوحدات معالجة الرسومات Picasso. وأضاف واجهة لإدارة التبعيات القابلة للجدولة لتجنب الجمود؛
    • وأضاف برنامج تشغيل DRM/KMS لمسرعات الشاشة آرم كوميدا (مالي D71)؛
    • تمت إضافة دعم لشاشات Toppoly TPG110 وSitronix ST7701 وPDA 91-00156-A0 وLeMaker BL035-RGB-002 3.5 وKingdisplay kd097d04؛
    • تمت إضافة دعم لبرامج ترميز الصوت Rockchip RK3328 وCirrus Logic CS4341 وCS35L36 وMediaTek MT6358 وQualcomm WCD9335 وIngenic JZ4725B، بالإضافة إلى منصة الصوت Mediatek MT8183؛
    • تمت إضافة دعم لوحدات تحكم NAND Flash STMicroelectronics FMC2 وAmlogic Meson؛
    • تمت إضافة دعم التسريع لأنظمة أجهزة Habana AI؛
    • تمت إضافة دعم لوحدات تحكم NXP ENETC Gigabit Ethernet والواجهات اللاسلكية MediaTek MT7603E (PCIe) وMT76x8.

وفي الوقت نفسه، قامت مؤسسة البرمجيات الحرة بأمريكا اللاتينية شكلت
خيار نواة مجانية تماما 5.1 - لينكس ليبر 5.1 جنو، تم مسحها من البرامج الثابتة وعناصر برنامج التشغيل التي تحتوي على مكونات غير حرة أو أقسام تعليمات برمجية، والتي يقتصر نطاقها من قبل الشركة المصنعة. في الإصدار الجديد، تم تعطيل تحميل النقطة الكبيرة في برامج تشغيل mt7603 وgoya. تم تحديث كود تنظيف النقطة الكبيرة في برامج التشغيل والأنظمة الفرعية wilc1000 وiwlwifi وsoc-acpi-intel وbrcmfmac وmwifiex وbtmrvl وbtmtk وtouchscreen_dmi. تم إيقاف تنظيف النقطة الكبيرة في محمل البرامج الثابتة lantiq xrx200 بسبب إزالته من النواة.

المصدر: opennet.ru

إضافة تعليق