Rilis kernel Linux 6.7

Setelah dua bulan pengembangan, Linus Torvalds meluncurkan rilis kernel Linux 6.7. Di antara perubahan yang paling menonjol: integrasi sistem file Bcachefs, penghentian dukungan untuk arsitektur Itanium, kemampuan Nouvea untuk bekerja dengan firmware GSP-R, dukungan untuk enkripsi TLS di NVMe-TCP, kemampuan untuk menggunakan pengecualian di BPF, dukungan untuk futex di io_uring, optimalisasi kinerja penjadwal fq (Fair Queuing), dukungan untuk ekstensi TCP-AO (TCP Authentication Option) dan kemampuan untuk membatasi koneksi jaringan dalam mekanisme keamanan Landlock, menambahkan kontrol akses ke namespace pengguna dan io_uring melalui AppArmor.

Versi baru mencakup 18405 perbaikan dari 2066 pengembang, ukuran patch adalah 72 MB (perubahan mempengaruhi 13467 file, 906147 baris kode ditambahkan, 341048 baris dihapus). Rilis terakhir memiliki 15291 perbaikan dari 2058 pengembang, ukuran patchnya adalah 39 MB. Sekitar 45% dari semua perubahan yang diperkenalkan di 6.7 terkait dengan driver perangkat, sekitar 14% perubahan terkait dengan pembaruan kode khusus untuk arsitektur perangkat keras, 13% terkait dengan tumpukan jaringan, 5% terkait dengan sistem file, dan 3% terkait dengan subsistem kernel internal.

