Релиз FreeBSD 12.0

Материал из Викиновостей, свободного источника новостей

12 декабря 2018 года

Спустя два года после формирования ветки 11.x представлен релиз FreeBSD 12.0, который подготовлен для архитектур amd64, i386, powerpc, powerpc64, powerpcspe, sparc64, aarch64, armv6 и armv7. Дополнительно подготовлены образы для систем виртуализации (QCOW2, VHD, VMDK, raw) и облачных окружений Amazon EC2.

Ключевые новшества:

  • Реализована архитектура armv7 (ранее были только armv6 и aarch64). В сборках armv6 теперь поставляется только образ для устройств Raspberry Pi модели "B". Для устройств BANANAPI, BEAGLEBONE, CUBIEBOARD, CUBIEBOARD2, CUBOX-HUMMINGBOARD, Raspberry Pi 2, PANDABOARD, WANDBOARD, GENERICSD задействован порт armv7. Добавлена поддержка CPU Allwinner A13. Образы для систем armv6 и armv7 по умолчанию адаптированы для загрузки с использованием EFI. Включена по умолчанию поддержка терминала для последовательных портов на базе USB OTG;
  • В пакетный фильтр ipfw добавлена поддержка именованных динамических состояний (keep-state, limit и check-state снабжены дополнительным аргументом flowname, который назначается для динамического правила опкодом keep-state или limit). Добавлен модуль ipfw_nptv6 с транслятором адресов для IPv6;
  • В конфигурации ядра по умолчанию включена опция VIMAGE, активирующая одноимённый фреймворк виртуализации, который базируется на Jail и виртуальном сетевом стеке VNET). При помощи VNET обеспечена возможность использования пакетного фильтра pf внутри jail-окружений. В devfs.rules добавлены правила для использования mount_fusefs в jail;
  • В TCP-стеке добавлен модуль с реализацией механизма определения потери пакетов RACK, который в отличие от штатного метода определения факта потери пакета, отталкивается от времени передачи, а не последовательности прихода пакетов. Суть работы RACK в том, что при получении ACK-подтверждения для пакета, любые неподтверждённые пакеты, отправленные как минимум на RTT (round-trip time) раньше подтверждённого пакета, считаются потерянными и потребуют повторной отправки. Новый алгоритм уже протестирован в инфраструктуре Google и предложен для утверждения в качестве стандарта IETF (draft-ietf-tcpm-rack-01);
  • Добавлен драйвер netdump, позволяющий отправлять дампы состояния ядра после краха по сети, вместо их сохранения на локальном диске. Для отправки данных используется UDP-протокол, обслуживаемый минимальным обособленным TCP/IPv4 стеком. Приём дампа осуществляется netdump-сервером, запущенным на внешнем хосте. Создание Netdump целесообразно для отслеживания крахов бездисковых узлов кластеров, загружающихся по PXE машин или в случае отладки проблем в дисковой подсистеме. В утилиту dumpon добавлена поддержка сохранения дампов в сжатом виде, в том числе с использованием алгоритма zstd;
  • Проведена реструктуризация поддержки графических драйверов. Свежие драйверы для GPU AMD и Intel теперь можно загрузить из портов. Драйверы для GPU AMD и Intel также сохранены в базовой системе и по-прежнему предлагаются по умолчанию, но они отстают в плане поддержки новых графических карт. Для получения более актуальных драйверов в большинстве случаев достаточно установить порт "graphics/drm-kmod" и активировать необходимый драйвер в rc.conf при помощи опции kld_list (например, "kld_list=/boot/modules/i915kms.ko", "kld_list=/boot/modules/amdgpu.ko" или "kld_list=/boot/modules/radeonkms.ko");
  • В файловой системе UFS2 обеспечена поддержка проверочных хэшей в таблицах групп цилиндров (cylinder-group map). В UFS/FFS также добавлена и включена по умолчанию возможность консолидации команд TRIM/BIO_DELETE для сокращения операций чтения и записи за счёт пакетной отправки сразу нескольких TRIM-сообщений. Для отключения консолидации TRIM можно использовать sysctl vfs.ffs.dotrimcons=0. В драйвере ext2fs обеспечена полная поддержка ФС ext4;
  • В сервере NFSv4.1 реализовано расширение Parallel NFS (pNFS), которое позволяет организовать высокоскоростной обмен данными между машинами сети за счет возможности распараллеливания обращения к данным на нескольких хранилищах, а также разделения передачи потоков данных и мета-данных. Реализация pNFS позволяет запустить один сервер метаданных и несколько серверов хранения, с которыми могут работать любые клиенты NFSv4.1 с поддержкой pNFS File Layout;
  • Реализован системный вызов getrandom, который позволяет получить значения от системного генератора псевдослучайных чисел через обращение к системному вызову, что обеспечивает надёжную защиту от атак, основанных на исчерпании доступных файловых дескрипторов (при отсутствии свободных дескрипторов невозможно задействовать /dev/urandom). Также добавлена библиотека getentropy, совместимая с реализациями из Linux и OpenBSD. Существенно увеличено качество случайных чисел - алгоритм генерации псевдослучайных чисел Yarrow заменён на более надёжный алгоритм Fortuna, разработанный при участии Брюса Шнайера;
  • Компоненты графического окружения KDE в портах обновлены до выпуска 5.12.5 (ранее в портах предлагался KDE 4);
  • В инсталлятор bsdinstall и загрузчик zfsboot добавлена поддержка установки и загрузки с использованием связки UEFI+GELI (шифрованные разделы на системах с UEFI);
  • В ядрах GENERIC и MINIMAL для архитектуры amd64 включена по умолчанию поддержка систем NUMA (Non-Uniform Memory Access). Для отключения поддержки NUMA можно использовать sysctl-переменную vm.numa.disabled=1 в loader.conf.
  • В систему виртуализации добавлена поддержка эмуляции устройств NVMe и запуска в jail виртуальных окружений на базе гипервизора bhyve (активируется при помощи sysctl security.jail.vmm_allowed=1). Появилась возможность приёма соединений к VNC-серверу через IPv6. Добавлена поддержка управления топологией CPU для bhyve из пространства пользователя. Добавлена поддержка virtio_scsi;
  • В syslog и syslogd добавлена поддержка протокола RFC 5424 для отправки по сети syslog-сообщений о наступлении событий;
  • Обновлён драйвер виртуальной консоли. Новый вариант обеспечивает отрисовку текста в 2-6 раз быстрее;
  • Фреймворк capsicum, позволяющий организовать изолированное выполнение приложений с ограничением использования определённых функций, включён по умолчанию для архитектур armv6 и armv7;
  • Внесены улучшения в загрузчик, написанный на языке Lua: добавлено определение списка доступных ядер во время загрузки и реализована поддержка чёрного списка модулей ядра;
  • Обновлены компоненты прослойки для обеспечения совместимости с Linux. Добавлены новые версии модулей linux.ko и linux64.ko. Обеспечена возможность использования порта x11/nvidia-driver* с модулем linux64.ko;
  • Для группы operator открыт доступ к устройству /dev/acpi, что позволяет пользователям из этой группы запускать acpiconf для перехода в спящий режим;
  • При сборке активирован по умолчанию режим повторяемой пересборки, обеспечивающий тождественность исполняемых файлов исходным текстам

