Linux 6.11-ի թողարկումը։

Երկու ամսվա մշակումից հետո Լինուս Թորվալդսը ներկայացրեց Linux միջուկի 6.11 թողարկումը։ Որպես առավել նկատելի փոփոխություններ՝ հայտնի են ատոմար գրառման օպերացիաների աջակցությունը բլոկային մակարդակում, io_uring-ում bind() և listen() օպերացիաների աջակցությունը, ծրագրային ընդլայնումների արգելակման նոր մեխանիզմ, եղանակով հիշողության մեջ արտացոլված գործարկվող ֆայլերի գրառման հնարավորությունը, Rust լեզվով բլոկային սարքերի վարորդների գրելու աջակցությունը, getrandom() կանչի օպտիմալացումը և նոր AES-GCM իրականացումը։

Նոր տարբերակ ընդունել է 15130 փոփոխություններ 2078 ծրագրավորողներից, փաթեթի չափը 85 ՄԲ (փոփոխությունները ներգրավել են 13282 ֆայլեր, ավելացել են 985857 տող կոդ, հեռացվել են 268915 տող)։ Նախորդ թողարկման մեջ եղել է 14564 փոփոխություն 1989 ծրագրավորողներից, փաթեթի չափը 41 ՄԲ (երկու անգամ menor է, քան 6.11 միջուկի փաթեթը)։ 6.11-ին ներկայացված բոլոր փոփոխությունների շուրջ 46%-ը կապված է սարքերի վարորդների հետ, մոտ 17%-ը կապված է սարքային ճարտարապետություններին հատուկ կոդի թարմացման հետ, 10%-ը՝ ցանցային ստակում, 5%-ը՝ ֆայլային համակարգերի հետ և 3%-ը՝ միջուկի ներքին ենթավիճակների հետ։

