Izdanje kernela Linux 5.9

Nakon dva mjeseca razvoja, Linus Torvalds uveo izdanje kernela Linux 5.9. Među najznačajnijim promjenama: ograničavanje uvoza simbola iz vlasničkih modula u GPL module, ubrzavanje operacija promjene konteksta pomoću procesorske instrukcije FSGSBASE, podrška za kompresiju slike kernela pomoću Zstd-a, prerada prioriteta niti u kernelu, podrška za PRP (Parallel Redundancy Protocol) , raspoređivanje svjesno propusnosti u planeru rokova, preventivno pakovanje memorijskih stranica, oznaka mogućnosti CAP_CHECKPOINT_RESTOR, close_range() sistemski poziv, poboljšanja performansi dm-crypt, uklanjanje koda za 32-bitne Xen PV goste, nova ploča memorija mehanizam upravljanja, opcija “spasavanje” u Btrfs-u, podrška za inline enkripciju u ext4 i F2FS.

Nova verzija uključuje 16074 popravka od programera iz 2011.
veličina zakrpe - 62 MB (promjene su uticale na 14548 datoteka, dodano je 782155 linija koda, 314792 linija je obrisano). Oko 45% svih predstavljenih u 5.9
promjene se odnose na drajvere uređaja, otprilike 15% promjena je
stav prema ažuriranju koda specifičnog za hardverske arhitekture, 13%
odnosi se na mrežni stog, 3% na sistem datoteka i 3% na interne
podsistemi kernela.

