Selepas dua bulan pembangunan, Linus Torvalds mengeluarkan kernel Linux 7.0. Antara perubahan yang paling ketara: peraturan untuk menggunakan pembantu AI, memindahkan Rust ke dalam kernel teras, prestasi swap yang lebih baik, mendayakan mod PREEMPT_LAZY secara lalai, sokongan penapis untuk operasi io_uring, sistem fail Nullfs baharu, rangka kerja fserror, alat pemantauan XFS, pemetaan semula sokongan dalam Btrfs, mendayakan NFS 4.1 secara lalai, mengintegrasikan algoritma kriptografi ML-DSA pasca-kuantum, mengaktifkan AccECN dalam subsistem rangkaian dan sokongan awal untuk WiFi 8.
Nombor 7.0 telah diberikan kerana cabang 6.x telah mengumpulkan keluaran yang mencukupi untuk mewajarkan perubahan pada digit pertama nombor versi (keluaran 6.0 pada asalnya dikeluarkan selepas 5.19). Perubahan penomboran dilakukan atas sebab estetik dan merupakan langkah formal untuk mengurangkan ketidakselesaan yang disebabkan oleh pengumpulan sejumlah besar keluaran dalam siri ini.
Versi baharu ini menggabungkan 15624 pembetulan daripada 2477 pembangun, dengan saiz tampalan 56 MB (perubahan menjejaskan 18053 fail, menambah 704060 baris kod dan mengalih keluar 278132 baris). Keluaran sebelumnya merangkumi 15657 pembetulan daripada 2237 pembangun, dengan saiz tampalan 52 MB. Kira-kira 51% daripada semua perubahan dalam 7.0 berkaitan dengan pemacu peranti, kira-kira 11% perubahan berkaitan dengan kemas kini kod khusus untuk seni bina perkakasan, 14% berkaitan dengan susunan rangkaian, 5% berkaitan dengan sistem fail dan 3% berkaitan dengan subsistem kernel dalaman.
Ciri baharu utama dalam kernel 7.0 (1, 2, 3):
- Subsistem cakera, I/O dan sistem fail
- Infrastruktur fserror telah dilaksanakan, dan API telah ditambah untuk mendapatkan maklumat tentang ralat I/O dan kerosakan metadata semasa bekerja dengan fail. Infrastruktur ini menyatukan penghantaran maklumat ralat kepada ruang pengguna merentasi sistem fail melalui mekanisme fsnotify.
- XFS telah dipertingkatkan dengan keupayaan baharu untuk memantau kesihatan sistem fail daripada ruang pengguna. Operasi ioctl XFS_IOC_HEALTH_MONITOR diperkenalkan, mengembalikan deskriptor fail yang boleh digunakan untuk mendapatkan maklumat tentang kegagalan yang berkaitan dengan kerosakan metadata atau ralat I/O, serta untuk memantau perubahan keadaan sistem fail seperti penyahlekap dan penutupan. Di samping itu, proses latar belakang yang diuruskan oleh systemd, xfs_healer, diperkenalkan, yang memproses peristiwa kesihatan sistem fail daripada ruang pengguna dan memulakan prosedur pemulihan secara automatik jika perlu.
- Sistem fail Btrfs telah menambah sokongan eksperimen untuk struktur "remap tree", yang mungkin digunakan pada masa hadapan sebagai lapisan perantaraan semasa operasi I/O. Ciri baharu ini pada asasnya menyimpan alamat data lama dan baharu dalam struktur "remap tree" tambahan selepas memindahkan data pada pemacu, dan bukannya mengemas kini semua struktur yang berkaitan. Alamat ini kemudiannya digantikan semasa mengakses data. Pendekatan baharu ini dianggap lebih andal dan fleksibel, dan juga akan memudahkan pengembangan fungsi Btrfs pada masa hadapan.
- Btrfs melaksanakan sokongan untuk I/O langsung dalam situasi di mana saiz blok melebihi saiz halaman memori sistem.
- Sistem fail baharu, "Nullfs," disertakan, yang boleh digunakan sebagai stub untuk sistem fail root. Sistem fail Nullfs sentiasa kosong, tidak mengandungi data dan tidak menyokong pengubahsuaian. Tujuan Nullfs adalah untuk berfungsi sebagai sistem fail awal bagi memudahkan proses but sistem. Sistem fail lain kemudiannya dipasang di atas Nullfs dan panggilan sistem pivot_root() digunakan untuk menukar sistem fail root, daripada membersihkan kandungan initramfs dan menggunakan sistem fail root yang berkaitan.
- Kemas kini maklumat masa pengubahsuaian fail dalam mod tanpa sekatan telah dilaksanakan. Sebelum ini, memanggil file_update_time_flags() dengan bendera IOCB_NOWAIT mengembalikan ralat "-EAGAIN", menghalang operasi penulisan langsung daripada digunakan dalam mod tanpa sekatan.
- Sokongan untuk pajakan pemberitahuan telah dipindahkan ke pilihan berasingan dalam sistem fail. Mekanisme ini tidak lagi diaktifkan secara lalai disebabkan oleh masalah dengan sistem fail yang pada asalnya tidak direka untuknya. Contohnya, 9p dan cephfs tidak menyokongnya.
- EROFS (Sistem Fail Baca-Sahaja Boleh Lanjutan), yang direka untuk digunakan pada partition baca sahaja, menggunakan algoritma pemampatan LZMA secara lalai. DEFLATE dan Zstandard, yang tidak lagi ditanda sebagai eksperimen, tersedia secara pilihan. Entri cache halaman kini dikongsi merentasi fail yang sama dalam sistem fail EROFS yang berasingan.
- Mod laptop_mode, yang menjimatkan kuasa dengan menangguhkan dan menyatukan penulisan cakera keras untuk melanjutkan masa tidur pemacu dan mengurangkan bilangan bangun, telah dialih keluar. Mod ini tidak lagi relevan, kerana cakera keras telah digantikan dengan pemacu keadaan pepejal dalam peranti mudah alih moden.
- Sistem fail F2FS telah dipindahkan untuk menggunakan folio halaman memori yang besar.
- Kerja-kerja pada pemacu NTFS3, yang dibangunkan oleh Paragon Software, telah dihidupkan semula. Sokongan untuk operasi fail berasaskan iomap telah ditambah, pilihan llseek SEEK_DATA/SEEK_HOLE telah dilaksanakan, dan mod delalloc untuk peruntukan blok tertangguh telah ditambah. Sementara itu, pada bulan Februari, senarai mel pembangun kernel meluluskan kemasukan pelaksanaan NTFS baharu, ntfsplus, yang direka untuk menggantikan NTFS3, dalam versi kernel akan datang.
- Secara lalai, protokol NFS versi 4.1 (CONFIG_NFS_V4_1) diaktifkan semasa binaan. Eksport NFS bagi sistem pseudo-fail khusus, seperti pidfs dan nsfs, disekat. NFSD melaksanakan ciri eksperimen untuk menggunakan POSIX ACL dan menambah sokongan untuk mengubah himpunan thread secara dinamik berdasarkan beban.
- Perkhidmatan memori dan sistem
- Peraturan rasmi untuk penggunaan pembantu AI dan penyertaan kandungan yang dijana secara automatik dalam teras telah diluluskan. Apabila menghantar kod yang dijana, ia dikehendaki menandakannya dengan tag "Dibantu oleh" yang menunjukkan pembantu AI yang digunakan. Pembantu AI dilarang daripada menambah tag "Ditandatangani oleh"—orang yang menghantar tampalan dianggap sebagai pengarangnya, bertanggungjawab atas perubahan yang dihantar dan menjamin kualitinya. Pembangun dikehendaki menyemak kod yang dijana oleh AI secara manual dan mengesahkan bahawa hasilnya mematuhi keperluan pelesenan.
- Sokongan Rust telah dipindahkan daripada ciri eksperimental kepada ciri kernel teras. Sokongan Rust tidak diaktifkan secara lalai dan tidak menyertakan Rust sebagai kebergantungan binaan kernel yang diperlukan.
- Mekanisme Jadual Swap telah disepadukan ke dalam teras, meningkatkan prestasi swap. Penambahbaikan ini dicapai dengan mengurangkan pertikaian cache swap, carian cache yang lebih cekap dan mengurangkan pemecahan. Bahagian belakang berasaskan Jadual Swap digunakan untuk caching swap dan bukannya bahagian belakang XArray dan menghasilkan peningkatan sebanyak 22% dalam bilangan permintaan yang diproses dalam penanda aras redis dengan BGSAVE.
- Sokongan telah ditambah untuk sambungan Analisis Keselamatan Utas, yang diperkenalkan dalam Clang 22, yang membolehkan pengesanan masa kompilasi bagi potensi keadaan perlumbaan dan ralat yang disebabkan oleh pemerolehan kunci yang tidak betul. Sambungan ini menawarkan satu siri atribut, seperti GUARDED_BY(…), REQUIRES(…), RELEASE(…), dan ACQUIRE(…), yang membolehkan anda menandakan fungsi yang diliputi oleh kunci dan memisahkan skop kunci (menentukan konteks). Pengesahan masa kompilasi bagi penggunaan primitif penyegerakan yang betul, seperti mutex, dilakukan berdasarkan aktiviti atau ketidakaktifan konteks yang berkaitan.
- Bendera OPEN_TREE_NAMESPACE telah ditambah pada panggilan sistem open_tree untuk memudahkan persediaan bekas terpencil dan mempercepatkan permulaan bekas pada sistem dengan sejumlah besar titik pelekap. Sama seperti OPEN_TREE_CLONE, bendera baharu hanya menyalin pokok pelekap yang ditentukan, tetapi bukannya deskriptor fail setempat, ia mengembalikan deskriptor fail dalam ruang nama titik pelekap baharu, di mana pokok yang disalin dipasang pada salinan sistem fail root sebenar. Bendera OPEN_TREE_NAMESPACE berguna untuk mengelakkan pelaksanaan berasingan operasi unshare(CLONE_NEWNS) dan pivot_root() yang digunakan semasa penciptaan bekas.
- Mekanisme lanjutan hirisan masa telah ditambah pada panggilan sistem rseq, yang membolehkan masa CPU tambahan diperuntukkan untuk pelaksanaan bahagian kritikal tanpa gangguan. Ideanya adalah untuk menghalang penjadual tugas daripada mengganggu bahagian kritikal dengan kunci sedia ada, yang akan mengakibatkan kawalan dipindahkan ke thread lain menggunakan sumber semasa kunci kekal. Lanjutan hirisan masa dilakukan tanpa overhed tambahan, tetapi juga tanpa jaminan ketat yang disediakan oleh kawalan keutamaan penuh.
- Untuk seni bina arm64, loongarch, powerpc, riscv, s390 dan x86, mod pencegahan penjadual lalai telah ditukar daripada PREEMPT_NONE kepada PREEMPT_LAZY. Bilangan mod yang mungkin telah dikurangkan daripada empat kepada dua: PREEMPT_FULL dan PREEMPT_LAZY (mod PREEMPT_NONE dan PREEMPT_VOLUNTARY dikekalkan hanya untuk seni bina yang tidak menyokong PREEMPT_FULL dan PREEMPT_LAZY). Mod PREEMPT_LAZY menggunakan model pencegahan penuh (PREEMPT_FULL) untuk tugasan masa nyata (RR/FIFO/DEADLINE), tetapi menangguhkan pencegahan tugasan biasa (SCHED_NORMAL) sehingga sempadan tanda. Kelewatan yang diperkenalkan mengurangkan bilangan pengusiran pemegang kunci, yang membolehkan prestasi menghampiri konfigurasi menggunakan model pencegahan sukarela, iaitu PREEMPT_LAZY membolehkan keupayaan pencegahan penuh dikekalkan untuk tugasan masa nyata, tetapi meminimumkan penalti prestasi untuk tugasan biasa.
Pengaktifan PREEMPT_LAZY mengakibatkan regresi yang serius, mengurangkan separuh prestasi PostgreSQL pada sistem ARM64. Bagi menangani penurunan prestasi ini, pembangun PostgreSQL dinasihatkan untuk mendayakan pilihan PR_RSEQ_SLICE_EXTENSION bagi mengurangkan kemungkinan pengusiran pemegang kunci.
- Kami terus memindahkan perubahan daripada cabang Rust-for-Linux yang berkaitan dengan penggunaan Rust sebagai bahasa kedua untuk membangunkan pemacu dan modul kernel. Terima kasih kepada pustaka "syn" yang telah disepadukan sebelum ini, yang memudahkan penulisan makro kompleks, kami dapat mengurangkan saiz kod Rust dalam kernel dengan memudahkan definisi makro prosedur sedia ada. Keupayaan kernel, makro dan pustaka pin-init telah diperluaskan.
- Sistem I/O tak segerak io_uring kini mempunyai pilihan untuk menggunakan baris gilir penyerahan bukan bulat, yang disimpan dalam cache dengan lebih cekap dalam situasi di mana permintaan selesai sebelum panggilan sistem kembali.
- Dalam subsistem eBPF, mekanisme BTF (Format Jenis BPF), yang menyediakan maklumat semakan jenis dalam pseudokod BPF, menggunakan carian binari untuk mencari maklumat nyahpepijat, meningkatkan kecekapan pemuatan program BPF. eBPF kini menyokong argumen tersirat apabila memanggil kfunc (fungsi kernel yang tersedia untuk digunakan dalam program BPF), yang ditakrifkan dengan bendera KF_IMPLICIT_ARGS.
- Kod yang menyokong cakera RAM awal (initrd) berdasarkan linuxrc, yang telah lama tidak digunakan, telah dialih keluar. Pelaksanaan initrd yang tinggal dijadualkan untuk dialih keluar pada tahun 2027. Initramfs harus digunakan dan bukannya initrd (perbezaannya ialah initrd meletakkan persekitaran but awal dalam imej cakera, manakala initramfs meletakkannya dalam sistem fail).
- Peranti blok zram, yang digunakan untuk storan swap termampat dalam memori, telah mengubah logik untuk mengendalikan halaman memori termampat apabila secara pilihan memindahkan data ke storan berterusan apabila RAM yang tersedia penuh. Sebelum ini, halaman memori dinyahmampatkan sebelum ditulis ke storan fizikal, tetapi kini disimpan seperti sedia ada dalam bentuk termampat, mengurangkan beban CPU dan menjimatkan kuasa semasa operasi bateri.
- Utiliti timerlat, yang direka untuk mengukur kelewatan semasa menjalankan penjadual tugas, telah dikemas kini dengan pilihan "--bpf-action" untuk melancarkan program BPF apabila ambang yang ditentukan dilampaui.
- Sistem pengesanan ftrace telah dikemas kini dengan tetapan "bitmask-list" untuk memaparkan bitmask dalam format yang boleh dibaca (sebagai senarai bit, bukan nilai heksadesimal). Tracefs kini menyokong penapis dan pencetus audit. Perintah "perf sched stats" telah ditambah untuk mengumpul dan memaparkan statistik penjadual tugas.
- Menambah pilihan binaan LOGO_LINUX_MONO_FILE, LOGO_LINUX_VGA16_FILE dan LOGO_LINUX_CLUT224_FILE untuk menentukan fail dengan imej logo yang akan ditunjukkan apabila kernel dibut dan bukannya logo penguin Tux standard.
- Maya dan Keselamatan
- Sistem I/O tak segerak io_uring kini menyokong pemasangan program BPF dengan penapis yang mengawal keupayaan operasi SQE (Entri Giliran Penyerahan) tertentu (serupa dengan panggilan sistem dalam io_uring). Ciri tambahan ini serupa dengan penapis panggilan sistem. Penapis boleh dipasang pada tugas tertentu dan diwarisi apabila fork proses lain selepas memanggil fork(). Jika penapis aktif, penapis tambahan hanya boleh memasang sekatan tambahan, tetapi tidak melumpuhkan yang sedia ada. Ciri ini akan membenarkan kaedah penyekatan memintas penapisan panggilan sistem dalam persekitaran kotak pasir yang bergantung pada pelaksanaan operasi serupa yang disediakan oleh io_uring dan bukannya panggilan sistem.
- SELinux kini merangkumi keupayaan untuk mengawal akses kepada token BPF, yang membolehkan proses yang tidak mempunyai keistimewaan melaksanakan beberapa operasi istimewa dengan BPF, seperti memuatkan program BPF ke dalam kernel dan mencipta struktur peta.
- Sokongan telah ditambah untuk algoritma penjanaan tandatangan digital ML-DSA (CRYSTALS-Dilithium), yang berdasarkan teori kekisi dan tahan terhadap serangan brute-force pada komputer kuantum. ML-DSA kini boleh digunakan untuk mengesahkan modul kernel.
- Keupayaan untuk menggunakan skema penjanaan tandatangan digital dengan algoritma SHA-1 untuk mengesahkan modul kernel telah dialih keluar (sokongan untuk memuatkan modul yang ditandatangani dikekalkan).
- Medan 'sport' dan 'dport' telah ditambahkan pada rekod audit NETFILTER_PKT untuk memeriksa nombor port rangkaian dan bukan sekadar Alamat IP.
- Bagi sistem dengan seni bina RISC-V, sokongan telah dilaksanakan untuk sambungan Zicfiss dan Zicfilp, yang menyediakan keupayaan perkakasan untuk menggunakan perlindungan CFI (Integriti Aliran Kawalan), yang menyekat pelanggaran susunan pelaksanaan arahan biasa (aliran kawalan) akibat daripada eksploitasi yang mengubah suai penunjuk fungsi yang disimpan dalam memori.
- Dalam hipervisor KVM Keupayaan untuk menghantar maklumat tentang sokongan pemproses untuk sambungan Enhanced Return Address Predictor Security (ERAPS) kepada sistem tetamu telah dilaksanakan. Ini membolehkan mengelakkan beberapa operasi penetapan semula keadaan CPU apabila sistem tetamu mengembalikan kawalan kepada hos. Di samping itu, sokongan telah ditambah untuk menugaskan unit pemantauan prestasi (PMU) kepada sistem tetamu, meningkatkan ketepatan pemprofilan berbanding menggunakan PMU yang ditiru.
- Pemacu hipervisor Hyper-V kini menyokong antara muka debugfs untuk melihat statistik hipervisor.
- Subsistem rangkaian
- Sambungan AccECN (Accurate Explicit Congestion Notification) diaktifkan secara lalai. Ia melaksanakan versi sambungan ECN yang dipertingkatkan, yang membolehkan hos menandakan paket IP sekiranya berlaku kesesakan dan bukannya menjatuhkannya. Ini membolehkan pengesanan permulaan kesesakan pada saluran komunikasi tanpa kehilangan paket. Sambungan ECN asal mempunyai had hanya membenarkan satu isyarat kesesakan dibangkitkan semasa satu perjalanan pergi balik TCP (RTT, Masa Perjalanan Pergi Balik, menghantar permintaan dan menerima respons). AccECN mengalih keluar had ini dan membolehkan penerima menghantar lebih daripada satu isyarat kesesakan kepada penghantar dalam pengepala paket TCP. Algoritma kawalan kesesakan boleh menggunakan maklumat ini untuk bertindak balas dengan lebih tepat terhadap kesesakan dan mengelakkan pengurangan kadar paket secara tiba-tiba apabila kesesakan kecil berlaku.
- Pelaksanaan algoritma pengurusan giliran rangkaian Cake telah dipertingkatkan untuk mengendalikan berbilang giliran bagi mengagihkan beban merentasi berbilang teras CPU. Algoritma CAKE digunakan untuk mengurangkan kesan negatif penimbalan paket perantaraan pada peralatan rangkaian pinggir dan bertujuan untuk mencapai daya pemprosesan maksimum dan latensi minimum, walaupun pada pautan komunikasi yang perlahan.
- Sokongan untuk ruang nama rangkaian telah ditambah pada soket VSOCK yang digunakan untuk berkomunikasi dengan mesin maya.
- Menambah pelaksanaan awal piawaian WiFi 8 masa hadapan (802.11 bilion, Kebolehpercayaan Ultra Tinggi» WiFi).
- Pengoptimuman tambahan yang meningkatkan prestasi pemprosesan paket UDP masuk sebanyak 12% semasa ujian tekanan pada rangkaian 100 Gbps.
- Оборудование
- Pemacu AMDGPU melaksanakan sokongan untuk blok IP yang digunakan dalam GPU AMD baharu, seperti SMUIO 15.x, PSP 15.x, IH 6.1.1/7.1, MMHUB 3.4/4.2, GC 11.5.4/12.1, SDMA 6.1.4/7.1/7.11.4 dan JPEG 5.3.
- Pemacu Nouveau telah menambah baik pengurusan frekuensi pada sistem Tegra 186+.
- Pemacu i915 kini merangkumi sokongan awal untuk IP paparan Xe3p_LPD yang digunakan dalam pemproses Intel Nova Lake-P.
- Kerja-kerja telah diteruskan pada pemacu Xe DRM (Direct Rendering Manager) untuk GPU berdasarkan seni bina Intel Xe, yang digunakan dalam kad grafik siri Intel Arc dan grafik bersepadu, bermula dengan pemproses Tiger Lake. Mod Berbilang Giliran telah ditambah. Komponen yang diperlukan untuk mendiagnosis GPU macet dalam Mesa telah ditambah. Sokongan untuk mekanisme MERT untuk mengurus akses memori GPU telah ditambah.
- Kami terus mengintegrasikan komponen pemacu Nova untuk GPU NVIDIA yang dilengkapi dengan firmware GSP yang digunakan sejak siri NVIDIA GeForce RTX 2000 berdasarkan mikroarkitektur Turing. Pemacu ini ditulis dalam Rust. Versi baharu ini menyediakan sokongan untuk GPU berdasarkan mikroarkitektur Turing dan merangkumi pelbagai perubahan dalaman.
- Menambah sokongan untuk pengawal dan peranti persisian dengan antara muka SPI (Antara Muka Periferal Bersiri) berbilang saluran, yang membolehkan data dipindahkan dalam beberapa aliran selari.
- Pemacu untuk penyambung Jenis-C gabungan yang digunakan pada peranti berasaskan cip Apple Silicon dan menggabungkan antara muka USB3, DP-AltMode dan Thunderbolt/USB4 telah ditambah.
- Sokongan untuk subsistem bunyi Tegra238, Minisforum V3 SE, iBasso DC04U, Intel Nova Lake, Nova Lake S dan cip Focusrite Forte telah ditambah.
- Sokongan tambahan untuk papan ARM, SoC dan peranti: Arduino UnoQ, OrangePi 6 Plus, OrangePi CM5, Anbernic RG-DS, Realtek Kent, Qualcomm Kaanapali, Mediatek Ezurio, Facebook Anacapa, Microchip LAN9668, Khadas VIM1S, QNAP TS133, i.MX952, i.MX93, i.MX94, VHIP4 EvalBoard, TQ-Systems MBLS1028A, Agilex5, Radxa CM3J, Glymur,
- Sokongan tambahan untuk telefon pintar dan tablet: Fairphone Gen 6 (SoC Qualcomm Milos/Snapdragon 7s Gen 3), Pixel 3/3 xl, Microsoft surface pro 11.
Pada masa yang sama, Yayasan Perisian Bebas (FSF) di Amerika Latin telah mencipta versi kernel 7.0 yang percuma sepenuhnya—Linux-libre 7.0-gnu—yang dibersihkan daripada elemen perisian tegar dan pemacu yang mengandungi komponen atau bahagian kod bukan bebas dengan skop terhad pengilang. Keluaran 7.0 merangkumi pembersihan blob untuk pemacu iwlwifi. Kod pembersihan untuk pemacu amdgpu, adreno, TI PRUeth, air_en8811h, ath12k, TI VPE, rtw8852b, rt1320, rt5575 SPI, tas2783 dan Intel catpt telah dikemas kini. Nama blob dalam fail devicetree (dts) untuk cip ARM telah dibersihkan.
Sumber: opennet.ru
