Utgivelsen av Linux-kjernen 5.1

Etter to måneder med utvikling av Linus Torvalds har presentert utgjeving av kjernen Linux 5.1. Blant de mest merkbare endringene er et nytt grensesnitt for asynkron I/O io_uring, muligheten for å bruke NVDIMM som RAM, støtte for delt virtuell minne i Nouveau, støtte for skalerbar overvåkning av svært store FS gjennom fanotify, muligheten for å tilpasse kompresjonsnivåene Zstd i Btrfs, en ny cpuidle TEO-driver, implementering av systemanrop for å løse 2038-problemet, muligheten for å starte opp fra enheter med device-mapper uten initramfs, LSM-modulen SafeSetID, og støtte for kombinerte live-patcher.

Viktige nyheter:

  • Disk subsystem, I/O og filsystemer
    • Et nytt grensesnitt for asynkron I/O er implementert — io_uring, som er bemerkelsesverdig for støtten av I/O-polling og muligheten til å fungere både med og uten buffer. Det er verdt å merke seg at den tidligere foreslåtte mekanismen for asynkron I/O "aio" ikke støttet bufferbasert I/O, kunne bare fungere i O_DIRECT-modus (uten buffering og uten cache), hadde problemer med blokkeringer på grunn av venting på tilgjengelighet av metadata, og viste store overheadkostnader på grunn av datakopiering i minnet.

      I API-en
      io_uring har utviklerne forsøkt å rette opp manglene i det gamle aio-grensesnittet. For ytelse er io_uring svært nær SPDK og overgår libaio betydelig når polling er aktivert. For å bruke io_uring i sluttapplikasjoner som kjører i brukerens rom, er biblioteket liburing, som gir et høynivåbånd over kjerneasnittet;

    • I mekanismen for hendelsessporing i FS fanotify() er det lagt til støtte for å overvåke situasjoner med endringer i superblokken og strukturen dirent (hendelser for opprettelse, sletting og flytting av kataloger). De tilgjengelige funksjonene bidrar til å løse skalerbarhetsproblemer som oppstår ved å opprette rekursive endringsspor i svært store FS ved hjelp av inotify-mekanismen (endringer i dirent kunne tidligere bare spores via inotify, men
      effektiviteten under rekursiv overvåkning av store nestede kataloger var ikke optimal). Nå kan slik overvåkning utføres effektivt gjennom fanotify;
    • I filsystemet Btrfs er det lagt til muligheten for å justere komprimeringsnivået for algoritmen zstd, som kan betraktes som et optimalt kompromiss mellom den raske, men ineffektive lz4 og den langsomme, men effektive xz. Tilsvarende hvordan det tidligere var mulig å angi komprimeringsnivået ved bruk av zlib, er støtte for monteringsalternativet "-o compress=zstd:level" lagt til for zstd. Under testing ga det minste første nivået en datakomprimering på 2,658 ganger med en komprimeringshastighet på 438,47 MB/s, utpakkingshastighet på 910,51 MB/s og minneforbruk på 780 MB, mens det maksimale nivået 15 ga 3,126 ganger, men med en komprimeringshastighet på 37,30 MB/s, utpakkingshastighet på 878,84 MB/s og minneforbruk på 2547 MB;
    • Lagt til muligheten til å starte opp fra et filsystem som er plassert på en enhet med device-mapper, uten bruk av initramfs. Fra og med den nåværende utgivelsen av kjernen kan device-mapper brukes direkte under oppstart, for eksempel som partisjon med rotfilsystemet. Partisjonen konfigureres ved hjelp av oppstartsparameteren "dm-mod.create". Blant de tillatte oppstartsmulighetene for device-mapper-moduler er: "crypt", "delay", "linear", "snapshot-origin" og "verity";
    • Til filsystemet F2FS, som er rettet mot Flash-lagringsenheter, er flagget F2FS_NOCOW_FL lagt til, noe som gjør det mulig å deaktivere copy-on-write-modus for en angitt fil;
    • Filtreringssystemet er fjernet fra kjernen Exofs, som er en variant av ext2, tilpasset for bruk med objektbaserte lagringsenheter (Object-based Storage Device). Støtte for SCSI-protokollen for slike objektlagringsenheter er også fjernet;
  • Virtualisering og sikkerhet
    • Det er lagt til et alternativ PR_SPEC_DISABLE_NOEXEC til prctl() for å kontrollere spekulativ utførelse av instruksjoner for den valgte prosessen. Det nye alternativet tillater selektiv deaktivering av spekulativ utførelse for prosesser som potensielt kan angrepet med en Spectre-type angrep. Blokkeringen gjelder frem til den første exec()-anropet;
    • En LSM-modul er implementert SafeSetID, som gjør det mulig for systemtjenester å trygt administrere brukere uten heving av privilegier (CAP_SETUID) og uten å få root-brukerets myndighet. Tildelingen av privilegier skjer gjennom definering i securityfs av regler basert på en hvit liste over tillatte bindinger (i form av "UID1:UID2");
    • Lavaren låg-nivå endringar som er nødvendige for stabling av sikkerheitsmodular (LSM). Ein ny oppstartparameter for kjernen «lsm» er introdusert, som gjev kontroll over kva moduler som blir lasta og i kva rekkefølge.
    • Støtte for filsystemnamn er lagt til i revisjonssystemet.
    • Utvida funksjonaliteten til GCC-pluginen structleak, som forhindrar potensielle minnesømmar. Variablar som brukast i koden via referanse i stakken, blir no synka.
  • Nettverks subsystem
    • For soklar er implementert er det ein ny opsjon «SO_BINDTOIFINDEX», lik «SO_BINDTODEVICE», men som tek indeksnummeret til nettverksgrensesnittet som argument i staden for navnet på grensesnittet.
      I mac80211-stakken er det lagt til moglegheit for å tildele fleire BSSID (MAC-adresser) til ein eining. I samband med prosjektet for optimalisering av WiFi-ytelse, er det lagt til hensyn til fordeling av lufta tid og moglegheit for å distribuere lufta tid mellom fleire stasjonar (når ein arbeider i tilgangspunktmodus, fordelast mindre tid til sending til trege trådlaus stasjonar i staden for jamn fordeling av tid mellom alle stasjonar).
    • devlink health
    • En mekanisme for«, som gjev varslar ved problem med nettverksgrensesnittet.Trygg levering av signaler, med tanke på moglegheit for gjenbruk av PID. Tidlegare kunne ein situasjon oppstå når ein sende kill-oppkalling straks etter å ha sendt signalet, der det målretta PID kunne ha vorte frigjort på grunn av prosessen sin avslutning og opptatt av ein annan prosess, og signalet blei i staden sendt til ein annan prosess. For å unngå slike situasjonar, er det lagt til ein ny systemkall pidfd_send_signal, som bruker filbeskrivingar frå /proc/pid for å sikre stabil tilknytning til prosessen. Sjølv om PID blir gjenbrukt under behandlinga av systemkallet, vil filbeskrivinga forbli uendra og kan trygt brukast til å sende signal til prosessen.
  • Minne og systemtjenester
    • API: moglegheit for bruk av vedvarande minneenheter (persistent-memory, til dømes
    • Lagt til NVDIMM NVDIMM) som RAM. Tidligere ble lignende enheter støttet som lagringsenheter, men nå kan de også brukes som ekstra RAM. Muligheten ble implementert som svar på brukernes ønsker, som er villige til å akseptere ytelsestap og ønsker å bruke den innebygde Linux-kjernens minnehåndterings-API i stedet for å bruke eksisterende minnespredningssystemer i brukerens rom, som fungerer over mmap for dax-filen;
    • En ny CPU-ernæringsbehandler (cpuidle, som bestemmer når CPU-en kan settes i dype strømmodus, jo dypere modus, jo større besparelser, men mer tid kreves for å komme ut av modusen) er lagt til — TEO (Timer Events Oriented Governor). Tidligere ble det tilbudt to cpuidle-behandlere — 'menu' og 'ladder', som skilles ved heuristikk. I 'menu'-behandleren er det kjente problemer med å ta heuristiske beslutninger, og for å løse dette ble det besluttet å utvikle en ny behandler. TEO posisjoneres som et alternativ til 'menu'-behandleren, som gir høyere ytelse samtidig som det opprettholder samme energiforbruk.
      Den nye behandleren kan aktiveres ved hjelp av oppstartsalternativet 'cpuidle.governor=teo';
    • I arbeidet med å løse 2038-problemet, forårsaket av overflyt av 32-bits type time_t, er det inkludert systemanrop som tilbyr 64-bits tidstellere for 32-bits arkitekturer. Som et resultat kan den 64-bits time_t-strukturen nå brukes på alle arkitekturer. Lignende endringer er også implementert i nettverksunderdelen for alternativer timestamp for nettverkskontakter;
    • I systemet for varm patching av kjernen (live patching) er det lagt til funksjonen «Atomic Replace» for atomær anvendelse av en serie endringer til én funksjon. Denne funksjonen gjør det mulig å distribuere samlede patcher som dekker flere endringer samtidig, i stedet for den relativt kompliserte prosessen med sekvensert påføring av live-patcher i en streng, bestemt rekkefølge. Tidligere måtte hver påfølgende endring være avhengig av tilstanden til funksjonen etter den forrige endringen; nå er det mulig å distribuere flere endringer knyttet til én opprinnelig tilstand (dvs. vedlikeholdere kan støtte én samlet patch i forhold til den grunnleggende kjernen i stedet for en kjede av avhengige patcher);
    • Erklært utdatert støtte for kjørbare filformater a.out og
      fjernet kode for å danne core-filer i a.out-format, som er i forlatt tilstand. a.out-formatet brukes lenge ikke lenger på systemer med Linux, og genereringen av a.out-filer har lenge ikke vært støttet av moderne verktøy i konfigurasjoner for Linux som standard. I tillegg kan lastetid for a.out-filer implementeres helt i brukerrurområdet;
    • Mechanismen for verifisering av BPF-programmer har fått mulighet til å identifisere og fjerne unødvendig kode. Kjernepakken inkluderer også patcher med støtte for spinlock for BPF-subsystemet, som gir ekstra muligheter for å håndtere parallell kjøring av BPF-programmer;
  • Utstyr
    • In the Nouveau driver er det lagt til støtte for heterogen minnehåndtering, som gir mulighet for CPU- og GPU-tilgang til felles synkroniserte minneområder. Delte virtuelle minnesystemer (SVM, shared virtual memory) er implementert på basis av HMM-subsystemet (heterogen minnehåndtering), som gjør det mulig å bruke enheter med egne minnekontroller (MMU, memory management unit) som kan få tilgang til hovedminnet. HMM kan også organisere et delt adresseområde mellom GPU og CPU, hvor GPU kan få tilgang til hovedminnet til prosessen. Støtte for SVM er for tiden kun aktivert for GPU-er av Pascal-familien, selv om støtte også er tilgjengelig for GPU-er av Volta og Turing. I tillegg, i Nouveau er lagt til ny ioctl for styring av migrasjon av prosessminneområder til GPU-minne;
    • I DRM-driveren til Intel for GPU Skylake og nyere (gen9+) included Standard fastboot mode that excludes unnecessary mode changes during boot. Lagt til new device identifiers based on Coffelake and Ice Lake microarchitectures. For Coffelake chips er det lagt til GVT support (GPU virtualization). For virtual GPUs er implementert VFIO EDID support. For MIPI/DSI LCD panels er det lagt til support for ACPI/PMIC elements. Implementert new TV modes 1080p30/50/60 TV;
    • The amdgpu driver has added support for Vega10/20 BACO GPUs. Power management for Vega 10/20 and fan control tables for Vega 10 have been implemented. New PCI device identifiers for Picasso GPUs have been added. Inkludert dependency management interface to avoid deadlocks;
    • Inkludert DRM/KMS driver for graphics acceleration ARM Komeda (Mali D71);
    • Added support for display panels Toppoly TPG110, Sitronix ST7701, PDA 91-00156-A0, LeMaker BL035-RGB-002 3.5 and Kingdisplay kd097d04;
    • Added support for audio codecs Rockchip RK3328, Cirrus Logic CS4341 and CS35L36, MediaTek MT6358, Qualcomm WCD9335, and Ingenic JZ4725B, as well as audio platform Mediatek MT8183;
    • Added support for NAND controllers Flash STMicroelectronics FMC2, Amlogic Meson;
    • Added support for accelerators for Habana AI machine systems;
    • Added support for gigabit Ethernet controllers NXP ENETC and wireless interfaces MediaTek MT7603E (PCIe) and MT76x8.

At the same time, the Latin American Free Software Foundation dannet
variant completely free kernel 5.1 — Linux-libre 5.1-gnu, cleared of firmware and driver elements containing proprietary components or code sections limited in scope by the manufacturer. The new release disables blob loading in drivers mt7603 and goya. The blob cleaning code in the wilc1000, iwlwifi, soc-acpi-intel, brcmfmac, mwifiex, btmrvl, btmtk, and touchscreen_dmi drivers and subsystems has been updated. Blob cleaning in the lantiq xrx200 firmware loader has been discontinued due to its removal from the kernel.

Kilde: opennet.ru

Kjøp pålitelig hosting for nettsteder med DDoS-beskyttelse, VPS VDS-servere 🔥 Kjøp pålitelig hosting for nettsteder med DDoS-beskyttelse, VPS VDS-servere | ProHoster