Linux 5.2 yadro versiyasi

Ikki oylik rivojlanishdan so'ng, Linus Torvalds tanishtirdi yadro chiqarilishi Linux 5.2. Eng sezilarli o'zgarishlar orasida: Ext4 ish rejimi katta-kichik harflarni sezmaydi, fayl tizimini o'rnatish uchun alohida tizim qo'ng'iroqlari, Mali 4xx/6xx/7xx GPU drayverlari, BPF dasturlarida sysctl qiymatlari o'zgarishini boshqarish qobiliyati, qurilma-mapper. dm-chang moduli, MDS hujumlaridan himoya qilish, DSP uchun Sound Open Firmware-ni qo'llab-quvvatlash, BFQ ish faoliyatini optimallashtirish, PSI (Pressure Stall Information) quyi tizimini Androidda foydalanish imkoniyatiga olib kelish.

Yangi versiyada 15100 ta ishlab chiquvchilar tomonidan 1882 XNUMX tuzatish kiritilgan,
yamoq hajmi - 62 MB (o'zgarishlar 30889 ta faylga ta'sir qildi, 625094 qator kod qo'shildi, 531864 qator o'chirildi). 45 da taqdim etilganlarning taxminan 5.2%
o'zgarishlar qurilma drayverlari bilan bog'liq, o'zgarishlarning taxminan 21%
apparat arxitekturasiga xos kodni yangilashga munosabat, 12%
tarmoq stekiga, 3% fayl tizimlariga va 3% ichki bilan bog'liq
yadro quyi tizimlari. Barcha o'zgarishlarning 12.4 foizi Intel, 6.3 foizi Red Hat, 5.4 foizi Google, 4.0 foizi AMD, 3.1 foizi SUSE, 3 foizi IBM, 2.7 foizi Huawei, 2.7 foizi Linaro, 2.2 foizi ARM tomonidan tayyorlangan. , 1.6% - Oracle.

