Linux 6.1 kernel release

Pagkatapos ng dalawang buwan ng pag-unlad, ipinakita ni Linus Torvalds ang paglabas ng Linux kernel 6.1. Kabilang sa mga pinaka-kapansin-pansing pagbabago: suporta para sa pagbuo ng mga driver at module sa Rust na wika, modernisasyon ng mekanismo para sa pagtukoy ng ginamit na mga pahina ng memorya, isang espesyal na memory manager para sa mga programa ng BPF, isang sistema para sa pag-diagnose ng mga problema sa memorya ng KMSAN, ang KCFI (Kernelk Control). -Flow Integrity) mekanismo ng proteksyon, ang pagpapakilala ng puno ng istraktura ng Maple.

Kasama sa bagong bersyon ang 15115 na mga pag-aayos mula sa 2139 na mga developer, ang laki ng patch ay 51 MB, na humigit-kumulang 2 beses na mas maliit kaysa sa laki ng mga patch mula sa kernels 6.0 at 5.19. Naapektuhan ng mga pagbabago ang 13165 na file, 716247 linya ng code ang idinagdag, at 304560 linya ang tinanggal. Humigit-kumulang 45% ng lahat ng mga pagbabagong ipinakilala sa 6.1 ay nauugnay sa mga driver ng device, humigit-kumulang 14% ng mga pagbabago ay nauugnay sa pag-update ng code na partikular sa mga arkitektura ng hardware, 14% ay nauugnay sa network stack, 3% ay nauugnay sa mga file system, at 3% ay nauugnay sa panloob na mga subsystem ng kernel.

