Rilis kernel Linux 5.11

Setelah dua bulan pengembangan, Linus Torvalds meluncurkan rilis kernel Linux 5.11. Di antara perubahan yang paling menonjol: dukungan untuk enklave Intel SGX, mekanisme baru untuk mencegat panggilan sistem, bus tambahan virtual, larangan merakit modul tanpa MODULE_LICENSE(), mode pemfilteran cepat untuk panggilan sistem di seccomp, penghentian dukungan untuk arsitektur ia64, transfer teknologi WiMAX ke cabang “staging”, kemampuan untuk merangkum SCTP dalam UDP.

Versi baru mencakup 15480 perbaikan dari 1991 pengembang, ukuran patch adalah 72 MB (perubahan mempengaruhi 12090 file, 868025 baris kode ditambahkan, 261456 baris dihapus). Sekitar 46% dari semua perubahan yang diperkenalkan di 5.11 terkait dengan driver perangkat, sekitar 16% perubahan terkait dengan pembaruan kode khusus untuk arsitektur perangkat keras, 13% terkait dengan tumpukan jaringan, 3% terkait dengan sistem file, dan 4% terkait dengan subsistem kernel internal.

Inovasi utama:

  • Subsistem Disk, I/O dan Sistem File
    • Beberapa opsi pemasangan telah ditambahkan ke Btrfs untuk digunakan saat memulihkan data dari sistem file yang rusak: “rescue=ignorebadroots” untuk pemasangan, meskipun ada kerusakan pada beberapa pohon akar (luas, uuid, relokasi data, perangkat, csum, ruang kosong), “ penyelamatan=ignoredatacsums” untuk menonaktifkan pemeriksaan checksum untuk data dan "rescue=all" untuk mengaktifkan mode 'ignorebadroots', 'ignoredatacsums' dan 'nologreplay' secara bersamaan. Opsi pemasangan "inode_cache", yang sebelumnya tidak digunakan lagi, telah dihentikan. Kode telah disiapkan untuk mengimplementasikan dukungan untuk blok dengan metadata dan data yang lebih kecil dari ukuran halaman (PAGE_SIZE), serta dukungan untuk mode alokasi ruang yang dikategorikan. Permintaan tanpa buffer (IO Langsung) telah dipindahkan ke infrastruktur iomap. Kinerja sejumlah operasional telah dioptimalkan, bahkan dalam beberapa kasus akselerasinya bisa mencapai puluhan persen.
    • XFS mengimplementasikan tanda "needsrepair", yang menandakan perlunya perbaikan. Jika tanda ini disetel, sistem file tidak dapat dipasang hingga tanda tersebut disetel ulang oleh utilitas xfs_repair.
    • Ext4 hanya menawarkan perbaikan bug dan optimasi, serta pembersihan kode.
    • Ekspor ulang sistem file yang dipasang melalui NFS diperbolehkan (yaitu partisi yang dipasang melalui NFS sekarang dapat diekspor melalui NFS dan digunakan sebagai cache perantara).
    • Panggilan sistem close_range(), yang memungkinkan proses untuk menutup seluruh rentang deskriptor file yang terbuka sekaligus, telah menambahkan opsi CLOSE_RANGE_CLOEXEC untuk menutup deskriptor dalam mode close-on-exec.
    • Sistem file F2FS menambahkan panggilan ioctl() baru untuk memungkinkan kontrol ruang pengguna atas file mana yang disimpan dalam bentuk terkompresi. Menambahkan opsi pemasangan "compress_mode=" untuk memilih apakah akan menempatkan pengendali kompresi di sisi kernel atau di ruang pengguna.
    • Memberikan kemampuan untuk memasang Overlayf dengan proses tanpa hak istimewa menggunakan namespace pengguna terpisah. Untuk memverifikasi kepatuhan terhadap penerapan model keamanan, audit kode lengkap dilakukan. Overlayfs juga menambahkan kemampuan untuk menjalankan menggunakan salinan gambar sistem file dengan menonaktifkan pemeriksaan UUID secara opsional.
    • Sistem file Ceph telah menambahkan dukungan untuk protokol msgr2.1, yang memungkinkan penggunaan algoritma AES-GCM saat mengirimkan data dalam bentuk terenkripsi.
    • Modul dm-multipath mengimplementasikan kemampuan untuk memperhitungkan afinitas CPU (“afinitas IO”) ketika memilih rute untuk permintaan I/O.
  • Layanan memori dan sistem
    • Mekanisme intersepsi panggilan sistem baru telah ditambahkan, berdasarkan prctl(), yang memungkinkan Anda menghasilkan pengecualian dari ruang pengguna saat mengakses panggilan sistem tertentu dan meniru eksekusinya. Fungsionalitas ini diperlukan di Wine dan Proton untuk meniru panggilan sistem Windows, yang diperlukan untuk memastikan kompatibilitas dengan game dan program yang secara langsung melakukan panggilan sistem melewati Windows API (misalnya, untuk melindungi dari penggunaan yang tidak sah).
    • Panggilan sistem userfaultfd(), yang dirancang untuk menangani kesalahan halaman (akses ke halaman memori yang tidak terisi) di ruang pengguna, kini memiliki kemampuan untuk menonaktifkan penanganan pengecualian yang terjadi di tingkat kernel agar lebih sulit untuk mengeksploitasi kerentanan tertentu.
    • Subsistem BPF telah menambahkan dukungan untuk penyimpanan tugas-lokal, yang menyediakan pengikatan data ke pengendali BPF tertentu.
    • Penghitungan konsumsi memori oleh program BPF telah didesain ulang sepenuhnya - pengontrol cgroup telah diusulkan sebagai pengganti memlock rlimit untuk mengelola penggunaan memori pada objek BPF.
    • Mekanisme BTF (BPF Type Format), yang menyediakan informasi pengecekan tipe dalam pseudocode BPF, menyediakan dukungan untuk modul kernel.
    • Menambahkan dukungan untuk panggilan sistem shutdown(), renameat2() dan unlinkat() ke antarmuka I/O asinkron io_uring. Saat memanggil io_uring_enter(), kemampuan untuk menentukan batas waktu telah ditambahkan (Anda dapat memeriksa dukungan argumen untuk menentukan batas waktu menggunakan tanda IORING_FEAT_EXT_ARG).
    • Arsitektur ia64 yang digunakan pada prosesor Intel Itanium telah dipindahkan ke kategori yatim piatu, yang berarti pengujian telah dihentikan. Hewlett Packard Enterprise berhenti menerima pesanan peralatan Itanium baru, dan Intel melakukannya tahun lalu.
    • Dukungan untuk sistem berdasarkan arsitektur MicroBlaze yang tidak menyertakan unit manajemen memori (MMU) telah dihentikan. Sistem seperti ini sudah lama tidak terlihat dalam kehidupan sehari-hari.
    • Untuk arsitektur MIPS, dukungan untuk pengujian cakupan kode telah ditambahkan menggunakan utilitas gcov.
    • Menambahkan dukungan untuk bus tambahan virtual untuk berinteraksi dengan perangkat multifungsi yang menggabungkan fungsionalitas yang memerlukan driver berbeda (misalnya, kartu jaringan dengan dukungan Ethernet dan RDMA). Bus dapat digunakan untuk menetapkan driver primer dan sekunder ke suatu perangkat, dalam situasi di mana penggunaan subsistem MFD (Perangkat Multi-Fungsi) bermasalah.
    • Untuk arsitektur RISC-V, dukungan telah ditambahkan untuk sistem alokasi memori CMA (Contiguous Memory Allocator), yang dioptimalkan untuk mengalokasikan area memori bersebelahan yang besar menggunakan teknik pergerakan halaman memori. Untuk RISC-V, alat juga diterapkan untuk membatasi akses ke /dev/mem dan memperhitungkan waktu pemrosesan interupsi.
    • Untuk sistem ARM 32-bit, dukungan telah ditambahkan untuk alat debugging KASan (Kernel address sanitizer), yang membantu mengidentifikasi kesalahan saat bekerja dengan memori. Untuk ARM 64-bit, implementasi KASan telah dikonversi menggunakan tag MTE (MemTag).
    • Menambahkan panggilan sistem epoll_pwait2() untuk memungkinkan batas waktu dengan presisi nanodetik (panggilan epoll_wait memanipulasi milidetik).
    • Sistem pembangunan sekarang menampilkan kesalahan ketika mencoba membangun modul kernel yang dapat dimuat di mana lisensi kode tidak ditentukan menggunakan makro MODULE_LICENSE(). Mulai sekarang, penggunaan makro EXPORT_SYMBOL() untuk fungsi statis juga akan menyebabkan kesalahan build.
    • Menambahkan dukungan untuk memetakan objek GEM dari memori yang digunakan untuk I/O, yang memungkinkan untuk mempercepat pekerjaan dengan framebuffer pada beberapa arsitektur.
    • Kconfig telah menghentikan dukungan untuk Qt4 (sambil mempertahankan dukungan untuk Qt5, GTK dan Ncurses).
  • Virtualisasi dan Keamanan
    • Dukungan untuk mode respon cepat telah ditambahkan ke panggilan sistem seccomp(), yang memungkinkan Anda dengan cepat menentukan apakah panggilan sistem tertentu diperbolehkan atau dilarang berdasarkan bitmap tindakan konstan yang melekat pada proses, yang tidak perlu dijalankan seorang penangan BPF.
    • Komponen kernel terintegrasi untuk membuat dan mengelola enklave berdasarkan teknologi Intel SGX (Software Guard eXtensions), yang memungkinkan aplikasi mengeksekusi kode di area memori terenkripsi yang terisolasi, yang aksesnya terbatas pada seluruh sistem.
    • Sebagai bagian dari inisiatif untuk membatasi akses dari ruang pengguna ke MSR (register khusus model), menulis ke register MSR_IA32_ENERGY_PERF_BIAS, yang memungkinkan Anda mengubah mode efisiensi energi prosesor (“normal”, “kinerja”, “hemat daya”) , terlarang.
    • Kemampuan untuk menonaktifkan migrasi tugas-tugas berprioritas tinggi antar CPU telah dipindahkan dari cabang kernel-rt untuk sistem real-time.
    • Untuk sistem ARM64, kemampuan untuk menggunakan tag MTE (MemTag, Memory Tagging Extension) untuk alamat memori pengendali sinyal telah ditambahkan. Penggunaan MTE diaktifkan dengan menentukan opsi SA_EXPOSE_TAGBITS di sigaction() dan memungkinkan Anda memeriksa penggunaan pointer yang benar untuk memblokir eksploitasi kerentanan yang disebabkan oleh mengakses blok memori yang sudah dibebaskan, buffer overflows, akses sebelum inisialisasi, dan penggunaan di luar konteks saat ini.
    • Menambahkan parameter "DM_VERITY_VERIFY_ROOTHASH_SIG_SECONDARY_KEYRING", yang memungkinkan subsistem dm-verity memeriksa tanda tangan hash dari sertifikat yang ditempatkan di keyring sekunder. Dalam praktiknya, pengaturan memungkinkan Anda untuk memverifikasi tidak hanya sertifikat yang ada di dalam kernel, tetapi juga sertifikat yang dimuat selama operasi, yang memungkinkan untuk memperbarui sertifikat tanpa memperbarui seluruh kernel.
    • Mode pengguna Linux telah menambahkan dukungan untuk mode suspend-to-idle, yang memungkinkan Anda membekukan lingkungan dan menggunakan sinyal SIGUSR1 untuk bangun dari mode tidur.
    • Mekanisme virtio-mem, yang memungkinkan Anda melakukan hot-plug dan memutuskan sambungan memori ke mesin virtual, telah menambahkan dukungan untuk Big Block Mode (BBM), yang memungkinkan untuk mentransfer atau mengambil memori dalam blok yang lebih besar dari ukuran memori kernel. blok, yang diperlukan untuk mengoptimalkan VFIO di QEMU.
    • Dukungan untuk cipher CHACHA20-POLY1305 telah ditambahkan ke implementasi kernel TLS.
  • Subsistem jaringan
    • Untuk 802.1Q (VLAN), mekanisme manajemen kegagalan koneksi (CFM, Connectivity Fault Management) telah diterapkan, yang memungkinkan Anda mengidentifikasi, memverifikasi, dan mengisolasi kegagalan dalam jaringan dengan jembatan virtual (Virtual Bridged Networks). Misalnya, CFM dapat digunakan untuk mengisolasi masalah dalam jaringan yang mencakup beberapa organisasi independen yang karyawannya hanya memiliki akses ke peralatan mereka sendiri.
    • Menambahkan dukungan untuk mengenkapsulasi paket protokol SCTP ke dalam paket UDP (RFC 6951), yang memungkinkan penggunaan SCTP pada jaringan dengan penerjemah alamat lama yang tidak secara langsung mendukung SCTP, serta mengimplementasikan SCTP pada sistem yang tidak menyediakan akses langsung ke IP lapisan.
    • Implementasi teknologi WiMAX telah dipindahkan ke tahap staging dan direncanakan untuk dihapus di masa depan jika tidak ada pengguna yang membutuhkan WiMAX. WiMAX tidak lagi digunakan di jaringan publik, dan di kernel satu-satunya driver yang dapat digunakan WiMAX adalah driver Intel 2400m yang sudah ketinggalan zaman. Dukungan WiMAX dihentikan di konfigurator jaringan NetworkManager pada tahun 2015. Saat ini WiMax hampir sepenuhnya digantikan oleh teknologi seperti LTE, HSPA+ dan Wi-Fi 802.11n.
    • Pekerjaan telah dilakukan untuk mengoptimalkan kinerja pemrosesan lalu lintas TCP yang masuk dalam mode zerocopy, mis. tanpa penyalinan tambahan ke buffer baru. Untuk lalu lintas berukuran sedang, yang mencakup puluhan atau beberapa ratus kilobyte data, penggunaan zerocopy daripada recvmsg() terasa lebih efektif. Misalnya, perubahan yang diterapkan memungkinkan peningkatan efisiensi pemrosesan lalu lintas bergaya RPC dengan pesan 32 KB saat menggunakan zerocopy sebesar 60-70%.
    • Menambahkan panggilan ioctl() baru untuk membuat jembatan jaringan yang mencakup beberapa link PPP. Kemampuan yang diusulkan memungkinkan frame untuk berpindah dari satu saluran ke saluran lainnya, misalnya dari sesi PPPoE ke sesi PPPoL2TP.
    • Integrasi ke dalam inti MPTCP (MultiPath TCP), perpanjangan dari protokol TCP untuk mengatur pengoperasian koneksi TCP dengan pengiriman paket secara bersamaan sepanjang beberapa rute melalui antarmuka jaringan berbeda yang terkait dengan alamat IP berbeda. Rilis baru ini memperkenalkan dukungan untuk opsi ADD_ADDR untuk mengiklankan alamat IP yang tersedia yang dapat dihubungkan ketika menambahkan aliran baru ke koneksi MPTCP yang ada.
    • Menambahkan kemampuan untuk mengonfigurasi tindakan ketika anggaran polling koneksi terlampaui (polling sibuk). Mode SO_BUSY_POLL yang tersedia sebelumnya berarti beralih ke softirq ketika anggaran habis. Untuk aplikasi yang perlu terus menggunakan polling, opsi baru SO_PREFER_BUSY_POLL diusulkan.
    • IPv6 mengimplementasikan dukungan untuk mode SRv6 End.DT4 dan End.DT6, yang digunakan untuk membuat VPN IPv4 L3 multi-pengguna dan perangkat VRF (Virtual routing and forwarding).
    • Netfilter menyatukan implementasi ekspresi himpunan, yang memungkinkan untuk menentukan beberapa ekspresi untuk setiap elemen daftar himpunan.
    • API telah ditambahkan ke tumpukan nirkabel 802.11 untuk mengonfigurasi batas daya SAR, serta parameter AE PWE dan HE MCS. Driver Intel iwlwifi telah menambahkan dukungan untuk rentang 6GHz (Ultra High Band). Driver Qualcomm Ath11k telah menambahkan dukungan untuk teknologi FILS (Fast Initial Link Setup, yang distandarisasi sebagai IEEE 802.11ai), yang memungkinkan Anda menghilangkan penundaan roaming selama migrasi dari satu titik akses ke titik akses lainnya.
  • Оборудование
    • Driver amdgpu memberikan dukungan untuk AMD "Green Sardine" APU (Ryzen 5000) dan GPU "Dimgrey Cavefish" (Navi 2), serta dukungan awal untuk AMD Van Gogh APU dengan inti Zen 2 dan GPU RDNA 2 (Navi 2). Menambahkan dukungan untuk pengidentifikasi APU Renoir baru (berdasarkan CPU Zen 2 dan GPU Vega).
    • Driver i915 untuk kartu video Intel mendukung teknologi IS (Integer scaling) dengan penerapan filter untuk meningkatkan skala dengan mempertimbangkan keadaan piksel tetangga (interpolasi tetangga terdekat) untuk menentukan warna piksel yang hilang. Dukungan untuk kartu Intel DG1 diskrit telah diperluas. Dukungan untuk teknologi “Big Joiner” telah diterapkan, yang telah hadir sejak chip Ice Lake / Gen11 dan memungkinkan penggunaan satu transcoder untuk memproses dua aliran, misalnya, untuk keluaran ke layar 8K melalui satu DisplayPort. Menambahkan mode untuk beralih secara asinkron antara dua buffer dalam memori video (async flip).
    • Driver nouveau telah menambahkan dukungan awal untuk GPU NVIDIA berdasarkan mikroarsitektur Ampere (GA100, GeForce RTX 30xx), yang sejauh ini terbatas pada alat untuk mengontrol mode video.
    • Menambahkan dukungan untuk protokol 3WIRE yang digunakan di panel LCD. Menambahkan dukungan untuk panel novatek nt36672a, TDO tl070wsh30, Innolux N125HCE-GN1 dan ABT Y030XX067A 3.0. Secara terpisah, kami dapat mencatat dukungan untuk panel smartphone OnePlus 6 dan 6T, yang memungkinkan untuk mengatur pemuatan kernel yang tidak dimodifikasi pada perangkat.
    • Menambahkan dukungan untuk pengontrol host USB4 diskrit pertama Intel, Maple Ridge.
    • Menambahkan dukungan untuk Allwinner H6 I2S, Perangkat Analog ADAU1372, Intel Alderlake-S, GMediatek MT8192, NXP i.MX HDMI dan XCVR, codec audio Realtek RT715 dan Qualcomm SM8250.
    • Dukungan tambahan untuk papan, perangkat, dan platform ARM: Galaxy Note 10.1, Microsoft Lumia 950 XL, NanoPi R1, FriendlyArm ZeroPi, Elimo Initium SBC, Broadcom BCM4908, Mediatek MT8192/MT6779/MT8167, MStar Infinity2M, Nuvoton NPCM730, Marvell Armada 382, ​​​​Mikrotik berdasarkan Marvell Prestera 98DX3236, server dengan Nuvoton NPCM750 BMC, Kontron i.MX8M Mini, Espressobin Ultra, Chromebook “Trogdor”, Kobol Helios64, Engicam PX30.Core.
    • Dukungan bawaan untuk konsol game Ouya berdasarkan NVIDIA Tegra 3.

Pada saat yang sama, Yayasan Perangkat Lunak Bebas Amerika Latin membentuk versi kernel 5.11 yang sepenuhnya gratis - Linux-libre 5.11-gnu, dibersihkan dari elemen firmware dan driver yang berisi komponen tidak bebas atau bagian kode, yang cakupannya terbatas oleh pabrikan. Rilisan baru ini membersihkan driver untuk qat_4xxx (crypto), lt9611uxcm (dsi/hdmi bridge), ccs/smia++ (sensor), ath11k_pci, nxp audio transceiver dan mhi pci controller. Kode pembersihan gumpalan yang diperbarui di driver dan subsistem amdgpu, btqca, btrtl, btusb, i915 csr. Menonaktifkan gumpalan baru di m3 rproc, jam ptp idt82p33, dan Qualcomm arm64.

Sumber: opennet.ru

Tambah komentar