Linux 5.12 kernel release

Pagkatapos ng dalawang buwan ng pag-unlad, ipinakita ni Linus Torvalds ang paglabas ng Linux kernel 5.12. Kabilang sa mga pinaka-kapansin-pansing pagbabago: suporta para sa mga naka-zone na block device sa Btrfs, ang kakayahang mag-map ng mga user ID para sa file system, paglilinis ng mga legacy na arkitektura ng ARM, isang "sabik" na write mode sa NFS, ang LOOKUP_CACHED na mekanismo para sa pagtukoy ng mga path ng file mula sa cache , suporta para sa atomic na mga tagubilin sa BPF, isang sistema ng pag-debug na KFENCE para sa pagtukoy ng mga error kapag nagtatrabaho sa memorya, NAPI polling mode na tumatakbo sa isang hiwalay na kernel thread sa network stack, ACRN hypervisor, ang kakayahang baguhin ang preempt na modelo sa mabilisang gawain scheduler at suporta para sa mga pag-optimize ng LTO kapag nagtatayo sa Clang.

Kasama sa bagong bersyon ang 14170 (sa nakaraang release 15480) na mga pag-aayos mula sa 1946 (1991) na mga developer, ang laki ng patch ay 38 MB (ang mga pagbabagong naapektuhan ay 12102 (12090) na file, 538599 (868025) na linya ng code ang naidagdag, 333377 (261456) ang mga linya ay tinanggal). Humigit-kumulang 43% ng lahat ng mga pagbabagong ipinakilala sa 5.12 ay nauugnay sa mga driver ng device, humigit-kumulang 17% ng mga pagbabago ay nauugnay sa pag-update ng code na partikular sa mga arkitektura ng hardware, 12% ay nauugnay sa network stack, 5% ay nauugnay sa mga file system, at 4% ay nauugnay sa panloob na mga subsystem ng kernel.

