FreeBSD 2019 yil XNUMX-chorak taraqqiyoti hisoboti

nashr etilgan 2019 yil apreldan iyungacha FreeBSD loyihasini ishlab chiqish bo'yicha hisobot. O'zgarishlar orasida biz quyidagilarni ta'kidlashimiz mumkin:

  • Umumiy va tizimli masalalar
    • Core jamoasi manba kodini markazlashtirilgan Subversion manbalarni boshqarish tizimidan markazlashtirilmagan Git tizimiga o'tkazish imkoniyatini o'rganish uchun ishchi guruh tuzishga qaror qildi.
    • Tizim yordamida FreeBSD yadrosining fuzz testi o'tkazildi syzkaller va bir qator aniqlangan xatolar tuzatildi. 32-bit yadroli tizimlarda 64-bitli muhit bilan mosligi uchun kutubxonalarni noaniq sinovdan oʻtkazish uchun qatlam qoʻshildi. Bhyve-ga asoslangan virtual mashinalarda syzkallerni ishga tushirish imkoniyati amalga oshirildi. Keyingi bosqichda tizim qo'ng'iroqlarini sinovdan o'tkazish qamrovini kengaytirish, yadroni tekshirish uchun LLVM sanitizerdan foydalanish, fuzzing testi paytida buzilishlar paytida yadro qoldiqlarini saqlash uchun netdump-dan foydalanish va hokazo.
    • Yadro darajasida zlib ilovasini yangilash bo'yicha ishlar boshlandi. Zlib kodiga yadro kirishi uchun contrib/zlib katalogi sys/contrib/zlib nomiga o'zgartirildi va crc.h sarlavha fayli ham zlib/crc.h bilan ziddiyatga yo'l qo'ymaslik uchun qayta nomlandi. Zlib va ​​inflate ga bog'liq bo'lgan eski kod tozalandi. Keyinchalik, siqishni ishlatadigan funktsiyalarning yangi versiyasiga bosqichma-bosqich o'tish uchun eski va yangi zlib bilan bir vaqtda yadro yaratish imkoniyatini ta'minlash rejalashtirilgan;
    • Linux muhitini emulyatsiya qilish infratuzilmasi (Linuxulator) yangilandi. strace yordam dasturi kabi Linux disk raskadrovka vositalarini qo'llab-quvvatlash ortdi. Portlarga linux-c7-strace paketi qo'shildi, ulardan standart truss va ktrace yordam dasturlari o'rniga Linux bajariladigan fayllarini kuzatish uchun foydalanish mumkin, ular hali Linuxga xos bayroqlar va tuzilmalarni dekodlay olmaydi. Bundan tashqari, Linux Test Project bajariladigan fayllari bilan linux-ltp paketi qo'shildi va glibc ning yangi versiyalari bilan bog'langan bajariladigan fayllar bilan moslik muammolari hal qilindi;
    • pmap mexanizmida kechiktirilgan bekor qilish operatsiyalarini amalga oshirish qulflarsiz ishlaydigan navbatni qayta ishlash algoritmidan foydalanishga o'tkazildi, bu ko'p sonli parallel xaritadan chiqarish operatsiyalarini bajarishda masshtablilik muammolarini hal qilish imkonini berdi;
    • Execve() oilasining tizim chaqiruvlarini bajarishda vnode blokirovka qilish mexanizmi o'zgartirildi, bu bir vaqtning o'zida bir fayl uchun execve() ni bajarishda samaradorlikni oshirishga imkon berdi (masalan, parallellashtirish bilan yig'ish operatsiyalarini bajarishda). kompilyatorni ishga tushirish);
  • Xavfsizlik
    • bhyve gipervisor mehmon muhitini bir xostdan ikkinchisiga jonli ko‘chirish va mehmon tizimini muzlatish, holatni faylga saqlash va keyin bajarishni davom ettirish imkonini beruvchi Saqlash/Qayta tiklash funksiyasini qo‘llab-quvvatlashni yaxshilashda davom etmoqda.
    • Libvdsk kutubxonasidan foydalanish orqali bhyve QCOW2 formatidagi disk tasvirlarini qo'llab-quvvatladi. Ishlash uchun o'rnatish talab qilinadi
      maxsus tahrirlangan bhyve versiyasi bo'lib, u libvdsk asosidagi fayl operatsiyalari ishlov beruvchilaridan foydalanishga aylantirilgan. Hisobot davrida libvdsk shuningdek, yangi formatlarni qo'llab-quvvatlashni integratsiyalashuvini soddalashtirish, o'qish va yozish samaradorligini oshirish va Copy-On-Write-ni qo'shimcha qo'llab-quvvatlash bo'yicha ishlarni amalga oshirdi. Qolgan vazifalardan libvdskni bhyve ning asosiy tarkibiga integratsiyalashuvi qayd etilgan;

    • Portlarga trafik ma'lumotlarini yig'ish tizimi qo'shildi
      Maltrail, bu sizga zararli tarmoq so'rovlari uchun tuzoqlarni yaratishga imkon beradi (qora ro'yxatdagi IP va domenlar tekshiriladi) va aniqlangan faoliyat haqida ma'lumotni keyinchalik blokirovka qilish yoki hujumga urinishlarni tahlil qilish uchun markazlashtirilgan serverga yuborish;

    • Portlarga hujumlarni aniqlash, jurnallarni tahlil qilish va fayllar yaxlitligini kuzatish uchun platformalar qo'shildi. Vazuh (Ossec vilkalari bilan integratsiyani qo'llab-quvvatlaydi ELK-Stack);
  • Tarmoq quyi tizimi
    • Ena drayveri EC2 tugunlari orasidagi aloqani 2 Gb/s gacha tezlikda tashkil qilish uchun Elastic Compute Cloud (EC2) infratuzilmasida foydalaniladigan ENAv25 (Elastic Network Adapter) tarmoq adapterlarining ikkinchi avlodini qo‘llab-quvvatlash uchun yangilandi. NETMAP yordami ena drayveriga qo'shildi.
    • FreeBSD HEAD CAM tizimiga asoslangan yangi MMC/SD stekini qabul qiladi va qurilmalarni SDIO (Secure Digital I/O) interfeysi bilan ulash imkonini beradi. Masalan, Raspberry Pi 3 kabi ko‘plab platalar uchun SDIO WiFi va Bluetooth modullarida qo‘llaniladi. Yangi stek shuningdek, CAM interfeysidan foydalanuvchi maydonidagi ilovalardan SD buyruqlarni yuborish uchun foydalanish imkonini beradi, bu esa qurilma yaratish imkonini beradi. foydalanuvchi darajasida ishlaydigan drayverlar. FullMAC rejimida ishlaydigan Broadcom simsiz chiplari uchun drayverlarni yaratish bo'yicha ishlar boshlandi (chip tomonida u o'zining 802.11 simsiz stekini amalga oshirish bilan o'zining operatsion tizimiga o'xshaydi);
    • FreeBSD uchun NFSv4.2 (RFC-7862) ni joriy qilish ustida ish olib borilmoqda. NFS ning yangi versiyasida posix_fadvise, posix_fallocate funksiyalari, lseek-da SEEKHOLE/SEEKDATA rejimlari va serverdagi fayl qismlarini mahalliy nusxalash (mijozga o'tkazmasdan) qo'llab-quvvatlanadi.

      Hozirda FreeBSD LayoutError, IOAdvise, Allocate va Copy operatsiyalari uchun asosiy yordamni taqdim etadi. Faqat NFS bilan lseek (SEEKHOLE/SEEKDATA) dan foydalanish uchun zarur bo'lgan Seek operatsiyasini amalga oshirish qoladi. NFSv4.2 qo'llab-quvvatlash FreeBSD 13 uchun rejalashtirilgan;

  • Saqlash va fayl tizimlari
    • Foydalanuvchi makonida fayl tizimlarini amalga oshirishni yaratish imkonini beruvchi FUSE (USERspace fayl tizimi) quyi tizimi uchun drayverni qayta ishlash loyihasi yakunlanmoqda. Dastlab taqdim etilgan drayver eskirgan va ko'plab xatolarni o'z ichiga oladi. Drayvni modernizatsiya qilish loyihasi doirasida FUSE 7.23 protokolini qo'llab-quvvatlash amalga oshirildi (ilgari 7.8 versiyasi, 11 yil oldin chiqarilgan), yadro tomonidagi kirish huquqlarini tekshirish uchun kod qo'shildi (“-o default_permissions”), qo'ng'iroqlar VOP_MKNOD, VOP_BMAP va VOP_ADVLOCK qo'shildi, FUSE operatsiyalarini to'xtatish qobiliyati, nomsiz quvurlar va sigortalarda unix rozetkalari uchun qo'shimcha qo'llab-quvvatlash, /dev/fuse uchun kqueue foydalanish imkoniyati, "mount -u" orqali o'rnatish parametrlarini yangilash imkonini berdi, qo'shimcha qo'llab-quvvatlash NFS orqali sigortalarni eksport qilish uchun RLIMIT_FSIZE hisobi amalga oshirildi, qo'shilgan FOPEN_KEEP_CACHE bayroqlari va FUSE_ASYNC_READ, unumdorlikni sezilarli darajada optimallashtirish amalga oshirildi va keshlashni tashkil qilish yaxshilandi;
    • Almashtirish peyjer kodiga BIO_DELETE operatsiyasini qo'llab-quvvatlash qo'shildi, bu sizga SSD drayverlaridan bloklarni olib tashlashda TRIM buyrug'idan foydalanish imkonini beradi, ularning ishlash muddatini uzaytiradi.
  • Uskunani qo'llab-quvvatlash
    • Routerlar, shlyuzlar va tarmoq xotirasida foydalanishga qaratilgan ARMv64 Cortex-A5871 protsessorlari bilan ARM8 SoC Broadcom BCM57X ni qo'llab-quvvatlash bo'yicha ishlar davom etmoqda. Hisobot davrida ichki va tashqi iProc PCIe avtobuslarini qo‘llab-quvvatlash yaxshilandi, BNXT Ethernet-ni qo‘llab-quvvatlash qo‘shildi va IPsec-ni tezlashtirish uchun o‘rnatilgan kriptomotordan foydalanish bo‘yicha ishlar olib borilmoqda. Yilning ikkinchi yarmida kodning HEAD filialiga integratsiyalashuvi kutilmoqda;
    • ARMv64 Cortex-A1046 protsessoriga asoslangan 8-bitli SoC NXP LS72A ni qo'llab-quvvatlash bo'yicha ishlar integratsiyalangan tarmoq paketlarini qayta ishlash tezlashtirish dvigateli, 10 Gb Ethernet, PCIe 3.0, SATA 3.0 va USB 3.0 bilan boshlandi. Baza platformasi (ko‘p foydalanuvchili SMP) va SATA 3.0 ni qo‘llab-quvvatlash allaqachon amalga oshirilgan. USB 3.0, SD/MMC va I2C-ni qo'llab-quvvatlash ishlab chiqilmoqda. Rejalar Ethernet, GPIO va QSPI-ni qo'llab-quvvatlashni o'z ichiga oladi. 4 yilning 2019-choragida ishlarning yakunlanishi va HEAD filialiga kiritilishi kutilmoqda.
    • Mellanox ConnectX-5 [Lx], ConnectX-5 [Ex] va ConnectX-4 [Dx] Ethernet va InfiniBand adapterlari uchun mlx5en va mlx6ib drayverlari yangilandi. Mellanox Socket Direct (ConnectX-6) adapterlari uchun qo‘shimcha qo‘llab-quvvatlash, PCIe Gen 200 avtobusida 3.0 Gb/s gacha o‘tkazish imkonini beradi. Ko'p yadroli BlueField chiplari uchun RShim drayverini qo'llab-quvvatlash qo'shildi. Portlarga Mellanox adapterlari uchun diagnostika yordam dasturlari to'plamiga ega mstflint to'plami qo'shildi;
  • Ilovalar va port tizimi
    • Grafik stek komponentlari yangilandi. drm.ko (Direct Rendering Manager) drayveri Linux 5.0 yadrosidan ko'chirildi. Ushbu drayver eksperimental hisoblanadi va portlar daraxtiga grafik/drm-devel-kmod sifatida qo'shilgan. Drayv Linux yadrosi DRM API bilan mos kelishi uchun yangilangan Linux KPI tizimidan foydalanganligi sababli, FreeBSD CURRENT ishga tushirilishi kerak. VirtualBox virtual GPU uchun vboxvideo.ko drm drayveri ham Linuxdan ko'chirilgan. Mesa paketi 18.3.2 versiyasini chiqarish uchun yangilandi va devel/llvm80 o'rniga devel/llvm60 portidan LLVM foydalanishga o'tkazildi.
    • FreeBSD portlari daraxti 37000 2146 portdan oshib ketdi, yopilmagan PRlar soni 7837 ta boʻlib qolmoqda. Hisobot davrida 172 dasturchi tomonidan 5.7 ta oʻzgartirish kiritildi. Uchta yangi ishtirokchi komitent huquqlarini oldi. Portlardagi muhim versiya yangilanishlari orasida: MySQL 3.6, Python 2.5, Ruby 4.8, Samba 1.0, Julia 68.0, Firefox 75.0.3770.100, Chromium 3.6. Barcha Go portlari "USES=go" bayrog'idan foydalanishga aylantirildi. Haskell kodi uchun ishlatiladigan Cabal paket menejeriga "USES=cabal" bayrog'i qo'shildi. Qattiq stekni himoya qilish rejimi yoqilgan. Pythonning standart versiyasi 2.7 oʻrniga XNUMX.
    • Yordamchi dastur versiyasi tayyorlandi nsysctl 1.0dan foydalanadigan /sbin/sysctl ga analogini taqdim etadi libxo chiqish va kengaytirilgan variantlar to'plamini taqdim etish uchun. Nsysctl sysctl qiymatlarining holatini vizual kuzatish va ob'ektlar to'g'risidagi ma'lumotlarni tuzilgan shaklda taqdim etish uchun ishlatilishi mumkin. XML, JSON va HTML formatlarida chiqish mumkin;

Manba: opennet.ru

a Izoh qo'shish