Utgivning av Linux-kÀrnan 6.6

Efter tvÄ mÄnaders utveckling presenterade Linus Torvalds releasen av kÀrnan Linux 6.6. Bland de mest framtrÀdande förÀndringarna: en ny uppgiftsscheduler EEVDF; en mekanism för skugga av stacken för att skydda mot exploateringar; stöd för fs-verity i OverlayFS; implementering av kvoter och xattr i tmpfs; förberedelse av online fsck i XFS; förbÀttrad övervakning av export av 'GPL-only' symboler; stöd för nÀtverksocketar i io_uring; randomisering av minne i kmalloc(); ReiserFS har deklarerats förÄldrad; primitiver för Vulkan-drivrutinen NVK har lagts till i Nouveau.

I den nya versionen har 15291 korrigeringar accepterats frÄn 2058 utvecklare, patchens storlek Àr 39 MB (förÀndringarna omfattade 14844 filer, 553359 kodrader lades till och 284012 kodrader togs bort). I den föregÄende utgÄvan fanns 14674 korrigeringar frÄn 2016 utvecklare, patchens storlek var 78 MB. UngefÀr 44% av de förÀndringar som presenterades i 6.6 Àr relaterade till enhetsdrivrutiner, ungefÀr 17% av förÀndringarna har att göra med uppdatering av kod som Àr specifik för hÄrdvaruarkitekturer, 11% Àr relaterade till nÀtverksstacken, 4% till filsystem och 3% till interna kÀrnsystem.

