Lanseringen av Linux-kÀrnan 5.7

Efter tvÄ mÄnaders utveckling presenterade Linus Torvalds Är kÀrnlansering Linux 5.7Bland de mest anmÀrkningsvÀrda förÀndringarna finns: ny implementering av filsystemet exFAT, modulen bareudp för att skapa UDP-tunnlar, skydd baserat pÄ pekarautentisering för ARM64, möjligheten att bifoga BPF-program till LSM-hanterare, ny implementering av Curve25519, split-lock-detektor, BPF-kompatibilitet med PREEMPT_RT, borttagning av begrÀnsningen pÄ 80 tecken i koden, övervakning av CPU-temperatur i schemalÀggaren, möjlighet att anvÀnda clone() för att skapa processer i en annan cgroup, samt skydd mot skrivning till minne med hjÀlp av userfaultfd.

I den nya versionen har 15033 korrigeringar godtagits frÄn 1961 utvecklare,
patchstorleken Àr 39 MB (förÀndringarna berör 11590 filer, 570560 rader kod har lagts till,
297401 rader har tagits bort). Cirka 41% av alla Àndringar i 5.7
Àr relaterade till enhetsdrivrutiner, ungefÀr 16% av Àndringarna har
att göra med uppdatering av arkitekturanpassad kod, 13%
med nÀtverksstacken, 4% med filsystem och 4% med interna
kÀrnunderavdelningar.

