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

پس از دو ماه توسعه، لینوس توروالدز نسخه 5.11 کرنل لینوکس را ارائه کرد. از جمله قابل توجه ترین تغییرات: پشتیبانی از Intel SGX enclaves، مکانیزم جدید برای رهگیری تماس های سیستمی، یک گذرگاه کمکی مجازی، ممنوعیت مونتاژ ماژول ها بدون MODULE_LICENSE()، یک حالت فیلتر سریع برای تماس های سیستمی در seccomp، خاتمه پشتیبانی برای معماری ia64، انتقال فناوری وایمکس به شاخه «استیجینگ»، امکان کپسوله کردن SCTP در UDP.

نسخه جدید شامل 15480 اصلاحات از 1991 توسعه دهنده است، اندازه پچ 72 مگابایت است (تغییرات روی 12090 فایل تأثیر گذاشت، 868025 خط کد اضافه شد، 261456 خط حذف شد). حدود 46 درصد از کل تغییرات معرفی شده در 5.11 مربوط به درایورهای دستگاه، تقریبا 16 درصد تغییرات مربوط به به روز رسانی کدهای خاص معماری سخت افزار، 13 درصد مربوط به پشته شبکه، 3 درصد مربوط به سیستم های فایل و 4 درصد است. مربوط به زیرسیستم های هسته داخلی هستند.

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

  • زیرسیستم دیسک، I/O و سیستم های فایل
    • چندین گزینه نصب به Btrfs برای استفاده در هنگام بازیابی اطلاعات از یک سیستم فایل آسیب دیده اضافه شده است: "rescue=ignorebadroots" برای نصب، علیرغم آسیب به برخی از درختان ریشه (وسعت، uuid، انتقال داده، دستگاه، csum، فضای آزاد)، " rescue=ignoredatacsums" برای غیرفعال کردن بررسی چک جمع برای داده ها و "rescue=all" برای فعال کردن همزمان حالت های 'ignorebadroots'، 'ignoredatacsums' و 'nologreplay'. گزینه mount "inode_cache" که قبلا منسوخ شده بود، متوقف شده است. این کد برای اجرای پشتیبانی از بلوک‌هایی با ابرداده و داده‌های کوچکتر از اندازه صفحه (PAGE_SIZE) و همچنین پشتیبانی از حالت تخصیص فضای منطقه‌بندی شده آماده شده است. درخواست‌های بافر نشده (IO مستقیم) به زیرساخت iomap منتقل شده‌اند. عملکرد تعدادی از عملیات بهینه شده است؛ در برخی موارد، شتاب می تواند به ده ها درصد برسد.
    • XFS پرچم "needsrepair" را پیاده سازی می کند که نیاز به تعمیر را نشان می دهد. وقتی این پرچم تنظیم می شود، تا زمانی که پرچم توسط ابزار xfs_repair تنظیم مجدد نشود، سیستم فایل قابل نصب نیست.
    • Ext4 فقط رفع اشکال و بهینه سازی و همچنین پاکسازی کد را ارائه می دهد.
    • صادرات مجدد سیستم های فایل نصب شده بر روی NFS مجاز است (یعنی یک پارتیشن نصب شده از طریق NFS اکنون می تواند از طریق NFS صادر شود و به عنوان یک کش میانی استفاده شود).
    • فراخوانی سیستم ()close_range، که به یک فرآیند اجازه می‌دهد تا طیف وسیعی از توصیف‌گرهای فایل باز را به‌طور هم‌زمان ببندد، یک گزینه CLOSE_RANGE_CLOEXEC را برای بستن توصیف‌گرها در حالت بسته روی اجرا اضافه کرده است.
    • سیستم فایل F2FS فراخوانی های جدید ioctl() را اضافه می کند تا امکان کنترل فضای کاربر بر روی فایل هایی که به صورت فشرده ذخیره می شوند را فراهم کند. گزینه mount "compress_mode=" اضافه شد تا انتخاب کنید که کنترل کننده فشرده سازی را در سمت هسته یا در فضای کاربر قرار دهید.
    • امکان نصب Overlayfs توسط فرآیندهای غیرمجاز با استفاده از فضای نام کاربری جداگانه را فراهم می کند. برای تأیید انطباق با اجرای مدل امنیتی، یک ممیزی کامل کد انجام شد. Overlayfs همچنین قابلیت اجرا با استفاده از کپی تصاویر سیستم فایل را با غیرفعال کردن اختیاری بررسی UUID اضافه می کند.
    • سیستم فایل Ceph پشتیبانی از پروتکل msgr2.1 را اضافه کرده است که امکان استفاده از الگوریتم AES-GCM را هنگام انتقال داده ها به صورت رمزگذاری شده فراهم می کند.
    • ماژول dm-multipath توانایی در نظر گرفتن وابستگی CPU ("IOffinity") را هنگام انتخاب مسیر برای درخواست‌های I/O پیاده‌سازی می‌کند.
  • خدمات حافظه و سیستم
    • یک مکانیسم رهگیری تماس سیستمی جدید اضافه شده است، بر اساس prctl()، که به شما امکان می دهد در هنگام دسترسی به یک تماس سیستمی خاص، استثناهایی را از فضای کاربر ایجاد کنید و اجرای آن را شبیه سازی کنید. این قابلیت در Wine و Proton برای شبیه‌سازی تماس‌های سیستمی ویندوز مورد نیاز است، که برای اطمینان از سازگاری با بازی‌ها و برنامه‌هایی که مستقیماً تماس‌های سیستمی را با دور زدن API ویندوز انجام می‌دهند (مثلاً برای محافظت در برابر استفاده غیرمجاز) ضروری است.
    • فراخوانی سیستم ()userfaultfd که برای رسیدگی به خطاهای صفحه (دسترسی به صفحات حافظه تخصیص نشده) در فضای کاربر طراحی شده است، اکنون این توانایی را دارد که مدیریت استثنا را که در سطح هسته رخ می دهد غیرفعال کند تا سوء استفاده از آسیب پذیری های خاص را دشوارتر کند.
    • زیرسیستم BPF پشتیبانی از ذخیره‌سازی محلی وظیفه را اضافه کرده است که اتصال داده‌ها را به یک کنترل‌کننده خاص BPF فراهم می‌کند.
    • حسابداری مصرف حافظه توسط برنامه های BPF کاملاً بازطراحی شده است - یک کنترلر cgroup به جای محدودیت memlock برای مدیریت استفاده از حافظه در اشیاء BPF پیشنهاد شده است.
    • مکانیسم BTF (BPF Type Format) که اطلاعات بررسی نوع را در شبه کد BPF فراهم می کند، از ماژول های هسته پشتیبانی می کند.
    • پشتیبانی برای فراخوانی های سیستم shutdown()، renameat2() و unlinkat() به رابط ورودی/خروجی ناهمزمان io_uring. هنگام فراخوانی io_uring_enter()، قابلیت تعیین یک بازه زمانی اضافه شده است (شما می توانید پشتیبانی از آرگومان را برای تعیین زمان با استفاده از پرچم IORING_FEAT_EXT_ARG بررسی کنید).
    • معماری ia64 مورد استفاده در پردازنده‌های Itanium اینتل به دسته یتیم منتقل شده است، که به معنای توقف آزمایش است. Hewlett Packard Enterprise پذیرش سفارشات تجهیزات جدید Itanium را متوقف کرد و اینتل سال گذشته این کار را انجام داد.
    • پشتیبانی از سیستم‌های مبتنی بر معماری MicroBlaze که شامل واحد مدیریت حافظه (MMU) نمی‌شوند، متوقف شده است. چنین سیستم هایی برای مدت طولانی در زندگی روزمره دیده نمی شد.
    • برای معماری MIPS، پشتیبانی از تست پوشش کد با استفاده از ابزار gcov اضافه شده است.
    • اضافه شدن پشتیبانی از گذرگاه کمکی مجازی برای ارتباط با دستگاه‌های چند منظوره که عملکردهایی را که به درایورهای مختلف نیاز دارند (مثلاً کارت‌های شبکه با پشتیبانی از اترنت و RDMA) ترکیب می‌کنند. در مواقعی که استفاده از زیرسیستم MFD (دستگاه های چند منظوره) مشکل ساز است، می توان از گذرگاه برای اختصاص یک درایور اولیه و ثانویه به یک دستگاه استفاده کرد.
    • برای معماری RISC-V، پشتیبانی از سیستم تخصیص حافظه CMA (Contiguous Memory Allocator) اضافه شده است که برای تخصیص مناطق بزرگ حافظه پیوسته با استفاده از تکنیک های حرکت صفحه حافظه بهینه شده است. برای RISC-V، ابزارهایی نیز برای محدود کردن دسترسی به /dev/mem و در نظر گرفتن زمان پردازش وقفه پیاده‌سازی شده‌اند.
    • برای سیستم‌های ARM 32 بیتی، پشتیبانی از ابزار اشکال‌زدایی KASan (عفونی کننده آدرس هسته) اضافه شده است که به شناسایی خطاها هنگام کار با حافظه کمک می‌کند. برای ARM 64 بیتی، پیاده سازی KASan به استفاده از تگ های MTE (MemTag) تبدیل شده است.
    • تماس سیستمی ()epoll_pwait2 اضافه شد تا زمان‌بندی با دقت نانوثانیه امکان‌پذیر باشد (تماس epoll_wait میلی‌ثانیه‌ها را دستکاری می‌کند).
    • سیستم ساخت اکنون هنگام تلاش برای ساخت ماژول‌های هسته قابل بارگیری که در آن مجوز کد با استفاده از ماکرو MODULE_LICENSE () تعریف نشده است، خطا نشان می‌دهد. از این پس استفاده از ماکرو EXPORT_SYMBOL() برای توابع استاتیک نیز باعث ایجاد خطای ساخت می شود.
    • اضافه شدن پشتیبانی برای نگاشت اشیاء GEM از حافظه مورد استفاده برای I/O، که سرعت کار با فریم بافر را در برخی از معماری ها ممکن می سازد.
    • Kconfig پشتیبانی از Qt4 را قطع کرده است (در حالی که پشتیبانی از Qt5، GTK و Ncurses را حفظ می کند).
  • مجازی سازی و امنیت
    • پشتیبانی از حالت پاسخ سریع به فراخوانی سیستم ()seccomp اضافه شده است، که به شما اجازه می دهد تا خیلی سریع تعیین کنید که آیا یک فراخوان سیستمی خاص بر اساس بیت مپ با عمل ثابت پیوست شده به فرآیند، که نیازی به اجرا ندارد، مجاز یا ممنوع است یا خیر. یک کنترل کننده BPF
    • اجزای هسته یکپارچه برای ایجاد و مدیریت محصورها بر اساس فناوری Intel SGX (Software Guard Extensions) که به برنامه‌های کاربردی اجازه می‌دهد تا کد را در مناطق رمزگذاری‌شده ایزوله از حافظه اجرا کنند، که بقیه سیستم دسترسی محدودی به آن دارد.
    • به عنوان بخشی از یک ابتکار برای محدود کردن دسترسی از فضای کاربر به MSR (ثبت خاص مدل)، نوشتن به رجیستر MSR_IA32_ENERGY_PERF_BIAS، که به شما امکان می دهد حالت بهره وری انرژی پردازنده را تغییر دهید ("عادی"، "عملکرد"، "ذخیره انرژی") ، ممنوع است.
    • توانایی غیرفعال کردن مهاجرت وظایف با اولویت بالا بین CPU ها از شاخه kernel-rt برای سیستم های بلادرنگ منتقل شده است.
    • برای سیستم های ARM64، قابلیت استفاده از تگ های MTE (MemTag، Memory Tagging Extension) برای آدرس های حافظه کنترل کننده سیگنال اضافه شده است. استفاده از MTE با مشخص کردن گزینه SA_EXPOSE_TAGBITS در sigaction() فعال می شود و به شما امکان می دهد استفاده صحیح از نشانگرها را برای جلوگیری از بهره برداری از آسیب پذیری های ناشی از دسترسی به بلوک های حافظه آزاد شده، سرریزهای بافر، دسترسی های قبل از مقداردهی اولیه و استفاده در خارج از آن بررسی کنید. زمینه فعلی
    • پارامتر "DM_VERITY_VERIFY_ROOTHASH_SIG_SECONDARY_KEYRING" اضافه شد که به سیستم فرعی dm-verity اجازه می‌دهد تا امضای هش گواهی‌های قرار داده شده در کلید ثانویه را بررسی کند. در عمل، راه‌اندازی به شما امکان می‌دهد نه تنها گواهی‌های ساخته شده در هسته، بلکه گواهی‌های بارگیری شده در طول عملیات را نیز تأیید کنید، که این امکان را می‌دهد تا گواهی‌ها را بدون به‌روزرسانی کل هسته به‌روزرسانی کنید.
    • لینوکس حالت کاربر پشتیبانی از حالت تعلیق به حالت بیکار را اضافه کرده است که به شما امکان می دهد محیط را منجمد کنید و از سیگنال SIGUSR1 برای بیدار شدن از حالت خواب استفاده کنید.
    • مکانیسم virtio-mem که به شما امکان می‌دهد حافظه را به ماشین‌های مجازی متصل کنید و آن را جدا کنید، از حالت بلوک بزرگ (BBM) پشتیبانی می‌کند که امکان انتقال یا گرفتن حافظه در بلوک‌های بزرگتر از اندازه حافظه هسته را فراهم می‌کند. بلوک، که برای بهینه سازی VFIO در QEMU ضروری است.
    • پشتیبانی از رمز CHACHA20-POLY1305 به اجرای هسته TLS اضافه شده است.
  • زیر سیستم شبکه
    • برای 802.1Q (VLAN)، مکانیزم مدیریت خرابی اتصال (CFM، Connectivity Fault Management) پیاده سازی شده است که به شما امکان می دهد خرابی ها را در شبکه های دارای پل مجازی (Virtual Bridged Networks) شناسایی، تأیید و جداسازی کنید. به عنوان مثال، CFM می تواند برای جداسازی مشکلات در شبکه هایی که چندین سازمان مستقل را در بر می گیرند، استفاده شود که کارکنان آنها فقط به تجهیزات خود دسترسی دارند.
    • پشتیبانی اضافه شده برای کپسوله کردن بسته‌های پروتکل SCTP در بسته‌های UDP (RFC 6951)، که به شما امکان می‌دهد از SCTP در شبکه‌هایی با مترجم‌های آدرس قدیمی‌تر که مستقیماً SCTP را پشتیبانی نمی‌کنند، استفاده کنید و همچنین SCTP را در سیستم‌هایی که دسترسی مستقیم به IP ارائه نمی‌دهند، پیاده‌سازی کنید. لایه.
    • پیاده سازی فناوری وایمکس به مرحله مرحله بندی منتقل شده است و در صورت عدم وجود کاربرانی که به وایمکس نیاز دارند در آینده حذف خواهد شد. وایمکس دیگر در شبکه های عمومی استفاده نمی شود و در هسته تنها درایوری که می توان وایمکس را با آن استفاده کرد، درایور قدیمی Intel 2400m است. پشتیبانی وایمکس در پیکربندی شبکه NetworkManager در سال 2015 متوقف شد. در حال حاضر، WiMax تقریباً به طور کامل با فناوری هایی مانند LTE، HSPA+ و Wi-Fi 802.11n جایگزین شده است.
    • کار برای بهینه سازی عملکرد پردازش ترافیک TCP ورودی در حالت صفر کپی انجام شده است. بدون کپی اضافی در بافرهای جدید. برای ترافیک با اندازه متوسط، پوشش ده ها یا چند صد کیلوبایت داده، استفاده از zerocopy به جای recvmsg() به طور قابل توجهی موثرتر است. به عنوان مثال، تغییرات پیاده‌سازی شده باعث شد تا کارایی پردازش ترافیک به سبک RPC با پیام‌های 32 کیلوبایتی هنگام استفاده از zerocopy به میزان 60 تا 70 درصد افزایش یابد.
    • تماس‌های جدید ioctl() برای ایجاد پل‌های شبکه‌ای که چندین پیوند PPP را پوشش می‌دهند، اضافه شده است. قابلیت پیشنهادی به فریم ها اجازه می دهد تا از یک کانال به کانال دیگر حرکت کنند، به عنوان مثال از یک PPPoE به یک جلسه PPPoL2TP.
    • ادغام در هسته MPTCP (MultiPath TCP)، توسعه پروتکل TCP برای سازماندهی عملیات اتصال TCP با تحویل بسته ها به طور همزمان در طول چندین مسیر از طریق رابط های شبکه مختلف مرتبط با آدرس های IP مختلف. نسخه جدید پشتیبانی از گزینه ADD_ADDR را برای تبلیغ آدرس‌های IP موجود که می‌توان هنگام افزودن جریان‌های جدید به یک اتصال MPTCP موجود به آن متصل شد، معرفی می‌کند.
    • قابلیت پیکربندی اقدامات زمانی که از بودجه نظرسنجی اتصال فراتر رفته است (مشغول نظرسنجی) اضافه شده است. حالت SO_BUSY_POLL که قبلاً در دسترس بود به معنای تغییر به softirq بود که بودجه تمام شد. برای برنامه هایی که نیاز به استفاده از نظرسنجی دارند، یک گزینه جدید SO_PREFER_BUSY_POLL پیشنهاد شده است.
    • IPv6 از حالت های SRv6 End.DT4 و End.DT6 پشتیبانی می کند، که برای ایجاد VPN های چند کاربره IPv4 L3 و دستگاه های VRF (مسیریابی و ارسال مجازی) استفاده می شود.
    • Netfilter پیاده سازی مجموعه عبارات را یکپارچه کرد، که امکان تعیین چندین عبارت را برای هر عنصر لیست لیست ها فراهم کرد.
    • APIها برای پیکربندی محدودیت های قدرت SAR و همچنین پارامترهای AE PWE و HE MCS به پشته بی سیم 802.11 اضافه شده اند. درایور Intel iwlwifi پشتیبانی از محدوده 6 گیگاهرتز (باند فوق العاده بالا) را اضافه کرده است. درایور Qualcomm Ath11k پشتیبانی از فناوری FILS (راه‌اندازی پیوند اولیه سریع، استاندارد شده به عنوان IEEE 802.11ai) را اضافه کرده است که به شما امکان می‌دهد از تأخیرهای رومینگ در هنگام مهاجرت از یک نقطه دسترسی به نقطه دیگر خلاص شوید.
  • Оборудование
    • درایور amdgpu از AMD "Green Sardine" APU (Ryzen 5000) و GPU "Dimgrey Cavefish" (Navi 2) و همچنین پشتیبانی اولیه از AMD Van Gogh APU با هسته Zen 2 و RDNA 2 GPU (Navi 2) پشتیبانی می کند. پشتیبانی از شناسه‌های APU جدید Renoir (بر اساس CPU Zen 2 و Vega GPU) اضافه شده است.
    • درایور i915 برای کارت‌های ویدئویی اینتل از فناوری IS (مقیاس‌گذاری عدد صحیح) با اجرای فیلتری برای افزایش مقیاس با در نظر گرفتن وضعیت پیکسل‌های همسایه (نزدیک‌ترین همسایه درونیابی) برای تعیین رنگ پیکسل‌های از دست رفته پشتیبانی می‌کند. پشتیبانی از کارت های گسسته Intel DG1 گسترش یافته است. پشتیبانی از فناوری "Big Joiner" اجرا شده است که از تراشه های Ice Lake / Gen11 وجود داشته است و امکان استفاده از یک رمزگذار برای پردازش دو جریان، به عنوان مثال، برای خروجی به صفحه نمایش 8K از طریق یک DisplayPort را می دهد. یک حالت برای جابجایی ناهمزمان بین دو بافر در حافظه ویدیو اضافه شد (تلنگر ناهمگام).
    • درایور nouveau پشتیبانی اولیه از پردازنده‌های گرافیکی NVIDIA مبتنی بر ریزمعماری Ampere (GA100، GeForce RTX 30xx) را اضافه کرده است، که تاکنون محدود به ابزارهایی برای کنترل حالت‌های ویدیویی است.
    • اضافه شدن پشتیبانی از پروتکل 3WIRE مورد استفاده در پنل های LCD. پشتیبانی از پنل‌های novatek nt36672a، TDO tl070wsh30، Innolux N125HCE-GN1 و ABT Y030XX067A 3.0 اضافه شده است. به طور جداگانه می توان به پشتیبانی از پنل گوشی های هوشمند OnePlus 6 و 6T اشاره کرد که امکان سازماندهی بارگیری هسته اصلاح نشده در دستگاه ها را فراهم می کند.
    • پشتیبانی از اولین کنترلر میزبان گسسته USB4 اینتل، Maple Ridge اضافه شده است.
    • پشتیبانی از کدک های صوتی Allwinner H6 I2S، دستگاه های آنالوگ ADAU1372، Intel Alderlake-S، GMediatek MT8192، NXP i.MX HDMI و XCVR، Realtek RT715 و Qualcomm SM8250 اضافه شده است.
    • پشتیبانی اضافه شده برای بردها، دستگاه‌ها و پلتفرم‌های ARM: Galaxy Note 10.1، Microsoft Lumia 950 XL، NanoPi R1، FriendlyArm ZeroPi، Elimo Initium SBC، Broadcom BCM4908، Mediatek MT8192/MT6779/MT8167، MSMPve2، MSMV730، MSTARNUVOFIN. را Mikrotik مبتنی بر Marvell Prestera 382DX98، سرورهایی با Nuvoton NPCM3236 BMC، Kontron i.MX750M Mini، Espressobin Ultra، «Trogdor» Chromebook، Kobol Helios8، Engicam PX64.Core.
    • پشتیبانی داخلی از کنسول بازی Ouya مبتنی بر NVIDIA Tegra 3.

در همان زمان، بنیاد نرم‌افزار آزاد آمریکای لاتین نسخه‌ای از هسته کاملاً رایگان 5.11 - Linux-libre 5.11-gnu را تشکیل داد که از عناصر سفت‌افزار و درایورهای حاوی مؤلفه‌های غیرآزاد یا بخش‌های کد پاک شده است که دامنه آن محدود است. توسط سازنده نسخه جدید درایورهای qat_4xxx (crypto)، lt9611uxcm (dsi/hdmi bridge)، ccs/smia++ (حسگر)، ath11k_pci، فرستنده صوتی nxp و کنترلر mhi pci را پاک می‌کند. کد پاکسازی حباب به روز شده در درایورها و زیرسیستم های amdgpu، btqca، btrtl، btusb، i915 csr. حباب های جدید در m3 rproc، ساعت ptp idt82p33 و qualcomm arm64 غیرفعال شده است.

منبع: opennet.ru

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