Linux 6.1 միջուկի թողարկում

Երկու ամիս մշակումից հետո Լինուս Տորվալդսը ներկայացրեց Linux միջուկի 6.1 թողարկումը: Առավել ուշագրավ փոփոխություններից են՝ Rust լեզվով դրայվերների և մոդուլների մշակման աջակցություն, օգտագործված հիշողության էջերի որոշման մեխանիզմի արդիականացում, BPF ծրագրերի հատուկ հիշողության կառավարիչ, հիշողության խնդիրների ախտորոշման համակարգ KMSAN, KCFI (Kernelk Control): -Flow Integrity) պաշտպանության մեխանիզմը, Maple կառուցվածքի ծառի ներդրումը:

Նոր տարբերակը ներառում է 15115 ուղղում 2139 մշակողների կողմից, patch-ի չափը 51 ՄԲ է, ինչը մոտավորապես 2 անգամ փոքր է 6.0 և 5.19 միջուկների պատչերի չափից: Փոփոխությունները ազդել են 13165 ֆայլերի վրա, ավելացվել է 716247 կոդ, իսկ 304560 տող ջնջվել է։ 45-ում ներդրված բոլոր փոփոխությունների մոտ 6.1%-ը կապված է սարքի դրայվերների հետ, փոփոխությունների մոտավորապես 14%-ը կապված է ապարատային ճարտարապետությանը հատուկ կոդի թարմացման հետ, 14%-ը՝ ցանցային ստեկին, 3%-ը՝ ֆայլային համակարգերին և 3%-ը։ կապված են միջուկի ներքին ենթահամակարգերի հետ:

