Udgivelse af Linux-kernen 5.3

Efter to måneders udvikling præsenterede Linus Torvalds den kerneudgivelse Linux 5.3. Bland de mest bemærkelsesværdige ændringer er støtte til GPU'er fra AMD Navi, Zhaoxi-processorer og Intel Speed Select strømhåndteringsteknologi, muligheden for at bruge umwait-instruktioner til venting uden cykler,
en interaktiv tilstand ‘utilization clamping’ for asymmetrisk CPU, systemopkald pidfd_open, muligheden for at bruge IPv4-adresser fra subnettet 0.0.0.0/8, hardwareaccelerering af nftables, support for HDR i DRM-subsystemet, integration af hypervisoren ACRN.

I annonceringen Det nye udgave Linus mindede alle udviklere om den vigtigste regel for kerneludvikling – at opretholde uændret adfærd for brugerpladsens komponenter. Ændringerne i kernen må på ingen måde forstyrre allerede fungerende applikationer eller føre til regressionsproblemer på brugerniveau. Dog kan ændringer i adfærd medføre, at ABI bliver ændret, forældet kode fjernes eller fejl opstår, men også indirekte påvirkning af korrekt fungerende nyttige forbedringer. Som et klart eksempel blev der forkastet nyttig optimering i Ext4-koden, som reducerede antallet af tilgang til lagringsenheden ved at deaktivere forsinket indlæsning af inode-tabellen ved små input/output-anmodninger.

Optimeringen resulterede i, at på grund af den nedsatte diskaktivitet blevet entropien for det tilfældige talgenerator getrandom() akkumuleret langsommere, og under visse omstændigheder kunne der observeres fryseproblemer under opstart indtil entropipuljen blev fyldt. Da optimeringen faktisk er nyttig, opstod der en diskussion blandt udviklerne, hvor det blev foreslået at løse problemet ved standard at deaktivere den blokkerende tilstand i getrandom()-kaldet med en valgfri flag til venting af entropi, men en sådan ændring vil påvirke kvaliteten af de tilfældige tal i opstartsfasen.

Den nye version indeholder 15794 rettelser fra 1974 udviklere,
størrelsen på patchen er 92 MB (ændringerne har berørt 13986 filer, tilføjet 258419 linjer kode,
og fjernet 599137 linjer). Omkring 39% af alle ændringerne i 5.3
relaterer sig til enhedsdrivere, cirka 12% af ændringerne har
relation til opdatering af kode specifik for hardwarearkitekturer, 11%
er relateret til netværksstakken, 3% til filsystemer og 3% til interne
kernesubsystemer.

