Linux 6.3 yadro versiyasi

Ikki oylik rivojlanishdan so'ng Linus Torvalds Linux yadrosi 6.3 versiyasini taqdim etdi. Eng e'tiborga molik o'zgarishlar orasida: eski ARM platformalari va grafik drayverlarini tozalash, Rust tilini qo'llab-quvvatlashning davomli integratsiyasi, hwnoise yordam dasturi, BPFda qizil-qora daraxt tuzilmalarini qo'llab-quvvatlash, IPv4 uchun BIG TCP rejimi, o'rnatilgan Dhrystone benchmark, o'chirish qobiliyati memfd-da bajarilishi, BPF yordamida HID drayverlarini yaratishni qo'llab-quvvatlash, blok guruhlarining parchalanishini kamaytirish uchun Btrfs-ga o'zgartirishlar kiritildi.

Yangi versiya 15637 ta ishlab chiquvchilardan 2055 ta tuzatishni o'z ichiga oladi; yamoq hajmi - 76 MB (o'zgarishlar 14296 ta faylga ta'sir qildi, 1023183 qator kod qo'shildi, 883103 qator o'chirildi). Taqqoslash uchun, oldingi versiyada 16843 ta ishlab chiquvchidan 2178 62 ta tuzatish taklif qilingan; yamoq hajmi 39 MB. 6.3 yadrosiga kiritilgan barcha o'zgarishlarning taxminan 15% qurilma drayverlari bilan bog'liq, o'zgarishlarning taxminan 10% apparat arxitekturasiga xos kodni yangilash bilan bog'liq, 5% tarmoq stekiga, 3% fayl tizimlariga va XNUMX% ichki yadro quyi tizimlari bilan bog'liq.

