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

پس از دو ماه توسعه، لینوس توروالدز نسخه 5.19 هسته لینوکس را ارائه کرد. از جمله قابل توجه ترین تغییرات: پشتیبانی از معماری پردازنده LoongArch، ادغام وصله های "BIG TCP"، حالت درخواستی در fscache، حذف کد برای پشتیبانی از فرمت a.out، امکان استفاده از ZSTD برای فشرده سازی سیستم عامل، یک رابط برای مدیریت حذف حافظه از فضای کاربر، افزایش قابلیت اطمینان و عملکرد مولد اعداد شبه تصادفی، پشتیبانی از Intel IFS (In-Field Scan)، AMD SEV-SNP (Secure Nested Paging)، Intel TDX (Trusted Domain Extensions) و ARM پسوندهای SME (افزودن ماتریس مقیاس پذیر).

در این اعلامیه، لینوس گفت که به احتمال زیاد نسخه بعدی هسته شماره 6.0 خواهد بود، زیرا شعبه 5.x به اندازه کافی انتشار را برای تغییر شماره اول در شماره نسخه جمع آوری کرده است. تغییر شماره گذاری به دلایل زیبایی شناسی انجام می شود و یک مرحله رسمی است که به دلیل انباشت تعداد زیادی از مسائل در مجموعه، ناراحتی را از بین می برد.

لینوس همچنین اشاره کرد که برای ایجاد نسخه از یک لپ‌تاپ اپل مبتنی بر معماری ARM64 (Apple Silicon) با محیط لینوکس مبتنی بر توزیع لینوکس Asahi استفاده کرده است. این ایستگاه کاری اصلی لینوس نیست، اما او از این پلتفرم برای آزمایش مناسب بودن آن برای کار هسته و اطمینان از اینکه می‌تواند در حین سفر با یک لپ‌تاپ سبک وزن، نسخه‌های هسته تولید کند، استفاده کرد. پیش از این، سال‌ها پیش، لینوس تجربه استفاده از تجهیزات اپل را برای توسعه داشت - او زمانی از رایانه شخصی مبتنی بر CPU ppc970 و لپ‌تاپ Macbook Air استفاده می‌کرد.

نسخه جدید شامل 16401 اصلاحات از 2190 توسعه دهنده (در آخرین نسخه 16206 اصلاح از 2127 توسعه دهنده وجود داشت) ، اندازه پچ 90 مگابایت است (تغییرات روی 13847 فایل تأثیر گذاشت ، 1149456 خط کد اضافه شد ، 349177 خط حذف شد). حدود 39٪ از کل تغییرات معرفی شده در 5.19 مربوط به درایورهای دستگاه، تقریباً 21٪ تغییرات مربوط به به روز رسانی کدهای خاص معماری سخت افزار، 11٪ مربوط به پشته شبکه، 4٪ مربوط به سیستم های فایل و 3٪ است. مربوط به زیرسیستم های هسته داخلی هستند.

