|
После двух лет с момента публикации ветки 14.0 сформирован релиз FreeBSD 15.0. Установочные сборки подготовлены для архитектур amd64, aarch64, armv7, powerpc64, powerpc64le и riscv64. Дополнительно поставляются сборки для систем виртуализации (QCOW2, VHD, VMDK, raw) и облачных окружений Amazon EC2, Google Compute Engine и Vagrant.
Начиная с ветки FreeBSD 15, время сопровождения значительных веток после формирования первого релиза (15.0) сокращено с 5 до 4 лет, а новые значительные ветки будут формироваться раз в два года. Промежуточные выпуски (15.1, 15.2, 15.3) будут разрабатываться в рамках фиксированного цикла разработки, подразумевающего публикацию новых версий в одной ветке примерно через каждые 6 месяцев, а не раз в год как было до сих пор. C учётом одновременного сопровождения двух разных значительных веток, новый промежуточный выпуск будет публиковаться раз в 3 месяца (15.4, 16.1, 15.5, 16.2 и т.п.), за исключением подготовки первых релизов новых значительных веток, перед которыми будет 6-месячный перерыв в релизах (например, релиз 15.3 будет сформирован в июне 2027 года, 16.0 в декабре 2027, 15.4 - в марте 2028, 16.1 - в июне 2028).
Основные изменения во FreeBSD 15.0 (в официальном примечании к релизу отражены изменения относительно выпуска 14.0, т.е. помимо специфичных для выпуска 15.0 изменений, упомянуты и возможности уже добавленные в ветках 14.1, 14.2 и 14.3):
- Предоставлена возможность использования пакетного менеджера pkg для установки и обновления компонентов базовой системы. Пакеты pkgbase могут поставляться на установочном носителе для offline-установки или загружаться из репозитория pkg.freebsd.org.
В конфигурации pkg (/etc/pkg/FreeBSD.conf) репозиторий FreeBSD-base не включён по умолчанию. Инсталлятор bsdinstall предлагает два варианта установки: традиционный и с использованием пакетов (pkgbase). Поддержку традиционного способа, при котором базовая система рассматривается как монолитное окружение, обновляемое при помощи утилиты freebsd-update, планируют удалить в ветке FreeBSD 16. Новый метод, подразумевающий установку базовой системы как набора пакетов из репозитория FreeBSD-base, предложен по умолчанию в сборках для виртуальных машин и образов для облачных окружений, но пока рассматривается как экспериментальный для обычных систем.
- Добавлена поддержка сборки FreeBSD в непривилегированных окружениях, не требующих наличия прав root. Без прав root также могут создаваться установочные iso-образы и системные образы для виртуальных машин. На этапе сборки права root были необходимы для создания файлов устройств, выставления прав доступа и монтирования дополнительных файловых систем (например, при создании дисковых образов).
- Реализована поддержка воспроизводимых сборок, позволяющих убедиться, что распространяемые бинарные файлы собраны из предоставляемого исходного кода и не содержат скрытых изменений.
Воспроизводимые сборки обеспечивают идентичность бинарных файлов, формируемых из исходного кода в разных сборочных окружениях.
- Прекращено формирование установочных образов и сборок бинарных пакетов для 32-разрядных архитектур i386, armv6 и powerpc. Из 32-разрядных платформ оставлена только armv7. Возможность сборки 32-разрядных программ и использования режима COMPAT_FREEBSD32 для запуска 32-разрядных исполняемых файлов в окружении на базе 64-разрядного ядра сохранится как минимум до конца жизненного цикла ветки FreeBSD 16.
- Добавлены системные вызовы c реализацией механизма inotify для отслеживания изменений в файловых системах.
- Добавлена поддержка именованных атрибутов файлов (расширенных атрибутов в стиле Solaris), которые планируют поддерживать в качестве альтернативного механизма управления расширенными атрибутами, доступного для ZFS и NFSv4. Отличия от традиционных для FreeBSD и Linux методов работы с расширенными атрибутами сводится к представлению атрибутов в служебной директории, не видимой в основном пространстве имён ФС и ассоциированной с файлом. Работа с атрибутами производится как с обычными файлами, например, для определения списка атрибутов можно выполнить функцию readdir().
- Объявлен готовым к применению модуль mac_do, позволяющий задавать политики, разрешающие непривилегированным пользователям изменять учётные данные процессов. Для запуска команд под другим пользователем подготовлена утилита mdo похожая на утилиту su, но не требующая suid root.
- Состояние DRM-драйверов i915 и amdgpu синхронизировано с ядром Linux 6.9. Драйверы беспроводных устройств rtw88 (Realtek 802.11n/ac), rtw89 (Realtek 802.11ax)
и iwlwifi (Intel 02.11a/b/g/n/ac/ax/be) синхронизированы с ядром Linux 6.17.
- Включена по умолчанию реализация протокола TLS на стороне ядра (KTLS).
- Добавлена утилита sndctl для управления настройками звуковых карт.
- Добавлена утилита mididump для дампа событий MIDI 1.0 в режиме реального времени.
- В гипервизор bhyve добавлен новый сетевой бэкенд "slirp", использующий библиотеку libslirp с реализацией сетевого стека в пространстве пользователя. Бэкенд "slirp" позволяет организовать доступ к сети гостевой системы из хост окружения без отдельной настройки сети на стороне хоста.
- Реализация Kerberos в основном составе FreeBSD заменена c Heimdal Kerberos на MIT Kerberos. Для возвращения Heimdal Kerberos при сборке можно использовать флаг WITHOUT_MITKRB5. Во FreeBSD 16 поддержка сборки Heimdal Kerberos будет удалена.
- Поведение системных вызовов setgroups, getgroups и initgroups при обработке групп пользователей приближено к другим платформам (отличие реализации во FreeBSD сводилось к хранению эффективного идентификатора группы процессов в нулевом элементе массива со списком групп).
- В настройках пакетного менеджера pkg включён по умолчанию новый репозиторий FreeBSD-kmods, в котором размещены пакеты с модулями ядра, собранными для конкретных релизных веток 15.x-RELEASE, а не постоянно обновляемой ветки 15-STABLE. Репозиторий FreeBSD-kmods решает проблему с установкой драйверов, завязанных на нестабильные интерфейсы ядра (например, графические драйверы). Ранее присутствующие в /etc/pkg/FreeBSD.conf репозитории "FreeBSD" и "FreeBSD-kmods" переименованы в "FreeBSD-ports" и "FreeBSD-ports-kmods".
- В NFS добавлена поддержка операции CLONE, определённой в спецификации NFSv4.2 и позволяющей организовать быстрое копирование файлов через клонирование блоков на сервере. Режим пока работает только при экспорте через NFS разделов ZFS.
- На системах amd64 добавлена возможность использования более 4TB ОЗУ.
- Добавлен драйвер ufshci для поддержки контроллеров систем хранения с интерфейсом UFSHCI (Universal Flash Storage Host Controller Interface).
- Sysctl net.link.bridge.member_ifaddrs по умолчанию выставлен в 0, т.е. в сетевые мосты можно добавлять интерфейсы без IP-адресов.
- Повышена надёжность работы разделов с ФС UFS, содержащих более 2,000,000,000 inode. В реализации ФС UFS1 решена проблема 2038 года (можно использовать даты до 2106 года).
- Добавлена опция сетевых сокетов SO_SPLICE для объединения TCP-соединений (подобие прокси, работающего без копирования данных в пространство пользователя).
- В утилите grep по умолчанию отключён обход символических ссылок при рекурсивном поиске.
- Добавлен модуль ядра nvmftа для поддержки контроллеров NVMe over Fabric и утилита nvmecontrol для подключения к внешнему контроллеру NVMe over Fabric.
- В утилиту date добавлена поддержка вывода времени с наносекундной точностью, например, "date -Ins" выведет "2024-04-22T12:20:28,763742224+02:00".
- В jail добавлена поддержка опции zfs.dataset для добавления в изолированное jail-окружение раздела, снапшота или клона ZFS. В команду jail добавлена поддержка параметров "meta" и "env", через которые можно привязывать метаданные или передавать переменные окружения. Добавлена возможность адресации jail-окружений по jail-дескрипторам, для работы с которыми предложены функции jail_set и jail_get, а также системные вызовы jail_attach_jd и jail_remove_jd. Добавлена возможность использовать фильтры kevent для отслеживания операций создания, удаления, изменения и прикрепления Jail.
- В утилите newsyslog реализован параметр для задания используемого по умолчанию метода сжатия (bzip2, xz, zstd, gzip), избавляющего от необходимости указания отдельный флагов (J, X, Y, Z) в каждой строке newsyslog.conf.
- В стандартной C-библиотеке во многих функциях для работы со строками и памятью задействованы оптимизации на базе инструкций SIMD.
- В шрифт Gallant, используемый в виртуальных терминалах, добавлено более 4300 новых глифов, включая глифы с символами кириллицы и математическими знаками.
- В tty по умолчанию выставлен флаг IUTF8, при котором корректно работает удаление символов UTF-8 при нажатии Backspace.
- Утилита dialog, применяемая в конфигураторе bsdconfig и инсталляторе bsdinstall, заменена на bsddialog.
- В утилите adduser, применяемой в bsdinstall, обеспечено создание отдельного ZFS dataset (раздела, снапшота или клона) для домашнего каталога пользователя, если ZFS dataset уже используется для родительского каталога. Также добавлена возможность использования шифрования домашних каталогов средствами ZFS. Для управления активацией данных возможностей в adduser.conf добавлены параметры "Zcreate" и "Zencrypt" .
- Обеспечено формирование OCI-совместимых образов контейнеров и системных образов для Oracle Cloud.
- Добавлен новый тип образов "small" для облачных окружений, совместимых с AWS EC2. В отличие от базовых образов из них исключены отладочные данные, тесты, 32-разрядные библиотеки, отладчик LLDB, Amazon SSM Agent и AWS CLI. На 76% ускорена загрузка образов "base" для EC2.
- По умолчанию отключена и объявлена устаревшей настройка net.inet.tcp.nolocaltimewait, т.е. возвращено создание по умолчанию TIME_WAIT-записей для TCP-соединений, разорванных на стороне локальной системы. Для настройки времени нахождения соединения в состоянии TIME_WAIT добавлен новый sysctl net.inet.tcp.msl_local.
- По умолчанию отключена поддержка создания сетевых соединений к localhost в которых указывается INADDR_ANY. Для возвращения поддержки можно выставить sysctl net.inet.ip.connect_inaddr_wild sysctl в значение 1.
- Удалён менеджер логических томов gvinum, который использовался для программных RAID. Разработка Gvinum остановилась около 15 лет назад, при том, что в коде имеется ряд известных проблем, которые никто так и не взялся исправить. Вместо gvinum рекомендовано использовать gconcat, gmirror, gstripe, graid или zfs.
- Намечен к удалению во FreeBSD 16 драйвер agp (Accelerated Graphics Port), необходимый для работы многих драйверов для старых видеокарт. Также объявлены устаревшими и запланированы к удалению драйверы: fdc (IBM PC Floppy Disk Controller), firewire (IEEE1394 Serial Bus), le (AMD Am7900 LANCE и Am79C9xx Ethernet) и upgt (USB 802.11g).
- Объявлена устаревшей функция readdir_r.
- В SNMP-сервере bsnmpd прекращена поддержка транспорта UDP.
- Прекращена генерация хостовых ключей RSA для SSH и EC2 AMI. Из OpenSSH удалена поддержка DSA. Удалена БД publickey, завязанная на алгоритм DES.
- Из базовой системы удалены ftpd и shar, вместо которых следует использовать порты ftp/freebsd-ftpd и sysutils/freebsd-shar.
- Объявлена устаревшей утилита fdisk, вместо которой следует использовать gpart.
- В категорию устаревших переведён драйвер syscons, который несовместим с UEFI, не поддерживает UTF-8 и завязан на глобальную блокировку.
- Обновлены версии LLVM 19.1.7, OpenSSH 10.0p2, OpenSSL 3.5.4, OpenZFS 2.4.0rc4, Lua 5.4.8, jemalloc 5.3.0, Awk 20250804 (с поддержкой UTF-8), bc 7.1.0, unicode 16.0.0, ncurses 6.5, libarchive 3.8.2, tcpdump 4.99.5, unbound 1.24.1, less 679, file 5.46, GoogleTest 1.15.2.
|