Keluaran kernel Linux 6.7

Selepas dua bulan pembangunan, Linus Torvalds membentangkan keluaran kernel Linux 6.7. Antara perubahan yang paling ketara: penyepaduan sistem fail Bcachefs, pemberhentian sokongan untuk seni bina Itanium, keupayaan Nouvea untuk berfungsi dengan perisian tegar GSP-R, sokongan untuk penyulitan TLS dalam NVMe-TCP, keupayaan untuk menggunakan pengecualian dalam BPF, sokongan untuk futex dalam io_uring, pengoptimuman prestasi penjadual fq (Fair Queuing) ), sokongan untuk sambungan TCP-AO (Pilihan Pengesahan TCP) dan keupayaan untuk menyekat sambungan rangkaian dalam mekanisme keselamatan Landlock, menambah kawalan akses ke ruang nama pengguna dan io_uring melalui AppArmor.

Versi baharu termasuk 18405 pembaikan daripada 2066 pembangun, saiz tampalan ialah 72 MB (perubahan mempengaruhi 13467 fail, 906147 baris kod telah ditambah, 341048 baris telah dipadamkan). Keluaran terakhir mempunyai 15291 pembetulan daripada 2058 pembangun, saiz tampalan ialah 39 MB. Kira-kira 45% daripada semua perubahan yang diperkenalkan dalam 6.7 adalah berkaitan dengan pemacu peranti, kira-kira 14% daripada perubahan berkaitan dengan pengemaskinian kod khusus untuk seni bina perkakasan, 13% berkaitan dengan susunan rangkaian, 5% berkaitan dengan sistem fail dan 3% adalah berkaitan dengan subsistem kernel dalaman.

