Na twee maande van ontwikkeling het Linus Torvalds die kern vrygestel. Linux 5.12. Van die mees noemenswaardige veranderinge: ondersteuning vir gesoneerde bloktoestelle in Btrfs, die vermoë om gebruikers-ID's aan lêerstelsels te karteer, die skoonmaak van ouer ARM-argitekture, gretige skryfmodus in NFS, die LOOKUP_CACHED-meganisme vir die bepaling van lêerpaaie vanaf die kas, ondersteuning vir atoominstruksies in BPF, die KFENCE-ontfoutingstelsel vir die opsporing van foute in geheuehantering, 'n NAPI-pollingmodus in die netwerkstapel wat in 'n aparte kerndraad loop, die ACRN-hipervisor, die vermoë om die preempt-model onmiddellik in die taakskeduleerder te verander, en ondersteuning vir LTO-optimalisering wanneer in Clang gebou word.
Die nuwe weergawe bevat 14170 (in die vorige weergawe 15480) regstellings van 1946 (1991) ontwikkelaars, die pleistergrootte is 38 MB (die veranderinge wat 12102 (12090) lêers geraak word, 538599 (868025) kodereëls is bygevoeg, (333377) reëls is uitgevee). Ongeveer 261456% van alle veranderinge wat in 43 aangebring is, hou verband met toestelbestuurders, ongeveer 5.12% van veranderinge hou verband met die opdatering van kode spesifiek vir hardeware-argitekture, 17% hou verband met die netwerkstapel, 12% hou verband met lêerstelsels en 5% hou verband met interne kernsubstelsels.
Belangrikste innovasies:
- Skyfsubstelsel, I/O en lêerstelsels
- Die vermoë om gebruikers-ID's vir gemonteerde lêerstelsels te karteer is geïmplementeer (jy kan lêers van een gebruiker op 'n gemonteerde vreemde partisie met 'n ander gebruiker op die huidige stelsel karteer). Kartering word ondersteun vir FAT-, ext4- en XFS-lêerstelsels. Die voorgestelde funksionaliteit maak dit makliker om lêers tussen verskillende gebruikers en op verskillende rekenaars te deel, insluitend kartering sal gebruik word in die systemd-homed draagbare tuisgidsmeganisme, wat gebruikers toelaat om hul tuisgidse na eksterne media te skuif en dit op verskillende rekenaars te gebruik, kartering gebruiker-ID's waarmee nie ooreenstem nie. Nog 'n nuttige toepassing is om die verskaffing van gedeelde toegang tot lêers vanaf 'n eksterne gasheer te organiseer, sonder om werklik die data oor die eienaars van die lêers in die lêerstelsel te verander.
- Die LOOKUP_CACHED-kolle is in die kern aangeneem, wat bewerkings toelaat om 'n lêerpad van gebruikersspasie te bepaal sonder om te blokkeer, slegs gebaseer op die data wat in die kas beskikbaar is. Die LOOKUP_CACHED-modus word in die openat2()-oproep geaktiveer deur die RESOLVE_CACHED-vlag deur te gee, waarin data slegs vanaf die kas bedien word, en as die padbepaling toegang tot die aandrywer vereis, word die EAGAIN-fout teruggestuur.
- Die Btrfs-lêerstelsel het aanvanklike ondersteuning bygevoeg vir gesoneerde bloktoestelle (toestelle op harde magnetiese skywe of NVMe SSD's, die stoorspasie waarin verdeel is in sones wat groepe blokke of sektore uitmaak, waarby slegs opeenvolgende byvoeging van data toegelaat word, die hele groep blokke by te werk). In leesalleenmodus word ondersteuning vir blokke met metadata en data kleiner as 'n bladsy (subbladsy) geïmplementeer.
- In die F2FS-lêerstelsel is die vermoë om die algoritme en kompressievlak te kies bygevoeg. Bygevoeg ondersteuning vir hoë vlak kompressie vir die LZ4 algoritme. Het die checkpoint_merge-monteringsopsie geïmplementeer.
- 'n Nuwe ioctl-opdrag FS_IOC_READ_VERITY_METADATA is geïmplementeer om metadata te lees van lêers wat met fs-verity beskerm is.
- Die NFS-kliënt implementeer 'n "gretig" skryfmodus (skryf=gretig), wanneer dit geaktiveer is, word skryfbewerkings na 'n lêer onmiddellik na die bediener oorgedra en die bladsykas omseil. Hierdie modus laat jou toe om geheueverbruik te verminder, verskaf onmiddellike ontvangs van inligting oor die einde van vrye spasie in die lêerstelsel, en maak dit in sommige situasies moontlik om verhoogde werkverrigting te behaal.
- Nuwe bergopsies is by CIFS (SMB) gevoeg: acregmax om lêerkas te beheer en acdirmax om gidsmetadatakas te beheer.
- In XFS is multi-threaded kwota kontrolering modus geaktiveer, fsync uitvoering is versnel, en growfs kode is voorberei om die funksie van die vermindering van die grootte van die lêerstelsel te implementeer.
- Geheue en stelseldienste
- Die DTMP (Dynamic Thermal Power Management) substelsel is bygevoeg, wat jou toelaat om die kragverbruik van verskillende toestelle dinamies te reguleer op grond van die gestelde algemene temperatuurlimiete.
- Die vermoë om die kern te bou met behulp van die Clang-samesteller met die insluiting van optimaliserings by die koppelingstadium (LTO, Link Time Optimization) is geïmplementeer. LTO-optimalisasies verskil deur die toestand van alle lêers wat by die bouproses betrokke is, in ag te neem, terwyl tradisionele optimaliseringsmodusse elke lêer afsonderlik optimaliseer en nie die voorwaardes vir die oproep van funksies wat in ander lêers gedefinieer is, in ag neem nie. Byvoorbeeld, met LTO is inlyn-ontplooiing moontlik vir funksies van ander lêers, ongebruikte kode word nie by die uitvoerbare lêer ingesluit nie, tipe kontrolering en algemene optimalisering word op die projekvlak as geheel uitgevoer. LTO-ondersteuning is tans beperk tot x86- en ARM64-argitekture.
- Die vermoë om preemptie-modusse (PREEMPT) te kies, is nou beskikbaar in die taakskeduleerder tydens opstart (preempt=geen/vrywillig/vol) of tydens uitvoering via debugfs (/debug/sched_debug), indien die PREEMPT_DYNAMIC-instelling tydens kernsamestelling gespesifiseer is. Voorheen kon die preemptie-modus slegs op die bouparametervlak gespesifiseer word. Hierdie verandering laat verspreidings toe om kerns met PREEMPT geaktiveer te verskeep, wat minimale latensie vir rekenaars bied ten koste van 'n effense afname in deurset, en, indien nodig, terug te val na PREEMPT_VOLUNTARY (’n intermediêre modus vir rekenaars) of PREEMPT_NONE (wat maksimum deurset bied vir bedieners).
- Ondersteuning vir atoombedrywighede BPF_ADD, BPF_AND, BPF_OR, BPF_XOR, BPF_XCHG en BPF_CMPXCHG is by die BPF-substelsel gevoeg.
- BPF-programme kry die vermoë om toegang tot data op die stapel te kry met behulp van wysers met veranderlike afwykings. Byvoorbeeld, as jy voorheen net 'n konstante element-indeks kon gebruik om toegang tot 'n skikking op die stapel te kry, kan jy nou 'n veranderende een gebruik. Toegangsbeheer slegs binne die bestaande grense word deur die BPF-verifieerder uitgevoer. Hierdie kenmerk is slegs beskikbaar vir bevoorregte programme as gevolg van kommer oor die uitbuiting van spekulatiewe kode-uitvoering kwesbaarhede.
- Die vermoë bygevoeg om BPF-programme aan kaal spoorpunte te heg wat nie geassosieer word met spoorgebeurtenisse wat in gebruikersruimte sigbaar is nie (ABI-bewaring word nie vir sulke spoorpunte gewaarborg nie).
- Ondersteuning vir die CXL 2.0 (Compute Express Link) bus is geïmplementeer, wat gebruik word om hoëspoed interaksie tussen die SVE en geheue toestelle te organiseer (laat jou toe om eksterne geheue toestelle te gebruik as deel van RAM of permanente geheue, asof hierdie geheue is deur 'n standaardgeheuebeheerder in die SVE gekoppel).
- Het nvmem-drywer bygevoeg vir die herwinning van data uit firmware-gereserveerde geheuegebiede wat nie direk toeganklik is nie. Linux (byvoorbeeld, EEPROM-geheue wat fisies slegs toeganklik is vir die firmware, of data wat slegs toeganklik is in 'n vroeë stadium van opstart).
- Ondersteuning vir die "oprofile"-profielstelsel is verwyder, wat nie wyd gebruik is nie en vervang is deur die meer moderne perf-meganisme.
- Die io_uring asynchrone I/O-koppelvlak bied integrasie met cgroups wat geheuegebruik beheer.
- Die RISC-V-argitektuur ondersteun NUMA-stelsels, sowel as kprobes en uprobes-meganismes.
- Het die vermoë bygevoeg om die kcmp()-stelseloproep te gebruik, ongeag die funksionaliteit van prosesstatus-kiekies (kontrolepunt/herstel).
- Die EXPORT_UNUSED_SYMBOL() en EXPORT_SYMBOL_GPL_FUTURE() makro's, wat vir baie jare nie in die praktyk gebruik is nie, is verwyder.
- Virtualisering en sekuriteit
- Bygevoeg KFence (Kernel Electric Fence) beskermingsmeganisme, wat foute opvang wanneer daar met geheue gewerk word, soos bufferoorskryding en toegang nadat geheue vrygestel is. In teenstelling met die KASAN-ontfoutingsmeganisme, word die KFence-substelsel gekenmerk deur hoë werkspoed en lae oorhoofse koste, wat jou toelaat om geheuefoute op te vang wat slegs op werkende stelsels of tydens langtermynwerking voorkom.
- Bygevoegde ondersteuning vir die ACRN-hipervisor, geskryf met intydse gereedheid en missie-kritieke geskiktheid in gedagte. ACRN bied minimale oorhoofse koste, waarborg lae latensie en voldoende responsiwiteit wanneer daar met hardeware interaksie is. Dit ondersteun virtualisering van SVE-, I/O-, netwerk-, grafika- en klankbronne. ACRN kan gebruik word om verskeie geïsoleerde gevalle uit te voer. virtuele masjiene in elektroniese beheereenhede, instrumentgroepe, motorinligtingstelsels, verbruikers-IoT-toestelle en ander ingebedde tegnologie. ACRN ondersteun twee tipes gasstelsels: bevoorregte diens-VM's, wat gebruik word om stelselhulpbronne (SVE, geheue, I/O, ens.) te bestuur, en gebruikers-VM's, wat kan loop Linux-verspreidings, Android и Windows.
- Die IMA (Integrity Measurement Architecture) substelsel, wat 'n hash-databasis onderhou om die integriteit van lêers en geassosieerde metadata na te gaan, het nou die vermoë om die integriteit van die kerndata self na te gaan, byvoorbeeld om veranderinge in SE-reëls na te spoor.Linux.
- Die vermoë om Xen-hiperoproepe te onderskep en dit aan te stuur na die emulator wat in gebruikersruimte loop, is by die KVM-hipervisor gevoeg.
- Bygevoeg die vermoë om te gebruik Linux as die wortelomgewing vir die Hyper-V-hipervisor. Die wortelomgewing het direkte toegang tot die hardeware en word gebruik om gasstelsels te loods (soortgelyk aan Dom0 in Xen). Tot dusver het Hyper-V (Microsoft Hypervisor) ondersteun Linux slegs in gas-omgewings, maar die hipervisor self is vanuit die gasheer-omgewing beheer Windows.
- Bygevoeg ondersteuning vir inlyn-enkripsie vir eMMC-kaarte, wat jou toelaat om enkripsiemeganismes wat in die dryfbeheerder ingebou is, te gebruik wat I/O deursigtig enkripteer en dekripteer.
- Die ondersteuning vir die RIPE-MD 128/256/320 en Tiger 128/160/192 hashes, wat nie in die kern gebruik word nie, sowel as die Salsa20-stroomsyfer, wat deur die ChaCha20-algoritme vervang is, is uit die kripto substelsel. Die blake2-algoritme is opgedateer om blake2s te implementeer.
- Netwerk substelsel
- Het die vermoë bygevoeg om die NAPI-peilingshanteerder vir netwerktoestelle na 'n aparte kerndraad te skuif, wat verbeterde werkverrigting vir sommige tipes werklading moontlik maak. Voorheen is peiling in die konteks van softirq uitgevoer en is nie deur die taakskeduleerder gedek nie, wat dit moeilik gemaak het om fyn optimerings uit te voer om maksimum prestasie te behaal. Uitvoering in 'n aparte kerndraad laat toe dat die polling-hanteerder vanuit gebruikersruimte waargeneem word, aan individuele SVE-kerns geheg word en in ag geneem word wanneer taakomskakeling geskeduleer word. Om die nuwe modus in sysfs te aktiveer, word die /sys/class/net//threaded parameter voorgestel.
- Integrasie in die kern van MPTCP (MultiPath TCP), 'n uitbreiding van die TCP-protokol vir die organisering van die werking van 'n TCP-verbinding met die aflewering van pakkies gelyktydig langs verskeie roetes deur verskillende netwerkkoppelvlakke wat met verskillende IP-adresse geassosieer word. Die nuwe weergawe voeg die vermoë toe om prioriteit aan sekere drade toe te ken, wat dit byvoorbeeld moontlik maak om die werk van rugsteundrade wat slegs aanskakel as daar probleme met die primêre draad is, te organiseer.
- IGMPv3 voeg ondersteuning by vir die EHT (Explicit Host Tracking) meganisme.
- Netfilter se pakkiefilterenjin bied die vermoë om sekere tafels te besit om eksklusiewe beheer te verkry (byvoorbeeld, 'n agtergrond-brandmuurproses kan eienaarskap van sekere tabelle neem, wat verhoed dat enigiemand anders daarmee inmeng).
- Оборудование
- Ons het verouderde en ononderhoude ARM-platforms skoongemaak. Die kode vir die efm32-, picoxcell-, prima2-, tango-, u300-, zx- en c6x-platforms, sowel as hul verwante drywers, is verwyder.
- Die amdgpu-bestuurder bied die vermoë om kaarte te oorklok (OverDrive) gebaseer op die Sienna Cichlid GPU (Navi 22, Radeon RX 6xxx). Bygevoeg ondersteuning vir FP16 pixel formaat vir DCE (vertoon kontroleerder enjin) van 8ste tot 11de generasie. Vir GPU Navy Flounder (Navi 21) en APU Van Gogh is die vermoë om die GPU terug te stel geïmplementeer.
- Die i915-bestuurder vir Intel-grafiese kaarte implementeer die i915.mitigations-parameter om isolasie- en beskermingsmeganismes uit te skakel ten gunste van verbeterde werkverrigting. Vir skyfies wat vanaf Tiger Lake begin, is ondersteuning vir die VRR (Variable Rate Refresh)-meganisme ingesluit, wat jou toelaat om die monitorverversingstempo aanpasbaar te verander om gladheid en geen gapings tydens speletjies te verseker nie. Ondersteuning vir Intel Clear Color-tegnologie is ingesluit vir verbeterde kleurakkuraatheid. Bygevoeg ondersteuning vir DP-HDMI 2.1. Die vermoë om die agtergrond van eDP-panele te beheer is geïmplementeer. Vir Gen9 GPU's met LSPCON (Level Shifter and Protocol Converter)-ondersteuning, is HDR-ondersteuning geaktiveer.
- Die nouveau-bestuurder voeg aanvanklike ondersteuning by vir NVIDIA GPU's gebaseer op die GA100 (Ampere) argitektuur.
- Die msm-bestuurder voeg ondersteuning by vir Adreno 508, 509 en 512 GPU's wat in SDM (Snapdragon) 630, 636 en 660 skyfies gebruik word.
- Bygevoeg ondersteuning vir Sound BlasterX AE-5 Plus, Lexicon I-ONIX FW810s en Pioneer DJM-750 klankkaarte. Bygevoeg ondersteuning vir Intel Alder Lake PCH-P klank substelsel. Ondersteuning vir sagteware-simulasie van die koppeling en ontkoppeling van 'n oudioverbinding is geïmplementeer vir ontfouting van hanteerders in gebruikersruimte.
- Ondersteuning bygevoeg vir Nintendo 64-speletjiekonsoles wat tussen 1996 en 2003 vrygestel is (vorige pogings om oor te dra Linux (Die Nintendo 64-poort is nooit voltooi nie en is na Vaporware-status verplaas.) Die motivering vir die skep van 'n nuwe poort vir die verouderende platform, wat al byna twintig jaar buite produksie is, word gesê die begeerte te wees om die ontwikkeling van emulators te stimuleer en spelportering te vereenvoudig.
- Bygevoeg drywer vir Sony PlayStation 5 DualSense-speletjiebeheerder.
- Bygevoeg ondersteuning vir ARM-borde, toestelle en platforms: PineTab, Snapdragon 888 / SM8350, Snapdragon MTP, Two Beacon EmbeddedWorks, Intel eASIC N5X, Netgear R8000P, Plymovent M2M, Beacon i.MX8M Nano, Nano.
- Bygevoeg ondersteuning vir Purism Librem5 Evergreen, Xperia Z3+/Z4/Z5, ASUS Zenfone 2 Laser, BQ Aquaris X5, OnePlus6, OnePlus6T, Samsung GT-I9070 slimfone.
- Bygevoeg bcm-vk-drywer vir Broadcom VK-versnellerborde (byvoorbeeld Valkyrie- en Viper PCIe-borde), wat gebruik kan word om oudio-, video- en beeldverwerkingsbewerkings, sowel as enkripsieverwante bewerkings, na 'n aparte toestel af te laai.
- Bygevoeg ondersteuning vir die Lenovo IdeaPad platform met die vermoë om konstante laai en sleutelbord agtergrond te beheer. Ondersteuning word ook verskaf vir die ACPI-profiel van die ThinkPad-platform met die vermoë om kragverbruikmodusse te beheer. Bygevoeg bestuurder vir Lenovo ThinkPad X1 Tablet Gen 2 HID substelsel.
- Bygevoeg ov5647 bestuurder met ondersteuning vir kamera module vir Raspberry Pi.
- Bygevoeg ondersteuning vir RISC-V SoC FU740 en HiFive Unleashed-borde. 'n Nuwe drywer vir die Kendryte K210-skyfie is ook bygevoeg.
Bron: opennet.ru
