2019-cu ilin üçüncü rübü üçün FreeBSD inkişaf hesabatı

Nəşr edilib 2019-cu ilin iyulundan sentyabrınadək FreeBSD layihəsinin inkişafı haqqında hesabat. Dəyişikliklər arasında bunları qeyd etmək olar:

  • Ümumi və sistem məsələləri
    • Core team ümumilikdə patent istifadəsi ilə bağlı əlavə müqavilə ilə BSD lisenziyası altında təmin olunan kodun sistemə daxil edilməsini təsdiqlədi (BSD+Patent), lakin bu lisenziya altında hər bir komponentin sistemə daxil edilməsi üçün ayrıca qərar qəbul edilməlidir;
    • Mərkəzləşdirilmiş Subversion mənbə kodu idarəetmə sistemindən mərkəzsiz Git sisteminə keçid həyata keçirmək üçün yaradılmış işçi qrupunun ilk iclası keçirilib. Keçid məsələsinin müzakirəsi hələ də davam edir və bir çox məsələlər üzrə hələ qərar verilməlidir (məsələn, contrib/ ilə necə davranmaq lazımdır, cari git-repositoriyasında hash-ları yenidən generasiya etmək lazımdırmı və commit-ləri necə ən yaxşı şəkildə test etmək olar);
    • NetBSD-dən taşınmış KCSAN (Kernel Concurrency Sanitizer) alət dəstinin istifadəsi üzərində iş gedir, bu, fərqli CPU-larda çalışan noyau axınları arasında yarış şərtlərinin yaranmasını aşkar etməyə imkan tanıyır;
    • Clang daxilindəki assemblerin (IAS) istifadə edilməsi üçün iş aparılır, GNU binutils-dən deyil;
    • Linux mühitinin emuliasiyası infrastrukturu (Linuxulator) ARM64 arxitekturasında işləmək üçün uyğunlaşdırılıb. "renameat2" sistem çağırışı həyata keçirilib. Linuxulator-da icra olunan Linux icra fayllarındakı problemləri diaqnoz etmək üçün strace utiliti təkmilləşdirilib. Yeni glibc ilə icra fayllarının bağlanması zamanı baş verən xətalar həll edilmişdir. Linuxulator üçün Linux komponentləri olan portlar CentOS 7.7-yə yenilənmişdir;
    • Google Summer of Code proqramı çərçivəsində tələbələr altı layihəni uğurla tamamlayıblar: vahid (IPv4/IPv6) ping utilitinin reallaşdırılması, şəbəkə təsdiqləyici test alətləri (Firewall testing tools) hazırlanması və noyau (Kernel sanitizer) xətalarının aşkar edilməsi üçün alətlər, mac_ipacl modulu təklif edilmiş, virtual yaddaş sıxılmasına dair kod yazılmış və portların yığılması prosesi vasitəsi ilə lokal quraşdırmadan ayrılması üzrə iş aparılmışdır;
    • FreeBSD noyunun fuzzing testləşdirmə layihəsi inkişaf etməyə davam edir, syzkaller. Hesabat dövründə syzkaller vasitəsilə ondan çox xəta aşkar edilmiş və aradan qaldırılmışdır. Syzkali virtual maşınlarda işləməsi üçün ayrı bir server ayrılmışdır, həmçinin
      syzbot vasitəsilə FreeBSD-nin müxtəlif alt sistemlərinin Google infrastrukturasında yoxlanması təşkil edilmişdir. Bütün çöküşlərlə bağlı məlumatların backtrace.io xidmətinə ötürülməsi təşkil edilmişdir, bu da onların qruplaşdırılması və analizi üçün asanlıq yaradır;
    • Noyunun səviyyəsində zlib-in tətbiqinin yenilənməsi üzərində iş gedir.
      Sıxma kodu, 20 ildən çox əvvəl buraxılmış zlib 1.0.4 versiyasından müasir zlib 1.2.11 kod bazasına tərcümə edilib. zlib-ə girişin standartlaşdırılması üçün compress, compress2 və uncompress funksiyaları nüvəyə əlavə edilib. PPP protokolunu işlədən kod netgraph alt sistemindən sistemin zlib realizasiyasına keçirilmişdir, öz versiyası yerinə. Yeni zlib-yə kern_ctf.c, opencryptodeflate, geom_uzip, subr_compressor alt sistemləri də tərcümə edilmişdir.
      if_mxge, bxe updated və ng_deflate;
    • Yeni nüvə interfeysi inkişaf etdirilir sysctlinfo, sysctl parametr bazasında elementləri tapmağa imkan verən və obyektlər haqqında məlumatı istifadəçi mühitinə ötürən MIB (İdarəetmə İnformasiya Bazası) şəklində işlənir.
  • Təhlükəsizlik
    • Nüvə modulu hazırlanmışdır mac_ipacl, TrustedBSD MAC Framework əsaslanaraq və jail mühitləri üçün şəbəkə stekinə girişin idarə sistemi tətbiq edir. Məsələn, mac_ipacl vasitəsilə ev sahibi sistemin administratoru jail mühitində root istifadəçisinə müəyyən şəbəkə interfeysləri üçün IP ünvanlarını və ya alt şəbəkə parametrlərini dəyişdirməyə və ya təyin etməyə qadağa qoya bilər. Təklif olunan mandator idarəetmə sistemi rezerv dəyəri göstərmək üçün, əgər yoxdur Jail üçün icazə verilən IP ünvanları və alt şəbəkələr siyahılarını təyin etməyə, Jail-də müəyyən IP-lərin və alt şəbəkələrin yaradılmasından imtinaya və ya sadəcə müəyyən şəbəkə interfeysləri üçün parametrlərin dəyişdirilməsini məhdudlaşdırmağa imkan verir;
    • Intel şirkəti layihəyə port proqram stack-ını təqdim edib TPM 2.0 (Etibarlı Platforma Modulu) təhlükəsiz hesablamalar üçün çip ilə əlaqə üçün, bu, adətən, firmware və OS yükləyicilərinin təsdiqlənmiş yüklənməsi üçün istifadə olunur. Stack komponentləri security/tpm2-tss, security/tpm2-tools və security/tpm2-abrmd portları şəklində təqdim olunur. tpm2-tss portu, TPM2 API-sinin istifadəsi üçün kitabxanaları ehtiva edir, tpm2-tools isə TPM ilə əməliyyatların yerinə yetirilməsi üçün əmr xətası vasitələri təqdim edir, tpm2-abrmd isə TPM Access Broker və Resource Manager komponentlərinin həyata keçirilməsi ilə fon prosesini ehtiva edir, TPM istifadəçilərindən gələn sorğuları bir cihazda çarpazlaşdırır. Təsdiqlənmiş yükləmədən əlavə, FreeBSD-də TPM, Strongswan IPsec, SSH və TLS üçün təhlükəsizliyi artırmaq məqsədilə ayrı çipdə kripto əməliyyatlar yerinə yetirərək istifadə oluna bilər;
    • amd64 arxitekturası üçün nüvə W^X (yazma XOR icra) texnikası ilə yüklənmək üçün uyğunlaşdırılmışdır, bu da yaddaş səhifələrinin eyni anda yazma və icra etməyə imkan vermədiyini nəzərdə tutur (nüvə indi yazma qadağan edilmiş icra olunan yaddaş səhifələri ilə yüklənə bilər). Yeni nüvə qoruma metodu HEAD şöbəsinə daxil edilib və FreeBSD 13.0 və 12.2 buraxılışlarına daxil olacaq;
    • mmap və mprotect sistem çağırışları üçün reallaşdırılmışdır PROT_MAX() makrosu, giriş erişim kısıtlamaları kümesindeki değişikliklerde kabul edilebilir olanı belirlemeye olanak tanır (PROT_READ, PROT_WRITE, PROT_EXEC). PROT_MAX() ile geliştirici, bellek alanını yürütme kategorisine dönüştürmeyi yasaklayabilir veya yürütmeye izin vermeyen belleği talep edebilir, ancak daha sonra yürütülebilir olanlara dönüştürülebilir. Örneğin, bir bellek alanı yalnızca dinamik bağlama veya JIT kodu oluşturma süresince yazma için açılabilir, ancak yazma işlemi tamamlandığında yalnızca okuma ve yürütme ile kısıtlanır; böylece, bir ihlal durumunda, saldırgan bu bellek bloğu için yazma iznini artırmakta zorlanır. PROT_MAX()'e ek olarak, sysctl vm.imply_prot_max da uygulanmıştır; bu etkinleştirildiğinde, izin verilen bayraklar kümesi mmap'ın ilk çağrısındaki başlangıç parametrelerine dayalı olarak belirlenir.
    • Zafiyetlerin kötüye kullanılmasına karşı korumayı güçlendirmek için adres alanı rastgeleleştirme (ASLR) tekniğinin yanı sıra, yığın çerçevesinin başlangıcını hedefleyen ve çevresel bilgiler, programın başlatma parametreleri ve ELF formatındaki yürütülebilir görüntü verileriyle yığın içinde yer alan yapıların kaydırma rastgeleleştirmesi mekanizması önerilmiştir.
    • Güvenli olmayan gets fonksiyonunun libc'den kaldırılması (C11 standardından itibaren bu fonksiyon spesifikasyondan çıkarılmıştır) ve bu fonksiyonu hala kullanan portların düzeltilmesi çalışmaları gerçekleştirilmiştir. Değişikliğin FreeBSD 13.0'da önerilmesi planlanmaktadır.
    • Hapishane ortamlarının orkestrasyonunu sağlamak için bir deneysel proje başlatılmıştır. pot Docker ile benzer bir şekilde uygulamalara özel görüntülerin oluşturulması ve dışa aktarılması için bir çerçeve ve nomadadı verilen dinamik uygulama çalıştırma ara yüzünü sağlayan sürücü geliştirilmiştir. Önerilen model, hapishane ortamlarının oluşturulması ile içindeki uygulamaların dağıtım süreçlerini ayırmayı mümkün kılar. Projenin hedeflerinden biri, hapishaneleri Docker tarzı konteynerler gibi manipüle etmek için bir araç sağlamaktır.
  • Saxlama sistemləri və fayl sistemləri
    • NetBSD'den 'makefs' aracına aktarılmıştır. FAT dosya sistemi (msdosfs) desteği. Hazırlanan değişiklikler, FAT ile dosya sisteminin görüntülerini oluşturmayı root yetkisi olmadan ve md sürücüsü kullanmadan sağlamaktadır.
    • FUSE (File system in USErspace) alt sistemi sürücüsünün yenilənməsi tamamlandı və bu sürücü, istifadəçi məkanında fayl sistemləri həyata keçirməyə imkan verir. Əvvəlcə təqdim edilən sürücü bir çox xətalarla yanaşı idi və 11 il əvvəl buraxılan FUSE 7.8 versiyasına əsaslanırdı. Sürücünün modernləşdirilməsi layihəsi çərçivəsində FUSE 7.23 protokolu dəstəkləndi, nüvənin tərəfində hüquq yoxlaması üçün kod əlavə edildi (“-o default_permissions”), VOP_MKNOD, VOP_BMAP və VOP_ADVLOCK çağırışları əlavə olundu, FUSE əməliyyatlarının dayandırılması mümkün oldu, fusefs-də adlandırılmamış kanallar və unix socket-lar dəstəkləndi, /dev/fuse üçün kqueue istifadəsi imkanı yarandı, “mount -u” ilə montaj parametrlərinin güncellenmesi imkan verildi, fusefs-in NFS vasitəsi ilə ixracı dəstəkləndi, RLIMIT_FSIZE-i hesablama həyata keçirildi, FOPEN_KEEP_CACHE və FUSE_ASYNC_READ bayraqları əlavə olundu, performans optimallaşdırmaları aparıldı və keşləşdirmə yaxşılaşdırıldı. Yeni sürücü head və stable/12 sahələrinə daxil edilib (FreeBSD 12.1-ə daxil edilib);
    • FreeBSD üçün NFSv4.2 (RFC-7862) tətbiqiylə işlər demək olar ki, sona çatır. Hesabat dövründə əsas diqqət test sürüşü zamanı yönləndirildi. Linux versiyası ilə uyğunluq yoxlamaq üçün testlər tamamlandı, lakin hələ də NFSv4.2 ilə pNFS serverinin işini yoxlamaq davam edir. Ümumiyyətlə, kod artıq FreeBSD head/current sahələrinə inteqrasiya üçün hazır kimi qiymətləndirilir. Yeni NFS versiyasında posix_fadvise, posix_fallocate funksiyaları, lseek-in SEEKHOLE/SEEKDATA rejimləri, serverdə faylın hissələrinin yerli nüsxəsini çıxarma əməliyyatı (müştəriyə ötürülmədən) dəstəklənir;
  • Avadanlıq dəstəyi
    • FreeBSD-nin noutbuklarda işləməsini yaxşılaşdırmaq layihəsi başladı. FreeBSD-də avadanlıq dəstəyinin auditini keçirən ilk cihaz yeddinci nəsil Lenovo X1 Carbon noutbuku oldu;
    • CheriBSD, tədqiqat prosessoru arxitekturası üçün FreeBSD-dən bir güncəllənmə CHERI (Capability Hardware Enhanced RISC Instructions), CHERI-yə əsaslanan yaddaş giriş idarəetmə sistemini dəstəkləmək üçün ARM Morello prosessoru üçün yeniləndi, bu sistem Capsicum layihəsinin qoruma modelinə əsaslanır. Morello çipi 2021-ci ildə buraxılmasını planlaşdırır. 2021-ci ildən çıxarılacaq. CheriBSD istehsalçıları, MIPS arxitekturası əsaslı CHERI referans prototipinin inkişafını da izləməyə davam edirlər;
    • RockPro64 və NanoPC-T4 platalarında istifadə olunan RockChip RK3399 çiplərinin dəstəyi artırıldı. Ən əhəmiyyətli yaxşılaşdırma eMMC dəstəyi və plakanın eMMC kontrolleri üçün yeni sürücünün hazırlanması oldu;
    • ARMv8 Cortex-A57 prosessorları üçün Broadcom BCM5871X ARM64 SoC dəstəyinin həyata keçirilməsi üzərində iş davam etdirilir, bu prosessorlar routerlər, qapılar və şəbəkə anbarlarında istifadəyə yönəlmişdir. Hesabat dövründə
      iProc PCIe dəstəyi artırıldı və IPsec-in sürətlənməsi üçün aparate əsaslanan kriptoqrafik əməliyyatların istifadəsi imkanı gətirildi.
      HEAD sahəsinə kod inteqrasiyasının dördüncü kvartalda gözlənildiyi bildirilir;
    • Significant achievements have been noted in the development of the FreeBSD port for the powerpc64 platform. The main focus is on ensuring quality performance on systems with IBM POWER8 and POWER9 processors, but support for older Apple Power Mac, x500 and Amiga A1222 is also optional. The powerpc*/12 branch continues to ship with gcc 4.2.1, while the powerpc*/13 branch will soon be transitioned to llvm90. Out of 33,306 ports, 30,514 build successfully;
    • The porting of FreeBSD for the 64-bit SoC NXP LS1046A based on the ARMv8 Cortex-A72 processor with an integrated network packet processing acceleration engine, 10 Gb Ethernet, PCIe 3.0, SATA 3.0, and USB 3.0 has continued. During the reporting period, support for USB 3.0, SD/MMC, I2C, DPAA network interface, and GPIO was implemented. Plans include support for QSPI and performance optimization of the network interface. The completion of work and inclusion in the HEAD branch is expected in Q4 2019;
    • The ena driver has been updated to support the second generation of ENAv2 (Elastic Network Adapter) network adapters used in the Elastic Compute Cloud (EC2) infrastructure for establishing communication between EC2 nodes at speeds of up to 25 Gb/s. Support for NETMAP has been added and tested in the ena driver, and memory layout adjustments have been made to enable LLQ mode in Amazon EC2 A1 environments;
  • Applications and ports system
    • The components of the graphics stack and ports related to xorg have been updated. Ports using USE_XORG and XORG_CAT have been transitioned to the USES framework instead of calling bsd.xorg.mk via bsd.port.mk. Such ports now include the ‘USES=xorg’ flag in their make files. The functionality of XORG_CAT has been separated from bsd.xorg.mk and is now activated by the ‘USES=xorg-cat’ flag. Tools have been added for directly forming xorg ports from the git repository
      freedesktop.org, which, for example, allows ports to be formed for yet unreleased versions. In the future, there are plans to prepare a tool for using the meson build system instead of autotools for building xorg ports.

      Work has been done to clean up old xorg ports tied to unsupported components, such as the removal of the x11/libXp port, and the x11/Xxf86misc, x11-fonts/libXfontcache, and graphics/libGLw ports have been marked as obsolete;

    • Efforts have been made to improve support for Java 11 and newer releases in FreeBSD, as well as to port some changes to the Java 8 branch. After implementing the support for new features in Java 11, such as Java Flight Recorder, HotSpot Serviceability Agent, HotSpot Debugger, DTrace, Javac Server, Java Sound, and SCTP, the focus shifted to ensuring all compatibility tests pass. The number of test failures has been reduced from 50 to 2;
    • The KDE Plasma desktop, KDE Frameworks, KDE Applications, and Qt are kept up to date and have been upgraded to the latest releases;
    • Ports with the Xfce desktop have been updated to the release 4.14;
    • FreeBSD port tree has surpassed the milestone of 38,000 ports, with the number of unresolved PRs slightly exceeding 2,000, of which 400 PRs are still unprocessed. During the reporting period, 7,340 changes were made by 169 developers. Two new committers (Santhosh Raju and Dmitri Goutnik) have been granted committer rights. A new release of the pkg package manager 1.12 has been published, featuring overlay support in the ports tree and a cleanup of bsd.sites.mk. Among the significant version updates in the ports are: Lazarus 2.0.4, LLVM 9.0, Perl 5.30, PostgreSQL 11, Ruby 2.6, Firefox 69.0.1, Firefox-esr 68.1.0, Chromium 76.0;
    • The project development continues ClonOS, inkişaf etdirən is a specialized distribution for deploying virtual server infrastructure. ClonOS addresses tasks similar to systems like Proxmox, Triton (Joyent), OpenStack, OpenNebula, and Amazon AWS; its main difference is the use of FreeBSD and the ability to manage, deploy, and operate FreeBSD Jail containers and virtual environments based on Bhyve and Xen hypervisors. Recent updates include support for
      cloud-init for Linux/BSD VMs and cloudbase-init for Windows VMs, the beginning of the transition to the use of custom images, utilization of Jenkins CI for build testing, and a new pkg repository for installing
      ClonOS from packages.

Mənbə: opennet.ru

DDoS qoruması olan saytlara etibarlı hosting satın alın, VPS VDS serverlər 🔥 DDoS qoruması olan saytlara etibarlı hosting satın alın, VPS VDS serverlər | ProHoster