Rilis kernel Linux 5.18

Sawise rong wulan pangembangan, Linus Torvalds nampilake rilis kernel Linux 5.18. Antarane owah-owahan sing paling penting: reresik utama saka fungsi lungse ditindakake, Reiserfs FS diumumake lungse, proses penelusuran proses pangguna ditindakake, dhukungan kanggo mekanisme mblokir eksploitasi Intel IBT ditambahake, mode deteksi kebanjiran buffer diaktifake nalika nggunakake fungsi memcpy (), mekanisme kanggo nelusuri telpon fungsi fprobe ditambahake, Kinerja panjadwal tugas ing AMD Zen CPU wis apik, driver kanggo ngatur fungsi Intel CPU (SDS) wis klebu, sawetara patch wis Integrasi kanggo restrukturisasi file header, lan nggunakake standar C11 wis disetujoni.

Versi anyar kalebu 16206 koreksi saka 2127 pangembang (ing release pungkasan ana 14203 fix saka 1995 pangembang), ukuran tembelan 108 MB (pangowahan kena pengaruh 14235 file, 1340982 baris kode ditambahake, 593836 baris dibusak). Udakara 44% saka kabeh owah-owahan sing dikenalake ing 5.18 ana gandhengane karo driver piranti, kira-kira 16% owah-owahan ana gandhengane karo nganyari kode khusus kanggo arsitektur hardware, 11% ana gandhengane karo tumpukan jaringan, 3% ana gandhengane karo sistem file, lan 3% ana hubungane karo subsistem kernel internal.

