Linux 6.2 çekirdek sürümü

İki aylık geliştirme sürecinin ardından Linus Torvalds, Linux çekirdeği 6.2'nin sürümünü sundu. En dikkate değer değişiklikler arasında şunlar yer alıyor: Copyleft-Next lisansı altında kod kabulüne izin veriliyor, Btrfs'de RAID5/6 uygulaması iyileştirildi, Rust dili desteğinin entegrasyonu devam ediyor, Retbleed saldırılarına karşı koruma yükü azaltılıyor, geri yazma sırasında bellek tüketimini düzenleme yeteneği eklendi, TCP dengeleme için bir mekanizma eklendi PLB (Koruyucu Yük Dengeleme), hibrit bir komut akışı koruma mekanizması (FineIBT) eklendi, BPF artık kendi nesnelerini ve veri yapılarını tanımlama yeteneğine sahip rv (Çalışma Zamanı Doğrulaması) yardımcı programı dahil edilmiştir, RCU kilitlerinin uygulanmasında güç tüketimi azaltılmıştır.

Yeni sürüm, 16843 geliştiriciden gelen 2178 düzeltmeyi içeriyor, yama boyutu 62 MB (değişiklikler 14108 dosyayı etkiledi, 730195 satır kod eklendi, 409485 satır silindi). 42'de yapılan değişikliklerin yaklaşık %6.2'si aygıt sürücüleriyle, değişikliklerin yaklaşık %16'sı donanım mimarilerine özgü kodların güncellenmesiyle, %12'si ağ yığınıyla, %4'ü dosya sistemleriyle ve %3'ü dahili çekirdek alt sistemleriyle ilgilidir.

