Lëshimi i kernelit Linux 5.2

Pas dy muajsh zhvillimi, Linus Torvalds paraqitur lëshimi i kernelit Linux 5.2. Ndër ndryshimet më të dukshme: modaliteti i funksionimit Ext4 është i pandjeshëm ndaj rasteve, thirrjet e veçanta të sistemit për montimin e sistemit të skedarëve, drejtuesit për GPU Mali 4xx/ 6xx/7xx, aftësia për të trajtuar ndryshimet në vlerat sysctl në programet BPF, hartuesi i pajisjes moduli dm-dust, mbrojtje kundër sulmeve MDS, mbështetje për Sound Open Firmware për DSP, optimizim i performancës BFQ, duke e sjellë nënsistemin PSI (Pressure Stall Information) në mundësinë e përdorimit në Android.

Versioni i ri përfshin 15100 rregullime nga 1882 zhvillues,
madhësia e patch - 62 MB (ndryshimet prekën 30889 skedarë, u shtuan 625094 rreshta kodi, u fshinë 531864 rreshta). Rreth 45% e të gjitha të paraqitura në 5.2
ndryshimet lidhen me drejtuesit e pajisjes, afërsisht 21% e ndryshimeve janë
qëndrimi ndaj përditësimit të kodit specifik për arkitekturat e harduerit, 12%
lidhur me stack-in e rrjetit, 3% me sistemet e skedarëve dhe 3% me të brendshme
nënsistemet e bërthamës. 12.4% e të gjitha ndryshimeve u përgatitën nga Intel, 6.3% nga Red Hat, 5.4% nga Google, 4.0% nga AMD, 3.1% nga SUSE, 3% nga IBM, 2.7% nga Huawei, 2.7% nga Linaro, 2.2% nga ARM , 1.6 % - Oracle.

