تقرير تطوير FreeBSD للربع الأول من عام 2020

نشرت تقرير عن تطور مشروع FreeBSD من يناير إلى مارس 2020. ومن بين التغييرات يمكننا أن نلاحظ:

  • القضايا العامة والنظامية
    • تمت إزالة مجموعة برنامج التحويل البرمجي لدول مجلس التعاون الخليجي من شجرة المصدر FreeBSD-CURRENT، بالإضافة إلى الأدوات المساعدة غير المستخدمة gperf وgcov وgtc (مترجم devicetree). تم تحويل جميع الأنظمة الأساسية التي لا تدعم Clang إلى استخدام أدوات إنشاء خارجية مثبتة من المنافذ. قام النظام الأساسي بشحن إصدار قديم من إصدار دول مجلس التعاون الخليجي 4.2.1، ولم يكن دمج الإصدارات الأحدث ممكنًا بسبب انتقال 4.2.2 إلى ترخيص GPLv3، والذي كان يعتبر غير مناسب لمكونات قاعدة FreeBSD. لا يزال من الممكن تثبيت الإصدارات الحالية من دول مجلس التعاون الخليجي، بما في ذلك دول مجلس التعاون الخليجي 9، من الحزم والمنافذ.
    • أضافت البنية التحتية لمحاكاة بيئة Linux (Linuxulator) دعمًا لاستدعاء نظام sendfile، ووضع TCP_CORK (المطلوب لـ nginx)، وعلامة MAP_32BIT (التي تحل مشكلة تشغيل الحزم باستخدام Mono من Ubuntu Bionic). تم حل المشكلات المتعلقة بتحليل DNS عند استخدام glibc الأحدث من 2.30 (على سبيل المثال من CentOS 8).
      توفر البنية التحتية للتكامل المستمر القدرة على تشغيل وظائف LTP (مشروع اختبار Linux) التي تقوم بتشغيل Linuxulator لاختبار التحسينات التي تم إجراؤها على التعليمات البرمجية لدعم Linux. يفشل حوالي 400 اختبار ويتطلب الإصلاح (بعض الأخطاء تنتج عن نتائج إيجابية كاذبة، وبعضها يتطلب إصلاحات تافهة، ولكن هناك أخطاء أخرى تتطلب إضافة دعم لاستدعاءات النظام الجديدة لإصلاحها). لقد تم العمل على تنظيف كود Linuxulator وتبسيط عملية التصحيح. تم إعداد التصحيحات التي تدعم السمات الموسعة واستدعاء النظام fexecve، ولكن لم تتم مراجعتها بعد.

    • تستمر اجتماعات مجموعة العمل التي تم إنشاؤها لتنفيذ ترحيل أكواد المصدر من نظام التحكم المركزي في المصدر Subversion إلى النظام اللامركزي Git. هناك تقرير يتضمن مقترحات للهجرة قيد الإعداد.
    • В rtld (رابط وقت التشغيل) تحسين وضع التنفيذ المباشر ("/libexec/ld-elf.so.1 {path} {arguments}").
    • يستمر تطوير مشروع اختبار التشويش لنواة FreeBSD باستخدام نظام syzkaller. خلال الفترة المشمولة بالتقرير، تم التخلص من المشكلات في مكدس الشبكة والتعليمات البرمجية الخاصة بالعمل مع جداول واصفات الملفات التي تم تحديدها باستخدام syzkaller. بعد تشخيص الخطأ، تمت إضافة تغييرات إلى مكدس SCTP لتسهيل عملية تصحيح الأخطاء. تمت إضافة القواعد إلى مجموعة Stress2 لتحديد الانحدارات المحتملة. تمت إضافة دعم لاختبار التشويش لاستدعاءات النظام الجديدة، بما في ذلك مكالمات النظام الفرعي Copy_file_range() و__realpathat() وCapsicum. يستمر العمل لتغطية طبقة محاكاة Linux من خلال اختبار الزغب. لقد قمنا بتحليل وإزالة الأخطاء التي تمت ملاحظتها في أحدث تقارير Coverity Scan.
    • لقد تحول نظام التكامل المستمر إلى تنفيذ جميع اختبارات الفرع الرئيسي باستخدام clang/lld فقط. عند اختبار RISC-V، يتم ضمان تكوين صورة قرص كاملة لإجراء الاختبارات في QEMU باستخدام OpenSBI. تمت إضافة مهام جديدة لاختبار الصور والأجهزة الافتراضية powerpc64 (FreeBSD-head-powerpc64-images، FreeBSD-head-powerpc64-testvm).
    • يجري العمل حاليًا على نقل مجموعة اختبار Kyua من المنافذ (devel/kyua) إلى النظام الأساسي لحل المشكلات (يتم تثبيت الحزم ببطء شديد) التي تنشأ عند استخدام Kyua في بنيات جديدة، والتي يتم تطويرها باستخدام محاكي أو FPGA. سيؤدي التكامل في النظام الأساسي إلى تبسيط اختبار الأنظمة الأساسية المدمجة والواجهة مع أنظمة التكامل المستمر بشكل كبير.
    • تم إطلاق مشروع لتحسين أداء برنامج تشغيل جسر الشبكة if_bridge، والذي يستخدم كائن مزامنة واحدًا لقفل البيانات الداخلية، مما لا يسمح بتحقيق الأداء المطلوب على الأنظمة التي تحتوي على عدد كبير من بيئات السجن أو الأجهزة الافتراضية الموحدة في شبكة واحدة. في هذه المرحلة، تمت إضافة اختبارات إلى التعليمات البرمجية لمنع حدوث الانحدارات أثناء تحديث العمل مع الأقفال. يتم الآن النظر في إمكانية استخدام ConcurrencyKit لموازاة معالجات نقل البيانات (bridge_input() وbridge_output() وbridge_forward() و...).
    • تمت إضافة استدعاء نظام sigfastblock جديد للسماح لمؤشر الترابط بتحديد كتلة من الذاكرة لمعالج الإشارة السريعة لتحسين أداء معالجات الاستثناء.
    • تضيف النواة دعمًا للتعليمات الذرية LSE (ملحق النظام الكبير) التي تدعمها أنظمة ARMv8.1. هذه الإرشادات مطلوبة لتحسين الأداء عند التشغيل على لوحات Cavium ThunderX2 وAWS Graviton 2. تكتشف التغييرات المضافة دعم LSE وتمكن التنفيذ الذري ديناميكيًا بناءً عليها. أثناء الاختبار، أتاح استخدام LSE تقليل وقت المعالج الذي يقضيه عند تجميع النواة بنسبة 15٪.
    • تم تنفيذ تحسين الأداء وتم توسيع وظائف مجموعة الأدوات للملفات القابلة للتنفيذ بتنسيق ELF.
      تمت إضافة دعم للتخزين المؤقت لمعلومات تصحيح أخطاء DWARF، وحل المشكلات في الأدوات المساعدة elfcopy/objcopy، وإضافة معالجة DW_AT_ranges،
      ينفذ readelf القدرة على فك تشفير إشارات PROTMAX_DISABLE وSTKGAP_DISABLE وWXNEEDED، بالإضافة إلى Xen وGNU Build-ID.

  • أمن
    • لتحسين أداء FreeBSD في البيئات السحابية Azure، يجري العمل على توفير الدعم لآلية HyperV مقبس، والتي تسمح باستخدام واجهة مأخذ التوصيل للتفاعل بين نظام الضيف والبيئة المضيفة دون إعداد شبكة.
    • يجري العمل حاليًا لتوفير نسخ قابلة للتكرار من FreeBSD، مما يجعل من الممكن التأكد من أن الملفات القابلة للتنفيذ لمكونات النظام يتم تجميعها تمامًا من أكواد المصدر المعلنة ولا تحتوي على تغييرات غريبة.
    • تمت إضافة القدرة على التحكم في تضمين آليات الحماية الإضافية (ASLR، PROT_MAX، فجوة المكدس، تعيين W+X) على مستوى العمليات الفردية إلى الأداة المساعدة elfctl
  • أنظمة التخزين والملفات
    • يجري العمل حاليًا على تنفيذ قدرة NFS على العمل عبر قناة اتصال مشفرة تعتمد على TLS 1.3، بدلاً من استخدام Kerberos (وضع sec=krb5p)، والذي يقتصر على تشفير رسائل RPC فقط ويتم تنفيذه فقط في البرنامج. يستخدم التطبيق الجديد مكدس TLS المقدم من kernel لتمكين تسريع الأجهزة. رمز NFS عبر TLS جاهز تقريبًا للاختبار، ولكنه لا يزال يتطلب العمل لدعم شهادات العميل الموقعة وتكييف مكدس TLS kernel لإرسال بيانات NFS (تصحيحات الاستلام جاهزة بالفعل).
  • دعم الأجهزة
    • يجري العمل حاليًا على إضافة دعم لوحدة المعالجة المركزية الصينية x86 Hygon المعتمدة على تقنيات AMD؛
    • كجزء من CheriBSD، وهو شوكة من FreeBSD لهندسة معالجات البحث شيري (تعليمات RISC المحسنة للأجهزة)، يستمر تنفيذ دعم معالج ARM Morello، والذي سيدعم نظام التحكم في الوصول إلى الذاكرة CHERI استنادًا إلى نموذج أمان مشروع Capsicum. شريحة موريلو يخططون الافراج في عام 2021. يركز العمل حاليًا على إضافة دعم لمنصة Arm Neoverse N1 التي تعمل على تشغيل Morello. تم تقديم منفذ أولي لـ CheriBSD لبنية RISC-V. يستمر تطوير CheriBSD للنموذج الأولي المرجعي لـ CHERI استنادًا إلى بنية MIPS64.
    • يستمر نقل FreeBSD لـ SoC NXP LS64A 1046 بت استنادًا إلى معالج ARMv8 Cortex-A72 مع محرك تسريع معالجة حزم الشبكة المتكامل و10 جيجابت إيثرنت وPCIe 3.0 وSATA 3.0 وUSB 3.0. حاليًا، يتم إعداد برامج التشغيل QorIQ وLS1046A وGPIO وQorIQ LS10xx AHCI وVF610 I2C وEpson RX-8803 RTC وQorIQ LS10xx SDHCI للنقل إلى تركيبة FreeBSD الرئيسية.
    • تم تحديث برنامج تشغيل ena إلى الإصدار 2.1.1 مع دعم الجيل الثاني من محولات شبكة ENAv2 (محول الشبكة المرنة) المستخدمة في البنية التحتية لسحابة الحوسبة المرنة (EC2) لتنظيم الاتصال بين عقد EC2 بسرعات تصل إلى 25 جيجابت/ س. يجري الآن إعداد تحديث لـ ENA 2.2.0.
    • تستمر التحسينات على منفذ FreeBSD لمنصة powerpc64. وينصب التركيز على توفير أداء عالي الجودة على الأنظمة التي تحتوي على معالجات IBM POWER8 وPOWER9. خلال الفترة المشمولة بالتقرير، تم نقل FreeBSD-CURRENT لاستخدام مترجم LLVM/Clang 10.0 ورابط lld بدلاً منGC. افتراضيًا، تستخدم أنظمة powerpc64 ELFv2 ABI وتم إيقاف دعم ELFv1 ABI. لا يزال لدى FreeBSD-STABLE إصدار gcc 4.2.1. تم حل المشاكل المتعلقة ببرامج التشغيل Virtio وaacaid وixl. في أنظمة powerpc64، من الممكن تشغيل QEMU بدون دعم Huge Pages.
    • يستمر العمل في تنفيذ الدعم لبنية RISC-V. في شكله الحالي، يعمل FreeBSD بالفعل على التشغيل بنجاح على لوحة SiFive Hifive Unleashed، والتي تم إعداد السائقين لها
      يدعم UART وSPI وPRCI البرامج الثابتة OpenSBI وSBI 0.2. خلال الفترة المشمولة بالتقرير، تركز العمل على الهجرة من دول مجلس التعاون الخليجي إلى clang وlld.

  • التطبيقات ونظام المنافذ
    • تجاوزت مجموعة منافذ FreeBSD عتبة 39 ألف منفذ، ويتجاوز عدد نقاط الوصول غير المغلقة قليلاً 2400، منها 640 منفذًا لم يتم فرزها بعد. خلال الفترة المشمولة بالتقرير، تم إجراء 8146 تغييرًا من 173 مطورًا. حصل أربعة مشاركين جدد على حقوق الالتزام (لويك بارتوليتي، ميكائيل أورانكار، كايل إيفانز، لورنزو سلفادور). تمت إضافة علامة USES=qca وإزالة علامة USES=zope (بسبب عدم التوافق مع Python 3). يجري العمل حاليًا على إزالة Python 2.7 من شجرة المنافذ - يجب نقل جميع المنافذ المستندة إلى Python 2 إلى Python 3 وإلا ستتم إزالتها. تم تحديث مدير الحزم pkg إلى الإصدار 1.13.2.
    • تحديث مكونات مكدس الرسومات والمنافذ ذات الصلة بـ xorg.
      تم تحديث خادم X.org إلى الإصدار 1.20.8 (الذي تم شحنه مسبقًا على الفرع 1.18)، مما سمح لـ FreeBSD بالإعداد الافتراضي لاستخدام الواجهة الخلفية udev/evdev للتعامل مع أجهزة الإدخال. تم تحويل حزمة Mesa لاستخدام امتداد DRI3 بدلاً من DRI2 بشكل افتراضي. يجري العمل حاليًا للحفاظ على برامج تشغيل الرسومات ومكدس جهاز الإدخال ومكونات drm-kmod (منفذ يتيح تشغيل وحدات amdgpu وi915 وradeon DRM، باستخدام إطار عمل linuxkpi للتوافق مع مدير العرض المباشر لنواة Linux) حتى الآن.

    • يتم تحديث سطح مكتب KDE Plasma وإطارات عمل KDE وتطبيقات KDE وQt وتحديثها إلى أحدث الإصدارات. تمت إضافة تطبيق جديد kstars (star atlas) إلى المنافذ.
    • تم العمل على إزالة التغييرات التراجعية في مدير النوافذ xfwm4 التي ظهرت بعد تحديث Xfce إلى الإصدار 4.14 (على سبيل المثال، ظهرت القطع الأثرية عند تزيين النوافذ).
    • تم تحديث منفذ Wine لإصدار Wine 5.0 (تم تقديم الإصدار 4.0.3 سابقًا).
    • بدءًا من الإصدار 1.14، أضاف مترجم لغة Go دعمًا رسميًا لبنية ARM64 لـ FreeBSD 12.0.
    • تم تحديث OpenSSH على النظام الأساسي لإصدار 7.9p1.
    • تم تنفيذ مكتبة sysctlmibinfo2 ووضعها في المنافذ (devel/libsysctlmibinfo2)، مما يوفر واجهة برمجة تطبيقات للوصول إلى sysctl MIB وترجمة أسماء sysctl إلى معرفات الكائنات (OIDs).
    • تم إنشاء تحديث التوزيع NomadBSD 1.3.1، وهو إصدار من FreeBSD تم تكييفه للاستخدام كسطح مكتب محمول قابل للتمهيد من محرك أقراص USB. تعتمد البيئة الرسومية على مدير النوافذ صندوق مفتوح. تستخدم لتركيب محركات الأقراص DSBMD (تركيب CD9660، FAT، HFS+، NTFS، Ext2/3/4 مدعوم)، لتكوين شبكة لاسلكية - wifimgr، وللتحكم في مستوى الصوت - dsbmixer.
    • التي عمل بشأن كتابة وثائق كاملة لمدير بيئة السجن وعاء. يتم الآن إعداد الوعاء 0.11.0 للإصدار، والذي سيتضمن أدوات لإدارة مكدس الشبكة.

المصدر: opennet.ru

إضافة تعليق