Linukso-kerna eldono 6.2

Post du monatoj da evoluo, Linus Torvalds prezentis la liberigon de la Linukso-kerno 6.2. Inter la plej rimarkindaj ŝanĝoj: akcepto de kodo sub la permesilo Copyleft-Next estas permesita, la efektivigo de RAID5/6 en Btrfs estas plibonigita, la integriĝo de subteno por la Rust-lingvo daŭras, la superkompeto de protekto kontraŭ Retbleed-atakoj estas reduktita, la kapablo reguligi memorkonsumon dum reskribo estas aldonita, mekanismo estas aldonita por TCP-balancado PLB (Protective Load Balancing), hibrida komanda fluo-protekta mekanismo (FineIBT) estis aldonita, BPF nun havas la kapablon difini siajn proprajn objektojn kaj datumstrukturojn. , la rv (Runtime Verification) utileco estas inkluzivita, elektrokonsumo en la efektivigo de RCU-seruroj estis reduktita.

La nova versio inkluzivas 16843 korektojn de 2178 programistoj, la flikgrandeco estas 62 MB (la ŝanĝoj influis 14108 dosierojn, 730195 linioj de kodo estis aldonitaj, 409485 linioj estis forigitaj). Proksimume 42% de ĉiuj ŝanĝoj enkondukitaj en 6.2 rilatas al aparataj ŝoforoj, proksimume 16% de ŝanĝoj rilatas al ĝisdatigo de kodo specifa por hardvararkitekturoj, 12% rilatas al la retstako, 4% rilatas al dosiersistemoj kaj 3% estas rilataj al internaj kernaj subsistemoj.