Kryesore risitë:

  • Nënsistemi i diskut, I/O dhe sistemet e skedarëve
    • Shtuar për Ext4 mbështetje punoni pa dalluar rastin e karaktereve në emrat e skedarëve, i cili aktivizohet vetëm në lidhje me drejtoritë individuale boshe duke përdorur atributin e ri "+F" (EXT4_CASEFOLD_FL). Kur ky atribut vendoset në një direktori, të gjitha operacionet me skedarë dhe nëndrejtori brenda do të kryhen pa marrë parasysh rastin e karaktereve, duke përfshirë rastin do të shpërfillet gjatë kërkimit dhe hapjes së skedarëve (për shembull, skedarët Test.txt, test.txt dhe test.TXT në drejtori të tilla do të konsiderohen të njëjta). Si parazgjedhje, sistemi i skedarëve vazhdon të jetë i ndjeshëm ndaj shkronjave të vogla, me përjashtim të drejtorive me atributin "chattr +F";
    • Funksionet për përpunimin e karaktereve UTF-8 në emrat e skedarëve, të cilat përdoren gjatë kryerjes së operacioneve të krahasimit dhe normalizimit të vargjeve, janë unifikuar;
    • XFS shton infrastrukturën për monitorimin e shëndetit të sistemit të skedarëve dhe një ioctl të ri për pyetjen e statusit shëndetësor. Një veçori eksperimentale është zbatuar për të kontrolluar numëruesit e superblloqeve në internet.
    • U shtua harta e pajisjes së modulit të ri "dm-pluhur", i cili ju lejon të simuloni shfaqjen e blloqeve të këqija në media ose gabime kur lexoni nga disku. Moduli ju lejon të thjeshtoni korrigjimin dhe testimin e aplikacioneve dhe sistemeve të ndryshme të ruajtjes përballë dështimeve të mundshme;
    • E kryer Optimizime të rëndësishme të performancës për programuesin BFQ I/O. Në kushtet e ngarkesës së lartë I/O janë bërë optimizime lejoj Zvogëloni kohën e operacioneve të tilla si lëshimi i aplikacioneve deri në 80%.
    • Shtoi një seri thirrjesh sistemi për montimin e sistemeve të skedarëve: fsopen (), open_tree (), fspick (), fsmount (), fsconfig () и move_mount (). Këto thirrje të sistemit ju lejojnë të përpunoni veçmas faza të ndryshme të montimit (përpunoni superbllokun, merrni informacione për sistemin e skedarëve, montoni, bashkëngjitni në pikën e montimit), të cilat më parë janë kryer duke përdorur thirrjen e sistemit të përbashkët mount(). Thirrjet e veçanta ofrojnë mundësinë për të kryer skenarë montimi më komplekse dhe për të kryer operacione të veçanta, të tilla si rikonfigurimi i superbllokut, aktivizimi i opsioneve, ndryshimi i pikës së montimit dhe kalimi në një hapësirë ​​tjetër emri. Për më tepër, përpunimi i veçantë ju lejon të përcaktoni me saktësi arsyet për daljen e kodeve të gabimit dhe të vendosni burime të shumta për sistemet e skedarëve me shumë shtresa, siç janë mbivendosjet;
    • Një operacion i ri IORING_OP_SYNC_FILE_RANGE është shtuar në ndërfaqen për io_uring asinkron I/O, i cili kryen veprime ekuivalente me një thirrje sistemi SYNC_FILE_RANGE (), dhe gjithashtu zbatoi mundësinë për të regjistruar eventfd me io_uring dhe për të marrë njoftime për përfundimin e operacioneve;
    • Për sistemin e skedarëve CIFS, ioctl FIEMAP është shtuar, duke ofruar harta efikase të shtrirjes, si dhe mbështetje për modalitetet SEEK_DATA dhe SEEK_HOLE;
    • Në nënsistemin FUSE propozuar API për menaxhimin e cachimit të të dhënave;
    • Btrfs ka optimizuar zbatimin e qgroups dhe ka përmirësuar shpejtësinë e ekzekutimit të fsync për skedarët me lidhje të shumta të forta. Kodi i kontrollit të integritetit të të dhënave është përmirësuar, i cili tani merr parasysh dëmtimin e mundshëm të informacionit në RAM përpara se të shpërndajë të dhënat në disk;
    • CEPH shtoi mbështetje për eksportimin e fotove të çastit nëpërmjet NFS;
    • Zbatimi i montimit NFSv4 në modalitetin "e butë" është përmirësuar (nëse ndodh një gabim në hyrjen në server në modalitetin "soft", një thirrje për të kthen menjëherë një kod gabimi dhe në modalitetin "e vështirë" kontrolli nuk jepet derisa FS disponueshmëria ose skadimi është rikthyer). Publikimi i ri ofron trajtim më të saktë të skadimit, rikuperim më të shpejtë të përplasjes dhe një opsion të ri të montimit "më të butë" që ju lejon të ndryshoni kodin e gabimit (ETIMEDOUT) të kthyer kur ndodh një afat kohor;
    • API nfsdcld, i krijuar për të gjurmuar gjendjen e klientëve NFS, lejon serverin NFS të gjurmojë saktë gjendjen e klientit pas rindezjes. Kështu, daemon nfsdcld tani mund të veprojë si një mbajtës nfsdcltrack;
    • Për AFS shtuar emulimi i bllokimeve të gamës së bajtit në skedarë (Bllokimi i diapazonit të bajtit);
  • Virtualizimi dhe Siguria
    • Është bërë punë për të eliminuar vendet në kernel që lejojnë ekzekutimin e kodit nga zonat e memories së reflektuar të shkruajtshme, gjë që lejon bllokimin e vrimave të mundshme që mund të shfrytëzohen gjatë një sulmi;
    • Është shtuar një parametër i ri i linjës komanduese të kernelit "mitigations=", duke ofruar një mënyrë të thjeshtuar për të kontrolluar aktivizimin e disa teknikave për të mbrojtur kundër dobësive që lidhen me ekzekutimin spekulativ të udhëzimeve në CPU. Kalimi i "mitigations=off" çaktivizon të gjitha metodat ekzistuese dhe modaliteti i paracaktuar "mitigations=auto" mundëson mbrojtjen, por nuk ndikon në përdorimin e Hyper Threading. Modaliteti "mitigations=auto,nosmt" çaktivizon gjithashtu Hyper Threading nëse kërkohet nga metoda e mbrojtjes.
    • Shtuar mbështetje për nënshkrimin elektronik dixhital sipas GOST R 34.10-2012 (RFC 7091, ISO/IEC 14888-3), zhvilluar Vitaly Chikunov nga Basalt SPO. Mbështetja e shtuar për AES128-CCM në zbatimin e TLS-së amtare. Mbështetje e shtuar për algoritmet AEAD në modulin crypto_simd;
    • Në Kconfig shtuar një seksion i veçantë "forcim i kernelit" me opsione për të përmirësuar mbrojtjen e kernelit. Aktualisht, seksioni i ri përmban vetëm cilësime për aktivizimin e shtojcave për përmirësimin e kontrollit të GCC;
    • Kodi i kernelit është pothuajse dorëzuar nga deklaratat e rasteve pa ndërprerje në switch (pa kthim ose ndërprerje pas çdo blloku të rastit). Mbetet të rregullohen 32 nga 2311 raste të përdorimit të tillë të ndërprerësit, pas së cilës do të jetë e mundur të përdoret modaliteti "-Wimplicit-fallthrough" gjatë ndërtimit të kernelit;
    • Për arkitekturën PowerPC, është zbatuar mbështetje për mekanizmat harduerikë për kufizimin e shtigjeve të padëshiruara të aksesit të kernelit në të dhënat në hapësirën e përdoruesit;
    • U shtua kodi i bllokimit sulm Klasa MDS (Microarchitectural Data Sampling) në procesorët Intel. Ju mund të kontrolloni nëse një sistem është i cenueshëm ndaj dobësive përmes variablës SysFS “/sys/devices/system/cpu/vulnerabilities/mds”. Në dispozicion dy mënyra mbrojtjeje: e plotë, e cila kërkon mikrokodin e përditësuar dhe anashkalim, i cili nuk garanton plotësisht pastrimin e buferëve të CPU-së kur kontrolli transferohet në hapësirën e përdoruesit ose në sistemin e mysafirëve. Për të kontrolluar mënyrat e mbrojtjes, parametri "mds=" është shtuar në kernel, i cili mund të marrë vlerat "full", "full,nosmt" (+ çaktivizo Hyper-Threads) dhe "off";
    • Në sistemet x86-64, është shtuar mbrojtja "stack guard-page" për IRQ, mekanizmat e korrigjimit dhe mbajtësit e përjashtimeve, thelbi i të cilave është zëvendësimi i faqeve të memories në kufi me pirgun, aksesi i të cilit çon në gjenerimin e një përjashtim (page-fault);
    • U shtua cilësimi sysctl vm.unprivileged_userfaultfd, i cili kontrollon aftësinë e proceseve të paprivilegjuara për të përdorur thirrjen e sistemit userfaultfd();
  • Nënsistemi i rrjetit
    • Shtuar Mbështetje e portës IPv6 për rrugët IPv4. Për shembull, tani mund të specifikoni rregullat e rrugëzimit si "ip ro shtoni 172.16.1.0/24 nëpërmjet inet6 2001:db8::1 dev eth0";
    • Për ICMPv6, thirrjet ioctl icmp_echo_ignore_anycast dhe icmp_echo_ignore_multicast zbatohen për të injoruar ICMP ECHO për anycast dhe
      adresat multicast. Shtuar aftësia për të kufizuar intensitetin e përpunimit të paketave ICMPv6;

    • Për protokollin rrjetë BATMAN (Better Approach To Mobile Adhoc Networking), i cili lejon krijimin e rrjeteve të decentralizuara në të cilat çdo nyje lidhet përmes nyjeve fqinje, shtuar mbështetje për transmetimin nga multicast në unicast, si dhe aftësia për të kontrolluar nëpërmjet sysfs;
    • Në ettool shtuar një parametër i ri Fast Link Down, i cili ju lejon të zvogëloni kohën që duhet për të marrë informacion në lidhje me një ngjarje të uljes së lidhjes për 1000BaseT (në kushte normale vonesa është deri në 750ms);
    • U shfaq mundësi lidhja e tuneleve Foo-Over-UDP në një adresë specifike, ndërfaqe rrjeti ose fole (lidhja më parë bëhej vetëm nga një maskë e zakonshme);
    • Në pirgun me valë siguruar mundësia e zbatimit të mbajtësve
      OWE (Opportunistic Wireless Encryption) në hapësirën e përdoruesit;

    • Në Netfilter, mbështetja për familjen e adresave inet është shtuar në zinxhirët nat (për shembull, tani mund të përdorni një rregull përkthimi për të përpunuar ipv4 dhe ipv6, pa i ndarë rregullat për ipv4 dhe ipv6);
    • Në netlink shtuar regjimi i rreptë për verifikimin e rreptë të korrektësisë së të gjitha mesazheve dhe atributeve, në të cilat nuk lejohet tejkalimi i madhësisë së pritshme të atributeve dhe shtimi i të dhënave shtesë në fund të mesazheve është i ndaluar;
  • Shërbimet e kujtesës dhe sistemit
    • Flamuri CLONE_PIDFD është shtuar në thirrjen e sistemit clone(), kur specifikohet, përshkruesi i skedarit "pidfd" i identifikuar me procesin e krijuar fëmijë i kthehet procesit prind. Ky përshkrues skedari, për shembull, mund të përdoret për të dërguar sinjale pa frikë se do të përballet me një gjendje gare (menjëherë pas dërgimit të sinjalit, PID-i i synuar mund të lirohet për shkak të përfundimit të procesit dhe të pushtohet nga një proces tjetër);
    • Për versionin e dytë të cgroups, është shtuar funksionaliteti i kontrolluesit të ngrirësit, me të cilin mund të ndaloni punën në një cgroup dhe të lironi përkohësisht disa burime (CPU, I/O dhe ndoshta edhe memorie) për të kryer detyra të tjera. Menaxhimi bëhet përmes skedarëve të kontrollit cgroup.freeze dhe cgroup.events në pemën cgroup. Hyrja 1 në cgroup.freeze ngrin proceset në cgrupin aktual dhe të gjitha grupet e fëmijëve. Meqenëse ngrirja kërkon pak kohë, ofrohet një skedar shtesë cgroup.events përmes të cilit mund të mësoni për përfundimin e operacionit;
    • I siguruar eksportimi i atributeve të memories të bashkangjitura në secilën nyje në sysfs, gjë që ju lejon të përcaktoni nga hapësira e përdoruesit natyrën e përpunimit të bankave të kujtesës në sistemet me memorie heterogjene;
    • Është përmirësuar nënsistemi PSI (Pressure Stall Information), i cili ju lejon të analizoni informacionin për kohën e pritjes për marrjen e burimeve të ndryshme (CPU, memorie, I/O) për detyra të caktuara ose grupe procesesh në një cgroup. Duke përdorur PSI, mbajtësit e hapësirës së përdoruesit mund të vlerësojnë më saktë nivelin e modeleve të ngarkesës dhe ngadalësimit të sistemit në krahasim me mesataren e ngarkesës. Versioni i ri ofron mbështetje për vendosjen e pragjeve të ndjeshmërisë dhe mundësinë për të përdorur thirrjen poll() për të marrë njoftimin se pragjet e vendosura janë aktivizuar për një periudhë të caktuar kohe. Kjo veçori i lejon Android-it të monitorojë në një fazë të hershme mungesën e memories, të identifikojë burimin e problemeve dhe të përfundojë aplikacionet e parëndësishme pa shkaktuar probleme që janë të dukshme për përdoruesin. Gjatë testimit të stresit, mjetet e monitorimit të konsumit të memories të bazuara në PSI demonstruan 10 herë më pak rezultate false në krahasim me statistikat e presionit të vm;
    • Kodi për kontrollimin e programeve BPF është optimizuar, gjë që lejon kontrollimin deri në 20 herë më shpejt për programet e mëdha. Optimizimi bëri të mundur rritjen e kufirit të madhësisë së programeve BPF nga 4096 në një milion udhëzime;
    • Për programet BPF me kusht aftësia për të hyrë në të dhënat globale, e cila ju lejon të përcaktoni variabla dhe konstante globale në programe;
    • Shtuar API, i cili ju lejon të kontrolloni ndryshimet në parametrat sysctl nga programet BPF;
    • Për arkitekturën MIPS32, është implementuar një përpilues JIT për makinën virtuale eBPF;
    • Për arkitekturën PowerPC 32-bitësh, është shtuar mbështetja për mjetin e korrigjimit të KASan (Kernel address sanitizer), i cili ndihmon në identifikimin e gabimeve gjatë punës me memorie;
    • Në sistemet x86-64, kufizimi për vendosjen e deponive shtetërore gjatë një përplasjeje kerneli (crash-dump) në zonat e memories mbi 896MB është hequr;
    • Për arkitekturën s390, zbatohet mbështetja për randomizimin e hapësirës së adresave të kernelit (KASLR) dhe aftësia për të verifikuar nënshkrimet dixhitale kur ngarkohet kerneli nëpërmjet kexec_file_load();
    • Për arkitekturën PA-RISC, shtoi mbështetje për korrigjuesin e kernelit (KGDB), shenjat e kërcimit dhe kprobes;
  • Оборудование
    • Shoferi i përfshirë Lima për GPU Mali 400/450, i përdorur në shumë çipa të vjetër të bazuar në arkitekturën ARM. Për GPU-të më të reja të Malit, është shtuar drejtuesi Panfrost, që mbështet çipat e bazuar në mikroarkitekturat Midgard (Mali-T6xx, Mali-T7xx, Mali-T8xx) dhe Bifrost (Mali G3x, G5x, G7x);
    • Mbështetje e shtuar për pajisjet audio që përdorin firmware të hapur Firmware i Hapur i Tingullit (SOF). Pavarësisht disponueshmërisë së drejtuesve të hapur, kodi i firmuerit për çipat e zërit ende mbeti i mbyllur dhe u dha në formë binare. Projekti Sound Open Firmware u zhvillua nga Intel për të krijuar firmware të hapur për çipat DSP që lidhen me përpunimin e audios (Google më vonë gjithashtu iu bashkua zhvillimit). Aktualisht, projekti ka përgatitur tashmë zbulimin e firmuerit për çipat e zërit të platformave Intel Baytrail, CherryTrail, Broadwell, ApolloLake, GeminiLake, CannonLake dhe IceLake;
    • Drejtuesi Intel DRM (i915) shton mbështetje për çipat
      Elkhartlake (Gen11). U shtuan ID PCI për çipat Comet Lake (Gen9). Mbështetja për çipat Icelake është stabilizuar, për të cilat janë shtuar edhe identifikues shtesë të pajisjes PCI.
      I ndezur
      mënyra e kalimit asinkron midis dy buferave në memorien video (rrokullisje asinkronike) kur kryeni operacione shkrimi përmes mmio, gjë që rriti ndjeshëm performancën e disa aplikacioneve 3D (për shembull, performanca në testin 3DMark Ice Storm u rrit me 300-400%). Mbështetje e shtuar teknologjike HDCP2.2 (High-bandwidth Digital Content Protection) për enkriptimin e sinjaleve video të transmetuara nëpërmjet HDMI;

    • Shoferi amdgpu për GPU Vega20 shtuar mbështetje për RAS (Reliability, Availability, Serviceability) dhe mbështetje eksperimentale për nënsistemin SMU 11, i cili zëvendësoi teknologjinë Powerplay. Për GPU Vega12 shtuar mbështetje për modalitetin BACO (Bus Active, Chip Off). U shtua mbështetje fillestare për XGMI, një autobus me shpejtësi të lartë (PCIe 4.0) për ndërlidhjen e GPU. U shtuan identifikuesit që mungojnë për kartat e bazuara në GPU Polaris10 në drejtuesin amdkfd;
    • Shoferi Nouveau ka shtuar mbështetje për bordet e bazuara në çipin NVIDIA Turing 117 (TU117, i përdorur në GeForce GTX 1650). NË
      konfig shtuar vendosja për të çaktivizuar funksionet e vjetëruara që nuk përdoren më në versionet aktuale të libdrm;

    • Mbështetja për objektet e sinkronizimit "kohore" është shtuar në API-në DRM dhe drejtuesin amdgpu, duke ju lejuar të bëni pa bllokim klasik.
    • Drejtuesi i vboxvideo për GPU-në virtuale VirtualBox është zhvendosur nga dega e skenës në strukturën kryesore;
    • Shtuar drejtues aspeed për çipin GFX SoC ASPEED;
    • Mbështetje e shtuar për ARM SoC dhe Intel Agilex (SoCFPGA), NXP i.MX8MM, Allwinner (RerVision H3-DVK (H3), Oceanic 5205 5inMFD, ,Beelink GS2 (H6), Orange Pi 3 (H6)), Rockchip (Portokalli Pi ) bordet 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).

Në të njëjtën kohë, Fondacioni i Software-it të Lirë të Amerikës Latine formuar
alternativë kernel plotësisht i lirë 5.2 - Linux-Libre 5.2-Gnu, i pastruar nga elementët e firmuerit dhe drejtuesit që përmbajnë komponentë jo të lirë ose seksione kodi, fushëveprimi i të cilave është i kufizuar nga prodhuesi. Publikimi i ri përfshin ngarkimin e skedarëve
Firmware i hapur me zë. Ngarkimi i blobs në shoferët është i çaktivizuar
mt7615, rtw88, rtw8822b, rtw8822c, btmtksdio, iqs5xx, ishtp dhe ucsi_ccg. Kodi i pastrimit të blobit në drejtuesit dhe nënsistemet ixp4xx, imx-sdma, amdgpu, nouveau dhe goya, si dhe në dokumentacionin e mikrokodit, është përditësuar. Ndaloi pastrimin e njollave në drejtuesin r8822be për shkak të heqjes së tij.

Burimi: opennet.ru

Shto një koment