Несколько дней назад мы публиковали статью о FreeBSD для Mac, операционной системе ravynOS, которая поддерживает максимальную совместимость с нативными приложениями для MacOS. Ну а сейчас, спустя полгода, вышел новый релиз самой FreeBSD, это версия 14.1. Как обычно, разработчики подготовили образы для широкого спектра архитектур, включая amd64, i386, powerpc, powerpc64, powerpc64le, powerpcspe, armv7, aarch64 и riscv64.
Что нового в релизе?
Много чего. Разработчики провели достаточно масштабную работу по оптимизации операционной системы:
Улучшен звуковой стек. Сейчас появилась новая возможность отключения звуковых устройств в асинхронном режиме. Это может пригодиться для горячего отключения USB-аудиокарт. Кроме того, удалён фреймворк snd_clone и связанные с ним параметры sysctl, что дало возможность упростить звуковую подсистему. Вместо отдельных файлов устройств для каждого звукового канала (/dev/dspX.Y) теперь создаётся только основной файл устройства (/dev/dspX).
Появилась поддержка настройки посредством cloud-init — это инструментарий для отладки системы ещё на стадии запуска. Здесь стоит отметить создание пользователей/групп, добавление ключей ssh, настройку параметров подключения к сети, определение стартового скрипта nuageinit и настройку дисковых разделов (config-drive). Реализация совместима с OpenStack и многими хостинг-провайдерами.
Ещё разработчики оптимизировали функции работы со строками и памятью в libc, этого удалось достичь, используя инструкции SIMD на системах с архитектурой AMD64. Разработчики предложили сразу 17 функций, которые оптимизированы посредством SIMD, а также ещё 9 функций, которые оптимизированы посредством SIMD. По словам команды проекта, производительность новых функций увеличилась почти в 6 раз — тест проводился при обработке строк размером 64 символа.
Есть новости и в отношении файловых систем UFS2, которые создаются при помощи newfs, для них теперь по дефолту включается система обеспечения целостности и повышения производительности.
Появилась возможность исключить IPv4 из ядра при его сборке, так что будет поддерживаться лишь IPv6.
И ещё важный момент: обеспечение создания отдельного ZFS-датасета для домашнего каталога пользователя в утилите adduser. Такой каталог применяется, если ZFS dataset уже используется для родительского каталога. Добавлена и возможность применения шифрования домашних каталогов средствами ZFS.
Если говорить про NFS-обработчик mountd, то здесь для декодирования имён каталогов в файле "exports" задействована библиотека "strunvis". Это дало возможность применять специальные символы в именах каталогов. Также появились sysctl-переменные kern.rpc.unenc и kern.rpc.tls для настройки NFS-over-TLS.
Загрузчик может читать файлы конфигурации, которые перечислены в переменной local_loader_conf_files, после файлов конфигурации, определённых в файле /boot/loader.conf.local. Также добавлена возможность извлечения настроек из SMBIOS в привязке к идентификаторам производителя и продукта. Улучшено определение консоли на системах с EFI. Реализация фреймбуфера в загрузчике теперь может использовать консольные видеодрайверы.
Добавлена также поддержка выставления приоритета процессам на базе настроек из файла ".login.conf", размещённого в домашнем каталоге. Так, теперь при выставлении приоритета добавлена поддержка значения inherit, где приоритет и umask выставляются такими же, как у родительского процесса.
В утилиту "date" добавлена поддержка наносекундной точности — например, "date -Ins" выдаст "2024-06-04T10:20:28,763742224+05:00", а "date +%N" — "415050400".
В утилите "dtrace" реализована возможность формирования вывода в форматах, удобных для автоматического разбора и просмотра, таких как JSON, XML и HTML.
В утилиту "usbconfig" встроена возможность вывода дополнительной информации об USB-устройствах и производителях, соответствующей описаниям из файла /usr/share/misc/usb_vendors.
В драйвер "ice" добавлена поддержка Ethernet-контроллеров Intel E800 с пропускной способностью 100 Gb/s.
В Ethernet-драйвер "msc" добавлена поддержка выставления MAC-адреса на основе параметра "smsc95xx.macaddr", передаваемого некоторыми моделями плат Raspberry Pi.
Проведена работа по повышению стабильности драйвера "iwlwifi" для беспроводных чипов Intel.
Добавлена возможность использования нескольких областей PCI MCFG на системах amd64 и i386 для сегментирования адресного пространства PCI-устройств.
Что касается загрузчика, то теперь появилась возможность задействования LinuxBoot (loader.kboot) для загрузки FreeBSD из окружений на базе Linux на системах aarch64 и amd64.
В rc.conf теперь поддерживается параметр kdc_restart, включающий автоматический перезапуск kdc (сервер Kerberos 5) в случае его аварийного завершения. Дополнительно доступен параметр kdc_restart_delay, через который можно установить задержку перед перезапуском.
Образы новой системы можно загрузить по этой ссылке. Кроме них есть и сборки для систем виртуализации (QCOW2, VHD, VMDK, raw) и облачных окружений Amazon EC2, Google Compute Engine и Vagrant.