Keluaran kernel Linux 5.6

Selepas dua bulan pembangunan, Linus Torvalds diperkenalkan pelepasan kernel Linux 5.6. Antara perubahan yang paling ketara: penyepaduan antara muka VPN WireGuard, sokongan untuk USB4, ruang nama untuk masa, keupayaan untuk mencipta pengendali kesesakan TCP menggunakan BPF, sokongan awal untuk MultiPath TCP, membersihkan kernel daripada masalah 2038, mekanisme "bootconfig" , ZoneFS.

Versi baharu termasuk 13702 pembaikan daripada 1810 pembangun,
saiz tampung - 40 MB (perubahan mempengaruhi 11577 fail, 610012 baris kod telah ditambahkan,
294828 baris dialih keluar). Kira-kira 45% daripada semua dibentangkan dalam 5.6
perubahan berkaitan dengan pemacu peranti, kira-kira 15% daripada perubahan adalah
sikap terhadap mengemas kini kod khusus untuk seni bina perkakasan, 12%
dikaitkan dengan timbunan rangkaian, 4% dengan sistem fail dan 3% dengan dalaman
subsistem kernel.

Utama inovasi:

  • Subsistem rangkaian
    • Ditambah pelaksanaan antara muka VPN WireGuard, yang dilaksanakan berdasarkan kaedah penyulitan moden (ChaCha20, Poly1305, Curve25519, BLAKE2s), mudah digunakan, bebas daripada komplikasi, telah membuktikan dirinya dalam beberapa pelaksanaan besar dan memberikan prestasi yang sangat tinggi (3,9 kali lebih pantas daripada OpenVPN dari segi daripada throughput). WireGuard menggunakan konsep penghalaan kunci penyulitan, yang melibatkan melampirkan kunci persendirian pada setiap antara muka rangkaian dan menggunakannya untuk mengikat kunci awam. Kunci awam ditukar untuk mewujudkan sambungan dengan cara yang serupa dengan SSH. Primitif kriptografi diperlukan untuk WireGuard berfungsi ialah dibawa daripada perpustakaan zink sebagai sebahagian daripada API Crypto standard dan disertakan ke dalam inti 5.5.
    • Bermula penyepaduan komponen yang diperlukan untuk menyokong 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 dikaitkan dengan alamat IP yang berbeza. Untuk aplikasi rangkaian, sambungan agregat sedemikian kelihatan seperti sambungan TCP biasa, dan semua logik pemisahan aliran dilakukan oleh MPTCP. TCP berbilang laluan boleh digunakan untuk meningkatkan daya pengeluaran dan meningkatkan kebolehpercayaan. Sebagai contoh, MPTCP boleh digunakan untuk mengatur penghantaran data pada telefon pintar menggunakan pautan WiFi dan 4G secara serentak, atau untuk mengurangkan kos dengan menyambungkan pelayan menggunakan beberapa pautan murah dan bukannya satu yang mahal.
    • Ditambah sokongan untuk disiplin pemprosesan baris gilir rangkaian sch_ets (Pemilihan Penghantaran yang Dipertingkatkan, IEEE 802.1Qaz), yang menyediakan keupayaan untuk mengagihkan lebar jalur antara kelas trafik yang berbeza. Jika beban pada kelas trafik tertentu adalah di bawah lebar jalur yang diperuntukkan, maka ETS membenarkan kelas trafik lain menggunakan lebar jalur yang tersedia (tidak digunakan). Qdisc sch_ets dikonfigurasikan sebagai disiplin PRIO dan menggunakan kelas trafik untuk menentukan had lebar jalur yang ketat dan dikongsi. ETS berfungsi sebagai gabungan disiplin PRIO ΠΈ DRR β€” jika terdapat kelas trafik yang terhad, PRIO digunakan, tetapi jika tiada trafik dalam baris gilir, ia berfungsi seperti DRR.
    • Menambah jenis program BPF baharu BPF_PROG_TYPE_STRUCT_OPS, yang membolehkan anda melaksanakan pengendali fungsi kernel melalui BPF. Pada masa ini, ciri ini sudah boleh digunakan untuk melaksanakan algoritma kawalan kesesakan TCP dalam bentuk program BPF. Sebagai contoh dicadangkan Program BPF dengan pelaksanaan algoritma DCTCP.
    • Diterima ke dalam inti perubahan, alat menterjemah ettool dengan ioctl() untuk digunakan 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.
    • Perlaksanaan tambahan bagi algoritma pengurusan baris gilir rangkaian FQ-PIE (Flow Queue PIE), bertujuan untuk mengurangkan kesan negatif penimbalan paket perantaraan pada peralatan rangkaian tepi (bufferbloat). FQ-PIE menunjukkan kecekapan tinggi apabila digunakan dalam sistem dengan modem kabel.
  • Subsistem cakera, I/O dan sistem fail
    • Untuk sistem fail Btrfs tambah pelaksanaan tak segerak bagi operasi DISCARD (menanda blok dibebaskan yang tidak perlu disimpan secara fizikal lagi). Pada mulanya, operasi DISCARD dilakukan secara serentak, yang boleh menyebabkan kemerosotan prestasi disebabkan oleh pemacu menunggu arahan yang sepadan selesai. Pelaksanaan tak segerak membolehkan anda tidak menunggu pemacu untuk menyelesaikan DISCARD dan melaksanakan operasi ini di latar belakang.
    • Dalam XFS dijalankan Membersihkan kod yang menggunakan pembilang masa 32-bit lama (jenis time_t digantikan dengan time64_t), yang membawa kepada masalah 2038. Memperbaiki ralat dan kerosakan memori yang berlaku pada platform 32-bit. Kod telah diolah semula untuk berfungsi dengan atribut lanjutan.
    • Ke sistem fail ext4 diperkenalkan Pengoptimuman prestasi yang berkaitan dengan pengendalian penguncian inod semasa operasi baca dan tulis. Prestasi penulisan semula yang lebih baik dalam mod Direct I/O. Untuk memudahkan diagnosis masalah, kod ralat pertama dan terakhir disimpan dalam superblock.
    • Pada sistem fail F2FS dilaksanakan keupayaan untuk menyimpan data dalam bentuk termampat. Untuk fail atau direktori individu, pemampatan boleh didayakan menggunakan arahan "chattr +c file" atau "chattr +c dir; sentuh dir/fail". Untuk memampatkan keseluruhan partition, anda boleh menggunakan pilihan "-o compress_extension=ext" dalam utiliti pelekap.
    • Kernel termasuk sistem fail ZonFS, yang memudahkan kerja peringkat rendah dengan peranti storan berzon. Pemacu dizonkan bermaksud peranti pada cakera magnetik keras atau SSD NVMe, ruang storan yang dibahagikan kepada zon yang membentuk kumpulan blok atau sektor, di mana hanya penambahan data berurutan dibenarkan, mengemas kini keseluruhan kumpulan blok. FS ZoneFS telah dibangunkan oleh Western Digital dan mengaitkan setiap zon dalam pemacu dengan fail berasingan yang boleh digunakan untuk menyimpan data dalam mod mentah tanpa manipulasi di peringkat sektor dan blok, i.e. Membenarkan aplikasi menggunakan API fail dan bukannya mengakses terus peranti blok menggunakan ioctl.
    • Dalam NFS, pemasangan partition pada UDP dilumpuhkan secara lalai. Menambah sokongan untuk keupayaan untuk menyalin terus fail antara pelayan, yang ditakrifkan dalam spesifikasi NFS 4.2. Menambahkan pilihan pelekap baharu "softreval", yang membolehkan nilai atribut cache digunakan sekiranya berlaku kegagalan pelayan. Sebagai contoh, apabila menentukan pilihan ini, selepas pelayan tidak tersedia, masih mungkin untuk bergerak di sepanjang laluan dalam partition NFS dan mengakses maklumat yang telah diselesaikan dalam cache.
    • Dijalankan pengoptimuman prestasi mekanisme fs-verity, digunakan untuk memantau integriti dan pengesahan fail individu. Kelajuan bacaan berurutan meningkat berkat penggunaan pokok cincang Merkle. Prestasi FS_IOC_ENABLE_VERITY telah dioptimumkan apabila tiada data dalam cache (bacaan awalan halaman dengan data telah digunakan).
  • Maya dan Keselamatan
    • Keupayaan untuk melumpuhkan modul SELinux semasa berjalan telah ditamatkan, dan memunggah SELinux yang telah diaktifkan akan dilarang pada masa hadapan. Untuk melumpuhkan SELinux anda perlu lulus parameter "selinux=0" pada baris arahan kernel.
    • Ditambah sokongan untuk ruang nama untuk masa (ruang nama masa), membolehkan anda mengikat keadaan jam sistem ke bekas (CLOCK_REALTIME,
      CLOCK_MONOTONIC, CLOCK_BOOTTIME), gunakan masa anda sendiri dalam bekas dan, apabila memindahkan bekas ke hos lain, pastikan bacaan CLOCK_MONOTONIC dan CLOCK_BOOTTIME kekal tidak berubah (mengambil kira masa selepas memuatkan, dengan atau tanpa mengambil kira berada dalam mod tidur ).

    • Kolam penyekat /dev/random telah dialih keluar. Tingkah laku /dev/random adalah serupa dengan /dev/urandom dari segi menghalang penyekatan entropi selepas permulaan kumpulan.
    • Kernel teras termasuk pemacu yang membenarkan sistem tetamu menjalankan VirtualBox untuk melekapkan direktori yang dieksport oleh persekitaran hos (VirtualBox Shared Folder).
    • Satu set tampalan telah ditambahkan pada subsistem BPF (penghantar BPF), apabila menggunakan mekanisme Retpoline untuk melindungi daripada serangan kelas Spectre V2, ia membolehkan anda meningkatkan kecekapan memanggil program BPF apabila peristiwa yang berkaitan dengannya berlaku (contohnya, ia memungkinkan untuk mempercepatkan panggilan pengendali XDP apabila paket rangkaian tiba).
    • Menambah pemacu untuk menyokong TEE (Persekitaran Pelaksanaan Dipercayai) terbina dalam AMD APU.
  • Perkhidmatan memori dan sistem
    • BPF telah menambah sokongan untuk fungsi global. Pembangunan sedang dijalankan sebagai sebahagian daripada inisiatif untuk menambah sokongan untuk perpustakaan fungsi yang boleh dimasukkan dalam program BPF. Langkah seterusnya adalah untuk menyokong sambungan dinamik yang membolehkan fungsi global dimuatkan, termasuk menggantikan fungsi global sedia ada semasa ia sedang digunakan. Subsistem BPF juga menambah sokongan untuk varian operasi peta (digunakan untuk menyimpan data berterusan), yang menyokong pelaksanaan dalam mod kelompok.
    • Ditambah oleh Peranti "cpu_cooling" membolehkan anda menyejukkan CPU yang terlalu panas dengan meletakkannya dalam keadaan melahu untuk jangka masa yang singkat.
    • Panggilan sistem ditambah openat2(), yang menawarkan satu set bendera tambahan untuk mengehadkan resolusi laluan fail (larangan menyeberangi titik lekap, pautan simbolik, pautan ajaib (/proc/PID/fd), komponen β€œ../”).
    • Untuk sistem heterogen berdasarkan seni bina besar.LITTLE, menggabungkan teras CPU cekap tenaga yang berkuasa dan kurang cekap dalam satu cip, parameter uclamp_min ditetapkan apabila melaksanakan tugas masa nyata (muncul dalam kernel 5.3 terdapat mekanisme untuk mengamankan beban). Parameter ini memastikan bahawa tugas akan diletakkan oleh penjadual pada teras CPU yang mempunyai prestasi yang mencukupi.
    • Kernel dibebaskan daripada masalah 2038. Menggantikan pengendali terakhir yang tinggal, yang menggunakan jenis 32-bit (int yang ditandatangani) time_t untuk pembilang masa epochal, yang, dengan mengambil kira laporan dari 1970, akan melimpah pada 2038.
    • Penambahbaikan berterusan antara muka I/O tak segerak io_uringdi mana terjamin sokongan untuk operasi baharu: IORING_OP_FALLOCATE (tempahan kawasan kosong), IORING_OP_OPENAT,
      IORING_OP_OPENAT2,
      IORING_OP_CLOSE (membuka dan menutup fail),
      IORING_OP_FILES_UPDATE (menambah dan mengalih keluar fail daripada senarai akses pantas),
      IORING_OP_STATX (permintaan maklumat fail),
      IORING_OP_READ,
      IORING_OP_WRITE (analog ringkas IORING_OP_READV dan IORING_OP_WRITEV),
      IORING_OP_FADVISE,
      IORING_OP_MADVISE (varian tak segerak bagi panggilan posix_fadvise dan madvise), IORING_OP_SEND,
      IORING_OP_RECV (menghantar dan menerima data rangkaian),
      IORING_OP_EPOLL_CTL (lakukan operasi pada deskriptor fail epoll).

    • Panggilan sistem ditambah pidfd_getfd(), membenarkan proses untuk mendapatkan semula deskriptor fail untuk fail terbuka daripada proses lain.
    • Dilaksanakan mekanisme "bootconfig", yang membolehkan, sebagai tambahan kepada pilihan baris arahan, untuk menentukan parameter kernel melalui fail tetapan. Untuk menambah fail sedemikian pada imej initramfs, utiliti bootconfig dicadangkan. Ciri ini boleh digunakan, sebagai contoh, untuk mengkonfigurasi kprobes pada masa but.
    • Direka semula mekanisme untuk menunggu untuk menulis dan membaca data dalam paip yang tidak dinamakan. Perubahan itu memungkinkan untuk mempercepatkan tugas seperti pemasangan selari projek besar. Walau bagaimanapun, pengoptimuman boleh membawa kepada keadaan perlumbaan dalam pembuatan GNU disebabkan oleh pepijat dalam keluaran 4.2.1, yang telah ditetapkan dalam versi 4.3.
    • Menambahkan bendera PR_SET_IO_FLUSHER pada prctl(), yang boleh digunakan untuk menandakan proses bebas memori yang tidak sepatutnya tertakluk kepada had apabila sistem kekurangan ingatan.
    • Berdasarkan sistem pengedaran memori ION yang digunakan dalam Android, subsistem telah dilaksanakan timbunan dma-buf, yang membolehkan anda mengawal peruntukan penampan DMA untuk berkongsi kawasan memori antara pemacu, aplikasi dan pelbagai subsistem.
  • Seni bina perkakasan
    • Menambah sokongan untuk sambungan E0PD, yang muncul dalam ARMv8.5 dan membenarkan perlindungan terhadap serangan yang berkaitan dengan pelaksanaan spekulatif arahan pada CPU. Perlindungan berasaskan E0PD menghasilkan overhed yang lebih rendah daripada perlindungan KPTI (Kernel Page Table Isolation).
    • Untuk sistem berdasarkan seni bina ARMv8.5, sokongan untuk arahan RNG telah ditambah, menyediakan akses kepada penjana nombor pseudo-rawak perkakasan. Dalam kernel, arahan RNG digunakan untuk menjana entropi apabila memulakan penjana nombor pseudo-rawak yang disediakan kernel.
    • Dialih keluar sokongan untuk MPX (Memory Protection Extensions) ditambah dalam kernel 3.19 dan membolehkan anda mengatur pemeriksaan penunjuk untuk memastikan bahawa sempadan kawasan ingatan dihormati. Teknologi ini tidak digunakan secara meluas dalam penyusun dan telah dialih keluar daripada GCC.
    • Untuk seni bina RISC-V, sokongan untuk alat penyahpepijat KASan (Kernel address sanitizer) telah dilaksanakan, yang membantu mengenal pasti ralat semasa menggunakan memori.
  • ΠžΠ±ΠΎΡ€ΡƒΠ΄ΠΎΠ²Π°Π½ΠΈΠ΅
    • Sokongan spesifikasi dilaksanakan USB 4.0, yang berdasarkan protokol Thunderbolt 3 dan menyediakan daya pemprosesan sehingga 40 Gbps, sambil mengekalkan keserasian ke belakang dengan USB 2.0 dan USB 3.2. Dengan analogi dengan Petir Antara muka USB 4.0 membolehkan anda menyalurkan protokol yang berbeza melalui satu kabel dengan penyambung Jenis-C, termasuk PCIe, Port Paparan dan USB 3.x, serta pelaksanaan perisian protokol, contohnya, untuk mengatur pautan rangkaian antara hos. Pelaksanaan dibina pada pemacu Thunderbolt yang telah disertakan dalam kernel Linux dan menyesuaikannya untuk berfungsi dengan hos dan peranti yang serasi USB4. Perubahan juga menambah sokongan untuk peranti Thunderbolt 3 kepada pelaksanaan perisian Pengurus Sambungan, yang bertanggungjawab untuk mencipta terowong untuk menyambungkan berbilang peranti melalui satu penyambung.
    • Dalam pemandu amdgpu tambah sokongan awal untuk teknologi perlindungan salinan HDCP 2.x (High-bandwidth Digital Content Protection). Menambah sokongan untuk cip AMD Pollock ASIC berdasarkan Raven 2. Melaksanakan keupayaan untuk menetapkan semula GPU untuk keluarga Renoir dan Navi.
    • Pemacu DRM untuk kad video Intel tambah Sokongan DSI VDSC untuk cip berdasarkan seni bina Ice Lake dan Tiger Lake, LMEM mmap (memori tempatan peranti) telah dilaksanakan, parsing VBT (Video BIOS Table) telah dipertingkatkan, sokongan HDCP 2.2 telah dilaksanakan untuk cip Coffee Lake.
    • Kerja diteruskan untuk menyatukan kod pemacu amdkfd (untuk GPU diskret, seperti Fiji, Tonga, Polaris) dengan pemacu amdgpu.
    • Pemacu k10temp telah diolah semula, menambah sokongan untuk memaparkan voltan dan parameter semasa untuk CPU AMD Zen, serta maklumat yang dikembangkan daripada penderia suhu yang digunakan dalam CPU Zen dan Zen 2.
    • Dalam pemandu nouveau tambah sokongan untuk mod pemuatan perisian tegar yang disahkan untuk GPU NVIDIA berdasarkan mikroarkitektur Turing (GeForce RTX 2000), yang memungkinkan untuk mendayakan sokongan untuk pecutan 3D untuk kad ini (memuat turun perisian tegar rasmi dengan tandatangan digital NVIDIA diperlukan). Menambah sokongan untuk enjin grafik TU10x. Masalah dengan Audio HD telah diselesaikan.
    • Menambah sokongan untuk pemampatan data apabila dihantar melalui DisplayPort MST (Pengangkutan Berbilang Aliran).
    • Menambah pemandu baharu "ath11kΒ» untuk cip wayarles Qualcomm yang menyokong 802.11ax.
      Pemacu adalah berdasarkan timbunan mac80211 dan menyokong mod titik akses, stesen kerja dan nod rangkaian mesh.

    • Melalui sysfs, akses kepada bacaan sensor suhu boleh dibaca yang digunakan pada pemacu keras moden dan SSD disediakan.
    • diserahkan perubahan ketara kepada sistem bunyi ALSA, bertujuan untuk menghapuskan kod masalah 2038 (mengelakkan penggunaan jenis time_t 32-bit dalam antara muka snd_pcm_mmap_status dan snd_pcm_mmap_control). Menambah sokongan untuk codec audio baharu
      Qualcomm WCD9340/WCD9341, Realtek RT700, RT711, RT715, RT1308, Ingenic JZ4770.

    • Ditambah pemacu untuk panel LCD Logic PD 28, Jimax8729d MIPI-DSI, igenic JZ4770, Sony acx424AKP, Leadtek LTK500HD1829, Xinpeng XPP055C272, AUO B116XAK01, GiantPlus GPM940B0,
      BOE NV140FHM-N49,
      Satoz SAT050AT40H12R2,
      Sharp LS020B1DD01D.

    • Ditambah sokongan untuk papan ARM dan platform Gen1 Amazon Echo (berasaskan OMAP3630), Samsung Galaxy S III mini (GT-I8190), Allwinner Emlid Neutis, Komputer Percuma ALL-H3-IT, PineH64 Model B, Aibretech Amlogic GX PC,
      Armada SolidRun Clearfog GTR, NXPGateworks GW59xx,
      Pembaca eBook Tolino Shine 3,
      COM Artis Terbenam (i.MX7ULP), SolidRun Clearfog CX/ITX dan HoneyComb (LX2160A), Google Coral Edge TPU (i.MX8MQ),
      Pembawa Rockchip Radxa Dalang, Radxa Rock Pi N10, VMARC RK3399Pro SOM
      ST Ericsson HREF520, Inforce 6640, SC7180 IDP, Atmel/Microchip AM9X60 (ARM926 SoC, Kizboxmini), ST stm32mp15, AM3703/AM3715/DM3725, ST Ericsson ab8505, Unisoc, SC9863A, Qualcomm SC7180 Menambah sokongan untuk pengawal PCIe yang digunakan dalam Raspberry Pi 4.

Pada masa yang sama, Yayasan Perisian Percuma Amerika Latin terbentuk
pilihan kernel percuma sepenuhnya 5.6 - Linux-percuma 5.6-gnu, dibersihkan daripada perisian tegar dan elemen pemacu yang mengandungi komponen bukan bebas atau bahagian kod, yang skopnya dihadkan oleh pengilang. Keluaran baharu melumpuhkan pemuatan gumpalan dalam pemacu untuk AMD TEE, ATH11K dan Mediatek SCP. Kod pembersihan gumpalan dikemas kini dalam pemacu dan subsistem AMD PSP, amdgpu dan nouveau.

Sumber: opennet.ru

Tambah komen