Linux 6.1 çekirdek sürümü

İki aylık geliştirme sürecinin ardından Linus Torvalds, Linux çekirdeği 6.1'in sürümünü sundu. En dikkate değer değişiklikler arasında: Rust dilinde sürücü ve modül geliştirme desteği, kullanılan bellek sayfalarını belirleme mekanizmasının modernizasyonu, BPF programları için özel bir bellek yöneticisi, bellek sorunlarını teşhis etmek için bir sistem KMSAN, KCFI (Kernelk Control) -Akış Bütünlüğü) koruma mekanizması, Maple yapı ağacının tanıtılması.

Yeni sürüm, 15115 geliştiriciden gelen 2139 düzeltmeyi içeriyor; yama boyutu 51 MB, bu da 2 ve 6.0 çekirdeklerindeki yamaların boyutundan yaklaşık 5.19 kat daha küçük. Değişiklikler 13165 dosyayı etkiledi, 716247 satır kod eklendi ve 304560 satır silindi. 45'de yapılan değişikliklerin yaklaşık %6.1'i aygıt sürücüleriyle, değişikliklerin yaklaşık %14'ü donanım mimarilerine özgü kodların güncellenmesiyle, %14'ü ağ yığınıyla, %3'ü dosya sistemleriyle ve %3'ü dahili çekirdek alt sistemleriyle ilgilidir.