Vigtige nyheder:

  • Hukommelse og systemtjenester
    • Udviklingen af funktionaliteten 'pidfd' er fortsat, hvilket hjælper med at håndtere situationer med genbrug af PID (pidfd er knyttet til en specifik proces og ændres ikke, mens PID kan være knyttet til en anden proces, efter at den nuværende proces, der er associeret med denne PID, er afsluttet). Tidligere er der allerede blevet tilføjet
      systemopkaldet pidfd_send_signal() og flaget CLONE_PIDFD i opkaldet clone(), som muliggør hentning af pidfd til brug i idfd_send_signal(). Ved brug af opkaldet clone() med flaget CLONE_PIDFD kunne der opstå problemer med serviceadministratorer eller systemet til tvangsafslutning af processer ved mangel på hukommelse på Android-platformen. I dette tilfælde bruges opkaldet fork() eller clone() uden CLONE_PIDFD.

      I kernel 5.3 er systemopkaldet pidfd_open(), som muliggør hentning af et verificeret pidfd for en godkendt eksisterende proces, der ikke er oprettet ved hjælp af opkaldet clone() med flaget CLONE_PIDFD. Der er også tilføjet support til polling af pidfd ved hjælp af poll() og epoll(), hvilket gør det muligt for procesledere at overvåge afslutninger af vilkårlige processer uden at frygte en kapløbssituation ved tildeling af PID til en ny proces. Mekanismen til notifikation om afslutning af processen, der er knyttet til pidfd, er analog med informering om afslutningen af sin egen underproces;

    • Til tidsplanlæggeren er der tilføjet support til mekanismen for belastningsbegrænsning (Utilization clamping), som muliggør at overholde minimums- eller maksimumsgrænser for frekvenser afhængigt af de aktive opgaver på CPU'en. Den præsenterede mekanisme fremskynder opgaver, der direkte påvirker brugeroplevelsen, ved at køre disse opgaver mindst i den nederste grænse for den "anmodede" frekvens. Lavprioriterede opgaver, der ikke påvirker brugerens arbejde, køres med den øverste grænse for den "tilladte" frekvens. Grænserne indstilles gennem attributterne sched_uclamp_util_min og sched_uclamp_util_max i systemopkaldet sched_setattr().
    • Der er tilføjet support til energiforbrugskontrolteknologi Intel Speed Select, tilgængelig på nogle servere med Intel Xeon-processorer. Den nævnte teknologi gør det muligt at indstille ydeevne- og båndbreddeindstillingerne for forskellige CPU-kerner, hvilket gør det muligt at prioritere ydeevnen for opgaver, der udføres på bestemte kerner, på bekostning af ydeevnen på andre kerner;
    • Processer i brugerens rum leveres muligheden for at vente i kort tid uden brug af cykler ved hjælp af umwait-instruktionen. Denne instruktion, sammen med umonitor- og tpause-instruktionerne, vil blive introduceret i de kommende Intel-‘Tremont’-chips og muliggøre forsinkelser, der er effektive med hensyn til energiforbrug og ikke påvirker ydeevnen for andre tråde under brug af Hyper Threading;
    • Der er tilføjet støtte til store hukommelsessider (huge pages) til RISC-V-arkitekturen;
    • Der er tilføjet mulighed for dereferering af kernepegepinde i brugerens rum til kprobe-trackingmekanismen, hvilket kan anvendes til eksempelvis at evaluere indholdet af strukturer, der sendes til systemopkald. Der er også tilføjet mulighed for at udføre kontroller under opstart.
    • Der er tilføjet en PREEMPT_RT mulighed i konfigurationsfilen til arbejde i realtidstilstand. Selve koden til støtte for realtidstilstand er endnu ikke tilføjet til kernen, men introduktionen af muligheden er et godt tegn på, at den mangeårige epilog om integration Realtime-Preempt patches er ved at nærme sig sin afslutning;
    • Der er tilføjet systemopkaldet clone3() med implementeringen af en mere udvidelig version af clone()-interfacet, som tillader angivelse af flere flag;
    • Der er tilføjet en bpf_send_signal() handler, der gør det muligt for BPF-programmer at sende signaler til vilkårlige processer;
    • Der er tilføjet en ny mekanisme til filtrering af events for perf i KVM-hypervisorens miljø, der muliggør administratoren at bestemme de typer af events, der er tilladt eller ikke tilladt til overvågning på gæstesystemets side;
    • Der er tilføjet mulighed for at håndtere programmer med løkker i mekanismen til verifikation af eBPF-applikationer, hvis udførelsen af løkken er begrænset og ikke kan føre til overskridelse af grænsen for det maksimale antal instruktioner;
  • DiskSubsystem, input/output og filsystemer
    • For the XFS file system, multi-threaded traversing of inodes has been implemented (for example, during quota checks). New ioctl BULKSTAT and INUMBERS have been added, providing access to the features introduced in the fifth edition of the FS format, such as inode birth time and the ability to set BULKSTAT and INUMBERS parameters for each AG (Allocation Groups);
    • In Ext4 tilføjet støtte til holes in directories (unbound blocks).
      Processing of the "i" flag (immutable) for open files has been provided (preventing writing if the flag was set while the file was already open);
    • In Btrfs, a fast implementation of crc32c on all architectures has been established;
    • In CIFS, the code for supporting smbdirect has been removed from experimental development. In SMB3, the ability to use cryptographic algorithms in GCM mode has been added. A new mount option for extracting mode parameters from ACE (Access Control Entry) records has been introduced. Performance of the open() call has been optimized;
    • In F2FS, an option has been added to limit the garbage collector when operating in checkpoint=disable mode. An ioctl for removing block ranges from F2FS has been added, allowing for on-the-fly resizing of partitions. Support for placing a swap file in F2FS has been included, ensuring direct I/O. File pinning and block allocation for such files have been added for all users;
    • In the async I/O interface io_uring, support for asynchronous operations sendmsg() and recvmsg() has been added;
    • In the UBIFS file system, support for compression using the zstd algorithm and the ability to verify signed FS images have been implemented;
    • In the Ceph FS, support for SELinux security labels for files has been added;
    • For NFSv4, a new mount option "nconnect=" has been implemented, determining the number of connections established with the server. Traffic between these connections will be distributed using load balancing. In addition, the NFSv4 server now creates a directory /proc/fs/nfsd/clients with information about current clients, including details about the files they have opened;
  • Virtualisering og sikkerhed
    • A hypervisor for embedded devices has been included in the kernel ACRN, som er skrevet med henblik på klarhed og anvendelighed i realtidsopgaver samt egnethed til brug i kritisk vigtige systemer. ACRN sikrer minimale overhead-omkostninger, garanterer lav latenstid (low latency) og tilstrækkelig responsivitet ved interaktion med hardware. Der understøttes virtualisering af CPU-ressourcer, input/output, netværkssystemer samt grafik- og lydoperationer. ACRN kan anvendes til at køre flere isolerede virtuelle maskiner i elektroniske kontrolenheder, instrumentbrædder, bilens informationssystemer, forbrugeriot-enheder og andet indlejret udstyr;
    • I User-mode Linux tilføjet er der en "time-travel"-tilstand, der giver mulighed for at bremse eller accelerere tiden i UML-virtuel miljø for at lette debug af tidsrelateret kode. Derudover er parameteren tilføjet
      time-travel-start, der muliggør at starte systemklokkerne fra et angivet punkt i epoch-format;
    • Nye kommandolinjeindstillinger til kernen "init_on_alloc" og "init_on_free" er tilføjet, hvorved der aktiveres nulstilling af tildelte og frigivne hukommelsesområder (fyldt med nuller ved malloc og free), hvilket øger sikkerheden med ekstra overhead til initialisering;
    • En ny driver virtio-iommu er blevet tilføjet med implementering af et para-virtualiseret enhed, der muliggør sending af IOMMU-anmodninger såsom ATTACH, DETACH, MAP og UNMAP over virtio-transport uden at emulere hukommelsestabeller;
    • En ny driver virtio-pmem, som giver adgang til lagringsenheder spejlet i det fysiske adresseområde, såsom NVDIMM;
    • Muligheden for at knytte kryptografiske nøgler til bruger- eller netværksnavneområde er blevet implementeret (nøgler bliver utilgængelige uden for det valgte navneområde), samt beskyttelse af nøgler ved hjælp af ACL;
    • I kryptosystemet tilføjet understøttelse af en meget hurtig ikke-kryptografisk hash-algoritme xxhash, hvis hastighed er begrænset af hukommelsens ydeevne;
  • Netværkssubsystem
    • Behandling af IPv4-adresser i rækken 0.0.0.0/8, som tidligere var utilgængelig, er blevet sikret. Indførelsen af dette subnet vil tillade gør det muligt at distribuere yderligere 16 millioner IPv4-adresser;
    • I Netfilter for nftables tilføjet understøttelse af mekanismer til hardwareaccelerering af pakke filtrering gennem anvendelse af nye tilføjelser i driverne Flow Block API. Regler for netværksadaptere kan være komplekse og omfatte hele tabeller med regler. Aktivering sker ved at knytte NFT_TABLE_F_HW-flaget til tabellen. Enkle metadata for protokoller på lag 3 og 4 samt handlinger som accept/afvise, matchinger baseret på IP og netværksporte for afsender/modtager samt protokoltype understøttes.
    • Tilføjet indbygget understøttelse af forbindelsessporing for netværksbroer, uden behov for en emulatorlags br_netfilter;
    • I nf_tables tilføjet understøttelse af SYNPROXY-modulet, der gengiver lignende funktionalitet fra iptables, og muligheden for at indføre regler baseret på individuelle indstillinger i IPv4-headeren;
    • Muligheden for at knytte BPF-programmer til systemopkaldene setsockopt() og getsockopt() er blevet tilføjet, hvilket f.eks. muliggør at knytte brugerdefinerede adgangshåndterere til disse opkald. Derudover er der tilføjet et nyt hook, som gør det muligt at kalde BPF-programmet én gang for hver RTT (round-trip-time);
    • For IPv4 og IPv6 tilføjet en ny mekanisme til lagring af nexthop-routingdata, der er målrettet mod at øge skalerbarheden af routingtabellerne. Udførte tests viste, at den nye system satte 743.000 ruter ind i kernen på kun 4,3 sekunder;
    • For Bluetooth er implementeret funktionaliteten, der kræves for at understøtte LE ping;
  • Udstyr
    • Tilføjet understøttelse af x86-kompatible processorer fra Zhaoxin, udviklet som følge af et fællesprojekt mellem VIA Technologies og Shanghai kommune. CPU-familien ZX er bygget på x86-64 Isaiah-arkitekturen, der fortsætter udviklingen af teknologierne VIA Centaur;
    • I DRM (Direct Rendering Manager)-subsystemet samt i grafikkdriverne amdgpu og i915 er der tilføjet understøttelse af analysen, behandlingen og transmissionen af HDR (High Dynamic Range) metadata via HDMI-porten, som muliggør HDR-paneler og skærme, der kan vise udvidede lysstyrkeområder;
    • I amdgpu-driveren er der tilføjet grundlæggende understøttelse af AMD NAVI GPU (RX5700), som inkluderer en grunddriver, kode til interaktion med skærme (DCN2), understøttelse af GFX og beregninger (GFX10),
      SDMA 5 (System DMA0), strømmoduleringsværktøjer og multimediekodere/dekodere (VCN2). I amdgpu er der også forbedret understøttelse af kort baseret på GPU Vega12 og Vega20, som har fået yderligere muligheder for hukommelses- og energistyring;
    • I driver amdkfd (til diskrete GPU'er såsom Fiji, Tonga, Polaris) har fået tilføjet support til GPU-baserede kort VegaM;
    • I DRM-driveren til Intel-grafikkort for Icelake-chips implementeret er der tilføjet en ny multisegment gamma-korrektionsmode. Der er tilføjet mulighed for udgang via DisplayPort i YCbCr4:2:0 format. Nye firmwareopdateringer er tilføjet GuC for SKL, BXT, KBL, GLK og ICL. Muligheden for at slukke for skærmens strømforsyning i asynkron tilstand er blevet realiseret. Tilføjet support for at gemme og gendanne renderingskonteksten for Ironlake-chips (gen5) og gen4 (Broadwater – Cantiga), som gør det muligt at gendanne GPU'ens tilstand fra brugerrummet, når man skifter fra at udføre en gruppe operationer til en anden;
    • I Nouveau-driveren er chipsetdetektering for NVIDIA Turing TU116 blevet implementeret;
    • Funktionerne i DRM/KMS-driveren for ARM Komeda skærmoperation accelerators (Mali D71) er blevet udvidet, ny support for skalering, lagdeling/sammenlægning, rotation, forsinket optagelse, AFBC, SMMU og farvekodningsformater Y0L2, P010, YUV420_8/10BIT er blevet tilføjet;
    • I MSM-driveren er der tilføjet støtte til A540 GPU Adreno-serien, som bruges i Qualcomm-processorer, samt support til DSI-controlleren MSM8998 for Snapdragon 835;
    • Der er tilføjet drivere for LCD-paneler Samsung S6E63M0, Armadeus ST0700, EDT ETM0430G0DH6, OSD101T2045-53TS,
      Evervision VGG804821, FriendlyELEC HD702E, KOE tx14d24vm1bpa, TFC S9700RTWV43TR-01B, EDT ET035012DM6 og VXT VL050-8048NT-C01;
    • Tilføjet driver til aktivering af accelerationsmidler til dekodning
      af video tilgængelige i SoC Amlogic Meson;
    • I v3d-driveren (til Broadcom Video Core V GPU enheden, der bruges i Raspberry Pi) er der tilføjet understøttelse af dispatching af compute shaders;
    • Tilføjet en driver til SPI-tastaturer og trackpads, der anvendes i moderne modeller af Apple MacBook og MacBookPro;
    • Tilføjet yderligere beskyttelse af ioctl-opkald relateret til floppy-driveren, og selve driveren er markeret som forlatt
      («orphaned»), hvilket indebærer, at testningen af denne er stoppet. Driveren forbliver i kernen, men korrekt funktion er ikke garanteret. Driveren betragtes som forældet, da det er svært at finde fungerende hardware til at teste den — alle aktuelle eksterne lagringsenheder bruger typisk USB-interface.
    • Tilføjet cpufreq-driver til Raspberry Pi boards, der muliggør dynamisk styring af CPU-frekvensændringer;
    • Support for nye ARM SoC Mediatek mt8183 (4x Cortex-A73 + 4x Cortex-A53), TI J721E (2x Cortex-A72 + 3x Cortex-R5F + 3 DSP'er + MMA) og Amlogic G12B (4x Cortex-A73 + 2x Cortex-A53), samt boards:
      • Purism Librem5,
      • Aspeed BMC,
      • Microsoft Olympus BMC,
      • Kontron SMARC,
      • Novtech Meerkat96 (i.MX7),
      • ST Micro Avenger96,
      • Google Cheza (Qualcomm SDM845),
      • Qualcomm Dragonboard 845c (Qualcomm SDM845),
      • Hugsun X99 TV Box (Rockchip RK3399),
      • Khadas Edge/Edge-V/Captain (Rockchip RK3399),
      • HiHope RZ/G2M,
      • NXP LS1021A-TSN.

Samtidig Latinamerikansk Fond for fri software skabte
variant fuldstændigt frit kerne 5.3 — Linux-libre 5.3-gnu, renset for firmware- og driverkomponenter, der indeholder ikke-frie komponenter eller kodeområder, hvis anvendelse er begrænset af producenten. I den nye udgave er opstart af blobs i qcom-drivere, hdcp drm, allegro-dvt og meson-vdec deaktiveret.
Rensningskoden for blobs i drivere og subsystemer som amdgpu, i915, netx, r8169, brcmfmac, rtl8188eu, adreno, si2157, pvrusb2, touchscreen_dmi, lyddriveren til skylake, samt i dokumentationen til mikroprogramvaren er blevet 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