Linukso-kerna eldono 5.8

Post du monatoj da evoluo, Linus Torvalds enkondukita liberigo de kerno Linukso 5.8. Inter la plej rimarkindaj ŝanĝoj: KCSAN-raskondiĉa detektilo, universala mekanismo por liverado de sciigoj al uzantspaco, hardvarsubteno por enlinia ĉifrado, plibonigitaj sekurecmekanismoj por ARM64, subteno por la rusa Baikal-T1-procesoro, la kapablo aparte munti procfs-instancojn. , efektivigo de Shadow-sekurecaj mekanismoj por ARM64 Call Stack kaj BTI.

Kerno 5.8 iĝis la plej granda laŭ la nombro da ŝanĝoj de ĉiuj kernoj dum la tuta ekzisto de la projekto. Krome, la ŝanĝoj ne rilatas al iu ajn subsistemo, sed kovras malsamajn partojn de la kerno kaj estas plejparte rilataj al interna reverkado kaj purigado. La plej grandaj ŝanĝoj vidiĝas ĉe ŝoforoj. La nova versio inkludis 17606 korektojn de 2081 programistoj, kiuj influis proksimume 20% de ĉiuj dosieroj en la kernkoddeponejo. La flikgrandeco estas 65 MB (la ŝanĝoj tuŝis 16180 dosierojn, 1043240 linioj de kodo estis aldonitaj, 489854 linioj estis forigitaj). Kompare, la 5.7 branĉo havis 15033 korektojn kaj pecetgrandecon de 39 MB. Proksimume 37% de ĉiuj ŝanĝoj lanĉitaj en 5.8 rilatas al aparataj ŝoforoj, proksimume 16% de ŝanĝoj rilatas al ĝisdatigo de kodo specifa por hardvararkitekturoj, 11% rilatas al la retstako, 3% rilatas al dosiersistemoj kaj 4% estas rilataj al internaj kernaj subsistemoj.

