Linux-kjerneutgivelse 5.11

Etter to måneder med utvikling presenterte Linus Torvalds utgivelsen av Linux-kjernen 5.11. Blant de mest bemerkelsesverdige endringene: støtte for Intel SGX-enklaver, en ny mekanisme for å avskjære systemanrop, en virtuell hjelpebuss, forbud mot å sette sammen moduler uten MODULE_LICENSE(), en rask filtreringsmodus for systemanrop i seccomp, avslutning av støtte for ia64-arkitektur, overføring av WiMAX-teknologi til "staging"-grenen, muligheten til å innkapsle SCTP i UDP.

Den nye versjonen inkluderer 15480 1991 rettelser fra 72 12090 utviklere, patchstørrelsen er 868025 MB (endringene berørte 261456 46 filer, 5.11 16 linjer med kode ble lagt til, 13 3 linjer ble slettet). Omtrent 4 % av alle endringer introdusert i XNUMX er relatert til enhetsdrivere, omtrent XNUMX % av endringene er relatert til oppdatering av kode spesifikk for maskinvarearkitekturer, XNUMX % er relatert til nettverksstakken, XNUMX % er relatert til filsystemer og XNUMX % er relatert til interne kjernedelsystemer.

Hovedinnovasjoner:

  • Diskundersystem, I/O og filsystemer
    • Flere monteringsalternativer er lagt til Btrfs for bruk ved gjenoppretting av data fra et skadet filsystem: "rescue=ignorebadroots" for montering, til tross for skade på enkelte rottrær (omfang, uuid, dataflytting, enhet, csum, ledig plass), " rescue=ignoredatacsums" for å deaktivere sjekksum for data og "rescue=all" for å aktivere modusene "ignorebadroots", "ignoredatacsums" og "nologreplay" samtidig. "inode_cache"-monteringsalternativet, som tidligere ble avviklet, har blitt avviklet. Koden er utarbeidet for å implementere støtte for blokker med metadata og data som er mindre enn en sidestørrelse (PAGE_SIZE), samt støtte for soned space allocation mode. Ubuffrede (Direct IO) forespørsler har blitt flyttet til iomap-infrastrukturen. Ytelsen til en rekke operasjoner er optimert, i noen tilfeller kan akselerasjonen nå titalls prosent.
    • XFS implementerer "needsrepair"-flagget, som signaliserer behovet for reparasjon. Når dette flagget er satt, kan ikke filsystemet monteres før flagget er tilbakestilt av xfs_repair-verktøyet.
    • Ext4 tilbyr bare feilrettinger og optimaliseringer, samt kodeopprydding.
    • Re-eksport av filsystemer montert over NFS er tillatt (dvs. en partisjon montert via NFS kan nå eksporteres via NFS og brukes som en mellombuffer).
    • Close_range()-systemkallet, som lar en prosess lukke en hel rekke åpne filbeskrivelser på en gang, har lagt til et CLOSE_RANGE_CLOEXEC-alternativ for å lukke deskriptorer i close-on-exec-modus.
    • F2FS-filsystemet legger til nye ioctl()-kall for å tillate brukerplasskontroll over hvilke filer som lagres i komprimert form. Lagt til "compress_mode=" monteringsalternativ for å velge om komprimeringsbehandleren skal plasseres på kjernesiden eller i brukerområdet.
    • Gir muligheten til å montere Overlayfs ved uprivilegerte prosesser ved å bruke et eget brukernavnsområde. For å verifisere samsvar med implementeringen av sikkerhetsmodellen, ble det utført en fullstendig koderevisjon. Overlayfs legger også til muligheten til å kjøre med kopier av filsystembilder ved å deaktivere UUID-kontroll.
    • Ceph-filsystemet har lagt til støtte for msgr2.1-protokollen, som tillater bruk av AES-GCM-algoritmen ved overføring av data i kryptert form.
    • dm-multipath-modulen implementerer muligheten til å ta hensyn til CPU-affinitet ("IO-affinitet") når du velger rute for I/O-forespørsler.
  • Minne- og systemtjenester
    • En ny systemanropsavskjæringsmekanisme er lagt til, basert på prctl(), som lar deg generere unntak fra brukerplass når du får tilgang til et spesifikt systemanrop og emulere kjøringen av det. Denne funksjonaliteten kreves i Wine og Proton for å etterligne Windows-systemanrop, noe som er nødvendig for å sikre kompatibilitet med spill og programmer som direkte utfører systemanrop som omgår Windows API (for eksempel for å beskytte mot uautorisert bruk).
    • Systemkallet userfaultfd(), designet for å håndtere sidefeil (tilgang til ikke-allokerte minnesider) i brukerområdet, har nå muligheten til å deaktivere unntakshåndtering som oppstår på kjernenivå for å gjøre det vanskeligere å utnytte visse sårbarheter.
    • BPF-undersystemet har lagt til støtte for oppgavelokal lagring, som gir databinding til en spesifikk BPF-behandler.
    • Regnskapet for minneforbruk av BPF-programmer har blitt fullstendig redesignet - en cgroup-kontroller har blitt foreslått i stedet for memlock rlimit for å administrere minnebruk i BPF-objekter.
    • BTF-mekanismen (BPF Type Format), som gir informasjon om typesjekking i BPF-pseudokode, gir støtte for kjernemoduler.
    • Lagt til støtte for shutdown(), renameat2() og unlinkat() systemkall til det asynkrone I/O-grensesnittet io_uring. Når du kaller io_uring_enter(), har muligheten til å spesifisere en timeout blitt lagt til (du kan sjekke støtte for argumentet for å spesifisere en timeout ved å bruke IORING_FEAT_EXT_ARG-flagget).
    • Ia64-arkitekturen som brukes i Intel Itanium-prosessorer er flyttet til kategorien foreldreløse, noe som betyr at testingen har opphørt. Hewlett Packard Enterprise sluttet å akseptere bestillinger på nytt Itanium-utstyr, og Intel gjorde det i fjor.
    • Støtte for systemer basert på MicroBlaze-arkitekturen som ikke inkluderer en minneadministrasjonsenhet (MMU) er avviklet. Slike systemer har ikke vært å se i hverdagen på lenge.
    • For MIPS-arkitekturen er støtte for kodedekningstesting lagt til ved å bruke gcov-verktøyet.
    • Lagt til støtte for den virtuelle hjelpebussen for grensesnitt med multifunksjonsenheter som kombinerer funksjonalitet som krever forskjellige drivere (for eksempel nettverkskort med Ethernet- og RDMA-støtte). Bussen kan brukes til å tilordne en primær og sekundær driver til en enhet, i situasjoner der bruken av MFD (Multi-Function Devices) delsystemet er problematisk.
    • For RISC-V-arkitekturen er det lagt til støtte for minneallokeringssystemet CMA (Contiguous Memory Allocator), som er optimalisert for å tildele store sammenhengende minneområder ved å bruke teknikker for minnesidebevegelse. For RISC-V er det også implementert verktøy for å begrense tilgangen til /dev/mem og ta hensyn til avbruddsbehandlingstid.
    • For 32-biters ARM-systemer er det lagt til støtte for KASan (Kernel address Sanizer) feilsøkingsverktøyet, som hjelper til med å identifisere feil ved arbeid med minne. For 64-biters ARM er KASan-implementeringen konvertert til å bruke MTE-tagger (MemTag).
    • Lagt til epoll_pwait2() systemkall for å tillate tidsavbrudd med nanosekunders presisjon (epoll_wait-anrop manipulerer millisekunder).
    • Byggesystemet viser nå en feil ved forsøk på å bygge lastbare kjernemoduler der kodelisensen ikke er definert ved hjelp av MODULE_LICENSE()-makroen. Fra nå av vil bruk av EXPORT_SYMBOL()-makroen for statiske funksjoner også forårsake en byggefeil.
    • Lagt til støtte for kartlegging av GEM-objekter fra minne brukt til I/O, noe som gjorde det mulig å fremskynde arbeidet med rammebufferen på enkelte arkitekturer.
    • Kconfig har droppet støtte for Qt4 (samtidig som støtte for Qt5, GTK og Ncurses).
  • Virtualisering og sikkerhet
    • Støtte for en hurtigresponsmodus er lagt til seccomp()-systemkallet, som lar deg veldig raskt avgjøre om et bestemt systemanrop er tillatt eller forbudt basert på konstant-handling bitmap knyttet til prosessen, som ikke krever kjøring en BPF-behandler.
    • Integrerte kjernekomponenter for å lage og administrere enklaver basert på Intel SGX (Software Guard eXtensions) teknologi, som lar applikasjoner kjøre kode i isolerte krypterte områder av minnet, som resten av systemet har begrenset tilgang til.
    • Som en del av et initiativ for å begrense tilgangen fra brukerplass til MSR (modellspesifikt register), skriver du til MSR_IA32_ENERGY_PERF_BIAS-registeret, som lar deg endre prosessorens energieffektivitetsmodus ("normal", "ytelse", "strømsparing"). , er forbudt.
    • Muligheten til å deaktivere migrering av høyprioriterte oppgaver mellom CPUer er flyttet fra kernel-rt-grenen for sanntidssystemer.
    • For ARM64-systemer er muligheten til å bruke MTE-tagger (MemTag, Memory Tagging Extension) for signalbehandlerminneadresser lagt til. Bruken av MTE aktiveres ved å spesifisere SA_EXPOSE_TAGBITS-alternativet i sigaction() og lar deg sjekke riktig bruk av pekere for å blokkere utnyttelse av sårbarheter forårsaket av tilgang til allerede frigjorte minneblokker, bufferoverløp, tilganger før initialisering og bruk utenfor nåværende kontekst.
    • Lagt til parameteren "DM_VERITY_VERIFY_ROOTHASH_SIG_SECONDARY_KEYRING", som lar dm-verity-undersystemet sjekke hash-signaturer til sertifikater plassert i den sekundære nøkkelringen. I praksis lar oppsettet deg verifisere ikke bare sertifikater innebygd i kjernen, men også sertifikater lastet under drift, noe som gjør det mulig å oppdatere sertifikater uten å oppdatere hele kjernen.
    • Brukermodus Linux har lagt til støtte for suspend-to-idle-modus, som lar deg fryse miljøet og bruke SIGUSR1-signalet til å våkne fra hvilemodus.
    • Virtio-mem-mekanismen, som lar deg hot-plugge og koble fra minne til virtuelle maskiner, har lagt til støtte for Big Block Mode (BBM), som gjør det mulig å overføre eller ta minne i blokker som er større enn størrelsen på kjerneminnet blokk, som er nødvendig for å optimalisere VFIO i QEMU.
    • Støtte for CHACHA20-POLY1305-chifferet er lagt til kjerneimplementeringen av TLS.
  • Nettverksundersystem
    • For 802.1Q (VLAN) er det implementert en administrasjonsmekanisme for tilkoblingsfeil (CFM, Connectivity Fault Management), som lar deg identifisere, verifisere og isolere feil i nettverk med virtuelle broer (Virtual Bridged Networks). For eksempel kan CFM brukes til å isolere problemer i nettverk som spenner over flere uavhengige organisasjoner hvis ansatte kun har tilgang til eget utstyr.
    • Lagt til støtte for innkapsling av SCTP-protokollpakker i UDP-pakker (RFC 6951), som lar deg bruke SCTP på nettverk med eldre adresseoversettere som ikke direkte støtter SCTP, samt implementere SCTP på systemer som ikke gir direkte tilgang til IP-en lag.
    • Implementeringen av WiMAX-teknologi har blitt flyttet til iscenesettelse og er planlagt for fjerning i fremtiden hvis det ikke er brukere som trenger WiMAX. WiMAX brukes ikke lenger i offentlige nettverk, og i kjernen er den eneste driveren som WiMAX kan brukes med den utdaterte Intel 2400m-driveren. WiMAX-støtte ble avviklet i NetworkManager-nettverkskonfiguratoren i 2015. Foreløpig er WiMax nesten fullstendig erstattet av teknologier som LTE, HSPA+ og Wi-Fi 802.11n.
    • Det er jobbet med å optimalisere ytelsen til behandling av innkommende TCP-trafikk i nullkopimodus, dvs. uten ekstra kopiering til nye buffere. For mellomstor trafikk, som dekker titalls eller flere hundre kilobyte med data, er bruk av zerocopy i stedet for recvmsg() merkbart mer effektivt. For eksempel gjorde de implementerte endringene det mulig å øke effektiviteten av behandling av RPC-stil trafikk med 32 KB meldinger ved bruk av nullkopi med 60-70%.
    • Lagt til nye ioctl()-kall for å lage nettverksbroer som spenner over flere PPP-koblinger. Den foreslåtte muligheten tillater rammer å flytte fra en kanal til en annen, for eksempel fra en PPPoE til en PPPoL2TP-sesjon.
    • Integrering i kjernen av MPTCP (MultiPath TCP), en utvidelse av TCP-protokollen for organisering av driften av en TCP-forbindelse med levering av pakker samtidig langs flere ruter gjennom forskjellige nettverksgrensesnitt knyttet til forskjellige IP-adresser. Den nye utgivelsen introduserer støtte for alternativet ADD_ADDR for å annonsere tilgjengelige IP-adresser som kan kobles til når nye flyter legges til en eksisterende MPTCP-tilkobling.
    • Lagt til muligheten til å konfigurere handlinger når budsjettet for tilkoblingsavstemning er overskredet (opptatt polling). Den tidligere tilgjengelige SO_BUSY_POLL-modusen innebar å bytte til softirq når budsjettet var oppbrukt. For applikasjoner som må fortsette å bruke polling, foreslås et nytt alternativ SO_PREFER_BUSY_POLL.
    • IPv6 implementerer støtte for SRv6 End.DT4- og End.DT6-moduser, brukt til å lage flerbruker IPv4 L3 VPN-er og VRF-enheter (Virtual routing and forwarding).
    • Netfilter forenet implementeringen av settuttrykk, noe som gjorde det mulig å spesifisere flere uttrykk for hvert element i settlister.
    • APIer er lagt til den trådløse 802.11-stakken for å konfigurere SAR-effektgrenser, samt AE PWE- og HE MCS-parametere. Intel iwlwifi-driveren har lagt til støtte for 6GHz (Ultra High Band)-området. Qualcomm Ath11k-driveren har lagt til støtte for FILS (Fast Initial Link Setup, standardisert som IEEE 802.11ai) teknologi, som lar deg bli kvitt roamingforsinkelser under migrering fra ett tilgangspunkt til et annet.
  • Оборудование
    • Amdgpu-driveren gir støtte for AMD «Green Sardine» APU (Ryzen 5000) og «Dimgrey Cavefish» GPU (Navi 2), samt initial støtte for AMD Van Gogh APU med Zen 2-kjerne og RDNA 2 GPU (Navi 2). Lagt til støtte for nye Renoir APU-identifikatorer (basert på Zen 2 CPU og Vega GPU).
    • i915-driveren for Intel-skjermkort støtter IS (Integer scaling)-teknologi med implementering av et filter for å øke skalaen som tar hensyn til tilstanden til nabopiksler (Nearest-neighbor-interpolasjon) for å bestemme fargen på manglende piksler. Støtte for diskrete Intel DG1-kort er utvidet. Støtte for "Big Joiner"-teknologi har blitt implementert, som har vært til stede siden Ice Lake / Gen11-brikker og tillater bruk av én transkoder for å behandle to strømmer, for eksempel for utgang til en 8K-skjerm via én DisplayPort. Lagt til en modus for asynkron veksling mellom to buffere i videominnet (async flip).
    • Nouveau-driveren har lagt til innledende støtte for NVIDIA GPUer basert på Ampere-mikroarkitekturen (GA100, GeForce RTX 30xx), så langt begrenset til verktøy for å kontrollere videomoduser.
    • Lagt til støtte for 3WIRE-protokollen som brukes i LCD-paneler. Lagt til støtte for novatek nt36672a, TDO tl070wsh30, Innolux N125HCE-GN1 og ABT Y030XX067A 3.0 paneler. Separat kan vi merke oss støtten for panelet til OnePlus 6 og 6T smarttelefoner, som gjorde det mulig å organisere lasting av en umodifisert kjerne på enheter.
    • Lagt til støtte for Intels første diskrete USB4-vertskontroller, Maple Ridge.
    • Lagt til støtte for Allwinner H6 I2S, Analog Devices ADAU1372, Intel Alderlake-S, GMediatek MT8192, NXP i.MX HDMI og XCVR, Realtek RT715 og Qualcomm SM8250 lydkodeker.
    • Lagt til støtte for ARM-kort, enheter og plattformer: Galaxy Note 10.1, Microsoft Lumia 950 XL, NanoPi R1, FriendlyArm ZeroPi, Elimo Initium SBC, Broadcom BCM4908, Mediatek MT8192/MT6779/MT8167, MStar Infinity 2N730CM, 382​​98NPNM, 3236 ​Mikrotik basert på Marvell Prestera 750DX8, servere med Nuvoton NPCM64 BMC, Kontron i.MX30M Mini, Espressobin Ultra, "Trogdor" Chromebook, Kobol HeliosXNUMX, Engicam PXXNUMX.Core.
    • Innebygd støtte for Ouya-spillkonsollen basert på NVIDIA Tegra 3.

Samtidig dannet Latin American Free Software Foundation en versjon av den helt gratis 5.11-kjernen - Linux-libre 5.11-gnu, renset for elementer av fastvare og drivere som inneholder ikke-frie komponenter eller kodeseksjoner, hvis omfang er begrenset av produsenten. Den nye utgivelsen renser drivere for qat_4xxx (krypto), lt9611uxcm (dsi/hdmi-bro), ccs/smia++ (sensor), ath11k_pci, nxp-lydtransceiver og mhi pci-kontroller. Oppdatert blob-rensekode i drivere og undersystemer amdgpu, btqca, btrtl, btusb, i915 csr. Deaktiverte nye blobs i m3 rproc, idt82p33 ptp-klokke og qualcomm arm64.

Kilde: opennet.ru

Legg til en kommentar