6.11 միջուկի հիմնական նորությունները՝

  • Դիսկային ենթակառուցվածք, մտցնում/արտահանում և ֆայլային համակարգեր
    • Ներդրված է ատոմար գրառման օպերացիաների աջակցությունը բլոկային մակարդակում, որի դեպքում հիշողությանը նշված բլոկների ամբողջ հավաքածուն կամ ոչ մի բլոկ չի գրանցվում, ինչը թույլ է տալիս պաշտպանվել այն իրավիճակներից, երբ սարքի խափանումից հետո գրանցվում է միայն որոշակի բլոկներ, մինչդեռ մյուս մասում մնում է հին տեղեկատվություն։ ատոմար գրառման ռեժիմը միացնելու համար pwritev() համակարգի զանգեց ավելացվել է RWF_ATOMIC պառյախը։ ատոմար գրառման (atomic_write_unit_min, atomic_write_unit_max և atomic_write_segments_max) աջակցության մասին տեղեկատվություն ցանկացած ֆայլերի հետ կապված կարող եք ստանալ statx() функций միջոցով։
    • Ներդրված է իրականացվում ֆայլերում գրելու աջակցություն, որոնք կապված են ընթացիկ գործընթացների հետ։ Նախկինում, ինչպես այլ Unix-անման համակարգերում, միջուկը ցույց տվեց սխալ ընթացակարգերի ֆայլ նշում ժամանակ։ Այս սահմանումը հետ վերցվել է, քանի որ այն զրկված է գործնական իմաստից։
    • Ներդրված է բլոկային սարքերի վարորդների մշակման հնարավորություն Rust լեզվով։ Գծագրի օրինակ՝ միջուկում ավելացված rnull վարորդն է, որը ներկայացնում է null_blk վարորդի անալոգը, գրված Rust լեզվով։
    • Btrfs ֆայլային համակարգում «rescue=» մոնտաժման ընտրանքներում իրականացվել է նոր «ignoremetacsums» և «ignoresuperflags» ռեժիմների աջակցություն, որոնք կարող են օգտագործվել որոշ ստուգման հաճախորդները տեղափոխելով օգտվողի տարածություն, երբ FS-ն վերականգնում է խափանումից հետո։ Տատանող գծային խմբերի կրկին վերադարձն իրականացվում է նորից կարգավորմամբ՝ վերացնելով FS-ն լրիվ լրիվություն պայմաններում ազատ տարածության մատակարարում։
    • ntfs3 ֆայլային համակարգում իրականացվել է «compressed» և «immutable» ատրիբուտների աջակցություն, որոնք սահմանում են սեղմված և անկյունային ֆայլեր։
    • ՖՍ F2FS և Ext4 ֆայլերի անունների չհաշվելու (casefold) մշակումը պարզեցված է անունները qstr ստեղնային ձևով պահելով, առանց գրաֆիկական այնպիսի ձևափոխումների:
    • ՖՍ Ext4-ում jbd2_transaction_committed գործառույթի իրագործումը օպտիմիզացվել է արագադիր հարմարանքների արդյունավետության բարձրացման համար (թեստերում նշվել է ամեն վայրկյան մշակված գործողությունների աճ, հասնելով 20%-ի):
    • statx() համակարգային կանչում թույլատրվում է NULL ցուցիչի փոխանցումը դատարկ ձևաթղթած ցուցանշանի փոխարեն, եթե AT_EMPTY_PATH դրոշը սահմանված է:
    • open_by_handle_at() համակարգային կանչում մեղմացվել են ֆայլի մուտքի իրավունքների ստուգումները, եթե CAP_DAC_READ_SEARCH լիազորությունը բացակայում է սկզբնական անվան տարածքում որոնելու համար: Նախքան, CAP_DAC_READ_SEARCH լիազորության անհրաժեշտությունը սկզբնական անվան տարածքում թույլ չէր տալիս օգտագործել open_by_handle_at() համակարգային կանչը կոնտեյներներում:
    • listmount() և statmount() համակարգային կանչերի հնարավորությունները ընդլայնվել են։ listmount() -ում հավելվել է LISTMOUNT_REVERSE դրոշ, որը հնարավորություն է տալիս ներկայացնել մոնտաժման կետերի աղյուսակի բովանդակությունը հակառակ հերթականությամբ (նոր գրառումները վերևում): statmount() -ում իրականացվել է ֆայլի համակարգի մոնտաժման ժամանակ սահմանված տարբերակների ցուցադրումը։ Այս երկու համակարգային կանչերում թույլատրվում է աշխատել սկզբնական անվան տարածքի մուտքի բացակայության դեպքում (երբ միայն տեղական կամ արտաքին անվան տարածքին մուտք գործելն է թույլատրվում):
    • Bcachefs ֆայլային համակարգում իրականացվել է խնդիրների տրբացող գիտելիքների ավտոմատ թափանցիկ վերականգնման աջակցություն, օգտագործելով սխալ վերականգնման կոդեր՝ եթե ընթերցման ժամանակ տեղի է ունենում մուտքի/վերադարձի սխալ կամ կարգավորումները չեն համապատասխանում, ոչ բարեհաջող տվյալների բլոկը ավտոմատ փոխարինվում է, երբ դրա վերականգնման համար ավելցուկություն կա:
  • Համակարգի հիշողություն և ծարայություններ
    • Ընտրվել են նոր մեխանիզմների բլոկավորման ծրագիրերի (BH, bottom-half) գործարկման ուղեկցող փոփոխություն, որը ապահովում է օգտագործվող տվյալների կառուցվածքների բլոկավորում, սակայն չի առաջացնում զուգահեռ կատարողականության անհեթեթությունը: Նշվում է, որ փոփոխությունը կրճատում է ուշացումները real-time ռեժիմում աշխատող կոր, բայց նաև բարձրացնում է սովորական կորերի արդյունավետությունը (օրինակ, որոշ բեռների դեպքում առկա է 14.5%-ի աճի ցուցանիշ ցանցային ենթակառուցվածքում):
    • io_uring ասինխրոն մուտքի/վերադարձի ենթակառուցվածքում ավելացված են գործողությունների աջակցություն bind() և listen() ֆունկցիաների իրականացման համար, որոնք օգտագործվում են ցանցային սոխտերի կոմունիկացիաներ ստեղծելու համար.
    • NSFS (NameSpace FS) սուբհամակարգի համար ioctl գործողությունների հավաքածու է ավելացել, որը թույլ է տալիս աշխատել անունների տարածքների հետ։ Նոր ioctl-ները թույլ են տալիս փոփոխել գործընթացների և պրոցեսային խմբերի նույնականացնողները տարբեր գործընթացների նույնականացնողների տարածքներում (PID namespace)։ Նման ioctl-ները, որոնք թույլ են տալիս pidfd նույնականացնողների հիման վրա սահմանել ֆայլային նկարագրիչներ տարբեր տարածքներում, նույնպես ավելացված են pidfd սուբհամակարգում։
    • BPF ծրագրերի համար ավելացված է նոր իտերատոր, որը թույլ է տալիս աշխատել բիթային դիմակների հետ, որն օգտագործվել կարող է, օրինակ, հիշողության ոլորտներում առանձին բիթերի մանիպուլյացիայի համար, ինչպիսիք են cpumask-ը։ Ավելացվել է մեխանիզմ՝ օգտվողի տարածքի գործընթացներին ` struct_ops օբյեկտի անջատման (detach/unregister) մասին տեղեկություններ ուղարկելու համար։ Շարունակվել է այն տեսակի սահմանը, որը կարելի է օգտագործել զանգվածներում (օրինակ, զանգվածներ կարող են հայտարարվել kptr, bpf_rb_root և bpf_list_head տեսակի տարրերով)։ Առաջարկվել է ավելի վստահելի Split BTF (BPF Type Format) մեխանիզմ, որն օգտագործվում է BPF псевդոկոդի մեջ տեսակները ստուգելու համար։
    • Ավելացել է ենթահամակարգ, որը թույլ է տալիս կազմակերպել սարքերի մատակարարման հերթականությունը, երբ որոշ սարքեր պետք է ակտիվացվեն մյուսներից վաղ։ (օրինակ, Qualcomm պլատֆորմներում անլար չիպերի ակտիվացման ժամանակ)։
    • Ավելացված է «Sloppy logic analyzer» մոդուլ, որը թույլ է տալիս ստեղծել հասկանալի լոգիկայի վերլուծիչներ, որոնք օգտագործում են GPIO և գործում են առանձին CPU միջուկի վրա։
    • Ավելացված են runtime-սահմանիչներ, որոնք կարող են օգտագործվել մեկ անգամ սկզբում սկզբնավորում ունեցող փոփոխականների փոխարեն։ Օրինակ, runtime-սահմանիչները կարող են կիրառվել dentry կուրսորի համար ծավալը և ցուցանիշը պահելու փոփոխականների փոխարեն։ Այդ փոփոխականները ներկայացվում են բեռնումը ընթացքում և հետագայում երբեք չեն փոխվում։ Բաղնիքի գաղափարն է ` նման փոփոխականների արժեքները ուղղակի ներդնել հրամաններում կոդում, բացառելով վկայականների հետ ծրագրային աշխատանքների ծախսերը։
    • Շարունակվել են փոփոխությունների տեղափոխումը Rust-for-Linux ճյուղից, կապված Rust լեզվով վարորդների և միջուկային մոդուլների մշակման համեմատական second լեզու օգտագործելու հետ (Rust-ի աջակցությունը միաժամանակ ակտիվ չէ և չի հանգեցնում Rust-ի պարտադիր կախվածություն հանդիսանալու)։ Ավելացել է Rust 1.80-ի թողարկման աջակցություն (որպես նվազագույն տարբերակ դեռ պահպանվում է Rust 1.78)։ Բլոկային սարքերի վարորդների մշակման առկա միջոցներից բացի, այս նոր տարբերակում ավելացվել են ֆիրմային загрузումների համար աբստրակցիաներ, օգտվողի տարածքի (uaccess) հասանելիություն և «page» կառուցվածքի աշխատանք։
    • x86-64 համակարգերի համար իրականացվել է նոր համակարգային կանչ uretprobe(), որը օպտիմացնում է uretprobe մոնիթորինգի մեխանիզմի աշխատանքը, որն օգտագործվում է օգտվողի տարածքի ծրագրում վերադարձվող արժեքների հետևելու համար։
    • Добавлены ядровые параметры командной строки: «reserve_mem» для резервирования именованной области памяти во время загрузки и «ramoops.mem_name» для использования в области памяти pstore, созданной через reserve_mem.
    • В контроллер памяти на базе cgroup в файл memory.reclaim добавлен параметр «swappiness», позволяющий настроить баланс между вытеснением анонимных страниц в раздел подкачки и освобождением страниц, занятых файловым кэшем.
    • Добавлен ioctl-интерфейс PROCMAP_QUERY для более эффективного поиска виртуальных областей памяти (Virtual Memory Area) в /proc/PID/maps.
    • В системный вызов mmap() добавлен флаг MAP_DROPPABLE для запроса памяти, которая никогда не будет сброшена в раздел подкачки и в случае нехватки может быть удалена.
    • Для архитектуры ARM64 реализована поддержка горячего подключения (перевода в режимы online/offline) физических и виртуальных CPU на системах с ACPI.
    • Для архитектуры RISC-V обеспечена поддержка горячего подключения памяти и добавлена поддержка GCC-плагина STACKLEAK, который инициализирует все переменные в стеке для предотвращения утечки информации из ядра через неинициализированные переменные, содержащие остатки ранее сохранённых данных.
    • Удалён механизм фиктивного маппинга памяти EFI на этапе загрузки, так как он не использовался на практике и мешал разработки в области конфиденциального выполнения. օգտագործման համար կիրառվում է KubeVirt տեխնոլոգիան, որը թույլ է տալիս աշխատեցնել դասական վիրտուալ մեքենաներ ուղղակի Kubernetes կոնտեյներում և արդեն ունի բոլոր անհրաժեշտ ինտեգրացիաները Cluster API-ի հետ՝ կառավարվող Kubernetes կլաստերներ սկսելու համար «երևակայական» Kubernetes կլաստերում:.
    • Прекращена поддержка платформы PowerPC 40x.
    • Повышены требования к версии GNU Make: для сборки ядра требуется как минимум выпуск GNU Make, опубликованный в 2013 году.
  • Վիրտուալիզացիան և անվտանգության միջոցները
    • Интегрированы патчи, значительно (до 15 раз) ускоряющие получение случайных чисел через системный вызов getrandom(). Оптимизация основана на использовании механизма vDSO (virtual dynamic shared object), который позволяет перенести обработчик системного вызова из ядра в пользовательское пространство и избежать переключений контекста. Загрузка реализации системного вызова происходит непосредственно в адресное пространство процесса ядром.
    • Для систем x86-64 включена новая реализация алгоритма шифрования AES-GCM, поддерживающая использование векторных инструкций VAES, VPCLMULQDQ и AVX512/AVX10 для ускорения вычислений. В тестах прирост производительности после перехода на новую реализацию достигает 156%. Ассемблерная реализация AES-GCM полностью переписана с учётом корректности, производительности, размера и исчерпывающего документирования кода.
    • Հաստատվել է միջուկի գործարկման հնարավորությունը որպես հյուրընկալող համակարգ վիրտուալացված միջավայրերում, որոնք օգտագործում են AMD SEV-SNP (Secure Nested Paging) պրոցեսորի ընդլայնումը՝ նախատեսված հիշողության ներդիրների անվտանգության ապահովման համար: Վիրտուալ մեքենաների ռեսուրսների հասանելիության լրացուցիչ մեկուսացման համար կարող է կիրառվել SVSM (Linux Secure VM Service Module) մոդուլը: Կորպուսում KVM Վիվերտառվել է հյուրընկալող համակարգերի գործարկման սկզբնական աջակցությունը, որոնք պաշտպանված են AMD SEV-SNP տեխնոլոգիայով:
    • Ավելացված է առանձին bucket slab allocator, որը միացված է CONFIG_SLAB_BUCKETS պարամետրի միջոցով և ապահովում է պաշտպանություն «heap spraying» տեխնիկայով իրականացվող հարձակման դեմ:
    • KVM կորպուսում ավելացվել է ioctl զանգը՝ հյուրընկալող համակարգին հիշողության կանխատեսանելի հարմարեցման համար մինչև դրա իրական գործարկումը:
  • Ձեռնարկային համակարգ
    • Ավելացած է sysctl պարամետր net.tcp_rto_min_us, որի միջոցով կարելի է կարգավորել TCP սոքետների կրկնաշրջափակման (retransmission timeout) նվազագույն ժամանակը:
    • ethtool օգտակարությանը ավելացված է հնարավորությունը՝ մանրակրկիտ կարգավորել Interrupt Handlers-ի կոնֆիգուրացիան՝ Net DIM ինտերֆեյս օգտագործող ցանցային ինտերֆեյսների համար:
  • Սարքավորումներ
    • AMDGPU վարիչում հայտնվել է Արմեն RDNA4 GPU-ին (GFX12) սկզբնական աջակցությունը: Ավելացել են DCN 4.0.x, GC 12.0, GMC 12.0, SDMA 7.0, MES12 և MMHUB 4.1 տեխնologien-ի աջակցությունը:
    • Հատուկ ուշադրություն է հատկացվում Xe drm վարիչի (Direct Rendering Manager) թարմացմանը Intel Xe հիմնադրույթների GPU-ների համար, որոնք օգտագործվում են Intel Arc ընտանիքի գրաֆիկական քարտերում և ինտեգրված գրաֆիկայի ծրագրում՝ Tiger Lake պրոցեսորներից սկսած: Ավելի լավ աջակցություն է տրամադրվում Battlemage, Arrow Lake և Lunar Lake միկրակազմերի GPU-ներին:
    • DRM-ում (Direct Rendering Manager) վերանայվել է մոնիտորների կողմից ցուցադրված EDID (Extended Display Identification Data) պարամետրերի ռահվիրան:
    • i915 վարիչում ավելացվել է GPU Battlemage Xe2-ի աջակցությունը և անջատված է CMRR (Content Match Refresh Rate) ռեժիմը:
    • msm DRM վարիչում (Qualcomm Adreno GPU) ավելացվել է SM7150 դաշտը և GPU X185 և a505-ի աջակցությունը:
    • Ավելացվել է Lincoln Tech Sol LCD185-101CT, Microtips Technology 13-101HIEBCAF0-C, Microtips Technology MF-103HIEB0GA0, BOE nv110wum-l60, IVO t109nw41, WL-355608-A8, PrimeView PM070WL4, Lincoln Technologies LCD197, Ortustech COM35H3P70ULC, AUO G104STN01, K&d kd101ne3-40ti էկրանային պանելների աջակցությունը:
    • Անձաջին ենթակառուցվածքում ավելացվել է Intel Panther Lake, Asahi Kasei AK4619, Cirrus Logic CS530x, Everest Semiconductors ES8311, NXP i.MX95, LPC32xx, Qualcomm LPASS v2.5, WCD937x, Realtek RT1318, RT1320 և Texas Instruments PCM5242 ի աջակցությունը:
    • Ներդիրը կատարվել է ARM SoC Snapdragon X Elite-ի աջակցությունը, որում օգտագործվում է Qualcomm Oryon-ի 12-միջուկ CPU և Qualcomm Adreno GPU: Չիպը ուղղված է օգտագործման համար նոթբուքներում և ПК-ներում, և գերազանցում է Apple M3 և Intel Core Ultra 155H Չիպերին շատ փորձաքննություններով: 6.11 միջուկում ավելացված փոփոխություններն առնչվում են Adreno X1-85 GPU-ի և էներգիայի սպառման կառավարման աջակցությանը: Snapdragon X Elite SoC վրա հիմնված սարքերի ցանկը ընդգրկում է ASUS Vivobook S15 և Lenovo Yoga Slim7x նոթբուքները:

