Keluaran kernel Linux 5.2

Selepas dua bulan pembangunan, Linus Torvalds diperkenalkan pelepasan kernel Linux 5.2. Antara perubahan yang paling ketara: Mod operasi Ext4 adalah tidak sensitif huruf besar-kecil, panggilan sistem yang berasingan untuk memasang sistem fail, pemacu untuk GPU Mali 4xx/ 6xx/7xx, keupayaan untuk mengendalikan perubahan dalam nilai sysctl dalam program BPF, pemeta peranti modul dm-dust, perlindungan terhadap serangan MDS, sokongan untuk Perisian Tegar Terbuka Bunyi untuk DSP, pengoptimuman prestasi BFQ, membawa subsistem PSI (Maklumat Gerai Tekanan) kepada kemungkinan digunakan dalam Android.

Versi baharu termasuk 15100 pembaikan daripada 1882 pembangun,
saiz tampung - 62 MB (perubahan mempengaruhi 30889 fail, 625094 baris kod telah ditambahkan, 531864 baris telah dipadamkan). Kira-kira 45% daripada semua dibentangkan dalam 5.2
perubahan berkaitan dengan pemacu peranti, kira-kira 21% daripada perubahan adalah
sikap terhadap mengemas kini kod khusus untuk seni bina perkakasan, 12%
berkaitan dengan timbunan rangkaian, 3% kepada sistem fail dan 3% kepada dalaman
subsistem kernel. 12.4% daripada semua perubahan telah disediakan oleh Intel, 6.3% oleh Red Hat, 5.4% oleh Google, 4.0% oleh AMD, 3.1% oleh SUSE, 3% oleh IBM, 2.7% oleh Huawei, 2.7% oleh Linaro, 2.2% oleh ARM , 1.6 % - Oracle.