Inovasi utama ing kernel 5.18:

  • Subsistem disk, I/O lan sistem file
    • Sistem file Btrfs wis nambahake dhukungan kanggo nerusake data sing dikompres nalika nindakake operasi ngirim lan nampa. Sadurunge, nalika nggunakake kirim / nampa, sisih ngirim decompressed data sing disimpen ing wangun kompres, lan sisih panampa recompressed sadurunge nulis. Ing kernel 5.18, aplikasi ruang pangguna sing nggunakake telpon ngirim / nampa diwenehi kemampuan kanggo ngirim data sing dikompres tanpa dibungkus ulang. Fungsi wis dileksanakake thanks kanggo operasi ioctl anyar BTRFS_IOC_ENCODED_READ lan BTRFS_IOC_ENCODED_WRITE, sing ngijini sampeyan kanggo langsung maca lan nulis informasi kanggo extents.

      Kajaba iku, Btrfs nambah kinerja fsync. Nambahake kemampuan kanggo deduplikat lan nindakake reflink (kloning metadata file kanthi nggawe link menyang data sing wis ana tanpa bener-bener nyalin) kanggo kabeh panyimpenan, ora winates ing titik gunung.

    • Ing mode Direct I / O, sampeyan bisa ngakses file sing dienkripsi nalika fscrypt nggunakake enkripsi inline, ing ngendi operasi enkripsi lan dekripsi ditindakake dening pengontrol drive tinimbang kernel. Kanthi enkripsi kernel biasa, akses menyang file sing dienkripsi nggunakake Direct I / O isih ora bisa, amarga file diakses liwat mekanisme buffering ing kernel.
    • Server NFS kalebu dhukungan kanggo protokol NFSv3 kanthi standar, sing saiki ora mbutuhake aktifitas sing kapisah lan kasedhiya nalika NFS diaktifake umume. NFSv3 dianggep minangka versi NFS utama lan tansah didhukung, lan dhukungan kanggo NFSv2 bisa uga ora diterusake ing mangsa ngarep. Efisiensi maca isi direktori saya tambah akeh.
    • Sistem file ReiserFS wis ora digunakake lan samesthine bakal dibusak ing taun 2025. Deprecating ReiserFS bakal nyuda gaweyan sing dibutuhake kanggo njaga owah-owahan sistem file sing ana gandhengane karo dhukungan kanggo API anyar kanggo pemasangan, iomap, lan tomes.
    • Kanggo sistem file F2FS, kemampuan kanggo peta ID pangguna saka sistem file sing dipasang wis dileksanakake, sing digunakake kanggo mbandhingake file pangguna tartamtu ing partisi asing sing dipasang karo pangguna liyane ing sistem saiki.
    • Kode kanggo ngitung statistik ing pawang Piranti-mapper wis digarap maneh, sing wis nambah akurasi akuntansi ing pawang kayata dm-crypt.
    • Piranti NVMe saiki ndhukung checksums 64-bit kanggo mriksa integritas.
    • Kanggo sistem file exfat, opsi mount anyar "keep_last_dots" wis diusulake, sing mateni titik mbusak ing mburi jeneng berkas (ing Windows, titik ing mburi jeneng berkas dibusak minangka standar).
    • EXT4 nambah kinerja mode fast_commit lan nambah skalabilitas. Opsi pemasangan "mb_optimize_scan", sing ngidini nambah kinerja ing kahanan fragmentasi sistem file sing gedhe, diadaptasi kanggo nggarap file kanthi jembar.
    • Dhukungan kanggo nulis stream ing subsistem sing ndhukung piranti pamblokiran wis mandheg. Fitur iki diusulake kanggo SSD, nanging ora nyebar lan saiki ora ana piranti sing digunakake sing ndhukung mode iki lan ora mungkin bakal katon ing mangsa ngarep.
  • Layanan memori lan sistem
    • Integrasi sakumpulan patch wis diwiwiti, saéngga bisa nyuda wektu mbangun maneh kernel kanthi nyusun ulang hirarki file header lan nyuda jumlah dependensi silang. Kernel 5.18 kalebu patch sing ngoptimalake struktur file header penjadwal tugas (kernel/sched). Dibandhingake karo release sadurungé, konsumsi wektu CPU nalika ngrakit kernel / Sched / kode suda dening 61%, lan wektu nyata suda 3.9% (saka 2.95 kanggo 2.84 detik).
    • Kode kernel diidini nggunakake standar C11, diterbitake ing 2011. Sadurunge, kode sing ditambahake menyang kernel kudu tundhuk karo spesifikasi ANSI C (C89), sing dibentuk ing taun 1989. Ing skrip mbangun kernel 5.18, opsi '—std=gnu89' diganti karo '—std=gnu11 -Wno-shift-negative-value'. Kamungkinan nggunakake standar C17 dianggep, nanging ing kasus iki perlu kanggo nambah versi didhukung minimal GCC, nalika Gawan support C11 mathuk menyang syarat saiki kanggo versi GCC (5.1).
    • Ngapikake kinerja jadwal tugas ing prosesor AMD karo Zen microarchitecture, kang nyedhiyani sawetara Last Level Cache (LLC) kanggo saben simpul karo saluran memori lokal. Versi anyar ngilangi ketidakseimbangan LLC ing antarane simpul NUMA, sing nyebabake peningkatan kinerja sing signifikan kanggo sawetara jinis beban kerja.
    • Piranti kanggo nglacak aplikasi ing ruang pangguna wis ditambahi. Versi kernel anyar nambah kemampuan kanggo pangolahan pangguna kanggo nggawe acara pangguna lan nulis data menyang buffer trace, sing bisa dideleng liwat utilitas tracing kernel standar kayata ftrace lan perf. Acara tilase ruang pangguna diisolasi saka acara jejak kernel. Status acara bisa dideleng liwat file /sys/kernel/debug/tracing/user_events_status, lan registrasi acara lan rekaman data liwat file /sys/kernel/debug/tracing/user_events_data.
    • Ditambahake mekanisme kanggo ngawasi (probe) telpon fungsi - fprobe. API fprobe adhedhasar ftrace, nanging mung diwatesi dening kemampuan kanggo masang handler callback kanggo titik entri fungsi lan titik metu fungsi. Boten kados kprobes lan kretprobes, mekanisme anyar ngijini sampeyan kanggo nggunakake siji handler kanggo sawetara fungsi bebarengan.
    • Dhukungan kanggo prosesor ARM lawas (ARMv4 lan ARMv5) sing ora dilengkapi karo unit manajemen memori (MMU) wis mandheg. Dhukungan kanggo sistem ARMv7-M tanpa MMU ditahan.
    • Dhukungan kanggo arsitektur NDS32 kaya RISC sing digunakake ing prosesor Andes Technologies wis mandheg. Kode kasebut dibusak amarga ora ana pangopènan lan kurang panjaluk dhukungan NDS32 ing kernel Linux utama (pangguna sing isih nggunakake mbangun kernel khusus saka pabrikan hardware).
    • Kanthi gawan, mbangun kernel kanthi dhukungan kanggo format file eksekusi a.out dipateni kanggo arsitektur alpha lan m68k, sing terus nggunakake format iki. Iku kamungkinan sing support kanggo warisan format a.out bakal rampung dibusak saka kernel rauh. Rencana mbusak format a.out wis dibahas wiwit taun 2019.
    • Arsitèktur PA-RISC nyedhiyakake dhukungan minimal kanggo mekanisme vDSO (virtual dynamic shared objects), sing nyedhiyakake sekumpulan panggilan sistem sing kasedhiya ing ruang pangguna tanpa ngoper konteks. Dhukungan vDSO digawe iku bisa kanggo ngleksanakake kemampuan kanggo mbukak karo tumpukan non-eksekusi.
    • Dhukungan ditambahake kanggo mekanisme Intel HFI (Hardware Feedback Interface), sing ngidini hardware ngirim informasi menyang kernel babagan kinerja saiki lan efisiensi energi saben CPU.
    • Nambahake driver kanggo mekanisme Intel SDSi (Software-Defined Silicon), sing ngidini sampeyan ngontrol fitur tambahan ing prosesor (contone, instruksi khusus lan memori cache tambahan). Ing idea iku Kripik bisa diwenehake ing rega murah karo fungsi majeng dikunci, kang banjur bisa "dituku" lan kabisan tambahan diaktifake tanpa panggantos hardware chip.
    • Pembalap amd_hsmp wis ditambahake kanggo ndhukung antarmuka AMD HSMP (Host System Management Port), sing nyedhiyakake akses menyang fungsi manajemen prosesor liwat sakumpulan ndhaptar khusus sing muncul ing prosesor server AMD EPYC sing diwiwiti karo generasi Fam19h. Contone, liwat HSMP sampeyan bisa entuk data babagan konsumsi daya lan suhu, nyetel watesan frekuensi, ngaktifake macem-macem mode peningkatan kinerja, lan ngatur paramèter memori.
    • Io_uring bedo aku / antarmuka O ngleksanakake IORING_SETUP_SUBMIT_ALL pilihan kanggo ndhaftar pesawat saka deskriptor file ing buffer ring, lan operasi IORING_OP_MSG_RING kanggo ngirim sinyal saka siji ring buffer kanggo ring buffer liyane.
    • Mekanisme DAMOS (Data Access Monitoring-Based Operation Schemes), sing ngidini memori dibebasake kanthi njupuk frekuensi akses memori, wis ngembangake kemampuan kanggo ngawasi operasi memori saka ruang pangguna.
    • Seri patch katelu wis digabungake karo implementasi konsep folio kaca, sing meh padha karo kaca majemuk, nanging wis nambah semantik lan organisasi kerja sing luwih jelas. Nggunakake tomes ngidini sampeyan nyepetake manajemen memori ing sawetara subsistem kernel. Ing patch ngajokaken, fungsi manajemen memori internal diterjemahake menyang folios, kalebu variasi saka get_user_pages () fungsi. Nyedhiyakake dhukungan kanggo nggawe volume gedhe ing kode sing diwaca ing ngarep.
    • Sistem perakitan saiki ndhukung variabel lingkungan USERCFLAGS lan USERLDFLAGS, sing sampeyan bisa ngirim panji tambahan menyang kompiler lan linker.
    • Ing subsistem eBPF, mekanisme BTF (BPF Type Format), sing nyedhiyakake informasi mriksa jinis ing pseudocode BPF, menehi kemampuan kanggo nambah anotasi menyang variabel sing nuduhake area memori ing ruang pangguna. Anotasi mbantu sistem verifikasi kode BPF luwih ngenali lan verifikasi akses memori.
    • A handler alokasi memori anyar kanggo nyimpen program BPF dimuat wis ngajokaken, sing ngidini luwih efisien nggunakake memori ing kahanan sing nomer akeh program BPF dimuat.
    • MADV_DONTNEED_LOCKED flag wis ditambahake menyang madvise () sistem telpon, kang menehi alat kanggo ngoptimalake Manajemen memori proses, kang nglengkapi flag MADV_DONTNEED ana, liwat kang kernel bisa informed ing advance bab release impending saka pemblokiran memori, i.e. sing pemblokiran iki ora perlu maneh lan bisa digunakake dening kernel. Ora kaya MADV_DONTNEED, panggunaan gendera MADV_DONTNEED_LOCKED diidini kanggo kaca memori sing dipasang ing RAM, sing, nalika diarani madvise, diusir tanpa ngganti status sing disematake lan, yen ana akses sabanjure menyang blok lan generasi "kaca. fault," bali karo naleni wadi. Kajaba iku, owah-owahan wis ditambahake kanggo ngidini gendera MADV_DONTNEED bisa digunakake karo kaca memori gedhe ing HugeTLB.
  • Virtualisasi lan Keamanan
    • Kanggo arsitektur x86, dhukungan wis ditambahake kanggo mekanisme proteksi aliran perintah Intel IBT (Pelacakan Cabang Ora Langsung), sing nyegah panggunaan teknik konstruksi eksploitasi nggunakake teknik pemrograman berorientasi bali (ROP, Return-Oriented Programming), sing eksploitasi kawangun ing wangun chain saka telpon wis ana ing memori saka bêsik instruksi mesin rampung karo instruksi bali kontrol (minangka aturan, iki ends saka fungsi). Inti saka metode proteksi sing dileksanakake yaiku kanggo mblokir transisi ora langsung menyang awak fungsi kanthi nambah instruksi ENDBR khusus ing wiwitan fungsi lan ngidini eksekusi transisi ora langsung mung ing kasus transisi menyang instruksi iki (ora langsung). nelpon liwat JMP lan CALL kudu tansah tiba ing instruction ENDBR, kang diselehake ing fungsi wiwitan banget).
    • Aktifake luwih ketat mriksa wates buffer ing memcpy (), memmove () lan memset () fungsi, dileksanakake ing wektu kompilasi nalika mode CONFIG_FORTIFY_SOURCE diaktifake. Owah-owahan sing ditambahake kanggo mriksa apa unsur struktur sing ukurane dikenal ngluwihi wates. Kacathet yen fitur sing dileksanakake bakal ngidini pamblokiran kabeh buffer buffer kernel sing gegandhengan karo memcpy () sing diidentifikasi paling ora telung taun kepungkur.
    • Added bagean liya saka kode kanggo implementasine dianyari saka RDRAND nomer pseudo-acak generator, kang tanggung jawab kanggo operasi saka / dev / piranti acak lan / dev / urandom. Implementasine anyar kacathet kanggo manunggalaken operasi saka / dev / acak lan / dev / urandom, nambah pangayoman marang katon saka duplikat ing stream nomer acak nalika miwiti mesin virtual, lan ngalih menyang nggunakake fungsi hash BLAKE2s tinimbang SHA1 kanggo operasi pencampuran entropi. Owah-owahan kasebut ningkatake keamanan generator nomer pseudo-acak kanthi ngilangi algoritma SHA1 sing bermasalah lan ngilangi overwriting vektor initialization RNG. Wiwit algoritma BLAKE2s luwih unggul tinimbang kinerja SHA1, panggunaane uga nduwe pengaruh positif ing kinerja.
    • Kanggo arsitektur ARM64, dhukungan wis ditambahake kanggo algoritma bukti asli pointer anyar - "QARMA3", sing luwih cepet tinimbang algoritma QARMA nalika njaga tingkat keamanan sing tepat. Teknologi kasebut ngidini sampeyan nggunakake instruksi ARM64 khusus kanggo verifikasi alamat bali nggunakake tandha digital sing disimpen ing bit ndhuwur sing ora digunakake ing pointer kasebut.
    • Kanggo arsitektur ARM64, support wis dipun ginakaken kanggo Déwan karo Gawan ing GCC 12 saka mode pangayoman marang nimpa alamat bali saka fungsi ing acara saka buffer overflow ing tumpukan. Inti saka pangayoman yaiku kanggo nyimpen alamat bali ing tumpukan "bayangan" sing kapisah sawise nransfer kontrol menyang fungsi lan njupuk alamat kasebut sadurunge metu saka fungsi kasebut.
    • Added keyring anyar - "mesin", ngemot tombol pemilik sistem (MOK, Machine Owner Keys), didhukung ing bootloader shim. Tombol iki bisa digunakake kanggo mlebu digital komponen kernel dimuat ing tataran post-boot (contone, modul kernel).
    • Mbusak dhukungan kanggo kunci pribadi asimetris kanggo TPM, sing ditawakake ing versi TPM lawas, wis ngerti masalah keamanan, lan ora digunakake ing praktik.
    • Nambahake pangayoman data kanthi jinis size_t saka overflows integer. Kode kalebu handlers size_mul (), size_add () lan size_sub (), sing ngijini sampeyan kanggo aman Multiply, nambah lan nyuda ukuran karo jinis size_t.
    • Nalika mbangun kernel, gendéra "-Warray-bounds" lan "-Wzero-length-bounds" diaktifake, sing nampilake bebaya nalika indeks ngluwihi wates array lan nalika array nol-dawa digunakake.
    • Piranti virtio-crypto wis nambah dhukungan kanggo enkripsi nggunakake algoritma RSA.
  • Subsistem jaringan
    • Ing implementasine jembatan jaringan, dhukungan kanggo mode naleni port (mode dikunci) wis ditambahake, ing ngendi pangguna bisa ngirim lalu lintas liwat port mung saka alamat MAC sing sah. Kemampuan kanggo nggunakake sawetara struktur kanggo ngevaluasi status protokol STP (Spanning Tree Protocol) uga wis ditambahake. Sadurunge, VLAN mung bisa dipetakan langsung menyang STP (1: 1), karo saben VLAN ngatur independen. Versi anyar nambah parameter mst_enable, nalika diaktifake, negara VLAN kontrol dening modul MST (Multiple Spanning Trees) lan naleni VLAN bisa cocog karo M: model N.
    • Pakaryan terus kanggo nggabungake alat menyang tumpukan jaringan kanggo nglacak alasan ngeculake paket (kode alasan). Kode alesan dikirim nalika memori sing digandhengake karo paket dibebaske lan ngidini kanggo kahanan kayata paket discard amarga kesalahan header, deteksi spoofing rp_filter, checksum ora bener, metu saka memori, aturan IPSec XFRM micu, nomer urutan TCP ora bener, etc.
    • Sampeyan bisa nransfer paket jaringan saka program BPF sing diluncurake saka ruang pangguna ing mode BPF_PROG_RUN, ing ngendi program BPF dieksekusi ing kernel, nanging ngasilake asil menyang ruang pangguna. Paket dikirim nggunakake subsistem XDP (eXpress Data Path). Mode pangolahan paket langsung didhukung, ing ngendi prosesor XDP bisa ngarahake paket jaringan kanthi cepet menyang tumpukan jaringan utawa menyang piranti liyane. Sampeyan uga bisa nggawe generator piranti lunak lalu lintas eksternal utawa ngganti pigura jaringan menyang tumpukan jaringan.
    • Kanggo program BPF ditempelake cgroups jaringan, wis ngajokaken fungsi helper kanggo tegas nyetel Nilai bali saka telpon sistem, kang ndadekake iku bisa kanggo ngirim informasi luwih lengkap babagan alesan kanggo pamblokiran saka telpon sistem.
    • Subsistem XDP (eXpress Data Path) nambahake dhukungan kanggo paket pecahan sing diselehake ing pirang-pirang buffer, sing ngidini sampeyan ngolah pigura Jumbo ing XDP lan nggunakake TSO / GRO (TCP Segmentation Offload / Generic Receive Offload) kanggo XDP_REDIRECT.
    • Proses mbusak spasi jeneng jaringan wis cepet banget, sing dikarepake ing sawetara sistem gedhe kanthi volume lalu lintas sing akeh.
  • Peralatan
    • Driver amdgpu minangka standar kalebu teknologi sinkronisasi adaptif FreeSync, sing ngidini sampeyan nyetel tingkat refresh informasi ing layar, njamin gambar sing lancar lan ora luh nalika main game lan nonton video. Dhukungan GPU Aldebaran wis diumumake minangka stabil.
    • Pembalap i915 nambahake dhukungan kanggo chip Intel Alderlake N lan kertu grafis diskrit Intel DG2-G12 (Arc Alchemist).
    • Pembalap nouveau nyedhiyakake dhukungan kanggo bitrate sing luwih dhuwur kanggo antarmuka DP / eDP lan dhukungan kanggo extenders kabel lttprs (Link-Training Tunable PHY Repeater).
    • Ing subsistem drm (Direct Rendering Manager) ing driver armada, exynos, gma500, hyperv, imx, inggenic, mcde, mediatek, msm, omap, rcar-du, rockchip, sprd, sti, tegra, tilcdc, xen lan vc4 dhukungan parameter wis ditambahake nomodeset, sing ngijini sampeyan kanggo mateni ngoper mode video ing tingkat kernel lan nggunakake piranti percepatan Rendering hardware, mung ninggalake fungsi related kanggo framebuffer sistem.
    • Dhukungan tambahan kanggo ARM SoС Qualcomm Snapdragon 625/632 (digunakake ing smartphone LG Nexus 5X lan Fairphone FP3), Samsung Exynos 850, Samsung Exynos 7885 (digunakake ing Samsung Galaxy A8), Airoha (Mediatek/EcoNet) EN7523, Mediatek mt6582 (Prestigio PMT) tablet 5008G), Microchip Lan3, Renesas RZ/G966LC, RZ/V2L, Tesla FSD, TI K2/AM3 lan i.MXRTxxxx.
    • Dhukungan tambahan kanggo piranti lan papan ARM saka Broadcom (Raspberry Pi Zero 2 W), Qualcomm (Google Herobrine R1 Chromebook, SHIFT6mq, Samsung Galaxy Book2), Rockchip (Pine64 PineNote, Bananapi-R2-Pro, STM32 Emtrion emSBS, Samsung Galaxy Tab S , Prestigio PMT5008 3G tablet), Allwinner (A20-Marsboard), Amlogic (Amediatek X96-AIR, CYX A95XF3-AIR, Haochuangy H96-Max, Amlogic AQ222 lan OSMC Vero 4K+), Aspeed (Quanta S6HMVEHMl), Marvell ROMED8Q, ASRock / Armada (Ctera C3 V200 lan V1 NAS), Mstar (DongShanPiOne, Miyoo Mini), NXP i.MX (Protonic PRT2MM, emCON-MX8M Mini, Toradex Verdin, Gateworks GW8).
    • Dhukungan tambahan kanggo sistem swara lan codec AMD PDM, Atmel PDMC, Awinic AW8738, i.MX TLV320AIC31xx, Intel CS35L41, ESSX8336, Mediatek MT8181, nVidia Tegra234, Qualcomm SC7280, Renesas RZ/V2TASM, Texas Instruments. Nambahake implementasine awal driver swara kanggo chip Intel AVS DSP. Dhukungan driver sing dianyari kanggo Intel ADL lan Tegra585, lan nggawe owah-owahan kanggo nambah dhukungan audio ing piranti Dell, HP, Lenovo, ASUS, Samsung lan Clevo.

    Ing wektu sing padha, Latin American Free Software Foundation mbentuk versi kernel gratis 5.18 - Linux-libre 5.18-gnu, ngresiki unsur perangkat kukuh lan driver sing ngemot komponen utawa bagean kode sing ora gratis, ruang lingkup sing diwatesi. dening pabrikan. Rilis anyar ngresiki driver kanggo panel MIPI DBI, VPU Amphion, WiFi MediaTek MT7986 WMAC, Mediatek MT7921U (USB) lan Realtek 8852a/8852c, chip swara Intel AVS lan Texas Instruments TAS5805M. File DTS uga diresiki kanggo macem-macem Qualcomm SoC kanthi prosesor adhedhasar arsitektur AArch64. Kode reresik blob sing dianyari ing driver lan subsistem AMD GPU, MediaTek MT7915, Silicon Labs WF200+ WiFi, Mellanox Spectru Ethernet, Realtek rtw8852c, Qualcomm Q6V5, Wolfson ADSP, MediaTek HCI UART.

Source: opennet.ru

Add a comment