Versione di u kernel Linux 6.2

Dopu dui mesi di sviluppu, Linus Torvalds hà presentatu a liberazione di u kernel Linux 6.2. Trà i cambiamenti più notevuli: l'accettazione di u codice sottu a licenza Copyleft-Next hè permessa, l'implementazione di RAID5/6 in Btrfs hè migliurata, l'integrazione di supportu per a lingua Rust cuntinueghja, u overhead di prutezzione contru l'attacchi Retbleed hè ridutta, A capacità di regulà u cunsumu di memoria durante a scrittura hè aghjuntu, un mecanismu hè aghjuntu per l'equilibriu TCP PLB (Protective Load Balancing), un mecanismu di prutezzione di flussu di cummandu hibridu (FineIBT) hè statu aghjuntu, BPF hà avà a capacità di definisce i so propiu oggetti è strutture di dati. , l'utilità rv (Runtime Verification) hè inclusa, u cunsumu di energia in l'implementazione di chjusi RCU hè stata ridutta.

A nova versione include 16843 correzioni da 2178 sviluppatori, a dimensione di u patch hè 62 MB (i cambiamenti affettati 14108 file, 730195 linee di codice sò state aghjunte, 409485 linee sò state eliminate). Circa u 42% di tutti i cambiamenti introdotti in 6.2 sò ligati à i driver di u dispositivu, circa 16% di i cambiamenti sò ligati à l'aghjurnamentu di u codice specificu à l'architetture hardware, u 12% sò ligati à a pila di rete, u 4% sò ligati à i sistemi di fugliali è u 3% sò ligati à i sottosistemi interni di u kernel.

