Linux 5.1 çekirdek sürümü

İki aylık geliştirme sürecinin ardından Linus Torvalds gönderilen çekirdek sürümü Linux 5.1. En dikkate değer değişiklikler arasında: eşzamansız G/Ç io_uring için yeni bir arayüz, NVDIMM'i RAM olarak kullanma yeteneği, Nouveau'da paylaşılan sanal bellek desteği, fanotify aracılığıyla çok büyük dosya sistemlerinin ölçeklenebilir izlenmesi desteği, Zstd sıkıştırmasını yapılandırma yeteneği Btrfs'deki seviyeler, yeni bir işlemci TEO işleyicisi, 2038 sorununu çözmek için sistem çağrılarının uygulanması, initramf'lar olmadan cihaz eşleyici cihazlardan önyükleme yeteneği, SafeSetID LSM modülü, birleşik canlı yamalar için destek.

Ana yenilikler:

  • Disk Alt Sistemi, G/Ç ve Dosya Sistemleri
    • Eşzamansız G/Ç için yeni bir arayüz uygulandı - io_uringG/Ç yoklaması desteği ve ara belleğe alma ile veya ara belleğe alma olmadan çalışabilme yeteneği ile dikkate değerdir. Daha önce önerilen asenkron I/O mekanizması “aio”nun tamponlu I/O'yu desteklemediğini, yalnızca O_DIRECT modunda çalışabildiğini (ara belleğe alma ve önbelleği atlamadan), meta veri kullanılabilirliğini beklemek nedeniyle kilitleme sorunları yaşadığını ve Verilerin belleğe kopyalanması nedeniyle büyük genel gider maliyetleri sergilendi.

      API içinde
      io_uring geliştiricileri eski aio arayüzünün eksikliklerini gidermeye çalıştı. İle verimlilik io_uring çok yakın SPDK ve yoklama etkinken çalışırken Libaio'nun önemli ölçüde ilerisindedir. Kullanıcı alanında çalışan uç uygulamalarda io_uring kullanımına yönelik kütüphane hazırlanmıştır. serbest bırakmaçekirdek arayüzü üzerinden üst düzey bir çerçeve sağlayan;

    • FS fanotify()'daki olay izleme mekanizmasında katma süper blok ve yapı değişikliği durumlarının takibi için destek dirent (dizin oluşturma, silme ve taşıma olayları). Sunulan özellikler, inotify mekanizmasını kullanarak çok büyük dosya sistemlerinde özyinelemeli değişiklik izleme oluştururken ortaya çıkan ölçeklenebilirlik sorunlarının çözülmesine yardımcı olur (dirent değişiklikler daha önce yalnızca inotify aracılığıyla izlenebiliyordu, ancak
      büyük iç içe geçmiş dizinlerin yinelemeli izlenmesi koşullarındaki performans arzulanan çok şey bıraktı). Artık bu tür izlemeler fanotify aracılığıyla etkili bir şekilde yapılabiliyor;

    • Btrfs dosya sisteminde katma hızlı ama etkisiz lz4 ile yavaş ama iyi sıkıştırma xz arasındaki en uygun uzlaşma olarak değerlendirilebilecek zstd algoritması için sıkıştırma düzeyini özelleştirme yeteneği. Daha önce zlib kullanırken sıkıştırma düzeyini ayarlamanın mümkün olmasına benzer şekilde, zstd için "-o sıkıştırma=zstd:level" bağlama seçeneği desteği eklendi. Test sırasında minimum birinci seviye, 2.658 MB/s sıkıştırma hızıyla, 438.47 MB/s sıkıştırma açma hızıyla ve 910.51 MB bellek tüketimiyle 780 kat veri sıkıştırma sağladı ve maksimum seviye 15, 3.126 kat sıkıştırmayla sağlandı. 37.30 MB/s hız, paket açma 878.84 MB/s ve bellek tüketimi 2547 MB;
    • Katma initramfs kullanmadan, aygıt eşleyici aygıtında bulunan bir dosya sisteminden önyükleme yapma yeteneği. Geçerli çekirdek sürümünden başlayarak, aygıt eşleyici aygıtlar, önyükleme işlemi sırasında, örneğin kök dosya sistemiyle bir bölüm olarak doğrudan kullanılabilir. Bölüm, “dm-mod.create” önyükleme parametresi kullanılarak yapılandırılır. Yükleme için izin verilen cihaz eşleyici modülleri şunları içerir: "crypt", "delay", "linear", "snapshot-origin" ve "verity";
    • F2FS_NOCOW_FL bayrağı, Flash sürücülere yönelik F2FS dosya sistemine eklenmiştir; bu, belirli bir dosya için yazma sırasında kopyalama modunu devre dışı bırakmanıza olanak tanır;
    • Dosya sistemi çekirdekten kaldırıldı Exof'larext2'nin bir çeşidi olan, OSD (Nesne Tabanlı Depolama Cihazı) nesne depolarıyla çalışmak üzere uyarlanmış. Bu tür nesne depolama aygıtlarına yönelik SCSI protokolü desteği de kaldırıldı;
  • Sanallaştırma ve Güvenlik
    • Seçilen işlem için talimatların spekülatif olarak yürütülmesini kontrol etmek amacıyla prctl() işlevine PR_SPEC_DISABLE_NOEXEC seçeneği eklendi. Yeni bir seçenek, bir Spectre saldırısı tarafından potansiyel olarak saldırıya uğrayabilecek işlemler için spekülatif yürütmeyi seçerek devre dışı bırakmanıza olanak tanır. Kilit, exec(); işlevine yapılan ilk çağrıya kadar sürer;
    • Uygulanan LSM modülü SafeSetID, sistem hizmetlerinin ayrıcalıkları yükseltmeden (CAP_SETUID) ve kök ayrıcalıkları kazanmadan kullanıcıları güvenli bir şekilde yönetmesine olanak tanır. Ayrıcalıklar, geçerli bağlamaların beyaz listesine ("UID1:UID2" biçiminde) dayalı olarak, güvenlikfs'deki kurallar tanımlanarak atanır;
    • Güvenlik modüllerinin (LSM'ler) yığın tabanlı yüklenmesi için gereken düşük düzeyli değişiklikler eklendi. Hangi modüllerin hangi sırayla yüklendiğini kontrol etmek için "lsm" çekirdek önyükleme seçeneği sunuldu;
    • Denetim alt sistemine dosya ad alanları desteği eklendi;
    • Genişletilmiş olası bellek içeriği sızıntılarını engellemenize olanak tanıyan GCC eklentisi structleak'in yetenekleri Kodda kullanılan tüm değişkenlerin yığında referans erişimi yoluyla başlatılması sağlanır;
  • Ağ alt sistemi
    • Soketler için uygulandı yeni seçenek "SO_BINDTOIFINDEX" şuna benzer
      "SO_BINDTODEVICE", ancak arayüz adı yerine ağ arayüzünün indeks numarasını argüman olarak alır;

    • Mac80211 yığını, tek bir cihaza birden fazla BSSID (MAC adresi) atama yeteneğini ekledi. WiFi performansını optimize etme projesinin bir parçası olarak, mac80211 yığını, yayın süresi hesaplamasını ve yayın süresini birden fazla istasyon arasında dağıtma yeteneğini ekledi (erişim noktası modunda çalışırken, zamanı tüm istasyonlar arasında eşit olarak dağıtmak yerine yavaş kablosuz istasyonlara daha az iletim süresi ayırır). istasyonlar);
    • Mekanizma eklendi "devlink sağlıkAğ arayüzünde sorun oluştuğunda bildirim sağlayan ";
  • Bellek ve sistem hizmetleri
    • uygulandı PID'nin yeniden kullanılmasına olanak tanıyan güvenli sinyal iletimi. Örneğin, daha önce kill çağrıldığında, bir sinyal gönderildikten hemen sonra hedef PID'nin sürecin sonlandırılması nedeniyle serbest bırakılabileceği ve başka bir süreç tarafından işgal edilebileceği ve sinyalin başka bir sürece iletilebileceği bir durum ortaya çıkabilir. Bu tür durumları ortadan kaldırmak için, kararlı işlem bağlamayı sağlamak üzere /proc/pid dosyasındaki dosya tanımlayıcılarını kullanan yeni bir sistem çağrısı pidfd_send_signal eklendi. Sistem çağrısı işleme sırasında PID yeniden kullanılsa bile dosya tanımlayıcı değişmeyecek ve işleme bir sinyal göndermek için güvenli bir şekilde kullanılabilir;
    • Katma kalıcı bellek aygıtlarını kullanma yeteneği (örneğin, kalıcı bellek) NVDIMM) RAM olarak. Şimdiye kadar çekirdek, depolama aygıtları gibi aygıtları destekliyordu, ancak artık bunlar ek RAM olarak da kullanılabiliyor. Bu özellik, performans gecikmesine katlanmak isteyen ve dax için mmap üzerinde çalışan mevcut kullanıcı alanı bellek ayırma sistemlerini kullanmak yerine yerel Linux çekirdeği bellek yönetimi API'sini kullanmak isteyen kullanıcıların isteklerine yanıt olarak uygulanmıştır. dosya;
    • Yeni bir CPU boşta işleyici eklendi (cpuidle, CPU'nun ne zaman derin güç tasarrufu modlarına alınabileceğine karar verir; mod ne kadar derinse, tasarruf da o kadar fazla olur, ancak aynı zamanda moddan çıkmak da o kadar uzun sürer) - TEO (Zamanlayıcı Olaylarına Yönelik Vali) ). Şimdiye kadar, buluşsal yöntemler açısından farklılık gösteren iki işlemci işleyicisi önerildi: “menü” ve “merdiven”. "Menü" işleyicisinin buluşsal kararlar alma konusunda bilinen sorunları vardı ve bu sorunları ortadan kaldırmak için yeni bir işleyici hazırlanmasına karar verildi. TEO, aynı düzeyde güç tüketimini korurken daha yüksek performansa olanak tanıyan "menü" işleyicisine alternatif olarak konumlandırılmıştır.
      Yeni işleyiciyi “cpuidle.governor=teo” önyükleme parametresini kullanarak etkinleştirebilirsiniz;

    • Ortadan kaldırma çalışmalarının bir parçası olarak 2038'in sorunları32 bit time_t türünün taşmasından kaynaklanan 32 bit mimariler için 64 bit zaman sayaçları sunan sistem çağrılarını içerir. Sonuç olarak 64 bit time_t yapısı artık tüm mimarilerde kullanılabiliyor. Seçenekler için ağ alt sisteminde de benzer değişiklikler uygulandı zaman damgası ağ soketleri;
    • Çekirdek için sıcak yama sistemine (canlı yama) katma Tek bir işleve bir dizi değişikliği atomik olarak uygulamak için "Atomik Değiştirme" özelliği. Bu özellik, bakımı oldukça zor olan canlı yamaların kesin olarak tanımlanmış bir sırayla adım adım uygulanması süreci yerine, birkaç değişikliği kapsayan özet yamaları aynı anda dağıtmanıza olanak tanır. Daha önce her bir sonraki değişikliğin, fonksiyonun son değişiklikten sonraki durumuna dayanması gerekirken, artık tek bir başlangıç ​​durumuna bağlı birkaç değişikliğin aynı anda yayılması mümkün (yani bakımcılar bunun yerine temel çekirdeğe göre bir birleştirilmiş yamayı koruyabilirler) birbirine bağlı yamalar zincirinden);
    • Duyuruldu a.out yürütülebilir dosya formatı için destek kaldırılmıştır ve
      silindi Terk edilmiş durumdaki a.out formatında çekirdek dosyalar oluşturmaya yönelik kod. A.out formatı Linux sistemlerinde uzun süredir kullanılmamaktadır ve a.out dosyalarının oluşturulması, varsayılan Linux yapılandırmalarındaki modern araçlar tarafından uzun süredir desteklenmemektedir. Ayrıca a.out dosyalarına yönelik yükleyici tamamen kullanıcı alanında uygulanabilir;

    • BPF program doğrulama mekanizmasına kullanılmayan kodu tanımlama ve kaldırma yeteneği eklendi. Çekirdek ayrıca BPF alt sistemi için döndürme kilidi desteğine sahip yamalar içerir ve BPF programlarının paralel yürütülmesini yönetmek için ek yetenekler sağlar;
  • Оборудование
    • Nouveau sürücüsünde katma Heterojen bellek yönetimi desteği, CPU ve GPU'nun ortak senkronize bellek alanlarına erişmesine olanak tanır. Paylaşılan sanal bellek sistemi (SVM, paylaşılan sanal bellek), erişebilen kendi bellek yönetim birimlerine (MMU, bellek yönetim birimi) sahip cihazların kullanımına izin veren HMM (Heterojen bellek yönetimi) alt sistemi temelinde uygulanır. ana hafıza. Özellikle HMM'yi kullanarak GPU ile CPU arasında, GPU'nun işlemin ana belleğine erişebileceği paylaşılan bir adres alanı düzenleyebilirsiniz. SVM desteği şu anda yalnızca Pascal ailesi GPU'lar için etkindir, ancak Volta ve Turing GPU'lar için de destek sağlanmaktadır. Üstelik Nouveau'da katma işlem belleği alanlarının GPU belleğine geçişini kontrol eden yeni ioctl;
    • GPU Skylake ve üzeri (gen9+) için Intel DRM sürücüsünde açık Varsayılan olarak fastboot modu, önyükleme sırasında gereksiz mod değişikliklerini ortadan kaldırır. Katma yeni Coffelake ve Ice Lake mikro mimarilerini temel alan cihaz tanımlayıcıları. Coffelake cipsleri için katma GVT desteği (GPU sanallaştırma). Sanal GPU'lar için uygulandı VFIO EDID desteği. LCD paneller için MIPI/DSI katma ACPI/PMIC öğeleri desteği. Uygulandı yeni TV modları 1080p30/50/60 TV;
    • Amdgpu sürücüsüne Vega10/20 BACO GPU desteği eklendi. Vega 10/20 güç yönetimi ve Vega 10 soğutucu kontrol tabloları uygulandı.Picasso GPU'lar için yeni PCI cihaz tanımlayıcıları eklendi. Katma Kilitlenmeleri önlemek için programlanabilir bağımlılıkları yönetmek için arayüz;
    • Katma Ekran hızlandırıcılar için DRM/KMS sürücüsü ARM Komeda (Mali D71);
    • Toppoly TPG110, Sitronix ST7701, PDA 91-00156-A0, LeMaker BL035-RGB-002 3.5 ve Kingdisplay kd097d04 ekran panelleri için destek eklendi;
    • Rockchip RK3328, Cirrus Logic CS4341 ve CS35L36, MediaTek MT6358, Qualcomm WCD9335 ve Ingenic JZ4725B ses kodeklerinin yanı sıra Mediatek MT8183 ses platformu için destek eklendi;
    • NAND denetleyicileri Flash STMicroelectronics FMC2, Amlogic Meson için destek eklendi;
    • Habana AI donanım sistemleri için hızlandırıcı desteği eklendi;
    • NXP ENETC gigabit Ethernet denetleyicileri ve MediaTek MT7603E (PCIe) ve MT76x8 kablosuz arayüzleri için destek eklendi.

Aynı zamanda Latin Amerika Özgür Yazılım Vakfı oluşturulan
seçenek tamamen ücretsiz çekirdek 5.1 - Linux-libre 5.1-gnu, kapsamı üretici tarafından sınırlandırılmış, özgür olmayan bileşenler veya kod bölümleri içeren ürün yazılımı ve sürücü öğelerinden temizlenmiş. Yeni sürümde mt7603 ve goya sürücülerinde blob yükleme devre dışı bırakıldı. Wilc1000, iwlwifi, soc-acpi-intel, brcmfmac, mwifiex, btmrvl, btmtk ve touchscreen_dmi sürücüleri ve alt sistemlerindeki blob temizleme kodu güncellendi. Lantiq xrx200 ürün yazılımı yükleyicisindeki blob temizliği, çekirdekten çıkarılması nedeniyle durduruldu.

Kaynak: opennet.ru

Yorum ekle