Rilis kernel Linux 5.2

Setelah dua bulan pengembangan, Linus Torvalds diperkenalkan rilis kernel Linux 5.2. Di antara perubahan yang paling mencolok: Mode operasi Ext4 tidak peka huruf besar-kecil, sistem terpisah memerlukan pemasangan sistem file, driver untuk GPU Mali 4xx/ 6xx/7xx, kemampuan untuk menangani perubahan nilai sysctl dalam program BPF, pemetaan perangkat modul dm-dust, perlindungan terhadap serangan MDS, dukungan Sound Open Firmware untuk DSP, optimalisasi kinerja BFQ, menjadikan subsistem PSI (Pressure Stall Information) dapat digunakan di Android.

Versi baru mencakup 15100 perbaikan dari 1882 pengembang,
ukuran tambalan - 62 MB (perubahan memengaruhi 30889 file, 625094 baris kode ditambahkan, 531864 baris dihapus). Sekitar 45% dari semuanya disajikan di 5.2
perubahan terkait dengan driver perangkat, sekitar 21% perubahannya terkait
sikap terhadap pembaruan kode khusus untuk arsitektur perangkat keras, 12%
terkait dengan tumpukan jaringan, 3% ke sistem file dan 3% ke internal
subsistem kernel. 12.4% dari seluruh perubahan disiapkan 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 % - Peramal.

