İki aylıq inkişafdan sonra Linus Torvalds Linux 6.11 nüvəsinin buraxılışını təqdim etdi. Ən diqqətəlayiq dəyişikliklər arasında: blok səviyyəsində atomik yazma əməliyyatlarının dəstəyi, io_uring-də bind() və listen() əməliyyatlarının dəstəyi, proqram işə salma kəsilməsi üçün yeni kilid mexanizmi, yaddaşa köçürülmüş icra edilə bilən fayllara yazma imkanı, Rust dilində blok cihazları üçün sürücü yazmaq dəstəyi və getrandom() çağırışının optimallaşdırılmasıdır.
Yeni versiyaya 2078 inkişafçıdan 15130 düzəliş daxil edilib, yamanlama faylının ölçüsü 85 MB (dəyişikliklər 13282 faylı əhatə edir, 985857 sətir kod əlavə edilib, 268915 sətir silinib). Əvvəlki buraxılışda 1989 inkişafçıdan 14564 düzəliş var idi, yamanlama faylının ölçüsü 41 MB (6.11 nüvəsi üçün yamanlama faylından iki dəfə kiçikdir). 6.11-də təqdim edilən bütün dəyişikliklərin 46%-i cihaz sürücüləri ilə bağlıdır, təxminən 17%-i aparat arxitekturalarına spesifik kodun yenilənməsi ilə bağlıdır, 10%-i şəbəkə yığını ilə, 5%-i fayl sistemləri ilə və 3%-i nüvənin daxili alt sistemləri ilə əlaqədardır.
Linux 6.11-dəki əsas yeniliklər:
- Disk alt sistemi, giriş/çıxış və fayl sistemləri
- Blok səviyyəsində atomik yazma əməliyyatlarının dəstəyi təqdim edilmişdir; bu əməliyyatlarda yaddaşda olan bir blok qruplarını ya tam olaraq, ya da heç biri yazılır, bu da avadanlığın nasazlığı zamanı yalnız bir hissənin yazılmasından və digər hissədə köhnə məlumatın qalmasından qorunmağa imkan verir. Atomik yazma rejimini aktivləşdirmək üçün pwritev() sistem çağırışına RWF_ATOMIC flag əlavə edilmişdir. Atomik yazma dəstəyinin (atomic_write_unit_min, atomic_write_unit_max və atomic_write_segments_max) xüsusi fayllara aid məlumatlarını statx() funksiyası ilə əldə etmək mümkündür.
- İşləyən proseslərlə bağlı icra edilə bilən fayllara yazma dəstəyi təqdim olunmuşdur. Əvvəllər, digər Unix-oxşar sistemlərdə olduğu kimi, nüvə aktiv bir prosesin icra edilə bilən faylına yazma cəhdi zamanı xəta verirdi. Bu məhdudiyyət aradan qaldırılıb, çünki onun praktik mənası yoxdur.
- Rust dilində blok cihazları üçün sürücü inkişaf etdirmək imkanı təqdim edilib. Nüvəyə Rust dilində yazılmış null_blk sürücüsünə bənzər rnull sürücüsü əlavə olunub.
- Btrfs fayl sistemində 'rescue=' montaj variantında 'ignoremetacsums' və 'ignoresuperflags' yeni rejimlərinin dəstəyi tətbiq edilib, hansı ki, FS-nin nasazlıqdan bərpası zamanı bəzi yoxlamaları istifadəçi mühitinə çıxarmaq üçün istifadə oluna bilər. Dinamik qrupun blokların geri qaytarılması əməliyyatının həyata keçirilməsi, FS-də tamamlanmamış doluluq vəziyyətində boş yerin çatışmazlığını istisna etmək üçün yenidən tərtib edilmişdir.
- ntfs3 fayl sistemində sıxılmış və dəyişməz faylları təyin edən 'compressed' və 'immutable' atributlarının dəstəyi təqdim edilib.
- F2FS və Ext4 fayl sistemlərində fayl adlarının böyük və kiçik hərf uyğunsuzluğuna (casefold) diqqət yetirilmədən işlənməsi qstr-string formasında adların saxlanılması ilə asanlaşdırılıb, bu da əlavə hərf çevrilmələrini aradan qaldırır.
- Ext4 fayl sistemində jbd2_transaction_committed funksiyasının icrası çox sürətli saxlama qurğularında performans artımını artırmaq üçün optimallaşdırılıb (testlərdə saniyədə emal olunan əməliyyatların artımı 20%-ə çatır).
- statx() sistem çağırışı üçün boş fayl yolu olan NULL işarəsini göndərmək imkanı verilib, əgər AT_EMPTY_PATH flaqi təyin edilibsə.
- open_by_handle_at() sistem çağırışında fayla giriş hüquqlarının yoxlanılması dözümlü olub, əgər CAP_DAC_READ_SEARCH hüququna malik deyilsə, başlanğıc ad sahəsində axtarış etmək üçün budur. Əvvəllər CAP_DAC_READ_SEARCH hüququ olmadan sistem çağırışını konteynerlərdə istifadə etmək mümkün deyildi.
- listmount() və statmount() sistem çağırışlarının imkanları genişləndirilib. listmount() çağırışında LISTMOUNT_REVERSE flaqi əlavə edilib, bu, montaj nöqtələri cədvəlini ters qaydada (ən yeni qeydlər yuxarıda) göstərməyə imkan verir. statmount() çağırışında fayl sisteminin montajında tətbiq edilən seçimlərin göstərişi reallaşdırılıb. Hər iki sistem çağırışında başlanğıc ad sahəsinə giriş olmadan işləmə icazə verilir (yalnız lokal və ya xarici ad sahəsinə giriş olduqda).
- Bcachefs fayl sistemində problemli məlumatların avtomatik şəffaf bərpasını həyata keçirən dəstək tətbiq edilib, bu, xəta düzəltmə kodlarından istifadə edir — əgər oxuma zamanı giriş/çıxış xətası yaranırsa və ya yoxlama cəmi uyğunsuzdursa, problemli məlumat bloku, bərpa üçün artıqlıq varsa, avtomatik yenidən yazılır.
- Yaddaş və sistem xidmətləri
- Proses interrupter handler'larının (BH, bottom-half) yeni bloklama mexanizmini həyata keçirən patçlar qəbul edilib, bu, istifadə olunan məlumat strukturlarını bloklayır, lakin əlaqəli olmayan kodun paralel icrasını bloklamır. Bu dəyişikliyin yalnız real-time rejimində işləyən nüvələr üçün gecikmələri azaltmaya deyil, adi nüvələrin performansını artırmağa imkan verdiyi bildirilir (məsələn, bəzi yük növləri üçün şəbəkə alt sisteminin performansının 14.5%-ə qədər artımı müşahidə olunur).
- Asinxron giriş/çıxış io_uring alt sisteminə bind() və listen() funksiyalarını həyata keçirmək üçün əməliyyatlar dəstəyi əlavə edilib, bunlar şəbəkə soketlərinin bağlanma əlaqələrini yaratmaq üçün istifadə olunur.
- NSFS (Namespace FS) üçün IOCTL əməliyyatlarının dəsti əlavə edildi ki, bu da ad məkanları ilə işləməyə imkan tanıyır. Yeni IOCTL-lar proses identifikatorlarını və iplik qruplarını müxtəlif PID identifikatorları məkanları arasında çevirməyə imkan verir. PIDFD identifikatorlarından istifadə edərək fərdi ad məkanlarındakı proseslərin fayl təsvirçilərini müəyyən etməyə imkan verən oxşar IOCTL-lar da pidfd pseudofs-a əlavə olunub.
- BPF proqramları üçün bit maskaları ilə işləməyə imkan verən yeni iterator dəstəyi əlavə edildi; məsələn, bu, cpumask kimi yaddaş sahələrində ayrı bitlərin üstündən keçməyə imkan tanıyır. İstifadəçi məkanındakı proseslərə obyektin struct_ops-un ayrılması (detach/unregister) barədə bildirişlərin göndərilməsini təmin edən mexanizm əlavə edildi. Kptr, bpf_rb_root və bpf_list_head tiplərindəki elementlərə malik massivləri elan etməyə imkan verən genişləndirilmiş tip spektri təqdim olundu. BPF pseudokodunda tiplərin yoxlanılması üçün daha etibarlı Split BTF (BPF Tip Format) mexanizmi təklif edildi.
- Bir cihazın digərindən əvvəl aktivləşdirilməli olduğu hallarda enerji qaynağının müəyyən bir ardıcıllıqla icrasına imkan verən alt sistem əlavə edildi (məsələn, Qualcomm platformalarında simsiz çiplerin aktivləşdirilməsi zamanı).
- GPIO istifadə edərək sadə siqnal məntiq analizatorlarının yaradılmasına imkan verən
- Birdəfəlik initialized edilmiş dəyişənlər əvəzinə istifadə oluna bilən runtime konstantlarının dəstəyi əlavə edildi. Məsələn, runtime konstantları dentry üçün göstərici və ölçülü saxlayan dəyişənlər əvəzinə istifadə oluna bilər. Bu dəyişənlər yükləmə vaxtı təqdim olunur və sonra əsla dəyişdirilmir. Məqsəd, bu cür dəyişənlərin dəyərlərini birbaşa koda daxil etməkdir ki, bu da göstəricilərlə manipulyasiyaların yaratdığı xərcləri aradan qaldırsın.
- Rust-for-Linux şöbəsindən dəyişikliklərin köçürülməsi davam edir, bu da Rust dilini sürücülər və kernel modulları üçün ikinci dil kimi istifadə etməyə imkan verir (Rust-nın dəstəyi standart olaraq aktiv deyil və kernelin mütləq inşa asılılıqlarına daxil edilmir). Rust 1.80-ın dəstəyi əlavə edildi (minimal versiya olaraq hələ də Rust 1.78 dəstəyi edilir). Blok cihazlarının sürücülərini inkişaf etdirmək üçün əvvəlki vasitələr, yeni versiyada firmware yükləmə, istifadəçi məkanına (uaccess) giriş və
- x86-64 sistemləri üçün, istifadəçi məkanındakı funksiyaların qaytardığı dəyərləri izləməyə imkan verən uretprobe() sistem çağırışını optimallaşdıran yeni bir sistem çağırışı həyata keçirildi.
- Yadrosunun aşağıdakı komandası parametrləri əlavə edildi: "reserve_mem" - yüklemeden əvvəl adlandırılmış yaddaş sahəsinin rezerv olunması üçün və "ramoops.mem_name" - reserve_mem vasitəsilə yaradılan pstore yaddaş sahəsində istifadə üçün.
- Cgroup-a əsaslanan yaddaş idarəçisinə, yaddaşın atılma konfiqurasiyalarını müəyyən edən memory.reclaim faylında, anonim yaddaş səhifələrinin mübadiləyə verilməsi ilə fayl önbelleyisi üçün ayrılmış yaddaş səhifələrinin azad edilməsi arasında tarazlığı dəyişməyə imkan verən "swappiness" parametri əlavə edildi.
- Virtual yaddaş bölgələrini (Virtual Memory Area) daha effektiv axtarmaq üçün /proc/PID/maps-da PROCMAP_QUERY ioctl interfeysi əlavə edildi.
- Mmap() sistem çağırışına, heç vaxt mübadiləyə verilməyəcək yaddaşı tələb etmək üçün MAP_DROPPABLE flaqı əlavə edildi; yaddaş çatışmazlığı halında bunun silinməsi mümkündür.
- ARM64 arxitekturası üçün ACPI sistemlərində fiziki və virtual CPU-ların onlayn/offlayn rejimlərinə isti qoşulma dəstəyi təmin edildi.
- RISC-V arxitekturası üçün yaddaşın isti qoşulmasına dəstək təmin edildi və GCC plugini STACKLEAK əlavə edildi (bu, əvvəlki yaddaşda saxlanılan məlumatların sızmasının qarşısını almaq üçün yığın daxilində olan bütün dəyişənlərin ilkinləşdirilməsini həyata keçirir).
- Yükleme mərhələsində EFI-nin xəyal yaddaş xəritə mexanizmi silindi. Bu mexanizm praktik olaraq istifadə edilməyib və gizli icra sahəsində inkişaflara mane olurdu. virtual maşınlar.
- PowerPC 40x platformasına dəstək dayandırıldı.
- GNU Make versiyasına olan tələblər artırıldı - kernelin qurulması üçün 2013-cü ildən sonra buraxılan GNU Make-in ən azı bir versiyası tələb olunur.
- Virtualizasiya və təhlükəsizlik
- Random sayların alınmasını (getrandom() sistem çağırışı vasitəsilə) əhəmiyyətli dərəcədə (15 dəfə qədər) sürətləndirən patchlər inteqrasiya edildi. Optimizasiya, sistem çağırışının emalını kernelin istifadəçi mühitinə köçürmək və kontekst dəyişiklərindən qaçmaq üçün vDSO (virtual dinamik paylaşılan obyekt) mexanizminin istifadəsinə əsaslanır.
- x86-64 sistemləri üçün AES-GCM şifrələmə alqoritminin yeni bir icrası aktiv edildi, vektor təlimatlarının VAES, VPCLMULQDQ və AVX512/AVX10 istifadəsini dəstəkləyir. Yeni icraya keçdikdən sonra qoyulan testlərdə performans artımı 156%-ə çatdı. AES-GCM-in assembler icrası tamamilə düzgünlük, performans, ölçü və kodun tam sənədləşdirilməsi ilə yenidən yazılıb.
- İstifadəçi sistemləri üçün AMD SEV-SNP (Təhlükəsiz Nesting Paging) prosessor genişləndirilməsi istifadə edən virtual mühitlərdə nüvəni qonaq sistemi kimi işə salmaq imkanı həyata keçirilib. Virtual maşınların resurslara girişini əlavə şəkildə izolyasiya etmək üçün SVSM (Linux Secure VM Service Module) modulu tətbiq oluna bilər. Hipervezor KVM AMD SEV-SNP ilə qorunan qonaq sistemlərinin işə salınması üçün ilkin dəstək əlavə edilib.
- Hanidən "heap spraying" texnikası ilə edilən hücumlara qarşı mühafizə təmin edən ayrı bir bucket slab allocator əlavə edilib, bu CONFIG_SLAB_BUCKETS parametri ilə aktivləşdirilir.
- KVM hipervezoruna qonaq sisteminə real işə salınmadan əvvəl yaddaşın proaktiv ayrılması üçün ioctl çağırışı əlavə edilib.
- Şəbəkə alt sistemi
- TCP soketləri üçün minimum ötürmə vaxtını (retransmission timeout) tənzimləməyə imkan verən net.tcp_rto_min_us sysctl parametri əlavə edilib.
- Ethtool utilitəsinə Net DIM interfeysini istifadə edən şəbəkə interfeysləri üçün kəsilmə işləyicilərinin konfiqurasiyasını incə tənzimləməyə imkan verən xüsusiyyət əlavə edilib.
- Avadanlıq
- AMDGPU sürücüsündə GPU AMD RDNA4 ("GFX12") üçün ilkin dəstək təsdiq edilib. DCN 4.0.x, GC 12.0, GMC 12.0, SDMA 7.0, MES12 və MMHUB 4.1 texnologiyalarına dəstək əlavə edilib.
- Intel Xe arxitekturasına əsaslanan Xe drm sürücüsündə (Direct Rendering Manager) inkişaf etdirilməyə davam edilir. Bu arxitektura Intel Arc ailəsinə aid qrafik kartlarında və Tiger Lake prosessorlarından başlayaraq inteqrasiya olunmuş qrafikada istifadə olunur. Battlemage, Arrow Lake və Lunar Lake mikroarxitekturaları əsasında GPU-nun dəstəyi yaxşılaşdırılıb.
- DRM (Direct Rendering Manager) sistemində monitor tərəfindən təqdim edilən EDID (Extended Display Identification Data) parametrlərinin emal edicisi yenidən yazılıb.
- i915 sürücüsündə Battlemage Xe2 GPU üçün dəstək əlavə edilib və standart olaraq CMRR (Content Match Refresh Rate) rejimi aktiv edilib.
- msm DRM sürücüsündə (Qualcomm Adreno GPU) SM7150 platforması və X185, a505 GPU-ları üçün dəstək əlavə edilib.
- 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 ekran panellərinin dəstəyi əlavə edilib.
- Səs sistemində Intel Panther Lake, Asahi Kasei AK4619, Cirrus Logic CS530x, Everest Semiconductors ES8311, NXP i.MX95, LPC32xx, Qualcomm LPASS v2.5, WCD937x, Realtek RT1318, RT1320 və Texas Instruments PCM5242 çip və kodlayıcılarının dəstəyi əlavə edilib.
- Snapdragon X Elite ARM SoC dəstəyi təmin edən son dəyişiklərin edilməsi, burada Qualcomm Oryon'un öz 12-nüvəli CPU-su və Qualcomm Adreno GPU-su istifadə olunur. Bu çip noutbuklar və PC-lər üçün nəzərdə tutulub, Apple M3 və Intel Core Ultra 155H çiplərini bir çox performans testlərində geridə qoyur. 6.11 nüvəsinə ərz edilən dəyişikliklər Adreno X1-85 GPU-nun dəstəyi və enerji istehlakının idarə olunması ilə əlaqədardır. Snapdragon X Elite əsasında olan cihazlar arasında ASUS Vivobook S15 və Lenovo Yoga Slim7x noutbuklarının dəstəyi qeyd olunur.
Eyni zamanda Latın Amerikası Açıq Mənbə Fondunun tamamilə açıq bir 6.11 nüvəsi — Linux-libre 6.10-gnu variantı, istehsalçı tərəfindən məhdudlaşdırılan azad olmayan komponentləri və ya kod parçalarını ehtiva edən firmanın firmware və sürücülərdən təmizlənmişdir. 6.11 buraxılışında mdgpu, adreno, vgxy61, atomisp, btnxpuart, prueth və tas2781 sürücülərində blobları təmizləyən kod yenilənmişdir. Yeni sürücülər olan amdgpu isp, tn40, rtl8192du, cs40l50, rt1320 və pcie-rcar-gen4 təmizlənmişdir. Aarch64 arxitekturası üçün dts-fayllarındakı blobların adları təmizlənmişdir. Firmware-ləri yükləmək üçün xəbərdarlıqlar və sorğular verməyən (nowait-nowarn) versiya primitivlər əlavə olunmuşdur. Rust dilində firmware yükləmək üçün primitivləri müəyyən etmək üçün kod əlavə olunmuşdur.
Mənbə: opennet.ru
