Отчёт о состоянии работ FreeBSD за первый квартал 2026
Здесь представлен первый отчёт о состоянии дел за 2026 год, содержащий 45 записей.
Это первый отчёт о состоянии с тех пор, как мы изменили график и начали его соблюдать. Как вы можете видеть, мы действительно идём по графику! Отчёт публикуется в течение одного месяца после окончания квартала, как и ожидалось.
Он содержит очень большое количество записей (для справки: в 2025Q4 их было 28), несмотря на то, что мы ждали гораздо меньше времени.
Приятного чтения!
Лоренцо Сальвадоре (Lorenzo Salvadore), от имени команды по подготовке отчетов (Status Team)
- Отчёты команд FreeBSD
- Проекты
- Проект готовности к Закону о киберустойчивости (CRA)
- Более надёжное преобразование pkgbase
- Проект генеральной уборки Alpha-Omega (Alpha-Omega Beach Cleaning)
- Перечень компонентов программного обеспечения FreeBSD (FreeBSD Software Bill of Materials - SBOM)
- Проект тестирования и интеграции ноутбуков
- Десктопный скрипт для BSDInstall
- Графический интерфейс управления bhyve, написанный на Freepascal/Lazarus
- Полный контроль CPUID для bhyve
- Sylve — Унифицированная платформа управления системой для FreeBSD
- AppJail, AppScripts и песочница для X11-приложений
- daemonless: Нативные OCI-контейнеры для FreeBSD
- Бенчмарк ядра, MAINTAINERS и pkgdist
- Улучшение LLDB во FreeBSD
- Пользовательские программы
- Ядро
- Драйвер ACPI для ноутбуков System76
- Улучшение функций системы приостановки/возобновления работы (Suspend/Resume)
- Гибернация (приостановка с сохранением состояния на диск)
- Совместное управление производительностью процессоров (CPPC)
- Улучшения звукового стека (Audio Stack Improvements)
- Обновление LinuxKPI 802.11 и нативного беспроводного стека (Native Wireless)
- Удаление поддержки RFC 2675
- Туннели GENEVE
- Архитектуры
- Облачная архитектура
- Документация
- Порты
- KDE во FreeBSD
- GCC в FreeBSD
- Valgrind: стабилизация, исправления и дополнения для FreeBSD 16
- Улучшение OpenJDK в FreeBSD (Improve OpenJDK on FreeBSD)
- Порты — сделать openjdk21 версией JAVA_VERSION по умолчанию
- Порты — сделать openjdk25 версией JAVA_VERSION по умолчанию
- Wazuh на FreeBSD
- Инициатива по модернизации HPC во FreeBSD: расширение экосистемы и интеграция с вышестоящими проектами
- Улучшение поддержки libvirt для гипервизора bhyve
Отчёты команд FreeBSD
Отчёты различных официальных и полуофициальных команд, представленные на Странице администрации.
Фонд FreeBSD
Ссылки:
Фонд FreeBSD URL:
https://freebsdfoundation.org/
Технологическая
дорожная карта URL: https://freebsdfoundation.org/blog/technology-roadmap/
Пожертвовать
URL: https://freebsdfoundation.org/donate/
Программа партнёрства Фонда URL: https://freebsdfoundation.org/our-donors/freebsd-foundation-partnership-program/
Журнал FreeBSD
URL: https://freebsdfoundation.org/journal/
Мероприятия
Фонда URL: https://freebsdfoundation.org/our-work/events/
Контакт: Deb Goodkin <deb@FreeBSDFoundation.org>
Фонд FreeBSD — некоммерческая организация 501(c)(3), занимающаяся развитием FreeBSD как через техническую, так и через нетехническую поддержку. Финансируемый исключительно за счёт пожертвований, Фонд поддерживает разработку программного обеспечения, инфраструктуру, безопасность и совместную работу; организует мероприятия и саммиты разработчиков; предоставляет образовательные ресурсы; и представляет проект FreeBSD в юридических вопросах.
Улучшения операционной системы
В первом квартале 2026 года было совершено 555 коммитов в
src, 83 в ports и 16 в doc,
спонсируемых Фондом FreeBSD.
Обратитесь к следующим записям этого отчёта, описывающим бОльшую часть этой спонсируемой разработки:
Другие основные моменты:
-
Фонд поддерживает два проекта: проект «Поддержка ноутбуков и удобство использования» (в сотрудничестве с Quantum Leap Research) и проект готовности к Закону о киберустойчивости (CRA).
-
Для ознакомления с предысторией проекта «Поддержка ноутбуков и удобство использования» обратитесь к ежеквартальному отчёту о состоянии за 2025Q1.
-
FreeBSD был принят для участия в Google Summer of Code (GSoC) 2026. Потенциальные участники подали свои заявки в Google, и мы узнаем, сколько проектов FreeBSD будут профинансированы, 30 апреля.
Продвижение (Advocacy)
В первом квартале 2026 года наша работа по продвижению была сосредоточена на расширении нашего образовательного видеоконтента, достижении большего количества зрителей, чем когда-либо, объединении сообщества для продуктивного саммита вендоров и осмыслении работы, которая помогает поддерживать и развивать интерес к FreeBSD. Вот лишь некоторые способы, которыми Фонд продвигал FreeBSD в первом квартале 2026 года:
-
Помогал представлять FreeBSD на FOSDEM 2026, SCALE 23X, AsiaBSDCon и CHERI Blossoms Conference
-
Начал планирование Саммита разработчиков FreeBSD в июне 2026 года, который состоится 17-18 июня 2026 года совместно с BSDCan 2026; Регистрация открыта
-
Оформил наше серебряное спонсорство BSDCan и открыл Приём заявок на Travel Grant для BSDCan 2026
-
Оформил спонсорство на уровне Silver для AsiaBSDCon26, которое состоялось 19-22 марта 2026 года в Тайбэе, Тайвань.
-
Деб Гудкин (Deb Goodkin), исполнительный директор Фонда FreeBSD, выступит с речью на Open Source Summit North America, организованном Фондом Linux, 19 мая 2026 года
-
Опубликовал следующие блоги и видео, чтобы информировать и обучать сообщество:
-
Опубликовал январский, февральский и мартовский выпуски новостной рассылки Фонда FreeBSD за 2026 год
-
Выпустил выпуск журнала FreeBSD за октябрь/ноябрь/декабрь с HTML-версиями статей
Непрерывная интеграция и улучшение рабочих процессов
Фонд предоставляет штатного сотрудника, занимающегося улучшением системы непрерывной интеграции проекта и тестовой инфраструктуры.
Юридические вопросы / интеллектуальная собственность FreeBSD
Фонду принадлежат товарные знаки FreeBSD, и наша обязанность — защищать их. Мы также предоставляем юридическую поддержку основной команде (core team) для расследования возникающих вопросов.
Посетите https://freebsdfoundation.org, чтобы узнать больше о том, как мы поддерживаем FreeBSD и чем мы можем помочь вам!
Команда инженерии релизов FreeBSD
Ссылки:
Объявление о
FreeBSD 14.4-RELEASE URL: https://www.freebsd.org/releases/14.4R/announce/
Расписание
FreeBSD 15.1-RELEASE URL: https://www.freebsd.org/releases/15.1R/schedule/
Релизы
FreeBSD URL: https://download.freebsd.org/releases/ISO-IMAGES/
Разработочные
снимки FreeBSD URL: https://download.freebsd.org/snapshots/ISO-IMAGES/
Контакт: Команда подготовки релизов FreeBSD <re@FreeBSD.org>
Команда подготовки релизов FreeBSD отвечает за установление и публикацию графиков релизов официальных выпусков FreeBSD, объявление заморозок кода и поддержание соответствующих веток, среди прочего.
Команда выполняла работы по выпуску 14.4-RELEASE, что привело к официальной сборке RELEASE и объявлению в марте. Началось планирование предстоящего 15.1-RELEASE, который должен выйти в июне.
В команду вошли четыре новых участника: Серхио Карлавилья Дельгадо (Sergio Carlavilla Delgado), Крейг Лерес (Craig Leres), Владлен Пополитов и Александр Зияи (Alexander Ziaee), а двое участников покинули команду: Джейк Фриленд (Jake Freeland) и Махди Мохтари (Mahdi Mokhtari). Мы благодарим их за их вклад.
Команда подготовки релизов продолжила предоставлять еженедельные промежуточные сборки для веток main, stable/15, stable/14 и stable/13. Обратите внимание, что еженедельные промежуточные сборки для stable/13 прекратятся, когда эта ветка достигнет конца своего жизненного цикла в конце апреля.
Коллекция портов
Ссылки:
О портах FreeBSD
URL:https://www.FreeBSD.org/ports/
Вклад в порты URL: https://docs.freebsd.org/en/articles/contributing/#ports-contributing
Команда управления
портами URL: https://www.freebsd.org/portmgr/
Tar-архив
портов URL: http://ftp.freebsd.org/pub/FreeBSD/ports/ports/
Контакт: Команда управления портами FreeBSD <portmgr@FreeBSD.org>
Команда управления портами отвечает за общее направление развития дерева портов, сборку пакетов и кадровые вопросы. Ниже описано, что произошло в последнем квартале.
В течение последнего квартала мы приветствовали Юсуфа Ямана (Yusuf Yaman, nxjoseph), Косукэ Каннаги (Kousuke Kannagi, mce), Петра Смырака (Piotr Smyrak, smyru), Лорана Шардона (Laurent Chardon, laurent) и Кеннета Рэпли (Kenneth Raplee, kenrap) в качестве новых коммиттеров портов и попрощались с одним коммиттером.
Согласно INDEX, в настоящее время в Коллекции портов насчитывается 37 958 портов (выросло с 37 163). В настоящее время открыто около 2 710 PR по портам (снизилось с 3 428), из которых 798 (снизилось с 821) не назначены. За последний квартал было совершено 8 970 коммитов (выросло с 8 738) от 166 коммиттеров (выросло с 156) в основной ветке и 697 коммитов (снизилось с 898) от 59 коммиттеров (снизилось с 61) в ветке 2026Q1.
Наиболее активные коммиттеры в основной ветке: 2135 sunpoet@FreeBSD.org 800 yuri@FreeBSD.org 528 vvd@FreeBSD.org 312 bofh@FreeBSD.org 294 tagattie@FreeBSD.org 182 nivit@FreeBSD.org 177 arrowd@FreeBSD.org 175 eduardo@FreeBSD.org 153 fuz@FreeBSD.org 132 mfechner@FreeBSD.org
За последние три месяца в дереве портов произошло много событий, вот выдержка из основных обновлений программного обеспечения:
-
pkg 2.6.2
-
Новый USES: inotify
-
Версия Go по умолчанию переключена на 1.25
-
Версия Java по умолчанию переключена на 21 (и 11 на armv*)
-
Версия Lazarus по умолчанию переключена на 4.6 (и 4.99 на aarch64 и powerpc*)
-
Версия MySQL по умолчанию переключена на 8.4
-
Версия PostgreSQL по умолчанию переключена на 18
-
Chromium 146.0.7680.177
-
Electron 40.8.3 добавлен
-
Firefox 149.0
-
Firefox-esr 140.9.0
-
KDE Plasma 6.6.3
-
KDE Frameworks 6.24.0
-
KDE Applications 25.12.3
-
Qt6 6.10.2
-
Ruby 3.2.10, 3.4.8, 4.0.1
-
Rust 1.94.0
-
SDL 3.2.30
-
wlroots 0.20.0 добавлен
-
Wine 11.0
В течение последнего квартала pkgmgr@ провёл 29 экспериментальных сборок (exp-run) для тестирования различных изменений в базовой системе и обновлений портов.
Команда администраторов кластера
Ссылки:
Члены
команды Cluster Administration URL: https://www.freebsd.org/administration/#t-clusteradm
Контакт: Команда администраторов кластера <clusteradm@FreeBSD.org> Контакт: Philip Paeps <philip@FreeBSD.org>
Члены команды администраторов кластера FreeBSD отвечают за управление машинами, на которых проект FreeBSD обеспечивает синхронизацию своей распределённой работы и коммуникаций.
В этом квартале команда работала над следующим:
-
Обычная поддержка учётных записей пользователей FreeBSD.org.
-
Обычная поддержка дисков и компонентов (и их замена) для всех физических хостов и зеркал.
-
Обновление программного обеспечения кластера.
-
Координация работы сообщества зеркал.
Обновление кластера
Ветка stable/13 перестанет поддерживаться командой security-officer@ FreeBSD в конце апреля 2026 года. Несколько критически важных компонентов инфраструктуры проекта FreeBSD были обновлены с FreeBSD stable/13 до FreeBSD stable/14 и FreeBSD stable/15. Эта работа продолжается в конце месяца.
Команда clusteradm обновляет производственные сборщики пакетов (около 35 физических машин) с периодичностью примерно раз в шесть-восемь недель. На этих машинах работают снимки текущей версии FreeBSD (current).
Другие машины обновляются по мере необходимости, получая исправления безопасности в зависимости от того, насколько они открыты для внешнего доступа.
На момент написания этого отчёта в кластере насчитывается 146 физических машин. У нас 42 машины на current, 17 на stable/15 и 80 на stable/14.
Большинство оставшихся jail на stable/13 будут обновлены до stable/15.
12.x: Обычные 0, Jails 7
13.x: Обычные 7, Jails 33
14.x: Обычные 80, Jails 263
15.x: Обычные 17, Jails 4
>16.x: Обычные 42, Jails 6
Всего: Обычные 146, Jails 313
Всего установок: 459
Работает на -RELEASE|{-p*}: 0
Всего географических точек: 13Официальные зеркала FreeBSD
Текущие расположения: Австралия, Бразилия, Япония (два полных сайта-зеркала), Малайзия, Южная Африка, Швеция, Тайвань и Соединённые Штаты Америки — Калифорния, Чикаго, Нью-Джерси и Вашингтон.
Наш сайт-зеркало на Тайване испытывает длительный перерыв в работе.
Одно из наших зеркал в Японии получит полное обновление оборудования во 2-м квартале 2026 года.
Оборудование и сетевое соединение были щедро предоставлены:
-
Cloud and SDN Laboratory компании BroadBand Tower, Inc
-
Департамент компьютерных наук Национального университета Ян Мин Чяо Тун
Новые официальные зеркала всегда приветствуются. Мы отметили преимущества размещения отдельных зеркал в точках обмена интернет-трафиком (Internet Exchange Points) по всему миру, о чём свидетельствуют наши существующие зеркала в Австралии, Бразилии и Южной Африке. Если вы связаны с какими-либо организациями, готовыми предоставить сервер для отдельного зеркала, или знаете о таких организациях, пожалуйста, свяжитесь с нами. Мы особенно заинтересованы в локациях в Европе.
Смотрите общую схему размещения зеркал для получения полных спецификаций сайта-зеркала и маленькое зеркало для отдельного сайта-зеркала.
Фонд FreeBSD не финансирует работу над кластером FreeBSD.org.
Спонсоры: Несколько анонимных частных лиц и компаний Спонсор: https://github.com/sponsors/ppaeps
Команда Bugmeister
Ссылки:
FreeBSD Bugzilla URL: bugs.freebsd.org/
Контакт: Bugmeister <bugmeister@FreeBSD.org>
Команда Bugmeister отвечает за то, чтобы программное обеспечение для работы с отчётами о проблемах (Problem Report) функционировало корректно, записи были правильно классифицированы и не содержало недействительных записей.
Мы завершаем квартал с 9548 открытыми PR, что немного выше по каждой категории по сравнению с этим временем в прошлом году. БОльшую часть времени в этом квартале мы потратили на приветствие новых контрибьюторов перед предоставлением им учётной записи. Мы считаем, что это идёт очень хорошо и привело к повышению активности и качества заявок, но мы полагаем, что в команде могло бы быть ещё несколько человек.
Мы приветствовали нового члена команды Triage, Саймона Воллваге (Simon Wollwage), который с любовью просматривал базу данных, обновлял патчи и был добр к контрибьюторам. Благодаря его усилиям множество отчётов было закрыто или их основные проблемы были исправлены, и мы благодарим его.
Мы завершили обновление документации, в которой теперь требуется, чтобы предлагаемые изменения отправлялись в виде патчей в формате git. Это сэкономит время, повысит безопасность и позволит правильно передавать метаданные автора. Если мы где-то что-то упустили, пожалуйста, сообщите нам.
Проекты
Проекты, охватывающие несколько категорий — от ядра и пользовательских инструментов до Коллекции портов или внешних проектов.
Проект готовности к Закону о киберустойчивости (CRA)
Ссылки:
Готовность к Закону о киберустойчивости URL: https://github.com/FreeBSDFoundation/all-projects/tree/main/Cyber%20Resilience%20Act%20Readiness
Фонд реализует проект в течение 2026 года для активной подготовки Фонда FreeBSD, Проекта и сообщества к Закону о киберустойчивости (Cyber Resilience Act) ЕС. Выделено шесть основных направлений: Безопасность и обработка уязвимостей, Инструментарий SBOM, Публичная документация, Взаимодействие с законодателями в сообществе, Публичный репозиторий проекта и Коммуникации.
За февраль и март проект перешёл от планирования к активной реализации. Теперь проводятся внутренние еженедельные координационные встречи, и привлечённый Фондом руководитель по безопасности Пьер Проншери (Pierre Pronchery) присоединился к команде безопасности FreeBSD, чтобы более тесно согласовать работу проекта с существующими процессами безопасности Проекта FreeBSD.
Что касается взаимодействия с регулирующими органами, Фонд совместно подписал письмо Open Source Initiative Европейской комиссии в поддержку добровольной аттестации безопасности, внёс вклад в отзыв Eclipse Foundation о проекте рекомендаций CRA, а также посетил FOSDEM и FOSS Backstage для сотрудничества с другими сообществами открытого исходного кода, осваивающими CRA.
Техническая работа над инструментарием SBOM успешно продвигается, и ранняя автоматическая генерация SBOM сейчас находится на стадии тестирования. Создан публичный репозиторий проекта для прозрачного отслеживания прогресса, опубликован FAQ для сообщества, а для вопросов доступен специальный адрес для связи. Также началась работа с производителями нижнего звена.
Более надёжное преобразование pkgbase
Ссылки:
pkgbasify URL:
https://github.com/FreeBSDFoundation/pkgbasify
Контакт: Isaac Freund <ifreund@freebsdfoundation.org>
Скрипт pkgbasify используется для преобразования систем FreeBSD, не использующих pkgbase, в системы, использующие pkgbase.
В прошлом квартале я внёс несколько улучшений
в вышестоящий пакет pkg, что позволило pkgbasify стать как проще,
так и надёжнее. В то же время зависимость pkgbasify от базы данных
etcupdate в /var/db/etcupdate/current теперь может
быть устранена, что делает pkgbasify гораздо более гибким.
Эти улучшения станут доступны конечным пользователям после выпуска pkg 2.7.
Спонсор: Фонд FreeBSD
Проект генеральной уборки Alpha-Omega (Alpha-Omega Beach Cleaning)
Ссылки:
Alpha-Omega — Проект Linux
Foundation URL: https://alpha-omega.dev
Alpha-Omega на
GitHub URL: https://github.com/ossf/alpha-omega
Фонд FreeBSD URL:
https://freebsdfoundation.org
Репозиторий
проекта от Фонда FreeBSD URL: https://github.com/FreeBSDFoundation/alpha-omega-beach-cleaning
Контакт: Pierre Pronchery <pierre@freebsdfoundation.org>
Миссия Alpha-Omega — стимулировать устойчивые улучшения безопасности критически важных проектов с открытым исходным кодом и экосистем. После успешного проекта с Фондом FreeBSD в 2024 году (аудит гипервизора bhyve и фреймворка изоляции Capsicum) Alpha-Omega снова выбрала FreeBSD — на этот раз для проекта Alpha Omega Beach Cleaning. Этот новый грант направлен на общее повышение безопасности и сопровождаемости стороннего программного обеспечения в базовой системе FreeBSD. Фонд FreeBSD получил грант, а также управлял и выполнял проект. Официально проект завершён 30 марта 2026 года.
После предыдущего отчёта за 2025Q4 были определены две основные цели:
-
Импорт pkgconf в базовую систему (см. черновик PR #1994 на GitHub)
-
Импорт pkg в базовую систему (см. ветку khorben/pkg-2.6.2 на GitHub)
Обе цели близки к завершению, и они были публично представлены на AsiaBSDCon 2026 на Тайване, как в ходе Саммита разработчиков FreeBSD, так и на сессии Work-in-Progress конференции.
Ежемесячные отчёты направлялись в alpha-omega и доступны, как и прежде, на GitHub: за 2025 год и за 2026 год.
Спонсоры: Alpha-Omega, Фонд FreeBSD
Перечень компонентов программного обеспечения FreeBSD (FreeBSD Software Bill of Materials - SBOM)
Ссылки:
spdxtool:
Добавление параметра для использования URI в качестве
идентификатора SPDX URL: https://github.com/pkgconf/pkgconf/pull/484
spdxtool:
Добавление параметра командной строки для изменения идентификатора
SPDX URL: https://github.com/pkgconf/pkgconf/pull/483
spdxtool:
Добавление обработки домашней страницы URL: https://github.com/pkgconf/pkgconf/pull/475
spdxtool:
Добавление обработки исходного кода в SBOM URL: https://github.com/pkgconf/pkgconf/pull/474
spdxtool:
Добавление поддержки текста авторских прав URL: https://github.com/pkgconf/pkgconf/pull/473
spdxtool:
Переработка вычисления выражений License-tag SDPX URL: https://github.com/pkgconf/pkgconf/pull/461
Добавление
более строгих предупреждений компилятора и устранение новых
предупреждений URL: https://github.com/pkgconf/pkgconf/pull/450
libpkgconf/libpkgconf.h:
Добавление атрибутов, подобных printf, к функциям URL: https://github.com/pkgconf/pkgconf/pull/447
spdxtool:
Обновление переменных, которые являются const, до const URL:
https://github.com/pkgconf/pkgconf/pull/446
man/spdxtool.1:
Добавление справочной страницы для spdxtool URL: https://github.com/pkgconf/pkgconf/pull/445
Добавлены
идентификаторы SPDX-License-Identifier URL: https://cgit.freebsd.org/src/log/?qt=author&q=Tuukka+Pasanen
Идентификаторы SPDX-License-Identifier на рассмотрении и ожидают
передачи в вышестоящий репозиторий URL: https://github.com/freebsd/freebsd-src/compare/main…illuusio:freebsd-src:update-spdx-licenses
Открытая проблема для
комментариев и рецензирования: caesar: Добавление тегов
SPDX-License-Identifier URL: https://reviews.freebsd.org/D55461
Файл .pc для метаданных SBOM (разработка) URL: https://github.com/illuusio/freebsd-src/tree/sbom-pkgconfig/release/sbom
Контакт: Tuukka Pasanen <tuukka.pasanen@ilmi.fi>
Проект «Спецификация программных компонентов FreeBSD (SBOM)» начался в 2025 году и продолжился в 2026 году. Работа в 2026 году была больше сосредоточена на Законе о киберустойчивости (CRA) ЕС, и усилия сместились в сторону предоставления фреймворка для исходного кода FreeBSD.
В первом квартале 2026 года работа по SBOM была выполнена в трёх категориях:
-
Работа над вышестоящим pkgconf, особенно с инструментом spdxtool, который используется для создания SBOM в формате SPDX Lite 3.0.1 JSON-LD из файлов .pc.
Несколько недостающих функций были добавлены и находятся в активной разработке участниками pkgconf.
Теперь инструмент почти совместим с требованиями SPDX Lite 3.0.1 и готов к общему использованию.
Кроме того, предпринимаются усилия по импорту pkgconf в состав исходного кода FreeBSD под руководством Пьера Проншери (Pierre Pronchery). -
Добавление недостающих идентификаторов SPDX-License-Identifier в файлы в каталогах bin, sbin, usr.bin и usr.sbin исходного кода FreeBSD.
-
Создание файлов .pc для SBOM. Ожидается, что первый патч попадёт во 2-м квартале 2026 года, начиная с файлов из bin.
Если вы хотите помочь в этих усилиях:
-
Проверьте правильность лицензий SPDX-License-Identifier и помогите с их передачей в вышестоящий репозиторий.
-
Проверьте, что файлы .pc содержат точную информацию, и помогите передать их в git.
-
Помогите в рецензировании импорта pkgconf в исходный код FreeBSD.
Спонсор: Фонд FreeBSD
Проект тестирования и интеграции ноутбуков
Ссылки:
URL
проекта URL: https://freebsdfoundation.github.io/freebsd-laptop-testing/
Репозиторий
на GitHub URL: https://github.com/FreeBSDFoundation/freebsd-laptop-testing
Контакт: Shreeney Ajmeri <shreeney@freebsdfoundation.org>
Цель этого проекта — создать рабочий процесс для сообщества, позволяющий пользователям FreeBSD легко тестировать свои ноутбуки, помещая все протестированные ноутбуки в таблицу вместе с системой ранжирования для автоматического определения того, какие ноутбуки в настоящее время лучше всего подходят для работы FreeBSD.
В рамках проекта Фонда FreeBSD «Поддержка ноутбуков и удобство использования» этот рабочий процесс будет очень полезен для потенциальных пользователей FreeBSD, которые хотят протестировать свои ноутбуки, чтобы узнать, насколько хорошо они поддерживаются. Он также помогает покупателям, которые хотят приобрести ноутбук, заведомо хорошо поддерживаемый FreeBSD.
Основная цель — объединить всю информацию о совместимости FreeBSD с ноутбуками в одну центральную базу знаний, на которую сможет ссылаться сообщество.
В течение этого квартала были выполнены следующие пункты:
-
Создано приложение на Python, которое основывается на утилите
hw-probeи собирает и агрегирует релевантное подмножество данных для просмотра как разработчиками ноутбуков, так и конечными пользователями. -
Разработана система статической генерации сайта для преобразования файлов, созданных Python-приложением, во фрагменты HTML для использования на веб-сайте.
-
Настроен рабочий процесс GitHub Actions для автоматического запуска парсера и генерации веб-сайта при новом слиянии или действиях git со стороны пользователя.
-
Определено подмножество релевантной информации, создаваемой
hw-probe, для использования в рабочем процессе тестирования ноутбуков FreeBSD. -
Создан шаблон pull request для пользователей, описывающий важные особенности ноутбука, которые работают или не работают.
-
Разработана система оценки для использования в приложении, чтобы автоматически оценивать ноутбуки на основе того, сколько устройств на ноутбуке функционирует. Добавлен рабочий процесс, упрощающий для сопровождающих ручную настройку критериев и оценок.
-
Созданы Makefile и shell-скрипты для помощи пользователям в запуске тестов с помощью простой команды
makeв терминале, включая удобные подсказки, если требуемые приложения не установлены. -
Протестированы все ноутбуки и настольные компьютеры в офисе в Китченере с помощью набора тестов из репозитория, чтобы убедиться в его правильной работе как на ноутбуках, так и на настольных системах.
Кроме того, в течение этого квартала проводилось обширное тестирование:
-
Протестированы Framework Laptop 13 (серия AMD 7040) и Lenovo Yoga 11e (Kaby Lake) в соответствии с Руководством по интеграционному тестированию ноутбуков FreeBSD на FreeBSD 16-CURRENT.
-
Проводилась работа по тестированию поддержки
drm-kmodна Framework Desktop (Ryzen AI MAX), а также поддержки s2idle (приостановка-до-бездействия) на Framework Laptop. -
Создана документация в Руководстве FreeBSD по Wayland, включая правильную настройку оконных менеджеров Niri, Labwc, Hyprland и RiverWM. Протестирована и отлажена поддержка Wayland на зафиксированных тестовых целях, а также сообщено об ошибках соответствующим разработчикам.
-
Интегрирован менеджер входа в систему Ly в предстоящий установщик KDE для FreeBSD 15.1, позволяя пользователям выбирать между SDDM и Ly.
-
Оценена жизнеспособность проброса GPU на системе Dell OptiPlex 7010 с использованием GPU NVIDIA.
Другие заметки:
-
Начата работа по тестированию проброса GPU на других машинах; они ещё не прибыли в офис в Китченере.
-
Продолжается итерационная работа над репозиторием
freebsd-laptop-testingс учётом отзывов пользователей после его запуска. -
Ведётся работа по переносу проекта тестирования ноутбуков в домен
freebsd.org.
Спонсор: Фонд FreeBSD
Десктопный скрипт для BSDInstall
Ссылки:
Задача
проекта «Поддержка ноутбуков и удобство использования» URL:
https://github.com/FreeBSDFoundation/proj-laptop/issues/25
Репозиторий
проекта URL: https://gitlab.com/alfix/kde-installer-dialogs
Контакт: Alfonso Sabato Siciliano <asiciliano@FreeBSD.org>
В прошлом я разработал несколько shell-скриптов с графическими интерфейсами для установки и настройки полноценного окружения рабочего стола на своём ноутбуке. Эти интерфейсы позволяли пользователям выбирать предпочитаемые ими опции. Один из скриптов, в частности, включал драйверы GPU, окружения рабочего стола и инструменты как для ноутбуков, так и для настольных систем. Эти проекты всё ещё доступны в публичных онлайн-репозиториях, но теперь они, вероятно, устарели, поскольку не использовались и не сопровождались в течение нескольких лет.
Недавно Фонд FreeBSD запустил проект «Поддержка ноутбуков и удобство использования» (Laptop Support and Usability Project). Одной из краткосрочных целей этого проекта является предоставление простой возможности в bsdinstall(8) (установщике системы FreeBSD) для установки и настройки графического окружения. Установщик должен спрашивать пользователей, хотят ли они установить окружение рабочего стола, и если да — автоматически устанавливать и настраивать всё необходимое с минимальным или нулевым вмешательством пользователя. После перезагрузки пользователям должен быть представлен графический экран входа в систему KDE Plasma.
Для реализации этой возможности я повторно использовал один из своих предыдущих скриптов в качестве подтверждения концепции. Он был обновлён, упрощён и переименован в desktop. Скрипт устанавливает и настраивает драйверы GPU, Xorg, KDE Plasma и SDDM. Основываясь на полученных отзывах, я внёс несколько улучшений по сравнению с оригинальной версией:
-
Автоматическое определение GPU с предлагаемым видеодрайвером, поскольку во время тестирования некоторые пользователи выбирали неправильный GPU. Это особенно важно, так как скрипт ориентирован на менее опытных пользователей.
-
Добавление сообщений на основе dialog для предоставления информации, документации и отчётов об ошибках.
-
Дополнительные возможности и меню, позволяющие пользователям выбирать определённые конфигурации.
В будущем, в зависимости от интереса пользователей и отзывов, поддержка может быть расширена на другие окружения рабочего стола и инструменты.
Одной из главных проблем было большое разнообразие поддерживаемых GPU. По этой причине я объявил о призыве к тестированию, вовлекая сообщество через скрипт, который нужно было выполнить на уже установленной системе. Отзывы и предложения были очень положительными и ценными. Вклад по-прежнему приветствуется, особенно для:
-
NVIDIA Optimus с новыми GPU.
-
Систем с архитектурами, отличными от amd64.
Версия скрипта позже была адаптирована для интеграции в bsdinstall и в установочный ISO-образ. После успешного тестирования как на CURRENT, так и на STABLE была отправлена рецензия на добавление скрипта desktop в bsdinstall: D56167.
Спонсор: Фонд FreeBSD
Графический интерфейс управления bhyve, написанный на Freepascal/Lazarus
Ссылки:
Bhyvemgr URL:
https://github.com/alonsobsd/bhyvemgr/
Контакт: José Alonso Cárdenas Márquez <acm@FreeBSD.org>
Bhyvemgr — это графический интерфейс управления bhyve, написанный на Freepascal/Lazarus во FreeBSD. Для работы ему требуется набор инструментов, в основном установленных в базовой системе, а некоторые устанавливаются из портов/пакетов. Основная цель — создать настольное приложение, ориентированное на пользователей рабочих станций, позволяющее легко и быстро настраивать и запускать виртуальные машины на хостах FreeBSD.
В течение этого квартала в Bhyvemgr было сделано множество исправлений ошибок и улучшений.
Вот некоторые основные добавленные улучшения:
-
Добавлена поддержка PF/NAT
-
Добавлен параметр -n для команд sudo/doas. В случае отсутствия прав на запуск некоторых приложений ошибка будет сохранена в файл журнала
-
Добавлены некоторые инструкции в wiki bhyvemgr
-
Изменён параметр RDP: /log-level:off на /log-level:ERROR
-
Улучшена поддержка aarch64
-
Улучшено окно настроек
-
Улучшена поддержка IPv6
-
Улучшена функциональность журналирования
-
Обновлены переводы
Bhyvemgr поддерживает aarch64 на версиях от 15.x до 16-CURRENT и amd64 на версиях FreeBSD от 14.x до 16-CURRENT. Его можно скомпилировать или установить из портов или пакетов с поддержкой интерфейса gtk2, qt5 или qt6.
Приветствуются люди, заинтересованные в помощи или поддержке проекта.
Текущая версия: 1.13.1
Спонсор: https://paypal.me/alonsocbsd
Полный контроль CPUID для bhyve
Контакт: Hans Rosenfeld <rosenfeld@grumpf.hope-2000.org>
Обзор проекта
Текущая работа над этим проектом направлена на интеграцию существующей экспериментальной реализации (proof-of-concept) во FreeBSD и добавление следующих функций, улучшающих удобство использования:
-
удобный метод настройки для переопределения отдельных битов, частей или даже целых функций CPUID по мере необходимости с сохранением остальной информации CPUID хоста или предопределённой конфигурации CPUID
-
удобный метод настройки сигнатуры гипервизора, сообщаемой bhyve
-
набор предопределённых конфигураций CPUID, основанных на общепринятых архитектурных уровнях x86, возможно, также включающий набор данных CPUID для нескольких реальных моделей CPU, а также удобный метод настройки для выбора одного из них для виртуальной машины
Изменения за последний квартал
Расширения bhyvectl
В прототипе конфигурации CPUID уже была реализована новая
команда для bhyvectl, --get-cpuid-cfg, для запроса
конфигурации CPUID виртуального CPU.
Теперь реализована ещё одна новая команда для bhyvectl,
--get-cpuid, которая получает эмулируемые значения
CPUID для виртуального CPU.
Существует несколько режимов работы
--get-cpuid:
bhyvectl --get-cpuid=<leaf>[,<index>]-
Получает эмулируемое значение CPUID для отдельного листа CPUID и, опционально, индекса.
bhyvectl --get-cpuid[=all]-
Получает полный набор эмулируемых значений CPUID для всех поддерживаемых листов и всех поддерживаемых индексов.
bhyvectl --get-cpuid=all,p-
То же, что и выше, но вывод может быть разобран как набор параметров конфигурации CPUID для bhyve.
bhyvectl --get-cpuid=all,s-
То же, что и выше, но вывод является «разреженным», то есть печатаются только те листы и индексы CPUID, чьи значения на данном виртуальном CPU (с ключом
--cpu) отличаются от того же листа и индекса на виртуальном CPU 0.
Последние два режима можно использовать для создания базовой конфигурации CPUID, основанной на эмуляции CPUID от bhyve, которую затем можно изменить по желанию.
Более гибкая настройка CPUID
Механизм конфигурации CPUID, реализованный в рамках прототипа, был переработан, чтобы обеспечить более гибкую и детальную настройку, не требующую указания всего набора информации CPUID. Вот пример конфигурации:
cpuid.0x00000001=edx|=0x00040000 cpuid.0x00000003=ecx=0x01234567,edx=0x89abcdef vcpu.1.cpuid.0x00000003=ecx|=0x10000000 vcpu.2.cpuid.0x00000003=ecx|=0x20000000 vcpu.3.cpuid.0x00000003=ecx|=0x30000000 vcpu.4.cpuid.0x00000003=ecx|=0x40000000 vcpu.5.cpuid.0x00000003=ecx|=0x50000000 vcpu.6.cpuid.0x00000003=ecx|=0x60000000 vcpu.7.cpuid.0x00000003=ecx|=0x70000000 vcpu.8.cpuid.0x00000003=ecx|=0x80000000 vcpu.9.cpuid.0x00000003=ecx|=0x90000000 vcpu.10.cpuid.0x00000003=ecx|=0xa0000000 vcpu.11.cpuid.0x00000003=ecx|=0xb0000000 vcpu.12.cpuid.0x00000003=ecx|=0xc0000000 vcpu.13.cpuid.0x00000003=ecx|=0xd0000000 vcpu.14.cpuid.0x00000003=ecx|=0xe0000000 vcpu.15.cpuid.0x00000003=ecx|=0xf0000000 cpuid.0x0000000b,0=edx=0xffffffff cpuid.0x0000000b,1=edx=0xeeeeeeee cpuid.0x0000000b,2=edx=0xdddddddd
Приведённая выше конфигурация CPUID включает функцию «Processor Serial Number» (0x00000001, бит 18 в EDX) на всех виртуальных CPU и устанавливает серийный номер по умолчанию 0x01234567, 0x89abcef.
На каждом виртуальном CPU, кроме vCPU 0, она перезаписывает одну цифру серийного номера идентификатором виртуального CPU, чтобы каждый виртуальный CPU имел уникальный серийный номер.
Последние три присваивания не имеют смысла. Лист 0x0000000b содержит информацию о топологии во всех индексах, а регистр EDX всегда содержит x2APIC ID виртуального CPU. Следовательно, эти последние три присваивания будут молча игнорироваться.
Использование архитектурных уровней x86
Теперь можно указать архитектурный уровень x86:
cpuid.archlevel=v1
Это отключит все возможности архитектурных уровней x86 от v2 до v3, ограничив набор возможностей CPU набором архитектурного уровня x86 v1.
Планы на следующий квартал
-
Поддержка архитектурных уровней x86 должна стать более надёжной. Хотя прямая настройка информации CPUID должна позволять изменять почти всё, для архитектурных уровней x86 следует проверять, действительно ли оборудование поддерживает все возможности, определённые в архитектурном уровне. Установка архитектурного уровня, который не поддерживается CPU, должна быть запрещена или, по крайней мере, должно выдаваться предупреждение.
-
Аналогично установке архитектурного уровня x86, будет реализован механизм для переопределения идентификации гипервизора без необходимости ручного изменения битов CPUID.
-
Отправить весь код на рецензирование и включить во FreeBSD.
Спонсор: Фонд FreeBSD
Sylve — Унифицированная платформа управления системой для FreeBSD
Ссылки:
Веб-сайт URL: https://sylve.io
GitHub URL:
https://github.com/AlchemillaHQ/Sylve
CI URL: https://sylve-ci.alchemilla.io
Discord URL: https://discord.gg/bJB826JvXK
Контакт: Hayzam Sherif <hayzam@alchemilla.io>
Sylve — это современная унифицированная платформа управления системой для FreeBSD. Она предоставляет интегрированный веб-интерфейс для управления виртуальными машинами (через Bhyve), Jail, сетями вокруг них и хранилищами ZFS.
Бэкенд реализован на Go, а фронтенд построен на Svelte. Проект делает акцент на минимальном системном следе. По умолчанию он не требует никаких пакетов, кроме базовой системы.
В конце этого квартала мы выпустили наш первый релиз Sylve v0.1.0, и на момент написания этой статьи мы находимся на версии v0.2.3.
Опциональные зависимости времени выполнения, необходимые только при использовании соответствующих функций, включают:
-
devel/libvirt для виртуализации
-
devel/qemu-tools для управления образами дисков
-
net/samba419 для общего доступа к файлам по SMB
-
sysutils/swtpm для поддержки эмуляции TPM
-
dns/dnsmasq для служб DHCP и DNS
Порт подтягивает эти зависимости для удобства пользователя, но сам по себе Sylve не требует никаких зависимостей для работы.
Основные достижения за первый квартал
Центр обработки данных / Кластер
-
Улучшено создание кластеров и управление ими, что ускоряет настройку и снижает вероятность ошибок.
-
Реализовано резервное копирование с использованием sysutils/zelta, которое поддерживает резервное копирование виртуальных машин, Jail и пользовательских наборов данных по расписанию без необходимости в специальном программном обеспечении на целевом хосте (кроме SSH и ZFS).
Jail
-
Снимки (снимки) для Jail (включая их конфигурации) теперь поддерживаются непосредственно из UI, специфичного для Jail.
-
Добавлена поддержка Wake-On-LAN для Jail с VNET.
-
Улучшена настраиваемость Jail за счёт возможности указать широкий спектр поддерживаемых опций (хуки, наборы правил DevFS, метаданные и так далее).
-
Добавлена поддержка веб-терминала на основе Ghostty (Zig/WASM).
-
Linux jail теперь поддерживают статическую настройку IP.
-
Теперь реализована функция шаблонов для Jail; Jail может быть преобразован в шаблон и затем клонирован любое количество раз.
-
Жизненные циклы запуска/остановки и связанный с ними UI были значительно улучшены за счёт использования нашей встроенной системы очередей, обеспечивая более быстрый и плавный пользовательский опыт.
Виртуальные машины
-
Снимки для виртуальных машин (включая их конфигурации) теперь поддерживаются непосредственно из UI, специфичного для VM.
-
Реализована поддержка файловой системы 9P для быстрого обмена папками между гостем и хостом.
-
Добавлена поддержка QEMU guest agent для получения основной информации о системе и сети.
-
Жизненные циклы перезагрузки/запуска/остановки и связанный с ними UI были значительно улучшены за счёт использования нашей встроенной системы очередей, обеспечивая более быстрый и плавный пользовательский опыт.
-
Добавлена поддержка веб-терминала на основе Ghostty (Zig/WASM) для последовательной консоли.
-
Теперь реализована функция шаблонов для виртуальных машин; VM может быть преобразована в шаблон и затем клонирована любое количество раз.
-
Привязка CPU (CPU Pinning) была значительно переработана, в частности для добавления поддержки систем с несколькими сокетами.
Аутентификация
-
Добавлена поддержка ключей доступа (Passkey) для простого входа без необходимости вводить пароли.
Утилиты
-
Загрузчик теперь также поддерживает загрузки (upload).
-
Очередность была значительно улучшена для загрузчика, чтобы сделать его более производительным.
Общее
Мы также внесли многочисленные улучшения в UI/UX, оптимизации производительности и исправления ошибок по всей платформе. Некоторые из них включают:
-
Поддержка проброса PCI была значительно улучшена и теперь включает кнопку «Prepare Passthrough», которая подготавливает устройство PCI к пробросу, делая его доступным для использования с виртуальными машинами после перезагрузки системы.
-
Удалено несколько NPM-библиотек в пользу самодельных альтернатив или вендорских зависимостей для снижения риска атак на цепочки поставок.
-
Сделано множество оптимизаций производительности для снижения использования RAM и CPU на фронтенде.
-
Перенесена система CI с Jenkins на GitHub Actions, которая теперь использует sysroots для сборки, что позволяет нам достичь более быстрого времени сборки.
-
БОльшая часть телеметрических данных была перемещена из основной базы данных SQLite в новую базу данных телеметрии. Это снижает риск блокировок на основной базы данных, тем самым увеличивая производительность.
-
Написана начальная документация и руководства по развёртыванию для пользователей, чтобы начать работу.
Обновление дорожной карты
-
Обработка отзывов пользователей.
-
Работа над интеграцией дополнительных функций (общие ресурсы NFS, UI для NAT/правил трафика и так далее).
Спонсоры: Фонд FreeBSD, Alchemilla Ventures (Разработка), IPTechnics LLC (Инфраструктура и тестирование)
AppJail, AppScripts и песочница для X11-приложений
Ссылки:
AppJail на GitHub
URL: https://github.com/DtxdF/AppJail
AppScript на
GitHub URL: https://github.com/DtxdF/appscript
x11appjail на
GitHub URL: https://github.com/DtxdF/x11appjail
Контакт: Jesús Daniel Colmenares Oviedo <dtxdf@FreeBSD.org>
AppJail — это open-source фреймворк под лицензией BSD-3, полностью написанный на POSIX-совместимом shell и C, предназначенный для создания изолированных, переносимых и простых в развёртывании окружений с использованием клеток (jail) во FreeBSD, которые ведут себя как приложения.
AppScript — это очень лёгкий и простой в использовании инструмент для создания самодостаточных исполняемых файлов.
Виртуализация на уровне операционной системы не так совершенна, как виртуализация на уровне оборудования: уязвимость в устройстве, не скрытом внутри клетки, может создать угрозу для хоста, но при правильной настройке это гораздо лучше, чем запуск приложения напрямую на хосте.
Клетки — это реализация виртуализации на уровне ОС для FreeBSD.
С помощью клетки можно легко ограничить множество аспектов:
ограничение
ресурсов, ограничение
доступа к устройствам /dev, ограничение файловой системы,
ограничение
сети и многие другие. Всё это прозрачно для приложения,
работающего внутри клетки. Однако одна проблема, особенно с
X11-приложениями, — это отсутствие изоляции. Пользователи часто
используют трюк с xhost +, чтобы запустить
X11-приложение внутри клетки и отобразить его на X-сервере хоста.
Это создаёт угрозу безопасности, поскольку, даже если
X11-приложение работает внутри клетки и даже если оно работает как
непривилегированный процесс, оно может получить большое количество
информации с хоста. Поэтому скомпрометированное приложение,
приложение с уязвимостью или просто собирающее много информации в
«телеметрических целях» может стать кошмаром при такой настройке и
в худшем случае скомпрометировать хост.
Недавно в AppJail была добавлена новая команда для решения этой проблемы: appjail-x11(1). Эта команда запускает приложение внутри клетки, но отображает его на новом X-сервере, созданном Xephyr, который уже аутентифицирован с помощью MIT-MAGIC-COOKIE-1. Это гораздо проще и легковеснее, чем настраивать SSH-сервер внутри клетки, создавать для этого ключевую пару, подключаться к клетке и так далее. Однако эта команда не ограничивается только этим: вы можете изменять размер окна Xephyr, и ваше DE/WM будет соответствующим образом обновляться, поскольку эта команда способна обнаруживать такие изменения.
Однако, хотя с помощью этой команды уже многое достигнуто, пользователь должен установить DE/WM и приложение внутри клетки, а возможно, установить и пользовательский .desktop-файл на хосте. Это можно автоматизировать с помощью Makejails, и продвинутые пользователи справятся с этим, поскольку они любят всё настраивать, но для обычного пользователя (или даже для меня) я хотел распространять приложения так, чтобы пользователям не нужно было делать ничего, кроме как просто запустить приложение, и именно эту задачу призван решать x11appjail.
x11appjail — это репозиторий, содержащий предварительно написанные скрипты для развёртывания некоторых X11-приложений с использованием appjail-x11, который автоматизирует установку .desktop-файла, иконки, создание jail через Makejails, а также устанавливает разумные переменные окружения по умолчанию, которые можно легко изменить во время выполнения. Однако на самом деле репозиторий усугубляет проблему удобства использования: теперь пользователь должен клонировать репозиторий и получать обновления, чего может быть достаточно для некоторых пользователей, но я хотел добиться достаточно хорошего удобства использования приложения и возможности легко изолировать его в клетке. Поэтому я написал appscript, который создаёт SFX-файлы в формате ELF, и они автоматически создаются с каждым новым релизом этого репозитория благодаря GitHub workflow.
Спонсор: https://www.patreon.com/appjail
daemonless: Нативные OCI-контейнеры для FreeBSD
Ссылки:
Daemonless URL: https://daemonless.io
Контакт: Michael Johnson <ahze@ahze.net> Контакт: Jesús Daniel Colmenares Oviedo <dtxdf@FreeBSD.org>
Daemonless — это коллекция нативных для FreeBSD OCI-образов, которые работают непосредственно на ядре FreeBSD. Он объединяет мощь и безопасность клеток (jail) с современной экосистемой контейнеров — совместим с Podman, AppJail или любой средой выполнения, соответствующей OCI. Без необходимости в виртуальных машинах Linux или дополнительных накладных расходах.
Особенности:
-
Надзор за процессами через s6 — корректная обработка сигналов, отсутствие зомби-процессов
-
Поддержка PUID/PGID — бесшовное отображение прав для наборов данных ZFS и bind-монтирований
-
Несколько тегов — выбор между бинарными файлами вышестоящего репозитория (:latest), ежеквартальными пакетами (:pkg) или обновляемыми пакетами (:pkg-latest)
-
Автоматизированный CI/CD — каждый образ автоматически собирается и тестируется
Наш парк образов насчитывает более 60 образов — от медиа-менеджеров, таких как Radarr, Sonarr, Prowlarr, Lidarr, Readarr, Bazarr и Jellyfin, до загрузчиков вроде SABnzbd и Transmission, а также инфраструктурного программного обеспечения, такого как nginx, Vaultwarden, Smokeping и OpenSpeedTest. У нас есть даже полный стек для Immich!
Все эти образы были созданы с помощью https://daemonless.io/guides/dbuild/ — основного движка сборки проекта Daemonless, который недавно был портирован. Он предоставляет унифицированный интерфейс для сборки, тестирования и публикации OCI-образов контейнеров FreeBSD, обеспечивая согласованность между локальной разработкой и CI/CD-средами.
В дополнение к развёртыванию OCI-контейнеров с использованием Podman и Podman-Compose, недавно стало возможным использовать https://github.com/DtxdF/AppJail и https://github.com/DtxdF/director в качестве альтернатив благодаря их совместимости с OCI.
Бенчмарк ядра, MAINTAINERS и pkgdist
Ссылки:
Статья о бенчмарке ядра URL: https://github.com/Humanoid-Human/fbsd-work/blob/main/kernel-benchmark.md
Обсуждение
MAINTAINERS в srcmgr URL: https://github.com/freebsd/srcmgr/issues/21
Pull
request для MAINTAINERS URL: https://github.com/freebsd/freebsd-src/pull/2107
Конвертер pkg
в набор дистрибутива URL: https://github.com/Humanoid-Human/fbsd-work/pull/1
Контакт: Trevor Xu <trevorxu5@gmail.com>
Моя работа в этом квартале была разделена между тремя проектами.
Бенчмарк ядра
Я провёл несколько бенчмарков FreeBSD 15.0-RELEASE, FreeBSD 16.0-CURRENT (установка по умолчанию) и FreeBSD 16.0-CURRENT с отключённой отладкой ядра. Целью этой работы было предоставление точных измерений влияния инструментов отладки ядра на производительность. Я обнаружил, что установка 16.0-CURRENT по умолчанию (то есть с отладкой) была значительно медленнее, чем 15.0-RELEASE, особенно в таких областях, как выделение памяти. С другой стороны, 16.0-CURRENT при правильной настройке показал производительность, сравнимую с 15.0-RELEASE, во всех проведённых мной тестах. Доступна полная статья.
Модернизация MAINTAINERS
Основываясь на информации из обсуждения в srcmgr, я создал структуру для UCL-файла, который будет хранить сопровождающих и пути для отслеживания, в качестве замены текущего файла MAINTAINERS. Затем я написал скрипт на flua, который читает этот файл и может выводить CODEOWNERS для GitHub или Forgejo, получать сопровождающих для конкретного пути, получать пути для конкретного сопровождающего и так далее. Pull request можно найти здесь.
Конвертер pkg в набор дистрибутива
В настоящее время я работаю над написанием shell-скрипта, который может преобразовывать набор пакетов pkgbase в набор дистрибутива. Это поможет облегчить переход на pkgbase.
Спонсор: Фонд FreeBSD
Улучшение LLDB во FreeBSD
Контакт: Minsoo Choo <minsoochoo0122@proton.me>
Из-за проблем с лицензированием GDB (GPLv3), FreeBSD использует LLVM, включая LLDB, в своей базовой системе начиная с FreeBSD 10.0. Однако большинство разработчиков ядра по-прежнему полагаются на KGDB (патченную версию последнего GDB) для отладки ядра. Это отчасти связано с личными предпочтениями (некоторые считают синтаксис команд GDB более удобным), но есть и практические причины: LLDB не хватает нескольких функций, которые предоставляет KGDB (подробности ниже), и даже в базовой системе поддержка LLDB недостаточна. Моя работа направлена на достижение паритета функций с KGDB к концу апреля.
Улучшения, которые я сделал на данный момент, перечислены по ссылке выше. Обратите внимание, что мелкие исправления ошибок не включены в этот список.
Следующее не поддерживается: i386, arm, powerpc32, powerpc64be и mips*. FreeBSD 13 и более ранние версии также не поддерживаются. Целевая версия LLVM — 23, хотя эта работа может быть перенесена обратно в LLVM в дереве FreeBSD и main в stable/14 и stable/15 после того, как Димитрий Андрик (Dimitry Andric) завершит свой MFV (перенос от вендора) LLVM 21.
Я начал эту работу в конце января, и она, по прогнозам, будет завершена к апрелю. Помимо паритета функций, возможны дальнейшие улучшения, такие как поддержка minidump2elf и добавление UUID в заголовки ELF ядра и дампа памяти (core dump).
Самым большим препятствием для этого проекта является нехватка рецензентов, хорошо знакомых как с внутренним устройством FreeBSD, так и с внутренним устройством KGDB. Если у вас есть время, пожалуйста, оставляйте отзывы на мои pull request. Тестировщики на машинах, отличных от x86 и arm64, также очень приветствуются. Если вы обнаружите какие-либо проблемы, пожалуйста, сообщите об ошибке и свяжитесь со мной в llvm/llvm-project.
Спонсор: Фонд FreeBSD
Пользовательские программы
Изменения, затрагивающие базовую систему и программы в ней.
Завершение разработки API дескрипторов процессов
Контакт: Konstantin Belousov <kib@FreeBSD.org>
FreeBSD давно предлагает средство «дескрипторов процессов» (Process Descriptors). Основное его использование — в песочницах Capsicum, где для работы с объектом требуется дескриптор, и дескриптор процесса предоставляет такой дескриптор. Другие операционные системы предоставляют аналогичное средство под тем же именем. Предлагаемый API был неполным, основным недостающим элементом был системный вызов pdwait(2), аналог семейства wait(2), который работает с дескриптором процесса вместо идентификатора процесса.
Описываемый проект добавил вызов pdwait(2). Другим важным дополнением стал вызов pdrfork(2), который обеспечивает такую же детальную поддержку создания копий процессов, как и rfork(2), но также возвращает дескриптор процесса в качестве дескриптора, подобно pdfork(2).
После добавления pdwait и pdrfork стали возможны естественные расширения для средств posix_spawn(3). Теперь атрибут posix_spawnattr_setprocdescp_np(3) требует, чтобы posix_spawn(3) возвращал дескриптор процесса. Другим естественным дополнением стал posix_spawnattr_setexecfd_np(3), который указывает исполняемый образ через дескриптор файла вместо имени.
В совокупности новые добавленные функции делают дескриптор процесса полным и позволяют использовать posix_spawn в песочницах.
Спонсор: Фонд FreeBSD
Ядро
Обновления подсистем/функций ядра, поддержки драйверов, файловых систем и другое.
Драйвер ACPI для ноутбуков System76
Контакт: Pouria Mousavizadeh Tehrani <pouria@FreeBSD.org>
Я работал над специализированным драйвером для ноутбуков System76, и теперь он доступен в CURRENT.
На данный момент добавлена поддержка:
-
Пороговых значений зарядки аккумулятора. (коммит)
-
Яркости подсветки клавиатуры с поддержкой backlight(8). (коммит)
-
Управления RGB-цветами подсветки клавиатуры. (коммит)
Единственное, что осталось сделать — переключение между dGPU и iGPU силами драйвера. Однако переключение возможно и без помощи драйвера.
Улучшение функций системы приостановки/возобновления работы (Suspend/Resume)
Ссылки:
Блог URL: https://obiw.ac/s0ix/
Доклад на BSDCan о
s2idle/S0ix URL: https://youtu.be/RCjPc4X2Edc
Образ для
тестирования сна URL: https://people.freebsd.org/~obiwac/s0ix/
Рабочая
ветка URL: https://github.com/obiwac/freebsd-s0ix/pull/15
Контакт: obiwac <obiwac@FreeBSD.org>
Приостановка-до-бездействия (suspend-to-idle) и поддержка сна S0ix находятся в процессе добавления во FreeBSD.
Это позволит современным ноутбукам Intel и AMD, некоторые из которых не поддерживают сон ACPI S3, переходить в состояния с низким энергопотреблением для увеличения времени автономной работы.
На данный момент большинство ревизий уже зафиксированы, включая новый драйвер acpi_spmc и поддержку s2idle. Единственное, что осталось добавить, — это поддержку приостановки USB4 и цикл s2idle (но это требует дополнительного обсуждения и исследования). Смотрите ревизии D52861 и D54410 соответственно.
Многие ошибки были исправлены, но всё ещё есть проблема, когда система иногда зависает через несколько секунд после возобновления работы. Было установлено, что проблема связана с тем, что NVMe-накопитель неправильно просыпается после приостановки — требуется дальнейшее расследование.
Начата работа над драйвером Intel PMC: D54881 Это уже позволяет считывать время пребывания в самом глубоком возможном состоянии S0ix на процессорах Intel.
Начата работа над новым общим интерфейсом управления питанием: D55508 Это необходимо, поскольку s2idle не является состоянием питания ACPI, и единственным (современным) механизмом для запросов перехода питания является интерфейс ioctl ACPI. Он ещё не зафиксирован, потому что мы можем в итоге изменить или даже удалить различие между типами сна и переходами состояний сна.
Спонсор: Фонд FreeBSD
Гибернация (приостановка с сохранением состояния на диск)
Ссылки:
Код
начального прототипа для сохранения образа системы URL:
https://github.com/OlCe2/freebsd-src/tree/oc-hibernate
Дизайн-документ о
загрузочной части процесса восстановления URL: https://hackmd.io/50ygFG3qSmqMOKytJMuOGw?both=
Контакт: Olivier Certner <olce@FreeBSD.org>
Контакт: Konstantin Belousov <kib@FreeBSD.org>
Ведётся работа по обеспечению поддержки гибернации (приостановки
с сохранением состояния на диск) во FreeBSD без помощи
BIOS/прошивки для сохранения текущего состояния машины для
amd64-машин, загружаемых через UEFI.
Первым этапом было создание прототипа, который сохраняет образ системы, пока откладывая вопросы согласованности, чтобы можно было начать параллельную работу над EFI-приложением, предназначенным для восстановления и загрузки сохранённого образа (Константин Белоусов работает над этой частью). Этот этап был завершён в марте. Прежде чем этот экспериментальный код может быть зафиксирован, необходимо провести значительный рефакторинг, в частности нижележащей инфраструктуры дампов.
Следующий основной этап — обеспечение согласованности сохранённого образа системы, чтобы система была работоспособна после восстановления. Если кратко, самое большое ограничение здесь заключается в том, что мы должны гарантировать отсутствие незавершённого ввода-вывода по нескольким причинам, что состоит в том, чтобы сначала гарантировать, что больше не могут создаваться запросы ввода-вывода, а затем опустошить существующие запросы. В частности, текущие DMA-доступы могут изменять память в то время, как она сохраняется, что приводит к устаревшему кэшированию в сохранённом образе. Кроме того, если восстановление не удаётся (например, из-за какой-либо проблемы согласованности оборудования), ввод-вывод, который не достиг устойчивого хранилища, будет потерян, в то время как прикладной код или код файловой системы ожидали бы его фиксации (потеря согласованности). Мы начали идентифицировать подсистемы, требующие внимания, и анализировать, какие изменения в них необходимы (например, шина, GEOM, драйверы дисков).
Следующий этап — определить, как окончательно сохранить образ системы, не нарушая согласованности, поскольку сама эта операция изменяет память ядра. Первая высокоуровневая возможность — сделать снимок (snapshot) памяти после обеспечения стабильности, а затем возобновить нормальную работу, чтобы сохранить страницы в том состоянии, в котором они были на момент создания снимка. Существует несколько возможных уточнений, таких как упреждающее или ленивое копирование, с разными стратегиями реализации, а следовательно, характеристиками и требованиями. Преимущества создания снимка включают возможность использования обычного кода ядра для сохранения образа со всей поддержкой доступных преобразований. Недостатки — более высокое потребление памяти, хотя это сильно зависит от выбранной стратегии реализации и, по-видимому, в значительной степени смягчается, а также возможные некоторые сложности на очень низких уровнях ядра. Альтернатива, которая изучается, — не делать снимок, а вместо этого гарантировать, что отправка образа на диск изменяет только то состояние, которое будет эффективно сброшено при восстановлении. Эта альтернатива требует реализации выборочной приостановки (selective suspend), но в остальном мы ожидаем, что большая часть существующего кода дампа при панике (dump-on-panic) будет пригодна для повторного использования. В настоящее время мы изучаем различные варианты, чтобы лучше понять их осуществимость и связанные с ними компромиссы.
Спонсор: Фонд FreeBSD
Совместное управление производительностью процессоров (CPPC)
Контакт: ShengYi Hung <aokblast@FreeBSD.org>
Контакт: Olivier Certner <olce@FreeBSD.org>
Совместное управление производительностью процессоров (Collaborative Processor Performance Control, CPPC) — это стандарт, представленный ACPI, позволяющий операционной системе управлять производительностью и, соответственно, эффективностью процессоров благодаря абстрактной шкале производительности, в общем случае не коррелирующей с простыми уровнями частоты и обеспечивающей более тонкую настройку, чем они. Intel и AMD уже несколько лет предоставляют реализации процессоров с поддержкой ACPI CPPC.
FreeBSD поддерживала включение CPPC, но только для процессоров Intel и позволяла управлять полезным, но очень ограниченным подмножеством его функциональности благодаря драйверу hwpstate_intel(4), добавленному в 2020 году. Автономный выбор целевой производительности аппаратным обеспечением в зависимости от рабочей нагрузки принудительно включён, и только основной соответствующий аппаратный параметр, называемый Efficiency/Performance Preference (EPP), доступен администратору через параметр sysctl(8).
Мы добавили поддержку реализации CPPC от AMD в существующий драйвер hwpstate_amd(4), который, в отличие от hwpstate_intel(4), до сих пор управлял только «обычными» P-состояниями. Драйвер предоставляет 4 параметра sysctl(8): минимальная производительность, максимальная производительность, желаемая производительность и EPP. Минимальная, максимальная и желаемая производительность — это значения от 0 до 255, но в зависимости от аппаратного обеспечения эффект может иметь только поддиапазон. Начальные значения минимальной и максимальной производительности устанавливаются равными границам эффективного поддиапазона в соответствии с указаниями платформы (если они доступны). Управление EPP служит для выражения предпочтения в сторону эффективности или производительности и представляет собой значение от 0 (максимальное предпочтение производительности) до 255 (максимальное предпочтение эффективности). Желаемая производительность может быть установлена на любое значение между минимальной и максимальной производительностью или на специальное значение 0 для включения аппаратного автономного выбора целевой производительности в зависимости от текущей рабочей нагрузки. Управление минимальной производительностью, максимальной производительностью и EPP применяется независимо от того, включён ли автономный выбор или указана конкретная желаемая производительность. Обратите внимание, что эффект каждой комбинации этих значений зависит от модели процессора, и мы уже смогли наблюдать сильно различающееся поведение на нескольких из них. Поэтому ожидайте, что вам придётся экспериментировать, чтобы найти значения, подходящие для ваших сценариев использования на конкретной машине.
hwpstate_amd(4) включён в ядро GENERIC (через
cpufreq(4)) и использует CPPC, если процессоры поддерживают
его, если только явно не указано иное (через параметр
machdep.hwpstate_amd_cppc_enable). Следовательно,
чтобы избежать регрессии производительности, на данный момент мы
решили установить вышеупомянутые параметры управления на
максимальную производительность, так как это поведение по умолчанию
для традиционной поддержки P-состояний, а также для любого другого
драйвера
cpufreq(4), за исключением
hwpstate_intel(4) (который в настоящее время принудительно
включает аппаратный автономный выбор и устанавливает EPP по
умолчанию в 0x80 (50%)). Это может быть пересмотрено
позже, в зависимости от того, сможем ли мы надёжно определить,
является ли работающий компьютер ноутбуком.
Следующие шаги:
-
Изменить hwpstate_intel(4), чтобы он соответствовал поддержке CPPC от hwpstate_amd(4) с точки зрения функциональности и поведения по умолчанию. Это включает:
-
Улучшенную обработку ошибок и вывод отладочной информации
-
Предоставление параметров для всех вышеупомянутых элементов управления
-
Изменение шкалы EPP (с процентов на 8-битное значение)
-
Изменение значений по умолчанию
-
-
Написать справочную страницу для hwpstate_amd(4) (тем временем объяснений здесь и встроенной документации параметров sysctl(8) должно быть достаточно).
-
Обучить powerd(8) параметрам управления CPPC и некоторым простым политикам их установки.
-
Обучить cpufreq(4) абстрактным значениям производительности, чтобы предоставить унифицированный интерфейс для их получения или установки.
-
Реализовать в cpufreq(4) поддержку настроек на каждый процессор.
-
Выбирать значения управляющих параметров по умолчанию на основе типа платформы (вероятно, из поля
Preferred_PM_ProfileACPIFADT). -
Возможно, переместить политики powerd(8) в пространство ядра.
Спонсор: Фонд FreeBSD
Улучшения звукового стека (Audio Stack Improvements)
Контакт: Christos Margiolis <christos@FreeBSD.org>
Я работаю над аудиостеком с 2024Q1. Ниже приведён список предыдущих отчётов о состоянии:
2024Q1 URL: https://www.freebsd.org/status/report-2024-01-2024-03/#_audio_stack_improvements
2024Q2 URL: https://www.freebsd.org/status/report-2024-04-2024-06/#_audio_stack_improvements
2024Q3 URL: https://www.freebsd.org/status/report-2024-07-2024-09/#_audio_stack_improvements
2024Q4 URL: https://www.freebsd.org/status/report-2024-10-2024-12/#_audio_stack_improvements
2025Q1 URL: https://www.freebsd.org/status/report-2025-01-2025-03/#_audio_stack_improvements
2025Q2 URL: https://www.freebsd.org/status/report-2025-04-2025-06/#_audio_stack_improvements
2025Q3 URL: https://www.freebsd.org/status/report-2025-07-2025-09/#_audio_stack_improvements
2025Q4 URL: https://www.freebsd.org/status/report-2025-10-2025-12/#_audio_stack_improvements
Важная работа после последнего отчёта:
-
Статья в журнале FreeBSD Journal опубликована.
-
Очистка, исправления и улучшения sound(4) и virtual_oss(8).
-
Поддержка libxo для sndctl(8).
-
Начата реализация поддержки формата DSD и DoP.
-
Начата реализация утилиты управления Bluetooth-устройствами.
Вы также можете следить за процессом разработки в репозитории status-updates Фонда FreeBSD, где я публикую еженедельные отчёты.
Спонсор: Фонд FreeBSD
Обновление LinuxKPI 802.11 и нативного беспроводного стека (Native Wireless)
Ссылки:
Поддержка
беспроводных карт MediaTek URL: https://github.com/FreeBSDFoundation/proj-laptop/issues/66
Поддержка
беспроводных карт Realtek URL: https://github.com/FreeBSDFoundation/proj-laptop/issues/99
Контакт: Bjoern A. Zeeb <bz@FreeBSD.org>
Контакт: Список рассылки беспроводных технологий FreeBSD
<wireless@FreeBSD.org>
Этот отчёт посвящён усилиям по использованию драйверов беспроводных устройств Linux с пермиссивными лицензиями, в основном без изменений, во FreeBSD, а также подготовке нативного стека net80211 к поддержке более новых стандартов.
Обновления драйверов
Все драйверы беспроводных устройств на основе LinuxKPI были обновлены до версии ядра Linux v6.19 в main и stable/15.
Это включает:
-
поставляемые драйверы Intel iwlwifi(4) mvm/mld, Realtek rtw88(4) и rtw89(4),
-
драйвер Mediatek mt76, который находится в стадии разработки,
-
три драйвера Qualcomm Atheros: ath10k, ath11k и ath12k, которые требуют доработки, а также
-
драйвер Broadcom brcmfmac, который компилируется и загружает прошивку, но ему не хватает совместимой прослойки cfg80211 и некоторой работы над netdev.
Поддержка Intel iwlwifi
Для того чтобы обновление драйвера iwlwifi(4) было применено, были сделаны несколько специфичных для FreeBSD изменений, чтобы позволить поддрайверу mld правильно загружаться. Также было исправлено несколько ошибок.
Поддержка Realtek rtw88 и rtw89
После обновления драйверов выяснилось, что наша эмуляция chandef должна быть более детальной. Впоследствии были обнаружены дальнейшие проблемы, связанные с тем, что некоторые драйверы rtw88 могут не выполнять аппаратное сканирование, требуя отката к программному сканированию. Наконец, два чипсета rtw88 — 8821c и 8822b — похоже, часто имеют задержку в 6 секунд при подготовке к аутентификации. Неясно, почему прошивка не работает в этих случаях, но в итоге я решил оставить эту проблему в покое и попытаться добавить обновления для 802.11n и 802.11ac в следующем (надеюсь, до 15.1-R), и только затем вернуться к этим чипсетам и посмотреть, что можно сделать.
Поддержка Mediatek mt76
В настоящее время основные чипсеты для работы — MT7921/7922 и MT7925. После обновления драйвера были решены некоторые проблемы с DMA32 и page_pools. Изменения в drm-kmod, подготовленные для перехода с нативного vm_page на структуру struct page из Linux, к счастью, были зафиксированы. Это позволит мне проще распространять тестовую версию среди людей. MT7925 также выявил недостаточность нашей реализации IDR в LinuxKPI, которая более или менее была задокументирована с первого дня. Это потребует полной переработки, чтобы избежать проблем с доступом к уже уничтоженным записям, что может происходить в Linux. Я также начал накапливать другие чипсеты для тестирования. Поддержка 802.11n и 802.11ac в основном будет реализована вместе с работой над Realtek.
Broadcom brcmfmac
Драйвер Broadcom brcmfmac компилируется для PCIe и загружает прошивку (с небольшим обходным решением для arm64). Теперь нам не хватает некоторой совместимой работы по cfg80211 и netdev LinuxKPI для создания интерфейса и управления беспроводной связью.
Поддержка QCA
В то время как ath10k в основном исправлен для режима станции, ath11k и ath12k требуют больше работы для повторной компиляции и реализации MHI и других необходимых компонентов.
Поддержка USB в LinuxKPI
Реализация USB в LinuxKPI существует уже более десяти лет. Я уже обращался к пользователям в прошлом году и снова в этом, но не получил ответа. У меня есть переработанная версия, которая позволяет компилировать USB-чипсеты Realtek, Mediatek, QCA ath10k и Broadcom brcmfmac. Последние два в основном неактуальны из-за старых и редких USB-адаптеров. Realtek и Mediatek подключаются и передают пакеты, но требуют ещё немного работы по стабильности и корректному отключению.
Есть одно препятствие: (старая и новая) реализация USB в LinuxKPI переплетена с нашим нативным стеком USB, что приводит к конфликтам. Ведётся работа по решению этой проблемы, и определены два возможных пути, но сначала необходимо понять и очистить изменение, которому 15 лет.
Поддержка SDIO в LinuxKPI
Поддержка SDIO в LinuxKPI находится в моём дереве разработки уже около года и была сделана в основном для Realtek rtw88. Broadcom потребует заполнения ещё нескольких мест-заполнителей, но это не должно быть слишком сложно. Прерывания необходимо доработать, а поддержку повышения скорости следует взять из чужой незавершённой работы. Я планирую включить её в дерево как есть, как только USB будет готов, чтобы люди могли помочь с тестированием и завершением.
Нативный net80211
Спасибо Команде по управлению портами (Ports Management Team) за проведение exp-run (экспериментальной тестовой сборки). Я подготовил патч для выявления всех портов, использующих интерфейс ioctl net80211. Это необходимо для того, чтобы заранее минимизировать поломки, связанные с предстоящими изменениями интерфейса ioctl.
Подробности смотрите в PR 293016.
Прочее
Я представил обновление по большей части этого материала во время мартовского звонка LDWG (Laptop Desktop Working Group). Для получения дополнительной информации смотрите страницу LDWG в Wiki.
Спонсор: Фонд FreeBSD
Удаление поддержки RFC 2675
Контакт: Tom Jones <thj@FreeBSD.org>
Опция Jumbo Payload (гигантская полезная нагрузка) — это расширенный заголовок IPv6, предназначенный для поддержки размеров пакетов, превышающих 65 735 октетов. FreeBSD получила поддержку Jumbo Payload от проекта KAME, но ни в одной реальной сети эта поддержка никогда не использовалась.
В рамках модернизации стека IPv6 поддержка Jumbo Payload была удалена. Насколько нам известно, использовать эту поддержку с хостом FreeBSD никогда не было возможно.
Спонсор: Фонд FreeBSD
Туннели GENEVE
Контакт: Pouria Mousavizadeh Tehrani <pouria@FreeBSD.org>
С момента последнего отчёта я разбил реализацию GENEVE на множество более мелких ревизий, чтобы упростить процесс рецензирования:
-
Реализация модуля ядра geneve D54172
-
Интеграция поддержки geneve через netlink в ifconfig(8) D55184
-
Включение параметров geneve в ifconfig D55181
-
Добавление тестов для geneve D55183
-
Обновление функций туннелирования ECN(9) для соответствия RFC 6040 D53516
-
Обновление geneve для соответствия RFC 6040 D55186
Вы можете помочь ускорить процесс, рецензируя и предоставляя отзывы на phabricator.
Архитектуры
Обновление специфичных платформенных функций и добавление поддержки новых аппаратных платформ.
drm-kmod: Сборка и запуск на ARM64 с 16.0-CURRENT
Ссылки:
drm-kmod:
Сборка и запуск на ARM64 с 16.0-CURRENT URL: https://github.com/freebsd/drm-kmod/pull/402
Контакт: Dmitry Salychev <dsl@FreeBSD.org>
Я успешно собрал и запустил graphics/drm-66-kmod с этими патчами на моём Honeycomb LX2 с Radeon RX 460. С этими патчами версия 6.6-lts может стать заменой для всех, кто полагался на устаревший graphics/drm-510-kmod.
Разработка драйверов FreeBSD для BananaPi-R64/R2-PRO
Ссылки:
Wiki URL:
https://wiki.freebsd.org/arm/Bananapi
Контакт: Martin Filla <freebsd@sysctl.cz>
Введение в R64
Banana Pi R64 — это плата разработки на базе MediaTek MT7622 (ARM Cortex-A53, двухъядерный ~1.35 ГГц), оснащённая 4× Gigabit LAN, 1× Gigabit WAN, Wi-Fi (4×4n), Bluetooth 5.0 и множеством периферийных интерфейсов (UART, SPI, I²C, GPIO, SATA, mini-PCIe, eMMC и так далее).
Текущее состояние поддержки FreeBSD на R64
На данный момент реализовано:
-
Драйвер UART
-
Управление тактовой частотой (clocks)
-
Pinctrl
-
Драйвер контроллера хранения (eMMC/SD/MMC)
-
Драйвер Ethernet-коммутатора mt7531
-
Драйвер Ethernet mt7622
-
Драйвер XHCI
-
Драйвер Watchdog
-
Драйвер RTC
-
Драйвер RNG
-
Драйвер Pciecfg
-
Драйвер SysIRQ
План разработки для R64
Реализовать недостающие драйверы:
-
USB3 / T-PHY
-
SATA / AHCI / T-PHY
-
Wi-Fi (вероятно, MediaTek MT7615)
-
Подсистемы GPIO
-
I2C
-
SPI
-
PWM
-
PCIE
Драйверы в стадии разработки:
-
T-PHY
Введение в R2-PRO
Banana Pi BPI-R2 Pro — это плата разработки следующего поколения для интеллектуальных маршрутизаторов. Она работает на процессоре Rockchip RK 3568. Имеет на борту 2 ГБ LPDDR4 и 16 ГБ eMMC, поддерживает 2 интерфейса USB 3.0, 5 гигабитных сетевых портов. Интерфейсы M.2 key-E и mini PCIe, 2 интерфейса mipi DSI (один можно программно переключить на LVDS), 1 интерфейс CSI для камеры, 1 выход HDMI.
Текущее состояние поддержки FreeBSD на R2-PRO
На данный момент реализовано:
-
Драйвер UART
-
Управление тактовой частотой (clocks)
-
Pinctrl
-
GPIO
-
Драйвер контроллера хранения (eMMC/SD/MMC)
-
Драйвер XHCI
-
Драйвер Watchdog
-
Драйвер PCIE
План разработки для R2-PRO
Реализовать недостающие драйверы:
-
HDMI
-
MIPI
-
USB3
Драйверы в стадии разработки:
-
AHCI/SATA
-
PCIE
Поддержка NXP DPAA2
Ссылки:
Ошибка
292006 — dpni некорректно работает в мосте URL: https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=292006
dpaa2: Установка
возможностей интерфейса при подключении URL: https://reviews.freebsd.org/D53436
dpnaa2: объявление
поддержки контрольных сумм при передаче URL: https://reviews.freebsd.org/D54809
dpaa2: Выполнение
bus_dma предварительной синхронизации записи перед операцией
постановки в очередь URL: https://reviews.freebsd.org/D56144
dpaa2: dpaa2_ni_rx()
информация о включении/ошибках контрольных сумм RX для L3/4
URL: https://reviews.freebsd.org/D55320
dpaa2: Вынос функций,
специфичных для кадров, в dpaa2_frame.[h,c] URL: https://reviews.freebsd.org/D56315
dpaa2: Извлечение
статусов контрольных сумм на входящем трафике URL: https://reviews.freebsd.org/D56383
dpaa2: ni: добавление
дополнительной статистики и информации о канале связи URL:
https://reviews.freebsd.org/D55321
Контакт: Michael Tuexen <tuexen@FreeBSD.org>
Контакт: Bjoern A. Zeeb <bz@FreeBSD.org>
Контакт: Dmitry Salychev <dsl@FreeBSD.org>
Что такое DPAA2?
DPAA2 (Data Path Acceleration Architecture Gen2) — это сетевая архитектура на аппаратном уровне, встречающаяся в некоторых SoC NXP, которая содержит аппаратные блоки, включая Management Complex (MC, интерфейс команд для управления объектами DPAA2), процессор Wire Rate I/O (WRIOP, распределение пакетов, управление очередями, решения об отбрасывании), менеджер очередей и буферов (QBMan, управление очередями Rx/Tx, пулы буферов Rx) и другие. Management Complex работает под управлением прошивки, предоставляемой NXP, которая предоставляет объекты DPAA2 как уровень абстракции над этими блоками для упрощения доступа к нижележащему оборудованию.
Сделанная работа
39d4094173f9 («epair: добавление поддержки выгрузки контрольных сумм») выявил несколько проблем в драйверах DPAA2, инициировал исследования, проведённые tuexen@ и dsl@, и в конечном итоге привёл к изменениям, накопленным в рамках ошибки 292006:
-
Выгрузка аппаратных контрольных сумм не включалась должным образом при подключении драйвера dpaa2_ni, несмотря на объявление и включение на интерфейсе dpni (исправлено в a731cb93a662)
-
dpni (сетевой интерфейс DPAA2) некорректно объявлял выгрузку контрольных сумм при передаче (исправлено в f31336b3e314)
-
Без надлежащей синхронизации полезная нагрузка исходящих TCP-сегментов может быть повреждена, как описал tuexen@ в 292006#c31 (исправлено в 5812415bee55)
Незавершённая работа
-
bz@ подготовил код для извлечения информации о вычисленных контрольных суммах из аппаратных аннотаций входящих кадров в D55320, но dsl@ попросил должным образом определить структуры, необходимые для аннотаций кадров, что привело к появлению dpaa2_frame.[h,c], представленных в D56315 и доработанных в D56383
-
bz@ значительно расширил sysctl(9) dpni, включив новые счётчики интерфейса и информацию о состоянии канала связи в D55321
Спонсор: Traverse Technologies (предоставление аппаратного обеспечения Ten64 для тестирования)
Поддержка FRED для amd64
Ссылки:
Спецификация Intel FRED до SDM URL: https://www.intel.com/content/www/us/en/content-details/819481/flexible-return-and-event-delivery-fred-specification.html
+ D55829 amd64:
поддержка FRED URL: https://reviews.freebsd.org/D55829
Контакт: Konstantin Belousov <kib@FreeBSD.org>
Реализована поддержка функции FRED (Flexible Return and Event Delivery — гибкое возвращение и доставка событий) для очень современных платформ amd64. FRED представляет собой полную переработку аппаратного интерфейса для сообщения операционной системе об исключениях, прерываниях и системных вызовах, а также способа, которым операционная система возвращает управление из обработчика прерванному коду. Целью разработки FRED было избавиться от слоёв функций совместимости и ошибок, накопившихся в существующем способе, назовём его доставкой событий на основе IDT.
Спецификация FRED теперь включена в Intel SDM редакции 90. Похоже, что AMD также планирует предоставить FRED в некоторых будущих реализациях.
Таким образом, поддержка FRED требует нового пути кода для обработчиков событий. Хорошая структурированность FRED позволяет использовать минимальные trampoline-части на ассемблере, перенося бОльшую часть диспетчеризации в код на C.
Реализация обработчика FRED была относительно простой и потребовала гораздо меньше времени, чем я изначально предполагал. Это показывает, насколько хорош и естественен предлагаемый интерфейс.
На данный момент тестирование проводилось только на эмуляторе Simics. FRED должен поддерживаться недавно выпущенными процессорами Intel Panther Lake, но у меня нет доступа к реальному оборудованию.
Спонсор: Фонд FreeBSD
Поддержка семейства SoC Allwinner H616
Контакт: Tom Jones <thj@FreeBSD.org>
Семейство устройств Allwinner H616 (H616, H616 и H700) — это серия небольших, но мощных систем-на-кристалле (SoC) с мощной медиа-поддержкой. Они используются во многих телевизионных приставках, портативных устройствах и одноплатных компьютерах.
FreeBSD теперь поддерживает большинство периферийных устройств, и поддержка была протестирована с Orange Pi 2. Существует пока неизвестная проблема с контроллером Ethernet, но она находится в стадии исследования. Поддержка графики требует drm, и это ещё не было изучено. Видеоустройство не поддерживается в u-boot или Linux как консоль фреймбуфера.
Спонсор: Фонд FreeBSD
Облачная архитектура
Обновление специфичных облачных функций и добавление поддержки новых облачных платформ.
FreeBSD на EC2
Ссылки:
AMI
для FreeBSD 15.0-RELEASE URL: https://www.freebsd.org/releases/15.0R/ec2-ami-ids/release/
Контакт: Colin Percival <cperciva@FreeBSD.org>
FreeBSD доступна на EC2-инстансах как amd64 (Intel и AMD), так и arm64 (Graviton).
Список EC2 AMI для FreeBSD 15.0-RELEASE был добавлен на веб-сайт FreeBSD. Эта страница включает JavaScript, позволяющий фильтровать список по региону, архитектуре, типу (flavour) и корневой файловой системе.
Теперь действует процесс публикации обновлённых EC2 AMI в ответ на консультации по безопасности; в настоящее время у нас есть AMI для FreeBSD 15.0-RELEASE-p5, и мы ожидаем, что обновлённые AMI обычно будут доступны в течение нескольких часов после публикации консультаций. Идентификаторы этих AMI публикуются через SSM Parameter Store и веб-сайт FreeBSD. В настоящее время не существует механизма для создания обновлённых AMI для релизов 14.x.
Проблема, из-за которой прерывания ввода-вывода драйвера ena(4) все попадали на CPU 0 в системах arm64, была исправлена в main. Исправление должно присутствовать в 15.1-RELEASE (июнь) и 14.5-RELEASE (сентябрь).
Проблема, из-за которой драйвер ena(4) не подключался при загрузке FreeBSD на инстансах r8i.96xlarge, была исправлена в main. Ожидается, что исправление будет присутствовать в 15.1-RELEASE (июнь) и 14.5-RELEASE (сентябрь).
Спонсор: Amazon
Спонсор: https://www.patreon.com/cperciva
Интеграция облачной платформы STACKIT во FreeBSD
Ссылки:
STACKIT URL: https://stackit.com/
Интерфейс
командной строки STACKIT URL: https://github.com/stackitcloud/stackit-cli
Контакт: Robert Gogolok <gogolok@gmail.com>
Я работаю над тем, чтобы FreeBSD стала платформой первого класса для управления ресурсами в STACKIT — европейском облаке с суверенитетом данных. Цель — предоставить сообществу BSD нативный и надёжный доступ к инструментам IaaS и PaaS STACKIT.
Нативные бинарные файлы: В дополнение к существующему порту sysutils/stackit, нативные бинарные файлы FreeBSD (amd64/arm64) теперь включены в каждый официальный вышестоящий релиз.
Вклад в вышестоящие проекты:
Будущая работа:
-
Обеспечить корректную работу официального Terraform Provider для STACKIT на FreeBSD.
Контейнеры и FreeBSD: Cloud Native Buildpacks
Ссылки:
Cloud Native Buildpacks (CNBs)
URL: https://buildpacks.io/
Репозиторий Buildpacks
на GitHub URL: https://github.com/buildpacks/pack
Контакт: Robert Gogolok <gogolok@gmail.com>
Cloud Native Buildpacks (CNBs) преобразуют исходный код приложения в образы контейнеров. Эти образы могут работать в любом облаке. С помощью buildpacks организации могут сконцентрировать знания о передовых практиках сборки контейнеров в специализированной команде, вместо того чтобы заставлять разработчиков приложений по всей организации индивидуально сопровождать свои собственные Dockerfile.
С момента последнего отчёта в 2025Q1 проект перешёл от экспериментальной поддержки к официальному предоставлению бинарных файлов:
-
Как основной инструмент CLI
pack, так и ключевой компонентlifecycleтеперь поставляются с бинарными файлами для FreeBSD при каждом новом релизе вышестоящего репозитория. -
Новый порт для CLI,
sysutils/pack, был отправлен (PR 292952). Это позволит пользователям устанавливать инструмент с помощьюpkg install packпосле того, как порт будет зафиксирован. -
Официальный репозиторий buildpacks/samples теперь включает pull request (PR #201) для FreeBSD в статусе Work-In-Progress.
Следующие шаги сосредоточены на снижении порога входа для разработчиков и улучшении автоматизации процесса сборки для FreeBSD:
-
Найти коммиттера портов FreeBSD, который рассмотрит и добавит новый порт sysutils/pack в дерево портов.
-
Решить известную проблему в
pack builder create, где инструмент ошибочно пытается использовать URL-адреса, не предназначенные для FreeBSD, для загрузки определённых бинарных файлов. -
Изучить возможность создания buildpacks в стиле Paketo специально для FreeBSD. Это обеспечит сборки с «нулевой конфигурацией» для популярных языков (например, Go), создающие внутри контейнеров нативные бинарные файлы для FreeBSD.
Документация
Значительные изменения в дереве документации, страницах Справочника или новые внешние книги/документы.
Проект русскоязычной документации FreeBSD (The FreeBSD Russian Documentation Project)
Ссылки:
Официальный веб-сайт FreeBSD
на русском языке URL: https://www.freebsd.org/ru/
FAQ URL:
https://docs.freebsd.org/ru/books/faq/
Сайт
проекта русской документации FreeBSD URL: https://github.com/freebsd-doc-ru/freebsd-doc/discussions
Контакт: Андрей Захватов (Andrey Zakhvatov) <andy@FreeBSD.org>
Контакт: Владлен Пополитов (Vladlen Popolitov) <vladlen@FreeBSD.org>
Текущая цель Проекта русскоязычной документации FreeBSD — предоставлять актуальные русские переводы наиболее важных частей документации FreeBSD (FAQ, Руководство, содержимое веб-сайта). Это необходимо для поддержки русскоязычных пользователей качественными официальными техническими материалами и для расширения распространённости операционной системы по всему миру. Мы надеемся, что эта инициатива получит поддержку в русскоязычном сообществе FreeBSD и приведёт к увеличению объёма переведённых материалов.
В течение последнего квартала:
-
100% текста в Weblate переведено, включая новое «Руководство по доступности FreeBSD».
-
Статья «Настройка журналирования UFS для настольного компьютера» была переписана и расширена с добавлением дополнительной информации, включая обновления о Soft Updates с журналированием.
-
Русскоязычный раздел сайта www.FreeBSD.org/ru полностью переведён — 100% его страниц теперь доступны на русском языке.
-
Для релиза FreeBSD 14.4 полный комплект документации к релизу (примечания к выпуску, errata и так далее) был своевременно переведён на русский язык одновременно с оригинальными английскими версиями.
-
Инициирован проект по переводу справочных страниц (man pages) FreeBSD, который находится на самой ранней стадии. Предварительные примеры можно найти на GitHub.
План на следующий квартал:
-
Продолжить текущий проект по переводу страниц Справочника FreeBSD.
Ознакомьтесь с официальным руководством по переводу, если вы хотите помочь.
Мы будем признательны за вашу помощь в переводе следующих материалов:
-
Веб-страницы
-
Справочные страницы (man pages)
Порты
Изменения, затрагивающие Коллекцию портов, будь то массовые изменения, затрагивающие большую часть дерева, или отдельные порты.
KDE во FreeBSD
Ссылки:
Инициатива KDE/FreeBSD URL:
https://freebsd.kde.org/
FreeBSD — KDE Community
Wiki URL: https://community.kde.org/FreeBSD
Контакт: Список рассылки KDE во FreeBSD <kde@FreeBSD.org>
Проект KDE во FreeBSD упаковывает CMake, Qt и программное обеспечение из сообщества KDE для дерева портов FreeBSD. Программное обеспечение включает в себя полноценное окружение рабочего стола под названием KDE Plasma (как для X11, так и для Wayland) и сотни приложений, которые могут использоваться на любой машине FreeBSD. Команда KDE является частью команд desktop@ и multimedia@, создавая программный стек, чтобы сделать FreeBSD красивой и пригодной для использования в качестве повседневной графической рабочей станции.
Инфраструктура
Qt6, PyQt6 и PySide6 были обновлены до версии 6.10.2. Порты для Qt 6.11.0 доступны для тестирования в ветке разработки.
Стек KDE
Релизы KDE Frameworks, Plasma и Gear происходят очень регулярно. Команда KDE добавляет эти обновления вскоре после их вышестоящего релиза.
-
Порты KDE Frameworks были обновлены до версии 6.24.
-
Рабочий стол KDE Plasma был обновлён до версии 6.6.3.
-
KDE Gear был обновлён до версии 25.12.3.
Недавнее обновление Plasma выявило ошибку в реализации timerfd(2) во FreeBSD, которая вызывает высокую загрузку CPU в plasmashell. Ошибка уже исправлена во FreeBSD-CURRENT и перенесена в затронутые стабильные ветки.
GCC в FreeBSD
Ссылки:
Проект GCC URL: https://gcc.gnu.org/
Серия релизов GCC 13 URL:
https://gcc.gnu.org/gcc-13/
Серия релизов GCC 14 URL:
https://gcc.gnu.org/gcc-14/
Серия релизов GCC 15 URL:
https://gcc.gnu.org/gcc-15/
Серия релизов GCC 16 URL:
https://gcc.gnu.org/gcc-16/
Контакт: Lorenzo Salvadore <salvadore@FreeBSD.org>
В этом квартале у нас три основные новости.
В январе мы исследовали, почему еженедельные снимки GCC 16 перестали компилироваться, начиная со снимка за ноябрь. Потребовалось много глаз, чтобы понять, что произошло, но в конечном счёте проблема была понята, и в феврале исправление было зафиксировано в вышестоящем репозитории. Подробности можно найти в сообщении об ошибке вышестоящего репозитория. Спасибо всем, кто помог, особенно Марку Милларду (Mark Millard) и Димитрию Андрику (Dimitry Andric).
На данный момент lang/gcc16-devel не собирается на arm64. К сожалению, я пока не нашёл времени, чтобы действительно заняться этим, но надеюсь сделать это в ближайшее время. PR 294062 — это отчёт об ошибке, отслеживающий эту проблему.
Процесс по установке GCC_DEFAULT=15 начался. Обновление до GCC_DEFAULT=14 всё ещё недавнее, и GCC 14 активно поддерживается, поэтому нет спешки с завершением этого обновления; но поскольку такие обновления обычно занимают много времени, я уже начал его. Таким образом, сейчас это не мой главный приоритет: пока это то, на что я трачу свои силы, когда у меня есть свободное время.
Valgrind: стабилизация, исправления и дополнения для FreeBSD 16
Ссылки:
Домашняя страница Valgrind
URL: https://www.valgrind.org/
Новости
Valgrind URL: https://www.valgrind.org/docs/manual/dist.news.html
Контакт: Paul Floyd <pjfloyd@wanadoo.fr>
Когда вышла FreeBSD 14.4-RELEASE и всё прошло гладко, я подумал,
что для этого ежеквартального отчёта будет мало что сказать. Затем
я начал использовать пару машин с 16.0-CURRENT, которые являются
частью фермы серверов GCC. Там я увидел несколько проблем. Поначалу
было гораздо больше сбоев, чем я обычно ожидал. Чуть позже серверы
были обновлены, и Valgrind довольно сильно сломался, выдавая
утверждение (assert) на раннем этапе запуска. Некоторые из этих
проблем были обычным высоким уровнем обслуживания, ожидаемым от
Valgrind. Потребовалось новое подавление Helgrind для внутренних
блокировок, используемых pthread_create. Серверы были
собраны и установлены из исходных кодов, что иногда влияет на стеки
вызовов ошибок. Регрессионные тесты Valgrind довольно чувствительны
к такого рода изменениям, и потребовалась дополнительная
фильтрация. Утверждения были вызваны неверными предположениями в
Valgrind, которые используются, когда инструмент читает свой
собственный бинарный файл, в основном для того, чтобы иметь
возможность напечатать свой собственный стек вызовов в случае сбоя.
Последняя проблема была вызвана изменением способа создания
разделяемых отладочных файлов (split debug files) библиотек.
В целом, это скорее стабилизационный релиз. Относительно мало новых функций.
Valgrind 3.27 должен выйти в конце апреля 2026 года, и devel/valgrind будет обновлён вскоре после этого.
Вот список исправлений ошибок с момента моего последнего отчёта (Q3 2025).
-
Внутренняя очистка обработки аргументов системных вызовов.
-
Дополнительные проверки при создании клиентского стека.
-
Небольшие изменения в наборе правил игнорирования ошибок.
-
Добавлены обёртки системных вызовов для
kexec_load,pdwait,renameat2 -
Системный вызов
pdrforkдобавлен с флагом «не реализован» (системные вызовы типаrforkочень сложно реализовать в Valgrind).
Улучшение OpenJDK в FreeBSD (Improve OpenJDK on FreeBSD)
Ссылки:
Описание проекта URL: https://freebsdfoundation.org/project/improving-openjdk-on-freebsd/
Репозиторий
проекта URL: https://github.com/freebsd/openjdk
Вышестоящий
репозиторий BSD-порта URL: https://github.com/openjdk/bsd-port
Контакт:
Harald Eilertsen <haraldei@FreeBSD.org>
Список рассылки FreeBSD Java <freebsd-java@lists.freebsd.org>
Цель этого проекта — улучшить поддержку OpenJDK для FreeBSD/amd64 и FreeBSD/arm64.
Java является важной средой выполнения для многих высокопроизводительных критически важных корпоративных систем. Обеспечение правильной и эффективной работы приложений на основе Java во FreeBSD важно для того, чтобы FreeBSD оставалась жизнеспособной и привлекательной платформой для предприятий, а также для бизнеса и организаций любого размера.
В этом квартале были достигнуты следующие цели/вехи:
-
Обновлён порт OpenJDK 25 до версии 25.0.2.
-
Исправлена проблема со сборкой headless-вариантов OpenJDK 25 при отсутствии библиотек xorg.
-
Переработан способ начальной загрузки (bootstrapping) портов OpenJDK на FreeBSD:
-
Исправлен и улучшен Serviceability Agent для FreeBSD в основном BSD-порте:
-
Откат поломки, вызванной портом macOS.
-
Исправлено получение стеков вызовов (stack traces) из потоков в отслеживаемом процессе.
-
Исправлена ложная проблема, когда поиск символов нативных символов в разделяемых объектах иногда не удавался.
-
Упрощена функция для чтения произвольной памяти из отслеживаемого процесса.
-
-
Включена сборка/установка Hotspot Disassembler (HSDIS) для FreeBSD. Это необходимо для некоторых тестов на Aarch64, чтобы проверить, что Hotspot генерирует правильные последовательности инструкций в различных окружениях. Пока поддерживается только llvm backend, хотя нет причин полагать, что другие не будут работать.
-
Синхронизирована реализация ThreadWXEnable с macOS. Это позволяет Hotspot переключать доступ на запись/исполнение для сегментов памяти, чтобы он мог генерировать код для последующего выполнения на Aarch64. Это всего лишь небольшая настройка для согласования с API, используемым кодом macOS, хотя наша реализация отличается.
-
Перенесены изменения, связанные с BSD, из основной линии в порты OpenJDK 25 и OpenJDK 26.
-
Добавлен новый порт для OpenJDK 26. Спасибо Грегу Льюису (Greg Lewis) и Курту Миллеру (Kurt Miller) за помощь.
-
Влит первый PR в вышестоящий репозиторий BSD-порта!
Другие заметки:
-
Начата работа по обновлению OpenJDK 25 до версии 25.0.3, запланированной на середину апреля.
-
Я буду рассказывать о проекте и своём опыте работы над ним на конференции foss-north в Гётеборге, Швеция, 28 апреля.
Спонсор: Фонд FreeBSD
Порты — сделать openjdk21 версией JAVA_VERSION по умолчанию
Ссылки: Ошибка 272855 URL: https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=272855 Таблица отслеживания незавершённой работы URL: https://docs.google.com/spreadsheets/d/17hmRQ0ShY4SHHVEkQBVxqK2G88fPZLriTzO26zXdjC4/edit?usp=sharing
Контакт: Ronald Klop <ronald@FreeBSD.org>
Наличие активной среды Java полезно для всех видов приложений FreeBSD.
Версия JAVA_VERSION по умолчанию в портах FreeBSD была изменена с 8 на 21 26 февраля. Это был серьёзный шаг в смене версий. Поэтому потребовалось довольно много работы. Теперь всё сделано.
Все известные порты, которые могли сломаться, были исправлены, и с тех пор не поступало сообщений о регрессиях. Ветка портов 2026Q2 будет первой стабильной веткой портов, в которой OpenJDK 21 будет версией Java по умолчанию.
-
Большое спасибо всем причастным
-
Во втором квартале начата работа по тому, чтобы сделать 25 новой версией JAVA_DEFAULT в main
Порты — сделать openjdk25 версией JAVA_VERSION по умолчанию
Контакт: Ronald Klop <ronald@FreeBSD.org>
Java — это важное окружение для запуска некоторых приложений на FreeBSD. Порты OpenJDK активно поддерживаются и находятся в актуальном состоянии. С октября 2025 года OpenJDK 25 LTS доступен в дереве портов.
Основываясь на фундаменте, заложенном при переводе портов на OpenJDK 21, переключение JAVA_DEFAULT на 25 является гораздо меньшим шагом. Большинство Java-портов компилируются и работают без изменений. Лишь горстка портов требует некоторых исправлений, которые сейчас в процессе.
Работа отслеживается в PR 293559.
Я считаю разумным привести порты в состояние, готовое для установки JAVA_VERSION=25, во втором квартале 2026 года.
План:
-
Запрошен exp-run
-
Проверить последние порты и создать PR или коммит
-
Зафиксировать PR, по которым истекает время ожидания ответа от сопровождающего
-
Возможно, запросить ещё один exp-run
-
После завершения увеличить JAVA_VERSION
Wazuh на FreeBSD
Ссылки:
Wazuh URL: https://wazuh.com
Контакт: José Alonso Cárdenas Márquez <acm@FreeBSD.org>
Контакт: Jesús Daniel Colmenares Oviedo <dtxdf@FreeBSD.org>
Wazuh — это бесплатная платформа с открытым исходным кодом, используемая для предотвращения, обнаружения угроз и реагирования на них. Она способна защищать рабочие нагрузки в локальных, виртуализированных, контейнерных и облачных средах.
Решение Wazuh состоит из агента безопасности конечной точки, развёртываемого на отслеживаемых системах, и управляющего сервера (менеджера), который собирает и анализирует данные, собранные агентами. Кроме того, Wazuh полностью интегрирован с Elastic Stack или OpenSearch Stack, предоставляя поисковую систему и инструмент визуализации данных, который позволяет пользователям перемещаться по своим оповещениям безопасности.
В этом квартале произошло много событий. Многочисленные улучшения и исправления ошибок для улучшения поддержки FreeBSD этой превосходной платформой XDR/SIEM и безопасности.
-
Мы создали репозиторий на GitHub для централизации работы и уменьшения патчей в менеджере и агенте. Ссылки: Репозиторий, b1f5298
-
Пакет Python обновлён до версии 3.11.15. Ссылка: c941e5b
-
Исправлена проблема, которая не позволяла wazuh-manager запускаться при включённой опции MYSQL. Ссылка: c941e5b
-
Исправлена проблема разбора в функции
getPorts()модуля sysinfo. Ссылка: 35fcd6a -
Добавлена поддержка FreeBSD в библиотеку asyncinotify, которая предотвращала корректный запуск Wazuh API. Ссылка: 35fcd6a
-
Теперь Wazuh использует OpenSearch Dashboards 2.19.4. Ссылка: b1f5298
-
Модуль sysinfo теперь может получать информацию о пользователях и группах. Ссылка: e9cebac
-
Исправлена проблема между агентом и менеджером, которая препятствовала успешному активному состоянию для TCP-соединений, и теперь этот протокол используется по умолчанию вместо UDP. Ссылки: 055d5c9, 508a8c8
-
Обновлены файлы SCA, декодеров и правил для FreeBSD, исправлены конфликтные проблемы. Ссылки: 055d5c9, 508a8c8
-
Проблема с Python-скриптами в менеджере препятствовала их корректному выполнению, когда не установлена переменная окружения
CRYPTOGRAPHY_OPENSSL_NO_LEGACY. Ссылка: 8bd6c77 -
Улучшена функция
getSerialNumber()в sysinfo, поэтому менеджер и агент теперь могут использовать sysctlkern.hostuuidдля уникальной идентификации устройств. Ссылка: 284813e -
Исправлена проблема в wazuh-modulesd, которая вызывала SIGSEGV при распаковке базы данных обнаружения уязвимостей и доступе к неинициализированной структуре. Ссылка: d3c13b6
-
Исправлена проблема в агенте, которая вызывала «ошибку разрешения» из-за неправильного владельца файла etc/clients.keys. Ссылка: c74ab75
-
security/wazuh-server переключён с beats7 на beats8. Ссылка: ce6831e
-
Исправлена ошибка сегментации в wazuh-modulesd, когда pkg(8) не установлен в системе, а функция
getPackages()sysinfo пытается получить информацию об установленных пакетах. Теперь эта функция реализована заново для использования SQLite. Ссылки: ff95715, a4242bf -
Применён dos2unix(1) к файлу api.yaml Wazuh API. Ссылка: a4242bf
-
Исправлена проблема с wazuh-apid, которая не позволяла ему запускаться корректно, помечая себя как DOWN, когда
security.bsd.see_other_{u,g}idsустановлен в0. Ссылка: c86d3fc -
Создана страница в вики FreeBSD для централизации проделанной нами работы и того, что осталось сделать. Ссылка: Wiki
Makejails для Wazuh были улучшены и теперь имитируют официальные Dockerfile, поэтому пользователи, знакомые с ними, могут легко развернуть все компоненты Wazuh с помощью AppJail и Director:
Это также добавляет инфраструктуру кластерного режима для Makejails.
Обнаружение уязвимостей (vulnerability detection) ещё не реализовано во FreeBSD, но для устранения этого недостатка был разработан Serpico. Serpico — это сканер безопасности для пакетов и релизов FreeBSD, который сравнивает версии со списком версий, помеченных как уязвимые, и отображает информацию об уязвимостях в компактном формате JSON для лёгкого анализа с помощью других инструментов безопасности. Пакет включает правила для Wazuh и панель управления, которую можно легко установить через веб-интерфейс или OpenSearch Dashboards API.
Текущая версия: 4.14.3
Инициатива по модернизации HPC во FreeBSD: расширение экосистемы и интеграция с вышестоящими проектами
Ссылки:
sysutils/slurm-wlm
URL: https://cgit.freebsd.org/ports/tree/sysutils/slurm-wlm/
net/pmix URL:
https://cgit.freebsd.org/ports/tree/net/pmix/
net/prrte URL:
https://cgit.freebsd.org/ports/tree/net/prrte/
net/openmpi
URL: https://cgit.freebsd.org/ports/tree/net/openmpi/
net/ucx
URL: https://cgit.freebsd.org/ports/tree/net/ucx/
benchmarks/py-reframe-hpc
URL: https://cgit.freebsd.org/ports/tree/benchmarks/py-reframe-hpc/
sysutils/mpifileutils
URL: https://cgit.freebsd.org/ports/tree/sysutils/mpifileutils/
Контакт: Generic Rikka <rikka.goering@outlook.de>
Этот отчёт продолжает текущую инициативу по модернизации HPC-портов FreeBSD, которая направлена на то, чтобы сделать FreeBSD практичной и поддерживаемой платформой для современных программных стеков высокопроизводительных вычислений (HPC).
Предыдущая работа была сосредоточена на обновлении основного планировщика и стека времени выполнения путём модернизации sysutils/slurm-wlm и введения отдельных портов для net/pmix и net/prrte. В течение этого квартала внимание сместилось на расширение окружающей экосистемы HPC, улучшение интеграции между компонентами и передачу исправлений переносимости, обнаруженных в процессе портирования, в вышестоящие проекты.
Долгосрочная цель — предоставить согласованную программную среду HPC в Коллекции портов FreeBSD, которая напоминает то, что пользователи ожидают от HPC-систем на базе Linux, оставаясь при этом поддерживаемой в экосистеме FreeBSD.
Выполненная работа
-
Продолжено отслеживание вышестоящих релизов sysutils/slurm-wlm, поддержание порта FreeBSD в актуальном состоянии с последними вышестоящими версиями. Недавние обновления подтверждают, что Slurm может успешно планировать и выполнять задания на FreeBSD только с минимальным набором патчей.
-
Представлен net/ucx, предоставляющий фреймворк Unified Communication X, используемый современными MPI-реализациями для высокопроизводительной связи.
-
Добавлен benchmarks/py-reframe-hpc, обеспечивающий регрессионное тестирование и рабочие процессы валидации, обычно используемые на производственных HPC-кластерах.
-
Продолжено улучшение совместимости между net/openmpi, net/ucx, net/pmix и net/prrte в Коллекции портов FreeBSD.
Незавершённая работа
-
Портирование sysutils/mpifileutils и его стека зависимостей (devel/libcircle, devel/lwgrp, devel/dtcmp) для предоставления MPI-параллельных файловых утилит, обычно используемых в больших HPC-файловых системах.
-
Передача исправлений переносимости, обнаруженных в процессе портирования, в вышестоящие проекты, такие как UCX и mpifileutils, для уменьшения необходимости в патчах, специфичных для FreeBSD.
-
Продолжающееся сотрудничество с разработчиками SchedMD для передачи улучшений, обнаруженных при поддержке Slurm на FreeBSD, в вышестоящий проект.
-
Координация с сопровождающим порта OpenMPI для улучшения интеграции между OpenMPI и современными сетевыми фреймворками, такими как UCX.
Будущие планы
-
Продолжить расширение экосистемы программного обеспечения HPC, доступной в Коллекции портов FreeBSD.
-
Дальнейшее сокращение локальных наборов патчей путём передачи исправлений переносимости в вышестоящие проекты, когда это возможно.
-
Разработать документацию, описывающую, как стек Slurm + OpenMPI + PMIx + PRRTE + UCX может быть развёрнут совместно на FreeBSD, снижая барьер входа для пользователей, которые хотят экспериментировать с HPC-нагрузками на этой платформе.
-
Предоставить примеры конфигураций и рекомендации по интеграции, чтобы FreeBSD могла служить реалистичной средой разработки и тестирования для HPC-программного обеспечения.
Улучшение поддержки libvirt для гипервизора bhyve
Ссылки:
libvirt: Драйвер
bhyve URL: https://libvirt.org/drvbhyve.html
Контакт: Roman Bogorodskiy <novel@FreeBSD.org>
Выполненная работа
-
Драйвер libvirt/bhyve:
-
Добавлена поддержка arm64.
-
Добавлена поддержка устройств
virtio-scsi. -
Добавлена поддержка конфигурации привязки vCPU к ядрам (vCPU pinning).
-
Добавлена поддержка конфигурации доменов NUMA.
-
Различные незначительные улучшения и исправления ошибок.
-
Планы на следующий квартал
-
Добавление поддержки (целевая, но может перенестись на следующий квартал):
-
Настройки порядка загрузки.
-
Устройств TPM.
-
Полной поддержки приостановки/возобновления работы.
-
Устройств
virtio-consoleи Qemu Guest Agent.
-
-
Улучшение поддержки virt-manager на FreeBSD.
-
Расширение CI libvirt для тестирования на образцах виртуальных машин FreeBSD-CURRENT.
Спонсор: Фонд FreeBSD
Дата последнего изменения: 26 апреля 2026 г. выполнил Vladlen Popolitov
