Linuxi kernel 5.9 väljaanne

Pärast kahte kuud arendusteline Linus Torvalds esitles tugevdamise südamik Linux 5.9. Oluliste muudatuste seas: sümbolite importimise piirangud patenteeritud moodulite ja GPL-moodulite vahel, konteksti vahetamise operatsioonide kiirus FSGSBASE protsessorikäsu abil, tuge kernelipildi tihendamiseks Zstd abil, prioriteetide ümberkorraldamine tuumades, PRP (Parallel Redundancy Protocol) toetus, ribalaiuse kava arvestamine deadline planeerijas, proaktiivne mälu lehtede pakkimine, capability-lipp CAP_CHECKPOINT_RESTOR, süsteemikõne close_range(), dm-crypti jõudluse paranemine, 32-bitiste Xen PV külalis süsteemide koodi eemaldamine, uus slab mälu haldamise mehhanism, „rescue“ valik Btrfs-is, inline-krüpteerimise toetus ext4 ja F2FS.

Uue versiooni juurde on tehtud 16074 parandust 2011 arendajalt,
patchi suurus on 62 MB (muudatused hõlmasid 14548 faili, lisatud 782155 koodireal, eemaldatud 314792 rida). Umbes 45% kõigist 5.9 esitatud muudatustest
tehtud muudatustest on seotud seadme draiveritega, ligikaudu 15% muudatustest puudutab
seotud riistvara arhitektuurile spetsiifilise koodi uuendamisega, 13% on
on seotud võrguhoonega, 3% -ga failisüsteemidest ja 3% -ga sisemistest
tuumasüsteemide.

