Izdaja jedra Linuxa 5.2

Po dveh mesecih razvoja, Linus Torvalds uveden izdaja jedra Linux 5.2. Med najbolj opaznimi spremembami: način delovanja Ext4 ne razlikuje med velikimi in malimi črkami, ločeni sistemski klici za namestitev datotečnega sistema, gonilniki za GPU Mali 4xx/ 6xx/7xx, možnost obravnavanja sprememb vrednosti sysctl v programih BPF, preslikava naprav modul dm-dust, zaščita pred napadi MDS, podpora za Sound Open Firmware za DSP, optimizacija delovanja BFQ, prenos podsistema PSI (Pressure Stall Information) na možnost uporabe v Androidu.

Nova različica vključuje 15100 popravkov 1882 razvijalcev,
velikost popravka - 62 MB (spremembe so vplivale na 30889 datotek, dodanih je bilo 625094 vrstic kode, izbrisanih je bilo 531864 vrstic). Približno 45 % vseh predstavljenih v 5.2
spremembe so povezane z gonilniki naprav, približno 21 % sprememb je
odnos do posodabljanja kode, specifične za arhitekture strojne opreme, 12 %
povezanih z omrežnim skladom, 3 % z datotečnimi sistemi in 3 % z notranjimi
podsistemi jedra. 12.4 % vseh sprememb je pripravil Intel, 6.3 % Red Hat, 5.4 % Google, 4.0 % AMD, 3.1 % SUSE, 3 % IBM, 2.7 % Huawei, 2.7 % Linaro, 2.2 % ARM. , 1.6 % - Oracle.

