Linukso-kerna eldono 6.7

Post du monatoj da evoluo, Linus Torvalds prezentis la liberigon de la Linukso-kerno 6.7. Inter la plej rimarkindaj ŝanĝoj: integriĝo de la dosiersistemo Bcachefs, ĉesigo de subteno por la Itanium-arkitekturo, la kapablo de Nouvea labori kun GSP-R-firmvaro, subteno por TLS-ĉifrado en NVMe-TCP, la kapablo uzi esceptojn en BPF, subteno por futex en io_uring, optimumigo de fq (Fair Queuing) planisto-efikeco ), subteno por la etendaĵo TCP-AO (TCP Authentication Option) kaj la kapablo limigi retajn konektojn en la sekureca mekanismo Landlock, aldonis alirkontrolon al uzantnomspaco kaj io_uring per AppArmor.

La nova versio inkluzivas 18405 korektojn de 2066 programistoj, la flikgrandeco estas 72 MB (la ŝanĝoj influis 13467 dosierojn, 906147 linioj de kodo estis aldonitaj, 341048 linioj estis forigitaj). La lasta eldono havis 15291 korektojn de 2058 programistoj, la flikgrandeco estis 39 MB. Proksimume 45% de ĉiuj ŝanĝoj lanĉitaj en 6.7 rilatas al aparataj ŝoforoj, proksimume 14% de ŝanĝoj rilatas al ĝisdatigo de kodo specifa por hardvararkitekturoj, 13% rilatas al la retstako, 5% rilatas al dosiersistemoj kaj 3% estas rilataj al internaj kernaj subsistemoj.

