Pärast kahte kuud arendust tutvustas Linus Torvalds Linuxi 5.12 tuuma väljalaskmist. Kõige märgatavamate muudatuste seas on: zoniseeritud plokkseadmete tugi Btrfs-is, kasutaja-ID-de kaardistamise võimalus FS-ile, aegunud ARM-arhitektuuride puhastamine, "kärsitute" kirjutamisrežiim NFS-is, mehhanism LOOKUP_CACHED failiteede määramiseks vahemälust, atomaarsete käskluste tugi BPF-is, vigade leidmise süsteem KFENCE mälutöös, NAPI pollimise režiim, mis töötab tuuma eraldi thread’is võrgustiku kuhjas, hüperviisor ACRN, reaalajas preempt-mudeli muutmise võimalus ülesande planeerijates ja LTO-optimeerimiste tugi Clangis kogumise ajal.
Uude versiooni on võetud 14170 parandust (eelmisel väljalaskmisel 15480) 1946 (1991) arendajalt, plaadi suurus on 38 MB (muudatused puudutasid 12102 (12090) faili, lisatud 538599 (868025) koodirida, eemaldatud 333377 (261456) rida). Umbes 43% kõikidest 5.12 muudatustest on seotud seadme draiveritega, umbes 17% muudatustest on seotud kodeerimise värskendusega, mis on spetsiifiline riistvaraarhitektuuridele, 12% on seotud võrgustiku kuhjaga, 5% -ga failisüsteemidest ja 4% -ga tuuma sisemiste alamsüsteemide kohta.
Peamised uuendused:
- Diskisüsteem, sisend/väljund ja failisüsteemid
- Rakendatud on kasutaja-ID-de kaardistamise võimalus ühendatud failisüsteemidele (võimalik on kaardistada ühe kasutaja failid ühendatud võõraste osadega teise kasutajaga praeguses süsteemis). Kaardistamine toetab FAT, ext4 ja XFS failisüsteeme. Pakutud funktsionaalsus lihtsustab failide jagamist erinevate kasutajate ja erinevate arvutite vahel, sealhulgas kaardistamine rakendatakse systemd-homed mehhanismis, andes kasutajatele võimaluse oma kodukatalooge liikuvatele mäluseadmetele liigutada ja kasutada neid erinevates arvutites, millel ei ole sama kasutaja-ID-de jaotust. Teine kasulik rakendus on failide jagamise korraldamine välises hostis ilma, et tegelikke andmeid failide omanike kohta failisüsteemis muudetaks.
- Ytu core'isse on vastu võetud patch'id LOOKUP_CACHED, mis võimaldavad kasutaja ruumist teostada failide teeseente määramise operatsioone ilma blokeerimiseta, tuginedes üksnes vahemikus olevatele andmetele. LOOKUP_CACHED režiim aktiveeritakse funktsiooni openat2() kutsumisel, edastades lipu RESOLVE_CACHED, mille puhul andmed tarnitakse ainult vahemikust, ja kui tee määramine nõuab andmekandjale pöördumist, tagastatakse viga EAGAIN.
- Failisüsteemis Btrfs on lisatud esmane tugi tsoonitud plokkseadmete jaoks (seadmed kõvaketastes või NVMe SSD-des, mille salvestusruum on jagatud tsoonideks, mis koosnevad plokkide või sektorite rühmadest, kuhu on lubatud vaid järjestikune andmete lisamine kogu grupi plokkide uuendamisega). Ainult lugemisrežiimis on rakendatud toe plokkide metainfoga ja andmetega, mille suurus on väiksem lehe suurusest (alampeegel).
- Failisüsteemis F2FS on lisatud võimalus valida algoritmi ja tihenduse taset. LZ4 algoritmi jaoks on lisatud kõrge tihenduse tugi. On rakendatud checkpoint_merge paigaldusvalik.
- Rakendatud on uus ioctl-käsk FS_IOC_READ_VERITY_METADATA, et lugeda metsandusi failidest, mis on kaitstud fs-verity abil.
- NFS kliendis on rakendatud 'äkilise' kirjutamise režiim (writes=eager), mille aktiveerimisel edastatakse faili kirjutamise operatsioonid kohe serverile, möödudes lehekülje vahemikust. Antud režiim vähendab mälu kasutamist, tagab kohese teabe saadaoleva ruumi kohta failisüsteemis ning mõnel juhul võimaldab saavutada paremat jõudlust.
- CIFS (SMB) on lisatud uued paigalduse valikud: acregmax failide vahemälu haldamiseks ja acdirmax kataloogide metainfode vahemälu haldamiseks.
- XFS-is on aktiveeritud mitme niidi kvootide kontrollimise režiim, kiirendatud on fsync'i teostamine, ning on valmistatud ette growfs koodi failisüsteemi suuruse vähendamise funktsiooni rakendamiseks.
- Mälu ja süsteemiteenused
- On lisatud süsteem DTMP (Dynamic Thermal Power Management), mis võimaldab dünaamiliselt reguleerida erinevate seadmete energiatarbimist vastavalt seatud temperatuuripiirangutele.
- On Clang compiler, the ability to build the kernel with optimizations at the linking stage (LTO, Link Time Optimization) has been implemented. LTO optimizations consider the state of all files involved in the build process, while traditional optimization modes optimize each file separately and do not take into account the conditions of function calls defined in other files. For example, with LTO, functions from other files can be inlined, unused code is excluded from the executable file, type checking is performed, and overall optimization is carried out at the project level. Support for LTO is currently limited to x86 and ARM64 architectures.
- The option to select preemption modes (PREEMPT) in the task scheduler at boot time (preempt=none/voluntary/full) or during runtime via debugfs (/debug/sched_debug) has been provided when specifying the PREEMPT_DYNAMIC setting during kernel build. Previously, the preemption mode could only be set at the build parameter level. This change allows distributions to deliver kernels with the PREEMPT mode enabled, providing minimal latency for desktops at the cost of a slight decrease in throughput, and, if necessary, revert to PREEMPT_VOLUNTARY (intermediate mode for desktops) or PREEMPT_NONE (providing maximum throughput for serverid).
- The BPF subsystem has added support for atomic operations BPF_ADD, BPF_AND, BPF_OR, BPF_XOR, BPF_XCHG, and BPF_CMPXCHG.
- BPF programs have been granted access to stack data via variable offset pointers. For instance, while previously only a fixed element index could be used to access an array on the stack, now a variable index can be utilized. Access control is enforced within the existing bounds by the BPF verifier. This capability is available only to privileged programs due to concerns about exploiting vulnerabilities related to speculative code execution.
- The ability to attach BPF programs to 'bare' tracepoints, which are not associated with user-space visible tracing events, has been added (ABI preservation is not guaranteed for such tracepoints).
- CXL 2.0 (Compute Express Link) toetus on rakendatud, mida kasutatakse CPU ja mälu seadmete vahelise kiire kommunikatsiooni korraldamiseks (see võimaldab kasutada väliseid mäluseadmeid nagu osa RAM-ist või püsimälust, nagu oleks see mälu ühendatud CPU tavapärase mälu kontrolleriga).
- Lisatud nvmem draiver, et saada andmeid mälupiirkondadest, mis on reserveeritud püsivara kaudu ja mis ei ole Linuxile otseselt ligipääsetavad (nt EEPROM-mälu, mis on füüsiliselt kättesaadav ainult püsivara jaoks, või andmed, mis on kättesaadavad ainult alglaadimise varases faasis).
- Profiilimissüsteemi «oprofile» tugi on eemaldatud, kuna see ei saanud laialdast levikut ja on asendatud kaasaegse perf mehhanismiga.
- Asünkroonse I/O io_uring liideses on tagatud integratsioon cgroupidega, mis kontrollivad mälu kasutamist.
- RISC-V arhitektuuril on rakendatud NUMA süsteemide tugi ning kprobes ja uprobes mehhanismid.
- Lisatud on võimekus kasutada süsteemikutsungit kcmp() sõltumatult protsesside olekukopeerimise (checkpoint/restore) funktsionaalsusest.
- Eemaldatud on makrod EXPORT_UNUSED_SYMBOL() ja EXPORT_SYMBOL_GPL_FUTURE(), mis ei ole juba aastaid praktikas kasutuses olnud.
- Virtualiseerimine ja turvalisus
- KFence (Kernel Electric Fence) kaitsemehhanism on lisatud, mis tuvastab mälu töötamise vigu, nagu bufrist väljumine ja mälu pärast vabastamist juurde pääsemine. Erinevalt KASAN töösüsteemide vigade tuvastamise mehhanismist on KFence alamsüsteemil kõrge töökiirus ja madalad kulud, mis võimaldab tuvastada mälu töötamise vigu, mis ilmnevad ainult töö. süsteemides või pikaajalise tegevuse käigus.
- ACRN hypervisori tugi on lisatud, mis on loodud reaalaegsete ülesannete täitmise ja kriitiliselt tähtsates süsteemides kasutamiseks. ACRN tagab minimaalsed kulud, garanteerib madalad latentsusajad ja piisava reaktsioonikiirus seadmetega suhtlemisel. Toetatakse CPU, I/O, võrgusüsteemide, graafika ja heli ressursside virtualiseerimist. ACRN-i saab kasutada mitme isoleeritud süsteemi käitamiseks. virtuaalmasinate elektroniliste juhtimisseadmete, armatuurlaudade, autoinfo süsteemide, tarbija IoT-seadmete ja muu sisseehitatud tehnika. ACRN toetab kahte tüüpi külalisplaate - privileegitud Service VM, mida kasutatakse süsteemi ressursside (CPU, mälu, sisend/väljund jne) haldamiseks, ja kasutajatüüpi User VM, kus saab käivitada Linuxi distributsioone, Androidi ja Windowsi.
- IMA (Integrity Measurement Architecture) alamsüsteemis, mis tagab failide ja sellega seotud metaandmete terviklikkuse kontrollimise jaoks hashide baasi säilitamise, on nüüd loodud võimalus kontrollida ka tuuma enda andmete terviklikkust, näiteks SELinuxi reeglite muudatuste jälgimiseks.
- KVM hüpervisori on lisatud võimalus Xen hüperkutsed püüda ja edastada kasutajaruumi töötavale emulaatorile.
- Linuxi kasutuselevõtt juurekeskkonnana Hyper-V hüpervisori jaoks on nüüd võimalik. Juurekeskkond omab otsest ligipääsu riistvarale ja seda kasutatakse külalisplaadide käivitamiseks (sarnane Dom0 Xenis). Varem toetas Hyper-V (Microsoft Hypervisor) Linuxit vaid külaliskeskkondades, samas kui hüpervisorit haldati Windowsi põhises keskkonnas.
- Inline-krüpteerimise tugi eMMC kaardile on lisatud, mis võimaldab kasutusele võtta salvestustootja kontrolleri sisse ehitatud krüpteerimismehhanisme, mis teostavad sisendi/väljundi läbipaistvat krüpteerimist ja dekrüpteerimist.
- Krüptosüsteemist on eemaldatud kasutusest väljajäänud RIPE-MD 128/256/320 ja Tiger 128/160/192 hashide ning Salsa20 voogkrüptimise tugi, mille asendas algoritm ChaCha20. blake2 algoritm on uuendatud blake2s teostuseks.
- Võrgusüsteem
- NAPI polling töötluse viimise võimalus on lisatud, et võrguseadmeid saaks töödelda eraldi tuumas, mis võimaldab teatud tüüpi koormuse korral parandada jõudlust. Varem tehti poolus softirq kontekstis ja seda ei hõlmanud tööülesannete ajastamine, muutes täpsete optimeerimiste tegemise keeruliseks maksimaalse jõudluse saavutamiseks. Eraldi tuumas töötamine võimaldab jälgida pooluse töötlejat kasutajaruumi, siduda see eraldi CPU tuumadega ja arvesse võtta tööülesannete ajastamisel. Uue režiimi sisselülitamiseks on sysfs'is ette nähtud parameeter /sys/class/net//threaded.
- Jätkub MPTCP (MultiPath TCP) tuuma integreerimine, mis on TCP protokolli laiendus, et korraldada TCP-ühenduse tööd, edastades pakette samal ajal mitmete marsruutide kaudu erinevate võrguinterfeisside kaudu, mis on seotud erinevate IP-aadressidega. Uues väljaandes on lisatud võimalus seostada prioriteet teatud voogudega, mis võimaldab näiteks korraldada varuvoogude tööd, mis aktiveeruvad ainult siis, kui esmane voog ei toimi.
- IGMPv3-s on lisatud tugi EHT (Explicit Host Tracking) mehhanismile.
- Pakettide filtreerimise mehhanismis netfilter on rakendatud võimalus omada teatud tabeleid, et saada eksklusiivne kontroll (näiteks võib tulemüür taotleda teatud tabelite omamist, keelates kellelgi muul sekkumise).
- Varustus
- Omandatud on välja vananenud ja hoolduseta ARM platvormid. Eemaldatud on efm32, picoxcell, prima2, tango, u300, zx ja c6x platvormide kood ning nendega seotud draiverid.
- Draiveris amdgpu on rakendatud võimalus üleklõpsata (OverDrive) Sienna Cichlid (Navi 22, Radeon RX 6xxx) GPU-dele. Lisatud on FP16 piksliformaadi tugi DCE-le (display controller engine) 8. kuni 11. põlvkonnas. GPU Navy Flounder (Navi 21) ja APU Van Gogh puhul on rakendatud GPU lähtestamise võimalus.
- Intel videokaartide draiveris i915 on rakendatud i915.mitigations parameeter, et välja lülitada isolatsiooni ja kaitse mehhanismid, et tõsta jõudlust. Tiger Lake'i kiipide puhul on lisatud tugi VRR (Variable Rate Refresh) mehhanismile, mis võimaldab kohandada monitori värskendussagedust mängude sujuvuse tagamiseks. Aktiveeritud on Intel Clear Color tehnoloogia tugi, et suurendada värviedastuse täpsust. Lisatud on DP-HDMI 2.1 tugi. Rakendatud on eDP paneelide valgustuse juhtimise võimalus. Gen9 GPU-de jaoks, millel on LSPCON (Level Shifter and Protocol Converter) tugi, on lisatud HDR.
- Draiveris nouveau on lisatud algtugi NVIDIA GPU-dele, mis põhinevad GA100 (Ampere) arhitektuuril.
- Draiveris msm on lisatud tugi GPU Adreno 508, 509 ja 512-le, mida kasutatakse SDM (Snapdragon) 630, 636 ja 660 kiipides.
- Lisatud on tugi helikaartidele Sound BlasterX AE-5 Plus, Lexicon I-ONIX FW810s ja Pioneer DJM-750. Lisatud on Intel Alder Lake PCH-P heliallkasti tugi. Rakendatud on helipistiku ühendamise ja katkestamise simuleerimise tugi, et testida kasutajaruumi töötlejat.
- Lisatud tugi Nintendo 64 mängukonsoolidele, mis ilmusid 1996–2003. aastatel (varasemad katsed portida Linux Nintendo 64-le ei viidud lõpule ja olid staatusega vaporware). Uue porti loomise motiiviks vananenud platvormile, mida pole toodetud juba peaaegu kakskümmend aastat, on soov edendada emulaatoreid ja lihtsustada mängude portimist.
- Lisatud juhtmega mängupult Sony PlayStation 5 DualSense.
- Lisatud ARM-platvormide, seadmete ja platvormide tugi: PineTab, Snapdragon 888 / SM8350, Snapdragon MTP, Two Beacon EmbeddedWorks, Intel eASIC N5X, Netgear R8000P, Plymovent M2M, Beacon i.MX8M Nano, NanoPi M4B.
- Lisatud toetust nutitelefonidele Purism Librem5 Evergreen, Xperia Z3+/Z4/Z5, ASUS Zenfone 2 Laser, BQ Aquaris X5, OnePlus6, OnePlus6T, Samsung GT-I9070.
- Lisatud bcm-vk draiver Broadcom VK kiirenduspindade jaoks (nt PCIe plaadid Valkyrie ja Viper), mida saab kasutada eraldi seadmes heli, video ja piltide töötlemise ning krüptimisega seotud toimingute väljatoomiseks.
- Lisatud tugi Lenovo IdeaPadi platvormide jaoks, mis võimaldab pidevat laadimist ja klaviatuuri valgustust juhtida. Samuti on tagatud ACPI profiili tugi ThinkPadi platvormidel, mis võimaldab juhtida energiatõhususe režiime. Lisatud draiver Lenovo ThinkPad X1 Tablet Gen 2 HID-süsteemi jaoks.
- Lisatud ov5647 draiver kaameramooduli toega Raspberry Pi-le.
- Lisatud tugi RISC-V SoC FU740 ja HiFive Unleashed plaatidele. Samuti on lisatud uus draiver Kendryte K210 kiibi jaoks.
Allikas: opennet.ru