Glavni inovacije:

  • Diskovni podsistem, V/I in datotečni sistemi
    • Dodano za Ext4 podporo deluje brez razlikovanja med velikimi in malimi črkami v imenih datotek, kar se aktivira le v zvezi s posameznimi praznimi imeniki z uporabo novega atributa “+F” (EXT4_CASEFOLD_FL). Ko je ta atribut nastavljen v imeniku, bodo vse operacije z datotekami in podimeniki v notranjosti izvedene brez upoštevanja velikih in malih črk, vključno z velikimi in malimi črkami, ki bodo prezrte pri iskanju in odpiranju datotek (na primer datoteke Test.txt, test.txt in test.TXT v takih imenikih bosta obravnavana kot enaka). Privzeto je datotečni sistem še naprej občutljiv na velike in male črke, z izjemo imenikov z atributom »chattr +F«;
    • Poenotene so funkcije za obdelavo znakov UTF-8 v imenih datotek, ki se uporabljajo pri izvajanju operacij primerjave in normalizacije nizov;
    • XFS dodaja infrastrukturo za spremljanje zdravja datotečnega sistema in nov ioctl za poizvedovanje o stanju zdravja. Izvedena je bila eksperimentalna funkcija za preverjanje števcev superblokov na spletu.
    • Dodan nov modul device-mapper "dm-prah“, ki omogoča simulacijo pojava slabih blokov na mediju ali napak pri branju z diska. Modul vam omogoča poenostavitev odpravljanja napak in testiranja aplikacij in različnih sistemov za shranjevanje ob morebitnih okvarah;
    • Izvede Pomembne optimizacije zmogljivosti za razporejevalnik V/I BFQ. V pogojih visoke V/I obremenitve, narejene optimizacije dovolite Zmanjšajte čas operacij, kot je zagon aplikacij, do 80 %.
    • Dodan niz sistemskih klicev za pripenjanje datotečnih sistemov: fsopen(), odprto_drevo(), fspick(), fsmount(), fsconfig() и premakni_mount(). Ti sistemski klici vam omogočajo ločeno obdelavo različnih stopenj namestitve (obdelava superbloka, pridobivanje informacij o datotečnem sistemu, napenjanje, pripenjanje na točko namestitve), ki so bile prej izvedene s skupnim sistemskim klicem mount(). Ločeni klici zagotavljajo možnost izvajanja bolj zapletenih scenarijev vpetja in izvajanja ločenih operacij, kot je ponovna konfiguracija superbloka, omogočanje možnosti, spreminjanje točke vpenjanja in premikanje v drug imenski prostor. Poleg tega vam ločena obdelava omogoča, da natančno določite razloge za izpis kod napak in nastavite več virov za večplastne datotečne sisteme, kot so overlayfs;
    • Nova operacija IORING_OP_SYNC_FILE_RANGE je bila dodana vmesniku za asinhroni V/I io_uring, ki izvaja dejanja, enakovredna sistemskemu klicu sync_file_range(), poleg tega pa je implementiral možnost registracije eventfd z io_uring in prejemanje obvestil o zaključku operacij;
    • Za datotečni sistem CIFS je bil dodan FIEMAP ioctl, ki zagotavlja učinkovito preslikavo obsega ter podporo za načina SEEK_DATA in SEEK_HOLE;
    • V podsistemu FUSE predlagano API za upravljanje predpomnjenja podatkov;
    • Btrfs je optimiziral implementacijo qgroups in izboljšal hitrost izvajanja fsync za datoteke z več trdimi povezavami. Izboljšana je koda za preverjanje celovitosti podatkov, ki zdaj upošteva morebitne poškodbe informacij v RAM-u pred izpiranjem podatkov na disk;
    • CEPH je dodal podporo za izvoz posnetkov prek NFS;
    • Implementacija namestitve NFSv4 v "mehkem" načinu je bila izboljšana (če pride do napake pri dostopu do strežnika v "mehkem" načinu, klic takoj vrne kodo napake, v "trdem" načinu pa nadzor ni podan, dokler FS razpoložljivost ali časovna omejitev je obnovljena). Nova izdaja zagotavlja natančnejšo obravnavo časovne omejitve, hitrejšo obnovitev po zrušitvi in ​​novo možnost »mehkejšega« priklopa, ki vam omogoča, da spremenite kodo napake (ETIMEDOUT), vrnjeno, ko pride do časovne omejitve;
    • API nfsdcld, zasnovan za sledenje stanju odjemalcev NFS, omogoča strežniku NFS, da pravilno sledi stanju odjemalca ob ponovnem zagonu. Tako lahko demon nfsdcld zdaj deluje kot upravljavec nfsdcltrack;
    • Za AFS dodano emulacija zaklepanja obsega bajtov v datotekah (Zaklepanje obsega bajtov);
  • Virtualizacija in varnost
    • Opravljeno je bilo delo za odpravo mest v jedru, ki omogočajo izvajanje kode iz zapisljivih odraženih pomnilniških območij, kar omogoča blokiranje potencialnih lukenj, ki bi jih lahko izkoristili med napadom;
    • Dodan je bil nov parameter ukazne vrstice jedra "mitigations=", ki zagotavlja poenostavljen način za nadzor omogočanja določenih tehnik za zaščito pred ranljivostmi, povezanimi s špekulativnim izvajanjem navodil v CPE. Podajanje »mitigs=off« onemogoči vse obstoječe metode, privzeti način »mitigs=auto« pa omogoči zaščito, vendar ne vpliva na uporabo Hyper Threading. Način »mitigs=auto,nosmt« dodatno onemogoči Hyper Threading, če to zahteva zaščitna metoda.
    • Dodano podpora za elektronski digitalni podpis po GOST R 34.10-2012 (RFC 7091, ISO/IEC 14888-3), razvil Vitaly Chikunov iz Basalt SPO. Izvorni izvedbi TLS je dodana podpora za AES128-CCM. Modulu crypto_simd dodana podpora za algoritme AEAD;
    • V Kconfig dodano ločen oddelek za "utrjevanje jedra" z možnostmi za izboljšanje zaščite jedra. Trenutno novi razdelek vsebuje samo nastavitve za omogočanje vtičnikov za izboljšanje preverjanja GCC;
    • Koda jedra je skoraj dostavljeno iz neprekinjenih stavkov case v switch (brez return ali break po vsakem bloku case). Še vedno je treba popraviti 32 od 2311 primerov takšne uporabe stikala, po katerem bo mogoče pri gradnji jedra uporabiti način "-Wimplicit-fallthrough";
    • Za arhitekturo PowerPC je bila implementirana podpora za mehanizme strojne opreme za omejevanje neželenih poti dostopa jedra do podatkov v uporabniškem prostoru;
    • Dodana koda za blokiranje napadi Razred MDS (Microarchitectural Data Sampling) v procesorjih Intel. Preko spremenljivke SysFS »/sys/devices/system/cpu/vulnerabilities/mds« lahko preverite, ali je sistem ranljiv za ranljivosti. Na voljo dva zaščitna načina: polni, ki zahteva posodobljeno mikrokodo, in obvodni, ki ne zagotavlja popolnega čiščenja medpomnilnikov CPU, ko se nadzor prenese v uporabniški prostor ali sistem za goste. Za nadzor načinov zaščite je jedru dodan parameter »mds=«, ki lahko sprejme vrednosti »full«, »full,nosmt« (+ onemogoči Hyper-Threads) in »off«;
    • V sistemih x86-64 je dodana zaščita »stack guard-page« za IRQ, mehanizme za odpravljanje napak in obdelovalce izjem, katerih bistvo je zamenjava pomnilniških strani na meji s skladom, dostop do katere vodi do generiranja izjema (page-fault);
    • Dodana nastavitev sysctl vm.unprivileged_userfaultfd, ki nadzoruje zmožnost neprivilegiranih procesov za uporabo sistemskega klica userfaultfd();
  • Omrežni podsistem
    • Dodano Podpora za prehod IPv6 za poti IPv4. Na primer, zdaj lahko določite pravila usmerjanja, kot je "ip ro add 172.16.1.0/24 via inet6 2001:db8::1 dev eth0";
    • Za ICMPv6 so klici ioctl icmp_echo_ignore_anycast in icmp_echo_ignore_multicast implementirani tako, da prezrejo ICMP ECHO za anycast in
      multicast naslove. Dodano možnost omejevanja intenzivnosti obdelave paketov ICMPv6;

    • Za mrežni protokol BATMAN (Better Approach To Mobile Adhoc Networking), ki omogoča ustvarjanje decentraliziranih omrežij, v katerih je vsako vozlišče povezano prek sosednjih vozlišč, dodano podpora za oddajanje od multicast do unicast, kot tudi možnost nadzora prek sysfs;
    • V orodju ethtool dodano nov parameter Fast Link Down, ki vam omogoča, da skrajšate čas prejemanja informacij o dogodku prekinitve povezave za 1000BaseT (v normalnih pogojih je zakasnitev do 750ms);
    • pojavil priložnost vezava tunelov Foo-Over-UDP na določen naslov, omrežni vmesnik ali vtičnico (prej je bila vezava opravljena samo s skupno masko);
    • V brezžičnem skladu zavarovano možnost implementacije handlerjev
      OWE (Opportunistic Wireless Encryption) v uporabniškem prostoru;

    • V Netfilterju je bila verigam nat dodana podpora za družino naslovov inet (na primer, zdaj lahko uporabite eno pravilo prevajanja za obdelavo ipv4 in ipv6, ne da bi ločevali pravila za ipv4 in ipv6);
    • V netlinku dodano način strict za strogo preverjanje pravilnosti vseh sporočil in atributov, pri čemer ni dovoljeno preseči pričakovane velikosti atributov in je prepovedano dodajanje dodatnih podatkov na koncu sporočil;
  • Pomnilniške in sistemske storitve
    • Zastavica CLONE_PIDFD je bila dodana sistemskemu klicu clone(). Ko je podana, se deskriptor datoteke »pidfd«, identificiran z ustvarjenim podrejenim procesom, vrne nadrejenemu procesu. Ta deskriptor datoteke je na primer mogoče uporabiti za pošiljanje signalov brez strahu pred stanjem tekmovanja (takoj po pošiljanju signala se lahko ciljni PID sprosti zaradi zaključka procesa in ga zasede drug proces);
    • Za drugo različico cgroups je bila dodana funkcionalnost krmilnika zamrzovalnika, s katero lahko prekinete delo v cgroup in začasno sprostite nekaj virov (CPU, I/O in potencialno celo pomnilnik) za izvajanje drugih nalog. Upravljanje poteka prek nadzornih datotek cgroup.freeze in cgroup.events v drevesu cgroup. Vnos 1 v cgroup.freeze zamrzne procese v trenutni cgroup in vseh podrejenih skupinah. Ker zamrznitev traja nekaj časa, je na voljo dodatna datoteka cgroup.events, prek katere lahko izveste o zaključku operacije;
    • Zavarovano izvoz pomnilniških atributov, pritrjenih na vsako vozlišče v sysfs, kar vam omogoča, da iz uporabniškega prostora določite naravo obdelave pomnilniških bank v sistemih s heterogenim pomnilnikom;
    • Izboljšan je podsistem PSI (Pressure Stall Information), ki omogoča analizo informacij o čakalni dobi za sprejem različnih virov (CPU, pomnilnik, I/O) za določene naloge ali sklope procesov v cgroup. Z uporabo PSI lahko upravljavci uporabniškega prostora natančneje ocenijo stopnjo obremenitve sistema in vzorce upočasnitve v primerjavi s povprečno obremenitvijo. Nova različica nudi podporo za nastavitev pragov občutljivosti in možnost uporabe klica poll() za prejemanje obvestil, da so bili nastavljeni pragovi sproženi za določeno časovno obdobje. Ta funkcija omogoča sistemu Android, da v zgodnji fazi spremlja pomanjkanje pomnilnika, prepozna vir težav in prekine nepomembne aplikacije, ne da bi pri tem povzročil uporabniku opazne težave. Pri stresnem testiranju so orodja za spremljanje porabe pomnilnika na osnovi PSI pokazala 10-krat manj lažno pozitivnih rezultatov v primerjavi s statistiko vmpressure;
    • Koda za preverjanje BPF programov je optimizirana, kar omogoča do 20-krat hitrejše preverjanje velikih programov. Optimizacija je omogočila dvig omejitve velikosti BPF programov s 4096 na milijon ukazov;
    • Za programe BPF odobreno možnost dostopa do globalnih podatkov, kar omogoča definiranje globalnih spremenljivk in konstant v programih;
    • Dodano API, ki vam omogoča nadzor nad spremembami parametrov sysctl iz programov BPF;
    • Za arhitekturo MIPS32 je implementiran prevajalnik JIT za virtualni stroj eBPF;
    • Za 32-bitno arhitekturo PowerPC je dodana podpora za orodje za razhroščevanje KASan (Kernel address sanitizer), ki pomaga prepoznati napake pri delu s pomnilnikom;
    • V sistemih x86-64 je bila odstranjena omejitev postavljanja izpisov stanja med zrušitvijo jedra (crash-dump) v pomnilniška področja nad 896 MB;
    • Za arhitekturo s390 sta implementirani podpora za randomizacijo naslovnega prostora jedra (KASLR) in možnost preverjanja digitalnih podpisov pri nalaganju jedra prek kexec_file_load();
    • Za arhitekturo PA-RISC dodana podpora za razhroščevalnik jedra (KGDB), oznake skokov in kprobes;
  • Оборудование
    • Gonilnik vključen Lima za Mali 400/450 GPU, ki se uporablja v številnih starejših čipih, ki temeljijo na arhitekturi ARM. Za novejše grafične procesorje Mali je bil dodan gonilnik Panfrost, ki podpira čipe, ki temeljijo na mikroarhitekturah Midgard (Mali-T6xx, Mali-T7xx, Mali-T8xx) in Bifrost (Mali G3x, G5x, G7x);
    • Dodana podpora za zvočne naprave, ki uporabljajo odprto vdelano programsko opremo Zvok Odprta vdelana programska oprema (SOF). Kljub razpoložljivosti odprtih gonilnikov je koda vdelane programske opreme za zvočne čipe še vedno ostala zaprta in je bila dobavljena v binarni obliki. Projekt Sound Open Firmware je razvil Intel za ustvarjanje odprte strojne programske opreme za čipe DSP, povezane z obdelavo zvoka (pozneje se je razvoju pridružil tudi Google). Trenutno je projekt že pripravil odkritje vdelane programske opreme za zvočne čipe platform Intel Baytrail, CherryTrail, Broadwell, ApolloLake, GeminiLake, CannonLake in IceLake;
    • Gonilnik Intel DRM (i915) dodaja podporo za čipe
      Elkhartlake (Gen11). Dodani PCI ID-ji za čipe Comet Lake (Gen9). Stabilizirana je podpora za čipe Icelake, za katere so bili dodani tudi dodatni identifikatorji naprav PCI.
      Vklopljen
      način asinhronega preklapljanja med dvema medpomnilnikoma v video pomnilniku (async flip) pri izvajanju zapisovalnih operacij prek mmio, kar je znatno povečalo zmogljivost nekaterih 3D aplikacij (na primer zmogljivost v testu 3DMark Ice Storm se je povečala za 300-400%). Dodana tehnološka podpora HDCP2.2 (High-bandwidth Digital Content Protection) za šifriranje video signalov, ki se prenašajo prek HDMI;

    • Gonilnik amdgpu za GPU Vega20 dodano podpora za RAS (Reliability, Availability, Serviceability) in eksperimentalna podpora za podsistem SMU 11, ki je nadomestil tehnologijo Powerplay. Za GPU Vega12 dodano podpora za način BACO (Bus Active, Chip Off). Dodana začetna podpora za XGMI, vodilo visoke hitrosti (PCIe 4.0) za medsebojno povezavo GPE. Gonilniku amdkfd dodani manjkajoči identifikatorji za kartice, ki temeljijo na GPU Polaris10;
    • Gonilnik Nouveau je dodal podporo za plošče, ki temeljijo na naboru čipov NVIDIA Turing 117 (TU117, uporabljen v GeForce GTX 1650). IN
      kconfig dodano nastavitev za onemogočanje zastarelih funkcij, ki se ne uporabljajo več v trenutnih izdajah libdrm;

    • API-ju DRM in gonilniku amdgpu je bila dodana podpora za sinhronizacijske objekte »časovne premice«, kar vam omogoča brez klasičnega blokiranja.
    • Gonilnik vboxvideo za virtualno grafično enoto VirtualBox je bil premaknjen iz uprizoritvene veje v glavno strukturo;
    • Dodan gonilnik hitrosti za čip GFX SoC ASPEED;
    • Dodana podpora za ARM SoC in Intel Agilex (SoCFPGA), NXP i.MX8MM, Allwinner (RerVision H3-DVK (H3), Oceanic 5205 5inMFD, ,Beelink GS2 (H6), Orange Pi 3 (H6)), Rockchip (Orange Pi ) plošče RK3399, Nanopi NEO4, Veyron-Mighty Chromebook), Amlogic: SEI Robotics SEI510,
      ST Micro (stm32mp157a, stm32mp157c), NXP (
      Eckelmann ci4x10 (i.MX6DL),

      i.MX8MM EVK (i.MX8MM),

      ZII i.MX7 RPU2 (i.MX7),

      ZII SPB4 (VF610),

      Zii Ultra (i.MX8M),

      TQ TQMa7S (i.MX7Solo),

      TQ TQMa7D (i.MX7Dual),

      Kobo Aura (i.MX50),

      Menlosystems M53 (i.MX53)), NVIDIA Jetson Nano (Tegra T210).

Istočasno Latinskoameriška fundacija za prosto programsko opremo oblikovana
možnost popolnoma brezplačno jedro 5.2 - Linux-libre 5.2-gnu, očiščen elementov vdelane programske opreme in gonilnikov, ki vsebujejo neproste komponente ali odseke kode, katerih obseg omejuje proizvajalec. Nova izdaja vključuje nalaganje datotek
Zvok Odpri vdelano programsko opremo. Nalaganje blob v gonilnike je onemogočeno
mt7615, rtw88, rtw8822b, rtw8822c, btmtksdio, iqs5xx, ishtp in ucsi_ccg. Koda za čiščenje madežev v gonilnikih in podsistemih ixp4xx, imx-sdma, amdgpu, nouveau in goya ter v dokumentaciji mikrokode je bila posodobljena. Ustavljeno čiščenje madežev v gonilniku r8822be zaradi njegove odstranitve.

Vir: opennet.ru

Dodaj komentar