Linux-kjerneutgivelse 5.2

Etter to måneder med utvikling Linus Torvalds innsendt kjerneutgivelse Linux 5.2. Blant de mest merkbare endringene: Ext4-driftsmodus skiller mellom store og små bokstaver, separate systemoppfordringer for montering av filsystemet, drivere for GPU Mali 4xx/ 6xx/7xx, muligheten til å håndtere endringer i sysctl-verdier i BPF-programmer, enhetsmapper modul dm-dust, beskyttelse mot angrep MDS, støtte for Sound Open Firmware for DSP, optimalisering av BFQ-ytelse, bringer PSI (Pressure Stall Information)-delsystemet til muligheten for bruk i Android.

Den nye versjonen inkluderer 15100 1882 rettelser fra XNUMX XNUMX utviklere,
oppdateringsstørrelse - 62 MB (endringer berørte 30889 filer, 625094 linjer med kode ble lagt til, 531864 linjer ble slettet). Omtrent 45 % av alle presentert i 5.2
endringer er relatert til enhetsdrivere, omtrent 21 % av endringene er det
holdning til oppdatering av kode spesifikk for maskinvarearkitekturer, 12 %
relatert til nettverksstakken, 3 % til filsystemer og 3 % til interne
kjerneundersystemer. 12.4 % av alle endringer ble utarbeidet av Intel, 6.3 % av Red Hat, 5.4 % av Google, 4.0 % av AMD, 3.1 % av SUSE, 3 % av IBM, 2.7 % av Huawei, 2.7 % av Linaro, 2.2 % av ARM , 1.6 % - Oracle.

