Utgivelse av Linux-kjernen 6.6

Etter to måneder med utvikling har Linus Torvalds presentert utgivelsen av Linux-kjernene 6.6. Blant de mest merkbare endringene er: den nye oppgaveplanleggeren EEVDF; mekanismen for skyggestakken for beskyttelse mot utnyttelser; støtte for fs-verity i OverlayFS; implementering av kvoter og xattr i tmpfs; klargjøring av online fsck i XFS; forbedret sporing av eksport av symboler «GPL-only»; støtte for nettverkssokler i io_uring; randomisering av minne i kmalloc(); ReiserFS er erklært foreldet; primitive for Vulkan-driveren NVK er lagt til i Nouveau.

Den nye versjonen inkluderer 15 291 feilrettinger fra 2 058 utviklere, patchens størrelse er 39 MB (endringer har berørt 14 844 filer, 553 359 linjer med kode er lagt til, 284 012 linjer er fjernet). I forrige utgave var det 14 674 feilrettinger fra 2 016 utviklere, patchens størrelse var 78 MB. Omtrent 44 % av alle endringene i 6.6 er relatert til enhetsdrivere, omtrent 17 % av endringene gjelder oppdateringer av kode spesifikk for maskinarkitekturer, 11 % er relatert til nettverksstakken, 4 % til filsystemer, og 3 % til interne kjernerunder.

