Etter to måneders utvikling presenterte Linus Torvalds lanseringen av Linux-kjernen 5.11. Blant de mest bemerkelsesverdige endringene: støtte for Intel SGX-enklaver, en ny mekanisme for systemanropsfangst, en virtuell auxiliary-buss, forbud mot å bygge moduler uten MODULE_LICENSE(), modus for rask filtrering av systemanrop i seccomp, opphør av støtte for ia64-arkitekturen, overføring av WiMAX-teknologi til 'staging'-grenen, og muligheten for innkapsling av SCTP i UDP.
I den nye versjonen er det akseptert 15480 feilrettinger fra 1991 utviklere, og størrelsen på patchen er 72 MB (endringene berørte 12090 filer, 868025 linjer med kode ble lagt til, og 261456 linjer ble fjernet). Omtrent 46% av alle endringene som er presentert i 5.11 er relatert til enhetsdrivere, omtrent 16% av endringene er knyttet til oppdatering av maskinvarespesifikk kode, 13% er relatert til nettverksstakken, 3% til filsystemer og 4% til interne kjernesystemer.
Hovudnyhende:
- Disk subsystem, I/O og filsystemer
- Det er lagt til flere monteringsalternativer i Btrfs for gjenoppretting av data fra skadede filsystemer: 'rescue=ignorebadroots' for montering til tross for skader på enkelte rottrær (extent, uuid, data reloc, device, csum, free space), 'rescue=ignoredatacsums' for å deaktivere sjekk av kontrollsummer for data og 'rescue=all' for samtidig å aktivere 'ignorebadroots', 'ignoredatacsums' og 'nologreplay' modus. Støtten for monteringsalternativet 'inode_cache', som tidligere ble erklært foreldet, er avsluttet. Koden er forberedt for å implementere støtte for blokker med metadata og data som er mindre enn siden (PAGE_SIZE), samt støtte for modus for sonert plassutdeling. Direkte IO-forespørsler er overført til iomap-infrastrukturen. Ytelsen for en rekke operasjoner er optimalisert, og i noen tilfeller kan hastigheten øke med flere titalls prosent.
- I XFS er det implementert et flagg 'needsrepair', som signaliserer behovet for gjenoppretting. Når dette flagget er satt, kan filsystemet ikke monteres før flagget er tilbakestilt av verktøyet xfs_repair.
- I Ext4 foreslås kun feilrettinger og optimaliseringer, samt koding av renhold.
- Det er tillatt med gjentatt eksport av filsystemer som er montert over NFS (dvs. en montert NFS-partisjon kan nå eksporteres igjen over NFS og brukes som mellomliggende cache).
- I systemkallene close_range() ble det lagt til en CLOSE_RANGE_CLOEXEC-alternativ for å lukke descriptorer i close-on-exec-modus, som lar prosessen lukke et helt område av åpne filbeskrivere.
- I F2FS-filsystemet er det lagt til nye ioctl()-kall som lar brukerområdet styre hvilke filer som lagres komprimert. Det er lagt til et monteringsalternativ «compress_mode=» for å velge hvor komprimeringshåndtereren plasseres, enten i kjernen eller i brukerområdet.
- Det er mulig å mounte Overlayfs med ukjente prosesser ved å bruke et eget brukeridentifikatorrom (user namespace). For å sjekke overholdelse av sikkerhetsmodellens implementering ble det utført en fullstendig kodegjennomgang. Overlayfs har også fått muligheten til å kjøre med kopier av filsystembilder ved å deaktivere UUID-sjekk valgfritt.
- Ceph-filsystemet har fått støtte for msgr2.1-protokollen, som tillater bruk av AES-GCM-algoritmen ved overføring av data i kryptert form.
- I dm-multipath-modulen er det implementert støtte for CPU-binding («IO affinity») ved valg av rute for I/O-forespørselene.
- Minne og systemtjenester
- En ny mekanisme for å fange systemkall er lagt til, basert på prctl(), som lar brukerområdet generere unntak ved tilgang til et spesifikt systemkall og emulere utførelsen av det. Denne funksjonaliteten er etterspurt i Wine og Proton for å emulere Windows-systemkall, som er nødvendig for å sikre kompatibilitet med spill og programmer som direkte utfører systemkall forbi Windows API (for eksempel for å beskytte mot uautorisert bruk).
- I systemkallet userfaultfd(), ment for å håndtere page faults (tilgang til ikke-allokerte minnesider) i brukerområdet, har muligheten til å deaktivere behandling av unntak som oppstår på kjerne-nivå blitt tilgjengelig, for å komplisere utnyttelsen av visse sårbarheter.
- Det er lagt til støtte for oppgave-lokalt lagring (task-local storage) i BPF-subsystemet, som gir binding av data til en spesifikk BPF-behandler.
- Full rework of memory consumption tracking by programs BPF – a cgroup controller is proposed for managing memory usage in BPF objects instead of memlock rlimit.
- The BTF (BPF Type Format) mechanism, which provides information for type checking in BPF pseudocode, now supports kernel modules.
- The io_uring asynchronous I/O interface has been enhanced with support for system calls shutdown(), renameat2(), and unlinkat(). The io_uring_enter() call now allows specifying a timeout (support for the timeout argument can be verified using the IORING_FEAT_EXT_ARG flag).
- The ia64 architecture used in Intel Itanium processors has been categorized as orphaned, implying an end to testing. Hewlett Packard Enterprise has ceased taking orders for new Itanium hardware, and Intel did so last year.
- Support for systems based on the MicroBlaze architecture that are not equipped with a memory management unit (MMU) has been discontinued. Such systems have long been uncommon.
- Support for code coverage testing for the MIPS architecture has been added using the gcov utility.
- Support for an auxiliary virtual bus for interaction with multifunction devices that require different drivers (e.g., network cards supporting both Ethernet and RDMA) has been added. The bus can be used to assign a primary and secondary driver to a device when using the MFD (Multi-Function Devices) subsystem is problematic.
- Support for the CMA (Contiguous Memory Allocator) memory distribution system has been added for the RISC-V architecture, optimized for allocating large contiguous memory areas using memory page relocation techniques. For RISC-V, access restrictions to /dev/mem and interrupt processing time tracking have also been implemented.
- Support for the KASan (Kernel Address Sanitizer) debugging tool has been added for 32-bit ARM systems, providing detection of memory errors. For 64-bit ARM, the KASan implementation has transitioned to using MTE (MemTag) tags.
- The epoll_pwait2() system call has been added, allowing for timeouts with nanosecond precision (the epoll_wait call manipulates milliseconds).
- Byggesystemet har nå støttet feilmeldinger ved forsøk på å bygge innlastede kjernemoduler der lisensen for koden ikke er definert ved hjelp av makroen MODULE_LICENSE(). Feilen ved bygging vil nå også utløses ved bruk av makroen EXPORT_SYMBOL() for statiske funksjoner.
- Støtten for mapping av GEM-objekter fra minne brukt til inn- og utdata er lagt til, noe som har effektivisert bruken av framebuffer på noen arkitekturer.
- Støtten for Qt4 er tatt bort i Kconfig (støtten for Qt5, GTK og Ncurses er bevart).
- Virtualisering og sikkerhet
- Støtten for hurtigreaksjonsmodus er lagt til i systemanropet seccomp(), som muliggjør rask identifisering av om et bestemt systemanrop er tillatt eller forbudt basert på en konstant-handlingsbitmaske knyttet til prosessen, uten behov for å kjøre BPF-behandler.
- Kjernens komponenter for oppretting og styring av enclaves basert på Intel SGX (Software Guard eXtensions) er integrert, og gjør det mulig for applikasjoner å kjøre kode i isolerte, krypterte minneområder, med begrenset tilgang for resten av systemet.
- Som en del av initiativet for å begrense tilgangen fra brukermodus til MSR (model-specific register) registre, er skriving til registeret MSR_IA32_ENERGY_PERF_BIAS forbudt, noe som tillater endringer av prosessorens energiytelsestilstand («normal», «performance», «powersave»).
- Muligheten for å deaktivere migrering av høyprioriterte oppgaver mellom CPU-er er overført fra kernel-rt-grenen for sanntidssystemer.
- For ARM64-systemer er muligheten til å bruke MTE-tags (MemTag, Memory Tagging Extension) for minneadresser i signalbehandlere lagt til. Bruken av MTE aktiveres ved å spesifisere alternativet SA_EXPOSE_TAGBITS i sigaction() og muliggjør validering av korrekt bruk av pekere for å forhindre utnyttelse av sårbarheter forårsaket av tilgang til allerede frigjorte minneblokker, bufferoverløp, tilgang før initialisering og bruk utenfor gjeldende kontekst.
- Parameteren «DM_VERITY_VERIFY_ROOTHASH_SIG_SECONDARY_KEYRING» er lagt til, som lar dm-verity-subsystemet sjekke hash-signaturene på sertifikatene som lagres i det sekundære nøkkel-lageret (keyring). I praksis gjør innstillingen det mulig å verifisere ikke bare sertifikater innebygd i kjernen, men også sertifikater lastet inn under drift, noe som gir mulighet for å oppdatere sertifikater uten å oppdatere hele kjernen.
- I User-mode Linux er det lagt til støtte for suspend-to-idle-modus, som gjør det mulig å fryse miljøet og bruke signalet SIGUSR1 for å komme ut av hvilemodus.
- I virtio-mem-mekanismen, som gir mulighet for varmt tilkobling og frakobling av minne til virtuelle maskiner, er det lagt til støtte for stort blokkmodus (BBM, Big Block Mode), som gir mulighet til å overføre eller ta tilbake minne i blokker som overskrider størrelsen på kjernens minneblokk, noe som er nødvendig for å optimalisere VFIO i QEMU.
- I TLS-implementasjonen på kjernenivå er det lagt til støtte for CHACHA20-POLY1305-krypteringen.
- Nettverks subsystem
- For 802.1Q (VLAN) er det implementert en feiladministrasjonsmekanisme (CFM, Connectivity Fault Management), som gjør det mulig å oppdage, verifisere og isolere feil i nettverk med virtuelle broer (Virtual Bridged Networks). CFM kan for eksempel brukes til å lokalisere problemer i nettverk som omfatter flere uavhengige organisasjoner, hvor ansatte kun har tilgang til sitt eget utstyr.
- Støtte for innkapsling av SCTP-pakker i UDP-pakker (RFC 6951) er lagt til, noe som gjør det mulig å bruke SCTP i nettverk med eldre adressetolkere som ikke direkte støtter SCTP, samt implementere SCTP på systemer som ikke gir direkte tilgang til IP-nivået.
- Implementeringen av WiMAX-teknologi er flyttet til staging og planlegges fjernet i fremtiden hvis det ikke finnes brukere som trenger WiMAX. WiMAX brukes ikke lenger i offentlige nettverk, og den eneste driveren som fortsatt kan brukes med WiMAX i kjernen er den utdaterte Intel 2400m-driveren. Støtten for WiMAX i nettverkskonfiguratoren NetworkManager ble avsluttet i 2015. Foelød, WiMAX har praktisk talt blitt helt erstatet av teknologier som LTE, HSPA+ og Wi-Fi 802.11n.
- Det er blitt utført arbeid med å optimalisere ytelsen for behandling av innkommende TCP-trafikk i zerocopy-modus, dvs. uten ekstra kopiering til nye buffere. For middels størrelse på trafikk som dekker titalls eller flere hundre kilobyte med data, er bruken av zerocopy i stedet for recvmsg() merkbart mer effektiv. For eksempel har de implementerte endringene økt effektiviteten til behandling av RPC-stiltrafikk med meldinger på 32 KB ved bruk av zerocopy med 60-70%.
- Nye ioctl()-anrop er lagt til for å opprette nettverksbroer som omfatter flere PPP-kanaler. Den foreslåtte funksjonen lar rammer flytte fra én kanal til en annen, for eksempel fra PPPoE til en PPPoL2TP-økt.
- Integrasjonen med MPTCP (MultiPath TCP) fortsetter, en utvidelse av TCP-protokollen for å organisere TCP-tilkoblinger med pakkelevering samtidig over flere ruter gjennom forskjellige nettverksgrensesnitt bundet til forskjellige IP-adresser. I denne utgivelsen er støtte for ADD_ADDR-alternativet implementert for å annonsere tilgjengelige IP-adresser tilkoblinger når nye strømmer legges til en eksisterende MPTCP-tilkobling.
- Muligheten for å konfigurere handlinger ved overskridelse av budsjettet for tilkoblingspolling (busy-polling) er lagt til. Den tidligere tilgjengelige SO_BUSY_POLL-modusen innebar at det ble byttet til softirq ved utløp av budsjettet. For applikasjoner som må fortsette å bruke polling, er et nytt alternativ SO_PREFER_BUSY_POLL foreslått.
- I IPv6 er støtte for SRv6 End.DT4 og End.DT6-modusene implementert, som brukes til å opprette flerbruker IPv4 L3 VPN og VRF-enheter (Virtual Routing and Forwarding).
- I Netfilter er implementeringen av set-uttrykkene enhetlig, noe som muliggjør spesifisering av flere uttrykk for hvert element i set-listene.
- I det trådløse 802.11-stakken er API-er lagt til for å konfigurerer SAR-strømbegrensninger, samt AE PWE og HE MCS-parametere. Intel iwlwifi-driveren har fått støtte for 6GHz-båndet (Ultra High Band). Qualcomm Ath11k-driveren har fått støtte for rask oppsett av tilkobling (FILS, Fast Initial Link Setup, standardisert som IEEE 802.11ai), som reduserer forsinkelser ved roaming når man migrerer fra ett tilgangspunkt til et annet.
- Utstyr
- I amdgpu-driveren er støtte for AMD APU «Green Sardine» (Ryzen 5000) og GPU «Dimgrey Cavefish» (Navi 2) implementert, samt innledende støtte for AMD Van Gogh APU med Zen 2-kjerne og RDNA 2 GPU (Navi 2). Støtte for nye identifikatorer for APU Renoir (basert på CPU Zen 2 og GPU Vega) er lagt til.
- I driveren i915 for Intel-grafikkort er det implementert støtte for IS-teknologi (Integer scaling) med en filtrering for å skalere med hensyn til tilstanden til nærliggende piksler (Nearest-neighbor interpolasjon) for å bestemme fargen på manglende piksler. Støtte for Intel DG1 diskrete kort er utvidet. Støtte for 'Big Joiner'-teknologi, tilgjengelig siden Ice Lake / Gen11-brikkene, er implementert og gjør det mulig å bruke en transkoder for å håndtere to strømmer, for eksempel for å sende til en 8K-skjerm via en DisplayPort. En asynkron vekslemodus mellom to buffere i videominne (async flip) er lagt til.
- I nouveau-driveren er det lagt til tidlig støtte for NVIDIA GPU-er basert på 'Ampere'-mikroarkitekturen (GA100, GeForce RTX 30xx), men begrenset til verktøy for videomoduskontroll.
- Støtte for 3WIRE-protokollen, brukt i LCD-paneler, er lagt til. Støtte for panelene novatek nt36672a, TDO tl070wsh30, Innolux N125HCE-GN1 og ABT Y030XX067A 3.0 er lagt til. Det er verdt å nevne støtten for panelene til OnePlus 6 og 6T-smarttelefonene, som muliggjorde oppstart av enheter med et modifisert kjerne.
- Støtte for den første diskrete USB4 vertskontrolleren Intel Maple Ridge er lagt til.
- Støtte for lydkodekene Allwinner H6 I2S, Analog Devices ADAU1372, Intel Alderlake-S, GMediatek MT8192, NXP i.MX HDMI og XCVR, Realtek RT715 og Qualcomm SM8250 er lagt til.
- Støtte for ARM-plattformer, 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 Infinity2M, Nuvoton NPCM730, Marvell Armada 382, Mikrotik basert på Marvell Prestera 98DX3236, servere med Nuvoton NPCM750 BMC, Kontron i.MX8M Mini, Espressobin Ultra, 'Trogdor'-Chromebook, Kobol Helios64, Engicam PX30.Core.
- Støtte for spillkonsollen Ouya basert på NVIDIA Tegra 3 er innebygd.
Samtidig har den latinamerikanske Free Software Foundation formulert en helt fri versjon av kjerne 5.11 – Linux-libre 5.11-gnu, renset for elementer fra fastvare og drivere som inneholder ikke-frie komponenter eller kodestubber som er begrenset av produsenten. I den nye utgivelsen er det utført en rensing av drivere for qat_4xxx (crypto), lt9611uxcm (dsi/hdmi-bro), ccs/smia++ (sensor), ath11k_pci, nxp lydtransceiver og mhi pci-kontroller. Koden for polering av blobber i drivere og subsystemer amdgpu, btqca, btrtl, btusb, i915 csr er oppdatert. Nye blobber er deaktivert i m3 rproc, idt82p33 ptp-klokke og qualcomm arm64.
Kilde: opennet.ru
