تقرير تقدم FreeBSD للربع الثاني من عام 2019

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

  • القضايا العامة والنظامية
    • قرر الفريق الأساسي إنشاء مجموعة عمل لاستكشاف إمكانية نقل كود المصدر من نظام التحكم المركزي في مصدر Subversion إلى نظام Git اللامركزي.
    • تم إجراء اختبار ضبابي لنواة FreeBSD باستخدام النظام syzkaler وتم تصحيح عدد من الأخطاء التي تم تحديدها. تمت إضافة طبقة لاختبار التشويش للمكتبات من أجل التوافق مع بيئة 32 بت على الأنظمة ذات نواة 64 بت. تم تنفيذ القدرة على تشغيل syzkaller في الأجهزة الافتراضية المستندة إلى bhyve. في المرحلة التالية، من المخطط توسيع تغطية اختبار استدعاء النظام، واستخدام معقم LLVM لفحص النواة، واستخدام netdump لحفظ تفريغات النواة أثناء الأعطال أثناء اختبار التشويش، وما إلى ذلك.
    • بدأ العمل على تحديث تطبيق zlib على مستوى النواة. لوصول kernel إلى كود zlib، تمت إعادة تسمية دليل contrib/zlib إلى sys/contrib/zlib، كما تمت إعادة تسمية ملف الرأس crc.h أيضًا لتجنب التعارض مع zlib/crc.h. تنظيف التعليمات البرمجية القديمة التي تعتمد على zlib وتضخيم. بعد ذلك، من المخطط توفير القدرة على بناء النواة في وقت واحد مع zlib القديم والجديد للنقل التدريجي إلى الإصدار الجديد من الوظائف التي تستخدم الضغط؛
    • تم تحديث البنية الأساسية لمحاكاة بيئة Linux (Linuxulator). زيادة الدعم لأدوات تصحيح أخطاء Linux مثل الأداة المساعدة strace. تمت إضافة حزمة linux-c7-strace إلى المنافذ، والتي يمكن استخدامها لتتبع ملفات Linux القابلة للتنفيذ بدلاً من الأدوات المساعدة truss وktrace القياسية، والتي لا يمكنها بعد فك تشفير بعض العلامات والهياكل الخاصة بنظام Linux. بالإضافة إلى ذلك، تمت إضافة حزمة linux-ltp مع الملفات التنفيذية لـ Linux Test Project وتم حل مشكلات التوافق مع الملفات التنفيذية المرتبطة بالإصدارات الجديدة من glibc؛
    • تم نقل تنفيذ عمليات الإبطال المتأخرة في آلية pmap إلى استخدام خوارزمية معالجة قائمة الانتظار التي تعمل بدون أقفال، مما جعل من الممكن حل مشكلات قابلية التوسع عند تنفيذ عدد كبير من عمليات إلغاء الخريطة المتوازية؛
    • تم تغيير آلية حظر vnode أثناء تنفيذ مكالمات النظام لعائلة execve()، مما جعل من الممكن تحقيق كفاءة متزايدة عند تنفيذ execve() في نفس الوقت لنفس الملف (على سبيل المثال، عند إجراء عمليات التجميع بالتوازي من إطلاق المترجم)؛
  • أمن
    • يستمر برنامج bhyve Hypervisor في تحسين دعم الترحيل المباشر لبيئات الضيف من مضيف إلى آخر ووظيفة الحفظ/الاستعادة، التي تسمح لك بتجميد نظام الضيف، وحفظ الحالة في ملف، ثم استئناف التنفيذ.
    • من خلال استخدام مكتبة libvdsk، أضافت bhyve دعمًا لصور القرص بتنسيق QCOW2. يتطلب التثبيت للعمل
      تعديلها خصيصا إصدار bhyve، الذي تم تحويله لاستخدام معالجات تشغيل الملفات المستندة إلى libvdsk. خلال الفترة المشمولة بالتقرير، نفذت libvdsk أيضًا عملاً لتبسيط تكامل دعم التنسيقات الجديدة، وتحسين أداء القراءة والكتابة، وإضافة دعم للنسخ عند الكتابة. من بين المهام المتبقية، تمت الإشارة إلى دمج libvdsk في الهيكل الرئيسي لـ bhyve؛

    • تم إضافة نظام لجمع المعلومات المرورية بالمنافذ
      مالتريل، والذي يسمح لك بإنشاء اعتراضات لطلبات الشبكة الضارة (يتم فحص عناوين IP والمجالات من القوائم السوداء) وإرسال معلومات حول النشاط المكتشف إلى خادم مركزي للحظر اللاحق أو تحليل محاولات الهجوم؛

    • تمت إضافة الأنظمة الأساسية إلى المنافذ لاكتشاف الهجمات وتحليل السجلات ومراقبة سلامة الملفات وزوه (شوكة Ossec مع دعم التكامل مع إلك-ستاك);
  • النظام الفرعي للشبكة
    • تم تحديث برنامج تشغيل ena لدعم الجيل الثاني من محولات شبكة ENAv2 (محول الشبكة المرنة) المستخدمة في البنية التحتية لـ Elastic Compute Cloud (EC2) لتنظيم الاتصال بين عقد EC2 بسرعات تصل إلى 25 جيجابت/ثانية. تمت إضافة دعم NETMAP إلى برنامج تشغيل ena.
    • يعتمد FreeBSD HEAD مكدس MMC/SD جديدًا، استنادًا إلى إطار عمل CAM ويسمح لك بتوصيل الأجهزة بواجهة SDIO (الإدخال/الإخراج الرقمي الآمن). على سبيل المثال، يتم استخدام SDIO في وحدات WiFi وBluetooth للعديد من اللوحات، مثل Raspberry Pi 3. وتسمح الحزمة الجديدة أيضًا باستخدام واجهة CAM لإرسال أوامر SD من التطبيقات الموجودة في مساحة المستخدم، مما يجعل من الممكن إنشاء جهاز برامج التشغيل التي تعمل على مستوى المستخدم. بدأ العمل على إنشاء برامج تشغيل لشرائح Broadcom اللاسلكية التي تعمل في وضع FullMAC (على جانب الشريحة، تعمل بما يشبه نظام التشغيل الخاص بها مع تطبيقات مكدسها اللاسلكي 802.11)؛
    • يجري العمل حاليًا على تنفيذ NFSv4.2 (RFC-7862) لـ FreeBSD. يضيف الإصدار الجديد من NFS دعمًا لوظائف posix_fadvise وposix_fallocate وأوضاع SEEKHOLE/SEEKDATA في lseek وتشغيل النسخ المحلي لأجزاء من الملف على الخادم (دون النقل إلى العميل).

      يوفر FreeBSD حاليًا الدعم الأساسي لعمليات LayoutError وIOAdvise وAllocate وCopy. كل ما تبقى هو تنفيذ عملية البحث المطلوبة لاستخدام lseek(SEEKHOLE/SEEKDATA) مع NFS. تم التخطيط لدعم NFSv4.2 لـ FreeBSD 13؛

  • أنظمة التخزين والملفات
    • مشروع إعادة صياغة برنامج التشغيل للنظام الفرعي FUSE (نظام الملفات في مساحة المستخدم)، والذي يسمح بإنشاء تطبيقات أنظمة الملفات في مساحة المستخدم، على وشك الانتهاء. برنامج التشغيل المتوفر في الأصل قديم ويحتوي على العديد من الأخطاء. كجزء من مشروع تحديث برنامج التشغيل، تم تنفيذ دعم بروتوكول FUSE 7.23 (تم دعم الإصدار السابق 7.8، الذي تم إصداره قبل 11 عامًا)، وتمت إضافة التعليمات البرمجية للتحقق من حقوق الوصول على جانب kernel ("-o default_permissions")، واستدعاءات إلى تمت إضافة VOP_MKNOD وVOP_BMAP وVOP_ADVLOCK، والقدرة على مقاطعة عمليات FUSE، وإضافة دعم للأنابيب غير المسماة ومآخذ Unix في fusefs، والقدرة على استخدام kqueue لـ /dev/fuse، والسماح بتحديث معلمات التثبيت عبر "mount -u"، وإضافة الدعم لتصدير الصمامات عبر NFS، تم تنفيذ محاسبة RLIMIT_FSIZE، وإضافة إشارات FOPEN_KEEP_CACHE وFUSE_ASYNC_READ، وتم إجراء تحسينات كبيرة في الأداء وتحسين تنظيم التخزين المؤقت؛
    • تمت إضافة دعم عملية BIO_DELETE إلى رمز المبادلة، والذي يسمح لك باستخدام أمر TRIM عند إزالة الكتل من محركات أقراص SSD لزيادة عمر الخدمة الخاص بها.
  • دعم الأجهزة
    • يستمر العمل في تنفيذ دعم ARM64 SoC Broadcom BCM5871X مع معالجات ARMv8 Cortex-A57، والتي تهدف إلى الاستخدام في أجهزة التوجيه والبوابات وتخزين الشبكة. خلال الفترة المشمولة بالتقرير، تم تحسين دعم ناقلات iProc PCIe الداخلية والخارجية، وتمت إضافة دعم لـ BNXT Ethernet، ويجري العمل حاليًا لاستخدام محرك التشفير المدمج لتسريع IPsec. ومن المتوقع دمج الكود في فرع HEAD في النصف الثاني من العام؛
    • بدأ العمل على دعم SoC NXP LS64A 1046 بت استنادًا إلى معالج ARMv8 Cortex-A72 مع محرك تسريع معالجة حزم الشبكة المتكامل و10 جيجابت إيثرنت وPCIe 3.0 وSATA 3.0 وUSB 3.0. تم بالفعل تنفيذ دعم النظام الأساسي (SMP متعدد المستخدمين) وSATA 3.0. دعم USB 3.0 وSD/MMC وI2C قيد التطوير. تتضمن الخطط دعمًا لـ Ethernet وGPIO وQSPI. ومن المتوقع الانتهاء من العمل والإدراج في فرع HEAD في الربع الرابع من عام 4.
    • تم تحديث برامج تشغيل mlx5en وmlx5ib لمحولات Mellanox ConnectX-4 [Lx] وConnectX-5 [Ex] وConnectX-6 [Dx] Ethernet وInfiniBand. تمت إضافة دعم لمحولات Mellanox Switch Direct (ConnectX-6)، مما يسمح بإنتاجية تصل إلى 200 جيجابت/ثانية على ناقل PCIe Gen 3.0. بالنسبة لشرائح BlueField متعددة النواة، تمت إضافة دعم لبرنامج تشغيل RShim. تمت إضافة حزمة mstflint مع مجموعة من الأدوات المساعدة التشخيصية لمحولات Mellanox إلى المنافذ؛
  • التطبيقات ونظام المنافذ
    • تم تحديث مكونات مكدس الرسومات. تم نقل برنامج التشغيل drm.ko (Direct Rendering Manager) من Linux 5.0 kernel. يعتبر برنامج التشغيل هذا تجريبيًا وقد تمت إضافته إلى شجرة المنافذ كرسومات/drm-devel-kmod. نظرًا لأن برنامج التشغيل يستخدم إطار عمل Linux KPI المحدث ليكون متوافقًا مع Linux kernel DRM API، فإن FreeBSD CURRENT مطلوب للتشغيل. تم أيضًا نقل برنامج تشغيل vboxvideo.ko drm لوحدة معالجة الرسومات الافتراضية VirtualBox من Linux. تم تحديث حزمة Mesa لإصدار 18.3.2 وتم تحويلها لاستخدام LLVM من منفذ devel/llvm80 بدلاً من devel/llvm60.
    • تجاوزت شجرة منافذ FreeBSD 37000 منفذ، وظل عدد المستفيدين الرئيسيين غير المغلقين عند 2146. خلال الفترة المشمولة بالتقرير، تم إجراء 7837 تغييرًا من 172 مطورًا. حصل ثلاثة مشاركين جدد على حقوق الملتزم. ومن بين تحديثات الإصدارات المهمة في المنافذ: MySQL 5.7، وPython 3.6، وRuby 2.5، وSamba 4.8، وJulia 1.0، وFirefox 68.0، وChromium 75.0.3770.100. تم تحويل كافة منافذ Go لاستخدام علامة "USES=go". تمت إضافة علامة "USES=cabal" إلى مدير حزم Cabal المستخدم لرمز Haskell. تم تمكين وضع الحماية الصارمة للمكدس. إصدار Python الافتراضي هو 3.6 بدلاً من 2.7.
    • تم إعداد إصدار الأداة المساعدة نسيسكتل 1.0، والذي يقدم نظيرًا لـ /sbin/sysctl الذي يستخدم libxo للإخراج وتوفير مجموعة موسعة من الخيارات. يمكن استخدام Nsysctl لمراقبة حالة قيم sysctl بشكل مرئي وتقديم معلومات عن الكائنات في شكل منظم. من الممكن الإخراج بتنسيقات XML وJSON وHTML؛

المصدر: opennet.ru

إضافة تعليق