6.3 yadrosidagi asosiy yangiliklar:

  • Xotira va tizim xizmatlari
    • Eski va foydalanilmagan ARM platalari bilan bog'liq kodni sezilarli darajada tozalash amalga oshirildi, bu yadro manba kodining hajmini 150 ming qatorga qisqartirish imkonini berdi. 40 dan ortiq eski ARM platformalari olib tashlandi.
    • BPF dasturlari ko'rinishida amalga oshirilgan HID (Inson interfeysi qurilmasi) interfeysi bilan kiritish qurilmalari uchun drayverlarni yaratish imkoniyati amalga oshirildi.
    • Rust-for-Linux filialidan drayverlar va yadro modullarini ishlab chiqish uchun Rust tilidan ikkinchi til sifatida foydalanish bilan bog'liq qo'shimcha funktsiyalarni uzatish davom etdi. Zangni qo'llab-quvvatlash sukut bo'yicha yoqilmagan va Rust yadro qurilishiga zarur bo'lgan bog'liqlik sifatida kiritilishiga olib kelmaydi. Oldingi versiyalarda taqdim etilgan funksiyalar Arc (mos yozuvlar soni bilan ko'rsatgichlarni amalga oshirish), ScopeGuard (ko'rsatkichdan tashqariga chiqqanda tozalash) va ForeignOwnable (C va Rust kodlari o'rtasida ko'rsatgichlarning harakatlanishini ta'minlaydi) turlarini qo'llab-quvvatlash uchun kengaytirilgan. "Qarz" moduli ("Sigir" turi va "ToOwned" xususiyati) "alloc" paketidan olib tashlandi. Qayd etilishicha, yadrodagi Rust-ni qo'llab-quvvatlash holati allaqachon Rust-da yozilgan birinchi modullarni yadroga qabul qilishni boshlashga yaqin.
    • Linux foydalanuvchi rejimi (yadroni foydalanuvchi jarayoni sifatida ishga tushirish) x86-64 tizimlarida Rust tilida yozilgan kodni qo'llab-quvvatlaydi. Ulanish vaqtini optimallashtirish (LTO) yoqilgan clang yordamida Linux foydalanuvchi rejimini yaratish uchun qoʻshimcha yordam.
    • Uskuna sabab bo'lgan kechikishlarni kuzatish uchun hwnoise yordam dasturi qo'shildi. Operatsiyalarni bajarish vaqtidagi og'ishlar (jitter) uzilishlarni qayta ishlash o'chirilgan bo'lsa, hisob-kitoblarning 10 daqiqasi uchun bir mikrosekunddan oshib ketganda aniqlanadi.
    • Dhrystone benchmarkini amalga oshiradigan yadro moduli qo'shildi, undan foydalanuvchi bo'shlig'i komponentlari bo'lmagan konfiguratsiyalarda protsessor ishlashini baholash uchun foydalanish mumkin (masalan, faqat yadro yuklashni amalga oshiradigan yangi SoC'lar uchun portlash bosqichida).
    • BPF dasturlari uchun xotira iste'molini hisobga olishni o'chirib qo'yadigan "cgroup.memory=nobpf" yadro buyruq qatori parametri qo'shildi, bu izolyatsiyalangan konteynerli tizimlar uchun foydali bo'lishi mumkin.
    • BPF dasturlari uchun yangi xaritalash turini qo'shish o'rniga kfunc + kptr (bpf_rbtree_add, bpf_rbtree_remove, bpf_rbtree_first) dan foydalanadigan qizil-qora daraxt ma'lumotlar strukturasini amalga oshirish taklif etiladi.
    • Qayta ishga tushiriladigan ketma-ketliklar mexanizmi (rseq, qayta ishga tushiriladigan ketma-ketliklar) protsessor raqami bilan identifikatsiyalangan jarayonlarga parallel bajarilish identifikatorlarini (xotira-xaritasi parallellik identifikatori) o'tkazish imkoniyatini qo'shdi. Rseq atomik operatsiyalarni tezda bajarish uchun vositani taqdim etadi, agar boshqa ip bilan uzilgan bo'lsa, tozalanadi va yana urinib ko'riladi.
    • ARM protsessorlari SME 2 (Scalable Matrix Extension) ko'rsatmalarini qo'llab-quvvatlaydi.
    • S390x va RISC-V RV64 arxitekturalari uchun yadro va BPF dasturlari o'rtasida qo'ng'iroqlarni o'tkazishda qo'shimcha xarajatlarni minimallashtirish imkonini beruvchi "BPF trambolin" mexanizmini qo'llab-quvvatlash amalga oshirildi.
    • RISC-V arxitekturasiga asoslangan protsessorli tizimlarda string operatsiyalarini tezlashtirish uchun "ZBB" ko'rsatmalaridan foydalanish amalga oshiriladi.
    • LoongArch ko'rsatmalar to'plami arxitekturasiga asoslangan tizimlar uchun (Loongson 3 5000 protsessorlarida qo'llaniladi va MIPS va RISC-V ga o'xshash yangi RISC ISA ni amalga oshiradi), yadro manzil maydonini tasodifiylashtirishni qo'llab-quvvatlash (KASLR), yadro xotirasini joylashtirishdagi o'zgarishlar (ko'chirish) ), apparat nuqtalari to'xtash va kprobe mexanizmi amalga oshiriladi.
    • Xotiraga kirish chastotasiga qarab xotirani bo'shatish imkonini beruvchi DAMOS (Data Access Monitoring-based Operation Schemes) mexanizmi ma'lum xotira maydonlarini DAMOS-da qayta ishlashni istisno qilish uchun filtrlarni qo'llab-quvvatlaydi.
    • Nolibc minimal standart C kutubxonasi s390 arxitekturasi va Arm Thumb1 ko'rsatmalar to'plamini qo'llab-quvvatlaydi (ARM, AArch64, i386, x86_64, RISC-V va MIPS qo'llab-quvvatlashidan tashqari).
    • Objtool yadro yig'ilishini tezlashtirish va yig'ish paytida maksimal xotira iste'molini kamaytirish uchun optimallashtirilgan (yadroni "allyesconfig" rejimida qurishda endi 32 GB RAMga ega tizimlarda jarayonlarni majburiy to'xtatish bilan bog'liq muammolar yo'q).
    • Intel ICC kompilyatori tomonidan yadro yig'ilishini qo'llab-quvvatlash to'xtatildi, u uzoq vaqt davomida ishlamayapti va hech kim uni tuzatish istagini bildirmadi.
  • Disk quyi tizimi, kiritish-chiqarish va fayl tizimlari
    • tmpfs o'rnatilgan xorijiy bo'limdagi ma'lum bir foydalanuvchining fayllarini joriy tizimdagi boshqa foydalanuvchi bilan moslashtirish uchun foydalaniladigan o'rnatilgan fayl tizimlarining foydalanuvchi identifikatorlarini xaritalash uchun yordamni amalga oshiradi.
    • Btrfs-da bloklar guruhlarining parchalanishini kamaytirish uchun bloklarni taqsimlashda kengaytmalar hajmiga bo'linadi, ya'ni. har qanday bloklar guruhi endi kichik (128 KB gacha), o'rta (8 MB gacha) va katta hajmlar bilan cheklangan. raid56 ilovasi qayta ishlandi. Tekshirish summalarini tekshirish uchun kod qayta ishlangan. Kataloglar uchun utime keshlash va faqat kerak bo'lganda buyruqlarni bajarish orqali jo'natish jarayonini 10 baravargacha tezlashtirish uchun ishlashni optimallashtirish amalga oshirildi. Fiemap operatsiyalari endi umumiy ma'lumotlar (oniy suratlar) uchun backlink tekshiruvlarini o'tkazib yuborish orqali uch baravar tezroq. Metadata bilan operatsiyalar b-daraxt tuzilmalarida kalitlarni qidirishni optimallashtirish orqali 10% ga tezlashdi.
    • Ext4 fayl tizimining ishlashi bir nechta jarayonlarga bir vaqtning o'zida eksklyuziv qulflar o'rniga umumiy inode blokirovkalari yordamida oldindan ajratilgan bloklarda to'g'ridan-to'g'ri kiritish-chiqarish operatsiyalarini bajarishga ruxsat berish orqali yaxshilandi.
    • F2fs-da kodni o'qishni yaxshilash bo'yicha ish olib borildi. Atom yozuvlari va yangi kesh hajmi bilan bog'liq muhim masalalar hal qilindi.
    • Faqat o'qish uchun bo'limlarda foydalanish uchun mo'ljallangan EROFS (Enhanced Read-Only File System) fayl tizimi ma'lumotlarga kirishda kechikishni kamaytirish uchun siqilgan fayl tarkibini dekompressiyalash operatsiyalarini protsessorga ulash qobiliyatini amalga oshiradi.
    • BFQ I/O rejalashtiruvchisi bir nechta alohida boshqariladigan bosh drayverlardan (Multi Actuators) foydalanadiganlar kabi ilg'or aylanuvchi disk drayverlarini qo'llab-quvvatladi.
    • AES-SHA2 algoritmi yordamida ma'lumotlarni shifrlashni qo'llab-quvvatlash NFS mijozi va server dasturiga qo'shildi.
    • So'rovni kengaytirish mexanizmini qo'llab-quvvatlash FUSE (Fayl tizimlari In User Space) quyi tizimiga qo'shildi, bu so'rovga qo'shimcha ma'lumotlarni joylashtirish imkonini beradi. Ushbu xususiyatdan kelib chiqib, FS so'roviga guruh identifikatorlarini qo'shish mumkin, ular FSda ob'ektlarni yaratishda kirish huquqlarini hisobga olish uchun zarur (create, mkdir, symlink, mknod).
  • Virtualizatsiya va xavfsizlik
    • X86 tizimlari uchun KVM gipervizori Hyper-V kengaytirilgan giperqo'ng'iroqlarini qo'llab-quvvatladi va ularni foydalanuvchi maydonidagi xost muhitida ishlaydigan ishlov beruvchiga yo'naltirishni ta'minladi. O'zgartirish Hyper-V gipervizorining ichki ishga tushirilishini qo'llab-quvvatlashni amalga oshirish imkonini berdi.
    • KVM samaradorlikni o'lchash bilan bog'liq PMU (Performance Monitor Unit) hodisalariga mehmonlar kirishini cheklashni osonlashtiradi.
    • Jarayonlar o'rtasida uzatiladigan fayl identifikatori orqali xotira maydonini aniqlash imkonini beruvchi memfd mexanizmi kod bajarilishi taqiqlangan (bajarish mumkin bo'lmagan memfd) va kelajakda ijro huquqlarini o'rnatish mumkin bo'lmagan hududlarni yaratish imkoniyatini qo'shdi. .
    • Yangi PR_SET_MDWE prctl operatsiyasi qo'shildi, u bir vaqtning o'zida yozish va bajarish imkonini beruvchi xotiraga kirish huquqlarini yoqish urinishlarini bloklaydi.
    • AMD Zen 4 protsessorlarida taklif qilingan avtomatik IBRS (Enhanced Indirect Branch Restricted Speculation) rejimiga asoslanib, Spektr sinfidagi hujumlardan himoya sukut boʻyicha qoʻshilgan va yoqilgan boʻlib, bu uzilishlarni qayta ishlash, tizim qoʻngʻiroqlari va tizim qoʻngʻiroqlari paytida koʻrsatmalarning spekulyativ bajarilishiga moslashtirilgan tarzda ruxsat berish va oʻchirish imkonini beradi. kontekst kalitlari. Tavsiya etilgan himoya Retpoline himoyasi bilan solishtirganda pastroq bo'ladi.
    • Bir vaqtning o'zida ko'p tarmoqli texnologiyasidan (SMT yoki Hyper-Threading) foydalanganda Spectre v2 hujumlaridan himoyani chetlab o'tish imkonini beruvchi va IBRS himoya rejimini tanlashda STIBP (Single Thread Indirect Branch Predictors) mexanizmini o'chirib qo'yish natijasida yuzaga kelgan zaiflik tuzatildi.
    • ARM64 arxitekturasiga asoslangan tizimlar uchun yangi yig'ish maqsadi "virtconfig" qo'shildi, tanlanganda virtualizatsiya tizimlarida yuklash uchun zarur bo'lgan yadro komponentlarining minimal to'plami faollashadi.
    • M68k arxitekturasi uchun seccomp mexanizmi yordamida tizim qo'ng'iroqlarini filtrlash qo'llab-quvvatlandi.
    • Microsoft Pluton texnologiyasiga asoslangan AMD Ryzen protsessorlariga o'rnatilgan CRB TPM2 (Command Response Buffer) qurilmalari uchun qo'shimcha yordam.
  • Tarmoq quyi tizimi
    • IEEE 802.3cg-2019 spetsifikatsiyasida aniqlangan va Internet of Things qurilmalari va sanoat tizimlarini ulash uchun optimallashtirilgan 802.3cg (10Base-T1S) Ethernet tarmoqlarida qoʻllaniladigan PLCA (Jismoniy qatlam toʻqnashuvidan qochish) pastki qavatini sozlash uchun netlink interfeysi qoʻshildi. PLCA-dan foydalanish umumiy media bilan Ethernet tarmoqlarida ishlashni yaxshilaydi.
    • WiFi 7 (802.11be) simsiz interfeyslarini boshqarish uchun “simsiz kengaytmalar” API-ni qo‘llab-quvvatlash to‘xtatildi, chunki bu API barcha kerakli sozlamalarni qamrab olmaydi. Emulyatsiya qilingan qatlam sifatida qo'llab-quvvatlanayotgan "simsiz kengaytmalar" API-dan foydalanishga urinayotganda, endi ko'pchilik joriy qurilmalar uchun ogohlantirish ko'rsatiladi.
    • Netlink API bo'yicha batafsil hujjatlar tayyorlandi (asosiy ishlab chiquvchilar va foydalanuvchi-kosmik ilovalarni ishlab chiquvchilar uchun). Netlink protokolining YAML spetsifikatsiyalari asosida C kodini yaratish uchun ynl-gen-c yordam dasturi amalga oshirildi.
    • SNAT dan foydalanmasdan manzil tarjimonlari orqali chiquvchi ulanishlar konfiguratsiyasini soddalashtirish uchun tarmoq rozetkalariga IP_LOCAL_PORT_RANGE opsiyasi qo‘shildi. Bir nechta xostlarda bitta IP-manzildan foydalanilganda, IP_LOCAL_PORT_RANGE har bir xostda chiquvchi tarmoq portlarining boshqa diapazonidan foydalanish va shlyuzdagi port raqamlari asosida paketlarni yuborish imkonini beradi.
    • MPTCP (MultiPath TCP) uchun IPv4 va IPv6 protokollari yordamida aralash oqimlarni qayta ishlash imkoniyati joriy qilingan. MPTCP - bu turli IP-manzillar bilan bog'langan turli tarmoq interfeyslari orqali bir vaqtning o'zida bir nechta marshrutlar bo'ylab paketlarni etkazib berish bilan TCP ulanishining ishlashini tashkil qilish uchun TCP protokolining kengaytmasi.
    • IPv4 uchun BIG TCP kengaytmasidan foydalanish mumkin, bu esa yuqori tezlikdagi ichki ma'lumotlar markazlari tarmoqlarining ishlashini optimallashtirish uchun maksimal TCP paket hajmini 4 Gbgacha oshirish imkonini beradi. 16 bitli sarlavha maydoni o'lchamiga ega bo'lgan paket hajmining xuddi shunday o'sishiga IP sarlavhasidagi hajmi 0 ga o'rnatilgan va haqiqiy hajmi alohida 32 bitli uzatiladigan "jumbo" paketlarni amalga oshirish orqali erishiladi. alohida biriktirilgan sarlavhadagi maydon.
    • Yangi sysctl default_rps_mask parametri qo'shildi, bu orqali siz standart RPS (Paket boshqaruvini qabul qilish) konfiguratsiyasini o'rnatishingiz mumkin, bu protsessor yadrolari bo'ylab kiruvchi trafikni qayta ishlashni uzilishlar darajasida taqsimlash uchun javobgardir.
    • CBQ (sinfga asoslangan navbat), ATM (ATM virtual sxemalari), dsmark (differentsiallashtirilgan xizmat ko'rsatish belgisi), tcindex (trafikni boshqarish indeksi) va RSVP (resurslarni band qilish protokoli) trafigini cheklash uchun navbatni qayta ishlash intizomini qo'llab-quvvatlash to'xtatildi. Bu fanlar uzoq vaqtdan beri tark etilgan va ularni qo'llab-quvvatlashni davom ettirishni xohlaydigan hech kim yo'q edi.
  • uskunalar
    • DRI1 asosidagi barcha grafik drayverlar olib tashlandi: i810 (eski oʻrnatilgan Intel 8xx grafik kartalari), mga (Matrox GPU), r128 (ATI Rage 128 GPU, shu jumladan Rage Fury, XPERT 99 va XPERT 128 kartalari), vahşi (S3 Savage GPU), sis (Crusty SiS GPU), tdfx (3dfx Voodoo) va via (VIA IGP), ular 2016 yilda eskirgan va 2012 yildan beri Mesa'da qo'llab-quvvatlanmaydi.
    • Eski ramka bufer drayverlari (fbdev) omap1, s3c2410, tmiofb va w100fb olib tashlandi.
    • Intel Meteor Lake protsessoriga (14-avlod) integratsiyalangan VPU (Versatile Processing Unit) birliklari uchun DRM drayveri qo'shildi, bu kompyuterni ko'rish va mashinani o'rganish bilan bog'liq operatsiyalarni tezlashtirish uchun mo'ljallangan. Drayv alohida ASIC ko'rinishida yoki SoC va GPU ichidagi IP bloklari sifatida taqdim etilishi mumkin bo'lgan hisoblash tezlatgichlarini qo'llab-quvvatlashga qaratilgan "tezlashtirish" quyi tizimi yordamida amalga oshiriladi.
    • i915 (Intel) drayveri diskret Intel Arc (DG2/Alchemist) grafik kartalarini qo'llab-quvvatlashni kengaytiradi, Meteor Lake GPU'lari uchun dastlabki yordamni ta'minlaydi va Intel Xe HP 4tile GPU'larini qo'llab-quvvatlaydi.
    • Amdgpu drayveri AdaptiveSync texnologiyasini qo'llab-quvvatlaydi va bir nechta displeylar bilan Secure Display rejimidan foydalanish imkoniyatini qo'shadi. DCN 3.2 (Display Core Next), SR-IOV RAS, VCN RAS, SMU 13.x va DP 2.1 uchun yangilangan qo'llab-quvvatlash.
    • MSM drayveri (Qualcomm Adreno GPU) SM8350, SM8450 SM8550, SDM845 va SC8280XP platformalarini qoʻllab-quvvatladi.
    • Nouveau drayveri endi eski ioctl qo'ng'iroqlarini qo'llab-quvvatlamaydi.
    • Etnaviv drayveriga NPU VerSilicon (VeriSilicon Neyron Network Processor) uchun eksperimental yordam qo'shildi.
    • Pata_parport drayveri parallel port orqali ulangan IDE drayverlari uchun amalga oshirildi. Qo'shilgan drayver bizga eski PARIDE drayverini yadrodan olib tashlash va ATA quyi tizimini modernizatsiya qilish imkonini berdi. Yangi drayverning cheklovi parallel port orqali printer va diskni bir vaqtning o'zida ulashning mumkin emasligidir.
    • Wi-Fi 12-ni qo'llab-quvvatlaydigan Qualcomm chiplarida simsiz kartalar uchun ath7k drayveri qo'shildi. RealTek RTL8188EU chiplarida simsiz kartalar uchun qo'shimcha qo'llab-quvvatlash.
    • Samsung Galaxy tab A (46), Samsung Galaxy S64, BananaPi R2015, Debix Model A, EmbedFire LubanCat 5/3, Facebook Greatlakes, Orange Pi R1 Plus, Tesla FSD va shu jumladan ARM2 arxitekturasi asosidagi protsessorli 1 ta plata uchun qo‘shimcha qo‘llab-quvvatlandi. shuningdek, Qualcomm MSM8953 (Snapdragon 610), SM8550 (Snapdragon 8 Gen 2), SDM450 va SDM632, Rockchips RK3128 TV qutisi, RV1126 Vision, RK3588, RK3568, RK3566, RK3588, RK3328 va KRKAM3 (RK642) SoC asosidagi qurilmalar 654 /AM68 /AM69).

Shu bilan birga, Lotin Amerikasi Erkin dasturiy ta'minot jamg'armasi butunlay bepul yadro 6.3 - Linux-libre 6.3-gnu versiyasini yaratdi, u dasturiy ta'minot elementlaridan va bepul bo'lmagan komponentlar yoki kod bo'limlarini o'z ichiga olgan drayverlardan tozalandi, ularning doirasi ishlab chiqaruvchi tomonidan cheklangan. 6.3 versiyasida bloblar yangi ath12k, aw88395 va peb2466 drayverlarida, shuningdek, AArch64 arxitekturasiga asoslangan qcom qurilmalari uchun yangi devicetree fayllarida tozalandi. Amdgpu, xhci-rcar, qcom-q6v5-pas, sp8870, av7110 drayverlari va quyi tizimlarida, shuningdek dasturiy ta'minot dekodlashi bilan DVB kartalari uchun drayverlarda va oldindan kompilyatsiya qilingan BPF fayllarida yangilangan blob tozalash kodi. Mga, r128, tm6000, cpia2 va r8188eu drayverlarini yadrodan olib tashlanganidan keyin tozalash to'xtatildi. Yaxshilangan i915 drayverini blob tozalash.

Manba: opennet.ru

a Izoh qo'shish