Utama inovasi:

  • Subsistem cakera, I/O dan sistem fail
    • Ditambah untuk Ext4 menyokong bekerja tanpa membezakan kes aksara dalam nama fail, yang diaktifkan hanya berkaitan dengan direktori kosong individu menggunakan atribut baharu β€œ+F” (EXT4_CASEFOLD_FL). Apabila atribut ini ditetapkan pada direktori, semua operasi dengan fail dan subdirektori di dalamnya akan dijalankan tanpa mengambil kira kes aksara, termasuk kes akan diabaikan semasa mencari dan membuka fail (contohnya, fail Test.txt, test.txt dan test.TXT dalam direktori tersebut akan dianggap sama). Secara lalai, sistem fail terus menjadi sensitif huruf besar-besaran, kecuali direktori dengan atribut "chattr +F";
    • Fungsi untuk memproses aksara UTF-8 dalam nama fail, yang digunakan semasa melakukan perbandingan rentetan dan operasi normalisasi, telah disatukan;
    • XFS menambah infrastruktur untuk pemantauan kesihatan sistem fail dan ioctl baharu untuk menanyakan status kesihatan. Ciri percubaan telah dilaksanakan untuk menyemak kaunter superblock dalam talian.
    • Menambah pemeta peranti modul baharu "dm-habukβ€œ, yang membolehkan anda mensimulasikan penampilan blok buruk pada media atau ralat semasa membaca dari cakera. Modul ini membolehkan anda memudahkan penyahpepijatan dan ujian aplikasi dan pelbagai sistem storan dalam menghadapi kemungkinan kegagalan;
    • Dijalankan Pengoptimuman prestasi yang ketara untuk penjadual I/O BFQ. Dalam keadaan beban I/O yang tinggi, pengoptimuman dibuat benarkan Kurangkan masa operasi seperti melancarkan aplikasi sehingga 80%.
    • Menambahkan satu siri panggilan sistem untuk memasang sistem fail: fsopen(), open_tree(), fspick(), fsmount(), fsconfig() ΠΈ move_mount(). Panggilan sistem ini membolehkan anda memproses secara berasingan peringkat pelekap yang berbeza (memproses superblock, dapatkan maklumat tentang sistem fail, lekapkan, lekapkan pada titik lekap), yang sebelum ini dilakukan menggunakan panggilan sistem mount() biasa. Panggilan berasingan memberikan keupayaan untuk melaksanakan senario pelekap yang lebih kompleks dan melakukan operasi berasingan seperti mengkonfigurasi semula superblock, mendayakan pilihan, menukar titik pelekap dan beralih ke ruang nama yang berbeza. Di samping itu, pemprosesan berasingan membolehkan anda menentukan dengan tepat sebab keluaran kod ralat dan menetapkan berbilang sumber untuk sistem fail berbilang lapisan, seperti tindanan;
    • Operasi baharu IORING_OP_SYNC_FILE_RANGE telah ditambahkan pada antara muka untuk I/O io_uring tak segerak, yang melakukan tindakan yang setara dengan panggilan sistem sync_file_range(), dan juga melaksanakan keupayaan untuk mendaftar eventfd dengan io_uring dan menerima pemberitahuan tentang penyiapan operasi;
    • Untuk sistem fail CIFS, FIEMAP ioctl telah ditambah, menyediakan pemetaan tahap yang cekap, serta sokongan untuk mod SEEK_DATA dan SEEK_HOLE;
    • Dalam subsistem FUSE dicadangkan API untuk mengurus caching data;
    • Btrfs telah mengoptimumkan pelaksanaan qgroups dan meningkatkan kelajuan pelaksanaan fsync untuk fail dengan berbilang pautan keras. Kod semakan integriti data telah dipertingkatkan, yang kini mengambil kira kemungkinan kerosakan pada maklumat dalam RAM sebelum membuang data ke cakera;
    • CEPH menambah sokongan untuk mengeksport syot kilat melalui NFS;
    • Pelaksanaan pemasangan NFSv4 dalam mod "lembut" telah dipertingkatkan (jika ralat berlaku dalam mengakses pelayan dalam mod "lembut", panggilan untuk segera mengembalikan kod ralat, dan dalam kawalan mod "keras" tidak diberikan sehingga FS ketersediaan atau tamat masa dipulihkan). Keluaran baharu menyediakan pengendalian tamat masa yang lebih tepat, pemulihan ranap sistem yang lebih pantas dan pilihan pelekap "softerr" baharu yang membolehkan anda menukar kod ralat (ETIMEDOUT) yang dikembalikan apabila tamat masa berlaku;
    • API nfsdcld, direka untuk menjejaki keadaan klien NFS, membenarkan pelayan NFS menjejaki keadaan klien dengan betul semasa but semula. Oleh itu, daemon nfsdcld kini boleh bertindak sebagai pengendali nfsdcltrack;
    • Untuk AFS tambah emulasi julat bait mengunci dalam fail (Penguncian Julat Bait);
  • Maya dan Keselamatan
    • Kerja telah dilakukan untuk menghapuskan tempat dalam kernel yang membenarkan pelaksanaan kod daripada kawasan ingatan yang boleh ditulis, yang membolehkan menyekat lubang berpotensi yang boleh dieksploitasi semasa serangan;
    • Parameter baris arahan kernel baharu "mitigations=" telah ditambah, menyediakan cara yang mudah untuk mengawal pembolehan teknik tertentu untuk melindungi daripada kelemahan yang berkaitan dengan pelaksanaan spekulatif arahan pada CPU. Melepasi "mitigations=off" melumpuhkan semua kaedah sedia ada, dan mod lalai "mitigations=auto" mendayakan perlindungan tetapi tidak menjejaskan penggunaan Hyper Threading. Mod β€œmitigations=auto,nosmt” juga melumpuhkan Hyper Threading jika diperlukan oleh kaedah perlindungan.
    • Ditambah sokongan untuk tandatangan digital elektronik mengikut GOST R 34.10-2012 (RFC 7091, ISO/IEC 14888-3), dibangunkan Vitaly Chikunov daripada Basalt SPO. Menambah sokongan untuk AES128-CCM pada pelaksanaan TLS asli. Menambah sokongan untuk algoritma AEAD pada modul crypto_simd;
    • Dalam Kconfig tambah bahagian "pengerasan kernel" yang berasingan dengan pilihan untuk meningkatkan perlindungan kernel. Pada masa ini, bahagian baharu hanya mengandungi tetapan untuk mendayakan pemalam meningkatkan semakan GCC;
    • Kod kernel hampir dihantar daripada penyataan kes tidak pecah dalam suis (tanpa kembali atau putus selepas setiap blok kes). Ia kekal untuk membetulkan 32 daripada 2311 kes penggunaan suis sedemikian, selepas itu adalah mungkin untuk menggunakan mod "-Wimplicit-fallthrough" semasa membina kernel;
    • Untuk seni bina PowerPC, sokongan untuk mekanisme perkakasan untuk mengehadkan laluan akses kernel yang tidak diingini kepada data dalam ruang pengguna telah dilaksanakan;
    • Menambahkan kod sekatan serang Kelas MDS (Microarchitectural Data Sampling) dalam pemproses Intel. Anda boleh menyemak sama ada sistem terdedah kepada kelemahan melalui pembolehubah SysFS "/sys/devices/system/cpu/vulnerabilities/mds". Tersedia dua mod perlindungan: penuh, yang memerlukan mikrokod dikemas kini, dan pintasan, yang tidak sepenuhnya menjamin pembersihan penimbal CPU apabila kawalan dipindahkan ke ruang pengguna atau sistem tetamu. Untuk mengawal mod perlindungan, parameter "mds=" telah ditambahkan pada kernel, yang boleh mengambil nilai "penuh", "penuh,nosmt" (+ lumpuhkan Hyper-Threads) dan "mati";
    • Pada sistem x86-64, perlindungan "halaman pengawal tindanan" telah ditambah untuk IRQ, mekanisme penyahpepijatan dan pengendali pengecualian, yang intipatinya ialah penggantian halaman memori di sempadan dengan tindanan, mengakses yang membawa kepada penjanaan pengecualian (halaman-kesalahan);
    • Menambahkan tetapan sysctl vm.unprivileged_userfaultfd, yang mengawal keupayaan proses unprivileged untuk menggunakan panggilan sistem userfaultfd();
  • Subsistem rangkaian
    • Ditambah Sokongan get laluan IPv6 untuk laluan IPv4. Sebagai contoh, anda kini boleh menentukan peraturan penghalaan seperti "ip ro add 172.16.1.0/24 melalui inet6 2001:db8::1 dev eth0";
    • Untuk ICMPv6, ioctl memanggil icmp_echo_ignore_anycast dan icmp_echo_ignore_multicast dilaksanakan untuk mengabaikan ICMP ECHO untuk anycast dan
      alamat multicast. Ditambah keupayaan untuk mengehadkan keamatan pemprosesan paket ICMPv6;

    • Untuk protokol mesh BATMAN (Better Approach To Mobile Adhoc Networking), yang membenarkan penciptaan rangkaian terdesentralisasi di mana setiap nod disambungkan melalui nod jiran, tambah sokongan untuk penyiaran daripada multicast ke unicast, serta keupayaan untuk mengawal melalui sysfs;
    • Dalam ethtool tambah parameter Pautan Pantas Turun baharu, yang membolehkan anda mengurangkan masa yang diperlukan untuk menerima maklumat tentang acara turun pautan untuk 1000BaseT (dalam keadaan biasa kelewatan adalah sehingga 750ms);
    • Muncul peluang mengikat terowong Foo-Over-UDP ke alamat tertentu, antara muka rangkaian atau soket (sebelum ini mengikat hanya dilakukan oleh topeng biasa);
    • Dalam timbunan wayarles terjamin kemungkinan melaksanakan pengendali
      OWE (Opportunistic Wireless Encryption) dalam ruang pengguna;

    • Dalam Netfilter, sokongan untuk keluarga alamat inet telah ditambahkan pada rantai nat (contohnya, anda kini boleh menggunakan satu peraturan terjemahan untuk memproses ipv4 dan ipv6, tanpa memisahkan peraturan untuk ipv4 dan ipv6);
    • Dalam netlink tambah rejim itu ketat untuk pengesahan ketat ketepatan semua mesej dan atribut, di mana saiz atribut yang dijangkakan tidak dibenarkan melebihi dan penambahan data tambahan pada penghujung mesej adalah dilarang;
  • Perkhidmatan memori dan sistem
    • Bendera CLONE_PIDFD telah ditambahkan pada panggilan sistem klon(), apabila dinyatakan, deskriptor fail "pidfd" yang dikenal pasti dengan proses anak yang dicipta dikembalikan kepada proses induk. Deskriptor fail ini, sebagai contoh, boleh digunakan untuk menghantar isyarat tanpa rasa takut menghadapi keadaan perlumbaan (sejurus selepas menghantar isyarat, PID sasaran mungkin dibebaskan kerana penamatan proses dan diduduki oleh proses lain);
    • Untuk versi kedua cgroups, fungsi pengawal penyejuk beku telah ditambahkan, yang dengannya anda boleh menghentikan kerja dalam cgroup dan mengosongkan sementara beberapa sumber (CPU, I/O, dan mungkin juga memori) untuk melaksanakan tugas lain. Pengurusan dilakukan melalui fail kawalan cgroup.freeze dan cgroup.events dalam pepohon cgroup. Entri 1 dalam cgroup.freeze membekukan proses dalam cgroup semasa dan semua kumpulan kanak-kanak. Memandangkan pembekuan mengambil sedikit masa, fail cgroup.events tambahan disediakan yang melaluinya anda boleh mengetahui tentang penyiapan operasi;
    • Terjamin eksport atribut memori yang dilampirkan pada setiap nod dalam sysfs, yang membolehkan anda menentukan dari ruang pengguna sifat pemprosesan bank memori dalam sistem dengan memori heterogen;
    • Subsistem PSI (Maklumat Gerai Tekanan) telah dipertingkatkan, yang membolehkan anda menganalisis maklumat tentang masa menunggu untuk menerima pelbagai sumber (CPU, memori, I/O) untuk tugas atau set proses tertentu dalam kumpulan c. Menggunakan PSI, pengendali ruang pengguna boleh menganggarkan tahap beban sistem dan corak kelembapan dengan lebih tepat berbanding Purata Beban. Versi baharu menyediakan sokongan untuk menetapkan ambang sensitiviti dan keupayaan untuk menggunakan panggilan tinjauan pendapat() untuk menerima pemberitahuan bahawa ambang yang ditetapkan telah dicetuskan untuk tempoh masa tertentu. Ciri ini membolehkan Android memantau kekurangan memori pada peringkat awal, mengenal pasti punca masalah dan menamatkan aplikasi yang tidak penting tanpa menyebabkan masalah yang ketara kepada pengguna. Apabila ujian tekanan, alat pemantauan penggunaan memori berasaskan PSI menunjukkan 10 kali lebih sedikit positif palsu berbanding dengan statistik vtekanan;
    • Kod untuk menyemak program BPF telah dioptimumkan, yang membolehkan menyemak sehingga 20 kali lebih cepat untuk program besar. Pengoptimuman membolehkan untuk meningkatkan had saiz program BPF daripada 4096 kepada sejuta arahan;
    • Untuk program BPF diberikan keupayaan untuk mengakses data global, yang membolehkan anda menentukan pembolehubah global dan pemalar dalam program;
    • Ditambah API, yang membolehkan anda mengawal perubahan dalam parameter sysctl daripada program BPF;
    • Untuk seni bina MIPS32, pengkompil JIT untuk mesin maya eBPF telah dilaksanakan;
    • Untuk seni bina PowerPC 32-bit, sokongan untuk alat penyahpepijat KASan (Kernel address sanitizer) telah ditambahkan, yang membantu mengenal pasti ralat semasa bekerja dengan memori;
    • Pada sistem x86-64, sekatan untuk meletakkan pembuangan keadaan semasa ranap kernel (crash-dump) dalam kawasan memori melebihi 896MB telah dialih keluar;
    • Untuk seni bina s390, sokongan untuk rawak ruang alamat kernel (KASLR) dan keupayaan untuk mengesahkan tandatangan digital apabila memuatkan kernel melalui kexec_file_load() dilaksanakan;
    • Untuk seni bina PA-RISC, tambah sokongan untuk penyahpepijat kernel (KGDB), tanda lompat dan kprobes;
  • ΠžΠ±ΠΎΡ€ΡƒΠ΄ΠΎΠ²Π°Π½ΠΈΠ΅
    • Termasuk pemandu Lima untuk GPU Mali 400/450, digunakan dalam banyak cip lama berdasarkan seni bina ARM. Untuk GPU Mali yang lebih baharu, pemacu Panfrost telah ditambah, menyokong cip berdasarkan arkitek mikro Midgard (Mali-T6xx, Mali-T7xx, Mali-T8xx) dan Bifrost (Mali G3x, G5x, G7x);
    • Menambah sokongan untuk peranti audio menggunakan perisian tegar terbuka Firmware Terbuka Bunyi (SOF). Walaupun terdapat pemacu terbuka, kod perisian tegar untuk cip bunyi masih kekal tertutup dan dibekalkan dalam bentuk binari. Projek Perisian Tegar Terbuka Bunyi telah dibangunkan oleh Intel untuk mencipta perisian tegar terbuka untuk cip DSP yang berkaitan dengan pemprosesan audio (Google kemudiannya turut menyertai pembangunan). Pada masa ini, projek itu telah pun menyediakan penemuan perisian tegar untuk cip bunyi platform Intel Baytrail, CherryTrail, Broadwell, ApolloLake, GeminiLake, CannonLake dan IceLake;
    • Pemacu Intel DRM (i915) menambah sokongan untuk cip
      Elkhartlake (Gen11). Menambahkan ID PCI untuk cip Comet Lake (Gen9). Sokongan untuk cip Icelake telah distabilkan, yang mana pengecam peranti PCI tambahan juga telah ditambah.
      Dihidupkan
      mod pensuisan tak segerak antara dua penimbal dalam memori video (async flip) apabila melakukan operasi tulis melalui mmio, yang meningkatkan prestasi beberapa aplikasi 3D dengan ketara (contohnya, prestasi dalam ujian Ribut Ais 3DMark meningkat sebanyak 300-400%). Menambah sokongan teknologi HDCP2.2 (Perlindungan Kandungan Digital Lebar Jalur Tinggi) untuk menyulitkan isyarat video yang dihantar melalui HDMI;

    • Pemacu amdgpu untuk GPU Vega20 tambah sokongan untuk RAS (Reliability, Availability, Serviceability) dan sokongan percubaan untuk subsistem SMU 11, yang menggantikan teknologi Powerplay. Untuk GPU Vega12 tambah sokongan untuk mod BACO (Bus Active, Chip Off). Menambahkan sokongan awal untuk XGMI, bas berkelajuan tinggi (PCIe 4.0) untuk sambungan GPU. Menambahkan pengecam yang tiada untuk kad berdasarkan GPU Polaris10 pada pemacu amdkfd;
    • Pemacu Nouveau telah menambah sokongan untuk papan berdasarkan cipset NVIDIA Turing 117 (TU117, digunakan dalam GeForce GTX 1650). DALAM
      kconfig tambah tetapan untuk melumpuhkan fungsi usang yang tidak lagi digunakan dalam keluaran semasa libdrm;

    • Sokongan untuk objek penyegerakan "garis masa" telah ditambahkan pada API DRM dan pemacu amdgpu, membolehkan anda melakukannya tanpa sekatan klasik.
    • Pemacu vboxvideo untuk GPU maya VirtualBox telah dipindahkan dari cawangan pementasan ke struktur utama;
    • Menambah pemacu aspeed untuk cip GFX SoC ASPEED;
    • Sokongan tambahan untuk ARM SoC dan Intel Agilex (SoCFPGA), NXP i.MX8MM, Allwinner (RerVision H3-DVK (H3), Oceanic 5205 5inMFD, , Beelink GS2 (H6), Orange Pi 3 (H6)), Rockchip (Orange Pi ) papan RK3399, Nanopi NEO4, Veyron-Mighty Chromebook), Amlogic: SEI Robotics SEI510,
      ST Micro (stm32mp157a, stm32mp157c), NXP (
      Eckelmann ci4x10 (i.MX6DL),

      i.MX8MM EVK (i.MX8MM),

      ZII i.MX7 RPU2 (i.MX7),

      ZII SPB4 (VF610),

      Zii Ultra (i.MX8M),

      TQ TQMa7S (i.MX7Solo),

      TQ TQMa7D (i.MX7Dual),

      Kobo Aura (i.MX50),

      Menlosystems M53 (i.MX53)), NVIDIA Jetson Nano (Tegra T210).

Pada masa yang sama, Yayasan Perisian Percuma Amerika Latin terbentuk
pilihan kernel percuma sepenuhnya 5.2 - Linux-percuma 5.2-gnu, dibersihkan daripada perisian tegar dan elemen pemacu yang mengandungi komponen bukan bebas atau bahagian kod, yang skopnya dihadkan oleh pengilang. Keluaran baharu termasuk memuat naik fail
Perisian Tegar Terbuka Bunyi. Memuatkan gumpalan dalam pemandu dilumpuhkan
mt7615, rtw88, rtw8822b, rtw8822c, btmtksdio, iqs5xx, ishtp dan ucsi_ccg. Kod pembersihan gumpalan dalam pemacu dan subsistem ixp4xx, imx-sdma, amdgpu, nouveau dan goya, serta dalam dokumentasi kod mikro, telah dikemas kini. Berhenti membersihkan gumpalan pada pemandu r8822be kerana ia telah ditanggalkan.

Sumber: opennet.ru

Tambah komen