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

پس از دو ماه توسعه، لینوس توروالدز معرفی شده انتشار هسته لینوکس 5.3. از جمله قابل توجه ترین تغییرات: پشتیبانی از پردازنده های گرافیکی AMD Navi، پردازنده های Zhaoxi و فناوری مدیریت انرژی اینتل Speed ​​Selection، امکان استفاده از دستورالعمل های umwait برای انتظار بدون استفاده از چرخه،
حالت 'utilization clamping' که تعامل را برای CPU های نامتقارن افزایش می دهد، تماس سیستم pidfd_open، توانایی استفاده از آدرس های IPv4 از زیرشبکه 0.0.0.0/8، امکان شتاب سخت افزاری nftables، پشتیبانی HDR در زیرسیستم DRM، یکپارچه سازی ACRN هایپروایزر

В اعلامیه نسخه جدید، لینوس قانون اصلی توسعه هسته را به همه توسعه دهندگان یادآوری کرد - حفظ رفتار یکسان برای اجزای فضای کاربر. تغییرات در هسته به هیچ وجه نباید برنامه های در حال اجرا را از بین ببرد یا منجر به رگرسیون در سطح کاربر شود. در این مورد، نقض رفتار می تواند نه تنها باعث تغییر در ABI، حذف کدهای قدیمی یا ظاهر شدن خطاها شود، بلکه باعث تأثیر غیرمستقیم بهبودهای مفیدی می شود که به درستی کار می کنند. به عنوان یک مثال گویا وجود داشت دور انداخته شد مفید بهینه سازی در کد Ext4، که با غیرفعال کردن پیش‌خوانی جدول inode برای درخواست‌های کوچک ورودی/خروجی، تعداد دسترسی‌های درایو را کاهش می‌دهد.

بهینه سازی منجر به این واقعیت شد که به دلیل کاهش فعالیت دیسک، آنتروپی برای مولد اعداد تصادفی getrandom() کندتر شروع به انباشته شدن کرد و در برخی تنظیمات، تحت شرایط خاص، انجمادها در حین بارگذاری مشاهده می شد تا زمانی که استخر آنتروپی کامل شود. پر شده است. از آنجایی که بهینه‌سازی واقعاً مفید است، بحثی در میان توسعه‌دهندگان مطرح شد که در آن پیشنهاد شد با غیرفعال کردن حالت مسدود کردن پیش‌فرض فراخوانی getrandom() و افزودن یک پرچم اختیاری برای انتظار آنتروپی، مشکل را برطرف کنند، اما چنین تغییری بر روی کیفیت اعداد تصادفی در مرحله اولیه بارگذاری

