FreeBSD развивается спокойно: очередной выпуск редко переворачивает систему с ног на голову, зато может избавить от нескольких неприятных обходных путей. Версия 14.5 вышла спустя полгода после 14.4. В ней есть изменения, которые пригодятся разработчикам, администраторам, да и обычным гикам тоже. Чем-то из ряда вон этот релиз не является, но хороших нововведений немало.
Самая заметная новинка — собственная реализация Linux-интерфейса inotify для слежения за файлами. Но обновление этим не ограничивается: поправили загрузку, работу с FAT32, сетевые настройки и ряд утилит. Давайте разберем, что там и как. И да, если уже успели оценить 14.5 (а за пару недель много кто успел), делитесь в комментариях, как вам новая версия.

За изменениями файлов теперь можно следить через inotify
Допустим, в папке проекта появился новый файл. Редактору кода нужно сразу его заметить, чтобы обновить список, а не заглядывать в папку каждую секунду. В Linux за такими изменениями обычно следят через inotify. Во FreeBSD для этого есть свой механизм — kqueue, но устроен он иначе. Поэтому программы, написанные под inotify, раньше приходилось дорабатывать, чтобы они работали во «фряхе».
Авторам приходилось делать отдельный слой совместимости или переписывать соответствующую часть программы. В 14.5 в ядре появились системные вызовы inotify_init, inotify_add_watch и inotify_rm_watch, а в стандартной библиотеке — функции, через которые к ним обращаются приложения. Благодаря этому софт стало проще перенести на FreeBSD на уровне исходного кода, хотя и не без издержек.
Что еще? Бывает, что программа сама с файлами не работает, но использует библиотеку, которой нужен inotify. Раньше из-за этой одной детали ее перенос на FreeBSD мог застопориться: приходилось менять библиотеку или писать для нее отдельный код. Теперь проблем вроде бы ожидается меньше. Ну и kqueue остался на месте.
В той же части системы появилась настройка security.bsd.unprivileged_kenv_read. Она позволяет закрыть чтение переменных окружения ядра для процессов без необходимых привилегий, в том числе для root внутри jail. Не всем программам стоит показывать такие данные, и администратор теперь может закрыть к ним доступ. Ограничение нужно включить в настройках — после обновления оно само не заработает.
Загрузка, диски и устройства: меньше досадных сюрпризов
У загрузчика появились команды be-list и be-switch: первая показывает доступные загрузочные окружения, вторая помогает выбрать нужное прямо из его командной строки. Такой вариант пригодится, если после неудачного изменения система не дошла до обычного меню или нужно вручную вернуться к предыдущему состоянию.
Поиск ядра теперь учитывает символические ссылки, а скрипты Lua могут отбирать окружения, которые показываются пользователю. Также исправлена ошибка loader.efi на AMD64: при загрузке микрокода или большого числа модулей некоторые машины могли не стартовать из-за особенностей размещения данных в памяти. Установщик bsdinstall, в свою очередь, снова корректно создает запись FreeBSD в UEFI после установки.
Есть поправка и для ZFS: скрипт подключения наборов данных теперь запускается раньше проверки временного каталога. Если /tmp расположен на отдельном наборе ZFS, а корневой раздел доступен только для чтения, то прежний порядок мог заставить систему ошибочно решить, что каталог недоступен, и попытаться подключить tmpfs. Поменяли последовательность запуска, поэтому нужный раздел успевает появиться до проверки. Исправление не меняет устройство ZFS, зато убирает зависимость от случайного порядка старта служб.
В драйвере msdosfs научились обрабатывать имена файлов на FAT32, где встречаются символы за пределами базовой многоязычной плоскости Unicode. Среди них — многие эмодзи: теперь файлы с такими именами на флешке или другом FAT-разделе доступны корректно. Для ленточных накопителей добавили LTO-10 и LTO-10P в mt и libmt. Драйвер smartpqi получил поддержку новых контроллеров Microchip Smart Storage SCSI и более широкого поля размера буфера для операций ввода-вывода. Вроде бы и мелочь, а приятно.
Новости по «железу» на этом не закончились. Поддержан еще один вариант SATA-контроллера Marvell 88SE9128, из-за отсутствия которого возникали проблемы, например, на Gigabyte GA-P55A-UD4. На Mac с двумя графическими чипами появилась возможность использовать предусмотренный ACPI‑режим управления питанием — поведение настраивается через hw.acpi.apple_darwin_osi.
Драйвер asmc больше не обслуживает 32-битные Mac на Intel — владельцам такого оборудования стоит учитывать это перед обновлением. Модули nvidia, nvidia-modeset и nvidia-drm загрузчик теперь не дает подключать слишком рано через loader.conf, поскольку такая последовательность могла закончиться аварийной остановкой ядра.
Утилиты и базовые компоненты
Скрипт rc.firewall теперь умеет брать адреса и подсети для firewall_allowservices и firewall_trusted из отдельных файлов. Когда разрешенных узлов много, список удобнее хранить и править отдельно от основного конфига. Файлы читаются построчно: пустые строки и комментарии пропускаются, адресом считается первое слово строки.
У ipfw появилась переходная логика для работы с ядром FreeBSD 15: при обнаружении нового интерфейса фильтра он вызывает входящую в поставку утилиту ipfw15. Такая гибкость полезна при переходе между ветками, когда версии пользовательских программ и ядра на короткое время расходятся.
Чтоб два раза не вставать, разработчики поправили настройку локального DNS-сервера для машин, у которых есть только IPv6. Скрипт local-unbound-setup теперь учитывает поддерживаемые протоколы и правильно записывает адрес локального резолвера в resolv.conf.
У системного DNS-кода вернулась сортировка адресов по правилам из этого файла и стал строже разбор параметров: лишние символы и неверные числа больше не принимаются молча. Утилита daemon получила ключ -m для указания прав доступа к файлу вывода, что помогает передавать журнал процессу без root.
Команда pwd по умолчанию теперь показывает путь с именами символических ссылок, как требует POSIX. Если скрипт зависел от прежнего физического пути, ему понадобится явный ключ -P.
В инструментах разработки заметнее всего переход Clang на ld.lld как компоновщик по умолчанию. Раньше выбор мог зависеть от порядка каталогов в PATH, и после установки GNU ld сборка неожиданно начинала пользоваться другой программой. Теперь результат меньше зависит от такого совпадения.
Обновился ряд компонентов базовой системы, в том числе теперь доступны: LLVM/Clang 21.1.8, OpenSSL 3.0.21, Unbound 1.26.0, libarchive 3.8.7.
В math.h появились функции семейства sinpi и cospi, позволяющие считать тригонометрические значения для аргумента, умноженного на π — они предусмотрены стандартом C23.
Наконец, набор старых программ lpr таки объявили устаревшим. В примечаниях к выпуску сказано, что его могут убрать еще до выхода FreeBSD 16.0. Для печати рекомендуют CUPS или LPRng из коллекции портов. При этом оставшийся в системе демон lpd тоже исправили: при работе через IPv6 он снова учитывает номер порта из /etc/printcap.
Стратегия формирования релиза и что будет дальше
FreeBSD 14.5 готовили с лета. В конце июля разработчики перестали добавлять крупные новшества в ветку stable/14 и занялись проверкой уже готовых изменений. В августе от нее отделили ветку будущего выпуска, после чего вышли три бета-версии и кандидат на релиз.
Окончательную версию представили 8 сентября. Для нее собрали установочные образы под AMD64, i386, AArch64, ARMv7, PowerPC, PowerPC64 и riscv64, а также образы для виртуальных машин и облачных платформ. Теперь в ветке 14.5 будут исправлять ошибки и уязвимости, обнаруженные после выхода, а в stable/14 продолжится работа над следующим обновлением.
FreeBSD развивают добровольцы, компании и некоммерческий фонд FreeBSD Foundation, который оплачивает часть работы. За второй квартал 2026 года при его поддержке в проект внесли 638 изменений в исходный код системы, 120 — в коллекцию портов и 31 — в документацию. По этим цифрам не понять, насколько велики сами правки, но хорошо видно, что фонд помогает не только разработке ядра.
Раз в квартал участники проекта публикуют отчет о своей работе. По нему можно проследить, какие задачи уже завершены, где возникли трудности и чем разработчики собираются заняться дальше.
Кстати, сейчас одно из заметных направлений развития — ноутбуки. Разработчики продолжают разбираться с переходом в экономичные режимы сна S0ix и возвратом из них, в том числе с проблемами NVMe и состояниями питания устройств. Для встроенной графики Intel и AMD переносят DRM-драйверы из Linux, версия за версией: в квартальном отчете команда сообщила о завершении работы над базой Linux 6.12 для FreeBSD 15.1, а переносы 6.13 и 6.14 тогда находились на проверке или в очереди.
Идут также работы над беспроводной сетью и поддержкой ноутбуков Framework. Все это направления развития проекта, а не перечень обещанных возможностей FreeBSD 14.5.
В виртуализации развивается связка libvirt и bhyve. Поддержка virtio-console и QEMU Guest Agent уже добавлена в соответствующий драйвер libvirt, а следующими задачами названы выбор порядка загрузки, TPM, приостановка виртуальных машин и расширение автоматических проверок.
Параллельно обсуждают изменения планировщика, в том числе более разумное распределение задач между разными ядрами гибридных процессоров. Даты выхода каждой из этих функций разработчики не закрепили за 14‑й веткой. В официальном графике пока есть более понятные ориентиры: FreeBSD 15.2 намечена на декабрь 2026 года, 14.6 и 16.0 — соответственно, на март и декабрь 2027‑го.
Что еще? У 14.5 срок поддержки установлен до 30 июня 2027 года. Предыдущую 14.4 планируют сопровождать до конца декабря 2026-го. Ветка 14-STABLE в целом должна получать поддержку до 30 ноября 2028 года.