Izdanje jezgre Linux 5.9

Nakon dva mjeseca razvoja, Linus Torvalds predstavio izdanje jezgre Linux 5.9. Među najistaknutijim promjenama su: ograničenje uvoza simbola iz proprietary modula u GPL module, ubrzanje operacija prebacivanja konteksta koristeći procesorsku instrukciju FSGSBASE, podrška za kompresiju slike jezgre pomoću Zstd, prerada prioriteta za procese u jezgri, podrška za PRP (Parallel Redundancy Protocol), planiranje uzimajući u obzir propusnost u deadline planeru, proaktivno pakiranje stranica memorije, capability-flag CAP_CHECKPOINT_RESTOR, sustavni poziv close_range(), poboljšanje performansi dm-crypt, uklanjanje koda za 32-bitne gostujuće sustave Xen PV, novi mehanizam upravljanja memorijom slab, opcija „rescue“ u Btrfs, te podrška za inline enkripciju u ext4 i F2FS.

U novu verziju uključeno je 16074 ispravki od 2011 programera,
veličina patcha iznosi 62 MB (promjene su se dotakle 14548 datoteka, dodano je 782155 redaka koda, uklonjeno 314792 retka). Oko 45% svih promjena u 5.9
promjena odnosi se na drajvere uređaja, otprilike 15% promjena ima
na ažuriranje koda specifičnog za hardverske arhitekture, 13%
odnosi se na mrežni stog, 3% na datotečne sustave i 3% na interne
pod sustave jezgre.

