Linukso-kerna eldono 5.9

Post du monatoj da evoluo, Linus Torvalds enkondukita liberigo de kerno Linukso 5.9. Inter la plej rimarkindaj ŝanĝoj: limigi la importon de simboloj de proprietaj moduloj al GPL-moduloj, akceli operaciojn de kuntekstoŝanĝo uzante la instrukcion pri procesoro FSGSBASE, subteno por kerna bildkunpremo uzante Zstd, reverkado de la prioritato de fadenoj en la kerno, subteno por la PRP. (Paralela Redundancy Protocol) , bendolarĝ-konscia planado en la templimplanilo, preventa pakado de memorpaĝoj, kapableca flago CAP_CHECKPOINT_RESTOR, close_range() sistemvoko, dm-kripto-efikecplibonigoj, kodoforigo por 32-bitaj Xen PV gastoj, nova slabmemoro administra mekanismo, opcio "savo" en Btrfs, subteno por enlinia ĉifrado en ext4 kaj F2FS.

La nova versio inkluzivas 16074 korektojn de 2011 programistoj,
flikgrandeco - 62 MB (ŝanĝoj influis 14548 dosierojn, 782155 linioj de kodo estis aldonitaj, 314792 linioj estis forigitaj). Ĉirkaŭ 45% de ĉiuj prezentitaj en 5.9
ŝanĝoj rilatas al aparataj peliloj, proksimume 15% de ŝanĝoj estas
sinteno al ĝisdatigo de kodo specifa por hardvararkitekturoj, 13%
rilata al la reto stako, 3% al dosiersistemoj kaj 3% al interna
kernaj subsistemoj.

