Опубликован отчёт о развитии проекта FreeBSD за второй квартал 2025 года. Из изменений можно отметить:
- FreeBSD Core Team разрабатывает правила использования AI и больших языковых моделей при разработке. В качестве возможных областей применения AI во FreeBSD отмечается перевод документации, резюмирование больших/непонятных документов, отслеживание ошибок и анализ кода. Для генерации кода AI пока применять не планируют, в основном из-за возможных лицензионных проблем.
- В инсталлятор добавлена поддержка системы pkgbase, позволяющей устанавливать компоненты базовой системы в формате, пригодном для управления и обновления при помощи пакетного менеджера pkg. Пакеты pkgbase могут как поставляться на установочном носителе для offline-установки, так и загружаться из репозитория pkg.freebsd.org.
- Продолжается развитие проекта bsd-user-4-linux, позволяющего запускать в Linux-системах приложения, собранные для FreeBSD. Целью проекта заявлена возможность сборки пакетов для FreeBSD в Linux, используя родной сборочный инструментарий FreeBSD. Для запуска исполняемых файлов FreeBSD в Linux задействован форк эмулятора QEMU, работающий в режиме User Mode Emulation, предназначенном для запуска процессов, скомпилированных для других CPU и операционных систем (QEMU выполняет трансляцию системных вызовов и обработку сигналов).
На текущем этапе разработки уже можно пересобрать FreeBSD командой “make -j80 buildworld”, находясь в Linux.
Работает запуск основных системных утилит, таких как sh, bash, find, grep, git и clang. Из отсутствующей функциональности отмечается невозможность запуска отладчика GDB, недоступность IPC, функций kevent/kqueue и некоторых sysctl (например, name2oid). Из недавних изменений отмечается переход на кодовую базу QEMU 9.2 и реализация поддержки механизма kqueue() в Linux, используя libkqueue. - Для FreeBSD развивается платформа виртуализации Sylve, позволяющая через web-интерфейс управлять запуском виртуальных машин на базе гипервизора Bhyve и контейнеров на базе Jail-окружений. Проект нацелен на предоставление функциональности, похожей на Linux-дистрибутив Proxmox VE, но базирующейся на FreeBSD, Bhyve и ZFS. Из изменений во втором квартале отмечено добавление графиков для визуализации нагрузки на CPU, потребления ОЗУ и сетевой активности, интерфейс для работы с сетевыми интерфейсами, возможности для работы с ФС, разделами, пулами и снапшотами ZFS, поддержка загрузки образом виртуальных машин из web-интерфейса, возможности для создания и удаления виртуальных машин для Bhyve с поддержкой привязки к CPU, VNC-консолью и пробросом PCI-устройств.
- Улучшен порт libvirt для гипервизора bhyve. Представлен проект тестирования bhyve-драйвера от libvirt в системе непрерывной интеграции с FreeBSD. Повышена совместимость драйвера bhyve. Добавлена поддержка устройств virtio-rnd, конфигурации NVRAM и расширенной статистики. Реализована поддержка сетевого доступа через NAT на базе пакетного фильтра pf.
- Улучшена обработка tlsbase на системах amd64, что положительно отразилось на работе приложений, вручную управляющих TLS (Thread-Local Storage), таких как Wine.
- В компоновщике rtld (Runtime linker) реализована опция “-z initfirst”, предоставляющая дополнительные возможности для управления разрешенем символов и порядком инициализации в динамически связываемых приложениях.
- Добавлена поддержка интроспекции kqueue и расширены возможности для анализа использования в процессах механизмов уведомления о событиях ядра. В утилите procstat реализован вывод отчёта о состоянии kqueue.
- В ядре реализован флаг EXTERROR, информирующий о наличии расширенной информации об ошибке. При помощи EXTERROR приложения могут получать дополнительные диагностические сведения при возникновении ошибок, не ограничивающиеся кодом ошибки.
- В кодовой базе, на основе которой формируется ветка FreeBSD 15, прекращено формирование установочных образов и сборок бинарных пакетов для 32-разрядных архитектур i386 и powerpc. Из 32-разрядных платформ в ветке FreeBSD 15 оставлена только платформа armv7. Режим COMPAT_FREEBSD32, позволяющий запускать 32-разрядные исполняемый файлы в 64-разрядных окружениях, оставлен, но в портах поддержка 32-разрядных сборок будет прекращена.
- В ветке FreeBSD 15 поведение системных вызовов setgroups, getgroups и initgroups при обработке групп пользователей приближено к другим платформам (отличие реализации во FreeBSD сводилось к хранению эффективного идентификатора группы процессов в нулевом элементе массива со списком групп).
- Ведётся работа по замене реализации Kerberos в основном состава FreeBSD c Heimdal Kerberos на MIT Kerberos. MIT Kerberos уже включён в состав ветки FreeBSD 15-CURRENT, но пока активируется только через опцию WITH_MITKRB5.
- Опубликованы первые выпуски приложения SysctlTUI, предоставляющего текстовый интерфейс для навигации по дереву параметров sysctl, просмотра связанных метаданных и изменения настроек.
- Ведётся разработка нового менеджера разделов Geomman (GEOM Manager), основанного на sade и предоставляющего такие дополнительные возможности, как перемещение, копирование и вставка дисковых разделов.
Помимо UFS в Geomman поддерживаются ext2, ext3, ext4, еxFAT и NTFS, а также запланирована поддержка ZFS. Среди прочего можно увеличивать и уменьшать размер существующих разделов с ФС ext4 и создавать новые разделы exFAT. - Продолжена работа по улучшению звукового стека FreeBSD. Проведена чистка драйвера sound, добавлена утилита sndctl, реализована поддержка AFMT_FLOAT и значительно улучшена работа со звуковыми устройствами на ноутбуках, начался рефакторин подсистемы MIDI.
- Выполнено портирование DRM-драйверов (i915 и amdgpu) из ядра Linux 6.9. Изменения развиваются для ветки FreeBSD 15-CURRENT, но вероятно будут бэкпортированы в ветку 14-STABLE.
- Ведётся работа по добавлению режимов низкого энергопотребления S0ix и s2idle (Suspend-To-Idle), которые позволят снизить энергопотребление при использовании FreeBSD на современных ноутбуках с процессорами Intel и AMD, некоторые из которых не поддерживают режим сна S3. В драйвер USB4 добавлена возможность перехода в режим пониженного энергопотребления C3.
- Для ветки FreeBSD 15 развивается поддержка именованных атрибутов файлов (расширенных атрибутов в стиле Solaris), которые планируют поддерживать в качестве альтернативного механизма управления расширенными атрибутами, доступного для ZFS и NFSv4. Отличия от традиционных для FreeBSD и Linux методов работы с расширенными атрибутами сводится к представлению атрибутов в служебной директории, не видимой в основном пространстве имён ФС и ассоциированной с файлом. Работа с атрибутами производится как с обычными файлами, например, для определения списка атрибутов можно выполнить функцию readdir().
- Подготовлены патчи с реализацией опции монтирования “packrat”, позволяющей организовать для NFSv4.1/4.2 агрессивное кэширование данных в локальном энергонезависимом хранилище на стороне клиента.
- На базе LinuxKPI, прослойки для запуска Linux-драйверов во FreeBSD, развивается обновлённый стек net80211 с поддержкой стандартов Wi-Fi 5 (802.11ac) и Wi-Fi 6 (802.11ax). Прошивки iwlwififw для драйвера Intel iwlwifi удалены из базовой системы в пользу установки из портов и использования утилиты fwget.
В linuxkpi реализована поддержка wlan_tkip, позволяющая использовать криптографические протоколы TKIP (Temporal Key Integrity Protocol) и Michael (Message Integrity Code). - Реализована поддержка отладочного интерфейса, предоставляемого в контроллерах XHCI USB и позволяющего использовать специальный кабель USB 3 для управления отладкой ядра FreeBSD. Подобный интерфейс может применяться для отладки проблем в графических драйверах, приводящих к нарушению вывода.
- Ведётся работа по портированию для ядра FreeBSD оригинальной реализации файловых систем HFS и HFS+, драйвер для которых был открыт компанией Apple.
- Подготовлен порт FreeBSD для смартфона Pinephone Pro, включающий прошивку с поддержкой управления с сенсорного экрана и простым десктоп-окружением. К сожалению несколько дней назад проект Pine64 объявил о снятии с производства и прекращении продаж смартфонов PinePhone Pro.
- Число портов увеличилось с 36332 до 36605. Среди обновлений в портах: GCC 15, OpenJDK 24.0.1, GNOME 47, KDE Plasma 6.4.1, KDE Framework 6.15.0, Sway 1.11, Qt 6.9.1, Ruby 3.4.4, Rust 1.87.0, SDL 3.2.16, Xorg server 21.1.18. По умолчанию задействованы версии Go 1.24, Perl 5.40, Ruby 3.3, PostgreSQL 17. Окружение для Linuxulator обновлено до Rocky Linux 9.
- Добавлена опциональная поддержка сборки портов с указанием флагов компиляторов, включающих дополнительные режимы усиления безопасности. В make.conf реализованы настройки: WITH_FORTIFY для защиты от переполнений буфера через добавление дополнительных проверок в такие функции, как memcpy, strcpy, sprintf; WITH_STACK_AUTOINIT для автоматической инициализации локальных переменных; WITH_ZEROREGS для защиты от ROP-эксплоитов (Return-Oriented Programming) и утечки информации через регистры CPU.
Release.
Ссылка here.