Pelepasan kernel Linux 6.8

Selepas dua bulan pembangunan, Linus Torvalds mengeluarkan kernel tersebut. Linux 6.8. Antara perubahan yang paling ketara: Pemacu Xe untuk GPU Intel, mod perlindungan untuk peranti blok dengan sistem fail yang dipasang, mekanisme penjadual tugas pelayan Tarikh Akhir, pengoptimuman automatik penggabungan halaman memori yang sama, pemacu pertama dalam bahasa Rust, panggilan sistem listmount dan statmount, penyingkiran bpfilter dan SLAB, mekanisme guest_memfd dalam KVM, pemprofilan akses data.

Versi baharu termasuk 15641 pembaikan daripada pembangun 2018, saiz tampung ialah 44 MB (perubahan mempengaruhi 12212 fail, 663864 baris kod telah ditambahkan, 339094 baris telah dipadamkan). Keluaran terakhir mempunyai 18405 pembaikan daripada 2066 pembangun, dan saiz tampung ialah 72 MB. Kira-kira 42% daripada semua perubahan yang diperkenalkan dalam 6.8 adalah berkaitan dengan pemacu peranti, kira-kira 15% 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.

Terdapat 6.8 juta objek dalam repositori Git dengan kernel 9.996, yang menunjukkan bahawa kernel 6.9 seterusnya akan memecahkan pencapaian 10 juta objek Git. Sebelum ini, perubahan dalam nombor cawangan 3.x dan 4.x berkorelasi baik dengan bilangan objek git dalam repositori - kernel 3.0 dikeluarkan apabila terdapat kira-kira 2 juta objek dalam repositori, dan kernel 4.0 - 4 juta objek. Pada masa yang sama, pada tahun 2019, keluaran 5.0 memutuskan rantaian logik ini, kerana apabila ia dibentuk, repositori termasuk kira-kira 6.5 juta objek git.

