Keluaran kernel Linux 5.7

Selepas dua bulan pembangunan, Linus Torvalds diperkenalkan pelepasan kernel Linux 5.7. Antara perubahan yang paling ketara: pelaksanaan baharu sistem fail exFAT, modul bareudp untuk mencipta terowong UDP, perlindungan berdasarkan pengesahan penunjuk untuk ARM64, keupayaan untuk melampirkan program BPF kepada pengendali LSM, pelaksanaan baharu Curve25519, pembahagian- pengesan kunci, keserasian BPF dengan PREEMPT_RT, mengalih keluar had pada saiz baris 80 aksara dalam kod, mengambil kira penunjuk suhu CPU dalam penjadual tugas, keupayaan untuk menggunakan klon() untuk melahirkan proses dalam cgroup lain, perlindungan terhadap penulisan ke ingatan menggunakan userfaultfd.

Versi baharu termasuk 15033 pembaikan daripada 1961 pembangun,
saiz tampung - 39 MB (perubahan mempengaruhi 11590 fail, menambah 570560 baris kod,
297401 baris dialih keluar). Kira-kira 41% daripada semua dibentangkan dalam 5.7
perubahan berkaitan dengan pemacu peranti, kira-kira 16% daripada perubahan adalah
sikap terhadap mengemas kini kod khusus untuk seni bina perkakasan, 13%
berkaitan dengan timbunan rangkaian, 4% kepada sistem fail dan 4% kepada dalaman
subsistem kernel.

