Izdaja jedra Linuxa 5.19

Po dveh mesecih razvoja je Linus Torvalds predstavil izdajo jedra Linux 5.19. Med najbolj opaznimi spremembami: podpora za procesorsko arhitekturo LoongArch, integracija popravkov "BIG TCP", način na zahtevo v fscache, odstranitev kode za podporo formatu a.out, možnost uporabe ZSTD za stiskanje vdelane programske opreme, vmesnik za upravljanje izločitve pomnilnika iz uporabniškega prostora, povečanje zanesljivosti in zmogljivosti generatorja psevdonaključnih števil, podpora za Intel IFS (In-Field Scan), AMD SEV-SNP (Secure Nested Paging), Intel TDX (Trusted Domain Extensions) in ARM Razširitve SME (Scalable Matrix Extension).

V objavi je Linus dejal, da bo najverjetneje naslednja izdaja jedra oštevilčena s številko 6.0, saj je veja 5.x nabrala dovolj izdaj za spremembo prve številke v številki različice. Sprememba oštevilčenja je izvedena iz estetskih razlogov in je formalni korak, ki razbremeni nelagodje zaradi kopičenja velikega števila številk v seriji.

Linus je tudi omenil, da je za ustvarjanje izdaje uporabil prenosni računalnik Apple, ki temelji na arhitekturi ARM64 (Apple Silicon) z okoljem Linux, ki temelji na distribuciji Asahi Linux. To ni Linusova primarna delovna postaja, vendar je uporabil platformo, da preizkusi njeno primernost za delo z jedrom in zagotovi, da lahko izdeluje izdaje jedra med potovanjem z lahkim prenosnim računalnikom pri roki. Prej, pred mnogimi leti, je imel Linus izkušnje z uporabo opreme Apple za razvoj - nekoč je uporabljal osebni računalnik, ki temelji na CPU ppc970, in prenosni računalnik Macbook Air.

Nova različica vključuje 16401 popravkov od 2190 razvijalcev (v zadnji izdaji je bilo 16206 popravkov od 2127 razvijalcev), velikost popravka je 90 MB (spremembe so vplivale na 13847 datotek, dodanih je bilo 1149456 vrstic kode, 349177 vrstic je bilo izbrisanih). Približno 39 % vseh sprememb, uvedenih v 5.19, je povezanih z gonilniki naprav, približno 21 % sprememb je povezanih s posodabljanjem kode, specifične za arhitekture strojne opreme, 11 % je povezanih z omrežnim skladom, 4 % je povezanih z datotečnimi sistemi in 3 % so povezani z notranjimi podsistemi jedra.

