Izdaja jedra Linuxa 5.17

Po dveh mesecih razvoja je Linus Torvalds predstavil izdajo jedra Linux 5.17. Med najbolj opaznimi spremembami: nov sistem za upravljanje zmogljivosti za procesorje AMD, možnost rekurzivnega preslikave ID-jev uporabnikov v datotečnih sistemih, podpora za prenosne prevedene programe BPF, prehod generatorja psevdonaključnih števil na algoritem BLAKE2s, pripomoček RTLA za analizo izvajanja v realnem času, novo zaledje fscache za predpomnjenje omrežnih datotečnih sistemov, možnost dodajanja imen anonimnim operacijam mmap.

Nova različica vključuje 14203 popravkov od 1995 razvijalcev, velikost popravka je 37 MB (spremembe so vplivale na 11366 datotek, dodanih je bilo 506043 vrstic kode, izbrisanih je bilo 250954 vrstic). Približno 44 % vseh sprememb, uvedenih v 5.17, je povezanih z gonilniki naprav, približno 16 % sprememb je povezanih s posodabljanjem kode, specifične za arhitekture strojne opreme, 15 % je povezanih z omrežnim skladom, 4 % je povezanih z datotečnimi sistemi in 4 % so povezani z notranjimi podsistemi jedra.

Glavne novosti v jedru 5.17:

  • Diskovni podsistem, V/I in datotečni sistemi
    • Implementirana možnost ugnezdenega preslikave uporabniških ID-jev nameščenih datotečnih sistemov, ki se uporablja za primerjavo datotek določenega uporabnika na nameščeni tuji particiji z drugim uporabnikom v trenutnem sistemu. Dodana funkcija vam omogoča rekurzivno uporabo preslikav na vrhu datotečnih sistemov, za katere je preslikava že uporabljena.
    • Podsistem fscache, ki se uporablja za organizacijo predpomnjenja v lokalnem datotečnem sistemu podatkov, prenesenih prek omrežnih datotečnih sistemov, je bil v celoti prepisan. Novo izvedbo odlikuje precejšnja poenostavitev kode in zamenjava zapletenih operacij načrtovanja in sledenja stanju objektov s preprostejšimi mehanizmi. Podpora za novi fscache je implementirana v datotečnem sistemu CIFS.
    • Podsistem za sledenje dogodkov v fanotify FS implementira novo vrsto dogodka, FAN_RENAME, ki vam omogoča takojšnje prestrezanje operacije preimenovanja datotek ali imenikov (prej sta bila za obdelavo preimenovanj uporabljena dva ločena dogodka FAN_MOVED_FROM in FAN_MOVED_TO).
    • Datotečni sistem Btrfs ima optimizirane operacije beleženja in fsync za velike imenike, implementirane s kopiranjem samo indeksnih ključev in zmanjšanjem količine zabeleženih metapodatkov. Zagotovljena je bila podpora za indeksiranje in iskanje po velikosti zapisov prostega prostora, kar je zmanjšalo zakasnitev za približno 30 % in čas iskanja. Dovoljeno je prekiniti postopke defragmentacije. Možnost dodajanja naprav pri uravnoteženju med pogoni je onemogočena, tj. pri priklopu datotečnega sistema z možnostjo skip_balance.
    • Predlagana je bila nova sintaksa za namestitev datotečnega sistema Ceph, ki rešuje obstoječe težave, povezane z vezavo na naslove IP. Poleg naslovov IP lahko zdaj za identifikacijo strežnika uporabite identifikator gruče (FSID): mount -t ceph [e-pošta zaščitena]_name=/[subdir] mnt -o mon_addr=monip1[:port][/monip2[:port]]
    • Datotečni sistem Ext4 se je premaknil na nov API za namestitev, ki ločuje korake razčlenjevanja možnosti namestitve in konfiguracije superbloka. Opustili smo podporo za možnosti priklopa lazytime in nolazytime, ki sta bili dodani kot začasna sprememba za olajšanje prehoda util-linux na uporabo zastavice MS_LAZYTIME. Dodana podpora za nastavitev in branje oznak v FS (ioctl FS_IOC_GETFSLABEL in FS_IOC_SETFSLABEL).
    • NFSv4 je v imenih datotek in imenikov dodal podporo za delo v datotečnih sistemih, ki niso občutljivi na velike in male črke. NFSv4.1+ dodaja podporo za definiranje združenih sej (trunking).
  • Pomnilniške in sistemske storitve
    • Dodan gonilnik amd-pstate za zagotavljanje dinamičnega nadzora frekvence za optimalno delovanje. Gonilnik podpira AMD CPE in APU od generacije Zen 2, razvit skupaj z Valve in je namenjen izboljšanju učinkovitosti upravljanja z energijo. Za prilagodljive spremembe frekvence se uporablja mehanizem CPPC (Collaborative Processor Performance Control), ki vam omogoča natančnejše spreminjanje indikatorjev (ni omejeno na tri ravni zmogljivosti) in hitrejši odziv na spremembe stanja kot predhodno uporabljeno P-stanje na osnovi ACPI gonilniki (CPUFreq).
    • Podsistem eBPF ponuja upravljalnik bpf_loop(), ki omogoča alternativno organiziranje zank v programih eBPF, hitrejše in enostavnejše za preverjanje s strani overitelja.
    • Na ravni jedra je implementiran mehanizem CO-RE (Compile Once - Run Everywhere), ki omogoča samo enkratno prevajanje kode programov eBPF in uporabo posebnega univerzalnega nalagalnika, ki prilagodi naloženi program trenutnemu tipu jedra in BTF. (oblika tipa BPF).
    • Območjem zasebnega anonimnega (dodeljenega prek malloc) pomnilnika je mogoče dodeliti imena, kar lahko poenostavi odpravljanje napak in optimizacijo porabe pomnilnika v aplikacijah. Imena so dodeljena prek prctl z zastavico PR_SET_VMA_ANON_NAME in so prikazana v /proc/pid/maps in /proc/pid/smaps v obliki "[anon: ]".
    • Razporejevalnik opravil omogoča sledenje in prikaz v /proc/PID/sched času, ki ga porabijo procesi v stanju prisilnega mirovanja, ki se na primer uporablja za zmanjšanje obremenitve, ko se procesor pregreje.
    • Dodan modul gpio-sim, zasnovan za simulacijo čipov GPIO za testiranje.
    • Ukazu »perf ftrace« je dodan podukaz »latency« za ustvarjanje histogramov z informacijami o zakasnitvi.
    • Dodan nabor pripomočkov "RTLA" za analizo dela v realnem času. Vključuje pripomočke, kot sta osnoise (določa vpliv operacijskega sistema na izvajanje naloge) in timerlat (spremeni zakasnitve, povezane s časovnikom).
    • Druga serija popravkov je bila integrirana z implementacijo koncepta stranskih folij, ki spominjajo na sestavljene strani, vendar imajo izboljšano semantiko in jasnejšo organizacijo dela. Uporaba tomov vam omogoča, da pospešite upravljanje pomnilnika v nekaterih podsistemih jedra. Predlagani popravki so dokončali pretvorbo predpomnilnika strani v uporabo knjig in dodali začetno podporo za knjige v datotečnem sistemu XFS.
    • Dodan način gradnje »make mod2noconfig«, ki ustvari konfiguracijo, ki zbere vse onemogočene podsisteme v obliki modulov jedra.
    • Zahteve za različico LLVM/Clang, ki se lahko uporablja za gradnjo jedra, so bile povečane. Build zdaj zahteva vsaj izdajo LLVM 11.
  • Virtualizacija in varnost
    • Predlagana je posodobljena izvedba generatorja psevdonaključnih števil RDRAND, ki je odgovoren za delovanje naprav /dev/random in /dev/urandom, pri čemer je opazen prehod na uporabo zgoščevalne funkcije BLAKE2s namesto SHA1 za operacije mešanja entropije. Sprememba je izboljšala varnost generatorja psevdonaključnih števil z odpravo problematičnega algoritma SHA1 in odpravo prepisovanja inicializacijskega vektorja RNG. Ker je algoritem BLAKE2s boljši od SHA1 v zmogljivosti, je njegova uporaba tudi pozitivno vplivala na zmogljivost.
    • Dodana zaščita pred ranljivostmi v procesorjih, ki jih povzroči špekulativno izvajanje navodil po operacijah brezpogojnega skoka naprej. Težava se pojavi zaradi vnaprejšnje obdelave navodil, ki takoj sledijo navodilu razvejanja v pomnilniku (SLS, Straight Line Speculation). Omogočanje zaščite zahteva gradnjo s trenutno testirano izdajo GCC 12.
    • Dodan je mehanizem za sledenje štetju referenc (refcount, reference-count), katerega cilj je zmanjšati število napak pri štetju referenc, ki vodijo do dostopa do pomnilnika po tem, ko se ta sprosti. Mehanizem je trenutno omejen na omrežni podsistem, v prihodnosti pa ga bo mogoče prilagoditi tudi drugim delom jedra.
    • Izvedena so bila razširjena preverjanja novih vnosov v tabeli strani pomnilnika procesa, ki omogočajo odkrivanje določenih vrst poškodb in zaustavitev sistema ter blokiranje napadov v zgodnji fazi.
    • Dodana možnost razpakiranja modulov jedra neposredno s samim jedrom in ne z upravljalcem v uporabniškem prostoru, kar omogoča uporabo modula LoadPin LSM za zagotovitev, da se moduli jedra naložijo v pomnilnik iz preverjene pomnilniške naprave.
    • Zagotovljen sklop z zastavico »-Wcast-function-type«, ki omogoča opozorila o prevajanju funkcijskih kazalcev na nezdružljiv tip.
    • Dodan virtualni gostiteljski gonilnik pvUSB za hipervizor Xen, ki omogoča dostop do naprav USB, posredovanih gostujočim sistemom (omogoča gostujočim sistemom dostop do fizičnih naprav USB, dodeljenih gostujočemu sistemu).
    • Dodan je modul, ki omogoča interakcijo prek Wi-Fi s podsistemom IME (Intel Management Engine), ki je na voljo v večini sodobnih osnovnih plošč z Intel procesorji in je implementiran kot ločen mikroprocesor, ki deluje neodvisno od CPE.
    • Za arhitekturo ARM64 je bila uvedena podpora za orodje za odpravljanje napak KCSAN (Kernel Concurrency Sanitizer), zasnovano za dinamično zaznavanje pogojev tekmovanja v jedru.
    • Za 32-bitne sisteme ARM je dodana možnost uporabe mehanizma KFENCE za odkrivanje napak pri delu s pomnilnikom.
    • Hipervizor KVM dodaja podporo za navodila AMX (Advanced Matrix Extensions), implementirana v prihajajočih strežniških procesorjih Intel Xeon Scalable.
  • Omrežni podsistem
    • Dodana podpora za operacije razbremenitve, povezane z upravljanjem prometa, na strani omrežnih naprav.
    • Dodana možnost uporabe MCTP (Management Component Transport Protocol) prek serijskih naprav. MCTP se lahko uporablja za komunikacijo med krmilniki upravljanja in njihovimi povezanimi napravami (gostiteljski procesorji, periferne naprave itd.).
    • Sklad TCP je bil optimiziran, na primer za izboljšanje zmogljivosti klicev recvmsg, implementirana je bila odložena sprostitev medpomnilnikov vtičnic.
    • Na ravni avtoritete CAP_NET_RAW je dovoljena nastavitev načinov SO_PRIORITY in SO_MARK prek funkcije setockopt.
    • Za IPv4 je neobdelane vtičnice dovoljeno vezati na nelokalne naslove IP z uporabo možnosti IP_FREEBIND in IP_TRANSPARENT.
    • Dodan sysctl arp_missed_max za konfiguracijo praga števila napak med preverjanjem nadzornika ARP, po katerem se omrežni vmesnik postavi v onemogočeno stanje.
    • Zagotovljena možnost konfiguriranja ločenih vrednosti sysctl min_pmtu in mtu_expires za omrežne imenske prostore.
    • API-ju ethtool dodana možnost nastavitve in določanja velikosti medpomnilnikov za dohodne in odhodne pakete.
    • Netfilter je dodal podporo za filtriranje tranzitnega prometa pppoe v omrežnem mostu.
    • Modul ksmbd, ki implementira datotečni strežnik s protokolom SMB3, ima dodano podporo za izmenjavo ključev, omogočena omrežna vrata 445 za smbdirect in dodano podporo za parameter “smb2 max credit”.
  • Оборудование
    • Podsistemu drm (Direct Renderering Manager) in gonilniku i915 je bila dodana podpora za zaslone za prikazovanje zaupnih informacij, nekateri prenosniki so na primer opremljeni z zasloni z vgrajenim načinom zaupnega gledanja, kar otežuje ogled od zunaj. . Dodane spremembe vam omogočajo povezavo specializiranih gonilnikov za takšne zaslone in nadzor zaupnih načinov brskanja z nastavitvijo lastnosti v običajnih gonilnikih KMS.
    • Gonilnik amdgpu vključuje podporo za tehnologijo odpravljanja napak STB (Smart Trace Buffer) za vse grafične procesorje AMD, ki jo podpirajo. STB omogoča lažjo analizo okvar in prepoznavanje izvora težav tako, da v posebnem medpomnilniku shrani podatke o funkcijah, ki so bile izvedene pred zadnjo okvaro.
    • Gonilnik i915 dodaja podporo za čipe Intel Raptor Lake S in privzeto omogoča podporo za grafični podsistem čipov Intel Alder Lake P. Preko vmesnika VESA DPCD je mogoče nadzorovati osvetlitev zaslona.
    • Podpora za strojno pospeševanje drsenja v konzoli je bila vrnjena v gonilnike fbcon/fbdev.
    • Nadaljnja integracija sprememb za podporo čipom Apple M1. Implementirana možnost uporabe gonilnika simpledrm v sistemih s čipom Apple M1 za izhod prek okvirnega medpomnilnika, ki ga zagotavlja vdelana programska oprema.
    • Dodana podpora za ARM SoС, naprave in plošče Snapdragon 7c, 845 in 888 (Sony Xperia XZ2 / XZ2C / XZ3, Xperia 1 III / 5 III, Samsung J5, Microsoft Surface Duo 2), Mediatek MT6589 (Fairphone FP1), Mediatek MT8183 ( Acer Chromebook 314), Mediatek MT7986a/b (uporablja se v usmerjevalnikih Wi-Fi), Broadcom BCM4908 (Netgear RAXE500), Qualcomm SDX65, Samsung Exynos7885, Renesas R-Car S4-8, TI J721s2, TI SPEAr320s, NXP i.MX8 ULP8 , Aspeed AST2500/AST2600, Engicam i.Core STM32MP1, Allwinner Tanix TX6, Facebook Bletchley BMC, Goramo MultiLink, dostopna točka JOZ, Y Soft IOTA Crux/Crux+, t6000/t6001 MacBook Pro 14/16.
    • Dodana podpora za procesorje ARM Cortex-M55 in Cortex-M33.
    • Dodana podpora za naprave, ki temeljijo na CPU MIPS: Linksys WRT320N v1, Netgear R6300 v1, Netgear WN2500RP v1/v2.
    • Dodana podpora za StarFive JH7100 SoC, ki temelji na arhitekturi RISC-V.
    • Dodan gonilnik lenovo-yogabook-wmi za nadzor osvetlitve tipkovnice in dostop do različnih senzorjev v Lenovo Yoga Book.
    • Dodan gonilnik asus_wmi_sensors za dostop do senzorjev, ki se uporabljajo na matičnih ploščah Asus X370, X470, B450, B550 in X399, ki temeljijo na procesorjih AMD Ryzen.
    • Dodan gonilnik x86-android-tablets za tablične računalnike s procesorjem x86, ki so dobavljeni s platformo Android.
    • Dodana podpora za zaslone na dotik TrekStor SurfTab duo W1 in elektronsko pero za tablične računalnike Chuwi Hi10 Plus in Pro.
    • Gonilniki za SoC Tegra 20/30 imajo dodano podporo za upravljanje napajanja in napetosti. Omogoča zagon na starejših 32-bitnih napravah Tegra SoC, kot so ASUS Prime TF201, Pad TF701T, Pad TF300T, Infinity TF700T, EeePad TF101 in Pad TF300TG.
    • Dodani gonilniki za industrijske računalnike Siemens.
    • Dodana podpora za LCD plošče Sony Tulip Truly NT35521, Vivax TPC-9150, Innolux G070Y2-T02, BOE BF060Y8M-AJ0, JDI R63452, Novatek NT35950, Wanchanglong W552946ABA in Team Source Display TST043015CMHX.
    • Dodana podpora za zvočne sisteme in kodeke AMD Renoir ACP, Asahi Kasei Microdevices AKM4375, sisteme Intel, ki uporabljajo NAU8825/MAX98390, Mediatek MT8915, nVidia Tegra20 S/PDIF, Qualcomm ALC5682I-VS, Texas Instruments TLV320ADC3xxx. Težave s Tegra194 HD-avdio so bile odpravljene. Dodana podpora HDA za kodeke CS35L41. Izboljšana podpora za zvočne sisteme za prenosnike Lenovo in HP ter matične plošče Gigabyte.

Vir: opennet.ru

Dodaj komentar