Hovednyhetene i kjernen 6.6:

  • Minne og systemtjenester
    • En ny oppgaveplanlegger EEVDF (Earliest Eligible Virtual Deadline First) er implementert, som tar over for CFS (Completely Fair Scheduler), som har blitt levert siden kjerne 2.6.23. Den nye planleggeren tar hensyn til prosesser som har fått for lite prosessorressurser eller fått for mye prosessortid ved valg av neste prosess for utførelse. I det første tilfellet tvinges overføringen av kontroll til prosessen, mens den i det andre tilfellet, derimot, utsettes. Den gamle planleggeren CFS brukte heuristikk og fininnstillinger for å identifisere prosesser som krevde særskilt oppmerksomhet, mens den nye planleggeren sporer dem mer eksplisitt og krever ingen fininnstilling. EEVDF forventes å redusere forsinkelser ved utføring av oppgaver, noe som var et problem med planleggingen i CFS.
    • Endringene i behandlingen av interne symboler i kategorien «GPL-only» har som mål å gjøre det vanskeligere for proprietære moduler å bruke GPL-lag for å omgå tilganger til kjerneressurser, som bare tillater kode lisensiert under GPL. I funksjonen symbol_get() er det forbudt for proprietære moduler å søke etter symboler merket som GPL-only, og omvendt vil GPL-moduler ikke kunne finne symboler eksportert av proprietære moduler.
    • Ytterligere innstillinger for arbeidskøer (unbound workqueue) er lagt til for å forbedre effektiviteten av gjenbruk av prosessorcache i store systemer med flere L3-cacher. Kjernepakken inkluderer også verktøyet tools/workqueue/wq_dump.py for å sjekke den nåværende konfigurasjonen av arbeidskøer.
    • Det er lagt til initial støtte for operasjoner og kommandoer spesifik for nettverks-sokler i io_uring-subsystemet. En sysctl io_uring_disabled er lagt til for å deaktivere io_uring på systemnivå. I io_uring er direkte inn-/utdata (Direct I/O) også betydelig akselerert i asynkron modus. Økningen i båndbredde og redusert latens ved utføring av inn-/utdataoperasjoner etter endringene er opptil 37%.
    • For PA-RISC-arkitekturen er det implementert en JIT-kompilator for BPF.
    • Støtte for numeriske parametre som definerer antall tråder tilgjengelig for hver CPU-kjerne er lagt til i innstillingen /sys/devices/system/cpu/smt/control (tidligere ble det kun støttet «on» og «off» for å aktivere og deaktivere symmetrisk flertråding). Den nye funksjonaliteten kan brukes på enkelte PowerPC-prosessorer som støtter varmplugging av symmetrisk flertråding («hotplug SMT») for selektiv aktivering av SMT på bestemte kjerner under drift.
    • Overføringen av endringer fra Rust-for-Linux-grenen fortsetter, relatert til bruken av Rust som et sekundært språk for utvikling av drivere og kjerne moduler (støtten for Rust er ikke aktivert som standard, og fører ikke til at Rust blir en obligatorisk byggeavhengighet for kjernen). Overgang til Rust-utgivelser 1.71.1 og bindgen 0.65.1 er gjennomført. Støttetype ‘Zeroable’ er implementert. Prosedyremakroene ‘paste!’ og ‘#[derive(Zeroable)]’ er lagt til. Kompatibilitet med ‘#[pin_data]’ er sikret. Initialiseringsfunksjoner ‘{,pin_}init_array_from_fn()’ og metoden ‘{,pin_}chain’ er lagt til. Mulighetene til modulen ‘types’ er utvidet. Kunit test rammeverket har fått muligheten til å kjøre tester fra Rust-dokumentasjonen.
    • Undersystemet «eventfs» er lagt til, som betydelig reduserer minneforbruket i sporingssystemet, ved å fjerne oppbevaring av unødvendige strukturer som brukes til å representere sporingspunkter i filsystemet. Tidligere ble slike strukturer opprettet for alle sporingspunkter, uavhengig av bruken av sporing. Med eventfs kan slike strukturer opprettes dynamisk, kun når de er nødvendige.
    • Mulighetene til perf-verktøyet er utvidet.
    • Diagnostisk informasjonskapasitet for effektiviteten av mekanismen for sammenslåing av identiske minnesider (KSM, Kernel Samepage Merging) er lagt til i filen /proc/pid/smaps.
    • Frontswap API, som tillater å plassere swap-partisjoner i minne som ikke kan adresseres direkte og som ikke gir sanntidsinformasjon om tilgjengelig plass, er fjernet. Dette API-et ble kun brukt i zswap, derfor har vi besluttet å bruke denne funksjonaliteten direkte i zswap, uten unødvendige mellomlag.
    • For RISC-V-arkitekturen er det lagt til støtte for tilgang til ytelsesmålere fra brukerrommet og muligheten til å plassere en kjerne dump etter et krasj i et område utenfor 4GB.
    • Innledende støtte for ARM SME-instruksjoner (Scalable Matrix Extension) er lagt til.
    • Muligheten til å bruke debug-verktøyene KDB, KGDB, kcov, KFENCE og KASAN på LoongArch-arkitektur-systemer er implementert.
    • Støtte for filer for testing av kjernen i GitLab kontinuerlig integrasjonssystem er lagt til, som brukes ved utvikling av grafiske drivere.
  • Disk subsystem, I/O og filsystemer
    • OverlayFS-filsystemen har fått støtte for å lagre fs-verity-hashverdier i den utvidede attributten (xattr) overlay.verity, som kan brukes for integritets- og autentisitetskontroll av filer i de underliggende lagene i OverlayFS ved hjelp av kryptografiske hashverdier og nøkler. Dermed er alle endringer som er nødvendige for Composefs-prosjektet inkludert i OverlayFS og jobber som en utvidelse over FS OverlayFS og EROFS.
    • XFS-filsystemet har blitt forberedt for implementering av verktøyet fsck for undersøkelse og korrigering av problemer i online-modus, uten å måtte demontere filsystemet. I tillegg har XFS fått muligheten for bruk av store faksimiler (folios) i sidecache og noen relaterte optimaliseringer som har betydelig økt ytelsen for visse typer belastninger.
    • Tmpfs-filsystemet har fått støtte for brukertilpassede utvidede attributter (user xattrs), direkte inn/utgående I/O, og kvoter knyttet til bruker og gruppe. Justeringene av katalogoffset har stabilisert systemet og løst eksportproblemer for tmpfs via NFS.
    • I API-et for monteringsadministrasjon er det lagt til en flagg FSCONFIG_CMD_CREATE_EXCL for å øke sikkerheten, som forhindrer deling av superblokken på flere monteringspunkter (forbyr festing av en partisjon til flere monteringspunkter). I mount-verktøyet er det foreslått et alternativ «—exclusive» for å aktivere dette flagget.
    • I VFS-subsystemet er det lagt til støtte for sanntidsjustering av tilgangstid og endringstid (atime, mtime). Tidligere ble tidsdata reflektert med en viss forsinkelse, noe som hindret sporing av datadekkende i cache på systemer som NFS (pga. forsinkelsen i å oppdage endringer i filen, kunne systemet feilaktig anta at dataene i cachen var aktuelle). Den nye muligheten er tilgjengelig for Btrfs, Ext4, tmpfs og XFS.
    • I Btrfs er den innebygde integritetskontrollen som ble aktivert under bygging med parameteren BTRFS_FS_CHECK_INTEGRITY blitt avviklet. Den spesifiserte mekanismen har ikke lenger støtte, blir ikke testet og skaper ekstra belastning på CPU og minne. I tillegg har ytelsen av den nye FS-kontrollkoden (scrub) blitt optimalisert i Btrfs.
    • I filsystemet Ext4 er der tilføjet periodiske checks af superblokkens opdatering, og hukommelsesallokeringen ved tilføjelse til filens slutning er blevet accelereret.
    • I FUSE-subsystemet er der tilføjet understøttelse af attributten btime ("birth time"), som definerer oprettelsestidspunktet for inode.
    • Ændring af adgangsrettigheder for symboliske links er forbudt.
    • Der er tilføjet et systemkald fchmodat2(), som adskiller sig fra systemkaldet fchmodat() med et ekstra argument til angivelse af flag. Af flagene understøttes indtil videre kun AT_SYMLINK_NOFOLLOW og AT_EMPTY_PATH, som muliggør at implementere forbud mod dereferering af symboliske links i libc-funktionen fchmodat() uden omveje samt muligheden for at bruge en fildescriptor, når der angives en tom sti.
    • I EROFS-filsystemet (Extendable Read-Only File System), der er beregnet til brug på partitioner, der kun kan tilgås i skrivebeskyttet tilstand, er der tilføjet understøttelse af Deflate-komprimeringsalgoritmen. For at fremskynde søgningen efter udvidede attributter er der anvendt en probabilistisk struktur, kaldet bloom filter.
    • Der er tilføjet konfigurationen CONFIG_BUFFER_HEAD, der gør det muligt at bygge kernen uden brug af strukturen buffer_head. Ved bygning uden buffer_head kan der anvendes bloklagringsenheder og nogle filsystemer, såsom xfs, btrfs, cramfs, erofs og squashfs.
    • I blokkens enhedsd driver ublk, som tillader at flytte specifik logik til brugerens rum, er der tilføjet understøttelse af zonede lagringsenheder (deling i zoner af grupper af blokke eller sektorer, hvor der kun tillades sekventiel tilføjelse af data med opdatering af hele blokgruppen).
    • Implementeringen af ReiserFS-filsystemet er blevet flyttet fra støttede til forældede (Obsolete). Støtten til ReiserFS planlægges at ophøre i 2025. Årsagen til, at ReiserFS er blevet kategoriseret som forældet, nævnes at være stagnation i vedligeholdelsen af dette filsystem, uløste problemstillinger omkring 2038, manglen på mulighed for at sikre fejlresistens og ønsket om at reducere arbejdskraften til vedligeholdelse af fælles ændringer for filsystemer relateret til understøttelse af ny API til montering, iomap og folios.
    • I NFS-serveren er der implementeret en mekanisme for delegation af skriveoperationer til NFSv4, hvilket øger effektiviteten af cachelagret skrivning af filer for at reducere trafikken. Understøttelse af operationen READ_PLUS, som er defineret i NFS 4.2, er blevet aktiveret.
    • Støtta for fscrypt er lagt til i Ceph filsystemet.
  • Virtualisering og sikkerhet
    • Implementasjonen av Shadow Stack-mekanismen er lagt til, som gjør det mulig å blokkere mange kjørbarhetsutnyttelser ved å bruke maskinvarefunksjoner fra Intel-prosessorer for å beskytte mot overskriving av returadressen fra funksjonen i tilfelle bufferoverløp på stakken. Beskyttelsen består i at etter overføring av kontroll til en funksjon, lagres returadressen ikke bare i den vanlige stakken, men også i en egen 'skygge'-stakk, som ikke kan endres direkte. Før man går ut av funksjonen, hentes returadressen fra skyggestakken og sammenlignes med returadressen fra hovedstakken. Uoverensstemmelse mellom adressene fører til generering av et unntak som blokkerer situasjoner der en utnyttelse har klart å overskrive adressen i hovedstakken. Den maskinvarerelaterte skyggestakken støttes kun i 64-biters versjoner, mens det i 32-biters versjoner brukes programvareemulering.
    • Støtte for Clang-kompilatoren med aktivert CFI (Control Flow Integrity) beskyttelsesmodus er lagt til, som blokkerer brudd på normal utførelsesrekkefølge (control flow) som følge av utnyttelser som endrer lagrede pekere til funksjoner i minnet.
    • For RISC-V-arkitekturen er det aktivert randomisering av kjerner-i-minnet ved oppstart.
    • I systemanropet seccomp() er flagget SECCOMP_USER_NOTIF_FD_SYNC_WAKE_UP lagt til, som gjør det mulig å håndtere hendelser fra overvåkede prosesser i synkron modus for mer effektiv oppgaveplanlegging.
    • I kmalloc()-funksjonen er det sikret randomisering av slab-cacher, noe som kompliserer utnyttelse av sårbarheter i kjernen.
    • Referansen til det amerikanske National Security Agency er fjernet fra alternativene relatert til aktivering av SELinux-systemet for tvungen tilgangskontroll. Siden prosjektet har vært utviklet over 20 år under samfunnets beskyttelse og vedlikeholdes av uavhengige vedlikeholdere, er det besluttet å bruke navnet 'SELinux' i stedet for 'NSA SELinux' i kommentarer og dokumentasjon i Kconfig (for eksempel er beskrivelsen av kompilasjonsparameteren SECURITY_SELINUX endret fra 'NSA SELinux Support' til 'SELinux Support').
    • I systemanropet userfaultfd() er operasjonen UFFDIO_POISON lagt til, slik at man kan merke minnesider som 'forgiftede' (poisoned), noe som kan brukes til å overføre ødelagte minnesider ved migrering virtual machines fra ett system til et annet.
    • Det er lagt til et nytt symbolsk grensesnitt (\/dev\/vfio\/devices\/vfioX) i VFIO-systemet for å administrere VFIO-enheter, som gjør det mulig for brukeren å åpne en fil med en enhet direkte, uten å gå gjennom det utdaterte grupperingsgrensesnittet \/dev\/vfio\$groupID.
    • I serveren Støtten for utdaterte typer av Kerberos-kryptering som bruker algoritmene DES og 3DES er stoppet i NFS.
    • Det er lagt til støtte for gjestesystemer beskyttet med AMD SEV-SNP (Secure Nested Paging) og Intel TDX (Trusted Domain Extensions) når de kjøres i Hyper-V-hypervisorens miljø.
    • Ved bygging av kjernen i modus "W=1" er varselene "-Wformat-overflow", "-Wformat-truncation", "-Wstringop-overflow" og "-Wrestrict" aktivert som standard i kompilatoren. Varslet "-Wenum-conversion" er aktivert for alle bygg.
  • Nettverks subsystem
    • Implementeringen av adressefamilien AF_XDP (eXpress Data Path) er utvidet med muligheten til å arbeide med pakker lagret i flere buffere (for eksempel kan en buffer inneholde pakkens header, mens en annen inneholder data, eller i en kjede av flere buffere kan store jumbo-rammer i Ethernet plasseres). Programmer som bruker AF_XDP-sokler kan nå motta og sende pakker direkte fra flere buffere.
    • Det er lagt til støtte for defragmentering av IPv4- og IPv6-pakker i BPF-systemet, samt muligheten til å filtrere fragmenterte pakker.
    • En ny behandler, update_socket_protocol, er lagt til i BPF som lar BPF-programmer endre den forespurte protokollen for nye sokler. For eksempel kan et BPF-program transparent erstatte TCP-protokollen med MPTCP (multipath TCP) for å optimalisere applikasjonstrafikk. BPF har også fått støtte for rutehåndtering av pakker gjennom forskjellige strømmer i MPTCP.
    • Eksperimentell utviklingsstatus for ksmbd-modulen, som tilbyr en kjernebasert implementering av filserveren basert på SMB3-protokollen, er fjernet. Støtte for sammenfletting av leseoperasjoner ("read compound"-forespørsel) er lagt til.
  • Utstyr
    • Det er gjort endringer i DRM-systemet (Direct Rendering Manager) som er nødvendige for effektiv drift av den åpne NVK-driveren med implementering av grafisk API Vulkan for NVIDIA-grafikkort. Den opprinnelige DRM-driveren Nouveau var designet for implementering av OpenGL, derfor mangler det primitive som er nødvendige for effektiv drift av Vulkan-drivere, for eksempel støtte for synkroniserte objekter og styring av virtuelt adresseområde.
    • I AMDGPU-driver har støtte for SDMA 6.1.0, HDP 6.1, SMUIO 14.0, PSP 14.0, IH 6.1 og GFX 9.4.3. Koden for lasting av PSP-firmware (Platform Security Processor) er blitt omarbeidet. Støtten for teknologien for adaptiv synkronisering FreeSync er utvidet (støtte for Freesync Panel Replay V2 er lagt til).
    • I i915-driveren fortsetter implementeringen av støtte for Intel Meteor Lake-brikker. Støtten for beskyttelsesteknologien HDCP (High-bandwidth Digital Content Protection) er forbedret. Koden for samhandling med skjermen er blitt omarbeidet.
    • Alternativene for å deaktivere lasting av mikrokode under byggeprosessen — MICROCODE_INTEL og MICROCODE_AMD — er fjernet fra Kconfig. Kjernen bygges nå alltid med mikrokodelasting for x86-systemer, men faktisk lasting av mikrokode kan deaktiveres ved å angi kjernens parameter 'dis_ucode_ldr'.
    • Muligheten for å administrere lydstrømmer knyttet til IIO (Industrial I/O) subsystemet er lagt til i lydsystemet.
    • Støtte for Intel LunarLake, Intel ArrowLake og AMD ACP5x lydgrensesnitt, samt koder Cirrus Logic CS42L43, Realtek RT1017 og TI TAS2781, og forsterkere Cirrus Logic CS35L56 og winic aw88261 er lagt til. Støtte for ASoC AMD Van Gogh er også lagt til.
    • USB MIDI 2.0 Gadget-driveren som simulerer USB MIDI 2.0-grensesnittet og er koblet til ALSA UMP rawmidi-enheten, er lagt til.
    • Støtten for Ethernet-kontrollere Broadcom ASP 2.0 og Marvell 88Q2XXX er lagt til.
    • Støtte for Visionox R66451, TDO TL050HDV35, KD070FHFID015, Inanbo T28CP45TN89 og EDT ET028013DMA skjermer, samt skjermkontrollere fra Loongson og berøringsskjermkontrollere fra Azoteq IQS7222D/IQS7210A/7211A, er lagt til.
    • Støtte for ARM SoC Qualcomm SM4450 (Snapdragon 4 Gen 2), TI AM62P5, Intel Agilex5, Qualcomm ipq5018 og AN400 (Amlogic T7) er lagt til.
    • Støtte for ARM-plattformer som Samsung Galaxy Tab 3 8.0, FriendlyElec NanoPC T6, Amlogic A311D2, Khadas Vim4, Xiaomi SM7125, Facebook Yosemite 4, Orange Pi Zero 3 og Radxa ROCK 4SE er lagt til.

Samtidig har den latinamerikanske Free Software Foundation utviklet en helt fri kjerne 6.6 — Linux-libre 6.6-gnu, renset for elementer av firmware og drivere som inneholder proprietære komponenter eller kodebiter hvis bruk er begrenset av produsenten. I versjon 6.6 har rensningen av blobkoden i forskjellige drivere og subsystemer blitt oppdatert, for eksempel i TI gigabit RU ethernet-drivere, MediaTek 792x wifi, Cirrus Logic cs42l43 mfd, cs35l56 HD-audio og aw88261 SoC. Navnene på blobene i dts-filer for Aarch64-arkitekturen er blitt renset. Det er fjernet blobs i de nye ivpu-driverne, i bluetooth-driverne, i berøringsskjermdriveren og i videokoderen/dekoder Qualcomm Venus V4L2.

Kilde: opennet.ru

Kjøp pålitelig hosting for nettsteder med DDoS-beskyttelse, VPS VDS-servere 🔥 Kjøp pålitelig hosting for nettsteder med DDoS-beskyttelse, VPS VDS-servere | ProHoster