Linux-kärnan version 5.6

Efter två månaders utveckling, Linus Torvalds lämnats kärnrelease Linux 5.6. Bland de mest anmärkningsvärda förändringarna: integration av WireGuard VPN-gränssnittet, stöd för USB4, namnutrymmen för tid, möjligheten att skapa TCP-överbelastningshanterare med BPF, initialt stöd för MultiPath TCP, befria kärnan från 2038-problemet, "bootconfig"-mekanismen , ZoneFS.

Den nya versionen innehåller 13702 1810 korrigeringar från XNUMX XNUMX utvecklare,
patchstorlek - 40 MB (ändringar påverkade 11577 filer, 610012 rader kod lades till,
294828 rader borttagna). Cirka 45 % av alla presenterade i 5.6
ändringar är relaterade till drivrutiner, ungefär 15 % av ändringarna är det
attityd till att uppdatera kod som är specifik för hårdvaruarkitekturer, 12 %
associerade med nätverksstacken, 4% med filsystem och 3% med interna
kärnsubsystem.

Den huvudsakliga innovationer:

  • Nätverksdelsystem
    • Lagt till implementering av ett VPN-gränssnitt WireGuard, som är implementerat baserat på moderna krypteringsmetoder (ChaCha20, Poly1305, Curve25519, BLAKE2s), är lätt att använda, fri från komplikationer, har bevisat sig i ett antal stora implementeringar och ger mycket hög prestanda (3,9 gånger snabbare än OpenVPN i termer av av genomströmning). WireGuard använder konceptet med krypteringsnyckeldirigering, vilket innebär att man fäster en privat nyckel till varje nätverksgränssnitt och använder den för att binda de offentliga nycklarna. Publika nycklar utbyts för att upprätta en anslutning på liknande sätt som SSH. Kryptografiska primitiver krävs för att WireGuard ska fungera var bar över från biblioteket zink som en del av standard Crypto API och ingår in i kärnan 5.5.
    • Började integration av komponenter som är nödvändiga för att stödja MPTCP (MultiPath TCP), en förlängning av TCP-protokollet för att organisera driften av en TCP-anslutning med leverans av paket samtidigt längs flera rutter genom olika nätverksgränssnitt associerade med olika IP-adresser. För nätverksapplikationer ser en sådan aggregerad anslutning ut som en vanlig TCP-anslutning, och all flödesseparationslogik utförs av MPTCP. Multipath TCP kan användas för att både öka genomströmningen och öka tillförlitligheten. Till exempel kan MPTCP användas för att organisera dataöverföring på en smartphone med WiFi och 4G-länkar samtidigt, eller för att minska kostnaderna genom att ansluta en server med flera billiga länkar istället för en dyr.
    • Lagt till stöd för nätverksköbehandlingsdisciplinen sch_ets (Förbättrat växlingsval, IEEE 802.1Qaz), som ger möjlighet att fördela bandbredd mellan olika trafikklasser. Om belastningen på en viss trafikklass är under den allokerade bandbredden, tillåter ETS andra trafikklasser att använda den tillgängliga (oanvända) bandbredden. Qdisc sch_ets är konfigurerad som en PRIO-disciplin och använder trafikklasser för att definiera strikta och delade bandbreddsgränser. ETS fungerar som en kombination av discipliner TIDIGARE и Katastrofförebyggande — om det finns strikt begränsade trafikklasser används PRIO, men om det inte finns någon trafik i kön fungerar det som DRR.
    • Lade till en ny typ av BPF-program BPF_PROG_TYPE_STRUCT_OPS, som låter dig implementera kärnfunktionshanterare genom BPF. För närvarande kan denna funktion redan användas för att implementera TCP-algoritmer för överbelastningskontroll i form av BPF-program. Som ett exempel erbjöd BPF-program med algoritmimplementering DCTCP.
    • Accepterat in i kärnan förändringar, översättningsverktyg ettool med ioctl() att använda netlink-gränssnitt. Det nya gränssnittet gör det enklare att lägga till tillägg, förbättrar felhanteringen, tillåter att meddelanden skickas när tillståndet ändras, förenklar interaktionen mellan kärnan och användarutrymmet och minskar antalet namngivna listor som behöver synkroniseras.
    • Lade till implementering av nätverksköhanteringsalgoritmen FQ-PIE (Flow Queue PIE), som syftar till att minska den negativa effekten av mellanliggande paketbuffring på kantnätverksutrustning (bufferbloat). FQ-PIE uppvisar hög effektivitet när den används i system med kabelmodem.
  • Diskundersystem, I/O och filsystem
    • För Btrfs filsystem Lagt till asynkron implementering av DISCARD-operationen (markerar frigjorda block som inte längre behöver lagras fysiskt). Inledningsvis utfördes DISCARD-operationer synkront, vilket kunde leda till prestandaförsämring på grund av att enheterna väntade på att motsvarande kommandon skulle slutföras. Asynkron implementering låter dig inte vänta på att enheten ska slutföra DISCARD och utföra denna operation i bakgrunden.
    • I XFS utförd Rensa upp kod som använde gamla 32-bitars tidsräknare (time_t-typen ersattes av time64_t), vilket ledde till 2038-problemet. Fixade fel och minneskorruption som inträffade på 32-bitars plattformar. Koden har omarbetats för att fungera med utökade attribut.
    • Till ext4 filsystem gjord Prestandaoptimeringar relaterade till hantering av inodlåsning under läs- och skrivoperationer. Förbättrad omskrivningsprestanda i Direct I/O-läge. För att förenkla diagnosen av problem lagras den första och sista felkoden i superblocket.
    • På filsystemet F2FS genomförs förmåga att lagra data i komprimerad form. För en enskild fil eller katalog kan komprimering aktiveras med kommandot "chattr +c file" eller "chattr +c dir; tryck på dir/fil". För att komprimera hela partitionen kan du använda alternativet "-o compress_extension=ext" i monteringsverktyget.
    • Filsystemet ingår i kärnan ZonFS, vilket förenklar arbete på låg nivå med zonindelade lagringsenheter. Zonade enheter avser enheter på hårdmagnetiska diskar eller NVMe SSD, vars lagringsutrymme är uppdelat i zoner som utgör grupper av block eller sektorer, i vilka endast sekventiell tillägg av data tillåts, vilket uppdaterar hela gruppen av block. FS ZoneFS utvecklades av Western Digital och associerar varje zon i enheten med en separat fil som kan användas för att lagra data i råläge utan manipulation på sektor- och blocknivå, d.v.s. Tillåter appar att använda fil-API istället för att direkt komma åt blockeringsenheten med en ioctl.
    • I NFS är montering av partitioner över UDP inaktiverat som standard. Lagt till stöd för möjligheten att direkt kopiera filer mellan servrar, definierat i NFS 4.2-specifikationen. Lade till ett nytt monteringsalternativ "softreval", som gör att cachade attributvärden kan användas i händelse av serverfel. Till exempel, när du anger det här alternativet, efter att servern inte är tillgänglig, är det fortfarande möjligt att flytta längs vägarna i NFS-partitionen och komma åt information som har lagt sig i cachen.
    • Utförd optimering av prestandan för fs-verity-mekanismen, som används för att övervaka integriteten och autentiseringen av enskilda filer. Ökad sekventiell läshastighet tack vare användningen av ett Merkle-hashträd. Prestandan för FS_IOC_ENABLE_VERITY har optimerats när det inte finns några data i cachen (förebyggande läsning av sidor med data har tillämpats).
  • Virtualisering och säkerhet
    • Möjligheten att inaktivera SELinux-modulen medan den körs har föråldrats, och avlastning av en redan aktiverad SELinux kommer att vara förbjuden i framtiden. För att inaktivera SELinux måste du skicka parametern "selinux=0" på kärnans kommandorad.
    • Lagt till stöd för namnutrymmen för tid (tidsnamnutrymmen), så att du kan binda systemklockans tillstånd till behållaren (CLOCK_REALTIME,
      CLOCK_MONOTONIC, CLOCK_BOOTTIME), använd din egen tid i behållaren och, när du migrerar behållaren till en annan värd, se till att CLOCK_MONOTONIC- och CLOCK_BOOTTIME-avläsningarna förblir oförändrade (ta hänsyn till tiden efter laddning, med eller utan hänsyn till att vara i viloläge ).

    • /dev/random blockeringspoolen har tagits bort. Beteendet för /dev/random liknar /dev/urandom när det gäller att förhindra entropiblockering efter poolinitiering.
    • Kärnkärnan innehåller en drivrutin som tillåter gästsystem som kör VirtualBox att montera kataloger som exporteras av värdmiljön (VirtualBox Shared Folder).
    • En uppsättning patchar har lagts till i BPF-delsystemet (BPF avsändare), när du använder Retpoline-mekanismen för att skydda mot Spectre V2-klassattacker, låter den dig öka effektiviteten i att anropa BPF-program när händelser associerade med dem inträffar (det gör det till exempel möjligt att påskynda anropet av XDP-hanterare när en nätverkspaket kommer).
    • Tillagd drivrutin för att stödja TEE (Trusted Execution Environment) inbyggd i AMD APU:er.
  • Minnes- och systemtjänster
    • BPF har lagt till stöd för globala funktioner. Utveckling sker som en del av en satsning på att lägga till stöd för bibliotek av funktioner som kan ingå i BPF-program. Nästa steg blir att stödja dynamiska tillägg som gör att globala funktioner kan laddas, inklusive att ersätta befintliga globala funktioner medan de används. BPF-undersystemet lägger också till stöd för en variant av kartoperationen (används för att lagra beständiga data), som stöder exekvering i batch-läge.
    • Inkom "cpu_cooling"-enheten låter dig kyla en överhettad CPU genom att placera den i viloläge under korta tidsperioder.
    • Systemanrop har lagts till openat2(), som erbjuder en uppsättning ytterligare flaggor för att begränsa filsökvägsupplösning (förbud mot att korsa monteringspunkter, symboliska länkar, magiska länkar (/proc/PID/fd), "../"-komponenter).
    • För heterogena system baserade på big.LITTLE-arkitekturen, som kombinerar kraftfulla och mindre effektiva energieffektiva CPU-kärnor i ett chip, ställs parametern uclamp_min in vid exekvering av realtidsuppgifter (dök upp i kärnan 5.3 finns en mekanism för att säkra lasten). Denna parameter säkerställer att uppgiften kommer att placeras av schemaläggaren på en CPU-kärna som har tillräcklig prestanda.
    • Kärnan är fri från problem 2038. Ersatte de sista återstående hanterarna, som använde 32-bitars (signerad int)-typ time_t för epoktidsräknaren, som, med hänsyn till rapporten från 1970, skulle svämma över 2038.
    • Fortsatt förbättring av det asynkrona I/O-gränssnittet io_uringdär säkrad stöd för nya operationer: IORING_OP_FALLOCATE (reservation av tomma områden), IORING_OP_OPENAT,
      IORING_OP_OPENAT2,
      IORING_OP_CLOSE (öppnar och stänger filer),
      IORING_OP_FILES_UPDATE (lägga till och ta bort filer från snabbåtkomstlistan),
      IORING_OP_STATX (begäran om filinformation),
      IORING_OP_READ,
      IORING_OP_WRITE (förenklade analoger av IORING_OP_READV och IORING_OP_WRITEV),
      IORING_OP_FADVISE,
      IORING_OP_MADVISE (asynkrona varianter av anrop posix_fadvise och madvise), IORING_OP_SEND,
      IORING_OP_RECV (sänder och tar emot nätverksdata),
      IORING_OP_EPOLL_CTL (utför operationer på epoll-filbeskrivningar).

    • Systemanrop har lagts till pidfd_getfd(), vilket tillåter en process att hämta en filbeskrivning för en öppen fil från en annan process.
    • Genomfört "bootconfig"-mekanismen, som tillåter, förutom kommandoradsalternativ, att bestämma parametrarna för kärnan genom en inställningsfil. För att lägga till sådana filer till initramfs-avbildningen föreslås bootconfig-verktyget. Den här funktionen kan till exempel användas för att konfigurera kprobes vid uppstart.
    • Omarbetad en mekanism för att vänta på att skriva och läsa data i namnlösa rör. Förändringen gjorde det möjligt att snabba på uppgifter som parallell montering av stora projekt. Emellertid kan optimering leda till ett tävlingstillstånd i GNU-fabrikatet på grund av en bugg i 4.2.1-versionen, som fixades i version 4.3.
    • Lade till PR_SET_IO_FLUSHER-flaggan till prctl(), som kan användas för att markera minnesfria processer som inte bör vara föremål för begränsningar när systemet har lite minne.
    • Baserat på ION-minnesdistributionssystemet som används i Android har ett delsystem implementerats dma-buf högar, som låter dig styra tilldelningen av DMA-buffertar för att dela minnesområden mellan drivrutiner, applikationer och olika delsystem.
  • Hårdvaruarkitekturer
    • Lade till stöd för E0PD-tillägget, som dök upp i ARMv8.5 och möjliggör skydd mot attacker relaterade till spekulativ exekvering av instruktioner på CPU:n. E0PD-baserat skydd ger lägre overhead än KPTI-skydd (Kernel Page Table Isolation).
    • För system baserade på ARMv8.5-arkitekturen har stöd för RNG-instruktionen lagts till, vilket ger tillgång till en hårdvarugenerator för pseudoslumptal. I kärnan används RNG-instruktionen för att generera entropi vid initialisering av den kärnanförsedda pseudoslumptalsgeneratorn.
    • Borttaget stöd för MPX (Memory Protection Extensions) som lagts till i kärnan 3.19 och låter dig organisera kontroll av pekare för att säkerställa att gränserna för minnesområden respekteras. Denna teknik användes inte flitigt i kompilatorer och togs bort från GCC.
    • För RISC-V-arkitekturen har stöd för felsökningsverktyget KASan (Kernel address Sanizer) implementerats, vilket hjälper till att identifiera fel när man arbetar med minne.
  • Оборудование
    • Specifikationsstöd implementerat USB 4.0, som är baserat på Thunderbolt 3-protokollet och ger en genomströmning på upp till 40 Gbps, samtidigt som bakåtkompatibiliteten med USB 2.0 och USB 3.2 bibehålls. I analogi med Blixt USB 4.0-gränssnitt låter dig tunnla olika protokoll över en enda kabel med en kontakt Typ-C, inklusive PCIe, Display Port och USB 3.x, samt programvaruimplementationer av protokoll, till exempel för att organisera nätverkslänkar mellan värdar. Implementeringen bygger på Thunderbolt-drivrutinen som redan ingår i Linux-kärnan och anpassar den för att fungera med USB4-kompatibla värdar och enheter. Ändringarna lägger också till stöd för Thunderbolt 3-enheter till mjukvaruimplementeringen av Connection Manager, som är ansvarig för att skapa tunnlar för att ansluta flera enheter via en enda kontakt.
    • I amdgpu-drivrutinen Lagt till initialt stöd för HDCP 2.x (High-bandwidth Digital Content Protection) kopieringsskyddsteknik. Lade till stöd för AMD Pollock ASIC-chipet baserat på Raven 2. Implementerade möjligheten att återställa GPU:n för Renoir- och Navi-familjerna.
    • DRM-drivrutin för Intel grafikkort Lagt till DSI VDSC-stöd för chips baserade på Ice Lake och Tiger Lake mikroarkitektur, LMEM mmap (device local memory) har implementerats, VBT (Video BIOS Table) parsing har förbättrats, HDCP 2.2-stöd har implementerats för Coffee Lake-chips.
    • Arbetet fortsatte med att förena amdkfd-drivrutinkoden (för diskreta GPU:er, såsom Fiji, Tonga, Polaris) med amdgpu-drivrutinen.
    • K10temp-drivrutinen har omarbetats och lagt till stöd för att visa spännings- och strömparametrar för AMD Zen-processorer, samt utökad information från temperatursensorer som används i Zen- och Zen 2-processorer.
    • I nouveau-föraren Lagt till stöd för laddningsläge för verifierat firmware för NVIDIA GPU:er baserat på Turing-mikroarkitekturen (GeForce RTX 2000), vilket gjorde det möjligt att aktivera stöd för 3D-acceleration för dessa kort (nedladdning av officiell firmware med en digital NVIDIA-signatur krävs). Tillagt stöd för grafikmotorn TU10x. Problem med HD Audio har lösts.
    • Tillagt stöd för datakomprimering vid överföring via DisplayPort MST (Multi-Stream Transport).
    • Lade till ny drivrutin "at11k» för Qualcomm trådlösa chips som stöder 802.11ax.
      Drivrutinen är baserad på mac80211-stacken och stöder åtkomstpunkt, arbetsstation och mesh-nätverksnodlägen.

    • Genom sysfs tillhandahålls tillgång till läsbara temperatursensoravläsningar som används på moderna hårddiskar och SSD:er.
    • Lämnats betydande förändringar av ALSA ljudsystem, som syftar till att befria koden från problem 2038 (undvika användningen av 32-bitars time_t-typen i gränssnitten snd_pcm_mmap_status och snd_pcm_mmap_control). Lagt till stöd för nya ljud-codecs
      Qualcomm WCD9340/WCD9341, Realtek RT700, RT711, RT715, RT1308, Ingenic JZ4770.

    • Lagt till drivrutiner för 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.

    • Lagt till stöd för ARM-kort och Gen1-plattformar Amazon Echo (OMAP3630-baserad), 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 e-bokläsare,
      Embedded Artists COM (i.MX7ULP), SolidRun Clearfog CX/ITX och 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 SC9863comm 7180, Qu4alal. Lade till stöd för PCIe-kontrollern som används i Raspberry Pi XNUMX.

Samtidigt latinamerikanska Free Software Foundation bildas
вариант helt gratis kärna 5.6 - Linux-fri 5.6-gnu, rensad från firmware och drivrutinselement som innehåller icke-fria komponenter eller kodsektioner, vars omfattning är begränsad av tillverkaren. Den nya utgåvan inaktiverar blob-laddning i drivrutiner för AMD TEE, ATH11K och Mediatek SCP. Uppdaterad blob-rensningskod i AMD PSP, amdgpu och nouveau drivrutiner och delsystem.

Källa: opennet.ru

Lägg en kommentar