Keluaran kernel Linux 6.3

Selepas dua bulan pembangunan, Linus Torvalds membentangkan keluaran kernel Linux 6.3. Antara perubahan yang paling ketara: pembersihan platform ARM dan pemacu grafik warisan, penyepaduan berterusan sokongan bahasa Rust, utiliti hwnoise, sokongan untuk struktur pokok merah-hitam dalam BPF, mod BIG TCP untuk IPv4, penanda aras Dhrystone terbina dalam, keupayaan untuk melumpuhkan pelaksanaan dalam memfd, sokongan mencipta pemacu HID menggunakan BPF, perubahan telah dibuat kepada Btrfs untuk mengurangkan pemecahan kumpulan blok.

Versi baharu termasuk 15637 pembaikan daripada 2055 pembangun; saiz tampung - 76 MB (perubahan mempengaruhi 14296 fail, 1023183 baris kod telah ditambahkan, 883103 baris telah dipadamkan). Sebagai perbandingan, versi sebelumnya menawarkan 16843 pembaikan daripada 2178 pembangun; saiz tampalan ialah 62 MB. Kira-kira 39% daripada semua perubahan yang diperkenalkan dalam kernel 6.3 berkaitan dengan pemacu peranti, kira-kira 15% perubahan berkaitan dengan pengemaskinian kod khusus untuk seni bina perkakasan, 10% berkaitan dengan timbunan rangkaian, 5% berkaitan dengan sistem fail dan 3% adalah berkaitan dengan subsistem kernel dalaman.