Inovasi utama dalam kernel 6.7:

  • Subsistem cakera, I/O dan sistem fail
    • Kernel mengguna pakai kod sistem fail Bcachefs, yang cuba mencapai prestasi, kebolehpercayaan dan kebolehskalaan XFS, digabungkan dengan elemen fungsi lanjutan yang terdapat dalam Btrfs dan ZFS. Contohnya, Bcachefs menyokong ciri seperti memasukkan berbilang peranti dalam partition, susun atur pemacu berbilang lapisan (lapisan bawah dengan data yang kerap digunakan berdasarkan SSD pantas dan lapisan atas dengan data yang kurang digunakan daripada cakera keras), replikasi (RAID 1/10), caching , pemampatan data lutsinar (mod LZ4, gzip dan ZSTD), kepingan keadaan (gambar), pengesahan integriti menggunakan checksum, keupayaan untuk menyimpan kod pembetulan ralat Reed-Solomon (RAID 5/6), menyimpan maklumat dalam borang yang disulitkan (ChaCha20 dan Poly1305 digunakan ). Dari segi prestasi, Bcachefs mendahului Btrfs dan sistem fail lain berdasarkan mekanisme Copy-on-Write, dan menunjukkan kelajuan operasi hampir dengan Ext4 dan XFS.
    • Sistem fail Btrfs memperkenalkan mod kuota yang dipermudahkan yang membolehkan anda mencapai prestasi yang lebih tinggi dengan menjejak takat hanya dalam subpartisi di mana ia dicipta, yang memudahkan pengiraan dan meningkatkan prestasi dengan ketara, tetapi tidak membenarkan anda mengambil kira takat yang dikongsi dalam beberapa pecahan kecil.
    • Btrfs telah menambah struktur data "pokok jalur" baharu, sesuai untuk pemetaan tahap logik dalam situasi di mana pemetaan fizikal tidak sepadan merentas peranti. Struktur pada masa ini digunakan dalam pelaksanaan RAID0 dan RAID1 untuk peranti blok yang dizonkan. Pada masa hadapan, mereka merancang untuk menggunakan struktur ini dalam RAID peringkat tinggi, yang akan menyelesaikan beberapa masalah yang wujud dalam pelaksanaan semasa.
    • Sistem fail Ceph 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.
    • Menambah keupayaan untuk menentukan uid dan gid apabila dipasang pada efivarfs untuk membenarkan proses bukan akar menukar pembolehubah UEFI.
    • Menambahkan panggilan ioctl ke exFAT untuk membaca dan menukar atribut FS. Menambahkan pengendalian direktori bersaiz sifar.
    • F2FS melaksanakan keupayaan untuk menggunakan blok 16K.
    • Mekanisme automount autofs telah ditukar untuk menggunakan API pemasangan partition baharu.
    • OverlayFS menawarkan pilihan pelekap "lowerdir+" dan "datadir+". Menambah sokongan untuk pemasangan bersarang OverlayFS dengan xattrs.
    • XFS telah mengoptimumkan beban CPU dalam kod peruntukan blok masa nyata. Keupayaan untuk melakukan operasi baca dan FICLONE secara serentak disediakan.
    • Kod EXT2 telah ditukar untuk menggunakan folio halaman.
  • Perkhidmatan memori dan sistem
    • Sokongan untuk seni bina ia64 yang digunakan dalam pemproses Intel Itanium, yang telah dihentikan sepenuhnya pada tahun 2021, telah dihentikan. Pemproses Itanium telah diperkenalkan oleh Intel pada tahun 2001, tetapi seni bina ia64 gagal bersaing dengan AMD64, terutamanya disebabkan oleh prestasi AMD64 yang lebih tinggi dan peralihan yang lebih lancar daripada pemproses x32 86-bit. Akibatnya, minat Intel beralih kepada pemproses x86-64, dan bahagian Itanium kekal sebagai pelayan Integriti HP, pesanan yang telah dihentikan tiga tahun lalu. Kod untuk sokongan ia64 telah dialih keluar daripada kernel terutamanya disebabkan oleh kekurangan jangka panjang sokongan untuk platform ini, manakala Linus Torvalds menyatakan kesediaannya untuk mengembalikan sokongan ia64 kepada kernel, tetapi hanya jika terdapat penyelenggara yang boleh menunjukkan kualiti tinggi sokongan untuk platform ini di luar kernel utama selama sekurang-kurangnya setahun.
    • Menambahkan parameter arahan baris kernel "ia32_emulation", yang membolehkan anda mendayakan atau melumpuhkan sokongan untuk emulasi mod 32-bit dalam kernel yang dibina untuk seni bina x86-64 pada peringkat but. Dari segi praktikal, pilihan baharu membolehkan anda membina kernel dengan sokongan untuk keserasian dengan aplikasi 32-bit, tetapi nyahdayakan mod ini secara lalai untuk mengurangkan vektor serangan pada kernel, kerana API keserasian kurang diuji daripada kernel utama antara muka.
    • Perpindahan berterusan perubahan daripada cawangan Rust-for-Linux yang berkaitan dengan penggunaan bahasa Rust sebagai bahasa kedua untuk membangunkan modul pemacu dan kernel (Sokongan Rust tidak aktif secara lalai, dan tidak membawa kepada kemasukan Rust antara kebergantungan pemasangan yang diperlukan untuk kernel). Versi baharu membuat peralihan kepada menggunakan keluaran Rust 1.73 dan menawarkan satu set pengikatan untuk bekerja dengan baris gilir kerja.
    • Anda boleh menggunakan mekanisme binfmt_misc untuk menambah sokongan untuk format fail boleh laku baharu (contohnya, untuk menjalankan aplikasi Java atau Python yang dikompilasi) dalam ruang nama tanpa hak yang berasingan.
    • Cpuset pengawal cgroup, yang membolehkan anda mengawal penggunaan teras CPU semasa melaksanakan tugas, menyediakan pembahagian kepada pembahagian tempatan dan jauh, yang berbeza sama ada cgroup induk adalah bahagian akar yang betul atau tidak. Tetapan baharu “cpuset.cpus.exclusive” dan “cpuset.cpus.excluisve.effective” juga telah ditambahkan pada cpuset untuk pengikatan CPU eksklusif.
    • Subsistem BPF melaksanakan sokongan untuk pengecualian, yang diproses sebagai jalan keluar kecemasan daripada program BPF dengan keupayaan untuk melepaskan bingkai tindanan dengan selamat. Selain itu, program BPF membenarkan penggunaan penunjuk kptr berkaitan dengan CPU.
    • Sokongan untuk operasi dengan futex telah ditambahkan pada subsistem io_uring dan operasi baharu telah dilaksanakan: IORING_OP_WAITID (versi tak segerak waitid), SOCKET_URING_OP_GETSOCKOPT (pilihan getsockoptand), SOCKET_URING_OP_SETSOCKOPT (pilihan setsockopt) dan IORING_READULTISH terdapat data atau bukan penimbal penuh).
    • Menambahkan pelaksanaan baris gilir FIFO bersambung tunggal yang ringan yang memerlukan kunci spin hanya untuk menyah gilir dalam konteks proses dan mengetepikan dengan kunci spin untuk penambahan atom pada baris gilir dalam sebarang konteks.
    • Menambahkan penimbal cincin "objpool" dengan pelaksanaan berskala baris gilir berprestasi tinggi untuk memperuntukkan dan mengembalikan objek.
    • Bahagian awal perubahan telah ditambahkan untuk melaksanakan API futex2 baharu, yang mempunyai prestasi yang lebih baik pada sistem NUMA, menyokong saiz selain daripada 32 bit, dan boleh digunakan dan bukannya panggilan sistem futex() berganda.
    • Untuk seni bina ARM32 dan S390x, sokongan untuk set semasa (cpuv4) arahan BPF telah ditambahkan.
    • Untuk seni bina RISC-V, adalah mungkin untuk menggunakan mod semak Shadow-Call Stack yang tersedia dalam Clang 17, yang direka untuk melindungi daripada menimpa alamat pemulangan daripada fungsi sekiranya berlaku limpahan penimbal pada tindanan. Intipati perlindungan adalah untuk menyimpan alamat pemulangan dalam timbunan "bayangan" yang berasingan selepas memindahkan kawalan ke fungsi dan mendapatkan semula alamat ini sebelum keluar dari fungsi.
    • Mod pengimbasan halaman memori pintar baharu telah ditambahkan pada mekanisme untuk menggabungkan halaman memori yang serupa (KSM: Kernel Samepage Merging), yang menjejak halaman yang tidak berjaya diimbas dan mengurangkan keamatan pengimbasan semula mereka. Untuk mendayakan mod baharu, tetapan /sys/kernel/mm/ksm/smart_scan telah ditambahkan.
    • Menambahkan arahan ioctl baharu PAGEMAP_SCAN, yang, apabila digunakan dengan userfaultfd(), membolehkan anda menentukan fakta penulisan pada julat memori tertentu. Ciri baharu, sebagai contoh, boleh digunakan dalam sistem untuk menyimpan dan memulihkan keadaan proses CRIU atau dalam sistem anti-penipuan permainan.
    • Dalam sistem pemasangan, jika pengkompil Clang tersedia, himpunan contoh penggunaan subsistem perf, yang ditulis sebagai program BPF, didayakan secara lalai.
    • Lapisan videobuf lama, yang digunakan untuk mengurus framebuffer dalam subsistem media dan digantikan dengan pelaksanaan baharu videobuf10 lebih daripada 2 tahun yang lalu, telah dialih keluar.
  • Maya dan Keselamatan
    • Keupayaan untuk menyulitkan data dalam blok yang lebih kecil daripada saiz blok dalam sistem fail telah ditambahkan pada subsistem fscrypt. Ini mungkin diperlukan untuk mendayakan mekanisme penyulitan perkakasan yang hanya menyokong blok kecil (contohnya, pengawal UFS yang hanya menyokong saiz blok 4096 boleh digunakan dengan sistem fail dengan saiz blok 16K).
    • Subsistem "iommufd", yang membolehkan anda mengurus jadual halaman memori IOMMU (I/O Memory-Management Unit) melalui deskriptor fail dari ruang pengguna, telah menambah penjejakan data yang masih belum dikeluarkan daripada cache (kotor) untuk DMA operasi, yang diperlukan untuk menentukan memori dengan data yang tidak disiram semasa proses pemindahan.
    • Sokongan untuk mentakrifkan peraturan kawalan akses untuk soket TCP telah ditambahkan pada mekanisme Landlock, yang membolehkan anda mengehadkan interaksi sekumpulan proses dengan persekitaran luaran. Sebagai contoh, anda boleh membuat peraturan yang hanya membenarkan akses kepada port rangkaian 443 untuk mewujudkan sambungan HTTPS.
    • Subsistem AppArmor telah menambah keupayaan untuk mengawal akses kepada mekanisme io_uring dan mencipta ruang nama pengguna, yang membolehkan anda secara selektif membenarkan akses kepada keupayaan ini hanya kepada proses tertentu.
    • Menambahkan API pengesahan mesin maya untuk mengesahkan integriti proses but mesin maya.
    • Sistem LoongArch menyokong virtualisasi menggunakan hipervisor KVM.
    • Apabila menggunakan hipervisor KVM pada sistem RISC-V, sokongan untuk sambungan Smstateen telah muncul, yang menyekat mesin maya daripada mengakses daftar CPU yang tidak disokong secara eksplisit oleh hipervisor. Juga menambah sokongan untuk penggunaan sambungan Zicond dalam sistem tetamu, yang membenarkan penggunaan beberapa operasi integer bersyarat.
    • Dalam sistem tetamu berasaskan x86 yang dijalankan di bawah KVM, sehingga 4096 CPU maya dibenarkan.
  • Subsistem rangkaian
    • Pemacu NVMe-TCP (NVMe over TCP), yang membolehkan anda mengakses pemacu NVMe melalui rangkaian (NVM Express over Fabrics) menggunakan protokol TCP, telah menambah sokongan untuk menyulitkan saluran penghantaran data menggunakan TLS (menggunakan KTLS dan proses latar belakang dalam ruang pengguna tlshd untuk rundingan sambungan).
    • Prestasi penjadual paket fq (Fair Queuing) telah dioptimumkan, yang memungkinkan untuk meningkatkan daya pengeluaran sebanyak 5% di bawah beban berat dalam ujian tcp_rr (Permintaan/Respons TCP) dan sebanyak 13% dengan aliran tanpa had paket UDP.
    • TCP menambah keupayaan cap waktu ketepatan mikrosaat (TCP TS) pilihan (RFC 7323), yang membolehkan anggaran kependaman yang lebih tepat dan modul kawalan kesesakan yang lebih maju. Untuk mendayakannya, anda boleh menggunakan arahan “ip route add 10/8 ... features tcp_usec_ts”.
    • Tindanan TCP telah menambah sokongan untuk sambungan TCP-AO (Pilihan Pengesahan TCP, RFC 5925), yang memungkinkan untuk mengesahkan pengepala TCP menggunakan kod MAC (Kod Pengesahan Mesej), menggunakan algoritma yang lebih moden HMAC-SHA1 dan CMAC-AES- 128 sebaliknya tersedia pilihan TCP-MD5 berdasarkan algoritma MD5 warisan.
    • Jenis baharu peranti rangkaian maya "netkit" telah ditambah, logik pemindahan data yang ditetapkan menggunakan program BPF.
    • KSMBD, pelaksanaan peringkat kernel bagi pelayan SMB, telah menambah sokongan untuk menyelesaikan nama fail yang mengandungi pasangan pengganti aksara majmuk.
    • NFS telah menambah baik pelaksanaan rangkaian dengan perkhidmatan RPC. Menambah sokongan untuk perwakilan tulis (untuk NFSv4.1+). NFSD telah menambah sokongan untuk pengendali netlink rpc_status. Sokongan yang dipertingkatkan untuk pelanggan NFSv4.x apabila mengeksport semula ke knfsd.
  • Оборудование
    • Sokongan awal untuk perisian tegar GSP-RM telah ditambahkan pada modul kernel Nouveau, yang digunakan dalam GPU NVIDIA RTX 20+ untuk mengalihkan operasi pemulaan dan kawalan GPU ke sisi mikropengawal GSP yang berasingan (Pemproses Sistem GPU). Sokongan GSP-RM membolehkan pemacu Nouveau bekerja melalui panggilan perisian tegar, dan bukannya memprogramkan interaksi perkakasan secara langsung, menjadikannya lebih mudah untuk menambah sokongan untuk GPU NVIDIA baharu dengan menggunakan panggilan terbina untuk permulaan dan pengurusan kuasa.
    • Pemacu AMDGPU menyokong GC 11.5, NBIO 7.11, SMU 14, SMU 13.0 OD, DCN 3.5, VPE 6.1 dan DML2. Sokongan yang dipertingkatkan untuk pemuatan lancar (tiada kelipan apabila menukar mod video).
    • Pemacu i915 menambah sokongan untuk cip Intel Meteor Lake dan menambah pelaksanaan awal Intel LunarLake (Xe 2).
    • Sokongan tambahan untuk saluran penghantaran asimetri ditambah pada spesifikasi USB4 v2 (120/40G).
    • Sokongan tambahan untuk ARM SoC: Qualcomm Snapdragon 720G (digunakan dalam telefon pintar Xiaomi), AMD Pensando Elba, Renesas, R8A779F4 (R-Car S4-8), USRobotics USR8200 (digunakan dalam penghala dan NAS).
    • Sokongan tambahan untuk telefon pintar Fairphone 5 dan papan ARM Orange Pi 5, QuartzPro64, Turing RK1, Variscite MX6, BigTreeTech CB1, Freescale LX2162, Google Spherion, Google Hayato, Genio 1200 EVK, RK3566 Powkiddy RGB30.
    • Sokongan tambahan untuk papan RISC-V Milk-V Pioneer dan Milk-V Duo.
    • Sokongan tambahan untuk antara muka audio komputer riba HUAWEI yang dibekalkan dengan CPU AMD. Sokongan tambahan untuk pembesar suara tambahan yang dipasang pada komputer riba Dell Oasis 13/14/16. Sokongan tambahan untuk pembesar suara terbina dalam ASUS K6500ZC. Menambahkan sokongan untuk penunjuk bisu pada komputer riba HP 255 G8 dan G10. Menambah sokongan untuk pemacu audio acp6.3. Menambah sokongan untuk antara muka rakaman profesional Focusrite Clarett+ 2Pre dan 4Pre.

Pada masa yang sama, Yayasan Perisian Percuma Amerika Latin membentuk versi kernel percuma sepenuhnya 6.7 - Linux-libre 6.7-gnu, dibersihkan daripada unsur perisian tegar dan pemacu yang mengandungi komponen bukan bebas atau bahagian kod, yang skopnya terhad oleh pengilang. Dalam keluaran 6.7, kod pembersihan gumpalan telah dikemas kini dalam pelbagai pemacu dan subsistem, contohnya, dalam pemacu amdgpu, nouveau, adreno, mwifix, mt7988, ath11k, avs dan btqca. Kod untuk membersihkan pemacu localtalk dan rtl8192u telah dialih keluar kerana pengecualiannya daripada kernel. Mengalih keluar komponen yang tidak diperlukan untuk membersihkan pemacu xhci-pci, rtl8xxxu dan rtw8822b, yang sebelum ini ditambah secara tidak sengaja. Membersihkan nama gumpalan dalam fail dts untuk seni bina Aarch64. Mengeluarkan gumpalan dalam pemacu baharu mt7925, tps6598x, aw87390 dan aw88399.

Sumber: opennet.ru

Tambah komen