Ĉefa novigoj:

  • Virtualigo kaj Sekureco
    • La ŝarĝo de kernaj moduloj, kiuj havas sekciojn kun kodo, en kiu la bitoj kiuj permesas ekzekuton kaj skribadon estas samtempe fiksitaj. La ŝanĝo estis efektivigita kiel parto de pli granda projekto por forigi la kernon de la uzo de memorpaĝoj kiuj permesas samtempan ekzekuton kaj skribon.
    • Nun eblas krei apartajn procfs-instancojn, permesante la uzon de multoblaj procfs-muntpunktoj, muntitaj kun malsamaj opcioj, sed reflektantaj la saman procezidentigilon nomspacon (pid-nomspaco). Antaŭe, ĉiuj procfs-muntpunktoj nur spegulis unu internan reprezentantaron, kaj ĉiu ŝanĝo al la muntaj parametroj influis ĉiujn aliajn muntajn punktojn asociitajn kun la sama proceza ID-nomspaco. Inter la areoj en kiuj muntado kun malsamaj opcioj povas esti postulata estas la efektivigo de malpeza izolado por enkonstruitaj sistemoj kun la kapablo kaŝi certajn specojn de procezoj kaj informnodojn en procfs.
    • Subteno por la mekanismo estis efektivigita por la ARM64-platformo
      Ombro-Voka Stako, disponigita de la Clang-kompililo por protekti kontraŭ anstataŭigo de la revenadreso de funkcio en la okazaĵo de staka bufrotrofluo. La esenco de la protekto estas konservi la revenadreson en aparta "ombra" stako post translokado de kontrolo al funkcio kaj reakiro de ĉi tiu adreso antaŭ ol eliri la funkcion.

    • Instrukcia subteno estis aldonita por la ARM64-platformo ARMv8.5-BTI (Branĉa Celo-Indikilo) por protekti la ekzekuton de aroj de instrukcioj al kiuj ne devus esti branĉitaj. Blokado de transiroj al arbitraj sekcioj de kodo estas efektivigita por malhelpi la kreadon de noviletoj en ekspluataĵoj kiuj uzas reven-orientitajn programajn teknikojn ( ROP - Return-Oriented Programming ; la atakanto ne provas meti sian kodon en memoron, sed operacias sur jam ekzistantaj pecoj. de maŝininstrukcioj kiuj finiĝas per revenkontrolinstrukcio, de kiu ĉeno de vokoj estas konstruita por akiri la deziratan funkciecon).
    • Aldonita aparatara subteno por enlinia ĉifrado de blokaj aparatoj (Enlinia Ĉifrado). Inlinep-ĉifradaparatoj estas tipe konstruitaj en la veturadon, sed estas logike situantaj inter sistemmemoro kaj disko, travideble ĉifrante kaj malĉifrinte I/O bazitan sur kern-specifitaj ŝlosiloj kaj ĉifradalgoritmo.
    • Aldonis la opcion de komandlinio de la kerno "initrdmem" por permesi al vi specifi la fizikan memoran adreson de la initrd kiam oni metas la komencan lanĉan bildon en RAM.
    • Aldonita nova kapableco: CAP_PERFMON por aliri la perf-subsistemon kaj plenumi rendimentan monitoradon. CAP_BPF, kiu permesas certajn BPF-operaciojn (kiel ekzemple ŝargado de BPF-programoj) kiuj antaŭe postulis CAP_SYS_ADMIN-rajtojn (CAP_SYS_ADMIN-rajtoj nun estas dividitaj en kombinaĵon de CAP_BPF, CAP_PERFMON, kaj CAP_NET_ADMIN).
    • Aldonita de nova virtio-mem-aparato, kiu ebligas al vi varm-konekti kaj varm-konekti memoron en gastsistemojn.
    • Efektivigita revoko de mapaj operacioj en /dev/mem se la aparato-ŝoforo uzas interkovrajn memorareojn.
    • Aldonita vundebleco protekto KROSSTalk/SRBDS, kiu permesas restarigi la rezultojn de certaj instrukcioj ekzekutitaj sur alia CPU-kerno.
  • Memoraj kaj sistemaj servoj
    • En la dokumento difinanta la regulojn por formatado de la kodo, akceptis rekomendoj por la uzo de inkluziva terminologio. Programistoj ne rekomendas uzi la kombinaĵojn 'mastro/sklavo' kaj 'nigra listo/blanklisto', same kiel la vorton 'sklavo' aparte. La rekomendoj koncernas nur novajn uzojn de ĉi tiuj terminoj. Mencioj de la specifitaj vortoj jam ekzistantaj en la kerno restos netuŝitaj. En nova kodo, la uzo de la markitaj terminoj estas permesita se necesas por subteni la API kaj ABI elmontritajn en uzantspaco, same kiel kiam oni ĝisdatigas la kodon por subteni ekzistantan aparataron aŭ protokolojn, kies specifoj postulas la uzon de iuj terminoj.
    • Sencimiga ilo inkludis KCSAN (Kernel Concurrency Sanitizer), dizajnita por dinamika detekto raskondiĉoj ene de la kerno. La uzo de KCSAN estas apogita dum konstruado en GCC kaj Clang, kaj postulas specialajn modifojn ĉe kompiltempo por spuri memoraliron (romppunktoj estas uzitaj kiuj estas ekigitaj kiam memoro estas legita aŭ modifita). La evoluo de KCSAN temigas falsan pozitivan preventadon, skaleblon kaj facilecon de uzo.
    • Aldonita universala mekanismo liverante sciigojn de la kerno al uzantspaco. La mekanismo baziĝas sur la norma tubŝoforo kaj permesas vin efike distribui sciigojn de la kerno tra kanaloj malfermitaj en uzantspaco. Sciigaj ricevpunktoj estas pipoj kiuj estas malfermitaj en speciala reĝimo kaj permesas mesaĝojn ricevitajn de la kerno esti akumulitaj en ringa bufro. Legado estas farita per la kutima read() funkcio. La posedanto de la kanalo determinas kiuj fontoj en la kerno devas esti monitoritaj kaj povas difini filtrilon por ignori iujn specojn de mesaĝoj kaj eventoj. De la eventoj, nur operacioj kun ŝlosiloj estas nuntempe subtenataj, kiel ekzemple aldoni/forigi ŝlosilojn kaj ŝanĝi iliajn atributojn. Ĉi tiuj eventoj estas planitaj por esti uzataj en GNOME.
    • Daŭra evoluo de la "pidfd" funkcieco por helpi pritrakti PID-reuzosituaciojn (pidfd estas rilata al specifa procezo kaj ne ŝanĝiĝas, dum PID povas esti asociita kun alia procezo post kiam la nuna procezo asociita kun tiu PID finiĝas). La nova versio aldonas subtenon por uzado de pidfd por ligi procezon al nomspacoj (permesante al pidfd esti specifita dum plenumado de la setns-sistemvoko). Uzado de pidfd ebligas al vi kontroli la alligitaĵon de procezo al pluraj specoj de nomspacoj per unu alvoko, signife reduktante la nombron da necesaj sistemvokoj kaj efektivigante aldonaĵon en atomreĝimo (se alligiteco al unu el la nomspacoj malsukcesas, la aliaj ne konektos) .
    • Aldonita nova sistemvoko faccessat2(), malsama de
      faccessat () kroma argumento kun flagoj kiuj konformas al POSIX-rekomendoj (antaŭe ĉi tiuj flagoj estis kopiitaj en la C-biblioteko, kaj la nova faccessat2 permesas ilin esti efektivigitaj en la kerno).

    • En Cgroup aldonis memory.swap.high agordo kiu povas esti uzata por malrapidigi taskojn kiuj okupas tro da interŝanĝa spaco.
    • Al la nesinkrona I/O-interfaco io_uring aldonis subtenon por tee() sistemvoko.
    • Aldonita mekanismo "BPF-iteratoro, dizajnita por eligi la enhavon de kernstrukturoj al uzantspaco.
    • Provizita la kapablo uzi ringbufron por datumŝanĝo inter BPF-programoj.
    • En la mekanismon padata, dizajnita por organizi paralelan plenumon de taskoj en la kerno, aldonis subtenon por multfadenaj taskoj kun ŝarĝbalancado.
    • En la pstore-mekanismo, kiu permesas vin konservi sencimigan informon pri la kaŭzo de la kraŝo en memoraj areoj, kiuj ne perdiĝas inter rekomencoj, aldonis backend por konservi informojn por bloki aparatojn.
    • De la PREEMPT_RT-kernbranĉo movita efektivigo de lokaj seruroj.
    • Aldonita nova bufro-asigna API (AF_XDP), celita al simpligo de la verkado de retaj ŝoforoj kun XDP (eXpress Data Path) subteno.
    • Por la RISC-V-arkitekturo, subteno por senararigado de kernkomponentoj uzantaj KGDB estis efektivigita.
    • Antaŭ eldono 4.8, la postuloj por la versio de GCC uzebla por konstrui la kernon estis pliigitaj. En unu el la venontaj eldonoj oni planas levi la stangon al GCC 4.9.
  • Diska Subsistemo, I/O kaj Dosiersistemoj
    • En Device Mapper aldonis nova dm-ebs (emulate blokgrandeco) pritraktilo, kiu povas esti uzita por kopii pli malgrandan logikan blokgrandecon (ekzemple, por kopii 512-bajtajn sektorojn sur 4K sektor-grandaj diskoj).
    • La dosiersistemo F2FS nun subtenas kunpremadon uzante la LZO-RLE-algoritmon.
    • En dm-kripto aldonis subteno por ĉifritaj ŝlosiloj.
    • Btrfs plibonigis pritraktadon de legaj operacioj en rekta I/O-reĝimo. Dum muntado akcelis kontrolante forigitajn subsekciojn kaj dosierujojn lasitajn sen gepatro.
    • Parametro "nodelete" estis aldonita al CIFS, permesante normalajn permesajn kontrolojn sur la servilo, sed malpermesante al la kliento forigi dosierojn aŭ dosierujojn.
    • Ext4 plibonigis erartraktadon ENOSPC kiam oni uzas multfadenadon. xattr aldonis subtenon por la nomspaco gnu.* uzata en GNU Hurd.
    • Por Ext4 kaj XFS, subteno por DAX-operacioj estas ebligita (rekta aliro al la dosiersistemo preterpasante la paĝan kaŝmemoron sen uzi la blokan aparaton nivelon) rilate al individuaj dosieroj kaj dosierujoj.
    • En sistema voko statx() flago aldonita STATX_ATTR_DAX, kiu kiam specifite, prenas informojn uzante la DAX-motoron.
    • EXFAT aldonis subteno por kontrolado de lanĉa areo.
    • En GRASO plibonigita iniciatema ŝarĝo de FS-elementoj. Testado de malrapida USB-disko de 2TB montris redukton de la tempo de prova finaĵo de 383 ĝis 51 sekundoj.
  • Reta subsistemo
    • En la kodo por kontroli la funkciadon de retaj pontoj aldonis protokola subteno MRP (Media Redundancy Protocol), kiu ebligas faŭltoleremo per lopado de multoblaj Ethernet-ŝaltiloj.
    • Al trafikkontrolsistemo (Tc) aldonis nova ago "pordego", kiu ebligas difini tempintervalojn por prilaborado kaj forĵeti certajn pakaĵojn.
    • Subteno por testado de la konektita retkablo kaj mem-diagnozo de retaj aparatoj estis aldonitaj al la kerno kaj la utileco ethtool.
    • Subteno por la algoritmo MPLS (Multiprotocol Label Switching) estis aldonita al la IPv6-stako por vojigo de pakaĵetoj uzantaj multiprotokola etikedŝanĝo (MPLS antaŭe estis apogita por IPv4).
    • Aldonita subteno por elsendado de IKE (Interreta Ŝlosilo-Interŝanĝo) kaj IPSec-pakaĵetoj super TCP (RFC 8229) por preteriri eblan UDP-blokadon.
    • Aldonita de retbloka aparato rnbd, kiu ebligas al vi organizi foran aliron al bloka aparato uzante la RDMA-transporton (InfiniBand, RoCE, iWARP) kaj la protokolon RTRS.
    • En la TCP-stako aldonis subteno por intervalkunpremo en selektema agnosko (SAKO) respondoj.
    • Por IPv6 efektivigita TCP-LD-subteno (RFC 6069, Longaj Konekteblecoj).
  • Ekipaĵo
    • La i915 DRM-ŝoforo por Intel-vidkartoj inkluzivas subtenon por Intel Tiger Lake (GEN12) blatoj defaŭlte, por kiuj efektivigita la kapablo uzi la SAGV (System Agent Geyserville) sistemon por dinamike ĝustigi frekvencon kaj tension depende de elektrokonsumo aŭ agadopostuloj.
    • La amdgpu-ŝoforo aldonis subtenon por la FP16-piksela formato kaj la kapablon labori kun ĉifritaj bufroj en videomemoro (TMZ, Trusted Memory Zone).
    • Aldonita subteno por potencaj sensiloj por AMD Zen kaj Zen2-procesoroj, same kiel temperatursensiloj por AMD Ryzen 4000 Renoir. Subteno por preni informojn pri elektrokonsumo per la interfaco estas provizita por AMD Zen kaj Zen2 RAPL (Kuru Meza Potenca Limo).
    • Aldonita subteno por la NVIDIA modifformato al la Nouveau-ŝoforo. Por gv100, la kapablo uzi interplektitajn skanajn reĝimojn estis efektivigita. Aldonita vGPU-detekto.
    • Aldonita subteno por Adreno A405, A640 kaj A650 GPU-oj al la MSM (Qualcomm) ŝoforo.
    • Aldonita interna kadro por administri DRM (Direct Rendering Manager) rimedojn.
    • Aldonita subteno por smartphones Xiaomi Redmi Note 7 kaj Samsung Galaxy S2, same kiel tekkomputiloj Elm/Hana Chromebook.
    • Aldonitaj ŝoforoj por LCD-paneloj: ASUS TM5P5 NT35596, Starry KR070PE2T, Leadtek LTK050H3146W, Visionox rm69299, Boe tv105wum-nw0.
    • Aldonita subteno por ARM-tabuloj kaj platformoj Renesas "RZ/G1H", Realtek RTD1195, Realtek RTD1395/RTD1619, Rockchips RK3326, AMLogic S905D, S905X3, S922XH, Olimex A20-OLinuXino-LIME Point-e50, Check Point-eXNUMX
      , Beacon i.MX8m-Mini, Qualcomm SDM660/SDM630, Xnano X5 TV Box, Stinger96, Beaglebone-AI.

    • Aldonita subteno por MIPS-procesoro Loongson-2K (mallongigita Loongson64). Por CPU Loongson 3, subteno por virtualigo uzanta la KVM-hipervizion estis aldonita.
    • Aldonita
      subteno por la rusa Bajkal-T1-procesoro kaj la sistemo-sur-blato bazita sur ĝi BE-T1000. La procesoro Baikal-T1 enhavas du superskalarajn kernojn P5600 MIPS 32 r5 funkciantajn je 1.2 GHz. La blato enhavas L2-kaŝmemoron (1 MB), DDR3-1600 ECC-memorregilon, 1 10Gb Ethernet-havenon, 2 1Gb Ethernet-havenojn, PCIe Gen.3 x4-regilon, 2 SATA 3.0-havenojn, USB 2.0, GPIO, UART, SPI, I2C. La procesoro provizas aparatan subtenon por virtualigo, SIMD-instrukciojn kaj integran aparatan kriptan akcelilon, kiu subtenas GOST 28147-89. La blato estas evoluigita per MIPS32 P5600 Warrior-procesora kerna unuo licencita de Imagination Technologies.

Samtempe, Latin American Free Software Foundation formis
eblo tute libera kerno 5.8 - Linukso-libre 5.8-gnu, malplenigita de firmvaro kaj ŝoforelementoj enhavantaj ne-liberajn komponentojn aŭ kodsekciojn, kies amplekso estas limigita fare de la fabrikanto. La nova eldono malebligas ŝarĝon de blob en ŝoforoj por Atom ISP Video, MediaTek 7663 USB/7915 PCIe, Realtek 8723DE WiFi, Renesas PCI xHCI, HabanaLabs Gaudi, Plibonigita Nesinkrona Sample-Rate Converter, Maxim Integrated MAX98390 Speaker Amplifiler, Hejma Aŭdioprocesoro Connected38060 kaj I2C EEPROM Sklavo. Ĝisdatigita blob-purigadkodo en Adreno GPU, HabanaLabs Goya, x86-tuŝekrano, vt6656 kaj btbcm-ŝoforoj kaj subsistemoj.

fonto: opennet.ru

Aldoni komenton