Linukso-kerna eldono 6.1

Post du monatoj da evoluo, Linus Torvalds prezentis la liberigon de la Linukso-kerno 6.1. Inter la plej rimarkindaj ŝanĝoj: subteno por la disvolviĝo de ŝoforoj kaj moduloj en la Rust-lingvo, modernigo de la mekanismo por determini uzatajn memorpaĝojn, speciala memoradministranto por programoj BPF, sistemo por diagnozi memorproblemojn KMSAN, la KCFI (Kernelk Control). -Flow Integrity) protekta mekanismo, la enkonduko de la Maple-strukturarbo.

La nova versio inkluzivas 15115 korektojn de 2139 programistoj, la flikgrandeco estas 51 MB, kio estas proksimume 2 fojojn pli malgranda ol la grandeco de flikoj de kernoj 6.0 kaj 5.19. La ŝanĝoj influis 13165 dosierojn, 716247 linioj de kodo estis aldonitaj, kaj 304560 linioj estis forigitaj. Proksimume 45% de ĉiuj ŝanĝoj lanĉitaj en 6.1 rilatas al aparataj ŝoforoj, proksimume 14% de ŝanĝoj rilatas al ĝisdatigo de kodo specifa por hardvararkitekturoj, 14% rilatas al la retstako, 3% rilatas al dosiersistemoj kaj 3% estas rilataj al internaj kernaj subsistemoj.