Huvudnyheterna i kÀrnan 6.6:

  • Minne och systemtjĂ€nster
    • En ny uppgiftsscheduler EEVDF (Earliest Eligible Virtual Deadline First) har implementerats, som ersĂ€tter CFS (Completely Fair Scheduler) som levererades frĂ„n och med kĂ€rnan 2.6.23. Den nya schemalĂ€ggaren beaktar vid valet av nĂ€sta process att överföra exekvering, processer som inte har fĂ„tt tillrĂ€ckliga processorresurser eller som har fĂ„tt orĂ€ttvist mycket processorstid. I det första fallet tvingas överföring av kontroll till processen, medan den i det andra fallet skjuts upp. Den gamla schemalĂ€ggaren CFS anvĂ€nde heuristik och finjusteringar för att identifiera processer som krĂ€vde sĂ€rskild uppmĂ€rksamhet, medan den nya schemalĂ€ggaren spĂ„rar dem mer tydligt och krĂ€ver ingen finjustering. Det förvĂ€ntas att EEVDF kommer att minska fördröjningar vid exekvering av uppgifter, som CFS hade problem med nĂ€r det gĂ€llde schemalĂ€ggning.
    • Ändringar har införts i hanteringen av interna symboler för kategorin "GPL-only", avsedda att komplicera anvĂ€ndningen av proprietĂ€ra GPL-lager för att kringgĂ„ Ă„tkomstbegrĂ€nsningar till kĂ€rnsystem som endast tillĂ„ter kod under GPL-licens. I funktionen symbol_get() Ă€r sökningar av symboler markerade som GPL-only förbjudna för proprietĂ€ra moduler, och vice versa, GPL-moduler kommer inte kunna hitta symboler som exporteras av proprietĂ€ra moduler.
    • Ytterligare instĂ€llningar för arbetsköer (unbound workqueue) har lagts till för att öka effektiviteten i Ă„teranvĂ€ndning av processorcache pĂ„ stora system med flera tredje nivĂ„ns cache (L3). I kĂ€rnan ingĂ„r ocksĂ„ verktyget tools/workqueue/wq_dump.py för att kontrollera den aktuella konfigurationen av arbetsköer.
    • Io_uring-subsystemet har fĂ„tt inledande stöd för operationer och kommandon specifika för nĂ€tverks-sockets. En sysctl io_uring_disabled har lagts till för att stĂ€nga av io_uring pĂ„ systemnivĂ„. Dessutom har direkt I/O (Direct I/O) i io_uring betydligt accelererats i asynkront lĂ€ge. Genomförda Ă€ndringar ger en ökning av bandbredden och minskning av latens med upp till 37% vid utförande av in- och utmatningsoperationer.
    • För PA-RISC-arkitekturen har en JIT-kompilator för BPF implementerats.
    • InstĂ€llningen /sys/devices/system/cpu/smt/control har fĂ„tt stöd för numeriska parametrar som definierar antalet trĂ„dar som Ă€r tillgĂ€ngliga för varje CPU-kĂ€rna (tidigare stöddes endast vĂ€rdena "on" och "off" för att aktivera och avaktivera stöd för symmetrisk multitrĂ„dning). Den nya funktionen kan tillĂ€mpas pĂ„ vissa PowerPC-processorer som stöder hotplug SMT-lĂ€get för selektiv aktivering av SMT pĂ„ specifika kĂ€rnor under drift.
    • Överföringen av Ă€ndringarna frĂ„n Rust-for-Linux-grenen har fortsatt, relaterat till anvĂ€ndningen av Rust som det andra sprĂ„ket för utveckling av drivrutiner och kĂ€rnmoduler (Rust-stöd Ă€r inte aktiverat som standard och leder inte till att Rust blir ett obligatoriskt byggberoende för kĂ€rnan). ÖvergĂ„ngen till Rust-versioner 1.71.1 och bindgen 0.65.1 har genomförts. Draget 'Zeroable' har implementerats. Procedurmakron 'paste!' och '#[derive(Zeroable)]' har lagts till. Kompatibiliteten med '#[pin_data]' har sĂ€kerstĂ€llts. Initieringsfunktionerna '{,pin_}init_array_from_fn()' och metoden '{,pin_}chain' har lagts till. Möjligheterna i modulen 'types' har utökats. I testningsramverket kunit har möjligheten att köra tester frĂ„n Rust-dokumentationen lagts till.
    • Subsystemet 'eventfs' har lagts till, vilket avsevĂ€rt minskar minnesanvĂ€ndningen i spĂ„rningssystemet genom att eliminera behovet av att lagra överflödiga strukturer som anvĂ€nds för att representera spĂ„rningspunkter i filsystemet. Tidigare skapades sĂ„dana strukturer för alla spĂ„rningspunkter, oavsett om spĂ„rning anvĂ€ndes eller inte. Med hjĂ€lp av eventfs kan sĂ„dana strukturer nu skapas dynamiskt endast vid behov.
    • Möjligheterna i verktyget perf har utökats.
    • Information för att diagnostisera effektiviteten av mekanismen för sammanslagning av identiska minnessidor (KSM, Kernel Samepage Merging) har lagts till i filen /proc/pid/smaps.
    • API:t Frontswap har tagits bort, vilket gjorde det möjligt att placera swap-partitioner i minne som inte kan adresseras direkt och som inte tillhandahöll operativ information om tillgĂ„ngen pĂ„ ledigt utrymme. Detta API anvĂ€ndes endast i zswap, sĂ„ det har beslutats att direkt anvĂ€nda denna funktionalitet i zswap, vilket eliminerar onödiga mellanskikt.
    • För RISC-V-arkitekturen har stöd för att fĂ„ Ă„tkomst till prestanda-rĂ€knare frĂ„n anvĂ€ndarrummet lagts till, samt möjligheten att placera en kĂ€rndump efter en krasch i omrĂ„det utanför 4GB.
    • Inledande stöd för ARM SME-instruktioner (Scalable Matrix Extension) har lagts till.
    • Möjlighet att anvĂ€nda felsökningsverktyg som KDB, KGDB, kcov, KFENCE och KASAN pĂ„ system med LoongArch-arkitektur har implementerats.
    • Stöd har lagts till för filer för testning av kĂ€rnan i GitLab:s kontinuerliga integrationssystem, vilket anvĂ€nds vid utvecklingen av grafiska drivrutiner.
  • Disksubsystem, in- och utmatning och filsystem
    • I filsystemen OverlayFS har stöd för att spara fs-verity-hashar i den utökade attributen (xattr) overlay.verity lagts till, vilket kan anvĂ€ndas för att kontrollera integriteten och Ă€ktheten av filer i de underliggande lagren av OverlayFS med hjĂ€lp av kryptografiska hashfunktioner och nycklar. PĂ„ sĂ„ sĂ€tt innehĂ„ller OverlayFS nu alla Ă€ndringar som behövs för att projektet Composefs ska fungera som en överbyggnad ovanpĂ„ filsystemen OverlayFS och EROFS.
    • I filsystemet XFS har förberedelser gjorts för att implementera möjligheten att anvĂ€nda verktyget fsck för att kontrollera och Ă„tgĂ€rda identifierade problem i online-lĂ€ge, utan att montera ur filsystemet. Dessutom har XFS implementerat möjligheten att anvĂ€nda stora volymer (folios) i sidcache och vissa relaterade optimeringar har lagts till, vilket har gjort att prestandan har ökat avsevĂ€rt för vissa typer av belastning.
    • I filsystemet tmpfs har stöd lagt till för anvĂ€ndardefinierade utökade attribut (user xattrs), direkt I/O och kvoter knutna till anvĂ€ndare och grupper. Offseten för kataloger har stabiliserats, vilket löste problem med att exportera tmpfs via NFS.
    • I API:t för montering har en flagga FSCONFIG_CMD_CREATE_EXCL lagts till för att öka sĂ€kerheten, vilket förbjuder delad anvĂ€ndning av superblocket pĂ„ flera monteringspunkter (det förbjuder att koppla ett parti till flera monteringspunkter). I verktyget mount har en möjlighet att inkludera denna flagga föreslagits med alternativet "—exclusive".
    • I VFS-underkategorin har stöd för omedelbar Ă€ndring av atime- och mtime-parametrar lagts till. Tidigare Ă„terspeglades tidsinformation med viss fördröjning, vilket gjorde det svĂ„rt att spĂ„ra aktualiteten i data i cache i system som liknar NFS (pĂ„ grund av fördröjningen i att upptĂ€cka Ă€ndringar i filen kunde systemet felaktigt tro att data i cachen var aktuella). Den nya funktionen Ă€r tillgĂ€nglig för Btrfs, Ext4, tmpfs och XFS.
    • I Btrfs har den inbyggda mekanismen för integritetskontroll, som aktiveras vid kompilering med parametern BTRFS_FS_CHECK_INTEGRITY, förklarats som förĂ„ldrad. Denna mekanism har inte lĂ€ngre underhĂ„llits, testas inte lĂ€ngre och skapar en extra belastning pĂ„ CPU och minne. Dessutom har prestandan i den nya kontrollkoden för filsystemet (scrub) i Btrfs optimerats.
    • I filsystemet Ext4 har det lagts till periodiska kontroller för att uppdatera superblocket och operationer för minnesallokering har pĂ„skyndats vid appendering till slutet av filen.
    • I FUSE-subsystemet har stöd för attributet btime ("födelsetid") lagts till, vilket definierar tidpunkten för skapandet av inoden.
    • Ändring av Ă„tkomstrĂ€ttigheter för symboliska lĂ€nkar Ă€r förbjudet.
    • Det har lagts till ett systemanrop fchmodat2(), som skiljer sig frĂ„n systemanropet fchmodat() genom att ha en extra parameter för att ange flaggor. Av flaggorna stöds för nĂ€rvarande endast AT_SYMLINK_NOFOLLOW och AT_EMPTY_PATH, vilket gör det möjligt att implementera ett förbud mot avlĂ€nkning av symboliska lĂ€nkar och att anvĂ€nda filbeskrivaren vid angivande av en tom sökvĂ€g utan omvĂ€gar i libc-funktionen fchmodat().
    • I EROFS-filsystemet (Extendable Read-Only File System), som Ă€r avsett för anvĂ€ndning pĂ„ partitioner som Ă€r tillgĂ€ngliga i skrivskyddat lĂ€ge, har stöd för komprimeringsalgoritmen Deflate lagts till. För att pĂ„skynda sökningen av utökade attribut har en sannolikhetsstruktur i form av bloom filter implementerats.
    • En instĂ€llning CONFIG_BUFFER_HEAD har lagts till, vilket möjliggör uppbyggnad av kĂ€rnan utan att anvĂ€nda strukturen buffer_head. Vid uppbyggnad utan buffer_head kan blockenheter och vissa filsystem anvĂ€ndas, exempelvis xfs, btrfs, cramfs, erofs och squashfs.
    • I blockenhetsdrivaren ublk, som gör det möjligt att flytta specifik logik till anvĂ€ndarprocessens utrymme, har stöd för zonerade lagringsenheter lagts till (uppdelning i zoner av blockgrupper eller sektorer, dĂ€r endast sekventiell tillĂ€gg av data Ă€r tillĂ„ten med uppdatering av hela blockgruppens innehĂ„ll).
    • Genomförandet av filsystemet ReiserFS har flyttats frĂ„n kategorin stödda till att betraktas som förĂ„ldrad (Obsolete). Stödet för ReiserFS planeras att upphöra Ă„r 2025. Orsaken till att ReiserFS har klassificerats som förĂ„ldrat anges vara stagnation i underhĂ„llet av detta filsystem, olösta problem relaterade till Ă„r 2038, brist pĂ„ möjligheter att sĂ€kerstĂ€lla redundans och önskan att minska arbetskostnaderna för underhĂ„llet av allmĂ€nna Ă€ndringar för filsystem relaterade till det nya API:t för montering, iomap och folios.
    • I NFS-servern har en mekanism för delegering av skrivoperationer för NFSv4 implementerats, vilket ökar effektiviteten i cachningen av skrivfiler för att minska trafik. Stöd för operationen READ_PLUS, definierad i NFS 4.2, har lagts till.
    • Stödet för fscrypt har lagts till i Ceph-filsystemet.
  • Virtualisering och sĂ€kerhet
    • En implementation av mekanismen Shadow Stack har lagts till, som blockerar mĂ„nga exploiter genom att anvĂ€nda Intel-processorns hĂ„rdvarufunktioner för att skydda mot överskrivning av returadressen frĂ„n en funktion vid bufferöverflöd i stacken. Skyddets kĂ€rna Ă€r att efter att kontrollen har överförts till en funktion, sparas returadressen av processorn inte bara i den vanliga stacken, utan Ă€ven i en separat "skuggstack" som inte kan Ă€ndras direkt. Innan man lĂ€mnar funktionen extraheras returadressen frĂ„n skuggstacken och jĂ€mförs med returadressen frĂ„n den vanliga stacken. En mismatch mellan adresser resulterar i en undantagsgenerering som blockerar situationer dĂ€r en exploit har lyckats överskriva adressen i den vanliga stacken. HĂ„rdvaruskuggstacken stöds endast i 64-bitar-versioner, medan det i 32-bitar-versioner anvĂ€nds mjukvaru-emulering.
    • Stödet för Clang-kompilatorns sammansĂ€ttning med aktiverat CFI (Control Flow Integrity) skydd har lagts till, vilket blockerar avvikelser frĂ„n den normala exekveringsordningen (control flow) som ett resultat av exploiter som Ă€ndrar de funktioner som lagras i minnet.
    • För RISC-V-arkitekturen har randomisering av kĂ€rnans minnesplacering vid start lagts till.
    • En flagga SECCOMP_USER_NOTIF_FD_SYNC_WAKE_UP har lagts till i systemanropet seccomp(), vilket möjliggör bearbetning av hĂ€ndelser frĂ„n övervakade processer i synkront lĂ€ge för en mer effektiv arbetsplanering.
    • Funktionen kmalloc() har fĂ„tt randomisering av slab-cache, vilket gör det svĂ„rare att utnyttja sĂ„rbarheter i kĂ€rnan.
    • I alternativen kopplade till aktiveringen av SELinux tvingande Ă„tkomstkontroll har nĂ€mningen av det amerikanska sĂ€kerhetsdepartementet tagits bort. Eftersom projektet har utvecklats under 20 Ă„r under samhĂ€llets vingar och stöds av oberoende underhĂ„llare har man beslutat att övergĂ„ till att anvĂ€nda namnet "SELinux" istĂ€llet för "NSA SELinux" i kommentarer och dokumentation i Kconfig (till exempel har förklaringen till kompilationsparametern SECURITY_SELINUX Ă€ndrats frĂ„n "NSA SELinux Support" till "SELinux Support").
    • En operation UFFDIO_POISON har lagts till i systemanropet userfaultfd(), vilket gör det möjligt att markera minnessidor som "förgiftade" (poisoned), vilket kan anvĂ€ndas för att flytta skadade minnessidor vid migration virtuella maskiner frĂ„n ett system till ett annat.
    • Ett nytt teckenbaserat grĂ€nssnitt har lagts till i VFIO-systemet (/dev/vfio/devices/vfioX) för att hantera VFIO-enheter, vilket möjliggör för anvĂ€ndaren att direkt öppna en fil med enheten utan att behöva anvĂ€nda det förĂ„ldrade gruppgrĂ€nssnittet /dev/vfio/$groupID.
    • I servern Stödet för förĂ„ldrade Kerberos-krypteringstyper som anvĂ€nder algoritmerna DES och 3DES har upphört i NFS.
    • Vid körning i Hyper-V-hypervisorns miljö har stödet för gĂ€stsystem lagts till, vilket skyddas av AMD SEV-SNP (Secure Nested Paging) och Intel TDX (Trusted Domain Extensions).
    • Vid kompilering av kĂ€rnan i lĂ€get "W=1" har standardkompilatorn aktiverat varningarna "-Wformat-overflow", "-Wformat-truncation", "-Wstringop-overflow" och "-Wrestrict". För alla byggen har varningen "-Wenum-conversion" aktiverats.
  • NĂ€tverkssystemet
    • Implementeringen av adressfamiljen AF_XDP (eXpress Data Path) har utvidgats med möjlighet att arbeta med paket som lagras i flera buffertar (till exempel kan en buffert innehĂ„lla paketets header och en annan data, eller i en kedja av flera buffertar kan stora jumbo- Ethernet-ramar placeras). Program som anvĂ€nder AF_XDP-sockets kan nu ta emot och överföra paket direkt frĂ„n flera buffertar.
    • BPF-systemet har fĂ„tt stöd för defragmentering av IPv4- och IPv6-paket samt möjlighet att filtrera fragmenterade paket.
    • En ny hanterare, update_socket_protocol, har lagts till i BPF, vilket gör att BPF-program kan Ă€ndra den begĂ€rda protokollen för nya sockets. Till exempel kan ett BPF-program transparens byta protokollet TCP mot MPTCP (multipath TCP) för att optimera applikationens trafik. BPF har ocksĂ„ fĂ„tt stöd för att hantera paketrouting genom olika strömmar i MPTCP.
    • Den experimentella beteckningen för modulen ksmbd, som erbjuder en kĂ€rnnivĂ„implementation av en filserver baserad pĂ„ SMB3-protokollet, har tagits bort. Stöd för sammanslagning av lĂ€soperationer ("read compound"-förfrĂ„gningar) har lagts till.
  • Utrustning
    • Ändringar har gjorts i DRM-systemet (Direct Rendering Manager) för att möjliggöra effektiv drift av den öppna NVK-drivaren med implementeringen av grafik-API:et Vulkan för NVIDIA-grafikkort. Ursprungligen var DRM-drivrutinen Nouveau utformad för att stödja OpenGL, sĂ„ den saknar primitiva element som krĂ€vs för effektiv drift av Vulkan-drivrutiner, till exempel stöd för synkroniserade objekt och hantering av virtuellt adressutrymme.
    • I AMDGPU-drivrutinen har stöd för SDMA 6.1.0, HDP 6.1, SMUIO 14.0, PSP 14.0, IH 6.1 och GFX 9.4.3 implementerats. Koden för att ladda PSP-firmware (Platform Security Processor) har omarbetats. Stödet för den adaptiva synkroniseringstekniken FreeSync har utvidgats (stöd för Freesync Panel Replay V2 har lagts till).
    • I i915-drivrutinen fortsĂ€tter implementeringen av stöd för Intel Meteor Lake-chips. Stödet för HDCP-teknik (High-bandwidth Digital Content Protection) har förbĂ€ttrats. Koden för interaktion med displayen har omarbetats.
    • Alternativen för att inaktivera mikroprogramsladdningsfunktioner under byggfasen — MICROCODE_INTEL och MICROCODE_AMD har tagits bort frĂ„n Kconfig. KĂ€rnan byggs nu alltid med mikroprogramsladdningskoden för x86-system, men den faktiska laddningen av mikroprogrammet kan inaktiveras genom att ange kĂ€rnparametern ‘dis_ucode_ldr’.
    • Den ljudsystemet har fĂ„tt möjlighet att styra ljudenheter anslutna via IIO (Industrial I/O) subsystemet.
    • Stöd har lagts till för ljudgrĂ€nssnitten Intel LunarLake, Intel ArrowLake och AMD ACP5x, codec Cirrus Logic CS42L43, Realtek RT1017 och TI TAS2781, samt förstĂ€rkare Cirrus Logic CS35L56 och winic aw88261. Stöd för ASoC AMD Van Gogh har lagts till.
    • En USB MIDI 2.0 Gadget-drivrutin har lagts till, som emulerar USB MIDI 2.0-grĂ€nssnittet kopplat till ALSA UMP rawmidi-enheten.
    • Stöd har lagts till för Ethernet-kontroller Broadcom ASP 2.0 och Marvell 88Q2XXX.
    • Stöd har lagts till för Visionox R66451, TDO TL050HDV35, KD070FHFID015, Inanbo T28CP45TN89 och EDT ET028013DMA-paneler, displaykontroller för Loongson och pekskĂ€rmskontroller för Azoteq IQS7222D/IQS7210A/7211A.
    • Stöd har lagts till för ARM SoC Qualcomm SM4450 (Snapdragon 4 Gen 2), TI AM62P5, Intel Agilex5, Qualcomm ipq5018, AN400 (Amlogic T7).
    • Stöd har lagts till för ARM-plattformar som Samsung Galaxy Tab 3 8.0, FriendlyElec NanoPC T6, Amlogic A311D2, Khadas Vim4, Xiaomi SM7125, Facebook Yosemite 4, Orange Pi Zero 3, Radxa ROCK 4SE.

Samtidigt har den latinamerikanska Free Software Foundation utvecklat en helt fri kĂ€rnvariant 6.6 — Linux-libre 6.6-gnu, som Ă€r rensad frĂ„n firmware och drivrutiner som innehĂ„ller icke-fria komponenter eller kodavsnitt vars anvĂ€ndning Ă€r begrĂ€nsad av tillverkaren. I version 6.6 har koden för att rensa blobbar uppdaterats i olika drivrutiner och subsystem, exempelvis i TI gigabit RU ethernet-drivrutiner, MediaTek 792x wifi, Cirrus Logic cs42l43 mfd, cs35l56 HD-ljud och aw88261 SoC. Blob-namn har rensats i dts-filer för Aarch64-arkitekturen. Blobbar har tagits bort i nya ivpu-drivrutiner, bluetooth-drivrutiner, pekskĂ€rm-drivrutiner och i Qualcomm Venus V4L2 kodare/decoder.

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