Çekirdek 6.2'teki önemli yenilikler:

  • Bellek ve sistem hizmetleri
    • Copyleft-Next 0.3.1 lisansı kapsamında sağlanan değişikliklerin çekirdek koduna dahil edilmesine izin verilmektedir. Copyleft-Next lisansı GPLv3'ün yazarlarından biri tarafından oluşturulmuştur ve SUSE ve Red Hat avukatları tarafından onaylandığı üzere GPLv2 lisansıyla tamamen uyumludur. GPLv2 ile karşılaştırıldığında, Copyleft-Next lisansı çok daha derli toplu ve anlaşılması daha kolaydır (giriş kısmı ve güncelliğini yitirmiş uzlaşmalardan bahsetme kaldırılmıştır), ihlalleri ortadan kaldırmak için zaman çerçevesini ve prosedürü tanımlar ve güncelliğini kaybetmiş yazılımlar için copyleft gereksinimlerini otomatik olarak kaldırır. 15 yaşın üzerindedir.

      Copyleft-Next ayrıca, GPLv2'den farklı olarak bu lisansı Apache 2.0 lisansıyla uyumlu hale getiren özel bir teknoloji verme maddesi de içerir. GPLv2 ile tam uyumluluğun sağlanması için Copyleft-Next, orijinal Copyleft-Next lisansına ek olarak GPL lisansı kapsamında bir türev çalışmanın sağlanabileceğini açıkça belirtmektedir.

    • Yapı, kullanıcı alanından RV (Çalışma Zamanı Doğrulaması) alt sisteminin işleyicileri ile etkileşim için bir arayüz sağlayan ve arızaların bulunmadığını garanti eden son derece güvenilir sistemlerde doğru çalışmayı kontrol etmek için tasarlanmış "rv" yardımcı programını içerir. Doğrulama, sistemin beklenen davranışını tanımlayan makinenin önceden belirlenmiş bir referans deterministik modeline göre yürütmenin gerçek ilerlemesini kontrol eden izleme noktalarına işleyiciler eklenerek çalışma zamanında gerçekleştirilir.
    • Takas bölümünün sıkıştırılmış bir biçimde bellekte saklanmasına olanak tanıyan zRAM cihazı (bellekte takasın sıkıştırılarak gerçekleştirildiği bir blok cihazı oluşturulur), daha yüksek bir seviyeye ulaşmak için alternatif bir algoritma kullanarak sayfaları yeniden paketleme yeteneğini uygular sıkıştırma. Ana fikir, çeşitli algoritmalar (lzo, lzo-rle, lz4, lz4hc, zstd) arasında bir seçim sunmak, sıkıştırma/açma hızı ve sıkıştırma seviyesi arasında kendi uzlaşmalarını sunmak veya özel durumlarda (örneğin, büyük dosyaları sıkıştırmak için) en uygunudur. hafıza sayfaları).
    • Kullanıcı alanından G/Ç bellek yönetim sistemi - IOMMU'yu (G/Ç Bellek Yönetim Birimi) yönetmek için "iommufd" API'si eklendi. Yeni API, dosya tanımlayıcıları kullanarak G/Ç bellek sayfası tablolarını yönetmeyi mümkün kılar.
    • BPF, türler oluşturma, kendi nesnelerinizi tanımlama, kendi nesneler hiyerarşinizi oluşturma ve bağlantılı listeler gibi kendi veri yapılarınızı esnek bir şekilde oluşturma yeteneği sağlar. Uyku moduna (BPF_F_SLEEPABLE) giren BPF programları için bpf_rcu_read_{,un}lock() kilitleri desteği eklendi. Task_struct nesnelerinin kaydedilmesi için destek uygulandı. Gruplar için yerel depolama sağlayan BPF_MAP_TYPE_CGRP_STORAGE harita türü eklendi.
    • RCU (Okuma-kopyalama-güncelleme) engelleme mekanizması için, toplu modda bir zamanlayıcı kullanılarak birkaç geri arama çağrısının aynı anda işlendiği isteğe bağlı bir "tembel" geri arama çağrısı mekanizması uygulanır. Önerilen optimizasyonun uygulanması, sistemdeki boş zamanlar veya düşük yük sırasında RCU isteklerini erteleyerek Android ve ChromeOS cihazlardaki güç tüketimini %5-10 oranında azaltmamıza olanak tanır.
    • Atomik bir talimat yürütülürken verilerin iki CPU önbellek hattını geçmesi nedeniyle bellekteki hizalanmamış verilere erişirken oluşan bölünmüş kilitleri algıladığında sistemin nasıl tepki vereceğini kontrol etmek için sysctl split_lock_mitigate eklendi. Bu tür tıkanmalar performansta önemli bir düşüşe neden olur. split_lock_mitigate'in 0'a ayarlanması yalnızca bir sorun olduğuna dair bir uyarı verir; split_lock_mitigate'in 1'e ayarlanması ayrıca sistemin geri kalanının performansını korumak için kilidin yavaşlamasına neden olan işlemin gerçekleşmesine neden olur.
    • PowerPC mimarisi için daha yüksek performans gösteren ve istisnai durumlarda ortaya çıkan bazı kilitleme sorunlarını çözen yeni bir qspinlock uygulaması önerildi.
    • MSI (Mesaj Sinyalli Kesintiler) kesme işleme kodu yeniden çalışılarak birikmiş mimari sorunlar ortadan kaldırıldı ve bireysel işleyicilerin farklı cihazlara bağlanması için destek eklendi.
    • Loongson 3 5000 işlemcilerinde kullanılan LoongArch komut seti mimarisini temel alan ve MIPS ve RISC-V'ye benzer şekilde yeni RISC ISA'yı uygulayan sistemler için ftrace, yığın koruması, uyku ve bekleme modları desteği uygulanır.
    • Paylaşılan anonim hafıza alanlarına isim atama yeteneği sağlanmıştır (önceden isimler yalnızca belirli bir işleme atanmış özel anonim hafızaya atanabiliyordu).
    • Bir kontrol kontrolü tetiklendiğinde çağrılan koşullu komutları bağlamak için kullanılan bir izleme tetikleyicisini etkinleştirmek üzere tasarlanmış yeni bir çekirdek komut satırı parametresi "trace_trigger" eklendi (örneğin, trace_trigger=”sched_switch.stacktrace, prev_state == 2″).
    • Binutils paketinin sürümüne ilişkin gereksinimler artırıldı. Çekirdeği oluşturmak artık en az binutils 2.25 gerektiriyor.
    • exec() çağrılırken, zamanın sistem zamanından farklı olduğu bir zaman ad alanına bir süreç yerleştirme yeteneği eklenmiştir.
    • Sürücüler ve çekirdek modülleri geliştirmek için Rust dilinin ikinci dil olarak kullanılmasıyla ilgili Rust-for-Linux şubesinden ek işlevler aktarmaya başladık. Rust desteği varsayılan olarak devre dışıdır ve Rust'un gerekli çekirdek yapı bağımlılığı olarak dahil edilmesine yol açmaz. Son sürümde sunulan temel işlevsellik, Vec türü ve pr_debug!(), pr_cont!() ve pr_alert!() makrolarının yanı sıra “#[vtable” prosedürel makrosu gibi düşük seviyeli kodu destekleyecek şekilde genişletildi ]”, işlevlerdeki işaretçi tablolarıyla çalışmayı kolaylaştırır. Gelecek sürümlerde, Rust'ta tam teşekküllü sürücülerin oluşturulmasına olanak sağlayacak, çekirdek alt sistemleri üzerine üst düzey Rust bağlamalarının eklenmesi bekleniyor.
    • Çekirdekte kullanılan "char" türü artık tüm mimariler için varsayılan olarak imzasız olarak bildiriliyor.
    • Az miktarda belleğe sahip sistemler için tasarlanan levha bellek ayırma mekanizması - SLOB'un (slab ayırıcı) eski olduğu bildirildi. SLOB yerine normal şartlarda SLUB veya SLAB kullanılması tavsiye edilir. Az miktarda belleğe sahip sistemler için SLUB'ın SLUB_TINY modunda kullanılması önerilir.
  • Disk Alt Sistemi, G/Ç ve Dosya Sistemleri
    • RAID 5/6 uygulamalarında "yazma deliği" sorununu (yazma sırasında bir çökme meydana gelirse ve hangi RAID aygıtının hangi bloğa doğru yazıldığının anlaşılmasının imkansız olması durumunda RAID'i geri yükleme girişimi) düzeltmeyi amaçlayan Btrfs'de iyileştirmeler yapıldı, bu, sigortalı bloklara karşılık gelen blokların imhasına yol açabilir). Buna ek olarak, SSD'ler artık mümkün olduğunda varsayılan olarak eşzamansız atma işlemini otomatik olarak etkinleştiriyor ve atma işlemlerinin kuyruklar halinde verimli bir şekilde gruplandırılması ve kuyruğun bir arka plan işlemcisi tarafından işlenmesi nedeniyle performansın iyileştirilmesine olanak tanıyor. FIEMAP ioctl'nin yanı sıra gönderme ve arama işlemlerinin performansı iyileştirildi.
    • Blok cihazlar için ertelenmiş yazmayı (geri yazma, değiştirilen verilerin arka planda kaydedilmesi) yönetme yetenekleri genişletildi. Ağ blokeli aygıtların veya USB sürücülerin kullanılması gibi bazı durumlarda yavaş yazma işlemleri büyük miktarda RAM tüketimine neden olabilir. Tembel yazma davranışını kontrol etmek ve sayfa önbellek boyutunu belirli sınırlar içinde tutmak için sysfs'e (/sys/class/bdi/) strict_limit, min_bytes, max_bytes, min_ratio_fine ve max_ratio_fine yeni parametreleri eklendi.
    • F2FS dosya sistemi, tek bir atomik işlem içinde bir dosyaya veri yazmanıza olanak tanıyan atomik değiştirme ioctl işlemini uygular. F2FS ayrıca aktif olarak kullanılan veya uzun süredir erişilmeyen verileri tanımlamaya yardımcı olmak için bir blok boyutunda önbellek ekler.
    • Ext4 FS'de yalnızca hata düzeltmeleri not edilir.
    • Ntfs3 dosya sistemi birkaç yeni bağlama seçeneği sunar: dosya ve dizin adlarında büyük/küçük harf duyarlılığını kontrol etmek için “nocase”; Windows için geçerli olmayan karakterler içeren dosya adlarının oluşturulmasını yasaklamak için windows_name; hide_dot_files, noktayla başlayan dosyalar için gizli dosya etiketinin atanmasını kontrol etmek için kullanılır.
    • Squashfs dosya sistemi, açma işlemlerini paralelleştirmek için iş parçacığı sayısını tanımlamanıza olanak tanıyan bir "threads=" bağlama seçeneği uygular. Squashfs ayrıca, monte edilmiş bir yabancı bölümdeki belirli bir kullanıcının dosyalarını mevcut sistemdeki başka bir kullanıcıyla eşleştirmek için kullanılan, monte edilmiş dosya sistemlerinin kullanıcı kimliklerini eşleme yeteneğini de tanıttı.
    • POSIX erişim kontrol listelerinin (POSIX ACL'ler) uygulanması yeniden düzenlendi. Yeni uygulama mimari sorunları ortadan kaldırıyor, kod tabanı bakımını kolaylaştırıyor ve daha güvenli veri türleri sunuyor.
    • Dosya ve dizinlerin şeffaf şifrelenmesi için kullanılan fscrypt alt sistemi, SM4 şifreleme algoritması (Çin standardı GB/T 32907-2016) için destek ekledi.
    • Çekirdeği NFSv2 desteği olmadan oluşturma yeteneği sağlandı (gelecekte NFSv2 desteğinin tamamen durdurulması planlanıyor).
    • NVMe cihazlarına erişim haklarını kontrol etme organizasyonu değiştirildi. Yazma işleminin aygıtın özel dosyasına erişimi varsa, bir NVMe aygıtına okuma ve yazma yeteneği sağlar (önceden işlemin CAP_SYS_ADMIN iznine sahip olması gerekiyordu).
    • 2016'da kullanımdan kaldırılan CD/DVD paketi sürücüsü kaldırıldı.
  • Sanallaştırma ve Güvenlik
    • Intel ve AMD CPU'larında Retbleed güvenlik açığına karşı, çağrı derinliği takibini kullanan ve Retbleed'e karşı daha önce mevcut olan koruma kadar çalışmayı yavaşlatmayan yeni bir koruma yöntemi uygulandı. Yeni modu etkinleştirmek için çekirdek komut satırı parametresi “retbleed=stuff” önerildi.
    • Kullanımın bir sonucu olarak normal yürütme sırasının (kontrol akışı) ihlalini engellemek için donanım Intel IBT (Dolaylı Dal İzleme) talimatlarının kullanımını ve kCFI (çekirdek Kontrol Akışı Bütünlüğü) yazılım korumasını birleştiren hibrit bir FineIBT talimat akışı koruma mekanizması eklendi. işlevlerde bellekte saklanan işaretçileri değiştiren istismarların sayısı. FineIBT, yalnızca işlevin en başına yerleştirilen ENDBR komutuna geçiş yapılması durumunda dolaylı atlama yoluyla yürütmeye izin verir. Ek olarak, kCFI mekanizmasına benzer şekilde, işaretçilerin değişmezliğini garanti etmek için karmalar kontrol edilir.
    • "Hata" durumlarının oluşturulmasını manipüle eden saldırıları engellemek için kısıtlamalar eklendi; bundan sonra sorunlu görevler tamamlanır ve sistem durdurulmadan durum geri yüklenir. "Oops" durumuna çok fazla sayıda çağrı yapıldığında, NULL işaretçi referanslarının neden olduğu güvenlik açıklarından yararlanılmasına izin veren bir referans sayacı taşması (yeniden sayım) meydana gelir. Bu tür saldırılara karşı koruma sağlamak için, çekirdeğe maksimum "ayyy" tetikleyici sayısı için bir sınır eklenmiştir; bu sınır aşıldığında çekirdek "panik" durumuna geçiş başlatacak ve ardından yeniden başlatma işlemi başlatacaktır; Yeniden sayımı aşmak için gereken yineleme sayısı. Varsayılan olarak limit 10 bin “oops” olarak ayarlanmıştır ancak istenirse oops_limit parametresi üzerinden değiştirilebilir.
    • ioctl TIOCSTI kullanarak terminale veri yerleştirme yeteneğini devre dışı bırakmak için LEGACY_TIOCSTI ve sysctl Legacy_tiocsti yapılandırma parametreleri eklendi; çünkü bu işlevsellik, terminal giriş arabelleğine rastgele karakterler koymak ve kullanıcı girişini simüle etmek için kullanılabilir.
    • İşaretçinin alt bitlerinin, işaretçinin kazara referansından sapmaya karşı koruma sağlamak için kullanılan ek bilgileri depolamak için kullanıldığı yeni bir iç yapı türü olan encoded_page önerilmektedir (eğer referans kaldırma gerçekten gerekliyse, önce bu ek bitlerin temizlenmesi gerekir). .
    • ARM64 platformunda, önyükleme aşamasında, yığında arabellek taşması durumunda bir işlevden dönüş adresinin üzerine yazılmasına karşı koruma sağlamak için kullanılan Gölge Yığın mekanizmasının yazılım uygulamasını etkinleştirmek veya devre dışı bırakmak mümkündür ( Korumanın özü, kontrol işleve aktarıldıktan sonra dönüş adresini ayrı bir "gölge" yığına kaydetmek ve işlevden çıkmadan önce verilen adresi almaktır. Shadow Stack'in tek bir çekirdek düzeneğindeki donanım ve yazılım uygulamalarına yönelik destek, işaretçi kimlik doğrulama talimatlarını desteklemelerine bakılmaksızın, farklı ARM sistemlerinde bir çekirdeği kullanmanıza olanak tanır. Bir yazılım uygulamasının dahil edilmesi, yükleme sırasında gerekli talimatların kodda değiştirilmesiyle gerçekleştirilir.
    • Intel işlemcilerde, SGX bölgelerinde yürütülen kodlara yönelik tek adımlı saldırıların tespit edilmesine olanak tanıyan eşzamansız çıkış bildirim mekanizmasının kullanılmasına yönelik destek eklendi.
    • Hipervizörün Intel TDX (Güvenilir Etki Alanı Uzantıları) konuk sistemlerinden gelen istekleri desteklemesine olanak tanıyan bir dizi işlem önerilmiştir.
    • Çekirdek yapı ayarları RANDOM_TRUST_BOOTLOADER ve RANDOM_TRUST_CPU kaldırılarak karşılık gelen komut satırı seçenekleri random.trust_bootloader ve random.trust_cpu'ya geçildi.
    • Bir grup işlemin dış ortamla etkileşimini sınırlamanıza olanak tanıyan Landlock mekanizması, dosya kesme işlemlerinin yürütülmesini kontrol etmeyi mümkün kılan LANDLOCK_ACCESS_FS_TRUNCATE bayrağı için destek ekledi.
  • Ağ alt sistemi
    • IPv6 için, veri merkezi anahtarlarındaki aşırı yük noktalarını azaltmayı amaçlayan ağ bağlantıları arasında bir yük dengeleme mekanizması olan PLB (Koruyucu Yük Dengeleme) desteği eklendi. IPv6 Akış Etiketini değiştirerek PLB, anahtar bağlantı noktalarındaki yükü dengelemek için paket yollarını rastgele değiştirir. Paketlerin yeniden sıralanmasını azaltmak için bu işlem mümkün olduğunca boşta kalma sürelerinden sonra gerçekleştirilir. Google veri merkezlerinde PLB kullanımı, anahtar bağlantı noktalarındaki yük dengesizliğini ortalama %60, paket kaybını %33 ve gecikmeyi %20 azalttı.
    • Wi-Fi 7'yi (802.11be) destekleyen MediaTek cihazları için sürücü eklendi.
    • 800 gigabit bağlantılar için destek eklendi.
    • Çalışmayı durdurmadan ağ arayüzlerini anında yeniden adlandırma yeteneği eklendi.
    • SYN Flood ile ilgili günlük mesajlarına paketin geldiği IP adresinden bahsedildi.
    • UDP için, farklı ağ ad alanları için ayrı karma tabloları kullanma yeteneği uygulanmıştır.
    • Ağ köprüleri için MAB (MAC Kimlik Doğrulaması Atlaması) kimlik doğrulama yöntemi desteği uygulanmıştır.
    • CAN protokolü (CAN_RAW) için, fwmark tabanlı trafik filtrelerinin eklenmesi amacıyla SO_MARK soket modu desteği uygulandı.
    • ipset, IP adresindeki rastgele bitlere dayalı olarak bir maske ayarlamanıza olanak tanıyan yeni bir bit maskesi parametresi uygular (örneğin, "ipset create set1 hash:ip bit maskesi 255.128.255.0").
    • Tünellenmiş paketlerin içindeki dahili başlıkların nf_tables'a işlenmesi için destek eklendi.
  • Оборудование
    • "Accel" alt sistemi, bireysel ASIC'ler biçiminde veya SoC ve GPU içindeki IP blokları biçiminde sağlanabilen hesaplamalı hızlandırıcılar için bir çerçevenin uygulanmasıyla eklenmiştir. Bu hızlandırıcılar temel olarak makine öğrenimi sorunlarının çözümünü hızlandırmayı amaçlamaktadır.
    • amdgpu sürücüsü GC, PSP, SMU ve NBIO IP bileşenleri için destek içerir. ARM64 sistemleri için DCN (Display Core Next) desteği uygulanır. Korumalı ekran çıkışı uygulaması DCN10'dan DCN21'e taşındı ve artık birden fazla ekran bağlandığında kullanılabilir.
    • i915 (Intel) sürücüsü, ayrı Intel Arc (DG2/Alchemist) video kartları için desteği stabilize etti.
    • Nouveau sürücüsü, Ampere mimarisini temel alan NVIDIA GA102 (RTX 30) GPU'ları destekler. Nva3 (GT215) kartlar için arka ışığı kontrol etme özelliği eklendi.
    • Realtek 8852BE, Realtek 8821CU, 8822BU, 8822CU, 8723DU (USB) ve MediaTek MT7996 çipleri, Broadcom BCM4377/4378/4387 Bluetooth arayüzlerinin yanı sıra Motorcomm yt8521 ve NVIDIA Tegra GE Ethernet denetleyicilerini temel alan kablosuz adaptörler için destek eklendi.
    • Yerleşik ses yongaları HP Stream 8, Advantech MICA-071, Dell SKU 0C11, Intel ALC5682I-VD, Xiaomi Redmi Book Pro 14 2022, i.MX93, Armada 38x, RK3588 için ASoC (Çip Üzerinde ALSA Sistemi) desteği eklendi. Focusrite Saffire Pro 40 ses arabirimi desteği eklendi. Realtek RT1318 ses codec'i eklendi.
    • Sony akıllı telefonlar ve tabletler (Xperia 10 IV, 5 IV, X ve X kompakt, OnePlus One, 3, 3T ve Nord N100, Xiaomi Poco F1 ve Mi6, Huawei Watch, Google Pixel 3a, Samsung Galaxy Tab 4 10.1) için destek eklendi.
    • ARM SoC ve Apple T6000 (M1 Pro), T6001 (M1 Max), T6002 (M1 Ultra), Qualcomm MSM8996 Pro (Snapdragon 821), SM6115 (Snapdragon 662), SM4250 (Snapdragon 460), SM6375 (Snapdragon 695) desteği eklendi anakartlar, SDM670 (Snapdragon 670), MSM8976 (Snapdragon 652), MSM8956 (Snapdragon 650), RK3326 Odroid-Go/rg351, Zyxel NSA310S, InnoComm i.MX8MM, Odroid Go Ultra.

Aynı zamanda, Latin Amerika Özgür Yazılım Vakfı, tamamen ücretsiz çekirdek 6.2 - Linux-libre 6.2-gnu'nun, kapsamı aşağıdakilerle sınırlı olan, özel 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. Yeni sürüm, nouveau sürücüsündeki yeni lekeleri temizliyor. Mt7622, ​​mt7996 wifi ve bcm4377 bluetooth sürücülerinde blob yükleme devre dışı bırakıldı. Aarch64 mimarisi için dts dosyalarındaki blob adları temizlendi. Çeşitli sürücü ve alt sistemlerdeki blob temizleme kodu güncellendi. Çekirdekten kaldırıldığı için s5k4ecgx sürücüsünün temizlenmesi durduruldu.

Kaynak: opennet.ru

Yorum ekle