Linux 5.3 çekirdek sürümü

İki aylık geliştirme sürecinin ardından Linus Torvalds gönderilen çekirdek sürümü Linux 5.3. En dikkate değer değişiklikler arasında: AMD Navi GPU'ları, Zhaoxi işlemcileri ve Intel Speed ​​​​Select güç yönetimi teknolojisi desteği, döngü kullanmadan beklemek için umwait talimatlarını kullanma yeteneği,
Asimetrik CPU'lar için etkileşimi artıran 'kullanım sıkıştırma' modu, pidfd_open sistem çağrısı, 4/0.0.0.0 alt ağından IPv8 adreslerini kullanma yeteneği, nftables donanım hızlandırma olasılığı, DRM alt sisteminde HDR desteği, ACRN entegrasyonu hipervizör.

В duyuru Yeni sürümde Linus, tüm geliştiricilere çekirdek geliştirmenin ana kuralını hatırlattı: kullanıcı alanı bileşenleri için aynı davranışı sürdürmek. Çekirdekte yapılan değişiklikler hiçbir şekilde halihazırda çalışan uygulamaları bozmamalı veya kullanıcı düzeyinde gerilemelere yol açmamalıdır. Bu durumda, bir davranışın ihlali yalnızca ABI'de bir değişikliğe, eski kodun kaldırılmasına veya hataların ortaya çıkmasına neden olmakla kalmaz, aynı zamanda doğru çalışan faydalı iyileştirmelerin dolaylı etkisine de neden olabilir. Açıklayıcı bir örnek olarak oradaydı atılan işe yarar optimizasyon Küçük G/Ç istekleri için inode tablosunun önceden okunmasını devre dışı bırakarak sürücü erişim sayısını azaltan Ext4 kodunda.

Optimizasyon, disk etkinliğindeki azalmaya bağlı olarak, getrandom() rastgele sayı üretecinin entropisinin daha yavaş birikmeye başlamasına ve bazı yapılandırmalarda, belirli koşullar altında, entropi havuzu tamamlanana kadar yükleme sırasında donmaların gözlenebilmesine yol açtı. doldurulmuş. Optimizasyon gerçekten faydalı olduğundan, geliştiriciler arasında, getrandom() çağrısının varsayılan engelleme modunu devre dışı bırakarak ve entropiyi beklemek için isteğe bağlı bir bayrak ekleyerek sorunu çözmenin önerildiği bir tartışma ortaya çıktı, ancak böyle bir değişiklik, Yüklemenin ilk aşamasında rastgele sayıların kalitesi.

Yeni sürüm, 15794 geliştiriciden gelen 1974 düzeltmeyi içeriyor.
yama boyutu - 92 MB (değişiklikler 13986 dosyayı etkiledi, 258419 satır kod eklendi,
599137 satır kaldırıldı). 39'de sunulanların yaklaşık %5.3'i
değişiklikler aygıt sürücüleriyle ilgilidir; değişikliklerin yaklaşık %12'i
donanım mimarilerine özel kod güncellemeye yönelik tutum, %11
ağ yığınıyla ilgili, %3'ü dosya sistemleriyle ve %3'ü dahili
çekirdek alt sistemleri.

