Keluaran kernel Linux 5.19

Selepas dua bulan pembangunan, Linus Torvalds membentangkan keluaran kernel Linux 5.19. Antara perubahan yang paling ketara: sokongan untuk seni bina pemproses LoongArch, penyepaduan tampalan "BIG TCP", mod atas permintaan dalam fscache, penyingkiran kod untuk menyokong format a.out, keupayaan untuk menggunakan ZSTD untuk pemampatan perisian tegar, antara muka untuk menguruskan pengasingan memori daripada ruang pengguna , meningkatkan kebolehpercayaan dan prestasi penjana nombor rawak pseudo, sokongan untuk Intel IFS (In-Field Scan), AMD SEV-SNP (Secure Nested Paging), Intel TDX (Trusted Domain Extensions) dan ARM Sambungan SME (Scalable Matrix Extension).

Dalam pengumuman itu, Linus berkata kemungkinan besar keluaran kernel seterusnya akan diberi nombor 6.0, memandangkan cawangan 5.x telah mengumpul keluaran yang mencukupi untuk menukar nombor pertama dalam nombor versi. Perubahan penomboran dilakukan atas sebab estetik dan merupakan langkah rasmi yang melegakan ketidakselesaan akibat pengumpulan sejumlah besar isu dalam siri ini.

Linus juga menyebut bahawa dia menggunakan komputer riba Apple berdasarkan seni bina ARM64 (Apple Silicon) dengan persekitaran Linux berdasarkan pengedaran Asahi Linux untuk mencipta keluaran. Ia bukan stesen kerja utama Linus, tetapi dia menggunakan platform itu untuk menguji kesesuaiannya untuk kerja kernel dan memastikan dia boleh menghasilkan keluaran kernel semasa melakukan perjalanan dengan komputer riba ringan di tangan. Sebelum ini, bertahun-tahun yang lalu, Linus mempunyai pengalaman menggunakan peralatan Apple untuk pembangunan - dia pernah menggunakan PC berasaskan CPU ppc970 dan komputer riba Macbook Air.

Versi baharu termasuk 16401 pembetulan daripada 2190 pembangun (dalam keluaran terakhir terdapat 16206 pembetulan daripada 2127 pembangun), saiz tampung ialah 90 MB (perubahan mempengaruhi 13847 fail, 1149456 baris kod telah ditambahkan, 349177 baris telah dipadamkan). Kira-kira 39% daripada semua perubahan yang diperkenalkan dalam 5.19 berkaitan dengan pemacu peranti, kira-kira 21% perubahan berkaitan dengan pengemaskinian kod khusus untuk seni bina perkakasan, 11% berkaitan dengan susunan rangkaian, 4% berkaitan dengan sistem fail dan 3% adalah berkaitan dengan subsistem kernel dalaman.

