Udgivelsen af Linux-kernen 6.6

Efter to måneders udvikling præsenterede Linus Torvalds udgivelsen af Linux-kernen 6.6. Blandt de mest bemærkelsesværdige ændringer er: en ny opgaveplanlægger EEVDF; en mekanisme til skygge-stak for beskyttelse mod udnyttelse; understøttelse af fs-verity i OverlayFS; implementering af kvoter og xattr i tmpfs; forberedelse af online fsck i XFS; styrket overvågning af eksport af symboler „GPL-only“; understøttelse af netværkssokler i io_uring; randomisering af hukommelse i kmalloc(); ReiserFS erklæret forældet; primitive tilføjelser til Vulkan-driveren NVK i Nouveau.

Den nye version indeholder 15.291 rettelser fra 2.058 udviklere, patchstørrelsen er 39 MB (ændringerne berørte 14.844 filer, 553.359 nye kodelinjer tilføjet, 284.012 linjer fjernet). I den forrige udgivelse var der 14.674 rettelser fra 2.016 udviklere, patchstørrelsen var 78 MB. Cirka 44% af alle ændringerne i 6.6 vedrører enhedsdrivere, ca. 17% af ændringerne relaterer sig til opdatering af hardware-specifik kode, 11% er knyttet til netværksstakken, 4% til filsystemer og 3% til interne delsystemer i kernen.

