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, 38298NPNM, 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