نسخه هسته هسته لینوکس 5.6 معرفی شد


پس از دو ماه توسعه ، لینوس توروالدز نسخه هسته 5.6 لینوکس را معرفی کرد. از جمله قابل توجه ترین تغییرات: ادغام رابط WireGuard VPN ، پشتیبانی از USB4 ، مکان های نام برای زمان ، امکان ایجاد گیرنده های تراکم TCP با استفاده از BPF ، پشتیبانی اولیه برای MultiPath TCP ، از بین بردن هسته از مشکل 2038 ، مکانیزم «bootconfig» و ZoneFS FS.

نسخه جدید 13702 patch را از برنامه نویسان 1810 پذیرفت ،
اندازه پچ 40 مگابایت است (تغییرات روی 11577 پرونده تأثیر می گذارد ، 610012 خط کد اضافه شده است ،
294828 خط حذف شد). حدود 45٪ از موارد ارائه شده در 5.6
تغییرات مربوط به درایورهای دستگاه است ، تقریباً 15٪ تغییرات دارند
ارتباط با بروزرسانی کد ویژه معماری سخت افزار ، 12٪
متصل به پشته شبکه ، 4٪ به سیستم فایلها و 3٪ به داخلی
زیر سیستم های هسته.

نوآوری های اصلی:

  • زیر سیستم شبکه
    • افزودن اجرای رابط WireGuard VPN ، که براساس روشهای نوین رمزگذاری (ChaCha20 ، Poly1305 ، Curve25519 ، BLAKE2s) اجرا می شود ، عملکرد بسیار بالایی دارد (3.9 سریعتر از OpenVPN از نظر پهنای باند) آسان است ، بدون استفاده خود را در تعدادی از استقرارهای بزرگ اثبات کرده است. WireGuard از مفهوم مسیریابی کلید رمزگذاری استفاده می کند که شامل اتصال یک کلید خصوصی به هر رابط شبکه و استفاده از آن برای اتصال کلیدهای عمومی است. تبادل کلیدهای عمومی برای برقراری ارتباط با قیاس با SSH انجام می شود. نخستین رمزنگاری لازم برای کار WireGuard از کتابخانه روی به استاندارد Crypto API منتقل شد و در هسته 5.5 گنجانده شد.
    • ادغام مؤلفه های لازم برای پشتیبانی از MPTCP (MultiPath TCP) ، پسوند پروتکل TCP برای سازماندهی عملکرد اتصال TCP با تحویل بسته به طور همزمان در طول چندین مسیر از طریق رابط های شبکه مختلف مرتبط با آدرس های مختلف IP ، آغاز شد. برای برنامه های شبکه ، چنین اتصال جمع مانند یک اتصال TCP معمولی به نظر می رسد ، تمام منطق جداسازی جریان توسط MPTCP انجام می شود. TCP Multipath می تواند برای گسترش توان عملیاتی و همچنین برای افزایش قابلیت اطمینان استفاده شود. به عنوان مثال ، MPTCP می تواند برای سازماندهی انتقال داده در تلفن هوشمند با استفاده از هر دو لینک WiFi و 3G به طور همزمان یا برای کاهش هزینه ها با اتصال یک سرور با استفاده از چندین لینک ارزان به جای یکی از گرانترین ها ، استفاده شود.
    • برای پردازش صف های شبکه ، پشتیبانی از sch_ets (Enhanced Transmission Selection Selection، IEEE 802.1Qaz) را فراهم کرده است ، که این امکان را برای توزیع پهنای باند بین طبقات مختلف ترافیک فراهم می کند. اگر بار در کلاس خاصی از ترافیک کمتر از پهنای باند ارائه شده باشد ، ETS اجازه می دهد تا سایر کلاس های ترافیک از پهنای باند موجود استفاده کنند. Qdisc sch_ets به عنوان یک رشته PRIO پیکربندی شده است و از کلاس های راهنمایی و رانندگی برای تعیین محدوده پهنای باند پهن و باند مشترک بین کلاس ها استفاده می کند. ETS به عنوان ترکیبی از PRIO و DRR کار می کند – اگر کلاس هایی برای ترافیک کاملاً محدود وجود داشته باشد ، از PRIO استفاده می شود ، اما اگر ترافیکی در صف وجود نداشته باشد ، مانند DRR کار می کند.
    • نوع جدیدی از برنامه های BPF BPF_PROG_TYPE_STRUCT_OPS اضافه شده است ، که اجازه می دهد تا کنترل کننده های عملکرد هسته از طریق BPF عملی شوند. در حال حاضر ، این ویژگی در حال حاضر می تواند برای پیاده سازی الگوریتم های کنترل تراکم TCP در قالب برنامه های BPF استفاده شود. به عنوان نمونه ، یک برنامه BPF با اجرای الگوریتم DCTCP ارائه شده است.
    • تغییراتی در جعبه ابزار ethtool از ioctl () برای استفاده از رابط netlink در هسته پذیرفته شده است. رابط کاربری جدید افزودن پسوندها را ساده تر می کند ، استفاده از خطا را بهبود می بخشد ، به شما امکان می دهد هنگام تغییر وضعیت اعلان هایی ارسال کنید ، تعامل بین هسته و فضای کاربر را ساده تر کنید و تعداد لیست های نامگذاری شده همگام شده را کاهش می دهد.
    • اجرای الگوریتم مدیریت صف شبکه FQ-PIE (Flow Queue PIE) اضافه شده است ، با هدف کاهش تأثیر منفی بافر بسته بندی واسطه ای روی تجهیزات شبکه لبه (bufferbloat). FQ-PIE در سیستم های دارای مودم کابل بسیار مؤثر است.
  • سیستم های فرعی ، دیسک ورودی / خروجی و فایل های دیسک
    • یک اجرای غیر همزمان از عملکرد DISCARD برای سیستم پرونده Btrfs اضافه شده است (علامت گذاری بلوک های آزاد شده که دیگر نمی توانند ذخیره فیزیکی شوند). در ابتدا ، عملیات DISCARD به صورت همزمان انجام می شد که به دلیل نیاز به انتظار برای اتمام دستورات مربوطه توسط درایوها ، می تواند منجر به فروپاشی عملکرد شود. اجرای ناهمزمان به شما اجازه می دهد تا برای انجام و اجرای این عملیات در پس زمینه منتظر درایو DISCARD نباشید.
    • XFS با استفاده از پیشخوان های قدیمی 32 بیتی کد را پاک کرد (نوع time_t جایگزین شده توسط time64_t) ، و منجر به مشکل 2038 شد. رفع اشکالات و خرابی های حافظه که در سیستم عامل های 32 بیتی ظاهر شده است. طراحی مجدد کد برای کار با ویژگی های پیشرفته.
    • بهینه سازی عملکرد مربوط به استفاده از قفل های inode برای عملیات خواندن و نوشتن برای سیستم پرونده ext4 انجام شده است. عملکرد بازنویسی بهبود یافته در حالت مستقیم I / O (مستقیم I / O). برای ساده سازی تشخیص مشکلات ، اولین و آخرین کدهای خطا در superblock ذخیره می شوند.
    • سیستم فایل F2FS امکان ذخیره داده ها را به صورت فشرده شده فراهم می کند. برای یک پرونده یا فهرست مستقیم ، فشرده سازی را می توان با استفاده از دستور "پرونده chattr + c" یا "chattr + c dir؛ dir / پرونده لمسی" فعال کرد. برای فشرده سازی کل پارتیشن موجود در ابزار نصب ، می توانید از گزینه "-o compress_extension = ext" استفاده کنید.
    • کرنل سیستم پرونده ZoneFS را تصویب کرد ، که کار با سطح پایین را با دستگاه های ذخیره سازی منطقه ای ساده می کند. Zonefs FS توسط Western Digital توسعه داده شد و هر منطقه را در درایو با یک پرونده جداگانه مرتبط می کند که می توان برای ذخیره داده ها در حالت خام و بدون دستکاری در بخش و سطح بلوک ، یعنی آن استفاده کرد. به برنامه های کاربردی اجازه می دهد به جای دسترسی مستقیم به دستگاه بلوک با استفاده از ioctl ، از API پرونده استفاده کنند. درایوهای Zoned به معنی دستگاههای روی دیسک های مغناطیسی سخت یا NVMe SSD است ، فضای ذخیره سازی که در آن به مناطق تقسیم می شود که گروه هایی از بلوک ها یا بخش ها را تشکیل می دهند ، که در آنها فقط اضافه کردن پی در پی داده ها با بروزرسانی کل گروه بلوک مجاز است.
    • در NFS ، نصب پارتیشن های روی UDP به طور پیش فرض غیرفعال است. پشتیبانی از توانایی برای کپی مستقیم فایلها بین سرورهای تعریف شده در مشخصات NFS 4.2 اضافه شده است. در صورت خرابی سرور امکان استفاده از مقادیر مشخصه cached شده ، گزینه جدید Mount "softreval" اضافه شده است. به عنوان مثال ، هنگامی که این گزینه پس از در دسترس نبودن سرور مشخص نشده است ، می توانید مسیرهای موجود در پارتیشن NFS و دسترسی به اطلاعاتی را که در حافظه پستی حل شده است ، جستجو کنید.
  • مجازی سازی و امنیت
    • توانایی غیرفعال کردن ماژول SELinux را در حین کار منسوخ اعلام کرد ، و در آینده بارگیری مجدد SELinux فعال شده ممنوع است. برای غیرفعال کردن SELinux ، باید پارامتر "selinux = 0" را در خط فرمان هسته منتقل کنید.
    • پشتیبانی از مکان های نام زمانی اضافه کرد و به شما امکان می دهد وضعیت ساعت سیستم را به ظرف وصل کنید (CLOCK_REALTIME ،
      CLOCK_MONOTONIC، CLOCK_BOOTTIME) ، از زمان خود در ظرف استفاده کنید و هنگام انتقال کانتینر به میزبان دیگر ، اطمینان حاصل کنید که CLOCK_MONOTONIC و CLOCK_BOOTTIME تغییر نکرده اند (زمان لازم را بعد از بارگیری با یا بدون حالت خواب در نظر بگیرید).

    • استخر مسدود شده / توسعه / تصادفی حذف شد. رفتار / dev / تصادفی از نظر جلوگیری از انسداد آنتروپی پس از شروع استخر نزدیک به / dev / urandom است.
    • یک راننده در هسته اصلی گنجانده شده است که به مهمانان در حال اجرا در VirtualBox امکان می دهد دایرکتوری های صادر شده توسط محیط میزبان را نصب کنند (پوشه مشترک VirtualBox).
    • مجموعه ای از patch (توزیع کننده BPF) به سیستم فرعی BPF اضافه شده است ، که باعث می شود در هنگام وقوع حوادث مرتبط با آنها ، کارایی فراخوانی برنامه های BPF را افزایش دهد (برای مثال استفاده از مکانیزم Retpoline برای محافظت در برابر حملات کلاس Spectre V2
    • یک درایور اضافه شده است تا از محیط های TEE (Trusted Exception Environment) جاسازی شده در APU AMD پشتیبانی کند.
  • خدمات حافظه و سیستم
    • BPF پشتیبانی از عملکردهای جهانی را اضافه می کند ، که به عنوان بخشی از ابتکار عمل برای اضافه کردن پشتیبانی از کتابخانه های عملکردی که می توانند در برنامه های BPF گنجانده شوند ، اجرا می شود. مرحله بعدی پشتیبانی از پسوندهای پویا است که به شما امکان می دهد عملکردهای جهانی را بارگیری کنید ، از جمله اینکه می توانید عملکردهای جهانی موجود را هنگام استفاده از آنها جایگزین کنید. زیر سیستم BPF همچنین از گزینه عملکرد نقشه (برای ذخیره داده های مداوم) استفاده می کند ، که از اجرای حالت دسته ای پشتیبانی می کند.
    • دستگاه cpu_cooling را اضافه کرد ، که اجازه می دهد تا با قرار دادن آن برای مدت زمان کوتاه ، CPU را بیش از حد گرم کنید.
    • فراخوان سیستم openat2 () اضافه شده است ، که مجموعه ای از پرچم های اضافی را برای محدود کردن اجازه مسیر پرونده (به منظور جلوگیری از تقاطع نقاط کوه ، پیوندهای نمادین ، ​​پیوندهای جادویی (/ proc / PID / fd) ، مؤلفه ها "../" ارائه می دهد)
    • برای سیستم های ناهمگن مبتنی بر معماری big.LITTLE که هسته های CPU با انرژی کارآمد و کم کارآمد را در یک تراشه ترکیب می کنند ، هنگام انجام کارهای زمان واقعی ، پارامتر uclamp_min تنظیم شده است (مکانیسم تضمین بار در هسته 5.3 ظاهر شد) تا اطمینان حاصل شود که کار توسط برنامه ریز در هسته پردازنده قرار داده شده ، که عملکرد کافی دارد.
    • هسته اصلی مسئله 2038 نیست. آخرین دستگیرندگان باقی مانده را جایگزین کنید ، که در آن از نوع Time_t 32 بیتی (امضا شده int) برای پیشخوان Epoch استفاده شد که با در نظر گرفتن گزارش از سال 1970 ، باید در سال 2038 سرریز شود.
    • ادامه کار رابط I / O ناهمزمان io_uring ، که پشتیبانی از عملیات جدید را فراهم می کند: IORING_OP_FALLOCATE (رزرو مناطق خالی) ، IORING_OP_OPENAT ،
          IORING_OP_OPENAT2 ،
          IORING_OP_CLOSE (باز و بسته شدن پرونده ها) ،
          IORING_OP_FILES_UPDATE (افزودن و حذف پرونده ها از لیست دسترسی سریع) ،
       IORING_OP_STATX (اطلاعات پرونده درخواست) ،
          IORING_OP_READ ،
          IORING_OP_WRITE (آنالوگ های ساده شده IORING_OP_READV و IORING_OP_WRITEV) ،
          IORING_OP_FADVISE ،
          IORING_OP_MADVISE (گزینه های تماس غیر همزمان (posx_fadvise و madvise) ، IORING_OP_SEND ،
          IORING_OP_RECV (ارسال و دریافت داده های شبکه) ،
          IORING_OP_EPOLL_CTL (عملیات در توصیف کننده های فایل epoll).

    • فراخوان سیستم pidfd_getfd () اضافه شده است تا یک فرآیند برای استخراج توصیف کننده پرونده پرونده باز از یک فرآیند دیگر امکان پذیر باشد.
    • سازوكار "bootconfig" اجرا شده است ، كه علاوه بر گزينه هاي خط فرمان ، تعيين پارامترهاي هسته را از طريق يك پرونده تنظيمي نيز امکان پذير مي کند. برای افزودن چنین پرونده هایی به تصویر initramfs ، ابزار bootconfig پیشنهاد شده است. برای مثال می توان از این ویژگی برای پیکربندی kprobes در زمان بوت استفاده کرد.
    • مکانیسم انتظار برای نوشتن و خواندن داده ها در لوله های بدون نام (لوله) دوباره طراحی شده است. این تغییر باعث تسریع در اجرای کارهایی مانند مونتاژ موازی پروژه های بزرگ شد. در این حالت ، بهینه سازی می تواند به دلیل ایجاد اشکال در نسخه 4.2.1 ، که در نسخه 4.3 رفع شده است ، منجر به ایجاد شرایط مسابقه در GNU شود.
    • پرچم PR_SET_IO_FLUSHER به prctl () اضافه شده است ، که می تواند برای علامت گذاری فرآیندهای رایگان حافظه استفاده شود که در صورت عدم حافظه در سیستم باید محدودیت هایی اعمال شود.
    • بر اساس سیستم تخصیص حافظه ION که توسط اندروید استفاده می شود ، سیستم فرعی hepa dma-buf اجرا می شود ، این امکان را فراهم می آورد تا کنترل تخصیص بافرهای DMA برای اشتراک مناطق حافظه با درایورها ، برنامه ها و زیر سیستم های مختلف را کنترل کنید.
  • معماری سخت افزار
    • پشتیبانی از افزونه E0PD را که در ARMv8.5 ظاهر شد اضافه کرد و به شما امکان می دهد محافظت در برابر حملات مرتبط با اجرای سوداگرانه دستورالعمل های مربوط به CPU را انجام دهید. حفاظت مبتنی بر E0PD منجر به کاهش سربارتر از حفاظت KPTI (جداسازی جدول جدول هسته) می شود.
    • پشتیبانی از دستورالعمل RNG برای سیستم های مبتنی بر معماری ARMv8.5 ، که دسترسی به یک تولید کننده عدد شبه تصادفی سخت افزاری را فراهم می کند. در هسته ، دستورالعمل RNG برای شکل دادن آنتروپی در هنگام آغاز ژنراتور عدد شبه تصادفی ارائه شده توسط هسته استفاده می شود.
    • پشتیبانی از برنامه افزودنی MPX (پسوند حفاظت از حافظه) برداشته شده در هسته 3.19 اضافه شده و امکان سازماندهی بررسی نشانگرها برای مشاهده مرزهای مناطق حافظه فراهم شده است. این فناوری در کامپایلرها کاربرد گسترده ای ندارد و از GCC حذف شده است.
    • برای معماری RISC-V ، پشتیبانی از ابزار اشکال زدایی KASan (آدرس هسته هسته) که امکان شناسایی خطا در هنگام کار با حافظه را فراهم می کند ، انجام می شود.
  • تجهیزات
    • پشتیبانی از پیاده سازی مشخصات USB 4.0 ، که بر اساس پروتکل Thunderbolt 3 ساخته شده است و پهنای باند حداکثر 40 گیگابایت بر ثانیه را دارد ، ضمن حفظ سازگاری به عقب با USB 2.0 و USB 3.2. به طور قیاس با Thunderbolt ، رابط USB 4.0 به شما امکان می دهد پروتکل های مختلفی را روی یک کابل با یک کانکتور Type-C از جمله PCIe ، Display Port و USB 3.x و همچنین پیاده سازی پروتکل نرم افزار تونل کنید ، به عنوان مثال برای سازماندهی پیوندهای شبکه بین میزبان. اجرای این برنامه مبتنی بر درایور Thunderbolt است که قبلاً در هسته لینوکس گنجانده شده است و آن را برای کار با هاست ها و دستگاه های سازگار با USB4 سازگار می کند. این تغییرات همچنین پشتیبانی از دستگاه های Thunderbolt 3 را به اجرای نرم افزار Connection Manager اضافه می کند ، که وظیفه ایجاد تونل هایی برای اتصال چندین دستگاه از طریق یک کانکتور واحد را بر عهده دارد.
    • اضافه شدن پشتیبانی اولیه برای HDCP 2.x (حفاظت از محتوای دیجیتال با پهنای باند) از فناوری محافظت درایور amdgpu کپی می کند. پشتیبانی اضافه شده برای تراشه AMD Pollock ASIC مبتنی بر Raven 2. گزینه تنظیم مجدد GPU را برای خانواده های Renoir و Navi پیاده سازی کرد.
    • پشتیبانی از DSI VDSC برای تراشه های مبتنی بر میکروارضایی Ice Lake و Tiger Lake در درایور DRM برای کارت های ویدیوی Intel ، پیاده سازی LMEM mmap (حافظه محلی دستگاه) ، بهبود تجزیه VBT (جدول بایوس تصویری) ، پشتیبانی HDCP 2.2 برای تراشه های قهوه دریاچه
    • کار در مورد اتحاد کد درایور amdkfd (برای GPU های گسسته مانند فیجی ، تونگا ، پولاریس) با درایور amdgpu ادامه یافت.
    • درایور k10temp دوباره طراحی شده است ، که در آن پشتیبانی از ولتاژ و پارامترهای جریان خروجی برای پردازنده های AMD Zen AMD و همچنین اطلاعات پیشرفته از سنسورهای دما مورد استفاده در CPU های ذن و ذن 2 وجود دارد.
    • درایور nouveau پشتیبانی از حالت بارگیری firmware تأیید شده برای NPID های GPU NVIDIA را بر اساس ریزآزمایی Turing (GeForce RTX 2000) ، که پشتیبانی شتاب سه بعدی برای این کارت ها را فراهم می کند (بارگیری سیستم عامل رسمی با امضای دیجیتال NVIDIA لازم است). پشتیبانی از موتور گرافیکی TU10x اضافه شده است. مشکلات صوتی HD حل شد.
    • پشتیبانی از فشرده سازی داده ها هنگام انتقال از طریق DisplayPort MST (حمل و نقل چند جریان) اضافه شد.
    • درایور جدید "ath11k" را برای تراشه های بی سیم Qualcomm با پشتیبانی 802.11ax اضافه کرد.
      درایور مبتنی بر پشته mac80211 است و از حالت های دسترسی ، ایستگاه کاری و گره های مش پشتیبانی می کند.

    • Sysfs دسترسی به سنسورهای دمای قابل خواندن را که در هارد دیسک های مدرن و SSD ها استفاده می شود ، فراهم می کند.
    • تغییرات مهمی در سیستم صوتی ALSA ایجاد شد ، با هدف حذف کد از مشکل 2038. پشتیبانی از کدک های صوتی جدید اضافه شده است
       Qualcomm WCD9340 / WCD9341، Realtek RT700، RT711، RT715، RT1308، Ingenic JZ4770.

    • درایورها برای پانل های LCD اضافه شد Logic PD 28، Jimax8729d MIPI-DSI، igenic JZ4770، Sony acx424AKP، Leadtek LTK500HD1829، Xinpeng XPP055C272، AUO B116XAK01، GiantPlus GPM940B0،
          BOE NV140FHM-N49 ،
          Satoz SAT050AT40H12R2 ،
          Sharp LS020B1DD01D.
    • پشتیبانی از تابلوهای ARM و سیستم عامل Gen1 Amazon Echo (مبتنی بر OMAP3630) ، سامسونگ Galaxy S III mini (GT-I8190) ، Allwinner Emlid Neutis ، Libre Computer ALL-H3-IT ، PineH64 Model B ، Aibretech Amlogic GX PC ،
       Armada SolidRun Clearfog GTR، NXPGateworks GW59xx،
      Tolino Shine 3 کتاب خواننده کتاب ،
       هنرمندان جاسازی شده COM (i.MX7ULP) ، SolidRun CLearfog CX / ITX و HoneyComb (LX2160A) ، Google Coral Edge TPU (i.MX8MQ) ،
       Rockchip Radxa Dalang Carrier، Radxa Rock Pi N10، VMARC RK3399Pro SOM
      ST Ericsson HREF520، Inforce 6640، SC7180 IDP، Atmel / Microchip AM9X60 (ARM926 SoC، Kizboxmini)، ST stm32mp15، AM3703 / AM3715 / DM3725، ST Ericsson ab8505، Unisoc SC9863A، Qualcomm SC7180. پشتیبانی از کنترلر PCIe مورد استفاده در Raspberry Pi 4 اضافه شده است.

در همان زمان ، بنیاد نرم افزار آزاد آمریکای لاتین تشکیل شد
نوع کاملاً رایگان 5.6 هسته ای – Linux-libre 5.6-gnu ، پاک کننده عناصر سیستم عامل و درایورهای حاوی اجزای اختصاصی یا بخش هایی از کد ، دامنه آن توسط تولید کننده محدود است. نسخه جدید بارگیری سریع در درایورهای AMD TEE ، ATH11K و Mediatek SCP را غیرفعال می کند. کد تمیز کردن لکه ها در AMD PSP ، درایورهای amdgpu و nveveau و زیر سیستم ها به روز شده است.

OpenNET


نظر شما