(в src.conf добавлена опция WITH_REPRODUCIBLE_BUILD). В src.conf также добавлена опция WITH_RETPOLINE для сборки компонентов пользовательского окружения с защитой от уязвимостей Spectre;

  • Для динамического связывания на системах amd64, i386 и armv7. по умолчанию задействован компоновщик ld_lld, развиваемый проектом LLVM;
  • Библиотека pthread приведена в соответствие со стандартом POSIX/SUSv4-2018;
  • В rc-скрипты добавлены новые ключевые слова "enable", "disable" и "delete" (помимо "yes" и "true");
  • Обновлена поддержка оборудования, в том числе добавлены драйверы для AMD Ryzen 2 и Microchip LAN78xx USB3-GigE. В usb_template добавлен новый тип устройств multifunction, позволяющий работать с комбинированными USB-устройствами, которые можно использовать как накопитель, CDC ACM (serial) и CDC ECM (ethernet);
  • Для сетевых сокетов реализована опция SO_REUSEPORT_LB, которая уже поддерживается в nginx. SO_REUSEPORT_LB позволяет нескольким программам или потокам подключать свои обработчики к одному сетевому порту (поступающие запросы балансируются между подключенными обработчиками при помощи хэш-функции);
  • Процесс init адаптирован для запуска исполняемых файлов на языках, отличных от shell, например, теперь можно создавать скрипты инициализации на Python;
  • В утилиту dtrace добавлена поддержка выражений "if" и "else";
  • В утилите geli добавлена возможность инициализации сразу нескольких шифрованных разделов, когда в них используется один и тот же пароль или ключ;
  • Переработана утилита top;
  • В качестве утилиты для многостраничного вывода по умолчанию для большинства команд задействована программа less (переменная окружения PAGER ссылается на less вместо утилиты more);
  • В утилиту localedef добавлены опции '-b' и '-l' для определения порядка следования байт в выводе. Утилита localedef теперь используется при сборке share/ctypedef и share/colldef;
  • Пакетный менеджер pkg в dvd1.iso и файл конфигурации pkg обновлены для использования ежеквартально обновляемого набора пакетов (2018Q4);
  • Добавлен дополнительный уровень изоляции выполнения процесса sshd, реализованный при помощи системы capsicum;
  • Переработан код управления блокировками в пакетном фильтре pf (блокировки rwlock заменены на rmlock), что позволило существенно поднять его производительность. Убраны ограничения на установку только 32-разрядных значений при лимитировании пропускной способности через ALTQ (например метод HFSC теперь может манипулировать пропускной способностью до 100 Gbps);
  • В базовую систему и набор rescue добавлена утилита bectl для управления загрузочными окружениями ZFS. Для ZFS добавлены новые

