Вышел FreeBSD 13.0

Наконец-то вышел FreeBSD 13.0, и это через 2,5 года после ветки 12. Уже готовы версии для архитектур i386, amd64, powercspe, powerpc, powerpc64le, aarch64, riscv64, armv6, armv7. Также разработчики подготовили образы для систем виртуализации (QCOW2, VMDK, VHD, raw) и облачных окружений Vagrant, Google Compute Engine и Amazon EC2.

Главные изменения

  • В FreeBSD 13 перешли на открытую реализацию системы ZFS — OpenZFS. Теперь ОС унифицирована с Linux в этом параметре.
  • Порт для архитектуры ARM64 перевели на первый уровень поддержки. Это значит, что для ARM64 будут делать установочные сборки, бинарные обновления и готовые пакеты + будут решаться уникальные проблемы.
  • Архитектуру i386 перевели на второй уровень поддержки. Всё останется без изменений, кроме отказа от решения специфичных задач.
  • Компоненты clang, lld, lldb, compiler-rt, llvm, libunwind и libc++ обновлены до версии 11.
  • Разработку перевели из централизованной Subversion в децентрализованную систему Git.
  • Базовую систему почистили от приложений под лицензией GPL. Включили  варианты утилит grep и dtc под лицензией BSD. Удалили процесс автоматического монтирования amd, функциональность которого теперь реализована через autofs. Удалили утилиту ctm, вместо которой рекомендуют  использовать порт misc/ctm.
  • Переписали стек маршрутизации, в котором появилась поддержка объектов nexthop, хранящих данные о состоянии, используемом для передачи пакета в желаемую точку назначения. 
  • Добавлена возможность подключения собственных алгоритмов поиска маршрутов. Добавлены алгоритмы поиска маршрутов из DPDK (Data Plane Development Kit) librte, позволяющие оптимизировать работу с очень большими таблицами маршрутизации. 
  • Для запросов proxyarp задействован интерфейс fib. Добавлена возможность изменения числа fib на лету через sysctl net.fibs. Реализована поддержка временных маршрутов для IPv4 и IPv6 (с выставленным временем жизни).
  • Переписана и сделана более масштабируемой поддержка Multipath-маршрутизации, в которой время поиска не зависит от размера списка (O(1)). Новая реализация Multipath теперь связана с параметром ядра ROUTE_MPATH, который заменил собой RADIX_MPATH и включён по умолчанию. Для управления Multipath предложен sysctl net.route.multipath.
  • Переделан реализованный на уровне ядра криптографический фреймворк, в котором появилась поддержка современных криптографических алгоритмов и упрощён интерфейс для использования шифрования в драйверах и других компонентах ядра. Удалены устаревшие алгоритмы ARC4, Blowfish, CAST128, DES, DES, MD5-HMAC и Skipjack. В IPsec и Kerberos прекращена поддержка алгоритмов, объявленных устаревшими в RFC 8221 и RFC 6649/8429, в том числе 3DES. Удалены ранее объявленные устаревшие алгоритмы в подсистеме дискового шифрования geli и cryptodev.
  • В ядро GENERIC включена поддержка драйверов aesni и armv8crypto для ускорения дискового шифрования на базе geli при помощи инструкций AES-NI для архитектур amd64/i386 и AES-XTS для ARM64.
  • Добавлен драйвер qat для криптоакселераторов Intel QuickAssist (QAT) и драйвер ossl с реализацией ускоренных программных процедур шифрования из OpenSSL, оптимизированных при помощи кода на ассемблере. В драйвере armv8crypto добавлена поддержка AES-XTS и AES-GCM с использованием соответствующих инструкций процессоров ARMv8.
  • Добавлена реализация TLS (kTLS), работающая на уровне ядра FreeBSD, которая позволяет добиться существенного увеличения производительности шифрования для TCP-сокетов. Поддерживается верcий TLS с 1.0 по 1.3. Для шифрования используются криптодрайверы ядра с поддержкой AES-CBC или AES-GCM. Для использования kTLS в пространстве пользователя требуется пересборка OpenSSL с опцией WITH_OPENSSL_KTLS.
  • Добавлен новый тип сетевых буферов mbuf (network data buffer), который может представлять в одном буфере несколько не отражённых физических страниц памяти, что позволяет увеличить производительность вызова sendfile(2) за счёт сокращения размера списков mbuf в буферах сокета.
  • В TCP-стек интегрирована поддержка алгоритма пропорционального снижения интенсивности отправки пакетов (Proportional Rate Reduction, RFC 6937), позволяющего быстрее восстановить оптимальные параметры потока после временных проблем с передачей данных. Для отключения PRR предусмотрен sysctl net.inet.tcp.do_prr.
  • Расширены возможности гипервизора Bhyve: Добавлена поддержка предоставления совместного доступа к файлами при помощи VirtIO-9p (VirtFS). Реализована возможность работы со снапшотами виртуальных машин. Добавлена поддержка устройств PCI HDAudio и дополнительных последовательных портов COM3 и COM4. Удалены устаревшие модели устройств bvmconsole и bvmdebug. Повышена стабильность работы с клиентами VNC, включая macOS-приложение “Screen Sharing”.
  • В драйверы VirtIO добавлена поддержка спецификации VirtIO V1, что улучшило совместимость гостевых систем с FreeBSD с различными эмуляторами и гипервизорами.
  • Для прикрепляемых к jail-окружениям процессов обеспечено преобразование привязок к CPU (изначально привязанный к процессу cpuset будет заменён с учётом cpuset jail-а и выставленных ограничений).
  • Добавлена возможность сборки базовой системы FreeBSD в окружениях на основе других операционных систем. Необходимость сборки в других операционных системах обусловлена желанием задействовать для тестирования FreeBSD инструментарии непрерывной интеграции, завязанные на Linux или macOS.
  • Предложен новый стек MMC/SD, основанный на фреймворке CAM и позволяющий подключать устройства с интерфейсом SDIO (Secure Digital I/O). Например, SDIO используется во WiFi и Bluetooth модулях для многих плат, таких как Raspberry Pi 3. Новый стек также позволяет использовать интерфейс CAM для отправки SD-команд из приложений в пространстве пользователя, что даёт возможность создавать драйверы устройств, работающие на уровне пользователя.
  • Улучшена работа прослойки для совместимости с Linux. Файлы DTS (Device Tree Sources) синхронизированы с ядром Linux 5.8.
  • Добавлена поддержка NFSv4.2 (RFC-7862) и реализована возможность работы NFS поверх шифрованного канала связи на базе TLS 1.3, вместо использования Kerberos (режим sec=krb5p), который ограничивался шифрованием только RPC-сообщений и был реализован только программно.
  • Удалена устаревшая версия отладчика GDB, который раньше был установлен в каталоге /usr/libexec и применялся в утилите crashinfo. Вместо предустановленного GDB для получения детальной информации о причинах краха теперь предлагается установить свежую версию GDB из портов или пакетов. Прекращена поддержка отладки процессов через procfs. Добавлен драйвер netgdb, позволяющий обращаться к отладчику ядра по сети.
  • Из libc удалена небезопасная функция gets (начиная со стандарта C11 данная функция исключена из спецификации) и проведена корректировка портов, ещё использующих данную функцию. Удалены функции cap_random (следует использовать getrandom).
  • Добавлен новый системный вызов copy_file_range, совместимый с реализацией из ядра Linux и позволяющий ускорить копирование данных из одного файла в другой, благодаря выполнению операции только на стороне ядра без предварительного чтения данных в память процесса. Системный вызов также используется в сервере NFSv4.2 для локального выполнения операций копирования на сервере (без передачи клиенту).
  • В механизме асинхронного ввода/вывода POSIX AIO представлена поддержка векторизированных функций. В частности, добавлены системные вызовы aio_writev и aio_readv, позволяющие реализовать векторизированные эквиваленты функций aio_read и aio_write.
  • Прекращена поддержка компонентов пространства пользователя для поддержки формата исполняемых файлов a.out на системах с архитектурой i386. Удалена утилита elf2aout.
  • Объединены утилиты ping и ping6. В ping добавлена возможность установки параметров качества сервиса (QoS) через IP DSCP и Ethernet PCP.
  • В утилите freebsd-update обеспечен показ прогресса загрузки файлов и добавлены команды updatesready и showconfig для проверки наличия обновлений и показа конфигурации.
  • Проведена большая работа по улучшению поддержки систем NUMA (Non-Uniform Memory Access).
  • Обновлены графические драйверы и компоненты графического стека. Решены проблемы с работой окружений на базе протокола Wayland.
  • Добавлена подсистема backlight для создания драйверов управления подсветкой. Добавлен драйвер pwm-backlight для управления подсветкой Pinebook и Pinebook Pro.
  • Поддержка протокола SCTP вынесена в отдельный модуль sctp.ko, который отключён по умолчанию в ядре GENERIC.
  • Для устройств ввода предложен новый драйвер usbhid, использующий фреймворк hid для работы с устройствами USB HID, вместо драйверов ukbd, ums и uhid.
  • В драйвере cpufreq реализована поддержка технологии Intel Speed Shift.
  • Добавлена поддержка новых плат на базе 64-разрядных CPU ARMv8, включая SoC Broadcom BCM5871X и NXP LS1046A.
  • Для архитектуры AMD64 реализована поддержка 57-разрядных виртуальных адресов (LA57). Добавлена поддержка китайских x86 CPU Hygon Dhyana на основе технологий AMD.
  • Порт для архитектуры powerpc64 переведён на использование LLVM и ABI ELFv2 (на системах powerpc64 бинарные файлы из прошлых версий FreeBSD не смогут использоваться во FreeBSD 13). Для powerpc64 портированы драйверы virtio, ixl, mrsas, aacraid, cpld.
  • Удалены драйверы для устаревших Ethernet-адаптеров:
    • bm(4) BMAC
    • cs(4) Crystal Semiconductor CS8900/CS8920
    • de(4) DEC DC21x4x
    • ed(4) NE-2000 and WD-80×3
    • ep(4) 3Com Etherlink III (3c5x9) ISA
    • ex(4) Intel EtherExpress Pro/10 and Pro/10+
    • fe(4) Fujitsu MB86960A/MB86965A
    • hme(4) Sun Microelectronics STP2002-STQ
    • pcn(4) AMD PCnet
    • sf(4) Starfire
    • sn(4) SMC 91Cxx
    • tl(4) Texas Instruments ThunderLAN
    • tx(4) SMC 83c17x
    • txp(4) 3Com 3XP Typhoon/Sidewinder (3CR990)
    • vx(4) 3Com EtherLink III / Fast EtherLink III (3c59x) PCI
    • wb(4) Winbond W89C840F
    • xe(4) Xircom PCMCIA
  • Удалены драйверы ubsec (криптоакселераторы Broadcom BCM58xx), ufm (FM-тюнеры с интерфейсом USB), ctau (Cronyx Tau), cx (Cronyx Sigma) и vpo (parallel port SCSI).

Спасибо за материал opennet.ru

Залишити відповідь

Дякуємо, що поділились