asosiy yangiliklar:

  • Disk quyi tizimi, kiritish-chiqarish va fayl tizimlari
    • Ext4 uchun qo'shilgan qo'llab-quvvatlash yangi "+F" (EXT4_CASEFOLD_FL) atributidan foydalangan holda faqat alohida bo'sh kataloglarga nisbatan faollashtirilgan fayl nomlaridagi belgilar registrini ajratmasdan ishlash. Agar ushbu atribut katalogga o'rnatilgan bo'lsa, ichidagi fayllar va pastki kataloglar bilan barcha operatsiyalar belgilar registrini hisobga olmagan holda amalga oshiriladi, shu jumladan fayllarni qidirish va ochishda regis e'tiborga olinmaydi (masalan, Test.txt fayllari, Bunday kataloglardagi test.txt va test.TXT bir xil deb hisoblanadi). Odatiy bo'lib, fayl tizimi "chattr + F" atributiga ega bo'lgan kataloglar bundan mustasno, katta-kichik harflarni hisobga olishda davom etadi;
    • Satrlarni taqqoslash va normallashtirish operatsiyalarini bajarishda foydalaniladigan fayl nomlarida UTF-8 belgilarini qayta ishlash funksiyalari birlashtirildi;
    • XFS fayl tizimining sog'lig'ini kuzatish uchun infratuzilmani va sog'liq holatini so'rash uchun yangi ioctl-ni qo'shadi. Superblok hisoblagichlarini onlayn tekshirish uchun eksperimental xususiyat amalga oshirildi.
    • Yangi modul qurilma-mapper qo'shildi "dm-chang", bu sizga ommaviy axborot vositalarida yomon bloklar ko'rinishini yoki diskdan o'qish paytida xatolarni taqlid qilish imkonini beradi. Modul mumkin bo'lgan nosozliklar sharoitida ilovalar va turli xil saqlash tizimlarini disk raskadrovka va sinovdan o'tkazishni soddalashtirishga imkon beradi;
    • Amalga oshirildi; bajarildi BFQ I/U rejalashtiruvchisi uchun muhim ish faoliyatini optimallashtirish. Yuqori I/U yuki sharoitida optimallashtirishlar amalga oshirildi pozvolyayut Ilovalarni ishga tushirish kabi operatsiyalar vaqtini 80% gacha qisqartiring.
    • Fayl tizimlarini o'rnatish uchun bir qator tizim chaqiruvlari qo'shildi: fsopen(), open_tree(), fspick(), fsmount(), fsconfig() и move_mount(). Ushbu tizim chaqiruvlari avval umumiy mount() tizim chaqiruvi yordamida amalga oshirilgan montajning turli bosqichlarini (superblokni qayta ishlash, fayl tizimi haqida maʼlumot olish, oʻrnatish, oʻrnatish nuqtasiga biriktirish) alohida qayta ishlash imkonini beradi. Alohida qo'ng'iroqlar yanada murakkab o'rnatish stsenariylarini bajarish va superblokni qayta sozlash, opsiyalarni yoqish, o'rnatish nuqtasini o'zgartirish va boshqa nom maydoniga o'tish kabi alohida operatsiyalarni bajarish imkoniyatini beradi. Bundan tashqari, alohida ishlov berish xato kodlarini chiqarish sabablarini aniq aniqlash va ko'p qatlamli fayl tizimlari uchun bir nechta manbalarni o'rnatish imkonini beradi, masalan, overlayflar;
    • IORING_OP_SYNC_FILE_RANGE yangi operatsiya asinxron I/U io_uring interfeysiga qo'shildi, u tizim chaqiruviga ekvivalent amallarni bajaradi. sync_file_range(), shuningdek, eventfd-ni io_uring bilan ro'yxatdan o'tkazish va operatsiyalar tugaganligi to'g'risida bildirishnomalarni olish imkoniyatini amalga oshirdi;
    • CIFS fayl tizimi uchun FIEMAP ioctl qo'shildi, bu samarali hajm xaritasini ta'minlaydi, shuningdek SEEK_DATA va SEEK_HOLE rejimlarini qo'llab-quvvatlaydi;
    • FUSE quyi tizimida taklif qildi Ma'lumotlarni keshlashni boshqarish uchun API;
    • Btrfs qgroups dasturini optimallashtirdi va bir nechta qattiq havolalarga ega fayllar uchun fsync bajarish tezligini yaxshiladi. Ma'lumotlar yaxlitligini tekshirish kodi takomillashtirildi, bu endi ma'lumotlarni diskka o'chirishdan oldin operativ xotiradagi ma'lumotlarga mumkin bo'lgan zararni hisobga oladi;
    • CEPH NFS orqali suratlarni eksport qilish uchun qo'shimcha yordamni qo'shdi;
    • NFSv4-ni "yumshoq" rejimda o'rnatishni amalga oshirish yaxshilandi (agar "yumshoq" rejimda serverga kirishda xatolik yuzaga kelsa, qo'ng'iroq darhol xato kodini qaytaradi va "qattiq" rejimda FS ishlamaguncha boshqaruv berilmaydi. mavjudligi yoki vaqt tugashi tiklanadi). Yangi versiya taym-autni aniqroq boshqarish, avariyani tezroq tiklash va yangi "yumshoqroq" o'rnatish opsiyasini ta'minlaydi, bu sizga vaqt tugashi sodir bo'lganda qaytarilgan xato kodini (ETIMEDOUT) o'zgartirish imkonini beradi;
    • NFS mijozlarining holatini kuzatish uchun mo'ljallangan nfsdcld API NFS serveriga qayta ishga tushirilganda mijozning holatini to'g'ri kuzatish imkonini beradi. Shunday qilib, nfsdcld demoni endi nfsdcltrack ishlov beruvchisi sifatida ishlay oladi;
    • AFS uchun qo'shildi fayllardagi bayt diapazoni qulflarining emulyatsiyasi (Bayt oralig'ini blokirovka qilish);
  • Virtualizatsiya va xavfsizlik
    • Hujum paytida ishlatilishi mumkin bo'lgan potentsial teshiklarni blokirovka qilishga imkon beruvchi yoziladigan aks ettirilgan xotira maydonlaridan kodni bajarishga imkon beruvchi yadrodagi joylarni yo'q qilish bo'yicha ishlar amalga oshirildi;
    • Protsessorda ko'rsatmalarning spekulyativ bajarilishi bilan bog'liq zaifliklardan himoya qilish uchun ma'lum texnikalarni yoqishni boshqarishning soddalashtirilgan usulini ta'minlovchi yangi yadro buyruq qatori parametri "mitigations=" qo'shildi. "Migations=off" dan o'tish barcha mavjud usullarni o'chirib qo'yadi va standart rejim "mitigations=auto" himoyani yoqadi, lekin Hyper Threadingdan foydalanishga ta'sir qilmaydi. Himoya usuli talab qilsa, “yumshatishlar=auto, nosmt” rejimi qoʻshimcha ravishda Hyper Threadingni oʻchirib qoʻyadi.
    • Qo'shilgan GOST R 34.10-2012 (RFC 7091, ISO/IEC 14888-3) bo'yicha elektron raqamli imzoni qo'llab-quvvatlash; rivojlangan Vitaliy Chikunov Bazalt SPO kompaniyasidan. Mahalliy TLS ilovasiga AES128-CCM qo'llab-quvvatlandi. crypto_simd moduliga AEAD algoritmlarini qo‘llab-quvvatlash qo‘shildi;
    • Kconfig ichida qo'shildi yadro himoyasini kuchaytirish imkoniyatlari bilan alohida "yadroni qattiqlashtirish" bo'limi. Hozirda yangi bo'limda faqat GCC tekshiruvini kuchaytirish plaginlarini yoqish sozlamalari mavjud;
    • Yadro kodi deyarli yetkazib berildi kommutatordagi buzilmaydigan registr bayonotlaridan (har bir reys blokidan keyin qaytish yoki tanaffussiz). Kommutatordan foydalanishning 32 holatidan 2311 tasini tuzatish qoladi, shundan so'ng yadroni qurishda "-Wimplicit-fallthrough" rejimidan foydalanish mumkin bo'ladi;
    • PowerPC arxitekturasi uchun foydalanuvchi makonidagi ma'lumotlarga kiruvchi yadro kirish yo'llarini cheklash uchun apparat mexanizmlarini qo'llab-quvvatlash amalga oshirildi;
    • Bloklash kodi qo'shildi hujumlar Intel protsessorlarida MDS (Microarchitectural Data Sampling) klassi. “/sys/devices/system/cpu/vulnerabilities/mds” SysFS o‘zgaruvchisi orqali tizimning zaifliklarga zaifligini tekshirishingiz mumkin. Mavjud ikkita himoya rejimi: to'liq, yangilangan mikrokodni talab qiladi va boshqaruv foydalanuvchi maydoniga yoki mehmon tizimiga o'tkazilganda protsessor buferlarini tozalashni to'liq kafolatlamaydigan bypass. Himoya rejimlarini boshqarish uchun yadroga “mds=” parametri qo'shildi, u “full”, “full,nosmt” (+ Hyper-Threadsni o'chirish) va “off” qiymatlarini qabul qilishi mumkin;
    • X86-64 tizimlarida IRQ, disk raskadrovka mexanizmlari va istisnolar ishlovchilari uchun "stekni himoya qilish sahifasi" himoyasi qo'shildi, ularning mohiyati xotira sahifalarini stek bilan chegarada almashtirishdan iborat bo'lib, kirish stekni yaratishga olib keladi. istisno (sahifa xatosi);
    • Imtiyozsiz jarayonlarning userfaultfd() tizim chaqiruvidan foydalanish qobiliyatini boshqaruvchi vm.unprivileged_userfaultfd sysctl sozlamasi qo‘shildi;
  • Tarmoq quyi tizimi
    • Qo'shilgan IPv6 marshrutlari uchun IPv4 shlyuzini qo'llab-quvvatlash. Masalan, endi “ip ro add 172.16.1.0/24 via inet6 2001:db8::1 dev eth0” kabi marshrutlash qoidalarini belgilashingiz mumkin;
    • ICMPv6 uchun ioctl qo'ng'iroqlari icmp_echo_ignore_anycast va icmp_echo_ignore_multicast har qanday translyatsiya uchun ICMP ECHO ni e'tiborsiz qoldirish uchun amalga oshiriladi.
      multicast manzillar. Qo'shilgan ICMPv6 paketlarini qayta ishlash intensivligini cheklash imkoniyati;

    • Har bir tugun qo'shni tugunlar orqali ulangan markazlashtirilmagan tarmoqlarni yaratishga imkon beruvchi BATMAN (Mobil Adhoc Networkingga Better Approach to Mobile Adhoc Networking) mesh protokoli uchun, qo'shildi multicastdan unicastga translyatsiyani qo'llab-quvvatlash, shuningdek, sysfs orqali boshqarish imkoniyati;
    • Ettoolda qo'shildi yangi Fast Link Down parametri, bu sizga 1000BaseT uchun ulanishni o'chirish hodisasi haqida ma'lumot olish vaqtini qisqartirish imkonini beradi (oddiy sharoitda kechikish 750 ms gacha);
    • paydo bo'ldi imkoniyat Foo-Over-UDP tunnellarini ma'lum bir manzilga, tarmoq interfeysiga yoki rozetkaga bog'lash (ilgari bog'lash faqat umumiy niqob bilan amalga oshirilgan);
    • Simsiz to'plamda taqdim etilgan ishlov beruvchilarni amalga oshirish imkoniyati
      Foydalanuvchi maydonida OWE (Opportunistik Wireless Encryption);

    • Netfilter-da nat zanjirlariga inet manzillar oilasini qo'llab-quvvatlash qo'shildi (masalan, endi siz ipv4 va ipv6 qoidalarini ajratmasdan, ipv4 va ipv6-ni qayta ishlash uchun bitta tarjima qoidasidan foydalanishingiz mumkin);
    • Netlinkda qo'shildi rejimi atributlarning kutilgan hajmidan oshib ketishiga yo'l qo'yilmaydigan va xabarlar oxirida qo'shimcha ma'lumotlarni qo'shish taqiqlangan barcha xabarlar va atributlarning to'g'riligini qat'iy tekshirish uchun qat'iy;
  • Xotira va tizim xizmatlari
    • CLONE_PIDFD bayrog'i clone() tizimi chaqiruviga qo'shildi, belgilanganida, yaratilgan bola jarayoni bilan aniqlangan "pidfd" fayl deskriptori asosiy jarayonga qaytariladi. Ushbu fayl identifikatori, masalan, poyga holatiga tushib qolishdan qo'rqmasdan signallarni yuborish uchun ishlatilishi mumkin (signal yuborilgandan so'ng, maqsadli PID jarayonning tugashi sababli bo'shab qolishi va boshqa jarayon bilan band bo'lishi mumkin);
    • Guruhlarning ikkinchi versiyasi uchun muzlatish kamerasi boshqaruvchisi funksiyasi qo'shildi, uning yordamida siz guruhdagi ishni to'xtatib, boshqa vazifalarni bajarish uchun ba'zi resurslarni (CPU, kiritish/chiqarish va hatto potentsial xotira) vaqtincha bo'shatib qo'yishingiz mumkin. Boshqarish cgroup daraxtidagi cgroup.freeze va cgroup.events boshqaruv fayllari orqali amalga oshiriladi. cgroup.freeze-dagi 1-yozuv joriy guruh va barcha bolalar guruhlaridagi jarayonlarni muzlatib qo'yadi. Muzlatish biroz vaqt talab qilganligi sababli, qo'shimcha cgroup.events fayli taqdim etiladi, bu orqali siz operatsiyaning tugashi haqida bilib olishingiz mumkin;
    • Xavfsiz sysfs-ning har bir tuguniga biriktirilgan xotira atributlarini eksport qilish, bu foydalanuvchi maydonidan heterojen xotiraga ega tizimlarda xotira banklarini qayta ishlash xarakterini aniqlash imkonini beradi;
    • PSI (Pressure Stall Information) quyi tizimi takomillashtirildi, bu sizga guruhdagi muayyan vazifalar yoki jarayonlar to‘plami uchun turli resurslarni (CPU, xotira, kiritish-chiqarish) olish uchun kutish vaqti haqidagi ma’lumotlarni tahlil qilish imkonini beradi. PSI-dan foydalanib, foydalanuvchi bo'sh joy ishlovchilari tizim yuki darajasini va o'rtacha yuklanishga nisbatan sekinlashuv naqshlarini aniqroq baholashlari mumkin. Yangi versiya sezgirlik chegaralarini o'rnatishni qo'llab-quvvatlaydi va belgilangan chegaralar ma'lum vaqt davomida ishga tushirilganligi to'g'risida bildirishnoma olish uchun poll() chaqiruvidan foydalanish imkoniyatini beradi. Bu xususiyat Android-ga xotira etishmovchiligini dastlabki bosqichda kuzatish, muammolar manbasini aniqlash va foydalanuvchi uchun seziladigan muammolarni keltirib chiqarmasdan, ahamiyatsiz ilovalarni tugatish imkonini beradi. Stress testini o'tkazishda PSI-ga asoslangan xotira iste'molini monitoring qilish vositalari vmpressure statistikasi bilan solishtirganda 10 baravar kamroq noto'g'ri ijobiy natijalarni ko'rsatdi;
    • BPF dasturlarini tekshirish uchun kod optimallashtirildi, bu esa katta dasturlarni 20 barobar tezroq tekshirish imkonini beradi. Optimallashtirish BPF dasturlari hajmi bo'yicha cheklovni 4096 dan million ko'rsatmalarga ko'tarish imkonini berdi;
    • BPF dasturlari uchun tomonidan taqdim etilgan dasturlarda global o'zgaruvchilar va konstantalarni aniqlash imkonini beruvchi global ma'lumotlarga kirish imkoniyati;
    • Qo'shilgan API, bu BPF dasturlaridan sysctl parametrlaridagi o'zgarishlarni boshqarish imkonini beradi;
    • MIPS32 arxitekturasi uchun eBPF virtual mashinasi uchun JIT kompilyatori amalga oshirildi;
    • 32-bitli PowerPC arxitekturasi uchun xotira bilan ishlashda xatolarni aniqlashga yordam beradigan KASan (Yadro manzilini tozalash vositasi) disk raskadrovka vositasini qo'llab-quvvatlash qo'shildi;
    • X86-64 tizimlarida 896 MB dan yuqori xotira sohalarida yadro ishdan chiqishi (crash-dump) vaqtida davlat dumplarini joylashtirishga bo'lgan cheklov olib tashlandi;
    • s390 arxitekturasi uchun yadro manzil maydonini randomizatsiyalash (KASLR) va yadroni kexec_file_load() orqali yuklashda raqamli imzolarni tekshirish imkoniyatini qo'llab-quvvatlash amalga oshiriladi;
    • PA-RISC arxitekturasi uchun yadro tuzatuvchisi (KGDB), o'tish belgilari va kproblar uchun qo'shimcha yordam;
  • uskunalar
    • Haydovchi kiritilgan Lima ARM arxitekturasiga asoslangan ko'plab eski chiplarda ishlatiladigan Mali 400/450 GPU uchun. Yangi Mali GPUlari uchun Midgard (Mali-T6xx, Mali-T7xx, Mali-T8xx) va Bifrost (Mali G3x, G5x, G7x) mikroarxitekturalariga asoslangan chiplarni qo'llab-quvvatlaydigan Panfrost drayveri qo'shildi;
    • Ochiq proshivka yordamida audio qurilmalar uchun qo'shimcha yordam Ochiq dasturiy ta'minot (SOF). Ochiq drayverlarning mavjudligiga qaramay, ovoz chiplari uchun proshivka kodi hali ham yopiq bo'lib qoldi va ikkilik shaklda taqdim etildi. Sound Open Firmware loyihasi ovozni qayta ishlash bilan bog'liq DSP chiplari uchun ochiq proshivka yaratish uchun Intel tomonidan ishlab chiqilgan (Google ham keyinchalik ishlab chiqishga qo'shilgan). Hozirda loyiha Intel Baytrail, CherryTrail, Broadwell, ApolloLake, GeminiLake, CannonLake va IceLake platformalarining ovoz chiplari uchun proshivkalarni ochishga tayyorlandi;
    • Intel DRM drayveri (i915) chiplarni qo'llab-quvvatlaydi
      Elkhartlake (11-avlod). Comet Lake (Gen9) chiplari uchun PCI identifikatorlari qo'shildi. Icelake chiplarini qo'llab-quvvatlash barqarorlashtirildi, ular uchun qo'shimcha PCI qurilma identifikatorlari ham qo'shildi.
      Kiritilgan
      mmio orqali yozish operatsiyalarini bajarishda videoxotiradagi ikkita bufer (async flip) o'rtasida asinxron almashish rejimi, bu ba'zi 3D-ilovalarning ishlashini sezilarli darajada oshirdi (masalan, 3DMark Ice Storm testida ishlash 300-400% ga oshdi). Qo'shilgan texnologik yordam HDCP 2.2 HDMI orqali uzatiladigan video signallarni shifrlash uchun (Yuqori tarmoqli kengligi raqamli tarkibni himoya qilish);

    • Vega20 GPU uchun amdgpu drayveri qo'shildi RAS (Ishonchlilik, mavjudlik, xizmat ko'rsatish) ni qo'llab-quvvatlash va Powerplay texnologiyasini almashtirgan SMU 11 quyi tizimini eksperimental qo'llab-quvvatlash. GPU Vega12 uchun qo'shildi BACO rejimini qo'llab-quvvatlash (Bus Active, Chip Off). XGMI uchun dastlabki yordam qo'shildi, GPU o'zaro ulanishi uchun yuqori tezlikdagi avtobus (PCIe 4.0). Amdkfd drayveriga Polaris10 GPU asosidagi kartalar uchun etishmayotgan identifikatorlar qo'shildi;
    • Nouveau drayveri NVIDIA Turing 117 chipsetiga (TU117, GeForce GTX 1650 da qo'llaniladi) asoslangan platalarni qo'llab-quvvatladi. IN
      kconfig qo'shildi libdrm ning joriy versiyalarida endi ishlatilmaydigan eskirgan funksiyalarni o'chirishni sozlash;

    • DRM API va amdgpu drayveriga "vaqt jadvali" sinxronizatsiya ob'ektlarini qo'llab-quvvatlash qo'shildi, bu sizga klassik blokirovkasiz bajarishga imkon beradi.
    • VirtualBox virtual GPU uchun vboxvideo drayveri staging filialidan asosiy tuzilishga ko'chirildi;
    • GFX SoC ASPEED chipi uchun tezkor drayveri qo'shildi;
    • ARM SoC va Intel Agilex (SoCFPGA), NXP i.MX8MM, Allwinner (RerVision H3-DVK (H3), Oceanic 5205 5inMFD, ,Beelink GS2 (H6), Orange Pi 3 (H6)), Rockchip (Orange Pi) uchun qo‘shimcha qo‘llab-quvvatlash ) platalar RK3399, Nanopi NEO4, Veyron-Mighty Chromebook), Amlogic: SEI Robotics SEI510,
      ST Micro (stm32mp157a, stm32mp157c), NXP (
      Ekkelmann 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),

      Kobo Aura (i.MX50),

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

Shu bilan birga, Lotin Amerikasi erkin dasturiy ta'minot fondi shakllangan
variantni tanlang butunlay bepul yadro 5.2 - Linux-libre 5.2-gnu, ishlab chiqaruvchi tomonidan cheklangan, erkin bo'lmagan komponentlar yoki kod bo'limlarini o'z ichiga olgan proshivka va drayver elementlaridan tozalangan. Yangi versiya fayl yuklashni o'z ichiga oladi
Ovozli ochiq mikrodastur. Drayvlarda bloblarni yuklash o'chirib qo'yilgan
mt7615, rtw88, rtw8822b, rtw8822c, btmtksdio, iqs5xx, ishtp va ucsi_ccg. Ixp4xx, imx-sdma, amdgpu, nouveau va goya drayverlari va quyi tizimlaridagi, shuningdek, mikrokod hujjatlaridagi blobni tozalash kodi yangilandi. R8822be drayverini olib tashlanganligi sababli tozalash bloklarini to'xtatdi.

Manba: opennet.ru

a Izoh qo'shish