Linux 5.12 çekirdek sürümü

İki aylık geliştirme sürecinin ardından Linus Torvalds, Linux çekirdeği 5.12'nin sürümünü sundu. En dikkate değer değişiklikler arasında: Btrfs'de bölgelere ayrılmış blok aygıtları desteği, dosya sistemi için kullanıcı kimliklerini eşleme yeteneği, eski ARM mimarilerini temizleme, NFS'de "hevesli" yazma modu, önbellekten dosya yollarını belirlemek için LOOKUP_CACHED mekanizması , BPF'de atomik talimatlar desteği, bellekle çalışırken hataları tanımlamak için bir hata ayıklama sistemi KFENCE, ağ yığınında ayrı bir çekirdek iş parçacığında çalışan NAPI yoklama modu, ACRN hipervizörü, görev sırasında önleme modelini anında değiştirme yeteneği Clang'da oluştururken LTO optimizasyonları için zamanlayıcı ve destek.

Yeni sürüm, 14170 (15480) geliştiriciden 1946 (önceki sürümde 1991) düzeltme içerir, yama boyutu 38 MB'dir (değişikliklerden etkilenen 12102 (12090) dosya, 538599 (868025) kod satırı eklenmiştir, 333377 (261456) satırlar silindi). 43'de yapılan değişikliklerin yaklaşık %5.12'ü aygıt sürücüleriyle, değişikliklerin yaklaşık %17'si donanım mimarilerine özgü kodların güncellenmesiyle, %12'si ağ yığınıyla, %5'i dosya sistemleriyle ve %4'ü dahili çekirdek alt sistemleriyle ilgilidir.