Inovasi utama dalam kernel 5.19:

  • Subsistem cakera, I/O dan sistem fail
    • Sistem fail EROFS (Enhanced Read-Only File System), bertujuan untuk digunakan pada partition baca sahaja, telah ditukar untuk menggunakan subsistem fscache, yang menyediakan caching data. Perubahan ini telah meningkatkan prestasi sistem dengan ketara di mana sejumlah besar kontena dilancarkan daripada imej berasaskan EROFS.
    • Mod baca atas permintaan telah ditambahkan pada subsistem fscache, yang digunakan untuk mengoptimumkan EROFS. Mod baharu membolehkan anda mengatur caching bacaan daripada imej FS yang terletak dalam sistem setempat. Berbeza dengan mod operasi yang tersedia pada mulanya, yang tertumpu pada caching dalam sistem fail tempatan data yang dipindahkan melalui sistem fail rangkaian, mod "atas permintaan" mewakilkan fungsi mendapatkan semula data dan menulisnya ke cache kepada yang berasingan. proses latar belakang berjalan dalam ruang pengguna.
    • XFS menyediakan keupayaan untuk menyimpan berbilion-bilion atribut lanjutan dalam i-nod. Bilangan maksimum takat untuk satu fail telah ditingkatkan daripada 4 bilion kepada 247. Mod telah dilaksanakan untuk mengemas kini secara atom beberapa atribut fail lanjutan sekaligus.
    • Sistem fail Btrfs telah mengoptimumkan kerja dengan kunci, yang membenarkan peningkatan kira-kira 7% dalam prestasi apabila menulis terus dalam mod nowait. Prestasi operasi dalam mod NOCOW (tanpa copy-on-write) meningkat kira-kira 3%. Beban pada cache halaman semasa menjalankan arahan "hantar" telah dikurangkan. Saiz minimum subhalaman telah dikurangkan daripada 64K kepada 4K (subhalaman yang lebih kecil daripada halaman kernel boleh digunakan). Peralihan telah dibuat daripada menggunakan pokok radix kepada algoritma XArrays.
    • Mod telah ditambahkan pada pelayan NFS untuk melanjutkan pemeliharaan keadaan penguncian yang ditetapkan oleh pelanggan yang telah berhenti membalas permintaan. Mod baharu membolehkan anda menangguhkan pembersihan kunci sehingga sehari melainkan pelanggan lain meminta kunci bersaing. Dalam mod biasa, sekatan dikosongkan 90 saat selepas pelanggan berhenti bertindak balas.
    • Subsistem penjejakan peristiwa dalam fanotify FS melaksanakan bendera FAN_MARK_EVICTABLE, yang dengannya anda boleh melumpuhkan penyematan nod i sasaran dalam cache, sebagai contoh, untuk mengabaikan sub-cawangan tanpa menyemat bahagiannya dalam cache.
    • Pemacu untuk sistem fail FAT32 telah menambah sokongan untuk mendapatkan maklumat tentang masa penciptaan fail melalui panggilan sistem statx dengan pelaksanaan versi stat() yang lebih cekap dan berfungsi, yang mengembalikan maklumat lanjutan tentang fail.
    • Pengoptimuman yang ketara telah dibuat kepada pemacu exFAT untuk membenarkan pembersihan serentak sekumpulan sektor apabila mod 'dirsync' aktif, bukannya pembersihan sektor demi sektor secara berurutan. Dengan mengurangkan bilangan permintaan blok selepas pengoptimuman, prestasi mencipta sejumlah besar direktori pada kad SD meningkat lebih daripada 73-85%, bergantung pada saiz kelompok.
    • Kernel termasuk kemas kini pembetulan pertama kepada pemacu ntfs3. Sejak ntfs3 dimasukkan ke dalam kernel 5.15 pada Oktober lalu, pemacu belum dikemas kini dan komunikasi dengan pembangun telah hilang, tetapi pembangun kini telah menyambung semula perubahan penerbitan. Tampalan yang dicadangkan telah menghapuskan ralat yang membawa kepada kebocoran dan ranap memori, menyelesaikan masalah dengan pelaksanaan xfstests, membersihkan kod yang tidak digunakan dan membetulkan kesilapan menaip.
    • Untuk OverlayFS, keupayaan untuk memetakan ID pengguna sistem fail yang dipasang telah dilaksanakan, yang digunakan untuk memadankan fail pengguna tertentu pada partition asing yang dipasang dengan pengguna lain pada sistem semasa.
  • Perkhidmatan memori dan sistem
    • Menambah sokongan awal untuk seni bina set arahan LoongArch yang digunakan dalam pemproses Loongson 3 5000, yang melaksanakan RISC ISA baharu, serupa dengan MIPS dan RISC-V. Seni bina LoongArch tersedia dalam tiga perisa: 32-bit (LA32R), 32-bit biasa (LA32S) dan 64-bit (LA64).
    • Kod dialih keluar untuk menyokong format fail boleh laku a.out, yang telah ditamatkan dalam keluaran 5.1. Format a.out telah lama ditamatkan pada sistem Linux dan penjanaan fail a.out tidak disokong oleh alatan moden dalam konfigurasi Linux lalai. Pemuat untuk fail a.out boleh dilaksanakan sepenuhnya dalam ruang pengguna.
    • Sokongan untuk pilihan but khusus x86 telah dihentikan: nosp, nosmap, nosmep, noexec dan noclflush).
    • Sokongan untuk seni bina CPU h8300 yang sudah lapuk (Renesas H8/300), yang telah lama ditinggalkan tanpa sokongan, telah dihentikan.
    • Keupayaan yang diperluaskan berkaitan dengan tindak balas terhadap pengesanan kunci berpecah ("kunci berpecah") yang berlaku apabila mengakses data tidak sejajar dalam ingatan disebabkan fakta bahawa apabila melaksanakan arahan atom, data melintasi dua baris cache CPU. Sekatan sedemikian membawa kepada penurunan prestasi yang ketara. Jika sebelum ini, secara lalai, kernel akan mengeluarkan amaran dengan maklumat tentang proses yang menyebabkan penyekatan, kini proses yang bermasalah akan diperlahankan lagi untuk mengekalkan prestasi sistem yang lain.
    • Sokongan tambahan untuk mekanisme IFS (In-Field Scan) yang dilaksanakan dalam pemproses Intel, yang membolehkan anda menjalankan ujian diagnostik CPU peringkat rendah yang boleh mengenal pasti masalah yang tidak dikesan oleh alat standard berdasarkan kod pembetulan ralat (ECC) atau bit pariti . Ujian yang dilakukan adalah dalam bentuk perisian tegar yang boleh dimuat turun, direka bentuk serupa dengan kemas kini mikrokod. Keputusan ujian tersedia melalui sysfs.
    • Menambahkan keupayaan untuk membenamkan fail bootconfig ke dalam kernel, yang membolehkan, sebagai tambahan kepada pilihan baris arahan, untuk menentukan parameter kernel melalui fail tetapan. Pembenaman dijalankan menggunakan pilihan pemasangan 'CONFIG_BOOT_CONFIG_EMBED_FILE=Β»/PATH/TO/BOOTCONFIG/FILEΒ»'. Sebelum ini, bootconfig ditentukan dengan melampirkan pada imej initrd. Integrasi ke dalam kernel membolehkan bootconfig digunakan dalam konfigurasi tanpa initrd.
    • Keupayaan untuk memuat turun perisian tegar yang dimampatkan menggunakan algoritma Zstandard telah dilaksanakan. Satu set fail kawalan /sys/class/firmware/* telah ditambahkan pada sysfs, membolehkan anda memulakan pemuatan perisian tegar dari ruang pengguna.
    • Antara muka I/O tak segerak io_uring menawarkan bendera baharu, IORING_RECVSEND_POLL_FIRST, yang, apabila ditetapkan, mula-mula akan menghantar operasi rangkaian untuk diproses menggunakan tinjauan pendapat, yang boleh menjimatkan sumber dalam situasi di mana pemprosesan operasi dengan sedikit kelewatan boleh diterima. io_uring juga menambah sokongan untuk panggilan sistem soket(), mencadangkan bendera baharu untuk memudahkan pengurusan deskriptor fail, menambah mod "berbilang tangkapan" untuk menerima beberapa sambungan sekaligus dalam panggilan terima() dan menambah operasi untuk memajukan NVMe arahan terus ke peranti.
    • Seni bina Xtensa menyediakan sokongan untuk alat penyahpepijat KCSAN (Kernel Concurrency Sanitizer), yang direka untuk mengesan keadaan perlumbaan secara dinamik dalam kernel. Juga menambah sokongan untuk mod tidur dan coprocessors.
    • Untuk seni bina m68k (Motorola 68000), mesin maya (simulator platform) berdasarkan emulator Android Goldfish telah dilaksanakan.
    • Untuk seni bina AArch64, sokongan untuk sambungan Armv9-A SME (Scalable Matrix Extension) telah dilaksanakan.
    • Subsistem eBPF membolehkan menyimpan penunjuk yang ditaip dalam struktur peta, dan juga menambah sokongan untuk penunjuk dinamik.
    • Mekanisme tuntutan semula memori proaktif baharu dicadangkan yang menyokong kawalan ruang pengguna menggunakan fail memory.reclaim. Menulis nombor pada fail yang ditentukan akan cuba mengusir bilangan bait yang sepadan daripada set yang dikaitkan dengan cgroup.
    • Peningkatan ketepatan penggunaan memori apabila memampatkan data dalam partition swap menggunakan mekanisme zswap.
    • Untuk seni bina RISC-V, sokongan untuk menjalankan boleh laku 32-bit pada sistem 64-bit disediakan, mod ditambah untuk mengikat atribut terhad pada halaman memori (contohnya, untuk melumpuhkan caching), dan fungsi kexec_file_load() dilaksanakan .
    • Pelaksanaan sokongan untuk sistem Armv32T dan Armv4 5-bit disesuaikan untuk digunakan dalam binaan kernel multi-platform universal yang sesuai untuk sistem ARM yang berbeza.
  • Maya dan Keselamatan
    • Subsistem EFI melaksanakan keupayaan untuk memindahkan maklumat rahsia secara sulit kepada sistem tetamu tanpa mendedahkannya kepada sistem hos. Data disediakan melalui direktori keselamatan/coco dalam securityfs.
    • Mod perlindungan penguncian, yang menyekat akses pengguna akar kepada kernel dan menyekat laluan pintasan Boot Selamat UEFI, telah menghapuskan kelemahan yang membenarkan perlindungan dipintas dengan memanipulasi penyahpepijat kernel.
    • Termasuk adalah tampalan yang bertujuan untuk meningkatkan kebolehpercayaan dan prestasi penjana nombor pseudo-rawak.
    • Apabila membina menggunakan Clang 15, sokongan untuk mekanisme rawak struktur kernel dilaksanakan.
    • Mekanisme Landlock, yang membolehkan anda mengehadkan interaksi sekumpulan proses dengan persekitaran luaran, menyediakan sokongan untuk peraturan yang membolehkan anda mengawal pelaksanaan operasi penamaan semula fail.
    • Subsistem IMA (Integrity Measurement Architecture), yang direka untuk mengesahkan integriti komponen sistem pengendalian menggunakan tandatangan digital dan cincang, telah ditukar kepada menggunakan modul fs-verity untuk pengesahan fail.
    • Logik tindakan apabila melumpuhkan akses tanpa hak kepada subsistem eBPF telah diubah - sebelum ini semua arahan yang dikaitkan dengan panggilan sistem bpf() telah dilumpuhkan, dan bermula dari versi 5.19, akses kepada perintah yang tidak membawa kepada penciptaan objek dibiarkan. . Tingkah laku ini memerlukan proses istimewa untuk memuatkan program BPF, tetapi kemudian proses yang tidak mempunyai keistimewaan boleh berinteraksi dengan program tersebut.
    • Sokongan tambahan untuk sambungan AMD SEV-SNP (Secure Nested Paging), yang menyediakan kerja selamat dengan jadual halaman memori bersarang dan melindungi daripada serangan "undeSErVed" dan "SEVerity" pada pemproses AMD EPYC, yang membolehkan memintas AMD SEV (Secure Encrypted Virtualization). ) mekanisme perlindungan.
    • Sokongan tambahan untuk mekanisme Intel TDX (Trusted Domain Extensions), yang membolehkan anda menyekat percubaan pihak ketiga untuk mengakses memori yang disulitkan mesin maya.
    • Pemacu virtio-blk, yang digunakan untuk meniru peranti blok, telah menambah sokongan untuk I/O menggunakan pengundian, yang, menurut ujian, telah mengurangkan kependaman sebanyak kira-kira 10%.
  • Subsistem rangkaian
    • Pakej ini termasuk satu siri patch TCP BIG yang membolehkan anda meningkatkan saiz paket maksimum paket TCP 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. Dalam ujian prestasi, menetapkan saiz paket kepada 185 KB meningkatkan daya pengeluaran sebanyak 50% dan mengurangkan kependaman pemindahan data dengan ketara.
    • Kerja diteruskan untuk menyepadukan alat ke dalam timbunan rangkaian untuk menjejaki sebab untuk menjatuhkan paket (kod sebab). Kod sebab dihantar apabila memori yang dikaitkan dengan paket dibebaskan dan membenarkan situasi seperti pembuangan paket disebabkan oleh ralat pengepala, pengesanan spoofing rp_filter, checksum tidak sah, kehabisan memori, peraturan IPSec XFRM dicetuskan, nombor urutan TCP tidak sah, dsb.
    • Menambah sokongan untuk menyambung semula sambungan MPTCP (MultiPath TCP) untuk menggunakan TCP biasa, dalam situasi di mana ciri MPTCP tertentu tidak boleh digunakan. 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. Menambahkan API untuk mengawal strim MPTCP dari ruang pengguna.
  • ΠžΠ±ΠΎΡ€ΡƒΠ΄ΠΎΠ²Π°Π½ΠΈΠ΅
    • Menambah lebih 420k baris kod yang berkaitan dengan pemacu amdgpu, yang mana kira-kira 400k baris adalah fail pengepala yang dijana secara automatik untuk data daftar ASIC dalam pemacu GPU AMD, dan 22.5k baris lain menyediakan pelaksanaan awal sokongan untuk AMD SoC21. Jumlah saiz pemacu untuk GPU AMD melebihi 4 juta baris kod. Selain SoC21, pemacu AMD termasuk sokongan untuk SMU 13.x (Unit Pengurusan Sistem), sokongan terkini untuk USB-C dan GPUVM, dan persediaan untuk menyokong platform RDNA3 (RX 7000) dan CDNA (AMD Instinct) generasi seterusnya. .
    • Pemacu i915 (Intel) telah mengembangkan keupayaan yang berkaitan dengan pengurusan kuasa. Pengecam tambahan untuk GPU Intel DG2 (Arc Alchemist) yang digunakan pada komputer riba, menyediakan sokongan awal untuk platform Intel Raptor Lake-P (RPL-P), menambah maklumat tentang kad grafik Arctic Sound-M), melaksanakan ABI untuk enjin pengiraan, ditambah untuk Sokongan kad DG2 untuk format Tile4; untuk sistem berdasarkan seni bina mikro Haswell, sokongan DisplayPort HDR dilaksanakan.
    • Pemacu Nouveau telah beralih kepada menggunakan pengendali drm_gem_plane_helper_prepare_fb; peruntukan memori statik telah digunakan pada beberapa struktur dan pembolehubah. Bagi penggunaan modul kernel sumber terbuka oleh NVIDIA di Nouveau, kerja setakat ini adalah untuk mengenal pasti dan menghapuskan ralat. Pada masa hadapan, perisian tegar yang diterbitkan dirancang untuk digunakan untuk meningkatkan prestasi pemandu.
    • Menambah pemacu untuk pengawal NVMe yang digunakan dalam komputer Apple berdasarkan cip M1.

Pada masa yang sama, Yayasan Perisian Percuma Amerika Latin membentuk versi kernel percuma sepenuhnya 5.19 - Linux-libre 5.19-gnu, dibersihkan daripada elemen perisian tegar dan pemacu yang mengandungi komponen bukan bebas atau bahagian kod, yang skopnya adalah terhad oleh pengeluar. Keluaran baharu ini membersihkan pemacu untuk pureLiFi X/XL/XC dan TI AMx3 Wkup-M3 IPC. Kod pembersihan gumpalan dikemas kini dalam Silicon Labs WFX, AMD amdgpu, Qualcomm WCNSS Peripheral Image Loader, Realtek Bluetooth, Mellanox Spectrum, Marvell WiFi-Ex, Intel AVS, IFS, pemacu dan subsistem pu3-imgu. Pemprosesan fail devicetree Qualcomm AArch64 telah dilaksanakan. Menambah sokongan untuk skim penamaan komponen Perisian Tegar Terbuka Bunyi baharu. Berhenti membersihkan pemandu Duta ATM, yang dikeluarkan dari kernel. Pengurusan pembersihan gumpalan dalam HDCP dan Mellanox Core telah dialihkan ke teg kconfig yang berasingan.

Sumber: opennet.ru

Tambah komen