Inovasi utama dalam kernel 6.7:

  • Subsistem Disk, I/O dan Sistem File
    • Kernel mengadopsi kode sistem file Bcachefs, yang berupaya mencapai kinerja, keandalan, dan skalabilitas XFS, dikombinasikan dengan elemen fungsionalitas tingkat lanjut yang ditemukan di Btrfs dan ZFS. Misalnya, Bcachefs mendukung fitur-fitur seperti menyertakan beberapa perangkat dalam satu partisi, tata letak drive multi-lapis (lapisan bawah dengan data yang sering digunakan berdasarkan SSD cepat, dan lapisan atas dengan data yang jarang digunakan dari hard drive), replikasi (RAID 1/10), caching, kompresi data transparan (mode LZ4, gzip dan ZSTD), irisan status (snapshot), verifikasi integritas menggunakan checksum, kemampuan untuk menyimpan kode koreksi kesalahan Reed-Solomon (RAID 5/6), menyimpan informasi dalam bentuk terenkripsi (ChaCha20 dan Poly1305 digunakan). Dalam hal kinerja, Bcachefs mengungguli Btrfs dan sistem file lain berdasarkan mekanisme Copy-on-Write, dan menunjukkan kecepatan operasi mendekati Ext4 dan XFS.
    • Sistem file Btrfs memperkenalkan mode kuota yang disederhanakan yang memungkinkan Anda mencapai kinerja lebih tinggi dengan melacak luasan hanya di subpartisi tempat mereka dibuat, yang secara signifikan menyederhanakan penghitungan dan meningkatkan kinerja, namun tidak memungkinkan Anda memperhitungkan luasan yang dibagikan di beberapa subpartisi.
    • Btrfs telah menambahkan struktur data "pohon garis" baru, yang cocok untuk pemetaan tingkat logis dalam situasi di mana pemetaan fisik tidak cocok di seluruh perangkat. Struktur tersebut saat ini digunakan dalam implementasi RAID0 dan RAID1 untuk perangkat blok yang dikategorikan. Di masa depan, mereka berencana untuk menggunakan struktur ini dalam RAID tingkat yang lebih tinggi, yang akan memecahkan sejumlah masalah yang ada dalam implementasi saat ini.
    • Sistem file Ceph mengimplementasikan dukungan untuk memetakan ID pengguna dari sistem file yang dipasang, digunakan untuk mencocokkan file pengguna tertentu di partisi asing yang dipasang dengan pengguna lain di sistem saat ini.
    • Menambahkan kemampuan untuk menentukan uid dan gid saat dipasang ke efivarfs untuk memungkinkan proses non-root mengubah variabel UEFI.
    • Menambahkan panggilan ioctl ke exFAT untuk membaca dan mengubah atribut FS. Menambahkan penanganan direktori ukuran nol.
    • F2FS mengimplementasikan kemampuan untuk menggunakan 16K blok.
    • Mekanisme automount autofs telah dialihkan untuk menggunakan API pemasangan partisi baru.
    • OverlayFS menawarkan opsi pemasangan "lowerdir+" dan "datadir+". Menambahkan dukungan untuk pemasangan OverlayFS bersarang dengan xattrs.
    • XFS telah mengoptimalkan beban CPU dalam kode alokasi blok waktu nyata. Kemampuan untuk melakukan operasi baca dan FICLONE secara bersamaan disediakan.
    • Kode EXT2 telah dikonversi untuk menggunakan halaman folio.
  • Layanan memori dan sistem
    • Dukungan untuk arsitektur ia64 yang digunakan pada prosesor Intel Itanium, yang dihentikan sepenuhnya pada tahun 2021, telah dihentikan. Prosesor Itanium diperkenalkan oleh Intel pada tahun 2001, tetapi arsitektur ia64 gagal bersaing dengan AMD64, terutama karena kinerja AMD64 yang lebih tinggi dan transisi yang lebih mulus dari prosesor x32 86-bit. Akibatnya, minat Intel beralih ke prosesor x86-64, dan Itanium tetap menjadi server HP Integrity, yang pesanannya dihentikan tiga tahun lalu. Kode untuk dukungan ia64 telah dihapus dari kernel terutama karena kurangnya dukungan jangka panjang untuk platform ini, sementara Linus Torvalds menyatakan kesediaannya untuk mengembalikan dukungan ia64 ke kernel, tetapi hanya jika ada pengelola yang dapat menunjukkan kualitas tinggi dukungan untuk platform ini di luar kernel utama selama setidaknya satu tahun.
    • Menambahkan parameter perintah baris kernel “ia32_emulation”, yang memungkinkan Anda mengaktifkan atau menonaktifkan dukungan untuk emulasi mode 32-bit di kernel yang dibuat untuk arsitektur x86-64 pada tahap boot. Di sisi praktis, opsi baru ini memungkinkan Anda membangun kernel dengan dukungan kompatibilitas dengan aplikasi 32-bit, tetapi menonaktifkan mode ini secara default untuk mengurangi vektor serangan pada kernel, karena API kompatibilitas kurang diuji dibandingkan kernel utama. antarmuka.
    • Migrasi lanjutan perubahan dari cabang Rust-for-Linux terkait dengan penggunaan bahasa Rust sebagai bahasa kedua untuk mengembangkan driver dan modul kernel (dukungan Rust tidak aktif secara default, dan tidak menyebabkan dimasukkannya Rust di antara dependensi perakitan yang diperlukan untuk kernel). Versi baru melakukan transisi untuk menggunakan rilis Rust 1.73 dan menawarkan serangkaian binding untuk bekerja dengan antrian kerja.
    • Dimungkinkan untuk menggunakan mekanisme binfmt_misc untuk menambahkan dukungan untuk format file baru yang dapat dieksekusi (misalnya, untuk menjalankan aplikasi Java atau Python yang dikompilasi) dalam namespace terpisah yang tidak memiliki hak istimewa.
    • Cpuset pengontrol cgroup, yang memungkinkan Anda mengontrol penggunaan inti CPU saat menjalankan tugas, menyediakan pembagian menjadi partisi lokal dan jarak jauh, yang berbeda dalam hal apakah cgroup induk adalah bagian root yang benar atau tidak. Pengaturan baru “cpuset.cpus.exclusive” dan “cpuset.cpus.excluisve.efektif” juga telah ditambahkan ke cpuset untuk pengikatan CPU eksklusif.
    • Subsistem BPF mengimplementasikan dukungan untuk pengecualian, yang diproses sebagai pintu keluar darurat dari program BPF dengan kemampuan untuk melepaskan frame tumpukan dengan aman. Selain itu, program BPF mengizinkan penggunaan pointer kptr sehubungan dengan CPU.
    • Dukungan untuk operasi dengan futex telah ditambahkan ke subsistem io_uring, dan operasi baru telah diterapkan: IORING_OP_WAITID (versi waitid asinkron), SOCKET_URING_OP_GETSOCKOPT (opsi getsockoptand), SOCKET_URING_OP_SETSOCKOPT (opsi setsockopt) dan IORING_OP_READ_MULTISHOT (beberapa operasi baca yang tidak berhenti sementara ada data atau tidak full buffer).
    • Menambahkan implementasi antrean FIFO terhubung tunggal ringan yang memerlukan spinlock hanya untuk dequeueing dalam konteks proses dan membuang spinlock untuk penambahan atom ke antrean dalam konteks apa pun.
    • Menambahkan buffer cincin "objpool" dengan implementasi antrian berkinerja tinggi yang dapat diskalakan untuk mengalokasikan dan mengembalikan objek.
    • Bagian awal dari perubahan telah ditambahkan untuk mengimplementasikan API futex2 baru, yang memiliki kinerja lebih baik pada sistem NUMA, mendukung ukuran selain 32 bit, dan dapat digunakan sebagai pengganti panggilan sistem futex() multipleks.
    • Untuk arsitektur ARM32 dan S390x, dukungan untuk set instruksi BPF saat ini (cpuv4) telah ditambahkan.
    • Untuk arsitektur RISC-V, dimungkinkan untuk menggunakan mode pemeriksaan Shadow-Call Stack yang tersedia di Clang 17, yang dirancang untuk melindungi terhadap penimpaan alamat pengirim dari suatu fungsi jika terjadi buffer overflow pada stack. Inti dari perlindungan adalah menyimpan alamat pengirim dalam tumpukan “bayangan” terpisah setelah mentransfer kontrol ke suatu fungsi dan mengambil alamat ini sebelum keluar dari fungsi tersebut.
    • Mode pemindaian halaman memori cerdas baru telah ditambahkan ke mekanisme untuk menggabungkan halaman memori yang identik (KSM: Kernel Samepage Merging), yang melacak halaman yang tidak berhasil dipindai dan mengurangi intensitas pemindaian ulang. Untuk mengaktifkan mode baru, pengaturan /sys/kernel/mm/ksm/smart_scan telah ditambahkan.
    • Menambahkan perintah ioctl baru PAGEMAP_SCAN, yang bila digunakan dengan userfaultfd(), memungkinkan Anda menentukan fakta penulisan ke rentang memori tertentu. Fitur baru, misalnya, dapat digunakan dalam sistem untuk menyimpan dan memulihkan status proses CRIU atau dalam sistem anti-cheat game.
    • Dalam sistem perakitan, jika kompiler Dentang tersedia, perakitan contoh penggunaan subsistem perf, yang ditulis sebagai program BPF, diaktifkan secara default.
    • Lapisan videobuf lama, yang digunakan untuk mengelola framebuffer di subsistem media dan digantikan oleh implementasi videobuf10 baru lebih dari 2 tahun yang lalu, telah dihapus.
  • Virtualisasi dan Keamanan
    • Kemampuan untuk mengenkripsi data dalam blok yang lebih kecil dari ukuran blok di sistem file telah ditambahkan ke subsistem fscrypt. Ini mungkin diperlukan untuk mengaktifkan mekanisme enkripsi perangkat keras yang hanya mendukung blok kecil (misalnya, pengontrol UFS yang hanya mendukung ukuran blok 4096 dapat digunakan dengan sistem file dengan ukuran blok 16K).
    • Subsistem "iommufd", yang memungkinkan Anda mengelola tabel halaman memori IOMMU (I/O Memory-Management Unit) melalui deskriptor file dari ruang pengguna, telah menambahkan pelacakan data yang belum dihapus dari cache (kotor) untuk DMA operasi, yang diperlukan untuk menentukan memori dengan data yang tidak dihapus selama migrasi proses.
    • Dukungan untuk menentukan aturan kontrol akses untuk soket TCP telah ditambahkan ke mekanisme Landlock, yang memungkinkan Anda membatasi interaksi sekelompok proses dengan lingkungan eksternal. Misalnya, Anda dapat membuat aturan yang hanya mengizinkan akses ke port jaringan 443 untuk membuat koneksi HTTPS.
    • Subsistem AppArmor telah menambahkan kemampuan untuk mengontrol akses ke mekanisme io_uring dan membuat namespace pengguna, yang memungkinkan Anda secara selektif mengizinkan akses ke kemampuan ini hanya untuk proses tertentu.
    • Menambahkan API pengesahan mesin virtual untuk memverifikasi integritas proses boot mesin virtual.
    • Sistem LoongArch mendukung virtualisasi menggunakan hypervisor KVM.
    • Saat menggunakan hypervisor KVM pada sistem RISC-V, dukungan untuk ekstensi Smstateen telah muncul, yang memblokir mesin virtual mengakses register CPU yang tidak secara eksplisit didukung oleh hypervisor. Juga menambahkan dukungan untuk penggunaan ekstensi Zicond di sistem tamu, yang memungkinkan penggunaan beberapa operasi bilangan bulat bersyarat.
    • Dalam sistem tamu berbasis x86 yang berjalan di bawah KVM, diperbolehkan hingga 4096 CPU virtual.
  • Subsistem jaringan
    • Driver NVMe-TCP (NVMe over TCP), yang memungkinkan Anda mengakses drive NVMe melalui jaringan (NVM Express over Fabrics) menggunakan protokol TCP, telah menambahkan dukungan untuk mengenkripsi saluran transmisi data menggunakan TLS (menggunakan KTLS dan proses latar belakang di ruang pengguna tlshd untuk negosiasi koneksi).
    • Kinerja penjadwal paket fq (Fair Queuing) telah dioptimalkan, yang memungkinkan peningkatan throughput sebesar 5% pada beban berat dalam pengujian tcp_rr (TCP Request/Response) dan sebesar 13% dengan aliran paket UDP yang tidak terbatas.
    • TCP menambahkan kemampuan cap waktu presisi mikrodetik (TCP TS) opsional (RFC 7323), yang memungkinkan estimasi latensi lebih akurat dan modul kontrol kemacetan yang lebih canggih. Untuk mengaktifkannya, Anda dapat menggunakan perintah “ip Route add 10/8…features tcp_usec_ts”.
    • Tumpukan TCP telah menambahkan dukungan untuk ekstensi TCP-AO (Opsi Otentikasi TCP, RFC 5925), yang memungkinkan untuk memverifikasi header TCP menggunakan kode MAC (Kode Otentikasi Pesan), menggunakan algoritma yang lebih modern HMAC-SHA1 dan CMAC-AES- 128 sebagai gantinya tersedia opsi TCP-MD5 yang sebelumnya berdasarkan algoritma MD5 lama.
    • Jenis perangkat jaringan virtual baru "netkit" telah ditambahkan, logika transfer data diatur menggunakan program BPF.
    • KSMBD, implementasi server SMB tingkat kernel, telah menambahkan dukungan untuk menyelesaikan nama file yang berisi pasangan pengganti karakter gabungan.
    • NFS telah meningkatkan implementasi thread dengan layanan RPC. Menambahkan dukungan untuk delegasi tulis (untuk NFSv4.1+). NFSD telah menambahkan dukungan untuk pengendali netlink rpc_status. Peningkatan dukungan untuk klien NFSv4.x saat mengekspor ulang ke knfsd.
  • Оборудование
    • Dukungan awal untuk firmware GSP-RM telah ditambahkan ke modul kernel Nouveau, yang digunakan di GPU NVIDIA RTX 20+ untuk memindahkan operasi inisialisasi dan kontrol GPU ke sisi mikrokontroler GSP (Prosesor Sistem GPU) yang terpisah. Dukungan GSP-RM memungkinkan driver Nouveau bekerja melalui panggilan firmware, daripada memprogram interaksi perangkat keras secara langsung, sehingga lebih mudah untuk menambahkan dukungan untuk GPU NVIDIA baru dengan menggunakan panggilan bawaan untuk inisialisasi dan manajemen daya.
    • Driver AMDGPU mendukung GC 11.5, NBIO 7.11, SMU 14, SMU 13.0 OD, DCN 3.5, VPE 6.1 dan DML2. Peningkatan dukungan untuk pemuatan yang mulus (tidak ada kedipan saat berpindah mode video).
    • Driver i915 menambahkan dukungan untuk chip Intel Meteor Lake dan menambahkan implementasi awal Intel LunarLake (Xe 2).
    • Menambahkan dukungan untuk saluran transmisi asimetris yang ditambahkan ke spesifikasi USB4 v2 (120/40G).
    • Menambahkan dukungan untuk ARM SoC: Qualcomm Snapdragon 720G (digunakan di smartphone Xiaomi), AMD Pensando Elba, Renesas, R8A779F4 (R-Car S4-8), USRobotics USR8200 (digunakan di router dan NAS).
    • Menambahkan dukungan untuk smartphone 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.
    • Menambahkan dukungan untuk papan RISC-V Milk-V Pioneer dan Milk-V Duo.
    • Menambahkan dukungan untuk antarmuka suara pada laptop Huawei yang disertakan dengan CPU AMD. Menambahkan dukungan untuk speaker tambahan yang dipasang pada laptop Dell Oasis 13/14/16. Menambahkan dukungan untuk speaker internal ASUS K6500ZC. Menambahkan dukungan untuk indikator mute pada laptop HP 255 G8 dan G10. Menambahkan dukungan untuk driver audio acp6.3. Menambahkan dukungan untuk antarmuka perekaman profesional Focusrite Clarett+ 2Pre dan 4Pre.

Pada saat yang sama, Yayasan Perangkat Lunak Bebas Amerika Latin membentuk versi kernel 6.7 yang sepenuhnya gratis - Linux-libre 6.7-gnu, dibersihkan dari elemen firmware dan driver yang berisi komponen tidak bebas atau bagian kode, yang cakupannya terbatas oleh pabrikan. Pada rilis 6.7, kode pembersihan blob telah diperbarui di berbagai driver dan subsistem, misalnya pada driver amdgpu, nouveau, adreno, mwifiex, mt7988, ath11k, avs, dan btqca. Kode untuk membersihkan driver localtalk dan rtl8192u telah dihapus karena pengecualiannya dari kernel. Menghapus komponen yang tidak perlu untuk membersihkan driver xhci-pci, rtl8xxxu dan rtw8822b, yang sebelumnya ditambahkan secara tidak sengaja. Membersihkan nama blob dalam file dts untuk arsitektur Aarch64. Menghapus gumpalan di driver baru mt7925, tps6598x, aw87390 dan aw88399.

Sumber: opennet.ru

Tambah komentar