После двух с половиной лет с момента публикации ветки 13.0 сформирован релиз FreeBSD 14.0. Установочные образы подготовлены для архитектур amd64, i386, powerpc, powerpc64, powerpc64le, powerpcspe, armv7, aarch64 и riscv64. Дополнительно подготовлены сборки для систем виртуализации (QCOW2, VHD, VMDK, raw) и облачных окружений Amazon EC2, Google Compute Engine и Vagrant. Ветка FreeBSD 14 станет последней с поддержкой 32-разрядных платформ. Во FreeBSD 15 останется только поддержка 64-разрядных систем, но при этом сохранится возможность сборки 32-разрядных программ и использования режима COMPAT_FREEBSD32 для запуска 32-разрядных исполняемых файлов в 64-разрядном окружении.
Основные изменения:
- В качестве командного интерпретатора для пользователя root по умолчанию выставлен /bin/sh.
- Для NVME-устройств по умолчанию на всех платформах задействован драйвер nda. Для возвращения старого драйвера nvd в loader.conf предусмотрена настройка «hw.nvme.use_nvd=1».
- Добавлена новая утилита «fwget«, определяющая оборудование, которому необходимы прошивки, и устанавливающая соответствующие пакеты с прошивками. В настоящее время поддерживаются только PCI-устройства и прошивки для GPU Intel и AMD.
- Добавлена новая утилита base64 для кодирования и декодирования данных в формате base64.
- Добавлена утилита tcpsso, позволяющая выставлять опции сокета для существующих соединений TCP (например, можно поменять модуль контроля за перегрузкой или TCP-стек).
- В качестве агента доставки почты по умолчанию вместо sendmail задействован dma (DragonFly Mail Agent). Sendmail сохранён в базовой поставке и обновлён до версии 8.17.1.
- В KTLS, реализацию протокола TLS, работающую на уровне ядра FreeBSD, добавлена поддержка аппаратного ускорения TLS 1.3 на принимающей стороне. Ускорение обеспечено через вынос на сторону сетевой карты некоторых операций, связанных с обработкой зашифрованных пакетов.
- В файл конфигурации jail.conf добавлена директива «.include», позволяющая подключать при загрузке конфигурации дополнительные файлы, в путях к которым допускается использование масок. Расширен sysctl-параметр security.bsd.see_jail_proc, при помощи которого неавторизированным пользователям в отдельном jail-окружении теперь можно запретить принудительное завершение, изменение приоритета и отладку процессов.
- Программы pw и bsdinstall теперь по умолчанию создают пользователей в каталоге «/home», а не в «/usr/home». Символическая ссылка для «/home», указывающая на «/usr/home», больше не создаётся.
- Отключена по умолчанию сборочная настройка PROFILE — профилированные версии системных библиотек больше не предоставляются, вместо них следует использовать аппаратные средства профилирования (hwpmc).
- Включена сборка исполняемых файлов для 64-разрядных архитектур в режиме PIE (Position Independent Executable).
- В гипервизоре Bhyve добавлена возможность проброса доступа к TPM (Trusted Platform Module) и улучшена реализация проброса GPU в виртуальные окружения для чипов AMD и Intel.
- Реализация файловой системы ZFS обновлена до выпуска OpenZFS 2.2. В утилиту makefs добавлена поддержка файловой системы ZFS. Предоставлена возможность создания пула ZFS, связанного с одним виртуальным диском vdev.
- С 256 до 1024 увеличено число поддерживаемых ядер CPU (параметр MAXCPU) в системах на базе архитектуры amd64 и arm64.
- В UFS для конфигураций в которых включено журналирование (soft updates) разрешено выполнение фоновой проверки файловой системы, используя снапшоты UFS. В суперблоки, карты групп цилиндров и inode добавлены дополнительные проверки хэшей для выявления повреждений.
- Добавлена файловая система tarfs, которую можно использовать с tar-архивами, сжатыми при помощи zstd.
- Добавлен инструментарий boottrace для отслеживания событий, произошедших на этапе загрузки и завершении работы системы.
- Добавлена параметр настройки ядра FIRECRACKER для обеспечения запуска FreeBSD в системе виртуализации Firecracker, рассчитанной на запуск виртуальных машин с минимальными накладными расходами. Время загрузки ядра FreeBSD 14 под управлением Firecracker доведено до 25 миллисекунд, что позволяет запускать окружения с FreeBSD по мере необходимости для реализации инфраструктуры бессерверных вычислений.
- В загрузчике, написанном на языке Lua, в специальном sandbox-окружении реализована поддержка выполнения lua-файлов, размещённых в каталоге loader_conf_files.
- Расширена поддержка NFS. Добавлена новая опция монтирования «syskrb5» для поддержки Kerberos в NFSv 4.1/4.2, а также реализована поддержка операции ExchangeID. Реализована возможность запуска nfsd, nfsuserd, mountd, gssd и rpc.tlsservd в изолированном сетевом окружении vnet.
- В скрипте growfs реализована возможность размещения раздела подкачки в конце расширяемой области на диска.
- Добавлен новый DTrace-провайдер kinst (dtrace_kinst), позволяющий проводить трассировку структур ядра.
- В криптоподсистему ядра добавлена поддержка алгоритма шифрования XChaCha20-Poly1035 AEAD, а также добавлен API для использования эллиптической кривой curve25519 (для WireGuard).
- Сокращено время перезагрузки. Добавлен sysctl-параметр kern.reboot_wait_time, через который можно изменить задержку перед фактической перезагрузкой после вывода всех диагностических сообщений в консоль. По умолчанию задержка убрана.
- В ядро добавлена подсистема timerfd, упрощающая портирование программ из Linux.
- Добавлен sysctl machdep.mitigations.zenbleed.enable для блокирования уязвимости Zenbleed в процессорах AMD Zen2.
- В wpa_supplicant и hostapd добавлена поддержка Wi-Fi 6. В драйвере iwlwifi обеспечена работа с чипами Intel, поддерживающими Wi-Fi 6E AX411/AX211/AX210.
- Для ядра на системах amd64 обеспечена поддержка инструментов AddressSanitizer и MemorySanitizer от проекта LLVM.
- В скриптах rc.d разрешено
использование метода status, даже если в скрипте не определено имя программы (procname) и PID-файл. - Скорость передачи данных через последовательный порт в ядре, загрузчиках и пространстве пользователя по умолчанию увеличена с 9600 до 115200 bps. Тон гудка по умолчанию выставлен в 800Hz. Обеспечена интеграция с devd для вывода гудка через звуковую карту. Для консоли vt гудок по умолчанию отключён (для включения нужно выполнить команды «sysctl kern.vt.enable_bell=1» и «kbdcontrol -b normal»).
- Улучшена поддержка архитектуры аппаратного ускорения сетевых операций NXP DPAA2 (Data Path Acceleration Architecture Gen2).
- Добавлен драйвер igc для Ethernet-контроллеров Intel I225, поддерживающий скорость 2.5 Gbps.
- По умолчанию активирована настройка net.inet.tcp.nolocaltimewait, отключающая создание timewait-записей для TCP-соединений, разорванных на стороне локальной системы.
- Расширена и включена по умолчанию поддержка коммуникационного протокола Netlink (RFC 3549), применяемого в Linux для организации взаимодействия ядра с процессами в пространстве пользователя. Некоторые сетевые утилиты переведены на использование Netlink.
- В пакетном фильтре pf обеспечена совместимость с синтаксисом и поведением операций нормализации пакетов (scrubbing) версии pf из OpenBSD. В pfsync реализована возможность использования транспорта IPv6. Формат пакетов pfsync расширен для поддержки очередей, нормализации пакетов и правил route-to.
- В сетевой интерфейс if_stf (IPv6 over IPv4) добавлена поддержка IPv6 Rapid Deployment (RFC 5969). По умолчанию отключён режим IPv6 nodeinfo (RFC 4620).
- Включён по умолчанию sysctl-параметр net.inet.tcp.nolocaltimewait, отключающий создание записей с состоянием timewait для локально прерванных TCP-соединений.
- По умолчанию для TCP задействован механизм управления сетевой перегрузкой CUBIC вместо NewReno, что позволило расширить использование доступной полосы пропускания.
- В IPv4 отключена отправка широковещательных пакетов на нулевой адрес подсети, если такой адрес явно не объявлен широковещательным. Изменение позволяет использовать для хостов адреса, заканчивающиеся на «.0».
- Изменены настройки OpenSSH: в scp по умолчанию задействован протокол SFTP вместо scp/rcp, отключена поддержка подписей RSA/SHA-1, параметры VerifyHostKeyDNS и X11Forwarding выставлены в значение «no», удалена директива VersionAddendum, удалена поддержка настроек HPN.
- В утилиту date добавлена опция «-z» для преобразования часовых поясов.
- В утилиту diff добавлена опция «—color» для наглядной визуализации изменений цветом.
- В утилиту sleep добавлена поддержка единиц измерения, отличных от секунд (например, можно указать «sleep 1h 30m»).
- В утилиты head и tail добавлена поддержка опций «-q» и «-h», а также реализована возможность задания величин с суффиксами в международной системе единиц СИ. В head убрано ограничение на максимальное число строк 2^31.
- В утилиту systat добавлена команда «iolat» для выводе сведений о задержках ввода/вывода, вычисленных планировщиком CAM.
- Библиотека libncursesw разделена на две библиотеки libtinfow и libncursesw. Добавлена поддержка использования в ncurses базы terminfo, а не только termcap.
- Для архитектуры aarch64 (arm64) реализована и включена по умолчанию сборочная опция COMPAT_LIB32, обеспечивающая сборку 32-разрядных библиотек для систем ARM64, позволяющих запускать исполняемые файлы, собранные для платформы armv7.
- Улучшена поддержка облачных систем. Для AWS EC2 добавлены экспериментальные сборки с корневой ФС ZFS и cloud-init. Для Azure предоставлены образы для архитектур arm64 и amd64, на выбор c UFS или ZFS. Добавлен драйвер для виртуальной сетевой карты gve (Google Virtual NIC).
- В систему ACPI добавлена поддержка порогового значения _CR3, позволяющего выставить температуру, при достижении которой система будет переведена в режим сна (S3).
- Обновлены версии входящих в базовую систему сторонних приложений и библиотек: OpenSSH 9.5p1, OpenSSL 3.0.12, awk 2021072, bc 6.6.0, libbsdxml 2.4.7, libfido2 1.13.0, tcpdump 4.99.4, libpcap 1.10.4,
xz 5.4.3, zlib 1.3, zstd 1.5.2. Реализация утилиты objdump заменена на llvm-objump. Компилятор Clang обновлён до ветки 16. - Проведена чистка устаревших систем:
- Из базовой системы удалена поддержка одноразовых паролей OPIE (для возобновления использования можно установить порт security/opie).
- Удалены драйверы для звуковых карт с интерфейсом ISA.
- Удалены утилиты fmtree и minigzip.
- Удалены компоненты ATM в netgraph (NgATM).
- Удалён фоновый процесс telnetd (можно использовать порт net/freebsd-telnetd).
- Удалён класс VINUM в geom.
- Удалены устаревшие драйверы amr, iscsi_initiator, iir, mn, mly, nlmrsa и twa.
- Из ядер GENERIC и MINIMAL удалён параметр VESA.
- Из работающего на уровне ядра криптографического фреймворка OCF (Open Cryptographic Framework) удалена поддержка асимметричных криптографических операций.
- Объявлена устаревшей утилита mergemaster, вместо которой следует использовать etcupdate.
- Удалена утилита portsnap (для извлечения портов следует использовать «git clone https://git.FreeBSD.org/ports.git /usr/ports»).
- Прекращено формирование сборок для архитектуры armv6.
- Удалена поддержка архитектуры MIPS.
Источник: http://www.opennet.ru/opennews/art.shtml?num=60120