FreeBSD-ийн 2020 оны эхний улирлын хөгжлийн тайлан

Нийтэлсэн 2020 оны XNUMX-р сараас XNUMX-р сар хүртэл FreeBSD төслийн хөгжлийн талаарх тайлан. Өөрчлөлтүүдийн дунд бид дараахь зүйлийг тэмдэглэж болно.

  • Ерөнхий болон системийн асуудлууд
    • FreeBSD-CURRENT эх модноос GCC хөрвүүлэгчийн багц, мөн ашиглагдаагүй gperf, gcov болон gtc (devicetree хөрвүүлэгч) хэрэгслүүдийг устгасан. Clang-г дэмждэггүй бүх платформуудыг портуудаас суулгасан гадаад бүтээх хэрэгслийг ашиглахад шилжүүлсэн. Үндсэн систем нь GCC 4.2.1-ийн хуучирсан хувилбарыг илгээсэн бөгөөд 4.2.2-ыг GPLv3 лиценз рүү шилжүүлсэн тул FreeBSD-ийн үндсэн бүрэлдэхүүн хэсгүүдэд тохиромжгүй гэж үзсэн тул шинэ хувилбаруудыг нэгтгэх боломжгүй байсан. GCC 9 зэрэг GCC-ийн одоогийн хувилбаруудыг багц болон портуудаас суулгаж болно.
    • Линуксийн орчны эмуляцийн дэд бүтэц (Linuxulator) нь sendfile системийн дуудлага, TCP_CORK горим (nginx-д шаардлагатай) болон MAP_32BIT тугийг (Ubuntu Bionic-ээс Mono ашиглан багц эхлүүлэх асуудлыг шийддэг) дэмжлэгийг нэмсэн. 2.30-аас дээш шинэ glibc (жишээ нь CentOS 8) ашиглах үед DNS нягтаршилтай холбоотой асуудлууд шийдэгдсэн.
      Тасралтгүй интеграцийн дэд бүтэц нь Линуксийг дэмжих кодын сайжруулалтыг шалгахын тулд Linuxulator дээр ажиллаж байгаа LTP (Linux Testing Project) ажлуудыг ажиллуулах боломжийг олгодог. Ойролцоогоор 400 туршилт амжилтгүй болж, засах шаардлагатай (зарим алдаа нь худал эерэг үр дүнгээс үүдэлтэй, зарим нь өчүүхэн засвар хийх шаардлагатай байдаг, гэхдээ засахын тулд системийн шинэ дуудлагад дэмжлэг нэмэх шаардлагатай зарим нь байдаг). Linuxulator кодыг цэвэрлэж, дибаг хийхийг хялбаршуулах ажил хийгдсэн. Өргөтгөсөн шинж чанарууд болон fexecve системийн дуудлагыг дэмждэг засваруудыг бэлтгэсэн боловч хараахан хянаж үзээгүй байна.

    • Төвлөрсөн эхийн хяналтын системээс Subversion төвлөрсөн бус Git систем рүү эх кодыг шилжүүлэх ажлыг зохион байгуулах ажлын хэсгийн хуралдаан үргэлжилж байна. Шилжилт хөдөлгөөний талаарх санал бүхий тайланг бэлтгэх шатандаа явж байна.
    • В rtld (ажиллуулах цаг холбогч) шууд гүйцэтгэх горимыг сайжруулсан (“/libexec/ld-elf.so.1 {path} {аргументууд}”).
    • Syzkaller системийг ашиглан FreeBSD цөмийг бүдэгрүүлэх туршилтын төсөл үргэлжлэн хөгжиж байна. Тайлангийн хугацаанд сүлжээний стек болон syzkaller ашиглан тодорхойлсон файлын тодорхойлогч хүснэгттэй ажиллах кодтой холбоотой асуудлууд арилсан. Алдааны оношилгооны дараа дибаг хийхэд хялбар болгох үүднээс SCTP стект өөрчлөлт оруулсан. Боломжит регрессийг тодорхойлохын тулд стресс2 багцад дүрэм нэмсэн. copy_file_range(), __realpathat() болон Capsicum дэд системийн дуудлагуудыг багтаасан шинэ системийн дуудлагуудын fuzz тестийн дэмжлэгийг нэмсэн. Линуксийн эмуляцийн давхаргыг fuzz тестээр хамрах ажил үргэлжилж байна. Бид хамгийн сүүлийн үеийн Coverity Scan тайланд дурдсан алдаануудад дүн шинжилгээ хийж, арилгасан.
    • Тасралтгүй интеграцийн систем нь зөвхөн clang/lld ашиглан толгойн салбаруудын бүх тестийг гүйцэтгэх горимд шилжсэн. RISC-V-ийг туршихдаа OpenSBI ашиглан QEMU-д туршилт явуулахын тулд бүрэн дискний дүрс үүсэхийг баталгаажуулдаг. Зураг болон powerpc64 виртуал машинуудыг турших шинэ даалгавруудыг нэмсэн (FreeBSD-head-powerpc64-images, FreeBSD-head-powerpc64-testvm).
    • Kyua-г шинэ архитектур дээр ашиглах үед гарч ирдэг асуудлуудыг (багцуудыг маш удаан суулгадаг) шийдвэрлэхийн тулд Kyua тестийн багцыг портуудаас (devel/kyua) үндсэн систем рүү шилжүүлэх ажил хийгдэж байна. FPGA. Суурь системд нэгтгэх нь суулгагдсан платформуудыг турших, тасралтгүй интеграцийн системтэй интерфейсийг ихээхэн хялбаршуулах болно.
    • Сүлжээний гүүрний драйверын ажиллагааг оновчтой болгох төслийг эхлүүлсэн хэрэв_гүүр, энэ нь дотоод өгөгдлийг түгжихийн тулд нэг мутекс ашигладаг бөгөөд энэ нь олон тооны шоронгийн орчин эсвэл нэг сүлжээнд нэгдсэн виртуал машинтай систем дээр хүссэн гүйцэтгэлд хүрэхийг зөвшөөрдөггүй. Энэ үе шатанд цоожтой ажиллах орчин үеийн үед регресс гарахаас урьдчилан сэргийлэхийн тулд кодонд туршилтуудыг нэмж оруулсан болно. ConcurrencyKit-ийг өгөгдөл дамжуулах зохицуулагчийг (bridge_input(), bridge_output(), bridge_forward(), ...) зэрэгцүүлэн тохируулах боломжийг авч үзэж байна.
    • Онцгой тохиолдлын зохицуулагчийн гүйцэтгэлийг сайжруулахын тулд хурдан дохио зохицуулагчийн санах ойн блокийг зааж өгөхийн тулд шинэ sigfastblock системийн дуудлагыг нэмсэн.
    • Цөм нь ARMv8.1 системээр дэмжигдсэн LSE (Large System Extension) атомын зааврыг дэмждэг. Эдгээр заавар нь Cavium ThunderX2 болон AWS Graviton 2 хавтан дээр ажиллах үед гүйцэтгэлийг сайжруулахад шаардлагатай. Нэмэгдсэн өөрчлөлтүүд нь LSE дэмжлэгийг илрүүлж, тэдгээрт суурилсан атомын хэрэгжилтийг динамикаар идэвхжүүлдэг. Туршилтын явцад LSE-ийн хэрэглээ нь цөмийг угсрах процессорын хугацааг 15% -иар бууруулах боломжтой болсон.
    • Гүйцэтгэлийн оновчлолыг хийж, ELF форматтай ажиллах боломжтой файлуудад зориулсан хэрэгслийн функцийг өргөжүүлсэн.
      DWARF дибаг хийх мэдээллийг кэш хийх дэмжлэг нэмэгдсэн, elfcopy/objcopy хэрэгслүүдийн асуудлыг шийдэж, DW_AT_ranges боловсруулалтыг нэмсэн,
      readelf нь PROTMAX_DISABLE, STKGAP_DISABLE болон WXNEEDED тугуудыг тайлах, мөн Xen болон GNU Build-ID-г тайлах чадварыг хэрэгжүүлдэг.

  • Аюулгүй байдал
    • Azure үүлэн орчинд FreeBSD-ийн гүйцэтгэлийг сайжруулахын тулд HyperV Socket механизмыг дэмжих ажил хийгдэж байгаа бөгөөд энэ нь сүлжээ үүсгэхгүйгээр зочны систем болон хост орчны хоорондын харилцан үйлчлэлд зориулсан сокет интерфэйсийг ашиглах боломжийг олгодог.
    • Системийн бүрэлдэхүүн хэсгүүдийн гүйцэтгэгдэх файлуудыг зарласан эх кодуудаас яг эмхэтгэж, нэмэлт өөрчлөлт оруулахгүй байхыг баталгаажуулах боломжтой болгож, FreeBSD-ийн давтагдах хувилбаруудыг хангах ажил хийгдэж байна.
    • Тусдаа процессуудын түвшинд нэмэлт хамгаалалтын механизмуудыг (ASLR, PROT_MAX, стекийн зөрүү, W+X зураглал) оруулахыг хянах чадварыг elfctl хэрэгсэлд нэмсэн.
  • Хадгалах болон файлын системүүд
    • NFS нь зөвхөн RPC мессежийг шифрлэх замаар хязгаарлагдмал, зөвхөн програм хангамжид хэрэгждэг Kerberos (sec=krb1.3p горим) ашиглахын оронд TLS 5 дээр суурилсан шифрлэгдсэн холбооны сувгаар ажиллах боломжийг хэрэгжүүлэх ажил хийгдэж байна. Шинэ хэрэгжүүлэлт нь техник хангамжийн хурдатгалыг идэвхжүүлэхийн тулд цөмөөр хангагдсан TLS стекийг ашигладаг. TLS дээрх NFS кодыг туршихад бараг бэлэн байгаа ч гарын үсэг зурсан үйлчлүүлэгчийн гэрчилгээг дэмжих, NFS өгөгдлийг илгээхийн тулд цөм TLS стекийг тохируулах ажил шаардлагатай хэвээр байна (хүлээн авах нөхөөсүүд бэлэн болсон).
  • Техник хангамжийн дэмжлэг
    • AMD технологид суурилсан Хятадын x86 CPU Hygon-ийн дэмжлэгийг нэмэх ажил хийгдэж байна;
    • Судалгааны процессорын архитектурт зориулсан FreeBSD-ийн салаа CheriBSD-ийн нэг хэсэг ДАРЛИНГ (Capability Hardware Enhanced RISC Instructions), Capsicum төслийн аюулгүй байдлын загварт суурилсан CHERI санах ойн хандалтын хяналтын системийг дэмжих ARM Morello процессорын дэмжлэгийг үргэлжлүүлэн хэрэгжүүлсээр байна. Морелло чип төлөвлөж байна 2021 онд гарна. Одоогоор ажил нь Morello-г дэмждэг Arm Neoverse N1 платформд дэмжлэг үзүүлэхэд чиглэгдэж байна. RISC-V архитектурт зориулсан CheriBSD-ийн анхны портыг танилцууллаа. MIPS64 архитектурт суурилсан CHERI лавлагааны прототипийн хувьд CheriBSD хөгжүүлэлт үргэлжилж байна.
    • Сүлжээний пакет боловсруулах нэгдсэн хурдатгалын хөдөлгүүр, 64 Gb Ethernet, PCIe 1046, SATA 8 болон USB 72 бүхий ARMv10 Cortex-A3.0 процессор дээр суурилсан 3.0 битийн SoC NXP LS3.0A-д FreeBSD порт хийх ажил үргэлжилж байна. Одоогоор QorIQ болон LS1046A, GPIO, QorIQ LS10xx AHCI, VF610 I2C, Epson RX-8803 RTC, QorIQ LS10xx SDHCI драйверуудыг FreeBSD үндсэн бүрэлдэхүүн рүү шилжүүлэхээр бэлтгэж байна.
    • Ena драйверийг 2.1.1 Гб/ хүртэлх хурдтайгаар EC2 зангилаа хоорондын холбоог зохион байгуулахын тулд Elastic Compute Cloud (EC2) дэд бүтцэд ашигладаг ENAv2 (Уян сүлжээний адаптер) сүлжээний адаптеруудын хоёр дахь үеийн дэмжлэгтэйгээр 25 хувилбар руу шинэчлэгдсэн. с. ENA 2.2.0-ийн шинэчлэлтийг бэлтгэж байна.
    • Powerpc64 платформд зориулсан FreeBSD портын сайжруулалт үргэлжилж байна. IBM POWER8 болон POWER9 процессортой системүүдийн чанарын гүйцэтгэлийг хангахад гол анхаарлаа хандуулдаг. Тайлангийн хугацаанд FreeBSD-CURRENT-ийг GCC-ийн оронд LLVM/Clang 10.0 хөрвүүлэгч болон lld холбогч ашиглахаар шилжүүлсэн. Анхдагч байдлаар, powerpc64 системүүд нь ELFv2 ABI-г ашигладаг бөгөөд ELFv1 ABI-ийн дэмжлэгийг зогсоосон. FreeBSD-STABLE нь gcc 4.2.1-тэй хэвээр байна. Virtio, aacraid, ixl драйверуудтай холбоотой асуудлууд шийдэгдсэн. Powerpc64 систем дээр Huge Pages дэмжлэггүйгээр QEMU-г ажиллуулах боломжтой.
    • RISC-V архитектурын дэмжлэгийг хэрэгжүүлэх ажил үргэлжилж байна. Одоогийн байдлаар FreeBSD аль хэдийн драйверуудыг бэлтгэсэн SiFive Hifive Unleashed самбар дээр амжилттай ачаалагддаг.
      UART, SPI болон PRCI нь OpenSBI болон SBI 0.2 програм хангамжийг дэмждэг. Тайлангийн хугацаанд ажил нь GCC-ээс clang болон lld руу шилжихэд чиглэгдсэн.

  • Програм ба порт систем
    • FreeBSD портуудын цуглуулга 39 мянган портын босгыг давсан бөгөөд хаалттай PR-ийн тоо 2400-аас бага зэрэг давсан ба үүнээс 640 PR хараахан эрэмблэгдээгүй байна. Тайлант хугацаанд 8146 хөгжүүлэгчээс 173 өөрчлөлт оруулсан байна. Дөрвөн шинэ оролцогч (Лоик Бартолетти, Микаэл Уранкар, Кайл Эванс, Лоренцо Сальвадор) нарын эрхийг хүлээн авсан. USES=qca тугийг нэмж, USES=zope тугийг хассан (Python 3-тай таарахгүйн улмаас). Python 2.7-г портын модноос устгах ажил хийгдэж байна - Python 2-д суурилсан бүх портуудыг Python 3 руу шилжүүлэх эсвэл устгах болно. pkg багц менежерийг 1.13.2 хувилбар болгон шинэчилсэн.
    • График стекийн бүрэлдэхүүн хэсгүүд болон xorg холбоотой портуудыг шинэчилсэн.
      X.org серверийг 1.20.8 (өмнө нь 1.18 салбар дээр тээвэрлэж байсан) хувилбар болгон шинэчилсэн бөгөөд энэ нь FreeBSD-д оролтын төхөөрөмжүүдтэй ажиллахдаа udev/evdev арын хэсгийг ашиглах боломжийг олгосон. Mesa багцыг анхдагчаар DRI3-ийн оронд DRI2 өргөтгөлийг ашиглахаар сольсон. График драйверууд, оролтын төхөөрөмжийн стек, drm-kmod бүрэлдэхүүн хэсгүүдийг (Linuxkpi фреймворкийг ашиглан Linux цөмийн Direct Rendering Manager-тэй нийцүүлэхийн тулд amdgpu, i915 болон radeon DRM модулиудыг ажиллуулах боломжтой порт) хадгалах ажил хийгдэж байна. шинэчлэгдсэн.

    • KDE Plasma ширээний компьютер, KDE Frameworks, KDE Applications болон Qt нь шинэчлэгдсэн бөгөөд хамгийн сүүлийн үеийн хувилбаруудад шинэчлэгдсэн. Портуудад шинэ програм kstars (од атлас) нэмэгдсэн.
    • Xfce-г 4 хувилбар болгон шинэчилсний дараа гарч ирсэн xfwm4.14 цонхны менежер дэх регрессив өөрчлөлтийг арилгах ажлыг хийсэн (жишээлбэл, цонхыг чимэглэх үед олдворууд гарч ирсэн).
    • Wine портыг шинэчилж, Wine 5.0 хувилбарыг гаргасан (өмнө нь 4.0.3 хувилбарыг санал болгож байсан).
    • 1.14 хувилбараас эхлэн Go хэлний хөрвүүлэгч нь FreeBSD 64-д зориулсан ARM12.0 архитектурт албан ёсны дэмжлэг нэмсэн.
    • Үндсэн систем дээрх OpenSSH нь 7.9p1 хувилбараар шинэчлэгдсэн.
    • sysctlmibinfo2 номын санг хэрэгжүүлж, портуудад (devel/libsysctlmibinfo2) байршуулсан бөгөөд sysctl MIB-д хандах API-аар хангаж, sysctl нэрийг объект танигч (OIDs) болгон хөрвүүлэх боломжтой болсон.
    • Түгээлтийн шинэчлэлийг үүсгэсэн NomadBSD 1.3.1, энэ нь USB дискнээс ачаалах боломжтой зөөврийн ширээний компьютер болгон ашиглахад зориулагдсан FreeBSD-ийн хувилбар юм. График орчин нь цонхны менежер дээр суурилдаг Openbox. Хөтчүүдийг холбоход ашигладаг DSBMD (CD9660, FAT, HFS+, NTFS, Ext2/3/4 холболтыг дэмждэг), утасгүй сүлжээг тохируулах - wifimgr, мөн дууны хэмжээг хянах - DSBMixer.
    • Эхлэлээ ажил шоронгийн орчны менежерт зориулж иж бүрэн бичиг баримт бичих тухай шавар. Сүлжээний стекийг удирдах хэрэгслүүдийг багтаасан Pot 0.11.0 хувилбарыг гаргахаар бэлтгэж байна.

Эх сурвалж: opennet.ru

сэтгэгдэл нэмэх