Linux 5.11 kernel udgivelse

Efter to måneders udvikling præsenterede Linus Torvalds udgivelsen af ​​Linux-kernen 5.11. Blandt de mest bemærkelsesværdige ændringer: understøttelse af Intel SGX-enklaver, en ny mekanisme til at opsnappe systemopkald, en virtuel hjælpebus, et forbud mod at samle moduler uden MODULE_LICENSE(), en hurtig filtreringstilstand for systemopkald i seccomp, opsigelse af understøttelse af ia64-arkitektur, overførsel af WiMAX-teknologi til "staging"-grenen, evnen til at indkapsle SCTP i UDP.

Den nye version indeholder 15480 rettelser fra 1991 udviklere, patchstørrelsen er 72 MB (ændringerne berørte 12090 filer, 868025 linjer kode blev tilføjet, 261456 linjer blev slettet). Omkring 46 % af alle ændringer introduceret i 5.11 er relateret til enhedsdrivere, cirka 16 % af ændringerne er relateret til opdatering af kode specifik for hardwarearkitekturer, 13 % er relateret til netværksstakken, 3 % er relateret til filsystemer og 4 % er relateret til interne kerneundersystemer.

Vigtigste innovationer:

  • Diskundersystem, I/O og filsystemer
    • Flere monteringsmuligheder er blevet tilføjet til Btrfs til brug ved gendannelse af data fra et beskadiget filsystem: "rescue=ignorebadroots" til montering, på trods af skader på nogle rodtræer (omfang, uuid, data reloc, enhed, csum, ledig plads), " rescue=ignoredatacsums" for at deaktivere checksum checking for data og "rescue=all" for samtidig at aktivere tilstandene 'ignorebadroots', 'ignoredatacsums' og 'nologreplay'. "inode_cache"-monteringsmuligheden, som tidligere var forældet, er blevet afbrudt. Koden er udarbejdet til at implementere understøttelse af blokke med metadata og data mindre end en sidestørrelse (PAGE_SIZE), samt understøttelse af zoneinddelt pladsallokeringstilstand. Ubuffrede (Direct IO) anmodninger er blevet flyttet til iomap-infrastrukturen. Ydeevnen af ​​en række operationer er blevet optimeret; i nogle tilfælde kan accelerationen nå op på titusinder af procent.
    • XFS implementerer "needsrepair"-flaget, som signalerer behovet for reparation. Når dette flag er indstillet, kan filsystemet ikke monteres, før flaget er nulstillet af hjælpeprogrammet xfs_repair.
    • Ext4 tilbyder kun fejlrettelser og optimeringer samt kodeoprydning.
    • Re-eksport af filsystemer monteret over NFS er tilladt (dvs. en partition monteret via NFS kan nu eksporteres via NFS og bruges som en mellemliggende cache).
    • close_range() systemkaldet, som gør det muligt for en proces at lukke en hel række af åbne filbeskrivelser på én gang, har tilføjet en CLOSE_RANGE_CLOEXEC-indstilling til at lukke deskriptorer i tæt-på-eksec-tilstand.
    • F2FS-filsystemet tilføjer nye ioctl()-kald for at tillade brugerpladskontrol over, hvilke filer der er gemt i komprimeret form. Tilføjet "compress_mode=" mount mulighed for at vælge, om komprimeringshåndteringen skal placeres på kernesiden eller i brugerrummet.
    • Giver mulighed for at montere Overlayfs ved uprivilegerede processer ved hjælp af et separat brugernavneområde. For at verificere overensstemmelse med implementeringen af ​​sikkerhedsmodellen blev der udført en fuldstændig kodeaudit. Overlayfs tilføjer også muligheden for at køre ved hjælp af kopier af filsystembilleder ved eventuelt at deaktivere UUID-kontrol.
    • Ceph-filsystemet har tilføjet understøttelse af msgr2.1-protokollen, som tillader brugen af ​​AES-GCM-algoritmen ved overførsel af data i krypteret form.
    • dm-multipath-modulet implementerer muligheden for at tage højde for CPU-affinitet ("IO-affinitet"), når ruten for I/O-anmodninger vælges.
  • Hukommelse og systemtjenester
    • En ny mekanisme til aflytning af systemopkald er blevet tilføjet, baseret på prctl(), som giver dig mulighed for at generere undtagelser fra brugerplads, når du får adgang til et specifikt systemkald og emulere dets eksekvering. Denne funktionalitet er påkrævet i Wine og Proton for at efterligne Windows-systemkald, hvilket er nødvendigt for at sikre kompatibilitet med spil og programmer, der direkte udfører systemkald uden om Windows API (for eksempel for at beskytte mod uautoriseret brug).
    • Systemkaldet userfaultfd(), designet til at håndtere sidefejl (adgang til ikke-allokerede hukommelsessider) i brugerrummet, har nu mulighed for at deaktivere undtagelseshåndtering, der forekommer på kerneniveau, for at gøre det sværere at udnytte visse sårbarheder.
    • BPF-undersystemet har tilføjet understøttelse af opgavelokal lagring, som giver databinding til en specifik BPF-handler.
    • Regnskabet for hukommelsesforbrug af BPF-programmer er blevet fuldstændig redesignet - en cgroup-controller er blevet foreslået i stedet for memlock rlimit til at styre hukommelsesbrug i BPF-objekter.
    • BTF (BPF Type Format)-mekanismen, som giver typekontrolinformation i BPF-pseudokode, understøtter kernemoduler.
    • Tilføjet understøttelse af shutdown(), renameat2() og unlinkat() systemkald til io_uring asynkrone I/O-grænsefladen. Når du kalder io_uring_enter(), er muligheden for at angive en timeout blevet tilføjet (du kan kontrollere understøttelse af argumentet for at angive en timeout ved hjælp af flaget IORING_FEAT_EXT_ARG).
    • Ia64-arkitekturen, der bruges i Intel Itanium-processorer, er blevet flyttet til kategorien forældreløse, hvilket betyder, at testning er ophørt. Hewlett Packard Enterprise holdt op med at acceptere ordrer på nyt Itanium-udstyr, og Intel gjorde det sidste år.
    • Understøttelse af systemer baseret på MicroBlaze-arkitekturen, som ikke inkluderer en hukommelsesstyringsenhed (MMU), er afbrudt. Sådanne systemer er ikke set i hverdagen i lang tid.
    • Til MIPS-arkitekturen er understøttelse af kodedækningstest blevet tilføjet ved hjælp af gcov-værktøjet.
    • Tilføjet understøttelse af den virtuelle hjælpebus til interface med multifunktionelle enheder, der kombinerer funktionalitet, der kræver forskellige drivere (f.eks. netværkskort med Ethernet- og RDMA-understøttelse). Bussen kan bruges til at tildele en primær og sekundær driver til en enhed i situationer, hvor brugen af ​​MFD (Multi-Function Devices) delsystemet er problematisk.
    • Til RISC-V-arkitekturen er der tilføjet understøttelse af CMA (Contiguous Memory Allocator) hukommelsesallokeringssystemet, som er optimeret til at allokere store sammenhængende hukommelsesområder ved hjælp af hukommelsessidebevægelsesteknikker. Til RISC-V er der også implementeret værktøjer til at begrænse adgangen til /dev/mem og tage højde for afbrydelsesbehandlingstid.
    • For 32-bit ARM-systemer er der tilføjet understøttelse af KASan (Kernel address Sanizer) fejlfindingsværktøjet, som hjælper med at identificere fejl, når der arbejdes med hukommelse. For 64-bit ARM er KASan-implementeringen blevet konverteret til at bruge MTE-tags (MemTag).
    • Tilføjet epoll_pwait2() systemkald for at tillade timeouts med nanosekunds præcision (epoll_wait-kaldet manipulerer millisekunder).
    • Bygsystemet viser nu en fejl, når det forsøger at bygge indlæsbare kernemoduler, hvor kodelicensen ikke er defineret ved hjælp af MODULE_LICENSE()-makroen. Fra nu af vil brug af makroen EXPORT_SYMBOL() til statiske funktioner også forårsage en build-fejl.
    • Tilføjet understøttelse af kortlægning af GEM-objekter fra hukommelse brugt til I/O, hvilket gjorde det muligt at fremskynde arbejdet med framebufferen på nogle arkitekturer.
    • Kconfig har droppet understøttelse af Qt4 (samtidig med at understøtte Qt5, GTK og Ncurses).
  • Virtualisering og sikkerhed
    • Understøttelse af en hurtig responstilstand er blevet tilføjet til seccomp() systemkaldet, som giver dig mulighed for meget hurtigt at bestemme, om et bestemt systemkald er tilladt eller forbudt baseret på den konstant-handling bitmap, der er knyttet til processen, som ikke kræver kørsel en BPF-handler.
    • Integrerede kernekomponenter til at skabe og administrere enklaver baseret på Intel SGX (Software Guard eXtensions) teknologi, som tillader applikationer at eksekvere kode i isolerede krypterede områder af hukommelsen, som resten af ​​systemet har begrænset adgang til.
    • Som en del af et initiativ til at begrænse adgangen fra brugerplads til MSR (modelspecifikt register), skrive til MSR_IA32_ENERGY_PERF_BIAS registeret, som giver dig mulighed for at ændre processorens energieffektivitetstilstand ("normal", "ydelse", "strømbesparelse") , er forbudt.
    • Muligheden for at deaktivere migreringen af ​​højprioriterede opgaver mellem CPU'er er blevet flyttet fra kernel-rt-grenen til realtidssystemer.
    • For ARM64-systemer er muligheden for at bruge MTE-tags (MemTag, Memory Tagging Extension) til signalhåndteringshukommelsesadresser blevet tilføjet. Brugen af ​​MTE aktiveres ved at angive SA_EXPOSE_TAGBITS-indstillingen i sigaction() og giver dig mulighed for at kontrollere den korrekte brug af pointere for at blokere udnyttelsen af ​​sårbarheder forårsaget af adgang til allerede frigjorte hukommelsesblokke, bufferoverløb, adgange før initialisering og brug uden for aktuelle kontekst.
    • Tilføjet parameteren "DM_VERITY_VERIFY_ROOTHASH_SIG_SECONDARY_KEYRING", som gør det muligt for dm-verity-undersystemet at kontrollere hash-signaturer for certifikater placeret i den sekundære nøglering. I praksis giver opsætningen dig mulighed for at verificere ikke kun certifikater indbygget i kernen, men også certifikater indlæst under drift, hvilket gør det muligt at opdatere certifikater uden at opdatere hele kernen.
    • Brugertilstand Linux har tilføjet understøttelse af suspend-to-idle-tilstand, som giver dig mulighed for at fryse miljøet og bruge SIGUSR1-signalet til at vågne op fra dvaletilstand.
    • Virtio-mem-mekanismen, som giver dig mulighed for at hot-plugge og afbryde hukommelsen til virtuelle maskiner, har tilføjet understøttelse af Big Block Mode (BBM), som gør det muligt at overføre eller tage hukommelse i blokke, der er større end størrelsen af ​​kernehukommelsen blok, hvilket er nødvendigt for at optimere VFIO i QEMU.
    • Understøttelse af CHACHA20-POLY1305-chifferet er blevet tilføjet til kerneimplementeringen af ​​TLS.
  • Netværks undersystem
    • For 802.1Q (VLAN) er der implementeret en forbindelsesfejlsstyringsmekanisme (CFM, Connectivity Fault Management), som giver dig mulighed for at identificere, verificere og isolere fejl i netværk med virtuelle broer (Virtual Bridged Networks). For eksempel kan CFM bruges til at isolere problemer i netværk, der spænder over flere uafhængige organisationer, hvis medarbejdere kun har adgang til deres eget udstyr.
    • Tilføjet understøttelse af indkapsling af SCTP-protokolpakker i UDP-pakker (RFC 6951), som giver dig mulighed for at bruge SCTP på netværk med ældre adresseoversættere, der ikke direkte understøtter SCTP, samt implementere SCTP på systemer, der ikke giver direkte adgang til IP'en lag.
    • Implementeringen af ​​WiMAX-teknologi er blevet flyttet til iscenesættelse og er planlagt til fjernelse i fremtiden, hvis der ikke er nogen brugere, der har brug for WiMAX. WiMAX bruges ikke længere i offentlige netværk, og i kernen er den eneste driver, som WiMAX kan bruges med, den forældede Intel 2400m driver. WiMAX-support blev afbrudt i NetworkManager-netværkskonfiguratoren i 2015. I øjeblikket er WiMax næsten fuldstændig erstattet af teknologier som LTE, HSPA+ og Wi-Fi 802.11n.
    • Der er arbejdet på at optimere ydeevnen ved behandling af indgående TCP-trafik i nulkopitilstand, dvs. uden yderligere kopiering til nye buffere. For mellemstor trafik, dækning af ti eller flere hundrede kilobytes data, er brugen af ​​zerocopy i stedet for recvmsg() mærkbart mere effektivt. For eksempel gjorde de implementerede ændringer det muligt at øge effektiviteten af ​​behandling af RPC-lignende trafik med 32 KB-meddelelser ved brug af nulkopi med 60-70%.
    • Tilføjet nye ioctl()-kald for at skabe netværksbroer, der spænder over flere PPP-links. Den foreslåede kapacitet tillader rammer at flytte fra en kanal til en anden, for eksempel fra en PPPoE til en PPPoL2TP session.
    • Integration i kernen af ​​MPTCP (MultiPath TCP), en udvidelse af TCP-protokollen til at organisere driften af ​​en TCP-forbindelse med levering af pakker samtidigt langs flere ruter gennem forskellige netværksgrænseflader forbundet med forskellige IP-adresser. Den nye udgivelse introducerer understøttelse af ADD_ADDR-muligheden til at annoncere for tilgængelige IP-adresser, som kan forbindes til, når der tilføjes nye flows til en eksisterende MPTCP-forbindelse.
    • Tilføjet muligheden for at konfigurere handlinger, når forbindelses polling-budgettet er overskredet (optaget-polling). Den tidligere tilgængelige SO_BUSY_POLL-tilstand betød at skifte til softirq, når budgettet var opbrugt. For applikationer, der skal fortsætte med at bruge polling, foreslås en ny mulighed SO_PREFER_BUSY_POLL.
    • IPv6 implementerer understøttelse af SRv6 End.DT4 og End.DT6-tilstande, der bruges til at skabe multi-user IPv4 L3 VPN'er og VRF (Virtual routing and forwarding) enheder.
    • Netfilter forenede implementeringen af ​​sæt-udtryk, hvilket gjorde det muligt at specificere flere udtryk for hvert element af sæt-lister.
    • API'er er blevet tilføjet til den trådløse 802.11-stack for at konfigurere SAR-effektgrænser samt AE PWE- og HE MCS-parametre. Understøttelse af 6GHz-området (Ultra High Band) er blevet tilføjet til Intel iwlwifi-driveren. Qualcomm Ath11k-driveren har tilføjet understøttelse af FILS (Fast Initial Link Setup, standardiseret som IEEE 802.11ai) teknologi, som giver dig mulighed for at slippe af med roamingforsinkelser under migrering fra et adgangspunkt til et andet.
  • Оборудование
    • Amdgpu-driveren giver understøttelse af AMD "Green Sardine" APU (Ryzen 5000) og "Dimgrey Cavefish" GPU (Navi 2), samt indledende understøttelse af AMD Van Gogh APU med Zen 2 kerne og RDNA 2 GPU (Navi 2). Tilføjet understøttelse af nye Renoir APU-identifikatorer (baseret på Zen 2 CPU og Vega GPU).
    • i915-driveren til Intel-videokort understøtter IS-teknologi (Integer scaling) med implementering af et filter til at øge skalaen under hensyntagen til tilstanden af ​​nabopixels (Nearest-neighbor-interpolation) for at bestemme farven på manglende pixels. Understøttelsen af ​​Intel DG1 diskrete kort er blevet udvidet. Understøttelse af "Big Joiner"-teknologi er blevet implementeret, som har været til stede siden Ice Lake / Gen11-chips og tillader brugen af ​​en transcoder til at behandle to streams, for eksempel til output til en 8K-skærm via én DisplayPort. Tilføjet en tilstand til asynkront at skifte mellem to buffere i videohukommelsen (async flip).
    • Nouveau-driveren har tilføjet indledende understøttelse af NVIDIA GPU'er baseret på Ampere-mikroarkitekturen (GA100, GeForce RTX 30xx), indtil videre begrænset til værktøjer til styring af videotilstande.
    • Tilføjet understøttelse af 3WIRE-protokollen, der bruges i LCD-paneler. Tilføjet understøttelse af novatek nt36672a, TDO tl070wsh30, Innolux N125HCE-GN1 og ABT Y030XX067A 3.0 paneler. Separat kan vi bemærke støtten til panelet af OnePlus 6 og 6T smartphones, som gjorde det muligt at organisere indlæsningen af ​​en umodificeret kerne på enheder.
    • Tilføjet understøttelse af Intels første diskrete USB4-værtscontroller, Maple Ridge.
    • Tilføjet understøttelse af Allwinner H6 I2S, Analog Devices ADAU1372, Intel Alderlake-S, GMediatek MT8192, NXP i.MX HDMI og XCVR, Realtek RT715 og Qualcomm SM8250 audio codecs.
    • Tilføjet understøttelse af ARM-kort, -enheder og -platforme: 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​Mar Infinity98CM, 3236 ​Mikrotik baseret på Marvell Prestera 750DX8, servere med Nuvoton NPCM64 BMC, Kontron i.MX30M Mini, Espressobin Ultra, "Trogdor" Chromebook, Kobol HeliosXNUMX, Engicam PXXNUMX.Core.
    • Indbygget understøttelse af Ouya-spillekonsollen baseret på NVIDIA Tegra 3.

Samtidig dannede Latin American Free Software Foundation en version af den helt gratis 5.11-kerne - Linux-libre 5.11-gnu, renset for elementer af firmware og drivere indeholdende ikke-frie komponenter eller kodesektioner, hvis omfang er begrænset af producenten. Den nye udgivelse renser drivere til qat_4xxx (crypto), lt9611uxcm (dsi/hdmi bridge), ccs/smia++ (sensor), ath11k_pci, nxp audio transceiver og mhi pci controller. Opdateret blob-rensningskode i drivere og undersystemer amdgpu, btqca, btrtl, btusb, i915 csr. Deaktiverede nye blobs i m3 rproc, idt82p33 ptp ur og qualcomm arm64.

Kilde: opennet.ru

Tilføj en kommentar