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

Երկու ամիս մշակումից հետո Լինուս Տորվալդսը ներկայացրեց Linux միջուկի 6.7 թողարկումը: Ամենաուշագրավ փոփոխություններից են՝ Bcachefs ֆայլային համակարգի ինտեգրում, Itanium ճարտարապետության աջակցության դադարեցում, GSP-R որոնվածի հետ աշխատելու Nouvea-ի հնարավորություն, NVMe-TCP-ում TLS կոդավորման աջակցություն, BPF-ում բացառություններ օգտագործելու հնարավորություն, աջակցություն futex-ին io_uring-ում, fq (Fair Queuing) ժամանակացույցի կատարման օպտիմիզացում), TCP-AO ընդլայնման աջակցություն (TCP վավերացման տարբերակ) և ցանցային կապերը սահմանափակելու հնարավորությունը Landlock անվտանգության մեխանիզմում, ավելացված մուտքի հսկողություն օգտվողի անվան տարածքին և io_uring-ին: AppArmor-ի միջոցով:

Նոր տարբերակը ներառում է 18405 ուղղում 2066 ծրագրավորողների կողմից, patch-ի չափը 72 ՄԲ է (փոփոխությունները ազդել են 13467 ֆայլերի վրա, ավելացվել է 906147 կոդ, ջնջվել է 341048 տող): Վերջին թողարկումն ուներ 15291 ուղղում 2058 մշակողների կողմից, կարկատանի չափը 39 ՄԲ էր: 45-ում ներկայացված բոլոր փոփոխությունների մոտ 6.7%-ը կապված է սարքի դրայվերների հետ, փոփոխությունների մոտավորապես 14%-ը կապված է ապարատային ճարտարապետությանը հատուկ կոդի թարմացման հետ, 13%-ը՝ ցանցային ստեկին, 5%-ը՝ ֆայլային համակարգերին և 3%-ը։ կապված են միջուկի ներքին ենթահամակարգերի հետ:

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

  • Սկավառակի ենթահամակարգ, I/O և ֆայլային համակարգեր
    • Միջուկն ընդունում է Bcachefs ֆայլային համակարգի կոդը, որը փորձում է հասնել XFS-ի կատարման, հուսալիության և մասշտաբայնության՝ զուգակցված Btrfs-ում և ZFS-ում հայտնաբերված առաջադեմ ֆունկցիոնալության տարրերի հետ: Օրինակ, Bcachefs-ն աջակցում է այնպիսի գործառույթների, ինչպիսիք են՝ բաժանման մեջ մի քանի սարքեր ներառելը, սկավառակի բազմաշերտ դասավորությունը (ներքևի շերտը՝ հաճախ օգտագործվող տվյալների վրա՝ հիմնված արագ SSD-ների վրա, իսկ վերին շերտը՝ կոշտ սկավառակներից քիչ օգտագործվող տվյալների հետ), կրկնօրինակում (RAID): 1/10), քեշավորում, տվյալների թափանցիկ սեղմում (LZ4, gzip և ZSTD ռեժիմներ), վիճակի հատվածներ (պատկերներ), ամբողջականության ստուգում ստուգումների միջոցով, Reed-Solomon սխալի ուղղման կոդերը պահելու ունակություն (RAID 5/6), տեղեկատվության պահպանում կոդավորված ձև (օգտագործվում են ChaCha20 և Poly1305): Կատարման առումով Bcachefs-ը առաջ է անցնում Btrfs-ից և Copy-on-Write մեխանիզմի վրա հիմնված այլ ֆայլային համակարգերից և ցուցադրում է Ext4-ին և XFS-ին մոտ գործող արագությունը:
    • Btrfs ֆայլային համակարգը ներկայացնում է պարզեցված քվոտայի ռեժիմ, որը թույլ է տալիս ավելի բարձր կատարողականություն՝ հետևելով չափերը միայն այն ենթաբաժնում, որտեղ դրանք ստեղծվել են, ինչը զգալիորեն պարզեցնում է հաշվարկները և բարելավում կատարողականությունը, բայց թույլ չի տալիս հաշվի առնել մի քանի ենթաբաժիններում համօգտագործվող չափերը:
    • Btrfs-ն ավելացրել է տվյալների նոր «շերտավոր ծառ» կառուցվածք, որը հարմար է տրամաբանական չափերի քարտեզագրման համար այն իրավիճակներում, երբ ֆիզիկական քարտեզները չեն համընկնում սարքերի միջև: Կառուցվածքը ներկայումս օգտագործվում է RAID0-ի և RAID1-ի ներդրման մեջ գոտիավորված բլոկ սարքերի համար: Հետագայում նրանք նախատեսում են օգտագործել այս կառուցվածքը ավելի բարձր մակարդակի RAID-ներում, ինչը կլուծի ներկայիս ներդրման մեջ առկա մի շարք խնդիրներ։
    • Ceph ֆայլային համակարգը ապահովում է մոնտաժված ֆայլային համակարգերի օգտատերերի ID-ների քարտեզագրման աջակցությունը, որն օգտագործվում է մոնտաժված արտասահմանյան միջնորմի վրա կոնկրետ օգտագործողի ֆայլերը ընթացիկ համակարգի մեկ այլ օգտվողի հետ համապատասխանեցնելու համար:
    • Ավելացվել է efivarfs-ին մոնտաժի վրա uid-ը և gid-ը նշելու հնարավորությունը, որպեսզի ոչ արմատային գործընթացները փոխեն UEFI փոփոխականները:
    • Ավելացվել են ioctl զանգեր exFAT-ին՝ FS հատկանիշները կարդալու և փոխելու համար: Ավելացվել է զրոյական չափի դիրեկտորիաների կառավարում:
    • F2FS-ն իրականացնում է 16K բլոկներ օգտագործելու հնարավորություն:
    • Autofs automount մեխանիզմը փոխվել է բաժանման նոր API-ի մոնտաժման համար:
    • OverlayFS-ն առաջարկում է «lowerdir+» և «datadir+» ամրացման տարբերակներ: Ավելացվեց OverlayFS-ի տեղադրման աջակցություն xattrs-ով:
    • XFS-ն օպտիմիզացրել է պրոցեսորի բեռնվածությունը իրական ժամանակի բլոկի բաշխման կոդում: Տրվում է ընթերցման և FICLONE գործողությունները միաժամանակ կատարելու հնարավորություն:
    • EXT2 կոդը փոխարկվել է էջի ֆայլերի օգտագործման համար:
  • Հիշողության և համակարգի ծառայություններ
    • Intel Itanium պրոցեսորներում օգտագործվող ia64 ճարտարապետության աջակցությունը, որոնք ամբողջությամբ դադարեցվել էին 2021 թվականին, դադարեցվել է։ Itanium պրոցեսորները ներկայացվեցին Intel-ի կողմից 2001 թվականին, սակայն ia64 ճարտարապետությունը չկարողացավ մրցել AMD64-ի հետ, հիմնականում AMD64-ի ավելի բարձր կատարողականության և 32-բիթանոց x86 պրոցեսորներից ավելի սահուն անցման պատճառով: Արդյունքում Intel-ի շահերը փոխվեցին հօգուտ x86-64 պրոցեսորների, իսկ Itanium-ի լոտը մնացին HP Integrity սերվերները, որոնց պատվերները դադարեցվել էին երեք տարի առաջ։ ia64 աջակցության կոդը հանվել է միջուկից հիմնականում այս հարթակի երկարաժամկետ աջակցության բացակայության պատճառով, մինչդեռ Լինուս Տորվալդսը պատրաստակամություն է հայտնել վերադարձնել ia64 աջակցությունը միջուկին, բայց միայն այն դեպքում, եթե կա սպասարկող, ով կարող է ցուցադրել բարձր որակ: աջակցություն այս հարթակին հիմնական միջուկից դուրս առնվազն մեկ տարի:
    • Ավելացվեց «ia32_emulation» միջուկի տողի հրամանի պարամետրը, որը թույլ է տալիս միացնել կամ անջատել 32-բիթանոց ռեժիմի էմուլյացիայի աջակցությունը x86-64 ճարտարապետության համար կառուցված միջուկներում բեռնման փուլում: Գործնական առումով, նոր տարբերակը թույլ է տալիս կառուցել միջուկը 32-բիթանոց հավելվածների հետ համատեղելիության աջակցությամբ, բայց լռելյայն անջատել այս ռեժիմը՝ միջուկի վրա հարձակման վեկտորը նվազեցնելու համար, քանի որ համատեղելիության API-ն ավելի քիչ փորձարկված է, քան հիմնական միջուկը։ միջերեսներ.
    • Rust-for-Linux մասնաճյուղից փոփոխությունների շարունակական միգրացիան՝ կապված Rust լեզվի օգտագործման հետ՝ որպես երկրորդ լեզու վարորդների և միջուկի մոդուլների մշակման համար (Rust աջակցությունը լռելյայն ակտիվ չէ և չի հանգեցնում Rust-ի ներառմանը միջուկի համար անհրաժեշտ հավաքման կախվածությունները): Նոր տարբերակն անցում է կատարում Rust 1.73 թողարկմանը և առաջարկում է մի շարք կապանքներ աշխատանքային հերթերի հետ աշխատելու համար:
    • Հնարավոր է օգտագործել binfmt_misc մեխանիզմը՝ գործարկվող ֆայլերի նոր ձևաչափերին աջակցություն ավելացնելու համար (օրինակ՝ կոմպիլյացված Java կամ Python հավելվածները գործարկելու համար) առանձին չարտոնյալ անվանատարածքներում։
    • Cgroup վերահսկիչի cpuset-ը, որը թույլ է տալիս վերահսկել պրոցեսորի միջուկների օգտագործումը առաջադրանքը կատարելիս, ապահովում է բաժանում տեղական և հեռավոր բաժանման, որոնք տարբերվում են նրանից, թե արդյոք մայր cgroup-ը ճիշտ արմատային բաժինն է, թե ոչ: «cpuset.cpus.exclusive» և «cpuset.cpus.excluisve.effective» նոր կարգավորումները նույնպես ավելացվել են cpuset-ին՝ բացառիկ CPU-ի կապակցման համար:
    • BPF ենթահամակարգն իրականացնում է բացառությունների աջակցություն, որոնք մշակվում են որպես վթարային ելք BPF ծրագրից՝ շրջանակները կույտերի անվտանգ լուծարման ունակությամբ: Բացի այդ, BPF ծրագրերը թույլ են տալիս օգտագործել kptr ցուցիչներ՝ կապված պրոցեսորի հետ։
    • Futex- ի հետ օժանդակությունը ավելացվել է IO_RING ենթահամակարգին, եւ իրականացվել են նոր գործողություններ. կան տվյալներ կամ ամբողջական բուֆեր չէ):
    • Ավելացվել է թեթև միակցված FIFO հերթերի իրականացում, որոնք պահանջում են պտտվող կողպում միայն գործընթացի համատեքստում հերթափոխելու համար և հրաժարվում են սպինբլոկից՝ հերթում ատոմային հավելումների համար ցանկացած համատեքստում:
    • Ավելացվեց օղակաձև բուֆեր «objpool»՝ օբյեկտների տեղաբաշխման և վերադարձման համար բարձր արդյունավետության հերթի մասշտաբային ներդրմամբ:
    • Փոփոխությունների սկզբնական մասը ավելացվել է նոր futex2 API-ն իրականացնելու համար, որն ավելի լավ կատարում է NUMA համակարգերում, աջակցում է 32 բիթից այլ չափեր և կարող է օգտագործվել մուլտիպլեքսացված futex() համակարգի կանչի փոխարեն:
    • ARM32 և S390x ճարտարապետությունների համար ավելացվել է BPF հրահանգների ընթացիկ փաթեթի (cpuv4) աջակցությունը:
    • RISC-V ճարտարապետության համար հնարավոր է օգտագործել Shadow-Call Stack ստուգման ռեժիմը, որը հասանելի է Clang 17-ում, որը նախատեսված է ֆունկցիայից վերադարձի հասցեի վերագրանցումից պաշտպանվելու համար, երբ բուֆերային գերհոսում է բուրգի վրա: Պաշտպանության էությունը կայանում է նրանում, որ վերադարձի հասցեն պահպանվի առանձին «ստվերային» կույտում՝ գործառույթի վրա կառավարումը փոխանցելուց և գործառույթից դուրս գալուց առաջ այս հասցեն առբերելուց հետո:
    • Հիշողության նույնական էջերի միաձուլման մեխանիզմին ավելացվել է խելացի հիշողության էջերի սկանավորման նոր ռեժիմ (KSM: Kernel Samepage Merging), որը հետևում է անհաջող սկանավորված էջերին և նվազեցնում դրանց վերասկանավորման ինտենսիվությունը: Նոր ռեժիմը միացնելու համար ավելացվել է /sys/kernel/mm/ksm/smart_scan կարգավորումը:
    • Ավելացվեց նոր ioctl հրաման PAGEMAP_SCAN, որը, երբ օգտագործվում է userfaultfd()-ի հետ, թույլ է տալիս որոշել որոշակի հիշողության տիրույթում գրելու փաստերը: Նոր ֆունկցիան, օրինակ, կարող է օգտագործվել համակարգում՝ CRIU-ի պրոցեսների վիճակը պահպանելու և վերականգնելու համար կամ խաղային հակաքեյթ համակարգերում։
    • Հավաքման համակարգում, եթե Clang կոմպիլյատորը հասանելի է, ապա լռելյայն միացված է perf ենթահամակարգի օգտագործման օրինակների հավաքումը, որը գրված է որպես BPF ծրագրեր:
    • Հին videobuf շերտը, որն օգտագործվում էր մեդիա ենթահամակարգի շրջանակային բուֆերները կառավարելու համար և ավելի քան 10 տարի առաջ փոխարինվել էր videobuf2-ի նոր ներդրմամբ, հեռացվել է:
  • Վիրտուալացում և անվտանգություն
    • Fscrypt ենթահամակարգին ավելացվել է ֆայլային համակարգի բլոկի չափից փոքր բլոկներում տվյալները գաղտնագրելու հնարավորությունը: Սա կարող է պահանջվել ապարատային գաղտնագրման մեխանիզմները միացնելու համար, որոնք աջակցում են միայն փոքր բլոկներին (օրինակ, UFS կարգավորիչները, որոնք ապահովում են միայն 4096 բլոկի չափը, կարող են օգտագործվել 16K բլոկի չափով ֆայլային համակարգի հետ):
    • «iommufd» ենթահամակարգը, որը թույլ է տալիս կառավարել IOMMU (I/O Memory-Management Unit) հիշողության էջերի աղյուսակները օգտվողի տարածքից ֆայլերի նկարագրիչների միջոցով, ավելացրել է տվյալների հետևում, որոնք դեռ չեն մաքրվել DMA-ի քեշից (կեղտոտ): գործողություններ, որոնք անհրաժեշտ են գործընթացի միգրացիայի ընթացքում չլվացված տվյալների հետ հիշողությունը որոշելու համար:
    • Landlock մեխանիզմին ավելացվել է TCP վարդակների համար մուտքի վերահսկման կանոնների սահմանման աջակցություն, որը թույլ է տալիս սահմանափակել մի խումբ գործընթացների փոխազդեցությունը արտաքին միջավայրի հետ: Օրինակ, դուք կարող եք ստեղծել կանոն, որը թույլ է տալիս մուտք գործել միայն ցանցային պորտ 443՝ HTTPS կապեր հաստատելու համար:
    • AppArmor ենթահամակարգն ավելացրել է io_uring մեխանիզմի հասանելիությունը վերահսկելու և օգտատերերի անունների տարածքներ ստեղծելու հնարավորությունը, ինչը թույլ է տալիս ընտրողաբար թույլ տալ մուտք գործել այդ հնարավորությունները միայն որոշակի գործընթացների համար:
    • Ավելացվեց վիրտուալ մեքենայի ատեստավորման API՝ վիրտուալ մեքենայի բեռնման գործընթացի ամբողջականությունը ստուգելու համար:
    • LoongArch համակարգերն աջակցում են վիրտուալացմանը՝ օգտագործելով KVM հիպերվիզորը:
    • RISC-V համակարգերում KVM հիպերվիզորն օգտագործելիս հայտնվեց Smstateen ընդլայնման աջակցությունը, որն արգելափակում է վիրտուալ մեքենայի մուտքը պրոցեսորի ռեգիստրներ, որոնք հստակորեն չեն աջակցվում հիպերվիզորի կողմից: Նաև ավելացվել է հյուրի համակարգերում Zicond ընդլայնման օգտագործման աջակցությունը, որը թույլ է տալիս օգտագործել որոշ պայմանական ամբողջ գործողություններ:
    • X86-ի վրա հիմնված հյուր համակարգերում, որոնք աշխատում են KVM-ի ներքո, թույլատրվում է մինչև 4096 վիրտուալ պրոցեսոր:
  • Ցանցային ենթահամակարգ
    • NVMe-TCP (NVMe over TCP) դրայվերը, որը թույլ է տալիս մուտք գործել NVMe կրիչներ ցանցի միջոցով (NVM Express գործվածքների միջոցով) TCP արձանագրության միջոցով, ավելացրել է աջակցություն TLS-ի միջոցով տվյալների փոխանցման ալիքը կոդավորելու համար (օգտագործելով KTLS և ֆոնային գործընթաց: օգտագործողի տարածքում tlshd կապի բանակցությունների համար):
    • fq (Fair Queuing) փաթեթների ժամանակացույցի կատարումը օպտիմիզացվել է, ինչը հնարավորություն է տվել մեծ բեռների թողունակությունը բարձրացնել 5%-ով tcp_rr (TCP հարցում/պատասխան) ​​թեստում և 13%-ով՝ UDP փաթեթների անսահմանափակ հոսքով:
    • TCP-ն ավելացնում է կամընտիր միկրովայրկյան ճշգրտության ժամանակի դրոշմակնիք (TCP TS) (RFC 7323), որը թույլ է տալիս ավելի ճշգրիտ ուշացման գնահատում և գերբեռնվածության կառավարման ավելի առաջադեմ մոդուլներ: Այն միացնելու համար կարող եք օգտագործել «ip route add 10/8 ... features tcp_usec_ts» հրամանը։
    • TCP փաթեթն ավելացրել է աջակցություն TCP-AO ընդլայնման համար (TCP Authentication Option, RFC 5925), ինչը հնարավորություն է տալիս ստուգել TCP վերնագրերը MAC կոդերի միջոցով (Message Authentication Code), օգտագործելով ավելի ժամանակակից ալգորիթմներ HMAC-SHA1 և CMAC-AES-: 128 փոխարեն նախկինում հասանելի TCP-MD5 տարբերակը՝ հիմնված ժառանգական MD5 ալգորիթմի վրա:
    • Ավելացվել է վիրտուալ ցանցային սարքերի նոր տեսակ՝ «netkit», որի տվյալների փոխանցման տրամաբանությունը սահմանվում է BPF ծրագրի միջոցով:
    • KSMBD-ը՝ SMB սերվերի միջուկի մակարդակի իրականացումը, ավելացրել է աջակցություն բարդ նիշերի փոխնակ զույգեր պարունակող ֆայլերի անունները լուծելու համար:
    • NFS-ը բարելավել է թելերի իրականացումը RPC ծառայությունների հետ: Ավելացվել է գրելու պատվիրակության աջակցություն (NFSv4.1+-ի համար): NFSD-ն աջակցություն է ավելացրել rpc_status netlink մշակողի համար: Բարելավված աջակցություն NFSv4.x հաճախորդների համար knfsd վերաարտահանման ժամանակ:
  • սարքավորում
    • GSP-RM որոնվածի նախնական աջակցությունն ավելացվել է Nouveau միջուկի մոդուլին, որն օգտագործվում է NVIDIA RTX 20+ GPU-ում՝ սկզբնավորման և GPU-ի կառավարման գործողությունները առանձին GSP միկրոկառավարիչի (GPU համակարգի պրոցեսոր) կողմ տեղափոխելու համար: GSP-RM-ի աջակցությունը թույլ է տալիս Nouveau-ի վարորդին աշխատել որոնվածի զանգերի միջոցով, այլ ոչ թե ուղղակիորեն ծրագրավորել ապարատային փոխազդեցությունները, ինչը շատ ավելի դյուրին է դարձնում նոր NVIDIA GPU-ների աջակցությունը՝ օգտագործելով նախնական ներկառուցված զանգերը սկզբնավորման և էներգիայի կառավարման համար:
    • AMDGPU դրայվերն աջակցում է GC 11.5, NBIO 7.11, SMU 14, SMU 13.0 OD, DCN 3.5, VPE 6.1 և DML2: Բարելավված աջակցություն անխափան բեռնման համար (վիդեո ռեժիմն անցնելիս չի թարթում):
    • i915 դրայվերն ավելացնում է Intel Meteor Lake չիպերի աջակցությունը և ավելացնում է Intel LunarLake-ի նախնական ներդրումը (Xe 2):
    • Ավելացվել է USB4 v2 (120/40G) բնութագրին ավելացված ասիմետրիկ փոխանցման ալիքների աջակցություն:
    • Ավելացված է ARM SoC-ի աջակցությունը՝ Qualcomm Snapdragon 720G (օգտագործվում է Xiaomi սմարթֆոններում), AMD Pensando Elba, Renesas, R8A779F4 (R-Car S4-8), USRobotics USR8200 (օգտագործվում է երթուղիչներում և NAS-ում):
    • Ավելացված է աջակցություն Fairphone 5 սմարթֆոնների և ARM տախտակների համար Orange Pi 5, QuartzPro64, Turing RK1, Variscite MX6, BigTreeTech CB1, Freescale LX2162, Google Spherion, Google Hayato, Genio 1200 EVK, RK3566 GB30 Powkid:
    • Ավելացված է աջակցություն RISC-V տախտակների Milk-V Pioneer և Milk-V Duo-ի համար:
    • Ավելացվել է AMD պրոցեսորներով մատակարարվող HUAWEI նոութբուքերի ձայնային միջերեսների աջակցություն: Ավելացվեց Dell Oasis 13/14/16 դյուրակիր համակարգիչների վրա տեղադրված լրացուցիչ բարձրախոսների աջակցություն: Ավելացվել է ներկառուցված բարձրախոսների աջակցություն ASUS K6500ZC: Ավելացվեց ձայնի անջատման ցուցիչի աջակցություն HP 255 G8 և G10 նոութբուքերի վրա: Ավելացված է աջակցություն acp6.3 աուդիո վարորդների համար: Ավելացվեց Focusrite Clarett+ 2Pre և 4Pre պրոֆեսիոնալ ձայնագրման միջերեսների աջակցություն:

