Linux 5.8 kernel udgivelse

Efter to måneders udvikling, Linus Torvalds indsendt kerneudgivelse Linux 5.8. Blandt de mest bemærkelsesværdige ændringer: en KCSAN-racetilstandsdetektor, en universel mekanisme til levering af meddelelser til brugerområdet, hardwareunderstøttelse af inline-kryptering, forbedrede sikkerhedsmekanismer til ARM64, understøttelse af den russiske Baikal-T1-processor, muligheden for separat at montere procfs-instanser , implementering af Shadow-sikkerhedsmekanismer til ARM64 Call Stack og BTI.

Kernel 5.8 blev den største i forhold til antallet af ændringer af alle kerner under hele projektets eksistens. Desuden er ændringerne ikke relateret til et enkelt undersystem, men dækker forskellige dele af kernen og er hovedsageligt forbundet med intern omarbejdelse og rengøring. De største ændringer ses hos chauffører. Den nye version inkluderede 17606 rettelser fra 2081 udviklere, som påvirkede cirka 20 % af alle filer i kernekodelageret. Patchstørrelsen er 65 MB (ændringerne berørte 16180 filer, 1043240 linjer kode blev tilføjet, 489854 linjer blev slettet). Til sammenligning havde 5.7-grenen 15033 rettelser og en patchstørrelse på 39 MB. Omkring 37 % af alle ændringer, der er introduceret i 5.8, er relateret til enhedsdrivere, ca. 16 % af ændringerne er relateret til opdatering af kode, der er specifik for hardwarearkitekturer, 11 % er relateret til netværksstakken, 3 % er relateret til filsystemer og 4 % er relateret til interne kerneundersystemer.

