Kernel-udgivelse Linux 6.11

Efter to måneders udvikling udgav Linus Torvalds kernen. Linux 6.11. Среди наиболее заметных изменений: поддержка операций атомарной записи на блочном уровне, поддержка операций bind() и listen() в io_uring, новый механизм блокировок программных обработчиков прерываний, возможность записи в отзеркаленные в память исполняемые файлы, поддержка написания драйверов блочных устройств на языке Rust, оптимизация вызова getrandom(), новая реализация AES-GCM.

Den nye version indeholder 15130 rettelser fra 2078 udviklere, patchstørrelsen er 85 MB (ændringerne berørte 13282 filer, 985857 linjer kode blev tilføjet, 268915 linjer blev slettet). Den sidste udgivelse havde 14564 rettelser fra 1989-udviklere, patchstørrelsen var 41 MB (halvdelen af ​​6.11-kernepatchen). Omkring 46 % af alle ændringer, der er introduceret i 6.11, er relateret til enhedsdrivere, ca. 17 % af ændringerne er relateret til opdatering af kode, der er specifik for hardwarearkitekturer, 10 % er relateret til netværksstakken, 5 % er relateret til filsystemer og 3 % er relateret til interne kerneundersystemer.

Vigtigste innovationer i kerne 6.11:

  • Diskundersystem, I/O og filsystemer
    • Understøttelse af atomskriveoperationer på blokniveau er blevet implementeret, hvor enten hele det specificerede sæt af blokke eller ingen af ​​blokkene er skrevet til drevet, hvilket giver dig mulighed for at beskytte mod situationer, hvor der efter en hardwarefejl kun er en del af blokkene er skrevet, mens gamle oplysninger forbliver i den anden del. For at aktivere atomisk skrivetilstand er flaget RWF_ATOMIC blevet tilføjet til pwritev() systemkaldet. Information om atomic skrivestøtte (atomic_write_unit_min, atomic_write_unit_max og atomic_write_segments_max) i forhold til individuelle filer kan fås ved hjælp af statx()-funktionen.
    • Giver support til at skrive til eksekverbare filer forbundet med kørende processer. Tidligere, som i andre Unix-lignende systemer, viste kernen en fejl, når den forsøgte at skrive til den eksekverbare fil i en kørende proces. Denne begrænsning er blevet fjernet, da den ikke har nogen praktisk betydning.
    • Evnen til at udvikle blok enhedsdrivere i Rust-sproget er blevet implementeret. Som et eksempel er rnull-driveren blevet tilføjet til kernen, som er en analog af null_blk-driveren, skrevet på Rust-sproget.
    • I Btrfs-filsystemet implementerer "rescue="-monteringsmuligheden understøttelse af de nye "ignoremetacsums"- og "ignoresuperflags"-tilstande, som kan bruges til at flytte nogle kontroller til brugerpladsen, når FS'en gendannes efter en fejl. Implementeringen af ​​driften af ​​dynamisk returnerende grupper af blokke er blevet lavet om for at eliminere forekomsten af ​​en situation med mangel på ledig plads, når filsystemet ikke er helt fyldt.
    • ntfs3-filsystemet understøtter de "komprimerede" og "uforanderlige" attributter, som definerer komprimerede og uforanderlige filer.
    • I filsystemerne F2FS og Ext4 forenkles behandlingen af ​​versal-ufølsomme filnavne (casefold) ved at gemme navne i form af qstr-strenge uden unødvendige store og små bogstaver.
    • I Ext4 FS er implementeringen af ​​funktionen jbd2_transaction_committed optimeret til at forbedre ydeevnen på meget hurtige drev (i test blev der noteret en stigning i behandlede operationer pr. sekund på op til 20 %).
    • Statx()-systemkaldet tillader at sende en NULL-pointer i stedet for en tom streng med en filsti, hvis flaget AT_EMPTY_PATH er indstillet.
    • Open_by_handle_at()-systemkaldet har afslappet kontrol af filtilladelser i tilfælde af manglende CAP_DAC_READ_SEARCH-autorisation til at søge i det oprindelige navneområde. Tidligere forhindrede behovet for CAP_DAC_READ_SEARCH-autorisation på det oprindelige navneområde systemkaldet open_by_handle_at() i at blive brugt i containere.
    • Mulighederne for systemkaldene listmount() og statmount() er blevet udvidet. Tilføjet LISTMOUNT_REVERSE flag til listmount() for at vise indholdet af monteringspunkttabellen i omvendt rækkefølge (nyeste poster øverst). statmount() implementerer outputtet af indstillingerne, der er indstillet, når filsystemet monteres. Begge systemopkald har tilladelse til at fungere, når der ikke er adgang til det oprindelige navneområde (når kun adgang til det lokale eller eksterne navneområde er tilgængeligt).
    • Bcachefs FS implementerer understøttelse af automatisk gennemsigtig gendannelse af problematiske data ved hjælp af fejlgendannelseskoder - hvis der opstår en I/O-fejl under læsning, eller der beregnes en kontrolsummismatch, omskrives den problematiske datablok automatisk, hvis der er redundans til at genoprette den.
  • Hukommelse og systemtjenester
    • Sammensætningen inkluderer patches med implementering af en ny mekanisme til blokering af softwareafbrydelsesbehandlere (BH, nederste halvdel), som sikrer blokering af brugte datastrukturer, men ikke forårsager blokering af parallel eksekvering af ikke-relateret kode. Det bemærkes, at ændringen gjorde det muligt ikke kun at reducere latens for kerner, der opererer i realtidstilstand, men også at øge ydeevnen af ​​konventionelle kerner (for eksempel var der for nogle typer arbejdsbyrde en stigning i ydeevnen af ​​netværksundersystemet med 14.5 pct.
    • Det io_uring asynkrone I/O-undersystem har tilføjet understøttelse af operationer for at implementere bind()- og listen()-funktionerne, der bruges til at skabe netværkssockets, der accepterer forbindelser.
    • Tilføjet et sæt ioctl-operationer til NSFS-pseudo-FS (NameSpace FS), der bruges til at arbejde med navnerum. Nye ioctls gør det muligt at konvertere proces- og trådgruppeidentifikatorer mellem forskellige procesidentifikatornavne (PID-navneområde). Lignende ioctls, som gør det muligt at bestemme filbeskrivelser af processer i separate navnerum baseret på pidfd identifikatorer, er også blevet tilføjet til pidfd pseudo-FS.
    • Til BPF-programmer er der tilføjet understøttelse af en ny iterator til at arbejde med bitmasker, som fx kan bruges til at iterere over individuelle bits i hukommelsesområder, såsom cpumask. Tilføjet en mekanisme til at sende meddelelser til processer i brugerrummet om, at et struct_ops-objekt er blevet frakoblet (frigør/afregistrer). Udvalget af typer, der kan bruges i arrays, er blevet udvidet (f.eks. kan du deklarere arrays, der har elementer med typerne kptr, bpf_rb_root og bpf_list_head). En mere pålidelig Split BTF (BPF Type Format) mekanisme er blevet foreslået, brugt til at kontrollere typer i BPF pseudokode.
    • Der er tilføjet et undersystem, der giver dig mulighed for at organisere strømforsyningen til enheder i en given rækkefølge, hvis en enhed skal aktiveres før en anden (for eksempel ved aktivering af trådløse chips på Qualcomm-platforme).
    • Tilføjet modulet "Sloppy logic analyzer", som giver dig mulighed for at skabe simple logiske signalanalysatorer, der bruger GPIO og kører på en separat CPU-kerne.
    • Tilføjet understøttelse af runtime-konstanter, som kan bruges i stedet for variabler, der initialiseres én gang. For eksempel kan runtime-konstanter bruges i stedet for variabler, der gemmer markøren og størrelsen for dentry-cachen. Disse variabler indstilles ved opstart og ændres derefter aldrig. Ideen er at erstatte værdierne af sådanne variable direkte i instruktionerne i koden, hvilket eliminerer overhead forbundet med pointermanipulation.
    • Fortsat migrering af ændringer fra Rust-for-grenenLinux, связанных с использованием языка Rust в качестве второго языка для разработки драйверов и модулей ядра (поддержка Rust не активна по умолчанию, и не приводит ко включению Rust в число обязательных сборочных зависимостей к ядру). Добавлена поддержка выпуска Rust 1.80 (в качестве минимальной версии по-прежнему поддерживается Rust 1.78). Помимо ранее отмеченных средств для разработки драйверов блочных устройств, в новой версии добавлены абстракции для загрузки прошивок, доступа к пространству пользователя (uaccess) и работы структурой «page».
    • For x86-64-systemer er et nyt uretprobe()-systemkald blevet implementeret, der optimerer uretprobe-sporingsmekanismen til sporing af returværdier for funktioner i brugerrumsapplikationer.
    • Tilføjede kerne-kommandolinjeindstillinger: "reserve_mem" for at reservere en navngivet hukommelsesregion ved opstart, og "ramoops.mem_name" for at lagre hukommelsesregionen oprettet via reserve_mem.
    • I den cgroup-baserede hukommelsescontroller er parameteren "swappiness" blevet tilføjet til memory.reclaim-filen, hvorigennem indstillingerne for hukommelsesgenvinding bestemmes, hvilket giver dig mulighed for at ændre balancen mellem at flytte anonyme hukommelsessider til swap-sektionen og frigøre hukommelse sider optaget af filcachen.
    • Tilføjet PROCMAP_QUERY ioctl-grænseflade for mere effektivt at søge efter virtuelle hukommelsesområder i /proc/PID/maps.
    • Føjede MAP_DROPPABLE-flaget til mmap()-systemkaldet for at anmode om hukommelse, der aldrig vil blive dumpet ind i swap-partitionen og kan fjernes, hvis der ikke er nok hukommelse.
    • For ARM64-arkitekturen er understøttelse af hot plugging (overførsel til online/offline-tilstande) af fysiske og virtuelle CPU'er på systemer med ACPI blevet implementeret.
    • For RISC-V-arkitekturen er understøttelse af hot plugging af hukommelsen tilvejebragt, og understøttelse af GCC-pluginet STACKLEAK tilføjes (initialiserer alle variabler gemt på stakken for at forhindre informationslækage fra kernen gennem uinitialiserede variabler, der kan indeholde rester af tidligere lagrede data på stakken).
    • Den falske EFI-hukommelseskortmekanisme under opstart er blevet fjernet. Denne mekanisme blev ikke brugt i praksis og hindrede udviklingen inden for fortrolig udførelse. virtuel maskine.
    • Support til PowerPC 40x-platformen er afbrudt.
    • Kravene til GNU Make-versionen er blevet øget - mindst en GNU Make-udgivelse udgivet i 2013 er påkrævet for at bygge kernen.
  • Virtualisering og sikkerhed
    • Integrerede patches, der markant (op til 15 gange) fremskynder opnåelsen af ​​tilfældige tal gennem getrandom() systemkaldet. Optimeringen er baseret på brugen af ​​vDSO (virtual dynamic shared object) mekanismen, som gør det muligt at flytte systemopkaldsbehandleren fra kernen til brugerrummet og undgå kontekstskift. Indlæsning af implementeringen af ​​et systemkald ind i processens adresserum direkte af kernen.
    • For x86-64-systemer er en ny implementering af AES-GCM-krypteringsalgoritmen inkluderet, der understøtter brugen af ​​VAES, VPCLMULQDQ og AVX512/AVX10 vektorinstruktioner for hurtigere beregning. I de udførte test når ydelsesforøgelsen efter skift til den nye implementering op på 156%. Assembly sprogimplementeringen af ​​AES-GCM er blevet fuldstændig omskrevet under hensyntagen til korrekthed, ydeevne, størrelse og omfattende dokumentation af koden.
    • Реализована возможность запуска ядра в качестве гостевой системы в виртуализированных окружениях, использующих процессорное расширение AMD SEV-SNP (Secure Nested Paging), предназначенное для обеспечения безопасной работы с вложенными таблицами страниц памяти. Для дополнительной изоляции доступа к ресурсам из виртуальных машин может применяться модуль SVSM (Linux Secure VM Service Module). В гипервизор KVM Tilføjet indledende understøttelse af kørsel af gæstesystemer beskyttet af AMD SEV-SNP.
    • Der er tilføjet en separat spandpladeallokator, aktiveret via parameteren CONFIG_SLAB_BUCKETS og giver beskyttelse mod angreb ved hjælp af "heap spraying"-teknikken.
    • Et ioctl-kald er blevet tilføjet til KVM-hypervisoren for proaktivt at allokere hukommelse til gæstesystemet, før det rent faktisk starter.
  • Netværks undersystem
    • Tilføjet sysctl-parameter net.tcp_rto_min_us, hvorigennem du kan konfigurere den minimale gentransmissionstimeout for TCP-sockets.
    • Muligheden for at finjustere konfigurationen af ​​interrupt-handlere til netværksgrænseflader ved hjælp af Net DIM-grænsefladen er blevet tilføjet til ethtool-værktøjet.
  • Оборудование
    • AMDGPU-driveren inkluderer indledende understøttelse af AMD RDNA4 ("GFX12") GPU'er. Tilføjet understøttelse af DCN 4.0.x, GC 12.0, GMC 12.0, SDMA 7.0, MES12 og MMHUB 4.1 teknologier.
    • Arbejdet fortsatte med Xe drm-driveren (Direct Rendering Manager) til GPU'er baseret på Intel Xe-arkitekturen, som bruges i Intel Arc-familiens grafikkort og integreret grafik, startende med Tiger Lake-processorer. Forbedret understøttelse af GPU'er baseret på Battlemage, Arrow Lake og Lunar Lake mikroarkitekturer.
    • I DRM-undersystemet (Direct Rendering Manager) er behandleren for EDID-parametre (Extended Display Identification Data) indstillet af monitoren blevet omskrevet.
    • i915-driveren tilføjer understøttelse af Battlemage Xe2 GPU'er og aktiverer CMRR-tilstand (Content Match Refresh Rate) som standard.
    • Understøttelse af SM7150-platformen og X185 og a505 GPU'er er blevet tilføjet til msm DRM-driveren (Qualcomm Adreno GPU).
    • Tilføjet understøttelse af Lincoln Tech Sol LCD185-101CT, Microtips Technology 13-101HIEBCAF0-C, Microtips Technology MF-103HIEB0GA0, BOE nv110wum-l60, IVO t109nw41, WL-355608-A8, PrimeView 070COM TechnologiesW PM4, Lincoln 197ULC ,AUO G35STN3, K&d kd70ne104-01ti.
    • Lydundersystemet tilføjer understøttelse af Intel Panther Lake, Asahi Kasei AK4619, Cirrus Logic CS530x, Everest Semiconductors ES8311, NXP i.MX95, LPC32xx, Qualcomm LPASS v2.5, WCD937x, Realtek RT1318, RT1320 Instruments PCM-kode og Texas-chips RT5242, RTXNUMX Instruments PCMXNUMX.
    • Den sidste runde af ændringer er lavet for at understøtte ARM SoC Snapdragon X Elite, som bruger Qualcomms egen 12-core Oryon CPU og Qualcomm Adreno GPU. Chippen er rettet mod brug i bærbare computere og pc'er, og er foran Apple M3 og Intel Core Ultra 155H chipsene i mange ydeevnetest. Ændringer tilføjet til 6.11-kernen er relateret til Adreno X1-85 GPU-understøttelse og strømstyring. Blandt enheder baseret på Snapdragon X Elite SoC annonceres understøttelse af ASUS Vivobook S15 og Lenovo Yoga Slim7x bærbare computere.

Samtidig skabte Latin American Free Software Foundation en version af den helt gratis kerne 6.11 - Linux-libre 6.10-gnu, очищенного от элементов прошивок и драйверов, содержащих несвободные компоненты или участки кода, область применения которых ограничена производителем. В выпуске 6.11 обновлён код чистки блобов в драйверах mdgpu, adreno, vgxy61, atomisp, btnxpuart, prueth и tas2781. Проведена чистка новых драйверов amdgpu isp, tn40, rtl8192du, cs40l50, rt1320 и pcie-rcar-gen4. Выполнена чистка имён блобов в dts-файлах (devicetree) для архитектуры Aarch64. Добавлена не выдающая предупреждения и запросов (nowait-nowarn) версия примитивов для загрузки прошивок. Добавлен код для определения примитивов загрузки прошивок в коде на языке Rust.

Kilde: opennet.ru

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