Միևնույն ժամանակ, Լատինական Ամերիկայի Ազատ ծրագրաշարի հիմնադրամը ձևավորեց ամբողջովին անվճար միջուկի 6.7 տարբերակը՝ Linux-libre 6.7-gnu, որը մաքրվել է որոնվածի տարրերից և ոչ ազատ բաղադրիչներ կամ կոդերի բաժիններ պարունակող դրայվերներից, որոնց շրջանակը սահմանափակ է։ արտադրողի կողմից: 6.7 թողարկման մեջ բլբի մաքրման կոդը թարմացվել է տարբեր դրայվերներում և ենթահամակարգերում, օրինակ՝ amdgpu, nouveau, adreno, mwifiex, mt7988, ath11k, avs և btqca դրայվերներում: localtalk-ի և rtl8192u-ի դրայվերների մաքրման կոդը հեռացվել է միջուկից դրանց բացառման պատճառով: Հեռացվել են xhci-pci, rtl8xxxu և rtw8822b վարորդների մաքրման համար ավելորդ բաղադրիչները, որոնք նախկինում սխալմամբ ավելացվել են: Մաքրված բլբի անունները dts ֆայլերում Aarch64 ճարտարապետության համար: Հեռացվել են բլբեր նոր վարորդների mt7925, tps6598x, aw87390 և aw88399:

Source: opennet.ru

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