Den viktigste innovasjoner:

  • Diskundersystem, I/O og filsystemer
    • Lagt til for Ext4 støtte fungerer uten å skille mellom tilfellene av tegn i filnavn, som bare aktiveres i forhold til individuelle tomme kataloger ved å bruke det nye attributtet "+F" (EXT4_CASEFOLD_FL). Når dette attributtet er satt på en katalog, vil alle operasjoner med filer og underkataloger inni bli utført uten å ta hensyn til store og små bokstaver, inkludert store og små bokstaver vil bli ignorert når du søker og åpner filer (for eksempel filene Test.txt, test.txt og test.TXT i slike kataloger vil bli betraktet som det samme). Som standard fortsetter filsystemet å skille mellom store og små bokstaver, med unntak av kataloger med "chattr +F"-attributtet;
    • Funksjoner for behandling av UTF-8-tegn i filnavn, som brukes når du utfører strengsammenligning og normaliseringsoperasjoner, har blitt forenet;
    • XFS legger til infrastruktur for filsystemhelseovervåking og en ny ioctl for å spørre om helsestatus. En eksperimentell funksjon er implementert for å sjekke superblokktellere på nettet.
    • Lagt til ny modul enhet-mapper "dm-støv", som lar deg simulere utseendet til dårlige blokker på media eller feil når du leser fra disk. Modulen lar deg forenkle feilsøking og testing av applikasjoner og ulike lagringssystemer i møte med mulige feil;
    • Utført Betydelige ytelsesoptimaliseringer for BFQ I/O-planleggeren. Under forhold med høy I/O-belastning er det gjort optimaliseringer tillate Reduser tiden for operasjoner som å starte programmer med opptil 80 %.
    • Lagt til en serie systemoppkall for montering av filsystemer: fsopen(), åpent_tre(), fspick(), fsmount(), fsconfig() и move_mount(). Disse systemkallene lar deg behandle forskjellige monteringsstadier separat (behandle superblokken, få informasjon om filsystemet, montere, feste til monteringspunktet), som tidligere ble utført ved bruk av common mount() systemkallet. Separate anrop gir muligheten til å utføre mer komplekse monteringsscenarier og utføre separate operasjoner som å rekonfigurere superblokken, aktivere alternativer, endre monteringspunktet og flytte til et annet navneområde. I tillegg lar separat behandling deg nøyaktig bestemme årsakene til utdata av feilkoder og angi flere kilder for flerlags filsystemer, for eksempel overlegg;
    • En ny operasjon IORING_OP_SYNC_FILE_RANGE er lagt til grensesnittet for asynkron I/O io_uring, som utfører handlinger tilsvarende et systemkall sync_file_range(), og implementerte også muligheten til å registrere eventfd med io_uring og motta varsler om fullføring av operasjoner;
    • For CIFS-filsystemet er FIEMAP ioctl lagt til, noe som gir effektiv utstrekningskartlegging, samt støtte for SEEK_DATA- og SEEK_HOLE-modusene;
    • I FUSE-delsystemet foreslått API for håndtering av databufring;
    • Btrfs har optimalisert qgroups-implementeringen og forbedret fsync-utførelseshastighet for filer med flere harde lenker. Kontrollkoden for dataintegritet er forbedret, som nå tar hensyn til mulig skade på informasjon i RAM før data skylles til disken;
    • CEPH la til støtte for eksport av øyeblikksbilder via NFS;
    • Implementeringen av NFSv4-montering i "myk" modus er forbedret (hvis det oppstår en feil ved tilgang til serveren i "myk" modus, returnerer et anrop til en feilkode umiddelbart, og i "hard" modus gis ikke kontroll før FS tilgjengelighet eller tidsavbrudd gjenopprettes). Den nye utgivelsen gir mer nøyaktig timeout-håndtering, raskere krasjgjenoppretting og et nytt "mykere" monteringsalternativ som lar deg endre feilkoden (ETIMEDOUT) som returneres når en timeout oppstår;
    • nfsdcld API, designet for å spore tilstanden til NFS-klienter, lar NFS-serveren spore tilstanden til klienten på riktig måte ved omstart. Dermed kan nfsdcld-demonen nå fungere som en nfsdcltrack-behandler;
    • For AFS la til emulering av byteområdelåser i filer (Byteområdelåsing);
  • Virtualisering og sikkerhet
    • Det har blitt jobbet for å eliminere steder i kjernen som tillater kodekjøring fra skrivbare reflekterte minneområder, noe som tillater blokkering av potensielle hull som kan utnyttes under et angrep;
    • En ny kjernekommandolinjeparameter "mitigations=" er lagt til, og gir en forenklet måte å kontrollere aktiveringen av visse teknikker for å beskytte mot sårbarheter forbundet med spekulativ utførelse av instruksjoner på CPU. Passering av "mitigations=off" deaktiverer alle eksisterende metoder, og standardmodusen "mitigations=auto" aktiverer beskyttelse, men påvirker ikke bruken av Hyper Threading. Modusen "mitigations=auto,nosmt" deaktiverer i tillegg Hyper Threading hvis det kreves av beskyttelsesmetoden.
    • La til støtte for elektronisk digital signatur i henhold til GOST R 34.10-2012 (RFC 7091, ISO/IEC 14888-3), utviklet av Vitaly Chikunov fra Basalt SPO. Lagt til støtte for AES128-CCM til den opprinnelige TLS-implementeringen. Lagt til støtte for AEAD-algoritmer til crypto_simd-modulen;
    • I Kconfig la til en egen "kjerneherding"-seksjon med alternativer for å forbedre kjernebeskyttelsen. Foreløpig inneholder den nye delen bare innstillinger for aktivering av GCC-sjekkforbedrende plugins;
    • Kjernekoden er nesten levert fra uavbrutt saksutsagn i bryter (uten retur eller brudd etter hver saksblokk). Det gjenstår å fikse 32 av 2311 tilfeller av slik bruk av bryteren, hvoretter det vil være mulig å bruke "-Wimplicit-fallthrough"-modusen når du bygger kjernen;
    • For PowerPC-arkitekturen har støtte for maskinvaremekanismer for å begrense uønskede kjernetilgangsbaner til data i brukerområdet blitt implementert;
    • Lagt til blokkeringskode angrep MDS-klasse (Microarchitectural Data Sampling) i Intel-prosessorer. Du kan sjekke om et system er sårbart for sårbarheter gjennom SysFS-variabelen "/sys/devices/system/cpu/vulnerabilities/mds". tilgjengelig to beskyttelsesmoduser: full, som krever oppdatert mikrokode, og bypass, som ikke garanterer fullstendig fjerning av CPU-buffere når kontrollen overføres til brukerområdet eller gjestesystemet. For å kontrollere beskyttelsesmoduser er "mds="-parameteren lagt til kjernen, som kan ta verdiene "full", "full,nosmt" (+ deaktiver Hyper-Threads) og "off";
    • På x86-64-systemer er "stack guard-page"-beskyttelse lagt til for IRQ, feilsøkingsmekanismer og unntaksbehandlere, hvor essensen er å erstatte minnesider ved grensen til stabelen, tilgang som fører til generering av en unntak (sidefeil);
    • Lagt til sysctl-innstilling vm.unprivileged_userfaultfd, som kontrollerer muligheten til uprivilegerte prosesser til å bruke systemkallet userfaultfd();
  • Nettverksundersystem
    • La til IPv6-gateway-støtte for IPv4-ruter. For eksempel kan du nå spesifisere rutingsregler som "ip ro add 172.16.1.0/24 via inet6 2001:db8::1 dev eth0";
    • For ICMPv6 er ioctl-kall icmp_echo_ignore_anycast og icmp_echo_ignore_multicast implementert for å ignorere ICMP ECHO for anycast og
      multicast-adresser. La til muligheten til å begrense intensiteten til ICMPv6-pakkebehandling;

    • For BATMAN (Better Approach To Mobile Adhoc Networking) mesh-protokollen, som tillater opprettelse av desentraliserte nettverk der hver node er koblet til gjennom nabonoder, la til støtte for kringkasting fra multicast til unicast, samt muligheten til å kontrollere via sysfs;
    • I ettool la til en ny Fast Link Down-parameter, som lar deg redusere tiden det tar å motta informasjon om en link down-hendelse for 1000BaseT (under normale forhold er forsinkelsen opptil 750ms);
    • Dukket opp mulighet binding av Foo-Over-UDP-tunneler til en spesifikk adresse, nettverksgrensesnitt eller socket (tidligere ble binding kun gjort av en vanlig maske);
    • I den trådløse stabelen sikret mulighet for å implementere behandlere
      OWE (Opportunistic Wireless Encryption) i brukerrom;

    • I Netfilter er støtte for inet-adressefamilien lagt til i nat-kjeder (for eksempel kan du nå bruke én oversettelsesregel for å behandle ipv4 og ipv6, uten å skille reglene for ipv4 og ipv6);
    • I netlink la til режим streng for streng verifisering av riktigheten av alle meldinger og attributter, der den forventede størrelsen på attributter ikke er tillatt å overskride og tillegg av tilleggsdata på slutten av meldinger er forbudt;
  • Minne- og systemtjenester
    • CLONE_PIDFD-flagget er lagt til clone()-systemkallet. Når det er spesifisert, returneres filbeskrivelsen "pidfd" identifisert med den opprettede underordnede prosessen til den overordnede prosessen. Denne filbeskrivelsen kan for eksempel brukes til å sende signaler uten frykt for å løpe inn i en rasetilstand (umiddelbart etter sending av signalet kan mål-PID-en frigjøres på grunn av prosessavslutning og okkupert av en annen prosess);
    • For den andre versjonen av cgroups er funksjonaliteten for frysekontroller lagt til, som du kan stoppe arbeidet i en cgroup og midlertidig frigjøre noen ressurser (CPU, I/O og potensielt til og med minne) for å utføre andre oppgaver. Behandlingen gjøres gjennom kontrollfilene cgroup.freeze og cgroup.events i cgroup-treet. Oppføring 1 i cgroup.freeze fryser prosesser i gjeldende cgroup og alle underordnede grupper. Siden frysing tar litt tid, er en ekstra cgroup.events-fil gitt der du kan finne ut om fullføringen av operasjonen;
    • Sikret eksport av minneattributter knyttet til hver node i sysfs, som lar deg bestemme fra brukerplass arten av behandling av minnebanker i systemer med heterogent minne;
    • PSI-undersystemet (Pressure Stall Information) er forbedret, som lar deg analysere informasjon om ventetiden for mottak av ulike ressurser (CPU, minne, I/O) for bestemte oppgaver eller sett med prosesser i en cgroup. Ved å bruke PSI kan brukerplassbehandlere mer nøyaktig estimere nivået av systembelastning og nedbremsingsmønstre sammenlignet med belastningsgjennomsnitt. Den nye versjonen gir støtte for å angi sensitivitetsterskler og muligheten til å bruke poll()-kallet for å motta varsling om at de angitte tersklene har blitt utløst for en viss tidsperiode. Denne funksjonen lar Android overvåke minnemangel på et tidlig stadium, identifisere kilden til problemer og avslutte uviktige applikasjoner uten å forårsake problemer som er merkbare for brukeren. Ved stresstesting viste PSI-baserte overvåkingsverktøy for minneforbruk 10 ganger færre falske positiver sammenlignet med vmpressure-statistikk;
    • Koden for å sjekke BPF-programmer er optimert, noe som gjør det mulig å sjekke opptil 20 ganger raskere for store programmer. Optimalisering gjorde det mulig å heve grensen for størrelsen på BPF-programmer fra 4096 til en million instruksjoner;
    • For BPF-programmer gitt muligheten til å få tilgang til globale data, som lar deg definere globale variabler og konstanter i programmer;
    • La til API, som lar deg kontrollere endringer i sysctl-parametere fra BPF-programmer;
    • For MIPS32-arkitekturen er en JIT-kompilator for den virtuelle eBPF-maskinen implementert;
    • For 32-biters PowerPC-arkitekturen er støtte for KASan (Kernel address Sanizer) feilsøkingsverktøyet lagt til, som hjelper til med å identifisere feil når du arbeider med minne;
    • På x86-64-systemer er begrensningen for plassering av tilstandsdumper under en kjernekrasj (crash-dump) i minneområder over 896 MB fjernet;
    • For s390-arkitekturen er støtte for randomisering av kjerneadresserom (KASLR) og muligheten til å verifisere digitale signaturer ved lasting av kjernen via kexec_file_load() implementert;
    • For PA-RISC-arkitekturen, lagt til støtte for kjernefeilsøkeren (KGDB), hoppmerker og kprobes;
  • Оборудование
    • Driver inkludert Lima for Mali 400/450 GPU, brukt i mange eldre brikker basert på ARM-arkitekturen. For nyere Mali GPUer er Panfrost-driveren lagt til, som støtter brikker basert på Midgard (Mali-T6xx, Mali-T7xx, Mali-T8xx) og Bifrost (Mali G3x, G5x, G7x) mikroarkitekturer;
    • Lagt til støtte for lydenheter som bruker åpen fastvare Lyd Åpne fastvare (SOF). Til tross for tilgjengeligheten av åpne drivere, forble fastvarekoden for lydbrikker fortsatt lukket og ble levert i binær form. Sound Open Firmware-prosjektet ble utviklet av Intel for å lage åpen firmware for DSP-brikker relatert til lydbehandling (Google ble senere også med i utviklingen). Foreløpig har prosjektet allerede forberedt oppdagelsen av fastvare for lydbrikker fra Intel Baytrail, CherryTrail, Broadwell, ApolloLake, GeminiLake, CannonLake og IceLake-plattformene;
    • Intel DRM-driver (i915) legger til støtte for brikker
      Elkhartlake (Gen11). Lagt til PCI ID-er for Comet Lake (Gen9) brikker. Støtte for Icelake-brikker er stabilisert, og det er også lagt til ytterligere PCI-enhetsidentifikatorer.
      Skrudd på
      modus for asynkron veksling mellom to buffere i videominnet (async flip) når du utfører skriveoperasjoner via mmio, noe som økte ytelsen til noen 3D-applikasjoner betydelig (for eksempel økte ytelsen i 3DMark Ice Storm-testen med 300-400%). Lagt til teknologistøtte HDCP2.2 (High-bandwidth Digital Content Protection) for kryptering av videosignaler som overføres via HDMI;

    • Amdgpu-driveren for Vega20 GPU la til støtte for RAS (Reliability, Availability, Serviceability) og eksperimentell støtte for SMU 11-delsystemet, som erstattet Powerplay-teknologien. For GPU Vega12 la til støtte for BACO-modus (Bus Active, Chip Off). Lagt til innledende støtte for XGMI, en høyhastighetsbuss (PCIe 4.0) for GPU-sammenkobling. Lagt til manglende identifikatorer for kort basert på Polaris10 GPU til amdkfd-driveren;
    • Nouveau-driveren har lagt til støtte for kort basert på NVIDIA Turing 117-brikkesettet (TU117, brukt i GeForce GTX 1650). I
      kconfig la til innstilling for å deaktivere foreldede funksjoner som ikke lenger brukes i gjeldende utgivelser av libdrm;

    • Støtte for "tidslinje"-synkroniseringsobjekter er lagt til DRM API og amdgpu-driveren, slik at du kan klare deg uten klassisk blokkering.
    • Vboxvideo-driveren for VirtualBox virtuelle GPU har blitt flyttet fra iscenesettelsen til hovedstrukturen;
    • Lagt til aspeed-driver for GFX SoC ASPEED-brikke;
    • Lagt til støtte for ARM SoC og Intel Agilex (SoCFPGA), NXP i.MX8MM, Allwinner (RerVision H3-DVK (H3), Oceanic 5205 5inMFD, ,Beelink GS2 (H6), Orange Pi 3 (H6)), Rockchip (Orange Pi) ) boards RK3399, Nanopi NEO4, Veyron-Mighty Chromebook), Amlogic: SEI Robotics SEI510,
      ST Micro (stm32mp157a, stm32mp157c), NXP (
      Eckelmann ci4x10 (i.MX6DL),

      i.MX8MM EVK (i.MX8MM),

      ZII i.MX7 RPU2 (i.MX7),

      ZII SPB4 (VF610),

      Zii Ultra (i.MX8M),

      TQ TQMa7S (i.MX7Solo),

      TQ TQMa7D (i.MX7Dual),

      Kobo Aura (i.MX50),

      Menlosystems M53 (i.MX53)), NVIDIA Jetson Nano (Tegra T210).

Samtidig la Latin American Free Software Foundation dannet
вариант helt gratis kjerne 5.2 - Linux-fri 5.2-gnu, fjernet for fastvare- og driverelementer som inneholder ikke-frie komponenter eller kodeseksjoner, hvis omfang er begrenset av produsenten. Ny utgivelse inkluderer filopplasting
Lyd Åpne fastvare. Lasting av blobs i drivere er deaktivert
mt7615, rtw88, rtw8822b, rtw8822c, btmtksdio, iqs5xx, ishtp og ucsi_ccg. Blob-rensekoden i driverne og undersystemene for ixp4xx, imx-sdma, amdgpu, nouveau og goya, samt i mikrokodedokumentasjonen, er oppdatert. Sluttet å rense klatter i r8822be-driveren på grunn av at den ble fjernet.

Kilde: opennet.ru

Legg til en kommentar