Izdaja jedra Linuxa 5.15

Po dveh mesecih razvoja je Linus Torvalds predstavil izdajo jedra Linux 5.15. Pomembne spremembe vključujejo: nov gonilnik NTFS s podporo za pisanje, modul ksmbd z implementacijo strežnika SMB, podsistem DAMON za spremljanje dostopa do pomnilnika, primitive za zaklepanje v realnem času, podporo za fs-verity v Btrfs, sistemski klic process_mrelease za pomnilnik odzivnih sistemov na stradanje, modul za oddaljeno certificiranje dm-ima.

Nova različica vključuje 13499 popravkov od 1888 razvijalcev, velikost popravka je 42 MB (spremembe so vplivale na 10895 datotek, dodanih je bilo 632522 vrstic kode, izbrisanih je bilo 299966 vrstic). Približno 45 % vseh sprememb, uvedenih v 5.15, je povezanih z gonilniki naprav, približno 14 % sprememb je povezanih s posodabljanjem kode, specifične za arhitekture strojne opreme, 14 % je povezanih z omrežnim skladom, 6 % je povezanih z datotečnimi sistemi in 3 % so povezani z notranjimi podsistemi jedra.

Glavne novosti:

  • Diskovni podsistem, V/I in datotečni sistemi
    • Jedro je sprejelo novo izvedbo datotečnega sistema NTFS, ki ga je odprla programska oprema Paragon. Novi gonilnik lahko deluje v načinu pisanja in podpira vse funkcije trenutne različice NTFS 3.1, vključno z razširjenimi atributi datotek, seznami dostopa (ACL), načinom stiskanja podatkov, učinkovitim delom s praznimi prostori v datotekah (sparse) in ponovnim predvajanjem sprememb iz dnevnik za obnovitev celovitosti po napakah.
    • Datotečni sistem Btrfs podpira mehanizem fs-verity, ki se uporablja za pregleden nadzor celovitosti in pristnosti posameznih datotek z uporabo kriptografskih zgoščenih vrednosti ali ključev, povezanih z datotekami, shranjenih v območju metapodatkov. Prej je bil fs-verity na voljo samo za datotečna sistema Ext4 in F2fs.

      Btrfs dodaja tudi podporo za preslikavo ID-jev uporabnikov za nameščene datotečne sisteme (prej podprto za datotečne sisteme FAT, ext4 in XFS). Ta funkcija vam omogoča primerjavo datotek določenega uporabnika na nameščeni tuji particiji z drugimi uporabniki v trenutnem sistemu.

      Druge spremembe Btrfs vključujejo: hitrejše dodajanje ključev v indeks imenika za izboljšanje zmogljivosti ustvarjanja datotek; zmožnost dela raid0 z eno napravo in raid10 z dvema (na primer med postopkom ponovne konfiguracije polja); možnost “rescue=ibadroots” za prezrtje nepravilnega drevesa obsega; pospešitev operacije »pošlji«; zmanjšanje konfliktov pri zaklepanju med operacijami preimenovanja; možnost uporabe sektorjev 4K v sistemih z velikostjo pomnilniške strani 64K.

    • V XFS je bila zmožnost uporabe datumov po letu 2038 v datotečnem sistemu stabilizirana. Implementiran mehanizem za odloženo deaktivacijo inode in podporo za odloženo namestitev in odstranitev atributov datotek. Za odpravo težav je bila odstranjena možnost onemogočanja diskovnih kvot za že nameščene particije (kvote lahko prisilno onemogočite, vendar se bo izračun, povezan z njimi, nadaljeval, zato je za njihovo popolno onemogočanje potrebna ponovna namestitev).
    • V EXT4 je bilo opravljeno delo za povečanje zmogljivosti pisanja medpomnilnikov delalloc in obdelave osirotelih datotek, ki še vedno obstajajo zaradi dejstva, da ostajajo odprte, vendar niso povezane z imenikom. Obdelava operacij zavrženja je bila premaknjena iz niti jbd2 kthread, da bi se izognili blokiranju operacij z metapodatki.
    • F2FS je dodal možnost »discard_unit=block|segment|section« za povezovanje operacij zavrženja (označevanje sproščenih blokov, ki morda ne bodo več fizično shranjeni) na poravnavo glede na blok, sektor, segment ali odsek. Dodana podpora za sledenje spremembam zakasnitve V/I.
    • Datotečni sistem EROFS (Razširljiv datotečni sistem samo za branje) dodaja neposredno podporo za V/I za datoteke, shranjene brez stiskanja, kot tudi podporo za fiemap.
    • OverlayFS izvaja pravilno ravnanje z zastavicami za priklop "immutable", "append-only", "sync" in "noatime".
    • NFS ima izboljšano obravnavanje situacij, ko se strežnik NFS preneha odzivati ​​na zahteve. Dodana možnost priklopa s strežnika, ki je že v uporabi, vendar je dostopen prek drugega omrežnega naslova.
    • Začele so se priprave na prepis podsistema FSCACHE.
    • Dodana podpora za particije EFI z nestandardno postavitvijo tabel GPT.
    • Mehanizem fanotify izvaja novo zastavico FAN_REPORT_PIDFD, ki povzroči vključitev pidfd v vrnjene metapodatke. Pidfd pomaga pri obravnavanju situacij ponovne uporabe PID za natančnejšo identifikacijo procesov, ki dostopajo do nadzorovanih datotek (pidfd je povezan z določenim procesom in se ne spremeni, medtem ko je PID lahko povezan z drugim procesom, ko se trenutni proces, povezan s tem PID-om, zaključi).
    • Sistemskemu klicu move_mount() dodana možnost dodajanja točk vpenjanja obstoječim skupinam v skupni rabi, ki rešuje težave s shranjevanjem in obnavljanjem stanja procesa v CRIU, ko je več prostorov vpetja v skupni rabi v izoliranih vsebnikih.
    • Dodana zaščita pred skritimi tekmovalnimi pogoji, ki bi lahko povzročili poškodbo datoteke pri izvajanju branja predpomnilnika med obdelavo praznin v datoteki.
    • Podpora za obvezno (obvezno) zaklepanje datotek, ki se izvaja prek blokiranja sistemskih klicev, ki vodijo do spremembe datoteke, je bila ukinjena. Zaradi možnih tekmovalnih pogojev so te ključavnice veljale za nezanesljive in so bile pred mnogimi leti opuščene.
    • Odstranjen je bil podsistem LightNVM, ki je omogočal neposreden dostop do pogona SSD, mimo emulacijske plasti. LightNVM je izgubil pomen po pojavu standardov NVMe, ki omogočajo zoniranje (ZNS, Zoned Namespace).
  • Pomnilniške in sistemske storitve
    • Implementiran je podsistem DAMON (Data Access MONitor), ki omogoča spremljanje aktivnosti v zvezi z dostopom do podatkov v RAM-u v povezavi z izbranim procesom, ki teče v uporabniškem prostoru. Podsistem omogoča analizo, do katerih pomnilniških območij je proces dostopal med celotnim delovanjem in katera pomnilniška področja so ostala nezahtevana. DAMON ima nizko obremenitev procesorja, nizko porabo pomnilnika, visoko natančnost in predvidljive stalne stroške, neodvisno od velikosti. Podsistem lahko uporablja tako jedro za optimizacijo upravljanja pomnilnika kot tudi pripomočki v uporabniškem prostoru, da razumejo, kaj točno počne proces, in optimizirajo uporabo pomnilnika, na primer sprostitev odvečnega pomnilnika za sistem.
    • Sistemski klic process_mrelease je implementiran za pospešitev postopka sproščanja pomnilnika procesa, ki zaključi svojo izvedbo. V normalnih okoliščinah sprostitev virov in prekinitev procesa nista takojšnja in sta lahko odložena zaradi različnih razlogov, kar moti sisteme zgodnjega odziva uporabniškega prostora, kot sta oomd (zagotavlja systemd) in lmkd (uporablja ga Android). S klicem process_mrelease lahko taki sistemi bolj predvidljivo sprožijo povrnitev pomnilnika iz vsiljenih procesov.
    • Iz jedrne veje PREEMPT_RT, ki razvija podporo za delovanje v realnem času, so prenesene različice primitivov za organizacijo ključavnic mutex, ww_mutex, rw_semaphore, spinlock in rwlock, ki temeljijo na podsistemu RT-Mutex. Spremembe so bile dodane razdelilniku plošč SLUB za izboljšanje delovanja v načinu PREEMPT_RT in zmanjšanje vpliva na prekinitve.
    • Podpora za atribut načrtovalnika opravil SCHED_IDLE je bila dodana v skupino cgroup, kar vam omogoča, da zagotovite ta atribut vsem procesom skupine, ki je vključena v določeno skupino cgroup. Tisti. ti procesi se bodo izvajali le, če v sistemu ne bo nobenih drugih nalog, ki čakajo na izvedbo. Za razliko od nastavitve atributa SCHED_IDLE za vsak proces posebej, se pri vezavi SCHED_IDLE na cgroup upošteva relativna teža nalog znotraj skupine pri izbiri naloge za izvedbo.
    • Mehanizem za upoštevanje porabe pomnilnika v skupini cgroup je bil razširjen z možnostjo sledenja dodatnim podatkovnim strukturam jedra, vključno s tistimi, ustvarjenimi za anketiranje, obdelavo signalov in imenske prostore.
    • Dodana je podpora za asimetrično razporejanje vezave opravil na procesorska jedra na arhitekturah, v katerih nekateri procesorji omogočajo izvajanje 32-bitnih opravil, nekateri pa delujejo samo v 64-bitnem načinu (na primer ARM). Novi način vam omogoča, da pri načrtovanju 32-bitnih nalog upoštevate samo procesorje, ki podpirajo 32-bitna opravila.
    • Asinhroni V/I vmesnik io_uring zdaj podpira odpiranje datotek neposredno v indeksni tabeli s fiksnimi datotekami, brez uporabe deskriptorja datoteke, kar omogoča znatno pospešitev nekaterih vrst operacij, vendar je v nasprotju s tradicionalnim postopkom Unixa uporabe deskriptorjev datotek za odpiranje datotek.

      io_uring za podsistem BIO (Block I/O Layer) implementira nov mehanizem recikliranja (“BIO recycling”), ki zmanjša stroške v procesu upravljanja notranjega pomnilnika in poveča število obdelanih I/O operacij na sekundo za približno 10 %. . io_uring dodaja tudi podporo za sistemske klice mkdirat(), symlinkat() in linkat().

    • Za programe BPF je bila uvedena možnost zahtevanja in obdelave dogodkov časovnika. Dodan je bil iterator za vtičnice UNIX in implementirana je bila možnost pridobivanja in nastavljanja možnosti vtičnice za setsockopt. BTF dumper zdaj podpira tipkane podatke.
    • V sistemih NUMA z različnimi vrstami pomnilnika, ki se razlikujejo po zmogljivosti, se ob zmanjkanju prostega prostora izločene pomnilniške strani prenesejo iz dinamičnega pomnilnika (DRAM) v počasnejši trajni pomnilnik (trajni pomnilnik), namesto da bi se te strani izbrisale. Preizkusi so pokazali, da takšne taktike običajno izboljšajo delovanje takih sistemov. NUMA nudi tudi možnost dodeljevanja pomnilniških strani za proces iz izbranega niza vozlišč NUMA.
    • Za arhitekturo ARC je implementirana podpora za tri- in štirinivojske tabele pomnilniških strani, kar bo dodatno omogočilo podporo za 64-bitne procesorje ARC.
    • Za arhitekturo s390 je implementirana možnost uporabe mehanizma KFENCE za odkrivanje napak pri delu s pomnilnikom in dodana podpora za detektor pogojev dirke KCSAN.
    • Dodana podpora za indeksiranje seznama izhodnih sporočil prek printk(), kar vam omogoča, da pridobite vsa taka sporočila hkrati in sledite spremembam v uporabniškem prostoru.
    • mmap() je odstranil podporo za možnost VM_DENYWRITE, koda jedra pa je bila odstranjena iz uporabe načina MAP_DENYWRITE, kar je zmanjšalo število situacij, ki vodijo do blokiranja pisanja v datoteko z napako ETXTBSY.
    • V podsistem sledenja je bila dodana nova vrsta preverjanj, »Sonde dogodkov«, ki jih je mogoče pripeti obstoječim dogodkom sledenja in tako definirati vaš lasten izhodni format.
    • Pri gradnji jedra s prevajalnikom Clang se zdaj uporablja privzeti sestavljalnik iz projekta LLVM.
    • Kot del projekta za odstranitev jedra kode, ki vodi do opozoril, ki jih izdaja prevajalnik, je bil izveden poskus s privzeto omogočenim načinom »-Werror«, v katerem so opozorila prevajalnika obdelana kot napake. V pripravah na izdajo 5.15 je Linus začel sprejemati le spremembe, ki niso povzročile opozoril pri gradnji jedra in je omogočil gradnjo z "-Werror", vendar se je nato strinjal, da je bila takšna odločitev preuranjena in je odložila privzeto omogočanje "-Werror" . Vključitev zastavice »-Werror« med sestavljanjem je nadzorovana s parametrom WERROR, ki je privzeto nastavljen na COMPILE_TEST, tj. Za zdaj je omogočeno samo za testne gradnje.
  • Virtualizacija in varnost
    • V Device Mapper (DM) je bil dodan nov upravljalnik dm-ima z implementacijo oddaljenega mehanizma certificiranja, ki temelji na podsistemu IMA (Integrity Measurement Architecture), ki omogoča zunanji storitvi, da preveri stanje podsistemov jedra, da zagotovi njihovo pristnost . V praksi dm-ima omogoča ustvarjanje shramb z uporabo Device Mapperja, ki so povezane z zunanjimi oblačnimi sistemi, v katerih se z IMA preverja veljavnost zagnane ciljne konfiguracije DM.
    • prctl() implementira novo možnost PR_SPEC_L1D_FLUSH, ki, ko je omogočena, povzroči, da jedro izprazni vsebino predpomnilnika prve ravni (L1D) vsakič, ko pride do preklopa konteksta. Ta način omogoča, selektivno za najpomembnejše procese, implementacijo dodatne zaščite pred uporabo stranskih kanalskih napadov, izvedenih za ugotavljanje podatkov, ki so se naselili v predpomnilniku kot posledica ranljivosti, ki jih povzroča špekulativno izvajanje navodil v CPE. Stroški omogočanja PR_SPEC_L1D_FLUSH (ni privzeto omogočen) so precejšnja kazen za zmogljivost.
    • Jedro je mogoče zgraditi z dodatkom zastavice »-fzero-call-used-regs=used-gpr« v GCC, ki zagotavlja, da so vsi registri ponastavljeni na nič, preden funkcija vrne nadzor. Ta možnost vam omogoča zaščito pred uhajanjem informacij iz funkcij in za 20 % zmanjša število blokov, primernih za izdelavo pripomočkov ROP (povratno usmerjeno programiranje) v podvigih.
    • Implementirana je bila možnost gradnje jeder za arhitekturo ARM64 v obliki odjemalcev za hipervizor Hyper-V.
    • Predlagano je novo ogrodje za razvoj gonilnikov »VDUSE«, ki omogoča implementacijo virtualnih blokovnih naprav v uporabniški prostor in uporabo Virtia kot transporta za dostop iz gostujočih sistemov.
    • Dodan gonilnik Virtio za vodilo I2C, ki omogoča posnemanje krmilnikov I2C v paravirtualizacijskem načinu z uporabo ločenih ozadij.
    • Dodan gonilnik Virtio gpio-virtio, ki gostom omogoča dostop do linij GPIO, ki jih zagotavlja gostiteljski sistem.
    • Dodana možnost omejitve dostopa do pomnilniških strani za gonilnike naprav s podporo za DMA v sistemih brez I/O MMU (enota za upravljanje pomnilnika).
    • Hipervizor KVM ima možnost prikaza statistike v obliki linearnih in logaritemskih histogramov.
  • Omrežni podsistem
    • Jedru je dodan modul ksmbd z implementacijo datotečnega strežnika, ki uporablja protokol SMB3. Modul dopolnjuje implementacijo odjemalca SMB, ki je bila prej na voljo v jedru, in je za razliko od strežnika SMB, ki deluje v uporabniškem prostoru, učinkovitejši v smislu zmogljivosti, porabe pomnilnika in integracije z naprednimi zmogljivostmi jedra. Ksmbd se oglašuje kot visoko zmogljiva razširitev Samba, pripravljena za vgradnjo, ki se po potrebi integrira z orodji in knjižnicami Samba. Zmožnosti ksmbd vključujejo izboljšano podporo za tehnologijo porazdeljenega predpomnjenja datotek (SMB leases) v lokalnih sistemih, kar lahko znatno zmanjša promet. V prihodnosti nameravajo dodati podporo za RDMA (»smbdirect«) in razširitve protokola, povezane s povečanjem zanesljivosti šifriranja in preverjanja z uporabo digitalnih podpisov.
    • Odjemalec CIFS ne podpira več NTLM in šibkejših algoritmov za preverjanje pristnosti, ki temeljijo na DES in se uporabljajo v protokolu SMB1.
    • Multicast podpora je implementirana pri implementaciji omrežnih mostov za vlan.
    • Gonilnik za povezovanje, ki se uporablja za združevanje omrežnih vmesnikov, ima dodano podporo za podsistem XDP (eXpress Data Path), ki omogoča manipulacijo omrežnih paketov na stopnji, preden jih obdela omrežni sklad jedra Linuxa.
    • Brezžični sklad mac80211 podpira 6GHZ STA (Special Temporary Authorization) v načinih LPI, SP in VLP, kot tudi možnost nastavitve posameznega TWT (Target Wake Time) v načinu dostopne točke.
    • Dodana podpora za MCTP (Management Component Transport Protocol), ki se uporablja za interakcijo med krmilniki upravljanja in povezanimi napravami (gostiteljski procesorji, periferne naprave itd.).
    • Integracija v jedro MPTCP (MultiPath TCP), razširitev protokola TCP za organizacijo delovanja povezave TCP z dostavo paketov hkrati po več poteh prek različnih omrežnih vmesnikov, povezanih z različnimi naslovi IP. Nova izdaja dodaja podporo za naslove v načinu fullmesh.
    • V netfilter so bili dodani upravljalniki za omrežne tokove, enkapsulirane v protokolu SRv6 (Segment Routing IPv6).
    • Dodana podpora za sockmap za pretočne vtičnice Unix.
  • Оборудование
    • Gonilnik amdgpu podpira APU-je Cyan Skillfish (opremljene z grafičnimi procesorji Navi 1x). Yellow Carp APU zdaj podpira video kodeke. Izboljšana podpora za GPU Aldebaran. Dodani novi identifikatorji zemljevidov, ki temeljijo na GPU Navi 24 »Beige Goby« in RDNA2. Predlagana je izboljšana izvedba virtualnih zaslonov (VKMS). Izvedena je podpora za spremljanje temperature čipov AMD Zen 3.
    • Gonilnik amdkfd (za diskretne grafične procesorje, kot je Polaris) implementira upravljalnik skupnega navideznega pomnilnika (SVM, skupni navidezni pomnilnik), ki temelji na podsistemu HMM (Heterogeneous memory management), ki omogoča uporabo naprav z lastnimi enotami za upravljanje pomnilnika (MMU). , enota za upravljanje pomnilnika), ki lahko dostopa do glavnega pomnilnika. Zlasti z uporabo HMM lahko organizirate skupni naslovni prostor med GPE in CPE, v katerem lahko GPE dostopa do glavnega pomnilnika procesa.
    • Gonilnik i915 za grafične kartice Intel razširja uporabo upravitelja video pomnilnika TTM in vključuje možnost upravljanja porabe energije na podlagi GuC (grafični mikrokrmilnik). Začele so se priprave na implementacijo podpore za grafično kartico Intel ARC Alchemist in grafično kartico Intel Xe-HP.
    • Gonilnik nouveau implementira nadzor osvetlitve ozadja za plošče eDP z uporabo DPCD (DisplayPort Configuration Data).
    • Gonilniku msm dodana podpora za Adreno 7c Gen 3 in Adreno 680 GPE.
    • Gonilnik IOMMU je implementiran za čip Apple M1.
    • Dodan zvočni gonilnik za sisteme, ki temeljijo na AMD Van Gogh APU.
    • Gonilnik Realtek R8188EU je bil dodan v uprizoritveno vejo, ki je nadomestila staro različico gonilnika (rtl8188eu) za brezžične čipe Realtek RTL8188EU 802.11 b/g/n.
    • Gonilnik ocp_pt je vključen za ploščo PCIe, ki jo je razvil Meta (Facebook) z implementacijo miniaturne atomske ure in sprejemnika GNSS, ki se lahko uporablja za organizacijo delovanja ločenih strežnikov za sinhronizacijo točnega časa.
    • Dodana podpora za pametne telefone Sony Xperia 10II (Snapdragon 665), Xiaomi Redmi 2 (Snapdragon MSM8916), Samsung Galaxy S3 (Snapdragon MSM8226), Samsung Gavini/Codina/Kyle.
    • Dodana podpora za ARM SoС in NVIDIA Jetson TX2 NX Developer Kit, Sancloud BBE Lite, PicoITX, DRC02, SolidRun SolidSense, SKOV i.MX6, Nitrogen8, Traverse Ten64, GW7902, Microchip SAMA7, ualcomm Snapdragon SDM636/SM8150, Renesas R-Car H3e plošče -2G/M3e-2G, Marvell CN913x, ASpeed ​​​​AST2600 (strežniške plošče Facebook Cloudripper, Elbert in Fuji), 4KOpen STiH418-b2264.
    • Dodana podpora za LCD plošče Gopher 2b, EDT ETM0350G0DH6/ETMV570G2DHU, LOGIC Technologies LTTD800480070-L6WH-RT, Multi-Innotechnology MI1010AIT-1CP1, Innolux EJ030NA 3.0, ilitek ili9341, E Ink VB3300-KCA, Samsung ATNA33XC20 7430, Samsung DB2401, WideChips WSXNUMX .
    • Dodan gonilnik LiteETH s podporo za krmilnike Ethernet, ki se uporabljajo v SoC programski opremi LiteX (za FPGA).
    • Gonilniku usb-avdio je bila dodana možnost nizke zakasnitve za nadzor vključitve delovanja v načinu minimalne zakasnitve. Dodana je tudi možnost quirk_flags za posredovanje nastavitev, specifičnih za napravo.

Istočasno je Latinskoameriška fundacija za prosto programsko opremo oblikovala različico popolnoma brezplačnega jedra 5.15 - Linux-libre 5.15-gnu, očiščeno elementov vdelane programske opreme in gonilnikov, ki vsebujejo neproste komponente ali odseke kode, katerih obseg je omejen. s strani proizvajalca. Nova izdaja izvaja izpis sporočila v dnevnik o zaključku čiščenja. Težave z generiranjem paketov z uporabo mkspec so bile odpravljene, podpora za snap pakete je bila izboljšana. Odstranjena so nekatera opozorila, prikazana pri obdelavi datoteke glave firmware.h. Dovoljeno je izpisovanje nekaterih vrst opozoril (»format-extra-args«, komentarji, neuporabljene funkcije in spremenljivke) pri gradnji v načinu »-Werror«. Dodano čiščenje gonilnika gehc-achc. Posodobljena koda za čiščenje madežev v gonilnikih in podsistemih adreno, btusb, btintel, brcmfmac, aarch64 qcom. Čiščenje gonilnikov prism54 (odstranjen) in rtl8188eu (nadomeščen z r8188eu) je bilo ustavljeno.

Vir: opennet.ru

Dodaj komentar