Izdanje jezgre Linuxa 5.9

Nakon dva mjeseca razvoja Linus Torvalds podnijeti izdanje jezgre Linux 5.9. Među najznačajnijim promjenama: ograničavanje uvoza simbola iz vlasničkih modula na GPL module, ubrzavanje operacija prebacivanja konteksta korištenjem instrukcija procesora FSGSBASE, podrška za kompresiju slike kernela pomoću Zstd-a, prerada prioritizacije niti u jezgri, podrška za PRP (Parallel Redundancy Protocol) , raspoređivanje s obzirom na propusnost u rokovniku, preventivno pakiranje memorijskih stranica, oznaka mogućnosti CAP_CHECKPOINT_RESTOR, close_range() sistemski poziv, poboljšanja performansi dm-crypta, uklanjanje koda za 32-bitne Xen PV goste, nova pločasta memorija mehanizam upravljanja, opcija “rescue” u Btrfs, podrška za inline enkripciju u ext4 i F2FS.

Nova verzija uključuje 16074 popravka od 2011 programera,
veličina zakrpe - 62 MB (promjene su zahvatile 14548 datoteka, dodano je 782155 redaka koda, izbrisano je 314792 redaka). Oko 45% svih prezentiranih u 5.9
promjene su povezane s upravljačkim programima uređaja, otprilike 15% promjena ima
stav prema ažuriranju koda specifičnog za hardverske arhitekture, 13%
odnosi se na mrežni stog, 3% na datotečne sustave i 3% na interne
podsustavi jezgre.

