FreeBSD Geliştirme Raporu 2020. Çeyrek XNUMX

yayınlanan FreeBSD projesinin Ocak'tan Mart 2020'ye kadar geliştirilmesine ilişkin rapor. Değişiklikler arasında şunları not edebiliriz:

  • Genel ve sistemik sorunlar
    • FreeBSD-CURRENT kaynak ağacından GCC derleyici kümesinin yanı sıra kullanılmayan gperf, gcov ve gtc (devicetree derleyici) yardımcı programları kaldırıldı. Clang'ı desteklemeyen tüm platformlar, bağlantı noktalarından yüklenen harici oluşturma araçlarını kullanmaya geçirildi. Temel sistem, GCC 4.2.1'in eski bir sürümünü yayınladı ve FreeBSD temel bileşenleri için uygun olmadığı düşünülen 4.2.2'nin GPLv3 lisansına geçişi nedeniyle daha yeni sürümlerin entegrasyonu mümkün olmadı. GCC 9 da dahil olmak üzere GCC'nin mevcut sürümleri hâlâ paketlerden ve bağlantı noktalarından yüklenebiliyor.
    • Linux ortamı emülasyon altyapısı (Linuxulator), sendfile sistem çağrısı, TCP_CORK modu (nginx için gereklidir) ve MAP_32BIT bayrağı (Ubuntu Bionic'ten Mono ile paketlerin başlatılmasıyla ilgili sorunu çözer) için destek ekledi. 2.30'dan daha yeni glibc (örneğin CentOS 8'den) kullanıldığında DNS çözümlemesiyle ilgili sorunlar çözüldü.
      Sürekli entegrasyon altyapısı, Linux'u desteklemek için kodda yapılan iyileştirmeleri test etmek için Linuxulator çalıştıran LTP (Linux Test Projesi) işlerini çalıştırma yeteneği sağlar. Yaklaşık 400 test başarısız olur ve düzeltilmesi gerekir (bazı hatalar yanlış pozitiflerden kaynaklanır, bazıları önemsiz düzeltmeler gerektirir, ancak düzeltilmesi için yeni sistem çağrıları için destek eklenmesini gerektiren başkaları da vardır). Linuxulator kodunu temizlemek ve hata ayıklamayı basitleştirmek için çalışmalar yapıldı. Genişletilmiş öznitelikler ve fexecve sistem çağrısı desteğine sahip yamalar hazırlandı ancak henüz incelenmedi.

    • Kaynak kodlarının merkezi kaynak kontrol sistemi Subversion'dan merkezi olmayan sistem Git'e geçişini gerçekleştirmek üzere oluşturulan çalışma grubunun toplantıları devam ediyor. Göç önerilerini içeren bir rapor hazırlık aşamasındadır.
    • В rtld (çalışma zamanı bağlayıcı) geliştirilmiş doğrudan yürütme modu (“/libexec/ld-elf.so.1 {yol} {argümanlar}”).
    • FreeBSD çekirdeğinin syzkaller sistemi kullanılarak bulanıklaştırma testi projesi geliştirilmeye devam ediyor. Raporlama döneminde syzkaller kullanılarak belirlenen ağ yığını ve dosya tanımlayıcı tablolarla çalışma kodundaki sorunlar giderildi. Hata teşhisinin ardından, hata ayıklamayı kolaylaştırmak için SCTP yığınına değişiklikler eklendi. Olası regresyonları belirlemek için stres2 setine kurallar eklendi. copy_file_range(), __realpathat() ve Capsicum alt sistem çağrıları dahil olmak üzere yeni sistem çağrılarının bulanıklık testi için destek eklendi. Linux emülasyon katmanını fuzz testiyle kapsamaya yönelik çalışmalar devam ediyor. En son Kapsam Taraması raporlarında belirtilen hataları analiz ettik ve ortadan kaldırdık.
    • Sürekli entegrasyon sistemi, tüm ana dal testlerini yalnızca clang/lld kullanarak yürütmeye geçti. RISC-V için test yaparken, OpenSBI kullanılarak QEMU'da testlerin çalıştırılması için tam bir disk görüntüsünün oluşturulması sağlanır. Görüntüleri ve powerpc64 sanal makinelerini (FreeBSD-head-powerpc64-images, FreeBSD-head-powerpc64-testvm) test etmek için yeni görevler eklendi.
    • Geliştirilmesi bir emülatör kullanılarak gerçekleştirilen yeni mimarilerde Kyua kullanıldığında ortaya çıkan sorunları (paketler çok yavaş kuruluyor) çözmek için Kyua test paketinin portlardan (devel/kyua) temel sisteme aktarılmasına yönelik çalışmalar devam ediyor veya FPGA. Temel sisteme entegrasyon, gömülü platformların ve sürekli entegrasyon sistemleriyle arayüzün test edilmesini önemli ölçüde basitleştirecektir.
    • Ağ köprüsü sürücüsünün performansını optimize etmek için bir proje başlatıldı if_bridgeDahili verileri kilitlemek için tek bir muteks kullanan, çok sayıda hapishane ortamına sahip sistemlerde veya tek bir ağda birleştirilmiş sanal makinelerde istenen performansın elde edilmesine izin vermeyen. Bu aşamada kilitlerle çalışmanın modernizasyonu sırasında gerilemelerin yaşanmaması için koda testler eklenmiştir. Veri aktarım işleyicilerini (bridge_input(), Bridge_output(), Bridge_forward(), ...) paralelleştirmek için ConcurrencyKit kullanma olasılığı değerlendirilmektedir.
    • Özel durum işleyicilerinin performansını artırmak amacıyla bir iş parçacığının hızlı bir sinyal işleyici için bir bellek bloğu belirlemesine olanak tanıyan yeni bir sigfastblock sistem çağrısı eklendi.
    • Çekirdek, ARMv8.1 sistemleri tarafından desteklenen LSE (Büyük Sistem Uzantısı) atomik talimatları için destek ekler. Bu talimatlar, Cavium ThunderX2 ve AWS Graviton 2 kartlarında çalışırken performansı artırmak için gereklidir.Eklenen değişiklikler, LSE desteğini algılar ve bunlara dayalı atomik uygulamayı dinamik olarak etkinleştirir. Test sırasında LSE kullanımı, çekirdeğin montajı sırasında harcanan işlemci süresini %15 oranında azaltmayı mümkün kıldı.
    • Performans optimizasyonu gerçekleştirildi ve araç setinin işlevselliği, ELF formatındaki yürütülebilir dosyalar için genişletildi.
      DWARF hata ayıklama bilgilerinin önbelleğe alınması için destek eklendi, elfcopy/objcopy yardımcı programlarındaki sorunlar çözüldü, DW_AT_ranges işleme eklendi,
      readelf, Xen ve GNU Build-ID'nin yanı sıra PROTMAX_DISABLE, STKGAP_DISABLE ve WXNEEDED bayraklarının kodunu çözme yeteneğini uygular.

  • güvenlik
    • FreeBSD'nin Azure bulut ortamlarındaki performansını artırmak amacıyla, konuk sistem ile ana bilgisayar ortamı arasında ağ kurulumuna gerek kalmadan etkileşim için soket arayüzü kullanılmasına olanak sağlayan HyperV Soket mekanizmasına destek sağlanmasına yönelik çalışmalar devam ediyor.
    • Sistem bileşenlerinin çalıştırılabilir dosyalarının tam olarak belirtilen kaynak kodlarından derlenmesini ve gereksiz değişiklikler içermemesini sağlamak amacıyla tekrarlanabilir FreeBSD yapıları sağlamak için çalışmalar devam etmektedir.
    • Elfctl yardımcı programına, bireysel işlemler düzeyinde ek koruma mekanizmalarının (ASLR, PROT_MAX, yığın aralığı, W+X eşlemesi) dahil edilmesini kontrol etme yeteneği eklenmiştir.
  • Depolama ve dosya sistemleri
    • NFS'nin yalnızca RPC mesajlarını şifrelemekle sınırlı olan ve yalnızca yazılımda uygulanan Kerberos (sec=krb1.3p modu) kullanmak yerine TLS 5 tabanlı şifreli bir iletişim kanalı üzerinden çalışabilmesi için çalışmalar sürüyor. Yeni uygulama, donanım hızlandırmayı etkinleştirmek için çekirdek tarafından sağlanan TLS yığınını kullanıyor. TLS üzerinden NFS kodu test için neredeyse hazır, ancak yine de imzalı istemci sertifikalarını desteklemek ve çekirdek TLS yığınını NFS verilerini gönderecek şekilde uyarlamak için çalışma yapılması gerekiyor (alınmaya yönelik yamalar zaten hazır).
  • Donanım desteği
    • AMD teknolojilerini temel alan Çin x86 CPU Hygon'a destek ekleme çalışmaları devam ediyor;
    • Araştırma işlemci mimarisi için FreeBSD'nin bir çatalı olan CheriBSD'nin bir parçası olarak SEVGİLİ (Yetenek Donanımı Geliştirilmiş RISC Talimatları), Capsicum proje güvenlik modelini temel alan CHERI bellek erişim kontrol sistemini destekleyecek olan ARM Morello işlemci desteği uygulanmaya devam ediyor. Morello çipi planlama yapmak 2021'de piyasaya sürülecek. Çalışmalar şu anda Morello'ya güç veren Arm Neoverse N1 platformuna destek eklemeye odaklanıyor. RISC-V mimarisi için CheriBSD'nin ilk bağlantı noktası sunuldu. MIPS64 mimarisini temel alan CHERI referans prototipi için CheriBSD geliştirmesi devam ediyor.
    • FreeBSD taşıma işlemi, entegre ağ paket işleme hızlandırma motoru, 64 Gb Ethernet, PCIe 1046, SATA 8 ve USB 72 ile ARMv10 Cortex-A3.0 işlemciyi temel alan 3.0 bit SoC NXP LS3.0A için devam ediyor. Şu anda QorIQ ve LS1046A, GPIO, QorIQ LS10xx AHCI, VF610 I2C, Epson RX-8803 RTC, QorIQ LS10xx SDHCI sürücüleri ana FreeBSD bileşimine aktarım için hazırlanıyor.
    • Ena sürücüsü, EC2.1.1 düğümleri arasındaki iletişimi 2 Gb/'ye varan hızlarda düzenlemek için Elastic Compute Cloud (EC2) altyapısında kullanılan ikinci nesil ENAv2 (Elastik Ağ Adaptörü) ağ bağdaştırıcılarını destekleyen sürüm 25'e güncellendi. S. ENA 2.2.0'a yönelik bir güncelleme hazırlanmaktadır.
    • powerpc64 platformu için FreeBSD bağlantı noktasındaki iyileştirmeler devam ediyor. Odak noktası, IBM POWER8 ve POWER9 işlemcilere sahip sistemlerde kaliteli performans sağlamaktır. Raporlama döneminde FreeBSD-CURRENT, GCC yerine LLVM/Clang 10.0 derleyicisini ve lld bağlayıcısını kullanacak şekilde aktarıldı. Powerpc64 sistemleri varsayılan olarak ELFv2 ABI'yi kullanır ve ELFv1 ABI desteği durdurulmuştur. FreeBSD-STABLE hala gcc 4.2.1'e sahip. Virtio, aacraid ve ixl sürücülerindeki sorunlar giderildi. powerpc64 sistemlerinde QEMU'yu Huge Pages desteği olmadan çalıştırmak mümkündür.
    • RISC-V mimarisine yönelik desteğin uygulanmasına yönelik çalışmalar devam etmektedir. Mevcut haliyle FreeBSD, sürücülerin hazırlandığı SiFive Hifive Unleashed kartında başarıyla önyükleme yapıyor
      UART, SPI ve PRCI, OpenSBI ve SBI 0.2 ürün yazılımını destekler. Raporlama döneminde çalışmalar GCC'den clang ve lld'ye göç üzerine odaklandı.

  • Uygulamalar ve port sistemi
    • FreeBSD bağlantı noktaları koleksiyonu 39 bin bağlantı noktası eşiğini aştı, kapatılmamış PR sayısı 2400'ü biraz aştı ve bunların 640'ı henüz sıralanmadı. Raporlama döneminde 8146 geliştiriciden 173 değişiklik yapıldı. Dört yeni katılımcı taahhüt hakkı aldı (Loïc Bartoletti, Mikael Urankar, Kyle Evans, Lorenzo Salvadore). USES=qca bayrağı eklendi ve USES=zope bayrağı kaldırıldı (Python 3 ile uyumsuzluk nedeniyle). Python 2.7'yi bağlantı noktaları ağacından kaldırmak için çalışmalar devam etmektedir - tüm Python 2 tabanlı bağlantı noktalarının Python 3'e taşınması gerekir, aksi takdirde kaldırılacaktır. Pkg paket yöneticisi 1.13.2 sürümünü yayınlayacak şekilde güncellendi.
    • Grafik yığını bileşenleri ve xorg ile ilgili bağlantı noktaları güncellendi.
      X.org sunucusu 1.20.8 sürümüne güncellendi (daha önce 1.18 şubesinde gönderilmişti), bu da FreeBSD'nin giriş aygıtlarını işlemek için varsayılan olarak udev/evdev arka ucunu kullanmasına izin verdi. Mesa paketi varsayılan olarak DRI3 yerine DRI2 uzantısını kullanacak şekilde değiştirildi. Grafik sürücülerini, giriş aygıtı yığınını ve drm-kmod bileşenlerini (Linux çekirdeğinin Direct Rendering Manager ile uyumluluk için linuxkpi çerçevesini kullanarak amdgpu, i915 ve radeon DRM modüllerinin çalışmasını sağlayan bir bağlantı noktası) tutmak için çalışmalar devam etmektedir. güncel.

    • KDE Plazma masaüstü, KDE Çerçeveleri, KDE Uygulamaları ve Qt güncel tutulur ve en son sürümlere güncellenir. Bağlantı noktalarına yeni bir uygulama kstars (yıldız atlası) eklendi.
    • Xfce'yi 4 sürümüne güncelledikten sonra ortaya çıkan xfwm4.14 pencere yöneticisindeki gerileyen değişiklikleri ortadan kaldırmak için çalışmalar yapıldı (örneğin, pencereleri dekore ederken ortaya çıkan yapılar).
    • Wine bağlantı noktası, Wine 5.0'ı yayınlayacak şekilde güncellendi (daha önce 4.0.3 sunuluyordu).
    • Sürüm 1.14'ten itibaren Go dili derleyicisi, FreeBSD 64 için ARM12.0 mimarisine resmi destek ekledi.
    • Temel sistemdeki OpenSSH, 7.9p1'i yayınlayacak şekilde güncellendi.
    • Sysctlmibinfo2 kitaplığı uygulandı ve bağlantı noktalarına (devel/libsysctlmibinfo2) yerleştirildi, böylece sysctl MIB'ye erişim ve sysctl adlarını nesne tanımlayıcılara (OID'ler) çevirmek için bir API sağlandı.
    • Bir dağıtım güncellemesi oluşturuldu GöçebeBSD 1.3.1FreeBSD'nin bir USB sürücüsünden önyüklenebilir taşınabilir bir masaüstü olarak kullanılmak üzere uyarlanmış bir sürümüdür. Grafik ortamı bir pencere yöneticisine dayanmaktadır Açık kutu. Sürücüleri monte etmek için kullanılır DSBMD (CD9660, FAT, HFS+, NTFS, Ext2/3/4 montajı desteklenir), kablosuz bir ağ yapılandırmak için - wifimgrve ses seviyesini kontrol etmek için - DSBMiker.
    • Başlatan çalışmak hapishane ortamı yöneticisi için tüm belgelerin yazılması hakkında kutu. Ağ yığınını yönetmeye yönelik araçları içerecek olan Pot 0.11.0 yayınlanmak üzere hazırlanıyor.

Kaynak: opennet.ru

Yorum ekle