Glavne novosti v jedru 5.19:

  • Diskovni podsistem, V/I in datotečni sistemi
    • Datotečni sistem EROFS (Enhanced Read-Only File System), namenjen uporabi na particijah samo za branje, je bil pretvorjen za uporabo podsistema fscache, ki omogoča predpomnjenje podatkov. Sprememba je znatno izboljšala delovanje sistemov, v katerih se veliko število vsebnikov zažene iz slike, ki temelji na EROFS.
    • V podsistem fscache je dodan način branja na zahtevo, ki se uporablja za optimizacijo EROFS. Nov način vam omogoča organiziranje predpomnjenja branja iz slik FS, ki se nahajajo v lokalnem sistemu. V nasprotju s prvotno razpoložljivim načinom delovanja, ki je osredotočen na predpomnjenje v lokalnem datotečnem sistemu podatkov, prenesenih prek omrežnih datotečnih sistemov, način »na zahtevo« prenese funkcije pridobivanja podatkov in zapisovanja v predpomnilnik na ločeno proces v ozadju, ki se izvaja v uporabniškem prostoru.
    • XFS nudi možnost shranjevanja milijard razširjenih atributov v i-vozlišču. Največje število obsegov za eno datoteko je bilo povečano s 4 milijard na 247. Implementiran je bil način za atomsko posodabljanje več atributov razširjenih datotek hkrati.
    • Datotečni sistem Btrfs ima optimizirano delo z zaklepanji, kar je omogočilo približno 7-odstotno povečanje zmogljivosti pri pisanju neposredno v načinu Nowait. Zmogljivost delovanja v načinu NOCOW (brez kopiranja ob pisanju) se poveča za približno 3 %. Obremenitev predpomnilnika strani pri izvajanju ukaza »pošlji« je bila zmanjšana. Najmanjša velikost podstrani je bila zmanjšana s 64K na 4K (uporabljajo se lahko podstrani, manjše od strani jedra). Izveden je bil prehod z uporabe korenskega drevesa na algoritem XArrays.
    • Strežniku NFS je bil dodan način za podaljšanje ohranitve stanja zaklepanja, ki ga je nastavil odjemalec, ki se je prenehal odzivati ​​na zahteve. Novi način vam omogoča, da odložite brisanje zaklepanja za največ en dan, razen če drug odjemalec zahteva konkurenčno zaklepanje. V običajnem načinu se blokada odstrani 90 sekund po tem, ko se odjemalec neha odzivati.
    • Podsistem za sledenje dogodkom v fanotify FS implementira zastavico FAN_MARK_EVICTABLE, s katero lahko onemogočite pripenjanje ciljnih i-vozlišč v predpomnilniku, da na primer prezrete podveje, ne da bi njihove dele pripeli v predpomnilnik.
    • Gonilnik za datotečni sistem FAT32 je dodal podporo za pridobivanje informacij o času nastanka datoteke prek sistemskega klica statx z implementacijo učinkovitejše in funkcionalnejše različice stat(), ki vrne razširjene informacije o datoteki.
    • V gonilnik exFAT so bile narejene pomembne optimizacije, ki omogočajo hkratno brisanje skupine sektorjev, ko je aktiven način 'dirsync', namesto zaporednega čiščenja sektorjev po sektorjih. Z zmanjšanjem števila zahtev za blokiranje po optimizaciji se je zmogljivost ustvarjanja velikega števila imenikov na kartici SD povečala za več kot 73–85 %, odvisno od velikosti gruče.
    • Jedro vključuje prvo korektivno posodobitev gonilnika ntfs3. Ker je bil ntfs3 vključen v jedro 5.15 oktobra lani, gonilnik ni bil posodobljen in komunikacija z razvijalci je bila izgubljena, vendar so razvijalci zdaj nadaljevali z objavo sprememb. Predlagani popravki so odpravili napake, ki so povzročile uhajanje pomnilnika in zrušitve, odpravili težave z izvajanjem xfstestov, počistili neuporabljeno kodo in popravili tipkarske napake.
    • Za OverlayFS je bila implementirana zmožnost preslikave ID-jev uporabnikov nameščenih datotečnih sistemov, ki se uporablja za ujemanje datotek določenega uporabnika na nameščeni tuji particiji z drugim uporabnikom v trenutnem sistemu.
  • Pomnilniške in sistemske storitve
    • Dodana začetna podpora za arhitekturo nabora navodil LoongArch, ki se uporablja v procesorjih Loongson 3 5000, ki izvaja nov RISC ISA, podoben MIPS in RISC-V. Arhitektura LoongArch je na voljo v treh različicah: skrajšana 32-bitna (LA32R), običajna 32-bitna (LA32S) in 64-bitna (LA64).
    • Odstranjena koda za podporo obliki izvedljive datoteke a.out, ki je bila opuščena v izdaji 5.1. Format a.out je že dolgo opuščen v sistemih Linux in sodobna orodja v privzetih konfiguracijah Linuxa ne podpirajo ustvarjanja datotek a.out. Nalagalnik za datoteke a.out je mogoče v celoti implementirati v uporabniški prostor.
    • Podpora za posebne zagonske možnosti x86 je bila ukinjena: nosp, nosmap, nosmep, noexec in noclflush).
    • Podpora za zastarelo arhitekturo CPU h8300 (Renesas H8/300), ki že dolgo ni bila podprta, je ukinjena.
    • Razširjene zmožnosti, povezane z odzivom na zaznavanje deljenih zaklepov (»split locks«), ki se pojavijo pri dostopu do neporavnanih podatkov v pomnilniku zaradi dejstva, da pri izvajanju atomskega ukaza podatki prečkajo dve vrstici predpomnilnika CPU. Takšne blokade vodijo do znatnega padca delovanja. Če je prej jedro privzeto izdalo opozorilo z informacijami o procesu, ki je povzročil blokado, bo zdaj problematični proces dodatno upočasnjen, da se ohrani zmogljivost preostalega sistema.
    • Dodana podpora za mehanizem IFS (In-Field Scan), implementiran v procesorje Intel, ki vam omogoča zagon nizkonivojskih diagnostičnih testov CPE, ki lahko prepoznajo težave, ki jih standardna orodja ne zaznajo na podlagi kod za popravljanje napak (ECC) ali paritetnih bitov . Izvedeni testi so v obliki prenosljive vdelane programske opreme, oblikovane podobno kot posodobitve mikrokode. Rezultati testa so na voljo prek sysfs.
    • Dodana možnost vdelave datoteke bootconfig v jedro, ki poleg možnosti ukazne vrstice omogoča določitev parametrov jedra prek nastavitvene datoteke. Vdelava se izvede z možnostjo sestavljanja 'CONFIG_BOOT_CONFIG_EMBED_FILE="/PATH/TO/BOOTCONFIG/FILE"'. Prej je bila bootconfig določena s pripenjanjem k initrd sliki. Integracija v jedro omogoča uporabo bootconfig v konfiguracijah brez initrd.
    • Izvedena je bila možnost prenosa vdelane programske opreme, stisnjene z algoritmom Zstandard. Nabor nadzornih datotek /sys/class/firmware/* je bil dodan v sysfs, kar vam omogoča, da sprožite nalaganje vdelane programske opreme iz uporabniškega prostora.
    • Asinhroni V/I vmesnik io_uring ponuja novo zastavico, IORING_RECVSEND_POLL_FIRST, ki bo, ko je nastavljena, najprej poslala omrežno operacijo v obdelavo z uporabo pozivanja, kar lahko prihrani vire v situacijah, ko je obdelava operacije z nekaj zamude sprejemljiva. io_uring je dodal tudi podporo za sistemski klic socket(), predlagal nove zastavice za poenostavitev upravljanja deskriptorjev datotek, dodal način »multi-shot« za sprejemanje več povezav hkrati v klicu accept() in dodal operacije za posredovanje NVMe ukaze neposredno v napravo.
    • Arhitektura Xtensa zagotavlja podporo za orodje za razhroščevanje KCSAN (Kernel Concurrency Sanitizer), ki je zasnovano za dinamično zaznavanje pogojev tekmovanja v jedru. Dodana je tudi podpora za način mirovanja in koprocesorje.
    • Za arhitekturo m68k (Motorola 68000) je implementiran virtualni stroj (simulator platforme), ki temelji na emulatorju Android Goldfish.
    • Za arhitekturo AArch64 je bila implementirana podpora za razširitve Armv9-A SME (Scalable Matrix Extension).
    • Podsistem eBPF omogoča shranjevanje vnesenih kazalcev v strukture zemljevidov, dodaja pa tudi podporo za dinamične kazalce.
    • Predlaga se nov proaktivni mehanizem za povrnitev pomnilnika, ki podpira nadzor uporabniškega prostora z uporabo datoteke memory.reclaim. Zapisovanje številke v določeno datoteko bo poskusilo izločiti ustrezno število bajtov iz niza, povezanega s skupino c.
    • Izboljšana natančnost uporabe pomnilnika pri stiskanju podatkov v izmenjalni particiji z uporabo mehanizma zswap.
    • Za arhitekturo RISC-V je zagotovljena podpora za izvajanje 32-bitnih izvršljivih datotek v 64-bitnih sistemih, dodan je način za vezavo omejevalnih atributov na pomnilniške strani (na primer za onemogočanje predpomnjenja) in implementirana je funkcija kexec_file_load(). .
    • Implementacija podpore za 32-bitna sistema Armv4T in Armv5 je prilagojena za uporabo v univerzalnih večplatformskih zgradbah jedra, primernih za različne sisteme ARM.
  • Virtualizacija in varnost
    • Podsistem EFI implementira zmožnost zaupnega prenosa skrivnih informacij v gostujoče sisteme, ne da bi jih razkril gostiteljskemu sistemu. Podatki so na voljo prek imenika security/coco v securityfs.
    • Zaščitni način zaklepanja, ki omejuje dostop korenskega uporabnika do jedra in blokira obhodne poti UEFI Secure Boot, je odpravil vrzel, ki je omogočala obhod zaščite z manipulacijo razhroščevalnika jedra.
    • Vključeni so popravki, namenjeni izboljšanju zanesljivosti in delovanja generatorja psevdonaključnih števil.
    • Pri gradnji z uporabo Clang 15 je implementirana podpora za mehanizem za naključno razvrščanje struktur jedra.
    • Mehanizem Landlock, ki vam omogoča, da omejite interakcijo skupine procesov z zunanjim okoljem, zagotavlja podporo za pravila, ki vam omogočajo nadzor nad izvajanjem operacij preimenovanja datotek.
    • Podsistem IMA (Integrity Measurement Architecture), zasnovan za preverjanje celovitosti komponent operacijskega sistema z uporabo digitalnih podpisov in zgoščenih vrednosti, je bil preklopljen na uporabo modula fs-verity za preverjanje datotek.
    • Logika dejanj pri onemogočanju neprivilegiranega dostopa do podsistema eBPF je bila spremenjena - prej so bili onemogočeni vsi ukazi, povezani s sistemskim klicem bpf(), od različice 5.19 pa je ostal dostop do ukazov, ki ne vodijo do ustvarjanja objektov . To vedenje zahteva privilegiran proces za nalaganje programa BPF, potem pa lahko neprivilegirani procesi komunicirajo s programom.
    • Dodana podpora za razširitev AMD SEV-SNP (Secure Nested Paging), ki zagotavlja varno delo z ugnezdenimi tabelami pomnilniških strani in ščiti pred napadi »undeSErVed« in »SEVerity« na procesorje AMD EPYC, ki omogočajo obhod AMD SEV (Secure Encrypted Virtualization). ) zaščitni mehanizem.
    • Dodana podpora za mehanizem Intel TDX (Trusted Domain Extensions), ki vam omogoča blokiranje poskusov tretjih oseb za dostop do šifriranega pomnilnika virtualnih strojev.
    • Gonilnik virtio-blk, ki se uporablja za posnemanje blokovnih naprav, ima dodano podporo za V/I z uporabo anketiranja, kar je glede na teste zmanjšalo zakasnitev za približno 10 %.
  • Omrežni podsistem
    • Paket vključuje niz VELIKIH popravkov TCP, ki vam omogočajo povečanje največje velikosti paketa TCP na 4 GB za optimizacijo delovanja hitrih notranjih omrežij podatkovnih centrov. Podobno povečanje velikosti paketa s 16-bitno velikostjo polja glave je doseženo z implementacijo "jumbo" paketov, katerih velikost v glavi IP je nastavljena na 0, dejanska velikost pa se prenaša v ločenem 32-bitnem polje v ločeni priloženi glavi. Pri testiranju zmogljivosti je nastavitev velikosti paketa na 185 KB povečala prepustnost za 50 % in znatno zmanjšala zakasnitev prenosa podatkov.
    • Nadaljevalo se je delo pri vključevanju orodij v omrežni sklad za sledenje razlogom za izpuščanje paketov (kode vzrokov). Koda vzroka se pošlje, ko se sprosti pomnilnik, povezan s paketom, in omogoča situacije, kot so zavrnitev paketa zaradi napak v glavi, zaznavanje ponarejanja rp_filter, neveljavna kontrolna vsota, pomanjkanje pomnilnika, sprožena pravila IPSec XFRM, neveljavna zaporedna številka TCP itd.
    • Dodana podpora za povratne povezave MPTCP (MultiPath TCP) za uporabo običajnega TCP v primerih, ko določenih funkcij MPTCP ni mogoče uporabiti. MPTCP je 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. Dodan API za nadzor tokov MPTCP iz uporabniškega prostora.
  • Оборудование
    • Dodanih več kot 420 vrstic kode, povezanih z gonilnikom amdgpu, od katerih je približno 400 vrstic samodejno ustvarjenih datotek glave za podatke registra ASIC v gonilniku GPU AMD, dodatnih 22.5 vrstic pa zagotavlja začetno izvedbo podpore za AMD SoC21. Skupna velikost gonilnika za grafične procesorje AMD je presegla 4 milijone vrstic kode. Poleg SoC21 gonilnik AMD vključuje podporo za SMU 13.x (System Management Unit), posodobljeno podporo za USB-C in GPUVM ter priprave za podporo naslednjih generacij platform RDNA3 (RX 7000) in CDNA (AMD Instinct). .
    • Gonilnik i915 (Intel) ima razširjene zmogljivosti, povezane z upravljanjem porabe energije. Dodani identifikatorji za grafične procesorje Intel DG2 (Arc Alchemist), ki se uporabljajo na prenosnikih, zagotovljena začetna podpora za platformo Intel Raptor Lake-P (RPL-P), dodane informacije o grafičnih karticah Arctic Sound-M), implementiran ABI za računalniške motorje, dodan za Kartice DG2 podpirajo format Tile4; za sisteme, ki temeljijo na mikroarhitekturi Haswell, je implementirana podpora za DisplayPort HDR.
    • Gonilnik Nouveau je prešel na uporabo upravljalnika drm_gem_plane_helper_prepare_fb; za nekatere strukture in spremenljivke je bila uporabljena statična dodelitev pomnilnika. Kar zadeva uporabo odprtokodnih modulov jedra NVIDIA v Nouveau, se dosedanje delo zmanjša na prepoznavanje in odpravljanje napak. V prihodnosti naj bi objavljeno vdelano programsko opremo uporabili za izboljšanje delovanja gonilnikov.
    • Dodan gonilnik za krmilnik NVMe, ki se uporablja v računalnikih Apple na osnovi čipa M1.

Istočasno je Latinskoameriška fundacija za prosto programsko opremo oblikovala različico popolnoma brezplačnega jedra 5.19 - Linux-libre 5.19-gnu, očiščeno elementov vdelane programske opreme in gonilnikov, ki vsebujejo neproste komponente ali dele kode, katere obseg je omejen s strani proizvajalca. Nova izdaja počisti gonilnike za pureLiFi X/XL/XC in TI AMx3 Wkup-M3 IPC. Posodobljena koda za čiščenje madežev v gonilnikih in podsistemih Silicon Labs WFX, AMD amdgpu, Qualcomm WCNSS Peripheral Image Loader, Realtek Bluetooth, Mellanox Spectrum, Marvell WiFi-Ex, Intel AVS, IFS, pu3-imgu. Izvedena je obdelava datotek Qualcomm AArch64 devicetree. Dodana podpora za novo shemo poimenovanja komponent Sound Open Firmware. Ustavljeno čiščenje gonilnika ATM Ambassador, ki je bil odstranjen iz jedra. Upravljanje čiščenja madežev v HDCP in Mellanox Core je bilo premaknjeno v ločene oznake kconfig.

Vir: opennet.ru

Dodaj komentar