Utama inovasi:

  • Subsistem cakera, I/O dan sistem fail
    • Menambah pelaksanaan pemacu exFAT baharu, diasaskan berdasarkan asas kod "sdfat" (2.x) semasa yang dibangunkan oleh Samsung untuk telefon pintar Androidnya. Pemacu yang sebelum ini ditambahkan pada kernel adalah berdasarkan kod Samsung warisan (versi 1.2.9) dan kira-kira 10% di belakang pemacu baharu dalam prestasi. Mari kita ingat bahawa menambah sokongan exFAT pada kernel menjadi mungkin selepas Microsoft ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π»Π° spesifikasi awam dan menjadikan paten exFAT tersedia untuk kegunaan bebas royalti di Linux.
    • Btrfs melaksanakan perintah ioctl() baharu - BTRFS_IOC_SNAP_DESTROY_V2, yang membolehkan anda memadamkan subseksyen dengan pengecamnya. Sokongan penuh untuk pengklonan takat sebaris disediakan. Bilangan titik pembatalan untuk operasi pengagihan semula telah diperluaskan, yang telah mengurangkan masa menunggu yang lama apabila melaksanakan perintah 'pembatalan baki'. Penentuan pautan balik ke takat telah dipercepatkan (contohnya, masa pelaksanaan skrip ujian telah berkurangan daripada sejam kepada beberapa minit). Menambah keupayaan untuk melampirkan takat fail pada setiap inod pokok. Skim penyekatan yang digunakan semasa menulis kepada subpartition dan apabila mengecualikan NOCOW telah direka bentuk semula. Peningkatan kecekapan pelaksanaan fsync untuk julat.
    • XFS telah menambah baik pemeriksaan metadata dan fsck untuk partition aktif. Perpustakaan telah dicadangkan untuk membina semula struktur btree, yang pada masa hadapan akan digunakan untuk mengolah semula xfs_repair dan melaksanakan kemungkinan pemulihan tanpa menyahlekap partition.
    • Sokongan eksperimen untuk meletakkan partition swap dalam storan SMB3 telah ditambahkan pada CIFS. Melaksanakan sambungan POSIX kepada readdir, ditakrifkan dalam spesifikasi SMB3.1.1. Prestasi tulis yang lebih baik untuk halaman 64KB apabila cache=mod ketat didayakan dan versi protokol 2.1+ digunakan.
    • FS EXT4 telah dipindahkan daripada bmap dan iopoll kepada menggunakan iomap.
    • F2FS menyediakan sokongan pilihan untuk pemampatan data menggunakan algoritma zstd. Secara lalai, algoritma LZ4 digunakan untuk pemampatan. Menambah sokongan untuk arahan "chattr -c commit". Paparan masa pemasangan disediakan. Menambah ioctl F2FS_IOC_GET_COMPRESS_BLOCKS untuk mendapatkan maklumat tentang bilangan blok termampat. Menambahkan output data mampatan melalui statx.
    • Sistem fail Ceph telah menambah keupayaan untuk melaksanakan penciptaan dan operasi pemadaman fail secara tempatan (nyahpaut) tanpa menunggu respons daripada pelayan (berfungsi dalam mod tak segerak). Perubahan itu, sebagai contoh, boleh meningkatkan prestasi dengan ketara apabila menjalankan utiliti rsync.
    • Keupayaan untuk menggunakan virtiofs sebagai sistem fail peringkat atas telah ditambahkan pada OVERLAYFS.
    • Ditulis semula kod lintasan laluan dalam VFS, kod penghuraian pautan simbolik telah diolah semula dan lintasan titik lekap telah disatukan.
    • Dalam subsistem scsi kepada pengguna yang tidak mempunyai hak istimewa dibenarkan pelaksanaan arahan ZBC.
    • Dalam dm_writecache dilaksanakan keupayaan untuk mengosongkan cache secara beransur-ansur berdasarkan parameter max_age, yang menetapkan jangka hayat maksimum blok.
    • Dalam dm_integrity tambah sokongan untuk operasi "buang".
    • Dalam null_blk tambah sokongan untuk penggantian ralat untuk mensimulasikan kegagalan semasa ujian.
    • Ditambah keupayaan untuk menghantar pemberitahuan udev tentang perubahan saiz peranti sekat.
  • Subsistem rangkaian
    • Netfilter disertakan perubahan, mempercepatkan pemprosesan senarai padanan besar (set nftables) dengan ketara, yang memerlukan pemeriksaan gabungan subnet, port rangkaian, protokol dan alamat MAC.
      Pengoptimuman diperkenalkan ke dalam modul nft_set_pipapo (PIle PAcket POlicies), yang menyelesaikan masalah memadankan kandungan paket dengan julat keadaan medan sewenang-wenang yang digunakan dalam peraturan penapisan, seperti julat IP dan port rangkaian (nft_set_rbtree dan nft_set_hash memanipulasi padanan selang dan pantulan langsung nilai ). Versi pipapo yang divektorkan menggunakan arahan AVX256 2-bit pada sistem dengan pemproses AMD Epyc 7402 menunjukkan peningkatan prestasi 420% apabila menghuraikan 30 ribu rekod termasuk gabungan port-protokol. Peningkatan apabila membandingkan gabungan subnet dan nombor port semasa menghuraikan 1000 rekod ialah 87% untuk IPv4 dan 128% untuk IPv6.

    • Ditambah modul bareudp, yang membolehkan anda merangkum pelbagai protokol L3, seperti MPLS, IP dan NSH, ke dalam terowong UDP.
    • Penyepaduan komponen 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 terikat pada alamat IP yang berbeza, telah diteruskan.
    • Ditambah sokongan untuk mekanisme pecutan perkakasan untuk merangkum bingkai Ethernet dalam 802.11 (Wi-Fi).
    • Apabila mengalihkan peranti dari satu ruang nama rangkaian ke ruang nama yang lain, hak akses dan pemilikan fail yang sepadan dalam sysfs dilaraskan.
    • Menambahkan keupayaan untuk menggunakan bendera SO_BINDTODEVICE untuk pengguna bukan akar.
    • Bahagian ketiga patch telah diterima, menukar kit alat ethtool daripada ioctl() kepada menggunakan antara muka netlink. Antara muka baharu memudahkan untuk menambah sambungan, menambah baik pengendalian ralat, membenarkan pemberitahuan dihantar apabila keadaan berubah, memudahkan interaksi antara kernel dan ruang pengguna dan mengurangkan bilangan senarai bernama yang perlu disegerakkan.
    • Menambah keupayaan untuk menggunakan pemecut perkakasan khas untuk melaksanakan operasi penjejakan sambungan.
    • Dalam penapis bersih tambah cangkuk untuk menyambung pengelas paket keluar (keluar), yang melengkapkan cangkuk yang sedia ada sebelum ini untuk paket masuk (masuk).
  • Maya dan Keselamatan
    • Menambah pelaksanaan perkakasan pengesahan penunjuk (Pengesahan Penunjuk), yang menggunakan arahan CPU ARM64 khusus untuk melindungi daripada serangan menggunakan teknik pengaturcaraan berorientasikan kembali (ROP), di mana penyerang tidak cuba meletakkan kodnya dalam ingatan, tetapi beroperasi pada kepingan arahan mesin yang sudah tersedia dalam perpustakaan yang dimuatkan, berakhir dengan arahan pemulangan kawalan. Keselamatan bergantung kepada menggunakan tandatangan digital untuk mengesahkan alamat pemulangan di peringkat kernel. Tandatangan disimpan dalam bit atas penuding itu sendiri yang tidak digunakan. Tidak seperti pelaksanaan perisian, penciptaan dan pengesahan tandatangan digital dijalankan menggunakan arahan CPU khas.
    • Ditambah keupayaan untuk melindungi kawasan memori daripada menulis menggunakan panggilan sistem userfaultfd(), direka untuk mengendalikan kerosakan halaman (akses kepada halaman memori yang tidak diperuntukkan) dalam ruang pengguna. Ideanya adalah untuk menggunakan userfaultfd() kedua-duanya untuk mengesan pelanggaran akses ke halaman yang ditandakan sebagai dilindungi tulis dan untuk memanggil pengendali yang boleh bertindak balas kepada percubaan menulis sedemikian (contohnya, untuk mengendalikan perubahan semasa penciptaan syot kilat langsung proses berjalan, nyatakan tangkap apabila lambakan memori ke cakera, melaksanakan memori kongsi, menjejaki perubahan dalam ingatan). Kefungsian bersamaan menggunakan mprotect() bersama-sama dengan pengendali isyarat SIGSEGV, tetapi ia berfungsi dengan lebih pantas.
    • SELinux telah menghentikan parameter "checkreqprot", yang membolehkan anda melumpuhkan semakan perlindungan memori semasa memproses peraturan (membenarkan penggunaan kawasan memori boleh laku, tanpa mengira peraturan yang dinyatakan dalam peraturan). Symlink Kernfs dibenarkan untuk mewarisi konteks direktori induknya.
    • Struktur dihidupkan modul KRSI, yang membolehkan anda melampirkan program BPF pada mana-mana cangkuk LSM dalam kernel. Perubahan itu membolehkan anda mencipta modul LSM (Modul Keselamatan Linux) dalam bentuk program BPF untuk menyelesaikan masalah audit dan kawalan akses mandatori.
    • Dijalankan Mengoptimumkan prestasi /dev/random dengan menggabungkan nilai CRNG dan bukannya memanggil arahan RNG secara individu. Peningkatan prestasi getrandom dan /dev/random pada sistem ARM64 yang menyediakan arahan RNG.
    • Pelaksanaan lengkung eliptik Lengkung25519 diganti untuk pilihan daripada perpustakaan HACL, untuk yang mana ditahan bukti matematik pengesahan kebolehpercayaan formal.
    • Ditambah mekanisme untuk memaklumkan tentang halaman memori percuma. Menggunakan mekanisme ini, sistem tetamu boleh menghantar maklumat tentang halaman yang tidak lagi digunakan kepada sistem hos dan hos boleh mengambil semula data halaman.
    • Dalam vfio/pci tambah sokongan untuk SR-IOV (Single-Root I/O Virtualization).
  • Perkhidmatan memori dan sistem
    • Daripada 80 hingga 100 aksara meningkat had pada panjang baris maksimum dalam teks sumber. Pada masa yang sama, pembangun masih disyorkan untuk kekal dalam 80 aksara setiap baris, tetapi ini bukan lagi had yang sukar. Selain itu, melebihi had saiz baris kini akan menghasilkan amaran binaan hanya jika checkpatch dijalankan dengan pilihan '--strict'. Perubahan itu akan memungkinkan untuk tidak mengganggu pemaju dengan manipulasi dengan ruang dan berasa lebih bebas apabila menjajarkan kod, serta akan menghalang putus talian yang berlebihan, mengganggu pemahaman kod dan carian.
    • Ditambah sokongan untuk mod but campuran EFI, yang membolehkan anda memuatkan kernel 64-bit daripada perisian tegar 32-bit yang dijalankan pada CPU 64-bit tanpa menggunakan pemuat but khusus.
    • Termasuk sistem untuk mengenal pasti dan menyahpepijat kunci belah (β€œkunci belah"), yang berlaku apabila mengakses data tidak sejajar dalam ingatan kerana fakta bahawa apabila melaksanakan arahan atom, data melintasi dua baris cache CPU. Penyekatan sedemikian menghasilkan pencapaian prestasi yang ketara (1000 kitaran lebih perlahan daripada operasi atom pada data yang jatuh ke dalam satu baris cache). Bergantung pada parameter but "split_lock_detect", kernel boleh mengesan kunci tersebut dengan cepat dan mengeluarkan amaran atau menghantar isyarat SIGBUS kepada aplikasi yang menyebabkan kunci itu.
    • Penjadual tugas menyediakan pengesanan penderia suhu (Tekanan Terma) dan dilaksanakan dengan mengambil kira terlalu panas semasa meletakkan tugas. Menggunakan statistik yang disediakan, gabenor haba boleh melaraskan kekerapan CPU maksimum apabila terlalu panas, dan penjadual tugas kini mengambil kira pengurangan kuasa pengkomputeran disebabkan pengurangan frekuensi sedemikian apabila menjadualkan tugas untuk dijalankan (sebelum ini, penjadual bertindak balas terhadap perubahan dalam kekerapan dengan kelewatan tertentu, untuk beberapa waktu membuat keputusan berdasarkan andaian melambung tentang sumber pengkomputeran yang tersedia).
    • Penjadual tugas termasuk penunjuk invarian penjejakan beban, membolehkan anda menganggarkan beban dengan betul, tanpa mengira kekerapan operasi CPU semasa. Perubahan itu membolehkan anda meramalkan kelakuan tugas dengan lebih tepat di bawah keadaan perubahan dinamik dalam voltan dan kekerapan CPU. Sebagai contoh, tugasan yang menggunakan 1/3 daripada sumber CPU pada 1000 MHz akan menggunakan 2/3 daripada sumber apabila frekuensi menurun kepada 500 MHz, yang sebelum ini mencipta andaian palsu bahawa ia berjalan pada kapasiti penuh (iaitu tugasan muncul lebih besar kepada penjadual hanya dengan mengurangkan kekerapan, yang membawa kepada keputusan yang salah dibuat dalam gabenor cpufreq schedutil).
    • Pemacu keadaan P Intel, yang bertanggungjawab untuk memilih mod prestasi, telah ditukar untuk digunakan jadual waktu.
    • Keupayaan untuk menggunakan subsistem BPF apabila kernel berjalan dalam masa nyata (PREEMPT_RT) telah dilaksanakan. Sebelum ini, apabila PREEMPT_RT didayakan, BPF dikehendaki dilumpuhkan.
    • Satu jenis program BPF baharu telah ditambah - BPF_MODIFY_RETURN, yang boleh dilampirkan pada fungsi dalam kernel dan menukar nilai yang dikembalikan oleh fungsi ini.
    • Ditambah peluang Menggunakan panggilan sistem clone3() untuk mencipta proses dalam cgroup yang berbeza daripada cgroup induk, membenarkan proses induk menggunakan sekatan dan mendayakan perakaunan serta-merta selepas menghasilkan proses atau rangkaian baharu. Sebagai contoh, pengurus perkhidmatan boleh secara langsung memperuntukkan perkhidmatan baharu untuk memisahkan cgroup, dan proses baharu, apabila diletakkan dalam cgroup "beku", akan dihentikan serta-merta.
    • dalam Kbuild tambah sokongan untuk pembolehubah persekitaran "LLVM=1" untuk beralih kepada kit alat Clang/LLVM semasa membina kernel. Keperluan untuk versi binutils telah dinaikkan (2.23).
    • Bahagian /sys/kernel/debug/kunit/ telah ditambahkan pada debugfs dengan keputusan ujian kunit.
    • Menambahkan parameter but kernel pm_debug_messages (bersamaan dengan /sys/power/pm_debug_messages), yang membolehkan output maklumat nyahpepijat tentang pengendalian sistem pengurusan kuasa (berguna semasa menyahpepijat masalah dengan hibernasi dan mod siap sedia).
    • Ke antara muka I/O tak segerak io_uring sokongan ditambah sambatan () ΠΈ pemilihan penimbal atom.
    • Pemprofilan cgroup yang dipertingkat menggunakan kit alat perf. Sebelum ini, perf hanya boleh memprofilkan tugasan dalam cgroup tertentu dan tidak dapat mengetahui cgroup mana yang dimiliki oleh sampel semasa. perf kini mendapatkan semula maklumat cgroup untuk setiap sampel, membolehkan anda membuat profil lebih daripada satu cgroup dan menggunakan pengisihan mengikut
      cgroup dalam laporan.

    • cgroupfs, pseudo-FS untuk mengurus cgroup, telah menambah sokongan untuk atribut lanjutan (xattrs), yang dengannya, sebagai contoh, anda boleh meninggalkan maklumat tambahan untuk pengendali dalam ruang pengguna.
    • Dalam pengawal memori cgroup tambahdan sokongan untuk perlindungan rekursif nilai "memory.low", yang mengawal jumlah minimum RAM yang diberikan kepada ahli kumpulan. Apabila memasang hierarki cgroup dengan pilihan "memory_recursiveprot", nilai "memory.low" yang ditetapkan untuk nod bawah akan diedarkan secara automatik kepada semua nod anak.
    • Ditambah Rangka kerja Uacce (Unified/User-space-access-intended Accelerator Framework) untuk berkongsi alamat maya (SVA, Shared Virtual Addressing) antara CPU dan peranti persisian, membenarkan pemecut perkakasan mengakses struktur data dalam CPU utama.
  • Seni bina perkakasan
    • Untuk seni bina ARM, keupayaan untuk ingatan hot-fetch dilaksanakan.
    • Untuk seni bina RISC-V, sokongan untuk palam panas dan penyingkiran CPU (palam panas CPU) telah ditambah. Untuk RISC-V 32-bit, eBPF JIT dilaksanakan.
    • Keupayaan untuk menggunakan sistem ARM 32-bit untuk menjalankan persekitaran tetamu KVM telah dialih keluar.
    • Mengalih keluar pelaksanaan NUMA "dummy" untuk seni bina s390, yang mana tiada kes penggunaan ditemui untuk mencapai peningkatan prestasi.
    • Untuk ARM64, sokongan tambahan untuk sambungan AMU (Unit Pemantau Aktiviti), yang ditakrifkan dalam ARMv8.4 dan menyediakan pembilang prestasi yang digunakan untuk mengira faktor pembetulan penskalaan frekuensi dalam penjadual tugas.
  • ΠžΠ±ΠΎΡ€ΡƒΠ΄ΠΎΠ²Π°Π½ΠΈΠ΅
    • Ditambah sokongan untuk peranti vDPA yang menggunakan saluran pertukaran data yang mematuhi spesifikasi virtio. Peranti vDPA boleh sama ada peralatan yang disambungkan secara fizikal atau peranti maya yang dicontohi perisian.
    • Dalam subsistem GPIO muncul arahan ioctl() baharu untuk memantau perubahan, membolehkan anda memaklumkan proses tentang perubahan dalam keadaan mana-mana talian GPIO. Sebagai contoh menggunakan arahan baharu dicadangkan utiliti gpio-watch.
    • Dalam pemacu DRM i915 untuk kad video Intel termasuk sokongan lalai untuk cip Tigerlake (β€œGen12”) dan menambah sokongan awal untuk kawalan lampu latar OLED. Sokongan yang lebih baik untuk Tasik Ais, Tasik Elkhart, Baytrail dan kerepek Haswell.
    • Dalam pemandu amdgpu tambah keupayaan untuk memuatkan perisian tegar ke dalam cip USBC untuk ASIC. Sokongan yang lebih baik untuk cip AMD Ryzen 4000 "Renoir". Kini terdapat sokongan untuk mengawal panel OLED. Disediakan paparan status perisian tegar dalam debugfs.
    • Keupayaan untuk menggunakan OpenGL 4 dalam sistem tetamu telah ditambahkan pada pemacu DRM vmwgfx untuk sistem virtualisasi VMware (sebelum ini OpenGL 3.3 disokong).
    • Menambah maklumat pemacu DRM baharu untuk sistem paparan platform TI Keystone.
    • Pemacu tambahan untuk panel LCD: Feixin K101 IM2BA02, Samsung s6e88a0-ams452ef01, Novatek NT35510, Elida KD35T133, EDT, NewEast Optoelektronik WJFH116008A, Rocktech RK101II01D350RD, Rocktech RK54004IIXNUMXD-XNUMXCTXNUMX
    • Kepada sistem pengurusan kuasa tambah sokongan untuk platform Intel Jasper Lake (JSL) berasaskan Atom.
    • Sokongan tambahan untuk komputer riba Pinebook Pro berdasarkan Rockchip RK3399, tablet dan telefon pintar Pine64 PineTab PinePhone berdasarkan Allwinner A64.
    • Menambah sokongan untuk codec dan cip audio baharu:
      Amlogic AIU, Amlogic T9015, Texas Instruments TLV320ADCX140, Realtek RT5682, ALC245, Broadcom BCM63XX I2S, Maxim MAX98360A, Presonus Studio 1810c, MOTU MicroBook IIc.

    • Sokongan tambahan untuk papan dan platform ARM Qualcomm Snapdragon 865 (SM8250), IPQ6018, NXP i.MX8M Plus, Kontron β€œsl28”, 11 pilihan papan i.MX6 TechNexion Pico, tiga pilihan Toradex Colibri baharu, Samsung S7710 Galaxy Xcover 2 berdasarkan ST -Ericsson u8500, DH Electronics DHCOM SoM dan PDK2, Renesas M3ULCB, Hoperun HiHope, Linutronix Testbox v2, PocketBook Touch Lux 3.

Sumber: opennet.ru

Tambah komen