Ĉefa novigoj:

  • Memoraj kaj sistemaj servoj
    • Streĉita protekto kontraŭ la uzo de GPL-tavoloj por ligado de proprietaj ŝoforoj kun kernaj komponantoj eksportitaj nur por moduloj sub la GPL-licenco. La flago TAINT_PROPRIETARY_MODULE nun estas heredita en ĉiuj moduloj kiuj importas simbolojn de moduloj kun ĉi tiu flago. Se GPL-modulo provas importi simbolojn de ne-GPL-modulo, tiam tiu GPL-modulo heredos la etikedon TAINT_PROPRIETARY_MODULE kaj ne povos aliri kernajn komponantojn disponeblajn nur por GPL-licencitaj moduloj, eĉ se la modulo antaŭe importis simbolojn de la "gplonly" kategorio. La inversa seruro (eksportanta nur EXPORT_SYMBOL_GPL en moduloj kiuj importis EXPORT_SYMBOL_GPL), kiu povus rompi la laboron de proprietaj peliloj, ne estas efektivigita (nur la proprieta modula flago estas heredita, sed ne la GPL-ligoj).
    • Aldonita kcompactd motorsubteno por antaŭpakado de memorpaĝoj en la fono por pliigi la nombron da grandaj memorpaĝoj disponeblaj al la kerno. Laŭ antaŭtaksoj, fona pakaĵo, koste de minimuma superkosto, povas redukti prokrastojn dum asignado de grandaj memorpaĝoj (grandegaj paĝoj) je 70-80 fojojn kompare kun la antaŭe uzata paka mekanismo, lanĉita kiam la bezono ekestas (laŭpeto). ). Por fiksi la limojn de la ekstera fragmentiĝo kiun kcompactd provizos, sysctl vm.compaction_proactiveness estis aldonita.
    • Aldonita subteno por kerna bildkunpremo uzante algoritmon zstandard (zstd).
    • Subteno por procesoraj instrukcioj estis efektivigita por x86-sistemoj FSGSBASE, kiu ebligas legi kaj ŝanĝi la enhavon de la registroj FS/GS el uzantspaco. En la kerno, FSGSBASE estas uzata por akceli kuntekstŝanĝajn operaciojn eliminante nenecesajn MSR-skribajn operaciojn por GSBASE, kaj en uzantspaco ĝi evitas nenecesajn sistemvokojn por ŝanĝi FS/GS.
    • Aldonita la parametro "allow_writes" permesas malpermesi ŝanĝojn al la MSR-registroj de la procesoro el uzantspaco kaj limigi aliron al la enhavo de ĉi tiuj registroj por legi operaciojn, ĉar ŝanĝi la MSR povas konduki al problemoj. Defaŭlte, skribo ankoraŭ ne estas malŝaltita, kaj ŝanĝoj al la MSR estas reflektitaj en la protokolo, sed estonte estas planite ŝanĝi la defaŭltan aliron al nurlegebla reĝimo.
    • Al la nesinkrona I/O-interfaco io_uring Aldonita plena subteno por nesinkronaj bufraj legadoj, kiuj ne postulas kernajn fadenojn. Registradsubteno estas atendata en estonta eldono.
    • En la limdato pri I/O-planisto efektivigita planado bazita sur kapablo, permesante fari ĝustajn decidojn pri nesimetriaj sistemoj kiel ekzemple ARM-bazitaj sistemoj DynamIQ kaj granda.LITTLE, kiuj kombinas potencajn kaj malpli efikajn energi-efikajn CPU-kernojn en unu blato. Aparte, la nova reĝimo permesas eviti plani miskongruojn kiam malrapida CPU-kerno ne havas la taŭgajn rimedojn por plenumi taskon ĝustatempe.
    • La modelo de energikonsumo en la kerno (Energy Model-kadro) nun estas priskribas ne nur CPU-energiokonsuma konduto, sed ankaŭ kovras ekstercentrajn aparatojn.
    • La sistemvoko close_range() estis efektivigita por permesi al procezo fermi tutan gamon da malfermitaj dosierpriskribiloj samtempe.
    • De la efektivigo de la tekstkonzolo kaj la fbcon-ŝoforo kodo forigita, kiu disponigas la kapablon programi rulumi tekston reen (CONFIG_VGACON_SOFT_SCROLLBACK) je pli ol la kvanto de VGA tekstreĝima videomemoro.
    • Relaborita algoritmo por atribui prioritatojn al fadenoj ene de la kerno. La nova opcio disponigas pli bonan konsistencon tra ĉiuj kernaj subsistemoj dum asignado de prioritatoj al realtempaj taskoj.
    • Aldonita sysctl sched_uclamp_util_min_rt_default por kontroli CPU-akceligajn agordojn por realtempaj taskoj (ekzemple, vi povas ŝanĝi la konduton de realtempaj taskoj sur la flugo por ŝpari potencon post ŝanĝado al bateria potenco aŭ sur moveblaj sistemoj).
    • Preparoj estis faritaj por efektivigi subtenon por Transparent Huge Pages-teknologio en la paĝa kaŝmemoro.
    • La fanotify-motoro efektivigas novajn flagojn FAN_REPORT_NAME kaj FAN_REPORT_DIR_FID por raporti gepatran nomon kaj unikajn FID-informojn kiam kreado, forigo aŭ movada evento okazas por dosierujoj kaj ne-dosierujoj objektoj.
    • Por cgrupoj efektivigita nova slabmemorregilo, kiu estas rimarkinda pro movi slabokontadon de la memorpaĝnivelo al la kernobjektnivelo, kiu ebligas kunhavigi slabpaĝojn en malsamaj cgrupoj, anstataŭe de asigni apartajn slabkaŝmemorojn por ĉiu cgrupo. La proponita aliro ebligas pliigi la efikecon de uzado de slabo, redukti la grandecon de memoro uzata por slabo je 30-45%, signife redukti la ĝeneralan memorkonsumon de la kerno kaj redukti memorfragmentiĝon.
    • En la sonsubsistemo ALSA и USB-stako, konforme lastatempe adoptita rekomendoj pri la uzo de inkluziva terminologio en la Linukso-kerno; politike malĝustaj terminoj estis purigitaj. La kodo estis forigita de la vortoj "sklavo", "mastro", "nigra listo" kaj "blanklisto".
  • Virtualigo kaj Sekureco
    • Konstruante la kernon uzante la Clang-kompililon aperis la kapablo agordi (CONFIG_INIT_STACK_ALL_ZERO) aŭtomatan inicialigon al nulo de ĉiuj variabloj stokitaj sur la stako (dum konstruado, specifu "-ftrivial-auto-var-init=zero").
    • En la seccomp-subsistemo, dum uzado de procezkontrolreĝimo en uzantspaco, aldonis ŝanco anstataŭigo de dosierpriskribiloj en la monitoritan procezon por plene kopii sistemvokojn kiuj kondukas al la kreado de dosierpriskribiloj. La funkcieco estas postulata en izolitaj ujsistemoj kaj sablokesto-efektivigoj por Chrome.
    • Por xtensa kaj csky arkitekturoj, aldonis subtenon por limigado de sistemvokoj uzante la seccomp-subsistemon. Por xtensa, subteno por la revizia mekanismo estas aldone efektivigita.
    • Aldonita nova kapablo-marko CAP_CHECKPOINT_RESTORE, kiu ebligas al vi havigi aliron al kapabloj rilate al frostigado kaj restarigo de la stato de procezoj sen transdono de pliaj privilegioj.
    • GCC 11 provizas ĉiujn funkciojn, kiujn vi bezonas
      sencimiga ilo KCSAN (Kernel Concurrency Sanitizer), dizajnita por dinamike detekti raskondiĉojn ene de la kerno. Tiel, KCSAN nun povas esti uzata kun kernoj konstruitaj en GCC.

    • Por AMD Zen kaj pli novaj CPU-modeloj aldonis subteno por P2PDMA-teknologio, kiu permesas vin uzi DMA por rekta datumtransigo inter la memoro de du aparatoj konektitaj al la PCI-buso.
    • Reĝimo estis aldonita al dm-crypt, kiu ebligas al vi redukti latencian farante kriptografan datumtraktadon sen uzi laborvicojn. Ĉi tiu reĝimo ankaŭ estas necesa por ĝusta funkciado kun zonigita blokaparatoj (aparatoj kun areoj kiuj devas esti skribitaj sinsekve, ĝisdatigante la tutan grupon de blokoj). Laboro estis farita por pliigi trairon kaj redukti latentecon en dm-crypt.
    • Forigita kodo por subteni 32-bitajn gastojn kurantajn en paravirtualiga reĝimo kurante la Xen-hipervizion. Uzantoj de tiaj sistemoj devus ŝanĝi al uzado de 64-bitaj kernoj en gastmedioj aŭ uzi plenajn (HVM) aŭ kombinitajn (PVH) virtualigajn reĝimojn anstataŭe de paravirtualigo (PV) por prizorgi mediojn.
  • Diska Subsistemo, I/O kaj Dosiersistemoj
    • Sur la dosiersistemo Btrfs efektivigita "savo" munta opcio kiu unuigas aliron al ĉiuj aliaj reakiro opcioj. Subteno por la opcioj "alloc_start" kaj "subvolrootid" estis forigita, kaj la opcio "inode_cache" estis malrekomendita. Efikecoptimumigoj estis faritaj, precipe rimarkeble plirapidigante la ekzekuton de fsync() operacioj. Aldonita la kapablo uzi alternativajn specojn de ĉeksumoj krom CRC32c.
    • Aldonita la kapablo uzi enlinian ĉifradon (Inline Encryption) en dosiersistemoj ext4 kaj F2FS, por ebligi kiun la "inlinecrypt" munta opcio estas disponigita. Enlinia ĉifrada reĝimo permesas al vi uzi la ĉifrajn mekanismojn enkonstruitajn en la stiradoregilo, kiu travideble ĉifras kaj malĉifras enigon/eligon.
    • En XFS sekurigita inodo rekomencigita (flush) en tute nesinkrona reĝimo kiu ne blokas procezojn dum plenumado de memorpuriga operacio. Solvis multjaran kvotan problemon, kiu kaŭzis malĝuste spuritajn avertojn pri molaj limoj kaj inodaj limoj. Unuigita efektivigo de DAX-subteno por ext4 kaj xfs.
    • En Ext4 efektivigita antaŭŝarĝi blokajn atribuajn bitmapojn. Kombinita kun limigado de skanado de neinicialigitaj grupoj, la optimumigo reduktis la tempon bezonatan por munti tre grandajn sekciojn.
    • En F2FS aldonis ioctl F2FS_IOC_SEC_TRIM_FILE, kiu ebligas al vi uzi la TRIM/forĵeti komandojn por fizike restarigi specifitajn datumojn en dosiero, ekzemple, por forigi alirŝlosilojn sen lasi restajn datumojn sur la disko.
      En F2FS ankaŭ aldonis nova rubkolekta reĝimo GC_URGENT_LOW, kiu funkcias pli agreseme forigante kelkajn kontrolojn por esti en neaktiva stato antaŭ komenci la rubkolektilon.

    • En bcache, la bucket_size por amplekso estis pliigita de 16 ĝis 32 bitoj en preparo por ebligi zonitajn aparatkaŝmemorojn.
    • La kapablo uzi enlinian ĉifradon bazitan sur enkonstruita hardvarĉifrado disponigita fare de UFS-regiloj estis aldonita al la SCSI-subsistemo (Universala Flash-Stokado).
    • Nova kerna komandlinia parametro "debugfs" estis aldonita, kiu ebligas al vi kontroli la haveblecon de la pseŭdo-FS de la sama nomo.
    • La kliento NFSv4.2 provizas subtenon por plilongigitaj dosieraj atributoj (xattr).
    • En dm-polvo aldonis interfaco por montri tuj liston de ĉiuj identigitaj malbonaj blokoj sur la disko ("dmsetup message dust1 0 listbadblocks").
    • Por md/raid5, la parametro /sys/block/md1/md/stripe_size estis aldonita por agordi la STRIPE-blokgrandecon.
    • Por NVMe-stokaj aparatoj aldonis subteno por stiraj zonaj komandoj (ZNS, NVM Express Zoned Namespace), kiu ebligas al vi dividi stokspacon en zonojn, kiuj konsistigas grupojn de blokoj por pli kompleta kontrolo pri la lokigo de datumoj sur la disko.
  • Reta subsistemo
    • En Netfilter aldonis la kapablo malakcepti pakaĵetojn ĉe la stadio antaŭ vojigo-kontrolo (la REJECT-esprimo nun povas esti uzata ne nur en la INPUT, FORWARD kaj OUTPUT ĉenoj, sed ankaŭ ĉe la PREROUTING-stadio por icmp kaj tcp).
    • En nftables aldonis la kapablo revizii eventojn rilatajn al agordaj ŝanĝoj.
    • En nftables en la netlink API aldonis subteno por anonimaj ĉenoj, kies nomo estas dinamike asignita de la kerno. Kiam vi forigas regulon asociitan kun anonima ĉeno, la ĉeno mem estas aŭtomate forigita.
    • BPF aldonas subtenon por iterantoj por trairi, filtri kaj modifi elementojn de asociecaj tabeloj (mapoj) sen kopiado de datenoj en uzantspacon. Iteratoroj povas esti uzitaj por TCP kaj UDP-ingoj, permesante al BPF-programoj ripetadi super listoj de malfermaj ingoj kaj eltiri la informojn kiujn ili bezonas de ili.
    • Aldonita nova speco de BPF-programo BPF_PROG_TYPE_SK_LOOKUP, kiu estas lanĉita kiam la kerno serĉas taŭgan aŭskultan ingon por envenanta konekto. Uzante BPF-programon kiel ĉi tiu, vi povas krei prizorgilojn kiuj faras decidojn pri kiu ingo al kiu konekto devus esti asociita, sen esti limigita de la bind() sistemvoko. Ekzemple, vi povas asocii ununuran ingon kun gamo da adresoj aŭ havenoj. Krome, subteno por la flago SO_KEEPALIVE estis aldonita al bpf_setsockopt() kaj la kapablo instali BPF_CGROUP_INET_SOCK_RELEASE-traktiloj, nomitaj kiam la ingo estas liberigita, estis efektivigita.
    • Protokolo-subteno efektivigita PRP (Paralela Redundancy Protocol), kiu permesas Ethernet-bazitan ŝanĝadon al rezerva kanalo, travidebla por aplikoj, en la okazaĵo de fiasko de iuj retkomponentoj.
    • Staku mac80211 aldonis subteno por kvaretapa WPA/WPA2-PSK-kanala intertraktado en alirpunktoreĝimo.
    • Aldonis la kapablon ŝanĝi la programilon de qdisc (vicada disciplino) por uzi la algoritmon de administrado de retvicovicoj FQ-PIE (Flow Queue PIE) defaŭlte, celante redukti la negativan efikon de meza paka bufrado sur randa reto-ekipaĵo (bufferbloat) en retoj kun kablomodemoj.
    • Novaj funkcioj estis aldonitaj al MPTCP (MultiPath TCP), etendaĵoj de la TCP-protokolo por organizi la operacion de TCP-ligo kun livero de pakaĵoj samtempe laŭ pluraj itineroj tra malsamaj retaj interfacoj asociitaj kun malsamaj IP-adresoj. Aldonita subteno por syn-kuketo, DATA_FIN, bufro-aŭtomata agordo, socket-diagnozo, kaj REUSEADDR, REUSEPORT kaj V6ONLY flagoj en setsockopt.
    • Por virtualaj enrutaj tabloj VRF (Virtual Routing and Forwarding), kiuj permesas organizi la funkciadon de pluraj enrutaj domajnoj sur unu sistemo, la "strikta" reĝimo estis efektivigita. En ĉi tiu reĝimo, virtuala tabelo povas nur esti asociita kun vojigtabelo kiu ne estas uzita en aliaj virtualaj tabeloj.
    • La sendrata ŝoforo estas ath11k aldonis subtenas 6GHz-frekvencon kaj spektra skanado.
  • Ekipaĵo
    • Forigita kodo por apogi la UniCore-arkitekturon, evoluigitan ĉe la Mikroprocesoro-Centro de Peking University kaj inkludita en la Linukso-kerno en 2011. Ĉi tiu arkitekturo estis neprizorgita ekde 2014 kaj ne havas subtenon en GCC.
    • Subteno por RISC-V-arkitekturo estis efektivigita kcov (debugfs-interfaco por analizado de kernkodopriraportado), kmemleak (memorliko-detekta sistemo), stakprotekto, saltmarkoj kaj tiklaj operacioj (multaska sendepende de tempigilo-signaloj).
    • Por la PowerPC-arkitekturo, subteno por spinlock atendovicoj estis efektivigita, kiu signife plibonigis efikecon en serurkonfliktsituacioj.
    • Por ARM kaj ARM64-arkitekturoj, la procesora frekvenca reguliga mekanismo estas ebligita defaŭlte scheduleutil (cpufreq-reganto), kiu rekte uzas informojn de la taskoplanisto por fari decidon pri ŝanĝado de la frekvenco kaj povas tuj aliri la cpufreq-ŝoforojn por rapide ŝanĝi la frekvencon, tuj ĝustigante la CPU-funkciantajn parametrojn al la nuna ŝarĝo.
    • La i915 DRM-ŝoforo por Intel-grafikaj kartoj inkluzivas subtenon por blatoj bazitaj sur mikroarkitekturo Raketa Lago kaj aldonis komencan subtenon por diskretaj kartoj Intel Xe DG1.
    • Amdgpu-ŝoforo aldonis komencan subtenon por AMD-GPUoj Navi 21 (Mararmeo Flounder) kaj Navi 22 (Siena Cichlid). Aldonita subteno por UVD/VCE-videokodigado kaj malkodado de akcelmotoroj por la Suda Insuloj GPU (Radeon HD 7000).
      Aldonita posedaĵo por turni la ekranon je 90, 180 aŭ 270 gradoj.

      Kurioze, la ŝoforo por AMD GPU Estas la plej granda ŝoforo en la kerno - ĝi havas ĉirkaŭ 2.71 milionojn da linioj de kodo, kio estas proksimume 10% de la totala kernograndeco (27.81 milionoj da linioj). Samtempe, 1.79 milionoj da linioj estas kalkulitaj per aŭtomate generitaj kapdosieroj kun datumoj por GPU-registroj, kaj la C-kodo estas 366 mil linioj (por komparo, la ŝoforo Intel i915 inkluzivas 209 mil liniojn, kaj Nouveau - 149 mil).

    • En Nouveau ŝoforo aldonis subteno por kadro-post-kadra integreco kontrolado uzante CRC (Cikla Redundancy Checks) en NVIDIA GPU ekranmotoroj. La efektivigo baziĝas sur dokumentado provizita de NVIDIA.
    • Aldonitaj ŝoforoj por LCD-paneloj: Frida FRD350H54004, KOE TX26D202VM0BWA, CDTech S070PWS19HP-FC21, CDTech S070SWV29HG-DC44, Tianma TM070JVHG33 kaj Xingbangda XBD599.
    • La ALSA aŭdsubsistemo subtenas Intel Silent Stream (kontinua potenco-reĝimo por eksteraj HDMI-aparatoj por forigi prokraston dum komencado de reproduktado) kaj nova aparato kontroli la lumigadon de la mikrofona aktivigo kaj mutigaj butonoj, kaj ankaŭ aldonis subtenon por novaj ekipaĵoj, inkluzive de regilo. Longson 7A1000.
    • Aldonita subteno por ARM-tabuloj, aparatoj kaj platformoj: Pine64 PinePhone v1.2, Lenovo IdeaPad Duet 10.1, ASUS Google Nexus 7, Acer Iconia Tab A500, Qualcomm Snapdragon SDM630 (uzita en Sony Xperia 10, 10 Plus, XA2, XA2 Plus kaj XA2 Plus Ultra), Jetson Xavier NX, Amlogic WeTek Core2, Aspeed EthanolX, kvin novaj tabuloj bazitaj sur 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.

Samtempe, Latin American Free Software Foundation formis
eblo tute libera kerno 5.9 - Linukso-libre 5.9-gnu, malplenigita de firmvaro kaj ŝoforelementoj enhavantaj proprietajn komponentojn aŭ kodsekciojn, kies amplekso estas limigita fare de la produktanto. La nova eldono malebligas ŝarĝon de blob en ŝoforoj por WiFi rtw8821c kaj SoC MediaTek mt8183. Ĝisdatigita blob-purigadkodo en ŝoforoj kaj subsistemoj Habanalabs, Wilc1000, amdgpu, mt7615, i915 CSR, Mellanox mlxsw (Spectrum3), r8169 (rtl8125b-2) kaj x86 tuŝekrano.

fonto: opennet.ru

Aldoni komenton