De vigtigste nyheder i kernen 6.6:

  • Hukommelse og systemtjenester
    • Implementeret en ny opgaveplanlægger EEVDF (Earliest Eligible Virtual Deadline First), som erstatte CFS (Completely Fair Scheduler), der har været leveret siden kernen 2.6.23. Den nye planlægger tager hensyn til processer, der har fået for lidt CPU-ressourcer eller har fået uforholdsmæssigt meget CPU-tid, når den vælger den næste proces til udførelse. I det første tilfælde tvinges overførslen til processen, mens den i det andet tilfælde udsættes. Den gamle CFS-planlægger brugte heuristik og finindstillinger for at identificere processer, der krævede særlig opmærksomhed, mens den nye planlægger mere direkte overvåger dem og ikke kræver finjustering. Det forventes, at EEVDF vil reducere forsinkelser ved udførelse af opgaver, som CFS havde planlægningsproblemer med.
    • Der er foretaget ændringer i behandlingen af interne symboler i kategorien «GPL-only» for at gøre det sværere for proprietære GPL-lag at omgå adgangsrestriktioner til kerne-subsystemer, som kun tillader kode under GPL-licensen. I funktionen symbol_get() er søgning efter symboler markeret som GPL-only for proprietære moduler forbudt, og omvendt vil GPL-moduler ikke kunne finde symboler eksporteret af proprietære moduler.
    • Der er tilføjet yderligere indstillinger for arbejds-køer (unbound workqueue) for at forbedre effektiviteten af genbrug af CPU-cache på store systemer med flere tredje niveau (L3) cache. Kernepakken inkluderer også værktøjet tools/workqueue/wq_dump.py til at verificere den nuværende konfiguration af arbejds-køer.
    • Io_uring subsystemet har fået indledende support til operationer og kommandoer specifikke for netværkssokler. Sysctl io_uring_disabled er blevet tilføjet for at deaktivere io_uring på hele systemniveau. I io_uring er der også opnået betydelige hastighedsforbedringer i direkte input/output (Direct I/O) i asynkront mode. Gennemstrømningen er steget, og forsinkelsen ved udførelse af input/output operationer efter ændringerne er blevet reduceret med 37%.
    • Der er implementeret en JIT-kompilator til BPF for PA-RISC arkitekturen.
    • Indstillingen /sys/devices/system/cpu/smt/control har fået tilføjet støtte til numeriske parametre, der definerer antallet af tråde tilgængelige for hver CPU-kerne (tidligere blev der kun understøttet værdierne «on» og «off» til at tænde og slukke for symmetrisk multithreading støtte). Denne nye funktion kan anvendes på nogle PowerPC processorer, der understøtter hotplug-mode for symmetrisk multithreading («hotplug SMT»), til selektivt at tænde SMT på bestemte kerner mens systemet kører.
    • Overførslen af ændringer fra Rust-for-Linux-grenen fortsætter, relateret til brugen af Rust som det andet sprog til udvikling af drivere og kerne-moduler (Rust-support er ikke aktiveret som standard og medfører ikke, at Rust bliver en obligatorisk byggeafhængighed for kernen). Der er sket et skifte til brugen af Rust 1.71.1 og bindgen 0.65.1. Traiten ‘Zeroable’ er blevet implementeret. Procedurale makroer ‘paste!’ og ‘#[derive(Zeroable)]’ er blevet tilføjet. Der er sikret kompatibilitet med ‘#[pin_data]’. Initieringsfunktionerne ‘{,pin_}init_array_from_fn()’ og metoden ‘{,pin_}chain’ er blevet tilføjet. Mulighederne i ‘types’-modulet er blevet udvidet. I enhedstestframeworket kunit er der tilføjet mulighed for at køre tests fra Rust-dokumentationen.
    • Subsystemet ‘eventfs’ er blevet tilføjet, hvilket betydeligt reducerer hukommelsesforbruget i sporingssystemet ved at fjerne unødvendige strukturer, der anvendes til at repræsentere sporingspunkter i filsystemet. Tidligere blev sådanne strukturer oprettet for alle sporingspunkter, uanset om de blev anvendt til sporing. Med eventfs kan disse strukturer oprettes dynamisk, kun når de er nødvendige.
    • Mulighederne i værktøjet perf er blevet udvidet.
    • Der er tilføjet information til diagnosticering af effektiviteten af mekanismen til sammensmeltning af identiske hukommelsessider (KSM, Kernel Samepage Merging) i filen /proc/pid/smaps.
    • API'en Frontswap, som gjorde det muligt at placere en swap-partition i hukommelse, der ikke kan adresseres direkte og som ikke giver operationelle informationer om tilgængelig plads, er blevet fjernet. Denne API blev kun brugt i zswap, så det er besluttet direkte at bruge denne funktionalitet i zswap, og dermed fjerne unødvendige lag.
    • For RISC-V-arkitekturen er der tilføjet understøttelse af adgang til performance-tællere fra brugerrum og muligheden for at placere en kernel-dump efter en fejl uden for området på 4GB.
    • Der er tilføjet indledende støtte til ARM SME-instruktioner (Scalable Matrix Extension).
    • Muligheden for at bruge KDB, KGDB, kcov, KFENCE og KASAN debugger-værktøjer på systemer med LoongArch-arkitektur er blevet implementeret.
    • Der er tilføjet understøttelse til kernetestfiler i GitLab's kontinuerlige integrationssystem, som anvendes ved udviklingen af grafiske drivere.
  • DiskSubsystem, input/output og filsystemer
    • OverlayFS-filsystemen har fået tilføjet støtte til at gemme fs-verity hashes i den udvidede attribut overlay.verity, som kan bruges til at kontrollere integriteten og ægtheden af filer i de nederste lag af OverlayFS med kryptografiske hashes og nøgler. Dermed er alle ændringer, der er nødvendige for Composefs-projektet til at fungere som en overbygning på OverlayFS og EROFS, nu inkluderet i OverlayFS.
    • XFS-filsystemet er forberedt til at implementere muligheden for at anvende værktøjet fsck til at kontrollere og rette opdagede problemer i online-tilstand uden at montere filsystemet. Desuden er det muligt at bruge store folios i sidecachen i XFS, samt nogle tilknyttede optimeringer er blevet tilføjet, som har markant forbedret ydeevnen for visse typer belastninger.
    • tmpfs-filsystemet har fået tilføjet støtte til brugerdefinerede udvidede attributter (user xattrs), direkte input/output og kvoter, der er knyttet til bruger og gruppe. Offset på mapper er stabiliseret, hvilket har løst problemer med eksport af tmpfs via NFS.
    • I API'en til monteringsstyring er der tilføjet en flag FSCONFIG_CMD_CREATE_EXCL for at øge sikkerheden, hvilket forhindrer deling af superblokken på flere monteringspunkter (forhindrer tilknytning af en partition til flere monteringspunkter). Der er foreslået en mulighed "—exclusive" i mount-værktøjet for at aktivere dette flag.
    • I VFS-subsystemet er der tilføjet støtte til dynamisk at ændre adgangs- og ændringstider (atime, mtime). Tidligere blev oplysninger om tiden reflekteret med en vis forsinkelse, hvilket forhindrede sporing af dataintegritet i cache-systemer som NFS (på grund af forsinkelsen i at bestemme ændringer i filen kunne systemet fejlagtigt antage, at dataene i cachen var aktuelle). Den nye funktion er tilgængelig for Btrfs, Ext4, tmpfs og XFS.
    • I Btrfs er den indbyggede integritetskontrolmekanisme, der aktiveres under kompilering via parameteren BTRFS_FS_CHECK_INTEGRITY, blevet deprecieret. Den nævnte mekanisme er ikke længere understøttet, testes ikke længere og skaber en ekstra belastning på CPU og hukommelse. Desuden er ydeevnen af den nye kontrolkode for filsystemet (scrub) blevet optimeret i Btrfs.
    • I filsystemet Ext4 er der tilføjet periodiske kontroller for opdatering af superblocken og hastigheden ved hukommelsesallokering er forbedret ved omskrivning til filens slutning.
    • FUSE-subsystemet har fået tilføjet understøttelse af attributten btime ('fødselsdato'), der definerer tidspunktet for oprettelse af inoden.
    • Ændring af adgangsrettigheder for symboliske links er forbudt.
    • Systemopkaldet fchmodat2() er blevet tilføjet, som adskiller sig fra systemopkaldet fchmodat() ved at have en ekstra parameter til angivelse af flag. Af flagene understøttes der i øjeblikket kun AT_SYMLINK_NOFOLLOW og AT_EMPTY_PATH, som muliggør implementering i libc-funktionen fchmodat() uden at følge symboliske links og brug af filbeskriver ved angivelse af en tom sti.
    • I EROFS-filsystemet (Extendable Read-Only File System), der er designet til brug på partitioner, der kun er tilgængelige i skrivebeskyttet tilstand, er der tilføjet understøttelse af Deflate-kompressionsalgoritmen. For at fremskynde søgningen efter udvidede attributter anvendes en probabilistisk struktur kaldet bloom filter.
    • Konfigurationen CONFIG_BUFFER_HEAD er blevet tilføjet, som muliggør samling af kernen uden brug af buffer_head-strukturen. Ved at bygge uden buffer_head kan du bruge bloklagringsenheder og nogle filsystemer som xfs, btrfs, cramfs, erofs og squashfs.
    • I blokenhedsdrevet ublk, som gør det muligt at flytte specifik logik til brugerens rum, er der tilføjet understøttelse af zonerede lagringsenheder (opdeling i zoner af blok- eller sektorgupper, hvor der kun er tilladt sekventiel tilføjelse af data med opdatering af hele gruppen af blokke).
    • Implementeringen af ReiserFS-filsystemet er blevet flyttet fra kategorien 'understøttet' til 'forældet'. Stop for støtte til ReiserFS er planlagt til 2025. Årsagen til overgangen til forældet status nævnes som stagnation i vedligeholdelsen af dette filsystem, uopklaret 2038-problem, mangel på muligheder for fejltolerance og et ønske om at reducere arbejdsbyrden ved vedligeholdelse af generelle ændringer, der gælder for filsystemer, relateret til understøttelsen af det nye API til montering, iomap og folios.
    • NFS-serveren har implementeret en mekanisme til delegation af skriveoperationer for NFSv4, der øger effektiviteten af caching af skrivefiler for at reducere trafikken. Understøttelsen af operationen READ_PLUS, defineret i NFS 4.2, er blevet inkluderet.
    • Filsystemet Ceph har fået støtte til fscrypt.
  • Virtualisering og sikkerhed
    • Der er tilføjet en implementering af mekanismen Shadow Stack, der blokerer mange exploits ved at udnytte Intel-processorers hardwaremuligheder til at beskytte mod overskrivning af returadressen fra funktionen ved stak-overløb. Beskyttelsen går ud på, at efter overførslen af kontrol til funktionen, gemmes returadressen ikke kun i den almindelige stak, men også i en separat 'skygge'-stak, som ikke kan ændres direkte. Før udgangen fra funktionen trækkes returadressen fra den skygge stak og sammenlignes med returadressen fra den primære stak. En uoverensstemmelse mellem adresserne fører til generering af en undtagelse, som blokerer situationer, hvor et exploit er lykkedes med at overskrive adressen i den primære stak. Den hardwarebaserede skygge stak understøttes kun i 64-bit versioner, mens 32-bit versioner anvender software-emulering.
    • Der er tilføjet støtte til kompilering med Clang med aktiveret CFI (Control Flow Integrity) beskyttelsesmode, der blokerer krænkelser af den normale rækkefølge af udførelse (control flow) som følge af exploits, der ændrer gemte funktionspegepinde i hukommelsen.
    • For RISC-V arkitekturen er randomisering af kerneplacering i hukommelsen ved opstart blevet inkluderet.
    • Der er tilføjet en flag SECCOMP_USER_NOTIF_FD_SYNC_WAKE_UP til systemopkaldet seccomp(), som muliggør behandling af begivenheder fra overvågede processer i synkron tilstand for mere effektiv opgaveplanlægning.
    • Funktionen kmalloc() har fået randomisering af slab-cache, hvilket gør det sværere at udnytte sårbarheder i kernen.
    • I forbindelse med aktivering af SELinux tvingende kontrolsystem er omtalen af Det Nationale Sikkerhedsagentur i USA fjernet. Da projektet allerede har udviklet sig i 20 år under fællesskabet og ledsages af uafhængige vedligeholdere, er det besluttet at skifte til brugen af navnet 'SELinux' i stedet for 'NSA SELinux' i kommentarer og dokumentation i Kconfig (for eksempel er forklaringen til konfigurationen SECURITY_SELINUX ændret fra 'NSA SELinux Support' til 'SELinux Support').
    • Til systemopkaldet userfaultfd() er operationen UFFDIO_POISON tilføjet, som muliggør mærkning af hukommelsessider som 'forgiftede', hvilket kan bruges til at flytte beskadigede hukommelsessider ved migration virtual machines fra et system til et andet.
    • Den nye symbolske grænseflade (/dev/vfio/devices/vfioX) er blevet tilføjet til VFIO-subsystemet for at administrere VFIO-enheder, hvilket gør det muligt for brugeren direkte at åbne filen med enheden uden at skulle gå gennem det forældede gruppeinterface /dev/vfio/$groupID.
    • I serveren NFS har afsluttet support for forældede Kerberos-krypteringstyper, der bruger DES- og 3DES-algoritmer.
    • Der er tilføjet support til gæstesystemer, der er beskyttet med AMD SEV-SNP (Secure Nested Paging) og Intel TDX (Trusted Domain Extensions), når der køres i hypervisor-miljøet Hyper-V.
    • Når kernen bygget i 'W=1'-tilstand, er advarslerne '-Wformat-overflow', '-Wformat-truncation', '-Wstringop-overflow' og '-Wrestrict' aktiveret som standard i compileren. For alle builds er advarslen '-Wenum-conversion' aktiveret.
  • Netværkssubsystem
    • Implementeringen af AF_XDP (eXpress Data Path) adressefamilien er udvidet med muligheden for at arbejde med pakker, der er gemt i flere buffere (f.eks. kan én buffer indeholde pakkens header, mens dataene ligger i en anden, eller i en kæde af flere buffere kan der placeres store jumbo-Ethernet-rammer). Programmer, der bruger AF_XDP-sokler, kan nu modtage og transmittere pakker direkte fra flere buffere.
    • Der er tilføjet support til defragmentering af IPv4- og IPv6-pakker i BPF-subsystemet samt muligheden for at filtrere fragmenterede pakker.
    • En ny handler update_socket_protocol er blevet tilføjet til BPF, hvilket gør det muligt for BPF-programmer at ændre den ønskede protokol for nye sokler. For eksempel kan et BPF-program gennemsigtigt erstatte TCP-protokollen med MPTCP (multipath TCP) for at optimere applikationens trafik. BPF har også fået support til at styre pakkeruteringsstrømme gennem forskellige strømme i MPTCP.
    • Den eksperimentelle udviklingsstatus er fjernet fra ksmbd-modulet, der tilbyder en kernebaseret implementation af en filserver baseret på SMB3-protokollen. Support til sammensmeltning af læseoperationer (read compound requests) er blevet tilføjet.
  • Udstyr
    • Der er foretaget ændringer i DRM-subsystemet (Direct Rendering Manager), som er nødvendige for effektivt at arbejde med den åbne NVK-driver til Vulkan-grafik-API'en for NVIDIA-grafikkort. Den oprindelige DRM-driver Nouveau var designet til OpenGL-implementeringen, så den mangler primitive som synkroniserede objekter og styring af det virtuelle adresserum, som er nødvendige for effektiv drift af Vulkan-drivere.
    • I AMDGPU-driveren er der implementeret support for SDMA 6.1.0, HDP 6.1, SMUIO 14.0, PSP 14.0, IH 6.1 og GFX 9.4.3. Koden til indlæsning af PSP-firmware (Platform Security Processor) er blevet omarbejdet. Støtten til teknologien for adaptiv synkronisering FreeSync er blevet udvidet (støtte for Freesync Panel Replay V2 er tilføjet).
    • I i915-driveren fortsættes implementeringen af support for Intel Meteor Lake-chips. Støtten til HDCP-teknologien (High-bandwidth Digital Content Protection) er forbedret. Koden til interaktion med skærmen er blevet omarbejdet.
    • Mulighederne for at deaktivere indlæsning af mikrocode under byggefase - MICROCODE_INTEL og MICROCODE_AMD - er fjernet fra Kconfig. Kernen bygges nu altid med kode til indlæsning af mikrocode til x86-systemer, men den faktiske indlæsning af mikrocode kan deaktiveres ved at angive kernelparameteren 'dis_ucode_ldr'.
    • Der er tilføjet mulighed for at styre lydudstyr tilsluttet via IIO (Industrial I/O) i lydsystemet.
    • Støtten til lydinterfaces Intel LunarLake, Intel ArrowLake og AMD ACP5x, codec Cirrus Logic CS42L43, Realtek RT1017 og TI TAS2781 er tilføjet, samt forstærkere Cirrus Logic CS35L56 og winic aw88261. Støtten til ASoC AMD Van Gogh er også tilføjet.
    • USB MIDI 2.0 Gadget-driveren er tilføjet, som emulerer USB MIDI 2.0-interface bundet til ALSA UMP rawmidi-enheden.
    • Støtten til Ethernet-controllere Broadcom ASP 2.0 og Marvell 88Q2XXX er blevet tilføjet.
    • Støtten til Visionox R66451, TDO TL050HDV35, KD070FHFID015, Inanbo T28CP45TN89 og EDT ET028013DMA paneler, samt display controllere fra Loongson og touch screen controllere fra Azoteq IQS7222D/IQS7210A/7211A er tilføjet.
    • Støtten til ARM SoC Qualcomm SM4450 (Snapdragon 4 Gen 2), TI AM62P5, Intel Agilex5, Qualcomm ipq5018, AN400 (Amlogic T7) er blevet tilføjet.
    • Støtten til ARM-platforme 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 er blevet tilføjet.

Samtidig har den latinamerikanske Free Software Foundation dannet en variant af det helt frie kernel 6.6 - Linux-libre 6.6-gnu, renset for firmware- og driverkomponenter, der indeholder ikke-frie komponenter eller kodestykker, hvis anvendelse er begrænset af producenten. I version 6.6 er koden til rensning af blobs i forskellige drivere og subsystemer blevet opdateret, f.eks. i drivere til TI gigabit RU ethernet, MediaTek 792x wifi, Cirrus Logic cs42l43 mfd, cs35l56 HD-audio og aw88261 SoC. Rensning af blob-navne i dts-filerne til Aarch64-arkitekturen er foretaget. Blobs er blevet fjernet i de nye ivpu-drivere, i bluetooth-drivere, i driveren til touchskærme og i coder/decoder Qualcomm Venus V4L2.

Kilde: opennet.ru

Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere 🔥 Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere | ProHoster