sysctl vfs.zfs.arc_min_prefetch_ms и vfs.zfs.arc_min_prescient_prefetch_ms, позволяющие ускорить выполнение команды "zpool scrub";

  • Программа ntpd модифицирована для запуска без привилегий root (теперь работает под UID/GID ntpd);
  • Обновлены версии поставляемых в базовой системе сторонних проектов:

OpenSSL 1.1.1a (с поддержкой TLS 1.3), Unbound 1.8.1 с включением по умолчанию DANE-TA, OpenSSH 7.8p1, Lua 5.3.5, ntpd 4.2.8p12, bsnmp 1.13. В портах Perl обновлён до 5.26.2, а Python до 2.7. До версии 4.46 обновлён шрифт Terminus BSD Console, используемый драйвером виртуального терминала. Компоненты Clang, libc++, compiler-rt, LLDB, LLD и LLVM обновлены до версии 6.0.1 (во FreeBSD 11.2 используется версия 6.0.0, поэтому изменения только корректирующие);

  • Помечена устаревшей утилита ctm (зеркалирование исходных текстов FreeBSD), которая будет удалена во FreeBSD 13;
  • Прекращена поддержка протоколов Token Ring и ARCnet;
  • Объявлены устаревшими драйверы: ae(4), bm(4), cs(4), de(4), dme(4), ed(4), ep(4), ex(4), fe(4), pcn(4), sf(4), sn(4), tl(4), tx(4), txp(4), vx(4), wb(4) и xe(4).

Источники[править]

Creative Commons
Creative Commons
Эта статья содержит материалы из статьи «Релиз FreeBSD 12.0», опубликованной OpenNET и распространяющейся на условиях лицензии Creative Commons Attribution (CC BY) — указание автора, источник и лицензию.
Эта статья загружена автоматически ботом NewsBots в архив и ещё не проверялась редакторами Викиновостей.
Любой участник может оформить статью: добавить иллюстрации, викифицировать, заполнить шаблоны и добавить категории.
Любой редактор может снять этот шаблон после оформления и проверки.

Комментарии[править]

Викиновости и Wikimedia Foundation не несут ответственности за любые материалы и точки зрения, находящиеся на странице и в разделе комментариев.