Huvud nyheter:

  • Disksubsystem, in- och utmatning och filsystem
    • En ny implementering av exFAT-drivrutinen har lagts till, baserad pĂ„ den aktuella kodbasen 'sdfat' (2.x), som utvecklas av Samsung för sina Android-smartphones. Den tidigare tillagda drivrutinen i kĂ€rnan var baserad pĂ„ utdaterad kod frĂ„n Samsung (version 1.2.9) och var ungefĂ€r 10% mindre prestandakraftig Ă€n den nya drivrutinen. TĂ€nk pĂ„ att tillĂ€gget av stöd för exFAT i kĂ€rnan blev möjligt efter att Microsoft publicerade gjorde specifikationerna offentliga och möjliggjorde gratis anvĂ€ndning av patent för exFAT i Linux.
    • I Btrfs har en ny ioctl()-kommando - BTRFS_IOC_SNAP_DESTROY_V2 - implementerats, vilket möjliggör borttagning av en del baserat pĂ„ dess identifierare. FullstĂ€ndig stöd för kloning av inline-extent har sĂ€kerstĂ€llts. Antalet punkter för att Ă„ngra omfördelningsoperationer har utökats, vilket har minskat lĂ„nga vĂ€ntetider nĂ€r kommandot 'balance cancel' utförs. Identifieringen av bakĂ„treferenser till extents har snabbats upp (t.ex. har tiden för att utföra testscenariet minskat frĂ„n en timme till flera minuter). Möjligheten att bifoga varje inode i filens extenttrĂ€d har lagts till. LĂ„sstrategin som anvĂ€nds vid skrivning till delsystem och vid undantag av NOCOW har omarbetats. Effektiviteten vid utförande av fsync för intervall har ökat.
    • I XFS har metadata-kontrollen och fsck-körningen förbĂ€ttrats för aktiva partitioner. Ett bibliotek för omskrivning av btree-strukturer har föreslagits, vilket i framtiden kommer att anvĂ€ndas för omarbetning av xfs_repair och för att implementera Ă„terstĂ€llningsmöjligheter utan att mounta partitionen.
    • I CIFS har experimentellt stöd för att placera swap-partitioner i SMB3-lagringsutrymmen lagts till. POSIX-tillĂ€gg i readdir, definierade i specifikationen SMB3.1.1, har implementerats. Skrivprestanda för sidor med storlek 64KB har förbĂ€ttrats nĂ€r cache=strict Ă€r aktiverad och versioner av protokollet 2.1+ anvĂ€nds.
    • Filsystemet EXT4 har övergĂ„tt frĂ„n bmap och iopoll till att anvĂ€nda iomap.
    • I F2FS har valfritt stöd för datakomprimering med zstd-algoritmen implementerats. Som standard anvĂ€nds LZ4-algoritmen för komprimering. Stödet för kommandot 'chattr -c commit' har lagts till. Tiden för montering visas nu. Ioctl F2FS_IOC_GET_COMPRESS_BLOCKS har lagts till för att hĂ€mta information om antalet komprimerade block. Information om komprimering visas nu via statx.
    • I Ceph-filsystemet har möjlighet till lokal utförande av filskapande och borttagning (unlink) implementerats utan att vĂ€nta pĂ„ svar frĂ„n servern (asynkron drift). Denna Ă€ndring gör att prestandan vid anvĂ€ndning av rsync-verktyget avsevĂ€rt förbĂ€ttras.
    • I OVERLAYFS har möjlighet till att anvĂ€nda virtiofs som överordnat filsystem lagts till.
    • Omprogrammerad kod för vĂ€ggenomgĂ„ng i VFS, omarbetad kod för att parsa symboliska lĂ€nkar och enhetlig vĂ€ggenomgĂ„ng av monteringspunkter.
    • I SCSI-underystemet kan icke-privilegerade anvĂ€ndare Ă€r utföra ZBC-kommandon.
    • I dm_writecache har möjligheten har möjligheten till gradvis rensning av cachen baserat pĂ„ parametern max_age, som anger den maximala livslĂ€ngden för en block.
    • I dm_integrity har lagts till har stöd för operationen 'discard' lagts till.
    • I null_blk har lagts till kan feletsĂ€ttning anvĂ€ndas för att simulera fel under testning.
    • Tillagd möjlighet till att skicka udev-meddelanden om Ă€ndringar i storleken pĂ„ blockenheten.
  • NĂ€tverkssystemet
    • I Netfilter har fören funktion introducerats som avsevĂ€rt pĂ„skyndar behandlingen av stora matchningslistor (nftables set), dĂ€r kontroll av kombinationer av subnet, nĂ€tverksportar, protokoll och MAC-adresser krĂ€vs.
      Optimeringar har I nft_set_pipapo-modulen (PIle PAcket POlicies), som löser uppgiften att matcha paketets innehĂ„ll med de anvĂ€nda filtreringsreglerna av godtyckliga intervall i fĂ€ltets tillstĂ„nd, sĂ„som intervall av IP-adresser och nĂ€tverksportar (nft_set_rbtree och nft_set_hash hanterar matchning av intervall och direkt reflektion av vĂ€rden). Den vektoriserade versionen av pipapo med 256-bitars AVX2-instruktioner pĂ„ ett system med AMD Epyc 7402-processor visade en prestationsökning pĂ„ 420 % vid analys av 30 000 poster som inkluderade port-protokollpar. Ökningen vid matchning av paret av nĂ€tverksadress och portnummer vid analys av 1000 poster var 87 % för IPv4 och 128 % för IPv6.
    • Tillagd bareudp-modulen, som gör det möjligt att kapsla in olika L3-protokoll i en UDP-tunnel, sĂ„som MPLS, IP och NSH.
    • Integrationen av MPTCP (MultiPath TCP) komponenter fortsĂ€tter, en utvidgning av TCP-protokollet för att organisera TCP-anslutningar med leverans av paket simultant över flera vĂ€gar genom olika nĂ€tverksgrĂ€nssnitt kopplade till olika IP-adresser.
    • Tillagd Stöd för mekanismer för hĂ„rdvaruaccelerering av inkapsling av Ethernet-ramar i 802.11 (Wi-Fi).
    • Vid flytt av en enhet frĂ„n ett nĂ€tverkssynonymrum (network namespace) till ett annat sĂ€kerstĂ€lls justering av Ă„tkomstrĂ€ttigheter och Ă€gare av motsvarande filer i sysfs.
    • Möjlighet att anvĂ€nda flaggan SO_BINDTODEVICE för anvĂ€ndare utan root-rĂ€ttigheter har tillhandahĂ„llits.
    • Den tredje delen av patcharna har accepterats, vilket översĂ€tter verktyget ethtool frĂ„n ioctl() till anvĂ€ndning av netlink-grĂ€nssnittet. Det nya grĂ€nssnittet förenklar tillĂ€gg av utvidgningar, förbĂ€ttrar felhantering, möjliggör meddelanden vid statusĂ€ndring, underlĂ€ttar interaktionen mellan kĂ€rnan och anvĂ€ndarutrymmet och minskar antalet synkroniserade namngivna listor.
    • Möjlighet att anvĂ€nda speciella hĂ„rdvaruacceleratorer för att utföra operationsspĂ„rning har lagts till.
    • I netfilter tillagd en hook för att koppla klassificerare av utgĂ„ende paket (egress), som kompletterar den tidigare nĂ€rvarande hooken för inkommande paket (ingress).
  • Virtualisering och sĂ€kerhet
    • En hĂ„rdvaruimplementation av pekarautentisering har lagts till (Pekarautentisering), som anvĂ€nder specialiserade ARM64 CPU-instruktioner för att skydda mot attacker som anvĂ€nder teknik för Ă„tervĂ€nder-orienterad programmering (ROP), dĂ€r angriparen inte försöker placera sin kod i minnet, utan arbetar med redan existerande maskininstruktioner i inlĂ€sta bibliotek som avslutas med en Ă„tergĂ„ngsinstruktion. Skyddet handlar om att anvĂ€nda digitala signaturer för att verifiera Ă„tergĂ„ngsadresser pĂ„ kĂ€rnnivĂ„. Signaturen lagras i de oanvĂ€nda övre bitarna av sjĂ€lva pekaren. Till skillnad frĂ„n programvarulösningar sker skapandet och verifieringen av digitala signaturer med hjĂ€lp av speciella CPU-instruktioner.
    • Tillagd möjligheten att skydda minnesomrĂ„det frĂ„n skrivning med hjĂ€lp av systemanropet userfaultfd(), avsett för hantering av sidfel (Ă„tkomst till obestĂ€mda minnessidor) i anvĂ€ndarutrymmet. IdĂ©n Ă€r att anvĂ€nda userfaultfd() Ă€ven för att spĂ„ra övertrĂ€delser av Ă„tkomst till sidor som Ă€r mĂ€rkta som skrivskyddade och anropa en hanterare som kan reagera pĂ„ sĂ„dana skrivförsök (till exempel för att hantera Ă€ndringar i processen för att skapa live-snapshots av körande processer, faststĂ€lla tillstĂ„nd vid nedladdning av minnesdumpningar till disk, implementera delat minne, spĂ„ra förĂ€ndringar i minnet). Funktionalitet motsvarar anvĂ€ndningen av mprotect() i kombination med signalhanteraren SIGSEGV, men fungerar avsevĂ€rt snabbare.
    • I SELinux har parametern "checkreqprot" förklarats som förĂ„ldrad, vilket gör det möjligt att stĂ€nga av skyddskontrollen av minnet vid hantering av regler (tillĂ€t anvĂ€ndning av exekverbara minnesomrĂ„den, oavsett bestĂ€mmelserna i de angivna reglerna). Symboliska lĂ€nkar till kernfs tillĂ„ts Ă€rva kontext frĂ„n förĂ€ldrakataloger.
    • I sammansĂ€ttningen pĂ„slagen modul KRSI, vilket gör det möjligt att bifoga BPF-program till alla LSM-hookar i kĂ€rnan. Ändringen möjliggör skapandet av LSM-moduler (Linux Security Module) i form av BPF-program för att lösa uppgifter inom revision och mandatkontroll.
    • Genomfört prestandaoptimering av /dev/random genom batchöverföring av CRNG-vĂ€rden istĂ€llet för separata instruktionanrop för RNG. FörbĂ€ttrad funktionalitet för getrandom och /dev/random pĂ„ ARM64-system som erbjuder RNG-instruktioner.
    • Implementering av den elliptiska kurvan Curve25519 ersattes till en variant frĂ„n biblioteket HACL, för vilken det ges matematisk bevis för formell verifiering av pĂ„litlighet.
    • Tillagd mekanism för att informera om lediga minnessidor. Genom denna mekanism kan gĂ€stsystem överföra information till vĂ€rdsystemet om sidor som inte lĂ€ngre anvĂ€nds, och dessa sidor kan vĂ€rden Ă„terta.
    • I vfio/pci har lagts till stöd för SR-IOV (Single-Root I/O Virtualization).
  • Minne och systemtjĂ€nster
    • FrĂ„n 80 till 100 tecken har ökat begrĂ€nsning pĂ„ maximal radlĂ€ngd i kĂ€lltexter. Utvecklare rekommenderas fortfarande att hĂ„lla sig inom 80 tecken per rad, men det Ă€r nu inte en strikt grĂ€ns. Dessutom kommer överskridande av radlĂ€ngdgrĂ€nsen nu att leda till att en varning ges vid kompilering endast om verktyget checkpatch körs med alternativet "--strict’. Denna Ă€ndring gör det möjligt för utvecklare att manipulering kĂ€nna sig mer avslappnade vid kodjustering och förhindra onödig radbrytning, som stör lĂ€sbarheten av koden och sökningen.
    • Tillagd stöd för blandat bootlĂ€ge EFI, som gör det möjligt att starta en 64-bitars kĂ€rna frĂ„n 32-bitars firmware som körs pĂ„ en 64-bitars CPU utan att anvĂ€nda en specialiserad bootloader.
    • Aktiverad system för att upptĂ€cka och felsöka split-locks ("split lock"), som uppstĂ„r vid Ă„tkomst till ojusterade data i minnet, eftersom data vid utförande av en atomisk instruktion korsar tvĂ„ cachelinjer i CPU: n. SĂ„dana lĂ„sningar leder till en avsevĂ€rd prestandaförlust (upp till 1000 cykler lĂ„ngsammare Ă€n en atomĂ€r operation med data som ligger i en cachelinje). Beroende pĂ„ bootparametern "split_lock_detect" kan kĂ€rnan upptĂ€cka sĂ„dana lĂ„sningar i realtid och ge varningar eller skicka en SIGBUS-signal till den applikation som orsakade lĂ„sningen.
    • I schemalĂ€ggaren för uppgifter finns spĂ„rning av temperaturgivarsensorer (Thermal Pressure) och realiseringen av överhettningsövervakning vid planering av uppgifter. Genom att anvĂ€nda den statistik som ges kan temperaturprocessorn (thermal governor) justera den maximala CPU-frekvensen vid överhettning, och schemalĂ€ggaren tar nu hĂ€nsyn till den reducerade berĂ€kningskraften pĂ„ grund av sĂ„dana frekvensjusteringar vid schemalĂ€ggning av uppgifter (tidigare reagerade schemalĂ€ggaren pĂ„ frekvensĂ€ndringar med viss fördröjning, och beslutade baserat pĂ„ överdrivna antaganden om tillgĂ€ngliga berĂ€kningsresurser).
    • I schemalĂ€ggaren anvĂ€nds invarianta mĂ„tt för att övervaka belastningen, vilket gör det möjligt att korrekt bedöma belastningen oavsett den aktuella CPU-frekvensen. Ändringen möjliggör en mer exakt prognos av uppgifternas beteende under förhĂ„llanden med dynamisk förĂ€ndring av spĂ€nning och CPU-frekvens. Till exempel, en uppgift som anvĂ€nde 1/3 av CPU-resurserna vid 1000 MHz, kommer att anvĂ€nda 2/3 av resurserna vid en sĂ€nkning av frekvensen till 500 MHz, vilket tidigare skapade en felaktig uppfattning om att den arbetade med full kapacitet (d.v.s. uppgifterna för schemalĂ€ggaren verkade större endast pĂ„ grund av sĂ€nkningen av frekvensen, vilket ledde till felaktiga beslut i schedutil cpufreq governor).
    • Intel P-state-drivrutinen, som ansvarar för valet av prestandalĂ€gen, har övergĂ„tt till att anvĂ€nda schedutil.
    • Möjligheten att anvĂ€nda BPF-underhĂ„llsystemet i kĂ€rnan under realtidslĂ€ge (PREEMPT_RT) har realiserats. Tidigare krĂ€vdes att BPF stĂ€ngdes av vid aktivering av PREEMPT_RT.
    • En ny typ av BPF-program – BPF_MODIFY_RETURN – har lagts till, som kan kopplas till funktioner i kĂ€rnan och Ă€ndra vĂ€rdet som returneras av dessa funktioner.
    • Tillagd att anvĂ€ndningen av systemanropet clone3() för att skapa en process i en cgroup som skiljer sig frĂ„n den överordnade cgroupen, vilket möjliggör för den överordnade processen att tillĂ€mpa begrĂ€nsningar och aktivera redovisning direkt efter skapandet av en ny process eller trĂ„d. Till exempel kan tjĂ€nstehanteraren direkt allokera nya tjĂ€nster i separata cgroups, och nya processer som placeras i
    • i Kbuild har lagts till stöd för miljövariabeln 'LLVM=1' för att vĂ€xla till Clang/LLVM-verktyget vid kompilering av kĂ€rnan. Kraven för versionen av binutils (2.23) har höjts.
    • I debugfs har en sektion /sys/kernel/debug/kunit/ lagts till med resultaten av kunit-tester.
    • En parameter för laddning av kĂ€rnan pm_debug_messages har lagts till (analog till /sys/power/pm_debug_messages), som inkluderar debugginginformation om hur strömhanteringssystemet fungerar (anvĂ€ndbart för att felsöka problem med vilolĂ€ge och vĂ€ntelĂ€ge).
    • I grĂ€nssnittet för asynkron in-/utmatning io_uring fĂ„tt stöd för splice() och atomĂ€r val av buffertar.
    • Profileringen av cgroup har förbĂ€ttrats med hjĂ€lp av verktygssatsen perf. Tidigare kunde perf endast profilera uppgifter i en viss cgroup och kunde inte ta reda pĂ„ vilken cgroup den nuvarande provtagningen tillhörde. Nu fĂ„r perf information om cgroup för varje provtagning, vilket gör det möjligt att profilera mer Ă€n en cgroup och tillĂ€mpa sortering efter
      cgroup i rapporterna.
    • I cgroupfs, ett pseudo-FS för hantering av cgroups, har stöd för utökade attribut (xattrs) lagts till, vilket gör det möjligt att till exempel lĂ€mna ytterligare information för hanterare i anvĂ€ndarutrymmet.
    • I cgroup minneskontroller tillagdhar stöd för rekursiv skydd av vĂ€rdet "memory.low" införts, vilket reglerar den minimi mĂ€ngd RAM-minne som tillhandahĂ„lls för gruppmedlemmarna. Vid montering av hierarkin cgroup med alternativet "memory_recursiveprot" kommer vĂ€rdet "memory.low", som har stĂ€llts in för nedre noder, automatiskt att distribueras för alla underordnade noder.
    • Tillagd ramverket Uacce (Unified/User-space-access-intended Accelerator Framework) för delning av virtuella adresser (SVA, Shared Virtual Addressing) mellan CPU och kringutrustning, vilket gör det möjligt för hĂ„rdvaruacceleratorer att fĂ„ Ă„tkomst till datakonstruktioner i huvud-CPU:n.
  • HĂ„rdvaruarkitekturer
    • För ARM-arkitekturen har möjligheten till varm borttagning av minne implementerats.
    • För RISC-V-arkitekturen har stöd för varm anslutning och frĂ„nkoppling av CPU (CPU hotplug) lagts till. För 32-bitars RISC-V har eBPF JIT implementerats.
    • Möjligheten att anvĂ€nda 32-bitars ARM-system för att köra KVM-gĂ€stmiljöer har tagits bort.
    • Den "fiktiva" implementeringen av NUMA för s390-arkitekturen har avlĂ€gsnats, eftersom inga anvĂ€ndningsscenarier för att uppnĂ„ prestandaförbĂ€ttring har hittats.
    • För ARM64 har stöd för tillĂ€gget AMU (Activity Monitors Unit), definierat i ARMv8.4, lagts till och erbjuder prestanda rĂ€knare som anvĂ€nds för att berĂ€kna skalningskorrektioner av frekvens i schemalĂ€ggaren.
  • Utrustning
    • Tillagd stöd för vDPA-enheter som anvĂ€nder en datakanal som Ă€r i enlighet med virtio-specifikationerna. vDPA-enheter kan vara bĂ„de fysiskt ansluten hĂ„rdvara och emulerade virtuella enheter.
    • I GPIO-underkategorin har det tillkommit ett nytt ioctl()-kommando för att övervaka förĂ€ndringar, vilket gör det möjligt att informera processen om förĂ€ndringar i tillstĂ„ndet för vilken GPIO-linje som helst. Som ett exempel pĂ„ hur det nya kommandot anvĂ€nds en liknande teknik för att Ă€ndra förfrĂ„gningar, som möjliggör att Ă€ndra data i cacherade proxy (Tomcat, squid, mod_proxy) eller kringgĂ„ brandvĂ€ggar genom att ange flera "GET"- eller "POST"-förfrĂ„gningar inom ett och samma HTTP-session. verktyget gpio-watch.
    • I DRM-drivrutinen i915 för Intel-grafikkort Ă€r inkluderad har standardstödet för Tigerlake-chips ('Gen12') lagts till och inledande stöd för OLED-bakgrundsbelysning. Stödet för Ice Lake, Elkhart Lake, Baytrail och Haswell-chips har förbĂ€ttrats.
    • I amdgpu-drivrutinen har lagts till möjlighet att ladda firmware till USBC-chippen för ASIC. Stödet för AMD Ryzen 4000 'Renoir'-chips har förbĂ€ttrats. Stöd för OLED-panelhantering har lagts till. Visning av firmwarestatus i debugfs har sĂ€kerstĂ€llts.
    • I DRM-drivrutinen vmwgfx för VMware-virtualiseringssystem har stöd för OpenGL 4 i gĂ€stsysten lagts till (tidigare stöddes OpenGL 3.3).
    • En ny DRM-drivrutin tidss för TI Keystone-plattformens displaysystem har lagts till.
    • Drivrutiner för LCD-paneler har lagts till: Feixin K101 IM2BA02, Samsung s6e88a0-ams452ef01, Novatek NT35510, Elida KD35T133, EDT, NewEast Optoelectronics WJFH116008A, Rocktech RK101II01D-CT, Frida FRD350H54004.
    • I strömhanteringssystemet har lagts till stöd för Intel Jasper Lake (JSL)-plattformen baserad pĂ„ Atom.
    • Stöd för bĂ€rbara datorer Pinebook Pro baserade pĂ„ Rockchip RK3399, surfplattor Pine64 PineTab och smartphones PinePhone baserade pĂ„ Allwinner A64.
    • Stöd för nya ljudkodekar och chip har lagts till:
      Amlogic AIU, Amlogic T9015, Texas Instruments TLV320ADCX140, Realtek RT5682, ALC245, Broadcom BCM63XX I2S, Maxim MAX98360A, Presonus Studio 1810c, MOTU MicroBook IIc.
    • Stöd för ARM-kort och Qualcomm Snapdragon 865 (SM8250), IPQ6018, NXP i.MX8M Plus, Kontron 'sl28', 11 varianter av i.MX6 TechNexion Pico, tre nya varianter av Toradex Colibri, Samsung S7710 Galaxy Xcover 2 baserad pĂ„ ST-Ericsson u8500, DH Electronics DHCOM SoM och PDK2, Renesas M3ULCB, Hoperun HiHope, Linutronix Testbox v2, PocketBook Touch Lux 3.

KĂ€lla: opennet.ru

Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar đŸ”„ Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar | ProHoster