Udgivelse af Linux-kernen 5.8

Efter to måneders udvikling præsenterede Linus Torvalds den kerneudgivelse Linux 5.8. Bland de mest markante ændringer: KCSAN race state detektor, universel mekanisme for leveringsmeddelelser til brugerområdet, understøttelse af hardware til inline-kryptering, udvidede beskyttelsesmekanismer for ARM64, understøttelse af den russiske processor Baikal-T1, mulighed for separat montering af procfs-forekomster, implementering af beskyttelsesmekanismerne Shadow Call Stack og BTI for ARM64.

Kernel 5.8 er blevet den største i antallet af ændringer blandt alle kerner i projektets historie. Ændringerne er ikke knyttet til et specifikt undersystem, men dækker forskellige dele af kernen og relaterer sig hovedsageligt til interne omarbejdninger og oprydning. Der er mest aktivitet i driverne. I den nye version er der accepteret 17606 rettelser fra 2081 udviklere, som har påvirket cirka 20% af alle filer i kilderepositoriet. Patches størrelse er 65 MB (ændringerne berørte 16180 filer, tilføjet 1043240 linjer kode, fjernet 489854 linjer). Til sammenligning blev der i version 5.7 foretaget 15033 rettelser, og patchens størrelse var 39 MB. Omkring 37% af alle ændringerne i 5.8 vedrører enhedsdrivere, cirka 16% handler om opdatering af hardware-specifik kode, 11% er relateret til netværksstakken, 3% til filsystemer og 4% til interne kernesystemer.

