Keluaran kernel Linux 5.15

Selepas dua bulan pembangunan, Linus Torvalds membentangkan keluaran kernel Linux 5.15. Perubahan ketara termasuk: pemacu NTFS baharu dengan sokongan tulis, modul ksmbd dengan pelaksanaan pelayan SMB, subsistem DAMON untuk pemantauan capaian memori, primitif penguncian masa nyata, sokongan fs-verity dalam Btrfs, panggilan sistem process_mrelease untuk memori sistem tindak balas kelaparan, modul pensijilan jauh dm-ima.

Versi baharu termasuk 13499 pembaikan daripada 1888 pembangun, saiz tampalan ialah 42 MB (perubahan mempengaruhi 10895 fail, 632522 baris kod telah ditambah, 299966 baris telah dipadamkan). Kira-kira 45% daripada semua perubahan yang diperkenalkan dalam 5.15 adalah berkaitan dengan pemacu peranti, kira-kira 14% daripada perubahan berkaitan dengan pengemaskinian kod khusus untuk seni bina perkakasan, 14% berkaitan dengan susunan rangkaian, 6% berkaitan dengan sistem fail dan 3% adalah berkaitan dengan subsistem kernel dalaman.

Inovasi utama:

  • Subsistem cakera, I/O dan sistem fail
    • Kernel telah menerima pakai pelaksanaan baharu sistem fail NTFS, dibuka oleh Paragon Software. Pemacu baharu boleh berfungsi dalam mod tulis dan menyokong semua ciri versi semasa NTFS 3.1, termasuk atribut fail lanjutan, senarai akses (ACL), mod pemampatan data, kerja berkesan dengan ruang kosong dalam fail (jarang) dan memainkan semula perubahan daripada log untuk memulihkan integriti selepas kegagalan.
    • Sistem fail Btrfs menyokong mekanisme fs-verity, yang digunakan untuk mengawal secara telus integriti dan ketulenan fail individu menggunakan cincang kriptografi atau kunci yang dikaitkan dengan fail, yang disimpan dalam kawasan metadata. Sebelum ini, fs-verity hanya tersedia untuk sistem fail Ext4 dan F2fs.

      Btrfs juga menambah sokongan untuk memetakan ID pengguna untuk sistem fail yang dipasang (sebelum ini disokong untuk sistem fail FAT, ext4 dan XFS). Ciri ini membolehkan anda membandingkan fail pengguna tertentu pada partition asing yang dipasang dengan pengguna lain pada sistem semasa.

      Perubahan lain pada Btrfs termasuk: penambahan kunci yang lebih cepat pada indeks direktori untuk meningkatkan prestasi penciptaan fail; keupayaan untuk bekerja raid0 dengan satu peranti, dan raid10 dengan dua (contohnya, semasa proses konfigurasi semula tatasusunan); pilihan "rescue=ibadroots" untuk mengabaikan pokok takat yang salah; pecutan operasi "hantar"; pengurangan konflik penguncian semasa operasi penamaan semula; keupayaan untuk menggunakan sektor 4K pada sistem dengan saiz halaman memori 64K.

    • Dalam XFS, keupayaan untuk menggunakan tarikh selepas 2038 dalam sistem fail telah distabilkan. Melaksanakan mekanisme untuk penyahaktifan inode tertunda dan sokongan untuk pemasangan tertunda dan penyingkiran atribut fail. Untuk menghapuskan masalah, keupayaan untuk melumpuhkan kuota cakera untuk partition yang telah dipasang telah dialih keluar (anda boleh melumpuhkan kuota secara paksa, tetapi pengiraan yang berkaitan dengannya akan diteruskan, jadi pemasangan semula diperlukan untuk melumpuhkannya sepenuhnya).
    • Dalam EXT4, kerja telah dilakukan untuk meningkatkan prestasi menulis penimbal delalloc dan memproses fail anak yatim yang terus wujud disebabkan fakta bahawa ia kekal terbuka, tetapi tidak dikaitkan dengan direktori. Pemprosesan operasi buang telah dialihkan keluar daripada benang kthread jbd2 untuk mengelakkan operasi menyekat dengan metadata.
    • F2FS menambah pilihan "discard_unit=block|segmen|section" untuk mengikat operasi buang (menanda blok yang dibebaskan yang mungkin tidak lagi disimpan secara fizikal) pada penjajaran relatif kepada blok, sektor, segmen atau bahagian. Menambah sokongan untuk menjejaki perubahan dalam kependaman I/O.
    • Sistem fail EROFS (Sistem Fail Baca Sahaja Boleh Diperluas) menambah sokongan I/O terus untuk fail yang disimpan tanpa pemampatan, serta sokongan fiemap.
    • OverlayFS melaksanakan pengendalian yang betul bagi bendera pelekap "tidak boleh diubah", "tambah sahaja", "segerak" dan "noatime".
    • NFS telah menambah baik pengendalian situasi di mana pelayan NFS berhenti bertindak balas kepada permintaan. Menambah keupayaan untuk melekap dari pelayan yang sudah digunakan, tetapi boleh diakses melalui alamat rangkaian yang berbeza.
    • Persediaan telah bermula untuk menulis semula subsistem FSCACHE.
    • Menambah sokongan untuk partition EFI dengan penempatan bukan standard jadual GPT.
    • Mekanisme fanotify melaksanakan bendera baharu, FAN_REPORT_PIDFD, yang menyebabkan pidfd dimasukkan dalam metadata yang dikembalikan. Pidfd membantu mengendalikan situasi penggunaan semula PID untuk mengenal pasti proses yang mengakses fail yang dipantau dengan lebih tepat (pidfd dikaitkan dengan proses tertentu dan tidak berubah, manakala PID boleh dikaitkan dengan proses lain selepas proses semasa yang dikaitkan dengan PID itu ditamatkan).
    • Menambahkan keupayaan untuk menambah titik lekap pada kumpulan kongsi sedia ada pada panggilan sistem move_mount(), yang menyelesaikan masalah dengan menyimpan dan memulihkan keadaan proses dalam CRIU apabila terdapat berbilang ruang lekap yang dikongsi dalam bekas terpencil.
    • Perlindungan tambahan terhadap keadaan perlumbaan tersembunyi yang berpotensi menyebabkan kerosakan fail apabila melakukan bacaan cache semasa memproses lompang dalam fail.
    • Sokongan untuk penguncian fail wajib (wajib), dilaksanakan melalui panggilan sistem menyekat yang membawa kepada perubahan fail, telah dihentikan. Disebabkan kemungkinan keadaan perlumbaan, kunci ini dianggap tidak boleh dipercayai dan telah ditamatkan beberapa tahun yang lalu.
    • Subsistem LightNVM telah dialih keluar, yang membenarkan akses terus ke pemacu SSD, memintas lapisan emulasi. LightNVM kehilangan maknanya selepas kemunculan piawaian NVMe yang menyediakan pengezonan (ZNS, Ruang Nama Zon).
  • Perkhidmatan memori dan sistem
    • Subsistem DAMON (Data Access MONitor) telah dilaksanakan, membolehkan anda memantau aktiviti yang berkaitan dengan mengakses data dalam RAM berhubung dengan proses terpilih yang berjalan dalam ruang pengguna. Subsistem ini membolehkan anda menganalisis kawasan memori mana yang diakses oleh proses semasa keseluruhan operasinya, dan kawasan memori mana yang tidak dituntut. DAMON menampilkan beban CPU yang rendah, penggunaan memori yang rendah, ketepatan yang tinggi dan overhed malar yang boleh diramal, tidak bergantung pada saiz. Subsistem boleh digunakan oleh kernel untuk mengoptimumkan pengurusan memori, dan oleh utiliti dalam ruang pengguna untuk memahami apa sebenarnya proses yang dilakukan dan mengoptimumkan penggunaan memori, contohnya, membebaskan lebihan memori untuk sistem.
    • Panggilan sistem process_mrelease telah dilaksanakan untuk mempercepatkan proses melepaskan memori proses yang melengkapkan pelaksanaannya. Dalam keadaan biasa, pelepasan sumber dan penamatan proses tidak serta-merta dan mungkin ditangguhkan atas pelbagai sebab, mengganggu sistem tindak balas awal memori ruang pengguna seperti oomd (disediakan oleh systemd) dan lmkd (digunakan oleh Android). Dengan memanggil process_mrelease, sistem sedemikian boleh mencetuskan tuntutan semula memori daripada proses paksa dengan lebih mudah.
    • Daripada cawangan kernel PREEMPT_RT, yang membangunkan sokongan untuk operasi masa nyata, varian primitif untuk mengatur kunci mutex, ww_mutex, rw_semaphore, spinlock dan rwlock, berdasarkan subsistem RT-Mutex, telah dipindahkan. Perubahan telah ditambahkan pada pengalokasi papak SLUB untuk meningkatkan operasi dalam mod PREEMPT_RT dan mengurangkan kesan pada gangguan.
    • Sokongan untuk atribut penjadual tugas SCHED_IDLE telah ditambahkan pada cgroup, membolehkan anda memberikan atribut ini kepada semua proses kumpulan yang disertakan dalam cgroup tertentu. Itu. proses ini hanya akan berjalan apabila tiada tugas lain menunggu untuk dilaksanakan pada sistem. Tidak seperti menetapkan atribut SCHED_IDLE kepada setiap proses secara individu, apabila mengikat SCHED_IDLE kepada kumpulan c, berat relatif tugas dalam kumpulan diambil kira apabila memilih tugasan untuk dilaksanakan.
    • Mekanisme untuk mengakaun penggunaan memori dalam cgroup telah diperluaskan dengan keupayaan untuk menjejaki struktur data kernel tambahan, termasuk yang dicipta untuk pengundian, pemprosesan isyarat dan ruang nama.
    • Menambah sokongan untuk penjadualan asimetri tugas yang mengikat kepada teras pemproses pada seni bina di mana sesetengah CPU membenarkan pelaksanaan tugas 32-bit, dan sesetengahnya hanya beroperasi dalam mod 64-bit (contohnya, ARM). Mod baharu membolehkan anda mempertimbangkan hanya CPU yang menyokong tugas 32-bit apabila menjadualkan tugas 32-bit.
    • Antara muka I/O tak segerak io_uring kini menyokong membuka fail terus dalam jadual indeks fail tetap, tanpa menggunakan deskriptor fail, yang memungkinkan untuk mempercepatkan beberapa jenis operasi dengan ketara, tetapi bertentangan dengan proses Unix tradisional menggunakan deskriptor fail untuk membuka fail.

      io_uring untuk subsistem BIO (Blok I/O Layer) melaksanakan mekanisme kitar semula baharu (β€œKitar semula BIO”), yang mengurangkan overhed dalam proses mengurus memori dalaman dan meningkatkan bilangan operasi I/O yang diproses sesaat sebanyak lebih kurang 10% . io_uring juga menambah sokongan untuk panggilan sistem mkdirat(), symlinkat() dan linkat().

    • Bagi program BPF, keupayaan untuk meminta dan memproses acara pemasa telah dilaksanakan. Iterator untuk soket UNIX telah ditambah, dan keupayaan untuk mendapatkan dan menetapkan pilihan soket untuk setsockopt telah dilaksanakan. BTF dumper kini menyokong data yang ditaip.
    • Pada sistem NUMA dengan pelbagai jenis memori yang berbeza dalam prestasi, apabila ruang kosong kehabisan, halaman memori yang dikeluarkan dipindahkan daripada memori dinamik (DRAM) kepada memori kekal yang lebih perlahan (Memori Berterusan) dan bukannya memadam halaman ini. Ujian telah menunjukkan bahawa taktik sedemikian biasanya meningkatkan prestasi pada sistem sedemikian. NUMA juga menyediakan keupayaan untuk memperuntukkan halaman memori untuk proses daripada set nod NUMA terpilih.
    • Untuk seni bina ARC, sokongan untuk jadual halaman memori tiga dan empat peringkat telah dilaksanakan, yang seterusnya akan membolehkan sokongan untuk pemproses ARC 64-bit.
    • Untuk seni bina s390, keupayaan untuk menggunakan mekanisme KFENCE untuk mengesan ralat apabila bekerja dengan memori telah dilaksanakan, dan sokongan untuk pengesan keadaan perlumbaan KCSAN telah ditambah.
    • Menambah sokongan untuk mengindeks senarai keluaran mesej melalui printk(), membolehkan anda mendapatkan semula semua mesej tersebut sekaligus dan menjejaki perubahan dalam ruang pengguna.
    • mmap() telah mengalih keluar sokongan untuk pilihan VM_DENYWRITE, dan kod kernel telah dialih keluar daripada menggunakan mod MAP_DENYWRITE, yang telah mengurangkan bilangan situasi yang membawa kepada penyekatan penulisan pada fail dengan ralat ETXTBSY.
    • Jenis pemeriksaan baharu, "Probe peristiwa," telah ditambahkan pada subsistem pengesanan, yang boleh dilampirkan pada peristiwa pengesanan sedia ada, mentakrifkan format output anda sendiri.
    • Apabila membina kernel menggunakan pengkompil Clang, pemasang lalai daripada projek LLVM kini digunakan.
    • Sebagai sebahagian daripada projek untuk menghapuskan kernel kod yang membawa kepada amaran dikeluarkan oleh pengkompil, percubaan telah dijalankan dengan mod "-Werror" didayakan secara lalai, di mana amaran pengkompil diproses sebagai ralat. Sebagai persediaan untuk keluaran 5.15, Linus mula menerima hanya perubahan yang tidak menghasilkan amaran apabila membina kernel dan mendayakan pembinaan dengan "-Werror", tetapi kemudian bersetuju bahawa keputusan sedemikian adalah pramatang dan tertunda membolehkan "-Werror" secara lalai . Kemasukan bendera "-Werror" semasa pemasangan dikawal menggunakan parameter WERROR, yang ditetapkan kepada COMPILE_TEST secara lalai, i.e. Buat masa ini ia hanya didayakan untuk binaan ujian.
  • Maya dan Keselamatan
    • Pengendali dm-ima baharu telah ditambahkan pada Device Mapper (DM) dengan pelaksanaan mekanisme pensijilan jauh berdasarkan subsistem IMA (Integrity Measurement Architecture), yang membenarkan perkhidmatan luaran untuk mengesahkan keadaan subsistem kernel untuk memastikan keasliannya . Dalam amalan, dm-ima membenarkan anda membuat storan menggunakan Device Mapper yang dipautkan kepada sistem awan luaran, di mana kesahihan konfigurasi sasaran DM yang dilancarkan disemak menggunakan IMA.
    • prctl() melaksanakan pilihan baharu PR_SPEC_L1D_FLUSH, yang apabila didayakan, menyebabkan kernel mengepam kandungan cache peringkat pertama (L1D) setiap kali suis konteks berlaku. Mod ini membenarkan, secara terpilih untuk proses yang paling penting, untuk melaksanakan perlindungan tambahan terhadap penggunaan serangan saluran sisi yang dijalankan untuk menentukan data yang telah diselesaikan dalam cache akibat kelemahan yang disebabkan oleh pelaksanaan spekulatif arahan dalam CPU. Kos mendayakan PR_SPEC_L1D_FLUSH (tidak didayakan secara lalai) ialah penalti prestasi yang ketara.
    • Adalah mungkin untuk membina kernel dengan penambahan bendera "-fzero-call-used-regs=used-gpr" kepada GCC, yang memastikan semua daftar ditetapkan semula kepada sifar sebelum mengembalikan kawalan daripada fungsi. Pilihan ini membolehkan anda melindungi daripada kebocoran maklumat daripada fungsi dan mengurangkan sebanyak 20% bilangan blok yang sesuai untuk membina alat ROP (Return-Oriented Programming) dalam eksploitasi.
    • Keupayaan untuk membina kernel untuk seni bina ARM64 dalam bentuk klien untuk hypervisor Hyper-V telah dilaksanakan.
    • Rangka kerja pembangunan pemacu baharu "VDUSE" dicadangkan, yang membolehkan pelaksanaan peranti blok maya dalam ruang pengguna dan menggunakan Virtio sebagai pengangkutan untuk akses daripada sistem tetamu.
    • Menambahkan pemacu Virtio untuk bas I2C, menjadikannya mungkin untuk meniru pengawal I2C dalam mod paravirtualisasi menggunakan bahagian belakang yang berasingan.
    • Menambahkan pemacu Virtio gpio-virtio untuk membolehkan tetamu mengakses talian GPIO yang disediakan oleh sistem hos.
    • Menambah keupayaan untuk menyekat akses kepada halaman memori untuk pemacu peranti dengan sokongan DMA pada sistem tanpa I/O MMU (unit pengurusan memori).
    • Hipervisor KVM mempunyai keupayaan untuk memaparkan statistik dalam bentuk histogram linear dan logaritma.
  • Subsistem rangkaian
    • Modul ksmbd telah ditambahkan pada kernel dengan pelaksanaan pelayan fail menggunakan protokol SMB3. Modul ini melengkapkan pelaksanaan klien SMB yang sebelum ini tersedia dalam kernel dan, tidak seperti pelayan SMB yang berjalan di ruang pengguna, adalah lebih cekap dari segi prestasi, penggunaan memori dan penyepaduan dengan keupayaan kernel lanjutan. Ksmbd disebut-sebut sebagai sambungan Samba berprestasi tinggi, sedia terbenam yang disepadukan dengan alatan dan perpustakaan Samba mengikut keperluan. Keupayaan ksmbd termasuk sokongan yang lebih baik untuk teknologi caching fail teragih (pajakan SMB) pada sistem tempatan, yang boleh mengurangkan trafik dengan ketara. Pada masa hadapan, mereka merancang untuk menambah sokongan untuk RDMA (β€œsmbdirect”) dan sambungan protokol yang berkaitan dengan meningkatkan kebolehpercayaan penyulitan dan pengesahan menggunakan tandatangan digital.
    • Pelanggan CIFS tidak lagi menyokong NTLM dan algoritma pengesahan berasaskan DES yang lebih lemah yang digunakan dalam protokol SMB1.
    • Sokongan multicast dilaksanakan dalam pelaksanaan jambatan rangkaian untuk vlan.
    • Pemacu ikatan, yang digunakan untuk mengagregatkan antara muka rangkaian, telah menambah sokongan untuk subsistem XDP (eXpress Data Path), yang membolehkan anda memanipulasi paket rangkaian pada peringkat sebelum ia diproses oleh susunan rangkaian kernel Linux.
    • Tindanan wayarles mac80211 menyokong 6GHZ STA (Kebenaran Sementara Khas) dalam mod LPI, SP dan VLP, serta keupayaan untuk menetapkan TWT individu (Sasaran Wake Time) dalam mod titik akses.
    • Sokongan tambahan untuk MCTP (Protokol Pengangkutan Komponen Pengurusan), digunakan untuk interaksi antara pengawal pengurusan dan peranti yang berkaitan (pemproses hos, peranti persisian, dll.).
    • Integrasi ke dalam teras MPTCP (MultiPath TCP), 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. Keluaran baharu menambah sokongan untuk alamat dalam mod fullmesh.
    • Pengendali untuk aliran rangkaian yang terkandung dalam protokol SRv6 (Segment Routing IPv6) telah ditambahkan pada netfilter.
    • Menambah sokongan peta sock untuk soket penstriman Unix.
  • ΠžΠ±ΠΎΡ€ΡƒΠ΄ΠΎΠ²Π°Π½ΠΈΠ΅
    • Pemacu amdgpu menyokong Cyan Skillfish APU (dilengkapi dengan GPU Navi 1x). APU Yellow Carp kini menyokong codec video. Sokongan GPU Aldebaran yang dipertingkatkan. Menambahkan pengecam peta baharu berdasarkan GPU Navi 24 β€œBeige Goby” dan RDNA2. Pelaksanaan skrin maya (VKMS) yang lebih baik dicadangkan. Sokongan untuk memantau suhu cip AMD Zen 3 telah dilaksanakan.
    • Pemacu amdkfd (untuk GPU diskret, seperti Polaris) melaksanakan pengurus memori maya kongsi (SVM, memori maya dikongsi) berdasarkan subsistem HMM (Pengurusan memori heterogen), yang membenarkan penggunaan peranti dengan unit pengurusan memori mereka sendiri (MMU). , unit pengurusan memori), yang boleh mengakses memori utama. Khususnya, menggunakan HMM, anda boleh mengatur ruang alamat dikongsi antara GPU dan CPU, di mana GPU boleh mengakses memori utama proses tersebut.
    • Pemacu i915 untuk kad video Intel memperluaskan penggunaan pengurus memori video TTM dan termasuk keupayaan untuk mengurus penggunaan kuasa berdasarkan GuC (Pengawal mikro Grafik). Persediaan telah bermula untuk pelaksanaan sokongan untuk kad grafik Intel ARC Alchemist dan GPU Intel Xe-HP.
    • Pemacu nouveau melaksanakan kawalan lampu latar untuk panel eDP menggunakan DPCD (DisplayPort Configuration Data).
    • Menambahkan sokongan untuk GPU Adreno 7c Gen 3 dan Adreno 680 pada pemacu msm.
    • Pemacu IOMMU dilaksanakan untuk cip Apple M1.
    • Menambah pemacu bunyi untuk sistem berdasarkan APU AMD Van Gogh.
    • Pemacu Realtek R8188EU telah ditambahkan pada cawangan pementasan, yang menggantikan versi lama pemacu (rtl8188eu) untuk cip wayarles Realtek RTL8188EU 802.11 b/g/n.
    • Pemacu ocp_pt disertakan untuk papan PCIe yang dibangunkan oleh Meta (Facebook) dengan pelaksanaan jam atom kecil dan penerima GNSS, yang boleh digunakan untuk mengatur operasi pelayan penyegerakan masa tepat yang berasingan.
    • Menambah sokongan untuk Sony Xperia 10II (Snapdragon 665), Xiaomi Redmi 2 (Snapdragon MSM8916), Samsung Galaxy S3 (Snapdragon MSM8226), telefon pintar Samsung Gavini/Codina/Kyle.
    • Sokongan tambahan untuk ARM SoΠ‘ dan NVIDIA Jetson TX2 NX Developer Kit, Sancloud BBE Lite, PicoITX, DRC02, SolidRun SolidSense, SKOV i.MX6, Nitrogen8, Traverse Ten64, GW7902, Microchip SAMA7, ualcomm Snapdragon SDM636/SM8150, H3seass papan -2G/M3e-2G, Marvell CN913x, ASpeed ​​​​AST2600 (Facebook Cloudripper, papan pelayan Elbert dan Fuji), 4KOpen STiH418-b2264.
    • Sokongan tambahan untuk panel LCD Gopher 2b, EDT ETM0350G0DH6/ETMV570G2DHU, LOGIC Technologies LTTD800480070-L6WH-RT, Multi-Innotechnology MI1010AIT-1CP1, Innolux EJ030NA 3.0, Vilitek 9341, VILITEK 3300, ILITEK33. 20 7430, Samsung DB2401, WideChips WSXNUMX .
    • Menambah pemacu LiteETH dengan sokongan untuk pengawal Ethernet yang digunakan dalam SoC perisian LiteX (untuk FPGA).
    • Pilihan kependaman rendah telah ditambahkan pada pemacu usb-audio untuk mengawal kemasukan operasi dalam mod kependaman minimum. Juga menambah pilihan quirk_flags untuk lulus tetapan khusus peranti.

Pada masa yang sama, Yayasan Perisian Percuma Amerika Latin membentuk versi kernel percuma sepenuhnya 5.15 - Linux-libre 5.15-gnu, dibersihkan daripada unsur perisian tegar dan pemacu yang mengandungi komponen bukan bebas atau bahagian kod, yang skopnya terhad oleh pengilang. Keluaran baharu melaksanakan output mesej kepada log tentang selesainya pembersihan. Masalah dengan menjana pakej menggunakan mkspec telah diperbaiki, sokongan untuk pakej snap telah dipertingkatkan. Mengalih keluar beberapa amaran yang dipaparkan semasa memproses fail pengepala firmware.h. Membenarkan output beberapa jenis amaran ("format-extra-args", ulasan, fungsi dan pembolehubah yang tidak digunakan) apabila membina dalam mod "-Werror". Menambah pembersihan pemandu gehc-achc. Kod pembersihan gumpalan dikemas kini dalam pemacu dan subsistem adreno, btusb, btintel, brcmfmac, aarch64 qcom. Pembersihan pemandu prism54 (dialih keluar) dan rtl8188eu (digantikan dengan r8188eu) telah dihentikan.

Sumber: opennet.ru

Tambah komen