Selepas dua bulan pembangunan, Linus Torvalds mengeluarkan kernel tersebut. Linux 5.12. Antara perubahan yang paling ketara: sokongan untuk peranti blok zon dalam Btrfs, keupayaan untuk memetakan ID pengguna kepada sistem fail, membersihkan seni bina ARM legasi, mod penulisan eager dalam NFS, mekanisme LOOKUP_CACHED untuk menentukan laluan fail daripada cache, sokongan untuk arahan atom dalam BPF, sistem penyahpepijatan KFENCE untuk mengesan ralat dalam pengendalian memori, mod tinjauan NAPI dalam tindanan rangkaian yang berjalan dalam thread kernel berasingan, hipervisor ACRN, keupayaan untuk menukar model preempt dengan pantas dalam penjadual tugas dan sokongan untuk pengoptimuman LTO semasa membina dalam Clang.
Versi baharu termasuk 14170 (dalam keluaran sebelumnya 15480) pembetulan daripada pembangun 1946 (1991), saiz tampung ialah 38 MB (perubahan yang mempengaruhi 12102 (12090) fail, 538599 (868025) baris kod telah ditambahkan, 333377 (261456) baris telah dipadamkan). Kira-kira 43% daripada semua perubahan yang diperkenalkan dalam 5.12 adalah berkaitan dengan pemacu peranti, kira-kira 17% daripada perubahan berkaitan dengan pengemaskinian kod khusus untuk seni bina perkakasan, 12% berkaitan dengan susunan rangkaian, 5% berkaitan dengan sistem fail dan 4% adalah berkaitan dengan subsistem kernel dalaman.
Inovasi utama:
- Subsistem cakera, I/O dan sistem fail
- Keupayaan untuk memetakan ID pengguna untuk sistem fail yang dipasang telah dilaksanakan (anda boleh memetakan fail satu pengguna pada partition asing yang dipasang dengan pengguna lain pada sistem semasa). Pemetaan disokong untuk sistem fail FAT, ext4 dan XFS. Fungsi yang dicadangkan memungkinkan untuk memudahkan perkongsian fail antara pengguna yang berbeza dan pada komputer yang berbeza, termasuk pemetaan akan digunakan dalam mekanisme direktori rumah mudah alih yang didiami sistemd, membolehkan pengguna mengalihkan direktori rumah mereka ke media luaran dan menggunakannya pada yang berbeza. komputer, memetakan ID pengguna yang tidak sepadan. Satu lagi aplikasi berguna adalah untuk mengatur penyediaan akses dikongsi kepada fail daripada hos luaran, tanpa benar-benar mengubah data tentang pemilik fail dalam sistem fail.
- Tampalan LOOKUP_CACHED telah diterima pakai ke dalam kernel, membenarkan operasi untuk menentukan laluan fail dari ruang pengguna tanpa menyekat, hanya berdasarkan data yang tersedia dalam cache. Mod LOOKUP_CACHED diaktifkan dalam panggilan openat2() dengan menghantar bendera RESOLVE_CACHED, di mana data disampaikan hanya daripada cache, dan jika penentuan laluan memerlukan akses kepada pemacu, ralat EAGAIN dikembalikan.
- Sistem fail Btrfs telah menambah sokongan awal untuk peranti blok yang dizonkan (peranti pada cakera magnet keras atau SSD NVMe, ruang storan yang dibahagikan kepada zon yang membentuk kumpulan blok atau sektor, yang hanya penambahan data berurutan dibenarkan, mengemas kini keseluruhan kumpulan blok). Dalam mod baca sahaja, sokongan untuk blok dengan metadata dan data yang lebih kecil daripada halaman (subhalaman) dilaksanakan.
- Dalam sistem fail F2FS, keupayaan untuk memilih algoritma dan tahap mampatan telah ditambah. Menambah sokongan untuk pemampatan tahap tinggi untuk algoritma LZ4. Melaksanakan pilihan pemasangan checkpoint_merge.
- Perintah ioctl baharu FS_IOC_READ_VERITY_METADATA telah dilaksanakan untuk membaca metadata daripada fail yang dilindungi dengan fs-verity.
- Klien NFS melaksanakan mod tulis "bersemangat" (menulis=bersemangat), apabila didayakan, operasi tulis ke fail segera dipindahkan ke pelayan, memintas cache halaman. Mod ini membolehkan anda mengurangkan penggunaan memori, menyediakan penerimaan serta-merta maklumat mengenai penghujung ruang kosong dalam sistem fail, dan dalam beberapa situasi memungkinkan untuk mencapai peningkatan prestasi.
- Pilihan pelekap baharu telah ditambahkan pada CIFS (SMB): acregmax untuk mengawal caching fail dan acdirmax untuk mengawal caching metadata direktori.
- Dalam XFS, mod semakan kuota berbilang benang telah didayakan, pelaksanaan fsync telah dipercepatkan dan kod growfs telah disediakan untuk melaksanakan fungsi mengurangkan saiz sistem fail.
- Perkhidmatan memori dan sistem
- Subsistem DTMP (Pengurusan Kuasa Terma Dinamik) telah ditambah, membolehkan anda mengawal secara dinamik penggunaan kuasa peranti berbeza berdasarkan had suhu am yang ditetapkan.
- Keupayaan untuk membina kernel menggunakan pengkompil Clang dengan kemasukan pengoptimuman pada peringkat pemautan (LTO, Pengoptimuman Masa Pautan) telah dilaksanakan. Pengoptimuman LTO berbeza dengan mengambil kira keadaan semua fail yang terlibat dalam proses binaan, manakala mod pengoptimuman tradisional mengoptimumkan setiap fail secara berasingan dan tidak mengambil kira syarat untuk memanggil fungsi yang ditakrifkan dalam fail lain. Sebagai contoh, dengan LTO, penggunaan sebaris mungkin untuk fungsi daripada fail lain, kod yang tidak digunakan tidak disertakan dalam fail boleh laku, semakan jenis dan pengoptimuman umum dijalankan pada peringkat projek secara keseluruhan. Sokongan LTO kini terhad kepada seni bina x86 dan ARM64.
- Keupayaan untuk memilih mod preemption (PREEMPT) kini tersedia dalam penjadual tugas semasa but (preempt=none/voluntary/full) atau semasa pelaksanaan melalui debugfs (/debug/sched_debug), jika tetapan PREEMPT_DYNAMIC ditentukan semasa penyusunan kernel. Sebelum ini, mod preemption hanya boleh ditentukan pada peringkat parameter binaan. Perubahan ini membolehkan pengedaran menghantar kernel dengan PREEMPT diaktifkan, yang menyediakan latensi minimum untuk desktop dengan kos sedikit penurunan dalam daya pemprosesan, dan, jika perlu, kembali kepada PREEMPT_VOLUNTARY (mod perantaraan untuk desktop) atau PREEMPT_NONE (yang menyediakan daya pemprosesan maksimum untuk pelayan).
- Sokongan untuk operasi atom BPF_ADD, BPF_AND, BPF_OR, BPF_XOR, BPF_XCHG dan BPF_CMPXCHG telah ditambahkan pada subsistem BPF.
- Program BPF diberi keupayaan untuk mengakses data pada tindanan menggunakan penunjuk dengan offset berubah-ubah. Sebagai contoh, jika sebelum ini anda hanya boleh menggunakan indeks unsur malar untuk mengakses tatasusunan pada timbunan, kini anda boleh menggunakan indeks yang berubah. Kawalan akses hanya dalam sempadan sedia ada dijalankan oleh pengesah BPF. Ciri ini hanya tersedia untuk program istimewa kerana kebimbangan tentang eksploitasi kelemahan pelaksanaan kod spekulatif.
- Menambahkan keupayaan untuk melampirkan program BPF pada titik jejak yang terdedah yang tidak dikaitkan dengan peristiwa surih yang boleh dilihat dalam ruang pengguna (pemeliharaan ABI tidak dijamin untuk titik jejak tersebut).
- Sokongan untuk bas CXL 2.0 (Compute Express Link) telah dilaksanakan, yang digunakan untuk mengatur interaksi berkelajuan tinggi antara CPU dan peranti memori (membolehkan anda menggunakan peranti memori luaran sebagai sebahagian daripada RAM atau memori kekal, seolah-olah memori ini telah disambungkan melalui pengawal memori standard dalam CPU).
- Pemacu nvmem telah ditambah untuk mendapatkan data daripada kawasan memori yang dikhaskan untuk perisian tegar yang tidak boleh diakses secara langsung. Linux (contohnya, memori EEPROM yang hanya boleh diakses secara fizikal oleh firmware, atau data yang hanya boleh diakses pada peringkat awal but).
- Sokongan untuk sistem pemprofilan "oprofile" telah dialih keluar, yang tidak digunakan secara meluas dan telah digantikan dengan mekanisme perf yang lebih moden.
- Antara muka I/O tak segerak io_uring menyediakan integrasi dengan cgroup yang mengawal penggunaan memori.
- Seni bina RISC-V menyokong sistem NUMA, serta mekanisme kprob dan uprobes.
- Menambahkan keupayaan untuk menggunakan panggilan sistem kcmp() tanpa mengira kefungsian syot kilat keadaan proses (titik pemeriksaan/pemulihan).
- Makro EXPORT_UNUSED_SYMBOL() dan EXPORT_SYMBOL_GPL_FUTURE(), yang tidak digunakan dalam amalan selama bertahun-tahun, telah dialih keluar.
- Maya dan Keselamatan
- Mekanisme perlindungan KFence (Kernel Electric Fence) ditambahkan, yang menangkap ralat apabila bekerja dengan memori, seperti overrun penimbal dan akses selepas membebaskan memori. Tidak seperti mekanisme penyahpepijatan KASAN, subsistem KFence dicirikan oleh kelajuan operasi yang tinggi dan overhed yang rendah, yang membolehkan anda menangkap ralat memori yang muncul hanya pada sistem kerja atau semasa operasi jangka panjang.
- Sokongan tambahan untuk hipervisor ACRN, ditulis dengan mengambil kira kesediaan masa nyata dan kesesuaian misi kritikal. ACRN menyediakan overhed yang minimum, menjamin kependaman yang rendah dan responsif yang mencukupi apabila berinteraksi dengan perkakasan. Ia menyokong virtualisasi sumber CPU, I/O, rangkaian, grafik dan bunyi. ACRN boleh digunakan untuk menjalankan berbilang tika terpencil. mesin maya dalam unit kawalan elektronik, kluster instrumen, sistem maklumat automotif, peranti IoT pengguna dan teknologi terbenam yang lain. ACRN menyokong dua jenis sistem tetamu: VM Perkhidmatan istimewa, yang digunakan untuk mengurus sumber sistem (CPU, memori, I/O, dll.), dan VM pengguna, yang boleh menjalankan Linux-pengagihan, Android и Windows.
- Subsistem IMA (Senibina Pengukuran Integriti), yang menyelenggara pangkalan data hash untuk menyemak integriti fail dan metadata yang berkaitan, kini mempunyai keupayaan untuk menyemak integriti data kernel itu sendiri, contohnya, untuk menjejaki perubahan dalam peraturan SE.Linux.
- Keupayaan untuk memintas hypercall Xen dan memajukannya ke emulator yang berjalan dalam ruang pengguna telah ditambahkan pada hypervisor KVM.
- Menambah keupayaan untuk menggunakan Linux sebagai persekitaran root untuk hypervisor Hyper-V. Persekitaran root mempunyai akses langsung kepada perkakasan dan digunakan untuk melancarkan sistem tetamu (serupa dengan Dom0 dalam Xen). Sehingga kini, Hyper-V (Microsoft Hypervisor) menyokong Linux hanya dalam persekitaran tetamu, tetapi hipervisor itu sendiri dikawal dari persekitaran hos Windows.
- Menambah sokongan untuk penyulitan sebaris untuk kad eMMC, membolehkan anda menggunakan mekanisme penyulitan terbina dalam pengawal pemacu yang menyulitkan dan menyahsulit I/O secara telus.
- Sokongan untuk cincangan RIPE-MD 128/256/320 dan Tiger 128/160/192, yang tidak digunakan dalam teras, serta cipher aliran Salsa20, yang digantikan oleh algoritma ChaCha20, telah dialih keluar daripada subsistem kripto. Algoritma blake2 telah dikemas kini untuk melaksanakan blake2s.
- Subsistem rangkaian
- Menambahkan keupayaan untuk mengalihkan pengendali undian NAPI untuk peranti rangkaian ke benang kernel yang berasingan, yang membolehkan prestasi yang lebih baik untuk beberapa jenis beban kerja. Sebelum ini, pengundian dilakukan dalam konteks softirq dan tidak dilindungi oleh penjadual tugas, yang menyukarkan untuk melakukan pengoptimuman terperinci untuk mencapai prestasi maksimum. Pelaksanaan dalam utas kernel yang berasingan membolehkan pengendali undian diperhatikan dari ruang pengguna, dilampirkan pada teras CPU individu, dan diambil kira semasa menjadualkan penukaran tugas. Untuk mendayakan mod baharu dalam sysfs, parameter /sys/class/net/ dicadangkan /berbenang.
- 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 keupayaan untuk memberikan keutamaan kepada utas tertentu, yang membolehkan, contohnya, mengatur kerja utas sandaran yang dihidupkan hanya jika terdapat masalah dengan utas utama.
- IGMPv3 menambah sokongan untuk mekanisme EHT (Penjejakan Hos Eksplisit).
- Enjin penapisan paket Netfilter menyediakan keupayaan untuk memiliki jadual tertentu untuk mendapatkan kawalan eksklusif (contohnya, proses tembok api latar belakang boleh mengambil alih pemilikan jadual tertentu, menghalang orang lain daripada mengganggu mereka).
- Оборудование
- Kami membersihkan platform ARM yang usang dan tidak diselenggara. Kod untuk platform efm32, picoxcell, prima2, tango, u300, zx dan c6x, serta pemacu yang berkaitan, telah dialih keluar.
- Pemacu amdgpu menyediakan keupayaan untuk membuat overclock (OverDrive) kad berdasarkan GPU Sienna Cichlid (Navi 22, Radeon RX 6xxx). Menambah sokongan untuk format piksel FP16 untuk DCE (enjin pengawal paparan) dari generasi ke-8 hingga ke-11. Untuk GPU Navy Flounder (Navi 21) dan APU Van Gogh, keupayaan untuk menetapkan semula GPU telah dilaksanakan.
- Pemacu i915 untuk kad grafik Intel melaksanakan parameter i915.mitigations untuk melumpuhkan mekanisme pengasingan dan perlindungan yang memihak kepada prestasi yang lebih baik. Untuk cip bermula dari Tiger Lake, sokongan untuk mekanisme VRR (Variable Rate Refresh) disertakan, yang membolehkan anda mengubah suai kadar penyegaran monitor untuk memastikan kelancaran dan tiada jurang semasa permainan. Sokongan untuk teknologi Intel Clear Color disertakan untuk ketepatan warna yang lebih baik. Menambah sokongan untuk DP-HDMI 2.1. Keupayaan untuk mengawal lampu latar panel eDP telah dilaksanakan. Untuk GPU Gen9 dengan sokongan LSPCON (Level Shifter and Protocol Converter), sokongan HDR didayakan.
- Pemacu nouveau menambah sokongan awal untuk GPU NVIDIA berdasarkan seni bina GA100 (Ampere).
- Pemacu msm menambah sokongan untuk GPU Adreno 508, 509 dan 512 yang digunakan dalam cip SDM (Snapdragon) 630, 636 dan 660.
- Sokongan tambahan untuk Sound BlasterX AE-5 Plus, Lexicon I-ONIX FW810s dan kad bunyi Pioneer DJM-750. Menambah sokongan untuk subsistem audio PCH-P Intel Alder Lake. Sokongan untuk simulasi perisian untuk menyambung dan memutuskan sambungan penyambung audio telah dilaksanakan untuk pengendali nyahpepijat dalam ruang pengguna.
- Menambah sokongan untuk konsol permainan Nintendo 64 yang dikeluarkan dari tahun 1996 hingga 2003 (percubaan sebelumnya untuk memindahkan Linux (Port Nintendo 64 tidak pernah siap dan telah diturunkan kepada status Vaporware.) Motivasi untuk mewujudkan port baharu untuk platform yang semakin usang, yang telah tidak lagi dihasilkan selama hampir dua puluh tahun, dikatakan sebagai keinginan untuk merangsang pembangunan emulator dan memudahkan pemindahan permainan.
- Ditambah pemacu untuk pengawal permainan Sony PlayStation 5 DualSense.
- Sokongan tambahan untuk papan, peranti dan platform ARM: PineTab, Snapdragon 888 / SM8350, Snapdragon MTP, Two Beacon EmbeddedWorks, Intel eASIC N5X, Netgear R8000P, Plymovent M2M, Beacon i.MX8M Nano, NanoPi M4B.
- Sokongan tambahan untuk telefon pintar Purism Librem5 Evergreen, Xperia Z3+/Z4/Z5, ASUS Zenfone 2 Laser, BQ Aquaris X5, OnePlus6, OnePlus6T, Samsung GT-I9070.
- Menambah pemacu bcm-vk untuk papan pemecut Broadcom VK (contohnya, papan Valkyrie dan Viper PCIe), yang boleh digunakan untuk memunggah operasi pemprosesan audio, video dan imej, serta operasi berkaitan penyulitan, ke peranti yang berasingan.
- Sokongan tambahan untuk platform Lenovo IdeaPad dengan keupayaan untuk mengawal pengecasan berterusan dan lampu latar papan kekunci. Turut disediakan ialah sokongan untuk profil ACPI platform ThinkPad dengan keupayaan untuk mengawal mod penggunaan kuasa. Ditambah pemacu untuk subsistem HID Lenovo ThinkPad X1 Tablet Gen 2.
- Menambah pemacu ov5647 dengan sokongan untuk modul kamera untuk Raspberry Pi.
- Menambah sokongan untuk papan RISC-V SoC FU740 dan HiFive Unleashed. Pemacu baharu untuk cip Kendryte K210 juga telah ditambah.
Sumber: opennet.ru