Çekirdek 6.1'teki önemli yenilikler:

  • Bellek ve sistem hizmetleri
    • Sürücüleri ve çekirdek modüllerini geliştirmek için Rust'u ikinci dil olarak kullanma yeteneği eklendi. Rust'u desteklemenin temel nedeni, bellekle çalışırken hata yapma olasılığını azaltarak güvenli ve kaliteli aygıt sürücüleri yazmayı kolaylaştırmaktır. Rust desteği varsayılan olarak devre dışıdır ve Rust'un gerekli çekirdek yapısı bağımlılığı olarak dahil edilmesine yol açmaz. Çekirdek şu ana kadar yamaların minimum düzeyde sadeleştirilmiş bir sürümünü benimsedi; bu sürüm, kod satırının 40'tan 13 bin satıra düşürülmesini sağladı ve Rust dilinde yazılmış basit bir çekirdek modülü oluşturmaya yetecek kadar yalnızca gerekli minimum miktarı sağladı. Gelecekte, diğer değişikliklerin Rust-for-Linux şubesinden aktarılarak mevcut işlevselliğin kademeli olarak arttırılması planlanmaktadır. Buna paralel olarak, Rust dilinde NVMe sürücüleri, 9p ağ protokolü ve Apple M1 GPU için sürücüler geliştirmek amacıyla önerilen altyapıyı kullanmak için projeler geliştiriliyor.
    • EFI'li AArch64, RISC-V ve LoongArch mimarilerini temel alan sistemler için, sıkıştırılmış çekirdek görüntülerini doğrudan yükleme yeteneği uygulanmıştır. Çekirdek görüntülerini yüklemek, çalıştırmak ve boşaltmak için doğrudan EFI zboot'tan çağrılan işleyiciler eklendi. EFI protokol veritabanından protokolleri yüklemeye ve silmeye yönelik işleyiciler de eklenmiştir. Önceden, paketin açılması ayrı bir önyükleyici tarafından gerçekleştiriliyordu, ancak artık bu, çekirdeğin kendisindeki bir işleyici tarafından yapılabilir - çekirdek görüntüsü bir EFI uygulaması olarak oluşturulur.
    • Kompozisyon, farklı performans özelliklerine sahip bellek bankalarını ayırmanıza olanak tanıyan, çok düzeyli bir bellek yönetimi modelinin uygulanmasıyla yamaların bir kısmını içerir. Örneğin, en yoğun kullanılan sayfalar en hızlı bellekte saklanabilirken, en nadir kullanılan sayfalar nispeten yavaş bellekte saklanabilir. Çekirdek 6.1, hızlı belleğe yükseltilebilmeleri için yoğun olarak kullanılan sayfaların yavaş bellekte nerede bulunduğunu belirleyen bir mekanizma sunar ve ayrıca bellek katmanları ve bunların göreceli performansı hakkında genel bir kavram sunar.
    • İki kuyruğa dayalı eski LRU (En Son Kullanılan) uygulamasını, hangi bellek sayfalarının gerçekte kullanımda olduğunu ve hangilerinin dışarı itilebileceğini daha iyi belirleyen çok aşamalı bir yapıyla değiştiren MGLRU (Çok Nesil LRU) mekanizmasını içerir. takas bölümü.
    • Oracle mühendisleri tarafından önerilen ve "kırmızı-siyah ağaç" yapısının daha etkili bir alternatifi olarak konumlandırılan "akçaağaç ağacı" veri yapısına destek eklendi. Akçaağaç ağacı, aralık indekslemeyi destekleyen ve modern işlemcilerin önbelleğini verimli bir şekilde kullanmak üzere tasarlanmış bir B-ağacı çeşididir. Bazı bellek yönetimi alt sistemleri halihazırda akçaağaç ağacına aktarılmıştır ve bu da performansları üzerinde olumlu bir etki yaratmıştır. Gelecekte, aralık kilitlemeyi uygulamak için akçaağaç ağacı kullanılabilir.
    • Crash_kexec() çağrısı yoluyla acil durum kapatmasını başlatmak için özel olarak tasarlanmış "yıkıcı" BPF programları oluşturma yeteneği, BPF alt sistemine eklendi. Bu tür BPF programları, belirli bir zamanda bir kilitlenme dökümü oluşturulmasını başlatmak için hata ayıklama amacıyla gerekli olabilir. Bir BPF programını yüklerken yıkıcı işlemlere erişmek için BPF_F_DESTRUCTIVE bayrağını belirtmeniz, sysctl kernel.destructive_bpf_enabled'ı etkinleştirmeniz ve CAP_SYS_BOOT haklarına sahip olmanız gerekir.
    • BPF programları için, belirli bir iş parçacığının veya görevin kaynaklarını (dosyalar, vma, işlemler vb.) numaralandırmanın yanı sıra cgroup öğelerini numaralandırmak da mümkündür. Kullanıcı halka arabellekleri oluşturmak için yeni bir harita türü uygulandı.
    • BPF bağlamında standart kmalloc()'a göre daha güvenli bellek ayırma sağlayan BPF programlarına (bellek ayırıcı) bellek ayırma için özel bir çağrı eklendi.
    • Değişikliklerin ilk kısmı entegre edildi ve BPF programları biçiminde uygulanan HID (İnsan Arayüz Cihazı) arayüzüne sahip giriş cihazları için sürücüler oluşturma yeteneği sağlandı.
    • Çekirdek, 5.1 sürümünde kullanımdan kaldırılan ve 5.18 ve 5.19 sürümlerinden bu yana büyük mimariler için devre dışı bırakılan a.out çalıştırılabilir dosya formatını desteklemek için kodu tamamen kaldırmıştır. A.out formatı Linux sistemlerinde uzun süredir kullanımdan kaldırılmıştır ve a.out dosyalarının oluşturulması, varsayılan Linux yapılandırmalarındaki modern araçlar tarafından desteklenmemektedir. a.out dosyaları için yükleyici tamamen kullanıcı alanında uygulanabilir.
    • Loongson 3 5000 işlemcilerinde kullanılan ve yeni RISC ISA'yı uygulayan, MIPS ve RISC-V'ye benzer LoongArch talimat seti mimarisini temel alan sistemler için, performans ölçüm olayları (perf olayları), kexec, kdump ve BPF JIT derlemesi desteği uygulanır. .
    • io_uring eşzamansız G/Ç arayüzü, toplu çalışma için kullanılabilen ve ön alım uygulamalarından kaynaklanan gecikme sorunlarını önlemek için kullanılabilen, halka arabelleğiyle ilgili işin bir uygulama isteği yapılana kadar geçici olarak ertelenmesine olanak tanıyan yeni bir mod olan IORING_SETUP_DEFER_TASKRUN'u sunar. Yanlış zaman.
    • Kullanıcı alanındaki işlemlere, bir dizi normal bellek sayfasının bir dizi büyük bellek sayfasına (Şeffaf Büyük Sayfalar) dönüştürülmesini başlatma yeteneği verilir.
    • FS'deki erişim haklarını kullanarak userfaultfd() sistem çağrısının işlevselliğine erişime izin veren /dev/userfaultfd cihazının uygulaması eklendi. userfaultfd işlevi, kullanıcı alanındaki ayrılmamış bellek sayfalarına (sayfa hataları) erişim için işleyiciler oluşturmanıza olanak tanır.
    • GNU Make yardımcı programının sürümüne ilişkin gereksinimler artırıldı; çekirdeği oluşturmak için artık en az 3.82 sürümü gerekiyor.
  • Disk Alt Sistemi, G/Ç ve Dosya Sistemleri
    • Diğer şeylerin yanı sıra Btrfs dosya sisteminde önemli performans optimizasyonları yapıldı; FIEMAP ioctl çağrısının performansı büyük ölçüde artırıldı. io_uring kullanan uygulamalar için eşzamansız arabelleğe alınmış yazma desteği eklendi. "Gönderme" işlemine fs-verity ile korunan dosyalar için destek eklendi.
    • Ext4 dosya sistemi, günlük bakımı ve salt okunur çalışmayla ilgili performans optimizasyonları ekledi.
    • Salt okunur modda erişilebilen bölümlerde kullanılmak üzere tasarlanan EROFS (Gelişmiş Salt Okunur Dosya Sistemi) dosya sistemi, farklı dosya sistemlerinde çoğaltılan verileri paylaşma yeteneğini uygular.
    • Bir dosyaya doğrudan G/Ç uygulanıp uygulanamayacağına ilişkin bilgileri görüntülemek için statx() sistem çağrısı eklendi.
    • FUSE (Kullanıcı Alanındaki Dosya Sistemleri) alt sistemine O_TMPFILE bayrağıyla geçici dosyalar oluşturma desteği eklendi.
  • Sanallaştırma ve Güvenlik
    • CFI (Kontrol Akışı Bütünlüğü) koruma mekanizmasının uygulaması değiştirildi; bir işlevin her dolaylı çağrısından önce, normal yürütme sırasının (kontrol akışı) ihlaline yol açabilecek bazı tanımlanmamış davranış biçimlerini tespit etmek için kontroller eklendi. Bellekte saklanan işlevlere yönelik işaretçileri değiştiren açıklardan yararlanılmasının sonucu. LLVM projesindeki standart CFI uygulamasının yerini yine Clang kullanımına dayanan ancak düşük seviyeli alt sistemleri ve işletim sistemi çekirdeklerini korumak için özel olarak uyarlanmış bir seçenek aldı. LLVM'de Clang 16 sürümünde yeni bir uygulama sunulacak ve "-fsanitize=kcfi" seçeneği ile etkinleştirilecektir. Yeni uygulamanın temel farkı, bağlantı zamanı optimizasyonlarına (LTO) bağlı olmaması ve işlev işaretçilerinin atlama tablosundaki bağlantılarla değiştirilmesiyle sonuçlanmamasıdır.
    • LSM modülleri (Linux Güvenlik Modülü) için, ad alanları oluşturmak amacıyla işlemleri engelleyen işleyiciler oluşturmak mümkündür.
    • BPF programlarında PKCS#7 dijital imzalarını doğrulamak için araçlar sağlanmıştır.
    • Çekirdek 5.6'da yanlışlıkla kaldırılan engellemesiz modda açma yeteneği (O_NONBLOCK), /dev/random'a geri döndürüldü.
    • X86 mimarisine sahip sistemlerde, bellek sayfalarının eş zamanlı yürütme ve yazmaya izin veren çekirdek alt sistemleri tarafından eşlenmesi durumunda bir uyarı eklendi. Gelecekte bu tür hafıza haritalamanın tamamen yasaklanması olasılığı değerlendirilmektedir.
    • Çekirdekteki başlatılmamış bellek kullanımının yanı sıra kullanıcı alanı ile cihazlar arasındaki başlatılmamış bellek sızıntılarını tespit etmek için KMSAN (Çekirdek Bellek Temizleyici) hata ayıklama mekanizması eklendi.
    • Getrandom çağrısında kullanılan kripto güvenli CRNG sözde rastgele sayı üretecinde iyileştirmeler yapıldı. Değişiklikler VPN WireGuard'ın yazarı Jason A. Donenfeld tarafından hazırlandı ve sözde rastgele tamsayı çıkarmanın güvenliğini artırmayı amaçlıyor.
  • Ağ alt sistemi
    • TCP yığını, her ad alanı için soket karma tablolarını ayrı ayrı kullanma olanağı sağlar (varsayılan olarak devre dışıdır); bu, çok sayıda ad alanına sahip sistemlerde performansı artırır.
    • Eski DECnet protokolünü desteklemek için kod kaldırıldı. DECnet kullanan uygulamaların derlenmesine izin vermek için kullanıcı alanı API taslakları yerinde bırakılır, ancak bu uygulamalar ağa bağlanamayacaktır.
    • Netlink protokolü belgelenmiştir.
  • Оборудование
    • Amdgpu sürücüsü, çok yüksek çözünürlükleri destekleyen ekranlarla bilgi alışverişinde bulunurken kayıpsız veri sıkıştırması için DSC (Görüntü Akışı Sıkıştırma) iletme desteği ekledi. AMD RDNA3 (RX 7000) ve CDNA (Instinct) platformlarına destek sağlanmasına yönelik çalışmalar devam ediyor. DCN 3.2, SMU 13.x, NBIO 7.7, GC 11.x, PSP 13.x, SDMA 6.x ve GMC 11.x IP bileşenleri için destek eklendi. amdkfd sürücüsü (Polaris gibi ayrı AMD GPU'lar için) GFX 11.0.3 desteği sağlar.
    • i915 (Intel) sürücüsü Meteor Lake GPU desteğini içerir. Meteor Lake ve daha yeni GPU'lar DP 2.0 (DisplayPort) arayüzünü destekler. Alder Lake S mikro mimarisini temel alan video kartları için tanımlayıcılar eklendi.
    • Apple Silicon, Intel SkyLake ve Intel KabyLake işlemcilerinde uygulanan ses alt sistemleri için destek eklendi. CS35L41 HDA ses sürücüsü uyku modunu destekler. Entegre ses çipleri Apple Silicon, AMD Rembrant DSP'ler, AMD Pink Sardine ACP 6.2, Everest ES8326, Intel Sky Lake ve Kaby Lake, Mediatek MT8186, NXP i.MX8ULP DSP'ler, Qualcomm SC8280XP, SM8250 için ASoC (Çip Üzerinde ALSA Sistemi) desteği eklendi. SM8450 ve Texas Instruments SRC4392
    • Samsung LTL101AL01, B120XAN01.0, R140NWF5 RH, Densitron DMT028VGHMCMI-1A TFT, AUO B133UAN02.1, IVO M133NW4J-R3, Innolux N120ACA-EA1, AUO B116XAK01.6, BOE NT116WHM -N21 için destek eklendi , INX N116BCA-EA2 , INX N116BCN-EA1, Multi-Inno Teknolojisi MI0800FT-9.
    • Baykal-T1 SoC'de kullanılan AHCI SATA denetleyicileri için destek eklendi.
    • Bluetooth çipleri MediaTek MT7921, Intel Magnetor (CNVi, Entegre Bağlantı), Realtek RTL8852C, RTW8852AE ve RTL8761BUV (Edimax BT-8500) için destek eklendi.
    • Qualcomm kablosuz modülleri için ath11k sürücüsü, 160 MHz aralığında spektral tarama desteği ekledi, çok iş parçacıklı NAPI uyguladı ve Qualcomm WCN6750 Wi-Fi yongaları için geliştirilmiş destek sağladı.
    • PinePhone klavye, InterTouch dokunmatik yüzeyler (ThinkPad P1 G3), X-Box Adaptive Controller, PhoenixRC Flight Controller, VRC-2 Car Controller, DualSense Edge Controller, IBM Operation Panel, XBOX One Elite uzaktan kumandaları, tabletler XP-PEN Deco Pro S için sürücüler eklendi ve Intuos Pro Small (PTH-460).
    • Aspeed HACE (Hash ve Crypto Engine) şifreleme hızlandırıcıları için sürücü eklendi.
    • Entegre Thunderbolt/USB4 Intel Meteor Lake denetleyicileri için destek eklendi.
    • Sony Xperia 1 IV, Samsung Galaxy E5, E7 ve Grand Max, Pine64 Pinephone Pro akıllı telefonlar için destek eklendi.
    • ARM SoC ve anakartlar için destek eklendi: AMD DaytonaX, Mediatek MT8186, Rockchips RK3399 ve RK3566, TI AM62A, NXP i.MX8DXL, Renesas R-Car H3Ne-1.7G, Qualcomm IPQ8064-v2.0, IPQ8062, IPQ8065, Kontron SL/ BL i.MX8MM OSM-S, MT8195 (Acer Domates), Radxa ROCK 4C+, NanoPi R4S Enterprise Edition, JetHome JetHub D1p. SoC Samsung, Mediatek, Renesas, Tegra, Qualcomm, Broadcom ve NXP için güncellenmiş sürücüler.

Aynı zamanda, Latin Amerika Özgür Yazılım Vakfı, tamamen ücretsiz çekirdek 6.1 - Linux-libre 6.1-gnu'nun, kapsamı özgür olmayan bileşenler veya kod bölümleri içeren aygıt yazılımı ve sürücülerden arındırılmış bir sürümünü oluşturdu. üretici tarafından sınırlandırılmıştır. Yeni sürüm, AArch8852 mimarisini temel alan işlemcilere sahip çeşitli Qualcomm ve MediaTek SoC'ler için yeni rtw64b sürücüsünü ve DTS dosyalarını temizliyor. Amdgpu, i915, brcmfmac, r8188eu, rtw8852c, Intel ACPI sürücüleri ve alt sistemlerindeki blob temizleme kodu güncellendi. Güncel olmayan tm6000 TV kartları, cpia2 v4l, sp8870, av7110 sürücülerinin temizlenmesi düzeltildi.

Kaynak: opennet.ru

Yorum ekle