Mga pangunahing inobasyon sa kernel 6.1:

  • Mga serbisyo ng memorya at system
    • Idinagdag ang kakayahang gamitin ang Rust bilang pangalawang wika para sa pagbuo ng mga driver at kernel module. Ang pangunahing dahilan para sa pagsuporta sa Rust ay upang gawing mas madali ang pagsulat ng ligtas at mataas na kalidad na mga driver ng device sa pamamagitan ng pagbabawas ng posibilidad na magkamali kapag nagtatrabaho gamit ang memorya. Ang suporta sa kalawang ay hindi pinagana bilang default at hindi nagreresulta sa pagsasama ng kalawang bilang kinakailangang dependency sa pagbuo ng kernel. Ang kernel ay sa ngayon ay nagpatibay ng isang minimal, stripped-down na bersyon ng mga patch, na nabawasan mula 40 hanggang 13 libong linya ng code at nagbibigay lamang ng kinakailangang minimum, sapat upang bumuo ng isang simpleng kernel module na nakasulat sa Rust na wika. Sa hinaharap, ito ay pinlano na unti-unting taasan ang umiiral na pag-andar, paglilipat ng iba pang mga pagbabago mula sa sangay ng Rust-for-Linux. Kasabay nito, ang mga proyekto ay binuo upang gamitin ang iminungkahing imprastraktura upang bumuo ng mga driver para sa mga NVMe drive, ang 9p network protocol at ang Apple M1 GPU sa Rust na wika.
    • Para sa mga system na nakabatay sa mga arkitektura ng AArch64, RISC-V at LoongArch na may EFI, ipinatupad ang kakayahang direktang mag-load ng mga naka-compress na kernel na imahe. Nagdagdag ng mga handler para sa paglo-load, pagpapatakbo at pag-unload ng mga kernel na imahe, na direktang tinawag mula sa EFI zboot. Ang mga humahawak para sa pag-install at pagtanggal ng mga protocol mula sa EFI protocol database ay naidagdag din. Noong nakaraan, ang pag-unpack ay isinasagawa ng isang hiwalay na bootloader, ngunit ngayon ito ay maaaring gawin ng isang handler sa kernel mismo - ang imahe ng kernel ay nabuo bilang isang EFI application.
    • Kasama sa komposisyon ang bahagi ng mga patch na may pagpapatupad ng isang multi-level na modelo ng pamamahala ng memorya, na nagpapahintulot sa iyo na paghiwalayin ang mga bangko ng memorya na may iba't ibang mga katangian ng pagganap. Halimbawa, ang mga page na pinakamaraming ginagamit ay maaaring maimbak sa pinakamabilis na memorya, habang ang mga pinakabihirang ginagamit na page ay maaaring maiimbak sa medyo mabagal na memorya. Ang Kernel 6.1 ay nagpapakilala ng isang mekanismo para sa pagtukoy kung saan matatagpuan ang mga madalas na ginagamit na pahina sa mabagal na memorya upang ma-promote ang mga ito sa mabilis na memorya, at nagpapakilala rin ng pangkalahatang konsepto ng mga tier ng memorya at ang kanilang kaugnay na pagganap.
    • Kabilang dito ang mekanismo ng MGLRU (Multi-Generational LRU), na pumapalit sa lumang pagpapatupad ng LRU (Least Recently Used) batay sa dalawang pila na may multi-stage na istraktura na mas mahusay na tumutukoy kung aling mga memory page ang aktwal na ginagamit at kung alin ang maaaring itulak sa ang swap partition.
    • Nagdagdag ng suporta para sa istraktura ng data ng "maple tree" na iminungkahi ng mga inhinyero ng Oracle, na nakaposisyon bilang isang mas epektibong kapalit para sa istraktura ng "pula-itim na puno". Ang maple tree ay isang variant ng B-tree na sumusuporta sa range indexing at idinisenyo upang mahusay na gamitin ang cache ng mga modernong processor. Ang ilang mga subsystem ng pamamahala ng memorya ay nailipat na sa puno ng maple, na nagkaroon ng positibong epekto sa kanilang pagganap. Sa hinaharap, maaaring gamitin ang puno ng maple upang ipatupad ang pag-lock ng saklaw.
    • Ang kakayahang lumikha ng "mapanirang" mga programa ng BPF na espesyal na idinisenyo upang simulan ang isang emergency shutdown sa pamamagitan ng crash_kexec() na tawag ay idinagdag sa BPF subsystem. Maaaring kailanganin ang mga naturang BPF program para sa mga layunin ng pag-debug upang simulan ang paglikha ng crash dump sa isang partikular na punto ng oras. Upang ma-access ang mga mapanirang operasyon kapag naglo-load ng BPF program, dapat mong tukuyin ang flag ng BPF_F_DESTRUCTIVE, i-activate ang sysctl kernel.destructive_bpf_enabled, at magkaroon ng mga karapatan sa CAP_SYS_BOOT.
    • Para sa mga programa ng BPF, posibleng magbilang ng mga elemento ng cgroup, gayundin ang pagbilang ng mga mapagkukunan (mga file, vma, proseso, atbp.) ng isang partikular na thread o gawain. Isang bagong uri ng mapa ang ipinatupad upang lumikha ng mga buffer ng ring ng user.
    • Nagdagdag ng espesyal na tawag para sa paglalaan ng memorya sa mga programa ng BPF (memory allocator), na nagbibigay ng mas ligtas na paglalaan ng memorya sa konteksto ng BPF kaysa sa karaniwang kmalloc().
    • Ang unang bahagi ng mga pagbabago ay isinama, na nagbibigay ng kakayahang lumikha ng mga driver para sa mga input device na may HID (Human Interface Device) na interface, na ipinatupad sa anyo ng mga programa ng BPF.
    • Ang kernel ay ganap na inalis ang code upang suportahan ang a.out executable file format, na hindi na ginagamit sa release 5.1 at hindi pinagana para sa mga pangunahing arkitektura mula noong bersyon 5.18 at 5.19. Ang format na a.out ay matagal nang hindi ginagamit sa mga Linux system, at ang pagbuo ng mga a.out na file ay hindi sinusuportahan ng mga modernong tool sa mga default na configuration ng Linux. Ang loader para sa mga a.out na file ay maaaring ganap na ipatupad sa espasyo ng user.
    • Para sa mga system na nakabatay sa LoongArch instruction set architecture na ginagamit sa Loongson 3 5000 na mga processor at nagpapatupad ng bagong RISC ISA, katulad ng MIPS at RISC-V, ang suporta para sa performance measurement event (perf event), kexec, kdump at BPF JIT compilation ay ipinatupad .
    • Ang io_uring asynchronous I/O interface ay nag-aalok ng bagong mode, IORING_SETUP_DEFER_TASKRUN, na nagbibigay-daan sa ring buffer-related na trabaho na pansamantalang ipagpaliban hanggang sa isang kahilingan sa aplikasyon, na maaaring gamitin sa batch work at maiwasan ang mga isyu sa latency dahil sa preemption. maling oras.
    • Ang mga proseso sa espasyo ng gumagamit ay binibigyan ng kakayahang magpasimula ng conversion ng isang hanay ng mga normal na memory page sa isang set ng malalaking memory page (Transparent Huge-Pages).
    • Idinagdag ang pagpapatupad ng /dev/userfaultfd device, na nagbibigay-daan sa access sa functionality ng userfaultfd() system call gamit ang mga karapatan sa pag-access sa FS. Binibigyang-daan ka ng userfaultfd functionality na lumikha ng mga handler para sa pag-access ng mga hindi inilalaang memory page (mga page fault) sa espasyo ng user.
    • Ang mga kinakailangan para sa bersyon ng GNU Make utility ay nadagdagan - hindi bababa sa bersyon 3.82 ay kinakailangan na ngayon upang bumuo ng kernel.
  • Disk subsystem, I/O at mga file system
    • Ang mga makabuluhang pag-optimize ng pagganap ay ginawa sa Btrfs file system; bukod sa iba pang mga bagay, ang pagganap ng FIEMAP ioctl na tawag ay nadagdagan ng mga order ng magnitude. Nagdagdag ng suporta para sa mga asynchronous na buffered na pagsusulat para sa mga application na gumagamit ng io_uring. Nagdagdag ng suporta para sa mga file na protektado ng fs-verity sa "send" operation.
    • Ang ext4 file system ay nagdagdag ng mga pag-optimize ng pagganap na nauugnay sa pagpapanatili ng journal at read-only na operasyon.
    • Ang EROFS (Enhanced Read-Only File System) file system, na idinisenyo para sa paggamit sa mga partisyon na naa-access sa read-only na mode, ay nagpapatupad ng kakayahang magbahagi ng data na nadoble sa iba't ibang mga file system.
    • Ang statx() system call ay idinagdag upang ipakita ang impormasyon tungkol sa kung ang direktang I/O ay maaaring ilapat sa isang file.
    • Ang suporta para sa paglikha ng mga pansamantalang file na may O_TMFILE na flag ay idinagdag sa FUSE (Filesystems in User Space) subsystem.
  • Virtualization at Seguridad
    • Ang pagpapatupad ng mekanismo ng proteksyon ng CFI (Control Flow Integrity) ay pinalitan, na nagdaragdag ng mga pagsusuri bago ang bawat hindi direktang tawag ng isang function upang makita ang ilang anyo ng hindi natukoy na pag-uugali na posibleng humantong sa isang paglabag sa normal na utos ng pagpapatupad (control flow) bilang isang resulta ng paggamit ng mga pagsasamantala na nagpapalit ng mga pointer sa mga function na nakaimbak sa memorya. Ang karaniwang pagpapatupad ng CFI mula sa proyekto ng LLVM ay pinalitan ng isang opsyon batay din sa paggamit ng Clang, ngunit espesyal na inangkop upang protektahan ang mga mababang antas na subsystem at mga kernel ng operating system. Sa LLVM, mag-aalok ng bagong pagpapatupad sa release ng Clang 16 at ie-enable sa opsyong "-fsanitize=kcfi". Ang pangunahing pagkakaiba sa bagong pagpapatupad ay hindi ito nakatali sa link-time optimizations (LTO) at hindi nagreresulta sa pagpapalit ng mga function pointer ng mga link sa jump table.
    • Para sa mga LSM modules (Linux Security Module), posibleng lumikha ng mga humahawak na humarang sa mga operasyon upang lumikha ng mga namespace.
    • Ang mga tool ay ibinibigay para sa pag-verify ng PKCS#7 na mga digital na lagda sa mga programa ng BPF.
    • Ang kakayahang magbukas sa non-blocking mode (O_NONBLOCK), na hindi sinasadyang inalis sa kernel 5.6, ay naibalik sa /dev/random.
    • Sa mga system na may arkitektura ng x86, isang babala ang idinagdag sa kaso ng pagmamapa ng mga pahina ng memorya ng mga kernel subsystem na sabay-sabay na nagpapahintulot sa pagpapatupad at pagsulat. Sa hinaharap, ang posibilidad na ganap na ipagbawal ang naturang memory mapping ay isinasaalang-alang.
    • Idinagdag ang mekanismo ng pag-debug ng KMSAN (Kernel Memory Sanitizer) upang matukoy ang hindi nasimulang paggamit ng memorya sa kernel, pati na rin ang mga hindi nasimulang pagtagas ng memorya sa pagitan ng espasyo ng user at mga device.
    • Ang mga pagpapahusay ay ginawa sa crypto-secure CRNG pseudo-random number generator na ginamit sa getrandom na tawag. Ang mga pagbabago ay inihanda ni Jason A. Donenfeld, may-akda ng VPN WireGuard, at naglalayong pahusayin ang seguridad ng pseudo-random integer extraction.
  • Subsystem ng network
    • Ang TCP stack ay nagbibigay ng kakayahan (naka-disable bilang default) na gumamit ng mga socket hash table nang hiwalay para sa bawat namespace, na nagpapahusay sa performance sa mga system na may malaking bilang ng mga namespace.
    • Inalis ang code upang suportahan ang legacy na DECnet protocol. Ang mga user space API stub ay iniwan sa lugar upang payagan ang mga application na gumagamit ng DECnet na ma-compile, ngunit ang mga application na ito ay hindi makakonekta sa network.
    • Nakadokumento ang netlink protocol.
  • ΠžΠ±ΠΎΡ€ΡƒΠ΄ΠΎΠ²Π°Π½ΠΈΠ΅
    • Ang driver ng amdgpu ay nagdagdag ng suporta para sa pagpapasa ng DSC (Display Stream Compression) para sa lossless na data compression kapag nakikipagpalitan ng impormasyon sa mga screen na sumusuporta sa napakataas na resolution. Ang trabaho ay patuloy na nagbibigay ng suporta para sa AMD RDNA3 (RX 7000) at CDNA (Instinct) na mga platform. Nagdagdag ng suporta para sa DCN 3.2, SMU 13.x, NBIO 7.7, GC 11.x, PSP 13.x, SDMA 6.x at GMC 11.x na mga bahagi ng IP. Ang driver ng amdkfd (para sa mga discrete AMD GPU gaya ng Polaris) ay nagbibigay ng suporta para sa GFX 11.0.3.
    • Kasama sa driver ng i915 (Intel) ang suporta para sa Meteor Lake GPU. Sinusuportahan ng Meteor Lake at mga mas bagong GPU ang interface ng DP 2.0 (DisplayPort). Nagdagdag ng mga identifier para sa mga video card batay sa Alder Lake S microarchitecture.
    • Nagdagdag ng suporta para sa mga audio subsystem na ipinatupad sa mga processor ng Apple Silicon, Intel SkyLake at Intel KabyLake. Ang CS35L41 HDA audio driver ay sumusuporta sa sleep mode. Idinagdag ang suporta ng ASoC (ALSA System on Chip) para sa integrated audio chips na Apple Silicon, AMD Rembrant DSPs, AMD Pink Sardine ACP 6.2, Everest ES8326, Intel Sky Lake at Kaby Lake, Mediatek MT8186, NXP i.MX8ULP DSPs, Qualcomm SC8280XP, SM8250, SM8450 at Texas Instruments SRC4392
    • Idinagdag ang suporta para sa mga LCD panel na Samsung LTL101AL01, B120XAN01.0, R140NWF5 RH, Densitron DMT028VGHMCMI-1A TFT, AUO B133UAN02.1, IVO M133NW4J-R3, Innolux N120NWF1 RH, Densitron DMT116VGHMCMI-01.6A TFT, AUO B116UAN21, IVO M116NW2J-R116, Innolux N1ACA-BEA0800AUX9, BOAKOXNUMX. , INX NXNUMXBCA- EAXNUMX , INX NXNUMXBCN-EAXNUMX, Multi-Inno Technology MIXNUMXFT-XNUMX.
    • Nagdagdag ng suporta para sa AHCI SATA controllers na ginagamit sa Baikal-T1 SoC.
    • Nagdagdag ng suporta para sa mga Bluetooth chip na MediaTek MT7921, Intel Magnetor (CNVi, Integrated Connectivity), Realtek RTL8852C, RTW8852AE at RTL8761BUV (Edimax BT-8500).
    • Ang ath11k driver para sa Qualcomm wireless modules ay nagdagdag ng suporta para sa spectral scanning sa 160 MHz range, ipinatupad ang multi-threaded NAPI, at pinahusay na suporta para sa Qualcomm WCN6750 Wi-Fi chips.
    • Nagdagdag ng mga driver para sa PinePhone keyboard, InterTouch touchpads (ThinkPad P1 G3), X-Box Adaptive Controller, PhoenixRC Flight Controller, VRC-2 Car Controller, DualSense Edge Controller, IBM Operation Panel, XBOX One Elite remotes, mga tablet XP-PEN Deco Pro S at Intuos Pro Small (PTH-460).
    • Nagdagdag ng driver para sa Aspeed HACE (Hash at Crypto Engine) na mga cryptographic accelerators.
    • Nagdagdag ng suporta para sa pinagsamang Thunderbolt/USB4 Intel Meteor Lake controllers.
    • Nagdagdag ng suporta para sa Sony Xperia 1 IV, Samsung Galaxy E5, E7 at Grand Max, Pine64 Pinephone Pro na mga smartphone.
    • Idinagdag ang suporta para sa ARM SoC at mga board: AMD DaytonaX, Mediatek MT8186, Rockchips RK3399 at RK3566, TI AM62A, NXP i.MX8DXL, Renesas R-Car H3Ne-1.7G, Qualcomm IPQ8064-v2.0, IPQ8062, IPQ8065, IPQ8, Konn. BL i.MX8195MM OSM-S, MT4 (Acer Tomato), Radxa ROCK 4C+, NanoPi R1S Enterprise Edition, JetHome JetHub DXNUMXp. Na-update na mga driver para sa SoC Samsung, Mediatek, Renesas, Tegra, Qualcomm, Broadcom at NXP.

Kasabay nito, ang Latin American Free Software Foundation ay bumuo ng isang bersyon ng ganap na libreng kernel 6.1 - Linux-libre 6.1-gnu, na-clear sa mga elemento ng firmware at mga driver na naglalaman ng mga di-libreng bahagi o mga seksyon ng code, ang saklaw nito ay limitado ng tagagawa. Nililinis ng bagong release ang bagong rtw8852b driver at mga DTS file para sa iba't ibang Qualcomm at MediaTek SoC na may mga processor batay sa AArch64 architecture. Na-update ang blob cleaning code sa mga driver at subsystem amdgpu, i915, brcmfmac, r8188eu, rtw8852c, Intel ACPI. Ang paglilinis ng mga hindi napapanahong driver tm6000 TV card, cpia2 v4l, sp8870, av7110 ay naitama.

Pinagmulan: opennet.ru

Magdagdag ng komento