Glavni inovacije:

  • Memorija i usluge sustava
    • Zategnuto zaštita od upotrebe GPL slojeva za povezivanje vlasničkih upravljačkih programa s komponentama kernela koje se izvoze samo za module pod GPL licencom. Oznaka TAINT_PROPRIETARY_MODULE sada se nasljeđuje u svim modulima koji uvoze simbole iz modula s ovom zastavom. Ako GPL modul pokuša uvesti simbole iz modula koji nije GPL, tada će taj GPL modul naslijediti oznaku TAINT_PROPRIETARY_MODULE i neće moći pristupiti komponentama jezgre dostupnim samo modulima s GPL licencom, čak i ako je modul prethodno uveo simbole iz kategoriju "gplonly". Obrnuto zaključavanje (izvoz samo EXPORT_SYMBOL_GPL u modulima koji su uvezli EXPORT_SYMBOL_GPL), koje bi moglo prekinuti rad vlasničkih upravljačkih programa, nije implementirano (nasljeđuje se samo zastavica vlasničkog modula, ali ne i GPL povezivanja).
    • Dodano kcompactd podrška za motor prethodno pakiranje memorijskih stranica u pozadini kako bi se povećao broj velikih memorijskih stranica dostupnih kernelu. Prema preliminarnim procjenama, pozadinsko pakiranje, po cijenu minimalnih troškova, može smanjiti kašnjenja prilikom dodjele velikih memorijskih stranica (huge-page) za 70-80 puta u usporedbi s prethodno korištenim mehanizmom pakiranja, koji se pokreće kada se ukaže potreba (na zahtjev ). Za postavljanje granica vanjske fragmentacije koju će kcompactd pružiti, dodan je sysctl vm.compaction_proactiveness.
    • Dodano podrška za kompresiju slike jezgre pomoću algoritma zstandard (zstd).
    • Podrška za instrukcije procesora implementirana je za x86 sustave FSGSBASE, koji vam omogućuje čitanje i promjenu sadržaja FS/GS registara iz korisničkog prostora. U kernelu, FSGSBASE se koristi za ubrzavanje operacija prebacivanja konteksta eliminiranjem nepotrebnih operacija MSR pisanja za GSBASE, a u korisničkom prostoru izbjegava nepotrebne pozive sustava za promjenu FS/GS.
    • Dodano parametar “allow_writes” omogućuje vam da zabranite promjene MSR registara procesora iz korisničkog prostora i ograničite pristup sadržaju ovih registara za operacije čitanja, budući da promjena MSR-a može dovesti do problema. Prema zadanim postavkama pisanje još nije onemogućeno, a promjene MSR-a odražavaju se u zapisniku, ali u budućnosti se planira prebaciti zadani pristup na način rada samo za čitanje.
    • Na asinkrono I/O sučelje io_uring Dodana puna podrška za asinkrone operacije čitanja u međuspremniku koje ne zahtijevaju niti kernela. Podrška za snimanje očekuje se u budućem izdanju.
    • U roku I/O planera provedeno planiranje na temelju kapaciteta, dopuštajući donositi ispravne odluke o asimetričnim sustavima kao što su sustavi temeljeni na ARM-u DynamIQ i big.LITTLE, koji kombiniraju moćne i manje učinkovite energetski učinkovite CPU jezgre u jednom čipu. Konkretno, novi način vam omogućuje da izbjegnete nepodudaranje rasporeda kada spora CPU jezgra nema odgovarajuće resurse za dovršenje zadatka na vrijeme.
    • Model potrošnje energije u kernelu (Energy Model framework) je sada opisuje ne samo ponašanje CPU potrošnje energije, već također pokriva periferne uređaje.
    • Sistemski poziv close_range() implementiran je kako bi omogućio procesu da zatvori čitav raspon otvorenih deskriptora datoteke odjednom.
    • Od implementacije tekstualne konzole i upravljačkog programa fbcon kod uklonjen, koji pruža mogućnost programskog pomicanja teksta unatrag (CONFIG_VGACON_SOFT_SCROLLBACK) za više od količine video memorije VGA tekstualnog načina rada.
    • Redizajniran algoritam za dodjeljivanje prioriteta nitima unutar kernela. Nova opcija pruža bolju dosljednost u svim podsustavima jezgre prilikom dodjele prioriteta zadacima u stvarnom vremenu.
    • Dodan sysctl sched_uclamp_util_min_rt_default za kontrolu postavki pojačanja CPU-a za zadatke u stvarnom vremenu (na primjer, možete promijeniti ponašanje zadataka u stvarnom vremenu u hodu radi uštede energije nakon prebacivanja na baterijsko napajanje ili na mobilnim sustavima).
    • Izvršene su pripreme za implementaciju podrške za tehnologiju Transparent Huge Pages u predmemoriju stranica.
    • Fanotify mehanizam implementira nove zastavice FAN_REPORT_NAME i FAN_REPORT_DIR_FID za izvješćivanje nadređenog imena i jedinstvenih FID informacija kada se dogode događaji stvaranja, brisanja ili kretanja za stavke direktorija i objekte koji nisu direktorij.
    • Za cgrupe implementiran novi slab memorijski kontroler, koji je poznat po premještanju slab obračuna s razine memorijske stranice na razinu objekta jezgre, što omogućuje dijeljenje slab stranica u različitim cgroups, umjesto dodjele zasebnih slab predmemorija za svaku cgroup. Predloženi pristup omogućuje povećanje učinkovitosti korištenja slaba, smanjenje veličine memorije koja se koristi za slab za 30-45%, značajno smanjenje ukupne potrošnje memorije kernela i smanjenje fragmentacije memorije.
    • U zvučnom podsustavu ALSA и USB stog, u skladu s nedavno usvojen preporuke o korištenju inkluzivne terminologije u jezgri Linuxa; politički nekorektni izrazi su očišćeni. Kod je očišćen od riječi "slave", "master", "blacklist" i "whitelist".
  • Virtualizacija i sigurnost
    • Prilikom izgradnje kernela korištenjem Clang prevoditelja pojavio mogućnost konfiguriranja (CONFIG_INIT_STACK_ALL_ZERO) automatske inicijalizacije na nulu svih varijabli pohranjenih na stogu (prilikom izgradnje navedite “-ftrivial-auto-var-init=zero”).
    • U podsustavu seccomp, kada se koristi način kontrole procesa u korisničkom prostoru, dodao prilika zamjena deskriptora datoteka u nadzirani proces kako bi se u potpunosti emulirali sistemski pozivi koji dovode do stvaranja deskriptora datoteka. Funkcionalnost je tražena u sustavima izoliranih spremnika i implementacijama sandboxa za Chrome.
    • Za arhitekture xtensa i csky dodana je podrška za ograničavanje sistemskih poziva pomoću podsustava seccomp. Za xtensu je dodatno implementirana podrška za mehanizam revizije.
    • Dodano nova oznaka mogućnosti CAP_CHECKPOINT_RESTORE, koja vam omogućuje da omogućite pristup mogućnostima vezanim uz zamrzavanje i vraćanje stanja procesa bez prijenosa dodatnih privilegija.
    • GCC 11 pruža sve značajke koje su vam potrebne
      alat za uklanjanje pogrešaka KCSAN (Kernel Concurrency Sanitizer), dizajniran za dinamičko otkrivanje uvjeta utrke unutar kernela. Stoga se KCSAN sada može koristiti s jezgrama ugrađenim u GCC.

    • Za AMD Zen i novije CPU modele dodao podrška za P2PDMA tehnologiju, koja vam omogućuje korištenje DMA za izravan prijenos podataka između memorije dva uređaja spojena na PCI sabirnicu.
    • U dm-crypt je dodan način koji vam omogućuje smanjenje latencije izvođenjem kriptografske obrade podataka bez korištenja radnih čekanja. Ovaj način je također neophodan za ispravan rad s zoniran blok uređaji (uređaji s područjima koja se moraju pisati sekvencijalno, ažurirajući cijelu grupu blokova). Radilo se na povećanju propusnosti i smanjenju latencije u dm-cryptu.
    • Uklonjen kod za podršku 32-bitnim gostima koji rade u paravirtualizacijskom načinu rada Xen hipervizora. Korisnici takvih sustava trebali bi se prebaciti na korištenje 64-bitnih jezgri u gostujućim okruženjima ili koristiti pune (HVM) ili kombinirane (PVH) načine virtualizacije umjesto paravirtualizacije (PV) za pokretanje okruženja.
  • Diskovni podsustav, I/O i datotečni sustavi
    • Na Btrfs datotečnom sustavu implementiran opcija montiranja za "spašavanje" koja objedinjuje pristup svim ostalim opcijama oporavka. Podrška za opcije "alloc_start" i "subvolrootid" je uklonjena, a opcija "inode_cache" je zastarjela. Napravljene su optimizacije performansi, posebno primjetno ubrzavajući izvršavanje fsync() operacija. Dodano mogućnost korištenja alternativnih vrsta kontrolnih zbrojeva osim CRC32c.
    • Dodano mogućnost korištenja ugrađene enkripcije (Inline Encryption) u ext4 i F2FS datotečnim sustavima, za što je omogućena opcija montiranja "inlinecrypt". Ugrađeni način šifriranja omogućuje vam korištenje mehanizama šifriranja ugrađenih u kontroler pogona, koji transparentno šifriraju i dekriptiraju ulaz/izlaz.
    • U XFS-u osiguran reset inode (ispiranje) u potpuno asinkronom načinu rada koji ne blokira procese prilikom izvođenja operacije čišćenja memorije. Riješen je dugotrajni problem s kvotom koji je uzrokovao netočno praćenje upozorenja o mekom ograničenju i ograničenju inodea. Objedinjena implementacija DAX podrške za ext4 i xfs.
    • U Ext4 implementiran preload bitmape dodjele blokova. U kombinaciji s ograničenjem skeniranja neinicijaliziranih grupa, optimizacija je smanjila vrijeme potrebno za montiranje vrlo velikih particija.
    • U F2FS dodano ioctl F2FS_IOC_SEC_TRIM_FILE, koji vam omogućuje korištenje naredbi TRIM/discard za fizički reset određenih podataka u datoteci, na primjer, za brisanje pristupnih ključeva bez ostavljanja preostalih podataka na disku.
      U F2FS također dodano novi način skupljanja smeća GC_URGENT_LOW, koji radi agresivnije eliminirajući neke provjere da li je u stanju mirovanja prije pokretanja sakupljača smeća.

    • U bcacheu, veličina bucket_size za ekstente povećana je sa 16 na 32 bita u pripremi za omogućavanje zonskih predmemorija uređaja.
    • Mogućnost korištenja ugrađene enkripcije temeljene na ugrađenoj hardverskoj enkripciji koju pružaju UFS kontroleri dodana je SCSI podsustavu (Univerzalna flash memorija).
    • Dodan je novi parametar naredbenog retka jezgre "debugfs", koji vam omogućuje kontrolu dostupnosti istoimenog pseudo-FS-a.
    • NFSv4.2 klijent pruža podršku za proširene atribute datoteka (xattr).
    • U dm-prašini dodano sučelje za prikaz popisa svih identificiranih loših blokova na disku (“dmsetup message dust1 0 listbadblocks”).
    • Za md/raid5 dodan je parametar /sys/block/md1/md/stripe_size za konfiguraciju veličine STRIPE bloka.
    • Za NVMe uređaje za pohranu dodao podrška za naredbe za zoniranje pogona (ZNS, NVM Express Zoned Namespace), koja omogućuje podjelu prostora za pohranu u zone koje čine grupe blokova za potpuniju kontrolu nad smještajem podataka na disku.
  • Mrežni podsustav
    • U Netfilteru dodao mogućnost odbijanja paketa u fazi prije provjere usmjeravanja (izraz REJECT sada se može koristiti ne samo u INPUT, FORWARD i OUTPUT lancima, već iu fazi PREROUTING za icmp i tcp).
    • U nftables dodao mogućnost revizije događaja povezanih s promjenama konfiguracije.
    • U nftables u netlink API-ju dodao podrška za anonimne lance, čije ime dinamički dodjeljuje kernel. Kada izbrišete pravilo povezano s anonimnim lancem, automatski se briše i sam lanac.
    • BPF dodaje podršku za iteratore za prelaženje, filtriranje i modificiranje elemenata asocijativnih nizova (mapa) bez kopiranja podataka u korisnički prostor. Iteratori se mogu koristiti za TCP i UDP utičnice, omogućujući BPF programima da ponavljaju popise otvorenih utičnica i iz njih izvlače potrebne informacije.
    • Dodan je novi tip BPF programa BPF_PROG_TYPE_SK_LOOKUP, koji se pokreće kada kernel traži odgovarajuću utičnicu za slušanje dolazne veze. Koristeći BPF program kao što je ovaj, možete kreirati rukovatelje koji donose odluke o tome s kojom utičnicom bi veza trebala biti povezana, bez ograničenja bind() sistemskog poziva. Na primjer, možete pridružiti jednu utičnicu nizu adresa ili portova. Dodatno, podrška za oznaku SO_KEEPALIVE dodana je u bpf_setsockopt() i implementirana je mogućnost instaliranja rukovatelja BPF_CGROUP_INET_SOCK_RELEASE, koji se pozivaju kada se socket oslobodi.
    • Implementirana podrška za protokol PRP (Parallel Redundancy Protocol), koji omogućuje prebacivanje temeljeno na Ethernetu na rezervni kanal, transparentan za aplikacije, u slučaju kvara bilo koje mrežne komponente.
    • Stack mac80211 dodao podrška za četiri stupnja WPA/WPA2-PSK pregovaranja kanala u načinu pristupne točke.
    • Dodana je mogućnost prebacivanja planera qdisc (disciplina čekanja) da koristi FQ-PIE (Flow Queue PIE) mrežni algoritam za upravljanje redovima čekanja prema zadanim postavkama, s ciljem smanjenja negativnog utjecaja međuspremnika paketa na rubnu mrežnu opremu (bufferbloat) u mrežama s kabelski modemi.
    • Nove značajke dodane su MPTCP-u (MultiPath TCP), proširenjima TCP protokola za organiziranje rada TCP veze s istovremenom dostavom paketa duž nekoliko ruta kroz različita mrežna sučelja povezana s različitim IP adresama. Dodana podrška za kolačić syn, DATA_FIN, automatsko podešavanje međuspremnika, dijagnostiku utičnice i zastavice REUSEADDR, REUSEPORT i V6ONLY u setockoptu.
    • Za virtualne tablice usmjeravanja VRF (Virtual Routing and Forwarding), koje omogućuju organiziranje rada nekoliko domena usmjeravanja na jednom sustavu, implementiran je "strogi" način rada. U ovom načinu rada, virtualna tablica može biti povezana samo s tablicom usmjeravanja koja se ne koristi u drugim virtualnim tablicama.
    • Bežični upravljački program je ath11k dodao podržava frekvenciju od 6 GHz i spektralno skeniranje.
  • Оборудование
    • Uklonjen kod za podršku arhitekturi UniCore, razvijenoj u mikroprocesorskom centru Sveučilišta u Pekingu i uključenoj u jezgru Linuxa 2011. Ova se arhitektura ne održava od 2014. i nema podršku u GCC-u.
    • Implementirana je podrška za RISC-V arhitekturu kcov (debugfs sučelje za analizu pokrivenosti koda kernela), kmemleak (sustav za otkrivanje curenja memorije), zaštita hrpe, oznake skokova i operacije bez škakljanja (multitasking neovisno o signalima timera).
    • Za PowerPC arhitekturu implementirana je podrška za redove čekanja za zaključavanje, što je značajno poboljšalo performanse u situacijama sukoba zaključavanja.
    • Za arhitekture ARM i ARM64, mehanizam regulacije frekvencije procesora omogućen je prema zadanim postavkama raspored (cpufreq governor), koji izravno koristi informacije iz planera zadataka za donošenje odluke o promjeni frekvencije i može odmah pristupiti cpufreq drajverima za brzu promjenu frekvencije, trenutačno prilagođavajući radne parametre CPU-a trenutnom opterećenju.
    • i915 DRM upravljački program za Intelove grafičke kartice uključuje podršku za čipove temeljene na mikroarhitekturi Rocket Lake i dodana početna podrška za diskretne kartice Intel Xe DG1.
    • Amdgpu upravljački program dodao je početnu podršku za AMD GPU Navi 21 (Navy Flounder) i Navi 22 (Sienna Cichlid). Dodana podrška za motore za ubrzanje kodiranja i dekodiranja UVD/VCE videa za GPU Southern Islands (Radeon HD 7000).
      Dodano svojstvo za rotiranje zaslona za 90, 180 ili 270 stupnjeva.

      Zanimljivo, drajver za AMD GPU je najveći pokretač u kernelu - ima oko 2.71 milijuna linija koda, što je otprilike 10% ukupne veličine kernela (27.81 milijuna linija). U isto vrijeme, 1.79 milijuna redaka obračunava se automatski generiranim datotekama zaglavlja s podacima za GPU registre, a C kod ima 366 tisuća redaka (za usporedbu, Intel i915 driver uključuje 209 tisuća redaka, a Nouveau - 149 tisuća).

    • U Nouveau vozaču dodao podrška za provjeru integriteta okvir po okvir pomoću CRC (Cyclic Redundancy Checks) u NVIDIA GPU prikazivačima. Implementacija se temelji na dokumentaciji koju je dostavila NVIDIA.
    • Dodani upravljački programi za LCD panele: Frida FRD350H54004, KOE TX26D202VM0BWA, CDTech S070PWS19HP-FC21, CDTech S070SWV29HG-DC44, Tianma TM070JVHG33 i Xingbangda XBD599.
    • ALSA audio podsustav podržava Intel Silent Stream (stalni način rada za vanjske HDMI uređaje kako bi se uklonilo kašnjenje pri pokretanju reprodukcije) i novi uređaj za upravljanje osvjetljenjem tipki za aktiviranje mikrofona i isključivanje zvuka, a također je dodana podrška za novu opremu, uključujući kontroler Longson 7A1000.
    • Dodana podrška za ARM ploče, uređaje i platforme: Pine64 PinePhone v1.2, Lenovo IdeaPad Duet 10.1, ASUS Google Nexus 7, Acer Iconia Tab A500, Qualcomm Snapdragon SDM630 (koristi se u Sony Xperia 10, 10 Plus, XA2, XA2 Plus i XA2 Ultra), Jetson Xavier NX, Amlogic WeTek Core2, Aspeed EthanolX, pet novih ploča temeljenih na NXP i.MX6, MikroTik RouterBoard 3011, Xiaomi Libra, Microsoft Lumia 950, Sony Xperia Z5, MStar, Microchip Sparx5, Intel Keem Bay, Amazon Alpine v3, Renesas RZ/G2H.

Istodobno, Latinoamerička zaklada za slobodni softver formirana
opcija potpuno besplatna jezgra 5.9 - linux-libre 5.9-gnu, očišćen od firmvera i elemenata upravljačkog programa koji sadrže neslobodne komponente ili dijelove koda, čiji je opseg ograničen od strane proizvođača. Novo izdanje onemogućuje učitavanje blobova u upravljačke programe za WiFi rtw8821c i SoC MediaTek mt8183. Ažurirani kod za čišćenje mrlja u Habanalabs, Wilc1000, amdgpu, mt7615, i915 CSR, Mellanox mlxsw (Spectrum3), r8169 (rtl8125b-2) i x86 upravljačkim programima i podsustavima za zaslon osjetljiv na dodir.

Izvor: opennet.ru

Dodajte komentar