Glavni inovacije:

  • Memorijski i sistemski servisi
    • Zategnuto zaštita od upotrebe GPL slojeva za povezivanje vlasničkih drajvera sa komponentama kernela koje se izvoze samo za module pod GPL licencom. Oznaka TAINT_PROPRIETARY_MODULE je sada naslijeđena u svim modulima koji uvoze simbole iz modula sa ovom zastavicom. Ako GPL modul pokuša da uveze simbole iz ne-GPL modula, tada će taj GPL modul naslijediti oznaku TAINT_PROPRIETARY_MODULE i neće moći pristupiti komponentama jezgre koje su dostupne samo modulima s GPL licencom, čak i ako je modul prethodno uvezao 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 drajvera, nije implementirano (nasljeđuje se samo zastavica vlasničkog modula, ali ne i GPL veze).
    • Dodano kcompactd engine podrška za memorijske stranice za prethodno pakovanje u pozadini da povećate broj velikih memorijskih stranica dostupnih kernelu. Prema preliminarnim procjenama, pozadinsko pakovanje, po cijenu minimalnih troškova, može smanjiti kašnjenja pri dodjeli velikih memorijskih stranica (ogromna stranica) za 70-80 puta u odnosu na prethodno korišteni mehanizam za pakovanje, pokrenut kada se ukaže potreba (on-demand). ). Za postavljanje granica vanjske fragmentacije koju će kcompactd pružiti, dodat je sysctl vm.compaction_proactiveness.
    • Dodano podrška za kompresiju slike kernela pomoću algoritma zstandard (zstd).
    • Podrška za instrukcije procesora je implementirana za x86 sisteme FSGSBASE, koji vam omogućava čitanje i promjenu sadržaja FS/GS registara iz korisničkog prostora. U kernelu, FSGSBASE se koristi za ubrzavanje operacija prebacivanja konteksta eliminacijom nepotrebnih MSR operacija pisanja za GSBASE, a u korisničkom prostoru izbjegava nepotrebne sistemske pozive za promjenu FS/GS.
    • Dodano parametar “allow_writes” vam omogućava da zabranite promjene u MSR registrima procesora iz korisničkog prostora i ograničite pristup sadržaju ovih registara na operacije čitanja, jer promjena MSR-a može dovesti do problema. Podrazumevano, pisanje još uvek nije onemogućeno, a promene MSR-a se odražavaju u dnevniku, ali se u budućnosti planira prebacivanje podrazumevanog pristupa u režim samo za čitanje.
    • Na asinhroni I/O interfejs io_uring Dodata puna podrška za asinkrone operacije čitanja u baferu koje ne zahtijevaju niti kernela. Podrška za snimanje se očekuje u narednom izdanju.
    • U roku I/O planera implementirano planiranje na osnovu kapaciteta, dozvoljavajući donose ispravne odluke o asimetričnim sistemima kao što su sistemi zasnovani na ARM-u DynamIQ i big.LITTLE, koji kombinuju moćne i manje efikasne energetski efikasne CPU jezgre u jednom čipu. Konkretno, novi način vam omogućava da izbjegnete neusklađenost rasporeda kada spora CPU jezgra nema odgovarajuće resurse da izvrši zadatak na vrijeme.
    • Model potrošnje energije u kernelu (Energy Model framework) je sada opisuje ne samo ponašanje CPU potrošnje energije, već pokriva i periferne uređaje.
    • Sistemski poziv close_range() je implementiran kako bi se omogućilo procesu da zatvori čitav niz otvorenih deskriptora datoteka odjednom.
    • Od implementacije tekstualne konzole i fbcon drajvera kod uklonjen, koji pruža mogućnost programskog skrolovanja teksta nazad (CONFIG_VGACON_SOFT_SCROLLBACK) za više od količine video memorije VGA tekstualnog režima.
    • Prerađeno algoritam za dodeljivanje prioriteta nitima unutar kernela. Nova opcija pruža bolju konzistentnost u svim podsistemima kernela prilikom dodjele prioriteta zadacima u realnom vremenu.
    • Dodan sysctl sched_uclamp_util_min_rt_default za kontrolu postavki povećanja CPU-a za zadatke u realnom vremenu (na primjer, možete promijeniti ponašanje zadataka u realnom vremenu u hodu da biste uštedjeli energiju nakon prelaska na napajanje iz baterije ili na mobilnim sistemima).
    • Izvršene su pripreme za implementaciju podrške za Transparent Huge Pages tehnologiju u keš stranice.
    • Fanotify motor implementira nove zastavice FAN_REPORT_NAME i FAN_REPORT_DIR_FID za prijavu nadređenog imena i jedinstvene FID informacije kada se događaju kreiranja, brisanja ili kretanja za stavke direktorija i objekte koji nisu u direktoriju.
    • Za cgroups implementirano novi kontroler ploča memorije, koji je poznat po premeštanju obračuna ploča sa nivoa memorijske stranice na nivo objekta kernela, što omogućava deljenje pločastih stranica u različitim cgrupama, umesto dodeljivanja zasebnih predmemorija ploča za svaku cgrupu. Predloženi pristup omogućava povećanje efikasnosti korišćenja ploče, smanjenje veličine memorije koja se koristi za ploču za 30-45%, značajno smanjenje ukupne potrošnje memorije kernela i smanjenje fragmentacije memorije.
    • U zvučnom podsistemu ALSA и USB stog, u skladu sa nedavno usvojeno preporuke o korištenju inkluzivne terminologije u jezgru Linuxa; politički nekorektni termini su očišćeni. Kod je očišćen od riječi "slave", "master", "crna lista" i "whitelist".
  • Virtuelizacija i sigurnost
    • Prilikom izrade kernela koristeći Clang kompajler pojavila mogućnost konfigurisanja (CONFIG_INIT_STACK_ALL_ZERO) automatske inicijalizacije na nulu svih varijabli pohranjenih na steku (prilikom izgradnje navedite “-ftrivial-auto-var-init=zero”).
    • U podsistemu seccomp, kada se koristi način upravljanja procesom u korisničkom prostoru, dodano prilika zamjena deskriptora datoteka u nadgledani proces kako bi se u potpunosti emulirali sistemski pozivi koji dovode do stvaranja deskriptora datoteka. Funkcionalnost je tražena u izoliranim sustavima kontejnera i Sandbox implementacijama za Chrome.
    • Za xtensa i csky arhitekture, dodata je podrška za ograničavanje sistemskih poziva pomoću podsistema seccomp. Za xtensa je dodatno implementirana podrška za mehanizam revizije.
    • Dodano nova zastavica mogućnosti CAP_CHECKPOINT_RESTORE, koja vam omogućava da omogućite pristup mogućnostima koje se odnose na zamrzavanje i vraćanje stanja procesa bez prenosa dodatnih privilegija.
    • GCC 11 pruža sve funkcije koje su vam potrebne
      Alat za otklanjanje grešaka KCSAN (Kernel Concurrency Sanitizer), dizajniran da dinamički detektuje uslove trke unutar kernela. Dakle, KCSAN se sada može koristiti sa kernelima ugrađenim u GCC.

    • Za AMD Zen i novije modele CPU-a dodano podrška za P2PDMA tehnologiju, koja vam omogućava da koristite DMA za direktan prenos podataka između memorije dva uređaja povezana na PCI magistralu.
    • U dm-crypt je dodan način rada koji vam omogućava da smanjite kašnjenje obavljanjem kriptografske obrade podataka bez korištenja radnih redova. Ovaj režim je takođe neophodan za ispravan rad sa zonirano blok uređaji (uređaji s područjima koja se moraju upisivati ​​uzastopno, ažurirajući cijelu grupu blokova). Rad je obavljen na povećanju propusnosti i smanjenju kašnjenja u dm-cryptu.
    • Uklonjen je kod za podršku 32-bitnim gostima koji rade u paravirtualizacijskom modu koji koriste Xen hipervizor. Korisnici takvih sistema bi trebali preći na korištenje 64-bitnih kernela u gostujućim okruženjima ili koristiti pune (HVM) ili kombinovane (PVH) načine virtuelizacije umjesto paravirtualizacije (PV) za pokretanje okruženja.
  • Diskovni podsistem, I/O i sistemi datoteka
    • Na sistemu datoteka Btrfs implementirano "rescue" opcija montiranja koja objedinjuje pristup svim drugim opcijama oporavka. Podrška za opcije "alloc_start" i "subvolrootid" je uklonjena, a opcija "inode_cache" je zastarjela. Napravljene su optimizacije performansi, posebno značajno ubrzanje izvršavanja fsync() operacija. Dodano mogućnost korištenja alternativnih tipova kontrolnih suma osim CRC32c.
    • Dodano mogućnost korištenja inline enkripcije (Inline Encryption) u ext4 i F2FS sistemima datoteka, da bi se omogućila opcija montiranja „inlinecrypt“. Inline način šifriranja vam omogućava da koristite mehanizme šifriranja ugrađene u kontroler pogona, koji transparentno šifrira i dešifruje ulaz/izlaz.
    • U XFS osiguran resetovanje inode (ispiranje) u potpuno asinkronom režimu koji ne blokira procese prilikom izvođenja operacije čišćenja memorije. Riješen je dugogodišnji problem s kvotom koji je uzrokovao neispravno praćenje mekih ograničenja i ograničenja inode ograničenja. Objedinjena implementacija DAX podrške za ext4 i xfs.
    • U Ext4 implementirano unaprijed učitaj bitmape za dodjelu bloka. U kombinaciji sa ograničavanjem 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ćava da koristite komande TRIM/discard da fizički resetujete određene podatke u datoteci, na primer, da izbrišete pristupne ključeve bez ostavljanja preostalih podataka na disku.
      U F2FS takođe dodano novi način prikupljanja 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 bcache-u, bucket_size za ekstente je povećana sa 16 na 32 bita u pripremi za omogućavanje zoniranih predmemorija uređaja.
    • Mogućnost korištenja inline enkripcije zasnovane na ugrađenoj hardverskoj enkripciji koju pružaju UFS kontroleri dodata je SCSI podsistemu (Univerzalna Flash memorija).
    • Dodan je novi parametar komandne linije kernela “debugfs” koji vam omogućava kontrolu dostupnosti istoimenog pseudo-FS-a.
    • NFSv4.2 klijent pruža podršku za proširene atribute datoteke (xattr).
    • U dm-prašini dodano interfejs za istovremeno prikazivanje liste svih identifikovanih loših blokova na disku (“dmsetup poruka dust1 0 listbadblocks”).
    • Za md/raid5, parametar /sys/block/md1/md/stripe_size je dodan za konfiguraciju veličine STRIPE bloka.
    • Za NVMe uređaje za pohranu dodano podrška za komande za zoniranje pogona (ZNS, NVM Express Zoned Namespace), što vam omogućava da podijelite prostor za skladištenje u zone koje čine grupe blokova za potpuniju kontrolu nad smještajem podataka na disk.
  • Mrežni podsistem
    • U Netfilter dodano mogućnost odbijanja paketa u fazi prije provjere rutiranja (izraz REJECT sada se može koristiti ne samo u lancima INPUT, FORWARD i OUTPUT, već iu fazi PREROUTING za icmp i tcp).
    • U nftables dodano mogućnost revizije događaja vezanih za promjene konfiguracije.
    • U nftables u netlink API-ju dodano podrška za anonimne lance, čije ime jezgro dodeljuje dinamički. Kada izbrišete pravilo povezano s anonimnim lancem, sam lanac se automatski briše.
    • BPF dodaje podršku za iteratore da prelaze, filtriraju i modificiraju elemente asocijativnih nizova (mapa) bez kopiranja podataka u korisnički prostor. Iteratori se mogu koristiti za TCP i UDP utičnice, omogućavajući BPF programima da iteriraju preko lista otvorenih soketa i iz njih izvuku informacije koje su im potrebne.
    • 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 za dolaznu vezu. Koristeći BPF program kao što je ovaj, možete kreirati rukovaoce koji donose odluke o tome s kojim utičnicom bi se veza trebala povezati, bez ograničenja bind() sistemskim pozivom. Na primjer, možete povezati jednu utičnicu s nizom adresa ili portova. Dodatno, podrška za SO_KEEPALIVE zastavicu je dodana u bpf_setsockopt() i implementirana je mogućnost instaliranja rukovatelja BPF_CGROUP_INET_SOCK_RELEASE, pozvanih kada se socket pusti.
    • Implementirana podrška protokola PRP (Parallel Redundancy Protocol), koji omogućava Ethernet-bazirano prebacivanje na rezervni kanal, transparentan za aplikacije, u slučaju kvara bilo koje mrežne komponente.
    • Stack mac80211 dodano podrška za četvorostepeno pregovaranje WPA/WPA2-PSK kanala u režimu pristupne tačke.
    • Dodata je mogućnost prebacivanja planera qdisc (disciplina čekanja) da koristi FQ-PIE (Flow Queue PIE) algoritam za upravljanje mrežnim redovima prema zadanim postavkama, s ciljem smanjenja negativnog utjecaja međuspremnika paketa na rubnu mrežnu opremu (bufferbloat) u mrežama sa kablovski modemi.
    • Nove karakteristike su dodate MPTCP-u (MultiPath TCP), proširenjima 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. Dodata podrška za sin kolačić, DATA_FIN, automatsko podešavanje bafera, dijagnostiku utičnice i REUSEADDR, REUSEPORT i V6ONLY zastavice u setsockopt.
    • Za virtuelne tabele rutiranja VRF (Virtual Routing and Forwarding), koje omogućavaju organizovanje rada nekoliko domena rutiranja na jednom sistemu, implementiran je „striktni“ režim. 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 drajver je ath11k dodano podržava frekvenciju od 6 GHz i spektralno skeniranje.
  • Oprema
    • Uklonjen je kod za podršku UniCore arhitekture, razvijen u Mikroprocesorskom centru Univerziteta u Pekingu i uključen u Linux kernel 2011. Ova arhitektura nije održavana od 2014. i nema podršku u GCC-u.
    • Implementirana je podrška za RISC-V arhitekturu kcov (debugfs interfejs za analizu pokrivenosti koda kernela), kmemleak (sistem za otkrivanje curenja memorije), zaštita steka, oznake za skok i operacije bez tika (multitasking nezavisno od signala tajmera).
    • Za PowerPC arhitekturu implementirana je podrška za redove spinlocka, što je značajno poboljšalo performanse u situacijama sukoba zaključavanja.
    • Za ARM i ARM64 arhitekture, mehanizam za regulaciju frekvencije procesora je omogućen po defaultu scheduletil (cpufreq governor), koji direktno koristi informacije iz planera zadataka da donese odluku o promjeni frekvencije i može odmah pristupiti cpufreq drajverima za brzu promjenu frekvencije, trenutno prilagođavajući radne parametre CPU-a trenutnom opterećenju.
    • i915 DRM drajver za Intel grafičke kartice uključuje podršku za čipove zasnovane na mikroarhitekturi raketno jezero i dodana početna podrška za diskretne kartice Intel Xe DG1.
    • Amdgpu drajver je dodao početnu podršku za AMD GPU Navi 21 (Navy Flounder) i Navi 22 (Sienna Cichlid). Dodata podrška za UVD/VCE motore za ubrzanje kodiranja i dekodiranja video zapisa za Southern Islands GPU (Radeon HD 7000).
      Dodato svojstvo za rotiranje ekrana za 90, 180 ili 270 stepeni.

      Zanimljivo, drajver za AMD GPU To je najveći drajver u kernelu - ima oko 2.71 miliona linija koda, što je otprilike 10% ukupne veličine kernela (27.81 miliona linija). Istovremeno, 1.79 miliona linija otpada na automatski generisane datoteke zaglavlja sa podacima za GPU registre, a C kod je 366 hiljada linija (za poređenje, Intel i915 drajver uključuje 209 hiljada linija, a Nouveau - 149 hiljada).

    • In Nouveau vozač dodano podrška za provjeru integriteta okvir po kadar korištenjem CRC (Cyclic Redundancy Checks) u NVIDIA GPU ekranima. Implementacija je zasnovana na dokumentaciji koju je obezbedila NVIDIA.
    • Dodati drajveri za LCD panele: Frida FRD350H54004, KOE TX26D202VM0BWA, CDTech S070PWS19HP-FC21, CDTech S070SWV29HG-DC44, Tianma TM070JVHG33 i Xingbangda Xingbangda.
    • ALSA audio podsistem podržava Intel Silent Stream (režim neprekidnog napajanja za eksterne HDMI uređaje kako bi se eliminisalo kašnjenje pri pokretanju reprodukcije) i novi uređaj za kontrolu osvjetljenja tastera za aktivaciju mikrofona i isključivanje zvuka, a također je dodata podrška za novu opremu, uključujući kontroler Longson 7A1000.
    • Dodata 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 XA2 Plus i XA2 Ultra), Jetson Xavier NX, Amlogic WeTek Core2, Aspeed EthanolX, pet novih ploča baziranih na NXP i.MX2, MikroTik RouterBoard 6, Xiaomi Libra, Microsoft Lumia 3011, Sony Xperia Z950, MStar, Microchip Sparx5, Intel Keem Bay, Amazon v5, Renesas RZ/G3H.

Istovremeno, Latinoamerička fondacija za slobodni softver formirana
opcija potpuno besplatan kernel 5.9 - Linux-libre 5.9-gnu, očišćen od firmvera i upravljačkih elemenata koji sadrže komponente koje nisu slobodne ili sekcije koda, čiji je opseg ograničen od strane proizvođača. Novo izdanje onemogućava blob učitavanje u drajverima 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 drajverima i podsistemima za ekran osjetljiv na dodir.

izvor: opennet.ru

Dodajte komentar