Inovasi utama dalam kernel 6.8:

  • Subsistem cakera, I/O dan sistem fail
    • Menambah mod untuk menyekat penulisan langsung untuk menyekat peranti yang telah memasang sistem fail (selepas mendayakan mod, pengguna root tidak akan dapat membuat perubahan pada FS melalui manipulasi pada peringkat peranti blok). Secara lalai, mod dilumpuhkan dan memerlukan parameter BLK_DEV_WRITE_MOUNTED ditentukan semasa membina. Untuk sekatan dengan Btrfs, penyekatan masih belum berfungsi, kerana perubahan yang diperlukan belum lagi dibuat pada kod Btrfs.
    • Menambahkan panggilan sistem listmount() dan statmount(), membenarkan maklumat terperinci tentang sistem fail yang dipasang diperoleh daripada ruang pengguna.
    • Dalam sistem fail XFS, kerja terus melaksanakan keupayaan untuk menggunakan utiliti fsck untuk menyemak dan membetulkan masalah yang dikenal pasti dalam talian, tanpa menyahlekap sistem fail.
    • Ext4 menggunakan panggilan dioread_nolock untuk blok yang lebih kecil daripada halaman memori, yang meningkatkan prestasi dengan menghapuskan kunci yang tidak diperlukan. Beberapa fungsi telah ditukar untuk menggunakan folio halaman.
    • Btrfs menambah sokongan untuk bendera pelekap "nospace_cache" untuk melumpuhkan cache blok percuma. Beberapa fungsi telah ditukar untuk menggunakan folio halaman.
    • Sistem fail EROFS (Extendable Read-Only File System), yang direka untuk digunakan pada partition baca sahaja, telah menambah sokongan untuk pemampatan subhalaman dan prestasi yang lebih baik dalam situasi memori rendah.
    • Sistem fail F2FS telah mempertingkatkan sokongan untuk peranti storan yang dizonkan (membahagikan kumpulan blok atau sektor kepada zon, di mana hanya penambahan data berurutan dibenarkan dengan mengemas kini keseluruhan kumpulan blok).
    • Untuk sistem fail SMB, keupayaan untuk mencipta fail peranti blok dan simbolik telah dilaksanakan.
    • Sokongan separa untuk menyemak dan memulihkan integriti sistem fail yang dipasang telah ditambahkan pada Bcachefs.
    • Subsistem pemeta peranti tidak lagi menyokong pengendali MD_LINEAR, MD_MULTIPATH dan MD_FAULTY, yang telah ditamatkan pada tahun 2021.
  • Perkhidmatan memori dan sistem
    • Subsistem Zswap telah ditambah dengan keupayaan untuk memunggah paksa halaman memori "sejuk" yang belum diakses dan kemungkinan besar akan kekal tidak dituntut, diaktifkan apabila terdapat kekurangan RAM. Zswap menyimpan halaman cache yang dialih keluar ke partition swap, menyimpannya dalam RAM dalam bentuk termampat bila-bila boleh tanpa membuangnya ke partition swap yang tidak dimampatkan pada cakera. Perubahan yang dibuat apabila ingatan rendah membolehkan anda mengurangkan saiz kolam Zswap yang disimpan dalam RAM dan mengosongkan memori untuk sistem.
    • Zswap menawarkan mod baharu yang melumpuhkan sepenuhnya tulis balik ke partition swap sebenar jika percubaan menulis tidak berjaya dan tidak mengepam halaman yang sudah ada dalam kumpulan zswap ke partition swap.
    • Mekanisme pelayan SCHED_DEADLINE telah ditambahkan pada penjadual tugas, yang menyelesaikan masalah kurang penggunaan sumber CPU oleh tugas biasa apabila CPU dimonopoli oleh tugas keutamaan tinggi (masa nyata). Untuk mengelakkan monopoli CPU, kernel sebelum ini menggunakan mekanisme pendikit masa Nyata, yang cuba menempah 5% untuk tugas keutamaan rendah, meninggalkan 95% masa untuk tugasan masa nyata. Mekanisme ini meninggalkan banyak yang diingini, kerana tugas biasa dalam banyak situasi tidak menerima masa pemproses yang mencukupi. Pelayan SCHED_DEADLINE melaksanakan mekanisme tempahan sumber yang lebih cekap.
    • Subsistem DAMON (Data Access MONitor), yang membolehkan anda memantau capaian proses kepada data dalam RAM (contohnya, anda boleh mengetahui kawasan memori mana yang diakses oleh proses dan kawasan memori mana yang tidak dituntut), telah menambah mekanisme untuk melaraskan secara automatik keagresifan penggunaan memori berdasarkan kuota yang ditentukan.
    • Sokongan tambahan untuk halaman memori besar berbilang saiz (mTHP - Halaman Besar Lutsinar berbilang saiz), membolehkan anda memperuntukkan memori dalam blok yang lebih besar daripada halaman asas, tetapi lebih kecil daripada halaman THP tradisional.
    • Menambah sokongan untuk folio besar (folio halaman, halaman memori gabungan) untuk memori tanpa nama (tidak terikat dengan FS, contohnya, diperuntukkan melalui malloc). Perubahan ini bertujuan untuk meningkatkan prestasi dengan memperuntukkan sebahagian besar memori semasa akses kepada halaman memori yang tidak diperuntukkan (kesalahan halaman). Sebagai contoh, penggunaan volum yang besar memungkinkan untuk mengurangkan masa pemasangan semula teras sebanyak 5% (sambil mengurangkan masa yang dihabiskan pada tahap teras sebanyak 40%).
    • Parameter TRANSPARENT_HUGEPAGE_NEVER telah ditambahkan pada fail konfigurasi kernel, menjadikannya mungkin untuk melumpuhkan penggunaan Transparent Huge Pages.
    • Panggilan sistem userfaultfd(), yang memungkinkan untuk mencipta pengendali untuk mengakses halaman memori yang tidak diperuntukkan (kesalahan halaman) dalam ruang pengguna, telah menambah operasi UFFDIO_MOVE, yang membolehkan, semasa pemadatan timbunan, untuk memindahkan halaman memori dalam ruang alamat maya tanpa menjalankan operasi peruntukan halaman memori. Dalam ujian yang dilakukan, penggunaan UFFDIO_MOVE membolehkan kami mengurangkan masa pembungkusan sebanyak 40% berbanding menggunakan operasi UFFDIO_COPY.
    • Mekanisme "penasihat KSM" telah ditambah, yang membolehkan anda mengoptimumkan parameter subsistem secara automatik untuk menggabungkan halaman memori yang sama (KSM - Penggabungan Halaman Sama Kernel).
    • Perubahan yang berterusan daripada cabang Rust-for-Linux, berkaitan dengan penggunaan Rust sebagai bahasa kedua untuk membangunkan pemacu dan modul kernel (sokongan Rust tidak aktif secara lalai dan tidak menyebabkan Rust dimasukkan antara kebergantungan binaan kernel yang diperlukan). Versi baharu ini merangkumi perubahan yang menambah pembalut Rust di atas lapisan abstraksi phylib dan pemacu ax88796b_rust yang menggunakan pembalut ini, menyediakan sokongan untuk antara muka PHY pengawal Ethernet Asix AX88772A (100MBit). Dari segi fungsi, pemacu Rust sepenuhnya setara dengan pemacu ax88796b lama, yang ditulis dalam C, dan boleh digunakan dengan kad rangkaian X-Surf 100 yang dilengkapi dengan cip AX88796B. Untuk seni bina LoongArch, keupayaan untuk menulis modul dalam Rust disediakan. Peralihan kepada penggunaan keluaran Rust 1.74.1 telah dibuat.
    • Mekanisme token BPF telah ditambahkan yang membolehkan anda mewakilkan secara terpilih pemprosesan keupayaan BPF tertentu, seperti memuatkan program BPF atau mencipta peta BPF, kepada proses yang tidak mempunyai keistimewaan dalam ruang pengguna, yang kesahihannya disahkan oleh token khas.
    • Fungsi pengesah program BPF telah diperluaskan.
    • Utiliti perf telah menambah sokongan untuk pemprofilan data, yang membolehkan anda menjejaki membaca dan menulis kepada struktur data, contohnya, untuk mengenal pasti medan yang paling aktif diubah suai dalam struktur. Pada sistem dengan pemproses yang menyokong pengumpulan maklumat tentang operasi memori (Intel, AMD, ARM), anda harus menggunakan perintah "rekod mem perf" untuk mengumpul statistik dan "jenis anotasi perf -jenis data" untuk memaparkan laporan tentang akses kepada data struktur .
    • Prestasi pemprosesan panggilan sistem pada seni bina s390 (IBM Z) telah dioptimumkan, yang dalam ujian membawa kepada pecutan kemasukan panggilan sistem sebanyak kira-kira 11%.
    • Keupayaan untuk menukar saiz penimbal surih yang digunakan untuk menimbal maklumat tentang peristiwa surih yang dihantar ke ruang pengguna telah disediakan.
    • Mekanisme peruntukan memori SLAB yang telah ditamatkan sebelum ini telah dialih keluar, menggantikan kernel yang kini hanya menggunakan SLUB. Sebab yang disebut ialah masalah penyelenggaraan, masalah dalam kod, dan pertindihan fungsi dengan pengalokasi SLUB yang lebih maju.
    • Apabila membina kernel, bendera "-Wmissing-prototypes" didayakan, yang menjana amaran untuk panggilan ke fungsi global yang tidak mempunyai definisi prototaip.
    • Untuk seni bina RISC-V pada sistem yang menyokong sambungan SUSP SBI, sokongan untuk memasuki mod siap sedia dengan penjimatan keadaan dalam RAM telah dilaksanakan. Dengan syarat keupayaan untuk menggunakan panggilan sistem riscv_hwprobe() untuk mendapatkan maklumat tentang sambungan yang disokong kepada seni bina set arahan RISC-V.
  • Maya dan Keselamatan
    • Menambah panggilan sistem baharu lsm_list_modules(), lsm_get_self_attr() dan lsm_set_self_attr() untuk menyenaraikan modul LSM yang dimuatkan (Linux Modul Keselamatan) dan mendapatkan/menetapkan atribut modul LSM. Struktur lsm_ctx baharu telah ditambah untuk komunikasi dalam konteks LSM antara ruang pengguna dan kernel.
    • Subsistem AppArmor telah ditukar kepada menggunakan algoritma SHA-256 untuk pengesahan peraturan, bukannya cincang SHA-1.
    • Pelaksanaan fungsi strlcpy(), yang disertakan dalam perpustakaan Glibc 3.38 C pada musim panas, telah dialih keluar daripada kernel. Strlcpy ialah alternatif kepada fungsi strncpy(), yang mengandungi perlindungan limpahan penimbal dan sentiasa menetapkan bait nol tertinggal.
    • Dalam hipervisor KVM Sokongan telah ditambah untuk subsistem guest_memfd (memori tetamu dahulu), yang menyediakan fungsi pengurusan memori yang membolehkan ciri dan pengoptimuman yang tidak dapat dicapai dengan subsistem pengurusan memori umum. Contohnya, guest_memfd membenarkan peruntukan dan pemetaan memori yang tidak dapat diakses oleh sistem tetamu, yang boleh digunakan untuk pengkomputeran sulit.
    • Untuk sistem tetamu yang menjalankan hipervisor KVM, sokongan didayakan untuk mod LAM (Linear Address Masking) yang disediakan dalam pemproses Intel, yang membenarkan penggunaan sebahagian daripada bit penunjuk 64-bit (daripada 57 hingga 62 bit) untuk menyimpan metadata yang tidak berkaitan dengan menangani.
    • Hipervisor KVM untuk sistem berdasarkan seni bina ARM64 telah menambah sokongan untuk alamat fizikal 52-bit (LPA2). Untuk sistem dengan seni bina x86, adalah mungkin untuk membina tanpa meniru hypercall Hyper-V, yang membolehkan mengurangkan saiz kernel.
    • Pemacu iaa (IAA Compression Accelerator) telah ditambahkan untuk mempercepatkan pemampatan dan penyahmampatan data menggunakan kaedah DEFLATE, menggunakan keupayaan pemecut kriptografi Intel Analytics Accelerator (IAA).
    • Di bahagian hos, sokongan untuk mekanisme Intel TDX (Trusted Domain Extensions) telah dilaksanakan, yang membolehkan penciptaan persekitaran tetamu selamat yang menggunakan penyulitan memori apabila menggunakan hipervisor KVM. mesin maya.
    • Di TenggaraLinux SID "init" telah ditambah untuk membolehkan anda mengenal pasti proses yang dilancarkan pada peringkat but awal yang dilancarkan sebelum dasar SE digunakan.LinuxAntara muka /sys/fs/selinux untuk pengurusan SE telah dipertingkatkan.Linux.
  • Subsistem rangkaian
    • Penyusunan semula peringkat rendah bagi struktur data rangkaian asas telah dijalankan untuk meningkatkan kecekapan caching. Sebelum ini, medan dalam struktur tindanan rangkaian stokin, netdev, netns dan mibs telah disusun semasa ia ditambahkan, yang mengehadkan penggunaan cache pemproses. Semakan penempatan pembolehubah dalam struktur membawa kepada peningkatan ketara dalam kelajuan TCP, berkat meminimumkan penggunaan talian cache pada peringkat pemindahan data dan mengoptimumkan akses kepada pembolehubah. Dalam kes di mana berbilang sambungan TCP selari diproses, kelajuan boleh mencapai 40%.
    • Subsistem bpfilter, yang menggunakan BPF untuk menapis paket, telah dialih keluar. Bpfilter telah dihantar sejak keluaran 4.18, tetapi tidak pernah dibangunkan ke tahap yang sesuai untuk kegunaan meluas. Dalam beberapa tahun kebelakangan ini, kod bpfilter belum dibangunkan dalam teras, dan pembangunan telah diteruskan oleh Facebook dalam repositori hotel.
  • Оборудование
    • Pakej ini termasuk pemacu drm baharu (Pengurus Render Langsung) Xe untuk GPU berdasarkan seni bina Intel Xe, yang digunakan dalam kad video keluarga Intel Arc dan grafik bersepadu, bermula dengan pemproses Tiger Lake. Pemacu Xe diletakkan sebagai asas untuk membuat cip baharu berfungsi, tanpa terikat dengan kod untuk menyokong platform lama. Pemacu dibina menggunakan seni bina baharu yang menggunakan lebih banyak komponen subsistem DRM sedia ada, serta komponen pemacu i915 generik yang tidak terikat dengan GPU tertentu, seperti kod interaksi skrin, model memori dan pelaksanaan execbuf. Di Mesa, menjalankan OpenGL dan Vulkan di atas pemacu Xe dilaksanakan melalui perubahan yang dibuat pada pemacu Mesa Iris dan ANV sedia ada.
    • Dalam pemacu i915, kerja terus melaksanakan sokongan untuk cip Intel LunarLake (Xe 2). Sokongan yang lebih baik untuk cip Intel Meteor Lake.
    • Pemacu Nouveau dikonfigurasikan untuk menggunakan fungsi perisian tegar GSP secara lalai untuk berfungsi dengan GPU NVIDIA berdasarkan mikroarkitektur Turing dan Ampere, di mana operasi permulaan dan kawalan GPU dilakukan oleh mikropengawal GSP (Pemproses Sistem GPU) yang berasingan. Apabila tetapan didayakan, pemandu akan berfungsi dengan mengakses perisian tegar, bukannya operasi pengaturcaraan terus untuk berinteraksi dengan peralatan.
    • Pemacu AMDGPU termasuk sokongan untuk ACPI WBRF dan VPE DPM, pemprosesan kelajuan saluran PCIe telah diubah, nombor jujukan 64-bit digunakan dalam baris gilir yang digunakan untuk penyegerakan, sokongan untuk mekanisme pengurusan warna khusus AMD telah ditambah, dan masalah dengan menukar kepada mod tidur telah diselesaikan.
    • Menambahkan pelaksanaan awal pemacu untuk Broadcom VideoCore 7.1 GPU yang digunakan dalam papan Raspberry Pi 5.
    • Menambah pemacu untuk GPU siri PowerVR 6 berdasarkan seni bina mikro Rogue daripada Imagination Technologies.
    • Sokongan tambahan untuk pengawal Thunderbolt/USB4 disepadukan ke dalam cip berdasarkan mikroarchitecture Intel Lunar Lake.
    • Menambah pemacu untuk kamera yang digunakan dalam SoC Starfive, GalaxyCore GC2145/GC0308, Chips&Media Wave dan THine THP7312.
    • Sokongan tambahan untuk pengawal permainan NSO (Nintendo Switch Online) - varian pengawal lama daripada SNES (Super Nintendo), Genesis dan N64 (Nintendo 64), disesuaikan untuk Nintendo Switch. Menambah pemacu untuk pad permainan Adafruit Seesaw. Sokongan untuk pengawal Lenovo Legion Go telah ditambahkan pada pemacu xpad.
    • Pemacu dts kini menyokong peranti permainan Powkiddy RK2023, Powkiddy X55 dan Anbernic RG351V.
    • Sokongan tambahan untuk sistem audio yang digunakan dalam cip NXP i.MX8m MICFIL, Qualcomm SM8250, AMD ACP5x, Intel Arrow Lake, SM8550, SM8650 dan X1E80100.
    • AMD telah membuat perubahan yang berkaitan dengan sokongan untuk siri pemproses masa depan berdasarkan seni bina mikro Zen 5 yang baharu.
    • Sokongan tambahan untuk SoC ARM64: Qualcomm SM8650 (Snapdragon 8 Gen 3), Qualcomm X1E80100 (Snapdragon X Elite), Samsung Exynos Auto v920, Google GS101 (Tensor G1), MediaTek MT8188 dan Unisoc UMS9620 (Tanggula 7).
    • Sokongan tambahan untuk papan dan peranti ARM: Huashan Pi, Microsoft Lumia, HTC One Mini 2, Motorola MotoG 4G, Huawei Honor 5X/GR5, Anbernic RG351V, Powkiddy RK2023, Powkiddy X55, ComXpress berdasarkan Marvell CN913x, Lenovo Chromebook, Asus dan Acer berdasarkan Mediatek MT8183, Toradex Verdin AM62, papan berdasarkan Allwinner H616/H618.
    • Sokongan untuk pemproses SMP ARM11 ARMv6K telah dihentikan.

