11.29.2019
گزارشی از توسعه پروژه FreeBSD از ژوئیه تا سپتامبر 2019 منتشر کرد. از تغییرات می توان به این موارد اشاره کرد:
- موارد عمومی و سیستم
- تیم اصلی به طور کلی امکان تهیه کد تهیه شده تحت مجوز BSD را با توافقنامه ثبت اختراع اضافی (BSD + حق ثبت اختراع) تأیید کرد ، اما تصمیم برای شامل هر مؤلفه تحت این مجوز. به طور جداگانه تصویب شود.
- اولین جلسه کارگروه جهت انتقال کد منبع از سیستم کنترل متمرکز منبع براندازی به سیستم غیر متمرکز Git برگزار شد. بحث در مورد امکان سنجی مهاجرت هنوز ادامه دارد ، و هنوز تصمیم گیری در مورد بسیاری از موضوعات (مثلاً ، چه کاری باید انجام شود با مشارکت است ، یا اینکه آیا برای بازسازی هش در مخزن git فعلی ضروری است و بهترین راه برای اجرای آزمایش متعهد است) هنوز مورد بررسی قرار نگرفته است.
- ابزارهای KCSAN (Kernel Concurrency Sanitizer) از NetBSD برای شناسایی وقایع مسابقه بین موضوعات هسته در حال اجرا بر روی CPU های مختلف منتقل شدند.
- کار برای استفاده از مونتاژ کننده Clang (IAS) به جای اسمبلر از binutils GNU در حال انجام است.
- زیرساخت شبیه سازی محیط لینوکس (Linuxulator) برای کار بر روی معماری ARM64 سازگار شده است. فراخوانی سیستم "renameat2" را انجام داد. ابزار strace برای تشخیص مشکلات موجود در دستگاههای اجرایی لینوکس که روی Linuxulator کار می کنند ، بهبود یافته است. مشکل بروز خرابی هنگام پیوند پرونده های اجرایی با نسخه های جدید glibc برطرف شده است. پورت های دارای اجزای لینوکس برای Linuxulator به CentOS 7.7 به روز شده است.
- تحت برنامه Google Summer of Code ، دانش آموزان شش پروژه را با موفقیت به اتمام رساندند: آماده اجرای نرم افزار یکپارچه پینگ (IPv4 / IPv6) ، ابزارهایی برای آزمایش فایروال ها و تشخیص خطاها در هسته (ضد عفونی کننده هسته) ، ماژول mac_ipacl و کد کتبی را برای فشرده سازی حافظه و کار مجازی برای جدا کردن فرایند مونتاژ پورت ها از محل نصب محلی انجام شد.
- پروژه آزمایش فازی هسته هسته FreeBSD با استفاده از سیستم syzkaller در حال توسعه است. در دوره گزارش ، با کمک syzkaller ، بیش از ده خطا شناسایی و از بین رفت. برای اجرای syzkaller در ماشین های مجازی مبتنی بر bhyve ، یک سرور جداگانه اختصاص داده می شود ، و با آن
syzbot برای زیر سیستم های مختلف FreeBSD در زیرساخت های Google مورد آزمایش قرار گرفته است. سازماندهی انتقال اطلاعات در مورد همه تصادفات به خدمات backtrace.io برای ساده سازی گروه بندی و تجزیه و تحلیل آنها. - کار برای به روزرسانی اجرای هسته هسته Zlib در حال انجام است.
کد مربوط به فشرده سازی از zlib 1.0.4 ، که بیش از 20 سال پیش منتشر شد ، به پایگاه کد فعلی zlib 1.2.11 منتقل شد. برای یکپارچه سازی دسترسی به zlib ، فشرده سازی ، compress2 و توابع غیر فشرده سازی به هسته اضافه شده است. کد PPP که از پشتیبانی پروتکل از زیر سیستم netgraph پشتیبانی می کند ، به جای نسخه شخصی این کتابخانه ، برای استفاده از پیاده سازی سیستم zlib منتقل شده است. زیر سیستم های kern_ctf.c ، opencryptodeflate ، geom_uzip ، subr_compressor نیز به zlib جدید منتقل می شوند ،
if_mxge ، bxe به روز شده و ng_deflate؛ - یک رابط کاربری هسته sysctlinfo در حال توسعه است ، که اجازه می دهد تا عناصر موجود در پایگاه داده پارامتر sysctl را که در قالب یک پایگاه اطلاعاتی مدیریت (MIB) پردازش شده و انتقال اطلاعات در مورد اشیاء به فضای کاربر پردازش می شوند ، پیدا کنید.
- Security
- ماژول هسته mac_ipacl بر اساس چارچوب MAC TrustedBSD که پیاده سازی یک سیستم کنترل دسترسی به تنظیمات پشته شبکه برای محیط های زندان است. به عنوان مثال ، با استفاده از mac_ipacl ، سرور میزبان می تواند از تغییر دادن یا تنظیم آدرس های IP یا تنظیمات فرعی برای رابط های خاص شبکه ، جلوگیری کند که کاربر اصلی در محیط زندان باشد. سیستم کنترل دسترسی اجباری پیشنهادی به شما امکان می دهد لیستی از آدرس های IP و زیر شبکه های معتبر برای زندان را تعیین کنید ، نصب IP و زیر شبکه های خاص را در زندان ممنوع کنید ، یا تغییر پارامترها را فقط برای رابط های خاص شبکه محدود کنید.
- اینتل پورت پشته نرم افزاری TPM 2.0 (Trusted Platform Module) را برای اتصال با یک تراشه محاسبات ایمن ، که به طور معمول برای بارگیریهای firmware و bootloaders OS استفاده می شود ، به پروژه تحویل داد. اجزای پشته در قالب securtity / tpm2-tss ، Security / tpm2-ابزار و پورت های امنیتی / tpm2-abrmd ارائه شده است. درگاه tpm2-tss شامل كتابخانه هایی برای استفاده از API TPM2 است ، ابزار tpm2 ابزارهای خط فرمان را برای انجام عملیات TPM فراهم می كند ، و tpm2-abrmd حاوی یك فرآیند پس زمینه برای اجرای اجزای كارگزار TPM Access و اجزای مدیریت منابع است كه درخواست های چند برابر را از كاربران مختلف TPM به یك دستگاه ارائه می دهد. . علاوه بر بارگیریهای تأیید شده در FreeBSD ، از TPM می توان برای تقویت امنیت Strongswan IPsec ، SSH و TLS با انجام عملیات رمزنگاری بر روی یک تراشه جداگانه استفاده کرد.
- هسته اصلی برای معماری amd64 برای بوت شدن با استفاده از تکنیک محافظت W ^ X (نوشتن XOR execute) سازگار شده است ، این بدان معنی است که صفحات حافظه نمی توانند همزمان برای نوشتن و اجرا در دسترس باشند (هسته هسته اکنون می تواند با صفحات حافظه اجرایی که برای آن ممنوع است بارگیری شود). نوشتن ، قبلاً ممنوعیت اعدام برای صفحات حافظه با داده های هسته اعمال شده بود ، اما بدون مراجعه به قابلیت های نوشتن). یک روش جدید محافظت از هسته در شاخه HEAD گنجانده شده است و به صورت پیش فرض در FreeBSD 13.0 و 12.2 فعال می شود.
- ماکرو PROT_MAX () برای مکالمات سیستم mmap و mprotect پیاده سازی شده است ، این امکان را می دهد مجموعه ای از پرچم های محدودیت دسترسی را که معتبر برای تغییرات بعدی هستند (تعیین کنید. PROT_READ ، PROT_WRITE ، PROT_EXEC) تعیین شود. با استفاده از PROT_MAX () ، توسعه دهنده می تواند ترجمه یک منطقه حافظه را به رده اجرایی ممنوع کند یا درخواست حافظه ای را انجام دهد که اجازه اجرای آن را نمی دهد ، اما بعدا می تواند به موارد اجرایی منتقل شود. به عنوان مثال ، یک منطقه حافظه برای نوشتن فقط برای زمان اتصال پویا یا تولید کد JIT قابل باز شدن است ، اما پس از اتمام ضبط فقط به خواندن و اجرای آن محدود می شود و در آینده در صورت سازش ، مهاجم قادر نخواهد بود برای نوشتن این بلوک حافظه مجاز باشد. علاوه بر PROT_MAX () ، sysctl vm.imply_prot_max نیز پیاده سازی می شود ، هنگام فعال سازی ، مجموعه پرچم های معتبر بر اساس پارامترهای اولیه اولین تماس mmap تعیین می شود.
- به منظور تقویت محافظت در برابر بهره برداری از آسیب پذیری ها ، علاوه بر تکنیک تصادفی سازی فضای آدرس (ASLR) ، مکانیزمی برای تصادفی کردن جابجایی اشاره گرها که به فریم اولیه پشته و سازه های قرار داده شده در پشته با اطلاعات در مورد محیط ، پارامترهای راه اندازی برنامه و داده برای تصاویر قابل اجرا با فرمت ELF پیشنهاد شده اند.
- کار انجام شده است تا عملکرد ناامن از libc را از بین ببرد (با شروع از استاندارد C11 ، این عملکرد از مشخصات خارج می شود) و تنظیم پورت هایی که هنوز از این عملکرد استفاده می کنند. برنامه ریزی شده است تغییر در FreeBSD 13.0 ارائه شود.
- یک پروژه آزمایشی برای ایجاد ابزارهای ارکستراسیون برای محیط های زندان بر اساس چارچوب گلدان برای ایجاد و صادرات تصاویر ، مشابه Docker ، و درایور عشایری فراهم شده است ، که یک رابط کاربری برای راه اندازی های پویا در محیط های زندان فراهم می کند. مدل پیشنهادی به ما امکان می دهد فرایندهای ایجاد محیط های زندان و استقرار برنامه های کاربردی در آنها را از هم جدا کنیم. یکی از اهداف این پروژه فراهم کردن وسیله ای برای دستکاری در زندان ها به عنوان ظروف به سبک داکر است.
- سیستم های ذخیره و فایل
- پشتیبانی از سیستم پرونده FAT (msdosfs) از NetBSD به ابزار "makefs" منتقل شد. تغییرات آماده شده به شما امکان می دهد بدون استفاده از درایور md و بدون استفاده از ریشه ، تصاویر FS را با FAT ایجاد کنید.
- پردازش درایور زیر سیستم FUSE (سیستم فایل در USErspace) ، که امکان ایجاد پیاده سازی سیستم های پرونده را در فضای کاربر فراهم می کند ، انجام شده است. در ابتدا ، درایور عرضه شده دارای بسیاری از خطاها بود و براساس نسخه FUSE 7.8 ، که 11 سال پیش منتشر شد ، پایه گذاری شده است. به عنوان بخشی از پروژه به روزرسانی درایور ، پشتیبانی از پروتکل FUSE 7.23 اضافه شده است ؛ کد برای تأیید حقوق دسترسی در سمت هسته ("-o default_permission") ، تماس های VOP_MKNOD ، VOP_BMAP و VOP_ADVLOCK اضافه شده است ، امکان قطع عملیات FUSE اضافه شده است ، پشتیبانی از کانال های بدون نام نیز پشتیبانی می شود. در fusefs می توان از kqueue for / dev / fuse استفاده کرد ، اجازه به روزرسانی پارامترهای کوه از طریق "Mount -u" ، پشتیبانی اضافه شده برای صادرات فیوز از طریق NFS ، اجرای حسابداری RLIMIT_FSIZE ، افزودن پرچم های FOPEN_KEEP_CACHE و FUSE_ASYNC_READ ، بهینه سازی های قابل توجهی انجام داد و بهره وری و سامان بخشیدن به اوضاع ذخیره. درایور جدید در شاخه های سر و پایدار / 12 گنجانده شده است (شامل FreeBSD 12.1).
- تقریباً کار در مورد اجرای NFSv4.2 (RFC-7862) برای FreeBSD به پایان رسید. تمرکز دوره گزارش بر آزمایش بود. آزمایشات برای بررسی سازگاری با اجرای از لینوکس انجام شده است ، اما سرور pNFS با NFSv4.2 هنوز آزمایش می شود. به طور کلی ، کد در حال حاضر آماده برای ادغام در شعبه های جاری / جریان FreeBSD است. نسخه جدید NFS پشتیبانی از توابع posix_fadvise ، posix_fallocate ، SEEKHOLE / SEEKDATA را بصورت lseek ، کپی کردن محلی قطعات پرونده روی سرور (بدون انتقال به مشتری) می دهد.
- پشتیبانی سخت افزاری
- پروژه ای برای بهبود عملکرد FreeBSD در لپ تاپ ها آغاز شد. اولین دستگاهی که برای پشتیبانی سخت افزاری در FreeBSD مورد بررسی قرار گرفت ، لپ تاپ نسل هفتم Lenovo X1 Carbon بود.
- CheriBSD ، مجموعه ای از FreeBSD برای معماری پردازنده تحقیق CHERI (قابلیت های سخت افزاری پیشرفته دستورالعمل RISC) ، برای پشتیبانی از پردازنده آینده Morello ARM به روز شده است ، که از سیستم کنترل دسترسی حافظه CHERI بر اساس مدل امنیتی پروژه Capsicum پشتیبانی می کند. تراشه مورلو قرار است در سال 2021 عرضه شود. توسعه دهندگان CheriBSD همچنین پیگیری توسعه نمونه اولیه مرجع CHERI را بر اساس معماری MIPS ادامه می دهند.
- پشتیبانی گسترده از تراشه های RockChip RK3399 که در تخته های RockPro64 و NanoPC-T4 استفاده می شود. مهمترین پیشرفت پشتیبانی eMMC و توسعه درایور جدید برای کنترلر eMMC است که در صفحه استفاده می شود.
- کار بر روی اجرای پشتیبانی از ARM64 SoC Broadcom BCM5871X با پردازنده های ARMv8 Cortex-A57 با هدف استفاده در روترها ، دروازه ها و ذخیره شبکه ادامه یافت. برای دوره گزارش
پشتیبانی بیشتر از iProc PCIe و امکان استفاده از عملیات رمزنگاری سخت افزاری برای سرعت بخشیدن به IPsec را اضافه کرد.
ادغام کد در شعبه HEAD در سه ماهه چهارم پیش بینی می شود. - پیشرفت های قابل توجهی در توسعه پورت FreeBSD برای سکوی powerpc64 حاصل شده است. توجه اصلی به اطمینان از کار با کیفیت بالا بر روی سیستم های با پردازنده های IBM POWER8 و POWER9 است ، اما کار به صورت اختیاری بر روی سیستم های قدیمی Power Power Mac ، x500 و Amiga A1222 پشتیبانی می شود. شاخه powerpc * / 12 با gcc 4.2.1 به حمل و نقل ادامه می یابد و شاخه powerpc * / 13 به زودی به llvm90 منتقل می شود. از 33306 پورت ، 30514 با موفقیت مونتاژ شده اند.
- ادامه حمل و نقل FreeBSD برای 64 بیتی SoC NXP LS1046A مبتنی بر پردازنده ARMv8 Cortex-A72 با یک موتور شتاب بسته ای شبکه یکپارچه ، 10 گیگابایت اترنت ، PCIe 3.0 ، SATA 3.0 و USB 3.0. در طول دوره گزارش ، پشتیبانی از USB 3.0 ، SD / MMC ، I2C ، رابط شبکه DPAA و GPIO اجرا می شود. برنامه ها شامل پشتیبانی QSPI و بهینه سازی عملکرد رابط شبکه هستند. تکمیل و شمول در شعبه HEAD در سه ماهه چهارم سال 2019 پیش بینی می شود؛
- درایور ENA برای پشتیبانی از نسل دوم آداپتورهای شبکه آداپتورهای الاستیک شبکه ENAv2 که در زیرساخت الاستیک محاسبه ابر (EC2) برای سازماندهی ارتباط بین گره های EC2 با سرعت حداکثر 25 گیگابیت در ثانیه به روز شده است ، به روز شده است. پشتیبانی NETMAP به درایور ena اضافه شده و آزمایش شده است ، و طرح حافظه برای فعال کردن حالت LLQ در محیط های EC2 A1 آمازون اقتباس شده است.
- برنامه ها و سیستم بندری
- به روزرسانی قطعات و پورت های گرافیکی مرتبط با xorg. بنادر با استفاده از USE_XORG و XORG_CAT به جای تماس با bsd.xorg.mk از طریق bsd.port.mk به چارچوب USES ترجمه شده اند. درگاه های مشابه اکنون پرچم "USES = xorg" در پیش ساخته ها قرار دارد. عملکرد XORG_CAT از bsd.xorg.mk جدا شده و اکنون با پرچم "USES = xorg-cat" فعال شده است. ابزار اضافه شده برای تولید مستقیم پورتهای xorg از مخزن git
Freedesktop.org ، که به عنوان مثال به شما امکان پیکربندی پورت های نسخه های منتشر نشده را ارائه نمی دهد. در آینده برنامه ریزی شده است برای ساخت بنادر xorg ابزاری برای استفاده از سیستم meson build به جای autotools تهیه شود.کار در تمیز کردن درگاه های قدیمی xorg انجام شده است که به اجزای پشتیبانی نشده پشتیبانی می شوند ، به عنوان مثال ، درگاه x11 / libXp برداشته شده است و درگاه های x11 / Xxf86misc ، x11-font / libXfontcache و گرافیک / libGLw منسوخ شده اند.
- کارهایی در جهت بهبود پشتیبانی از Java 11 و نسخه های جدیدتر در FreeBSD و همچنین انتقال برخی تغییرات در شاخه جاوا 8 انجام شده است ، پس از پشتیبانی از ویژگی های جدید Java 11 مانند Java Flight Recorder برای FreeBSD پیاده سازی شد ، عامل سرویس دهی HotSpot ، Debugger HotSpot ، DTrace ، Javac Server ، Java Sound و SCTP ، برای اطمینان از گذشت همه تست های سازگاری ، کار تغییر کرده است. تعداد نارسایی ها در طی امتحان از 50 به 2 کاهش می یابد.
- KDE Plasma ، KDE Frameworks ، برنامه های KDE و دسک تاپ های Qt به روز نگه داشته شده و به جدیدترین نسخه ها به روز می شوند.
- پورتهای رومیزی Xfce که نسخه 4.14 به روز شده اند.
- مجموعه بندر FreeBSD از محدوده پورت 38000 عبور کرده است ، تعداد PR های بدون قفل کمی بیشتر از 2000 است ، که از این تعداد 400 PRs هنوز برچیده نشده اند. برای دوره گزارش ، 7340 تغییر توسط 169 توسعه دهنده ایجاد شده است. دو عضو جدید (سانتوش راجو و دمیتری گوتنیک) حقوق ارتکابی دریافت کردند. نسخه جدید مدیر بسته pkg 1.12 منتشر شده است که در آن پشتیبانی از پوشش روی درخت بنادر اجرا شده و محتویات bsd.sites.mk پاک می شوند. از جمله به روزرسانی های قابل توجه نسخه در بنادر ذکر شده است: Lazarus 2.0.4 ، LLVM 9.0، Perl5.30، PostgreSQL 11، Ruby 2.6، Firefox 69.0.1، Firefox-esr 68.1.0، Chromium 76.0؛
- توسعه پروژه ClonOS ، توسعه كیت توزیع تخصصی برای استقرار زیرساخت های سرور مجازی ، همچنان ادامه دارد. ClonOS از نظر وظایفی شباهت به سیستم هایی مانند Proxmox ، Triton (Joyent) ، OpenStack ، OpenNebula و Amazon AWS دارد که تفاوت اصلی آن استفاده از FreeBSD و امکان مدیریت ، استقرار و مدیریت ظروف زندان و FreeBSD زندان با محیط های مجازی بر اساس Hypervisors Bhyve و Xen است. . تغییرات اخیر شامل پشتیبانی است
cloud-init برای Linux / BSD VM و cloudbase-init برای ویندوز VM ، آغاز انتقال به استفاده از تصاویر بومی ، استفاده از Jenkins CI برای آزمایش مجامع و یک مخزن جدید pkg برای نصب
ClonOS از بسته ها
- به روزرسانی قطعات و پورت های گرافیکی مرتبط با xorg. بنادر با استفاده از USE_XORG و XORG_CAT به جای تماس با bsd.xorg.mk از طریق bsd.port.mk به چارچوب USES ترجمه شده اند. درگاه های مشابه اکنون پرچم "USES = xorg" در پیش ساخته ها قرار دارد. عملکرد XORG_CAT از bsd.xorg.mk جدا شده و اکنون با پرچم "USES = xorg-cat" فعال شده است. ابزار اضافه شده برای تولید مستقیم پورتهای xorg از مخزن git
OpenNET
نظر شما