Ŝlosilaj novigoj en kerno 6.2:

  • Memoraj kaj sistemaj servoj
    • Estas permesite inkluzivi en la kernkodon kaj ŝanĝojn provizitajn sub la permesilo Copyleft-Next 0.3.1. La permesilo Copyleft-Next estis kreita de unu el la aŭtoroj de GPLv3 kaj estas plene kongrua kun la permesilo GPLv2, kiel konfirmite de advokatoj de SUSE kaj Red Hat. Kompare kun GPLv2, la permesilo Copyleft-Next estas multe pli kompakta kaj pli facile komprenebla (la enkonduka parto kaj mencio de malmodernaj kompromisoj estis forigitaj), difinas la tempokadron kaj proceduron por forigi malobservojn, kaj aŭtomate forigas kopileftpostulojn por malmoderna programaro kiu aĝas pli ol 15 jarojn.

      Copyleft-Next ankaŭ enhavas proprietan teknologian subvencion klaŭzon, kiu, male al GPLv2, igas ĉi tiun permesilon kongrua kun la Apache 2.0 permesilo. Por certigi plenan kongruon kun GPLv2, Copyleft-Next eksplicite deklaras ke derivita verko povas esti disponigita sub la GPL-licenco aldone al la origina licenco Copyleft-Next.

    • La strukturo inkluzivas la utilecon "rv", kiu provizas interfacon por interago de uzantspaco kun prizorgantoj de la subsistemo RV (Runtime Verification), desegnita por kontroli la ĝustan funkciadon de tre fidindaj sistemoj, kiuj garantias la foreston de misfunkciadoj. Konfirmo estas farita ĉe rultempo alkroĉante prizorgantojn al spurpunktoj kiuj kontrolas la faktan progreson de ekzekuto kontraŭ antaŭfiksita referenca determinisma modelo de la maŝino kiu difinas la atendatan konduton de la sistemo.
    • La zRAM-aparato, kiu permesas la interŝanĝan sekcion esti stokita en memoro en kunpremita formo (blokaparato estas kreita en memoro al kiu interŝanĝado estas farita kun kunpremado), efektivigas la kapablon repaki paĝojn uzante alternativan algoritmon por atingi pli altan nivelon. de kunpremado. La ĉefa ideo estas disponigi elekton inter pluraj algoritmoj (lzo, lzo-rle, lz4, lz4hc, zstd), proponante siajn proprajn kompromisojn inter kunpremado/malkunpremrapideco kaj kunpremadnivelo, aŭ optimuma en specialaj situacioj (ekzemple, por kunpremado de grandaj memorpaĝoj).
    • Aldonis la "iommufd" API por administri la I/O memoradministradsistemon - IOMMU (I/O Memory-Management Unit) de uzantspaco. La nova API ebligas administri I/O memorpaĝajn tabelojn uzante dosierpriskribilojn.
    • BPF disponigas la kapablon krei tipojn, difini viajn proprajn objektojn, konstrui vian propran hierarkion de objektoj, kaj flekseble krei viajn proprajn datumstrukturojn, kiel ekzemple ligitaj listoj. Por BPF-programoj enirantaj en dormreĝimon (BPF_F_SLEEPABLE), subteno por bpf_rcu_read_{,un}lock() ŝlosiloj estis aldonita. Efektivigita subteno por konservi task_struct-objektojn. Aldonita mapo-tipo BPF_MAP_TYPE_CGRP_STORAGE, provizante lokan stokadon por cgrupoj.
    • Por la RCU (Read-kopi-ĝisdatigo) blokadmekanismo, laŭvola mekanismo de "maldiligentaj" revokvokoj estas efektivigita, en kiu pluraj revokvokoj estas procesitaj samtempe uzante tempigilon en batreĝimo. Apliko de la proponita optimumigo permesas al ni redukti konsumon de energio en Android kaj ChromeOS-aparatoj je 5-10% prokrastante RCU-petojn dum neaktiva tempoj aŭ malalta ŝarĝo en la sistemo.
    • Aldonita sysctl split_lock_mitigate por kontroli kiel la sistemo reagas kiam ĝi detektas dividitajn serurojn, kiuj okazas kiam ili aliras nevicigitajn datumojn en memoro pro la datumoj krucantaj du CPU-kaŝmemorliniojn dum plenumado de atoma instrukcio. Tiaj blokadoj kondukas al signifa malpliigo de rendimento. Agordi split_lock_mitigate al 0 nur eligas averton, ke ekzistas problemo, dum agordi split_lock_mitigate al 1 ankaŭ kaŭzas la procezon, kiu kaŭzis, ke la seruro malrapidiĝas por konservi rendimenton por la resto de la sistemo.
    • Nova efektivigo de qspinlock estis proponita por la arkitekturo PowerPC, kiu montras pli altan rendimenton kaj solvas kelkajn ŝlosajn problemojn, kiuj aperas en esceptaj kazoj.
    • La MSI (Message-Signaled Interrupts) interrompa pritrakta kodo estis reverkita, forigante amasigitajn arkitekturajn problemojn kaj aldonante subtenon por ligado de individuaj prizorgantoj al malsamaj aparatoj.
    • Por sistemoj bazitaj sur la LoongArch-instrukcia aro-arkitekturo uzita en la Loongson 3 5000 procesoroj kaj efektiviganta la novan RISC ISA, simila al MIPS kaj RISC-V, subteno por ftrace, stakprotekto, dormo kaj ŝancatendoreĝimoj estas efektivigita.
    • La kapablo asigni nomojn al areoj de komuna anonima memoro estis disponigita (antaŭe nomoj povus nur esti asignitaj al privata anonima memoro asignita al specifa procezo).
    • Aldonis novan kernan komandlinian parametron "trace_trigger", desegnitan por aktivigi spuran ellasilon uzatan por ligi kondiĉajn komandojn nomitajn kiam kontrolkontrolo estas ekigita (ekzemple, trace_trigger="sched_switch.stacktrace se prev_state == 2″).
    • La postuloj por la versio de la pakaĵo binutils estis pliigitaj. Konstrui la kernon nun postulas almenaŭ binutils 2.25.
    • Kiam oni vokas exec(), la kapablo meti procezon en tempa nomspaco, en kiu la tempo diferencas de la sistema tempo, estis aldonita.
    • Ni komencis translokigi pliajn funkciojn de la branĉo Rust-for-Linux rilate al la uzo de la Rust-lingvo kiel dua lingvo por disvolvi ŝoforojn kaj kernajn modulojn. Rust-subteno estas malŝaltita defaŭlte kaj ne rezultigas Rust esti inkluzivita kiel postulata kerna konstrudependeco. La baza funkcieco ofertita en la lasta eldono estas vastigita por subteni malaltnivelan kodon, kiel ekzemple la tipo Vec kaj la makrooj pr_debug!(), pr_cont!() kaj pr_alert!(), same kiel la proceduran makroon "#[vtable". ]", kiu simpligas laboradon kun montriltabeloj pri funkcioj. La aldono de altnivelaj Rust-ligoj super kernaj subsistemoj, kiuj permesos la kreadon de plenrajtaj ŝoforoj en Rust, estas atendata en estontaj eldonoj.
    • La "char" tipo uzata en la kerno nun estas deklarita nesubskribita defaŭlte por ĉiuj arkitekturoj.
    • La mekanismo de asigno de slabmemoro - SLOB (slab-asignilo), kiu estis dizajnita por sistemoj kun malgranda kvanto de memoro, estis deklarita malnoviĝinta. Anstataŭ SLOB, en normalaj kondiĉoj oni rekomendas uzi SLUB aŭ SLAB. Por sistemoj kun malgranda kvanto de memoro, oni rekomendas uzi SLUB en la SLUB_TINY-reĝimo.
  • Diska Subsistemo, I/O kaj Dosiersistemoj
    • Plibonigoj estis faritaj al Btrfs celantaj korekti la problemon de "skribi truo" en RAID 5/6 efektivigoj (provo restarigi RAID se kraŝo okazas dum skribo kaj estas neeble kompreni kiu bloko sur kiu RAID-aparato estis skribita ĝuste, kiu povas konduki al blokodetruo, egalrilatante al subskribitaj blokoj). Krome, SSD-oj nun aŭtomate ebligas nesinkronan forĵetan operacion defaŭlte kiam eble, ebligante plibonigitan efikecon pro efika grupiĝo de forĵetoperacioj en atendovicojn kaj prilaboradon de la atendovico per fonprocesoro. Plibonigita agado de la send kaj lseek operacioj, same kiel la FIEMAP ioctl.
    • La kapabloj por administri prokrastita skribado (reskribo, fonkonservado de ŝanĝitaj datumoj) por blokaj aparatoj estis pligrandigitaj. En iuj situacioj, kiel kiam oni uzas retajn blokajn aparatojn aŭ USB-diskojn, maldiligentaj skriboj povas rezultigi grandan RAM-konsumon. Por kontroli la konduton de maldiligentaj skriboj kaj konservi la paĝan kaŝmemorgrandecon ene de certaj limoj, novaj parametroj strict_limit, min_bytes, max_bytes, min_ratio_fine kaj max_ratio_fine estis enkondukitaj en sysfs (/sys/class/bdi/).
    • La dosiersistemo F2FS efektivigas atoman anstataŭigan operacion ioctl, kiu permesas vin skribi datumojn al dosiero ene de ununura atomoperacio. F2FS ankaŭ aldonas blokampleksa kaŝmemoro por helpi identigi aktive uzatajn datumojn aŭ datumojn, kiuj ne estis aliritaj dum longa tempo.
    • En la ext4 FS nur erarkorektoj estas notitaj.
    • La dosiersistemo ntfs3 ofertas plurajn novajn muntajn opciojn: "nocase" por kontroli usklecon en nomoj de dosieroj kaj dosierujoj; windows_name por malpermesi la kreadon de dosiernomoj enhavantaj signojn kiuj ne validas por Vindozo; hide_dot_files por kontroli la asignon de la kaŝita dosieretikedo por dosieroj komenciĝantaj per punkto.
    • La dosiersistemo Squashfs efektivigas "fadenojn="-muntan opcion, kiu ebligas al vi difini la nombron da fadenoj por paraleligi malkunpremajn operaciojn. Squashfs ankaŭ lanĉis la kapablon mapi uzantidentigilojn de surĉevalaj dosiersistemoj, uzitaj por egali la dosierojn de specifa uzanto sur surĉevala eksterlanda sekcio kun alia uzanto sur la nuna sistemo.
    • La efektivigo de POSIX-alirkontrollistoj (POSIX ACLs) estis reverkita. La nova efektivigo forigas arkitekturajn problemojn, simpligas kodbazan prizorgadon kaj enkondukas pli sekurajn datumtipojn.
    • La subsistemo fscrypt, kiu estas uzata por travidebla ĉifrado de dosieroj kaj dosierujoj, aldonis subtenon por la ĉifrada algoritmo SM4 (ĉina normo GB/T 32907-2016).
    • La kapablo konstrui la kernon sen subteno de NFSv2 estis provizita (en la estonteco ili planas tute ĉesi subteni NFSv2).
    • La organizo de kontrolado de alirrajtoj al NVMe-aparatoj estis ŝanĝita. Provizas la kapablon legi kaj skribi al NVMe-aparato se la skribprocezo havas aliron al la dediĉita dosiero de la aparato (antaŭe la procezo devis havi la permeson CAP_SYS_ADMIN).
    • Forigis la pakaĵŝoforon de KD/DVD, kiu estis malrekomendita en 2016.
  • Virtualigo kaj Sekureco
    • Nova metodo de protekto kontraŭ la vundebleco de Retbleed estis efektivigita en Intel kaj AMD-CPUoj, uzante vokan profundan spuradon, kiu ne malrapidigas laboron tiom kiom la antaŭe aktuala protekto kontraŭ Retbleed. Por ebligi la novan reĝimon, la kerna komandlinia parametro "retbleed=stuff" estis proponita.
    • Aldonis hibridan mekanismon de protekto de fluo de instrukcioj FineIBT, kombinante la uzon de instrukcioj de aparataro Intel IBT (Indirect Branch Tracking) kaj programaro-protekto kCFI (kernel Control Flow Integrity) por bloki malobservon de la normala ekzekuta ordo (kontrolfluo) kiel rezulto de la uzo. de ekspluatoj kiuj modifas montrilojn konservitajn en memoro pri funkcioj. FineIBT permesas ekzekuton per nerekta salto nur en la kazo de salto al la ENDBR-instrukcio, kiu estas metita ĉe la komenco mem de la funkcio. Plie, per analogeco kun la kCFI-mekanismo, hashoj tiam estas kontrolitaj por garantii la neŝanĝeblecon de montriloj.
    • Aldonitaj restriktoj por bloki atakojn kiuj manipulas la generacion de "oops" ŝtatoj, post kiuj problemaj taskoj estas kompletigitaj kaj la ŝtato estas restarigita sen haltigi la sistemon. Kun tre granda nombro da vokoj al la "oops" ŝtato, okazas referenca nombrilo superfluo (refkalkulo), kiu permesas ekspluaton de vundeblecoj kaŭzitaj de NULL-montriloj dereferences. Por protekti kontraŭ tiaj atakoj, limo estis aldonita al la kerno por la maksimuma nombro da "oops" ellasiloj, post superado de kiuj la kerno komencos transiron al la "paniko" stato sekvita de rekomenco, kio ne permesos atingi la nombro da ripetoj necesaj por superflui la refkalkulon. Defaŭlte, la limo estas agordita al 10 mil "oops", sed se vi volas, ĝi povas esti ŝanĝita per la parametro oops_limit.
    • Aldonita agorda parametro LEGACY_TIOCSTI kaj sysctl legacy_tiocsti por malŝalti la kapablon meti datenojn en la terminalon uzante la ioctl TIOCSTI, ĉar tiu funkcieco povas esti uzita por anstataŭigi arbitrajn signojn en la terminalenigbufron kaj simuli uzantan enigon.
    • Nova speco de interna strukturo, encoded_page, estas proponita, en kiu la pli malaltaj bitoj de la montrilo estas utiligitaj por stoki kromajn informojn uzitajn por protekti kontraŭ hazarda malreferenco de la montrilo (se dereferenco estas fakte necesa, tiuj kromaj bitoj devas esti malbaritaj unue) .
    • Sur la platformo ARM64, ĉe la ekfunkciigo, estas eble ebligi aŭ malŝalti la programaran efektivigon de la mekanismo Shadow Stack, kiu estas uzata por protekti kontraŭ anstataŭigo de la revenadreso de funkcio en kazo de bufro-superfluo sur la stako ( la esenco de la protekto estas konservi la revenadreson en aparta "ombra" stako post kiam kontrolo estas transdonita al la funkcio kaj reakiro de la donita adreso antaŭ ol eliri la funkcion). Subteno por aparataro kaj programaro efektivigoj de Shadow Stack en unu kerno-asembleo ebligas al vi uzi unu kernon sur malsamaj ARM-sistemoj, sendepende de ilia subteno por instrukcioj por montra aŭtentikigo. La inkludo de programaro efektivigas per la anstataŭigo de la necesaj instrukcioj en la kodo dum ŝarĝo.
    • Aldonita subteno por uzado de la nesinkrona elira sciiga mekanismo sur Intel-procesoroj, kiu permesas detekti unupaŝajn atakojn kontraŭ kodo efektivigita en SGX-enklavoj.
    • Aro de operacioj estas proponita kiu permesas al la hiperviziero subteni petojn de Intel TDX (Trusted Domain Extensions) gastsistemoj.
    • La kernaj konstruaj agordoj RANDOM_TRUST_BOOTLOADER kaj RANDOM_TRUST_CPU estis forigitaj, favore al la respondaj komandliniaj opcioj random.trust_bootloader kaj random.trust_cpu.
    • La mekanismo Landlock, kiu ebligas vin limigi la interagadon de grupo da procezoj kun la ekstera medio, aldonis subtenon por la flago LANDLOCK_ACCESS_FS_TRUNCATE, kiu ebligas kontroli la ekzekuton de dosiero-tranĉa operacioj.
  • Reta subsistemo
    • Por IPv6, subteno por PLB (Protective Load Balancing) estis aldonita, ŝarĝbalanca mekanismo inter retaj ligiloj celantaj redukti troŝarĝajn punktojn sur datencentraj ŝaltiloj. Ŝanĝante la IPv6 Fluo-Etikedon, la PLB hazarde ŝanĝas pakaĵetvojojn por ekvilibrigi ŝarĝon sur ŝaltilhavenoj. Por redukti pakaĵreordigon, ĉi tiu operacio estas farita post periodoj de neaktiva kiam eble. La uzo de PLB en Google datumcentroj reduktis ŝarĝan malekvilibron sur ŝaltilhavenoj je mezumo de 60%, reduktis pakaĵetperdon je 33%, kaj reduktis latencia je 20%.
    • Aldonita pelilo por MediaTek-aparatoj subtenantaj Wi-Fi 7 (802.11be).
    • Aldonita subteno por 800-gigabitaj ligiloj.
    • Aldonis la kapablon renomi retajn interfacojn sur la flugo, sen ĉesigi laboron.
    • Mencio de la IP-adreso al kiu alvenis la pakaĵo estis aldonita al la protokolaj mesaĝoj pri SYN-inundo.
    • Por UDP, la kapablo uzi apartajn hashtabelojn por malsamaj retaj nomspacoj estis efektivigita.
    • Por retpontoj, subteno por la MAB (MAC Authentication Bypass) aŭtentikigmetodo estis efektivigita.
    • Por la CAN-protokolo (CAN_RAW), subteno por la SO_MARK-soketreĝimo estis efektivigita por alkroĉado de fwmark-bazitaj trafikfiltriloj.
    • ipset efektivigas novan bitmask-parametron, kiu ebligas al vi agordi maskon bazitan sur arbitraj bitoj en la IP-adreso (ekzemple, "ipset create set1 hash:ip bitmask 255.128.255.0").
    • Aldonita subteno por prilaborado de internaj kaplinioj ene de tunelaj pakoj al nf_tables.
  • Ekipaĵo
    • La "accel" subsistemo estis aldonita kun la efektivigo de kadro por komputilaj akceliloj, kiuj povas esti liveritaj aŭ en la formo de individuaj ASICoj aŭ en la formo de IP-blokoj ene de la SoC kaj GPU. Ĉi tiuj akceliloj ĉefe celas akceli la solvon de maŝinlernado problemoj.
    • La amdgpu-ŝoforo inkluzivas subtenon por la GC, PSP, SMU kaj NBIO IP-komponentoj. Por ARM64-sistemoj, subteno por DCN (Display Core Next) estas efektivigita. La efektivigo de protektita ekranproduktado estis movita de uzado de DCN10 al DCN21 kaj nun povas esti uzata dum ligado de pluraj ekranoj.
    • La i915 (Intel) ŝoforo stabiligis subtenon por diskretaj Intel Arc (DG2/Alchemist) vidkartoj.
    • La Nouveau-ŝoforo subtenas GPU-ojn NVIDIA GA102 (RTX 30) bazitajn sur la Ampere-arkitekturo. Por kartoj nva3 (GT215), la kapablo kontroli la kontraŭlumon estis aldonita.
    • Aldonita subteno por sendrataj adaptiloj bazitaj sur Realtek 8852BE, Realtek 8821CU, 8822BU, 8822CU, 8723DU (USB) kaj MediaTek MT7996 blatoj, Broadcom BCM4377/4378/4387 Bluetooth-interfacoj, same kiel Motorcomm NVIDIA-Regilo Tegra8521 kaj Ethernets.
    • Aldonita ASoC (ALSA System on Chip) subteno por enkonstruitaj sonaj blatoj HP Stream 8, Advantech MICA-071, Dell SKU 0C11, Intel ALC5682I-VD, Xiaomi Redmi Book Pro 14 2022, i.MX93, Armada 38x, RK3588. Aldonita subteno por Focusrite Saffire Pro 40 soninterfaco Aldonita Realtek RT1318 sonkodeko.
    • Aldonita subteno por Sony saĝtelefonoj kaj tablojdoj (Xperia 10 IV, 5 IV, X kaj X kompaktaj, OnePlus One, 3, 3T kaj Nord N100, Xiaomi Poco F1 kaj Mi6, Huawei Watch, Google Pixel 3a, Samsung Galaxy Tab 4 10.1.
    • Aldonita subteno por ARM SoC kaj Apple T6000 (M1 Pro), T6001 (M1 Max), T6002 (M1 Ultra), Qualcomm MSM8996 Pro (Snapdragon 821), SM6115 (Snapdragon 662), SM4250 (Snapdragon 460), SM6375 (Snapdragon 695), 670napdragon tabuloj , SDM670 (Snapdragon 8976), MSM652 (Snapdragon 8956), MSM650 (Snapdragon 3326), RK351 Odroid-Go/rg310, Zyxel NSA8S, InnoComm i.MXXNUMXMM, Odroid Go Ultra.

Samtempe, Latin American Free Software Foundation formis version de la tute libera kerno 6.2 - Linukso-libre 6.2-gnu, malplenigita de elementoj de firmware kaj ŝoforoj enhavantaj proprietajn komponentojn aŭ sekciojn de kodo, kies amplekso estas limigita de la fabrikanto. La nova eldono purigas novajn makulojn en la nouveau-ŝoforo. Blob-ŝarĝado estas malŝaltita en mt7622, ​​​​mt7996 wifi kaj bcm4377 bluetooth-ŝoforoj. Purigis blobnomojn en dts-dosieroj por la Aarch64-arkitekturo. Ĝisdatigita blob-purigadkodo en diversaj ŝoforoj kaj subsistemoj. Ĉesis purigi la s5k4ecgx-ŝoforon, ĉar ĝi estis forigita de la kerno.

fonto: opennet.ru

Aldoni komenton