Utama inovasi:

  • Subsistem Disk, I/O dan Sistem File
    • Ditambahkan untuk Ext4 mendukung bekerja tanpa membedakan huruf besar-kecil dalam nama file, yang diaktifkan hanya dalam kaitannya dengan direktori kosong individual menggunakan atribut baru “+F” (EXT4_CASEFOLD_FL). Ketika atribut ini disetel pada direktori, semua operasi dengan file dan subdirektori di dalamnya akan dilakukan tanpa memperhitungkan huruf besar-kecil, termasuk huruf besar-kecil akan diabaikan saat mencari dan membuka file (misalnya, file Test.txt, test.txt dan test.TXT di direktori tersebut akan dianggap sama). Secara default, sistem file tetap peka huruf besar-kecil, dengan pengecualian direktori dengan atribut “chattr +F”;
    • Fungsi untuk memproses karakter UTF-8 dalam nama file, yang digunakan saat melakukan operasi perbandingan string dan normalisasi, telah disatukan;
    • XFS menambahkan infrastruktur untuk pemantauan kesehatan sistem file dan ioctl baru untuk menanyakan status kesehatan. Fitur eksperimental telah diterapkan untuk memeriksa counter superblock secara online.
    • Menambahkan modul baru pemeta perangkat "dm-debu“, yang memungkinkan Anda untuk mensimulasikan tampilan blok buruk pada media atau kesalahan saat membaca dari disk. Modul ini memungkinkan Anda menyederhanakan proses debug dan pengujian aplikasi dan berbagai sistem penyimpanan jika terjadi kemungkinan kegagalan;
    • Dilakukan Optimalisasi kinerja yang signifikan untuk penjadwal I/O BFQ. Dalam kondisi beban I/O tinggi, optimasi dilakukan mengizinkan Mengurangi waktu pengoperasian seperti meluncurkan aplikasi hingga 80%.
    • Menambahkan serangkaian panggilan sistem untuk memasang sistem file: fsopen(), pohon_terbuka(), fspick(), fsmount(), fsconfig() и pindahkan_mount(). Panggilan sistem ini memungkinkan Anda memproses berbagai tahapan pemasangan secara terpisah (memproses superblock, mendapatkan informasi tentang sistem file, memasang, melampirkan ke titik pemasangan), yang sebelumnya dilakukan menggunakan panggilan sistem mount() yang umum. Panggilan terpisah memberikan kemampuan untuk melakukan skenario pemasangan yang lebih kompleks dan melakukan operasi terpisah seperti mengkonfigurasi ulang superblock, mengaktifkan opsi, mengubah titik pemasangan, dan berpindah ke namespace yang berbeda. Selain itu, pemrosesan terpisah memungkinkan Anda menentukan secara akurat alasan keluaran kode kesalahan dan menyetel berbagai sumber untuk sistem file multi-lapisan, seperti overlayfs;
    • Operasi baru IORING_OP_SYNC_FILE_RANGE telah ditambahkan ke antarmuka untuk I/O asinkron io_uring, yang melakukan tindakan yang setara dengan panggilan sistem sinkronisasi_file_range(), dan juga menerapkan kemampuan untuk mendaftarkan eventfd dengan io_uring dan menerima pemberitahuan tentang selesainya operasi;
    • Untuk sistem file CIFS, FIEMAP ioctl telah ditambahkan, menyediakan pemetaan jangkauan yang efisien, serta dukungan untuk mode SEEK_DATA dan SEEK_HOLE;
    • Dalam subsistem FUSE diajukan API untuk mengelola cache data;
    • Btrfs telah mengoptimalkan implementasi qgroups dan meningkatkan kecepatan eksekusi fsync untuk file dengan banyak tautan keras. Kode pemeriksaan integritas data telah ditingkatkan, yang sekarang memperhitungkan kemungkinan kerusakan informasi di RAM sebelum membuang data ke disk;
    • CEPH menambahkan dukungan untuk mengekspor snapshot melalui NFS;
    • Implementasi pemasangan NFSv4 dalam mode “lunak” telah ditingkatkan (jika terjadi kesalahan dalam mengakses server dalam mode “lunak”, panggilan untuk segera mengembalikan kode kesalahan, dan dalam mode “keras” kontrol tidak diberikan hingga FS ketersediaan atau batas waktu dipulihkan). Rilis baru ini memberikan penanganan batas waktu yang lebih akurat, pemulihan kerusakan yang lebih cepat, dan opsi pemasangan “lebih lembut” baru yang memungkinkan Anda mengubah kode kesalahan (ETIMEDOUT) yang dikembalikan ketika batas waktu terjadi;
    • API nfsdcld, dirancang untuk melacak status klien NFS, memungkinkan server NFS melacak status klien dengan benar saat reboot. Dengan demikian, daemon nfsdcld sekarang dapat bertindak sebagai pengendali nfsdcltrack;
    • Untuk AFS ditambahkan emulasi kunci rentang byte dalam file (Penguncian Rentang Byte);
  • Virtualisasi dan Keamanan
    • Pekerjaan telah dilakukan untuk menghilangkan tempat-tempat di kernel yang memungkinkan eksekusi kode dari area memori refleksi yang dapat ditulis, sehingga memungkinkan untuk memblokir potensi celah yang dapat dieksploitasi selama serangan;
    • Parameter baris perintah kernel baru "mitigasi =" telah ditambahkan, memberikan cara yang disederhanakan untuk mengontrol pengaktifan teknik tertentu untuk melindungi dari kerentanan yang terkait dengan eksekusi instruksi spekulatif pada CPU. Meneruskan "mitigasi=off" akan menonaktifkan semua metode yang ada, dan mode default "mitigasi=auto" mengaktifkan perlindungan tetapi tidak memengaruhi penggunaan Hyper Threading. Mode “mitigasi=auto,nosmt” juga menonaktifkan Hyper Threading jika diperlukan oleh metode perlindungan.
    • Ditambahkan dukungan untuk tanda tangan digital elektronik sesuai dengan GOST R 34.10-2012 (RFC 7091, ISO/IEC 14888-3), dikembangkan Vitaly Chikunov dari Basalt SPO. Menambahkan dukungan untuk AES128-CCM ke implementasi TLS asli. Menambahkan dukungan untuk algoritma AEAD ke modul crypto_simd;
    • Di Kconfig ditambahkan bagian “pengerasan kernel” terpisah dengan opsi untuk meningkatkan perlindungan kernel. Saat ini, bagian baru hanya berisi pengaturan untuk mengaktifkan plugin peningkat pemeriksaan GCC;
    • Kode kernelnya hampir terkirim dari pernyataan case non-breaking di switch (tanpa return atau break setelah setiap blok case). Masih ada 32 dari 2311 kasus penggunaan switch yang diperbaiki, setelah itu dimungkinkan untuk menggunakan mode "-Wimplicit-fallthrough" saat membangun kernel;
    • Untuk arsitektur PowerPC, dukungan mekanisme perangkat keras untuk membatasi jalur akses kernel yang tidak diinginkan ke data di ruang pengguna telah diterapkan;
    • Menambahkan kode pemblokiran serangan Kelas MDS (Microarchitectural Data Sampling) di prosesor Intel. Anda dapat memeriksa apakah suatu sistem rentan terhadap kerentanan melalui variabel SysFS “/sys/devices/system/cpu/vulnerabilities/mds”. Доступно dua mode perlindungan: penuh, yang memerlukan mikrokode yang diperbarui, dan bypass, yang tidak sepenuhnya menjamin penghapusan buffer CPU ketika kontrol ditransfer ke ruang pengguna atau sistem tamu. Untuk mengontrol mode perlindungan, parameter “mds=” telah ditambahkan ke kernel, yang dapat mengambil nilai “penuh”, “penuh,nosmt” (+ menonaktifkan Hyper-Threads) dan “mati”;
    • Pada sistem x86-64, perlindungan "halaman penjaga tumpukan" telah ditambahkan untuk IRQ, mekanisme debugging, dan penangan pengecualian, yang intinya adalah mengganti halaman memori di perbatasan dengan tumpukan, pengaksesan yang mengarah pada pembuatan halaman memori pengecualian (kesalahan halaman);
    • Menambahkan pengaturan sysctl vm.unprivileged_userfaultfd, yang mengontrol kemampuan proses yang tidak memiliki hak istimewa untuk menggunakan panggilan sistem userfaultfd();
  • Subsistem jaringan
    • Ditambahkan Dukungan gateway IPv6 untuk rute IPv4. Misalnya, Anda sekarang dapat menentukan aturan perutean seperti “ip ro add 172.16.1.0/24 via inet6 2001:db8::1 dev eth0”;
    • Untuk ICMPv6, panggilan ioctl icmp_echo_ignore_anycast dan icmp_echo_ignore_multicast diimplementasikan untuk mengabaikan ICMP ECHO untuk anycast dan
      alamat multicast. Ditambahkan kemampuan untuk membatasi intensitas pemrosesan paket ICMPv6;

    • Untuk protokol mesh BATMAN (Better Approach To Mobile Adhoc Networking), yang memungkinkan terciptanya jaringan terdesentralisasi di mana setiap node terhubung melalui node tetangga, ditambahkan dukungan untuk penyiaran dari multicast ke unicast, serta kemampuan untuk mengontrol melalui sysfs;
    • Di ettool ditambahkan parameter Fast Link Down baru, yang memungkinkan Anda mengurangi waktu yang diperlukan untuk menerima informasi tentang peristiwa link down untuk 1000BaseT (dalam kondisi normal, penundaannya hingga 750ms);
    • Muncul kesempatan mengikat terowongan Foo-Over-UDP ke alamat, antarmuka jaringan, atau soket tertentu (sebelumnya pengikatan hanya dilakukan dengan topeng umum);
    • Di tumpukan nirkabel dijamin kemungkinan penerapan penangan
      OWE (Enkripsi Nirkabel Oportunistik) di ruang pengguna;

    • Di Netfilter, dukungan untuk keluarga alamat inet telah ditambahkan ke rantai nat (misalnya, Anda sekarang dapat menggunakan satu aturan terjemahan untuk memproses ipv4 dan ipv6, tanpa memisahkan aturan untuk ipv4 dan ipv6);
    • Di netlink ditambahkan rezim ketat untuk verifikasi ketat atas kebenaran semua pesan dan atribut, di mana ukuran atribut yang diharapkan tidak boleh dilampaui dan penambahan data tambahan di akhir pesan dilarang;
  • Layanan memori dan sistem
    • Bendera CLONE_PIDFD telah ditambahkan ke panggilan sistem clone(), ketika ditentukan, deskriptor file “pidfd” yang diidentifikasi dengan proses anak yang dibuat dikembalikan ke proses induk. Deskriptor file ini, misalnya, dapat digunakan untuk mengirim sinyal tanpa takut mengalami kondisi balapan (segera setelah pengiriman sinyal, PID target dapat dibebaskan karena penghentian proses dan ditempati oleh proses lain);
    • Untuk cgroups versi kedua, fungsionalitas pengontrol freezer telah ditambahkan, yang dengannya Anda dapat berhenti bekerja di cgroup dan untuk sementara membebaskan beberapa sumber daya (CPU, I/O, dan bahkan mungkin memori) untuk melakukan tugas lain. Pengelolaan dilakukan melalui file kontrol cgroup.freeze dan cgroup.events di pohon cgroup. Entri 1 di cgroup.freeze membekukan proses di cgroup saat ini dan semua grup turunan. Karena pembekuan memerlukan waktu, file cgroup.events tambahan disediakan sehingga Anda dapat mengetahui tentang penyelesaian operasi;
    • Diamankan ekspor atribut memori yang melekat pada setiap node di sysfs, yang memungkinkan Anda menentukan dari ruang pengguna sifat pemrosesan bank memori dalam sistem dengan memori heterogen;
    • Subsistem PSI (Pressure Stall Information) telah ditingkatkan, yang memungkinkan Anda menganalisis informasi tentang waktu tunggu untuk menerima berbagai sumber daya (CPU, memori, I/O) untuk tugas atau rangkaian proses tertentu dalam cgroup. Dengan menggunakan PSI, pengelola ruang pengguna dapat memperkirakan tingkat beban sistem dan pola perlambatan dengan lebih akurat dibandingkan dengan Rata-Rata Beban. Versi baru menyediakan dukungan untuk menetapkan ambang batas sensitivitas dan kemampuan untuk menggunakan panggilan poll() untuk menerima pemberitahuan bahwa ambang batas yang ditetapkan telah dipicu untuk jangka waktu tertentu. Fitur ini memungkinkan Android memantau kekurangan memori pada tahap awal, mengidentifikasi sumber masalah, dan menghentikan aplikasi yang tidak penting tanpa menimbulkan masalah yang terlihat oleh pengguna. Saat pengujian stres, alat pemantauan konsumsi memori berbasis PSI menunjukkan positif palsu 10 kali lebih sedikit dibandingkan dengan statistik vmpressure;
    • Kode untuk memeriksa program BPF telah dioptimalkan, yang memungkinkan pemeriksaan hingga 20 kali lebih cepat untuk program besar. Optimalisasi memungkinkan peningkatan batas ukuran program BPF dari 4096 menjadi satu juta instruksi;
    • Untuk program BPF diberikan kemampuan untuk mengakses data global, yang memungkinkan Anda menentukan variabel dan konstanta global dalam program;
    • Ditambahkan API, yang memungkinkan Anda mengontrol perubahan parameter sysctl dari program BPF;
    • Untuk arsitektur MIPS32, kompiler JIT untuk mesin virtual eBPF telah diimplementasikan;
    • Untuk arsitektur PowerPC 32-bit, dukungan untuk alat debugging KASan (Kernel address sanitizer) telah ditambahkan, yang membantu mengidentifikasi kesalahan saat bekerja dengan memori;
    • Pada sistem x86-64, pembatasan penempatan state dump selama kernel crash (crash-dump) di area memori di atas 896MB telah dihapus;
    • Untuk arsitektur s390, dukungan untuk pengacakan ruang alamat kernel (KASLR) dan kemampuan untuk memverifikasi tanda tangan digital saat memuat kernel melalui kexec_file_load() diterapkan;
    • Untuk arsitektur PA-RISC, menambahkan dukungan untuk kernel debugger (KGDB), jump mark dan kprobe;
  • Оборудование
    • Termasuk pengemudi Lima untuk GPU Mali 400/450, digunakan di banyak chip lama yang berbasis arsitektur ARM. Untuk GPU Mali yang lebih baru, driver Panfrost telah ditambahkan, mendukung chip berdasarkan mikroarsitektur Midgard (Mali-T6xx, Mali-T7xx, Mali-T8xx) dan Bifrost (Mali G3x, G5x, G7x);
    • Menambahkan dukungan untuk perangkat audio menggunakan firmware terbuka Suara Open Firmware (SOF). Meskipun tersedia driver terbuka, kode firmware untuk chip suara masih tetap tertutup dan diberikan dalam bentuk biner. Proyek Sound Open Firmware dikembangkan oleh Intel untuk membuat firmware terbuka untuk chip DSP yang terkait dengan pemrosesan audio (Google kemudian juga bergabung dalam pengembangan tersebut). Saat ini, proyek telah menyiapkan penemuan firmware untuk chip suara platform Intel Baytrail, CherryTrail, Broadwell, ApolloLake, GeminiLake, CannonLake dan IceLake;
    • Driver Intel DRM (i915) menambahkan dukungan untuk chip
      Danau Elkhart (Gen11). Menambahkan ID PCI untuk chip Comet Lake (Gen9). Dukungan untuk chip Icelake telah distabilkan, dan pengidentifikasi perangkat PCI tambahan juga telah ditambahkan.
      Diaktifkan
      mode peralihan asinkron antara dua buffer dalam memori video (async flip) saat melakukan operasi tulis melalui mmio, yang secara signifikan meningkatkan kinerja beberapa aplikasi 3D (misalnya, kinerja dalam pengujian 3DMark Ice Storm meningkat 300-400%). Menambahkan dukungan teknologi HDCP2.2 (Perlindungan Konten Digital bandwidth tinggi) untuk mengenkripsi sinyal video yang dikirimkan melalui HDMI;

    • Driver amdgpu untuk GPU Vega20 ditambahkan dukungan untuk RAS (Reliability, Availability, Serviceability) dan dukungan eksperimental untuk subsistem SMU 11, yang menggantikan teknologi Powerplay. Untuk GPU Vega12 ditambahkan dukungan untuk mode BACO (Bus Aktif, Chip Off). Menambahkan dukungan awal untuk XGMI, bus berkecepatan tinggi (PCIe 4.0) untuk interkoneksi GPU. Menambahkan pengidentifikasi yang hilang untuk kartu berdasarkan GPU Polaris10 ke driver amdkfd;
    • Driver Nouveau telah menambahkan dukungan untuk papan berdasarkan chipset NVIDIA Turing 117 (TU117, digunakan pada GeForce GTX 1650). DI DALAM
      kconfig ditambahkan pengaturan untuk menonaktifkan fungsi-fungsi usang yang tidak lagi digunakan dalam rilis libdrm saat ini;

    • Dukungan untuk objek sinkronisasi "timeline" telah ditambahkan ke DRM API dan driver amdgpu, memungkinkan Anda melakukannya tanpa pemblokiran klasik.
    • Driver vboxvideo untuk GPU virtual VirtualBox telah dipindahkan dari cabang pementasan ke struktur utama;
    • Menambahkan driver aspeed untuk chip GFX SoC ASPEED;
    • Menambahkan dukungan 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 Mikro (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 saat yang sama, Yayasan Perangkat Lunak Bebas Amerika Latin terbentuk
pilihan kernel 5.2 sepenuhnya gratis - Linux gratis 5.2-gnu, dibersihkan dari elemen firmware dan driver yang berisi komponen tidak bebas atau bagian kode, yang cakupannya dibatasi oleh pabrikan. Rilis baru mencakup pengunggahan file
Suara Buka Firmware. Memuat blob di driver dinonaktifkan
mt7615, rtw88, rtw8822b, rtw8822c, btmtksdio, iqs5xx, ishtp dan ucsi_ccg. Kode pembersihan gumpalan di driver dan subsistem ixp4xx, imx-sdma, amdgpu, nouveau dan goya, serta dalam dokumentasi mikrokode, telah diperbarui. Berhenti membersihkan gumpalan di driver r8822be karena penghapusannya.

Sumber: opennet.ru

Tambah komentar