هسته لینوکس نسخه 5.12


بعد از دو ماه توسعه ، لینوس توروالدز هسته لینوکس 5.12 را منتشر کرد. از جمله تغییرات قابل توجه: پشتیبانی از دستگاه های بلوک بندی شده در Btrfs ، امکان نقشه برداری شناسه های کاربر برای سیستم های فایل ، تمیز کردن معماری های قدیمی ARM ، حالت نوشتن مشتاقانه به NFS ، مکانیسم LOOKUP_CACHED برای تعیین مسیرهای پرونده از حافظه نهان ، پشتیبانی از دستورالعمل های اتمی در BPF ، سیستم رفع اشکال KFENCE برای تشخیص خطاها هنگام کار با حافظه ، کار در یک هسته هسته جداگانه ، حالت نظرسنجی NAPI در پشته شبکه ، hypervisor ACRN ، امکان تغییر مدل پیش فرم در برنامه ریز کار در حال پرواز و پشتیبانی برای بهینه سازی LTO هنگام ساخت در Clang.

نسخه جدید 14170 (در نسخه قبلی 15480) اصلاحیه از توسعه دهندگان 1946 (1991) دریافت کرده است ،
اندازه پچ – 38 مگابایت (تغییرات 12102 (12090) پرونده را تحت تأثیر قرار داده ، 538599 (868025) خط کد به آن اضافه کرده ، 333377 (261456) خط) را حذف کرده است). حدود 43٪ از کل ارائه شده در 5.12
تغییرات مربوط به درایورهای دستگاه است ، تقریباً 17٪ تغییرات ایجاد شده است
نگرش نسبت به به روزرسانی کد مخصوص معماری های سخت افزاری ، 12٪
مربوط به پشته شبکه ، 5٪ به سیستم فایل ها و 4٪ به داخلی است
زیر سیستم های هسته

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

  • زیر سیستم دیسک ، سیستم ورودی و خروجی دیسک
    • توانایی نقشه برداری از شناسه های کاربر را برای سیستم های پرونده نصب شده اجرا کرد (شما می توانید فایلهای یک کاربر را بر روی یک پارتیشن خارجی نصب شده با یک کاربر دیگر روی سیستم فعلی ترسیم کنید). نقشه برداری برای FS FAT ، ext4 و XFS پشتیبانی می شود. عملکرد پیشنهادی اشتراک فایل ها را بین کاربران مختلف و در رایانه های مختلف آسان تر می کند ، از جمله در مکانیسم دایرکتوری های قابل حمل قابل حمل systemd-homed استفاده می شود ، به کاربران اجازه می دهد فهرست های خانه خود را به رسانه های خارجی منتقل کنند و از آنها در رایانه های مختلف استفاده کنند ، شناسه های کاربری که مطابقت ندارند. یکی دیگر از کاربردهای مفید ، سازماندهی تهیه اشتراک فایل از یک میزبان خارجی است ، بدون اینکه داده های مربوط به دارندگان پرونده ها در سیستم فایل تغییر کند.
    • وصله های LOOKUP_CACHED در هسته تصویب شده است و از فضای کاربر اجازه می دهد تا عملیات تعیین مسیر پرونده را بدون مسدود کردن ، فقط براساس داده های موجود در حافظه پنهان انجام دهد. حالت LOOKUP_CACHED با عبور از پرچم RESOLVE_CACHED فعال می شود ، كه در آن داده ها فقط از حافظه پنهان برمی گردند و اگر تعریف مسیر نیاز به دسترسی به درایو داشته باشد ، خطای EAGAIN بازگردانده می شود.
    • پشتیبانی اولیه از دستگاه های بلوک بندی شده در سیستم فایل Btrfs (درایوهای دیسک سخت یا SSD های NVMe با فضای ذخیره سازی تقسیم شده به مناطق تقسیم شده به گروههایی که گروهی از بلوک ها یا بخشهایی را تشکیل می دهند که فقط به آنها ترتیب داده اضافه می شود و کل بلوک های گروه را به روز می کند) ) در حالت فقط خواندنی ، پشتیبانی از بلوک های دارای فراداده و داده هایی که کوچکتر از یک صفحه هستند (زیر صفحه).
    • اضافه شدن توانایی انتخاب الگوریتم فشرده سازی و سطح فشرده سازی در سیستم فایل F2FS. پشتیبانی اضافه شده برای سطح فشرده سازی بالا برای الگوریتم LZ4. گزینه نصب شده checkpoint_merge اجرا شده است.
    • دستور جدید ioctl FS_IOC_READ_VERITY_METADATA برای خواندن فراداده از پرونده های محافظت شده با fs-verity پیاده سازی شده است.
    • سرویس گیرنده NFS حالت نوشتن مشتاق را اجرا می کند (می نویسد = مشتاق) ، در صورت فعال بودن ، نوشتن پرونده بلافاصله به سرور ارسال می شود ، و حافظه پنهان صفحه را دور می زند. این حالت به شما امکان می دهد تا میزان مصرف حافظه را کاهش دهید ، اطلاعات فوری در مورد تکمیل فضای آزاد در سیستم فایل را فراهم می کند و در برخی شرایط بهبود عملکرد را امکان پذیر می کند.
    • گزینه های جدید نصب را به CIFS (SMB) اضافه کرد: acregmax برای کنترل ذخیره فایل و acdirmax برای کنترل ذخیره متادیتای دایرکتوری.
    • XFS بررسی سهمیه چند رشته ای را فعال کرد ، سریعتر fsync ، کد رشد برای تهیه پیاده سازی اندازه سیستم فایل آماده شد.
  • خدمات حافظه و سیستم
    • زیر سیستم DTMP (مدیریت توان حرارتی پویا) اضافه شد ، که امکان تنظیم پویا مصرف برق دستگاه های مختلف را بر اساس محدودیت های تعیین شده درجه حرارت عمومی فراهم می کند.
    • توانایی ساخت هسته با کامپایلر Clang را با در نظر گرفتن بهینه سازی ها در مرحله پیوند (LTO ، بهینه سازی زمان پیوند) پیاده سازی کرد. بهینه سازی LTO با در نظر گرفتن وضعیت تمام پرونده های درگیر در فرایند ساخت متفاوت است ، در حالی که حالت های بهینه سازی سنتی هر پرونده را جداگانه بهینه می کنند و شرایط فراخوانی توابع تعریف شده در پرونده های دیگر را در نظر نمی گیرند. به عنوان مثال ، با استفاده از LTO ، استقرار درون خطی برای توابع سایر پرونده ها امکان پذیر است ، کد بلااستفاده در پرونده اجرایی موجود نیست ، بررسی نوع و بهینه سازی کلی در سطح پروژه به طور کلی انجام می شود. پشتیبانی LTO در حال حاضر به معماری x86 و ARM64 محدود شده است.
    • امکان انتخاب حالت ها را فراهم می کند
      اگر تنظیمات PREEMPT_DYNAMIC هنگام ساخت هسته مشخص شده باشد ، در مرحله بوت (در حالت پیش فرض = هیچ / داوطلبانه / کامل) یا در حین کار از طریق اشکال زدایی (/ اشکال زدایی / زمانبندی_ اشکال زدایی) ، پیش تنظیم (PREEMPT). پیش از این ، حالت پیش تنظیم فقط در سطح پارامترهای مونتاژ تنظیم می شد. این تغییر به توزیع ها اجازه می دهد تا هسته ها را با حالت PREEMPT فعال کنید ، که حداقل تأخیر را برای دسک تاپ با هزینه پهنای باند کمی کاهش می دهد ، و در صورت لزوم به PREEMPT_VOLUNTARY (حالت متوسط ​​برای دسک تاپ) یا PREEMPT_NONE بازمی گردد.

    • پشتیبانی از عملیات اتمی BPF_ADD ، BPF_AND ، BPF_OR ، BPF_XOR ، BPF_XCHG و BPF_CMPXCHG به زیر سیستم BPF اضافه شد.
    • به برنامه های BPF اجازه دسترسی به داده های روی پشته را با استفاده از اشاره گرهای افست متغیر می دهد. به عنوان مثال ، اگر قبلاً فقط می توانستید از یک شاخص عنصر ثابت برای دسترسی به یک آرایه روی پشته استفاده کنید ، اکنون می توانید از یک فهرست تغییر دهنده استفاده کنید. کنترل دسترسی فقط در مرزهای موجود توسط راستی آزمای BPF انجام می شود. این ویژگی فقط به دلیل ترس از بهره برداری از آسیب پذیری های اجرای کد سوداگرانه فقط برای برنامه های ممتاز در دسترس است.
    • توانایی ضمیمه کردن برنامه های BPF به لکه های برهنه ای که با رویدادهای ردیابی قابل مشاهده توسط کاربر مرتبط نیستند (تضمین نمی شود ABI ها برای چنین گنجینه هایی حفظ شوند) اضافه شد.
    • پشتیبانی پشتیبانی شده از گذرگاه CXL 2.0 (محاسبه Express Express) ، که برای سازماندهی تعامل با سرعت بالا بین پردازنده و دستگاه های حافظه استفاده می شود (اجازه می دهد از دستگاه های حافظه خارجی به عنوان بخشی از RAM یا حافظه فقط خواندنی استفاده کنید ، گویا این حافظه از طریق یک کنترل کننده حافظه استاندارد در CPU متصل شد).
    • درایور nvmem برای دریافت داده از مناطق حافظه اختصاصی سیستم عامل که به طور مستقیم برای لینوکس قابل دسترسی نیستند ، اضافه شده است (به عنوان مثال حافظه EEPROM فقط از طریق سیستم عامل به صورت فیزیکی قابل دسترسی است یا داده ها فقط در مرحله اولیه بارگیری در دسترس هستند).
    • پشتیبانی از سیستم پروفایل "oprofile" را حذف کرد ، که به طور گسترده ای مورد استفاده قرار نگرفت و توسط موتور پیشرفته تر مدرن جایگزین شد.
    • رابط I / O ناهمزمان io_uring یکپارچه سازی با گروه های کنترل کننده استفاده از حافظه را فراهم می کند.
    • پشتیبانی از سیستم های NUMA و همچنین مکانیسم های kprobes و uprobes برای معماری RISC-V اضافه شده است.
    • توانایی استفاده از فراخوان سیستمی kcmp () را صرف نظر از عملکرد عکسهای عکس وضعیت پردازش (ایست بازرسی / بازیابی) اضافه کرد.
    • ماکروهای EXPORT_UNUSED_SYMBOL () و EXPORT_SYMBOL_GPL_FUTURE () ، که سالها در عمل استفاده نشده اند ، حذف شده اند.
  • مجازی سازی و امنیت
    • مکانیسم حفاظت KFence (حصار الکتریکی هسته ای) اضافه شده است ، که خطاهای حافظه مانند اضافه شدن بافر و دسترسی پس از آزادسازی حافظه را می گیرد. بر خلاف مکانیسم اشکال زدایی KASAN ، زیر سیستم KFence با سرعت بالا و هزینه های سربار کم متمایز می شود ، که به شما امکان می دهد خطاهای حافظه را که فقط در سیستم های عامل یا در طی کار طولانی مدت ظاهر می شوند ، بگیرید.
    • پشتیبانی از hypervisor ACRN اضافه شده است ، که با آمادگی در زمان واقعی در ذهن و استفاده مهم از نظر مأموریت نوشته شده است. ACRN حداقل سربار را تأمین می کند ، تأخیر کم و پاسخگویی کافی هنگام تعامل با سخت افزار را تضمین می کند. پشتیبانی از مجازی سازی منابع CPU ، I / O ، زیر سیستم شبکه ، عملیات با گرافیک و صدا. از ACRN می توان برای اجرای چندین ماشین مجازی مجزا در واحدهای کنترل الکترونیکی ، داشبورد ، سیستم های اطلاعاتی خودرو ، دستگاه های اینترنت اشیا consumer مصرفی و سایر فناوری های تعبیه شده استفاده کرد. ACRN از دو نوع سیستم میهمان پشتیبانی می کند – سرویس مجازی مجازی سرویس ، که برای مدیریت منابع سیستم (CPU ، حافظه ، ورودی و خروجی و غیره) استفاده می شود و VM کاربر سفارشی که توزیع های لینوکس ، اندروید و ویندوز در آنها امکان پذیر است.
    • زیر سیستم Integrity Measurement Architecture (IMA) ، که یک پایگاه هش برای بررسی یکپارچگی پرونده ها و فراداده های مرتبط با آنها را حفظ می کند ، توانایی بررسی یکپارچگی هسته را به خود اختصاص داده است ، به عنوان مثال ، برای پیگیری تغییرات در قوانین SELinux .
    • توانایی رهگیری فراخواندهای Xen و ارسال آنها به شبیه ساز فضای کاربر در Hypervisor KVM.
    • توانایی استفاده از Linux به عنوان محیط اصلی Hyper-V hypervisor را اضافه کرد. محیط ریشه دسترسی مستقیم به سخت افزار دارد و برای اجرای سیستم های مهمان (مشابه Dom0 در Xen) استفاده می شود. تا کنون ، Hyper-V (Microsoft Hypervisor) فقط از Linux در محیط های مهمان پشتیبانی می کرد ، اما hypervisor خود از یک محیط مبتنی بر ویندوز مدیریت می شد.
    • پشتیبانی از رمزگذاری خطی برای کارتهای eMMC اضافه شد تا مکانیسم های رمزگذاری تعبیه شده در کنترل کننده درایو برای رمزگذاری و رمزگشایی شفاف ورودی و خروجی ، امکان پذیر شود.
    • پشتیبانی از هش های RIPE-MD 128/256/320 که در هسته استفاده نشده است از زیر سیستم رمزنگاری حذف شده است
      و Tiger 128/160/192 و همچنین رمز عبور Salsa20 که با الگوریتم ChaCha20 جایگزین شد. الگوریتم blake2 برای اجرای blake2 به روز شده است.

  • زیر سیستم شبکه
    • توانایی انتقال کنترل کننده نظر سنجی NAPI را برای دستگاه های شبکه به یک رشته هسته جداگانه اضافه کرد ، که به شما امکان می دهد عملکرد را برای برخی از انواع کار افزایش دهید. پیش از این ، نظرسنجی در متن softirq انجام می شد و تحت پوشش برنامه ریز وظایف نبود ، که انجام بهینه سازی های خوب برای حداکثر عملکرد را دشوار می کرد. اجرای در یک هسته هسته جداگانه اجازه می دهد تا کنترل کننده نظرسنجی از فضای کاربر کنترل شود ، به هسته های CPU جداگانه متصل شود و هنگام تعیین یک سوئیچ وظیفه مورد توجه قرار گیرد. گزینه / sys / class / net / / threaded برای فعال کردن حالت جدید در sysfs ارائه شده است.
    • ادغام مداوم با هسته MPTCP (MultiPath TCP) ، توسعه یافته پروتکل TCP برای سازماندهی اتصال TCP با تحویل بسته ها به طور همزمان در چندین مسیر از طریق رابط های شبکه مختلف که به آدرس های IP مختلف متصل هستند. نسخه جدید امکان اختصاص دادن اولویت به جریان های خاص را اضافه می کند ، که به شما اجازه می دهد ، برای مثال ، کار جریانهای پشتیبان را که فقط در صورت بروز مشکل با جریان اصلی روشن هستند ، سازماندهی کنید.
    • پشتیبانی از سازوکار رهگیری صریح میزبان (EHT) در IGMPv3 اضافه شد.
    • موتور فیلتر فیلتر Netfilter توانایی داشتن جداول خاص را برای دستیابی به کنترل انحصاری پیاده سازی می کند (به عنوان مثال ، یک فرآیند فایروال پس زمینه می تواند جداول خاصی را لنگر کند ، و مانع از تداخل شخص دیگری در آنها شود).
  • تجهیزات
    • تمیز کردن سیستم عامل های ARM منسوخ شده و بدون همراه انجام شده است. درایورهای کد efm32 ، picoxcell ، prima2 ، tango ، u300 ، zx و c6x و درایورهای مرتبط را حذف کرد.
    • درایور amdgpu ویژگی OverDrive را برای کارتهای مبتنی بر GPU Sienna Cichlid (Navi 22، Radeon RX 6xxx) پیاده سازی می کند. پشتیبانی از فرمت FP16 پیکسل برای DCE (موتور کنترل کننده صفحه نمایش) از نسل 8 تا 11 اضافه شده است. برای GPU Navy Flounder (Navi 21) و APU Van Gogh ، توانایی تنظیم مجدد GPU پیاده سازی شده است.
    • درایور i915 برای گرافیک اینتل پارامتر i915.mitigations را برای غیرفعال کردن مکانیزم های انزوا و محافظت به نفع عملکرد بهتر پیاده سازی می کند. برای تراشه هایی که از Tiger Lake شروع می شوند ، پشتیبانی از مکانیزم VRR (Variable Rate Refresh) ارائه شده است که به شما امکان می دهد سرعت تازه سازی مانیتور را به صورت تطبیقی ​​تغییر دهید تا از صافی و عدم پارگی در هنگام بازی اطمینان حاصل کنید. شامل پشتیبانی از Intel Clear Color Technology برای بهبود دقت رنگ. پشتیبانی از DP-HDMI 2.1 اضافه شد. توانایی کنترل نور پس زمینه پانل های eDP اجرا شده است. HDR برای GPU های Gen9 با پشتیبانی از LSPCON (سطح تغییر دهنده و تبدیل پروتکل) فعال است.
    • پشتیبانی اولیه از پردازنده های گرافیکی NVIDIA براساس معماری GA100 (آمپر) در درایور نو اضافه شد.
    • پشتیبانی از پردازنده های گرافیکی Adreno 508 ، 509 و 512 که در تراشه های SDM (Snapdragon) 630 ، 636 و 660 در درایور msm استفاده شده است.
    • پشتیبانی از کارت های صدا Sound BlasterX AE-5 Plus، Lexicon I-ONIX FW810s و Pioneer DJM-750. پشتیبانی اضافه شده برای زیر سیستم صوتی Intel Alder Lake PCH-P. پشتیبانی پشتیبانی شده از شبیه سازی نرم افزاری اتصال و قطع اتصال جک صوتی برای اشکال زدائی کنترل کننده ها در فضای کاربر.
    • پشتیبانی از کنسول های بازی نینتندو 64 که بین سالهای 1996 و 2003 تولید شده بود (تلاشهای قبلی برای انتقال لینوکس به نینتندو 64 ناقص بود و دارای وضعیت Vaporware بود). انگیزه ایجاد یک درگاه جدید برای یک پلت فرم منسوخ شده که تقریباً بیست سال است آزاد نشده است ، میل به تحریک توسعه شبیه سازها و ساده سازی حمل و نقل بازی ها است.
    • درایور کنترل کننده بازی Sony PlayStation 5 DualSense اضافه شد.
    • پشتیبانی از تابلوهای ARM ، دستگاه ها و سیستم عامل ها:
      PineTab، Snapdragon 888 / SM8350، Snapdragon MTP، Two Beacon EmbeddedWorks، Intel eASIC N5X، Netgear R8000P، Plymovent M2M، Beacon i.MX8M Nano، NanoPi M4B.

    • پشتیبانی از تلفن های هوشمند Purism Librem5 Evergreen ، Xperia Z3 + / Z4 / Z5 ، ASUS Zenfone 2 Laser ، BQ Aquaris X5 ، OnePlus6 ، OnePlus6T ، Samsung GT-I9070.
    • درایور bcm-vk برای کارتهای شتاب دهنده Broadcom VK (به عنوان مثال کارتهای Valkyrie و Viper PCIe) اضافه شد ، که می تواند برای انتقال صدا ، ویدئو و پردازش تصویر و همچنین عملیات رمزگذاری به یک دستگاه جداگانه استفاده شود.
    • پشتیبانی از سیستم عامل Lenovo IdeaPad با قابلیت کنترل شارژ ثابت و نور پس زمینه صفحه کلید. این برنامه همچنین از مشخصات ACPI پلت فرم ThinkPad با قابلیت مدیریت انرژی پشتیبانی می کند. درایور اضافه شده برای زیر سیستم Lenovo ThinkPad X1 Tablet Gen 2 HID.
    • درایور ov5647 با پشتیبانی از ماژول دوربین برای Raspberry Pi اضافه شد.
    • پشتیبانی از تابلوهای RISC-V SoC FU740 و HiFive Unleashed اضافه شد. همچنین یک درایور جدید برای تراشه Kendryte K210 اضافه شده است.

    علاوه بر این ، می توان به انتشار توسط بنیاد نرم افزار آزاد آمریکای لاتین توجه کرد
    نسخه کاملا رایگان 5.12 هسته – Linux-libre 5.12-gnu ، از عناصر سیستم عامل و درایورهای حاوی اجزای غیر رایگان یا بخش کد ، که دامنه محدود شده توسط سازنده است ، سلب شده است. در نسخه جدید ، رانندگان تمیز شدند
    برای شتاب دهنده های رمزنگاری OcteonTX2 ، DVB MXL692 ، Wi-Fi MT7921E ، BCM VK ، Intel ICE و Qualcomm AArch64 DTS. کد پاک شده لکه در درایورهای Adreno GPU ، Allegro-DVT و صفحه های لمسی به روز شده است.

OpenNET


نظرات

نظر شما