2019-yil XNUMX-chorak uchun FreeBSD taraqqiyot hisoboti

nashr etilgan 2019-yil iyuldan sentyabrgacha FreeBSD loyihasini ishlab chiqish boʻyicha hisobot. O'zgarishlar orasida biz quyidagilarni ta'kidlashimiz mumkin:

  • Umumiy va tizimli masalalar
    • Asosiy jamoa odatda qo'shimcha patent shartnomasi bilan BSD litsenziyasi bo'yicha tarqatiladigan tizimga kodni kiritish imkoniyatini tasdiqladi (BSD + Patent), lekin ushbu litsenziya bo'yicha tizimga har bir komponentni kiritish to'g'risidagi qaror alohida tasdiqlanishi kerak;
    • Subversion markazlashtirilgan manba boshqaruv tizimidan markazlashtirilmagan Git tizimiga manba kodlarini migratsiyasini amalga oshirish uchun tuzilgan ishchi guruhning birinchi yig‘ilishi bo‘lib o‘tdi. Migratsiyaning maqsadga muvofiqligi bo'yicha muhokamalar hali ham davom etmoqda va ko'plab masalalar bo'yicha qarorlar ishlab chiqilishi kerak (masalan, contrib/ bilan nima qilish kerak, joriy git omborida xeshlarni qayta tiklash kerakmi va testni qanday amalga oshirish yaxshiroq). majburiyatlar);
    • NetBSD dan portlangan KCSAN (Kernel Concurrency Sanitizer) asboblar to'plami, bu sizga turli protsessorlarda ishlaydigan yadro iplari orasidagi poyga sharoitlarini aniqlash imkonini beradi;
    • GNU binutils assembler o'rniga Clangning o'rnatilgan assembleridan (IAS) foydalanish bo'yicha ishlar olib borilmoqda;
    • Linux muhitini emulyatsiya qilish infratuzilmasi (Linuxulator) ARM64 arxitekturasida ishlashga moslashtirilgan. "Renameat2" tizim chaqiruvi amalga oshirildi. strace yordam dasturi Linuxulatorda ishlayotgan Linux bajariladigan fayllardagi muammolarni tashxislash uchun takomillashtirildi. Yangi glibc bilan bajariladigan fayllarni ulashda ishdan chiqish muammosi hal qilindi. Linuxulator uchun Linux komponentlariga ega portlar CentOS 7.7 ga yangilandi;
    • Google Summer of Code dasturi doirasida talabalar oltita loyihani muvaffaqiyatli yakunladilar: birlashtirilgan (IPv4/IPv6) ping yordam dasturini amalga oshirish tayyorlandi, xavfsizlik devorlarini sinash va yadrodagi xatolarni aniqlash vositalari (yadro sanitizer) ishlab chiqildi, mac_ipacl. modul taklif qilindi, virtual xotirani siqish uchun kod yozildi va portni qurish jarayonini mahalliy o'rnatishdan ajratish bo'yicha ish olib borildi;
    • Tizim yordamida FreeBSD yadrosini noaniq sinovdan o'tkazish loyihasi rivojlanishda davom etmoqda syzkaller. Hisobot davrida syzkaller yordamida o‘ndan ortiq xatoliklar aniqlanib, bartaraf etildi. Bhyve-ga asoslangan virtual mashinalarda syzkallerni ishga tushirish uchun alohida server ajratilgan va undan foydalaniladi
      syzbot Google infratuzilmasida turli FreeBSD quyi tizimlarini sinovdan o'tkazdi. Ularni guruhlash va tahlil qilishni soddalashtirish uchun barcha nosozliklar haqidagi ma’lumotlarni backtrace.io xizmatiga o‘tkazishni tashkil qildi;

    • Yadro darajasida zlib ilovasini yangilash bo'yicha ish olib borilmoqda.
      Siqish bilan bog'liq kod 1.0.4 yil oldin chiqarilgan zlib 20 dan joriy zlib 1.2.11 kod bazasiga ko'chirildi. Zlibga kirishni birlashtirish uchun yadroga kompress, kompres2 va uncompress funksiyalari qo'shilgan. Netgraf quyi tizimidan PPP protokolining ishlashini ta'minlaydigan kod ushbu kutubxonaning o'z nashri o'rniga zlib tizimini amalga oshirishdan foydalanishga o'tkazildi. Kern_ctf.c, opencryptodeflate, geom_uzip, subr_compressor, quyi tizimlar ham yangi zlibga o'tkazildi.
      if_mxge, bxe yangilangan va ng_deflate;

    • Yangi yadro interfeysi ishlab chiqilmoqda sysctlinfo, bu MIB (Boshqaruv ma'lumotlari bazasi) shaklida qayta ishlanadigan sysctl parametrlari ma'lumotlar bazasida elementlarni topish va ob'ektlar haqidagi ma'lumotlarni foydalanuvchi maydoniga o'tkazish imkonini beradi.
  • Xavfsizlik
    • Yadro moduli ishlab chiqilgan mac_ipacl, TrustedBSD MAC Framework-ga asoslangan va qamoqxona muhitlari uchun tarmoq stek sozlamalari uchun kirishni boshqarish tizimini joriy qilish. Masalan, mac_ipacl dan foydalanib, xost tizimi ma'muri qamoqxona muhitidagi ildiz foydalanuvchiga ma'lum tarmoq interfeyslari uchun IP manzillarini yoki pastki tarmoq sozlamalarini o'zgartirishi yoki o'rnatishiga yo'l qo'ymasligi mumkin. Taklif etilayotgan majburiy kirishni boshqarish tizimi Bu beradi Jail uchun ruxsat etilgan IP manzillar va quyi tarmoqlar roʻyxatini oʻrnatish, Jailda maʼlum IP va quyi tarmoqlarni oʻrnatishni taqiqlash yoki faqat maʼlum tarmoq interfeyslari uchun parametrlarni oʻzgartirishni cheklash;
    • Intel loyihaga dasturiy ta'minot stek portini sovg'a qildi TPM 2.0 (Ishonchli platforma moduli) odatda proshivka va OT yuklagichini tekshirilgan yuklash uchun ishlatiladigan xavfsiz hisoblash chipi bilan interfeysga kirish uchun. Stack komponentlari xavfsizlik/tpm2-tss, xavfsizlik/tpm2-vositalari va xavfsizlik/tpm2-abrmd portlari ko'rinishida taqdim etiladi. Tpm2-tss porti TPM2 API-dan foydalanish uchun kutubxonalarni o'z ichiga oladi, tpm2-tools TPM operatsiyalarini bajarish uchun buyruq qatori yordam dasturlarini taqdim etadi va tpm2-abrmd turli TPM foydalanuvchilarining so'rovlarini multiplekslashtirgan TPM Access Broker va Resurs menejeri komponentlarining fon jarayonini amalga oshirishni o'z ichiga oladi. bitta qurilmaga. FreeBSD-da tasdiqlangan yuklashdan tashqari, TPM alohida chipda kriptografik operatsiyalarni amalga oshirish orqali Strongswan IPsec, SSH va TLS xavfsizligini oshirish uchun ishlatilishi mumkin;
    • Amd64 arxitekturasining yadrosi W^X (XOR yozish) himoya texnikasidan foydalangan holda yuklash uchun moslashtirilgan, ya'ni xotira sahifalariga yozish va bajarish uchun bir vaqtda kirish mumkin emas (yadro endi yoziladigan bajariladigan xotira sahifalari yordamida yuklanishi mumkin) taqiqlangan). Yadroni himoya qilishning yangi usuli HEAD filialiga kiritilgan va FreeBSD 13.0 va 12.2 relizlariga kiritiladi;
    • mmap va mprotect tizim qo'ng'iroqlari uchun amalga oshirildi makro PROT_MAX(), bu keyingi o'zgartirishlar uchun ruxsat etilgan kirishni cheklash bayroqlari to'plamini aniqlash imkonini beradi (PROT_READ, PROT_WRITE, PROT_EXEC). PROT_MAX() yordamida ishlab chiquvchi xotira hududini bajariladigan toifaga yoki bajarishga ruxsat bermaydigan, lekin keyinchalik bajariladiganga aylantirilishi mumkin bo'lgan so'rov xotirasiga o'tkazishni taqiqlashi mumkin. Misol uchun, xotira hududi faqat dinamik ulanish yoki JIT kodini yaratish muddati davomida yozish uchun ochiq bo'lishi mumkin, lekin yozish tugallangandan so'ng, u faqat o'qish va bajarish bilan cheklanadi va kelajakda, agar buzilgan bo'lsa, tajovuzkor ushbu xotira bloki uchun yozishni faollashtira olmaydi. PROT_MAX() ga qo'shimcha ravishda sysctl vm.imply_prot_max ham amalga oshiriladi, u faollashtirilganda mmap ga birinchi qo'ng'iroqning boshlang'ich parametrlari asosida joriy bayroqlar to'plamini aniqlaydi;
    • Zaifliklardan foydalanishdan himoyani kuchaytirish uchun manzil maydonini randomizatsiyalash texnikasi (ASLR) bilan bir qatorda, atrof-muhit, dasturni ishga tushirish parametrlari va ma'lumotlari haqidagi ma'lumotlar bilan stekga joylashtirilgan boshlang'ich stek ramkasi va tuzilmalariga murojaat qiluvchi ko'rsatkichlarning ofsetlarini tasodifiylashtirish mexanizmi. ELF formatidagi bajariladigan tasvirlar uchun taklif etiladi;
    • Libc dan xavfli gets funksiyasini olib tashlash (C11 standartidan boshlab, bu funksiya spetsifikatsiyadan chiqarib tashlangan) va hali ham ushbu funksiyadan foydalanadigan portlarni tuzatish bo‘yicha ishlar amalga oshirildi. O'zgartirish FreeBSD 13.0 da taklif qilinishi rejalashtirilgan;
    • Ramka asosida qamoqxona muhitini tartibga solish vositalarini yaratish bo'yicha eksperimental loyiha ishga tushirildi tova Docker va drayverga o'xshash tasvirlarni yaratish va eksport qilish uchun ko'chmanchi, bu qamoqxona muhitida ilovalarni dinamik ravishda ishga tushirish uchun interfeysni ta'minlaydi. Taklif etilayotgan model qamoqxona muhitini yaratish va ulardagi ilovalarni joylashtirish jarayonlarini ajratish imkonini beradi. Loyihaning maqsadlaridan biri qamoqxonalarni Docker uslubidagi konteynerlar sifatida manipulyatsiya qilish vositalarini taqdim etishdir;
  • Saqlash va fayl tizimlari
    • NetBSD dan "makefs" yordam dasturiga Ko'chib FAT fayl tizimini qo'llab-quvvatlash (msdosfs). Tayyorlangan o'zgarishlar md drayverini ishlatmasdan va ildiz huquqisiz FAT bilan FS tasvirlarini yaratishga imkon beradi;
    • FUSE (USERspace-dagi fayl tizimi) quyi tizimi drayverini qayta ishlash tugallandi, bu foydalanuvchi maydonida fayl tizimi ilovalarini yaratish imkonini beradi. Dastlab jo'natilgan haydovchi ko'plab xatolarni o'z ichiga olgan va 7.8 yil oldin chiqarilgan FUSE 11 asosida yaratilgan. Drayvni modernizatsiya qilish loyihasi doirasida FUSE 7.23 protokolini qo'llab-quvvatlash amalga oshirildi, yadro tomonidagi kirish huquqlarini tekshirish uchun kod (“-o default_permissions”) qo'shildi, VOP_MKNOD, VOP_BMAP va VOP_ADVLOCK ga qo'ng'iroqlar qo'shildi, FUSE operatsiyalarini to'xtatish imkoniyati ta'minlandi, noma'lum quvurlar va unix rozetkalarini qo'llab-quvvatlash sigortalarda qo'shildi, /dev/fuse uchun kqueue-dan foydalanish mumkin bo'ldi, "mount -u" orqali o'rnatish parametrlarini yangilash mumkin edi, qo'shimcha qo'llab-quvvatlash NFS orqali sigortalarni eksport qilish uchun RLIMIT_FSIZE hisobi amalga oshirildi, FOPEN_KEEP_CACHE va FUSE_ASYNC_READ bayroqlari qo'shildi, unumdorlikni sezilarli darajada optimallashtirdi va keshlashni tashkil qilish yaxshilandi. Yangi drayver bosh va barqaror/12 filialga kiritilgan (FreeBSD 12.1 ga kiritilgan);
    • FreeBSD uchun NFSv4.2 (RFC-7862) ni joriy qilish deyarli yakunlandi. Hisobot davrida asosiy e’tibor test sinovlariga qaratildi. Linux ilovasi bilan mosligini tekshirish uchun sinovlar yakunlandi, ammo pNFS serverini NFSv4.2 bilan sinovdan o'tkazish hali ham davom etmoqda. Umuman olganda, kod allaqachon FreeBSD bosh/joriy filiallariga integratsiyaga tayyor deb hisoblanadi. NFS ning yangi versiyasida posix_fadvise, posix_fallocate funksiyalari, lseekdagi SEEKHOLE/SEEKDATA rejimlari, serverda fayl qismlarini mahalliy nusxalash operatsiyasi (mijozga o'tkazmasdan) qo'llab-quvvatlanadi;
  • Uskunani qo'llab-quvvatlash
    • Noutbuklarda FreeBSD ish faoliyatini yaxshilash uchun loyiha ishga tushirildi. FreeBSD-da apparat ta'minoti uchun tekshirilgan birinchi qurilma ettinchi avlod Lenovo X1 Carbon noutbuki edi;
    • CheriBSD, tadqiqot protsessor arxitekturasi uchun FreeBSD vilkasi CHERI (Capability Hardware Enhanced RISC Instructions), kelgusi ARM Morello protsessorini qo'llab-quvvatlash uchun yangilangan, u Capsicum dizaynining xavfsizlik modeliga asoslangan CHERI xotiraga kirishni boshqarish tizimini qo'llab-quvvatlaydi. Morello chipi rejalashtirmoqdalar 2021 yilda chiqariladi. CheriBSD ishlab chiquvchilari, shuningdek, MIPS arxitekturasiga asoslangan CHERI mos yozuvlar prototipini ishlab chiqishni kuzatishda davom etadilar;
    • RockPro3399 va NanoPC-T64 platalarida ishlatiladigan RockChip RK4 chiplari uchun kengaytirilgan yordam. Eng muhim yaxshilanish eMMC-ni qo'llab-quvvatlash va platada ishlatiladigan eMMC kontroller uchun yangi drayverni ishlab chiqish edi;
    • 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
      iProc PCIe qo'llab-quvvatlashi kengaytirildi va IPsec tezligini oshirish uchun apparat kriptografik operatsiyalaridan foydalanish imkoniyati qo'shildi.
      HEAD filialiga kod integratsiyasi to'rtinchi chorakda kutilmoqda;

    • Powerpc64 platformasi uchun FreeBSD portini ishlab chiqishda sezilarli yutuqlarga erishildi. Asosiy e'tibor IBM POWER8 va POWER9 protsessorlari bo'lgan tizimlarda sifatli ishlashni ta'minlashga qaratilgan, lekin ixtiyoriy ravishda eski Apple Power Mac, x500 va Amiga A1222 da ishlashni qo'llab-quvvatlaydi. Powerpc*/12 filiali gcc 4.2.1 bilan yetkazib berishda davom etmoqda va powerpc*/13 filiali tez orada llvm90 ga ko‘chiriladi. 33306 portdan 30514 tasi muvaffaqiyatli yig'ildi;
    • FreeBSD portlashi ARMv64 Cortex-A1046 protsessoriga asoslangan 8-bitli SoC NXP LS72A uchun integratsiyalangan tarmoq paketlarini qayta ishlash tezlashtirish dvigateli, 10 Gb Ethernet, PCIe 3.0, SATA 3.0 va USB 3.0 uchun davom etmoqda. Hisobot davrida USB 3.0, SD/MMC, I2C, DPAA va GPIO tarmoq interfeysini qo‘llab-quvvatlash amalga oshirildi. QSPI-ni qo'llab-quvvatlash va tarmoq interfeysi ish faoliyatini optimallashtirish rejalari mavjud. 4-yilning 2019-choragida ishlarning yakunlanishi va BOSHQARM filialiga kiritilishi kutilmoqda;
    • 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 qo'llab-quvvatlashi ena drayveriga qo'shildi va sinovdan o'tkazildi va xotira tartibi Amazon EC2 A1 muhitlarida LLQ rejimini yoqish uchun moslashtirildi;
  • Ilovalar va port tizimi
    • Yangilangan grafik stek komponentlari va xorg bilan bog'liq portlar. USE_XORG va XORG_CAT dan foydalanadigan portlar bsd.port.mk orqali bsd.xorg.mk ga qo'ng'iroq qilish o'rniga USES ramkasiga ko'chirildi. Bunday portlar endi makefayllarida "USES=xorg" bayrog'ini o'z ichiga oladi. XORG_CAT funksiyasi bsd.xorg.mk dan ajratilgan va endi "USES=xorg-cat" bayrog'i bilan yoqilgan. Git omboridan to'g'ridan-to'g'ri xorg portlarini yaratish uchun qo'shilgan vositalar
      freedesktop.org, bu, masalan, hali chiqarilmagan versiyalar uchun portlar yaratishga imkon beradi. Kelajakda biz xorg portlarini qurish uchun autotools o'rniga mezon yig'ish tizimidan foydalanish uchun asboblar tayyorlashni rejalashtirmoqdamiz.

      Qo'llab-quvvatlanmaydigan komponentlarga bog'langan eski xorg portlarini tozalash bo'yicha ishlar amalga oshirildi, masalan, x11/libXp porti o'chirildi va x11/Xxf86misc, x11-fonts/libXfontcache va graphics/libGLw portlari eskirgan. ;

    • Java 11 va FreeBSD-ning yangi versiyalarini qo'llab-quvvatlashni yaxshilash, shuningdek, Java 8 filialiga ba'zi o'zgarishlar kiritish bo'yicha ishlar amalga oshirildi.Java 11-ning Java Flight Recorder, HotSpot Serviceability Agent, HotSpot Debugger kabi yangi funksiyalarini qo'llab-quvvatlashdan so'ng amalga oshirildi. FreeBSD, DTrace, Javac Server, Java Sound va SCTP uchun ish barcha moslik testlaridan o'tishini ta'minlashga o'tdi. Sinovlarni topshirishda muvaffaqiyatsizliklar soni 50 tadan 2 taga kamaydi;
    • KDE Plazma ish stoli, KDE Frameworks, KDE ilovalari va Qt yangilanadi va eng so'nggi nashrlarga yangilanadi;
    • Xfce ish stoli portlari chiqarish uchun yangilandi 4.14;
    • FreeBSD portlari daraxti 38000 2000 portdan oshib ketdi, yopilmagan PRlar soni 400 dan bir oz ko'proq, shundan 7340 ta PR hali hal etilmagan. Hisobot davrida 169 ta ishlab chiquvchidan 1.12 ta oʻzgartirish kiritildi. Ikki yangi ishtirokchi (Santhosh Raju va Dmitriy Goutnik) komitent huquqlarini oldi. Pkg 2.0.4 paket menejerining yangi versiyasi chop etildi, u portlar daraxtidagi qoplamalarni qo'llab-quvvatlaydi va bsd.sites.mk saytini tozalaydi. Portlardagi muhim versiya yangilanishlari orasida: Lazarus 9.0, LLVM 5.30, Perl11, PostgreSQL 2.6, Ruby 69.0.1, Firefox 68.1.0, Firefox-esr 76.0, Chromium XNUMX;
    • Loyihani ishlab chiqish davom etmoqda ClonOS, rivojlanmoqda virtual server infratuzilmasini joylashtirish uchun maxsus tarqatish. O'zi hal qiladigan vazifalar nuqtai nazaridan ClonOS Proxmox, Triton (Joyent), OpenStack, OpenNebula va Amazon AWS kabi tizimlarga o'xshaydi, ulardan asosiy farqi FreeBSD-dan foydalanish va FreeBSD Jail konteynerlarini boshqarish, joylashtirish va boshqarish qobiliyatidir. Bhyve va Xen hipervizörlerine asoslangan virtual muhitlar. So'nggi o'zgarishlar qo'llab-quvvatlashni o'z ichiga oladi
      Linux/BSD VM uchun cloud-init va Windows VM uchun cloudbase-init, mahalliy tasvirlardan foydalanishga o'tishni boshlaydi, Jenkins CI-dan tuzilmalarni sinovdan o'tkazadi va o'rnatish uchun yangi pkg ombori
      Paketlardan ClonOS.

Manba: opennet.ru

a Izoh qo'shish