Справаздача аб развіцці FreeBSD за другі квартал 2019 года

Апублікаваны справаздачу аб развіцці праекта FreeBSD з красавіка па чэрвені 2019 года. З змен можна адзначыць:

  • Агульныя і сістэмныя пытанні
    • Core team прыняў рашэнне па заснаванні працоўнай групы для вывучэння магчымасці перакладу зыходных тэкстаў з цэнтралізаванай сістэмы кіравання зыходнымі тэкстамі Subversion у дэцэнтралізаваную сістэму Git.
    • Праведзена fuzzing-тэставанне ядра FreeBSD з выкарыстаннем сістэмы syzkaller і выпраўлены шэраг выяўленых пры гэтым памылак. Дададзена праслойка для fuzzing-тэставання бібліятэк для сумяшчальнасці з 32-разрадным асяроддзем на сістэмах з 64-разрадным ядром. Рэалізавана магчымасць запуску syzkaller у віртуальных машынах на базе bhyve. На наступным этапе плануецца пашырыць ахоп тэсціраваннем сістэмных выклікаў, задзейнічаць LLVM sanitizer для праверкі ядра, выкарыстоўваць netdump для захавання дампаў ядра падчас крахаў пры fuzzing-тэставанні і да т.п.
    • Пачалася праца па абнаўленні рэалізацыі zlib на ўзроўні ядра. Для доступу ядра да кода zlib каталог contrib/zlib пераназваны ў sys/contrib/zlib, таксама пераназваны загалоўкавыя файл crc.h для пазбягання канфлікту з zlib/crc.h. Праведзена чыстка састарэлага кода, залежнага ад zlib і inflate. Далей плануецца забяспечыць магчымасць зборкі ядра адначасова са старым і новым zlib для паступовага пераводу на новую версію функцый, якія выкарыстоўваюць сціск;
    • Абноўлена інфраструктура эмуляцыі асяроддзя Linux (Linuxulator). Пашыраная падтрымка адладкавых прылад Linux, такіх як утыліта strace. У порты дададзены пакет linux-c7-strace, які можа выкарыстоўвацца для трасіроўкі выкананых файлаў Linux замест штатных утыліт truss і ktrace, якія пакуль не могуць дэкадаваць некаторыя спецыфічныя для Linux сцягі і структуры. Акрамя таго, дададзены пакет linux-ltp з выкананымі файламі Linux Test Project і вырашаны праблемы з сумяшчальнасцю з выкананымі файламі, скампанаванымі з новымі версіямі glibc;
    • Рэалізацыя аперацый адкладзенай чысткі прывязак да фізічных старонак памяці (delayed invalidation) у механізме pmap пераведзена на выкарыстанне алгарытму апрацоўкі чаргі, які працуе без блакіровак, што дазволіла вырашыць праблемы з маштабаванасцю пры выкананні вялікай колькасці раўналежных аперацый unmap;
    • Зменены механізм блакавання vnode падчас выкананні сістэмных выклікаў сямейства execve(), што дазволіла дамагчыся падвышэнні эфектыўнасці працы пры адначасовым выкананні execve() для аднаго і таго ж файла (напрыклад, пры выкананні аперацый зборкі з распаралеліваннем запуску кампілятара);
  • бяспеку
    • У гіпервізоры bhyve працягнута ўдасканаленне падтрымкі Live-міграцыі гасцявых асяродкаў з аднаго хаста на іншы і функцыянальнасці Save/Restore, якая дазваляе замарозіць гасцёўню сістэму з захаваннем стану ў файл, а затым аднавіць выкананне.
    • Праз выкарыстанне бібліятэкі libvdsk у bhyve дададзена падтрымка дыскавых выяў у фармаце QCOW2. Для працы патрабуецца ўстаноўка
      спецыяльна мадыфікаванай версіі bhyve, якая пераведзена на выкарыстанне апрацоўшчыкаў файлавых аперацый на базе libvdsk. За справаздачны перыяд у libvdsk таксама праведзена праца па спрашчэнні інтэграцыі падтрымкі новых фарматаў, палепшана прадукцыйнасці чытання і запісы, дададзена падтрымка Copy-On-Write. З пакінутых задач адзначаецца інтэграцыя libvdsk у асноўны склад bhyve;

    • У парты дададзена сістэма збору інфармацыі аб трафіку
      Maltrail, якая дазваляе ствараць пасткі для шкоднасных сеткавых запытаў (правяраюцца IP і дамены з чорных спісаў) і адпраўляць звесткі аб выяўленай актыўнасці на цэнтралізаваны сервер для наступнага блакавання або аналізу спроб здзяйснення нападаў;

    • У порты дададзена платформаў для выяўлення нападаў, аналізу логаў і адсочванні цэласнасці файлаў Wazuh (форк Ossec з падтрымкай інтэграцыі з ELK-Stack);
  • Сеткавая падсістэма
    • Абноўлены драйвер ena з падтрымкай другога пакалення сеткавых адаптараў ENAv2 (Elastic Network Adapter), якія выкарыстоўваюцца ў інфраструктуры Elastic Compute Cloud (EC2) для арганізацыі сувязі паміж вузламі EC2 на хуткасцях да 25 Gb/s. У драйвер ena дададзена падтрымка NETMAP.
    • Ва FreeBSD HEAD прыняты новы стэк MMC/SD, заснаваны на фрэймворку CAM і які дазваляе падлучаць прылады з інтэрфейсам SDIO (Secure Digital I/O). Напрыклад, SDIO выкарыстоўваецца ва WiFi і Bluetooth модулях для шматлікіх поплаткаў, такіх як Raspberry Pi 3. Новы стэк таксама дазваляе выкарыстоўваць інтэрфейс CAM для адпраўкі SD-каманд з прыкладанняў у прасторы карыстача, што дае магчымасць ствараць драйверы прылад, якія працуюць на ўзроўні карыстача. Пачалася праца па стварэнні драйвераў для бесправадных чыпаў Broadcom, якія працуюць у рэжыме FullMAC (на баку чыпа выконваецца падабенства сваёй аперацыйнай сістэмы з рэалізацый свайго бесправаднога стэка 802.11);
    • Вядзецца праца па рэалізацыі NFSv4.2 (RFC-7862) для FreeBSD. У новай версіі NFS дададзеная падтрымка функцый posix_fadvise, posix_fallocate, рэжымаў SEEKHOLE/SEEKDATA у lseek, аперацыі лакальнага капіявання частак файла на серверы (без перадачы кліенту).

      У наш час для FreeBSD ужо рэалізаваная базавая падтрымка аперацый LayoutError, IOAdvise, Allocate і Copy. Застаецца рэалізаваць аперацыю Seek, неабходную для выкарыстання lseek(SEEKHOLE/SEEKDATA) з NFS. Падтрымку NFSv4.2 плануецца ўключыць у FreeBSD 13;

  • Сістэмы захоўвання і файлавыя сістэмы
    • Набліжаецца да завяршэння праект па перапрацоўцы драйвера падсістэмы FUSE (File system in USErspace), якая дазваляе ствараць рэалізацыі файлавых сістэм у прасторы карыстача. Першапачаткова які пастаўляецца драйвер састарэлы і ўтрымоўвае шмат памылак. У рамках праекта па мадэрнізацыі драйвера рэалізавана падтрымка пратакола FUSE 7.23 (раней падтрымлівалася версія 7.8, выпушчаная 11 гадоў таму), дададзены код для праверкі правоў доступу на баку ядра ("-o default_permissions"), дабаўлены выклікі VOP_MKNOD, VOP_BMAP і VOP перапынення аперацый FUSE, дададзеная падтрымка неназваных каналаў і unix-сокетаў у fusefs, з'явілася магчымасць выкарыстання kqueue для /dev/fuse, дазволена абнаўленне параметраў мантавання праз «mount -u», дададзеная падтрымка экспарту fusefs праз NFS, рэалізаваны ўлік RLIMIT_FSIZE і FUSE_ASYNC_READ, унесены значныя аптымізацыі прадукцыйнасці і палепшана арганізацыя кэшавання;
    • У код выцяснення старонак памяці ў раздзел падпампоўкі (swap pager) дададзена падтрымка аперацыі BIO_DELETE, якая дазваляе выкарыстоўваць каманду TRIM падчас выдаленні блокаў з SSD-назапашвальнікаў для падвышэння тэрміна іх службы.
  • Падтрымка абсталявання
    • Прадоўжана работа па рэалізацыі падтрымкі ARM64 SoC Broadcom BCM5871X з працэсарамі ARMv8 Cortex-A57, накіраванымі на выкарыстанне ў маршрутызатарах, шлюзах і сеткавых сховішчах. За справаздачны перыяд палепшаная падтрымка ўнутраных і вонкавых шын iProc PCIe, дададзеная падтрымка BNXT Ethernet, вядзецца праца па задзейнічанні ўбудаванага крыптадзвіжка для паскарэння IPsec. Інтэграцыя кода ў галінку HEAD чакаецца ў другім паўгоддзі;
    • Пачалася праца над падтрымкай 64-разраднага SoC NXP LS1046A на базе працэсара ARMv8 Cortex-A72 з інтэграваным рухавіком паскарэння апрацоўкі сеткавых пакетаў, 10 Gb Ethernet, PCIe 3.0, SATA 3.0 і USB 3.0. Ужо рэалізавана падтрымка базавай платформы (multi-user SMP) і SATA 3.0. У распрацоўцы падтрымка USB 3.0, SD/MMC і I2C. У планах падтрымка Ethernet, GPIO і QSPI. Завяршэнне працы і ўключэнне ў галінку HEAD чакаецца ў 4 квартале 2019 гады.
    • Абноўлены драйверы mlx5en і mlx5ib для Ethernet-і InfiniBand-адаптараў Mellanox ConnectX-4 [Lx], ConnectX-5 [Ex] і ConnectX-6 [Dx]. Дададзена падтрымка адаптараў Mellanox Socket Direct (ConnectX-6), якія дазваляюць дамагчыся прапускной здольнасці да 200Gb/s на шыне PCIe Gen 3.0. Для шмат'ядравых чыпаў "BlueField" дададзеная падтрымка драйвера RShim. У порты дададзены пакет mstflint з наборам дыягнастычных утыліт для адаптараў Mellanox;
  • Прыкладанні і сістэма партоў
    • Абноўлены кампаненты графічнага стэка. Выканана портировные драйвера drm.ko (Direct Rendering Manager) з ядра Linux 5.0. Дадзены драйвер разглядаецца як эксперыментальны і дададзены ў дрэва партоў як graphics/drm-devel-kmod. Бо драйвер выкарыстае абноўлены фрэймворк Linux KPI для сумяшчальнасці з DRM API ядра Linux, для працы патрабуецца FreeBSD CURRENT. З Linux таксама партаваны drm-драйвер vboxvideo.ko для віртуальнага GPU VirtualBox. Пакет Mesa абноўлены да выпуску 18.3.2 і пераведзены на выкарыстанне LLVM з порта devel/llvm80 замест devel/llvm60.
    • Дрэва партоў FreeBSD пераадолела мяжу ў 37000 партоў, колькасць незачыненых PR трымаецца на адзнацы ў 2146. За справаздачны перыяд унесена 7837 змен ад 172 распрацоўшчыкаў. Правы комітара атрымалі тры новыя ўдзельнікі. Сярод значных абнаўленняў версій у портах адзначаюцца: MySQL 5.7, Python 3.6, Ruby 2.5, Samba 4.8, Julia 1.0, Firefox 68.0, Chromium 75.0.3770.100. Усе порты на мове Go перакладзены на выкарыстанне сцяга «USES=go». Дададзены сцяг USES=cabal для пакетнага мэнэджара Cabal, выкарыстоўванага для кода на Haskell. Уключаны строгі рэжым абароны стэка. Па змаўчанні прапанавана версія Python 3.6 замест 2.7.
    • Падрыхтаваны рэліз утыліты nsysctl 1.0, якая прапануе аналаг /sbin/sysctl, які выкарыстоўвае libxo для вываду і які прадстаўляе пашыраны набор опцый. Nsysctl можа прымяняцца для нагляднага назірання за станам значэнняў sysctl і прадстаўлення інфармацыі па аб'ектах у структураваным выглядзе. Магчымы вывад у фарматах XML, JSON і HTML;

Крыніца: opennet.ru

Дадаць каментар