Релиз FreeBSD 8.2 и 7.4
Спустя 7 месяцев с момента выхода FreeBSD 8.1 официально представлен релиз FreeBSD 8.2. Релиз доступен для архитектур amd64, i386, ia64, pc98, powerpc и sparc64 в 5 установочных сборках: bootonly, CD, DVD, LiveFS и Memstick для USB Flash. Из ключевых улучшений отмечается интеграция поддержки 15 версии ZFS, улучшение работы FreeBSD в роли госетвой системы под управлением Xen HVM и Xen PV, обеспечение поддержки набора инструкций Intel AESNI для задействования встроенного в CPU криптоакселератора, обновление в портах Gnome 2.32.1 и KDE 4.5.5.Одновременно выпущен FreeBSD 7.4, последний релиз в ветке FreeBSD 7.x. Выпуск исправлений критических ошибок и проблем безопасности во FreeBSD 7.4 будет производиться еще два года, после чего поддержка ветки 7.x будет полностью прекращена.
Из добавленных во FreeBSD 8.2 улучшений можно отметить:
- Файловые системы и накопители
- До 15 версии обновлен код с реализацией файловой системы ZFS, дополнительно из OpenSolaris перенесено около 150 исправлений и портирован набор увеличивающих производительность оптимизаций (кэширование ACL, ускорение работы stat, минимизация блокировок). Обновлен код ZFS metaslab, который позволил заметно увеличить производительность операций записи на ZFS-разделы, особенно если в zfs-пуле остается менее 30% свободного места. Добавлена поддержка перевода в offline-режим разделов, хранящих логи. Для увеличения отзывчивости значение sysctl vfs.zfs.vdev.max_pending уменьшено с 35 до 10;
- Расширены функции geli, GEOM-класса для шифрования разделов: Поддержка работы с несколькими ключами шифрования, каждый ключ при этом используется для своего набора секторов на диске. Для шифрования по умолчанию теперь используется режим XTS-AES. Добавлена sysctl-переменная kern.geom.eli.overwrites, позволяющая определить число перезаписей для полной очистки ключей (по умолчанию 5). Для полной отмены любых лог-сообщений от системы geli sysctl-переменной kern.geom.eli.debug можно присвоить значение -1. В пользовательской утилите geli добавлены новые субкоманды: resize для изменения размера шифрованных файловых систем; suspend для выгрузки всех связанных с шифрованием данных из памяти ядра и временной заморозки раздела; resume - для разморозки раздела после выполнения suspend; опции "-J newpassfile" и "-j passfile" для загрузки пароля из файла;
- В реализации linprocfs для Linux-эмулятора добавлена поддержка /proc/$$/environment;
- Для NFS-клиента добавлен новый sysctl boot.nfsroot.nfshandlelen, позволяющая активировать NFSv3 при загрузке бездисковых систем (если переменная не установлена используется NFSv2);
- Расширены возможности ata-драйвера: Добавлена возможность установки ATA-режимов через sysctl hint.devname.unit.devN.mode и hint.devname.unit.mode, передаваемые значения для которых аналогичны режимам, поддерживаемым в atacontrol и camcontrol. Обеспечена возможность отключения проверки статуса подключения на стороне контроллера и устройства (в loader.conf hw.ata.ata_dma_check_80pin = 0). Улучшена поддержка горячего подключения устройств и контроля скорости соединения для некоторых SATA-контроллеров Intel, включая ICH5 и ICH8+;
- Сетевая подсистема
- Интегрирован модуль ядра SIFTR (Statistical Information For TCP Research), разработанный при поддержке компании Cisco. SIFTR-модуль осуществляет ведение журнала в который заносится широкий диапазон параметров, связанных со статистикой активных TCP-соединений;
- Добавлен новый netgraph-узел ng_patch, позволяющий модифицировать произвольные поля в заголовках IP-пакетов, в том числе TOS/DSCP и TTL. Пример использования;
- В виртуальном сетевом стеке (vnet) появилась поддержка IPv4 multicast-маршрутизации;
- Система alq (Asynchronous Logging Queues) теперь доступна в виде модуля ядра;
- Добавлен устанавливаемый через загрузчик параметр net.link.ifqmaxlen (значение по умолчанию 50), определяющий размер очереди отправки пакетов для сетевых интерфейсов;
- Проведена работа по обеспечению параллельной обработки IPsec-потоков;
- В netgrap-узел ng_eiface добавлена поддержка установки MTU для VLAN и возможность указания значений MTU больше 1500. В узле ng_ether добавлена поддержка передачи сетевого интерфейса между несколькими виртуальными сетевыми стеками, используя команду ifconfig vnet. При перемещении сетевого интерфейса в новый vnet, привязанный к нему ng_ether-узел уничтожается и затем пересоздается автоматически.
- По умолчанию отключен алгоритм ограничения размера TCP-окна Inflight Bandwidth-Delay Limiter (net.inet.tcp.inflight.enable) на основании оценки задержки прихода подтверждения в получении пакетов. Для современных высокоскоростных сетей с RTT менее 10мс данный алгоритм оказался неэффективным. В будущих релизах ожидается интеграция модульной системы подключения реализацией различных алгоритмов для контроля перегрузки (Congestion Control) в TCP, таких как HTCP, CUBIC, Vegas, HD и CHD;
- Приведены в соответствие с RFC 3390 и RFC 5681 параметры формирования начального размера скользящего окна TCP. Для управления введена sysctl-переменная net.inet.tcp.rfc3390;
- Исправлена ошибка в коде PMTU (TCP Path MTU Discovery), проявляющаяся в неверном расчете параметров при MTU менее 256 октетов;
- Поддержка оборудования
- Добавлен драйвер xhci с поддержкой USB 3.0 и хост-контроллеров xHCI (eXtensible Host Controller Interface). Представленный драйвер совместим с более старыми контроллерами USB 2.0 и USB 1.0, и способен в будущем заменить ранее присутствующие драйверы OHCI, UHCI и EHCI. В старые USB-драйверы ehci, ohci и uhci добавлена поддержка низкоскоростных пакетных режимов передачи данных;
- В подсистему эмуляции Linux добавлена поддержка video4linux API. Для использования данного API необходима установка video4linux-драйверов, таких как multimedia/pwcbsd и multimedia/webcamd;
- Добавлен драйвер aesni с поддержкой аппаратных акселераторов AES-шифрования, встроенных в новые CPU Intel;
- Добавлен драйвер aibs, поддерживающий работу с аппаратными сенсорами материнских плат ASUS. Ранее используемый драйвер acpi_aiboost удален. В драйвер coretemp добавлена поддержка Xeon 5500/5600;
- Добавлен драйвер tpm для обеспечения поддержки TPM-модулей (Trusted Platform Module).
- В драйвере uaudio решены проблемы с работой некоторых звуковых устройств с USB-интерфейсом;
- Добавлена поддержка сетевых адаптеров: Atheros AR8151/AR8152 PCIe Gigabit/Fast Ethernet, Intel 10Gb Ethernet 82599 и Broadcom BCM5718. Существенно доработан драйвер bge (Broadcom), Драйвер em (Intel PRO/1000) обновлен до версии 7.1.9, а драйвер igb (Intel PRO/1000 PCI) обновлен до версии 2.0.7, в драйверах добавлена поддержка управлния через led-интерфейс и обеспечен экспорт счетчиков статистики в виде MIB-объектов. В драйверах xl, nfe, rl и sis обеспечена поддержка WoL (Wake on LAN);
- Добавлена поддержка беспроводных карт: Intel Wireless WiFi Link 6000, Broadcom BCM430* и BCM431*. В драйвере bwn (Broadcom BCM43xx) решены проблемы с работой WPA-аутентификации;
- Улучшение утилит, работающих на уровне пользователя:
- Добавлен инструментарий для обеспечения динамической трассировки пользовательских приложений в DTrace (поддержка DTrace появилась еще во FreeBSD 7.0, но позволяла только отслеживать процессы, протекающие внутри ядра). Например, теперь можно устанавливать точки останова, следить за распределением памяти, использованием процессорного времени, наблюдать за блокировками, отслеживать сетевые и файловые операции в приложениях, запущенных на пользовательском уровне. В частности, в рамках портирования из OpenSolaris перенесен pid-провайдер (позволяет отслеживать выполнение определенных функций в программе), реализованы USDT-проверки (вкомпилирование в пользовательскую программу отладочных вызовов), утилита plockstat (контроль блокировок в библиотеке pthread), утилита dtruss (аналог ktrace для трассировки системных вызовов), произведена интеграция поддержки Trace в порты с MySQL и PostgreSQL;
- В утилиту du добавлена опция "-t лимит", позволяющая отобразить только элементы превышающие указанный порог. Если в параметре указано отрицательное значение, то будут выведены элементы меньше указанного порога;
- В fdisk добавлена поддержка дисковых разделов, созданных с использованием GEOM-классов geli или gjournal;
- В GEOM-класс gpart, используемый для управления дисковыми разделами, добавлена поддержка команды для изменения размера раздела - "gpart resize". Другим улучшением является поддержки команды "gpart recover", предназначенной для исправления повреждённых мета-данных таблицы GPT (Guid Partition Table). Кроме того, добавлены команды "gpart backup" и "gpart restore" для ручного сохранения и восстановления таблицы разделов;
- В ifconfig усилена проверка указания некорректных подсетей, например, например, недопускается использование 10.0.0.1/10.0.0.1 (ранее воспринималось как 10.0.0.1/10);
- В библиотеку libarchive и утилиту tar добавлена поддержка формата сжатия LZMA. В утилите tar появилась возможность указания размера блока до 8192 (4 Мб) через опцию "-b blocksize"
- В утилите newsyslog добавлена поддержка специального имени "< include >" для включения в newsyslog.conf содержимого внешнего файла. Также в newsyslog добавлена опция "-S pidfile", позволяющая указать нестандартный путь к PID-файлу syslogd;
- В утилите pmcstat обеспечена возможность использования файла или сетевого сокета как источника данных для формирования top-а. Например, опция "-O filename" позволяет сохранить лог в файл и затем отобразить его в виде топа при помощи "-R filename". Вместо имени файла модно указать "хост:порт", что можно использовать для формирования отображения топа на другой машине;
- В powerd добавлены опции "-m freq" и "-M freq" для указания минимальной и максимальной часты;
- В утилите sleep при поступлении сигнала SIGINFO теперь выводится информация сколько прошло времени с момента запуска и сколько осталось до конца;
- Программы tftp и tftpd усовершенствованы в плане более полной поддержки RFC 1350, 2347, 2348, 2349 и 3617;
- В watchdogd добавлена установка флага MADV_PROTECT, защищающего процесс от принудительного завершения в случае исчерпания памяти в системе;
- Добавлены новые периодические скрипты (/etc/periodic): скрипт для выполнения операции "zfs scrub" и скрипт для выявления файлов установленных портов для которых несовпадают контрольные суммы;
- Ядро
- Во фреймворк opencrypto добавлена поддержка режима шифрования XTS-AES, определенного в спецификации IEEE Std. 1619-2007;
- Расширены возможности встроенного отладчика ddb: Добавлена поддержка определения задержки при выполнении команд reset и reboot, что предоставляет администратору возможность входа в отладчик и выполнения textdump, в случае возникновения краха ядра; Добавлена поддержка команды "show cdev", выводящая список всех созданных cdev с указанием devfs-узла и cdev-адреса;
- Ядро GENERIC по умолчанию собирается с опциями KDB и KDB_TRACE. Добавлена возможность отображения трассировки стека при возникновении краха, через использование подсистемы stack без привлечения отладчика;
- Следующий набор sysctl теперь можно изменять на этапе работы загрузчика (через /boot/loader.conf): vm.kmem_size, vm.kmem_size_max, vm.kmem_size_min, debug.kdb.stop_cpus, debug.trace_on_panic и kern.sync_on_panic;
- Добавлены новые sysctl-переменные: vm.kmem_map_size для указания текущего размера kmem map; vm.kmem_map_free с размером наибольшей непрерывной свободной области в kmem map; vfs.ncsizefactor c коэффициентом размерности namecache; vfs.ncnegfactor с коэффициентом числа отирцательных элементов в namecache;
- В менеджере памяти MemGuard улучшены механизмы определения фактов обращения к давно освобожденной памяти (use-after-free);
- Улучшена поддержка работы amd64-сборки FreeBSD в качестве гостевой системы Xen, выполняемой в режиме аппаратной виртуализации (HVM);
- На платформе amd64 размер KVA теперь выставляется равным или большим размеру ОЗУ, что позволяет избежать краха ядра с выводом ошибки "kmem_map too small", возникающего чаще всего при использовании ZFS;
- Улучшена поддержка функций ACPI по переходу в спящий режим. Добавлены новые sysctl hw.acpi.handle_reboot, hw.acpi.install_interface и hw.acpi.remove_interface. Улучшено определение топологии для процессоров Intel. Добавлена поддержка использование XMM-регистров Intel SSE (Streaming SIMD Extensions);
- Загрузчик
- В загрузчике gptboot обеспечено полное следование спецификации GPT GUID Partition Table), включая поддержку использования резервных заголовков и таблиц в случае несовпадения контрольных сумм. Новые атрибуты можно использовать для настройки разделов, с которых gptboot попытается загрузиться один раз и в случае сбоя откатится к предыдущим настройкам;
- В pxeboot вместо NFSv2 по умолчанию теперь используется NFSv3;
- Порты, инсталлятор и дополнительные приложения:
- В утилите pkg_create обеспечена поддержка метода сжатия LZMA (xz), но по умолчанию по прежнему используется bzip2;
- Изменены используемые по умолчанию размеры для дисковых разделов, создаваемых в инсталляторе: 1 Гб для корня, 4 Гб для /var и 1 Гб для /tmp;
- При отсутствии в системе графической карты, инсталлятор теперь пытается запустить getty на последовательном порту;
- В портах версия поддерживаемого GNOME-окружения (x11/gnome2) обновлена до 2.32.1, а KDE (x11/kde4) до версии 4.5.5;
- Обновлены поставляемые в базовой системе внешние программы:
- ACPI-CA 20101013;
- ee 1.5.2;
- ISC BIND 9.6-ESV-R3;
- netcat 4.8;
- OpenSSL 0.9.8q;
- xz 5.0.0.
© OpenNet