Ŝlosilaj novigoj en kerno 6.7:

  • Diska Subsistemo, I/O kaj Dosiersistemoj
    • La kerno adoptas la kodon de dosiersistemo Bcachefs, kiu provas atingi la rendimenton, fidindecon kaj skaleblon de XFS, kombinita kun elementoj de la altnivela funkcieco trovita en Btrfs kaj ZFS. Ekzemple, Bcachefs subtenas funkciojn kiel inkluzivi multoblajn aparatojn en vando, plurtavolajn stirajn aranĝojn (la malsupra tavolo kun ofte uzataj datenoj bazitaj sur rapidaj SSDoj, kaj la supra tavolo kun malpli uzataj datumoj de durdiskoj), reproduktado (RAID). 1/10), kaŝmemoro, travidebla datumkunpremado (LZ4, gzip kaj ZSTD-reĝimoj), ŝtattranĉaĵoj (momentfotoj), integreckonfirmo uzante ĉeksumojn, la kapablo stoki Reed-Solomon-erarĝustigkodojn (RAID 5/6), stokante informojn en ĉifrita formo (ChaCha20 kaj Poly1305 estas uzataj). Koncerne rendimenton, Bcachefs estas antaŭ Btrfs kaj aliaj dosiersistemoj bazitaj sur la mekanismo Copy-on-Write, kaj montras operacian rapidecon proksime al Ext4 kaj XFS.
    • La dosiersistemo Btrfs enkondukas simpligitan kvotan reĝimon, kiu ebligas al vi atingi pli altan rendimenton spurante ampleksojn nur en la subsekcio en kiu ili estas kreitaj, kio signife simpligas kalkulojn kaj plibonigas rendimenton, sed ne permesas vin konsideri ampleksojn dividitajn en pluraj. subsekcioj.
    • Btrfs aldonis novan "strian arbon" datumstrukturon, taŭgan por logika amplekso-mapado en situacioj kie fizikaj mapadoj ne kongruas trans aparatoj. La strukturo estas nuntempe uzita en efektivigoj de RAID0 kaj RAID1 por kvalifikitaj blokaparatoj. En la estonteco, ili planas uzi ĉi tiun strukturon en pli altnivelaj RAIDoj, kiuj solvos kelkajn problemojn ekzistantajn en la nuna efektivigo.
    • La Ceph-dosiersistemo efektivigas subtenon por mapado de uzantidentigiloj de surĉevalaj dosiersistemoj, uzitaj por egali la dosierojn de specifa uzanto sur surmuntita eksterlanda sekcio kun alia uzanto sur la nuna sistemo.
    • Aldonis la kapablon specifi uid kaj gid sur monto al efivarfs por permesi al ne-radikaj procezoj ŝanĝi UEFI-variablojn.
    • Aldonitaj ioctl-vokoj al exFAT por legi kaj ŝanĝi FS-atributojn. Aldonita uzado de nulgrandaj dosierujoj.
    • F2FS efektivigas la kapablon uzi 16K blokojn.
    • La aŭtofs aŭtomunta mekanismo estis ŝanĝita por uzi la novan subdiskon-muntan API.
    • OverlayFS ofertas "lowerdir+" kaj "datadir+" muntajn opciojn. Aldonita subteno por nestita muntado de OverlayFS kun xattrs.
    • XFS optimumigis la CPU-ŝarĝon en la realtempa bloka asignokodo. La kapablo samtempe plenumi legi kaj FICLONE operaciojn estas provizita.
    • La EXT2-kodo estis konvertita por uzi paĝajn foliojn.
  • Memoraj kaj sistemaj servoj
    • Subteno por la arkitekturo ia64 uzata en procesoroj Intel Itanium, kiuj estis tute nuligitaj en 2021, estis nuligita. Itanium-procesoroj estis lanĉitaj fare de Intel en 2001, sed la ia64-arkitekturo ne konkuris kun AMD64, plejparte pro la pli alta rendimento de AMD64 kaj la pli glata transiro de 32-bita x86 procesoroj. Kiel rezulto, la interesoj de Intel ŝanĝiĝis en favoro de x86-64-procesoroj, kaj la multo de Itanium restis HP Integrity-serviloj, por kiuj mendoj estis ĉesigitaj antaŭ tri jaroj. Kodo por ia64-subteno estis forigita de la kerno ĉefe pro la longdaŭra manko de subteno por ĉi tiu platformo, dum Linus Torvalds esprimis sian volon resendi ia64-subtenon al la kerno, sed nur se ekzistas prizorganto, kiu povas pruvi altkvalitan. subteno por ĉi tiu platformo ekster la ĉefa kerno dum almenaŭ jaro.
    • Aldonis la "ia32_emulation" kernlinian komandparametron, kiu ebligas al vi ebligi aŭ malŝalti subtenon por 32-bita reĝima emulado en kernoj konstruitaj por la x86-64-arkitekturo ĉe la startstadio. En la praktika flanko, la nova opcio permesas konstrui la kernon kun subteno por kongruo kun 32-bitaj aplikoj, sed malebligu ĉi tiun reĝimon defaŭlte por redukti la atakvektoron sur la kerno, ĉar la kongrua API estas malpli provita ol la ĉefa kerno. interfacoj.
    • Daŭra migrado de ŝanĝoj de la branĉo Rust-por-Linukso rilataj al la uzo de la Rust-lingvo kiel dua lingvo por evoluigado de ŝoforoj kaj kernaj moduloj (Rusto-subteno ne estas aktiva defaŭlte, kaj ne kondukas al la inkludo de Rust inter la postulataj asembleaj dependecoj por la kerno). La nova versio faras la transiron al uzado de la eldono de Rust 1.73 kaj ofertas aron da ligoj por labori kun laborvostoj.
    • Eblas uzi la mekanismon binfmt_misc por aldoni subtenon por novaj ruleblaj dosierformatoj (ekzemple, por ruli kompilitajn Java aŭ Python-aplikaĵojn) ene de apartaj senprivilegiaj nomspacoj.
    • La cgroup-regilo cpuset, kiu ebligas al vi kontroli la uzon de CPU-kernoj dum plenumado de tasko, disponigas dividon en lokan kaj malproksiman dispartigo, kiuj malsamas ĉu la gepatra cgroup estas la ĝusta radiksekcio aŭ ne. Novaj agordoj "cpuset.cpus.exclusive" kaj "cpuset.cpus.excluisve.effective" ankaŭ estis aldonitaj al cpuset por ekskluziva CPU-ligado.
    • La BPF-subsistemo efektivigas subtenon por esceptoj, kiuj estas prilaboritaj kiel krizelirejo de BPF-programo kun la kapablo sekure malvolvi stakkadrojn. Krome, BPF-programoj permesas la uzon de kptr-montriloj lige kun la CPU.
    • Subteno por operacioj kun futex estis aldonita al la io_uring-subsistemo, kaj novaj operacioj estis efektivigitaj: IORING_OP_WAITID (nesinkrona versio de waitid), SOCKET_URING_OP_GETSOCKOPT (opcio getsockoptand), SOCKET_URING_OP_SETSOCKOPT (opcio setsockopt) kaj IORING_MULTISOP_ kaj ne ĉesas la operacion (domulti HOTP) estas datumoj aŭ ne estas plena bufro).
    • Aldonita efektivigo de malpezaj unu-koneksaj FIFO-vostoj, kiuj postulas spinlock nur por dequeuing en procezkunteksto kaj malhavis spinlock por atomaj aldonoj al la atendovico en iu kunteksto.
    • Aldonita ringa bufro "objpool" kun skalebla efektivigo de alt-efikeca vosto por asigni kaj resendi objektojn.
    • La komenca parto de la ŝanĝoj estis aldonita por efektivigi la novan futex2 API, kiu havas pli bonan efikecon sur NUMA-sistemoj, subtenas grandecojn krom 32 bitoj, kaj povas esti uzata anstataŭ la multipleksita futex() sistemvoko.
    • Por ARM32 kaj S390x-arkitekturoj, subteno por la nuna aro (cpuv4) de BPF-instrukcioj estis aldonita.
    • Por la RISC-V-arkitekturo, estas eble uzi la Shadow-Call Stack-kontrolreĝimon haveblan en Clang 17, dizajnita por protekti kontraŭ anstataŭigado de la revenadreso de funkcio en la okazaĵo de bufrosuperfluo sur la stako. 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.
    • Nova inteligenta memorpaĝa skananta reĝimo estis aldonita al la mekanismo por kunfandi identajn memorpaĝojn (KSM: Kernel Samepage Merging), kiu spuras malsukcese skanitajn paĝojn kaj reduktas la intensecon de ilia re-skanado. Por ebligi la novan reĝimon, la agordo /sys/kernel/mm/ksm/smart_scan estis aldonita.
    • Aldonis novan ioctl-ordonon PAGEMAP_SCAN, kiu, kiam oni uzas kun userfaultfd(), ebligas al vi determini la faktojn de skribado al specifa memorintervalo. La nova funkcio, ekzemple, povas esti uzata en la sistemo por konservi kaj restarigi la staton de CRIU-procezoj aŭ en ludaj kontraŭ-trompaj sistemoj.
    • En la kunigsistemo, se la Clang-kompililo estas havebla, la aro de ekzemploj de uzado de la perf-subsistemo, skribita kiel BPF-programoj, estas ebligita defaŭlte.
    • La malnova videobuf-tavolo, kiu estis uzata por administri framebuffers en la amaskomunikilara subsistemo kaj estis anstataŭigita per nova efektivigo de videobuf10 antaŭ pli ol 2 jaroj, estis forigita.
  • Virtualigo kaj Sekureco
    • La kapablo ĉifri datumojn en blokoj pli malgrandaj ol la blokgrandeco en la dosiersistemo estis aldonita al la fscrypt subsistemo. Tio povas esti postulata por ebligi aparatajn ĉifradmekanismojn kiuj nur subtenas malgrandajn blokojn (ekzemple, UFS-regiloj kiuj nur subtenas 4096 blokgrandecon povas esti uzitaj kun dosiersistemo kun 16K blokgrandeco).
    • La "iommufd" subsistemo, kiu ebligas al vi administri IOMMU (I/O Memory-Management Unit) memorpaĝajn tabelojn per dosierpriskribiloj de uzantspaco, aldonis spuradon de datumoj kiuj ankoraŭ ne estis forigitaj el la kaŝmemoro (malpura) por DMA. operacioj, kiu estas necesa por determini memoron kun nefluitaj datumoj dum proceza migrado.
    • Subteno por difini regulojn de alirkontrolo por TCP-ingoj estis aldonita al la mekanismo Landlock, kiu permesas vin limigi la interagadon de grupo de procezoj kun la ekstera medio. Ekzemple, vi povas krei regulon, kiu nur permesas aliron al reta haveno 443 por establi HTTPS-konektojn.
    • La subsistemo AppArmor aldonis la kapablon kontroli aliron al la io_uring-mekanismo kaj krei uzantnomspacojn, kio ebligas al vi selekteme permesi aliron al ĉi tiuj kapabloj nur al certaj procezoj.
    • Aldonita virtuala maŝinatestado API por kontroli la integrecon de la virtuala maŝina startprocezo.
    • LoongArch-sistemoj subtenas virtualigon uzante la KVM-hipervizieron.
    • Kiam oni uzas la KVM-hipervizion sur RISC-V-sistemoj, aperis subteno por la etendaĵo Smstateen, kiu malhelpas la virtualan maŝinon aliri CPU-registrojn, kiuj ne estas eksplicite subtenataj de la hiperviziero. Ankaŭ aldonis subtenon por la uzo de la etendaĵo Zicond en gastsistemoj, kiu permesas la uzon de kelkaj kondiĉaj entjeroperacioj.
    • En x86-bazitaj gastsistemoj kurantaj sub KVM, ĝis 4096 virtualaj CPUoj estas permesitaj.
  • Reta subsistemo
    • La ŝoforo NVMe-TCP (NVMe super TCP), kiu ebligas al vi aliri NVMe-diskojn tra la reto (NVM Express super Fabrics) uzante la TCP-protokolon, aldonis subtenon por ĉifrado de la datumtransdona kanalo uzante TLS (uzante KTLS kaj fonan procezon). en uzantspaco tlshd por konektointertraktado).
    • La agado de la pakplanilo fq (Fair Queuing) estis optimumigita, kio ebligis pliigi trairon je 5% sub pezaj ŝarĝoj en la testo tcp_rr (TCP Peto/Respondo) kaj je 13% kun senlima fluo de UDP-pakoj.
    • TCP aldonas laŭvolan mikrosekundan precizecan tempostampon (TCP TS) kapablon (RFC 7323), kiu permesas pli precizan latentectakson kaj pli altnivelajn obstrukcigajn modulojn. Por ebligi ĝin, vi povas uzi la komandon "ip route add 10/8 ... features tcp_usec_ts".
    • La TCP-stako aldonis subtenon por la etendaĵo TCP-AO (TCP Authentication Option, RFC 5925), kiu ebligas kontroli TCP-titolojn uzante MAC-kodojn (Message Authentication Code), uzante pli modernajn algoritmojn HMAC-SHA1 kaj CMAC-AES- 128 anstataŭe antaŭe disponebla TCP-MD5-opcio bazita sur la hereda MD5-algoritmo.
    • Nova speco de virtualaj retaj aparatoj "netkit" estis aldonita, la datumtransiga logiko en kiu estas agordita per BPF-programo.
    • KSMBD, kern-nivela efektivigo de SMB-servilo, aldonis subtenon por solvado de dosiernomoj enhavantaj surogatajn parojn de kunmetitaj signoj.
    • NFS plibonigis la efektivigon de fadenoj kun RPC-servoj. Aldonita subteno por skriba delegacio (por NFSv4.1+). NFSD aldonis subtenon por la rpc_status retlink-traktilo. Plibonigita subteno por NFSv4.x klientoj dum reeksportado al knfsd.
  • Ekipaĵo
    • Komenca subteno por GSP-RM-firmvaro estis aldonita al la Nouveau-kernmodulo, kiu estas uzata en la NVIDIA RTX 20+ GPU por movi komencajn kaj GPU-kontrolajn operaciojn al la flanko de aparta GSP-mikroregilo (GPU System Processor). GSP-RM-subteno permesas al la Nouveau-ŝoforo labori per firmvarvokoj, prefere ol rekte programi aparatarinteragojn, farante multe pli facila aldoni subtenon por novaj NVIDIA GPUoj uzante antaŭkonstruitajn vokojn por inicialigo kaj potencadministrado.
    • La AMDGPU-ŝoforo subtenas GC 11.5, NBIO 7.11, SMU 14, SMU 13.0 OD, DCN 3.5, VPE 6.1 kaj DML2. Plibonigita subteno por senjunta ŝarĝo (neniu flagrado dum ŝanĝado de videoreĝimo).
    • La i915-ŝoforo aldonas subtenon por Intel Meteor Lake-fritoj kaj aldonas komencan efektivigon de Intel LunarLake (Xe 2).
    • Aldonita subteno por nesimetriaj dissendaj kanaloj aldonitaj al la specifo USB4 v2 (120/40G).
    • Aldonita subteno por ARM SoC: Qualcomm Snapdragon 720G (uzita en Xiaomi-poŝtelefonoj), AMD Pensando Elba, Renesas, R8A779F4 (R-Car S4-8), USRobotics USR8200 (uzita en enkursigiloj kaj NAS).
    • Aldonita subteno por la smartphone Fairphone 5 kaj ARM-tabuloj Orange Pi 5, QuartzPro64, Turing RK1, Variscite MX6, BigTreeTech CB1, Freescale LX2162, Google Spherion, Google Hayato, Genio 1200 EVK, RK3566 Powkiddy RGB30.
    • Aldonita subteno por RISC-V-tabuloj Milk-V Pioneer kaj Milk-V Duo.
    • Aldonita subteno por soninterfacoj de HUAWEI-tekkomputiloj provizitaj per AMD-CPUoj. Aldonita subteno por pliaj laŭtparoliloj instalitaj sur tekkomputiloj Dell Oasis 13/14/16. Aldonita subteno por enkonstruitaj laŭtparoliloj ASUS K6500ZC. Aldonita subteno por la muta indikilo sur tekkomputiloj HP 255 G8 kaj G10. Aldonita subteno por acp6.3 sonŝoforoj. Aldonita subteno por Focusrite Clarett+ 2Pre kaj 4Pre profesiaj registradinterfacoj.

Samtempe, Latin American Free Software Foundation formis version de la tute libera kerno 6.7 - Linux-libre 6.7-gnu, malplenigita de elementoj de firmware kaj ŝoforoj enhavantaj neliberajn komponantojn aŭ kodsekciojn, kies amplekso estas limigita. de la fabrikanto. En eldono 6.7, la blob-purigadkodo estis ĝisdatigita en diversaj ŝoforoj kaj subsistemoj, ekzemple en la amdgpu, nouveau, adreno, mwifiex, mt7988, ath11k, avs kaj btqca-ŝoforoj. La kodo por purigado de la localtalk kaj rtl8192u-ŝoforoj estis forigita pro ilia ekskludo de la kerno. Forigitaj nenecesaj komponantoj por purigado de la ŝoforoj xhci-pci, rtl8xxxu kaj rtw8822b, antaŭe aldonitaj erare. Purigis blobnomojn en dts-dosieroj por la Aarch64-arkitekturo. Forigitaj makuloj en la novaj ŝoforoj mt7925, tps6598x, aw87390 kaj aw88399.

fonto: opennet.ru

Aldoni komenton