Izdanje kernela Linux 5.15

Nakon dva mjeseca razvoja, Linus Torvalds je predstavio izdanje Linux kernela 5.15. Značajne promjene uključuju: novi NTFS drajver sa podrškom za pisanje, ksmbd modul sa implementacijom SMB servera, DAMON podsistem za praćenje pristupa memoriji, primitive zaključavanja u realnom vremenu, podršku za fs-verity u Btrfs-u, sistemski poziv process_mrelease za memoriju sistema za odgovor na gladovanje, modul za udaljenu certifikaciju dm-ima.

Nova verzija uključuje 13499 popravki od 1888 programera, veličina zakrpe je 42 MB (promjene su uticale na 10895 datoteka, dodano je 632522 linija koda, 299966 linija je obrisano). Oko 45% svih promjena uvedenih u 5.15 odnosi se na drajvere uređaja, otprilike 14% promjena se odnosi na ažuriranje koda specifičnog za hardverske arhitekture, 14% se odnosi na mrežni stog, 6% se odnosi na sistem datoteka i 3% odnose se na interne podsisteme kernela.

Glavne inovacije:

  • Diskovni podsistem, I/O i sistemi datoteka
    • Kernel je usvojio novu implementaciju NTFS sistema datoteka, koji je otvorio Paragon Software. Novi drajver može raditi u načinu pisanja i podržava sve funkcije trenutne verzije NTFS 3.1, uključujući proširene atribute datoteka, pristupne liste (ACL-ove), način kompresije podataka, efikasan rad sa praznim prostorima u datotekama (sparse) i ponavljanje promjena iz dnevnik za vraćanje integriteta nakon kvarova.
    • Btrfs sistem datoteka podržava mehanizam fs-verity, koji se koristi za transparentnu kontrolu integriteta i autentičnosti pojedinačnih datoteka koristeći kriptografske hešove ili ključeve povezane sa datotekama, pohranjenim u području metapodataka. Ranije je fs-verity bio dostupan samo za sisteme datoteka Ext4 i F2fs.

      Btrfs takođe dodaje podršku za mapiranje korisničkih ID-ova za montirane sisteme datoteka (ranije podržani za FAT, ext4 i XFS sistem datoteka). Ova funkcija vam omogućava da uporedite datoteke određenog korisnika na montiranoj stranoj particiji sa drugim korisnikom na trenutnom sistemu.

      Ostale promjene u Btrfs-u uključuju: brže dodavanje ključeva u indeks direktorija radi poboljšanja performansi kreiranja datoteka; mogućnost rada raid0 sa jednim uređajem i raid10 sa dva (na primjer, tokom procesa rekonfiguracije niza); opcija “rescue=ibadroots” za ignorisanje neispravnog stabla opsega; ubrzanje operacije slanja; smanjenje sukoba zaključavanja tokom operacija preimenovanja; mogućnost korištenja 4K sektora na sistemima sa 64K memorijske stranice.

    • U XFS-u je stabilizirana mogućnost korištenja datuma nakon 2038. u sistemu datoteka. Implementiran mehanizam za odloženo deaktiviranje inodea i podršku za odloženu instalaciju i uklanjanje atributa datoteke. Da bi se otklonili problemi, uklonjena je mogućnost onemogućavanja diskovnih kvota za već montirane particije (možete nasilno onemogućiti kvote, ali će se izračunavanje povezano s njima nastaviti, tako da je potrebno ponovno montiranje da biste ih potpuno onemogućili).
    • U EXT4 se radi na povećanju performansi pisanja delalloc bafera i obrade siročeta fajlova koji i dalje postoje zbog činjenice da ostaju otvoreni, ali nisu povezani sa direktorijumom. Obrada operacija odbacivanja je pomjerena iz jbd2 kthread niti kako bi se izbjeglo blokiranje operacija s metapodacima.
    • F2FS je dodao opciju "discard_unit=block|segment|section" za povezivanje operacija odbacivanja (označavanje oslobođenih blokova koji možda više nisu fizički pohranjeni) za poravnanje u odnosu na blok, sektor, segment ili sekciju. Dodata podrška za praćenje promjena u I/O latenciji.
    • Sistem datoteka EROFS (Extendable Read-Only File System) dodaje direktnu I/O podršku za datoteke sačuvane bez kompresije, kao i fiemap podršku.
    • OverlayFS implementira ispravno rukovanje zastavicama montiranja "immutable", "append-only", "sync" i "noatime".
    • NFS je poboljšao rukovanje situacijama kada NFS server prestane da odgovara na zahteve. Dodata mogućnost montiranja sa servera koji je već u upotrebi, ali je dostupan preko druge mrežne adrese.
    • Počele su pripreme za ponovno pisanje FSCACHE podsistema.
    • Dodata podrška za EFI particije sa nestandardnim postavljanjem GPT tabela.
    • Mehanizam fanotify implementira novu zastavicu, FAN_REPORT_PIDFD, koja uzrokuje da pidfd bude uključen u vraćene metapodatke. Pidfd pomaže u rješavanju situacija ponovnog korištenja PID-a kako bi se preciznije identificirali procesi koji pristupaju praćenim datotekama (pidfd je povezan sa određenim procesom i ne mijenja se, dok PID može biti povezan s drugim procesom nakon što se trenutni proces povezan s tim PID-om okonča).
    • Dodata je mogućnost dodavanja tačaka montiranja postojećim zajedničkim grupama u sistemski poziv move_mount(), koji rješava probleme sa spremanjem i vraćanjem stanja procesa u CRIU kada postoji više prostora za montiranje koji se dijele u izolovanim kontejnerima.
    • Dodata zaštita od skrivenih uvjeta utrke koji bi potencijalno mogli uzrokovati oštećenje datoteke prilikom čitanja keša prilikom obrade praznina u datoteci.
    • Podrška za obavezno (obavezno) zaključavanje datoteka, implementirano kroz blokiranje sistemskih poziva koji dovode do promjene datoteke, je ukinuta. Zbog mogućih uvjeta utrke, ove brave su smatrane nepouzdanima i zastarjele su prije mnogo godina.
    • Uklonjen je LightNVM podsistem, koji je omogućio direktan pristup SSD disku, zaobilazeći sloj emulacije. LightNVM je izgubio svoje značenje nakon pojave NVMe standarda koji predviđaju zoniranje (ZNS, Zoned Namespace).
  • Memorijski i sistemski servisi
    • Implementiran je DAMON (Data Access MONitor) podsistem koji vam omogućava da nadgledate aktivnosti vezane za pristup podacima u RAM-u u odnosu na odabrani proces koji se izvodi u korisničkom prostoru. Podsistem vam omogućava da analizirate kojim memorijskim područjima je proces pristupio tokom čitavog svog rada, a koja memorijska područja su ostala nepotražena. DAMON ima nisko opterećenje CPU-a, nisku potrošnju memorije, visoku preciznost i predvidljive konstantne troškove, neovisno o veličini. Podsistem se može koristiti i od strane kernela za optimizaciju upravljanja memorijom, i od pomoćnih programa u korisničkom prostoru da bi razumjeli šta tačno proces radi i optimizirali korištenje memorije, na primjer, oslobađanje viška memorije za sistem.
    • Process_mrelease sistemski poziv implementiran je kako bi se ubrzao proces oslobađanja memorije procesa koji završava svoje izvršenje. U normalnim okolnostima, oslobađanje resursa i završetak procesa nisu trenutni i mogu biti odloženi iz različitih razloga, ometajući sisteme ranog odgovora u memoriji korisničkog prostora kao što su oomd (obezbeđuje systemd) i lmkd (koristi Android). Pozivanjem process_mrelease, takvi sistemi mogu predvidljivije pokrenuti vraćanje memorije iz prisilnih procesa.
    • Iz grane kernela PREEMPT_RT, koja razvija podršku za rad u realnom vremenu, prenete su varijante primitiva za organizovanje zaključavanja mutex, ww_mutex, rw_semaphore, spinlock i rwlock, bazirane na RT-Mutex podsistemu. Promjene su dodane u SLUB alokator ploča kako bi se poboljšao rad u PREEMPT_RT modu i smanjio utjecaj na prekide.
    • Podrška za atribut planera zadataka SCHED_IDLE je dodana u cgroup, omogućavajući vam da ovaj atribut pružite svim procesima grupe uključene u određenu cgroup. One. ovi procesi će se pokrenuti samo kada nema drugih zadataka koji čekaju da se izvrše na sistemu. Za razliku od postavljanja atributa SCHED_IDLE za svaki proces pojedinačno, kada se SCHED_IDLE povezuje sa cgroupom, relativna težina zadataka unutar grupe uzima se u obzir prilikom odabira zadatka za izvršenje.
    • Mehanizam za obračun potrošnje memorije u cgroup-u je proširen mogućnošću praćenja dodatnih struktura podataka kernela, uključujući one kreirane za prozivanje, obradu signala i imenske prostore.
    • Dodata podrška za asimetrično planiranje vezivanja zadataka za procesorske jezgre na arhitekturama u kojima neki CPU dozvoljavaju izvršavanje 32-bitnih zadataka, a neki rade samo u 64-bitnom načinu (na primjer, ARM). Novi način vam omogućava da uzmete u obzir samo CPU koji podržavaju 32-bitne zadatke kada planirate 32-bitne zadatke.
    • Asinhroni I/O sučelje io_uring sada podržava otvaranje datoteka direktno u tablici indeksa fiksnih datoteka, bez upotrebe deskriptora datoteke, što omogućava značajno ubrzanje nekih vrsta operacija, ali je u suprotnosti sa tradicionalnim Unix procesom korištenja deskriptora datoteka za otvaranje fajlova.

      io_uring za BIO (Block I/O Layer) podsistem implementira novi mehanizam recikliranja („BIO reciklaža”), koji smanjuje troškove u procesu upravljanja internom memorijom i povećava broj obrađenih I/O operacija u sekundi za približno 10% . io_uring takođe dodaje podršku za sistemske pozive mkdirat(), symlinkat() i linkat().

    • Za BPF programe implementirana je mogućnost traženja i obrade događaja tajmera. Dodan je iterator za UNIX utičnice, a implementirana je mogućnost dobijanja i postavljanja opcija socketa za setsockopt. BTF dumper sada podržava ukucane podatke.
    • Na NUMA sistemima sa različitim tipovima memorije koje se razlikuju po performansama, kada se iscrpi slobodan prostor, izbačene memorijske stranice se prenose iz dinamičke memorije (DRAM) u sporiju trajnu memoriju (Persistent Memory) umjesto da se te stranice brišu. Testovi su pokazali da takve taktike obično poboljšavaju performanse na takvim sistemima. NUMA također pruža mogućnost dodjele memorijskih stranica za proces iz odabranog skupa NUMA čvorova.
    • Za ARC arhitekturu implementirana je podrška za tri i četiri razine memorijskih tablica stranica, što će dalje omogućiti podršku za 64-bitne ARC procesore.
    • Za arhitekturu s390 implementirana je mogućnost korištenja mehanizma KFENCE za otkrivanje grešaka pri radu sa memorijom, a dodata je i podrška za detektor stanja rase KCSAN.
    • Dodata podrška za indeksiranje liste poruka koje izlaze putem printk(), što vam omogućava da preuzmete sve takve poruke odjednom i pratite promjene u korisničkom prostoru.
    • mmap() je uklonio podršku za opciju VM_DENYWRITE, a kod kernela je uklonjen iz korištenja MAP_DENYWRITE načina rada, što je smanjilo broj situacija koje dovode do blokiranja upisivanja u datoteku s greškom ETXTBSY.
    • Nova vrsta provjera, “Probe događaja”, dodana je u podsistem praćenja, koji se može priložiti postojećim događajima praćenja, definirajući vaš vlastiti izlazni format.
    • Prilikom izrade kernela pomoću Clang kompajlera, sada se koristi zadani asembler iz LLVM projekta.
    • Kao dio projekta za oslobađanje kernela od koda koji dovodi do upozorenja koja izlaze od strane kompajlera, sproveden je eksperiment sa „-Werror“ modom koji je podrazumevano omogućen, u kojem se upozorenja kompajlera obrađuju kao greške. U pripremama za izdanje 5.15, Linus je počeo da prihvata samo promene koje nisu rezultirale upozorenjima prilikom izgradnje kernela i omogućio je izgradnju sa "-Werror", ali se potom složio da je takva odluka preuranjena i odloženo omogućavanjem "-Werror" podrazumevano . Uključivanje “-Werror” zastavice tokom asemblera kontroliše se pomoću parametra WERROR, koji je po defaultu postavljen na COMPILE_TEST, tj. Za sada je omogućen samo za testne verzije.
  • Virtuelizacija i sigurnost
    • Novi dm-ima rukovalac je dodat u Device Mapper (DM) sa implementacijom mehanizma udaljene certifikacije zasnovanog na podsistemu IMA (Integrity Measurement Architecture), koji omogućava eksternom servisu da verifikuje stanje podsistema kernela kako bi se osigurala njihova autentičnost . U praksi, dm-ima vam omogućava da kreirate skladišta koristeći Device Mapper koja su povezana sa eksternim cloud sistemima, u kojima se validnost pokrenute DM ciljne konfiguracije provjerava pomoću IMA.
    • prctl() implementira novu opciju PR_SPEC_L1D_FLUSH, koja kada je omogućena, uzrokuje da kernel isprazni sadržaj keša prvog nivoa (L1D) svaki put kada dođe do promjene konteksta. Ovaj način rada omogućava, selektivno za najvažnije procese, implementaciju dodatne zaštite od korištenja napada sa strane kanala koji se izvode radi utvrđivanja podataka koji su se smjestili u keš kao rezultat ranjivosti uzrokovanih spekulativnim izvršavanjem instrukcija u CPU-u. Trošak omogućavanja PR_SPEC_L1D_FLUSH (nije omogućen po defaultu) je značajna kazna za performanse.
    • Moguće je izgraditi kernel sa dodatkom “-fzero-call-used-regs=used-gpr” zastavice u GCC, koja osigurava da se svi registri resetuju na nulu prije vraćanja kontrole iz funkcije. Ova opcija vam omogućava da zaštitite od curenja informacija iz funkcija i smanjite za 20% broj blokova pogodnih za pravljenje ROP (Return-Oriented Programming) gadgeta u exploitima.
    • Implementirana je mogućnost izgradnje kernela za ARM64 arhitekturu u obliku klijenata za Hyper-V hipervizor.
    • Predložen je novi okvir za razvoj drajvera „VDUSE“, koji omogućava implementaciju virtuelnih blok uređaja u korisnički prostor i korišćenje Virtio-a kao transporta za pristup sa gostujućih sistema.
    • Dodan Virtio drajver za I2C sabirnicu, što omogućava emulaciju I2C kontrolera u paravirtualizacionom modu koristeći odvojene pozadinske programe.
    • Dodan je Virtio drajver gpio-virtio kako bi se omogućilo gostima pristup GPIO linijama koje pruža host sistem.
    • Dodata je mogućnost ograničavanja pristupa memorijskim stranicama za drajvere uređaja sa podrškom za DMA na sistemima bez I/O MMU (jedinica za upravljanje memorijom).
    • KVM hipervizor ima mogućnost prikaza statistike u obliku linearnih i logaritamskih histograma.
  • Mrežni podsistem
    • Modul ksmbd je dodat kernelu sa implementacijom fajl servera koji koristi SMB3 protokol. Modul dopunjuje implementaciju SMB klijenta koja je ranije bila dostupna u kernelu i, za razliku od SMB servera koji radi u korisničkom prostoru, efikasniji je u smislu performansi, potrošnje memorije i integracije sa naprednim mogućnostima kernela. Ksmbd se reklamira kao Samba proširenje visokih performansi, spremno za ugradnju koje se po potrebi integriše sa Samba alatima i bibliotekama. Mogućnosti ksmbd-a uključuju poboljšanu podršku za tehnologiju distribuiranog keširanja datoteka (SMB zakup) na lokalnim sistemima, što može značajno smanjiti promet. U budućnosti planiraju da dodaju podršku za RDMA (“smbdirect”) i proširenja protokola koja se odnose na povećanje pouzdanosti enkripcije i verifikacije pomoću digitalnih potpisa.
    • CIFS klijent više ne podržava NTLM i slabije algoritme za provjeru autentičnosti zasnovane na DES-u koji se koriste u SMB1 protokolu.
    • Multicast podrška je implementirana u implementaciji mrežnih mostova za vlans.
    • Drajver za povezivanje, koji se koristi za agregiranje mrežnih interfejsa, ima dodatnu podršku za XDP (eXpress Data Path) podsistem, koji vam omogućava da manipulišete mrežnim paketima u fazi pre nego što ih obradi mrežni stog Linux kernela.
    • Bežični stog mac80211 podržava 6GHZ STA (Specijalna privremena autorizacija) u LPI, SP i VLP režimima, kao i mogućnost postavljanja pojedinačnih TWT (Target Wake Time) u režimu pristupne tačke.
    • Dodata podrška za MCTP (Management Component Transport Protocol), koji se koristi za interakciju između upravljačkih kontrolera i povezanih uređaja (host procesora, perifernih uređaja, itd.).
    • Integracija u jezgro MPTCP (MultiPath TCP), proširenje TCP protokola za organizovanje rada TCP veze sa isporukom paketa istovremeno duž nekoliko ruta kroz različite mrežne interfejse povezane sa različitim IP adresama. Novo izdanje dodaje podršku za adrese u fullmesh modu.
    • Rukovaoci za mrežne tokove inkapsulirane u SRv6 (Segment Routing IPv6) protokol su dodani u netfilter.
    • Dodata podrška za sockmap za Unix streaming utičnice.
  • Oprema
    • Amdgpu drajver podržava Cyan Skillfish APU (opremljen Navi 1x GPU-ovima). Yellow Carp APU sada podržava video kodeke. Poboljšana podrška za Aldebaran GPU. Dodani su novi identifikatori mape bazirani na GPU Navi 24 “Beige Goby” i RDNA2. Predložena je poboljšana implementacija virtuelnih ekrana (VKMS). Implementirana je podrška za praćenje temperature AMD Zen 3 čipova.
    • Amdkfd drajver (za diskretne GPU, kao što je Polaris) implementira dijeljeni upravitelj virtualne memorije (SVM, dijeljena virtualna memorija) baziran na HMM (Heterogeneous memory management) podsistemu, koji omogućava korištenje uređaja s vlastitim jedinicama za upravljanje memorijom (MMU). , jedinica za upravljanje memorijom), koja može pristupiti glavnoj memoriji. Konkretno, koristeći HMM, možete organizirati zajednički adresni prostor između GPU-a i CPU-a, u kojem GPU može pristupiti glavnoj memoriji procesa.
    • i915 drajver za Intel video kartice proširuje upotrebu TTM menadžera video memorije i uključuje mogućnost upravljanja potrošnjom energije na osnovu GuC (Graphics micro Controller). Počele su pripreme za implementaciju podrške za Intel ARC Alchemist grafičku karticu i Intel Xe-HP GPU.
    • Nouveau drajver implementira kontrolu pozadinskog osvjetljenja za eDP panele koristeći DPCD (DisplayPort Configuration Data).
    • Dodata podrška za Adreno 7c Gen 3 i Adreno 680 GPU za msm drajver.
    • IOMMU drajver je implementiran za Apple M1 čip.
    • Dodan drajver za zvuk za sisteme bazirane na AMD Van Gogh APU-ovima.
    • Realtek R8188EU drajver je dodat u staging granu, koji je zamenio staru verziju drajvera (rtl8188eu) za Realtek RTL8188EU 802.11 b/g/n bežične čipove.
    • ocp_pt drajver je uključen za PCIe ploču koju je razvio Meta (Facebook) sa implementacijom minijaturnog atomskog sata i GNSS prijemnika, koji se može koristiti za organizovanje rada odvojenih servera za sinhronizaciju tačnog vremena.
    • Dodata podrška za Sony Xperia 10II (Snapdragon 665), Xiaomi Redmi 2 (Snapdragon MSM8916), Samsung Galaxy S3 (Snapdragon MSM8226), Samsung Gavini/Codina/Kyle pametne telefone.
    • Dodata podrška za ARM SoS i NVIDIA Jetson TX2 NX Developer Kit, Sancloud BBE Lite, PicoITX, DRC02, SolidRun SolidSense, SKOV i.MX6, Nitrogen8, Traverse Ten64, GW7902, Microchip SAMA7, ualcomm Snapdragon RDM636/R8150 ploče -3G/M2e-3G, Marvell CN2x, ASpeed ​​AST913 (Facebook Cloudripper, Elbert i Fuji serverske ploče), 2600KOpen STiH4-b418.
    • Dodata podrška za Gopher 2b LCD panele, EDT ETM0350G0DH6/ETMV570G2DHU, LOGIC Technologies LTTD800480070-L6WH-RT, Multi-Innotechnology MI1010AIT-1CP1, Innolux EJ030NA, Samsung EJ3.0NA ili 9341K 3300. ATNA33XC20 7430, Samsung DB2401, WideChips WSXNUMX .
    • Dodan LiteETH drajver sa podrškom za Ethernet kontrolere koji se koriste u LiteX softverskim SoC-ovima (za FPGA).
    • Opcija niske latencije je dodana usb-audio drajveru za kontrolu uključivanja rada u režimu minimalne latencije. Također je dodana opcija quirk_flags za prosljeđivanje postavki specifičnih za uređaj.

Istovremeno, Latinoamerička fondacija za slobodni softver formirala je verziju potpuno besplatnog kernela 5.15 - Linux-libre 5.15-gnu, očišćenu od elemenata firmvera i drajvera koji sadrže neslobodne komponente ili sekcije koda, čiji je opseg ograničen. od strane proizvođača. Novo izdanje implementira izlaz poruke u dnevnik o završetku čišćenja. Problemi sa generisanjem paketa pomoću mkspec-a su popravljeni, poboljšana je podrška za snap pakete. Uklonjena su neka upozorenja prikazana prilikom obrade zaglavlja firmware.h datoteke. Dozvoljen izlaz nekih vrsta upozorenja („format-extra-args“, komentari, neiskorištene funkcije i varijable) kada se gradi u „-Werror“ modu. Dodato čišćenje drajvera gehc-achc. Ažuriran kod za čišćenje mrlja u drajverima i podsistemima adreno, btusb, btintel, brcmfmac, aarch64 qcom. Čišćenje drajvera prism54 (uklonjeno) i rtl8188eu (zamijenjeno r8188eu) je zaustavljeno.

izvor: opennet.ru

Dodajte komentar