Mga pangunahing inobasyon:

  • Disk subsystem, I/O at mga file system
    • Naipatupad na ang kakayahang mag-map ng mga user ID para sa mga naka-mount na file system (maaari mong i-map ang mga file ng isang user sa isang naka-mount na foreign partition kasama ng isa pang user sa kasalukuyang system). Ang pagmamapa ay suportado para sa FAT, ext4 at XFS file system. Pinapadali ng iminungkahing functionality ang pagbabahagi ng mga file sa pagitan ng iba't ibang user at sa iba't ibang computer, kabilang ang pagmamapa ay gagamitin sa systemd-homed portable home directory mechanism, na nagpapahintulot sa mga user na ilipat ang kanilang mga home directory sa external na media at gamitin ang mga ito sa iba't ibang computer, pagmamapa. mga user ID na hindi tumutugma. Ang isa pang kapaki-pakinabang na application ay upang ayusin ang pagkakaloob ng nakabahaging pag-access sa mga file mula sa isang panlabas na host, nang hindi aktwal na binabago ang data tungkol sa mga may-ari ng mga file sa file system.
    • Ang LOOKUP_CACHED patch ay pinagtibay sa kernel, na nagpapahintulot sa mga operasyon na matukoy ang isang file path mula sa espasyo ng user nang hindi hinaharangan, batay lamang sa data na available sa cache. Ang LOOKUP_CACHED mode ay isinaaktibo sa openat2() na tawag sa pamamagitan ng pagpasa sa RESOLVE_CACHED na flag, kung saan ang data ay inihahatid lamang mula sa cache, at kung ang pagtukoy ng landas ay nangangailangan ng access sa drive, ang EAGAIN error ay ibinalik.
    • Ang Btrfs file system ay nagdagdag ng paunang suporta para sa mga naka-zone na block device (mga device sa hard magnetic disk o NVMe SSDs, ang storage space kung saan nahahati sa mga zone na bumubuo sa mga grupo ng mga block o sektor, kung saan ang sunud-sunod na pagdaragdag ng data lamang ang pinapayagan, pag-update ng buong pangkat ng mga bloke). Sa read-only na mode, ipinapatupad ang suporta para sa mga block na may metadata at data na mas maliit kaysa sa isang page (subpage).
    • Sa F2FS file system, ang kakayahang piliin ang algorithm at antas ng compression ay naidagdag. Nagdagdag ng suporta para sa mataas na antas ng compression para sa LZ4 algorithm. Ipinatupad ang opsyon sa pag-mount ng checkpoint_merge.
    • Ang isang bagong ioctl command na FS_IOC_READ_VERITY_METADATA ay ipinatupad upang basahin ang metadata mula sa mga file na protektado ng fs-verity.
    • Ang kliyente ng NFS ay nagpapatupad ng "sabik" na write mode (writes=eager), kapag pinagana, ang mga operasyon sa pagsulat sa isang file ay agad na inililipat sa server, na nilalampasan ang cache ng pahina. Pinapayagan ka ng mode na ito na bawasan ang pagkonsumo ng memorya, nagbibigay ng agarang pagtanggap ng impormasyon tungkol sa pagtatapos ng libreng espasyo sa file system, at sa ilang mga sitwasyon ay ginagawang posible upang makamit ang mas mataas na pagganap.
    • Ang mga bagong opsyon sa pag-mount ay naidagdag sa CIFS (SMB): acregmax para kontrolin ang file caching at acdirmax para kontrolin ang directory metadata caching.
    • Sa XFS, pinagana ang multi-threaded quota checking mode, pinabilis ang fsync execution, at inihanda ang growfs code para ipatupad ang function na bawasan ang laki ng file system.
  • Mga serbisyo ng memorya at system
    • Ang DTMP (Dynamic Thermal Power Management) subsystem ay idinagdag, na nagbibigay-daan sa iyong dynamic na kontrolin ang paggamit ng kuryente ng iba't ibang device batay sa itinakdang mga pangkalahatang limitasyon sa temperatura.
    • Ang kakayahang bumuo ng kernel gamit ang Clang compiler na may kasamang mga optimization sa yugto ng pag-link (LTO, Link Time Optimization) ay ipinatupad. Naiiba ang mga pag-optimize ng LTO sa pamamagitan ng pagsasaalang-alang sa estado ng lahat ng mga file na kasangkot sa proseso ng pagbuo, habang ang mga tradisyonal na mode ng pag-optimize ay nag-o-optimize ng bawat file nang hiwalay at hindi isinasaalang-alang ang mga kundisyon para sa mga function ng pagtawag na tinukoy sa iba pang mga file. Halimbawa, sa LTO, ang inline na pag-deploy ay posible para sa mga function mula sa iba pang mga file, ang hindi nagamit na code ay hindi kasama sa executable file, ang pagsuri ng uri at pangkalahatang pag-optimize ay isinasagawa sa antas ng proyekto sa kabuuan. Ang suporta sa LTO ay kasalukuyang limitado sa x86 at ARM64 na mga arkitektura.
    • Posibleng pumili ng mga preemption mode (PREEMPT) sa task scheduler sa boot stage (preempt=none/voluntary/full) o habang nagtatrabaho sa pamamagitan ng mga debugf (/debug/sched_debug), kung ang PREEMPT_DYNAMIC na setting ay tinukoy sa pagbuo ng kernel. Dati, ang extrusion mode ay maaari lamang itakda sa antas ng mga parameter ng pagpupulong. Ang pagbabago ay nagpapahintulot sa mga distribusyon na magpadala ng mga kernel na may naka-enable na PREEMPT mode, na nagbibigay ng kaunting latency para sa mga desktop sa halaga ng isang maliit na parusa sa throughput, at kung kinakailangan ay bumalik sa PREEMPT_VOLUNTARY (isang intermediate mode para sa mga desktop) o PREEMPT_NONE (nagbibigay ng maximum throughput para sa mga server) .
    • Suporta para sa atomic operations BPF_ADD, BPF_AND, BPF_OR, BPF_XOR, BPF_XCHG at BPF_CMPXCHG ay naidagdag sa BPF subsystem.
    • Ang mga BPF program ay binibigyan ng kakayahang mag-access ng data sa stack gamit ang mga pointer na may mga variable na offset. Halimbawa, kung dati ay maaari ka lamang gumamit ng isang palaging index ng elemento upang ma-access ang isang array sa stack, ngayon ay maaari kang gumamit ng isang nagbabago. Ang kontrol sa pag-access sa loob lamang ng mga umiiral na hangganan ay isinasagawa ng taga-verify ng BPF. Available lang ang feature na ito sa mga privileged program dahil sa mga alalahanin tungkol sa pagsasamantala sa mga kahinaan sa pagpapatupad ng speculative code.
    • Idinagdag ang kakayahang mag-attach ng mga programa ng BPF sa mga walang laman na tracepoint na hindi nauugnay sa mga trace na kaganapan na nakikita sa espasyo ng user (hindi ginagarantiyahan ang pagpapanatili ng ABI para sa mga naturang tracepoint).
    • Ang suporta para sa CXL 2.0 (Compute Express Link) bus ay ipinatupad, na ginagamit upang ayusin ang mataas na bilis ng interaksyon sa pagitan ng CPU at mga memory device (nagbibigay-daan sa iyong gumamit ng mga external memory device bilang bahagi ng RAM o permanenteng memorya, na parang ang memorya na ito ay konektado sa pamamagitan ng isang karaniwang memory controller sa CPU).
    • Idinagdag ang driver ng nvmem upang kunin ang data mula sa mga lugar ng memorya na nakalaan sa firmware na hindi direktang naa-access sa Linux (halimbawa, EEPROM memory na pisikal na naa-access lamang sa firmware, o data na naa-access lamang sa panahon ng maagang yugto ng pag-boot).
    • Ang suporta para sa "oprofile" na sistema ng pag-profile ay inalis, na hindi malawakang ginagamit at napalitan ng mas modernong mekanismo ng perf.
    • Ang io_uring asynchronous na I/O na interface ay nagbibigay ng integrasyon sa mga cgroup na kumokontrol sa paggamit ng memorya.
    • Sinusuportahan ng arkitektura ng RISC-V ang mga NUMA system, gayundin ang mga mekanismo ng kprobes at uprobes.
    • Idinagdag ang kakayahang gamitin ang kcmp() system call anuman ang functionality ng mga snapshot ng estado ng proseso (checkpoint/restore).
    • Ang EXPORT_UNUSED_SYMBOL() at EXPORT_SYMBOL_GPL_FUTURE() na mga macro, na hindi ginagamit sa pagsasanay sa loob ng maraming taon, ay inalis.
  • Virtualization at Seguridad
    • Idinagdag ang mekanismo ng proteksyon ng KFence (Kernel Electric Fence), na nakakakuha ng mga error kapag nagtatrabaho gamit ang memory, tulad ng mga overrun ng buffer at pag-access pagkatapos ma-freeze ang memory. Hindi tulad ng mekanismo ng pag-debug ng KASAN, ang subsystem ng KFence ay nailalarawan sa pamamagitan ng mataas na bilis ng pagpapatakbo at mababang overhead, na nagpapahintulot sa iyo na mahuli ang mga error sa memorya na lumilitaw lamang sa mga gumaganang system o sa panahon ng pangmatagalang operasyon.
    • Nagdagdag ng suporta para sa ACRN hypervisor, na isinulat nang may mata sa kahandaan para sa mga real-time na gawain at pagiging angkop para sa paggamit sa mga sistemang kritikal sa misyon. Nagbibigay ang ACRN ng kaunting overhead, ginagarantiyahan ang mababang latency at sapat na pagtugon kapag nakikipag-ugnayan sa kagamitan. Sinusuportahan ang virtualization ng CPU resources, I/O, network subsystem, graphics at sound operations. Maaaring gamitin ang ACRN upang magpatakbo ng maraming nakahiwalay na virtual machine sa mga electronic control unit, instrument panel, automotive information system, consumer IoT device at iba pang naka-embed na teknolohiya. Sinusuportahan ng ACRN ang dalawang uri ng mga guest system - mga privileged Service VM, na ginagamit upang pamahalaan ang mga mapagkukunan ng system (CPU, memory, I/O, atbp.), at mga custom na User VM, na maaaring magpatakbo ng mga pamamahagi ng Linux, Android at Windows.
    • Sa subsystem ng IMA (Integrity Measurement Architecture), na nagpapanatili ng hash database para sa pagsuri sa integridad ng mga file at nauugnay na metadata, nagiging posible na ngayong suriin ang integridad ng data ng kernel mismo, halimbawa, upang subaybayan ang mga pagbabago sa mga panuntunan ng SELinux .
    • Ang kakayahang maharang ang mga hypercall ng Xen at ipasa ang mga ito sa emulator na tumatakbo sa espasyo ng user ay naidagdag sa KVM hypervisor.
    • Nagdagdag ng kakayahang gamitin ang Linux bilang root environment para sa Hyper-V hypervisor. Ang root environment ay may direktang access sa hardware at ginagamit para magpatakbo ng mga guest system (katulad ng Dom0 sa Xen). Hanggang ngayon, sinusuportahan lang ng Hyper-V (Microsoft Hypervisor) ang Linux sa mga guest environment, ngunit ang hypervisor mismo ay kinokontrol mula sa isang Windows-based na environment.
    • Nagdagdag ng suporta para sa inline na pag-encrypt para sa mga eMMC card, na nagbibigay-daan sa iyong gumamit ng mga mekanismo ng pag-encrypt na nakapaloob sa drive controller na malinaw na nag-e-encrypt at nagde-decrypt ng I/O.
    • Ang suporta para sa RIPE-MD 128/256/320 at Tiger 128/160/192 hash, na hindi ginagamit sa core, pati na rin ang Salsa20 stream cipher, na pinalitan ng ChaCha20 algorithm, ay inalis mula sa subsystem ng crypto. Na-update ang algorithm ng blake2 upang ipatupad ang mga blake2.
  • Subsystem ng network
    • Idinagdag ang kakayahang ilipat ang NAPI polling handler para sa mga network device sa isang hiwalay na kernel thread, na nagbibigay-daan para sa pinahusay na pagganap para sa ilang uri ng workload. Dati, ang botohan ay isinagawa sa konteksto ng softirq at hindi sakop ng task scheduler, na nagpahirap sa pagsasagawa ng mga pinong pag-optimize upang makamit ang pinakamataas na pagganap. Ang pagpapatupad sa isang hiwalay na kernel thread ay nagbibigay-daan sa polling handler na maobserbahan mula sa espasyo ng user, na naka-attach sa mga indibidwal na CPU core, at isinasaalang-alang kapag nag-iiskedyul ng paglipat ng gawain. Upang paganahin ang bagong mode sa sysfs, iminungkahi ang /sys/class/net//threaded parameter.
    • Pagsasama sa core ng MPTCP (MultiPath TCP), isang extension ng TCP protocol para sa pag-aayos ng operasyon ng isang koneksyon sa TCP sa paghahatid ng mga packet nang sabay-sabay kasama ang ilang mga ruta sa pamamagitan ng iba't ibang mga interface ng network na nauugnay sa iba't ibang mga IP address. Ang bagong release ay nagdaragdag ng kakayahang magtalaga ng priyoridad sa ilang partikular na thread, na nagbibigay-daan, halimbawa, upang ayusin ang gawain ng mga backup na thread na naka-on lang kung may mga problema sa pangunahing thread.
    • Nagdaragdag ang IGMPv3 ng suporta para sa mekanismo ng EHT (Explicit Host Tracking).
    • Ang packet filtering engine ng Netfilter ay nagbibigay ng kakayahang magmay-ari ng ilang partikular na talahanayan upang makakuha ng eksklusibong kontrol (halimbawa, ang proseso ng background ng firewall ay maaaring magkaroon ng pagmamay-ari ng ilang mga talahanayan, na pumipigil sa sinumang makagambala sa kanila).
  • ΠžΠ±ΠΎΡ€ΡƒΠ΄ΠΎΠ²Π°Π½ΠΈΠ΅
    • Nilinis namin ang mga lipas na at hindi pinapanatili na mga platform ng ARM. Ang code para sa efm32, picoxcell, prima2, tango, u300, zx at c6x platform, pati na rin ang kanilang mga nauugnay na driver, ay inalis na.
    • Ang amdgpu driver ay nagbibigay ng kakayahang mag-overclock (OverDrive) card batay sa Sienna Cichlid GPU (Navi 22, Radeon RX 6xxx). Nagdagdag ng suporta para sa FP16 pixel na format para sa DCE (display controller engine) mula ika-8 hanggang ika-11 henerasyon. Para sa GPU Navy Flounder (Navi 21) at APU Van Gogh, naipatupad na ang kakayahang i-reset ang GPU.
    • Ang driver ng i915 para sa mga Intel graphics card ay nagpapatupad ng parameter na i915.mitigations upang hindi paganahin ang mga mekanismo ng paghihiwalay at proteksyon sa pabor sa pinabuting pagganap. Para sa mga chip na nagsisimula sa Tiger Lake, kasama ang suporta para sa mekanismo ng VRR (Variable Rate Refresh), na nagbibigay-daan sa iyong adaptive na baguhin ang refresh rate ng monitor upang matiyak ang kinis at walang gaps sa panahon ng mga laro. Ang suporta para sa teknolohiya ng Intel Clear Color ay kasama para sa pinahusay na katumpakan ng kulay. Nagdagdag ng suporta para sa DP-HDMI 2.1. Naipatupad na ang kakayahang kontrolin ang backlight ng mga panel ng eDP. Para sa mga Gen9 GPU na may suporta sa LSPCON (Level Shifter at Protocol Converter), naka-enable ang suporta sa HDR.
    • Ang nouveau driver ay nagdaragdag ng paunang suporta para sa mga NVIDIA GPU batay sa GA100 (Ampere) na arkitektura.
    • Ang msm driver ay nagdaragdag ng suporta para sa Adreno 508, 509 at 512 GPU na ginagamit sa SDM (Snapdragon) 630, 636 at 660 chips.
    • Nagdagdag ng suporta para sa Sound BlasterX AE-5 Plus, Lexicon I-ONIX FW810s at Pioneer DJM-750 sound card. Nagdagdag ng suporta para sa Intel Alder Lake PCH-P audio subsystem. Ang suporta para sa software simulation ng pagkonekta at pagdiskonekta sa isang audio connector ay ipinatupad para sa pag-debug ng mga humahawak sa espasyo ng user.
    • Nagdagdag ng suporta para sa Nintendo 64 game consoles na ginawa mula 1996 hanggang 2003 (ang mga nakaraang pagtatangka na i-port ang Linux sa Nintendo 64 ay hindi nakumpleto at inuri bilang Vaporware). Ang motibasyon para sa paglikha ng isang bagong port para sa isang hindi napapanahong platform, na hindi pa inilabas sa loob ng halos dalawampung taon, ay ang pagnanais na pasiglahin ang pagbuo ng mga emulator at pasimplehin ang pag-port ng mga laro.
    • Nagdagdag ng driver para sa Sony PlayStation 5 DualSense game controller.
    • Nagdagdag ng suporta para sa mga ARM board, device at platform: PineTab, Snapdragon 888 / SM8350, Snapdragon MTP, Two Beacon EmbeddedWorks, Intel eASIC N5X, Netgear R8000P, Plymovent M2M, Beacon i.MX8M Nano, NanoPi M4B.
    • Nagdagdag ng suporta para sa Purism Librem5 Evergreen, Xperia Z3+/Z4/Z5, ASUS Zenfone 2 Laser, BQ Aquaris X5, OnePlus6, OnePlus6T, Samsung GT-I9070 na mga smartphone.
    • Nagdagdag ng bcm-vk driver para sa Broadcom VK accelerator boards (halimbawa, Valkyrie at Viper PCIe boards), na maaaring magamit upang i-offload ang audio, video at mga operasyon sa pagpoproseso ng imahe, pati na rin ang mga operasyong nauugnay sa pag-encrypt, sa isang hiwalay na device.
    • Nagdagdag ng suporta para sa platform ng Lenovo IdeaPad na may kakayahang kontrolin ang patuloy na pag-charge at backlight ng keyboard. Ibinibigay din ang suporta para sa profile ng ACPI ng ThinkPad platform na may kakayahang kontrolin ang mga mode ng pagkonsumo ng kuryente. Nagdagdag ng driver para sa Lenovo ThinkPad X1 Tablet Gen 2 HID subsystem.
    • Nagdagdag ng ov5647 driver na may suporta para sa module ng camera para sa Raspberry Pi.
    • Nagdagdag ng suporta para sa RISC-V SoC FU740 at HiFive Unleashed boards. Ang isang bagong driver para sa Kendryte K210 chip ay naidagdag din.

Pinagmulan: opennet.ru

Magdagdag ng komento