Извештај за развој на FreeBSD за првиот квартал од 2020 година

објавено извештај за развојот на проектот FreeBSD од јануари до март 2020 година. Меѓу промените можеме да забележиме:

  • Општи и системски прашања
    • Го отстрани множеството на компајлери на GCC од изворното стебло на FreeBSD-CURRENT, како и неискористените алатки за gperf, gcov и gtc (компајлер на уред на дрво). Сите платформи кои не поддржуваат Clang се префрлени на користење на надворешни алатки за градење инсталирани од пристаништа. Основниот систем испорача застарено издание на GCC 4.2.1, а интеграцијата на поновите верзии не беше можна поради преминот на 4.2.2 на лиценцата GPLv3, што се сметаше за несоодветно за основните компоненти на FreeBSD. Тековните изданија на GCC, вклучувајќи го и GCC 9, сè уште може да се инсталираат од пакети и пристаништа.
    • Инфраструктурата за емулација на околината на Linux (Linuxulator) додаде поддршка за повикот на системот sendfile, режимот TCP_CORK (потребен за nginx) и знамето MAP_32BIT (го решава проблемот со лансирање пакети со Mono од Ubuntu Bionic). Проблемите со резолуцијата на DNS при користење на glibc понова од 2.30 (на пример од CentOS 8) се решени.
      Инфраструктурата за континуирана интеграција обезбедува можност за извршување на работните места на LTP (Linux Testing Project) со Linuxulator за тестирање на подобрувањата направени на кодот за поддршка на Linux. Околу 400 тестови не успеваат и бараат поправка (некои грешки се предизвикани од лажни позитиви, некои бараат тривијални поправки, но има и други кои бараат додавање поддршка за нови системски повици за да се поправат). Направена е работа за да се исчисти кодот на Linuxulator и да се поедностави дебагирањето. Подготвени се закрпи со поддршка за проширени атрибути и системски повик fexecve, но сè уште не се прегледани.

    • Продолжуваат состаноците на работната група создадена за извршување на миграцијата на изворните кодови од централизираниот систем за контрола на изворот Subversion кон децентрализираниот систем Git. Во процес на подготовка е извештај со предлози за миграција.
    • В rtld (поврзувач за време на траење) подобрен режим на директно извршување („/libexec/ld-elf.so.1 {path} {arguments}“).
    • Проектот за fuzzing тестирање на кернелот FreeBSD со помош на системот syzkaller продолжува да се развива. За време на периодот на известување, проблемите во мрежниот оџак и кодот за работа со табелите за дескриптори на датотеки идентификувани со syzkaller беа елиминирани. По дијагнозата на грешката, промените се додадени во стекот SCTP за да се олесни дебагирањето. Правилата се додадени во сетот стрес2 за да се идентификуваат можните регресии. Додадена е поддршка за fuzz тестирање на нови системски повици, вклучувајќи copy_file_range(), __realpathat() и Capsicum потсистемски повици. Работата продолжува за покривање на слојот за емулација на Linux со fuzz тестирање. Ги анализиравме и елиминиравме грешките забележани во најновите извештаи за скенирање на покриеност.
    • Системот за континуирана интеграција се префрли на извршување на сите тестови за гранка на главата само со употреба на clang/lld. При тестирање за RISC-V, се обезбедува формирање на целосна слика на дискот за извршување на тестови во QEMU користејќи OpenSBI. Додадени се нови задачи за тестирање слики и виртуелни машини powerpc64 (FreeBSD-head-powerpc64-images, FreeBSD-head-powerpc64-testvm).
    • Во тек е работа за пренос на тест пакетот Kyua од пристаништата (devel/kyua) во основниот систем за да се решат проблемите (пакетите се инсталираат многу бавно) кои се јавуваат при користење на Kyua на нови архитектури, чиј развој се врши со помош на емулатор или FPGA. Интеграцијата во основниот систем значително ќе го поедностави тестирањето на вградените платформи и интерфејсот со системите за континуирана интеграција.
    • Започнат е проект за оптимизирање на перформансите на драјверот на мрежниот мост if_bridge, кој користи единствен мутекс за заклучување на внатрешните податоци, што не дозволува постигнување на посакуваните перформанси на системи со голем број затворски околини или виртуелни машини обединети во една мрежа. Во оваа фаза, во кодот се додадени тестови за да се спречи појава на регресии при модернизацијата на работата со брави. Се разгледува можноста за користење на ConcurrencyKit за паралелизирање на ракувачите за пренос на податоци (bridge_input(), bridge_output(), bridge_forward(), ...).
    • Додаден е нов системски повик sigfastblock за да се дозволи нишка да одреди блок меморија за брз управувач со сигнали за да ги подобри перформансите на управувачите со исклучоци.
    • Јадрото додава поддршка за LSE (Large System Extension) атомски инструкции поддржани од системите ARMv8.1. Овие инструкции се потребни за да се подобрат перформансите кога се работи на табли 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.

  • безбедност
    • За да се подобрат перформансите на FreeBSD во облак околини на Azure, се работи на обезбедување поддршка за механизмот HyperV Socket, кој овозможува користење на интерфејс со штекер за интеракција помеѓу системот за гости и околината домаќин без поставување на мрежа.
    • Во тек е работа за да се обезбедат повторливи изданија на FreeBSD, што овозможува да се осигури дека извршните датотеки на компонентите на системот се компајлирани точно од декларираните изворни кодови и не содржат дополнителни промени.
    • Способноста да се контролира вклучувањето на дополнителни механизми за заштита (ASLR, PROT_MAX, stack gap, W+X mapping) на ниво на поединечни процеси е додадена во алатката elfctl
  • Складирање и датотечни системи
    • Во тек е работа на имплементација на способноста за NFS да работи преку шифриран комуникациски канал базиран на TLS 1.3, наместо да се користи Kerberos (sec=krb5p режим), кој е ограничен на шифрирање само RPC пораки и се имплементира само во софтвер. Новата имплементација го користи оџакот TLS обезбеден од јадрото за да овозможи хардверско забрзување. Кодот NFS преку TLS е речиси подготвен за тестирање, но сепак бара работа за да се поддржат потпишаните сертификати на клиентот и да се приспособи оџакот TLS на кернелот за испраќање податоци на NFS (закрпите за примање се веќе подготвени).
  • Хардверска поддршка
    • Во тек е работа за додавање поддршка за кинески x86 процесор Hygon базиран на AMD технологии;
    • Како дел од CheriBSD, вилушка на FreeBSD за архитектура на процесор за истражување ЧЕРИ (Capability Hardware Enhanced RISC Instructions), продолжува да се имплементира поддршката за ARM Morello процесорот, кој ќе го поддржува системот за контрола на пристап до меморијата CHERI базиран на безбедносниот модел на проектот Capsicum. Морело чип планираат издавање во 2021 година. Работата во моментов е фокусирана на додавање поддршка за платформата Arm Neoverse N1 што го поддржува Морело. Претставена е почетна порта на CheriBSD за архитектурата RISC-V. Развојот на CheriBSD продолжува за референтниот прототип CHERI базиран на архитектурата MIPS64.
    • Пренесувањето на FreeBSD продолжува за 64-битниот SoC NXP LS1046A базиран на процесорот ARMv8 Cortex-A72 со интегриран мотор за забрзување на мрежна обработка на пакети, 10 Gb Ethernet, PCIe 3.0, SATA 3.0 и USB 3.0. Во моментов, двигателите QorIQ и LS1046A, GPIO, QorIQ LS10xx AHCI, VF610 I2C, Epson RX-8803 RTC, QorIQ LS10xx SDHCI се подготвуваат за пренос во главниот состав на FreeBSD.
    • ena драјверот е ажуриран на верзија 2.1.1 со поддршка за втората генерација мрежни адаптери ENAv2 (Еластичен мрежен адаптер) што се користат во инфраструктурата Elastic Compute Cloud (EC2) за организирање комуникација помеѓу EC2 јазли со брзина до 25 Gb/ с. Се подготвува ажурирање на ENA 2.2.0.
    • Продолжуваат подобрувањата на портата FreeBSD за платформата powerpc64. Фокусот е на обезбедување квалитетни перформанси на системите со процесори IBM POWER8 и POWER9. Во текот на извештајниот период, FreeBSD-CURRENT беше префрлен да го користи компајлерот LLVM/Clang 10.0 и поврзувачот lld наместо GCC. Стандардно, системите powerpc64 користат ELFv2 ABI и поддршката за ELFv1 ABI е прекината. FreeBSD-STABLE сè уште има gcc 4.2.1. Проблемите со virtio, aacraid и ixl драјверите се решени. На системите powerpc64 е можно да се изврши QEMU без поддршка за огромни страници.
    • Продолжува работата за имплементација на поддршка за архитектурата RISC-V. Во сегашната форма, FreeBSD веќе успешно се подига на плочката SiFive Hifive Unleashed, за која се подготвени драјвери
      UART, SPI и PRCI, поддржува фирмвер OpenSBI и SBI 0.2. Во текот на извештајниот период, работата беше фокусирана на миграцијата од GCC кон clang и lld.

  • Апликации и пристанишен систем
    • Колекцијата на порти на FreeBSD го надмина прагот од 39 илјади порти, бројот на незатворени ПР малку надминува 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 (порта што овозможува работа на модулите amdgpu, i915 и radeon DRM, користејќи ја рамката linuxkpi за компатибилност со Менаџерот за директно прикажување на кернелот Linux) ажурирани.

    • Десктопот на KDE Plasma, KDE Frameworks, KDE апликациите и Qt се ажурирани и ажурирани до најновите изданија. Во пристаништата е додадена нова апликација kstars (ѕвезден атлас).
    • Направена е работа на елиминирање на регресивните промени во менаџерот на прозорци xfwm4 што се појавија по ажурирањето на Xfce на верзијата 4.14 (на пример, артефакти се појавија при украсување на прозорци).
    • Виното е ажурирано за да го објави Wine 5.0 (претходно се нудеше 4.0.3).
    • Почнувајќи од верзијата 1.14, компајлерот на јазикот Go додаде официјална поддршка за архитектурата ARM64 за FreeBSD 12.0.
    • OpenSSH на основниот систем е ажуриран за да објави 7.9p1.
    • Библиотеката sysctlmibinfo2 е имплементирана и сместена во порти (devel/libsysctlmibinfo2), обезбедувајќи API за пристап до sysctl MIB и преведување на имињата на sysctl во идентификатори на објекти (OID).
    • Создадено е ажурирање на дистрибуцијата NomadBSD 1.3.1, што е издание на FreeBSD прилагодено за употреба како пренослив десктоп подигнувач од USB-уред. Графичкото опкружување се заснова на менаџер на прозорци Openbox. Се користи за монтажа на погони DSBMD (поддржано е монтирање CD9660, FAT, HFS+, NTFS, Ext2/3/4), за конфигурирање на безжична мрежа - wifimgrи за контрола на јачината на звукот - DSBMixer.
    • Отворени работи за пишување комплетна документација за управителот на затворската средина тенџере. Пот 0.11.0 се подготвува за објавување, кој ќе вклучува алатки за управување со мрежниот стек.

Извор: opennet.ru

Додадете коментар