Linux-kjerneutgivelse 5.6

Etter to måneder med utvikling Linus Torvalds innsendt kjerneutgivelse Linux 5.6. Blant de mest bemerkelsesverdige endringene: integrering av WireGuard VPN-grensesnittet, støtte for USB4, navneområder for tid, muligheten til å lage TCP-overbelastningsbehandlere ved å bruke BPF, innledende støtte for MultiPath TCP, fjerne kjernen fra 2038-problemet, "bootconfig"-mekanismen , ZoneFS.

Den nye versjonen inkluderer 13702 1810 rettelser fra XNUMX XNUMX utviklere,
oppdateringsstørrelse - 40 MB (endringer påvirket 11577 filer, 610012 linjer med kode ble lagt til,
294828 rader fjernet). Omtrent 45 % av alle presentert i 5.6
endringer er relatert til enhetsdrivere, omtrent 15 % av endringene er det
holdning til oppdatering av kode spesifikk for maskinvarearkitekturer, 12 %
knyttet til nettverksstakken, 4 % med filsystemer og 3 % med interne
kjerneundersystemer.

Den viktigste innovasjoner:

  • Nettverksundersystem
    • La til implementering av et VPN-grensesnitt WireGuard, som er implementert basert på moderne krypteringsmetoder (ChaCha20, Poly1305, Curve25519, BLAKE2s), er enkel å bruke, fri for komplikasjoner, har bevist seg i en rekke store implementeringer og gir svært høy ytelse (3,9 ganger raskere enn OpenVPN mht. av gjennomstrømning). WireGuard bruker konseptet med krypteringsnøkkelruting, som innebærer å feste en privat nøkkel til hvert nettverksgrensesnitt og bruke den til å binde de offentlige nøklene. Offentlige nøkler utveksles for å etablere en forbindelse på lignende måte som SSH. Kryptografiske primitiver kreves for at WireGuard skal fungere Vi var overført fra biblioteket sink som en del av den vanlige Crypto API og inkludert inn i kjernen 5.5.
    • Startet integrering av komponenter som er nødvendige for å støtte MPTCP (MultiPath TCP), en utvidelse av TCP-protokollen for å organisere driften av en TCP-forbindelse med levering av pakker samtidig langs flere ruter gjennom forskjellige nettverksgrensesnitt knyttet til forskjellige IP-adresser. For nettverksapplikasjoner ser en slik aggregert tilkobling ut som en vanlig TCP-tilkobling, og all flytseparasjonslogikken utføres av MPTCP. Multipath TCP kan brukes både til å øke gjennomstrømningen og øke påliteligheten. MPTCP kan for eksempel brukes til å organisere dataoverføring på en smarttelefon ved å bruke WiFi og 4G-koblinger samtidig, eller for å redusere kostnadene ved å koble til en server ved hjelp av flere billige lenker i stedet for en dyr.
    • La til støtte for nettverkskøbehandlingsdisiplinen sch_ets (Forbedret overføringsvalg, IEEE 802.1Qaz), som gir muligheten til å distribuere båndbredde mellom ulike klasser av trafikk. Hvis belastningen på en bestemt trafikkklasse er under den tildelte båndbredden, tillater ETS andre trafikkklasser å bruke den tilgjengelige (ubrukte) båndbredden. Qdisc sch_ets er konfigurert som en PRIO-disiplin og bruker trafikkklasser for å definere strenge og delte båndbreddegrenser. ETS fungerer som en kombinasjon av disipliner I FORKANT и DRR — hvis det er strengt begrensede trafikkklasser brukes PRIO, men hvis det ikke er trafikk i køen fungerer det som DRR.
    • Lagt til en ny type BPF-programmer BPF_PROG_TYPE_STRUCT_OPS, som lar deg implementere kjernefunksjonsbehandlere gjennom BPF. For øyeblikket kan denne funksjonen allerede brukes til å implementere TCP-overbelastningskontrollalgoritmer i form av BPF-programmer. Som et eksempel foreslått BPF-program med algoritmeimplementering DCTCP.
    • Akseptert inn i kjernen endringer, oversettelsesverktøy ettool med ioctl() å bruke netlink-grensesnitt. Det nye grensesnittet gjør det enklere å legge til utvidelser, forbedrer feilhåndtering, lar varslinger sendes når tilstanden endres, forenkler interaksjonen mellom kjernen og brukerområdet, og reduserer antallet navngitte lister som må synkroniseres.
    • Lagt til implementering av FQ-PIE (Flow Queue PIE) nettverkskøadministrasjonsalgoritme, med sikte på å redusere den negative effekten av mellompakkebuffring på kantnettverksutstyr (bufferbloat). FQ-PIE demonstrerer høy effektivitet når den brukes i systemer med kabelmodem.
  • Diskundersystem, I/O og filsystemer
    • For Btrfs filsystem la til asynkron implementering av DISCARD-operasjonen (merking av frigjorte blokker som ikke lenger trenger å lagres fysisk). Opprinnelig ble DISCARD-operasjoner utført synkront, noe som kunne føre til ytelsesforringelse på grunn av at stasjonene ventet på at de tilsvarende kommandoene skulle fullføres. Asynkron implementering lar deg ikke vente på at stasjonen skal fullføre DISCARD og utføre denne operasjonen i bakgrunnen.
    • I XFS utført Å rydde opp i kode som brukte gamle 32-biters tidtellere (time_t-typen ble erstattet av time64_t), noe som førte til 2038-problemet. Rettet feil og minnekorrupsjon som oppstod på 32-biters plattformer. Koden har blitt omarbeidet for å fungere med utvidede attributter.
    • Til ext4 filsystem introdusert Ytelsesoptimaliseringer knyttet til håndtering av inodelåsing under lese- og skriveoperasjoner. Forbedret omskrivningsytelse i Direct I/O-modus. For å forenkle diagnostisering av problemer, lagres den første og siste feilkoden i superblokken.
    • På F2FS-filsystemet implementert evne til å lagre data i komprimert form. For en individuell fil eller katalog kan komprimering aktiveres ved å bruke kommandoen "chattr +c file" eller "chattr +c dir; trykk på dir/fil". For å komprimere hele partisjonen kan du bruke "-o compress_extension=ext" alternativet i monteringsverktøyet.
    • Kjernen inkluderer et filsystem ZoneFS, som forenkler arbeid på lavt nivå med sonede lagringsenheter. Zonede stasjoner betyr enheter på hardmagnetiske disker eller NVMe SSD-er, hvor lagringsplassen er delt inn i soner som utgjør grupper av blokker eller sektorer, der kun sekvensiell tillegg av data er tillatt, og oppdaterer hele gruppen av blokker. FS ZoneFS er utviklet av Western Digital og assosierer hver sone i stasjonen med en egen fil som kan brukes til å lagre data i råmodus uten manipulering på sektor- og blokknivå, dvs. Lar apper bruke fil-API-en i stedet for å få direkte tilgang til blokkeringsenheten ved hjelp av en ioctl.
    • I NFS er montering av partisjoner over UDP deaktivert som standard. Lagt til støtte for muligheten til å kopiere filer direkte mellom servere, definert i NFS 4.2-spesifikasjonen. Lagt til et nytt monteringsalternativ "softreval", som gjør at bufrede attributtverdier kan brukes i tilfelle serverfeil. For eksempel, når du spesifiserer dette alternativet, etter at serveren ikke er tilgjengelig, er det fortsatt mulig å bevege seg langs banene i NFS-partisjonen og få tilgang til informasjon som har lagt seg i hurtigbufferen.
    • Utført optimalisering av ytelsen til fs-verity-mekanismen, brukt til å overvåke integriteten og autentiseringen av individuelle filer. Økt sekvensiell lesehastighet takket være bruken av et Merkle hash-tre. Ytelsen til FS_IOC_ENABLE_VERITY har blitt optimalisert når det ikke er data i hurtigbufferen (forebyggende lesing av sider med data er brukt).
  • Virtualisering og sikkerhet
    • Muligheten til å deaktivere SELinux-modulen mens den kjører er utdatert, og det vil være forbudt å laste ut en allerede aktivert SELinux i fremtiden. For å deaktivere SELinux må du sende parameteren "selinux=0" på kjernekommandolinjen.
    • La til støtte for navnerom for tid (tidsnavnerom), slik at du kan binde tilstanden til systemklokken til beholderen (CLOCK_REALTIME,
      CLOCK_MONOTONIC, CLOCK_BOOTTIME), bruk din egen tid i beholderen og, når du migrerer beholderen til en annen vert, sørg for at CLOCK_MONOTONIC- og CLOCK_BOOTTIME-avlesningene forblir uendret (ta hensyn til tiden etter lasting, med eller uten hensyn til å være i hvilemodus ).

    • /dev/random blokkeringspoolen er fjernet. Oppførselen til /dev/random ligner på /dev/urandom når det gjelder å forhindre entropiblokkering etter poolinitiering.
    • Kjernekjernen inkluderer en driver som lar gjestesystemer som kjører VirtualBox montere kataloger eksportert av vertsmiljøet (VirtualBox Shared Folder).
    • Et sett med patcher er lagt til BPF-delsystemet (BPF-ekspeditør), når du bruker Retpoline-mekanismen for å beskytte mot Spectre V2-klasseangrep, lar den deg øke effektiviteten av å kalle BPF-programmer når hendelser knyttet til dem oppstår (det gjør det for eksempel mulig å fremskynde oppkallingen av XDP-behandlere når en nettverkspakken kommer).
    • Lagt til driver for å støtte TEE (Trusted Execution Environment) innebygd i AMD APUer.
  • Minne- og systemtjenester
    • BPF har lagt til støtte for globale funksjoner. Utvikling gjennomføres som en del av et initiativ for å legge til støtte for bibliotek med funksjoner som kan inngå i BPF-programmer. Det neste trinnet vil være å støtte dynamiske utvidelser som lar globale funksjoner lastes, inkludert å erstatte eksisterende globale funksjoner mens de er i bruk. BPF-undersystemet legger også til støtte for en variant av kartoperasjonen (brukes til å lagre vedvarende data), som støtter kjøring i batch-modus.
    • Lagt "cpu_cooling"-enheten lar deg kjøle ned en overopphetet CPU ved å sette den i inaktiv tilstand i korte perioder.
    • Lagt til systemanrop openat2(), som tilbyr et sett med ekstra flagg for å begrense filbaneoppløsning (forbud mot å krysse monteringspunkter, symbolske lenker, magiske lenker (/proc/PID/fd), "../"-komponenter).
    • For heterogene systemer basert på big.LITTLE-arkitekturen, som kombinerer kraftige og mindre effektive energieffektive CPU-kjerner i én brikke, settes uclamp_min-parameteren når du utfører sanntidsoppgaver (dukket opp i kjerne 5.3 er det en mekanisme for å sikre lasten). Denne parameteren sikrer at oppgaven blir plassert av planleggeren på en CPU-kjerne som har tilstrekkelig ytelse.
    • Kjernen er frigjort fra problemer i 2038. Erstattet de siste gjenværende behandlerne, som brukte 32-biters (signert int) typen time_t for epoketidstelleren, som, tatt i betraktning rapporten fra 1970, skulle flyte over i 2038.
    • Fortsatt forbedring av det asynkrone I/O-grensesnittet io_uring, der sikret støtte for nye operasjoner: IORING_OP_FALLOCATE (reservasjon av tomme områder), IORING_OP_OPENAT,
      IORING_OP_OPENAT2,
      IORING_OP_CLOSE (åpne og lukke filer),
      IORING_OP_FILES_UPDATE (legge til og fjerne filer fra hurtigtilgangslisten),
      IORING_OP_STATX (forespørsel om filinformasjon),
      IORING_OP_READ,
      IORING_OP_WRITE (forenklede analoger av IORING_OP_READV og IORING_OP_WRITEV),
      IORING_OP_FADVISE,
      IORING_OP_MADVISE (asynkrone varianter av kall posix_fadvise og madvise), IORING_OP_SEND,
      IORING_OP_RECV (sende og motta nettverksdata),
      IORING_OP_EPOLL_CTL (utfør operasjoner på epoll-filbeskrivelser).

    • Lagt til systemanrop pidfd_getfd(), slik at en prosess kan hente en filbeskrivelse for en åpen fil fra en annen prosess.
    • Implementert "bootconfig"-mekanismen, som tillater, i tillegg til kommandolinjealternativer, å bestemme parameterne til kjernen gjennom en innstillingsfil. For å legge til slike filer til initramfs-bildet, foreslås bootconfig-verktøyet. Denne funksjonen kan for eksempel brukes til å konfigurere kprobes ved oppstart.
    • Omarbeidet en mekanisme for å vente på å skrive og lese data i navnløse rør. Endringen gjorde det mulig å fremskynde oppgaver som parallell montering av store prosjekter. Optimalisering kan imidlertid føre til en rasetilstand i GNU-fabrikatet på grunn av en feil i 4.2.1-utgivelsen, som ble fikset i versjon 4.3.
    • Lagt til PR_SET_IO_FLUSHER-flagget til prctl(), som kan brukes til å markere minnefrie prosesser som ikke skal være underlagt begrensninger når systemet har lite minne.
    • Basert på ION minnedistribusjonssystemet som brukes i Android, er et delsystem implementert dma-buf hauger, som lar deg kontrollere tildelingen av DMA-buffere for deling av minneområder mellom drivere, applikasjoner og ulike undersystemer.
  • Maskinvarearkitekturer
    • Lagt til støtte for E0PD-utvidelsen, som dukket opp i ARMv8.5 og gir mulighet for beskyttelse mot angrep relatert til spekulativ utførelse av instruksjoner på CPU. E0PD-basert beskyttelse resulterer i lavere overhead enn KPTI-beskyttelse (Kernel Page Table Isolation).
    • For systemer basert på ARMv8.5-arkitekturen er støtte for RNG-instruksjonen lagt til, noe som gir tilgang til en maskinvare-pseudo-tilfeldig tallgenerator. I kjernen brukes RNG-instruksjonen til å generere entropi ved initialisering av den kjerneleverte pseudo-tilfeldige tallgeneratoren.
    • Fjernet støtte for MPX (Memory Protection Extensions) lagt til i kjernen 3.19 og lar deg organisere sjekking av pekere for å sikre at grensene til minneområdene respekteres. Denne teknologien ble ikke mye brukt i kompilatorer og ble fjernet fra GCC.
    • For RISC-V-arkitekturen er støtte for KASan (Kernel address sanitizer) feilsøkingsverktøyet implementert, som hjelper til med å identifisere feil når du arbeider med minne.
  • Оборудование
    • Spesifikasjonsstøtte implementert USB 4.0, som er basert på Thunderbolt 3-protokollen og gir en gjennomstrømning på opptil 40 Gbps, samtidig som den opprettholder bakoverkompatibilitet med USB 2.0 og USB 3.2. I analogi med Thunderbolt USB 4.0-grensesnitt lar deg tunnelere forskjellige protokoller over en enkelt kabel med en kontakt Type-C, inkludert PCIe, Display Port og USB 3.x, samt programvareimplementeringer av protokoller, for eksempel for organisering av nettverkskoblinger mellom verter. Implementeringen bygger på Thunderbolt-driveren som allerede er inkludert i Linux-kjernen og tilpasser den til å fungere med USB4-kompatible verter og enheter. Endringene legger også til støtte for Thunderbolt 3-enheter til programvareimplementeringen av Connection Manager, som er ansvarlig for å lage tunneler for å koble til flere enheter gjennom en enkelt kobling.
    • I amdgpu-driveren la til innledende støtte for HDCP 2.x (High-bandwidth Digital Content Protection) kopibeskyttelsesteknologi. Lagt til støtte for AMD Pollock ASIC-brikken basert på Raven 2. Implementerte muligheten til å tilbakestille GPU for Renoir- og Navi-familiene.
    • DRM-driver for Intel skjermkort la til DSI VDSC-støtte for brikker basert på Ice Lake og Tiger Lake mikroarkitektur, LMEM mmap (device local memory) er implementert, VBT (Video BIOS Table) parsing er forbedret, HDCP 2.2-støtte er implementert for Coffee Lake-chips.
    • Arbeidet fortsatte med å forene amdkfd-driverkoden (for diskrete GPUer, som Fiji, Tonga, Polaris) med amdgpu-driveren.
    • K10temp-driveren har blitt omarbeidet, og har lagt til støtte for visning av spennings- og strømparametere for AMD Zen CPUer, samt utvidet informasjon fra temperatursensorer brukt i Zen og Zen 2 CPUer.
    • I nouveau-driveren la til støtte for verifisert fastvarelastemodus for NVIDIA GPUer basert på Turing-mikroarkitekturen (GeForce RTX 2000), som gjorde det mulig å aktivere støtte for 3D-akselerasjon for disse kortene (nedlasting av offisiell fastvare med en NVIDIA digital signatur er nødvendig). Lagt til støtte for TU10x-grafikkmotoren. Problemer med HD Audio er løst.
    • Lagt til støtte for datakomprimering ved overføring via DisplayPort MST (Multi-Stream Transport).
    • Lagt til ny driver "at11k» for Qualcomm trådløse brikker som støtter 802.11ax.
      Driveren er basert på mac80211-stakken og støtter tilgangspunkt, arbeidsstasjon og mesh-nettverksnodemoduser.

    • Gjennom sysfs gis tilgang til lesbare temperatursensoravlesninger som brukes på moderne harddisker og SSD-er.
    • Sendt inn betydelige endringer i ALSA-lydsystemet, med sikte på å kvitte seg med koden problemer i 2038 (unngå bruk av 32-bits time_t-typen i snd_pcm_mmap_status og snd_pcm_mmap_control-grensesnittene). Lagt til støtte for nye lydkodeker
      Qualcomm WCD9340/WCD9341, Realtek RT700, RT711, RT715, RT1308, Ingenic JZ4770.

    • La til drivere for LCD-paneler Logic PD 28, Jimax8729d MIPI-DSI, igenic JZ4770, Sony acx424AKP, Leadtek LTK500HD1829, Xinpeng XPP055C272, AUO B116XAK01, GiantPlus GPM940B0,
      BOE NV140FHM-N49,
      Satoz SAT050AT40H12R2,
      Sharp LS020B1DD01D.

    • La til støtte for ARM-kort og Gen1-plattformer Amazon Echo (OMAP3630-basert), Samsung Galaxy S III mini (GT-I8190), Allwinner Emlid Neutis, Libre Computer ALL-H3-IT, PineH64 Model B, Aibretech Amlogic GX PC,
      Armada SolidRun Clearfog GTR, NXPGateworks GW59xx,
      Tolino Shine 3 eBok-leser,
      Embedded Artists COM (i.MX7ULP), SolidRun Clearfog CX/ITX og HoneyComb (LX2160A), Google Coral Edge TPU (i.MX8MQ),
      Rockchip Radxa Dalang Carrier, Radxa Rock Pi N10, VMARC RK3399Pro SOM
      ST Ericsson HREF520, Inforce 6640, SC7180 IDP, Atmel/Microchip AM9X60 (ARM926 SoC, Kizboxmini), ST stm32mp15, AM3703/AM3715/DM3725, ST Ericsson ab8505, Unisoc SC9863com7180m 4, QuXNUMXalalcomm XNUMX. Lagt til støtte for PCIe-kontrolleren brukt i Raspberry Pi XNUMX.

Samtidig la Latin American Free Software Foundation dannet
вариант helt gratis kjerne 5.6 - Linux-fri 5.6-gnu, fjernet for fastvare- og driverelementer som inneholder ikke-frie komponenter eller kodeseksjoner, hvis omfang er begrenset av produsenten. Den nye utgivelsen deaktiverer blob-lasting i drivere for AMD TEE, ATH11K og Mediatek SCP. Oppdatert blob-rensekode i AMD PSP, amdgpu og nouveau-drivere og undersystemer.

Kilde: opennet.ru

Legg til en kommentar