Peamised uuendused:

  • Mälu ja süsteemiteenused
    • Tugevdatud kaitse GPL-sektsioonide kasutamise eest, et siduda patenteeritud draivereid kernelikomponentidega, mis on saadaval ainult GPL-litsentsi alusel. Lipp TAINT_PROPRIETARY_MODULE pärandatakse nüüd kõikidesse moodulitesse, mis impordivad sümboleid moodulitest, millel on see lipp. Kui GPL-moodul üritab importida sümboleid mitte-GPL-moodulist, siis see GPL-moodul pärandab TAINT_PROPRIETARY_MODULE märgise ja ei saa ligi ainult GPL-litsentsi alusel saadaval olevatele kernelikomponentidele, isegi kui moodul oli varem importinud sümboleid kategooriast „gplonly”. Tagasi blokeerimine (ainult EXPORT_SYMBOL_GPL eksportimine moodulitest, mis on importinud EXPORT_SYMBOL_GPL) ei ole rakendatud (pärandatakse ainult patenteeritud mooduli lipp, kuid mitte GPL-seotust).
    • Lisatud tugi kcompactd mehhanismile enneolematu mälulehekülgede pakkimine taustal, võimaldades suurendada tuuma jaoks kättesaadavate suurte mälu lehtede arvu. Esialgsete hinnangute kohaselt vähendab taustpakett minimaalseid kulusid arvestades viivitusi suurte mälu lehtede (huge-page) eraldamisel 70-80 korda võrreldes varem kasutatud vajadusel käivituvate pakkimismehhanismidega. Kcompactd tagab välise fragmenteerituse piire, mille jaoks on lisatud sysctl vm.compaction_proactiveness.
    • Lisatud tuuma pildi kokkusurumise tugi kasutades algoritmi Zstandard (zstd).
    • x86 süsteemidele on rakendatud protsessorimääruse tugi FSGSBASE, mis võimaldab lugeda ja muuta FS/GS registrite sisu kasutajaruumi kaudu. FSGSBASE tuumas kasutatakse konteksti vahetamise toimingute kiirendamiseks liialdavate MSR-i kirjutamise operatsioonide välistamiseks GSBASE'i jaoks, andes võimaluse kasutajaruumi tingimustes vältida liigseid süsteemikutseid FS/GS-i muutmiseks.
    • Lisatud parameeter «allow_writes», mis võimaldab keelata MSR-registraatorite muutmise kasutajaruumist ja piirata juurdepääsu registrite andmete sisule lugemisoperatsioonide kaudu, kuna MSR-i muutmine võib põhjustada probleeme. Vaikimisi ei ole kirjutamine keelatud, ja MSR-i muutmine kajastub logis, kuid tulevikus plaanitakse vaikimisi juurdepääs muuta ainult lugemisrežiimiks.
    • asünkroonse sisendi/väljundi liides io_uring täiendatud täielik tugi asünkroonsetele puhverdatud lugemisoperatsioonidele, mis ei nõua tuumade voogude kaasamist. Kirjutamise tugi on oodata järgmises väljaandes.
    • sisend/väljund planeerija deadline on rakendatud planeerimine, arvestades läbilaskevõimet, mis võimaldab korrektsete otsuste tegemiseks asümmeetrilistes süsteemides, nagu ARM-põhised arhitektuurid DynamIQ ja big.LITTLE, mis kombineerivad ühes kiibis võimsaid ja vähem tõhusaid energiaefektiivseid CPU-kerekesi. Konkreetsemalt võimaldab uus režiim vältida planeerimise mittesobivusi, kui aeglane CPU-tuum ei oma vajalikke ressursse ülesande õigeailiseks täitmiseks.
    • CPU tuuma energiatarbimise mudel (Energy Model framework) on nüüd kirjeldab see ei hõlma mitte ainult CPU energia tarbimist, vaid ka périphiral seadmeid.
    • Kasutusele on võetud süsteemikõne close_range(), mis võimaldab protsessil korraga sulgeda terve hulga avatud failide deskriptoritest.
    • Tekstikonsoli ja fbcon draiveri teostusest kood eemaldati, mis võimaldab teksti tagasipööramist programmi kaudu (CONFIG_VGACON_SOFT_SCROLLBACK) rohkem kui VGA teksti režiimi videomälu mahus.
    • Ümber kujundatud prioriteedimääramise algoritm lõime sees. Uus variant tagab parema järjepidevuse kõigis südamiku alamkonstruktsioonides, kui määratakse prioriteete reaalajaülesannetele.
    • Lisatud sysctl sched_uclamp_util_min_rt_default , et juhtida CPU sageduse sundimise parameetreid reaalajaülesannete jaoks (näiteks saab ühelt poolt muuta reaalajaülesannete käitumist energiasäästmiseks pärast akutoitele üleminekut või mobiilsüsteemides).
    • Valmistatud ette toetuse rakendamiseks Transparent Huge Pages tehnoloogiale leheküljepöördes.
    • Fanotify mehhanismis on rakendatud uued lipud FAN_REPORT_NAME ja FAN_REPORT_DIR_FID, et edastada teavet vanema nime ja ainulaadse identifikaatori FID kohta, kui toimub katalooge puudutavate elementide loomise, kustutamise või liigutamise sündmusi.
    • Cgroups jaoks rakendatud uus slab mälu kontrollija, mis on tuntud slab-i arvestuse üleviimise poolest mälulehtedelt tuum objektide tasemele. See võimaldab slab-lehekülgi jagada erinevate cgroup-ide vahel, selle asemel, et eraldada iga cgroup-i jaoks eraldatud slab vahemikke. Ehkki soovitatud lähenemine suurendab slab-i kasutamise efektiivsust, vähendab slab-i jaoks eraldatud mäluruumi suurust 30-45% ning vähendab tuuma üldist mälu tarbimist ja mälufragmenteerimist.
    • Helisüsteemis ALSA ja USB-stakis, vastavalt hiljuti vastu võetud Linuxi tuuma kaasava terminoloogia kasutamise soovitustele, on viidatud mittetäielikest poliitiliselt korrektsetest terminoloogiatest. Kood on puhastatud sõnade „slave“, „master“, „blacklist“ ja „whitelist“ kasutamisest.
  • Virtualiseerimine ja turvalisus
    • Tuuma koostamisel Clangi kompilaatori abil ilmus võimalus seadistada (CONFIG_INIT_STACK_ALL_ZERO) automaatne initsialiseerimine kõigi kasvuhoones salvestatud muutujaid nullväärtuseks (kompileerimisel on märgitud „-ftrivial-auto-var-init=zero“).
    • Seccomp-süsteemi, kasutades protsessi kontrollimise režiimi kasutajaruumi, on lisatud võimalus failide descriptorite asendamine jälgitavas protsessis süsteemikutsungite täielikuks emuleerimiseks, mis toovad kaasa failide descriptorite loomise. Seda funktsionaalsust nõutakse isoleeritud konteinerites ja Chrome'i liivakasti rakendustes.
    • Xtensa ja csky arhitektuuride jaoks on lisatud toetus süsteemikutsungite piiramiseks seccomp-süsteemi abil. Xtensa jaoks on lisaks rakendatud auditimehhanismi tugi.
    • Lisatud uus capability-lipp CAP_CHECKPOINT_RESTORE, mis võimaldab, andmata täiendavaid privileege, pääseda juurde protsesside seisundi külmutamise ja taastamisega seotud võimalustele.
    • GCC 11-s on rakendatud kõik vajalikud funktsioonid.
      KCSAN (Kernel Concurrency Sanitizer) tõrkeotsingu tööriist, mis on mõeldud tuvastama race condition'e tuumas. Seega saab KCSAN nüüd kasutada ka GCC-s kokku pandud tuumadega.
    • AMD Zen ja uuemate CPU mudelite jaoks on lisatud P2PDMA tehnoloogia toetus, mis võimaldab DMA-d andmete otseseks edastamiseks kahe seadme vahel, mis on ühendatud PCI bussile.
    • dm-crypt'i on lisatud režiim, mis vähendab viivitusi, tehes krüptograafilist andmetöötlust ilma tööjärjekordade kasutamiseta. Antud režiim on samuti vajalik zonitud blokeeringutele (seadmed, millel on alad, mida tuleb järjestikku kirjutada, uuendades kogu plokkide rühma). Tööd on tehtud dm-crypt'i läbilaskevõime ja viivituste vähendamiseks.
    • 32-bit külgsete süsteemide tugi, mis töötavad Xen hüperviisoril paravirtualiseerimise režiimis, on eemaldatud. Selliste süsteemide kasutajad peavad minema 64-bitiste kernelite kasutamisele külgsetes keskkondades või kasutama paravirtualiseerimise (PV) asemel täis (HVM) või kombineeritud (PVH) virtualiseerimise režiime.
  • Disski alamsüsteem, sisend/väljund ja failisüsteemid
    • Btrfs failisüsteemis on rakendatud mountimisvõimalus „rescue“, mis ühtlustab juurdepääsu kõikidele muudele taastamisvõimalustele. Eemaldatud on „alloc_start“ ja „subvolrootid“ valikud, „inode_cache“ valik on kuulutatud aegunuks. Suurendatud on jõudlust, eriti on kiiruselt paranenud fsync() operatsioonide täitmine. Lisatud võimalus kasutada alternatiivseid kontrollsummade tüüpe, mis erinevad CRC32c-st.
    • Lisatud võimalus kasutada inline-šifreerimist (Inline Encryption) failisüsteemides ext4 ja F2FS, mille aktiveerimiseks on ette nähtud mountimisvalik „inlinecrypt“. Inline-šifreerimise režiim võimaldab kasutada salvestusseadmestiku kontrollelementidesse sisseehitatud šifreerimismehhanisme, mis teostavad läbipaistvat šifreerimist ja dešifreerimist sisendi/väljundi puhul.
    • XFS tagatud inode'i (flush) täieliku asünkroonsuse režiimis resettimine, mis ei blokeeri protsesse mälupuhvri tühjendamise operatsiooni ajal. Lahendatud on pikaajaline probleem kvotidega, mille tõttu ei jälgitud õigesti hoiatuste ületamise pehme piiri ja inode'i arvu piirangute osas. Ühildatud on DAXi toe rakendamine ext4 ja xfs jaoks.
    • Ext4 on rakendatud blokkide jaotuse bitikaartide eelkoormus. Koos mittealgatatud gruppide skannimise piiranguga on optimeerimine võimaldanud vähendada väga suurte osa montaaži aega.
    • F2FS-is lisatud ioctl F2FS_IOC_SEC_TRIM_FILE, mis võimaldab kasutada TRIM/discard käske, et füüsiliselt nullida määratud andmeid failis, näiteks juurdepääsuvõtmete eemaldamiseks ilma, et andmed jääksid mäluseadmest järele.
      F2FS-is on samuti lisatud uus rämpspostide kogumise režiim GC_URGENT_LOW, mis töötab agressiivsemalt, välistades mõned seisaku oleku (idle) kontrollid enne rämpsposti kogumise aktiveerimist.
    • bcache'is on bucket_size suurus ekstentide jaoks suurenenud 16-lt 32 bitini, valmistades ette võimalust rakendada seda tsoonitud seadmete vahemäluks.
    • SCSI alamsüsteemi on lisatud inline-krüptimise võimalus, mis põhineb UFS-kontrollerite pakutavatel riistvaralise krüpteerimise vahenditel,Universal Flash Storage).
    • On lisatud uus kernel'i käsuviip "debugfs", mis võimaldab hallata ühesuguse nimetusega pseudo-failisüsteemi kättesaadavust.
    • NFSv4.2 kliendis on tagatud failide laiendatud atribuutide (xattr) tugi.
    • dm-dust lisatud liides halduskomandiks, et kuvada korraga kõik avastatud halvad plokid kettal ("dmsetup message dust1 0 listbadblocks").
    • md/raid5 jaoks on lisatud parameeter /sys/block/md1/md/stripe_size, et seadistada STRIPE-ploki suurust.
    • NVMe salvestusseadmete on lisatud toetatakse seadmeid tsoonimise käskudele (ZNS, NVM Express Zoned Namespace), mis võimaldab jagada salvestusruumi tsoonideks, mis koosnevad plokkide gruppidest, et paremini hallata andmete paigutust salvestusseadmes.
  • Võrgu alamsüsteem
    • Netfilter'is on lisatud on võimalik blokeerida pakette enne marsruutimise kontrolli etappi (REJECT väljendit saab nüüd kasutada mitte ainult INPUT, FORWARD ja OUTPUT ahelates, vaid ka PREROUTING etapis icmp ja tcp jaoks).
    • nftables on lisatud on võimalik jälgida konfiguratsiooni muutmisega seotud sündmusi.
    • nftables netlink API's on lisatud anonüümsete ahelate toetus, mille nimi antakse dünaamiliselt tuumaga. Kui anonüümse ahela reegel eemaldatakse, eemaldatakse automaatselt ka ahel.
    • BPF-is on lisatud iteratooride tugi assotsiatiivsete massiivide (map) elementide läbimiseks, filtreerimiseks ja muutmiseks ilma andmete kopeerimiseta kasutaja ruumi. Iteraatoreid saab kasutada TCP ja UDP soketites, mis võimaldab BPF-programmidel läbi käia avatud sokettide loendit ja neist vajaliku teabe hankida.
    • Lisatud uus BPF-programmide tüüp BPF_PROG_TYPE_SK_LOOKUP, mis käivitatakse hetkel, kui tuum otsib sobivat kuulavat soket intrigeeriva ühenduse jaoks. Sellise BPF-programmi abil on võimalik luua töötlejaid, mis otsustavad, millise soketiga ühendust seostada, ilma et see oleks piiratud süsteemi väljakutsega bind(). Näiteks on võimalik siduda ühe soketi aadresside või portide vahemikku. Lisaks on bpf_setsockopt() lisatud SO_KEEPALIVE lipu tugi ja ellu on viidud BPF_CGROUP_INET_SOCK_RELEASE töötlejate seadistamise võimalus, mis kutsub soketi vabastamisel välja.
    • Protokolli tugi on rakendatud PRP (Parallel Redundancy Protocol), mis võimaldab Etherneti alusel rakendada rakendustele läbipaistvat vahetust varukanalile igasuguste võrgu komponentide rikete korral.
    • Protokolli stack mac80211 on lisatud toetab neljafaasilist WPA/WPA2-PSK kanali kooskõlastust pääsupunkti režiimis.
    • Lisatud võimalus vahetada qdisc (queue discipline) planeerijat vaikimisi FQ-PIE (Flow Queue PIE) algoritmi kasutamisele, mille eesmärk on vähendada pakettide vahepealse puhverdamise (bufferbloat) negatiivset mõju kaabli modemitega võrgu keskseadmetele.
    • MPTCP (MultiPath TCP) uued funktsioonid, TCP protokolli laiendused, mis korraldavad TCP-ühendust, edastades pakette samaaegselt mitme marsruudi kaudu erinevate võrguliidestega, mis on seotud erinevate IP-aadressidega. Toetatud on syn cookie, DATA_FIN, automaatne puhvrite seadistus, soklite diagnostika ning REUSEADDR, REUSEPORT ja V6ONLY lipud setsockopt-is.
    • Virtuaalsel marsruutimise ja edastamise tabelitel VRF (Virtual Routing and Forwarding), mis võimaldavad mitme marsruutimisvaldkonna töötamist ühes süsteemis, on rakendatud „strict“ režiim. Selles režiimis võib virtuaalne tabel olla seotud ainult marsruutimistabeliga, mida ei kasutata teistes virtuaalsetes tabelites.
    • Atherose juhtmevaba draiver ath11k on lisatud toetab sagedust 6 GHz ja spektrite skaneerimist.
  • Seadmed
    • Kood, mis toetab UniCore arhitektuuri, mis on välja töötatud Pekingi Ülikooli mikroporcessorikeskuses ja mis lisati Linuxi tuumasse 2011. aastal. See arhitektuur on alates 2014. aastast olnud hooldamata ega toeta GCC-d.
    • RISC-V arhitektuurile on rakendatud tugi kcov (debugfs-liides tuuma koodi katvuse analüüsimiseks), kmemleak (mälulekete avastamise süsteem), virna kaitse, hüppe sildid ja tickless-operatsioonid (multitegumtöötlus, mis ei ole sõltuv ajastussignaalidest).
    • PowerPC arhitektuurile on rakendatud tugi spinlock-de järjekordadele, mis on oluliselt parandanud jõudlust lukustamisvaidluste olukordades.
    • ARM- ja ARM64-arhitektuuridele on vaikimisi rakendatud protsessori sageduse juhtimise mehhanism schedutil (cpufreq governor), mis kasutab sageduse muutmise otsuste tegemiseks otseselt teavet ülesannete ajakavast ja võib kohe pöörduda cpufreq draiverite poole, et koheselt muutuda sagedust, kohandades CPU tööparameetreid vastavalt hetke koormusele.
    • Intel'i graafikakaartidele mõeldud DRM-draiveris i915 on lisatud toetus mikroarhitektuuril põhinevatele kiipidele Rocket Lake ja algne toetus diskreetsetele kaartidele Intel Xe DG1.
    • Draiverisse amdgpu on lisatud algne toetus AMD GPU-dele Navi 21 (Navy Flounder) ja Navi 22 (Sienna Cichlid). Lisatud on toetus video kodeerimise ja dekodeerimise kiirenduse mootoritele UVD/VCE GPU Southern Islands (Radeon HD 7000) jaoks.
      Lisatud on omadus kuvamise pööramiseks 90, 180 või 270 kraadi.

      Huvitav on see, et AMD GPU-de jaoks mõeldud draiver on kõige olulisemad draiverid tuumas – see sisaldab umbes 2,71 miljonit koodirida, mis moodustab umbes 10% kogu tuuma mahust (27,81 miljonit rida). Samuti on 1,79 miljonit rida automaatselt genereeritud päiseid GPU registrite andmete jaoks, samas kui C-kood koosneb 366 000 reast (võrdluseks, Intel i915 draiver sisaldab 209 000 rida, Nouveau aga 149 000).

    • Nouveau draiveris on lisatud kaadrite kaupa kontrollimise toetamine CRC (Tsüklilised Redundantsuskontrollid) NVIDIA GPU ekraanimootorites. Rakendus põhineb ettevõtte NVIDIA antud dokumentatsioonil.
    • Lisatud draiverid LCD-paneelidele: Frida FRD350H54004, KOE TX26D202VM0BWA, CDTech S070PWS19HP-FC21, CDTech S070SWV29HG-DC44, Tianma TM070JVHG33 ja Xingbangda XBD599.
    • ALSA helialüsteemis on rakendatud tugi (reaalne toide väliste HDMI-seadmete jaoks, et vältida latentsi taasesituse alguses) ja uus seade. uuele seadmele mikrofoninupu valgustuse ja helikliki keelamise juhtimiseks ning lisatud tugi uuele riistvarale, sealhulgas kontrollerile Loongson 7A1000.
    • Lisatud tugi ARM-plaatidele, seadmetele ja platvormidele: Pine64 PinePhone v1.2, Lenovo IdeaPad Duet 10.1, ASUS Google Nexus 7, Acer Iconia Tab A500, Qualcomm Snapdragon SDM630 (kasutatakse Sony Xperia 10, 10 Plus, XA2, XA2 Plus ja XA2 Ultra), Jetson Xavier NX, Amlogic WeTek Core2, Aspeed EthanolX, viis uut plaati NXP i.MX6 põhjal, MikroTik RouterBoard 3011, Xiaomi Libra, Microsoft Lumia 950, Sony Xperia Z5, MStar, Microchip Sparx5, Intel Keem Bay, Amazon Alpine v3, Renesas RZ/G2H.

Samas Ladina-Ameerika tasuta tarkvara fond vormis
variant täielikult vabast kernelist 5.9Linux-libre 5.9-gnu, puhtaks pestud kõikidest püsivara ja draiverite elementidest, mis sisaldavad mittevabasid komponente või koodilõike, mille kasutusala on tootja poolt piiratud. Uues versioonis on keelatud draiverite blobide laadimine WiFi rtw8821c ja SoC MediaTek mt8183 jaoks. Blobjälje puhastamise kood on ajakohastatud, draiverites ja Habanalabs, Wilc1000, amdgpu, mt7615, i915 CSR, Mellanox mlxsw (Spectrum3), r8169 (rtl8125b-2) ja x86 puutetundlike ekraanide alamsüsteemides.

Allikas: opennet.ru

Osta usaldusväärne veebihosting DDoS kaitsega, VPS VDS serverid 🔥 Osta usaldusväärne veebihosting DDoS kaitsega, VPS VDS serverid | ProHoster