Efter to måneders udvikling præsenterede Linus Torvalds udgivelsen af Linux-kernen 5.11. Nogle af de mest markante ændringer inkluderer: støtte til Intel SGX-enklaver, en ny mekanisme til overvågning af systemopkald, en virtuel hjælpebus, forbud mod at bygge moduler uden MODULE_LICENSE(), en hurtig filtreringsmetode til systemopkald i seccomp, ophør af støtte til ia64-arkitekturen, flytning af WiMAX-teknologi til 'staging'-grenen, samt mulighed for at inkapsle SCTP i UDP.
I den nye version er der accepteret 15.480 rettelser fra 1991 udviklere, patch-størrelsen er 72 MB (ændringerne omfattede 12.090 filer, tilføjet 868.025 linjer kode, fjernet 261.456 linjer). Omtrent 46% af alle ændringerne præsenteret i 5.11 vedrører enhedsdrivere, cirka 16% af ændringerne relaterer sig til opdatering af hardware-specifik kode, 13% er relateret til netværksstakken, 3% til filsystemerne og 4% til de interne undersystemer i kernen.
Hovednyhederne:
- DiskSubsystem, input/output og filsystemer
- I Btrfs er der tilføjet flere monteringsmuligheder til anvendelse ved datagendannelse fra beskadigede filsystemer: 'rescue=ignorebadroots' til montering trods beskadigede rodtræer (extent, uuid, data reloc, device, csum, free space), 'rescue=ignoredatacsums' til at deaktivere kontrolsumkontrol for data samt 'rescue=all' for samtidig aktivering af tilstandene 'ignorebadroots', 'ignoredatacsums' og 'nologreplay'. Støtten til monteringsmuligheden 'inode_cache', som tidligere var blevet erklæret forældet, er blevet ophørt. Koden er blevet forberedt til at implementere støtte til blokke med metadata og data, der er mindre end en side (PAGE_SIZE), samt støtte til zoneret pladsallokering. Ikke-bufferede (Direct IO) anmodninger er blevet konverteret til iomap-infrastrukturen. Ydeevnen for en række operationer er blevet optimeret, og i nogle tilfælde kan hastigheden være forbedret med flere procent.
- I XFS er flaget 'needsrepair' implementeret, som signalerer behovet for reparation. Når dette flag er sat, kan filsystemet ikke monteres, før flaget er blevet nulstillet af værktøjet xfs_repair.
- I Ext4 er der kun blevet foreslået fejlrettelser og optimeringer samt en oprydning af koden.
- Geneksport af filsystemer, der er monteret ovenpå NFS, er nu tilladt (dvs. en partition, der er monteret via NFS, kan nu eksporteres via NFS og bruges som et mellemled-cache).
- I systemkaldet close_range() er der tilføjet en CLOSE_RANGE_CLOEXEC mulighed, der gør det muligt for processer at lukke et helt udvalg af åbne filbeskrivere på én gang med close-on-exec tilstand.
- I F2FS-filsystemet er der tilføjet nye ioctl() kald, som gør det muligt at administrere, hvilke filer der gemmes komprimeret fra brugerens rum. Der er tilføjet en monteringsindstilling „compress_mode=“, der vælger, hvor komprimeringshåndteringen placeres, enten i kernen eller i brugerens rum.
- Det er nu muligt at montere Overlayfs af ikke-privilegerede processer ved hjælp af et separat brugernavnrum. For at kontrollere overensstemmelse med sikkerhedsmodel blev koden grundigt revideret. Overlayfs har også fået mulighed for at køre ved hjælp af kopier af filsystembilleder via valgfrit at deaktivere UUID-kontrol.
- Ceph-filsystemet har fået støtte til msgr2.1-protokollen, der muliggør brug af AES-GCM-algoritmen til at overføre data i krypteret form.
- I dm-multipath-modulet er der implementeret en mulighed for at tage højde for CPU-binding (”IO affinity”) ved valg af rute for I/O-anmodninger.
- Hukommelse og systemtjenester
- Et nyt mekanisme til indfangning af systemkald er blevet tilføjet, baseret på prctl(), som muliggør, at brugerens rum genererer undtagelser ved adgang til visse systemkald og emulerer dets udførelse. Den nævnte funktionalitet er efterspurgt i Wine og Proton til at emulere Windows-systemkald, hvilket er nødvendigt for at sikre kompatibilitet med spil og programmer, der direkte udfører systemkald udenom Windows API (f.eks. for at beskytte mod uautoriseret brug).
- I systemkaldet userfaultfd(), der er beregnet til at håndtere page faults (adgang til ikke-tildelte hukommelsessider) i brugerens rum, er det nu muligt at deaktivere behandling af undtagelser, der opstår på kerneniveau, for at gøre udnyttelsen af visse sårbarheder vanskeligere.
- BPF-underdelen har fået støtte til opbevaring af opgaver (task-local storage), der giver binding af data til en specifik BPF-behandler.
- Den fuldstændige ombygning af hukommelsesforbrugsovervågning for BPF-programmer er blevet introduceret—i stedet for memlock rlimit er der foreslået en cgroup-controller til at styre hukommelsesforbruget i BPF-objekter.
- BTF (BPF Type Format) mekanismen, der giver information til typekontrol i BPF-pseudokode, understøtter nu kernemoduler.
- I grænsefladen for asynkron I/O io_uring er der tilføjet support for systemopkaldene shutdown(), renameat2() og unlinkat(). Ved kald til io_uring_enter() er der tilføjet mulighed for at angive en tidsgrænse (understøttelse af argumentet for tidsgrænsen kan kontrolleres ved hjælp af flaget IORING_FEAT_EXT_ARG).
- IA64-arkitekturen, der anvendes i Intel Itanium-processorer, er blevet kategoriseret som forladt ('orphaned'), hvilket indebærer ophør af testning. Hewlett Packard Enterprise har stoppet modtagelsen af ordrer på ny Itanium-udstyr, mens Intel gjorde dette allerede sidste år.
- Supporten for systemer baseret på MicroBlaze-arkitekturen uden hukommelseskontrolenhed (MMU) er blevet ophævet. Sådanne systemer er sjældent set i dag.
- Der er tilføjet support til MIPS-arkitekturen for dækningstest ved hjælp af gcov-værktøjet.
- Der er tilføjet support til en auxiliary bus til at interagere med multifunktionelle enheder, der kombinerer funktionalitet, som kræver forskellige drivere (for eksempel netværkskort med understøttelse af Ethernet og RDMA). Bussen kan bruges til at tildele primære og sekundære drivere til enheden, når det er problematisk at bruge MFD (Multi-Function Devices) under-systemet.
- Der er tilføjet support til CMA (Contiguous Memory Allocator) til RISC-V-arkitekturen, som er optimeret til at allokere store sammenhængende hukommelsesområder ved hjælp af sideflytningsteknikker. For RISC-V er der også implementeret begrænsningsværktøjer til adgang til /dev/mem og målretning af behandlingstid for afbrydelser.
- Der er tilføjet support til KASan (Kernel Address Sanitizer) til 32-bit ARM-systemer, som muliggør opdagelse af hukommelsesfejl. For 64-bit ARM er KASan-implementeringen blevet overflyttet til brug af MTE-tags (MemTag).
- Der er tilføjet systemopkald epoll_pwait2(), som gør det muligt at anvende tidsgrænser med nanosekunders præcision (epoll_wait-opkald manipulerer med millisekunder).
- I byggesystemet er der tilføjet en fejldiagnose ved forsøg på at bygge indlæste kernejmoduler, hvor licensen for koden ikke er defineret ved hjælp af makroen MODULE_LICENSE(). Fejlen under bygningen vil også blive forårsaget ved anvendelse af makroen EXPORT_SYMBOL() for statiske funktioner.
- Der er tilføjet support til kortlægning af GEM-objekter fra det hukommelsesområde, der anvendes til input/output, hvilket har muliggjort en hurtigere behandling af framebufferen på nogle arkitekturer.
- I Kconfig er understøttelsen af Qt4 blevet fjernet (understøttelsen af Qt5, GTK og Ncurses er bevaret).
- Virtualisering og sikkerhed
- Systemopkaldet seccomp() har fået tilføjet support for en hurtig reaktionsmode, der muliggør en hurtig bestemmelse af, om et bestemt systemopkald er tilladt eller forbudt baseret på den tilknyttede privilegietabel (constant-action bitmap) til processen, uden behov for at køre en BPF-behandler.
- Kernens komponenter til oprettelse og styring af enclaves baseret på Intel SGX (Software Guard eXtensions) er blevet integreret, hvilket gør det muligt for applikationer at køre kode i isolerede krypterede hukommelsesområder, hvortil den øvrige systemadgang er begrænset.
- Som en del af initiativet til at begrænse adgangen fra brugerområdet til MSR-registre (model-specifikke registre) er skrivning til registret MSR_IA32_ENERGY_PERF_BIAS blevet forbudt, hvilket muliggør ændring af energieffektivitetens tilstand ('normal', 'performance', 'powersave').
- Muligheden for at deaktivere migration af højprioriterede opgaver mellem CPU'er er blevet overført fra kernel-rt-grenen til realtidssystemer.
- For ARM64-systemer er muligheden for at anvende MTE-tags (MemTag, Memory Tagging Extension) til adresserne for signalbehandlere blevet tilføjet. Anvendelsen af MTE aktiveres ved at angive mulighed SA_EXPOSE_TAGBITS i sigaction() og gør det muligt at organisere kontrol af korrekt anvendelse af pointere for at blokere udnyttelse af sårbarheder, der skyldes adgang til allerede frigivne hukommelsesblokke, bufferoverløb, adgang før initialisering og brug uden for den aktuelle kontekst.
- Parameteren 'DM_VERITY_VERIFY_ROOTHASH_SIG_SECONDARY_KEYRING' er blevet tilføjet, hvilket tillader dm-verity subsystemet at kontrollere hash-signaturer af certifikater, der er placeret i et sekundært nøglelager (keyring). I praksis gør indstillingen det muligt at verificere ikke kun de certifikater, der er indbygget i kernen, men også certificeringer, der er indlæst under drift, hvilket giver mulighed for at opdatere certifikater uden at opdatere hele kernen.
- I User-mode Linux er der tilføjet support til suspend-to-idle-tilstand, som gør det muligt at fryse miljøet og bruge SIGUSR1-signalet til at vække det fra dvalen.
- I virtio-mem-mekanismen, der gør det muligt at tilslutte og frakoble hukommelse til virtuelle maskiner, er der tilføjet support til Big Block Mode (BBM), som tillader overførsel eller fjernelse af hukommelse i blokke, der overstiger størrelsen på kernens hukommelsesblok, hvilket er nødvendigt for at optimere VFIO i QEMU.
- I den kernebaserede implementering af TLS er der tilføjet support for cipher CHACHA20-POLY1305.
- Netværkssubsystem
- For 802.1Q (VLAN) er der implementeret en mekanisme til fejlstyring af forbindelser (CFM, Connectivity Fault Management), som gør det muligt at identificere, verificere og isolere fejl i netværk med virtuelle broer (Virtual Bridged Networks). For eksempel kan CFM bruges til at lokalisere problemer i netværk, der dækker flere uafhængige organisationer, hvis medarbejdere kun har adgang til deres eget udstyr.
- Der er tilføjet support til indkapsling af SCTP-pakker i UDP-pakker (RFC 6951), hvilket gør det muligt at bruge SCTP i netværk med gamle adresseoversættere, der ikke direkte understøtter SCTP, samt implementere SCTP på systemer, der ikke giver direkte adgang til IP-laget.
- Implementeringen af WiMAX-teknologi er flyttet til staging og er planlagt til at blive fjernet i fremtiden, medmindre der findes brugere, der har brug for WiMAX. WiMAX anvendes ikke længere i offentlige netværk, og i kernen er den eneste driver, der kan anvendes til WiMAX, den forældede Intel 2400m-driver. Under Netværkskonfiguratoren NetworkManager blev støtte til WiMAX stoppet i 2015. I øjeblikket er WiMAX næsten helt blevet erstattet af teknologier som LTE, HSPA+ og Wi-Fi 802.11n.
- Der er udført optimeringsarbejde til forbedring af ydeevnen ved håndtering af indkommende TCP-trafik i zerocopy-tilstand, dvs. uden yderligere kopiering til nye buffere. For trafik af mellemstor størrelse, der dækker titusinder eller flere hundrede kilobyte data, er anvendelsen af zerocopy i stedet for recvmsg() betydeligt mere effektiv. For eksempel har de implementerede ændringer gjort det muligt at øge effektiviteten af håndtering af RPC-stil trafik med beskeder på 32 KB med 60-70 % ved brug af zerocopy.
- Der er tilføjet nye ioctl() opkald til at oprette netværksbroer, der dækker flere PPP-kanaler. Den foreslåede funktionalitet muliggør, at rammer kan bevæge sig fra en kanal til en anden, for eksempel fra PPPoE til PPPoL2TP-session.
- Integrationen i MPTCP (MultiPath TCP) kernen fortsætter, hvilket er en udvidelse af TCP-protokollen for at organisere TCP-forbindelser med levering af pakker samtidig over flere ruter gennem forskellige netværksgrænseflader, der er knyttet til forskellige IP-adresser. Den nye version implementerer understøttelse af ADD_ADDR-optionen til at annoncere de tilgængelige IP-adresser som kunne forbindes ved tilføjelse af nye flow til en eksisterende MPTCP-forbindelse.
- Der er tilføjet mulighed for at konfigurere handlinger ved overskridelse af forbindelsespollingbudget (busy-polling). Det tidligere tilgængelige SO_BUSY_POLL tilstand betød skift til softirq ved udtømmelse af budgettet. For applikationer, der har brug for at fortsætte med polling, er der foreslået en ny mulighed SO_PREFER_BUSY_POLL.
- I IPv6 er der implementeret understøttelse af SRv6 End.DT4 og End.DT6 tilstande, der anvendes til oprettelse af flermands IPv4 L3 VPN og VRF-enheder (Virtual Routing and Forwarding).
- I Netfilter er implementeringen af udtryk sat blevet ensartet, hvilket har gjort det muligt at angive flere udtryk for hvert element i sæt-lister.
- I den trådløse 802.11 stak er der tilføjet API'er til at konfigurere SAR-effektbegrænsninger samt AE PWE og HE MCS-parametre. Intel iwlwifi-driveren har fået støtte til 6 GHz-båndet (Ultra High Band). Qualcomm Ath11k-driveren har fået støtte til den hurtige forbindelsesopsætnings teknologi FILS (Fast Initial Link Setup, standardiseret som IEEE 802.11ai), hvilket fjerner forsinkelser ved roaming under migration fra en adgangspunkt til en anden.
- Udstyr
- I amdgpu-driveren er der implementeret støtte til AMD APU "Green Sardine" (Ryzen 5000) og GPU "Dimgrey Cavefish" (Navi 2), samt initial støtte til AMD Van Gogh APU med Zen 2-kerner og RDNA 2 GPU (Navi 2). Der er tilføjet støtte til nye identificerede APU Renoir (baseret på CPU Zen 2 og Vega GPU).
- I driver i915 til Intel grafikkort har fået support for IS-teknologi (Integer scaling) med implementering af en filter til skalering, der tager højde for tilstanden af nærliggende pixels (Nearest-neighbor interpolation) for at bestemme farven på manglende pixels. Den understøttede Intel DG1 diskrete kort er blevet udvidet. Teknologien "Big Joiner" er implementeret, som er til stede fra Ice Lake / Gen11 chips og muliggør brug af en transkoder til at behandle to streams, for eksempel til output til en 8K-skærm via en DisplayPort. Tilføjet er en asynkron skift tilstand mellem to buffere i videohukommelsen (async flip).
- I nouveau-driveren er der tilføjet grundlæggende understøttelse af NVIDIA GPU'er baseret på "Ampere" mikroarkitektur (GA100, GeForce RTX 30xx), som for nuværende er begrænset til redskaber til videotilstandshåndtering.
- Understøttelse af 3WIRE-protokollen, der anvendes i LCD-paneler, er blevet tilføjet. Understøttelsen af paneler som novatek nt36672a, TDO tl070wsh30, Innolux N125HCE-GN1 og ABT Y030XX067A 3.0 er også blevet tilføjet. Især kan understøttelsen af OnePlus 6 og 6T smartphonepaneler fremhæves, som har gjort det muligt at indlæse på enheder med et uændret kernel.
- Der er tilføjet support til den første diskrete USB4 vært-controller Intel Maple Ridge.
- Understøttelse af lyd codecs som Allwinner H6 I2S, Analog Devices ADAU1372, Intel Alderlake-S, GMediatek MT8192, NXP i.MX HDMI og XCVR, Realtek RT715 og Qualcomm SM8250 er blevet tilføjet.
- Understøttelse af ARM-platforme, enheder og platforme er blevet tilføjet: 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 baseret på Marvell Prestera 98DX3236, servere med Nuvoton NPCM750 BMC, Kontron i.MX8M Mini, Espressobin Ultra, "Trogdor" Chromebook, Kobol Helios64, Engicam PX30.Core.
- Understøttelsen af Ouya spillekonsol baseret på NVIDIA Tegra 3 er indbygget.
Samtidig har den latinamerikanske Free Software Foundation udarbejdet en version af det helt frie kernel 5.11 - Linux-libre 5.11-gnu, renset for firmware og drivere indeholdende ikke-frie komponenter eller kode afgrænset af producenten. I den nye version er der blevet foretaget en rensning af drivere til qat_4xxx (crypto), lt9611uxcm (dsi/hdmi bridge), ccs/smia++ (sensor), ath11k_pci, nxp audio transceiver og mhi pci controller. Koden til rensning af blobs i drivere og subsystemer som amdgpu, btqca, btrtl, btusb, i915 csr er blevet opdateret. Nye blobs er blevet deaktiveret i m3 rproc, idt82p33 ptp clock og qualcomm arm64.
Kilde: opennet.ru
