انتشار هسته لینوکس 5.6

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

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

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

  • زیر سیستم شبکه
    • اضافه پیاده سازی یک رابط VPN WireGuard، که بر اساس روش های رمزگذاری مدرن (ChaCha20، Poly1305، Curve25519، BLAKE2s) پیاده سازی شده است، استفاده آسان، عاری از پیچیدگی است، خود را در تعدادی از پیاده سازی های بزرگ به اثبات رسانده است و عملکرد بسیار بالایی را ارائه می دهد (3,9 برابر سریعتر از OpenVPN از نظر شرایط). توان عملیاتی). WireGuard از مفهوم مسیریابی کلید رمزگذاری استفاده می کند، که شامل اتصال یک کلید خصوصی به هر رابط شبکه و استفاده از آن برای اتصال کلیدهای عمومی است. کلیدهای عمومی برای برقراری ارتباط به روشی مشابه SSH رد و بدل می شوند. برای کار کردن WireGuard، رمزهای اولیه مورد نیاز است ما بودیم منتقل شده است از کتابخانه روی به عنوان بخشی از Crypto API استاندارد و مشمول به هسته 5.5.
    • آغاز شده ادغام اجزای لازم برای پشتیبانی از MPTCP (MultiPath TCP)، توسعه پروتکل TCP برای سازماندهی عملیات اتصال TCP با تحویل بسته ها به طور همزمان در طول چندین مسیر از طریق رابط های شبکه مختلف مرتبط با آدرس های IP مختلف. برای برنامه های شبکه، چنین اتصال انبوهی مانند یک اتصال TCP معمولی به نظر می رسد و تمام منطق جداسازی جریان توسط MPTCP انجام می شود. TCP چند مسیره را می توان برای افزایش توان عملیاتی و افزایش قابلیت اطمینان استفاده کرد. به عنوان مثال، MPTCP را می توان برای سازماندهی انتقال داده در تلفن هوشمند با استفاده از پیوندهای WiFi و 4G به طور همزمان یا کاهش هزینه ها با اتصال یک سرور با استفاده از چندین لینک ارزان به جای یک لینک گران قیمت استفاده کرد.
    • اضافه پشتیبانی از رشته پردازش صف شبکه sch_ets (انتخاب انتقال پیشرفته، IEEE 802.1Qaz)، که توانایی توزیع پهنای باند بین کلاس های مختلف ترافیک را فراهم می کند. اگر بار روی یک کلاس ترافیک خاص کمتر از پهنای باند تخصیص داده شده باشد، ETS به سایر کلاس های ترافیک اجازه می دهد تا از پهنای باند موجود (استفاده نشده) استفاده کنند. Qdisc sch_ets به عنوان یک رشته PRIO پیکربندی شده است و از کلاس های ترافیک برای تعریف محدودیت های پهنای باند سخت و مشترک استفاده می کند. ETS به عنوان ترکیبی از رشته ها عمل می کند قبل и DRR — اگر کلاس های ترافیکی به شدت محدودی وجود داشته باشد، از PRIO استفاده می شود، اما اگر ترافیک در صف وجود نداشته باشد، مانند DRR کار می کند.
    • نوع جدیدی از برنامه های BPF اضافه شده است BPF_PROG_TYPE_STRUCT_OPS، که به شما امکان می دهد کنترل کننده های عملکرد هسته را از طریق BPF پیاده سازی کنید. در حال حاضر، از این ویژگی می توان برای پیاده سازی الگوریتم های کنترل تراکم TCP در قالب برنامه های BPF استفاده کرد. به عنوان مثال پیشنهاد شده برنامه BPF با پیاده سازی الگوریتم DCTCP.
    • در هسته پذیرفته شده است تغییرات، ابزار ترجمه اتول با ioctl() برای استفاده رابط نت لینک. رابط جدید افزودن برنامه‌های افزودنی را آسان‌تر می‌کند، مدیریت خطا را بهبود می‌بخشد، اجازه می‌دهد اعلان‌ها هنگام تغییر وضعیت ارسال شوند، تعامل بین هسته و فضای کاربر را ساده‌تر می‌کند و تعداد لیست‌های نام‌گذاری شده را که نیاز به همگام‌سازی دارند، کاهش می‌دهد.
    • اضافه شدن اجرای الگوریتم مدیریت صف شبکه FQ-PIE (Flow Queue PIE) با هدف کاهش تأثیر منفی بافر بسته میانی بر تجهیزات شبکه لبه (bufferbloat). FQ-PIE زمانی که در سیستم هایی با مودم کابلی استفاده می شود، کارایی بالایی را نشان می دهد.
  • زیرسیستم دیسک، I/O و سیستم های فایل
    • برای سیستم فایل Btrfs اضافه اجرای ناهمزمان عملیات DISCARD (علامت گذاری بلوک های آزاد شده که دیگر نیازی به ذخیره فیزیکی ندارند). در ابتدا، عملیات DISCARD به صورت همزمان انجام می شد، که می تواند منجر به کاهش عملکرد به دلیل درایوهایی که منتظر تکمیل دستورات مربوطه هستند، شود. پیاده سازی ناهمزمان به شما این امکان را می دهد که منتظر نمانید تا درایو DISCARD کامل شود و این عملیات را در پس زمینه انجام دهید.
    • در XFS انجام شد پاک کردن کدی که از زمان شمارهای قدیمی 32 بیتی استفاده می کرد (نوع time_t با time64_t جایگزین شد)، منجر به مشکل 2038 شد. رفع خطاها و خرابی حافظه رخ داده در سیستم عامل های 32 بیتی. کد برای کار با ویژگی های توسعه یافته دوباره کار شده است.
    • به سیستم فایل ext4 معرفی کرد بهینه سازی عملکرد مربوط به مدیریت قفل ایند در طول عملیات خواندن و نوشتن. بهبود عملکرد بازنویسی در حالت ورودی/خروجی مستقیم. برای ساده سازی تشخیص مشکلات، اولین و آخرین کدهای خطا در superblock ذخیره می شوند.
    • در سیستم فایل F2FS اجرا شد قابلیت ذخیره داده ها به صورت فشرده برای یک فایل یا فهرست، فشرده سازی را می توان با استفاده از دستور "chattr +c file" یا "chattr +c dir; dir/file را لمس کنید. برای فشرده‌سازی کل پارتیشن، می‌توانید از گزینه «-o compress_extension=ext» در ابزار mount استفاده کنید.
    • هسته شامل یک سیستم فایل است ZoneFS، که کار سطح پایین را با دستگاه های ذخیره سازی منطقه ای ساده می کند. درایوهای منطقه‌بندی شده به دستگاه‌هایی بر روی دیسک‌های مغناطیسی سخت یا SSD‌های NVMe گفته می‌شود، فضای ذخیره‌سازی در آن به مناطقی تقسیم می‌شود که گروه‌هایی از بلوک‌ها یا بخش‌ها را تشکیل می‌دهند، که در آن‌ها فقط اضافه کردن متوالی داده‌ها مجاز است و کل گروه بلوک‌ها را به‌روزرسانی می‌کند. FS ZoneFS توسط Western Digital توسعه داده شده است و هر منطقه در درایو را با یک فایل جداگانه مرتبط می کند که می تواند برای ذخیره داده ها در حالت خام بدون دستکاری در سطح بخش و بلوک استفاده شود. به برنامه های کاربردی اجازه می دهد به جای دسترسی مستقیم به دستگاه بلوک با استفاده از ioctl از API فایل استفاده کنند.
    • در NFS، نصب پارتیشن ها روی UDP به طور پیش فرض غیرفعال است. پشتیبانی اضافه شده برای توانایی کپی مستقیم فایل ها بین سرورها، تعریف شده در مشخصات NFS 4.2. یک گزینه mount جدید "softreval" اضافه شده است که امکان استفاده از مقادیر ویژگی های کش شده را در صورت خرابی سرور فراهم می کند. به عنوان مثال، هنگام تعیین این گزینه، پس از در دسترس نبودن سرور، امکان حرکت در مسیرهای موجود در پارتیشن NFS و دسترسی به اطلاعاتی که در حافظه پنهان است وجود دارد.
    • انجام شد بهینه سازی عملکرد مکانیزم fs-verity که برای نظارت بر یکپارچگی و احراز هویت فایل های فردی استفاده می شود. افزایش سرعت خواندن متوالی به لطف استفاده از درخت هش Merkle. عملکرد FS_IOC_ENABLE_VERITY زمانی بهینه شده است که هیچ داده ای در حافظه پنهان وجود نداشته باشد (خواندن پیشگیرانه صفحات دارای داده اعمال شده است).
  • مجازی سازی و امنیت
    • قابلیت غیرفعال کردن ماژول SELinux در حین اجرا منسوخ شده است و تخلیه SELinux از قبل فعال شده در آینده ممنوع خواهد بود. برای غیرفعال کردن SELinux باید پارامتر "selinux=0" را در خط فرمان هسته ارسال کنید.
    • اضافه پشتیبانی از فضاهای نام برای زمان (فضاهای نام زمانی)، به شما این امکان را می دهد که وضعیت ساعت سیستم را به ظرف متصل کنید (CLOCK_REALTIME،
      CLOCK_MONOTONIC، CLOCK_BOOTTIME)، از زمان خود در کانتینر استفاده کنید و هنگام انتقال کانتینر به میزبان دیگر، اطمینان حاصل کنید که قرائت‌های CLOCK_MONOTONIC و CLOCK_BOOTTIME بدون تغییر باقی می‌مانند (زمان پس از بارگیری را در نظر بگیرید، با یا بدون در نظر گرفتن حالت خواب. ).

    • مخزن مسدودکننده /dev/random حذف شده است. رفتار /dev/random از نظر جلوگیری از مسدود شدن آنتروپی پس از مقداردهی اولیه استخر، شبیه به /dev/urandom است.
    • هسته اصلی شامل درایوری است که به سیستم‌های مهمان در حال اجرا VirtualBox اجازه می‌دهد تا دایرکتوری‌های صادر شده توسط محیط میزبان (پوشه اشتراک‌گذاری شده VirtualBox) را نصب کنند.
    • مجموعه ای از وصله ها به زیرسیستم BPF اضافه شده است (دیسپچر BPF، هنگام استفاده از مکانیسم Retpoline برای محافظت در برابر حملات کلاس Spectre V2، به شما امکان می دهد کارایی فراخوانی برنامه های BPF را در هنگام وقوع رویدادهای مرتبط با آنها افزایش دهید (به عنوان مثال، سرعت فراخوانی کنترل کننده های XDP را در زمانی که بسته شبکه می رسد).
    • درایور برای پشتیبانی از TEE (محیط اجرای قابل اعتماد) که در APU های AMD تعبیه شده است اضافه شده است.
  • خدمات حافظه و سیستم
    • BPF پشتیبانی از عملکردهای جهانی را اضافه کرده است. توسعه به عنوان بخشی از یک ابتکار برای افزودن پشتیبانی برای کتابخانه‌هایی از عملکردهایی که می‌توانند در برنامه‌های BPF گنجانده شوند، انجام می‌شود. گام بعدی پشتیبانی از افزونه‌های پویا است که به توابع جهانی اجازه بارگیری می‌شوند، از جمله جایگزینی توابع جهانی موجود در حین استفاده. زیرسیستم BPF همچنین برای یک نوع عملیات نقشه (که برای ذخیره داده های پایدار استفاده می شود) پشتیبانی می کند که از اجرا در حالت دسته ای پشتیبانی می کند.
    • اضافه شده دستگاه "cpu_cooling" به شما امکان می دهد یک CPU که بیش از حد گرم شده است را با قرار دادن آن در حالت بیکار برای مدت زمان کوتاهی خنک کنید.
    • تماس سیستمی اضافه شد openat2()، که مجموعه ای از پرچم های اضافی را برای محدود کردن وضوح مسیر فایل ارائه می دهد (ممنوعیت عبور از نقاط نصب، پیوندهای نمادین، پیوندهای جادویی (/proc/PID/fd)، اجزای "../").
    • برای سیستم‌های ناهمگن مبتنی بر معماری big.LITTLE، با ترکیب هسته‌های CPU قدرتمند و کم‌بازده در یک تراشه، پارامتر uclamp_min هنگام اجرای وظایف بلادرنگ تنظیم می‌شود.ظهور در هسته 5.3 مکانیزمی برای ایمن کردن بار وجود دارد). این پارامتر تضمین می‌کند که وظیفه توسط زمان‌بند بر روی یک هسته CPU قرار می‌گیرد که عملکرد کافی دارد.
    • هسته آزاد شده است مشکلات سال 2038. جایگزین آخرین کنترل‌کننده‌های باقی‌مانده، که از نوع 32 بیتی (int امضا شده) time_t برای شمارشگر زمان دوره‌ای استفاده می‌کردند، که با در نظر گرفتن گزارش سال 1970، باید در سال 2038 سرریز شود.
    • بهبود مستمر رابط ورودی/خروجی ناهمزمان 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 (انواع ناهمزمان تماس‌های posix_fadvise و madvise)، IORING_OP_SEND،
      IORING_OP_RECV (ارسال و دریافت داده های شبکه)،
      IORING_OP_EPOLL_CTL (عملیات را روی توصیفگرهای فایل epoll انجام دهید).

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

    • از طریق sysfs، دسترسی به خوانش سنسورهای دما که در هارد دیسک های مدرن و SSD استفاده می شود، فراهم می شود.
    • ارسال شده تغییرات قابل توجهی در سیستم صوتی ALSA با هدف حذف کد مشکلات سال 2038 (با اجتناب از استفاده از نوع 32 بیتی time_t در رابط های snd_pcm_mmap_status و snd_pcm_mmap_control). پشتیبانی از کدک های صوتی جدید اضافه شده است
      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 GPM940
      BOE NV140FHM-N49،
      Satoz SAT050AT40H12R2،
      شارپ LS020B1DD01D.

    • اضافه پشتیبانی از بردهای ARM و پلتفرم های Gen1 Amazon Echo (مبتنی بر OMAP3630)، Samsung 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،
      Embedded Artists COM (i.MX7ULP)، SolidRun Clearfog CX/ITX and 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, QuSC9863, Unis پشتیبانی از کنترلر PCIe مورد استفاده در Raspberry Pi 7180 اضافه شده است.

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

منبع: opennet.ru

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