Linux-kärnan version 5.2

Efter två månaders utveckling, Linus Torvalds lämnats kärnrelease Linux 5.2. Bland de mest märkbara förändringarna: Ext4-driftläget är skiftlägesokänsligt, separata systemanrop för montering av filsystemet, drivrutiner för GPU Mali 4xx/6xx/7xx, förmågan att hantera ändringar i sysctl-värden i BPF-program, enhetsmapper modul dm-dust, skydd mot attacker MDS, stöd för Sound Open Firmware för DSP, optimering av BFQ-prestanda, vilket gör att PSI-undersystemet (Pressure Stall Information) kan användas i Android.

Den nya versionen innehåller 15100 1882 korrigeringar från XNUMX XNUMX utvecklare,
patchstorlek - 62 MB (ändringar påverkade 30889 filer, 625094 rader kod lades till, 531864 rader raderades). Cirka 45 % av alla presenterade i 5.2
ändringar är relaterade till drivrutiner, ungefär 21 % av ändringarna är det
attityd till att uppdatera kod som är specifik för hårdvaruarkitekturer, 12 %
relaterat till nätverksstacken, 3 % till filsystem och 3 % till interna
kärndelsystem. 12.4 % av alla ändringar förbereddes 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 huvudsakliga innovationer:

  • Diskundersystem, I/O och filsystem
    • Tillagd för Ext4 stöd fungerar utan att särskilja fallet med tecken i filnamn, som endast aktiveras i förhållande till enskilda tomma kataloger med det nya attributet "+F" (EXT4_CASEFOLD_FL). När detta attribut är inställt på en katalog kommer alla operationer med filer och underkataloger inuti att utföras utan att ta hänsyn till skiftlägen för tecken, inklusive skiftläge kommer att ignoreras vid sökning och öppning av filer (till exempel filerna Test.txt, test.txt och test.TXT i sådana kataloger kommer att betraktas som samma). Som standard fortsätter filsystemet att vara skiftlägeskänsligt, med undantag för kataloger med attributet "chattr +F";
    • Funktioner för bearbetning av UTF-8-tecken i filnamn, som används när man utför strängjämförelse och normaliseringsoperationer, har förenats;
    • XFS lägger till infrastruktur för hälsoövervakning av filsystem och en ny ioctl för att fråga om hälsostatus. En experimentell funktion har implementerats för att kontrollera superblockräknare online.
    • Lade till ny modul enhetsmapper "dm-damm", som låter dig simulera uppkomsten av dåliga block på media eller fel när du läser från disk. Modulen låter dig förenkla felsökning och testning av applikationer och olika lagringssystem inför eventuella fel;
    • Utförd Betydande prestandaoptimeringar för BFQ I/O-schemaläggaren. Under förhållanden med hög I/O-belastning gjordes optimeringar tillåta Minska tiden för operationer som att starta applikationer med upp till 80 %.
    • Lade till en serie systemanrop för montering av filsystem: fsopen(), open_tree(), fspick(), fsmount(), fsconfig() и move_mount(). Dessa systemanrop låter dig bearbeta olika monteringssteg separat (bearbeta superblocket, få information om filsystemet, montera, fästa vid monteringspunkten), som tidigare utfördes med det gemensamma mount()-systemanropet. Separata anrop ger möjligheten att utföra mer komplexa monteringsscenarier och utföra separata operationer som att konfigurera om superblocket, aktivera alternativ, ändra monteringspunkten och flytta till ett annat namnområde. Dessutom låter separat bearbetning dig exakt bestämma orsakerna till utmatningen av felkoder och ställa in flera källor för filsystem med flera lager, såsom överlagringar;
    • En ny operation IORING_OP_SYNC_FILE_RANGE har lagts till i gränssnittet för asynkron I/O io_uring, som utför åtgärder som motsvarar ett systemanrop sync_file_range(), och implementerade även möjligheten att registrera eventfd med io_uring och ta emot meddelanden om slutförandet av operationer;
    • För CIFS-filsystemet har FIEMAP ioctl lagts till, vilket ger effektiv omfattningskartläggning, samt stöd för lägena SEEK_DATA och SEEK_HOLE;
    • I FUSE-delsystemet föreslagen API för hantering av datacachning;
    • Btrfs har optimerat qgroups-implementeringen och förbättrat exekveringshastigheten för fsync för filer med flera hårda länkar. Kontrollkoden för dataintegritet har förbättrats, vilket nu tar hänsyn till eventuell skada på information i RAM-minnet innan data spolas till disken;
    • CEPH lade till stöd för export av ögonblicksbilder via NFS;
    • Implementeringen av NFSv4-montering i "mjukt" läge har förbättrats (om ett fel uppstår vid åtkomst till servern i "mjukt" läge, returnerar ett anrop till omedelbart en felkod, och i "hårt" läge ges kontroll inte förrän FS tillgänglighet eller timeout återställs). Den nya versionen ger mer exakt timeouthantering, snabbare kraschåterställning och ett nytt "mjukare" monteringsalternativ som låter dig ändra felkoden (ETIMEDOUT) som returneras när en timeout inträffar;
    • nfsdcld API, designat för att spåra tillståndet för NFS-klienter, tillåter NFS-servern att korrekt spåra klientens tillstånd vid omstart. Således kan nfsdcld-demonen nu fungera som en nfsdcl-spårhanterare;
    • För AFS Lagt till emulering av byteintervalllås i filer (Byte Range Locking);
  • Virtualisering och säkerhet
    • Arbete har gjorts för att eliminera platser i kärnan som tillåter kodexekvering från skrivbara reflekterade minnesområden, vilket tillåter blockering av potentiella hål som skulle kunna utnyttjas under en attack;
    • En ny kärnkommandoradsparameter "mitigations=" har lagts till, vilket ger ett förenklat sätt att kontrollera aktiveringen av vissa tekniker för att skydda mot sårbarheter i samband med spekulativ exekvering av instruktioner på CPU:n. Att godkänna "mitigations=off" inaktiverar alla befintliga metoder, och standardläget "mitigations=auto" aktiverar skydd men påverkar inte användningen av Hyper Threading. Läget "mitigations=auto,nosmt" inaktiverar dessutom Hyper Threading om det krävs av skyddsmetoden.
    • Lagt till stöd för elektronisk digital signatur enligt GOST R 34.10-2012 (RFC 7091, ISO/IEC 14888-3), tagit fram Vitaly Chikunov från Basalt SPO. Lade till stöd för AES128-CCM till den inbyggda TLS-implementeringen. Lade till stöd för AEAD-algoritmer till crypto_simd-modulen;
    • I Kconfig Lagt till en separat "kärnhärdning"-sektion med alternativ för att förbättra kärnskyddet. För närvarande innehåller det nya avsnittet endast inställningar för att aktivera GCC-kontrollförbättrande plugins;
    • Kärnkoden är nästan levereras från icke-brytande fallutlåtanden i switch (utan retur eller paus efter varje fallblock). Det återstår att fixa 32 av 2311 fall av sådan användning av switch, varefter det kommer att vara möjligt att använda läget "-Wimplicit-fallthrough" när man bygger kärnan;
    • För PowerPC-arkitekturen har stöd för hårdvarumekanismer för att begränsa oönskade kärnåtkomstvägar till data i användarutrymmet implementerats;
    • Lade till blockeringskod attacker MDS-klass (Microarchitectural Data Sampling) i Intel-processorer. Du kan kontrollera om ett system är sårbart för sårbarheter genom SysFS-variabeln "/sys/devices/system/cpu/vulnerabilities/mds". tillgänglig två skyddslägen: full, vilket kräver uppdaterad mikrokod, och bypass, som inte helt garanterar rensning av CPU-buffertar när kontrollen överförs till användarutrymmet eller gästsystemet. För att kontrollera skyddslägen har parametern "mds=" lagts till i kärnan, som kan ta värdena "full", "full,nosmt" (+ inaktivera Hyper-Threads) och "off";
    • På x86-64-system har "stack guard-page"-skydd lagts till för IRQ, felsökningsmekanismer och undantagshanterare, vars essens är ersättningen av minnessidor vid gränsen till stacken, åtkomst som leder till generering av en undantag (sidfel);
    • Lade till sysctl-inställningen vm.unprivileged_userfaultfd, som styr möjligheten för oprivilegierade processer att använda systemanropet userfaultfd();
  • Nätverksdelsystem
    • Lagt till IPv6-gateway-stöd för IPv4-rutter. Till exempel kan du nu specificera routingregler som "ip ro add 172.16.1.0/24 via inet6 2001:db8::1 dev eth0";
    • För ICMPv6 implementeras ioctl-anrop icmp_echo_ignore_anycast och icmp_echo_ignore_multicast för att ignorera ICMP ECHO för anycast och
      multicast-adresser. Lagt till förmågan att begränsa intensiteten av ICMPv6-paketbehandling;

    • För BATMAN (Better Approach To Mobile Adhoc Networking) mesh-protokoll, som tillåter skapandet av decentraliserade nätverk där varje nod är ansluten via angränsande noder, Lagt till stöd för sändning från multicast till unicast, samt möjlighet att styra via sysfs;
    • I ethool Lagt till en ny Fast Link Down-parameter, som låter dig minska tiden det tar att ta emot information om en länk ner-händelse för 1000BaseT (under normala förhållanden är fördröjningen upp till 750ms);
    • Dök upp möjlighet binda Foo-Over-UDP-tunnlar till en specifik adress, nätverksgränssnitt eller socket (tidigare gjordes bindning endast med en vanlig mask);
    • I den trådlösa stacken säkrad möjlighet att implementera hanterare
      OWE (Opportunistic Wireless Encryption) i användarutrymme;

    • I Netfilter har stöd för inet-adressfamiljen lagts till i nat-kedjor (till exempel kan du nu använda en översättningsregel för att bearbeta ipv4 och ipv6, utan att separera reglerna för ipv4 och ipv6);
    • I nätlänk Lagt till regim strikt för strikt verifiering av riktigheten av alla meddelanden och attribut, där den förväntade storleken på attribut inte får överskridas och tillägg av ytterligare data i slutet av meddelanden är förbjudet;
  • Minnes- och systemtjänster
    • CLONE_PIDFD-flaggan har lagts till i clone()-systemanropet, när det anges returneras filbeskrivningen "pidfd" som identifieras med den skapade underordnade processen till den överordnade processen. Den här filbeskrivningen kan till exempel användas för att skicka signaler utan rädsla för att hamna i ett racetillstånd (omedelbart efter att signalen har skickats kan mål-PID:t frigöras på grund av processavslutning och upptas av en annan process);
    • För den andra versionen av cgroups har fryskontrollfunktionaliteten lagts till, med vilken du kan stoppa arbetet i en cgroup och tillfälligt frigöra vissa resurser (CPU, I/O och eventuellt även minne) för att utföra andra uppgifter. Hantering sker genom kontrollfilerna cgroup.freeze och cgroup.events i cgroup-trädet. Post 1 i cgroup.freeze fryser processer i den aktuella cgroupen och alla underordnade grupper. Eftersom frysningen tar lite tid tillhandahålls ytterligare en cgroup.events-fil genom vilken du kan ta reda på hur operationen är slutförd;
    • Säkrad export av minnesattribut kopplade till varje nod i sysfs, vilket låter dig bestämma från användarutrymmet vilken typ av bearbetning av minnesbanker i system med heterogent minne;
    • Undersystemet PSI (Pressure Stall Information) har förbättrats, vilket gör att du kan analysera information om väntetiden för att ta emot olika resurser (CPU, minne, I/O) för vissa uppgifter eller uppsättningar av processer i en cgroup. Med hjälp av PSI kan hanterare av användarutrymmen mer exakt uppskatta nivån av systembelastning och nedgångsmönster jämfört med belastningsmedelvärde. Den nya versionen ger stöd för att ställa in känslighetströsklar och möjligheten att använda poll()-anropet för att få meddelande om att de inställda tröskelvärdena har utlösts under en viss tidsperiod. Den här funktionen låter Android övervaka minnesbrist i ett tidigt skede, identifiera källan till problem och avsluta oviktiga applikationer utan att orsaka problem som är märkbara för användaren. Vid stresstestning visade PSI-baserade verktyg för övervakning av minnesförbrukning 10 gånger färre falska positiva resultat jämfört med vmpressure-statistik;
    • Koden för att kontrollera BPF-program har optimerats, vilket gör det möjligt att kontrollera upp till 20 gånger snabbare för stora program. Optimering gjorde det möjligt att höja gränsen för storleken på BPF-program från 4096 till en miljon instruktioner;
    • För BPF-program beviljas möjligheten att komma åt globala data, vilket gör att du kan definiera globala variabler och konstanter i program;
    • tillsatt API, som låter dig kontrollera ändringar i sysctl-parametrar från BPF-program;
    • För MIPS32-arkitekturen har en JIT-kompilator för den virtuella eBPF-maskinen implementerats;
    • För 32-bitars PowerPC-arkitekturen har stöd för felsökningsverktyget KASan (Kernel address Sanizer) lagts till, vilket hjälper till att identifiera fel när man arbetar med minne;
    • På x86-64-system har begränsningen för att placera tillståndsdumpar under en kärnkrasch (crash-dump) i minnesområden över 896MB tagits bort;
    • För s390-arkitekturen implementeras stöd för randomisering av kärnadressutrymme (KASLR) och möjligheten att verifiera digitala signaturer när kärnan laddas via kexec_file_load();
    • För PA-RISC-arkitekturen, lagt till stöd för kärnfelsökningen (KGDB), hoppmärken och kprobes;
  • Оборудование
    • Drivrutin ingår Lima för Mali 400/450 GPU, som används i många äldre chips baserade på ARM-arkitekturen. För nyare Mali GPU:er har Panfrost-drivrutinen lagts till, som stöder chips baserade på Midgard (Mali-T6xx, Mali-T7xx, Mali-T8xx) och Bifrost (Mali G3x, G5x, G7x) mikroarkitekturer;
    • Tillagt stöd för ljudenheter som använder öppen firmware Ljudöppen fast programvara (SÅ F). Trots tillgången på öppna drivrutiner förblev firmwarekoden för ljudchips fortfarande stängd och levererades i binär form. Sound Open Firmware-projektet utvecklades av Intel för att skapa öppen firmware för DSP-chips relaterade till ljudbehandling (Google kom senare också med i utvecklingen). För närvarande har projektet redan förberett upptäckten av firmware för ljudchips för Intel Baytrail, CherryTrail, Broadwell, ApolloLake, GeminiLake, CannonLake och IceLake-plattformarna;
    • Intel DRM-drivrutin (i915) lägger till stöd för chips
      Elkhartlake (Gen11). Lade till PCI ID:n för Comet Lake (Gen9) chips. Stödet för Icelake-chips har stabiliserats, för vilka ytterligare PCI-enhetsidentifierare också har lagts till.
      Ingår
      läge för asynkron växling mellan två buffertar i videominnet (async flip) när man utför skrivoperationer via mmio, vilket avsevärt ökade prestandan för vissa 3D-applikationer (till exempel ökade prestandan i 3DMark Ice Storm-testet med 300-400%). Tillagt teknikstöd HDCP2.2 (High-bandwidth Digital Content Protection) för kryptering av videosignaler som överförs via HDMI;

    • Amdgpu-drivrutinen för Vega20 GPU Lagt till stöd för RAS (Reliability, Availability, Serviceability) och experimentellt stöd för delsystemet SMU 11, som ersatte Powerplay-tekniken. För GPU Vega12 Lagt till stöd för BACO-läge (Bus Active, Chip Off). Lade till initialt stöd för XGMI, en höghastighetsbuss (PCIe 4.0) för GPU-sammankoppling. Lade till saknade identifierare för kort baserade på Polaris10 GPU till amdkfd-drivrutinen;
    • Nouveau-drivrutinen har lagt till stöd för kort baserade på NVIDIA Turing 117-kretsuppsättningen (TU117, som används i GeForce GTX 1650). I
      kconfig Lagt till inställning för att inaktivera föråldrade funktioner som inte längre används i nuvarande utgåvor av libdrm;

    • Stöd för "tidslinje"-synkroniseringsobjekt har lagts till i DRM API och amdgpu-drivrutinen, så att du kan klara dig utan klassisk blockering.
    • Vboxvideo-drivrutinen för VirtualBox virtuella GPU har flyttats från staging-grenen till huvudstrukturen;
    • Lade till aspeed-drivrutin för GFX SoC ASPEED-chip;
    • Tillagt stöd för ARM SoC och Intel Agilex (SoCFPGA), NXP i.MX8MM, Allwinner (RerVision H3-DVK (H3), Oceanic 5205 5inMFD, ,Beelink GS2 (H6), Orange Pi 3 (H6)), Rockchip (Orange Pi) ) kort 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).

Samtidigt latinamerikanska Free Software Foundation bildas
вариант helt gratis kärna 5.2 - Linux-fri 5.2-gnu, rensad från firmware och drivrutinselement som innehåller icke-fria komponenter eller kodsektioner, vars omfattning är begränsad av tillverkaren. Ny version inkluderar filuppladdning
Ljud Öppna Firmware. Inläsning av blobbar i drivrutiner är inaktiverad
mt7615, rtw88, rtw8822b, rtw8822c, btmtksdio, iqs5xx, ishtp och ucsi_ccg. Blob-rensningskoden i ixp4xx, imx-sdma, amdgpu, nouveau och goya drivrutiner och delsystem, samt i mikrokoddokumentationen, har uppdaterats. Slutade att rengöra blobbar i r8822be-drivrutinen på grund av att den tagits bort.

Källa: opennet.ru

Lägg en kommentar