إصدار FreeBSD 13.0

بعد مرور عامين ونصف على إنشاء فرع 12.x، تم تقديم إصدار FreeBSD 13.0، والذي تم إعداده لمعماريات amd64 وi386 وpowerpc وpowerpc64 وpowerpc64le وpowerpcspe وarmv6 وarmv7 وaarch64 وriscv64. بالإضافة إلى ذلك، تم إنشاء الصور لأنظمة المحاكاة الافتراضية (QCOW2، VHD، VMDK، الخام) والبيئات السحابية Amazon EC2، Google Compute Engine وVagrant.

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

  • تم الانتقال إلى تطبيق Linux الموحد لنظام الملفات ZFS من مشروع OpenZFS. من بين الميزات التي أصبحت متاحة في FreeBSD بعد الانتقال إلى OpenZFS: نظام الحصص الموسع، وتشفير مجموعات البيانات، واختيار منفصل لفئات تخصيص الكتلة (فئات التخصيص)، واستخدام تعليمات معالج المتجهات لتسريع تنفيذ RAIDZ والمجموع الاختباري الحسابات، ودعم خوارزمية الضغط ZSTD، ووضع المضيف المتعدد (MMP، حماية التعديل المتعدد)، وتحسين أدوات سطر الأوامر، وإصلاح العديد من الأخطاء المتعلقة بظروف السباق والحظر.
  • تم نقل منفذ بنية ARM64 (AArch64) إلى المستوى الأول من الدعم (المستوى 1)، والذي تدعمه فرق مسؤولة عن إزالة الثغرات الأمنية وإعداد الإصدارات وصيانة المنافذ. يتضمن المستوى الأول من الدعم إنشاء مجموعات التثبيت والتحديثات الثنائية والحزم الجاهزة، بالإضافة إلى توفير ضمانات لحل مشكلات معينة والحفاظ على واجهة برمجة التطبيقات (ABI) دون تغيير لبيئة المستخدم والنواة (باستثناء بعض الأنظمة الفرعية).
  • تم نقل بنية i386 إلى المستوى الثاني من دعم النظام الأساسي (المستوى 2)، حيث سيستمر تكوين مجموعات التثبيت والتحديثات الثنائية والحزم الجاهزة، ولكنها لا تضمن حلاً لمشاكل محددة. تم تغيير نوع وحدة المعالجة المركزية الافتراضية (CPUTYPE) لبنية i386 من 486 إلى 686 (إذا رغبت في ذلك، يمكن إنشاء التجميعات لـ i486 وi586 بشكل مستقل).
  • تم تحديث المكونات clang وlld وlldb وcompiler-rt وllvm وlibunwind وlibc++ إلى الإصدار 11.
  • تم نقل التطوير من نظام التحكم المركزي بالمصدر Subversion إلى النظام اللامركزي Git.
  • تم تنظيف النظام الأساسي من التطبيقات الموزعة بموجب ترخيص GPL. تمت إزالة Binutils 2.17 وgcc 4.2.1 من الشجرة المصدر، وتم نقل كافة البنيات المدعومة إلى مجموعة أدوات LLVM/clang. تم تضمين الإصدارات المرخصة من BSD للأدوات المساعدة grep وdtc (Device Tree Compiler)، والتي تحل محل الإصدارات المرخصة من GPL. تمت إزالة عملية التثبيت التلقائي لـ AMD، والتي يتم الآن تنفيذ وظائفها من خلال autofs. تمت إزالة الأداة المساعدة ctm، ويوصى باستخدام منفذ Misc/ctm بدلاً من ذلك.
  • تمت إعادة كتابة حزمة التوجيه لتشمل دعمًا لكائنات المرحلة التالية التي تخزن بيانات الحالة المستخدمة لإعادة توجيه الحزمة إلى الوجهة المطلوبة. تمت إضافة القدرة على ربط خوارزميات البحث عن المسار الخاص بك. تمت إضافة خوارزميات البحث عن المسار من DPDK (مجموعة تطوير مستوى البيانات) librte، مما يسمح لك بتحسين العمل مع جداول التوجيه الكبيرة جدًا. بالنسبة لطلبات proxyarp، يتم استخدام واجهة fib. تمت إضافة القدرة على تغيير رقم الألياف بسرعة عبر sysctl net.fibs. تم تنفيذ الدعم للمسارات المؤقتة لـ IPv4 وIPv6 (مع عمر محدد).
  • تمت إعادة كتابة دعم التوجيه متعدد المسارات وجعله أكثر قابلية للتوسع، حيث لا يعتمد وقت البحث على حجم القائمة (O(1)). يرتبط تطبيق Multipath الجديد الآن بمعلمة kernel ROUTE_MPATH، التي حلت محل RADIX_MPATH وتم تمكينها افتراضيًا. لإدارة المسارات المتعددة، يُقترح sysctl net.route.multipath.
  • تمت إعادة تصميم إطار التشفير المطبق على مستوى النواة، مما أضاف دعمًا لخوارزميات التشفير الحديثة وتبسيط الواجهة لاستخدام التشفير في برامج التشغيل ومكونات النواة الأخرى. تمت إزالة الخوارزميات القديمة ARC4 وBlowfish وCAST128 وDES وDES وMD5-HMAC وSkipjack. لم يعد IPsec وKerberos يدعمان الخوارزميات التي تم إهمالها بواسطة RFC 8221 وRFC 6649/8429، بما في ذلك 3DES. تمت إزالة الخوارزميات المهملة التي تم الإعلان عنها مسبقًا في النظام الفرعي لتشفير القرص geli وcryptodev.
  • تتضمن النواة العامة دعمًا لبرنامجي تشغيل aesni وarmv8crypto لتسريع تشفير القرص المستند إلى geli باستخدام تعليمات AES-NI لمعماريات amd64/i386 وAES-XTS لـ ARM64.
  • تمت إضافة برنامج تشغيل qat لمسرعات التشفير Intel QuickAssist (QAT) وبرنامج تشغيل ossl مع تنفيذ إجراءات تشفير البرامج المعجلة من OpenSSL، وهو الأمثل باستخدام رمز لغة التجميع. يضيف برنامج تشغيل Armv8crypto دعمًا لـ AES-XTS وAES-GCM باستخدام الإرشادات المقابلة لمعالجات ARMv8.
  • تمت إضافة تطبيق TLS (kTLS) الذي يعمل على مستوى نواة FreeBSD، مما يسمح بزيادة كبيرة في أداء التشفير لمقابس TCP. إصدارات TLS المدعومة من 1.0 إلى 1.3. للتشفير، يتم استخدام برامج تشغيل تشفير kernel التي تدعم AES-CBC أو AES-GCM. يتطلب استخدام kTLS في مساحة المستخدم إعادة إنشاء OpenSSL باستخدام خيار With_OPENSSL_KTLS.
  • تمت إضافة نوع جديد من المخازن المؤقتة للشبكة، mbuf (المخزن المؤقت لبيانات الشبكة)، والذي يمكن أن يمثل عدة صفحات ذاكرة فعلية غير معينة في مخزن مؤقت واحد، مما يحسن أداء استدعاء sendfile(2) عن طريق تقليل حجم قوائم mbuf في المخازن المؤقتة للمأخذ.
  • يدمج مكدس TCP دعمًا لخوارزمية التخفيض النسبي في كثافة إرسال الحزم (التخفيض التناسبي للمعدل، RFC 6937)، والذي يسمح لك باستعادة معلمات التدفق الأمثل بسرعة بعد حدوث مشكلات مؤقتة في نقل البيانات. لتعطيل PRR، يتم توفير sysctl net.inet.tcp.do_prr.
  • تم توسيع إمكانيات برنامج Bhyve Hypervisor: تمت إضافة دعم لمشاركة الملفات باستخدام VirtIO-9p (VirtFS). تم تنفيذ القدرة على العمل مع لقطات الأجهزة الافتراضية. تمت إضافة دعم لأجهزة PCI HDAudio والمنافذ التسلسلية الإضافية COM3 وCOM4. تمت إزالة نماذج أجهزة bvmconsole وbvmdebug القديمة. تحسين الاستقرار لعملاء VNC، بما في ذلك تطبيق مشاركة الشاشة لنظام التشغيل macOS.
  • أضافت برامج تشغيل VirtIO دعمًا لمواصفات VirtIO V1، مما أدى إلى تحسين توافق ضيوف FreeBSD مع العديد من المحاكيات وبرامج Hypervisor.
  • بالنسبة للعمليات المرتبطة ببيئات السجن، يتم توفير تحويل روابط وحدة المعالجة المركزية (سيتم استبدال مجموعة وحدة المعالجة المركزية المرتبطة بالعملية في البداية مع الأخذ في الاعتبار مجموعة وحدة المعالجة المركزية الخاصة بالسجن ومجموعة القيود).
  • تمت إضافة القدرة على بناء نظام FreeBSD الأساسي في بيئات تعتمد على أنظمة تشغيل أخرى. ترجع الحاجة إلى البناء على أنظمة تشغيل أخرى إلى الرغبة في استخدام أدوات التكامل المستمر المستندة إلى Linux أو macOS لاختبار FreeBSD.
  • تم اقتراح حزمة MMC/SD جديدة، استنادًا إلى إطار عمل CAM وتسمح لك بتوصيل الأجهزة بواجهة SDIO (الإدخال/الإخراج الرقمي الآمن). على سبيل المثال، يتم استخدام SDIO في وحدات WiFi وBluetooth للعديد من اللوحات، مثل Raspberry Pi 3. وتسمح الحزمة الجديدة أيضًا باستخدام واجهة CAM لإرسال أوامر SD من التطبيقات الموجودة في مساحة المستخدم، مما يجعل من الممكن إنشاء جهاز برامج التشغيل التي تعمل على مستوى المستخدم.
  • تحسين أداء الطبقة للتوافق مع Linux. تتم مزامنة ملفات DTS (مصادر شجرة الأجهزة) مع Linux 5.8 kernel.
  • تمت إضافة دعم لـ NFSv4.2 (RFC-7862) وتنفيذ القدرة على تشغيل NFS عبر قناة اتصال مشفرة تعتمد على TLS 1.3، بدلاً من استخدام Kerberos (وضع sec=krb5p)، والذي كان يقتصر على تشفير رسائل RPC فقط وتم تنفيذه فقط في البرمجيات.
  • تمت إزالة الإصدار القديم من مصحح أخطاء GDB، والذي تم تثبيته مسبقًا في الدليل /usr/libexec والمستخدم في الأداة المساعدة Crashinfo. بدلاً من تثبيت GDB مسبقًا، للحصول على معلومات مفصلة حول أسباب التعطل، يُقترح الآن تثبيت أحدث إصدار من GDB من المنافذ أو الحزم. تم إيقاف دعم عملية تصحيح الأخطاء عبر procfs. تمت إضافة برنامج تشغيل netgdb، مما يسمح بالوصول إلى مصحح أخطاء kernel عبر الشبكة.
  • تمت إزالة وظيفة غير آمنة من libc (بدءًا من معيار C11، تم استبعاد هذه الوظيفة من المواصفات) وتم تعديل المنافذ التي لا تزال تستخدم هذه الوظيفة. تمت إزالة وظائف cap_random (يجب استخدام getrandom).
  • تمت إضافة استدعاء نظام جديد cop_file_range، متوافق مع التنفيذ من Linux kernel ويسمح لك بتسريع نسخ البيانات من ملف إلى آخر عن طريق إجراء العملية فقط على جانب kernel دون قراءة البيانات أولاً في ذاكرة العملية. يتم استخدام استدعاء النظام أيضًا في خادم NFSv4.2 لإجراء عمليات النسخ محليًا على الخادم (دون النقل إلى العميل).
  • يقدم محرك الإدخال/الإخراج غير المتزامن POSIX AIO دعمًا للوظائف الموجهة. على وجه الخصوص، تمت إضافة استدعاءات النظام aio_writev وaio_readv، مما يسمح بتنفيذ المكافئات الموجهة لوظيفتي aio_read وaio_write.
  • لقد تم إيقاف مكونات مساحة المستخدم لدعم تنسيق الملف القابل للتنفيذ a.out على أنظمة بنية i386. تمت إزالة الأداة المساعدة elf2aout.
  • تم دمج الأدوات المساعدة ping وping6. تمت إضافة القدرة على تعيين معلمات جودة الخدمة (QoS) عبر IP DSCP وEthernet PCP إلى ping.
  • تُظهر الأداة المساعدة freebsd-update الآن تقدم تنزيل الملف وتضيف الأوامر Updatesready وshowconfig للتحقق من التحديثات وإظهار التكوين.
  • لقد تم إنجاز الكثير من العمل لتحسين الدعم لأنظمة NUMA (الوصول إلى الذاكرة غير الموحدة).
  • تحديث برامج تشغيل الرسومات ومكونات مكدس الرسومات. تم حل المشكلات المتعلقة بتشغيل البيئات المستندة إلى بروتوكول Wayland.
  • تمت إضافة نظام فرعي للإضاءة الخلفية لإنشاء برامج تشغيل للتحكم في الإضاءة الخلفية. تمت إضافة برنامج تشغيل الإضاءة الخلفية pwm للتحكم في الإضاءة الخلفية لـ Pinebook وPinebook Pro.
  • يتم تضمين دعم بروتوكول SCTP في وحدة نمطية منفصلة sctp.ko، والتي يتم تعطيلها افتراضيًا في النواة العامة.
  • بالنسبة لأجهزة الإدخال، تم اقتراح برنامج تشغيل usbhid جديد يستخدم إطار عمل hid للعمل مع أجهزة USB HID، بدلاً من برامج تشغيل ukbd وums وuhid.
  • يدعم برنامج التشغيل cpufreq تقنية Intel Speed ​​Shift.
  • تمت إضافة دعم للوحات الجديدة المستندة إلى وحدات المعالجة المركزية ARMv64 8 بت، بما في ذلك Broadcom BCM5871X وNXP LS1046A SoCs.
  • بالنسبة لبنية AMD64، يتم تنفيذ دعم العناوين الافتراضية 57 بت (LA57). تمت إضافة دعم لوحدة المعالجة المركزية الصينية Hygon Dhyana x86 استنادًا إلى تقنيات AMD.
  • تم تبديل منفذ بنية powerpc64 لاستخدام LLVM وELFv2 ABI (لن يكون من الممكن استخدام الثنائيات من الإصدارات السابقة من FreeBSD في FreeBSD 13). تم نقل برامج التشغيل virtio وixl وmrsas وaacroid وcpld إلى Powerpc64.
  • تمت إزالة برامج تشغيل محولات Ethernet القديمة:
    • بم (4) بي إم إيه سي
    • CS(4) كريستال أشباه الموصلات CS8900/CS8920
    • دي (4) ديسمبر DC21x4x
    • إد (4) NE-2000 وWD-80×3
    • الحلقة (4) 3Com Etherlink III (3c5x9) ISA
    • على سبيل المثال(4) Intel EtherExpress Pro/10 وPro/10+
    • الحديد (4) فوجيتسو MB86960A/MB86965A
    • hme(4) صن مايكروإلكترونيكس STP2002-STQ
    • pcn(4) AMD PCnet
    • سادس (4) ستارفاير
    • sn(4) SMC 91Cxx
    • ليرة تركية (4) تكساس إنسترومنتس ثاندرلان
    • تكساس (4) SMC 83c17x
    • txp(4) 3Com 3XP تايفون/سايدويندر (3CR990)
    • vx(4) 3Com EtherLink III / Fast EtherLink III (3c59x) PCI
    • دبليو بي (4) وينبوند W89C840F
    • xe(4) زيركوم PCMCIA
  • تمت إزالة برامج التشغيل ubsec (مسرعات التشفير Broadcom BCM58xx)، وufm (موالفات FM مع واجهة USB)، وctau (Cronix Tau)، وcx (Cronix Sigma)، وvpo (منفذ SCSI المتوازي).

المصدر: opennet.ru

إضافة تعليق