Innuvazioni principali in u kernel 6.2:

  • Memoria è servizii di sistema
    • Hè permessu di include in u codice di u kernel è i cambiamenti furniti sottu a licenza Copyleft-Next 0.3.1. A licenza Copyleft-Next hè stata creata da unu di l'autori di GPLv3 è hè cumplettamente cumpatibile cù a licenza GPLv2, cum'è cunfirmatu da l'avucati di SUSE è Red Hat. Comparatu à GPLv2, a licenza Copyleft-Next hè assai più compacta è più faciule da capisce (a parte introduttiva è a menzione di cumprumessi obsoleti sò state eliminate), definisce u calendariu è a prucedura per eliminà e violazioni, è sguassate automaticamente i requisiti copyleft per u software obsoletu chì hè più di 15 anni.

      Copyleft-Next cuntene ancu una clausula di cuncessione di tecnulugia patentata, chì, à u cuntrariu di GPLv2, rende sta licenza cumpatibile cù a licenza Apache 2.0. Per assicurà a cumpatibilità cumpleta cù GPLv2, Copyleft-Next afferma esplicitamente chì un travagliu derivatu pò esse furnitu sottu a licenza GPL in più di a licenza Copyleft-Next originale.

    • A struttura include l'utilità "rv", chì furnisce una interfaccia per l'interazzione da u spaziu di l'utilizatori cù i gestori di u subsistema RV (Runtime Verification), cuncepitu per verificà l'operazione curretta in sistemi altamente affidabili chì guarantisci l'assenza di fallimenti. A verificazione hè eseguita in runtime attachendu i gestori à i punti di traccia chì verificanu u prugressu attuale di l'esekzione contru un mudellu deterministicu di riferimentu predeterminatu di a macchina chì definisce u cumpurtamentu previstu di u sistema.
    • U dispositivu zRAM, chì permette a partizione di scambià per esse guardata in memoria in una forma compressa (un dispositivu di bloccu hè creatu in memoria à quale u scambiu hè realizatu cù compressione), implementa a capacità di ripiglià e pagine utilizendu un algoritmu alternativu per ottene un livellu più altu. di cumpressione. L'idea principale hè di furnisce una scelta trà parechji algoritmi (lzo, lzo-rle, lz4, lz4hc, zstd), chì offrenu u so propiu cumprumissu trà a velocità di compressione / decompressione è u livellu di compressione, o ottimali in situazioni spiciali (per esempiu, per cumpressione grande. pagine di memoria).
    • Aggiunta l'API "iommufd" per a gestione di u sistema di gestione di memoria I/O - IOMMU (I/O Memory-Management Unit) da u spaziu di l'utilizatori. A nova API permette di gestisce e tabelle di pagina di memoria I/O utilizendu descriptori di file.
    • BPF furnisce l'abilità di creà tipi, definisce i vostri propri oggetti, custruisce a vostra propria gerarchia di l'uggetti, è crea in modu flessibile e vostre strutture di dati, cum'è listi ligati. Per i prugrammi BPF chì entranu in modu di dorme (BPF_F_SLEEPABLE), u supportu per i blocchi bpf_rcu_read_{,un}lock() hè statu aghjuntu. Supportu implementatu per salvà oggetti task_struct. Hè aghjuntu u tipu di mappa BPF_MAP_TYPE_CGRP_STORAGE, chì furnisce u almacenamentu locale per i cgroups.
    • Per u mecanismu di bloccu RCU (Read-copy-update), hè implementatu un mecanismu facultativu di callback "lazy", in quale parechji callback sò processati à una volta cù un timer in modu batch. L'applicazione di l'ottimisazione pruposta ci permette di riduce u cunsumu di energia in i dispositi Android è ChromeOS da 5-10% postponendu e richieste RCU durante i tempi di inattività o bassa carica in u sistema.
    • Aggiuntu sysctl split_lock_mitigate per cuntrullà cumu u sistema reagisce quandu rileva i blocchi split chì si verificanu quandu accede à dati unalignati in memoria per via di e dati chì attraversanu duie linee di cache di CPU quandu esegue una struzzione atomica. Tali blocchi portanu à una diminuzione significativa di u rendiment. Setting split_lock_mitigate à 0 solu emette un avvirtimentu chì ci hè un prublema, mentre chì split_lock_mitigate à 1 provoca ancu u prucessu chì hà causatu u lock per esse rallentatu per priservà u rendiment per u restu di u sistema.
    • Una nova implementazione di qspinlock hè stata pruposta per l'architettura PowerPC, chì mostra un rendimentu più altu è risolve alcuni prublemi di chjusi chì si sviluppanu in casi eccezziunali.
    • U codice di gestione di l'interruzzione MSI (Message-Signaled Interrupts) hè statu riformulatu, eliminendu i prublemi architettonici accumulati è aghjunghjendu supportu per ubligatoriu individuali di manipolatori à diversi dispositi.
    • Per i sistemi basati nantu à l'architettura di set di istruzioni LoongArch utilizata in i processori Loongson 3 5000 è implementendu u novu RISC ISA, simile à MIPS è RISC-V, hè implementatu u supportu per ftrace, stack protection, sleep and standby modes.
    • A capacità di assignà nomi à e zone di memoria anonima spartuta hè stata furnita (precedentemente i nomi puderanu esse attribuiti solu à a memoria anonima privata assignata à un prucessu specificu).
    • Aggiuntu un novu paràmetru di linea di cummanda di u kernel "trace_trigger", cuncepitu per attivà un trigger di traccia utilizatu per ligà cumandamenti cundiziunali chjamati quandu un cuntrollu di cuntrollu hè attivatu (per esempiu, trace_trigger="sched_switch.stacktrace if prev_state == 2").
    • I requisiti per a versione di u pacchettu binutils sò stati aumentati. Custruì u kernel avà richiede almenu binutils 2.25.
    • Quandu chjamà exec (), hè stata aghjunta a capacità di mette un prucessu in un spaziu di nome di u tempu, in quale u tempu difiere da u tempu di u sistema.
    • Avemu cuminciatu à trasfiriri funziunalità supplementari da a filiera Rust-for-Linux in relazione à l'usu di a lingua Rust cum'è una seconda lingua per u sviluppu di drivers è moduli di kernel. U supportu di Rust hè disattivatu di manera predeterminata è ùn hà micca risultatu chì Rust sia inclusu cum'è una dipendenza necessaria di creazione di u kernel. A funziunalità basica offerta in l'ultima versione hè allargata per sustene u codice di livellu bassu, cum'è u tipu Vec è i macros pr_debug!(), pr_cont!() è pr_alert!(), è ancu a macro procedurale "#[vtable". ]", chì simplificà u travagliu cù e tabelle di puntatori nantu à e funzioni. L'aghjunzione di ubligatori Rust d'altu livellu nantu à i sottosistemi di u kernel, chì permetterà a creazione di cunduttori full-fledged in Rust, hè prevista in versioni future.
    • U tipu "char" utilizatu in u kernel hè avà dichjaratu senza firmatu per difettu per tutte l'architetture.
    • U mecanismu di allocazione di memoria di lastra - SLOB (slab allocator), chì hè statu cuncepitu per sistemi cù una piccula quantità di memoria, hè statu dichjaratu obsolet. Invece di SLOB, in cundizioni normali hè cunsigliatu di utilizà SLUB o SLAB. Per i sistemi cù una piccula quantità di memoria, hè cunsigliatu di utilizà SLUB in u modu SLUB_TINY.
  • Sottosistema di discu, I / O è sistemi di fugliale
    • Migliuramenti sò stati fatti à Btrfs destinati à risolve u prublema di "buca di scrittura" in implementazioni RAID 5/6 (un tentativu di restaurà un RAID se un crash si verifica durante a scrittura è hè impussibile di capisce quale bloccu nantu à quale u dispositivu RAID hè statu scrittu currettamente, chì pò purtà à a distruzzione di blocchi, currispundenti à blocchi sottumessi). Inoltre, i SSD ora attivanu automaticamente l'operazione di scarta asincrona per automaticamente quandu hè pussibule, chì permettenu un rendimentu migliuratu per via di un raggruppamentu efficiente di operazioni di scarta in fila è di trasfurmazioni di a fila da un processore di fondo. Prestazione mejorata di l'operazione di mandatu è lseek, è ancu di u FIEMAP ioctl.
    • E capacità per a gestione di scrittura differita (scrittura, salvezza in fondu di dati cambiati) per i dispositi di bloccu sò state allargate. In certi situazioni, cum'è quandu si usanu dispositivi di bloccu di rete o unità USB, i scritti lazy ponu risultatu in un grande cunsumu di RAM. Per cuntrullà u cumpurtamentu di scrittura lazy è mantene a dimensione di a cache di a pagina in certi limiti, novi parametri strict_limit, min_bytes, max_bytes, min_ratio_fine è max_ratio_fine sò stati introdotti in sysfs (/sys/class/bdi/).
    • U sistema di fugliale F2FS implementa una operazione di rimpiazzamentu atomicu ioctl, chì permette di scrive dati à un schedariu in una sola operazione atomica. F2FS aghjunghjenu ancu una cache di estensione di bloccu per aiutà à identificà e dati utilizati attivamente o dati chì ùn sò micca stati accessu per un bellu pezzu.
    • In l'ext4 FS solu correzioni di errore sò nutate.
    • U sistema di schedari ntfs3 offre parechje opzioni di muntazione novi: "nocase" per cuntrullà a sensibilità di u casu in i nomi di u schedariu è di u cartulare; windows_name per pruibisce a creazione di nomi di schedari chì cuntenenu caratteri chì ùn sò micca validi per Windows; hide_dot_files per cuntrullà l'assignazione di l'etichetta di u schedariu hidden per i schedari chì cumincianu cù un puntu.
    • U sistema di schedari Squashfs implementa una opzione di muntatura "threads=", chì permette di definisce u numeru di filamenti per parallelizà l'operazioni di decompressione. Squashfs hà ancu introduttu l'abilità di mapà l'ID di l'utilizatori di i sistemi di fugliali muntati, utilizati per currisponde à i schedarii di un utilizatore specificu nantu à una partizione straniera muntata cù un altru utilizatore nantu à u sistema attuale.
    • L'implementazione di e liste di cuntrollu d'accessu POSIX (POSIX ACLs) hè stata riformulata. A nova implementazione elimina i prublemi architettonichi, simplificà u mantenimentu di a basa di codice, è introduce tipi di dati più sicuri.
    • U subsistema fscrypt, chì hè utilizatu per a criptografia trasparente di i fugliali è i cartulari, hà aghjuntu supportu per l'algoritmu di criptografia SM4 (standard cinese GB / T 32907-2016).
    • A capacità di custruisce u kernel senza supportu NFSv2 hè stata furnita (in u futuru pensanu di piantà cumplettamente di supportà NFSv2).
    • L'urganizazione di cuntrollà i diritti d'accessu à i dispositi NVMe hè stata cambiata. Fornisce a capacità di leghje è scrive à un dispositivu NVMe se u prucessu di scrittura hà accessu à u schedariu dedicatu di u dispusitivu (previamente u prucessu avia avutu u permessu CAP_SYS_ADMIN).
    • Eliminatu u driver di pacchettu CD / DVD, chì era obsoletu in 2016.
  • Virtualizazione è Sicurezza
    • Un novu metudu di prutezzione contra a vulnerabilità di Retbleed hè statu implementatu in CPU Intel è AMD, utilizendu u seguimentu di a prufundità di a chjama, chì ùn rallenta micca u travagliu quantu a prutezzione prisenti contra Retbleed. Per attivà u novu modu, u paràmetru di linea di cumanda di u kernel "retbleed = stuff" hè statu prupostu.
    • Aggiuntu un mecanismu di prutezzione di flussu di istruzzioni FineIBT hibridu, chì combina l'usu di l'istruzzioni di hardware Intel IBT (Indirect Branch Tracking) è a prutezzione di u software kCFI (Integrità di u flussu di cuntrollu di u kernel) per bluccà a violazione di l'ordine di esecuzione normale (flussu di cuntrollu) per via di l'usu. di sfruttamenti chì mudificanu i puntatori almacenati in memoria nantu à e funzioni. FineIBT permette l'esekzione per saltu indirettu solu in u casu di un saltu à l'istruzzioni ENDBR, chì si trova à u principiu di a funzione. Inoltre, per analogia cù u mecanismu kCFI, i hashes sò allora verificati per guarantiscenu l'immutabilità di i punteri.
    • Aghjunghjite restrizioni per bluccà attacchi chì manipulanu a generazione di stati "oops", dopu chì i travaglii problematici sò cumpletati è u statu hè restauratu senza piantà u sistema. Cù un gran numaru di chjamate à u statu "oops", si verifica un overflow di contatore di riferimentu (refcount), chì permette di sfruttà e vulnerabilità causate da dereferences di puntatore NULL. Per prutezzione di tali attacchi, un limitu hè statu aghjuntu à u kernel per u numeru massimu di "oops" triggers, dopu chì u kernel inizierà una transizione à u statu di "panicu" seguita da un reboot, chì ùn permettenu micca di ottene u numeru di iterazioni necessarii per overflow u refcount. Per automaticamente, u limitu hè stabilitu à 10 mila "oops", ma se vulete, pò esse cambiatu attraversu u paràmetru oops_limit.
    • Aggiuntu paràmetru di cunfigurazione LEGACY_TIOCSTI è sysctl legacy_tiocsti per disattivà a capacità di mette dati in u terminal cù l'ioctl TIOCSTI, postu chì sta funziunalità pò esse aduprata per rimpiazzà caratteri arbitrarii in u buffer di input di terminal è simulà l'input di l'utilizatori.
    • Un novu tipu di struttura interna, encoded_page, hè prupostu, in quale i bits più bassi di u puntatore sò usati per almacenà l'infurmazioni supplementari utilizati per pruteggiri contra a deferenza accidintali di u puntatore (se dereference hè veramente necessariu, sti bits supplementari devenu esse sbulicati prima) .
    • Nant'à a piattaforma ARM64, in a fase di boot, hè pussibule attivà o disattivà l'implementazione di u software di u mecanismu Shadow Stack, chì hè utilizatu per prutegge da a sovrascrittura di l'indirizzu di ritornu da una funzione in casu di un overflow di buffer nantu à a pila ( l'essenza di a prutezzione hè di salvà l'indirizzu di ritornu in una pila separata "ombra" dopu chì u cuntrollu hè trasferitu à a funzione è ricuperà l'indirizzu datu prima di esce da a funzione). U supportu per l'implementazioni di hardware è software di Shadow Stack in una assemblea di kernel permette di utilizà un kernel in diversi sistemi ARM, indipendentemente da u so supportu per l'istruzzioni per l'autentificazione di puntatore. L'inclusione di l'implementazione di u software hè realizata da a sostituzione di l'istruzzioni necessarii in u codice durante a carica.
    • Aghjunghje supportu per l'usu di u mecanismu di notificazione di uscita asincrona nantu à i prucessori Intel, chì permette di detectà attacchi in un passu à u codice eseguitu in enclaves SGX.
    • Un inseme di operazioni hè prupostu chì permette à l'ipervisore di supportà e dumande da i sistemi invitati Intel TDX (Trusted Domain Extensions).
    • I paràmetri di custruzzione di u kernel RANDOM_TRUST_BOOTLOADER è RANDOM_TRUST_CPU sò stati sguassati, in favore di l'opzioni di linea di cumanda currispondente random.trust_bootloader è random.trust_cpu.
    • U mecanismu Landlock, chì permette di limità l'interazzione di un gruppu di prucessi cù l'ambiente esternu, hà aghjustatu u supportu per a bandiera LANDLOCK_ACCESS_FS_TRUNCATE, chì permette di cuntrullà l'esekzione di l'operazione di truncazione di u schedariu.
  • Sottusistema di rete
    • Per IPv6, u supportu per PLB (Protective Load Balancing) hè statu aghjuntu, un mecanismu di equilibriu di carica trà i ligami di rete destinatu à riduce i punti di sovraccarichi nantu à i switch di centru di dati. Cambiendu l'etichetta di flussu IPv6, u PLB cambia aleatoriamente i percorsi di pacchetti per equilibrà a carica nantu à i porti di switch. Per riduce l'ordine di pacchettu, sta operazione hè fatta dopu à periodi di inattività sempre chì hè pussibule. L'usu di PLB in i centri di dati di Google hà riduciutu u sbilanciamentu di carica nantu à i porti di switch da una media di 60%, a perdita di pacchetti ridutta di 33%, è a latenza ridutta di 20%.
    • Un driver aghjuntu per i dispositi MediaTek chì supportanu Wi-Fi 7 (802.11be).
    • Aghjunghje supportu per i ligami 800-gigabit.
    • Aggiunta a capacità di rinominà l'interfacce di rete nantu à a mosca, senza piantà u travagliu.
    • Una menzione di l'indirizzu IP à quale hè ghjuntu u pacchettu hè stata aghjunta à i missaghji di logu nantu à SYN flood.
    • Per UDP, l'abilità di utilizà tabelle di hash separati per diversi spazii di nomi di rete hè stata implementata.
    • Per i ponti di rete, u supportu per u metudu di autentificazione MAB (MAC Authentication Bypass) hè statu implementatu.
    • Per u protocolu CAN (CAN_RAW), u supportu per u modu di socket SO_MARK hè statu implementatu per aghjunghje filtri di trafficu basati in fwmark.
    • ipset implementa un novu paràmetru di bitmask chì permette di stabilisce una maschera basata nantu à bits arbitrarii in l'indirizzu IP (per esempiu, "ipset create set1 hash:ip bitmask 255.128.255.0").
    • Aghjunghje supportu per u processu di l'intestazione interna in i pacchetti tunnellati à nf_tables.
  • Equipment
    • U subsistema "accel" hè statu aghjuntu cù l'implementazione di un framework per l'acceleratori computazionali, chì ponu esse furniti in forma di ASIC individuali o in forma di blocchi IP in u SoC è GPU. Questi acceleratori sò principalmente destinati à accelerà a suluzione di i prublemi di apprendimentu machine.
    • U driver amdgpu include supportu per i cumpunenti IP GC, PSP, SMU è NBIO. Per i sistemi ARM64, u supportu per DCN (Display Core Next) hè implementatu. L'implementazione di l'output di schermu prutettu hè stata spustata da l'usu di DCN10 à DCN21 è pò avà esse aduprata quandu cunnessu parechje schermi.
    • U driver i915 (Intel) hà stabilizatu u supportu per e carte video discrete Intel Arc (DG2 / Alchemist).
    • U driver Nouveau supporta GPU NVIDIA GA102 (RTX 30) basati nantu à l'architettura Ampere. Per e carte nva3 (GT215), a capacità di cuntrullà a retroilluminazione hè stata aghjunta.
    • Aggiuntu supportu per adattatori wireless basati in Realtek 8852BE, Realtek 8821CU, 8822BU, 8822CU, 8723DU (USB) è MediaTek MT7996 chips, Broadcom BCM4377/4378/4387 interfacce Bluetooth, è ancu Motorcomm GE yt8521 Controller Ethernet TegraXNUMX.
    • Aggiuntu supportu ASoC (ALSA System on Chip) per i chip di sonu integrati HP Stream 8, Advantech MICA-071, Dell SKU 0C11, Intel ALC5682I-VD, Xiaomi Redmi Book Pro 14 2022, i.MX93, Armada 38x, RK3588. Aghjunghje supportu per l'interfaccia audio Focusrite Saffire Pro 40. Aggiuntu codec audio Realtek RT1318.
    • Aghjunghje supportu per smartphones è tablette Sony (Xperia 10 IV, 5 IV, X è X compact, OnePlus One, 3, 3T è Nord N100, Xiaomi Poco F1 è Mi6, Huawei Watch, Google Pixel 3a, Samsung Galaxy Tab 4 10.1.
    • Supportu aghjuntu per ARM SoC è Apple T6000 (M1 Pro), T6001 (M1 Max), T6002 (M1 Ultra), Qualcomm MSM8996 Pro (Snapdragon 821), SM6115 (Snapdragon 662), SM4250 (Snapdragon 460), SM6375 (Snapdragon 695), (SM670), (SM670) schede , SDM8976 (Snapdragon 652), MSM8956 (Snapdragon 650), MSM3326 (Snapdragon 351), RK310 Odroid-Go/rg8, Zyxel NSAXNUMXS, InnoComm i.MXXNUMXMM, Odroid Go.

À u listessu tempu, a Fundazione di Software Liberu Latino-Americana hà furmatu una versione di u kernel completamente liberu 6.2 - Linux-libre 6.2-gnu, sguassatu di elementi di firmware è drivers chì cuntenenu cumpunenti proprietarii o sezzioni di codice, u scopu di quale hè limitatu da u fabricatore. A nova versione pulisce i novi blob in u driver nouveau. A carica di blob hè disattivata in i driver Bluetooth mt7622, ​​​​mt7996 è bcm4377. Pulite i nomi di blob in i fugliali dts per l'architettura Aarch64. Codice di pulizia blob aghjurnatu in diversi drivers è sottosistemi. Stopped cleaning the s5k4ecgx driver, as it was removed from the kernel.

Source: opennet.ru

Add a comment