Ana yenilikler:

  • Bellek ve sistem hizmetleri
    • PID'nin yeniden kullanım durumlarının ele alınmasına yardımcı olmak için 'pidfd' işlevselliğinin sürekli geliştirilmesi (pidfd belirli bir işlemle ilişkilendirilir ve değişmez, oysa bir PID, o PID ile ilişkili mevcut işlem sona erdikten sonra başka bir işlemle ilişkilendirilebilir). Daha önce çekirdeğe eklenmiş
      idfd_send_signal()'da kullanılmak üzere bir pidfd elde etmek için pidfd_send_signal() sistem çağrısı ve clone() çağrısındaki CLONE_PIDFD bayrağı. clone() işlevini CLONE_PIDFD bayrağıyla kullanmak, hizmet yöneticilerinde veya Android platformunun belleği yetersiz zorlama sonlandırma sisteminde sorunlara neden olabilir. Bu durumda, başlatmak için CLONE_PIDFD olmadan fork() veya clone() çağrısı kullanılır.

      Çekirdek 5.3 sistem çağrısını başlattı pidfd_open()CLONE_PIDFD bayrağıyla clone() çağrılarak oluşturulmamış rastgele mevcut bir işlem için kontrol edilebilir bir pidfd almanıza olanak tanır. Ayrıca, yeni bir sürece bir PID atanması durumunda süreç yöneticilerinin yarış durumundan korkmadan keyfi süreçlerin sonlandırılmasını izlemesine olanak tanıyan poll() ve epoll() kullanarak pidfd yoklaması desteği eklendi. Pidfd ile ilişkili bir sürecin sonlandırıldığını bildirme mekanizması, alt sürecin sonlandırıldığını bildirme mekanizmasıyla aynıdır;

    • Görev zamanlayıcıya yük sabitleme mekanizması desteği eklendi (Kullanım kelepçesi), CPU üzerinde etkin olan görevlere bağlı olarak minimum veya maksimum frekans aralıklarına uymanıza olanak tanır. Sunulan mekanizma, kullanıcı deneyiminin kalitesini doğrudan etkileyen görevleri, bu görevleri en azından "istenen" frekansın alt ucunda çalıştırarak hızlandırıyor. Kullanıcının çalışmasını etkilemeyen düşük öncelikli görevler, "izin verilen" frekansın üst sınırı kullanılarak başlatılır. Sınırlar, sched_setattr() sistem çağrısındaki sched_uclamp_util_min ve sched_uclamp_util_max nitelikleri aracılığıyla ayarlanır.
    • Enerji yönetimi teknolojisi için destek eklendi Intel Hız Seçimi, Intel Xeon işlemcili belirli sunucularda mevcuttur. Bu teknoloji, farklı CPU çekirdekleri için performans ve bölümleme aktarım hızı ayarlarını belirlemenize olanak tanır; bu, diğer çekirdeklerdeki performanstan ödün vererek belirli çekirdeklerde gerçekleştirilen görevler için performansa öncelik vermenize olanak tanır;
    • Kullanıcı alanındaki işlemler tarafından sağlanan umwait komutunu kullanarak döngü kullanmadan kısa bir süre bekleme yeteneği. Bu talimat, umonitor ve tpause talimatlarıyla birlikte Intel'in gelecek "Tremont" çiplerinde sunulacak ve Hyper Threading kullanılırken enerji açısından verimli olan ve diğer iş parçacıklarının performansını etkilemeyen gecikmelerin uygulanmasına olanak tanıyacak;
    • RISC-V mimarisi için büyük bellek sayfaları desteği eklendi;
    • Kprobes izleme mekanizması, örneğin sistem çağrılarına iletilen yapıların içeriğini değerlendirmek için kullanılabilen, çekirdek işaretçilerinin kullanıcı alanına referansını kaldırma yeteneğini ekledi. Önyükleme aşamasında kontrolleri yükleme yeteneği de eklendi.
    • Gerçek zamanlı çalışma için yapılandırma dosyasına PREEMPT_RT seçeneği eklendi. Gerçek zamanlı modu destekleyen kodun kendisi henüz çekirdeğe eklenmedi, ancak seçeneğin görünümü, uzun vadeli destansı durumun iyi bir işareti. bütünleşme Realtime-Preempt yamaları tamamlanmak üzere;
    • Daha fazla sayıda işaretin belirlenmesine olanak tanıyan clone() arayüzünün daha genişletilebilir bir sürümünün uygulanmasıyla clone3() sistem çağrısı eklendi;
    • BPF programlarının isteğe bağlı işlemlere sinyal göndermesine olanak tanıyan bpf_send_signal() işleyicisi eklendi;
    • KVM hiper yönetici ortamındaki mükemmel olaylar için, yöneticinin konuk sistem tarafında izlenmesine izin verilen veya izin verilmeyen olay türlerini belirlemesine olanak tanıyan yeni bir olay filtreleme mekanizması eklenmiştir;
    • Döngünün yürütülmesi sınırlıysa ve maksimum talimat sayısı sınırının aşılmasına yol açamıyorsa, eBPF uygulama doğrulama mekanizmasına döngülerle programları işleme yeteneği eklenmiştir;
  • Disk Alt Sistemi, G/Ç ve Dosya Sistemleri
    • XFS dosya sistemi artık çok iş parçacıklı inode atlamasını desteklemektedir (örneğin, kotaları kontrol ederken). Yeni ioctl'ler BULKSTAT ve INUMBERS eklendi; bu, FS formatının beşinci baskısında ortaya çıkan inode doğum zamanı ve her AG grubu (Ayırma Grupları) için BULKSTAT ve INUMBERS parametrelerini ayarlama yeteneği gibi özelliklere erişim sağlıyor;
    • Ext4'te destek eklendi dizinlerdeki boşluklar (bağlantısız bloklar).
      İşleme sağlandı açık dosyalar için işaret “i” (değişmez) (bayrak dosyanın zaten açık olduğu bir zamanda ayarlanmışsa yazma yasaktır);

    • Btrfs, crc32c'nin tüm mimarilerde hızlı bir şekilde uygulanmasının tanımını sağlar;
    • CIFS'de smbdirect desteğine ilişkin kod deneysel geliştirme olarak kaldırılmıştır. SMB3, GCM modunda şifreleme algoritmalarını kullanma yeteneğini ekledi. ACE (Erişim Kontrol Girişi) girişlerinden mod parametrelerini çıkarmak için yeni bir bağlama seçeneği eklendi. open() çağrısının performansı optimize edildi;
    • Denetim noktası=devre dışı modunda çalışırken çöp toplayıcıyı sınırlamak için F2FS'ye bir seçenek eklendi. F2FS'deki blok aralıklarını kaldırmak için ioctl eklendi ve anında bölüm boyutu ayarlamalarına olanak tanıdı. Doğrudan G/Ç sağlamak için F2FS'ye bir takas dosyası yerleştirme yeteneği eklendi. Tüm kullanıcılar için bir dosyayı sabitlemek ve benzer dosyalara bloklar tahsis etmek için destek eklendi;
    • Eşzamansız giriş/çıkış io_uring arayüzüne sendmsg() ve recvmsg() eşzamansız işlemleri için destek eklendi;
    • UBIFS dosya sistemine zstd algoritması kullanılarak sıkıştırma desteği ve imzalı FS görüntülerini doğrulama yeteneği eklendi;
    • Ceph FS artık dosyalar için SELinux güvenlik etiketlerini destekliyor;
    • NFSv4 için, sunucuyla kurulan bağlantıların sayısını belirleyen yeni bir "nconnect=" bağlama seçeneği uygulandı. Bu bağlantılar arasındaki trafik, yük dengeleme kullanılarak dağıtılacaktır. Ek olarak, NFSv4 sunucusu artık, açtıkları dosyalar hakkındaki bilgiler de dahil olmak üzere mevcut istemciler hakkındaki bilgileri içeren bir /proc/fs/nfsd/clients dizini oluşturuyor;
  • Sanallaştırma ve Güvenlik
    • Çekirdek, gömülü cihazlar için bir hipervizör içerir ACRNGerçek zamanlı görevlere hazır olma ve kritik görev sistemlerinde kullanıma uygunluk göz önünde bulundurularak yazılmıştır. 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, kontrol 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;
    • Kullanıcı Modu Linux'ta katma Zamanla ilgili kodda hata ayıklamayı kolaylaştırmak için sanal UML ortamında zamanı yavaşlatmanıza veya hızlandırmanıza olanak tanıyan zaman yolculuğu modu. Ayrıca bir parametre eklendi
      sistem saatinin çağ formatında belirli bir andan başlamasına olanak tanıyan zaman yolculuğu başlangıcı;

    • Yeni çekirdek komut satırı seçenekleri "init_on_alloc" ve "init_on_free" eklendi, belirtildiğinde, tahsis edilen ve serbest bırakılan bellek alanlarının sıfırlanması etkinleştirilir (malloc ve ücretsiz için sıfırlarla doldurma), bu da ek başlatma nedeniyle güvenliği artırmayı mümkün kılar genel gider;
    • Yeni sürücü eklendi sanal-iommu ATTACH, DETACH, MAP ve UNMAP gibi IOMMU isteklerini bellek sayfa tablolarını taklit etmeden sanal aktarım üzerinden göndermenize olanak tanıyan paravirtualleştirilmiş bir cihazın uygulanmasıyla;
    • Yeni sürücü eklendi virtio-pmemNVDIMM'ler gibi fiziksel adres alanına eşlenen depolama aygıtlarına erişimi temsil eder;
    • Bir kullanıcıya veya ağ ad alanına kriptografik anahtarlar ekleme (anahtarlar seçilen ad alanı dışında erişilemez hale gelir) ve ayrıca ACL'leri kullanarak anahtarları koruma yeteneği uygulandı;
    • Kripto alt sistemine katma çok hızlı, kriptografik olmayan karma algoritma desteği xxhashhızı bellek performansına bağlıdır;
  • Ağ alt sistemi
    • Daha önce kullanılamayan 4/0.0.0.0 aralığındaki IPv8 adreslerinin işlenmesi etkinleştirildi. Bu alt ağın tanıtımı izin verecek 16 milyon IPv4 adresi daha dağıtın;
    • Nftable'lar için Netfilter'da katma Eklenen sürücülerin kullanımı yoluyla paket filtrelemeye yönelik donanım hızlandırma mekanizmaları desteği Akış Bloğu API'si. Tüm zincirleri içeren kural tablolarının tamamı ağ bağdaştırıcılarının yanına yerleştirilebilir. Etkinleştirme, NFT_TABLE_F_HW bayrağının tabloya bağlanmasıyla yapılır. Katman 3 ve Katman 4 protokolleri için basit meta verileri, kabul/ret eylemlerini, IP'ye ve gönderen/alıcı ağ bağlantı noktalarına ve protokol türüne göre eşlemeleri destekler;
    • Katma br_netfilter öykünme katmanının kullanılmasını gerektirmeyen ağ köprüleri için yerleşik bağlantı izleme desteği;
    • Nf_tables'da katma iptables'tan benzer işlevleri kopyalayan SYNPROXY modülü desteği ve IPv4 başlığındaki bireysel seçenekler için kuralları kontrol etme yeteneği de uygulanmıştır;
    • Setockopt() ve getsockopt() sistem çağrılarına BPF programları ekleme özelliği eklendi; bu, örneğin kendi erişim işleyicilerinizi bu çağrılara eklemenize olanak tanır. Ek olarak, her RTT aralığı (gidiş-dönüş süresi, ping süresi) için BPF programına bir kez çağrı düzenleyebileceğiniz yeni bir çağrı noktası (kanca) eklenmiştir;
    • IPv4 ve IPv6 için katma Yönlendirme tablolarının ölçeklenebilirliğini artırmayı amaçlayan yeni nexthop yönlendirme veri depolama mekanizması. Testler, yeni sistemi kullanırken çekirdeğe yalnızca 743 saniyede 4.3 bin rotadan oluşan bir setin yüklendiğini gösterdi;
    • Bluetooth için uygulandı LE ping'i desteklemek için gereken işlevsellik;
  • Оборудование
    • Katma şirketin x86 uyumlu işlemcileri için destek ZhaoksinVIA Technologies ile Şanghay Belediyesi arasındaki ortak proje sonucunda geliştirildi. ZX CPU ailesi x86-64 Isaiah mimarisi üzerine inşa edilmiş olup teknolojinin gelişimini sürdürmektedir. VIA Centaur;
    • DRM (Doğrudan İşleme Yöneticisi) alt sisteminin yanı sıra amdgpu ve i915 grafik sürücüleri, HDMI bağlantı noktası aracılığıyla HDR (yüksek dinamik aralık) meta verilerinin ayrıştırılması, işlenmesi ve gönderilmesi için destek ekledi; bu, HDR panellerinin ve ekranların kullanılmasına olanak tanıyor. ek parlaklık aralıklarının görüntülenmesi;
    • amdgpu sürücüsü, temel sürücüyü, ekran etkileşim kodunu (DCN5700), GFX ve hesaplama desteğini (GFX2) içeren AMD NAVI GPU (RX10) için başlangıç ​​desteğini ekledi.
      SDMA 5 (Sistem DMA0), güç yönetimi ve multimedya kodlayıcıları/kod çözücüleri (VCN2). amdgpu ayrıca, ek bellek ve güç yönetimi özelliklerinin eklendiği Vega12 ve Vega20 GPU'larını temel alan kartlara yönelik desteği de geliştiriyor;

    • amdkfd sürücüsüne VegaM GPU'larını temel alan kartlar için destek eklendi (Fiji, Tonga, Polaris gibi ayrı GPU'lar için);
    • Icelake çipleri için Intel video kartlarının DRM sürücüsünde uygulanan yeni çok bölümlü gama düzeltme modu. DisplayPort aracılığıyla YCbCr4:2:0 formatında çıktı alma özelliği eklendi. Yeni ürün yazılımı eklendi GuC SKL, BXT, KBL, GLK ve ICL için. Eşzamansız modda ekran gücünü kapatma özelliği uygulandı. Katma bir toplu işlemden diğerine geçerken GPU durumunu kullanıcı alanından geri yüklemenize olanak tanıyan Ironlake (gen5) ve gen4 (Broadwater - Cantiga) yongaları için oluşturma bağlamını kaydetme ve geri yükleme desteği;
    • Nouveau sürücüsü, NVIDIA Turing TU116 yonga setinin algılanmasını sağlar;
    • ARM Komeda ekran hızlandırıcıları (Mali D71) için DRM/KMS sürücüsünün yetenekleri genişletildi; ölçeklendirme, katmanları bölme/birleştirme, döndürme, gecikmeli yazma, AFBC, SMMU ve Y0L2, P010, YUV420_8/10BIT renk kodlama formatları desteği eklendi eklendi;
    • MSM sürücüsü, Qualcomm işlemcilerde kullanılan A540 GPU Adreno serisi için desteğin yanı sıra Snapdragon 8998 için MSM835 DSI denetleyicisi için destek ekler;
    • Samsung S6E63M0, Armadeus ST0700, EDT ETM0430G0DH6, OSD101T2045-53TS LCD paneller için sürücüler eklendi.
      Evervision VGG804821, FriendlyELEC HD702E, KOE tx14d24vm1bpa, TFC S9700RTWV43TR-01B, EDT ET035012DM6 ve VXT VL050-8048NT-C01;

    • Katma kod çözme hızlandırma araçlarını etkinleştirmek için sürücü
      Amlogic Meson SoC'de bulunan videolar;

    • V3d sürücüsünde (Raspberry Pi'de kullanılan Broadcom Video Core V GPU için) belirdi destek hesaplama gölgelendiricilerinin gönderilmesi;
    • Katma Apple MacBook ve MacBookPro dizüstü bilgisayarların modern modellerinde kullanılan SPI klavyeleri ve izleme dörtgenleri için sürücü;
    • Katma disket sürücüsüyle ilişkili ioctl çağrıları için ek koruma ve sürücünün kendisi bakımsız olarak işaretlendi
      (“yetim”), bu da testinin sona ermesi anlamına gelir. Sürücü hala çekirdekte saklanmaktadır ancak doğru çalışması garanti edilmez. Sürücünün eski olduğu düşünülüyor, çünkü test etmek için çalışma ekipmanı bulmak zor - mevcut tüm harici sürücüler kural olarak USB arayüzünü kullanıyor.

    • Katma Raspberry Pi kartları için işlemci frekansındaki değişiklikleri dinamik olarak kontrol etmenizi sağlayan cpufreq sürücüsü;
    • Yeni ARM SoC Mediatek mt8183 (4x Cortex-A73 + 4x Cortex-A53), TI J721E (2x Cortex-A72 + 3x Cortex-R5F + 3 DSP + MMA) ve Amlogic G12B (4x Cortex-A73 + 2x Cortex-) desteği eklendi A53 ) ve panolar:
      • Pürizm Librem5,
      • Aspeed BMC,
      • Microsoft OlympusBMC,
      • Kontron SMARC,
      • Novtech Meerkat96 (i.MX7),
      • ST Mikro İntikamcı96,
      • Google Cheza (Qualcomm SDM845),
      • Qualcomm Dragonboard 845c (Qualcomm SDM845),
      • Hugsun X99 TV Kutusu (Rockchip RK3399),
      • Khadas Edge/Edge-V/Kaptan (Rockchip RK3399),
      • HiHope RZ/G2M,
      • NXP LS1021A-TSN.

Aynı zamanda Latin Amerika Özgür Yazılım Vakfı oluşturulan
seçenek tamamen ücretsiz çekirdek 5.3 - Linux-libre 5.3-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 qcom, hdcp drm, allegro-dvt ve meson-vdec sürücülerinde blob yükleme devre dışı bırakıldı.
Amdgpu, i915, netx, r8169, brcmfmac, rtl8188eu, adreno, si2157, pvrusb2, touchscreen_dmi, skylake için ses sürücüsü ve mikro kod belgelerindeki sürücü ve alt sistemlerdeki blob temizleme kodu güncellendi.

Kaynak: opennet.ru

Yorum ekle