Միաժամանակ լատինամերիկյան Ազատ ծրագրակազմի հիմնադրամը բանաձևեց ամբողջովին ազատ միջուկի 6.11 տարբերակը՝ Linux-libre 6.10-gnu, որը մաքրված է անհասանելի բաղադրիչների կամ կոդի հատվածների ներմուծման ծրագրից, որոնց օգտագործման ոլորտը սահմանափակված է արտադրողի կողմից: 6.11 թողարկման մեջ թարմացվել է մաքրման կոդը mdgpu, adreno, vgxy61, atomisp, btnxpuart, prueth և tas2781 վարորդներում: Նոր amdgpu isp, tn40, rtl8192du, cs40l50, rt1320 և pcie-rcar-gen4 վարորդների մաքրումները կատարվել են: dts-ֆայլերում (devicetree) Aarch64 معماری համար խողովակների անունների մաքրում իրականացվել է: Տեղադրման ծրագրերի բեռն առանց նախազգուշացումների և հարցերի (nowait-nowarn) նոր տարբերակ է ավելացվել: Ավելացված է ֆրմվորքերի բեռնման ծրագրերի համար Rust լեզվով ժամանակակատարի կոդը:

Ընտանիք: opennet.ru

Գնել հուսալի հյուրընկալում DDoS պաշտպանությամբ, VPS VDS սերվերներով 🔥 Գնել հուսալի հյուրընկալում DDoS պաշտպանությամբ, VPS VDS սերվերներով | ProHoster