Rilis kernel Linux 5.15

Setelah dua bulan pengembangan, Linus Torvalds meluncurkan rilis kernel Linux 5.15. Perubahan penting meliputi: driver NTFS baru dengan dukungan tulis, modul ksmbd dengan implementasi server SMB, subsistem DAMON untuk pemantauan akses memori, primitif penguncian real-time, dukungan fs-verity di Btrfs, panggilan sistem process_mrelease untuk memori sistem respons kelaparan, modul sertifikasi jarak jauh dm-ima.

Versi baru mencakup 13499 perbaikan dari 1888 pengembang, ukuran patch adalah 42 MB (perubahan mempengaruhi 10895 file, 632522 baris kode ditambahkan, 299966 baris dihapus). Sekitar 45% dari semua perubahan yang diperkenalkan di 5.15 terkait dengan driver perangkat, sekitar 14% perubahan terkait dengan pembaruan kode khusus untuk arsitektur perangkat keras, 14% terkait dengan tumpukan jaringan, 6% terkait dengan sistem file, dan 3% terkait dengan subsistem kernel internal.

Inovasi utama:

  • Subsistem Disk, I/O dan Sistem File
    • Kernel telah mengadopsi implementasi baru dari sistem file NTFS, yang dibuka oleh Paragon Software. Driver baru dapat bekerja dalam mode tulis dan mendukung semua fitur versi NTFS 3.1 saat ini, termasuk atribut file yang diperluas, daftar akses (ACL), mode kompresi data, pekerjaan efektif dengan ruang kosong dalam file (jarang) dan memutar ulang perubahan dari log untuk memulihkan integritas setelah kegagalan.
    • Sistem file Btrfs mendukung mekanisme fs-verity, yang digunakan untuk mengontrol integritas dan keaslian file individual secara transparan menggunakan hash kriptografi atau kunci yang terkait dengan file, yang disimpan di area metadata. Sebelumnya, fs-verity hanya tersedia untuk sistem file Ext4 dan F2fs.

      Btrfs juga menambahkan dukungan untuk memetakan ID pengguna untuk sistem file yang dipasang (sebelumnya didukung untuk sistem file FAT, ext4 dan XFS). Fitur ini memungkinkan Anda membandingkan file pengguna tertentu di partisi asing yang dipasang dengan pengguna lain di sistem saat ini.

      Perubahan lain pada Btrfs meliputi: penambahan kunci yang lebih cepat pada indeks direktori untuk meningkatkan kinerja pembuatan file; kemampuan untuk bekerja raid0 dengan satu perangkat, dan raid10 dengan dua perangkat (misalnya, selama proses konfigurasi ulang array); opsi “rescue=ibadroots” untuk mengabaikan pohon tingkat yang salah; percepatan operasi “kirim”; pengurangan konflik penguncian selama penggantian nama operasi; kemampuan untuk menggunakan sektor 4K pada sistem dengan ukuran halaman memori 64K.

    • Di XFS, kemampuan untuk menggunakan tanggal setelah tahun 2038 dalam sistem file telah distabilkan. Menerapkan mekanisme untuk penonaktifan inode yang tertunda dan dukungan untuk penundaan instalasi dan penghapusan atribut file. Untuk menghilangkan masalah, kemampuan untuk menonaktifkan kuota disk untuk partisi yang sudah terpasang telah dihapus (Anda dapat menonaktifkan kuota secara paksa, tetapi penghitungan yang terkait dengannya akan dilanjutkan, jadi pemasangan ulang diperlukan untuk menonaktifkannya sepenuhnya).
    • Di EXT4, pekerjaan telah dilakukan untuk meningkatkan kinerja penulisan buffer delalloc dan pemrosesan file yatim piatu yang terus ada karena faktanya file tersebut tetap terbuka, tetapi tidak terkait dengan direktori. Pemrosesan operasi pembuangan telah dipindahkan dari thread jbd2 kthread untuk menghindari pemblokiran operasi dengan metadata.
    • F2FS menambahkan opsi "discard_unit=block|segment|section" untuk mengikat operasi pembuangan (menandai blok yang dibebaskan yang mungkin tidak lagi disimpan secara fisik) ke penyelarasan relatif terhadap blok, sektor, segmen, atau bagian. Menambahkan dukungan untuk melacak perubahan latensi I/O.
    • Sistem file EROFS (Extendable Read-Only File System) menambahkan dukungan I/O langsung untuk file yang disimpan tanpa kompresi, serta dukungan fiemap.
    • OverlayFS mengimplementasikan penanganan yang benar terhadap flag mount "immutable", "append-only", "sync" dan "noatime".
    • NFS telah meningkatkan penanganan situasi ketika server NFS berhenti merespons permintaan. Menambahkan kemampuan untuk melakukan mount dari server yang sudah digunakan, namun dapat diakses melalui alamat jaringan yang berbeda.
    • Persiapan untuk menulis ulang subsistem FSCACHE telah dimulai.
    • Menambahkan dukungan untuk partisi EFI dengan penempatan tabel GPT non-standar.
    • Mekanisme fanotify mengimplementasikan flag baru, FAN_REPORT_PIDFD, yang menyebabkan pidfd disertakan dalam metadata yang dikembalikan. Pidfd membantu menangani situasi penggunaan kembali PID agar lebih akurat mengidentifikasi proses yang mengakses file yang dipantau (pidfd dikaitkan dengan proses tertentu dan tidak berubah, sedangkan PID dapat dikaitkan dengan proses lain setelah proses saat ini yang terkait dengan PID tersebut berakhir).
    • Menambahkan kemampuan untuk menambahkan titik pemasangan ke grup bersama yang ada ke panggilan sistem move_mount(), yang memecahkan masalah dalam menyimpan dan memulihkan status proses di CRIU ketika ada beberapa ruang pemasangan yang dibagikan dalam wadah terisolasi.
    • Menambahkan perlindungan terhadap kondisi balapan tersembunyi yang berpotensi menyebabkan kerusakan file saat melakukan pembacaan cache saat memproses kekosongan dalam file.
    • Dukungan untuk pemblokiran file wajib (wajib), yang diterapkan melalui pemblokiran panggilan sistem yang menyebabkan perubahan file, telah dihentikan. Karena kemungkinan kondisi balapan, kunci ini dianggap tidak dapat diandalkan dan tidak digunakan lagi beberapa tahun yang lalu.
    • Subsistem LightNVM telah dihapus, yang memungkinkan akses langsung ke drive SSD, melewati lapisan emulasi. LightNVM kehilangan maknanya setelah munculnya standar NVMe yang menyediakan zonasi (ZNS, Zoned Namespace).
  • Layanan memori dan sistem
    • Subsistem DAMON (Data Access MONitor) telah diterapkan, memungkinkan Anda memantau aktivitas yang terkait dengan pengaksesan data dalam RAM sehubungan dengan proses terpilih yang berjalan di ruang pengguna. Subsistem memungkinkan Anda menganalisis area memori mana yang diakses oleh proses selama seluruh operasinya, dan area memori mana yang tetap tidak diklaim. DAMON memiliki fitur beban CPU yang rendah, konsumsi memori yang rendah, akurasi tinggi, dan overhead konstan yang dapat diprediksi, tidak bergantung pada ukurannya. Subsistem dapat digunakan baik oleh kernel untuk mengoptimalkan manajemen memori, dan oleh utilitas di ruang pengguna untuk memahami apa sebenarnya yang dilakukan suatu proses dan mengoptimalkan penggunaan memori, misalnya, mengosongkan kelebihan memori untuk sistem.
    • Panggilan sistem process_mrelease telah diimplementasikan untuk mempercepat proses pelepasan memori suatu proses yang menyelesaikan eksekusinya. Dalam keadaan normal, pelepasan sumber daya dan penghentian proses tidak terjadi secara instan dan mungkin tertunda karena berbagai alasan, sehingga mengganggu sistem respons awal memori ruang pengguna seperti oomd (disediakan oleh systemd) dan lmkd (digunakan oleh Android). Dengan memanggil process_mrelease, sistem seperti itu dapat memicu pengambilan kembali memori dari proses yang dipaksakan dengan lebih dapat diprediksi.
    • Dari cabang kernel PREEMPT_RT, yang mengembangkan dukungan untuk operasi waktu nyata, varian primitif untuk mengatur kunci mutex, ww_mutex, rw_semaphore, spinlock dan rwlock, berdasarkan subsistem RT-Mutex, telah ditransfer. Perubahan telah ditambahkan pada pengalokasi pelat SLUB untuk meningkatkan pengoperasian dalam mode PREEMPT_RT dan mengurangi dampak interupsi.
    • Dukungan untuk atribut penjadwal tugas SCHED_IDLE telah ditambahkan ke cgroup, memungkinkan Anda menyediakan atribut ini ke semua proses grup yang termasuk dalam cgroup tertentu. Itu. proses ini hanya akan berjalan bila tidak ada tugas lain yang menunggu untuk dijalankan pada sistem. Tidak seperti menyetel atribut SCHED_IDLE ke setiap proses secara individual, saat mengikat SCHED_IDLE ke cgroup, bobot relatif tugas dalam grup diperhitungkan saat memilih tugas untuk dijalankan.
    • Mekanisme penghitungan konsumsi memori di cgroup telah diperluas dengan kemampuan untuk melacak struktur data kernel tambahan, termasuk yang dibuat untuk polling, pemrosesan sinyal, dan namespace.
    • Menambahkan dukungan untuk penjadwalan asimetris pengikatan tugas ke inti prosesor pada arsitektur di mana beberapa CPU mengizinkan eksekusi tugas 32-bit, dan beberapa hanya beroperasi dalam mode 64-bit (misalnya, ARM). Mode baru ini memungkinkan Anda untuk mempertimbangkan hanya CPU yang mendukung tugas 32-bit saat menjadwalkan tugas 32-bit.
    • Antarmuka I/O asinkron io_uring sekarang mendukung pembukaan file secara langsung di tabel indeks file tetap, tanpa menggunakan deskriptor file, yang memungkinkan untuk mempercepat beberapa jenis operasi secara signifikan, namun bertentangan dengan proses Unix tradisional yang menggunakan deskriptor file untuk membuka file.

      io_uring untuk subsistem BIO (Block I/O Layer) menerapkan mekanisme daur ulang baru (“daur ulang BIO”), yang mengurangi overhead dalam proses pengelolaan memori internal dan meningkatkan jumlah operasi I/O yang diproses per detik sekitar 10% . io_uring juga menambahkan dukungan untuk panggilan sistem mkdirat(), symlinkat() dan linkat().

    • Untuk program BPF, kemampuan untuk meminta dan memproses kejadian pengatur waktu telah diterapkan. Sebuah iterator untuk soket UNIX telah ditambahkan, dan kemampuan untuk mendapatkan dan mengatur opsi soket untuk setockopt telah diterapkan. Dumper BTF sekarang mendukung data yang diketik.
    • Pada sistem NUMA dengan berbagai jenis memori yang kinerjanya berbeda, ketika ruang kosong habis, halaman memori yang dikeluarkan akan ditransfer dari memori dinamis (DRAM) ke memori permanen yang lebih lambat (Memori Persisten) alih-alih menghapus halaman tersebut. Pengujian telah menunjukkan bahwa taktik seperti itu biasanya meningkatkan kinerja pada sistem tersebut. NUMA juga menyediakan kemampuan untuk mengalokasikan halaman memori untuk suatu proses dari kumpulan node NUMA yang dipilih.
    • Untuk arsitektur ARC, dukungan untuk tabel halaman memori tiga dan empat tingkat telah diterapkan, yang selanjutnya akan memungkinkan dukungan untuk prosesor ARC 64-bit.
    • Untuk arsitektur s390, kemampuan untuk menggunakan mekanisme KFENCE untuk mendeteksi kesalahan saat bekerja dengan memori telah diterapkan, dan dukungan untuk pendeteksi kondisi balapan KCSAN telah ditambahkan.
    • Menambahkan dukungan untuk mengindeks daftar keluaran pesan melalui printk(), memungkinkan Anda mengambil semua pesan tersebut sekaligus dan melacak perubahan dalam ruang pengguna.
    • mmap() telah menghapus dukungan untuk opsi VM_DENYWRITE, dan kode kernel telah dihapus dari penggunaan mode MAP_DENYWRITE, yang telah mengurangi jumlah situasi yang menyebabkan pemblokiran penulisan ke file dengan kesalahan ETXTBSY.
    • Jenis pemeriksaan baru, “Probe peristiwa,” telah ditambahkan ke subsistem penelusuran, yang dapat dilampirkan ke peristiwa penelusuran yang ada, sehingga menentukan format keluaran Anda sendiri.
    • Saat membangun kernel menggunakan kompiler Clang, assembler default dari proyek LLVM sekarang digunakan.
    • Sebagai bagian dari proyek untuk menghilangkan kode kernel yang menyebabkan peringatan dikeluarkan oleh kompiler, percobaan dilakukan dengan mode “-Werror” diaktifkan secara default, di mana peringatan kompiler diproses sebagai kesalahan. Dalam persiapan untuk rilis 5.15, Linus mulai menerima hanya perubahan yang tidak menghasilkan peringatan ketika membangun kernel dan mengaktifkan pembangunan dengan "-Werror", tetapi kemudian setuju bahwa keputusan seperti itu terlalu dini dan menunda pengaktifan "-Werror" secara default . Dimasukkannya tanda “-Werror” selama perakitan dikontrol menggunakan parameter WERROR, yang diatur ke COMPILE_TEST secara default, yaitu. Untuk saat ini hanya diaktifkan untuk uji coba.
  • Virtualisasi dan Keamanan
    • Pengendali dm-ima baru telah ditambahkan ke Device Mapper (DM) dengan penerapan mekanisme sertifikasi jarak jauh berdasarkan subsistem IMA (Integrity Measurement Architecture), yang memungkinkan layanan eksternal memverifikasi status subsistem kernel untuk memastikan keasliannya . Dalam praktiknya, dm-ima memungkinkan Anda membuat penyimpanan menggunakan Device Mapper yang terhubung ke sistem cloud eksternal, di mana validitas konfigurasi target DM yang diluncurkan diperiksa menggunakan IMA.
    • prctl() mengimplementasikan opsi baru PR_SPEC_L1D_FLUSH, yang bila diaktifkan, menyebabkan kernel mengosongkan konten cache tingkat pertama (L1D) setiap kali terjadi peralihan konteks. Mode ini memungkinkan, secara selektif untuk proses yang paling penting, untuk menerapkan perlindungan tambahan terhadap penggunaan serangan saluran samping yang dilakukan untuk menentukan data yang disimpan di cache sebagai akibat dari kerentanan yang disebabkan oleh eksekusi instruksi spekulatif di CPU. Biaya untuk mengaktifkan PR_SPEC_L1D_FLUSH (tidak diaktifkan secara default) merupakan penalti kinerja yang signifikan.
    • Dimungkinkan untuk membangun kernel dengan penambahan flag “-fzero-call-used-regs=used-gpr” ke GCC, yang memastikan bahwa semua register disetel ulang ke nol sebelum mengembalikan kontrol dari fungsi. Opsi ini memungkinkan Anda melindungi terhadap kebocoran informasi dari fungsi dan mengurangi sebesar 20% jumlah blok yang cocok untuk membuat gadget ROP (Return-Oriented Programming) dalam eksploitasi.
    • Kemampuan untuk membangun kernel untuk arsitektur ARM64 dalam bentuk klien untuk hypervisor Hyper-V telah diimplementasikan.
    • Kerangka pengembangan driver baru “VDUSE” diusulkan, yang memungkinkan penerapan perangkat blok virtual di ruang pengguna dan menggunakan Virtio sebagai transportasi untuk akses dari sistem tamu.
    • Menambahkan driver Virtio untuk bus I2C, sehingga memungkinkan untuk meniru pengontrol I2C dalam mode paravirtualisasi menggunakan backend terpisah.
    • Menambahkan driver Virtio gpio-virtio untuk memungkinkan tamu mengakses jalur GPIO yang disediakan oleh sistem host.
    • Menambahkan kemampuan untuk membatasi akses ke halaman memori untuk driver perangkat dengan dukungan DMA pada sistem tanpa I/O MMU (unit manajemen memori).
    • Hypervisor KVM memiliki kemampuan menampilkan statistik dalam bentuk histogram linier dan logaritmik.
  • Subsistem jaringan
    • Modul ksmbd telah ditambahkan ke kernel dengan implementasi server file menggunakan protokol SMB3. Modul ini melengkapi implementasi klien SMB yang sebelumnya tersedia di kernel dan, tidak seperti server SMB yang berjalan di ruang pengguna, modul ini lebih efisien dalam hal kinerja, konsumsi memori, dan integrasi dengan kemampuan kernel tingkat lanjut. Ksmbd disebut-sebut sebagai ekstensi Samba berkinerja tinggi dan siap tertanam yang terintegrasi dengan alat dan pustaka Samba sesuai kebutuhan. Kemampuan ksmbd mencakup peningkatan dukungan untuk teknologi cache file terdistribusi (sewa SMB) pada sistem lokal, yang dapat mengurangi lalu lintas secara signifikan. Ke depannya, mereka berencana menambahkan dukungan untuk RDMA (“smbdirect”) dan ekstensi protokol terkait peningkatan keandalan enkripsi dan verifikasi menggunakan tanda tangan digital.
    • Klien CIFS tidak lagi mendukung NTLM dan algoritma otentikasi berbasis DES yang lebih lemah yang digunakan dalam protokol SMB1.
    • Dukungan multicast diimplementasikan dalam implementasi jembatan jaringan untuk vlan.
    • Driver pengikatan, yang digunakan untuk menggabungkan antarmuka jaringan, telah menambahkan dukungan untuk subsistem XDP (eXpress Data Path), yang memungkinkan Anda memanipulasi paket jaringan pada tahap sebelum diproses oleh tumpukan jaringan kernel Linux.
    • Tumpukan nirkabel mac80211 mendukung 6GHZ STA (Otorisasi Sementara Khusus) dalam mode LPI, SP dan VLP, serta kemampuan untuk mengatur TWT (Target Wake Time) individual dalam mode titik akses.
    • Menambahkan dukungan untuk MCTP (Management Component Transport Protocol), yang digunakan untuk interaksi antara pengontrol manajemen dan perangkat terkait (pemroses host, perangkat periferal, dll.).
    • 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 menambahkan dukungan untuk alamat dalam mode fullmesh.
    • Penangan untuk aliran jaringan yang dikemas dalam protokol SRv6 (Segment Routing IPv6) telah ditambahkan ke netfilter.
    • Menambahkan dukungan sockmap untuk soket streaming Unix.
  • Оборудование
    • Driver amdgpu mendukung APU Cyan Skillfish (dilengkapi dengan GPU Navi 1x). APU Yellow Carp sekarang mendukung codec video. Peningkatan dukungan GPU Aldebaran. Menambahkan pengidentifikasi peta baru berdasarkan GPU Navi 24 “Beige Goby” dan RDNA2. Peningkatan implementasi layar virtual (VKMS) diusulkan. Dukungan untuk memantau suhu chip AMD Zen 3 telah diterapkan.
    • Driver amdkfd (untuk GPU diskrit, seperti Polaris) mengimplementasikan manajer memori virtual bersama (SVM, memori virtual bersama) berdasarkan subsistem HMM (Manajemen memori heterogen), yang memungkinkan penggunaan perangkat dengan unit manajemen memori (MMU) sendiri , unit manajemen memori), yang dapat mengakses memori utama. Secara khusus, dengan menggunakan HMM, Anda dapat mengatur ruang alamat bersama antara GPU dan CPU, di mana GPU dapat mengakses memori utama dari proses tersebut.
    • Driver i915 untuk kartu video Intel memperluas penggunaan manajer memori video TTM dan mencakup kemampuan untuk mengelola konsumsi daya berdasarkan GuC (Graphics micro Controller). Persiapan implementasi dukungan kartu grafis Intel ARC Alchemist dan GPU Intel Xe-HP telah dimulai.
    • Driver nouveau mengimplementasikan kontrol lampu latar untuk panel eDP menggunakan DPCD (DisplayPort Configuration Data).
    • Menambahkan dukungan untuk GPU Adreno 7c Gen 3 dan Adreno 680 ke driver msm.
    • Driver IOMMU diimplementasikan untuk chip Apple M1.
    • Menambahkan driver suara untuk sistem berbasis APU AMD Van Gogh.
    • Driver Realtek R8188EU telah ditambahkan ke cabang pementasan, yang menggantikan driver versi lama (rtl8188eu) untuk chip nirkabel Realtek RTL8188EU 802.11 b/g/n.
    • Driver ocp_pt disertakan untuk papan PCIe yang dikembangkan oleh Meta (Facebook) dengan implementasi jam atom mini dan penerima GNSS, yang dapat digunakan untuk mengatur pengoperasian server sinkronisasi waktu tepat yang terpisah.
    • Menambahkan dukungan untuk ponsel pintar Sony Xperia 10II (Snapdragon 665), Xiaomi Redmi 2 (Snapdragon MSM8916), Samsung Galaxy S3 (Snapdragon MSM8226), Samsung Gavini/Codina/Kyle.
    • Dukungan 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, Renesas R-Car H3e papan -2G/M3e-2G, Marvell CN913x, ASpeed ​​​​AST2600 (papan server Facebook Cloudripper, Elbert dan Fuji), 4KOpen STiH418-b2264.
    • Dukungan tambahan untuk panel LCD Gopher 2b, EDT ETM0350G0DH6/ETMV570G2DHU, LOGIC Technologies LTTD800480070-L6WH-RT, Multi-Innotechnology MI1010AIT-1CP1, Innolux EJ030NA 3.0, ilitek ili9341, E Ink VB3300-KCA, Samsung ATNA33XC 20 7430, Samsung DB2401, WideChips WSXNUMX .
    • Menambahkan driver LiteETH dengan dukungan untuk pengontrol Ethernet yang digunakan dalam SoC perangkat lunak LiteX (untuk FPGA).
    • Opsi latensi rendah telah ditambahkan ke driver usb-audio untuk mengontrol penyertaan operasi dalam mode latensi minimum. Juga menambahkan opsi quirk_flags untuk meneruskan pengaturan khusus perangkat.

Pada saat yang sama, Yayasan Perangkat Lunak Bebas Amerika Latin membentuk versi kernel 5.15 yang sepenuhnya gratis - Linux-libre 5.15-gnu, dibersihkan dari elemen firmware dan driver yang berisi komponen tidak bebas atau bagian kode, yang cakupannya terbatas oleh pabrikan. Rilis baru mengimplementasikan output pesan ke log tentang selesainya pembersihan. Masalah dalam menghasilkan paket menggunakan mkspec telah diperbaiki, dukungan untuk paket snap telah ditingkatkan. Menghapus beberapa peringatan yang ditampilkan saat memproses file header firmware.h. Mengizinkan keluaran beberapa jenis peringatan (“format-extra-args”, komentar, fungsi dan variabel yang tidak digunakan) saat membangun dalam mode “-Werror”. Menambahkan pembersihan driver gehc-achc. Kode pembersihan gumpalan yang diperbarui di driver dan subsistem adreno, btusb, btintel, brcmfmac, aarch64 qcom. Pembersihan driver prisma54 (dihapus) dan rtl8188eu (diganti dengan r8188eu) telah dihentikan.

Sumber: opennet.ru

Tambah komentar