Utgjeving av Linux-kjernen 5.12

Etter to måneders utvikling presenterte Linus Torvalds utgivelsen av Linux-kjernen 5.12. Blant de mest bemerkelsesverdige endringene er støtte for zonerte blokk-enheter i Btrfs, muligheten for kartlegging av bruker-ID-er for filsystemet, fjerning av foreldede ARM-arkitekturer, en "utålmodig" skriving modus i NFS, LOOKUP_CACHED mekanismen for å bestemme filstier fra cache, støtte for atomiske instruksjoner i BPF, KFENCE feilsøkingssystem for oppdagelse av minnefeil, en modus for NAPI polling som kjører i en egen tråd i kjernen, hypervisoren ACRN, muligheten for å endre preempt-modellen dynamisk i oppgaveplanleggeren, og støtte for LTO-optimaliseringer ved kompilering med Clang.

Det er lagt inn 14170 (15480 i forrige versjon) rettelser fra 1946 (1991) utviklere, patch-størrelsen er 38 MB (endringene berørte 12102 (12090) filer, 538599 (868025) nye linjer kode er lagt til, og 333377 (261456) linjer er fjernet). Omtrent 43% av alle endringene i 5.12 er relatert til enhetsdrivere, omtrent 17% av endringene er knyttet til oppdatering av arkitekturspecifikk kode, 12% er relatert til nettverksstakken, 5% til filsystemene, og 4% til interne kjernesystemer.