نسخه جدید شامل 15794 اصلاحات از 1974 توسعه دهنده است.
اندازه پچ - 92 مگابایت (تغییرات روی 13986 فایل تأثیر گذاشت، 258419 خط کد اضافه شد،
599137 ردیف حذف شد). حدود 39٪ از همه ارائه شده در 5.3
تغییرات مربوط به درایورهای دستگاه است که تقریباً 12 درصد از تغییرات مربوط می شود
نگرش نسبت به به روز رسانی کدهای خاص معماری های سخت افزاری، 11%
مربوط به پشته شبکه، 3٪ به سیستم فایل و 3٪ به داخلی
زیر سیستم های هسته

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

  • خدمات حافظه و سیستم
    • توسعه مداوم عملکرد "pidfd" برای کمک به مدیریت موقعیت‌های استفاده مجدد از PID (pidfd با یک فرآیند خاص مرتبط است و تغییر نمی‌کند، در حالی که یک PID می‌تواند پس از پایان فرآیند فعلی مرتبط با آن PID با فرآیند دیگری مرتبط شود). قبلا به هسته اضافه شده بود
      فراخوانی سیستم pidfd_send_signal() و پرچم CLONE_PIDFD در فراخوانی clone() برای به دست آوردن یک pidfd برای استفاده در idfd_send_signal(). استفاده از clone() با پرچم CLONE_PIDFD می تواند مشکلاتی را برای مدیران سرویس یا سیستم خاتمه نیروی خارج از حافظه پلت فرم اندروید ایجاد کند. در این مورد، برای شروع از فراخوانی به fork() یا clone() بدون CLONE_PIDFD استفاده می شود.

      Kernel 5.3 فراخوانی سیستم را معرفی کرد pidfd_open()، که به شما امکان می دهد یک pidfd قابل بررسی برای یک فرآیند موجود دلخواه دریافت کنید که با فراخوانی clone() با پرچم CLONE_PIDFD ایجاد نشده است. همچنین پشتیبانی از نظرسنجی pidfd با استفاده از poll() و epoll() اضافه شده است، که به مدیران فرآیند اجازه می دهد تا پایان فرآیندهای دلخواه را بدون ترس از شرایط مسابقه، در صورتی که یک PID به یک فرآیند جدید اختصاص داده شود، ردیابی کنند. مکانیسم اطلاع رسانی در مورد خاتمه یافتن یک فرآیند مرتبط با pidfd مانند اطلاع رسانی به پایان یافتن فرآیند فرزند آن است.

    • پشتیبانی از مکانیسم سنجاق بار به زمانبندی کار اضافه شده است (بستن بهره برداری)، به شما این امکان را می دهد که بسته به وظایف فعال در CPU به حداقل یا حداکثر محدوده فرکانس پایبند باشید. مکانیسم ارائه شده با اجرای این وظایف حداقل در انتهای پایین فرکانس "درخواستی"، کارهایی را که مستقیماً بر کیفیت تجربه کاربر تأثیر می گذارد سرعت می بخشد. کارهای با اولویت پایین که بر کار کاربر تأثیر نمی گذارد با استفاده از حد بالایی فرکانس "مجاز" راه اندازی می شوند. محدودیت ها از طریق ویژگی های sched_uclamp_util_min و sched_uclamp_util_max در فراخوانی سیستم ()sched_setattr تنظیم می شوند.
    • پشتیبانی از فناوری مدیریت انرژی اضافه شده است اینتل سرعت را انتخاب کنید، در سرورهای منتخب با پردازنده های Intel Xeon موجود است. این فناوری به شما اجازه می‌دهد تا تنظیمات عملکرد و توان پارتیشن را برای هسته‌های مختلف CPU تنظیم کنید، که به شما امکان می‌دهد عملکرد را برای کارهای انجام شده روی هسته‌های خاص اولویت‌بندی کنید و عملکرد هسته‌های دیگر را قربانی کنید.
    • فرآیندها در فضای کاربر ارائه شده است امکان انتظار برای مدت کوتاهی بدون استفاده از حلقه ها با استفاده از دستورالعمل umwait. این دستورالعمل، همراه با دستورالعمل‌های umonitor و tpause، در تراشه‌های آینده اینتل "Tremont" ارائه می‌شود و اجازه اجرای تاخیرهایی را می‌دهد که انرژی کارآمد هستند و عملکرد رشته‌های دیگر را در هنگام استفاده از Hyper Threading تحت تاثیر قرار نمی‌دهند.
    • برای معماری RISC-V، پشتیبانی از صفحات حافظه بزرگ اضافه شده است.
    • مکانیسم ردیابی kprobes توانایی عدم ارجاع اشاره گرهای هسته را به فضای کاربر اضافه کرده است که می تواند به عنوان مثال برای ارزیابی محتویات ساختارهای ارسال شده به فراخوانی های سیستم استفاده شود. قابلیت نصب چک در مرحله بوت نیز اضافه شده است.
    • گزینه PREEMPT_RT به فایل پیکربندی برای عملیات بلادرنگ اضافه شد. خود کد برای پشتیبانی از حالت بلادرنگ هنوز به هسته اضافه نشده است، اما ظاهر این گزینه نشانه خوبی از حماسه طولانی مدت است. ادغام وصله های Realtime-Preempt در حال تکمیل شدن هستند.
    • فراخوانی سیستم ()clone3 را با اجرای یک نسخه توسعه‌پذیرتر از رابط ()clone اضافه کرد که امکان تعیین تعداد بیشتری از پرچم‌ها را فراهم می‌کند.
    • اضافه شده bpf_send_signal() کنترل کننده، اجازه می دهد تا برنامه های BPF برای ارسال سیگنال به فرآیندهای دلخواه.
    • برای رویدادهای perf در محیط هایپروایزر KVM، یک مکانیسم فیلتر رویداد جدید اضافه شده است که به مدیر اجازه می‌دهد تا انواع رویدادهایی را که برای نظارت در سمت سیستم مهمان مجاز یا غیر مجاز هستند، تعیین کند.
    • توانایی پردازش برنامه‌ها با حلقه‌ها به مکانیزم تأیید برنامه eBPF اضافه شده است، در صورتی که اجرای حلقه محدود باشد و نتواند منجر به تجاوز از محدودیت حداکثر تعداد دستورالعمل‌ها شود.
  • زیرسیستم دیسک، I/O و سیستم های فایل
    • سیستم فایل XFS اکنون از بای پس inode چند رشته ای (به عنوان مثال، هنگام بررسی سهمیه ها) پشتیبانی می کند. ioctls جدید BULKSTAT و INUMBERS اضافه شده‌اند که دسترسی به ویژگی‌هایی را که در ویرایش پنجم فرمت FS ظاهر شده‌اند، مانند زمان تولد inode و امکان تنظیم پارامترهای BULKSTAT و INUMBERS برای هر گروه AG (گروه‌های تخصیص) فراهم می‌کنند.
    • در Ext4 پشتیبانی اضافه شد حفره ها در دایرکتوری ها (بلوک های بدون پیوند).
      پردازش ارائه شده است پرچم "i" (غیرقابل تغییر) برای فایل های باز (نوشتن در شرایطی ممنوع است اگر پرچم در زمانی تنظیم شده باشد که فایل قبلاً باز بوده است).

    • Btrfs تعریفی از پیاده سازی سریع crc32c در تمام معماری ها ارائه می دهد.
    • در CIFS، کد پشتیبانی smbdirect به عنوان توسعه آزمایشی حذف شده است. SMB3 قابلیت استفاده از الگوریتم های رمزنگاری را در حالت GCM اضافه کرد. یک گزینه mount جدید برای استخراج پارامترهای حالت از ورودی های ACE (Access Control Entry) اضافه شده است. عملکرد فراخوانی open() را بهینه کرد.
    • گزینه ای به F2FS اضافه شد تا جمع آوری زباله را هنگام اجرا در حالت چکپوینت=غیرفعال محدود کند. اضافه شده ioctl برای حذف محدوده بلوک از F2FS، اجازه می دهد تا در پرواز تنظیم اندازه پارتیشن. قابلیت قرار دادن فایل swap در F2FS برای ارائه I/O مستقیم اضافه شده است. اضافه شدن پشتیبانی برای پین کردن یک فایل و تخصیص بلوک برای فایل های مشابه برای همه کاربران.
    • اضافه شدن پشتیبانی از عملیات ناهمزمان sendmsg() و recvmsg() به رابط برای ورودی/خروجی ناهمزمان io_uring.
    • پشتیبانی از فشرده سازی با استفاده از الگوریتم zstd و توانایی تأیید تصاویر امضا شده FS به سیستم فایل UBIFS اضافه شده است.
    • Ceph FS اکنون از برچسب های امنیتی SELinux برای فایل ها پشتیبانی می کند.
    • برای NFSv4، یک گزینه mount جدید "nconnect=" پیاده سازی شده است که تعداد اتصالات برقرار شده با سرور را تعیین می کند. ترافیک بین این اتصالات با استفاده از تعادل بار توزیع خواهد شد. علاوه بر این، سرور NFSv4 اکنون یک دایرکتوری /proc/fs/nfsd/client با اطلاعاتی در مورد کلاینت‌های فعلی، از جمله اطلاعات مربوط به فایل‌هایی که باز کرده‌اند، ایجاد می‌کند.
  • مجازی سازی و امنیت
    • هسته شامل یک هایپروایزر برای دستگاه های تعبیه شده است ACRN، که با توجه به آمادگی برای کارهای بلادرنگ و مناسب بودن برای استفاده در سیستم های حیاتی نوشته شده است. ACRN حداقل سربار را فراهم می کند، تأخیر کم و پاسخگویی کافی را هنگام تعامل با تجهیزات تضمین می کند. از مجازی سازی منابع CPU، I/O، زیر سیستم شبکه، عملیات گرافیکی و صدا پشتیبانی می کند. ACRN را می توان برای اجرای چندین ماشین مجازی ایزوله در واحدهای کنترل الکترونیکی، داشبورد، سیستم های اطلاعات خودرو، دستگاه های اینترنت اشیا مصرف کننده و سایر فناوری های تعبیه شده استفاده کرد.
    • در حالت کاربر لینوکس اضافه حالت سفر در زمان، که به شما امکان می دهد سرعت زمان را در یک محیط UML مجازی کاهش یا افزایش دهید تا اشکال زدایی کدهای مربوط به زمان را آسان تر کنید. علاوه بر این، یک پارامتر اضافه شده است
      time-travel-start، که به ساعت سیستم اجازه می دهد از یک لحظه مشخص در قالب دوره ای شروع شود.

    • گزینه های جدید خط فرمان هسته "init_on_alloc" و "init_on_free" اضافه شده اند، در صورت مشخص شدن، صفر کردن مناطق حافظه اختصاص داده شده و آزاد شده فعال می شود (پر کردن با صفر برای malloc و free)، که امکان افزایش امنیت را به دلیل مقداردهی اولیه اضافی فراهم می کند. در بالای سر؛
    • درایور جدید اضافه شد virtio-iommu با پیاده‌سازی یک دستگاه مجازی‌سازی‌شده که به شما امکان می‌دهد درخواست‌های IOMMU مانند ATTACH، DETACH، MAP و UNMAP را از طریق انتقال virtio بدون شبیه‌سازی جداول صفحه حافظه ارسال کنید.
    • درایور جدید اضافه شد virtio-pmem، نشان دهنده دسترسی به دستگاه های ذخیره سازی نگاشت شده به فضای آدرس فیزیکی، مانند NVDIMM.
    • قابلیت اتصال کلیدهای رمزنگاری به فضای نام کاربری یا شبکه (کلیدها در خارج از فضای نام انتخابی غیرقابل دسترسی می شوند) و همچنین محافظت از کلیدها با استفاده از ACLها را پیاده سازی کرد.
    • به زیرسیستم کریپتو اضافه پشتیبانی از یک الگوریتم هش غیر رمزنگاری بسیار سریع xxhash، که سرعت آن به عملکرد حافظه بستگی دارد.
  • زیر سیستم شبکه
    • پردازش آدرس‌های IPv4 در محدوده 0.0.0.0/8 فعال شد، که قبلاً برای استفاده در دسترس نبود. معرفی این زیر شبکه اجازه خواهد داد توزیع 16 میلیون آدرس IPv4 دیگر؛
    • در Netfilter برای nftables اضافه پشتیبانی از مکانیسم های شتاب سخت افزاری برای فیلتر کردن بسته ها از طریق استفاده از درایورهای اضافه شده Flow Block API. جداول کامل قوانین با تمام زنجیره ها را می توان در کنار آداپتورهای شبکه قرار داد. فعال کردن با اتصال پرچم NFT_TABLE_F_HW به جدول انجام می شود. پشتیبانی از ابرداده های ساده پروتکل لایه 3 و لایه 4، پذیرش/رد اقدامات، نگاشت توسط IP و پورت های شبکه فرستنده/گیرنده و نوع پروتکل.
    • اضافه پشتیبانی از ردیابی اتصال داخلی برای پل های شبکه، که نیازی به استفاده از لایه شبیه ساز br_netfilter ندارد.
    • در nf_tables اضافه پشتیبانی از ماژول SYNPROXY، که عملکردهای مشابه iptables را تکرار می‌کند، و توانایی بررسی قوانین برای گزینه‌های فردی در هدر IPv4 نیز پیاده‌سازی شده است.
    • قابلیت پیوست کردن برنامه های BPF به فراخوانی های سیستمی ()setsockopt و getsockopt() را اضافه کرد که به عنوان مثال به شما امکان می دهد کنترل کننده های دسترسی خود را به این تماس ها متصل کنید. علاوه بر این، یک نقطه تماس جدید (قلاب) اضافه شده است که با آن می توانید یک تماس با برنامه BPF برای هر بازه RTT (دوباره رفت و برگشت، زمان پینگ) سازماندهی کنید.
    • برای IPv4 و IPv6 اضافه مکانیزم جدید ذخیره سازی داده مسیریابی nexthop با هدف افزایش مقیاس پذیری جداول مسیریابی. آزمایشات نشان داد که هنگام استفاده از سیستم جدید، مجموعه ای از 743 هزار مسیر تنها در 4.3 ثانیه در هسته بارگذاری شد.
    • برای بلوتوث اجرا شد عملکرد مورد نیاز برای پشتیبانی از پینگ LE.
  • Оборудование
    • اضافه پشتیبانی از پردازنده های سازگار با x86 این شرکت ژائوکسین، در نتیجه یک پروژه مشترک بین VIA Technologies و شهرداری شانگهای توسعه یافته است. خانواده CPU ZX بر اساس معماری x86-64 Isaiah ساخته شده است و به توسعه فناوری ادامه می دهد. VIA Centaur;
    • زیرسیستم DRM (مدیر رندر مستقیم) و همچنین درایورهای گرافیکی amdgpu و i915، پشتیبانی از تجزیه، پردازش و ارسال ابرداده HDR (محدوده دینامیکی بالا) را از طریق پورت HDMI اضافه کرده است که امکان استفاده از پنل‌ها و صفحه‌نمایش‌های HDR را فراهم می‌کند. نمایش محدوده های روشنایی اضافی؛
    • درایور amdgpu پشتیبانی اولیه از AMD NAVI GPU (RX5700) را اضافه کرده است که شامل درایور پایه، کد تعامل صفحه (DCN2)، GFX و پشتیبانی محاسباتی (GFX10) است.
      SDMA 5 (سیستم DMA0)، مدیریت انرژی و رمزگذار/رمزگشاهای چند رسانه ای (VCN2). amdgpu همچنین پشتیبانی از کارت‌های مبتنی بر پردازنده‌های گرافیکی Vega12 و Vega20 را بهبود می‌بخشد که قابلیت‌های مدیریت حافظه و انرژی اضافی برای آن‌ها اضافه شده است.

    • پشتیبانی از کارت‌های مبتنی بر پردازنده‌های گرافیکی VegaM به درایور amdkfd (برای پردازنده‌های گرافیکی مجزا مانند Fiji، Tonga، Polaris) اضافه شده است.
    • در درایور DRM برای کارت های ویدئویی اینتل برای تراشه های Icelake اجرا شد حالت تصحیح گامای چند بخش جدید. قابلیت خروجی از طریق DisplayPort در فرمت YCbCr4:2:0 اضافه شده است. سیستم عامل جدید اضافه شد GuC برای SKL، BXT، KBL، GLK و ICL. قابلیت خاموش کردن برق صفحه نمایش در حالت ناهمزمان پیاده سازی شده است. اضافه پشتیبانی از ذخیره و بازیابی زمینه رندر برای تراشه های Ironlake (gen5) و gen4 (Broadwater - Cantiga)، که به شما امکان می دهد وضعیت GPU را از فضای کاربر هنگام انتقال از یک عملیات دسته ای به عملیات دیگر بازیابی کنید.
    • درایور Nouveau شناسایی چیپست NVIDIA Turing TU116 را فراهم می کند.
    • قابلیت‌های درایور DRM/KMS برای شتاب‌دهنده‌های صفحه ARM Komeda (Mali D71) گسترش یافته است، پشتیبانی از مقیاس‌بندی، لایه‌های تقسیم/ادغام، چرخش، نوشتن معوق، AFBC، SMMU و فرمت‌های کدگذاری رنگی Y0L2، P010، YUV420_8/10BIT دارد. اضافه شد؛
    • درایور MSM پشتیبانی از سری A540 GPU Adreno مورد استفاده در پردازنده های Qualcomm و همچنین پشتیبانی از کنترلر MSM8998 DSI برای Snapdragon 835 را اضافه می کند.
    • درایورهای اضافه شده برای پنل های LCD Samsung S6E63M0، Armadeus ST0700، EDT ETM0430G0DH6، OSD101T2045-53TS،
      Evervision VGG804821، FriendlyELEC HD702E، KOE tx14d24vm1bpa، TFC S9700RTWV43TR-01B، EDT ET035012DM6 و VXT VL050-8048NT-C01؛

    • اضافه درایور برای فعال کردن ابزارهای شتاب رمزگشایی
      ویدیوهای موجود در Amlogic Meson SoC.

    • در درایور v3d (برای پردازنده گرافیکی Broadcom Video Core V مورد استفاده در Raspberry Pi) ظاهر شد. پشتیبانی ارسال شیدرهای محاسباتی.
    • اضافه درایور صفحه کلید SPI و ترک پد مورد استفاده در مدل های مدرن لپ تاپ های مک بوک و مک بوک پرو اپل؛
    • اضافه حفاظت اضافی برای تماس‌های ioctl مرتبط با درایور فلاپی، و خود درایور به‌عنوان حفظ نشده علامت‌گذاری شده است.
      ("یتیم")، که به معنای خاتمه آزمایش آن است. درایور هنوز در هسته ذخیره می شود، اما عملکرد صحیح آن تضمین نشده است. درایور قدیمی در نظر گرفته می شود، زیرا یافتن تجهیزات کار برای آزمایش آن دشوار است - همه درایوهای خارجی فعلی، به طور معمول، از رابط USB استفاده می کنند.

    • اضافه درایور cpufreq برای بردهای Raspberry Pi، که به شما امکان می دهد تغییرات فرکانس پردازنده را به صورت پویا کنترل کنید.
    • اضافه شدن پشتیبانی از ARM SoC جدید Mediatek mt8183 (4x Cortex-A73 + 4x Cortex-A53)، TI J721E (2x Cortex-A72 + 3x Cortex-R5F + 3 DSP + MMA) و Amlogic G12B (4x Cortex-A73x-- A2)، و همچنین تابلوهای:
      • Purism Librem5,
      • Aspeed BMC،
      • Microsoft Olympus BMC،
      • Kontron SMARC،
      • Novtech Meerkat96 (i.MX7)،
      • ST Micro Avenger96،
      • Google Cheza (Qualcomm SDM845)،
      • Qualcomm Dragonboard 845c (Qualcomm SDM845)،
      • جعبه تلویزیون Hugsun X99 (Rockchip RK3399)،
      • Khadas Edge/Edge-V/Captain (راک چیپ RK3399)،
      • HiHope RZ/G2M،
      • NXP LS1021A-TSN.

در همان زمان، بنیاد نرم افزار آزاد آمریکای لاتین شکل گرفت
گزینه هسته کاملا رایگان 5.3 - Linux-libre 5.3-gnuپاک شده از عناصر سفت‌افزار و درایور حاوی اجزای غیر رایگان یا بخش‌های کد، که دامنه آن توسط سازنده محدود شده است. در نسخه جدید، بارگذاری blob در درایورهای qcom، hdcp drm، allegro-dvt و meson-vdec غیرفعال است.
کد تمیز کردن حباب به روز شده در درایورها و زیرسیستم های amdgpu، i915، netx، r8169، brcmfmac، rtl8188eu، adreno، si2157، pvrusb2، touchscreen_dmi، درایور صدا برای skylake و همچنین در مستندات میکروکد.

منبع: opennet.ru

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