Pada masa yang sama, Yayasan Perisian Bebas Amerika Latin telah mencipta versi kernel 6.8 yang percuma sepenuhnya - Linux-libre 6.8-gnu, dibersihkan daripada elemen firmware dan pemacu yang mengandungi komponen bukan bebas atau bahagian kod dengan skop terhad oleh pengilang. Keluaran 6.8 termasuk kod pembersihan blob yang dikemas kini dalam pelbagai pemacu dan subsistem. Pemacu untuk Intel qat_420xx, Imagination PowerVR, Intel Xe, Chips&Media Wave5, Intel VSC, Aquantia PHY dan Realtek rtw8922a telah dibersihkan. Pembersihan pemacu untuk atmel, hermes, orinoco_usb, libertas_cs dan zd1201 telah dihentikan kerana penyingkirannya daripada kernel. Nama blob dalam fail devicetree (dts) untuk seni bina ARM dan Aarch64 telah dibersihkan. Isu dengan pembersihan pemacu i915 telah dibaiki.

Sumber: opennet.ru

Beli pengehosan yang boleh dipercayai untuk tapak dengan perlindungan DDoS, pelayan VPS VDS 🔥 Beli pengehosan laman web yang boleh dipercayai dengan perlindungan DDoS, pelayan VPS VDS | ProHoster