FreeBSD Geliştirme Raporu Q2019 XNUMX

yayınlanan FreeBSD projesinin Temmuz'dan Eylül 2019'a kadar geliştirilmesine ilişkin rapor. Değişiklikler arasında şunları not edebiliriz:

  • Genel ve sistemik sorunlar
    • Çekirdek ekip, ek bir patent sözleşmesiyle BSD lisansı altında dağıtılan kodun sisteme dahil edilmesi olasılığını genel olarak onayladı (BSD+Patenti), ancak her bir bileşenin bu lisans kapsamında sisteme dahil edilmesi kararının ayrı ayrı onaylanması gerekir;
    • 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 ilk toplantısı gerçekleşti. Geçişin fizibilitesine ilişkin tartışma halen devam etmektedir ve pek çok konuyla ilgili kararlar henüz geliştirilmemiştir (örneğin, contrib/ ile ne yapılacağı, mevcut git deposunda karmaların yeniden oluşturulmasının gerekli olup olmadığı ve testlerin en iyi şekilde nasıl uygulanacağı). taahhüt eder);
    • NetBSD'den taşındı Farklı CPU'larda çalışan çekirdek iş parçacıkları arasındaki yarış koşullarını tespit etmenize olanak tanıyan KCSAN (Çekirdek Eşzamanlılık Temizleyici) araç seti;
    • GNU binutils birleştiricisi yerine Clang'ın yerleşik birleştiricisini (IAS) kullanma çalışmaları sürüyor;
    • Linux ortamı emülasyon altyapısı (Linuxulator), ARM64 mimarisi üzerinde çalışacak şekilde uyarlanmıştır. “Renameat2” sistem çağrısı uygulandı. strace yardımcı programı, Linuxulator'da çalışan Linux çalıştırılabilir dosyalarındaki sorunları teşhis etmek için geliştirildi. Yürütülebilir dosyaları yeni glibc ile bağlarken oluşan çökme sorunu çözüldü. Linuxulator için Linux bileşenlerine sahip bağlantı noktaları CentOS 7.7'ye güncellendi;
    • Google Summer of Code programının bir parçası olarak öğrenciler altı projeyi başarıyla tamamladılar: birleşik bir (IPv4/IPv6) ping yardımcı programının uygulaması hazırlandı, güvenlik duvarlarını test etmeye ve çekirdekteki hataları tanımlamaya (Çekirdek temizleyici) yönelik araçlar geliştirildi, mac_ipacl modül önerildi, sanal bellek sıkıştırması için kod yazıldı ve port oluşturma sürecini yerel kurulumdan ayırmak için çalışmalar yapıldı;
    • Sistemi kullanarak FreeBSD çekirdeğinin bulanıklaştırma testi projesi geliştirilmeye devam ediyor syzkaller. Raporlama döneminde syzkaller kullanılarak ondan fazla hata tespit edildi ve giderildi. Syzkaller'i bhyve tabanlı sanal makinelerde çalıştırmak için ayrı bir sunucu ayrılmıştır ve
      syzbot, Google altyapısındaki çeşitli FreeBSD alt sistemlerinin testini oluşturmuştur. Gruplandırma ve analizlerini basitleştirmek için tüm çökmelerle ilgili bilgilerin backtrace.io hizmetine aktarılmasını organize etti;

    • Zlib uygulamasının çekirdek düzeyinde güncellenmesine yönelik çalışmalar devam etmektedir.
      Sıkıştırmayla ilgili kod, 1.0.4 yıl önce yayımlanan zlib 20'ten mevcut zlib 1.2.11 kod tabanına taşındı. Zlib'e erişimi birleştirmek için çekirdeğe, sıkıştırma, sıkıştırma2 ve sıkıştırmayı açma işlevleri eklenmiştir. Netgraph alt sisteminden PPP protokolünün çalışmasını sağlayan kod, bu kütüphanenin kendi sürümü yerine zlib'in sistem uygulamasını kullanacak şekilde aktarılmıştır. Kern_ctf.c, opencryptodeflate, geom_uzip, subr_compressor, alt sistemleri de yeni zlib'e aktarıldı.
      if_mxge, bxe güncellendi ve ng_deflate;

    • Yeni bir çekirdek arayüzü geliştiriliyor sistem bilgisisysctl parametre veritabanındaki MIB (Yönetim Bilgi Tabanı) biçiminde işlenen öğeleri bulmanızı ve nesnelerle ilgili bilgileri kullanıcı alanına aktarmanızı sağlar.
  • güvenlik
    • Çekirdek modülü geliştirildi mac_ipaclTrustedBSD MAC Çerçevesini temel alan ve hapishane ortamları için ağ yığını ayarlarına yönelik bir erişim kontrol sistemi uygulayan. Örneğin, bir ana bilgisayar sistemi yöneticisi mac_ipacl kullanarak hapishane ortamındaki kök kullanıcının belirli ağ arayüzleri için IP adreslerini veya alt ağ ayarlarını değiştirmesini veya ayarlamasını engelleyebilir. Önerilen zorunlu erişim kontrol sistemi verir Jail için izin verilen IP adresleri ve alt ağların listesini ayarlayın, belirli IP'lerin ve alt ağların Jail'e kurulmasını yasaklayın veya yalnızca belirli ağ arayüzleri için parametrelerin değiştirilmesini sınırlandırın;
    • Intel projeye bir yazılım yığını bağlantı noktası bağışladı TPM 2.0 (Güvenilir Platform Modülü), genellikle ürün yazılımının ve işletim sistemi önyükleyicisinin doğrulanmış yüklenmesi için kullanılan güvenli bilgi işlem çipiyle arayüz oluşturmak için kullanılır. Yığın bileşenleri, güvenlik/tpm2-tss bağlantı noktaları, güvenlik/tpm2-araçları ve güvenlik/tpm2-abrmd biçiminde sunulur. tpm2-tss bağlantı noktası, TPM2 API'yi kullanmaya yönelik kitaplıkları içerir, tpm2-tools, TPM işlemlerini gerçekleştirmek için komut satırı yardımcı programları sağlar ve tpm2-abrmd, farklı TPM kullanıcılarından gelen istekleri çoğaltan TPM Erişim Aracısı ve Kaynak Yöneticisi bileşenlerinin arka plan işlem uygulamasını içerir tek bir cihaza. FreeBSD'de doğrulanmış önyüklemeye ek olarak TPM, ayrı bir çip üzerinde şifreleme işlemleri gerçekleştirerek Strongswan IPsec, SSH ve TLS'nin güvenliğini artırmak için kullanılabilir;
    • AMD64 mimarisinin çekirdeği, W^X (yazma XOR yürütme) koruma tekniği kullanılarak önyüklemeye uyarlanmıştır; bu, bellek sayfalarına yazma ve yürütme için aynı anda erişilemeyeceği anlamına gelir (çekirdek artık yazmanın gerekli olduğu yürütülebilir bellek sayfaları kullanılarak yüklenebilir). yasak). Yeni çekirdek koruma yöntemi HEAD dalına dahil edilmiştir ve FreeBSD 13.0 ve 12.2 sürümlerine dahil edilecektir;
    • mmap ve mprotect sistem çağrıları için uygulanan makro PROT_MAX(), daha sonraki değişiklikler için izin verilen erişim kısıtlama bayrakları kümesini belirlemenizi sağlar (PROT_READ, PROT_WRITE, PROT_EXEC). Bir geliştirici PROT_MAX()'ı kullanarak bir bellek bölgesinin yürütülebilir kategoriye aktarılmasını yasaklayabilir veya yürütmeye izin vermeyen ancak daha sonra yürütülebilir dosyaya dönüştürülebilecek bellek talebinde bulunabilir. Örneğin, bir bellek bölgesi yalnızca dinamik bağlantı veya JIT kodu oluşturma süresince yazmaya açık olabilir, ancak yazma işlemi tamamlandığında yalnızca okuma ve yürütmeyle sınırlandırılır ve gelecekte güvenliği ihlal edilirse saldırgan söz konusu bellek bloğu için yazmayı etkinleştiremeyecektir. PROT_MAX()'a ek olarak sysctl vm.imply_prot_max da uygulanır; bu, etkinleştirildiğinde mmap'e yapılan ilk çağrının başlangıç ​​parametrelerine dayalı olarak geçerli işaretler kümesini belirler;
    • Güvenlik açıklarından yararlanmaya karşı korumayı geliştirmek için, adres alanı rastgeleleştirme tekniğine (ASLR) ek olarak, ilk yığın çerçevesini ve yığına yerleştirilen yapıları, ortam, program başlatma parametreleri ve verilerle ilgili bilgilerle adresleyen işaretçilerin uzaklıklarını rastgele hale getirmeye yönelik bir mekanizma yürütülebilir görüntüler için ELF formatında önerilmektedir;
    • Güvenli olmayan get fonksiyonunun libc'den kaldırılması (C11 standardından başlayarak bu fonksiyon spesifikasyonun dışında tutulmuştur) ve hala bu fonksiyonu kullanan portların düzeltilmesi için çalışmalar yapılmıştır. Değişikliğin FreeBSD 13.0'da sunulması planlanıyor;
    • Çerçeveye dayalı olarak hapishane ortamlarını düzenlemek için araçlar oluşturmak amacıyla deneysel bir proje başlatıldı. kutu Docker'a benzer şekilde uygulanan görüntüler oluşturmak ve dışa aktarmak için ve bir sürücü göçebe, hapishane ortamında uygulamaları dinamik olarak başlatmak için bir arayüz sağlar. Önerilen model, hapishane ortamları oluşturma ve uygulamaları bu ortamlara yerleştirme süreçlerini ayırmamıza olanak tanır. Projenin hedeflerinden biri hapishaneleri Docker tarzı konteynerler olarak manipüle edecek bir araç sağlamak;
  • Depolama ve dosya sistemleri
    • NetBSD'den "makefs" yardımcı programına etkilenmiş FAT dosya sistemi desteği (msdosfs). Hazırlanan değişiklikler, md sürücüsü kullanmadan ve root yetkisi olmadan FAT ile FS imajı oluşturmanıza olanak tanıyor;
    • FUSE (USErspace'deki dosya sistemi) alt sistem sürücüsünün yeniden çalışması tamamlanarak kullanıcı alanında dosya sistemi uygulamalarının oluşturulmasına olanak sağlandı. Başlangıçta gönderilen sürücü birçok hata içeriyordu ve 7.8 yıl önce piyasaya sürülen FUSE 11'i temel alıyordu. Sürücü modernizasyon projesi kapsamında FUSE 7.23 protokolü desteği uygulandı, çekirdek tarafındaki erişim haklarını kontrol eden kod (“-o default_permissions”) eklendi, VOP_MKNOD, VOP_BMAP ve VOP_ADVLOCK çağrıları eklendi, FUSE işlemlerini kesme yeteneği sağlandı, sigortalara isimsiz borular ve unix soketleri desteği eklendi, /dev/fuse için kqueue kullanmak mümkün hale geldi, mount -u üzerinden mount parametrelerini güncellemek mümkün oldu, destek eklendi NFS yoluyla sigortaları dışa aktarmak için RLIMIT_FSIZE muhasebesi uygulandı, FOPEN_KEEP_CACHE ve FUSE_ASYNC_READ bayrakları eklendi, önemli performans optimizasyonları yapıldı ve önbellekleme organizasyonu iyileştirildi. Yeni sürücü ana ve kararlı/12 dallara dahil edilmiştir (FreeBSD 12.1'e dahil);
    • FreeBSD için NFSv4.2'nin (RFC-7862) uygulanması neredeyse tamamlandı. Raporlama döneminde ana odak noktası testlerdi. Linux uygulamasıyla uyumluluğu doğrulamak için testler tamamlandı, ancak pNFS sunucusunun NFSv4.2 ile testleri hala devam ediyor. Genel olarak kodun halihazırda FreeBSD ana/mevcut dallarına entegrasyona hazır olduğu düşünülmektedir. NFS'nin yeni sürümü, lseek'te posix_fadvise, posix_fallocate işlevleri, SEEKHOLE/SEEKDATA modları, bir dosyanın bazı bölümlerinin sunucuya yerel olarak kopyalanması işlemi (istemciye aktarılmadan) için destek ekler;
  • Donanım desteği
    • FreeBSD'nin dizüstü bilgisayarlardaki performansını artırmak için bir proje başlatıldı. FreeBSD'de donanım desteği açısından denetlenen ilk cihaz yedinci nesil Lenovo X1 Carbon dizüstü bilgisayardı;
    • CheriBSD, araştırma işlemci mimarisi için FreeBSD'nin bir çatalı SEVGİLİ (Yetenek Donanımı Geliştirilmiş RISC Talimatları), Capsicum tasarımının güvenlik modelini temel alan CHERI bellek erişim kontrol sistemini destekleyecek olan, yakında çıkacak ARM Morello işlemcisini destekleyecek şekilde güncellendi. Morello çipi planlama yapmak 2021'de piyasaya sürülecek. CheriBSD geliştiricileri ayrıca MIPS mimarisini temel alan CHERI referans prototipinin gelişimini de izlemeye devam ediyor;
    • RockPro3399 ve NanoPC-T64 kartlarında kullanılan RockChip RK4 yongaları için genişletilmiş destek. En önemli gelişme, eMMC desteği ve kartta kullanılan eMMC denetleyicisi için yeni bir sürücünün geliştirilmesiydi;
    • Yönlendiricilerde, ağ geçitlerinde ve ağ depolamada kullanıma yönelik ARMv64 Cortex-A5871 işlemcili ARM8 SoC Broadcom BCM57X desteğinin uygulanmasına yönelik çalışmalar devam ediyor. Raporlama dönemi boyunca
      iProc PCIe desteği genişletildi ve IPsec'i hızlandırmak için donanım şifreleme işlemlerini kullanma yeteneği eklendi.
      Dördüncü çeyrekte HEAD şubesine kod entegrasyonu bekleniyor;

    • powerpc64 platformu için FreeBSD bağlantı noktasının geliştirilmesinde önemli ilerlemeler kaydedildi. Odak noktası, IBM POWER8 ve POWER9 işlemcili sistemlerde kaliteli performans sağlamaktır ancak isteğe bağlı olarak eski Apple Power Mac'ler, x500 ve Amiga A1222 üzerinde çalışmayı destekler. powerpc*/12 şubesi gcc 4.2.1 ile birlikte gönderilmeye devam ediyor ve powerpc*/13 şubesi yakında llvm90'a taşınacak. 33306 bağlantı noktasından 30514'ü başarıyla monte edildi;
    • 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. Raporlama döneminde USB 3.0, SD/MMC, I2C, DPAA ve GPIO ağ arayüzü desteği hayata geçirildi. QSPI'yi desteklemeye ve ağ arayüzünün performansını optimize etmeye yönelik planlar var. 4 yılının 2019. çeyreğinde çalışmaların tamamlanması ve HEAD şubesine dahil edilmesi bekleniyor;
    • Ena sürücüsü, EC2 düğümleri arasındaki iletişimi 2 Gb/s'ye varan hızlarda düzenlemek için Elastic Compute Cloud (EC2) altyapısında kullanılan ikinci nesil ENAv25 (Elastik Ağ Adaptörü) ağ bağdaştırıcılarını destekleyecek şekilde güncellendi. NETMAP desteği ena sürücüsüne eklenip test edildi ve bellek düzeni Amazon EC2 A1 ortamlarında LLQ modunu etkinleştirecek şekilde uyarlandı;
  • Uygulamalar ve port sistemi
    • Grafik yığını bileşenleri ve xorg ile ilgili bağlantı noktaları güncellendi. USE_XORG ve XORG_CAT kullanan bağlantı noktaları, bsd.port.mk aracılığıyla bsd.xorg.mk'yi çağırmak yerine USES çerçevesine taşındı. Bu tür bağlantı noktaları artık makefile dosyalarında "USES=xorg" bayrağını içeriyor. XORG_CAT işlevi bsd.xorg.mk'den ayrılmıştır ve artık "USES=xorg-cat" bayrağıyla etkinleştirilmektedir. Git deposundan doğrudan xorg bağlantı noktaları oluşturmak için araçlar eklendi
      freedesktop.org, örneğin henüz yayınlanmamış sürümler için bağlantı noktaları oluşturmanıza olanak tanır. Gelecekte, xorg portları oluşturmak için otomatik araçlar yerine meson montaj sistemini kullanmaya yönelik araçlar hazırlamayı planlıyoruz.

      Artık desteklenmeyen bileşenlere bağlı eski xorg bağlantı noktalarını temizlemek için çalışmalar yapıldı; örneğin, x11/libXp bağlantı noktası kaldırıldı ve x11/Xxf86misc, x11-fonts/libXfontcache ve Graphics/libGLw bağlantı noktaları kullanımdan kaldırıldı. ;

    • FreeBSD'de Java 11 ve daha yeni sürümlere yönelik desteğin iyileştirilmesi ve ayrıca Java 8 şubesine bazı değişikliklerin taşınması için çalışmalar yapıldı.Java Flight Recorder, HotSpot Serviceability Agent, HotSpot Debugger gibi yeni Java 11 özellikleri için destek verildikten sonra uygulandı. FreeBSD, DTrace, Javac Server, Java Sound ve SCTP için çalışmalar tüm uyumluluk testlerinin geçmesini sağlamaya kaydırıldı. Testleri geçerken yaşanan başarısızlıkların sayısı 50'den 2'ye düşürüldü;
    • KDE Plazma masaüstü, KDE Çerçeveleri, KDE Uygulamaları ve Qt güncel tutulur ve en son sürümlere güncellenir;
    • Xfce masaüstünün yayınlanacağı bağlantı noktaları güncellendi 4.14;
    • FreeBSD bağlantı noktaları ağacı 38000 bağlantı noktasını aştı, kapatılmamış PR sayısı 2000'in biraz üzerinde, bunların 400'ü henüz çözülmedi. Raporlama döneminde 7340 geliştiriciden 169 değişiklik yapıldı. İki yeni katılımcı (Santhosh Raju ve Dmitri Goutnik) taahhüt hakları aldı. Pkg 1.12 paket yöneticisinin, bağlantı noktaları ağacındaki katmanları ve bsd.sites.mk'yi temizlemeyi destekleyen yeni bir sürümü yayınlandı. Bağlantı noktalarındaki önemli sürüm güncellemeleri arasında şunlar yer almaktadır: Lazarus 2.0.4, LLVM 9.0, Perl5.30, PostgreSQL 11, Ruby 2.6, Firefox 69.0.1, Firefox-esr 68.1.0, Chromium 76.0;
    • Proje geliştirme devam ediyor klonOS, gelişen sanal sunucu altyapısını dağıtmak için özel bir dağıtım. Çözdüğü görevler açısından ClonOS, Proxmox, Triton (Joyent), OpenStack, OpenNebula ve Amazon AWS gibi sistemlere benzemektedir; temel farkı FreeBSD kullanımı ve FreeBSD Jail konteynerlerini yönetme, dağıtma ve yönetme yeteneğidir. Bhyve ve Xen hipervizörlerini temel alan sanal ortamlar. Son değişiklikler arasında destek de var
      Linux/BSD VM için cloud-init ve Windows VM için cloudbase-init, yerel görüntüleri kullanmaya geçişe başlıyor, yapıları test etmek için Jenkins CI'yı ve kurulum için yeni bir pkg deposunu kullanıyor
      Paketlerden ClonOS.

Kaynak: opennet.ru

Yorum ekle