The main innovationer:

  • Virtualisering og sikkerhed
    • Indlæsningen af ​​kernemoduler, der har sektioner med kode, hvor de bits, der tillader udførelse og skrivning, er indstillet samtidigt. Ændringen blev implementeret som en del af et større projekt for at befri kernen for brugen af ​​hukommelsessider, der tillader samtidig eksekvering og skrivning.
    • Det er nu muligt at oprette separate procfs-instanser, hvilket tillader brugen af ​​flere procfs-monteringspunkter, monteret med forskellige muligheder, men som afspejler det samme procesidentifikatornavneområde (pid-navneområde). Tidligere spejlede alle procfs-monteringspunkter kun én intern repræsentation, og enhver ændring af monteringsparametrene påvirkede alle andre monteringspunkter, der var knyttet til det samme proces-id-navneområde. Blandt de områder, hvor montering med forskellige muligheder kan være efterspurgt, er implementering af letvægtsisolering til indlejrede systemer med evnen til at skjule visse typer processer og informationsknudepunkter i procfs.
    • Understøttelse af mekanismen er blevet implementeret til ARM64-platformen
      Shadow-Call Stack, leveret af Clang-kompileren for at beskytte mod overskrivning af en funktions returadresse i tilfælde af et stackbufferoverløb. Essensen af ​​beskyttelsen er at gemme returadressen i en separat "skygge"-stabel efter at have overført kontrol til en funktion og hentet denne adresse, før funktionen forlades.

    • Instruktionsunderstøttelse er blevet tilføjet til ARM64-platformen ARMv8.5-BTI (Branch Target Indicator) for at beskytte udførelsen af ​​sæt instruktioner, som ikke bør forgrenes til. Blokering af overgange til vilkårlige sektioner af kode er implementeret for at forhindre oprettelsen af ​​gadgets i udnyttelser, der bruger returorienterede programmeringsteknikker (ROP - Return-Oriented Programming; angriberen forsøger ikke at placere sin kode i hukommelsen, men opererer på allerede eksisterende stykker af maskininstruktioner, der slutter med en returkontrolinstruktion, hvorfra der bygges en kæde af opkald for at opnå den ønskede funktionalitet).
    • Tilføjet hardwareunderstøttelse til inline kryptering af blokenheder (Inline kryptering). Inlinep-krypteringsenheder er typisk indbygget i drevet, men er logisk placeret mellem systemhukommelse og disk, og krypterer og dekrypterer transparent I/O baseret på kerne-specificerede nøgler og en krypteringsalgoritme.
    • Tilføjet "initrdmem"-kernens kommandolinjeindstilling for at give dig mulighed for at angive den fysiske hukommelsesadresse for initrd'en, når du placerer det indledende boot-image i RAM.
    • Tilføjet ny funktion: CAP_PERFMON for at få adgang til perf-undersystemet og udføre præstationsovervågning. CAP_BPF, som tillader visse BPF-operationer (såsom indlæsning af BPF-programmer), der tidligere krævede CAP_SYS_ADMIN-rettigheder (CAP_SYS_ADMIN-rettigheder er nu opdelt i en kombination af CAP_BPF, CAP_PERFMON og CAP_NET_ADMIN).
    • Добавлено en ny virtio-mem-enhed, der giver dig mulighed for at hot-plugge og hot-plugge hukommelse til gæstesystemer.
    • Implementeret tilbagekaldelse af kortlægningsoperationer i /dev/mem, hvis enhedsdriveren bruger overlappende hukommelsesområder.
    • Tilføjet sårbarhedsbeskyttelse CROSSTalk/SRBDS, som giver dig mulighed for at gendanne resultaterne af visse instruktioner udført på en anden CPU-kerne.
  • Hukommelse og systemtjenester
    • I dokumentet, der definerer reglerne for formatering af koden, accepteret anbefalinger til brugen af ​​inkluderende terminologi. Udviklere anbefales ikke at bruge kombinationerne 'master / slave' og 'blacklist / whitelist', samt ordet 'slave' separat. Anbefalingerne vedrører kun nye anvendelser af disse vilkår. Omtaler af de angivne ord, der allerede findes i kernen, forbliver uberørte. I ny kode er brugen af ​​de markerede termer tilladt, hvis det kræves for at understøtte API og ABI, der er eksponeret i brugerrummet, samt ved opdatering af koden til at understøtte eksisterende hardware eller protokoller, hvis specifikationer kræver brug af visse termer.
    • Fejlfindingsværktøj medfølger KCSAN (Kernel Concurrency Sanitizer), designet til dynamisk detektion race forhold inde i kernen. Brugen af ​​KCSAN understøttes ved indbygning af GCC og Clang og kræver særlige modifikationer på kompileringstidspunktet for at spore hukommelsesadgang (der bruges breakpoints, der udløses, når hukommelsen læses eller ændres). Fokus i KCSANs udvikling var på forebyggelse af falsk positiv, skalerbarhed og brugervenlighed.
    • Tilføjet universel mekanisme levering af meddelelser fra kernen til brugerrummet. Mekanismen er baseret på standard pipe-driver og giver dig mulighed for effektivt at distribuere meddelelser fra kernen over kanaler, der er åbne i brugerrummet. Notifikationsmodtagelsespunkter er rør, der åbnes i en speciel tilstand og tillader meddelelser modtaget fra kernen at blive akkumuleret i en ringbuffer. Aflæsning udføres af den sædvanlige read() funktion. Kanalejeren bestemmer hvilke kilder i kernen der skal overvåges og kan definere et filter til at ignorere visse typer meddelelser og hændelser. Af hændelser er det kun operationer med nøgler, der i øjeblikket understøttes, såsom tilføjelse/fjernelse af nøgler og ændring af deres attributter. Disse begivenheder er planlagt til at blive brugt i GNOME.
    • Fortsat udvikling af 'pidfd'-funktionalitet for at hjælpe med at håndtere PID-genbrugssituationer (pidfd er forbundet med en specifik proces og ændres ikke, mens en PID kan associeres med en anden proces, efter at den aktuelle proces, der er knyttet til den pågældende PID, afsluttes). Den nye version tilføjer understøttelse for at bruge pidfd til at knytte en proces til navneområder (tillader, at pidfd kan specificeres, når setns systemkaldet udføres). Brug af pidfd giver dig mulighed for at kontrollere tilknytningen af ​​en proces til flere typer navneområder med et opkald, hvilket reducerer antallet af nødvendige systemopkald betydeligt og implementerer vedhæftning i atomisk tilstand (hvis tilknytning til et af navneområderne mislykkes, vil de andre ikke oprette forbindelse) .
    • Tilføjet et nyt systemkald faccessat2(), forskelligt fra
      faccessat() et yderligere argument med flag, der overholder POSIX-anbefalinger (tidligere blev disse flag emuleret i C-biblioteket, og den nye faccessat2 tillader dem at blive implementeret i kernen).

    • I Cgroup tilføjet en memory.swap.high-indstilling, der kan bruges til at bremse opgaver, der optager for meget bytteplads.
    • Til det asynkrone I/O-interface io_uring tilføjet understøttelse af tee() systemkald.
    • Tilføjet mekanisme "BPF iterator, designet til at udsende indholdet af kernestrukturer til brugerrum.
    • Stillet til rådighed muligheden for at bruge en ringbuffer til dataudveksling mellem BPF-programmer.
    • Ind i mekanismen padata, designet til at organisere parallel udførelse af opgaver i kernen, tilføjede understøttelse af flertrådede opgaver med belastningsbalancering.
    • I pstore-mekanismen, som giver dig mulighed for at gemme fejlfindingsoplysninger om årsagen til nedbruddet i hukommelsesområder, der ikke går tabt mellem genstart, tilføjet backend til at gemme oplysninger for at blokere enheder.
    • Fra PREEMPT_RT-kernegrenen flyttet implementering af lokale låse.
    • Tilføjet nyt bufferallokerings-API (AF_XDP), der har til formål at forenkle skrivningen af ​​netværksdrivere med XDP (eXpress Data Path)-understøttelse.
    • For RISC-V-arkitekturen er understøttelse af fejlfinding af kernekomponenter ved hjælp af KGDB blevet implementeret.
    • Før release 4.8 er kravene til den version af GCC, der kan bruges til at bygge kernen, blevet øget. I en af ​​de næste udgivelser er det planlagt at hæve barren til GCC 4.9.
  • Diskundersystem, I/O og filsystemer
    • I Device Mapper tilføjet ny dm-ebs (emuler blokstørrelse) handler, som kan bruges til at emulere en mindre logisk blokstørrelse (for eksempel til at emulere 512-byte sektorer på 4K sektorstørrelse diske).
    • F2FS-filsystemet understøtter nu komprimering ved hjælp af LZO-RLE-algoritmen.
    • I dm-krypt tilføjet understøttelse af krypterede nøgler.
    • Btrfs har forbedret håndtering af læseoperationer i direkte I/O-tilstand. Ved montering accelereret kontrollere slettede underafsnit og mapper, der er efterladt uden en forælder.
    • En "nodelete"-parameter er blevet tilføjet til CIFS, som tillader normal tilladelseskontrol på serveren, men forbyder klienten at slette filer eller mapper.
    • Ext4 har forbedret fejlhåndtering ENOSPC ved brug af multithreading. xattr har tilføjet understøttelse af gnu.*-navneområdet, der bruges i GNU Hurd.
    • For Ext4 og XFS er understøttelse af DAX-operationer aktiveret (direkte adgang til filsystemet, omgåelse af sidecachen uden brug af blokenhedsniveauet) i forhold til individuelle filer og mapper.
    • I systemkald statx() flag tilføjet STATX_ATTR_DAX, som når det er angivet, henter information ved hjælp af DAX-motoren.
    • EXFAT tilføjet understøttelse af verifikation af bootområde.
    • I FEDT forbedret proaktiv indlæsning af FS-elementer. Test af et langsomt 2TB USB-drev viste en reduktion i testgennemførelsestid fra 383 til 51 sekunder.
  • Netværks undersystem
    • I koden til styring af driften af ​​netværksbroer tilføjet protokol support MRP (Media Redundancy Protocol), som giver mulighed for fejltolerance ved at sløjfe flere Ethernet-switche.
    • Til trafikkontrolsystem (Tc) tilføjet ny "gate" handling, som gør det muligt at definere tidsintervaller for behandling og kassering af bestemte pakker.
    • Support til test af det tilsluttede netværkskabel og selvdiagnose af netværksenheder er blevet tilføjet til kernen og ethtool-værktøjet.
    • Understøttelse af MPLS (Multiprotocol Label Switching)-algoritmen er blevet tilføjet til IPv6-stakken til routing af pakker ved hjælp af multiprotokol-etiketskiftning (MPLS blev tidligere understøttet til IPv4).
    • Tilføjet understøttelse af transmission af IKE (Internet Key Exchange) og IPSec-pakker over TCP (RFC 8229) for at omgå mulig UDP-blokering.
    • Добавлено netværksblokenhed rnbd, som giver dig mulighed for at organisere fjernadgang til en blokenhed ved hjælp af RDMA-transport (InfiniBand, RoCE, iWARP) og RTRS-protokollen.
    • I TCP-stakken tilføjet understøttelse af rækkeviddekomprimering i selektiv bekræftelsessvar (SACK).
    • Til IPv6 implementeret TCP-LD support (RFC 6069, Lange forbindelsesforstyrrelser).
  • Оборудование
    • i915 DRM-driveren til Intel-videokort inkluderer understøttelse af Intel Tiger Lake (GEN12)-chips som standard, som implementeret evnen til at bruge SAGV (System Agent Geyserville) systemet til dynamisk at justere frekvens og spænding afhængigt af strømforbrug eller ydeevnekrav.
    • Amdgpu-driveren har tilføjet understøttelse af FP16-pixelformatet og muligheden for at arbejde med krypterede buffere i videohukommelsen (TMZ, Trusted Memory Zone).
    • Tilføjet understøttelse af strømsensorer til AMD Zen- og Zen2-processorer samt temperatursensorer til AMD Ryzen 4000 Renoir. Understøttelse til at hente oplysninger om strømforbrug gennem grænsefladen leveres til AMD Zen og Zen2 RAPL (Køregennemsnitlig effektgrænse).
    • Tilføjet understøttelse af NVIDIA-modifikatorformatet til Nouveau-driveren. For gv100 er muligheden for at bruge interlaced scanningstilstande blevet implementeret. Tilføjet vGPU-detektion.
    • Tilføjet understøttelse af Adreno A405, A640 og A650 GPU'er til MSM (Qualcomm) driveren.
    • Tilføjet interne rammer til styring af DRM-ressourcer (Direct Rendering Manager).
    • Tilføjet understøttelse af Xiaomi Redmi Note 7 og Samsung Galaxy S2 smartphones samt Elm/Hana Chromebook bærbare computere.
    • Tilføjede drivere til LCD-paneler: ASUS TM5P5 NT35596, Starry KR070PE2T, Leadtek LTK050H3146W, Visionox rm69299, Boe tv105wum-nw0.
    • Tilføjet understøttelse af ARM-kort og platforme Renesas "RZ/G1H", Realtek RTD1195, Realtek RTD1395/RTD1619, Rockchips RK3326, AMLogic S905D, S905X3, S922XH, Olimex A20-OLinuXino-LIME-e, Check Point
      , Beacon i.MX8m-Mini, Qualcomm SDM660/SDM630, Xnano X5 TV Box, Stinger96, Beaglebone-AI.

    • Tilføjet understøttelse af MIPS-processor Loongson-2K (forkortet Loongson64). Til CPU Loongson 3 er understøttelse af virtualisering ved hjælp af KVM-hypervisor blevet tilføjet.
    • Tilføjet
      understøttelse af den russiske Baikal-T1-processor og system-on-chip baseret på den BE-T1000. Baikal-T1-processoren indeholder to P5600 MIPS 32 r5 superskalære kerner, der opererer ved 1.2 GHz. Chippen indeholder L2-cache (1 MB), DDR3-1600 ECC-hukommelsescontroller, 1 10Gb Ethernet-port, 2 1Gb Ethernet-porte, PCIe Gen.3 x4-controller, 2 SATA 3.0-porte, USB 2.0, GPIO, UART, SPI, I2C. Processoren giver hardwareunderstøttelse til virtualisering, SIMD-instruktioner og en integreret hardwarekryptografisk accelerator, der understøtter GOST 28147-89. Chippen er udviklet ved hjælp af en MIPS32 P5600 Warrior processor kerneenhed licenseret fra Imagination Technologies.

Samtidig Latin American Free Software Foundation dannet
вариант helt gratis kerne 5.8Linux-fri 5.8-gnu, renset for firmware- og driverelementer, der indeholder ikke-frie komponenter eller kodesektioner, hvis omfang er begrænset af producenten. Den nye udgivelse deaktiverer blob-indlæsning 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 ZL38060 Home Processor, Microsemi Connected Home Process og I2C EEPROM Slave. Opdateret klatrensningskode i Adreno GPU, HabanaLabs Goya, x86 touchscreen, vt6656 og btbcm drivere og undersystemer.

Kilde: opennet.ru

Tilføj en kommentar