FreeBSD İnkişaf Hesabatı 2019-cu ilin XNUMX-cü rübü

nəşr edilmişdir 2019-cu ilin iyulundan sentyabr ayına qədər FreeBSD layihəsinin inkişafı haqqında hesabat. Dəyişikliklər arasında qeyd edə bilərik:

  • Ümumi və sistemli məsələlər
    • Əsas komanda əlavə patent müqaviləsi ilə BSD lisenziyası altında paylanan sistemə kodun daxil edilməsi imkanını ümumiyyətlə təsdiq etmişdir (BSD+Patent), lakin bu lisenziyaya uyğun olaraq hər bir komponentin sistemə daxil edilməsi barədə qərar ayrıca təsdiq edilməlidir;
    • Subversion mərkəzləşdirilmiş mənbə idarəetmə sistemindən mərkəzləşdirilməmiş Git sisteminə mənbə kodlarının miqrasiyasını həyata keçirmək üçün yaradılmış işçi qrupun ilk iclası baş tutub. Miqrasiyanın məqsədəuyğunluğu ilə bağlı müzakirələr hələ də davam edir və bir çox məsələlər üzrə qərarlar hələ hazırlanmamışdır (məsələn, contrib/ ilə nə etməli, cari git deposunda hashləri bərpa etmək lazımdırmı və sınağın ən yaxşı şəkildə necə həyata keçiriləcəyi. törədir);
    • NetBSD-dən daşınıb KCSAN (Kernel Concurrency Sanitizer) alət dəsti, müxtəlif CPU-larda işləyən ləpələr arasında yarış şərtlərini aşkar etməyə imkan verir;
    • GNU binutils assembler əvəzinə Clang-ın daxili assemblerindən (IAS) istifadə etmək üçün işlər aparılır;
    • Linux mühitinin emulyasiya infrastrukturu (Linuxulator) ARM64 arxitekturasında işləmək üçün uyğunlaşdırılıb. “renameat2” sistem çağırışını həyata keçirdi. strace yardım proqramı Linuxulator-da işləyən Linux icra fayllarında problemlərin diaqnostikası üçün təkmilləşdirilmişdir. İcra edilə bilən faylları təzə glibc ilə əlaqələndirərkən qəzalarla bağlı problem həll edildi. Linuxulator üçün Linux komponentləri olan portlar CentOS 7.7-ə yeniləndi;
    • Google Summer of Code proqramının bir hissəsi olaraq tələbələr altı layihəni uğurla başa vurdular: vahid (IPv4/IPv6) ping yardım proqramının tətbiqi hazırlanmış, firewallların sınaqdan keçirilməsi və nüvədə səhvlərin müəyyən edilməsi üçün alətlər hazırlanmışdır (Kernel sanitizer), mac_ipacl modul təklif edildi, virtual yaddaşın sıxılması üçün kod yazılıb və port qurma prosesini yerli quraşdırmadan ayırmaq üçün işlər görülüb;
    • Sistemdən istifadə edərək FreeBSD nüvəsinin qeyri-səlis testi layihəsi inkişaf etməkdə davam edir syzkaller. Hesabat dövründə syzkaller vasitəsilə ondan artıq səhv müəyyən edilərək aradan qaldırılıb. Syzkaller-i bhyve-a əsaslanan virtual maşınlarda işə salmaq üçün ayrıca bir server ayrılır və istifadə olunur
      syzbot, Google infrastrukturunda müxtəlif FreeBSD alt sistemlərinin sınaqlarını qurdu. Bütün qəzalar haqqında məlumatların qruplaşdırılmasını və təhlilini asanlaşdırmaq üçün backtrace.io xidmətinə ötürülməsini təşkil etdi;

    • Zlib tətbiqinin nüvə səviyyəsində yenilənməsi üçün işlər aparılır.
      Sıxılma ilə əlaqəli kod 1.0.4 ildən çox əvvəl buraxılmış zlib 20-dən indiki zlib 1.2.11 kod bazasına köçürülüb. Zlib-ə girişi birləşdirmək üçün kernelə sıxışdırmaq, sıxışdırmaq2 və açmaq funksiyaları əlavə edilmişdir. Netqraf alt sistemindən PPP protokolunun işləməsini təmin edən kod bu kitabxananın öz nəşri əvəzinə zlib sistem tətbiqindən istifadə etmək üçün köçürüldü. kern_ctf.c, opencryptodeflate, geom_uzip, subr_compressor, alt sistemləri də yeni zlib-ə köçürülüb.
      if_mxge, bxe yeniləndi və ng_deflate;

    • Yeni nüvə interfeysi hazırlanır sysctlinfo, bu, MIB (İdarəetmə Məlumat Bazası) şəklində işlənmiş sysctl parametrlər bazasında elementləri tapmağa və obyektlər haqqında məlumatı istifadəçi sahəsinə ötürməyə imkan verir.
  • təhlükəsizlik
    • Kernel modulu işlənib hazırlanmışdır mac_ipacl, TrustedBSD MAC Çərçivəsinə əsaslanan və həbsxana mühitləri üçün şəbəkə yığını parametrləri üçün girişə nəzarət sisteminin tətbiqi. Məsələn, mac_ipacl istifadə edərək, host sistem administratoru həbsxana mühitindəki kök istifadəçinin müəyyən şəbəkə interfeysləri üçün IP ünvanlarını və ya alt şəbəkə parametrlərini dəyişməsinə və ya təyin etməsinə mane ola bilər. Təklif olunan məcburi girişə nəzarət sistemi imkan Jail üçün icazə verilən IP ünvanlarının və alt şəbəkələrin siyahılarını təyin edin, həbsxanada müəyyən IP və alt şəbəkələrin quraşdırılmasını qadağan edin və ya yalnız müəyyən şəbəkə interfeysləri üçün dəyişən parametrləri məhdudlaşdırın;
    • İntel layihəyə proqram stack portunu bağışladı TPM 2.0 (Etibarlı Platforma Modulu) adətən proqram təminatının və ƏS yükləyicisinin təsdiqlənmiş yüklənməsi üçün istifadə edilən təhlükəsiz hesablama çipi ilə interfeys üçün. Yığın komponentləri təhlükəsizlik/tpm2-tss, təhlükəsizlik/tpm2-alətləri və təhlükəsizlik/tpm2-abrmd portları şəklində təqdim olunur. tpm2-tss portuna TPM2 API-dən istifadə etmək üçün kitabxanalar daxildir, tpm2-tools TPM əməliyyatlarını yerinə yetirmək üçün əmr xətti utilitlərini təmin edir və tpm2-abrmd müxtəlif TPM istifadəçilərinin sorğularını multipleksləşdirən TPM Access Broker və Resource Manager komponentlərinin arxa plan prosesinin icrasını ehtiva edir. tək cihaza. FreeBSD-də təsdiqlənmiş yükləməyə əlavə olaraq, TPM ayrıca çipdə kriptoqrafik əməliyyatlar həyata keçirməklə Strongswan IPsec, SSH və TLS təhlükəsizliyini artırmaq üçün istifadə edilə bilər;
    • Amd64 arxitekturası üçün kernel W^X (yazmaq XOR icrası) mühafizə texnikasından istifadə edərək yükləməyə uyğunlaşdırılmışdır, bu o deməkdir ki, yaddaş səhifələrinə eyni vaxtda yazı və icra üçün daxil olmaq mümkün deyil (kernel indi yazılan icra edilə bilən yaddaş səhifələrindən istifadə etməklə yüklənə bilər). qadağandır). Yeni nüvə mühafizə üsulu HEAD filialına daxil edilib və FreeBSD 13.0 və 12.2 buraxılışlarına daxil ediləcək;
    • mmap və mprotect sistem zəngləri üçün həyata keçirilən makro PROT_MAX(), bu əlavə dəyişikliklər üçün icazə verilən giriş məhdudiyyəti bayraqları dəstini müəyyən etməyə imkan verir (PROT_READ, PROT_WRITE, PROT_EXEC). PROT_MAX() funksiyasından istifadə edərək tərtibatçı yaddaş regionunun icra edilə bilən kateqoriyasına ötürülməsini qadağan edə bilər və ya icraya icazə verməyən, lakin sonradan icra olunana çevrilə bilən sorğu yaddaşı. Məsələn, yaddaş bölgəsi yalnız dinamik əlaqələndirmə və ya JIT kodu generasiya müddəti ərzində yazmaq üçün açıq ola bilər, lakin yazma tamamlandıqdan sonra onun yalnız oxunması və icrası məhdudlaşdırılır və gələcəkdə, təhlükə yaranarsa, təcavüzkar həmin yaddaş bloku üçün yazmağı aktivləşdirə bilməyəcək. PROT_MAX() ilə yanaşı sysctl vm.imply_prot_max da həyata keçirilir ki, bu da aktivləşdirildikdə mmap-a ilk zəngin ilkin parametrləri əsasında etibarlı bayraqlar dəstini müəyyən edir;
    • Zəifliklərin istismarına qarşı müdafiəni gücləndirmək üçün ünvan məkanının təsadüfiləşdirmə texnikasına (ASLR) əlavə olaraq, ətraf mühit, proqramın işə salınma parametrləri və verilənlər haqqında məlumatla stek üzərində yerləşdirilən strukturların və ilkin yığın çərçivəsinə ünvanlanan göstəricilərin ofsetlərinin təsadüfiləşdirilməsi mexanizmi. ELF formatında icra olunan şəkillər üçün təklif olunur;
    • Təhlükəsiz gets funksiyasının libc-dən çıxarılması (C11 standartından başlayaraq bu funksiya spesifikasiyadan çıxarılıb) və hələ də bu funksiyadan istifadə edən portların düzəldilməsi üçün işlər görülüb. Dəyişikliyin FreeBSD 13.0-da təklif edilməsi planlaşdırılır;
    • Çərçivə əsasında həbsxana mühitlərini təşkil etmək üçün alətlər yaratmaq üçün eksperimental layihəyə start verilib qazan Docker-ə bənzər şəkildə həyata keçirilən şəkillər və bir sürücü yaratmaq və ixrac etmək üçün nomad, həbsxana mühitində tətbiqləri dinamik şəkildə işə salmaq üçün interfeys təqdim edir. Təklif olunan model həbsxana mühitlərinin yaradılması və onlarda tətbiqlərin yerləşdirilməsi proseslərini ayırmağa imkan verir. Layihənin məqsədlərindən biri həbsxanaları Docker tipli konteynerlər kimi manipulyasiya etmək üçün vasitə təmin etməkdir;
  • Saxlama və fayl sistemləri
    • NetBSD-dən "makefs" yardım proqramına qədər köçdü FAT fayl sistemi dəstəyi (msdosfs). Hazırlanmış dəyişikliklər md sürücüsündən istifadə etmədən və kök səlahiyyəti olmadan FAT ilə FS şəkilləri yaratmağa imkan verir;
    • İstifadəçi məkanında fayl sistemi tətbiqlərinin yaradılmasına imkan verən FUSE (USERspace-də fayl sistemi) altsistem drayverinin yenidən işlənməsi tamamlandı. Əvvəlcə göndərilən sürücü çoxlu səhvlərdən ibarət idi və 7.8 il əvvəl buraxılmış FUSE 11-ə əsaslanırdı. Sürücünün modernləşdirilməsi layihəsi çərçivəsində FUSE 7.23 protokoluna dəstək həyata keçirilib, nüvə tərəfində giriş hüquqlarını yoxlamaq üçün kod (“-o default_permissions”) əlavə edilib, VOP_MKNOD, VOP_BMAP və VOP_ADVLOCK-a zənglər əlavə edilib, FUSE əməliyyatlarını dayandırmaq imkanı təmin edildi, adsız borular və unix yuvaları üçün dəstək qoruyuculara əlavə edildi, /dev/fuse üçün kqueue istifadə etmək mümkün oldu, “mount -u” vasitəsilə montaj parametrlərini yeniləmək mümkün oldu, əlavə dəstək NFS vasitəsilə qoruyucuların ixracı üçün RLIMIT_FSIZE uçotu həyata keçirildi, FOPEN_KEEP_CACHE və FUSE_ASYNC_READ bayraqları əlavə edildi, əhəmiyyətli performans optimallaşdırmaları və təkmilləşdirilmiş keşləmə təşkili. Yeni sürücü baş və stabil/12 filiala daxildir (FreeBSD 12.1-ə daxildir);
    • FreeBSD üçün NFSv4.2 (RFC-7862) tətbiqi demək olar ki, tamamlandı. Hesabat dövründə əsas diqqət sınaqlara yönəldilib. Linux tətbiqi ilə uyğunluğu yoxlamaq üçün sınaqlar tamamlandı, lakin pNFS serverinin NFSv4.2 ilə sınaqdan keçirilməsi hələ də davam edir. Ümumiyyətlə, kod artıq FreeBSD baş/cari filiallarına inteqrasiya üçün hazır hesab olunur. NFS-in yeni versiyası posix_fadvise, posix_fallocate funksiyaları, lseek-də SEEKHOLE/SEEKDATA rejimləri, serverdə fayl hissələrinin lokal surətinin çıxarılması əməliyyatı (müştəriyə ötürülmədən) üçün dəstək əlavə edir;
  • Aparat dəstəyi
    • Noutbuklarda FreeBSD-nin işini yaxşılaşdırmaq üçün layihəyə start verilib. FreeBSD-də aparat dəstəyi üçün yoxlanılan ilk cihaz yeddinci nəsil Lenovo X1 Carbon noutbuku idi;
    • CheriBSD, tədqiqat prosessoru arxitekturası üçün FreeBSD çəngəlidir CHERI (Capability Hardware Enhanced RISC Instructions), Capsicum dizaynının təhlükəsizlik modelinə əsaslanan CHERI yaddaşa girişə nəzarət sistemini dəstəkləyəcək qarşıdan gələn ARM Morello prosessorunu dəstəkləmək üçün yeniləndi. Morello çipi planlaşdırırıq 2021-ci ildə buraxılır. CheriBSD tərtibatçıları həmçinin MIPS arxitekturasına əsaslanan CHERI istinad prototipinin inkişafına nəzarət etməyə davam edir;
    • RockPro3399 və NanoPC-T64 lövhələrində istifadə edilən RockChip RK4 çipləri üçün genişləndirilmiş dəstək. Ən əhəmiyyətli irəliləyiş eMMC-yə dəstək və lövhədə istifadə edilən eMMC nəzarətçisi üçün yeni drayverin hazırlanması idi;
    • Routerlərdə, şlüzlərdə və şəbəkə yaddaşında istifadəyə yönəlmiş ARMv64 Cortex-A5871 prosessorları ilə ARM8 SoC Broadcom BCM57X dəstəyinin həyata keçirilməsi üzrə işlər davam edir. Hesabat dövründə
      iProc PCIe dəstəyi genişləndirilib və IPsec-i sürətləndirmək üçün hardware kriptoqrafik əməliyyatlarından istifadə etmək imkanı əlavə edilib.
      Kodun HEAD filialına inteqrasiyası dördüncü rübdə gözlənilir;

    • Powerpc64 platforması üçün FreeBSD portunun hazırlanmasında əhəmiyyətli irəliləyişlər əldə edilmişdir. Əsas diqqət IBM POWER8 və POWER9 prosessorları olan sistemlərdə keyfiyyətli performansın təmin edilməsinə yönəlib, lakin isteğe bağlı olaraq köhnə Apple Power Mac, x500 və Amiga A1222-də əməliyyatı dəstəkləyir. Powerpc*/12 filialı gcc 4.2.1 ilə göndərilməyə davam edir və powerpc*/13 filialı tezliklə llvm90-a köçürüləcək. 33306 portdan 30514-ü uğurla yığılıb;
    • ARMv64 Cortex-A1046 prosessoruna əsaslanan 8 bitlik SoC NXP LS72A üçün FreeBSD portinqi inteqrasiya olunmuş şəbəkə paketinin emal sürətləndirilməsi mühərriki, 10 Gb Ethernet, PCIe 3.0, SATA 3.0 və USB 3.0 ilə davam edir. Hesabat dövründə USB 3.0, SD/MMC, I2C, DPAA və GPIO şəbəkə interfeysinə dəstək həyata keçirilib. QSPI-ni dəstəkləmək və şəbəkə interfeysinin performansını optimallaşdırmaq planları var. 4-cu ilin 2019-cü rübündə işlərin başa çatdırılması və HEAD filialına daxil edilməsi gözlənilir;
    • ena sürücüsü EC2 qovşaqları arasında 2 Gb/s-ə qədər sürətlə əlaqəni təşkil etmək üçün Elastic Compute Cloud (EC2) infrastrukturunda istifadə olunan ikinci nəsil ENAv25 (Elastic Network Adapter) şəbəkə adapterlərini dəstəkləmək üçün yenilənib. NETMAP dəstəyi ena sürücüsünə əlavə edilib və sınaqdan keçirilib və yaddaş tərtibatı Amazon EC2 A1 mühitlərində LLQ rejimini aktivləşdirmək üçün uyğunlaşdırılıb;
  • Proqramlar və port sistemi
    • Yenilənmiş qrafik yığını komponentləri və xorg ilə əlaqəli portlar. USE_XORG və XORG_CAT istifadə edən portlar bsd.port.mk vasitəsilə bsd.xorg.mk-a zəng etmək əvəzinə USES çərçivəsinə köçürülüb. Belə portlar indi öz makefillərində "USES=xorg" bayrağını ehtiva edir. XORG_CAT funksionallığı bsd.xorg.mk-dən ayrılıb və indi "USES=xorg-cat" bayrağı ilə aktivləşdirilib. Bir git deposundan xorg portlarını birbaşa yaratmaq üçün əlavə alətlər
      freedesktop.org, məsələn, hələ buraxılmamış versiyalar üçün portlar yaratmağa imkan verir. Gələcəkdə biz xorg portlarının qurulması üçün autotools əvəzinə mezon montaj sistemindən istifadə üçün alətlər hazırlamağı planlaşdırırıq.

      Artıq dəstəklənməyən komponentlərə bağlanmış köhnə xorg portlarını təmizləmək üçün işlər görülüb, məsələn, x11/libXp portu silinib və x11/Xxf86misc, x11-fonts/libXfontcache və graphics/libGLw portları köhnəlib. ;

    • Java 11 və FreeBSD-də daha yeni buraxılışlar üçün dəstəyin təkmilləşdirilməsi, həmçinin Java 8 filialına bəzi dəyişikliklərin aparılması üçün işlər görülüb.Java Flight Recorder, HotSpot Serviceability Agent, HotSpot Debugger kimi yeni Java 11 xüsusiyyətlərinə dəstəkdən sonra həyata keçirilib. FreeBSD, DTrace, Javac Server, Java Sound və SCTP üçün iş bütün uyğunluq testlərinin keçməsini təmin etməyə yönəldi. Testlərdən keçərkən uğursuzluqların sayı 50-dən 2-yə endirildi;
    • KDE Plazma masa üstü, KDE Çərçivələri, KDE Proqramları və Qt yenilənir və ən son buraxılışlara yenilənir;
    • Xfce iş masası ilə portlar buraxılış üçün yeniləndi 4.14;
    • FreeBSD portları ağacı 38000 portu ötüb, bağlanmamış PR-lərin sayı 2000-dən bir qədər çoxdur, onlardan 400 PR hələ həll olunmayıb. Hesabat dövründə 7340 tərtibatçıdan 169 dəyişiklik edilib. İki yeni iştirakçı (Santhosh Raju və Dmitri Goutnik) icraçı hüquqları aldı. Pkg 1.12 paket menecerinin yeni buraxılışı, portlar ağacında üst-üstə düşmə dəstəyi və bsd.sites.mk saytının təmizlənməsi ilə nəşr olundu. Portlardakı əhəmiyyətli versiya yeniləmələri arasında: 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;
    • Layihənin inkişafı davam edir ClonOS, inkişaf edir virtual server infrastrukturunun yerləşdirilməsi üçün ixtisaslaşmış paylama. Həll etdiyi vəzifələr baxımından ClonOS Proxmox, Triton (Joyent), OpenStack, OpenNebula və Amazon AWS kimi sistemlərə bənzəyir, onlardan əsas fərqi FreeBSD-nin istifadəsi və FreeBSD Jail konteynerlərini idarə etmək, yerləşdirmək və idarə etmək bacarığıdır. Bhyve və Xen hipervizorlarına əsaslanan virtual mühitlər. Son dəyişikliklərə dəstək daxildir
      Linux/BSD VM üçün cloud-init və Windows VM üçün cloudbase-init, yerli şəkillərdən istifadəyə keçidə başlayır, konstruksiyaları sınaqdan keçirmək üçün Jenkins CI və quraşdırma üçün yeni pkg deposundan istifadə edir.
      Paketlərdən ClonOS.

Mənbə: opennet.ru

Добавить комментарий