Efter to måneders udvikling præsenterede Linus Torvalds kerneudgivelse . 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.
:
- 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
, 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 (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-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. , 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).
- 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 , 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, 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 (Kernel Concurrency Sanitizer), designet til dynamisk at opdage 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 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
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 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 Understøttelse af systemopkaldet tee() er blevet tilføjet.
- Tilføjet mekanismen ', der er beregnet til at udskrive indholdet af kerne strukturer til brugerområdet.
- muligheden for at bruge en ringbuffer til datudveksling mellem BPF-programmer.
- I mekanismen , 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. backend til at gemme oplysninger på blok-enheder.
- Fra preempt_RT-kernen. implementering af lokale låse.
- 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 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 support for krypterede nøgler.
- I Btrfs er læseoperationer i direct I/O-tilstand blevet forbedret. Ved montering 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. 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 en flag er tilføjet , ved angivelse af hvilken information hentes ved hjælp af DAX-mekanismen.
- I EXFAT support for verifikation af boot området.
- I FAT 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 support for protokollen (Media Redundancy Protocol), som muliggør fejltolerance ved at ringe flere Ethernet-switches sammen.
- Til trafikstyringssystemet (Tc) 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 () for at omgå mulige UDP-blokeringer.
- netværksblockenhed rnbd, der muliggør fjernadgang til blokkenheden via RDMA transport (InfiniBand, RoCE, iWARP) og RTRS-protokol.
- I TCP-stakken er der støtte for komprimering af intervaller i svar på selektiv bekræftelse (selective acknowledgment, SACK).
- For IPv6 er der tilføjet support til TCP-LD (, 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 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 (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.
- 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.
-
støtte til den russiske processor Baikal-T1 og det system-on-chip, der er baseret på den . 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
variant — , 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