Inovasi utama dalam kernel 6.3:

  • Perkhidmatan memori dan sistem
    • Pembersihan kod penting yang berkaitan dengan papan ARM lama dan tidak digunakan telah dijalankan, yang memungkinkan untuk mengurangkan saiz kod sumber kernel sebanyak 150 ribu baris. Lebih daripada 40 platform ARM lama telah dialih keluar.
    • Keupayaan untuk mencipta pemacu untuk peranti input dengan antara muka HID (Peranti Antaramuka Manusia), yang dilaksanakan dalam bentuk program BPF, telah dilaksanakan.
    • Pemindahan dari cawangan Rust-for-Linux fungsi tambahan yang berkaitan dengan penggunaan bahasa Rust sebagai bahasa kedua untuk membangunkan modul pemacu dan kernel telah diteruskan. Sokongan Rust tidak didayakan secara lalai, dan tidak menyebabkan Rust disertakan sebagai pergantungan binaan kernel yang diperlukan. Fungsi yang ditawarkan dalam keluaran sebelumnya telah diperluaskan untuk menyokong jenis Arc (pelaksanaan penunjuk dengan kiraan rujukan), ScopeGuard (pembersihan apabila keluar dari skop) dan ForeignOwnable (menyediakan pergerakan penunjuk antara kod C dan Rust). Modul 'pinjam' (taip 'Lembu' dan sifat 'ToOwned') telah dialih keluar daripada pakej 'alloc'. Adalah diperhatikan bahawa keadaan sokongan Rust dalam kernel sudah hampir untuk mula menerima modul pertama yang ditulis dalam Rust ke dalam kernel.
    • Linux mod pengguna (menjalankan kernel sebagai proses pengguna) pada sistem x86-64 melaksanakan sokongan untuk kod yang ditulis dalam bahasa Rust. Menambah sokongan untuk membina Linux mod Pengguna menggunakan dentang dengan pengoptimuman masa pautan (LTO) didayakan.
    • Menambahkan utiliti hwnoise untuk mengesan kelewatan yang disebabkan oleh perkakasan. Penyimpangan dalam masa pelaksanaan operasi (jitter) ditentukan apabila pemprosesan gangguan dilumpuhkan, melebihi satu mikrosaat setiap 10 minit pengiraan.
    • Menambahkan modul kernel yang melaksanakan penanda aras Dhrystone, yang boleh digunakan untuk menilai prestasi CPU dalam konfigurasi tanpa komponen ruang pengguna (contohnya, pada peringkat porting untuk SoC baharu yang hanya melaksanakan pemuatan kernel).
    • Menambahkan parameter baris arahan kernel "cgroup.memory=nobpf", yang melumpuhkan perakaunan penggunaan memori untuk program BPF, yang boleh berguna untuk sistem dengan bekas terpencil.
    • Untuk program BPF, pelaksanaan struktur data pokok merah-hitam dicadangkan, yang menggunakan kfunc + kptr (bpf_rbtree_add, bpf_rbtree_remove, bpf_rbtree_first) dan bukannya menambah jenis pemetaan baharu.
    • Mekanisme urutan boleh dimulakan semula (rseq, urutan boleh dimulakan semula) telah menambahkan keupayaan untuk memindahkan pengecam pelaksanaan selari (ID konkurensi peta memori) kepada proses, yang dikenal pasti dengan nombor CPU. Rseq menyediakan cara untuk melaksanakan operasi dengan cepat secara atom, yang jika diganggu oleh benang lain akan dibersihkan dan dicuba semula.
    • Pemproses ARM menyokong arahan SME 2 (Scalable Matrix Extension).
    • Untuk seni bina s390x dan RISC-V RV64, sokongan untuk mekanisme "trampolin BPF" telah dilaksanakan, yang membolehkan meminimumkan overhed apabila memindahkan panggilan antara program kernel dan BPF.
    • Pada sistem dengan pemproses berdasarkan seni bina RISC-V, penggunaan arahan "ZBB" dilaksanakan untuk mempercepatkan operasi rentetan.
    • Untuk sistem berdasarkan seni bina set arahan LoongArch (digunakan dalam pemproses Loongson 3 5000 dan melaksanakan RISC ISA baharu, serupa dengan MIPS dan RISC-V), sokongan untuk rawak ruang alamat kernel (KASLR), perubahan dalam peletakan memori kernel (penempatan semula ), titik perkakasan dilaksanakan mekanisme berhenti dan kprobe.
    • Mekanisme DAMOS (Skim Operasi Berasaskan Pemantauan Akses Data), yang membolehkan anda mengosongkan memori berdasarkan kekerapan capaian memori, menyokong penapis untuk mengecualikan kawasan memori tertentu daripada pemprosesan dalam DAMOS.
    • Pustaka C standard minimum Nolibc menyediakan sokongan untuk seni bina s390 dan set arahan Arm Thumb1 (selain sokongan untuk ARM, AArch64, i386, x86_64, RISC-V dan MIPS).
    • Objtool telah dioptimumkan untuk mempercepatkan pemasangan kernel dan mengurangkan penggunaan memori puncak semasa pemasangan (apabila membina kernel dalam mod "allyesconfig", kini tiada masalah dengan penamatan paksa proses pada sistem dengan 32 GB RAM).
    • Sokongan untuk pemasangan kernel oleh pengkompil Intel ICC telah dihentikan, yang telah lama tidak berfungsi dan tiada siapa yang menyatakan keinginan untuk memperbaikinya.
  • Subsistem cakera, I/O dan sistem fail
    • tmpfs melaksanakan sokongan untuk memetakan ID pengguna sistem fail yang dipasang, digunakan untuk memadankan fail pengguna tertentu pada partition asing yang dipasang dengan pengguna lain pada sistem semasa.
    • Dalam Btrfs, untuk mengurangkan pemecahan kumpulan blok, takat dibahagikan mengikut saiz apabila memperuntukkan blok, i.e. mana-mana kumpulan blok kini terhad kepada takat kecil (sehingga 128KB), sederhana (sehingga 8 MB) dan besar. Pelaksanaan raid56 telah difaktorkan semula. Kod untuk menyemak jumlah semak telah diolah semula. Pengoptimuman prestasi telah dibuat untuk mempercepatkan operasi penghantaran sehingga 10 kali dengan caching utime untuk direktori dan melaksanakan arahan hanya apabila perlu. Operasi Fiemap kini tiga kali lebih pantas dengan melangkau semakan pautan balik untuk data yang dikongsi (gambar). Operasi dengan metadata telah dipercepatkan sebanyak 10% dengan mengoptimumkan carian untuk kunci dalam struktur b-tree.
    • Prestasi sistem fail ext4 telah dipertingkatkan dengan membenarkan berbilang proses serentak melaksanakan operasi I/O terus pada blok pra-peruntukan menggunakan kunci inod kongsi dan bukannya kunci eksklusif.
    • Dalam f2fs, kerja telah dilakukan untuk meningkatkan kebolehbacaan kod. Menyelesaikan isu penting yang berkaitan dengan penulisan atom dan cache tahap baharu.
    • Sistem fail EROFS (Enhanced Read-Only File System), yang direka untuk digunakan dalam partition baca sahaja, melaksanakan keupayaan untuk mengikat operasi penyahmampatan kandungan fail termampat ke CPU untuk mengurangkan kependaman apabila mengakses data.
    • Penjadual I/O BFQ telah menambah sokongan untuk pemacu cakera berputar lanjutan, seperti yang menggunakan berbilang pemacu kepala dikawal berasingan (Multi Actuator).
    • Sokongan untuk penyulitan data menggunakan algoritma AES-SHA2 telah ditambahkan pada pelaksanaan klien dan pelayan NFS.
    • Sokongan untuk mekanisme pengembangan pertanyaan telah ditambahkan pada subsistem FUSE (Sistem Fail Dalam Ruang Pengguna), membenarkan maklumat tambahan diletakkan dalam pertanyaan. Berdasarkan ciri ini, adalah mungkin untuk menambah pengecam kumpulan pada permintaan FS, yang perlu mengambil kira hak akses semasa membuat objek dalam FS (buat, mkdir, symlink, mknod).
  • Maya dan Keselamatan
    • Hipervisor KVM untuk sistem x86 telah menambah sokongan untuk hypercall lanjutan Hyper-V dan menyediakan pemajuan mereka kepada pengendali yang berjalan dalam persekitaran hos dalam ruang pengguna. Perubahan itu memungkinkan untuk melaksanakan sokongan untuk pelancaran bersarang hypervisor Hyper-V.
    • KVM memudahkan untuk menyekat akses tetamu kepada acara PMU (Unit Pemantau Prestasi) yang berkaitan dengan pengukuran prestasi.
    • Mekanisme memfd, yang membolehkan anda mengenal pasti kawasan memori melalui deskriptor fail yang dipindahkan antara proses, telah menambah keupayaan untuk mencipta kawasan di mana pelaksanaan kod dilarang (memfd tidak boleh dilaksanakan) dan adalah mustahil untuk menetapkan hak pelaksanaan pada masa hadapan .
    • Operasi prctl baharu PR_SET_MDWE telah ditambahkan yang menyekat percubaan untuk mendayakan hak akses memori yang membenarkan penulisan dan pelaksanaan secara serentak.
    • Perlindungan terhadap serangan kelas Spectre telah ditambah dan didayakan secara lalai, berdasarkan mod IBRS automatik (Enhanced Indirect Branch Restricted Speculation) yang dicadangkan dalam pemproses AMD Zen 4, yang membolehkan penyesuaian membenarkan dan melumpuhkan pelaksanaan spekulatif arahan semasa pemprosesan gangguan, panggilan sistem dan suis konteks. Perlindungan yang dicadangkan menghasilkan overhed yang lebih rendah berbanding perlindungan Retpoline.
    • Memperbaiki kerentanan yang membolehkan memintas perlindungan terhadap serangan Spectre v2 apabila menggunakan teknologi multi-threading serentak (SMT atau Hyper-Threading) dan disebabkan oleh melumpuhkan mekanisme STIBP (Single Thread Indirect Branch Predictors) apabila memilih mod perlindungan IBRS.
    • Untuk sistem berdasarkan seni bina ARM64, sasaran pemasangan baharu "virtconfig" telah ditambah, apabila dipilih, hanya set minimum komponen kernel yang diperlukan untuk but dalam sistem virtualisasi diaktifkan.
    • Untuk seni bina m68k, sokongan untuk panggilan sistem penapisan menggunakan mekanisme seccomp telah ditambah.
    • Menambah sokongan untuk peranti CRB TPM2 (Command Response Buffer) yang dibina dalam pemproses AMD Ryzen, berdasarkan teknologi Microsoft Pluton.
  • Subsistem rangkaian
    • Antara muka pautan net telah ditambahkan untuk mengkonfigurasi sublapisan PLCA (Physical Layer Collision Avoidance), yang ditakrifkan dalam spesifikasi IEEE 802.3cg-2019 dan digunakan dalam rangkaian Ethernet 802.3cg (10Base-T1S) yang dioptimumkan untuk menyambungkan peranti Internet Perkara dan sistem perindustrian. Penggunaan PLCA meningkatkan prestasi dalam rangkaian Ethernet dengan media kongsi.
    • Sokongan untuk API "sambungan wayarles" untuk mengurus antara muka wayarles WiFi 7 (802.11be) telah dihentikan kerana API ini tidak meliputi semua tetapan yang diperlukan. Apabila cuba menggunakan API "sambungan wayarles", yang terus disokong sebagai lapisan yang dicontohi, amaran kini akan dipaparkan untuk kebanyakan peranti semasa.
    • Dokumentasi terperinci tentang API netlink telah disediakan (untuk pembangun teras dan untuk pembangun aplikasi ruang pengguna). Utiliti ynl-gen-c telah dilaksanakan untuk menjana kod C berdasarkan spesifikasi YAML protokol Netlink.
    • Sokongan untuk pilihan IP_LOCAL_PORT_RANGE telah ditambahkan pada soket rangkaian untuk memudahkan konfigurasi sambungan keluar melalui penterjemah alamat tanpa menggunakan SNAT. Apabila menggunakan satu alamat IP pada beberapa hos, IP_LOCAL_PORT_RANGE memungkinkan untuk menggunakan julat port rangkaian keluar yang berbeza pada setiap hos dan paket ke hadapan berdasarkan nombor port pada get laluan.
    • Untuk MPTCP (MultiPath TCP), keupayaan untuk memproses aliran campuran menggunakan protokol IPv4 dan IPv6 telah dilaksanakan. MPTCP ialah lanjutan daripada protokol TCP untuk mengatur operasi sambungan TCP dengan penghantaran paket secara serentak di sepanjang beberapa laluan melalui antara muka rangkaian berbeza yang dikaitkan dengan alamat IP yang berbeza.
    • Untuk IPv4, adalah mungkin untuk menggunakan sambungan BIG TCP, yang membolehkan anda meningkatkan saiz paket TCP maksimum kepada 4GB untuk mengoptimumkan operasi rangkaian pusat data dalaman berkelajuan tinggi. Peningkatan yang sama dalam saiz paket dengan saiz medan pengepala 16-bit dicapai melalui pelaksanaan paket "jumbo", saiz dalam pengepala IP yang ditetapkan kepada 0, dan saiz sebenar dihantar dalam 32-bit yang berasingan medan dalam tajuk yang dilampirkan berasingan.
    • Parameter sysctl default_rps_mask baharu telah ditambahkan, yang melaluinya anda boleh menetapkan konfigurasi RPS (Receive Packet Steering) lalai, yang bertanggungjawab untuk mengedarkan pemprosesan trafik masuk merentas teras CPU pada peringkat pengendali gangguan.
    • Sokongan untuk disiplin pemprosesan baris gilir untuk mengehadkan trafik CBQ (baris gilir berasaskan kelas), ATM (litar maya ATM), dsmark (penanda perkhidmatan dibezakan), tcindex (indeks kawalan trafik) dan RSVP (protokol tempahan sumber) telah dihentikan. Disiplin ini telah lama ditinggalkan dan tidak ada sesiapa yang sudi meneruskan sokongan mereka.
  • ΠžΠ±ΠΎΡ€ΡƒΠ΄ΠΎΠ²Π°Π½ΠΈΠ΅
    • Mengalih keluar semua pemacu grafik berasaskan DRI1: i810 (kad grafik Intel 8xx bersepadu lebih lama), mga (GPU Matrox), r128 (GPU ATI Rage 128, termasuk kad Rage Fury, XPERT 99 dan XPERT 128), savage (GPU S3 Savage), sis (Crusty SiS GPU), tdfx (3dfx Voodoo) dan melalui (VIA IGP), yang telah ditamatkan pada 2016 dan tidak disokong di Mesa sejak 2012.
    • Pemacu framebuffer legasi (fbdev) omap1, s3c2410, tmiofb dan w100fb telah dialih keluar.
    • Pemacu DRM telah ditambahkan untuk unit VPU (Unit Pemprosesan Serbaguna) yang disepadukan ke dalam CPU Intel Meteor Lake (generasi ke-14), yang direka untuk mempercepatkan operasi yang berkaitan dengan penglihatan komputer dan pembelajaran mesin. Pemacu dilaksanakan menggunakan subsistem "accel", bertujuan untuk menyediakan sokongan untuk pemecut pengiraan, yang boleh dibekalkan sama ada dalam bentuk ASIC individu atau sebagai blok IP di dalam SoC dan GPU.
    • Pemacu i915 (Intel) mengembangkan sokongan untuk kad grafik Intel Arc (DG2/Alchemist) diskret, menyediakan sokongan awal untuk GPU Meteor Lake dan termasuk sokongan untuk GPU Intel Xe HP 4tile.
    • Pemacu amdgpu menambah sokongan untuk teknologi AdaptiveSync dan keupayaan untuk menggunakan mod Paparan Selamat dengan berbilang paparan. Sokongan yang dikemas kini untuk DCN 3.2 (Teras Paparan Seterusnya), SR-IOV RAS, VCN RAS, SMU 13.x dan DP 2.1.
    • Pemacu msm (Qualcomm Adreno GPU) telah menambah sokongan untuk platform SM8350, SM8450 SM8550, SDM845 dan SC8280XP.
    • Pemacu Nouveau tidak lagi menyokong panggilan ioctl lama.
    • Sokongan percubaan untuk NPU VerSilicon (VeriSilicon Neural Network Processor) telah ditambahkan pada pemacu etnaviv.
    • Pemacu pata_parport telah dilaksanakan untuk pemacu IDE yang disambungkan melalui port selari. Pemacu tambahan membenarkan kami mengalih keluar pemacu PARIDE lama daripada kernel dan memodenkan subsistem ATA. Had pemacu baharu ialah ketidakupayaan untuk menyambung pencetak dan cakera secara serentak melalui port selari.
    • Menambah pemacu ath12k untuk kad wayarles pada cip Qualcomm yang menyokong Wi-Fi 7. Menambah sokongan untuk kad wayarles pada cip RealTek RTL8188EU.
    • Menambah sokongan untuk 46 papan dengan pemproses berdasarkan seni bina ARM64, termasuk Samsung Galaxy tab A (2015), Samsung Galaxy S5, BananaPi R3, Debix Model A, EmbedFire LubanCat 1/2, Facebook Greatlakes, Orange Pi R1 Plus, Tesla FSD dan Juga peranti berdasarkan SOC Qualcomm MSM8953 (Snapdragon 610), SM8550 (Snapdragon 8 Gen 2), SDM450 dan SDM632, RockChips RK3128 TV, RV1126 VISI, RK3588, RK3568, AM3566 / AM3588).

Pada masa yang sama, Yayasan Perisian Percuma Amerika Latin membentuk versi kernel percuma sepenuhnya 6.3 - Linux-libre 6.3-gnu, dibersihkan daripada elemen perisian tegar dan pemacu yang mengandungi komponen bukan bebas atau bahagian kod, yang skopnya adalah terhad oleh pengeluar. Dalam keluaran 6.3, gumpalan telah dibersihkan dalam pemacu ath12k, aw88395 dan peb2466 baharu, serta dalam fail devicetree baharu untuk peranti qcom berdasarkan seni bina AArch64. Kod pembersihan gumpalan dikemas kini dalam pemacu dan subsistem amdgpu, xhci-rcar, qcom-q6v5-pas, sp8870, av7110, serta dalam pemacu untuk kad DVB dengan penyahkodan perisian dan dalam fail BPF yang telah disusun sebelumnya. Pembersihan pemacu mga, r128, tm6000, cpia2 dan r8188eu telah dihentikan kerana ia telah dialih keluar daripada kernel. Pembersihan gumpalan pemandu i915 yang dipertingkatkan.

Sumber: opennet.ru

Tambah komen