Glavne novosti:

  • Memorija i sistemske usluge
    • Pojačana zaštita od korištenja GPL slojeva za povezivanje proprietarnih drajvera s komponentama jezgre koje se izvoze samo za module pod GPL licencom. Zastavica TAINT_PROPRIETARY_MODULE sada se nasljeđuje u svim modulima koji uvoze simbole iz modula s ovom zastavicom. Ako GPL modul pokuša uvesti simbole iz ne-GPL modula, taj GPL modul će naslijediti oznaku TAINT_PROPRIETARY_MODULE i neće moći pristupiti komponentama jezgre dostupnim samo za module pod GPL licencom, čak i ako je modul ranije uveo simbole iz kategorije „gplonly“. Obrnuta blokada (izvoz samo EXPORT_SYMBOL_GPL u modulima koji su uvezli EXPORT_SYMBOL_GPL), koja bi mogla ometati rad proprietarnih drajvera, nije implementirana (nasljeđuje se samo zastavica proprietarnog modula, ali ne GPL veze).
    • Dodana podrška za mehanizam kcompactd za proaktivno pakiranje stranica memorije u pozadinskom režimu, koji omogućuje povećanje broja velikih stranica memorije dostupnih jezgru. Preliminarne procjene pokazuju da pozadinsko pakiranje uz minimalne troškove omogućuje smanjenje kašnjenja prilikom dodjeljivanja velikih stranica memorije (huge-page) za 70-80 puta u odnosu na prethodno korišteni mehanizam pakiranja koji se pokretao na zahtjev (on-demand). Za postavljanje granica vanjske fragmentacije koju će osigurati kcompactd, dodan je sysctl vm.compaction_proactiveness.
    • Dodana podrška za kompresiju slike jezgre koristeći algoritam Zstandard (zstd).
    • Za x86 sustave implementirana je podrška za instrukciju procesora FSGSBASE, koja omogućuje čitanje i izmjenu sadržaja registara FS/GS iz korisničkog prostora. U jezgri se FSGSBASE koristi za ubrzanje operacija prebacivanja konteksta izbacivanjem suvišnih operacija pisanja MSR za GSBASE, a u korisničkom prostoru omogućava smanjenje suvišnih sistemskih poziva za promjenu FS/GS.
    • Dodano parametar "allow_writes", koji omogućava onemogućavanje izmjena MSR registara procesora iz korisničkog prostora i ograničava pristup sadržaju tih registara na operacije čitanja, jer promjena MSR-a može dovesti do problema. Zadano, pisanje nije onemogućeno, a promjene MSR-a bilježe se u logu, ali u budućnosti je planirano promijeniti pristup prema zadanom u režim samo za čitanje.
    • U sučelje asinkronog ulaza/izlaza io_uring dodana je potpuna podrška za asinkrone operacije baferiranog čitanja koje ne zahtijevaju uključivanje jezgri. Očekuje se podrška za pisanje u sljedećem izdanju.
    • U planeru ulaza/izlaza deadline implementirano je planiranje s obzirom na propusnost, omogućujući donositi točne odluke na asimetričnim sustavima, kao što su ARM sustavi temeljeni na arhitekturama DynamIQ i big.LITTLE, koji kombiniraju snažne i manje performante energetski učinkovite CPU jezgri unutar jednog čipa. Konkretno, novi režim omogućuje izbjegavanje neusaglašenosti prilikom planiranja kada spora CPU jezgra nema dovoljno resursa za izvršavanje zadatka u zadatom roku.
    • Model potrošnje energije u jezgri (Energy Model framework) sada opisuje ne pokriva samo ponašanje potrošnje energije CPU-a, već obuhvaća i perifernu opremu.
    • Implementiran je sistemski poziv close_range(), koji omogućuje procesu da jednim potezom zatvori cijeli opseg otvorenih datotečnih deskriptora.
    • Iz implementacije tekstualne konzole i vozača fbcon uklonjen kod, koja omogućava programsko pomicanje teksta unatrag (CONFIG_VGACON_SOFT_SCROLLBACK) više od kapaciteta video memorije tekstualnog moda VGA.
    • Revidirano algoritam dodjele prioriteta za tokove unutar jezgre. Nova verzija osigurava bolju usklađenost u svim pod sustavima jezgre pri dodjeli prioriteta za zadatke u stvarnom vremenu.
    • Dodana je sysctl sched_uclamp_util_min_rt_default za upravljanje parametrima forsiranja frekvencije CPU-a za zadatke u stvarnom vremenu (na primjer, moguće je u hodu mijenjati ponašanje pri izvršavanju zadataka u stvarnom vremenu radi uštede energije nakon prelaska na napajanje iz baterije ili na mobilnim sustavima).
    • Pripremljena je podrška za tehnologiju Transparent Huge Pages u stranicnom predmemoriranju.
    • U mehanizmu fanotify implementirane su nove zastavice FAN_REPORT_NAME i FAN_REPORT_DIR_FID za prijenos informacija o roditeljskom imenu i jedinstvenom identifikatoru FID prilikom događaja stvaranja, brisanja ili premještanja elemenata direktorija koji se ne odnose na direktorije.
    • Za cgroups implementiran novi kontroler raspodjele memorije slab (slab memory controller), koji se ističe prijenosom vođenja slab-a s razine stranica memorije na razinu objekata jezgre, čime se omogućava zajedničko korištenje slab-stranica u različitim cgroup-ima, umjesto da se dodjeljuju odvojeni keševi slab za svaku cgroup. Predloženi pristup omogućava poboljšanje učinkovitosti korištenja slab-a, smanjujući veličinu memorije korištene za slab za 30-45%, značajno smanjujući ukupnu potrošnju memorije od strane jezgre i smanjujući fragmentaciju memorije.
    • U audio pod sustavu ALSA i USB-steku, u skladu s nedavno usvojenim preporukama za korištenje inkluzivne terminologije u Linux jezgri, izvršena je čišćenje neprikladnih izraza. Kod je očišćen od upotrebe riječi 'slave', 'master', 'blacklist' i 'whitelist'.
  • Virtualizacija i sigurnost
    • Prilikom izgradnje jezgre koristeći kompajler Clang dodana je mogućnost podešavanja (CONFIG_INIT_STACK_ALL_ZERO) automatske inicijalizacije nultom vrijednošću svih varijabli pohranjenih na steku (prilikom izgradnje se navodi '-ftrivial-auto-var-init=zero').
    • U pod sustav seccomp, prilikom korištenja režima kontrole procesa u korisničkom prostoru, dodana mogućnost zamjene u praćenom procesu datotečnih deskriptora za potpunu emulaciju sistemskih poziva koji dovode do stvaranja datotečnih deskriptora. Ova funkcionalnost je tražena u sustavima izoliranih kontejnera i implementaciji sandboxa za Chrome.
    • Za arhitekture xtensa i csky dodana je podrška za ograničavanje sistemskih poziva putem pod-sustava seccomp. Za xtensa dodatno je implementirana podrška za mehanizam revizije.
    • Dodano novi capability-flag CAP_CHECKPOINT_RESTORE, koji omogućava pristup mogućnostima vezanim uz pauziranje i obnavljanje stanja procesa bez prijenosa dodatnih privilegija.
    • U GCC 11 implementirane su sve mogućnosti potrebne za
      alat za dijagnostiku KCSAN (Kernel Concurrency Sanitizer), namijenjen dinamičkom otkrivanju stanja utrke unutar jezgre. Tako, KCSAN se sada može koristiti s kernelima sastavljenim u GCC-u.
    • Za AMD Zen i novije modele CPU dodana podrška za tehnologiju P2PDMA, koja omogućava DMA za izravni prijenos podataka između memorije dva uređaja povezana s PCI sabirnicom.
    • U dm-crypt dodan je način koji omogućava smanjenje latencije putem izvršavanja kriptografske obrade podataka bez korištenja radnih redova. Ova opcija je također potrebna za pravilno funkcioniranje s zoniranim blok uređajima (uređaji s područjima koja se moraju zapisivati sekvencijalno uz ažuriranje cijele grupe blokova). Uloženi su napori na povećanju propusnosti i smanjenju latencije u dm-crypt.
    • Uklonjen je kod za podršku 32-bitnim gostujućim sustavima koji rade u režimu para-virtualizacije pod upravom hipervizora Xen. Korisnicima takvih sustava preporučuje se prelazak na korištenje 64-bitnih kernela u gostujućim okruženjima ili korištenje režima pune (HVM) ili kombinirane (PVH) virtualizacije umjesto para-virtualizacije (PV) za pokretanje okruženja.
  • Sistem diska, ulaz/izlaz i datotečni sustavi
    • U datotečnom sustavu Btrfs implementirano je opcija montiranja 'rescue', koja unificira pristup svim drugim opcijama za obnovu. Uklonjena je podrška za opcije 'alloc_start' i 'subvolrootid', a opcija 'inode_cache' je proglašena zastarjelom. Optimizirana je izvedba, posebno je primjetno ubrzan rad operacija fsync(). Dodana mogućnost korištenja alternativnih tipova kontrolnih zbrojeva, različitih od CRC32c.
    • Dodana mogućnost korištenja inline-enkripcije (Inline Encryption) u datotečnim sustavima ext4 i F2FS, za koju je predviđena opcija montiranja «inlinecrypt». Način inline-enkripcije omogućava korištenje ugrađenih mehanizama šifriranja na kontroleru pohrane, koji provode transparentno šifriranje i dešifriranje ulaza/izlaza.
    • U XFS-u osigurano resetiranje inode-a (flush) u potpuno asinkronom režimu, koji ne blokira procese tijekom izvršavanja operacije čišćenja memorije. Riješen je dugogodišnji problem s kvotama, zbog kojeg su se neispravno pratili upozorenja o prekoračenju mekog limita i ograničenja na broj inode-a. Ujednačena je implementacija podrške za DAX za ext4 i xfs.
    • U Ext4 implementirano je proaktivno učitavanje bitmapa raspodjele blokova. U kombinaciji s ograničenjem skeniranja neinicijaliziranih grupa, optimizacija je omogućila smanjenje vremena montiranja vrlo velikih particija.
    • U F2FS dodana je ioctl F2FS_IOC_SEC_TRIM_FILE, koji omogućava korištenje komandi TRIM/discard za fizičko poništavanje specifičnih podataka u datoteci, na primjer, za uklanjanje pristupnih ključeva bez ostavljanja preostalih podataka na uređaju.
      U F2FS također dodana je novi način prikupljanja smeća GC_URGENT_LOW, koji radi agresivnije isključujući neka provjeravanja stanja mirovanja (idle) prije pokretanja sakupljača smeća.
    • U bcacheu veličina bucket_size za ekstenzije povećana je s 16 na 32 bita u okviru pripreme za omogućavanje primjene za cache zoničnih uređaja.
    • U SCSI podsustav dodana je mogućnost korištenja inline-enkripcije na temelju ugrađenih sredstava hardverskog šifriranja, koje osiguravaju UFS kontroleri (Univerzalno flash pohranu).
    • Dodana je nova opcija naredbenog retka jezgre «debugfs», koja omogućava upravljanje dostupnošću istoimene pseudo-FS.
    • U klijentu NFSv4.2 osigurana je podrška za proširene atribute datoteka (xattr).
    • U dm-dust dodana je sučelje za jedinstveno prikazivanje popisa svih otkrivenih loših blokova na disku («dmsetup message dust1 0 listbadblocks»).
    • Za md/raid5 dodan je parametar /sys/block/md1/md/stripe_size za podešavanje veličine STRIPE bloka.
    • Za NVMe uređaje za pohranu dodana podrška za naredbe za zoniranje uređaja (ZNS, NVM Express Zoned Namespace), koja omogućava razdvajanje prostora za pohranu na zone koje čine grupe blokova, radi potpunijeg upravljanja smještajem podataka na uređaju.
  • Mrežni subsistem
    • U Netfilter dodana mogućnost odbijanja paketa prije provjere usmjeravanja (izravan REJECT sada se može koristiti ne samo u INPUT, FORWARD i OUTPUT lancima, već i u PREROUTING fazi za icmp i tcp).
    • U nftables dodana mogućnost revizije događaja povezanih s promjenom konfiguracije.
    • U nftables u API netlink dodana podrška anonimnim lancima, čije ime dinamički dodjeljuje jezgra. Kada se ukloni pravilo povezano s anonimnim lancem, automatski se uklanja i sam lanac.
    • BPF je dodao podršku za iteratore za prolazak, filtriranje i promjenu elemenata asocijativnih nizova (map) bez kopiranja podataka u korisnički prostor. Iteratorima se može koristiti za TCP i UDP sokete, što omogućava BPF programima da prolaze kroz popise otvorenih soketa i izvuku potrebne informacije.
    • Dodana je nova vrsta BPF programa BPF_PROG_TYPE_SK_LOOKUP, koja se pokreće kada jezgra traži odgovarajući slušajući soket za dolaznu vezu. Uz pomoć takvog BPF programa može se stvarati obrada koja donosi odluke o tome s kojim soketom treba povezati vezu, bez ograničenja na sistemski poziv bind(). Na primjer, moguće je organizirati povezivanje jednog soketa s rasponom adresa ili portova. Također je u bpf_setsockopt() dodana podrška za flag SO_KEEPALIVE i omogućena je mogućnost uspostavljanja obrada BPF_CGROUP_INET_SOCK_RELEASE, pozvanih prilikom oslobađanja soketa.
    • Implementirana je podrška za protokol PRP (Parallel Redundancy Protocol), koji omogućuje transparentno prebacivanje na rezervni kanal u slučaju kvara bilo kojih komponenti mreže, temeljen na Ethernetu.
    • U mac80211 steku dodana podrška za četverostepeno usklađivanje kanala WPA/WPA2-PSK u režimu pristupne točke.
    • Dodana je mogućnost prebacivanja raspoređivača qdisc (disciplinu redoslijeda) na korištenje zadanog algoritma upravljanja mrežnim redovima FQ-PIE (Flow Queue PIE), koji je usmjeren na smanjenje negativnog utjecaja međuspremnicima paketa na granici mrežne opreme (bufferbloat) u mrežama s kabelskim modemima.
    • Dodane su nove mogućnosti u MPTCP (MultiPath TCP), proširenja TCP protokola za organiziranje TCP veze s istodobnom isporukom paketa putem više ruta kroz različite mrežne sučelje vezane uz različite IP adrese. Dodana je podrška za syn cookie, DATA_FIN, automatsku konfiguraciju baferâ, dijagnostiku soketa te korištenje oznaka REUSEADDR, REUSEPORT i V6ONLY u setsockopt.
    • Za virtualne tablice usmjeravanja VRF (Virtual Routing and Forwarding), koje omogućuju rad više domena usmjeravanja na jednom sustavu, implementiran je režim „strict“. U ovom režimu virtualna tablica može biti povezana samo s tablicom usmjeravanja koja se ne koristi u drugim virtualnim tablicama.
    • U bežičnom upravljačkom programu ath11k dodana podrška za frekvenciju od 6GHz i spektar skeniranja.
  • Oprema
    • Uklonjen je kod za podršku arhitekturi UniCore, razvijenoj u mikroprocesorskom centru Pekinškog sveučilišta i uključenoj u jezgru Linuxa 2011. godine. Ova arhitektura je od 2014. godine bez podrške i nema podršku u GCC-u.
    • Za arhitekturu RISC-V implementirana je podrška za kcov (debugfs sučelje za analizu pokrivenosti koda jezgre), kmemleak (sustav za otkrivanje curenja memorije), zaštitu staka, oznake prijenosa i tickless operacije (neovisno o signalima tajmera višezadaćnost).
    • Za arhitekturu PowerPC implementirana je podrška za redove za spinlock, što je značajno povećalo performanse u situacijama sukoba zaključavanja.
    • Za arhitekture ARM i ARM64 po defaultu se koristi mehanizam regulacije frekvencije procesora schedutil (cpufreq guverner), koji za donošenje odluke o promjeni frekvencije izravno koristi informacije od raspoređivača zadataka i može odmah komunicirati s cpufreq upravljačima za trenutnu promjenu frekvencije, odmah prilagođavajući parametre rada CPU-a trenutnom opterećenju.
    • U DRM upravljačkom programu i915 za Intel grafičke kartice uključena je podrška za čipove na bazi mikroarhitekture Rocket Lake i dodana je osnovna podrška za diskretne kartice Intel Xe DG1.
    • U upravljačkom programu amdgpu dodana je osnovna podrška za AMD GPU Navi 21 (Navy Flounder) i Navi 22 (Sienna Cichlid). Dodana je podrška za mehanizme ubrzanja kodiranja i dekodiranja videa UVD/VCE za GPU Southern Islands (Radeon HD 7000).
      Dodana je opcija za rotaciju prikaza za 90, 180 ili 270 stupnjeva.

      Zanimljivo je da je upravljački program za AMD GPU je postao najveći drajver u jezgri — sadrži oko 2,71 milijun linija koda, što je otprilike 10% od ukupne veličine jezgre (27,81 milijun linija). Od toga, 1,79 milijun linija čine automatski generirani zaglavlja s podacima za registre GPU-a, dok C-kod čini 366 tisuća linija (za usporedbu, Intel i915 drajver sadrži 209 tisuća linija, dok Nouveau ima 149 tisuća).

    • U Nouveau drajveru dodana podrška za provjeru integriteta okvira putem CRC (Ciklusi redundancije) u grafičkim motorima GPU NVIDIA. Implementacija se temelji na dokumentaciji koju pruža NVIDIA.
    • Dodani drajveri za LCD panele: Frida FRD350H54004, KOE TX26D202VM0BWA, CDTech S070PWS19HP-FC21, CDTech S070SWV29HG-DC44, Tianma TM070JVHG33 i Xingbangda XBD599.
    • U zvučnoj podsklopu ALSA implementirana je podrška za uključivanje u Linux jezgru 5.9, ističe se implementacija podrške Intel Silent Stream (način stalnog održavanja napajanja za vanjske HDMI uređaje kako bi se izbjeglo kašnjenje prilikom pokretanja reprodukcije) i novog uređaja za upravljanje pozadinskim osvjetljenjem tipki za aktivaciju mikrofona i isključivanje zvuka, a također je dodana podrška za novu opremu, uključujući kontroler Loongson 7A1000.
    • Dodana podrška za ARM platforme, uređaje i platforme: Pine64 PinePhone v1.2, Lenovo IdeaPad Duet 10.1, ASUS Google Nexus 7, Acer Iconia Tab A500, Qualcomm Snapdragon SDM630 (koji se koristi 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.

Zajedno je latinskoamerička Zaklada za slobodan softver formirala
varijantu potpuno slobodne jezgre 5.9 — Linux-libre 5.9-gnu, očišćene od elemenata firmvera i drajvera koji sadrže neslobodne komponente ili dijelove koda čija je primjena ograničena od strane proizvođača. U novom izdanju onemogućeno je učitavanje blobova u drajverima za WiFi rtw8821c i SoC MediaTek mt8183. Ažuriran je kod za čišćenje blobova u drajverima i podsklopovima Habanalabs, Wilc1000, amdgpu, mt7615, i915 CSR, Mellanox mlxsw (Spectrum3), r8169 (rtl8125b-2) i x86 touchscreen.

Izvor: opennet.ru

Kupite pouzdan hosting za web stranice s DDoS zaštitom, VPS VDS servere 🔥 Kupite pouzdan hosting za web stranice s DDoS zaštitom, VPS VDS servere | ProHoster