نوآوری های کلیدی در هسته 5.19:

  • زیرسیستم دیسک، I/O و سیستم های فایل
    • سیستم فایل EROFS (Enhanced Read-Only File System) که برای استفاده در پارتیشن های فقط خواندنی در نظر گرفته شده است، به استفاده از زیرسیستم fscache تبدیل شده است که ذخیره داده را فراهم می کند. این تغییر به طور قابل توجهی عملکرد سیستم هایی را که در آن تعداد زیادی کانتینر از یک تصویر مبتنی بر EROFS راه اندازی می شوند، بهبود بخشید.
    • یک حالت خواندن درخواستی به زیرسیستم fscache اضافه شده است که برای بهینه سازی EROFS استفاده می شود. حالت جدید به شما این امکان را می دهد که ذخیره کش خواندن را از تصاویر FS واقع در سیستم محلی سازماندهی کنید. بر خلاف حالت اولیه عملیات موجود، که بر روی ذخیره سازی در سیستم فایل محلی داده های منتقل شده از طریق سیستم های فایل شبکه متمرکز است، حالت "در صورت تقاضا" عملکردهای بازیابی داده ها و نوشتن آن ها در حافظه پنهان را به یک مکان جداگانه واگذار می کند. فرآیند پس‌زمینه در حال اجرا در فضای کاربر
    • XFS توانایی ذخیره میلیاردها ویژگی توسعه یافته را در i-node فراهم می کند. حداکثر تعداد وسعت ها برای یک فایل از 4 میلیارد به 247 افزایش یافته است. حالتی برای به روز رسانی اتمی چندین ویژگی فایل توسعه یافته به طور همزمان اجرا شده است.
    • سیستم فایل Btrfs کار با قفل ها را بهینه کرده است، که باعث افزایش تقریباً 7 درصدی عملکرد هنگام نوشتن مستقیم در حالت nowait می شود. عملکرد عملیات در حالت NOCOW (بدون کپی در نوشتن) تقریباً 3٪ افزایش یافته است. بار کش صفحه هنگام اجرای دستور "ارسال" کاهش یافته است. حداقل اندازه صفحات فرعی از 64K به 4K کاهش یافته است (صفحات فرعی کوچکتر از صفحات هسته را می توان استفاده کرد). یک انتقال از استفاده از درخت ریشه به الگوریتم XArrays انجام شده است.
    • حالتی به سرور NFS اضافه شده است تا حفظ حالت قفل تنظیم شده توسط کلاینت که پاسخ به درخواست ها را متوقف کرده است را گسترش دهد. حالت جدید به شما این امکان را می دهد که پاک کردن قفل را تا یک روز به تاخیر بیندازید مگر اینکه مشتری دیگری یک قفل رقیب را درخواست کند. در حالت عادی، 90 ثانیه پس از توقف پاسخ مشتری، مسدودسازی پاک می‌شود.
    • زیرسیستم ردیابی رویداد در fanotify FS پرچم FAN_MARK_EVICTABLE را پیاده‌سازی می‌کند، که با آن می‌توانید پین کردن i-nodeهای هدف را در حافظه پنهان غیرفعال کنید، برای مثال، برای نادیده گرفتن شاخه‌های فرعی بدون پین کردن قطعات آن‌ها در حافظه پنهان.
    • درایور سیستم فایل FAT32 پشتیبانی برای به دست آوردن اطلاعات مربوط به زمان ایجاد فایل از طریق فراخوانی سیستم statx با اجرای یک نسخه کارآمدتر و کاربردی‌تر از stat() اضافه کرده است که اطلاعات گسترده‌تری را درباره فایل برمی‌گرداند.
    • بهینه‌سازی‌های قابل‌توجهی برای درایور exFAT انجام شده است تا به جای پاک‌سازی متوالی بخش به بخش، امکان پاکسازی همزمان گروهی از بخش‌ها زمانی که حالت "dirsync" فعال است، فراهم شود. با کاهش تعداد درخواست های بلوک پس از بهینه سازی، عملکرد ایجاد تعداد زیادی دایرکتوری بر روی کارت SD بسته به اندازه خوشه بیش از 73-85٪ افزایش یافت.
    • هسته شامل اولین به روز رسانی اصلاحی درایور ntfs3 است. از آنجایی که ntfs3 در اکتبر گذشته در هسته 5.15 گنجانده شد، درایور آپدیت نشد و ارتباط با توسعه دهندگان قطع شد، اما توسعه دهندگان اکنون انتشار تغییرات را از سر گرفته اند. وصله های پیشنهادی خطاهای منجر به نشت حافظه و خرابی را حذف کردند، مشکلات مربوط به اجرای xfstests را برطرف کردند، کدهای استفاده نشده را پاک کردند و اشتباهات املایی را برطرف کردند.
    • برای OverlayFS، قابلیت نقشه‌برداری شناسه‌های کاربر از سیستم‌های فایل نصب شده، پیاده‌سازی شده است که برای تطبیق فایل‌های یک کاربر خاص روی یک پارتیشن خارجی نصب‌شده با کاربر دیگری در سیستم فعلی استفاده می‌شود.
  • خدمات حافظه و سیستم
    • پشتیبانی اولیه برای معماری مجموعه دستورات LoongArch مورد استفاده در پردازنده های Loongson 3 5000 اضافه شد که RISC ISA جدید را شبیه به MIPS و RISC-V پیاده سازی می کند. معماری LoongArch در سه رنگ موجود است: 32 بیتی (LA32R)، 32 بیتی معمولی (LA32S) و 64 بیتی (LA64).
    • کد برای پشتیبانی از فرمت فایل اجرایی a.out که در نسخه 5.1 منسوخ شده بود حذف شد. فرمت a.out مدت‌هاست که در سیستم‌های لینوکس منسوخ شده است و تولید فایل‌های a.out توسط ابزارهای مدرن در تنظیمات پیش‌فرض لینوکس پشتیبانی نمی‌شود. لودر فایل های a.out را می توان به طور کامل در فضای کاربر پیاده سازی کرد.
    • پشتیبانی از گزینه های بوت مخصوص x86 متوقف شده است: nosp، nosmap، nosmep، noexec و noclflush).
    • پشتیبانی از معماری قدیمی CPU h8300 (Renesas H8/300) که مدت‌ها بدون پشتیبانی مانده بود، متوقف شده است.
    • قابلیت های گسترده مربوط به پاسخ به تشخیص قفل های تقسیم شده ("قفل های تقسیم شده") که هنگام دسترسی به داده های غیر تراز در حافظه رخ می دهد، زیرا هنگام اجرای یک دستورالعمل اتمی، داده ها از دو خط کش CPU عبور می کنند. چنین انسدادی منجر به کاهش قابل توجه عملکرد می شود. اگر قبلاً به‌طور پیش‌فرض، هسته اخطاری با اطلاعاتی درباره فرآیندی که باعث مسدود شدن شده است صادر می‌کرد، اکنون روند مشکل‌ساز برای حفظ عملکرد بقیه سیستم، کندتر می‌شود.
    • اضافه شدن پشتیبانی از مکانیزم IFS (In-Field Scan) پیاده سازی شده در پردازنده های اینتل، که به شما امکان می دهد تست های تشخیصی CPU سطح پایین را اجرا کنید که می تواند مشکلاتی را که توسط ابزارهای استاندارد بر اساس کدهای تصحیح خطا (ECC) یا بیت های برابری شناسایی نمی شوند، شناسایی کند. . تست‌های انجام‌شده به شکل سیستم‌افزار قابل دانلود هستند که مشابه به‌روزرسانی‌های میکروکد طراحی شده‌اند. نتایج آزمون از طریق sysfs در دسترس است.
    • قابلیت جاسازی یک فایل بوت کانفیگ در هسته را اضافه کرد که علاوه بر گزینه های خط فرمان، امکان تعیین پارامترهای هسته را از طریق یک فایل تنظیمات فراهم می کند. جاسازی با استفاده از گزینه اسمبلی «CONFIG_BOOT_CONFIG_EMBED_FILE=»/PATH/TO/BOOTCONFIG/FILE» انجام می‌شود. قبلاً بوت کانفیگ با پیوست کردن به تصویر initrd تعیین می شد. ادغام در هسته اجازه می دهد تا از bootconfig در تنظیمات بدون initrd استفاده شود.
    • امکان دانلود فریمور فشرده با استفاده از الگوریتم Zstandard پیاده سازی شده است. مجموعه‌ای از فایل‌های کنترل /sys/class/firmware/* به sysfs اضافه شده است که به شما امکان می‌دهد بارگیری سیستم‌افزار را از فضای کاربر شروع کنید.
    • رابط ورودی/خروجی ناهمزمان io_uring یک پرچم جدید به نام IORING_RECVSEND_POLL_FIRST ارائه می دهد، که در صورت تنظیم، ابتدا یک عملیات شبکه را ارسال می کند تا با استفاده از نظرسنجی پردازش شود، که می تواند منابع را در شرایطی که پردازش عملیات با کمی تاخیر قابل قبول است، ذخیره کند. io_uring همچنین پشتیبانی از فراخوانی سیستم سوکت() را اضافه کرد، پرچم‌های جدیدی را برای ساده‌سازی مدیریت توصیف‌گر فایل‌ها پیشنهاد کرد، حالت «multi-shot» را برای پذیرش چندین اتصال به طور همزمان در فراخوانی accept() اضافه کرد، و عملیات‌هایی را برای ارسال NVMe اضافه کرد. به طور مستقیم به دستگاه دستور می دهد.
    • معماری Xtensa از ابزار اشکال زدایی KCSAN (Kernel Concurrency Sanitizer) پشتیبانی می کند، که برای تشخیص پویا شرایط مسابقه در هسته طراحی شده است. همچنین پشتیبانی از حالت خواب و پردازنده های کمکی اضافه شده است.
    • برای معماری m68k (Motorola 68000) یک ماشین مجازی (شبیه ساز پلتفرم) مبتنی بر شبیه ساز اندروید گلدفیش پیاده سازی شده است.
    • برای معماری AArch64، پشتیبانی از پسوندهای Armv9-A SME (افزودن ماتریس مقیاس پذیر) اجرا شده است.
    • زیرسیستم eBPF امکان ذخیره نشانگرهای تایپ شده در ساختارهای نقشه را فراهم می کند و همچنین پشتیبانی از نشانگرهای پویا را اضافه می کند.
    • یک مکانیسم جدید بازیابی حافظه فعال پیشنهاد شده است که از کنترل فضای کاربر با استفاده از فایل memory.reclaim پشتیبانی می کند. با نوشتن یک عدد در فایل مشخص شده، سعی می شود تعداد مربوط به بایت ها از مجموعه مرتبط با cgroup حذف شود.
    • بهبود دقت استفاده از حافظه هنگام فشرده سازی داده ها در پارتیشن swap با استفاده از مکانیزم zswap.
    • برای معماری RISC-V، پشتیبانی از اجرای فایل های اجرایی 32 بیتی در سیستم های 64 بیتی ارائه می شود، حالتی برای اتصال ویژگی های محدود کننده به صفحات حافظه (به عنوان مثال، غیرفعال کردن کش) اضافه می شود و تابع kexec_file_load() پیاده سازی می شود. .
    • اجرای پشتیبانی از سیستم‌های Armv32T و Armv4 5 بیتی برای استفاده در هسته‌های چند پلتفرمی جهانی مناسب برای سیستم‌های مختلف ARM سازگار شده است.
  • مجازی سازی و امنیت
    • زیرسیستم EFI توانایی انتقال محرمانه اطلاعات محرمانه به سیستم های مهمان را بدون افشای آن به سیستم میزبان پیاده سازی می کند. داده ها از طریق دایرکتوری security/coco در securityfs ارائه می شوند.
    • حالت حفاظتی Lockdown، که دسترسی کاربر ریشه به هسته را محدود می‌کند و مسیرهای دور زدن راه‌انداز امن UEFI را مسدود می‌کند، حفره‌ای را که امکان دور زدن حفاظت را با دستکاری اشکال‌زدای هسته فراهم می‌کرد، حذف کرده است.
    • شامل وصله هایی با هدف بهبود قابلیت اطمینان و عملکرد مولد اعداد شبه تصادفی است.
    • هنگام ساخت با استفاده از Clang 15، پشتیبانی از مکانیسم تصادفی سازی ساختارهای هسته اجرا می شود.
    • مکانیسم Landlock که به شما امکان می دهد تعامل گروهی از فرآیندها را با محیط خارجی محدود کنید، از قوانینی پشتیبانی می کند که به شما امکان می دهد اجرای عملیات تغییر نام فایل را کنترل کنید.
    • زیرسیستم IMA (معماری اندازه گیری یکپارچگی) که برای تایید یکپارچگی اجزای سیستم عامل با استفاده از امضای دیجیتال و هش طراحی شده است، به استفاده از ماژول fs-verity برای تأیید فایل تغییر یافته است.
    • منطق اقدامات هنگام غیرفعال کردن دسترسی غیرمجاز به زیرسیستم eBPF تغییر کرده است - قبلاً همه دستورات مرتبط با فراخوانی سیستم bpf() غیرفعال شده بودند و از نسخه 5.19، دسترسی به دستوراتی که منجر به ایجاد اشیاء نمی شوند باقی مانده است. . این رفتار برای بارگیری یک برنامه BPF به یک فرآیند ممتاز نیاز دارد، اما پس از آن فرآیندهای غیرمجاز می توانند با برنامه تعامل داشته باشند.
    • پشتیبانی از افزونه AMD SEV-SNP (Secure Nested Paging) که کار ایمن را با جداول صفحه حافظه تودرتو فراهم می کند و در برابر حملات "undeSErVed" و "SEVerity" به پردازنده های AMD EPYC که امکان دور زدن AMD SEV (مجازی سازی رمزگذاری شده امن) را فراهم می کند، محافظت می کند. ) مکانیسم حفاظتی
    • اضافه شدن پشتیبانی از مکانیزم Intel TDX (Trusted Domain Extensions) که به شما امکان می دهد تلاش های شخص ثالث برای دسترسی به حافظه رمزگذاری شده ماشین های مجازی را مسدود کنید.
    • درایور virtio-blk که برای شبیه‌سازی دستگاه‌های بلوک استفاده می‌شود، پشتیبانی از I/O را با استفاده از نظرسنجی اضافه کرده است که طبق آزمایش‌ها، تاخیر را تا حدود 10% کاهش داده است.
  • زیر سیستم شبکه
    • این بسته شامل یک سری وصله‌های BIG TCP است که به شما امکان می‌دهد حداکثر اندازه بسته یک بسته TCP را به 4 گیگابایت افزایش دهید تا عملکرد شبکه‌های مرکز داده داخلی پرسرعت را بهینه کنید. افزایش مشابهی در اندازه بسته با اندازه فیلد هدر 16 بیتی از طریق پیاده سازی بسته های "جمبو" حاصل می شود که اندازه هدر IP آن 0 است و اندازه واقعی در یک 32 بیت جداگانه منتقل می شود. فیلد در یک هدر پیوست جداگانه. در تست عملکرد، تنظیم اندازه بسته بر روی 185 کیلوبایت باعث افزایش 50 درصدی توان عملیاتی و کاهش قابل توجه تاخیر انتقال داده شد.
    • کار بر روی ادغام ابزارها در پشته شبکه برای ردیابی دلایل حذف بسته ها (کدهای دلیل) ادامه یافت. کد دلیل زمانی ارسال می‌شود که حافظه مرتبط با بسته آزاد می‌شود و موقعیت‌هایی مانند حذف بسته به دلیل خطاهای هدر، تشخیص جعل rp_filter، جمع‌بندی نامعتبر، خارج شدن از حافظه، راه‌اندازی قوانین IPSec XFRM، شماره دنباله نامعتبر TCP و غیره را می‌دهد.
    • پشتیبانی از اتصالات MPTCP (MultiPath TCP) برای استفاده از TCP معمولی، در شرایطی که برخی از ویژگی‌های MPTCP قابل استفاده نیستند، اضافه شده است. MPTCP توسعه پروتکل TCP برای سازماندهی عملیات اتصال TCP با تحویل بسته ها به طور همزمان در طول چندین مسیر از طریق رابط های شبکه مختلف مرتبط با آدرس های IP مختلف است. API اضافه شده برای کنترل جریان های MPTCP از فضای کاربر.
  • Оборудование
    • بیش از 420 هزار خط کد مربوط به درایور amdgpu اضافه شده است که از این تعداد حدود 400 هزار خط، فایل‌های هدر خودکار تولید شده برای داده‌های ثبت ASIC در درایور GPU AMD هستند و 22.5 هزار خط دیگر، اجرای اولیه پشتیبانی از AMD SoC21 را ارائه می‌کنند. مجموع اندازه درایور برای پردازنده‌های گرافیکی AMD بیش از 4 میلیون خط کد است. علاوه بر SoC21، درایور AMD شامل پشتیبانی از SMU 13.x (واحد مدیریت سیستم)، پشتیبانی به روز شده از USB-C و GPUVM، و برای پشتیبانی از نسل های بعدی RDNA3 (RX 7000) و CDNA (AMD Instinct) آماده شده است. بستر، زمینه.
    • درایور i915 (اینتل) قابلیت های مربوط به مدیریت انرژی را گسترش داده است. شناسه‌های اضافه شده برای پردازنده‌های گرافیکی Intel DG2 (Arc Alchemist) مورد استفاده در لپ‌تاپ‌ها، پشتیبانی اولیه از پلتفرم Intel Raptor Lake-P (RPL-P)، اطلاعات اضافه شده در مورد کارت‌های گرافیک Arctic Sound-M)، پیاده‌سازی ABI برای موتورهای محاسباتی، اضافه شده برای کارت‌های DG2 از قالب Tile4 پشتیبانی می‌کنند؛ برای سیستم‌های مبتنی بر ریزمعماری Haswell، پشتیبانی از DisplayPort HDR اجرا می‌شود.
    • درایور Nouveau به استفاده از کنترلر drm_gem_plane_helper_prepare_fb تغییر داده است؛ تخصیص حافظه استاتیک برای برخی ساختارها و متغیرها اعمال شده است. در مورد استفاده از ماژول های هسته منبع باز توسط NVIDIA در Nouveau، کار تا کنون به شناسایی و حذف خطاها می رسد. در آینده، سیستم عامل منتشر شده قرار است برای بهبود عملکرد درایور استفاده شود.
    • یک درایور برای کنترلر NVMe مورد استفاده در رایانه های اپل بر اساس تراشه M1 اضافه شده است.

در همان زمان، بنیاد نرم‌افزار آزاد آمریکای لاتین نسخه‌ای از هسته کاملاً رایگان 5.19 - Linux-libre 5.19-gnu را تشکیل داد که از عناصر سفت‌افزار و درایورهای حاوی اجزا یا بخش‌هایی از کد غیرآزاد پاک شده بود، که محدوده آن عبارت است از توسط سازنده محدود شده است. نسخه جدید درایورهای pureLiFi X/XL/XC و TI AMx3 Wkup-M3 IPC را پاکسازی می‌کند. کد تمیز کردن حباب به روز شده در Silicon Labs WFX، AMD amdgpu، بارگذار تصویر جانبی کوالکام WCNSS، بلوتوث Realtek، Mellanox Spectrum، Marvell WiFi-Ex، اینتل AVS، IFS، درایورها و زیرسیستم های pu3-imgu. پردازش فایل های Devicetree Qualcomm AArch64 پیاده سازی شده است. پشتیبانی از طرح نام‌گذاری اجزای میان‌افزار باز Sound Open اضافه شد. تمیز کردن درایور ATM Ambassador که از هسته حذف شد متوقف شد. مدیریت تمیز کردن لکه ها در HDCP و Mellanox Core به تگ های kconfig مجزا منتقل شده است.

منبع: opennet.ru

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