Ana yenilikler:

  • Disk Alt Sistemi, G/Ç ve Dosya Sistemleri
    • Takılı dosya sistemleri için kullanıcı kimliklerini eşleme yeteneği uygulanmıştır (bağlı yabancı bölümdeki bir kullanıcının dosyalarını mevcut sistemdeki başka bir kullanıcıyla eşleyebilirsiniz). Eşleme FAT, ext4 ve XFS dosya sistemleri için desteklenir. Önerilen işlevsellik, dosyaların farklı kullanıcılar arasında ve farklı bilgisayarlar üzerinde paylaşılmasını kolaylaştırır; buna sistemd bağlantılı taşınabilir ana dizin mekanizmasında kullanılacak eşleme de dahil olmak üzere, kullanıcıların ana dizinlerini harici ortama taşımasına ve bunları farklı bilgisayarlarda kullanmasına, eşleme yapmasına olanak tanır. eşleşmeyen kullanıcı kimlikleri. Bir başka yararlı uygulama, dosya sistemindeki dosyaların sahipleriyle ilgili verileri gerçekten değiştirmeden, harici bir ana bilgisayardaki dosyalara paylaşılan erişim sağlanmasını düzenlemektir.
    • LOOKUP_CACHED yamaları çekirdeğe uyarlanmıştır ve işlemlerin yalnızca önbellekte bulunan verilere dayanarak kullanıcı alanından engelleme olmadan bir dosya yolu belirlemesine olanak tanır. LOOKUP_CACHED modu, openat2() çağrısında, verilerin yalnızca önbellekten sunulduğu RESOLVE_CACHED bayrağının iletilmesiyle etkinleştirilir ve yol belirleme, sürücüye erişim gerektiriyorsa, EAGAIN hatası döndürülür.
    • Btrfs dosya sistemi, bölgeli blok aygıtları (sabit manyetik disklerdeki veya NVMe SSD'lerdeki aygıtlar, yalnızca sıralı veri eklenmesine izin verilen blok veya sektör gruplarını oluşturan bölgelere bölünmüş depolama alanı) için başlangıç ​​desteğini ekledi; tüm blok grubunun güncellenmesi). Salt okunur modda, meta verilere ve bir sayfadan (alt sayfaya) daha küçük verilere sahip bloklar için destek uygulanır.
    • F2FS dosya sistemine algoritma ve sıkıştırma düzeyi seçebilme özelliği eklenmiştir. LZ4 algoritması için yüksek düzeyde sıkıştırma desteği eklendi. Checkpoint_merge montaj seçeneği uygulandı.
    • Fs-verity ile korunan dosyalardan meta verileri okumak için yeni bir ioctl komutu FS_IOC_READ_VERITY_METADATA uygulandı.
    • NFS istemcisi "istekli" bir yazma modu uygular (yazma=istekli), etkinleştirildiğinde, bir dosyaya yazma işlemleri sayfa önbelleğini atlayarak hemen sunucuya aktarılır. Bu mod, bellek tüketimini azaltmanıza olanak tanır, dosya sistemindeki boş alanın sonu hakkında anında bilgi alınmasını sağlar ve bazı durumlarda daha yüksek performans elde etmeyi mümkün kılar.
    • CIFS'ye (SMB) yeni bağlama seçenekleri eklendi: dosya önbelleğe almayı denetlemek için acregmax ve dizin meta verilerini önbelleğe almayı denetlemek için acdirmax.
    • XFS'de çok iş parçacıklı kota denetimi modu etkinleştirildi, fsync yürütmesi hızlandırıldı ve dosya sisteminin boyutunu küçültme işlevini hayata geçirmek için Growfs kodu hazırlandı.
  • Bellek ve sistem hizmetleri
    • Farklı cihazların güç tüketimini belirlenen genel sıcaklık sınırlarına göre dinamik olarak düzenlemenize olanak tanıyan DTMP (Dinamik Termal Güç Yönetimi) alt sistemi eklenmiştir.
    • Bağlantı aşamasında optimizasyonların (LTO, Bağlantı Süresi Optimizasyonu) dahil edilmesiyle Clang derleyicisini kullanarak çekirdeği oluşturma yeteneği uygulandı. LTO optimizasyonları, oluşturma sürecine dahil olan tüm dosyaların durumunu dikkate alarak farklılık gösterirken, geleneksel optimizasyon modları her dosyayı ayrı ayrı optimize eder ve diğer dosyalarda tanımlanan işlevlerin çağrılmasına ilişkin koşulları dikkate almaz. Örneğin, LTO ile diğer dosyalardaki işlevler için satır içi dağıtım mümkündür, kullanılmayan kod yürütülebilir dosyaya dahil edilmez, tür kontrolü ve genel optimizasyon bir bütün olarak proje düzeyinde gerçekleştirilir. LTO desteği şu anda x86 ve ARM64 mimarileriyle sınırlıdır.
    • Çekirdek oluşturulurken PREEMPT_DYNAMIC ayarı belirtilmişse, önyükleme aşamasında (preempt=yok/gönüllü/tam) veya hata ayıklama (/debug/sched_debug) üzerinde çalışırken görev zamanlayıcıda önleme modlarını (PREEMPT) seçmek mümkündür. Önceden ekstrüzyon modu yalnızca montaj parametreleri düzeyinde ayarlanabiliyordu. Değişiklik, dağıtımların çekirdekleri küçük bir üretim cezası karşılığında masaüstü bilgisayarlar için minimum gecikme sağlayan ve gerekirse PREEMPT_VOLUNTARY (masaüstü bilgisayarlar için bir ara mod) veya PREEMPT_NONE (sunucular için maksimum aktarım hızı sağlar) moduna geri dönen PREEMPT modu etkinleştirilmiş olarak göndermesine olanak tanır. .
    • BPF alt sistemine BPF_ADD, BPF_AND, BPF_OR, BPF_XOR, BPF_XCHG ve BPF_CMPXCHG atomik işlemleri desteği eklendi.
    • BPF programlarına, değişken uzaklıklara sahip işaretçiler kullanarak yığındaki verilere erişme yeteneği verilmiştir. Örneğin, önceden yığındaki bir diziye erişmek için yalnızca sabit bir öğe dizini kullanabiliyorsanız, şimdi değişen bir diziyi kullanabilirsiniz. Erişim kontrolü yalnızca mevcut sınırlar dahilinde BPF doğrulayıcı tarafından gerçekleştirilir. Bu özellik, spekülatif kod yürütme güvenlik açıklarından yararlanılmasıyla ilgili endişeler nedeniyle yalnızca ayrıcalıklı programların kullanımına açıktır.
    • BPF programlarını, kullanıcı alanında görünür izleme olaylarıyla ilişkili olmayan çıplak izleme noktalarına ekleme yeteneği eklendi (bu tür izleme noktaları için ABI koruması garanti edilmez).
    • CPU ve bellek aygıtları arasında yüksek hızlı etkileşimi düzenlemek için kullanılan CXL 2.0 (Compute Express Link) veri yolu desteği uygulanmıştır (harici bellek aygıtlarını RAM'in veya kalıcı belleğin bir parçası olarak kullanmanıza olanak tanır, sanki bu bellek CPU'daki standart bir bellek denetleyicisi aracılığıyla bağlandı).
    • Linux tarafından doğrudan erişilemeyen, bellenim için ayrılmış bellek alanlarından veri almak için nvmem sürücüsü eklendi (örneğin, fiziksel olarak yalnızca bellenim tarafından erişilebilen EEPROM belleği veya yalnızca erken önyükleme aşamasında erişilebilen veriler).
    • Yaygın olarak kullanılmayan "oprofile" profil oluşturma sistemi desteği kaldırıldı ve yerini daha modern perf mekanizması aldı.
    • io_uring eşzamansız I/O arayüzü, bellek kullanımını kontrol eden gruplarla entegrasyon sağlar.
    • RISC-V mimarisi, NUMA sistemlerinin yanı sıra kprobe'ları ve uprobes mekanizmalarını da destekler.
    • İşlem durumu anlık görüntülerinin (kontrol noktası/geri yükleme) işlevselliğinden bağımsız olarak kcmp() sistem çağrısını kullanma yeteneği eklendi.
    • Uzun yıllardır pratikte kullanılmayan EXPORT_UNUSED_SYMBOL() ve EXPORT_SYMBOL_GPL_FUTURE() makroları kaldırıldı.
  • Sanallaştırma ve Güvenlik
    • Bellekle çalışırken arabellek taşmaları ve belleği boşalttıktan sonra erişim gibi hataları yakalayan KFence (Çekirdek Elektrikli Çit) koruma mekanizması eklendi. KASAN hata ayıklama mekanizmasından farklı olarak KFence alt sistemi, yalnızca çalışan sistemlerde veya uzun süreli çalışma sırasında ortaya çıkan bellek hatalarını yakalamanıza olanak tanıyan yüksek çalışma hızı ve düşük ek yük ile karakterize edilir.
    • Gerçek zamanlı görevlere hazır olma ve kritik görev sistemlerinde kullanıma uygunluk göz önünde bulundurularak yazılan ACRN hipervizörü için destek eklendi. ACRN minimum düzeyde ek yük sağlar, ekipmanla etkileşimde bulunurken düşük gecikmeyi ve yeterli yanıt verme hızını garanti eder. CPU kaynaklarının, G/Ç'nin, ağ alt sisteminin, grafiklerin ve ses işlemlerinin sanallaştırılmasını destekler. ACRN, elektronik kontrol ünitelerinde, gösterge panellerinde, otomotiv bilgi sistemlerinde, tüketici IoT cihazlarında ve diğer gömülü teknolojilerde birden fazla yalıtılmış sanal makineyi çalıştırmak için kullanılabilir. ACRN iki tür konuk sistemini destekler: sistem kaynaklarını (CPU, bellek, I/O vb.) yönetmek için kullanılan ayrıcalıklı Hizmet VM'leri ve Linux, Android ve Windows dağıtımlarını çalıştırabilen özel Kullanıcı VM'leri.
    • Dosyaların ve ilgili meta verilerin bütünlüğünü kontrol etmek için bir karma veritabanını koruyan IMA (Bütünlük Ölçüm Mimarisi) alt sisteminde, artık çekirdeğin verilerinin bütünlüğünü kontrol etmek, örneğin SELinux kurallarındaki değişiklikleri izlemek mümkün hale geliyor. .
    • KVM hipervizörüne, Xen hiper çağrılarına müdahale etme ve bunları kullanıcı alanında çalışan emülatöre iletme yeteneği eklendi.
    • Hyper-V hipervizörü için Linux'u kök ortam olarak kullanma yeteneği eklendi. Kök ortamının donanıma doğrudan erişimi vardır ve konuk sistemleri çalıştırmak için kullanılır (Xen'deki Dom0'a benzer). Şimdiye kadar Hyper-V (Microsoft Hypervisor) Linux'u yalnızca konuk ortamlarında destekliyordu ancak hipervizörün kendisi Windows tabanlı bir ortamdan kontrol ediliyordu.
    • eMMC kartları için dahili şifreleme desteği eklendi ve sürücü denetleyicisinde yerleşik olarak G/Ç'yi şeffaf bir şekilde şifreleyen ve şifresini çözen şifreleme mekanizmalarını kullanmanıza olanak tanıdı.
    • Çekirdekte kullanılmayan RIPE-MD 128/256/320 ve Tiger 128/160/192 karmalarının yanı sıra ChaCha20 algoritması ile değiştirilen Salsa20 akış şifresi desteği de kaldırılmıştır. kripto alt sistemi. Blake2 algoritması, blake2'leri uygulayacak şekilde güncellendi.
  • Ağ alt sistemi
    • Ağ aygıtları için NAPI yoklama işleyicisini ayrı bir çekirdek iş parçacığına taşıma yeteneği eklendi; bu, bazı iş yükü türlerinde performansın iyileştirilmesine olanak sağladı. Önceden yoklama softirq bağlamında yapılıyordu ve görev zamanlayıcı tarafından kapsanmıyordu; bu da maksimum performansa ulaşmak için ayrıntılı optimizasyonların gerçekleştirilmesini zorlaştırıyordu. Ayrı bir çekirdek iş parçacığında yürütme, yoklama işleyicisinin kullanıcı alanından gözlemlenmesine, ayrı CPU çekirdeklerine bağlanmasına ve görev değiştirmeyi planlarken dikkate alınmasına olanak tanır. Sysfs'de yeni modu etkinleştirmek için /sys/class/net//threaded parametresi önerilmektedir.
    • MPTCP'nin (MultiPath TCP) çekirdeğine entegrasyon; TCP protokolünün, farklı IP adresleriyle ilişkili farklı ağ arayüzleri aracılığıyla paketlerin birkaç rota boyunca aynı anda teslim edilmesiyle TCP bağlantısının çalışmasını organize etmeye yönelik bir uzantısıdır. Yeni sürüm, belirli iş parçacıklarına öncelik atama yeteneği ekler; bu, örneğin, yalnızca birincil iş parçacığında sorun olması durumunda açılan yedek iş parçacıklarının çalışmasının düzenlenmesine olanak tanır.
    • IGMPv3, EHT (Açık Ana Bilgisayar Takibi) mekanizması için destek ekler.
    • Netfilter'ın paket filtreleme motoru, özel kontrol elde etmek için belirli tablolara sahip olma yeteneği sağlar (örneğin, arka plandaki bir güvenlik duvarı işlemi belirli tabloların sahipliğini alarak başkalarının bunlara müdahale etmesini önleyebilir).
  • Оборудование
    • Eskiyen ve bakımı yapılmayan ARM platformlarını temizledik. Efm32, picoxcell, prima2, tango, u300, zx ve c6x platformlarının kodları ve bunlarla ilgili sürücüler kaldırıldı.
    • Amdgpu sürücüsü, Sienna Cichlid GPU'yu (Navi 22, Radeon RX 6xxx) temel alan kartlarda hız aşırtma (OverDrive) yeteneği sağlar. 16. nesilden 8. nesile kadar DCE (ekran denetleyici motoru) için FP11 piksel formatı desteği eklendi. GPU Navy Flounder (Navi 21) ve APU Van Gogh için GPU'yu sıfırlama özelliği uygulandı.
    • Intel grafik kartlarına yönelik i915 sürücüsü, izolasyon ve koruma mekanizmalarını devre dışı bırakarak performansın iyileştirilmesi için i915.mitigations parametresini uygular. Tiger Lake'ten başlayan yongalar için, oyunlar sırasında akıcılık ve boşluk olmamasını sağlamak için monitörün yenileme hızını uyarlanabilir bir şekilde değiştirmenize olanak tanıyan VRR (Değişken Hız Yenileme) mekanizması desteği dahildir. Gelişmiş renk doğruluğu için Intel Clear Color teknolojisi desteği dahildir. DP-HDMI 2.1 desteği eklendi. eDP panellerinin arka ışığını kontrol etme özelliği uygulandı. LSPCON (Seviye Değiştirici ve Protokol Dönüştürücü) desteğine sahip Gen9 GPU'lar için HDR desteği etkinleştirilir.
    • Yeni sürücü, GA100 (Amper) mimarisini temel alan NVIDIA GPU'lar için başlangıç ​​desteğini ekler.
    • Msm sürücüsü, SDM (Snapdragon) 508, 509 ve 512 yongalarında kullanılan Adreno 630, 636 ve 660 GPU'lar için destek ekler.
    • Sound BlasterX AE-5 Plus, Lexicon I-ONIX FW810s ve Pioneer DJM-750 ses kartları için destek eklendi. Intel Alder Lake PCH-P ses alt sistemi için destek eklendi. Kullanıcı alanındaki işleyicilerin hatalarını ayıklamak için bir ses konnektörünü bağlama ve bağlantısını kesmeye yönelik yazılım simülasyonu desteği uygulandı.
    • 64'dan 1996'e kadar üretilen Nintendo 2003 oyun konsolları için destek eklendi (Linux'u Nintendo 64'e taşımaya yönelik geçmiş girişimler tamamlanmadı ve Vaporware olarak sınıflandırıldı). Neredeyse yirmi yıldır piyasaya sürülmeyen eski bir platform için yeni bir bağlantı noktası oluşturmanın motivasyonu, emülatörlerin gelişimini teşvik etme ve oyunların taşınmasını basitleştirme arzusudur.
    • Sony PlayStation 5 DualSense oyun kumandası için sürücü eklendi.
    • ARM panoları, cihazları ve platformları için destek eklendi: PineTab, Snapdragon 888 / SM8350, Snapdragon MTP, Two Beacon EmbeddedWorks, Intel eASIC N5X, Netgear R8000P, Plymovent M2M, Beacon i.MX8M Nano, NanoPi M4B.
    • Purism Librem5 Evergreen, Xperia Z3+/Z4/Z5, ASUS Zenfone 2 Laser, BQ Aquaris X5, OnePlus6, OnePlus6T, Samsung GT-I9070 akıllı telefonlar için destek eklendi.
    • Ses, video ve görüntü işleme işlemlerinin yanı sıra şifrelemeyle ilgili işlemleri ayrı bir cihaza aktarmak için kullanılabilen Broadcom VK hızlandırıcı kartları (örneğin, Valkyrie ve Viper PCIe kartları) için bcm-vk sürücüsü eklendi.
    • Sürekli şarjı ve klavye arka aydınlatmasını kontrol etme özelliği ile Lenovo IdeaPad platformu için destek eklendi. Ayrıca, güç tüketimi modlarını kontrol etme yeteneği ile ThinkPad platformunun ACPI profili desteği de sağlanmaktadır. Lenovo ThinkPad X1 Tablet Gen 2 HID alt sistemi için sürücü eklendi.
    • Raspberry Pi için kamera modülü desteğine sahip ov5647 sürücüsü eklendi.
    • RISC-V SoC FU740 ve HiFive Unleashed kartları için destek eklendi. Kendryte K210 çipi için yeni bir sürücü de eklendi.

Kaynak: opennet.ru

Yorum ekle