پس از دو ماه توسعه، لینوس توروالدز نسخه 5.17 کرنل لینوکس را ارائه کرد. از جمله قابل توجه ترین تغییرات: یک سیستم مدیریت عملکرد جدید برای پردازنده های AMD، توانایی نقشه برداری بازگشتی شناسه های کاربر در سیستم های فایل، پشتیبانی از برنامه های کامپایل شده قابل حمل BPF، انتقال مولد اعداد شبه تصادفی به الگوریتم BLAKE2s، یک ابزار RTLA. برای تجزیه و تحلیل اجرای بلادرنگ، یک بکاند جدید fscache برای ذخیرهسازی سیستمهای فایل شبکه، قابلیت پیوست کردن نامها به عملیات mmap ناشناس.
نسخه جدید شامل 14203 اصلاحات از 1995 توسعه دهنده است، اندازه پچ 37 مگابایت است (تغییرات روی 11366 فایل تأثیر گذاشت، 506043 خط کد اضافه شد، 250954 خط حذف شد). حدود 44 درصد از کل تغییرات معرفی شده در 5.17 مربوط به درایورهای دستگاه، تقریباً 16 درصد تغییرات مربوط به به روز رسانی کدهای خاص معماری سخت افزار، 15 درصد مربوط به پشته شبکه، 4 درصد مربوط به سیستم های فایل و 4 درصد است. مربوط به زیرسیستم های هسته داخلی هستند.
نوآوری های کلیدی در هسته 5.17:
- زیرسیستم دیسک، I/O و سیستم های فایل
- امکان نگاشت تو در تو از شناسه های کاربر سیستم های فایل نصب شده را که برای مقایسه فایل های یک کاربر خاص روی یک پارتیشن خارجی نصب شده با کاربر دیگری در سیستم فعلی استفاده می شود، پیاده سازی کرد. ویژگی اضافه شده به شما امکان می دهد به صورت بازگشتی از نقشه برداری در بالای سیستم های فایلی که نقشه برداری برای آنها قبلاً اعمال شده است استفاده کنید.
- زیرسیستم fscache که برای سازماندهی کش در سیستم فایل محلی داده های منتقل شده از طریق سیستم فایل شبکه استفاده می شود، به طور کامل بازنویسی شده است. پیاده سازی جدید با ساده سازی قابل توجه کد و جایگزینی عملیات پیچیده برنامه ریزی و ردیابی حالت های شی با مکانیسم های ساده تر متمایز می شود. پشتیبانی از fscache جدید در سیستم فایل CIFS پیاده سازی شده است.
- زیرسیستم ردیابی رویداد در fanotify FS یک نوع رویداد جدید، FAN_RENAME را پیادهسازی میکند، که به شما امکان میدهد فوراً عملیات تغییر نام فایلها یا دایرکتوریها را متوقف کنید (قبلاً از دو رویداد جداگانه FAN_MOVED_FROM و FAN_MOVED_TO برای پردازش تغییر نام استفاده میشد).
- سیستم فایل Btrfs عملیات ثبت و fsync را برای دایرکتوری های بزرگ بهینه سازی کرده است که تنها با کپی کردن کلیدهای فهرست و کاهش میزان فراداده های ثبت شده پیاده سازی شده است. پشتیبانی از نمایه سازی و جستجو بر اساس اندازه رکوردهای فضای آزاد ارائه شده است که تأخیر را تقریباً 30 درصد کاهش داده و زمان جستجو را کاهش داده است. مجاز به وقفه در عملیات یکپارچه سازی. قابلیت افزودن دستگاهها هنگام تعادل بین درایوها غیرفعال است، به عنوان مثال. هنگام نصب فایل سیستم با گزینه skip_balance.
- یک دستور جدید برای نصب سیستم فایل Ceph پیشنهاد شده است که مشکلات موجود مرتبط با اتصال به آدرس های IP را حل می کند. علاوه بر آدرس های IP، اکنون می توانید از شناسه کلاستر (FSID) برای شناسایی سرور استفاده کنید: mount -t ceph [ایمیل محافظت شده]_name=/[subdir] mnt -o mon_addr=monip1[:port][/monip2[:port]]
- سیستم فایل Ext4 به یک API نصب جدید منتقل شده است که مراحل تجزیه گزینه های mount و پیکربندی superblock را از هم جدا می کند. ما پشتیبانی از گزینههای نصب lazytime و nolazytime را که به عنوان یک تغییر موقت برای تسهیل انتقال util-linux به استفاده از پرچم MS_LAZYTIME اضافه شدهاند، کنار گذاشتهایم. اضافه شدن پشتیبانی برای تنظیم و خواندن برچسب ها در FS (ioctl FS_IOC_GETFSLABEL و FS_IOC_SETFSLABEL).
- NFSv4 برای کار در سیستم های فایل حساس به حروف کوچک و بزرگ در نام فایل ها و دایرکتوری ها پشتیبانی می کند. NFSv4.1+ پشتیبانی برای تعریف جلسات انبوه (ترانک) اضافه می کند.
- خدمات حافظه و سیستم
- درایور amd-pstate برای ارائه کنترل فرکانس پویا برای عملکرد بهینه اضافه شده است. این درایور از پردازندهها و APUهای AMD از نسل Zen 2 پشتیبانی میکند که به طور مشترک با Valve توسعه یافته و با هدف بهبود کارایی مدیریت انرژی است. برای تغییرات فرکانس تطبیقی، از مکانیسم CPPC (کنترل عملکرد پردازشگر مشارکتی) استفاده می شود که به شما امکان می دهد شاخص ها را با دقت بیشتری تغییر دهید (به سه سطح عملکرد محدود نمی شود) و نسبت به حالت P مبتنی بر ACPI که قبلا استفاده شده بود، سریعتر به تغییرات حالت پاسخ دهید. درایورها (CPUFreq).
- زیرسیستم eBPF یک هندلر ()bpf_loop را ارائه میدهد که روشی جایگزین برای سازماندهی حلقهها در برنامههای eBPF، سریعتر و آسانتر برای تأیید توسط یک تأییدکننده ارائه میکند.
- در سطح هسته، مکانیزم CO-RE (Compile Once - Run Everywhere) پیاده سازی شده است که به شما امکان می دهد کد برنامه های eBPF را تنها یک بار کامپایل کنید و از یک بارگذار جهانی ویژه استفاده کنید که برنامه بارگذاری شده را با هسته فعلی و انواع BTF تطبیق می دهد. (فرمت نوع BPF).
- امکان اختصاص نام به مناطقی از حافظه ناشناس خصوصی (تخصیص یافته از طریق malloc) وجود دارد که می تواند اشکال زدایی و بهینه سازی مصرف حافظه در برنامه ها را ساده کند. نام ها از طریق prctl با پرچم PR_SET_VMA_ANON_NAME اختصاص داده می شوند و در /proc/pid/maps و /proc/pid/smaps به شکل "[anon: ]".
- زمانبند وظیفه ردیابی و نمایش در /proc/PID/sched زمان صرف شده توسط فرآیندها در حالت بیکار اجباری را فراهم می کند، به عنوان مثال برای کاهش بار زمانی که پردازنده بیش از حد گرم می شود استفاده می شود.
- اضافه شدن ماژول gpio-sim، طراحی شده برای شبیه سازی تراشه های GPIO برای آزمایش.
- یک دستور فرعی "latency" به دستور "perf ftrace" اضافه کرد تا هیستوگرام هایی با اطلاعات تاخیر تولید کند.
- مجموعه ای از ابزارهای "RTLA" برای تجزیه و تحلیل کار در زمان واقعی اضافه شده است. این شامل ابزارهایی مانند osnoise (تأثیر سیستم عامل بر اجرای یک کار را تعیین می کند) و timerlat (تغییرهای مربوط به تایمر را تغییر می دهد).
- سری دوم وصلهها با اجرای مفهوم برگههای صفحه، که شبیه صفحات ترکیبی هستند، ادغام شدهاند، اما معناشناسی و سازماندهی واضحتری از کار را بهبود میبخشند. استفاده از tomes به شما امکان می دهد تا مدیریت حافظه را در برخی از زیرسیستم های هسته افزایش دهید. وصله های پیشنهادی تبدیل صفحه کش به استفاده از توم ها را تکمیل کردند و پشتیبانی اولیه برای توم ها را در سیستم فایل XFS اضافه کردند.
- حالت ساخت «make mod2noconfig» اضافه شد که پیکربندی ایجاد میکند که تمام زیرسیستمهای غیرفعال را در قالب ماژولهای هسته جمعآوری میکند.
- الزامات نسخه LLVM/Clang که می تواند برای ساخت هسته استفاده شود مطرح شده است. ساخت اکنون حداقل به انتشار LLVM 11 نیاز دارد.
- مجازی سازی و امنیت
- یک پیادهسازی بهروز از مولد اعداد شبه تصادفی RDRAND، که مسئول عملکرد دستگاههای /dev/random و /dev/urandom است، پیشنهاد شده است، که به دلیل انتقال به استفاده از تابع هش BLAKE2s به جای SHA1 برای عملیات اختلاط آنتروپی قابل توجه است. این تغییر با حذف الگوریتم مشکل ساز SHA1 و حذف رونویسی بردار اولیه سازی RNG، امنیت مولد اعداد شبه تصادفی را بهبود بخشید. از آنجایی که الگوریتم BLAKE2s در عملکرد نسبت به SHA1 برتری دارد، استفاده از آن نیز تأثیر مثبتی بر عملکرد داشت.
- حفاظت اضافه شده در برابر آسیب پذیری در پردازنده ها ناشی از اجرای گمانه زنی دستورالعمل ها پس از عملیات پرش بدون قید و شرط به جلو. مشکل به دلیل پردازش پیشگیرانه دستورالعمل ها بلافاصله پس از دستورالعمل شاخه در حافظه (SLS، Straight Line Speculation) رخ می دهد. فعال کردن حفاظت نیازمند ساخت با نسخه آزمایشی فعلی GCC 12 است.
- مکانیزمی برای ردیابی شمارش مراجع (بازشماری، شمارش مرجع) با هدف کاهش تعداد خطاهای شمارش مرجع که منجر به دسترسی به حافظه پس از آزاد شدن آن می شود، اضافه کرد. این مکانیسم در حال حاضر محدود به زیرسیستم شبکه است، اما در آینده می توان آن را با سایر بخش های هسته تطبیق داد.
- بررسیهای گستردهای از ورودیهای جدید در جدول صفحه حافظه فرآیند پیادهسازی شدهاند که امکان شناسایی انواع خاصی از آسیبها و توقف سیستم را فراهم میکند و حملات را در مراحل اولیه مسدود میکند.
- قابلیت باز کردن بستهبندی ماژولهای هسته بهطور مستقیم توسط خود هسته، و نه توسط یک کنترلکننده در فضای کاربر، اضافه شده است، که اجازه میدهد از ماژول LoadPin LSM استفاده کنید تا اطمینان حاصل شود که ماژولهای هسته از یک دستگاه ذخیرهسازی تأیید شده در حافظه بارگذاری میشوند.
- مونتاژی با پرچم "-Wcast-function-type" ارائه می شود که هشدارهایی را در مورد فرستادن نشانگرهای عملکرد به یک نوع ناسازگار می دهد.
- درایور میزبان مجازی pvUSB برای هایپروایزر Xen اضافه شده است که دسترسی به دستگاه های USB ارسال شده به سیستم های مهمان را فراهم می کند (به سیستم های مهمان اجازه می دهد به دستگاه های USB فیزیکی اختصاص داده شده به سیستم مهمان دسترسی داشته باشند).
- ماژولی اضافه شده است که به شما امکان می دهد از طریق Wi-Fi با زیرسیستم IME (Intel Management Engine) تعامل داشته باشید که در اکثر مادربردهای مدرن با پردازنده های اینتل وجود دارد و به عنوان یک ریزپردازنده جداگانه که مستقل از CPU عمل می کند، پیاده سازی می شود.
- برای معماری ARM64، از ابزار اشکال زدایی KCSAN (Kernel Concurrency Sanitizer) پشتیبانی شده است، که برای شناسایی پویا شرایط مسابقه در هسته طراحی شده است.
- برای سیستم های ARM 32 بیتی، قابلیت استفاده از مکانیزم KFENCE برای تشخیص خطا در هنگام کار با حافظه اضافه شده است.
- هایپروایزر KVM از دستورالعمل های AMX (Advanced Matrix Extensions) پشتیبانی می کند که در پردازنده های سرور مقیاس پذیر Intel Xeon آینده اجرا می شود.
- زیر سیستم شبکه
- اضافه شدن پشتیبانی برای تخلیه عملیات مربوط به مدیریت ترافیک در کنار دستگاه های شبکه.
- قابلیت استفاده از MCTP (مدیریت پروتکل حمل و نقل اجزا) روی دستگاه های سریال اضافه شده است. MCTP می تواند برای برقراری ارتباط بین کنترل کننده های مدیریت و دستگاه های مرتبط با آنها (پردازنده های میزبان، تجهیزات جانبی و غیره) استفاده شود.
- پشته TCP بهینه شده است، به عنوان مثال، برای بهبود عملکرد تماس های recvmsg، انتشار تاخیری بافرهای سوکت پیاده سازی شده است.
- در سطح مرجع CAP_NET_RAW، تنظیم حالتهای SO_PRIORITY و SO_MARK از طریق تابع setsockopt مجاز است.
- برای IPv4، سوکت های خام مجاز هستند با استفاده از گزینه های IP_FREEBIND و IP_TRANSPARENT به آدرس های IP غیر محلی متصل شوند.
- sysctl arp_missed_max را برای پیکربندی تعداد آستانه خرابی ها در حین بررسی مانیتور ARP اضافه کرد و پس از آن رابط شبکه در حالت غیرفعال قرار گرفت.
- امکان پیکربندی مقادیر جداگانه sysctl min_pmtu و mtu_expires را برای فضاهای نام شبکه فراهم می کند.
- قابلیت تنظیم و تعیین اندازه بافرها برای بسته های ورودی و خروجی به ethtool API اضافه شده است.
- Netfilter پشتیبانی از فیلتر کردن ترافیک pppoe ترانزیت در یک پل شبکه را اضافه کرده است.
- ماژول ksmbd که یک سرور فایل را با استفاده از پروتکل SMB3 پیاده سازی می کند، پشتیبانی از تبادل کلید، پورت شبکه 445 را برای smbdirect فعال کرده و از پارامتر "smb2 max credit" پشتیبانی می کند.
- Оборудование
- پشتیبانی از صفحه نمایش برای نمایش اطلاعات محرمانه به زیرسیستم drm (مدیر رندر مستقیم) و درایور i915 اضافه شده است، به عنوان مثال، برخی از لپ تاپ ها مجهز به صفحه نمایش با حالت مشاهده محرمانه داخلی هستند که مشاهده از بیرون را دشوار می کند. . تغییرات اضافه شده به شما این امکان را می دهد که درایورهای تخصصی را برای چنین صفحه هایی متصل کنید و با تنظیم ویژگی ها در درایورهای KMS معمولی، حالت های مرور محرمانه را کنترل کنید.
- درایور amdgpu شامل پشتیبانی از فناوری اشکال زدایی STB (Smart Trace Buffer) برای همه پردازنده های گرافیکی AMD است که از آن پشتیبانی می کنند. STB تجزیه و تحلیل خرابی ها و شناسایی منبع مشکلات را با ذخیره کردن اطلاعات مربوط به عملکردهای انجام شده قبل از آخرین شکست در یک بافر خاص آسان می کند.
- درایور i915 پشتیبانی از تراشه های Intel Raptor Lake S را اضافه می کند و به طور پیش فرض پشتیبانی از زیرسیستم گرافیکی تراشه های Intel Alder Lake P را فعال می کند. امکان کنترل نور پس زمینه صفحه از طریق رابط VESA DPCD وجود دارد.
- پشتیبانی از شتاب پیمایش سخت افزاری در کنسول در درایورهای fbcon/fbdev برگردانده شده است.
- ادامه ادغام تغییرات برای پشتیبانی از تراشه های Apple M1. قابلیت استفاده از درایور simpledrm را در سیستمهایی با تراشه Apple M1 برای خروجی از طریق فریمبافر ارائهشده توسط سفتافزار پیادهسازی کرد.
- اضافه شدن پشتیبانی از ARM SoС، دستگاهها و بردهای Snapdragon 7c، 845 و 888 (Sony Xperia XZ2 / XZ2C / XZ3، Xperia 1 III / 5 III، Samsung J5، Microsoft Surface Duo 2)، Mediatek MT6589 (Fairphone FP1 (MT8183) Acer Chromebook 314)، Mediatek MT7986a/b (مورد استفاده در روترهای Wi-Fi)، Broadcom BCM4908 (Netgear RAXE500)، Qualcomm SDX65، Samsung Exynos7885، Renesas R-Car S4-8، TI J721s2، TI J.320s8، TI SPEXXAr , Aspeed AST8/AST2500, Engicam i.Core STM2600MP32, Allwinner Tanix TX1, Facebook Bletchley BMC, Goramo MultiLink, JOZ Access Point, Y Soft IOTA Crux/Crux+, t6/t6000 MacBook Pro 6001/14.
- پشتیبانی از پردازنده های ARM Cortex-M55 و Cortex-M33 اضافه شده است.
- پشتیبانی اضافه شده برای دستگاه های مبتنی بر CPU MIPS: Linksys WRT320N v1، Netgear R6300 v1، Netgear WN2500RP v1/v2.
- اضافه شدن پشتیبانی از StarFive JH7100 SoC بر اساس معماری RISC-V.
- درایور lenovo-yogabook-wmi برای کنترل نور پس زمینه صفحه کلید و دسترسی به سنسورهای مختلف در Lenovo Yoga Book اضافه شده است.
- درایور asus_wmi_sensors برای دسترسی به سنسورهای مورد استفاده در مادربردهای ایسوس X370، X470، B450، B550 و X399 مبتنی بر پردازندههای AMD Ryzen اضافه شد.
- درایور تبلتهای x86-android برای رایانههای لوحی مبتنی بر x86 که با پلتفرم Android ارسال میشوند اضافه شد.
- اضافه شدن پشتیبانی از صفحه نمایش لمسی TrekStor SurfTab duo W1 و قلم الکترونیکی برای تبلت های Chuwi Hi10 Plus و Pro.
- درایورهای SoC Tegra 20/30 پشتیبانی از مدیریت برق و ولتاژ را اضافه کرده اند. بوت شدن را در دستگاههای قدیمیتر Tegra SoC 32 بیتی مانند ASUS Prime TF201، Pad TF701T، Pad TF300T، Infinity TF700T، EeePad TF101 و Pad TF300TG فعال میکند.
- درایورهای کامپیوترهای صنعتی زیمنس اضافه شد.
- پشتیبانی اضافه شده برای Sony Tulip Truly NT35521، Vivax TPC-9150، Innolux G070Y2-T02، BOE BF060Y8M-AJ0، JDI R63452، Novatek NT35950، Wanchanglong W552946 TOPC-043015 و پنل Team.
- اضافه شدن پشتیبانی از سیستمهای صوتی و کدکهای AMD Renoir ACP، Asahi Kasei Microdevices AKM4375، سیستمهای اینتل با استفاده از NAU8825/MAX98390، Mediatek MT8915، nVidia Tegra20 S/PDIF، Qualcomm ALC5682I-VS.VS320x3x194 مشکلات Tegra35 HD-audio حل شده است. پشتیبانی HDA برای کدک های CS41LXNUMX اضافه شده است. پشتیبانی بهبود یافته از سیستم های صوتی لپ تاپ های لنوو و اچ پی و همچنین مادربردهای گیگابایت.
منبع: opennet.ru