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

پس از دو ماه توسعه، لینوس توروالدز معرفی شده انتشار هسته لینوکس 5.2. از جمله قابل توجه ترین تغییرات: حالت عملکرد Ext4 به حروف بزرگ و کوچک حساس است، سیستم جداگانه برای نصب فایل سیستم، درایورهای GPU Mali 4xx/ 6xx/7xx، توانایی مدیریت تغییرات در مقادیر sysctl در برنامه های BPF، دستگاه-mapper. ماژول dm-dust، محافظت در برابر حملات MDS، پشتیبانی از Sound Open Firmware برای DSP، بهینه سازی عملکرد BFQ، زیرسیستم PSI (اطلاعات Stall فشار) را به امکان استفاده در اندروید می رساند.

نسخه جدید شامل 15100 اصلاحات از 1882 توسعه دهنده است.
اندازه پچ - 62 مگابایت (تغییرات روی 30889 فایل تأثیر گذاشت، 625094 خط کد اضافه شد، 531864 خط حذف شد). حدود 45٪ از همه ارائه شده در 5.2
تغییرات مربوط به درایورهای دستگاه است که تقریباً 21 درصد از تغییرات مربوط می شود
نگرش نسبت به به روز رسانی کدهای خاص معماری های سخت افزاری، 12%
مربوط به پشته شبکه، 3٪ به سیستم فایل و 3٪ به داخلی
زیر سیستم های هسته 12.4% از کل تغییرات توسط اینتل، 6.3% توسط Red Hat، 5.4% توسط گوگل، 4.0% توسط AMD، 3.1% توسط SUSE، 3% توسط IBM، 2.7% توسط Huawei، 2.7% توسط Linaro، 2.2% توسط ARM تهیه شده است. 1.6 % - Oracle.

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

  • زیرسیستم دیسک، I/O و سیستم های فایل
    • برای Ext4 اضافه شد پشتیبانی بدون تمایز مورد کاراکترها در نام فایل ها کار کنید، که فقط در رابطه با فهرست های خالی منفرد با استفاده از ویژگی جدید "+F" (EXT4_CASEFOLD_FL) فعال می شود. هنگامی که این ویژگی روی یک فهرست تنظیم می شود، تمام عملیات با فایل ها و زیرشاخه های درون آن بدون در نظر گرفتن حروف کوچک انجام می شود، از جمله اینکه در هنگام جستجو و باز کردن فایل ها، حروف کوچک نادیده گرفته می شود (به عنوان مثال، فایل های Test.txt، test.txt و test.TXT در این گونه دایرکتوری ها یکسان در نظر گرفته می شوند). به طور پیش فرض، سیستم فایل همچنان به حروف کوچک و بزرگ حساس است، به استثنای دایرکتوری هایی با ویژگی "chattr +F".
    • توابع پردازش کاراکترهای UTF-8 در نام فایل ها، که هنگام انجام عملیات مقایسه رشته ها و عادی سازی استفاده می شوند، یکپارچه شده اند.
    • XFS زیرساختی را برای نظارت بر سلامت سیستم فایل و یک ioctl جدید برای پرس و جو از وضعیت سلامت اضافه می کند. یک ویژگی آزمایشی برای بررسی آنلاین شمارنده های superblock پیاده سازی شده است.
    • اضافه شدن ماژول جدید دستگاه-نقشه دار "dm-dust"، که به شما امکان می دهد ظاهر بلوک های بد در رسانه یا خطاها را هنگام خواندن از دیسک شبیه سازی کنید. این ماژول به شما امکان می دهد تا اشکال زدایی و آزمایش برنامه ها و سیستم های ذخیره سازی مختلف را در مواجهه با خرابی های احتمالی ساده کنید.
    • انجام شد بهینه سازی عملکرد قابل توجه برای زمانبندی BFQ I/O. در شرایط بار ورودی/خروجی بالا، بهینه سازی هایی انجام شده است اجازه زمان انجام عملیات مانند راه اندازی برنامه ها را تا 80 درصد کاهش دهید.
    • یک سری فراخوانی سیستم برای نصب فایل سیستم اضافه شده است: fsopen(), open_tree(), fspick(), fsmount(), fsconfig() и move_mount(). این فراخوانی های سیستمی به شما این امکان را می دهند که مراحل مختلف نصب را به طور جداگانه پردازش کنید (پردازش superblock، دریافت اطلاعات در مورد سیستم فایل، mount، اتصال به نقطه mount) که قبلاً با استفاده از فراخوانی سیستم مشترک ()mount انجام می شد. تماس‌های جداگانه امکان اجرای سناریوهای نصب پیچیده‌تر و انجام عملیات جداگانه مانند پیکربندی مجدد superblock، فعال کردن گزینه‌ها، تغییر نقطه اتصال و انتقال به فضای نام متفاوت را فراهم می‌کنند. علاوه بر این، پردازش جداگانه به شما امکان می دهد دلایل خروجی کدهای خطا را با دقت تعیین کنید و منابع متعددی را برای سیستم های فایل چند لایه مانند overlayfs تنظیم کنید.
    • یک عملیات جدید IORING_OP_SYNC_FILE_RANGE برای io_uring I/O ناهمزمان به رابط اضافه شده است که اقداماتی معادل فراخوانی سیستم را انجام می دهد. sync_file_range()و همچنین قابلیت ثبت eventfd با io_uring و دریافت اعلان‌های تکمیل عملیات را پیاده‌سازی کرد.
    • برای سیستم فایل CIFS، ioctl FIEMAP اضافه شده است که نقشه برداری کارآمدی را ارائه می دهد، و همچنین از حالت های SEEK_DATA و SEEK_HOLE پشتیبانی می کند.
    • در زیر سیستم FUSE پیشنهادی API برای مدیریت کش داده ها؛
    • Btrfs اجرای qgroups را بهینه کرده و سرعت اجرای fsync را برای فایل‌هایی با لینک‌های سخت متعدد بهبود داده است. کد بررسی یکپارچگی داده ها بهبود یافته است، که اکنون آسیب احتمالی به اطلاعات در RAM را قبل از شستشو داده ها روی دیسک در نظر می گیرد.
    • CEPH پشتیبانی برای صادرات عکس های فوری از طریق NFS اضافه کرد.
    • اجرای نصب NFSv4 در حالت "نرم" بهبود یافته است (اگر خطایی در دسترسی به سرور در حالت "نرم" رخ دهد، تماس با بلافاصله یک کد خطا را برمی گرداند، و در حالت "سخت" کنترل تا زمانی که FS داده نمی شود در دسترس بودن یا مهلت بازیابی شده است). نسخه جدید مدیریت زمان‌بندی دقیق‌تر، بازیابی سریع‌تر خرابی، و یک گزینه نصب «نرم‌تر» جدید را ارائه می‌کند که به شما امکان می‌دهد کد خطا (ETIMEDOUT) را که در صورت وقوع مهلت زمانی بازگردانده می‌شود، تغییر دهید.
    • API nfsdcld که برای ردیابی وضعیت کلاینت‌های NFS طراحی شده است، به سرور NFS اجازه می‌دهد تا وضعیت کلاینت را پس از راه‌اندازی مجدد به درستی ردیابی کند. بنابراین، دیمون nfsdcld اکنون می تواند به عنوان یک کنترل کننده nfsdcltrack عمل کند.
    • برای AFS اضافه شبیه سازی قفل های محدوده بایت در فایل ها (قفل کردن محدوده بایت);
  • مجازی سازی و امنیت
    • کار برای حذف مکان‌هایی در هسته انجام شده است که اجرای کد را از مناطق حافظه بازتاب‌شده قابل نوشتن امکان‌پذیر می‌سازد، که اجازه می‌دهد حفره‌های بالقوه‌ای را که می‌توان در طول حمله مورد سوء استفاده قرار داد مسدود کرد.
    • یک پارامتر خط فرمان جدید هسته "mitigations=" اضافه شده است که روشی ساده برای کنترل فعال کردن تکنیک های خاص برای محافظت در برابر آسیب پذیری های مرتبط با اجرای گمانه زنی دستورالعمل ها در CPU ارائه می دهد. عبور از "mitigations=off" همه روش های موجود را غیرفعال می کند و حالت پیش فرض "mitigations=auto" حفاظت را فعال می کند اما بر استفاده از Hyper Threading تأثیر نمی گذارد. حالت "mitigations=auto,nosmt" علاوه بر این، در صورت لزوم توسط روش حفاظت، Hyper Threading را غیرفعال می کند.
    • اضافه پشتیبانی از امضای دیجیتال الکترونیکی مطابق با GOST R 34.10-2012 (RFC 7091، ISO/IEC 14888-3)، توسعه یافته ویتالی چیکونوف از بازالت SPO. پشتیبانی از AES128-CCM به اجرای TLS بومی اضافه شد. پشتیبانی از الگوریتم های AEAD به ماژول crypto_simd اضافه شده است.
    • در Kconfig اضافه یک بخش جداگانه "سخت شدن هسته" با گزینه هایی برای افزایش حفاظت از هسته. در حال حاضر، بخش جدید فقط شامل تنظیماتی برای فعال کردن افزونه‌های افزایش بررسی GCC است.
    • کد هسته تقریباً است تحویل داده شده از دستورات case بدون شکست در سوئیچ (بدون بازگشت یا شکست بعد از هر بلوک case). باقی مانده است که 32 مورد از 2311 مورد استفاده از این سوئیچ را برطرف کنیم، پس از آن می توان از حالت "-Wimplicit-fallthrough" هنگام ساخت هسته استفاده کرد.
    • برای معماری PowerPC، پشتیبانی از مکانیزم‌های سخت‌افزاری برای محدود کردن مسیرهای دسترسی ناخواسته هسته به داده‌ها در فضای کاربر پیاده‌سازی شده است.
    • کد مسدود کننده اضافه شد حملات کلاس MDS (Microarchitectural Data Sampling) در پردازنده های اینتل. از طریق متغیر SysFS «/sys/devices/system/cpu/vulnerabilities/mds» می‌توانید بررسی کنید که آیا یک سیستم در برابر آسیب‌پذیری‌ها آسیب‌پذیر است یا خیر. در دسترس دو حالت حفاظتی: کامل، که به میکروکد به‌روز شده نیاز دارد، و بای‌پس، که به طور کامل پاک کردن بافرهای CPU را هنگام انتقال کنترل به فضای کاربر یا سیستم مهمان تضمین نمی‌کند. برای کنترل حالت های حفاظتی، پارامتر "mds=" به هسته اضافه شده است که می تواند مقادیر "full"، "full,nosmt" (+ غیرفعال کردن Hyper-Threads) و "off" را بگیرد.
    • در سیستم‌های x86-64، حفاظت صفحه محافظ پشته برای IRQ، مکانیسم‌های اشکال‌زدایی و کنترل‌کننده‌های استثنا اضافه شده است که ماهیت آن جایگزینی صفحات حافظه در مرز با پشته است که دسترسی به آن منجر به تولید یک صفحه می‌شود. استثنا (صفحه خطا)؛
    • تنظیم sysctl vm.unprivileged_userfaultfd اضافه شد که توانایی فرآیندهای غیرمجاز برای استفاده از فراخوانی سیستم ()userfaultfd را کنترل می کند.
  • زیر سیستم شبکه
    • اضافه پشتیبانی از دروازه IPv6 برای مسیرهای IPv4. به عنوان مثال، اکنون می توانید قوانین مسیریابی مانند "ip ro اضافه کردن 172.16.1.0/24 از طریق inet6 2001:db8::1 dev eth0" را مشخص کنید.
    • برای ICMPv6، ioctl فراخوانی های icmp_echo_ignore_anycast و icmp_echo_ignore_multicast برای نادیده گرفتن ICMP ECHO برای anycast و
      آدرس های چندپخشی اضافه توانایی محدود کردن شدت پردازش بسته ICMPv6.

    • برای پروتکل مش BATMAN (Better Approach To Mobile Adhoc Networking) که اجازه ایجاد شبکه های غیرمتمرکز را می دهد که در آن هر گره از طریق گره های همسایه متصل می شود. اضافه پشتیبانی از پخش از چندپخشی به تک پخشی و همچنین امکان کنترل از طریق sysfs.
    • در ettool اضافه یک پارامتر جدید Fast Link Down، که به شما امکان می دهد زمان دریافت اطلاعات مربوط به یک رویداد down down را برای 1000BaseT کاهش دهید (در شرایط عادی تاخیر تا 750 میلی ثانیه است).
    • ظاهر شد فرصت اتصال تونل های Foo-Over-UDP به یک آدرس خاص، رابط شبکه یا سوکت (قبلاً اتصال فقط توسط یک ماسک مشترک انجام می شد).
    • در پشته بی سیم امن شده است امکان پیاده سازی هندلرها
      OWE (رمزگذاری بی سیم فرصت طلب) در فضای کاربر.

    • در Netfilter، پشتیبانی از خانواده آدرس inet به زنجیره های nat اضافه شده است (به عنوان مثال، اکنون می توانید از یک قانون ترجمه برای پردازش ipv4 و ipv6 استفاده کنید، بدون اینکه قوانین ipv4 و ipv6 را از هم جدا کنید).
    • در نت لینک اضافه رژیم سختگیرانه برای تأیید دقیق صحت همه پیام ها و ویژگی ها، که در آنها مجاز به تجاوز از اندازه مورد انتظار ویژگی ها نیست و افزودن داده های اضافی در انتهای پیام ها ممنوع است.
  • خدمات حافظه و سیستم
    • پرچم CLONE_PIDFD به فراخوانی سیستم clone() اضافه شده است، هنگامی که مشخص شد، توصیفگر فایل "pidfd" شناسایی شده با فرآیند فرزند ایجاد شده به فرآیند والد بازگردانده می شود. برای مثال، از این توصیفگر فایل می توان برای ارسال سیگنال ها بدون ترس از وارد شدن به شرایط مسابقه استفاده کرد (بلافاصله پس از ارسال سیگنال، ممکن است PID هدف به دلیل خاتمه فرآیند آزاد شده و توسط یک فرآیند دیگر اشغال شود).
    • برای نسخه دوم cgroup ها، عملکرد کنترل کننده فریزر اضافه شده است که با آن می توانید کار را در یک cgroup متوقف کنید و به طور موقت برخی از منابع (CPU، I/O و احتمالاً حتی حافظه) را برای انجام کارهای دیگر آزاد کنید. مدیریت از طریق فایل های کنترل cgroup.freeze و cgroup.events در درخت cgroup انجام می شود. ورودی 1 در cgroup.freeze فرآیندها را در cgroup فعلی و همه گروه های فرزند مسدود می کند. از آنجایی که فریز کردن مدتی طول می کشد، یک فایل cgroup.events اضافی ارائه شده است که از طریق آن می توانید از تکمیل عملیات مطلع شوید.
    • ایمن شد صادرات ویژگی های حافظه متصل به هر گره در sysfs، که به شما امکان می دهد ماهیت پردازش بانک های حافظه را در سیستم هایی با حافظه ناهمگن از فضای کاربر تعیین کنید.
    • زیرسیستم PSI (اطلاعات توقف فشار) بهبود یافته است که به شما امکان می دهد اطلاعات مربوط به زمان انتظار برای دریافت منابع مختلف (CPU، حافظه، I/O) را برای وظایف خاص یا مجموعه ای از فرآیندها در یک cgroup تجزیه و تحلیل کنید. با استفاده از PSI، کنترل‌کننده‌های فضای کاربر می‌توانند با دقت بیشتری سطح بار سیستم و الگوهای کاهش سرعت را در مقایسه با میانگین بار تخمین بزنند. نسخه جدید از تنظیم آستانه‌های حساسیت و امکان استفاده از فراخوانی poll() برای دریافت اعلان‌هایی مبنی بر فعال شدن آستانه‌های تنظیم‌شده برای مدت زمان معینی پشتیبانی می‌کند. این ویژگی به اندروید اجازه می دهد تا کمبود حافظه را در مراحل اولیه بررسی کند، منبع مشکلات را شناسایی کند و برنامه های غیر مهم را بدون ایجاد مشکلاتی که برای کاربر قابل توجه است خاتمه دهد. هنگام تست استرس، ابزارهای نظارت بر مصرف حافظه مبتنی بر PSI 10 برابر کمتر از آمارهای vmpressure مثبت کاذب نشان دادند.
    • کد بررسی برنامه های BPF بهینه شده است که امکان بررسی تا 20 برابر سریعتر برنامه های بزرگ را فراهم می کند. بهینه سازی امکان افزایش محدودیت در اندازه برنامه های BPF را از 4096 به یک میلیون دستورالعمل فراهم کرد.
    • برای برنامه های BPF ارائه شده است توانایی دسترسی به داده های جهانی، که به شما امکان می دهد متغیرها و ثابت های جهانی را در برنامه ها تعریف کنید.
    • اضافه API، که به شما امکان می دهد تغییرات پارامترهای sysctl را از برنامه های BPF کنترل کنید.
    • برای معماری MIPS32، یک کامپایلر JIT برای ماشین مجازی eBPF پیاده سازی شده است.
    • برای معماری PowerPC 32 بیتی، پشتیبانی از ابزار اشکال زدایی KASan (عفونی کننده آدرس هسته) اضافه شده است که به شناسایی خطاها هنگام کار با حافظه کمک می کند.
    • در سیستم‌های x86-64، محدودیت در قرار دادن حالت dump در هنگام خرابی هسته (crash-dump) در مناطق حافظه بالاتر از 896 مگابایت حذف شده است.
    • برای معماری s390، پشتیبانی از تصادفی سازی فضای آدرس هسته (KASLR) و توانایی تأیید امضای دیجیتال هنگام بارگذاری هسته از طریق ()kexec_file_load پیاده سازی شده است.
    • برای معماری PA-RISC، پشتیبانی از اشکال‌زدای هسته (KGDB)، علامت‌های پرش و kprobes اضافه شده است.
  • Оборудование
    • درایور گنجانده شده است لیما برای پردازنده گرافیکی Mali 400/450 که در بسیاری از تراشه های قدیمی بر اساس معماری ARM استفاده می شود. برای پردازنده‌های گرافیکی جدیدتر مالی، درایور Panfrost اضافه شده است که از تراشه‌های مبتنی بر ریزمعماری Midgard (Mali-T6xx، Mali-T7xx، Mali-T8xx) و Bifrost (Mali G3x، G5x، G7x) پشتیبانی می‌کند.
    • پشتیبانی از دستگاه های صوتی با استفاده از سیستم عامل باز اضافه شده است سیستم عامل باز صدا (SOF). با وجود در دسترس بودن درایورهای باز، کد میان‌افزار تراشه‌های صدا همچنان بسته باقی مانده و به شکل باینری ارائه می‌شود. پروژه Sound Open Firmware توسط اینتل برای ایجاد سیستم عامل باز برای تراشه های DSP مربوط به پردازش صدا توسعه داده شد (گوگل نیز بعداً به توسعه پیوست). در حال حاضر، این پروژه قبلاً کشف سفت‌افزار برای تراشه‌های صوتی پلتفرم‌های Intel Baytrail، CherryTrail، Broadwell، ApolloLake، GeminiLake، CannonLake و IceLake را آماده کرده است.
    • درایور Intel DRM (i915) پشتیبانی از تراشه ها را اضافه می کند
      الخارتلیک (Gen11). شناسه‌های PCI برای تراشه‌های Comet Lake (Gen9) اضافه شد. پشتیبانی از تراشه های Icelake تثبیت شده است، که شناسه های دستگاه PCI اضافی نیز به آن اضافه شده است.
      روشن شده
      حالت سوئیچ ناهمزمان بین دو بافر در حافظه ویدیویی (تلنگر async) هنگام انجام عملیات نوشتن از طریق mmio، که به طور قابل توجهی عملکرد برخی از برنامه های سه بعدی را افزایش داد (به عنوان مثال، عملکرد در تست طوفان یخ 3DMark 3-300٪ افزایش یافت). پشتیبانی فناوری اضافه شد HDCP2.2 (محافظت از محتوای دیجیتال با پهنای باند بالا) برای رمزگذاری سیگنال های ویدئویی ارسال شده از طریق HDMI.

    • درایور amdgpu برای پردازنده گرافیکی Vega20 اضافه پشتیبانی از RAS (Reliability, Availability, Serviceability) و پشتیبانی آزمایشی برای زیرسیستم SMU 11 که جایگزین فناوری Powerplay شد. برای GPU Vega12 اضافه پشتیبانی از حالت BACO (Bus Active، Chip Off). پشتیبانی اولیه برای XGMI، یک گذرگاه پرسرعت (PCIe 4.0) برای اتصال GPU اضافه شده است. شناسه های گمشده برای کارت های مبتنی بر پردازنده گرافیکی Polaris10 به درایور amdkfd اضافه شد.
    • درایور Nouveau پشتیبانی از بردهای مبتنی بر چیپست NVIDIA Turing 117 (TU117، مورد استفاده در GeForce GTX 1650) را اضافه کرده است. که در
      kconfig اضافه تنظیم برای غیرفعال کردن توابع منسوخ شده که دیگر در نسخه های فعلی libdrm استفاده نمی شوند.

    • پشتیبانی از اشیاء همگام‌سازی «خط زمانی» به API DRM و درایور amdgpu اضافه شده است که به شما امکان می‌دهد بدون مسدود کردن کلاسیک این کار را انجام دهید.
    • درایور vboxvideo برای گرافیک مجازی VirtualBox از شاخه مرحله‌بندی به ساختار اصلی منتقل شده است.
    • اضافه شدن درایور aspeed برای تراشه GFX SoC ASPEED.
    • پشتیبانی از ARM SoC و Intel Agilex (SoCFPGA)، NXP i.MX8MM، Allwinner (RerVision H3-DVK (H3)، Oceanic 5205 5inMFD، Beelink GS2 (H6)، Orange Pi 3 (H6))، Rockchip (Orange Pi) ) بردهای RK3399، Nanopi NEO4، Veyron-Mighty Chromebook)، Amlogic: SEI Robotics SEI510،
      ST Micro (stm32mp157a, stm32mp157c), NXP (
      Eckelmann ci4x10 (i.MX6DL)،

      i.MX8MM EVK (i.MX8MM)،

      ZII i.MX7 RPU2 (i.MX7)،

      ZII SPB4 (VF610)،

      Zii Ultra (i.MX8M)،

      TQ TQMa7S (i.MX7Solo)،

      TQ TQMa7D (i.MX7Dual)،

      کوبو اورا (i.MX50)،

      Menlosystems M53 (i.MX53))، NVIDIA Jetson Nano (Tegra T210).

در همان زمان، بنیاد نرم افزار آزاد آمریکای لاتین شکل گرفت
گزینه هسته کاملا رایگان 5.2 - Linux-libre 5.2-gnuپاک شده از عناصر سفت‌افزار و درایور حاوی اجزای غیر رایگان یا بخش‌های کد، که دامنه آن توسط سازنده محدود شده است. نسخه جدید شامل آپلود فایل است
نرم افزار باز صدا بارگیری حباب ها در درایورها غیرفعال است
mt7615، rtw88، rtw8822b، rtw8822c، btmtksdio، iqs5xx، ishtp و ucsi_ccg. کد پاکسازی لکه در درایورها و زیرسیستم های ixp4xx، imx-sdma، amdgpu، nouveau و goya و همچنین در مستندات میکروکد به روز شده است. تمیز کردن حباب ها در درایور r8822be به دلیل حذف آن متوقف شد.

منبع: opennet.ru

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