2020 yilning birinchi choragi uchun FreeBSD rivojlanish hisoboti

nashr etilgan 2020 yilning yanvaridan martigacha FreeBSD loyihasini ishlab chiqish bo'yicha hisobot. O'zgarishlar orasida biz quyidagilarni ta'kidlashimiz mumkin:

  • Umumiy va tizimli masalalar
    • FreeBSD-CURRENT manba daraxtidan GCC kompilyator to‘plami, shuningdek foydalanilmagan gperf, gcov va gtc (devicetree kompilyator) yordamchi dasturlari olib tashlandi. Clang-ni qo'llab-quvvatlamaydigan barcha platformalar portlardan o'rnatilgan tashqi qurish vositalaridan foydalanishga o'tkazildi. Asosiy tizim GCC 4.2.1 ning eskirgan versiyasini jo'natdi va 4.2.2 ning GPLv3 litsenziyasiga o'tishi sababli yangi versiyalarni integratsiyalash mumkin emas edi, bu FreeBSD asosiy komponentlari uchun nomaqbul deb hisoblanadi. GCC ning joriy versiyalari, shu jumladan GCC 9, hali ham paketlar va portlardan o'rnatilishi mumkin.
    • Linux muhitini emulyatsiya qilish infratuzilmasi (Linuxulator) sendfile tizimi chaqiruvi, TCP_CORK rejimi (nginx uchun talab qilinadi) va MAP_32BIT bayrog'i (Ubuntu Bionic-dan Mono bilan paketlarni ishga tushirish muammosini hal qiladi) uchun qo'shimcha qo'llab-quvvatladi. 2.30 dan yangi glibc (masalan, CentOS 8 dan) dan foydalanganda DNS ruxsati bilan bog'liq muammolar hal qilindi.
      Uzluksiz integratsiya infratuzilmasi Linuxni qo'llab-quvvatlash uchun kodga kiritilgan yaxshilanishlarni sinab ko'rish uchun Linuxulator bilan ishlaydigan LTP (Linux Testing Project) ishlarini bajarish imkoniyatini beradi. Taxminan 400 ta test muvaffaqiyatsiz tugadi va tuzatishni talab qiladi (ba'zi xatolar noto'g'ri pozitivlardan kelib chiqadi, ba'zilari arzimas tuzatishlarni talab qiladi, lekin tuzatish uchun yangi tizim qo'ng'iroqlari uchun qo'llab-quvvatlashni qo'shishni talab qiladigan boshqalar ham bor). Linuxulator kodini tozalash va disk raskadrovkani soddalashtirish bo'yicha ishlar amalga oshirildi. Kengaytirilgan atributlar va fexecve tizimi chaqiruvini qoʻllab-quvvatlaydigan yamalar tayyorlandi, ammo hali koʻrib chiqilmagan.

    • Subversion markazlashtirilgan manba boshqaruv tizimidan markazlashtirilmagan Git tizimiga manba kodlarini migratsiyasini amalga oshirish uchun tuzilgan ishchi guruhining uchrashuvlari davom etmoqda. Migratsiya bo'yicha takliflar bilan hisobot tayyorlanmoqda.
    • В rtld (ish vaqti bog'lovchisi) takomillashtirilgan to'g'ridan-to'g'ri bajarish rejimi (“/libexec/ld-elf.so.1 {path} {argumentlar}”).
    • Syzkaller tizimidan foydalangan holda FreeBSD yadrosini fuzzing testi loyihasi rivojlanishda davom etmoqda. Hisobot davrida tarmoq stekidagi va syzkaller yordamida aniqlangan fayl deskriptorlari jadvallari bilan ishlash kodidagi muammolar bartaraf etildi. Xato tashxisidan so'ng, disk raskadrovkani osonlashtirish uchun SCTP stekiga o'zgarishlar kiritildi. Mumkin bo'lgan regressiyalarni aniqlash uchun stress2 to'plamiga qoidalar qo'shildi. Yangi tizim qoʻngʻiroqlarini, jumladan copy_file_range(), __realpathat() va Capsicum quyi tizim qoʻngʻiroqlarini fuzz testi uchun qoʻshimcha yordam. Linux emulyatsiya qatlamini fuzz testi bilan qoplash ishlari davom etmoqda. Biz oxirgi Coverity Scan hisobotlarida qayd etilgan xatolarni tahlil qildik va bartaraf etdik.
    • Uzluksiz integratsiya tizimi barcha bosh tarmoq testlarini faqat clang/lld yordamida bajarishga o'tdi. RISC-V ni sinovdan o'tkazishda OpenSBI yordamida QEMU-da sinovlarni o'tkazish uchun to'liq disk tasvirining shakllanishi ta'minlanadi. Tasvirlar va powerpc64 virtual mashinalarini sinovdan o'tkazish uchun yangi vazifalar qo'shildi (FreeBSD-head-powerpc64-images, FreeBSD-head-powerpc64-testvm).
    • Yangi arxitekturalarda Kyua-dan foydalanishda yuzaga keladigan muammolarni (paketlar juda sekin o'rnatiladi) hal qilish uchun Kyua test to'plamini portlardan (devel/kyua) bazaviy tizimga o'tkazish bo'yicha ishlar olib borilmoqda, ularni ishlab chiqish emulyator yoki emulyator yordamida amalga oshiriladi. FPGA. Bazaviy tizimga integratsiya o'rnatilgan platformalar va uzluksiz integratsiya tizimlari bilan interfeyslarni sinovdan o'tkazishni sezilarli darajada soddalashtiradi.
    • Tarmoq ko'prigi drayverining ishlashini optimallashtirish bo'yicha loyiha ishga tushirildi if_bridge, bu ichki ma'lumotlarni bloklash uchun bitta mutexdan foydalanadi, bu ko'p sonli qamoqxona muhitlari yoki bitta tarmoqqa birlashtirilgan virtual mashinalari bo'lgan tizimlarda kerakli ishlashga erishishga imkon bermaydi. Ushbu bosqichda qulflar bilan ishlashni modernizatsiya qilishda regressiyalarning oldini olish uchun kodga testlar qo'shildi. Ma'lumotlarni uzatish ishlov beruvchilarini (bridge_input(), bridge_output(), bridge_forward(), ...) parallellashtirish uchun ConcurrencyKit-dan foydalanish imkoniyati ko'rib chiqilmoqda.
    • Istisno ishlovchilarning ish faoliyatini yaxshilash uchun tezkor signal ishlov beruvchisi uchun ipga xotira blokini belgilashga ruxsat berish uchun yangi sigfastblock tizimi chaqiruvi qo'shildi.
    • Yadro ARMv8.1 tizimlari tomonidan qo'llab-quvvatlanadigan LSE (Large System Extension) atom ko'rsatmalarini qo'llab-quvvatlaydi. Ushbu koʻrsatmalar Cavium ThunderX2 va AWS Graviton 2 platalarida ishlashda unumdorlikni oshirish uchun talab qilinadi.Qoʻshimcha oʻzgarishlar LSE qoʻllab-quvvatlashini aniqlaydi va ular asosida atomik amalga oshirishni dinamik ravishda faollashtiradi. Sinov paytida LSE dan foydalanish yadroni yig'ishda protsessorga sarflangan vaqtni 15% ga qisqartirish imkonini berdi.
    • Ishlashni optimallashtirish amalga oshirildi va ELF formatidagi bajariladigan fayllar uchun asboblar to'plamining funksionalligi kengaytirildi.
      DWARF disk raskadrovka ma'lumotlarini keshlash uchun qo'shimcha yordam, elfcopy/objcopy yordam dasturlaridagi muammolarni hal qilish, qo'shilgan DW_AT_ranges ishlov berish,
      readelf PROTMAX_DISABLE, STKGAP_DISABLE va WXNEEDED bayroqlarini, shuningdek Xen va GNU Build-ID kodlarini dekodlash qobiliyatini amalga oshiradi.

  • Xavfsizlik
    • Azure bulutli muhitlarida FreeBSD unumdorligini oshirish uchun HyperV Socket mexanizmini qo‘llab-quvvatlash bo‘yicha ishlar olib borilmoqda, bu esa tarmoqni o‘rnatmasdan mehmon tizimi va xost muhiti o‘rtasidagi o‘zaro aloqa uchun soket interfeysidan foydalanish imkonini beradi.
    • Tizim komponentlarining bajariladigan fayllari aniq e'lon qilingan manba kodlaridan tuzilganligini va ortiqcha o'zgarishlarni o'z ichiga olmasligini ta'minlash imkonini beruvchi FreeBSD-ning takrorlanadigan tuzilmalarini ta'minlash bo'yicha ishlar olib borilmoqda.
    • Elfctl yordam dasturiga individual jarayonlar darajasida qo'shimcha himoya mexanizmlarini (ASLR, PROT_MAX, stek oralig'i, W+X xaritasi) kiritishni boshqarish imkoniyati qo'shildi.
  • Saqlash va fayl tizimlari
    • NFS ning faqat RPC xabarlarini shifrlash bilan chegaralangan va faqat dasturiy ta’minotda amalga oshiriladigan Kerberos (sec=krb1.3p rejimi) dan foydalanish o‘rniga TLS 5 asosida shifrlangan aloqa kanali orqali ishlash qobiliyatini joriy etish bo‘yicha ishlar olib borilmoqda. Yangi dastur apparat tezlashtirishni yoqish uchun yadro tomonidan taqdim etilgan TLS stekidan foydalanadi. TLS orqali NFS kodi sinovga deyarli tayyor, lekin imzolangan mijoz sertifikatlarini qoʻllab-quvvatlash va NFS maʼlumotlarini joʻnatish uchun yadro TLS stekini moslashtirish uchun hali ham ishni talab qiladi (qabul qilish uchun yamoqlar allaqachon tayyor).
  • Uskunani qo'llab-quvvatlash
    • AMD texnologiyalari asosida Xitoyning x86 CPU Hygon-ni qo'llab-quvvatlash bo'yicha ish olib borilmoqda;
    • CheriBSD-ning bir qismi sifatida, tadqiqot protsessor arxitekturasi uchun FreeBSD vilkalari CHERI (Capability Hardware Enhanced RISC Instructions), Capsicum loyihasi xavfsizlik modeliga asoslangan CHERI xotiraga kirishni boshqarish tizimini qo'llab-quvvatlaydigan ARM Morello protsessorini qo'llab-quvvatlashni amalga oshirish davom etmoqda. Morello chipi rejalashtirmoqdalar 2021 yilda chiqariladi. Hozirda ish Morelloni quvvatlaydigan Arm Neoverse N1 platformasini qo'llab-quvvatlashga qaratilgan. RISC-V arxitekturasi uchun CheriBSD ning dastlabki porti taqdim etildi. MIPS64 arxitekturasiga asoslangan CHERI mos yozuvlar prototipi uchun CheriBSD ishlab chiqish davom etmoqda.
    • 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. Hozirda QorIQ va LS1046A, GPIO, QorIQ LS10xx AHCI, VF610 I2C, Epson RX-8803 RTC, QorIQ LS10xx SDHCI drayverlari asosiy FreeBSD tarkibiga o‘tkazish uchun tayyorlanmoqda.
    • Ena drayveri EC2.1.1 tugunlari oʻrtasida 2 Gb/s gacha tezlikda aloqani tashkil qilish uchun Elastic Compute Cloud (EC2) infratuzilmasida ishlatiladigan ENAv2 (Elastic Network Adapter) tarmoq adapterlarining ikkinchi avlodini qoʻllab-quvvatlash bilan 25 versiyasiga yangilandi. s. ENA 2.2.0 yangilanishi tayyorlanmoqda.
    • Powerpc64 platformasi uchun FreeBSD portini takomillashtirish davom etmoqda. Asosiy e'tibor IBM POWER8 va POWER9 protsessorlari bo'lgan tizimlarda sifatli ishlashni ta'minlashga qaratilgan. Hisobot davrida FreeBSD-CURRENT GCC o‘rniga LLVM/Clang 10.0 kompilyatori va lld bog‘lovchisidan foydalanishga o‘tkazildi. Odatiy bo'lib, powerpc64 tizimlari ELFv2 ABI-dan foydalanadi va ELFv1 ABI-ni qo'llab-quvvatlash to'xtatilgan. FreeBSD-STABLE hali ham gcc 4.2.1 ga ega. Virtio, aacraid va ixl drayverlari bilan bog'liq muammolar hal qilindi. Powerpc64 tizimlarida QEMU-ni Huge Pages yordamisiz ishga tushirish mumkin.
    • RISC-V arxitekturasini qo'llab-quvvatlash bo'yicha ishlar davom etmoqda. Hozirgi ko'rinishida FreeBSD allaqachon drayverlar tayyorlangan SiFive Hifive Unleashed platasida muvaffaqiyatli yuklanmoqda.
      UART, SPI va PRCI, OpenSBI va SBI 0.2 mikrodasturlarini qo'llab-quvvatlaydi. Hisobot davrida ish GCC dan clang va lldga migratsiyaga qaratilgan.

  • Ilovalar va port tizimi
    • FreeBSD portlari to‘plami 39 ming port chegarasidan o‘tdi, yopilmagan PRlar soni 2400 dan biroz oshib ketdi, ulardan 640 tasi hali saralanmagan. Hisobot davrida 8146 ta ishlab chiquvchidan 173 ta o'zgartirish kiritildi. To'rtta yangi ishtirokchi komitent huquqlarini oldi (Loik Bartoletti, Mikael Urankar, Kayl Evans, Lorenzo Salvador). USES=qca bayrogʻi qoʻshildi va USES=zope bayrogʻi olib tashlandi (Python 3 bilan mos kelmasligi sababli). Python 2.7 ni portlar daraxtidan olib tashlash bo'yicha ish olib borilmoqda - Python 2 ga asoslangan barcha portlar Python 3 ga ko'chirilishi kerak yoki olib tashlanadi. Pkg paket menejeri 1.13.2 versiyasini chiqarish uchun yangilandi.
    • Yangilangan grafik stek komponentlari va xorg bilan bog'liq portlar.
      X.org serveri 1.20.8 versiyasiga yangilandi (ilgari 1.18 filialida yuborilgan), bu FreeBSD-ga kirish qurilmalari bilan ishlash uchun udev/evdev backend-dan foydalanishga ruxsat berdi. Mesa paketi sukut bo'yicha DRI3 o'rniga DRI2 kengaytmasidan foydalanishga o'tkazildi. Grafik drayverlarni, kiritish moslamalari stekini va drm-kmod komponentlarini (Linux yadrosining Direct Rendering Manager bilan mosligi uchun linuxkpi ramkasidan foydalangan holda amdgpu, i915 va radeon DRM modullarining ishlashini taʼminlaydigan port) saqlash boʻyicha ishlar olib borilmoqda. hozirgi kungacha.

    • KDE Plazma ish stoli, KDE Frameworks, KDE ilovalari va Qt yangilanadi va eng so'nggi nashrlarga yangilanadi. Portlarga yangi kstars ilovasi (yulduzli atlas) qo'shildi.
    • Xfce-ni 4 versiyasiga yangilagandan so'ng paydo bo'lgan xfwm4.14 oyna boshqaruvchisidagi regressiv o'zgarishlarni bartaraf etish bo'yicha ishlar amalga oshirildi (masalan, derazalarni bezashda artefaktlar paydo bo'ldi).
    • Wine porti Wine 5.0 ni chiqarish uchun yangilandi (ilgari 4.0.3 taklif qilingan).
    • 1.14 versiyasidan boshlab, Go tili kompilyatori FreeBSD 64 uchun ARM12.0 arxitekturasini rasmiy qo'llab-quvvatladi.
    • Asosiy tizimdagi OpenSSH 7.9p1 versiyasini chiqarish uchun yangilandi.
    • Sysctlmibinfo2 kutubxonasi amalga oshirildi va portlarga (devel/libsysctlmibinfo2) joylashtirildi, bu sysctl MIB ga kirish va sysctl nomlarini obyekt identifikatorlariga (OID) tarjima qilish uchun API taqdim etadi.
    • Tarqatish yangilanishi yaratildi NomadBSD 1.3.1, bu USB diskdan yuklanadigan portativ ish stoli sifatida foydalanish uchun moslashtirilgan FreeBSD nashri. Grafik muhit oyna boshqaruvchisiga asoslangan Openbox. Drayvlarni o'rnatish uchun ishlatiladi DSBMD (CD9660, FAT, HFS+, NTFS, Ext2/3/4 o'rnatish qo'llab-quvvatlanadi), simsiz tarmoqni sozlash uchun - wifimgr, va ovoz balandligini boshqarish uchun - DSBMixer.
    • Boshlandi ish qamoqxona muhiti menejeri uchun to'liq hujjatlarni yozish bo'yicha tova. Pot 0.11.0 chiqarishga tayyorlanmoqda, u tarmoq stekini boshqarish vositalarini o'z ichiga oladi.

Manba: opennet.ru

a Izoh qo'shish