گزارش پیشرفت FreeBSD Q2019 XNUMX

منتشر شده گزارش توسعه پروژه FreeBSD از آوریل تا ژوئن 2019. از جمله تغییرات می توان به موارد زیر اشاره کرد:

  • مسائل کلی و سیستمی
    • تیم Core تصمیم گرفت یک گروه کاری برای بررسی امکان انتقال کد منبع از سیستم کنترل منبع متمرکز Subversion به سیستم غیرمتمرکز Git ایجاد کند.
    • آزمایش فازی هسته FreeBSD را با استفاده از سیستم انجام داد syzkaller و تعدادی از خطاهای شناسایی شده تصحیح شد. یک لایه برای تست فازی کتابخانه ها برای سازگاری با یک محیط 32 بیتی در سیستم های دارای هسته 64 بیتی اضافه شده است. قابلیت اجرای syzkaller در ماشین های مجازی مبتنی بر bhyve پیاده سازی شده است. در مرحله بعد، برنامه ریزی شده است که پوشش تست تماس سیستمی را گسترش دهد، از ضد عفونی کننده LLVM برای بررسی هسته، استفاده از netdump برای صرفه جویی در تخلیه هسته در هنگام خرابی در هنگام تست فازی و غیره استفاده شود.
    • کار بر روی به روز رسانی اجرای zlib در سطح هسته آغاز شده است. برای دسترسی هسته به کد zlib، دایرکتوری contrib/zlib به sys/contrib/zlib تغییر نام داد و فایل هدر crc.h نیز برای جلوگیری از تضاد با zlib/crc.h تغییر نام داد. کدهای قدیمی را که به zlib و inflate بستگی داشت پاک کرد. در مرحله بعد، برنامه ریزی شده است که توانایی ساخت هسته به طور همزمان با zlib قدیمی و جدید برای انتقال تدریجی توابع به نسخه جدید که از فشرده سازی استفاده می کنند، فراهم شود.
    • زیرساخت شبیه سازی محیط لینوکس (Linuxulator) به روز شده است. افزایش پشتیبانی از ابزارهای اشکال زدایی لینوکس مانند ابزار strace. بسته linux-c7-strace به پورت‌ها اضافه شده است که می‌تواند برای ردیابی فایل‌های اجرایی لینوکس به جای ابزارهای استاندارد Truss و Ktrace استفاده شود، که هنوز نمی‌توانند برخی از پرچم‌ها و ساختارهای خاص لینوکس را رمزگشایی کنند. علاوه بر این، بسته لینوکس-ltp با فایل های اجرایی پروژه تست لینوکس اضافه شده است و مشکلات سازگاری با فایل های اجرایی مرتبط با نسخه های جدید glibc حل شده است.
    • اجرای عملیات عدم اعتبار تاخیری در مکانیزم pmap به استفاده از یک الگوریتم پردازش صف که بدون قفل کار می کند، منتقل شده است، که حل مشکلات مقیاس پذیری را در هنگام انجام تعداد زیادی عملیات unmap موازی امکان پذیر کرده است.
    • مکانیسم مسدود کردن vnode در هنگام اجرای فراخوانی های سیستمی خانواده execve() تغییر یافته است، که باعث می شود هنگام اجرای همزمان execve() برای یک فایل (به عنوان مثال، هنگام انجام عملیات اسمبلی با موازی سازی، کارایی افزایش یابد. راه اندازی کامپایلر)؛
  • امنیت
    • هایپروایزر bhyve به بهبود پشتیبانی از انتقال زنده محیط های مهمان از یک میزبان به میزبان دیگر و عملکرد Save/Restore ادامه می دهد، که به شما امکان می دهد سیستم مهمان را مسدود کنید، وضعیت را در یک فایل ذخیره کنید و سپس اجرا را از سر بگیرید.
    • از طریق استفاده از کتابخانه libvdsk، bhyve پشتیبانی از تصاویر دیسک در قالب QCOW2 را اضافه کرده است. نصب برای کار لازم است
      به خصوص اصلاح شده است نسخه bhyve که برای استفاده از کنترل کننده های عملیات فایل بر اساس libvdsk تبدیل شده است. در طول دوره گزارش، libvdsk همچنین کارهایی را برای ساده سازی یکپارچه سازی پشتیبانی از فرمت های جدید، بهبود عملکرد خواندن و نوشتن و افزودن پشتیبانی از Copy-On-Write انجام داد. از کارهای باقی مانده، ادغام libvdsk در ساختار اصلی bhyve ذکر شده است.

    • سیستم جمع آوری اطلاعات ترافیکی به پورت ها اضافه شده است
      ماتریل، که به شما امکان می دهد برای درخواست های شبکه مخرب تله ایجاد کنید (IP ها و دامنه ها از لیست سیاه بررسی می شوند) و اطلاعات مربوط به فعالیت شناسایی شده را به یک سرور متمرکز برای مسدود کردن یا تجزیه و تحلیل بعدی تلاش های حمله ارسال کنید.

    • پلتفرم هایی برای شناسایی حملات، تجزیه و تحلیل گزارش ها و نظارت بر یکپارچگی فایل به پورت ها اضافه شده است. Wazuh (چنگال Ossec با پشتیبانی برای ادغام با ELK-Stack);
  • زیر سیستم شبکه
    • درایور ena برای پشتیبانی از نسل دوم آداپتورهای شبکه ENAv2 (آداپتور شبکه الاستیک) مورد استفاده در زیرساخت Elastic Compute Cloud (EC2) برای سازماندهی ارتباط بین گره‌های EC2 با سرعت حداکثر 25 گیگابیت بر ثانیه به‌روزرسانی شده است. پشتیبانی NETMAP به درایور ena اضافه شده است.
    • FreeBSD HEAD یک پشته MMC/SD جدید را بر اساس چارچوب CAM اتخاذ می کند و به شما امکان می دهد دستگاه ها را با رابط SDIO (Secure Digital I/O) متصل کنید. به عنوان مثال، SDIO در ماژول های WiFi و بلوتوث برای بسیاری از بردها مانند 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 پشتیبانی اساسی می کند. تنها چیزی که باقی می ماند این است که عملیات Seek مورد نیاز برای استفاده از lseek (SEEKHOLE/SEEKDATA) با NFS را پیاده سازی کنیم. پشتیبانی از NFSv4.2 برای FreeBSD 13 برنامه ریزی شده است.

  • سیستم های ذخیره سازی و فایل
    • پروژه کار مجدد درایور برای زیرسیستم FUSE (سیستم فایل در USERspace) که امکان ایجاد پیاده سازی سیستم های فایل در فضای کاربر را فراهم می کند، در حال تکمیل است. درایور اصلی ارائه شده قدیمی است و دارای اشکالات زیادی است. به عنوان بخشی از پروژه نوسازی درایور، پشتیبانی از پروتکل FUSE 7.23 اجرا شد (قبلاً نسخه 7.8 که 11 سال پیش منتشر شده بود پشتیبانی می شد)، کد برای بررسی حقوق دسترسی در سمت هسته ("-o default_permissions") اضافه شد. VOP_MKNOD، VOP_BMAP و VOP_ADVLOCK اضافه شدند، قابلیت قطع کردن عملیات FUSE، پشتیبانی از لوله‌های بدون نام و سوکت‌های یونیکس در فیوز، امکان استفاده از kqueue برای /dev/fuse، امکان به‌روزرسانی پارامترهای mount از طریق "mount -u"، پشتیبانی اضافه شد. برای صادرات فیوزها از طریق NFS، حسابداری RLIMIT_FSIZE پیاده سازی شده، پرچم های FOPEN_KEEP_CACHE اضافه شده و FUSE_ASYNC_READ، بهینه سازی های عملکردی قابل توجهی انجام شده و سازمان کش بهبود یافته است.
    • پشتیبانی از عملیات BIO_DELETE به کد پیجر swap اضافه شده است که به شما امکان می دهد هنگام حذف بلوک ها از درایوهای SSD از دستور TRIM استفاده کنید تا عمر سرویس آنها را افزایش دهید.
  • پشتیبانی سخت افزاری
    • کار برای اجرای پشتیبانی از ARM64 SoC Broadcom BCM5871X با پردازنده های ARMv8 Cortex-A57، با هدف استفاده در روترها، دروازه ها و ذخیره سازی شبکه ادامه دارد. در طول دوره گزارش، پشتیبانی از گذرگاه‌های داخلی و خارجی iProc PCIe بهبود یافت، پشتیبانی از اترنت BNXT اضافه شد و کار برای استفاده از موتور رمزنگاری داخلی برای تسریع IPsec در حال انجام است. ادغام کد در شعبه HEAD در نیمه دوم سال انتظار می رود.
    • کار بر روی پشتیبانی از SoC 64 بیتی NXP LS1046A مبتنی بر پردازنده ARMv8 Cortex-A72 با موتور یکپارچه پردازش بسته شبکه، اترنت 10 گیگابایتی، PCIe 3.0، SATA 3.0 و USB 3.0 آغاز شده است. پشتیبانی از پلتفرم پایه (SMP چند کاربره) و SATA 3.0 قبلاً اجرا شده است. پشتیبانی از USB 3.0، SD/MMC و I2C در حال توسعه است. این برنامه ها شامل پشتیبانی از اترنت، GPIO و QSPI است. تکمیل کار و گنجاندن در شعبه HEAD در سه ماهه چهارم سال 4 پیش بینی می شود.
    • درایورهای mlx5en و mlx5ib به روز شده برای آداپتورهای اترنت و InfiniBand Mellanox ConnectX-4 [Lx]، ConnectX-5 [Ex] و ConnectX-6 [Dx]. پشتیبانی از آداپتورهای Mellanox Socket Direct (ConnectX-6) اضافه شده است که امکان خروجی حداکثر 200 گیگابیت بر ثانیه را در گذرگاه PCIe Gen 3.0 فراهم می کند. برای تراشه های چند هسته ای BlueField، پشتیبانی از درایور RShim اضافه شده است. بسته mstflint با مجموعه ای از ابزارهای تشخیصی برای آداپتورهای ملانوکس به پورت ها اضافه شده است.
  • برنامه ها و سیستم پورت
    • اجزای پشته گرافیکی به روز شده اند. درایور drm.ko (مدیر رندر مستقیم) از هسته لینوکس 5.0 منتقل شده است. این درایور آزمایشی در نظر گرفته شده است و به عنوان graphics/drm-devel-kmod به درخت پورت ها اضافه شده است. از آنجایی که درایور از چارچوب به‌روزرسانی‌شده KPI لینوکس برای سازگاری با API هسته لینوکس DRM استفاده می‌کند، برای اجرا به FreeBSD CURRENT نیاز است. درایور drm vboxvideo.ko برای GPU مجازی VirtualBox نیز از لینوکس پورت شده است. بسته Mesa برای انتشار 18.3.2 به روز شد و به جای devel/llvm80 از LLVM از پورت devel/llvm60 استفاده کرد.
    • درخت پورت های FreeBSD از 37000 پورت فراتر رفته است، تعداد PR های بسته نشده 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 اضافه شد. حالت حفاظت از پشته سخت فعال است. نسخه پیش فرض پایتون به جای 3.6 2.7 است.
    • نسخه ابزار آماده شده است nsysctl 1.0، که یک آنالوگ برای /sbin/sysctl ارائه می دهد که از آن استفاده می کند libxo برای خروجی و ارائه مجموعه گسترده ای از گزینه ها. Nsysctl را می توان برای نظارت بصری وضعیت مقادیر sysctl و ارائه اطلاعات روی اشیاء به شکل ساختاریافته استفاده کرد. خروجی در فرمت های XML، JSON و HTML امکان پذیر است.

منبع: opennet.ru

اضافه کردن نظر