Vigtige nyheder:

  • Virtualisering og sikkerhed
    • Der er indført en blokering af indlæsning af kernelmoduler, der har sektioner med kode, hvor både udførelses- og skrive-bits er aktive. Ændringen er gennemført som en del af et større projekt til at udelukke kernen fra at anvende hukommelsessider, der tillader både udførelse og skrivning samtidigt.
    • Muligheden for at oprette separate instanser af procfs er blevet tilgængelig, hvilket gør det muligt at bruge flere procfs-monteringspunkter monteret med forskellige muligheder, men som afspejler et fælles proces-id-navnerum (pid namespace). Tidligere afspejlede alle procfs-monteringspunkter kun en enkelt intern repræsentation, og enhver ændring af monteringsparametre påvirkede alle de øvrige monteringspunkter, der var knyttet til det samme proces-id-navnerum. Områder, hvor montering med forskellige muligheder kan være efterspurgt, omfatter implementeringen af letvægtsisolering til indlejrede systemer med mulighed for at skjule visse typer processer og informationsnoder i procfs.
    • ARM64-platformen har fået støtte til mekanismen
      Shadow-Call Stack, der leveres af Clang-kompilatoren til beskyttelse mod overskrivning af returadresse fra en funktion i tilfælde af buffer-overløb i stakken. Beskyttelsens kerne ligger i at gemme returadressen i en separat 'skygge'-stak efter kontrolen er overført til funktionen, og denne adresse hentes før udgangen af funktionen.
    • ARM64-platformen har fået tilføjet støtte til instruktioner ARMv8.5-BTI (Branch Target Indicator) til beskyttelse af udførelsen af sæt af instruktioner, hvortil der ikke bør foretages spring ved forgrening. Blokering af spring til vilkårlige kodeområder er implementeret for at modvirke oprettelsen af gadgets i exploits, der anvender teknikker fra return-oriented programming (ROP — Return-Oriented Programming, hvor angriberen ikke forsøger at placere sin egen kode i hukommelsen, men arbejder med allerede eksisterende stykker maskinkoder, der slutter med en returstyringsinstruktion, hvorfra der opbygges en kaldede kæde for at opnå den ønskede funktionalitet).
    • Støtte til udstyr for inline-kryptering af bloklagringsenheder er blevet tilføjet (Inline Encryption). Inline-krypteringsenheder er typisk indbygget i lagringsmediet, men placeres logisk mellem systemhukommelsen og disken, der udfører gennemsigtig kryptering og dekryptering af ind- og uddata baseret på de nøgle- og krypteringsalgoritmer, der er angivet af kernen.
    • En ny parameter i kernekommandoen 'initrdmem' er blevet tilføjet, hvilket gør det muligt at angive den fysiske adresse for placeringen af initrd i hukommelsen, når den indledende boot-billede placeres i RAM.
    • Nye muligheder tilføjet: CAP_PERFMON for adgang til perf subsystemet og udførelse af ydeevneovervågning. CAP_BPF, der tillader udførelse af visse operationer med BPF (for eksempel indlæsning af BPF-programmer), som tidligere krævede CAP_SYS_ADMIN-rettigheder (nu er CAP_SYS_ADMIN-rettighederne opdelt i kombinationen af CAP_BPF, CAP_PERFMON og CAP_NET_ADMIN).
    • Tilføjet nyt virtio-mem-enhed, der muliggør varmt tilslutning og frakobling af hukommelse til gæstesystemer.
    • Implementeret tilbagekaldelse af kortlægning i /dev/mem, hvis enhedsdriveren bruger overlappende hukommelsesområder.
    • Tilføjet beskyttelse mod sårbarhed CROSSTalk/SRBDS, der muliggør genopretning af resultaterne af nogle instruktioner udført på en anden CPU-kerne.
  • Hukommelse og systemtjenester
    • I dokumentet, der definerer reglerne for kodestil, er blevet vedtaget anbefalinger til brug af inkluderende terminologi. Udviklere anbefales ikke at bruge termerne ‘master / slave’ og ‘blacklist / whitelist’, samt ordet ‘slave’ isoleret. Anbefalingerne gælder kun for ny brug af disse termer. Allerede eksisterende omtaler af de nævnte ord i kernen vil forblive intakte. I ny kode er brugen af de markerede termer tilladt, hvis det kræves for at opretholde det API og ABI, der udstedes til brugerrummet, samt ved opdatering af koden for at understøtte eksisterende hardware eller protokoller, hvis specifikationer foreskriver brugen af bestemte termer.
    • Inkluderet er et fejlsøgningsværktøj KCSAN (Kernel Concurrency Sanitizer), designet til dynamisk at opdage kapløbstilstande inden for kernen. Brug af KCSAN understøttes ved kompilering med GCC og Clang, og kræver tilsætning af specielle modifikationer i kompileringsfasen for at tracke hukommelsesadgang (der anvendes breakpoints, der aktiveres ved læsning eller ændring af hukommelse). Det primære fokus ved udviklingen af KCSAN har været at forhindre falske positiver, skalerbarhed og brugervenlighed.
    • Tilføjet et universelt mekanisme levering af meddelelser fra kernen til brugerområdet. Mekanismen er baseret på den standard driver pipe og muliggør effektiv fordeling af meddelelser fra kernen over kanaler, der er åbne i brugerområdet. Modtagelsespunkterne for meddelelser er pipes, der er åbnet i en speciel tilstand og tillader opsamling af meddelelser fra kernen i en ringbuffer. Læsning udføres med den almindelige funktion read(). Ejeren af kanalen bestemmer, hvilke kilder i kernen der skal overvåges og kan definere et filter til at ignorere meddelelser og begivenheder af en bestemt type. Indtil videre understøttes kun operationer med nøgler som hændelser, såsom tilføjelse eller fjernelse af nøgler og ændring af deres attributter. De nævnte hændelser er planlagt til brug i GNOME.
    • Udviklingen af funktionen 'pidfd' er fortsat, hvilket hjælper med at håndtere situationer med genbrug af PID (pidfd forbindes med en bestemt proces og ændres ikke, mens PID kan knyttes til en anden proces efter afslutningen af den aktuelle proces, der er associeret med denne PID). Den nye version tilføjer understøttelse af brugen af pidfd til at knytte processen til navnerum (det er tilladt at angive pidfd ved udførelse af systemopkaldet setns). Anvendelsen af pidfd muliggør at styre tilknytningen af processen til flere typer navnerum med et enkelt opkald, hvilket væsentligt reducerer antallet af nødvendige systemopkald og realiserer tilknytningen i atomar tilstand (hvis der opstår en fejl ved tilknytningen til et af navnerummene, tilsluttes de andre heller ikke).
    • En ny systemopkald er tilføjet: faccessat2(), som adskiller sig fra
      faccessat() ved et ekstra argument med flag, der svarer til POSIX-anbefalingerne (tidligere blev disse flag emuleret i C-biblioteket, og det nye faccessat2 muliggør at implementere dem i kernen).
    • I Cgroup tilføjet indstillingen memory.swap.high, som kan bruges til at bremse opgaver, der bruger for meget plads i swap-partitionen.
    • I grænsefladen for asynkron input/output io_uring Understøttelse af systemopkaldet tee() er blevet tilføjet.
    • Tilføjet mekanismen 'BPF iterator, der er beregnet til at udskrive indholdet af kerne strukturer til brugerområdet.
    • Givet muligheden for at bruge en ringbuffer til datudveksling mellem BPF-programmer.
    • I mekanismen padata, designet til at organisere parallel udførelse af opgaver i kernen, tilføjet support for flertrådede opgaver med belastningsbalancering.
    • I mekanismen pstore, der muliggør opbevaring af fejlinformation om årsagen til nedbrud i hukommelsen, som ikke går tabt mellem genstart. tilføjet backend til at gemme oplysninger på blok-enheder.
    • Fra preempt_RT-kernen. transferred implementering af lokale låse.
    • Tilføjet ny API til bufferallokering (AF_XDP), der sigter mod at forenkle skrivningen af netværksdrivere med support for XDP (eXpress Data Path).
    • For RISC-V-arkitekturen er der implementeret debugging-support for kernens komponenter ved hjælp af KGDB.
    • Før udgivelsen af 4.8 er kravene til versionen af GCC, der kan bruges til at kompilere kernen, steget. I en af de kommende udgivelser planlægges det at hæve minimumskravet til GCC 4.9.
  • DiskSubsystem, input/output og filsystemer
    • I Device Mapper tilføjet den nye dm-ebs (emulate block size) handler, som kan bruges til at simulere en mindre størrelse på logiske blokke (for eksempel til at simulere 512-byte sektioner på disk med 4K sektorstørrelse).
    • I F2FS-filsystemet er der kommet support for kompression ved hjælp af LZO-RLE-algoritmen.
    • I dm-crypt tilføjet support for krypterede nøgler.
    • I Btrfs er læseoperationer i direct I/O-tilstand blevet forbedret. Ved montering accelereret kontrol af fjernunderkataloger og -kataloger, der mangler forælder.
    • I CIFS er der tilføjet parameteren 'nodelete', som tillader standardrettighedskontroller på serveren, men forhindrer klienten i at slette filer eller kataloger.
    • I Ext4 er fejlbehandlingen forbedret. ENOSPC ved brug af flertrådethed. I xattr er der tilføjet støtte til navnerum gnu.*, som anvendes i GNU Hurd.
    • For Ext4 og XFS er der tilføjet support for DAX-operationer (direct access to FS uden at bruge sidestykker uden at anvende blok-enhedsniveau) knyttet til specifikke filer og kataloger.
    • Systemopkaldet statx() en flag er tilføjet STATX_ATTR_DAX, ved angivelse af hvilken information hentes ved hjælp af DAX-mekanismen.
    • I EXFAT tilføjet support for verifikation af boot området.
    • I FAT forbedret forudindlæsning af FS-elementer. Test af en langsom 2TB USB-drev viste en reduktion af testtiden fra 383 sekunder til 51 sekunder.
  • Netværkssubsystem
    • I netværksbrostyringskoden tilføjet support for protokollen MRP (Media Redundancy Protocol), som muliggør fejltolerance ved at ringe flere Ethernet-switches sammen.
    • Til trafikstyringssystemet (Tc) er tilføjet ny handling «gate», der giver mulighed for at bestemme tidsintervaller for behandling og afvisning af bestemte pakker.
    • I kernen og værktøjet ethtool er der tilføjet support til funktioner til test af tilsluttede netværkskabler og selvdiagnose af netværksenheder.
    • IPv6-stakken har fået tilføjet support til MPLS-algoritmen (Multiprotocol Label Switching) til ruteplanlægning af pakker ved hjælp af multiprotokolmærkeskift (for IPv4 var MPLS allerede understøttet).
    • Der er tilføjet support til overførsel af IKE-pakker (Internet Key Exchange) og IPSec over TCP (RFC 8229) for at omgå mulige UDP-blokeringer.
    • Tilføjet netværksblockenhed rnbd, der muliggør fjernadgang til blokkenheden via RDMA transport (InfiniBand, RoCE, iWARP) og RTRS-protokol.
    • I TCP-stakken tilføjet er der støtte for komprimering af intervaller i svar på selektiv bekræftelse (selective acknowledgment, SACK).
    • For IPv6 er implementeret er der tilføjet support til TCP-LD (RFC 6069, Long Connectivity Disruptions).
  • Udstyr
    • I DRM-driveren i915 for Intel-grafikkort er der som standard tilføjet support til Intel Tiger Lake-chips (GEN12), for hvilke der også er implementeret er muligheden for at bruge SAGV-systemet (System Agent Geyserville) til dynamisk at justere frekvens og spænding afhængigt af krav til energiforbrug eller ydeevne.
    • I amdgpu-driveren er der tilføjet support til pixelformatet FP16 og implementeret mulighed for at arbejde med krypterede buffere i videohukommelsen (TMZ, Trusted Memory Zone).
    • Der er tilføjet support til strømforbrugssensorer for AMD Zen og Zen2-processorer samt temperaturfølere for AMD Ryzen 4000 Renoir. For AMD Zen og Zen2 er der sikret support til udtrækning af information om strømforbrug gennem interfaced RAPL (Running Average Power Limit).
    • I Nouveau-driveren er der tilføjet support til NVIDIA-modifikatorformatet. For gv100 er der mulighed for at bruge interlaced opdateringsmetoder. Definitionen af vGPU er tilføjet.
    • I MSM-driveren (Qualcomm) er der tilføjet support for GPU Adreno A405, A640 og A650.
    • Tilføjet intern rammeværk til styring af ressourcer i DRM (Direct Rendering Manager).
    • Der er tilføjet støtte til smartphones Xiaomi Redmi Note 7 og Samsung Galaxy S2 samt laptops Elm/Hana Chromebook.
    • Der er tilføjet drivere til LCD-paneler: ASUS TM5P5 NT35596, Starry KR070PE2T, Leadtek LTK050H3146W, Visionox rm69299, Boe tv105wum-nw0.
    • Der er tilføjet support til ARM-platforme og Renesas-platforme 'RZ/G1H', Realtek RTD1195, Realtek RTD1395/RTD1619, Rockchips RK3326, AMLogic S905D, S905X3, S922XH, Olimex A20-OLinuXino-LIME-eMMC, Check Point L-50,
      , Beacon i.MX8m-Mini, Qualcomm SDM660/SDM630, Xnano X5 TV Box, Stinger96, Beaglebone-AI.
    • Støtte til MIPS-processoren Loongson-2K (forkortet Loongson64) er blevet tilføjet. For CPU Loongson 3 er der tilføjet støtte til virtualisering ved hjælp af KVM-hypervisor.
    • Tilføjet
      støtte til den russiske processor Baikal-T1 og det system-on-chip, der er baseret på den BE-T1000. Processoren Baikal-T1 indeholder to superskalar kerner P5600 MIPS 32 r5, der arbejder ved en frekvens på 1,2 GHz. Chipsættet indeholder L2-cache (1 MB), DDR3-1600 ECC hukommelseskontroller, 1 port 10Gb Ethernet, 2 porte 1Gb Ethernet, PCIe Gen.3 x4 kontroller, 2 porta SATA 3.0, USB 2.0, GPIO, UART, SPI, I2C. Processoren leverer hardwareunderstøttelse til virtualisering, SIMD-instruktioner og en integreret hardwareaccelerator til kryptografiske operationer, som understøtter ГОСТ 28147-89. Chipsættet er udviklet ved hjælp af en licenseret MIPS32 P5600 Warrior kerne fra Imagination Technologies.

Samtidig oprettede den Latinamerikanske Free Software Foundation skabte
variant fuldstændig fri kerne 5.8 — Linux-libre 5.8-gnu, renset for firmware og drivere, der indeholder ikke-frie komponenter eller kodestykker, hvis anvendelse er begrænset af producenten. I den nye version er indlæsning af blobs i drivere til Atom ISP Video, MediaTek 7663 USB/7915 PCIe, Realtek 8723DE WiFi, Renesas PCI xHCI, HabanaLabs Gaudi, Enhanced Asynchronous Sample Rate Converter, Maxim Integrated MAX98390 Speaker Amplifier, Microsemi ZL38060 Connected Home Audio Processor og I2C EEPROM Slave deaktiveret. Koden til rensning af blobs i drivere og subsystemer til Adreno GPU, HabanaLabs Goya, x86 berøringsskærm, vt6656 og btbcm er opdateret.

Kilde: opennet.ru

Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere 🔥 Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere | ProHoster