Ŝlosilaj novigoj en kerno 6.1:

  • Memoraj kaj sistemaj servoj
    • Aldonita la kapablo uzi Rust kiel duan lingvon por disvolvi ŝoforojn kaj kernmodulojn. La ĉefa kialo por subteni Rust estas faciligi verki sekurajn kaj altkvalitajn aparatajn ŝoforojn reduktante la verŝajnecon fari erarojn kiam oni laboras kun memoro. Rust-subteno estas malŝaltita defaŭlte kaj ne rezultigas Rust esti inkluzivita kiel postulata kerna konstrudependeco. La kerno ĝis nun adoptis minimuman, nudigitan version de la flikoj, kiu estis reduktita de 40 al 13 mil linioj da kodo kaj disponigas nur la necesan minimumon, sufiĉan por konstrui simplan kernan modulon skribitan en la Rust-lingvo. En la estonteco, estas planite iom post iom pliigi la ekzistantan funkciecon, transdonante aliajn ŝanĝojn de la branĉo Rust-for-Linukso. Paralele, projektoj estas evoluigitaj por uzi la proponitan infrastrukturon por evoluigi ŝoforojn por NVMe-diskoj, la 9p-retoprotokolo kaj la Apple M1 GPU en la Rust-lingvo.
    • Por sistemoj bazitaj sur AArch64, RISC-V kaj LoongArch-arkitekturoj kun EFI, la kapablo rekte ŝarĝi kunpremitajn kernbildojn estis efektivigita. Aldonitaj pritraktiloj por ŝarĝi, funkcii kaj malŝarĝi kernbildojn, nomitajn rekte de EFI zboot. Pritraktiloj por instali kaj forigi protokolojn de la EFI-protokola datumbazo ankaŭ estis aldonitaj. Antaŭe, malpakado estis farita per aparta ekŝargilo, sed nun ĉi tio povas esti farita de prizorganto en la kerno mem - la kernbildo estas formita kiel EFI-aplikaĵo.
    • La komponado inkluzivas parton de la diakiloj kun la efektivigo de plurnivela memor-administra modelo, kiu ebligas al vi apartigi memorajn bankojn kun malsamaj rendimentaj trajtoj. Ekzemple, la plej uzataj paĝoj povas esti konservitaj en la plej rapida memoro, dum la plej malofte uzataj paĝoj povas esti konservitaj en relative malrapida memoro. Kerno 6.1 lanĉas mekanismon por determini kie tre uzitaj paĝoj situas en malrapida memoro tiel ili povas esti antaŭenigitaj al rapida memoro, kaj ankaŭ lanĉas ĝeneralan koncepton de memorniveloj kaj ilia relativa efikeco.
    • Ĝi inkludas la MGLRU (Multi-Generational LRU) mekanismon, kiu anstataŭigas la malnovan LRU (Malplej Lastatempe Uzita) efektivigon bazitan sur du atendovicoj kun plurstadia strukturo kiu pli bone determinas kiuj memorpaĝoj estas fakte en uzo kaj kiuj povas esti puŝita eksteren al. la interŝanĝa sekcio.
    • Aldonita subteno por la "acerarbo" datumstrukturo proponita de Oracle-inĝenieroj, kiu estas poziciigita kiel pli efika anstataŭaĵo por la "ruĝ-nigra arbo-" strukturo. Acerarbo estas variaĵo de B-arbo kiu subtenas intervalindeksadon kaj estas dizajnita por fari efikan uzon de la kaŝmemoro de modernaj procesoroj. Kelkaj memoradministradsubsistemoj jam estis transdonitaj al acerarbo, kiu havis pozitivan efikon al ilia efikeco. En la estonteco, acerarbo povas esti uzita por efektivigi intervalŝlosadon.
    • La kapablo krei "detruajn" BPF-programojn speciale dizajnitajn por iniciati kriz-halton per la crash_kexec () alvoko estis aldonita al la BPF-subsistemo. Tiaj BPF-programoj povas esti postulataj por sencimigaj celoj por iniciati la kreadon de kraŝa rubejo ĉe certa punkto en tempo. Por aliri detruajn operaciojn dum ŝarĝo de BPF-programo, vi devas specifi la flagon BPF_F_DESTRUCTIVE, aktivigi sysctl kernel.destructive_bpf_enabled kaj havi CAP_SYS_BOOT-rajtojn.
    • Por BPF-programoj, estas eble listigi cgroup-elementojn, same kiel listigi rimedojn (dosieroj, vma, procezoj, ktp.) de specifa fadeno aŭ tasko. Nova mapspeco estis efektivigita por krei uzantringajn bufrojn.
    • Aldonis specialan alvokon por memoratribuo en BPF-programoj (memorasignilo), kiu disponigas pli sekuran memorasignon en la BPF-kunteksto ol la norma kmalloc ().
    • La unua parto de la ŝanĝoj estis integrita, provizante la kapablon krei ŝoforojn por enigaparatoj kun interfaco HID (Human Interface Device), efektivigita en la formo de BPF-programoj.
    • La kerno tute forigis la kodon por subteni la plenumeblan dosierformaton a.out, kiu estis malrekomendita en eldono 5.1 kaj estis malŝaltita por ĉefaj arkitekturoj ekde versioj 5.18 kaj 5.19. La a.out formato estas delonge malrekomendita en Linuksaj sistemoj, kaj generacio de a.out dosieroj ne estas subtenata de modernaj iloj en defaŭltaj Linuksaj agordoj. La ŝargilo por a.out dosieroj povas esti efektivigita tute en uzantspaco.
    • Por sistemoj bazitaj sur la LoongArch-instrukcia aro-arkitekturo uzita en la Loongson 3 5000 procesoroj kaj efektiviganta la novan RISC ISA, simila al MIPS kaj RISC-V, subteno por spektaklomezurokazaĵoj (perf-okazaĵoj), kexec, kdump kaj BPF JIT-kompilo estas efektivigita. .
    • La io_uring nesinkrona I/O-interfaco ofertas novan reĝimon, IORING_SETUP_DEFER_TASKRUN, kiu permesas al ringo-bufr-rilata laboro provizore prokrasti ĝis aplikaĵpeto estas farita, kiu povas esti uzata por grupa laboro kaj eviti latenciajn problemojn pro antaŭzorgo. malĝusta tempo.
    • Procezoj en uzantspaco ricevas la kapablon iniciati konvertiĝon de gamo da normalaj memorpaĝoj en aron de grandaj memorpaĝoj (Travideblaj Grandegaj-Paĝoj).
    • Aldonita efektivigo de la /dev/userfaultfd-aparato, kiu permesas aliron al la funkcieco de la userfaultfd() sistemvoko uzante alirrajtojn en la FS. La userfaultfd-funkcio permesas krei prizorgilojn por aliri neasignitajn memorpaĝojn (paĝaj misfunkciadoj) en uzantspaco.
    • La postuloj por la versio de la ilo GNU Make estis pliigitaj - almenaŭ versio 3.82 nun estas bezonata por konstrui la kernon.
  • Diska Subsistemo, I/O kaj Dosiersistemoj
    • Signifaj agado-optimumigoj estis faritaj al la Btrfs-dosiersistemo; inter aliaj aĵoj, la agado de la FIEMAP ioctl-voko estis pliigita per grandordoj. Aldonita subteno por nesinkronaj bufraj skriboj por aplikoj uzantaj io_uring. Aldonita subteno por dosieroj protektitaj per fs-verity al la "sendo" operacio.
    • La dosiersistemo ext4 aldonis rendimentooptimumigojn rilate al ĵurnala prizorgado kaj nurlegebla operacio.
    • La dosiersistemo EROFS (Enhanced Read-Only File System), dizajnita por uzo sur sekcioj alireblaj en nurlegebla reĝimo, efektivigas la kapablon kunhavigi datumojn duobligitajn en malsamaj dosiersistemoj.
    • La sistemvoko statx() estis aldonita por montri informojn pri ĉu rekta I/O povas esti aplikita al dosiero.
    • Subteno por krei provizorajn dosierojn kun la flago O_TMPFILE estis aldonita al la subsistemo FUSE (Dosiersistemoj en Uzantspaco).
  • Virtualigo kaj Sekureco
    • La efektivigo de la protekta mekanismo de CFI (Control Flow Integrity) estis anstataŭigita, aldonante kontrolojn antaŭ ĉiu nerekta voko de funkcio por detekti iujn formojn de nedifinita konduto, kiu eble povus konduki al malobservo de la normala ekzekut-ordo (kontrolfluo) kiel rezulto de la uzo de ekspluatoj kiuj ŝanĝas montrilojn al funkcioj konservitaj en memoro. La norma efektivigo de CFI de la LLVM-projekto estis anstataŭigita per opcio ankaŭ bazita sur la uzo de Clang, sed speciale adaptita por protekti malaltnivelajn subsistemojn kaj operaciumajn kernojn. En LLVM, nova efektivigo estos ofertita en la Clang 16 eldono kaj estos ebligita per la opcio "-fsanitize=kcfi". La ŝlosila diferenco kun la nova efektivigo estas, ke ĝi ne estas ligita al ligtempaj optimumigoj (LTO) kaj ne rezultigas funkciomontrilojn anstataŭigitajn per ligiloj en la salttabelo.
    • Por LSM-moduloj (Linuksa Sekureca Modulo), estas eble krei prizorgilojn kiuj kaptas operaciojn por krei nomspacojn.
    • Iloj estas disponigitaj por kontroli PKCS#7 ciferecajn subskribojn en BPF-programoj.
    • La kapablo malfermi en ne-bloka reĝimo (O_NONBLOCK), kiu estis preterintence forigita en kerno 5.6, estis resendita al /dev/random.
    • Ĉe sistemoj kun x86-arkitekturo, averto estis aldonita en kazo de mapado de memorpaĝoj per kernaj subsistemoj kiuj samtempe permesas ekzekuton kaj skribadon. Estontece oni pripensas la eblecon tute malpermesi tian memormapadon.
    • Aldonita KMSAN (Kernel Memory Sanitizer) senarariga mekanismo por detekti neinicialigitan memoruzon en la kerno, same kiel neinicialigitajn memorlikojn inter uzantspaco kaj aparatoj.
    • Plibonigoj estis faritaj al la kripto-sekura CRNG pseŭdo-hazarda nombro-generatoro uzata en la get-hazarda alvoko. La ŝanĝoj estis preparitaj de Jason A. Donenfeld, aŭtoro de VPN WireGuard, kaj celas plibonigi la sekurecon de pseŭdo-hazarda entjera eltiro.
  • Reta subsistemo
    • La TCP-stako disponigas la kapablon (malŝaltita defaŭlte) uzi socket-hash-tablojn aparte por ĉiu nomspaco, kiu plibonigas efikecon en sistemoj kun granda nombro da nomspacoj.
    • Forigita kodo por subteni la heredan protokolon DECnet. Uzantspacaj API-stumoj estas lasitaj modloko por permesi al aplikoj kiuj uzas DECnet esti kompilitaj, sed ĉi tiuj aplikoj ne povos konektiĝi al la reto.
    • La retlink protokolo estas dokumentita.
  • Ekipaĵo
    • La amdgpu-ŝoforo aldonis subtenon por DSC (Display Stream Compression) plusendado por senperda datumkunpremo dum interŝanĝado de informoj kun ekranoj kiuj subtenas tre altajn rezoluciojn. Laboro daŭre provizas subtenon por la AMD RDNA3 (RX 7000) kaj CDNA (Instinkto) platformoj. Aldonita subteno por DCN 3.2, SMU 13.x, NBIO 7.7, GC 11.x, PSP 13.x, SDMA 6.x kaj GMC 11.x IP-komponentoj. La amdkfd-ŝoforo (por diskretaj AMD-GPUoj kiel Polaris) provizas subtenon por GFX 11.0.3.
    • La i915 (Intel) ŝoforo inkluzivas subtenon por Meteor Lake GPU. Meteor Lake kaj pli novaj GPU-oj subtenas DP 2.0 (DisplayPort) interfacon. Aldonitaj identigiloj por vidkartoj bazitaj sur la Alder Lake S mikroarkitekturo.
    • Aldonita subteno por audiosubsistemoj efektivigitaj en Apple Silicon, Intel SkyLake kaj Intel KabyLake procesoroj. La sonŝoforo CS35L41 HDA subtenas dormreĝimon. Aldonita ASoC (ALSA System on Chip) subteno por integraj aŭdaj blatoj Apple Silicon, AMD Rembrant DSPs, AMD Pink Sardine ACP 6.2, Everest ES8326, Intel Sky Lake kaj Kaby Lake, Mediatek MT8186, NXP i.MX8ULP DSPs, Qualcomm SC8280XP, SM8250 SM8450 kaj Texas Instruments SRC4392
    • Aldonita subteno por LCD-paneloj Samsung LTL101AL01, B120XAN01.0, R140NWF5 RH, Densitron DMT028VGHMCMI-1A TFT, AUO B133UAN02.1, IVO M133NW4J-R3, Innolux N120ACA-WH1, B116NW01.6J-R116, Innolux N21ACA-WH116, BO2 N116, INX N1BCA- EA0800 , INX N9BCN-EAXNUMX, Multi-Inno Technology MIXNUMXFT-XNUMX.
    • Aldonita subteno por AHCI SATA-regiloj uzitaj en la Baikal-T1 SoC.
    • Aldonita subteno por Bluetooth-blatoj MediaTek MT7921, Intel Magnetor (CNVi, Integra Konektebleco), Realtek RTL8852C, RTW8852AE kaj RTL8761BUV (Edimax BT-8500).
    • La ath11k-ŝoforo por Qualcomm sendrataj moduloj aldonis subtenon por spektra skanado en la 160 MHz-gamo, efektivigis multi-fadenan NAPI, kaj plibonigis subtenon por Qualcomm WCN6750 Wi-Fi-blatoj.
    • Aldonitaj ŝoforoj por PinePhone-klavaro, InterTouch-tuŝplatoj (ThinkPad P1 G3), X-Box Adaptive Controller, PhoenixRC Flight Controller, VRC-2 Car Controller, DualSense Edge Controller, IBM Operation Panel, XBOX One Elite-regiloj, tablojdoj XP-PEN Deco Pro S kaj Intuos Pro Small (PTH-460).
    • Aldonita ŝoforo por kriptografikaj akceliloj Aspeed HACE (Hash kaj Crypto Engine).
    • Aldonita subteno por integraj regiloj Thunderbolt/USB4 Intel Meteor Lake.
    • Aldonita subteno por Sony Xperia 1 IV, Samsung Galaxy E5, E7 kaj Grand Max, Pine64 Pinephone Pro saĝtelefonoj.
    • Aldonita subteno por ARM SoC kaj tabuloj: AMD DaytonaX, Mediatek MT8186, Rockchips RK3399 kaj RK3566, TI AM62A, NXP i.MX8DXL, Renesas R-Car H3Ne-1.7G, Qualcomm IPQ8064-v2.0, IPQ8062, IPQ8065, IPQ8 BL i.MX8195MM OSM-S, MT4 (Acer Tomato), Radxa ROCK 4C+, NanoPi R1S Enterprise Edition, JetHome JetHub DXNUMXp. Ĝisdatigitaj ŝoforoj por SoC Samsung, Mediatek, Renesas, Tegra, Qualcomm, Broadcom kaj NXP.

Samtempe, Latin American Free Software Foundation formis version de la tute libera kerno 6.1 - Linukso-libre 6.1-gnu, malplenigita de elementoj de firmware kaj ŝoforoj enhavantaj neliberajn komponantojn aŭ sekciojn de kodo, kies amplekso estas limigita de la fabrikanto. La nova eldono purigas la novan rtw8852b-ŝoforon kaj DTS-dosierojn por diversaj Qualcomm kaj MediaTek SoCs kun procesoroj bazitaj sur la arkitekturo AArch64. Ĝisdatigita blob-purigadkodo en ŝoforoj kaj subsistemoj amdgpu, i915, brcmfmac, r8188eu, rtw8852c, Intel ACPI. Purigado de malnoviĝintaj ŝoforoj tm6000 televidkartoj, cpia2 v4l, sp8870, av7110 estis korektita.

fonto: opennet.ru

Aldoni komenton