Հիմնական նորարարությունները միջուկում 6.1.

  • Հիշողության և համակարգի ծառայություններ
    • Ավելացվեց Rust-ը որպես երկրորդ լեզու դրայվերների և միջուկի մոդուլների մշակման համար օգտագործելու հնարավորություն: Rust-ին աջակցելու հիմնական պատճառն այն է, որ հեշտացվի անվտանգ և բարձրորակ սարքի դրայվերներ գրելը՝ նվազեցնելով հիշողության հետ աշխատելիս սխալներ թույլ տալու հավանականությունը: Rust-ի աջակցությունը լռելյայն անջատված է և չի հանգեցնում նրան, որ Rust-ը ներառվի որպես միջուկի կառուցման պահանջվող կախվածություն: Միջուկը մինչ այժմ ընդունել է կարկատների մինիմալ, հանված տարբերակը, որը կրճատվել է 40-ից մինչև 13 հազար կոդ և ապահովում է միայն անհրաժեշտ նվազագույնը, որը բավարար է Rust լեզվով գրված միջուկի պարզ մոդուլ ստեղծելու համար: Հետագայում նախատեսվում է աստիճանաբար ավելացնել առկա ֆունկցիոնալությունը՝ փոխանցելով այլ փոփոխություններ Rust-for-Linux մասնաճյուղից։ Զուգահեռաբար մշակվում են նախագծեր՝ առաջարկվող ենթակառուցվածքն օգտագործելու համար՝ մշակելու դրայվերներ NVMe կրիչներ, 9p ցանցային արձանագրություն և Apple M1 GPU՝ Rust լեզվով:
    • EFI-ով AArch64, RISC-V և LoongArch ճարտարապետությունների վրա հիմնված համակարգերի համար ներդրվել է սեղմված միջուկի պատկերները ուղղակիորեն բեռնելու հնարավորությունը: Ավելացվել են միջուկի պատկերների բեռնման, գործարկման և բեռնաթափման կարգավորիչներ, որոնք անմիջապես կանչվել են EFI zboot-ից: Ավելացվել են նաև EFI արձանագրությունների տվյալների բազայից արձանագրությունների տեղադրման և ջնջման կարգավորիչներ: Նախկինում ապափաթեթավորումն իրականացվում էր առանձին bootloader-ով, սակայն այժմ դա կարող է անել հենց միջուկում գտնվող կարգավորիչը. միջուկի պատկերը ձևավորվում է որպես EFI հավելված:
    • Կազմը ներառում է պատչերի մի մասը՝ հիշողության կառավարման բազմամակարդակ մոդելի ներդրմամբ, որը թույլ է տալիս առանձնացնել հիշողության բանկերը տարբեր կատարողական բնութագրերով: Օրինակ, ամենաշատ օգտագործվող էջերը կարող են պահվել ամենաարագ հիշողության մեջ, մինչդեռ առավել հազվադեպ օգտագործվող էջերը կարող են պահվել համեմատաբար դանդաղ հիշողության մեջ: Kernel 6.1-ը ներկայացնում է մեխանիզմ՝ որոշելու, թե որտեղ են գտնվում շատ օգտագործվող էջերը դանդաղ հիշողության մեջ, որպեսզի դրանք կարողանան արագ հիշողության վերածվել, ինչպես նաև ներկայացնում է հիշողության մակարդակների և դրանց հարաբերական կատարողականի ընդհանուր հայեցակարգը:
    • Այն ներառում է MGLRU (Multi-Generational LRU) մեխանիզմը, որը փոխարինում է հին LRU (Անվազն վերջերս օգտագործված) ներդրումը, որը հիմնված է երկու հերթերի վրա՝ բազմաստիճան կառուցվածքով, որն ավելի լավ է որոշում, թե հիշողության որ էջերն են իրականում օգտագործվում և որոնք կարող են դուրս մղվել դեպի դուրս: փոխանակման միջնորմը:
    • Ավելացվեց Oracle-ի ինժեներների կողմից առաջարկված «maple tree» տվյալների կառուցվածքի աջակցությունը, որը դիրքավորվում է որպես «կարմիր-սև ծառ» կառուցվածքի ավելի արդյունավետ փոխարինում: Maple tree-ը B-tree-ի տարբերակ է, որն աջակցում է տիրույթի ինդեքսավորմանը և նախատեսված է ժամանակակից պրոցեսորների քեշը արդյունավետ օգտագործելու համար: Հիշողության կառավարման որոշ ենթահամակարգեր արդեն փոխանցվել են թխկի ծառին, ինչը դրականորեն է ազդել դրանց կատարողականի վրա։ Ապագայում թխկի ծառը կարող է օգտագործվել միջակայքի կողպումն իրականացնելու համար:
    • BPF ենթահամակարգին ավելացվել է «կործանարար» BPF ծրագրեր ստեղծելու հնարավորությունը, որոնք հատուկ նախագծված են crash_kexec() զանգի միջոցով արտակարգ անջատում սկսելու համար: Նման BPF ծրագրերը կարող են պահանջվել վրիպազերծման նպատակներով՝ որոշակի ժամանակում վթարի վայրի ստեղծումը սկսելու համար: BPF ծրագիրը բեռնելիս կործանարար գործողություններին մուտք գործելու համար դուք պետք է նշեք BPF_F_DESTRUCTIVE դրոշը, ակտիվացնեք sysctl kernel.destructive_bpf_enabled-ը և ունենաք CAP_SYS_BOOT իրավունքներ:
    • BPF ծրագրերի համար հնարավոր է թվարկել cgroup տարրերը, ինչպես նաև թվարկել որոշակի թեմայի կամ առաջադրանքի ռեսուրսները (ֆայլեր, vma, գործընթացներ և այլն): Գործարկվել է նոր քարտեզի տեսակ՝ օգտվողների օղակների բուֆերներ ստեղծելու համար:
    • Ավելացվեց BPF ծրագրերում հիշողության տեղաբաշխման հատուկ զանգ (հիշողության հատկացուցիչ), որն ապահովում է ավելի անվտանգ հիշողություն BPF համատեքստում, քան ստանդարտ kmalloc():
    • Փոփոխությունների առաջին մասը ինտեգրվել է՝ ապահովելով HID (Human Interface Device) ինտերֆեյսով մուտքային սարքերի համար դրայվերներ ստեղծելու հնարավորություն՝ իրականացված BPF ծրագրերի տեսքով։
    • Միջուկն ամբողջությամբ հեռացրել է կոդը՝ a.out գործարկվող ֆայլի ձևաչափին աջակցելու համար, որը հնացած էր 5.1 թողարկումում և անջատված էր հիմնական ճարտարապետությունների համար՝ սկսած 5.18 և 5.19 տարբերակներից: a.out ձևաչափը վաղուց հնացած է Linux համակարգերում, և a.out ֆայլերի ստեղծումը չի ապահովվում ժամանակակից գործիքներով Linux-ի լռելյայն կոնֆիգուրացիաներում: A.out ֆայլերի բեռնիչը կարող է ամբողջությամբ ներդրվել օգտագործողի տարածքում:
    • LoongArch հրահանգների հավաքածուի ճարտարապետության վրա հիմնված համակարգերի համար, որոնք օգտագործվում են Loongson 3 5000 պրոցեսորներում և իրականացնում են նոր RISC ISA, որոնք նման են MIPS-ին և RISC-V-ին, ներդրված է արդյունավետության չափման իրադարձությունների (perf events), kexec, kdump և BPF JIT կոմպիլյացիան: .
    • io_uring asynchronous I/O ինտերֆեյսը առաջարկում է նոր ռեժիմ՝ IORING_SETUP_DEFER_TASKRUN, որը թույլ է տալիս ժամանակավորապես հետաձգել ռինգի բուֆերի հետ կապված աշխատանքը մինչև հավելվածի հարցումը կատարելը, որը կարող է օգտագործվել խմբաքանակի աշխատանքի և կանխարգելման պատճառով հետաձգման հետ կապված խնդիրներից խուսափելու համար: սխալ ժամանակ.
    • Օգտագործողի տարածության գործընթացներին հնարավորություն է տրվում սկսել մի շարք սովորական հիշողության էջերի փոխակերպումը մեծ հիշողության էջերի մի շարքի (Transparent Huge-Pages):
    • Ավելացվեց /dev/userfaultfd սարքի ներդրումը, որը թույլ է տալիս մուտք գործել userfaultfd() համակարգի զանգի գործառույթ՝ օգտագործելով մուտքի իրավունքները FS-ում: Userfaultfd ֆունկցիոնալությունը թույլ է տալիս ստեղծել մշակիչներ՝ օգտագործողի տարածքում չբաշխված հիշողության էջեր (էջի սխալներ) մուտք գործելու համար:
    • GNU Make կոմունալ ծրագրի տարբերակի պահանջներն ավելացել են. միջուկը կառուցելու համար այժմ պահանջվում է առնվազն 3.82 տարբերակը:
  • Սկավառակի ենթահամակարգ, I/O և ֆայլային համակարգեր
    • Btrfs ֆայլային համակարգի կատարման զգալի օպտիմալացումներ են կատարվել, ի թիվս այլ բաների, FIEMAP ioctl զանգի կատարումը մեծացել է մեծության պատվերներով: Ավելացվել է io_uring օգտագործող հավելվածների համար ասինխրոն բուֆերային գրելու աջակցություն: «Ուղարկել» գործողությանն ավելացվել է fs-verity-ով պաշտպանված ֆայլերի աջակցություն:
    • ext4 ֆայլային համակարգը ավելացրել է կատարողականի օպտիմալացում՝ կապված ամսագրի պահպանման և միայն կարդալու շահագործման հետ:
    • EROFS (Enhanced Read-Only File System) ֆայլային համակարգը, որը նախատեսված է միայն կարդալու ռեժիմով հասանելի բաժանմունքների վրա օգտագործելու համար, իրականացնում է տարբեր ֆայլային համակարգերում կրկնօրինակված տվյալների փոխանակման հնարավորություն:
    • Ավելացվել է statx() համակարգի կանչը՝ ցուցադրելու տեղեկատվություն այն մասին, թե արդյոք ուղղակի I/O կարող է կիրառվել ֆայլի վրա:
    • O_TMPFILE դրոշով ժամանակավոր ֆայլեր ստեղծելու աջակցությունն ավելացվել է FUSE (Filesystems in User Space) ենթահամակարգին:
  • Վիրտուալացում և անվտանգություն
    • CFI (Control Flow Integrity) պաշտպանական մեխանիզմի ներդրումը փոխարինվել է՝ ֆունկցիայի յուրաքանչյուր անուղղակի կանչից առաջ ստուգումներ ավելացնելով՝ չսահմանված վարքագծի որոշ ձևեր հայտնաբերելու համար, որոնք կարող են հանգեցնել նորմալ կատարման կարգի (վերահսկման հոսքի) խախտմանը: շահագործումների օգտագործման արդյունք, որոնք ցուցիչները փոխում են հիշողության մեջ պահվող գործառույթների։ CFI-ի ստանդարտ ներդրումը LLVM նախագծից փոխարինվել է տարբերակով, որը նույնպես հիմնված է Clang-ի օգտագործման վրա, բայց հատուկ հարմարեցված է ցածր մակարդակի ենթահամակարգերը և օպերացիոն համակարգի միջուկները պաշտպանելու համար: LLVM-ում նոր իրականացում կառաջարկվի Clang 16 թողարկումում և միացված կլինի «-fsanitize=kcfi» տարբերակով: Նոր ներդրման հիմնական տարբերությունն այն է, որ այն կապված չէ կապի ժամանակի օպտիմալացումների հետ (LTO) և չի հանգեցնում այն ​​բանին, որ ֆունկցիայի ցուցիչները փոխարինվեն թռիչքային աղյուսակի հղումներով:
    • LSM մոդուլների համար (Linux Security Module) հնարավոր է ստեղծել մշակիչներ, որոնք ընդհատում են գործողությունները՝ անունների տարածքներ ստեղծելու համար:
    • Գործիքներ են տրամադրվում BPF ծրագրերում PKCS#7 թվային ստորագրությունները ստուգելու համար:
    • Ոչ արգելափակող ռեժիմով բացվելու հնարավորությունը (O_NONBLOCK), որն անզգուշաբար հեռացվել է միջուկում 5.6-ում, վերադարձվել է /dev/random:
    • x86 ճարտարապետությամբ համակարգերում նախազգուշացում է ավելացվել միջուկի ենթահամակարգերով հիշողության էջերի քարտեզագրման դեպքում, որոնք միաժամանակ թույլ են տալիս կատարել և գրել: Հետագայում դիտարկվում է հիշողության նման քարտեզագրումն ամբողջությամբ արգելելու հնարավորությունը։
    • Ավելացվեց KMSAN (Kernel Memory Sanitizer) վրիպազերծման մեխանիզմ՝ միջուկում չնախնականացված հիշողության օգտագործումը հայտնաբերելու համար, ինչպես նաև օգտագործողի տարածքի և սարքերի միջև հիշողության չնախնական արտահոսք:
    • Բարելավումներ են կատարվել գաղտնագրային անվտանգ CRNG կեղծ պատահական թվերի գեներատորում, որն օգտագործվում է getrandom զանգի ժամանակ: Փոփոխությունները պատրաստվել են VPN WireGuard-ի հեղինակ Ջեյսոն Ա. Դոնենֆելդի կողմից և ուղղված են կեղծ պատահական ամբողջ թվերի արդյունահանման անվտանգության բարելավմանը:
  • Ցանցային ենթահամակարգ
    • TCP ստեկը հնարավորություն է տալիս (կանխադրված անջատված է) յուրաքանչյուր անվանատարածքի համար առանձին օգտագործել վարդակների հեշ աղյուսակները, ինչը բարելավում է աշխատանքը մեծ թվով անունների տարածքներ ունեցող համակարգերում:
    • Կոդը հեռացվեց՝ հին DECnet արձանագրությունն աջակցելու համար: Օգտագործողի տարածքի API կոճղերը մնացել են տեղում, որպեսզի թույլատրվի DECnet օգտագործող հավելվածների կազմումը, սակայն այս հավելվածները չեն կարողանա միանալ ցանցին:
    • Netlink արձանագրությունը փաստաթղթավորված է:
  • սարքավորում
    • Amdgpu դրայվերն ավելացրել է DSC (Display Stream Compression) վերահասցեավորման աջակցություն՝ տվյալների անկորուստ սեղմման համար, երբ տեղեկատվություն փոխանակում է էկրանների հետ, որոնք ապահովում են շատ բարձր լուծաչափեր: Աշխատանքները շարունակվում են AMD RDNA3 (RX 7000) և CDNA (Instinct) հարթակների համար աջակցություն տրամադրելու ուղղությամբ: Ավելացվել է DCN 3.2, SMU 13.x, NBIO 7.7, GC 11.x, PSP 13.x, SDMA 6.x և GMC 11.x IP բաղադրիչների աջակցություն: amdkfd դրայվերը (դրամային դիսկրետ GPU-ների համար, ինչպիսին է Polaris-ը) ապահովում է GFX 11.0.3-ի աջակցություն:
    • i915 (Intel) դրայվերը ներառում է Meteor Lake GPU-ի աջակցություն: Meteor Lake-ը և նոր GPU-ները աջակցում են DP 2.0 (DisplayPort) ինտերֆեյսին: Ավելացվել են նույնացուցիչներ վիդեո քարտերի համար՝ հիմնված Alder Lake S միկրոճարտարապետության վրա:
    • Ավելացվել է Apple Silicon, Intel SkyLake և Intel KabyLake պրոցեսորներում ներդրված աուդիո ենթահամակարգերի աջակցություն: CS35L41 HDA աուդիո դրայվերն աջակցում է քնի ռեժիմին: Ավելացվել է ASoC (ALSA System on Chip) ինտեգրված աուդիո չիպերի Apple Silicon, AMD Rembrant DSPs, AMD Pink Sardine ACP 6.2, Everest ES8326, Intel Sky Lake և Kaby Lake, Mediatek MT8186, NXP i.MX8ULP DSPS,8280com SM8250 և Texas Instruments SRC8450
    • Ավելացվել է Samsung LTL101AL01, B120XAN01.0, R140NWF5 RH, Densitron DMT028VGHMCMI-1A TFT, AUO B133UAN02.1, IVO M133NW4J-R3, Innolux B120UAN1, IVO M116NW01.6J-R116, B21XAN116, R2NWF116 RH, Densitron DMT1VGHMCMI-0800A TFT, LCD պանելների աջակցություն Samsung LTL9ALXNUMX, BXNUMXXANXNUMX, BXNUMXXANXNUMX. NTXNUMXWH M-NXNUMX, INX NXNUMXBCA- EAXNUMX, INX NXNUMXBCN-EAXNUMX, Multi-Inno Technology MIXNUMXFT-XNUMX:
    • Ավելացվել է աջակցություն Baikal-T1 SoC-ում օգտագործվող AHCI SATA կարգավորիչների համար:
    • Ավելացվել է Bluetooth չիպերի աջակցություն MediaTek MT7921, Intel Magnetor (CNVi, Ինտեգրված միացում), Realtek RTL8852C, RTW8852AE և RTL8761BUV (Edimax BT-8500):
    • Qualcomm անլար մոդուլների ath11k դրայվերն ավելացրել է աջակցություն սպեկտրային սկանավորման համար 160 ՄՀց տիրույթում, ներդրել է բազմաշերտ NAPI և կատարելագործված աջակցություն Qualcomm WCN6750 Wi-Fi չիպերի համար:
    • Ավելացվել են վարորդներ PinePhone ստեղնաշարի, InterTouch touchpad-ների համար (ThinkPad P1 G3), X-Box Adaptive Controller, PhoenixRC Flight Controller, VRC-2 Car Controller, DualSense Edge Controller, IBM Operation Panel, XBOX One Elite հեռակառավարման վահանակներ, XP-PEN Deco Pro S պլանշետներ: և Intuos Pro Small (PTH-460):
    • Ավելացվեց վարորդ Aspeed HACE (Hash և Crypto Engine) ծածկագրային արագացուցիչների համար:
    • Ավելացվել է ինտեգրված Thunderbolt/USB4 Intel Meteor Lake կարգավորիչների աջակցություն:
    • Ավելացվել է աջակցություն Sony Xperia 1 IV, Samsung Galaxy E5, E7 և Grand Max, Pine64 Pinephone Pro սմարթֆոնների համար:
    • Ավելացվել է ARM SoC-ի և տախտակների աջակցություն՝ AMD DaytonaX, Mediatek MT8186, Rockchips RK3399 և RK3566, TI AM62A, NXP i.MX8DXL, Renesas R-Car H3Ne-1.7G, Qualcomm IPQ8064, Kon2.0, IPQ8062, Kon8065, IPQ8-v8195: BL i.MX4MM OSM-S, MT4 (Acer Tomato), Radxa ROCK 1C+, NanoPi RXNUMXS Enterprise Edition, JetHome JetHub DXNUMXp: Թարմացված դրայվերներ SoC Samsung-ի, Mediatek-ի, Renesas-ի, Tegra-ի, Qualcomm-ի, Broadcom-ի և NXP-ի համար:

Միևնույն ժամանակ, Լատինական Ամերիկայի Ազատ ծրագրային ապահովման հիմնադրամը ձևավորեց ամբողջովին անվճար միջուկի 6.1 տարբերակը՝ Linux-libre 6.1-gnu, որը մաքրվել է որոնվածի տարրերից և ոչ ազատ բաղադրիչներ կամ կոդի բաժիններ պարունակող դրայվերներից, որոնց շրջանակն է. սահմանափակվում է արտադրողի կողմից: Նոր թողարկումը մաքրում է նոր rtw8852b դրայվերը և DTS ֆայլերը տարբեր Qualcomm և MediaTek SoC-ների համար՝ AArch64 ճարտարապետության վրա հիմնված պրոցեսորներով: Թարմացված բլբի մաքրման կոդը վարորդների և ենթահամակարգերի amdgpu, i915, brcmfmac, r8188eu, rtw8852c, Intel ACPI: Հնացած վարորդների tm6000 հեռուստաքարտերի, cpia2 v4l, sp8870, av7110 մաքրումը ուղղվել է։

Source: opennet.ru

Добавить комментарий