Hovudnyhende:

  • Disk subsystem, I/O og filsystemer
    • Det er implementert mulighet for kartlegging av bruker-ID-er for monterte filsystemer (man kan tilordne filer fra én bruker på en montert annen partisjon til en annen bruker i det gjeldende systemet). Kartlegging støttes for filsystemene FAT, ext4 og XFS. Den foreslåtte funksjonaliteten gjør det enklere å dele filer mellom forskjellige brukere og på forskjellige datamaskiner, inkludert at kartleggingen vil brukes i systemd-homed mekanismen for flyttbare hjemmekataloger, noe som gir brukere mulighet til å flytte sine hjemmekataloger til eksterne lagringsenheter og bruke dem på forskjellige datamaskiner, der bruker-ID-oppsett ikke stemmer overens. En annen nyttig bruk er organiseringen av deling av filer fra en ekstern vert, uten faktisk å endre eierinformasjonen for filene i filsystemet.
    • Kjernen har fått patcher for LOOKUP_CACHED, som tillater å utføre operasjoner for filbaneidentifikasjon fra brukerrådet uten blokkering, kun basert på data som allerede finnes i cachen. LOOKUP_CACHED-modus aktiveres i openat2()-kallet ved å overføre flagget RESOLVE_CACHED, der data kun returneres fra cachen, og hvis baneidentifikasjonen krever tilgang til lagringsenheten, returneres feilen EAGAIN.
    • I filsystemet Btrfs er det lagt til tidlig støtte for zonerte blokkerende enheter (enheter på harde disker eller NVMe SSD-er, hvor lagringsplassen er delt opp i soner bestående av grupper av blokker eller sektorer, der kun sekvensiell datatilgang er tillatt med oppdatering av hele blokkgruppen). I skrivebeskyttet modus er støtten for blokker med metadata og data mindre enn siden (subpage) implementert.
    • I filsystemet F2FS er det lagt til mulighet for å velge algoritme og kompresjonsnivå. Høy kompresjonsgrad er lagt til for LZ4-algoritmen. Monteringsalternativet checkpoint_merge er implementert.
    • En ny ioctl-kommando FS_IOC_READ_VERITY_METADATA for å lese metadata fra filer som er beskyttet med fs-verity er implementert.
    • I NFS-klienten er det implementert en "utålmodig" skrivemodus (writes=eager), der skriveoperasjoner til filer umiddelbart sendes til serveren, og omgår sidecache. Denne modusen bidrar til å redusere minneforbruket, sikrer øyeblikkelig informasjon om tilgjengelig plass i FS, og kan i noen tilfeller gi bedre ytelse.
    • I CIFS (SMB) er nye monteringsalternativer lagt til: acregmax for å styre caching av filer og acdirmax for å styre caching av metadata for kataloger.
    • I XFS er det aktivert en modus for flertrådet kvoteverifisering, forbedret ytelse av fsync, og det er gjort forberedelser til growfs-koden for å implementere funksjonen for å redusere størrelsen på FS.
  • Minne og systemtjenester
    • DTMP (Dynamisk Termisk Energiadministrasjon) subsystemet er lagt til, noe som muliggjør dynamisk regulering av energiforbruket til forskjellige enheter basert på satte generelle temperaturbegrensninger.
    • Implementert mulighet for å bygge kjernen med Clang-kompilatoren med inkludering av optimaliseringer under lenkingen (LTO, Link Time Optimization). LTO-optimaliseringer skiller seg fra tradisjonelle optimaliseringsmetoder ved å ta hensyn til tilstanden til alle filer som deltar i byggeprosessen, mens tradisjonelle optimaliseringsmetoder optimaliserer hver fil separat uten å ta hensyn til funksjonskall definert i andre filer. For eksempel, under LTO, for funksjoner fra andre filer, er inline-utvikling mulig, ubrukt kode inkluderes ikke i den kjørbare filen, typekontroll utføres, og generell optimalisering på prosjektets nivå skjer. Støtte for LTO er ennå begrenset til x86- og ARM64-arkitekturer.
    • Muligheten til å velge preemptjonsmoduser (PREEMPT) i oppgaveplanleggeren under oppstart (preempt=none/voluntary/full) eller under drift via debugfs (/debug/sched_debug) er blitt introdusert, forutsatt at PREEMPT_DYNAMIC-innstillingen er angitt ved bygging av kjernen. Tidligere kunne preemptjonsmodusen settes kun på byggingsparametrnivå. Endringen gjør det mulig for distribusjoner å levere kerner med PREEMPT-modus aktivert, som gir minimale forsinkelser for skrivebordet på bekostning av en ubetydelig reduksjon av gjennomstrømning, og om nødvendig rulle tilbake til PREEMPT_VOLUNTARY (mellomliggende modus for skrivebord) eller PREEMPT_NONE (som gir maksimal gjennomstrømning for servere).
    • Det er lagt til støtte for atomære operasjoner BPF_ADD, BPF_AND, BPF_OR, BPF_XOR, BPF_XCHG og BPF_CMPXCHG i BPF-underdelen.
    • BPF-programmer har fått tilgang til data i stakken ved hjelp av pekere med variabel forskyvning. For eksempel, hvis tidligere tilgang til et array i stakken kun kunne gjøres med en konstant indeks for elementet, kan man nå bruke en variabel. Kontroll av tilgang innenfor eksisterende grenser utføres av BPF-verifikatoren. Denne muligheten er kun tilgjengelig for privilegerte programmer på grunn av bekymringer for utnyttelse av sårbarheter relatert til spekulativ kjøring av kode.
    • Det er blitt lagt til mulighet for å feste BPF-programmer til 'bare' sporingspunkter, som ikke er knyttet til synlige brukerekvenerte sporingshendelser (for slike sporingspunkter garanteres ikke opprettholdelse av ABI).
    • Støtte for CXL 2.0 (Compute Express Link) er implementert, som brukes for å organisere høyhastighets interaksjon mellom CPU og minneenheter (det tillater å bruke eksterne minneenheter som en del av RAM eller permanent minne, som om dette minnet var tilkoblet via den vanlige minnekontrolleren i CPU).
    • Nvmem-driveren er lagt til for å hente data fra minneområder som er reservert av fastvaren, og som ikke er direkte tilgjengelige for Linux (for eksempel EEPROM-minne, som kun er fysisk tilgjengelig for fastvaren, eller data som kun er tilgjengelige i en tidlig oppstartsfase).
    • Støtten for profileringssystemet «oprofile» er fjernet, da det ikke oppnådde tilstrekkelig utbredelse og har blitt erstattet av den mer moderne mekanismen perf.
    • I grensesnittet for asynkron I/O io_uring er det sikret integrasjon med cgroup, som kontrollerer bruken av minne.
    • For RISC-V-arkitekturen er det implementert støtte for NUMA-systemer, samt mekanismer for kprobes og uprobes.
    • Det er lagt til mulighet for å bruke systemkallet kcmp() uavhengig av funksjonaliteten til prosessens tilstands-arkivering (checkpoint/restore).
    • Makroene EXPORT_UNUSED_SYMBOL() og EXPORT_SYMBOL_GPL_FUTURE() er fjernet, da de ikke har vært i bruk på mange år.
  • Virtualisering og sikkerhet
    • KFence-mekanismen (Kernel Electric Fence) er lagt til, som fanger opp feil under minnearbeid, som bufferoverskridelse og tilgang etter frigjøring av minne. I motsetning til KASAN-diagnoseverktøyet har KFence-subsystemet høyere hastighet og lavere overhead, noe som gjør det mulig å fange opp minnefeil som kan oppstå bare i driftsmiljøer eller ved langvarig bruk.
    • Støtten for hypervisoren ACRN er lagt til, utformet med tanke på kravene for sanntidsoppgaver og egnethet for kritiske systemer. ACRN gir minimale overhead, garanterer lave forsinkelser (low latency) og tilstrekkelig respons ved interaksjon med maskinvare. Virtualisering av CPU-resurser, I/O, nettverksundersystem, grafiske og lydoperasjoner støttes. ACRN kan brukes til å kjøre flere isolerte. virtual machines i elektroniske kontrollblokker, instrumentpaneler, bilinformasjonssystemer, forbruker-IoT-enheter og annen innebygd teknologi. ACRN støtter to typer gjestesystemer - privilegerte Service VM-er, som brukes til å administrere systemressurser (CPU, minne, I/O osv.), og bruker-VM-er, der Linux-distribusjoner, Android og Windows kan kjøres.
    • I IMA (Integrity Measurement Architecture) subsystemet, som opprettholder en hash-database for filintegritetskontroll og tilknyttede metadata, har det blitt mulig å kontrollere integriteten til selve kjernen, for eksempel for å spore endringer i SELinux-regler.
    • Hypervisor KVM har fått muligheten til å fange opp Xen-hyperkall og sende dem videre til en emulator som kjører i brukerrom.
    • Det er lagt til støtte for å bruke Linux som rotmiljø for hypervisor Hyper-V. Rotmiljøet har direkte tilgang til maskinvaren og brukes til å kjøre gjestesystemer (tilsvarende Dom0 i Xen). Tidligere har Hyper-V (Microsoft Hypervisor) kun støttet Linux i gjestemiljøer, mens hypervisoren selv ble administrert fra et Windows-basert miljø.
    • Inline-kryptering for eMMC-kort har blitt lagt til, noe som muliggjør bruk av innebygde krypteringsmekanismer i lagringskontrolleren som utfører gjennomsiktig kryptering og dekryptering av I/O.
    • Støtten for ubrukte RIPE-MD 128/256/320- og Tiger 128/160/192-hasher er fjernet fra kryptosystemet, sammen med strømkryptert Salsa20, som er erstattet av algoritmen ChaCha20. Blake2-algoritmen er oppdatert til en blake2s-implementasjon.
  • Nettverks subsystem
    • Muligheten for å kjøre NAPI polling handler for nettverksenheter i en separat kjernetråd har blitt lagt til, noe som gir økt ytelse for enkelte typer belastninger. Tidligere ble polling utført i konteksten av softirq og rørte ikke oppgaveplanleggeren, noe som gjorde det vanskelig å optimalisere for maksimal ytelse. Å utføre i en separat kjernetråd gjør det mulig å overvåke polling-handleren fra brukerrommet, feste til separate CPU-kjerner og ta hensyn til det i oppgaveplanlegging. For å aktivere den nye modusen er parameteren /sys/class/net//threaded foreslått i sysfs.
    • Integrasjonen av MPTCP (MultiPath TCP) i kjernen er fortsatt. Dette er en utvidelse av TCP-protokollen for å organisere TCP-tilkoblinger med pakkelevering over flere ruter via ulike nettverksgrensesnitt knyttet til forskjellige IP-adresser. I den nye utgaven er det lagt til mulighet for å knytte prioritet til bestemte strømmer, som for eksempel kan brukes til å organisere reserve-strømmer som bare aktiveres ved problemer med den primære strømmen.
    • IGMPv3 har fått støtte for mekanismen EHT (Explicit Host Tracking).
    • I pakke-filtreringsmekanismen netfilter er muligheten for eierskap av bestemte tabeller implementert for å oppnå eksklusiv kontroll (for eksempel kan en bakgrunnsprosess i brannmuren reservere bestemte tabeller og nekte andre å blande seg inn).
  • Utstyr
    • Det er utført en rensing av utdatert og uvedlikeholdte ARM-plattformer. Koden for plattformene efm32, picoxcell, prima2, tango, u300, zx og c6x, samt tilknyttede drivere, er fjernet.
    • I amdgpu-driveren er muligheten for overklokking (OverDrive) av kort basert på GPU Sienna Cichlid (Navi 22, Radeon RX 6xxx) implementert. Støtte for pikselformatet FP16 for DCE (display controller engine) fra 8. til 11. generasjon er lagt til. For GPU Navy Flounder (Navi 21) og APU Van Gogh er muligheten for å tilbakestille GPU implementert.
    • I i915-driveren for Intel-grafikkort er parameteren i915.mitigations implementert for å deaktivere isolasjons- og beskyttelsesmekanismer for å øke ytelsen. For brikker fra og med Tiger Lake er VRR (Variable Rate Refresh) støytt, som gjør det mulig å tilpasse oppdateringsfrekvensen på skjermen for å sikre jevnhet og unngå riving under spill. teknologi Intel Clear Color for bedre fargegjengivelse er aktivert. Støtte for DP-HDMI 2.1 er lagt til. Muligheten for å styre bakgrunnsbelysningen på eDP-paneler er implementert. For GPU Gen9 med støtte for LSPCON (Level Shifter and Protocol Converter) er HDR-støtte aktivert.
    • I nouveau-driveren er det lagt til tidlig støtte for NVIDIA GPU-er basert på GA100-arkitekturen (Ampere).
    • I msm-driveren er støtten for GPU Adreno 508, 509 og 512, brukt i SDM (Snapdragon) 630, 636 og 660-chipper, lagt til.
    • Støtten for lydkortene Sound BlasterX AE-5 Plus, Lexicon I-ONIX FW810s og Pioneer DJM-750 er lagt til. Støtte for lydsystemet Intel Alder Lake PCH-P er implementert. Det er også lagt til støtte for programmatisk simulering av tilkobling og frakobling av lydporten for feilsøking av håndterere i brukerplass.
    • Støtte for Nintendo 64 spillkonsoller fra 1996 til 2003 er lagt til (tidligere forsøk på å portere Linux til Nintendo 64 ble ikke fullført og hadde status som Vaporware). Motivasjonen bak å lage en ny port for denne utdaterte plattformen, som ikke har vært i produksjon på nesten tyve år, er ønsket om å stimulere utviklingen av emulatorer og forenkle overføringen av spill.
    • En driver for Sony PlayStation 5 DualSense spillkontroller er lagt til.
    • Støtte for ARM-plattformer, enheter og plattformer er lagt til: PineTab, Snapdragon 888 / SM8350, Snapdragon MTP, Two Beacon EmbeddedWorks, Intel eASIC N5X, Netgear R8000P, Plymovent M2M, Beacon i.MX8M Nano, NanoPi M4B.
    • Støtte for smarttelefoner som Purism Librem5 Evergreen, Xperia Z3+/Z4/Z5, ASUS Zenfone 2 Laser, BQ Aquaris X5, OnePlus6, OnePlus6T, Samsung GT-I9070 er lagt til.
    • En bcm-vk driver for Broadcom VK akseleratorplater (for eksempel PCIe-plater som Valkyrie og Viper) er lagt til, som kan brukes til å utføre operasjoner med lyd, video og bilder på en egen enhet, samt oppgaver relatert til kryptering.
    • Støtte for Lenovo IdeaPad-plattformen med mulighet for å styre kontinuerlig lading og bakgrunnsbelysning av tastaturet er lagt til. Også støtte for ACPI-profilen på ThinkPad-plattformen med mulighet for å styre strømmoduser er sikret. En driver for HID-systemet til Lenovo ThinkPad X1 Tablet Gen 2 er lagt til.
    • En ov5647 driver med støtte for kamera-modul for Raspberry Pi er lagt til.
    • Støtte for RISC-V SoC FU740 og HiFive Unleashed plater er lagt til. En ny driver for Kendryte K210 brikken er også lagt til.

Kilde: opennet.ru

Kjøp pålitelig hosting for nettsteder med DDoS-beskyttelse, VPS VDS-servere 🔥 Kjøp pålitelig hosting for nettsteder med DDoS-beskyttelse, VPS VDS-servere | ProHoster