2. Что нового

В этом разделе описаны основные видимые пользователю добавленные или измененные с 5.5-RELEASE возможности FreeBSD. Как правило, изменения, описанные здесь, уникальны для 5-STABLE, если только они не помечены как [MERGED].

Обычно в информации о релизе последовательно включены последние сообщения безопасности, выпущенные после 5.5-RELEASE, информация о поддержке новых драйверов или оборудования, новых команд или параметров, информация о основных исправлениях ошибок, или обновлениях стороннего программного обеспечения. В нем могут также перечисляться изменения важнейших портов/пакетов или практики выпуска релизов. Конечно, в информацию о релизе не вносятся данные о каждом отдельном изменении, сделанном в FreeBSD между релизами; этот документ фокусируется в основном на сообщениях безопасности, видимых пользователю изменениях, и основных архитектурных улучшениях.

2.1. Сообщения безопасности

Была исправлена ошибка в утилите fetch(1), позволявшая злонамеренному HTTP серверу перезапись произвольных участков памяти клиента. За дальнейшей информацией обращайтесь к сообщению безопасности FreeBSD-SA-04:16.fetch.

Была исправлена ошибка в procfs(5) и linprocfs(5), позволявшая злонамеренному локальному пользователю читать части памяти ядра или выполнять локальную DoS атаку путем вызова паники системы. За дальнейшей информацией обращайтесь к сообщению безопасности FreeBSD-SA-04:17.procfs.

В клиенте TELNET были исправлены две ошибки переполнения буфера. Они могут позволить злонамеренному серверу TELNET или активному атакующему в сети между клиентом и сервером заставить telnet(1) выполнить произвольный код с привилегиями пользователя, запустившего клиент. За дальнейшей информацией обращайтесь к сообщению безопасности FreeBSD-SA-05:01.telnet.

2.2. Изменения в ядре

jail(8) теперь поддерживает новую переменную sysctl security.jail.chflags_allowed, которая контролирует поведение chflags(1) внутри jail. Если переменная установлена в 0 (значение по умолчанию), внутри jail root считается непривилегированным пользователем; если она установлена в 1, различий между пользователем root внутри jail и вне jail не делается.

Множество ошибок было исправлено в планировщике ULE.

2.2.2. Поддержка оборудования

Была добавлена инфраструктура для гибкого управления скоростью процессора. Она предоставляет различным драйверам методы управления энергопотреблением CPU путем изменения скорости процессора. Более детальная информация находится на странице справочника cpufreq(4).

Был добавлен драйвер pcii для поддержки карт GPIB-PCIIA IEEE-488.

2.2.2.2. Поддержка сетевых интерфейсов

Был добавлен USB Communication Device Class Ethernet драйвер cdce(4).

Драйвер cp(4) теперь MPSAFE.

Драйвер ctau(4) теперь MPSAFE.

Драйвер cx(4) теперь MPSAFE.

Драйвер ed(4) теперь поддерживает инфраструктуру altq(4).

В драйвере em(4) была выключена по умолчанию аппаратная поддержка тегов VLAN, поскольку эта функция конфликтовала с promiscuous режимом.

Контроль потока Ethernet отключен по умолчанию в драйвере fxp(4) для предотвращения проблем -- паники ядра.

Драйвер hme(4) теперь MPSAFE.

Драйвер re(4) теперь поддерживает инфраструктуру altq(4).

Драйвер sf(4) теперь поддерживает device polling и altq(4).

Были исправлены несколько программных ошибок в драйвере sk(4). Эти ошибки проявлялись на SMP системах, и могли приводить к панике, ошибкам page fault, обрыву соединений SSH или ошибкам при передаче файлов. Более подробная информация находится в сообщении о проблеме FreeBSD-EN-05:02.sk.

Драйвер sk(4) теперь поддерживает altq(4). Этот драйвер также поддерживает jumbo фреймы на Yukon-based интерфейсах.

2.2.3. Сетевые протоколы

MTU feedback в IPv6 выключается при отправке данных, которые должны быть фрагментированы.

Был реализован Common Address Redundancy Protocol (CARP). CARP был взят из OpenBSD и позволяет нескольким хостам совместно использовать один IP адрес, чтобы обеспечивать высокую доступность и распределение нагрузки. За дальнейшей информацией обращайтесь к странице справочника carp(4).

Система ipfw(4) может работать с debug.mpsafenet=1 (эта переменная равна 1 по умолчанию) когда используются параметры правил gid, jail, и/или uid.

Правило ipfw(8) ipfw fwd теперь поддерживает полное управление назначением пакета при установке параметра ядра options IPFIREWALL_FORWARD_EXTENDED в дополнение к параметру options IPFIRWALL_FORWARD. Этот параметр ядра устраняет все ограничения для локально созданных пакетов и позволяет перенаправление пакетов, предназначенных для локально сконфигурированного IP адреса. Обратите внимание, что правила ipfw(8) должны быть составлены аккуратно, чтобы, например, не нарушить определение PMTU.

ipnat(8) теперь позволяет определять правила перенаправления для не-TCP/UDP пакетов.

Продолжается работа по уменьшению использования Giant блокировки стеком сетевых протоколов и улучшению стратегии блокировки.

Новый узел NetGraph ng_netflow(4) позволяет маршрутизатору, работающему под FreeBSD, выполнять экспорт NetFlow версии 5.

Драйвер sppp(4) теперь включает поддержку Frame Relay

Была исправлена ошибка TCP, которая иногда приводила к игнорированию пакетов RST при окне приема в ноль байт.

Были исправлены несколько ошибок в реализации TCP SACK.

Реализация KAME IPv4 IPsec, интегрированная в FreeBSD, теперь поддерживает TCP-MD5.

Алгоритм ``Random ephemeral port number allocation'' приводил к некоторым проблемам с повторным использованием портов при высокой частоте новых подключений. Теперь в периоды, когда новые соединения создаются быстрее, чем net.inet.ip.portrange.randomcps в секунду, рандомизация номеров портов отключается на следующие net.inet.ip.portrange.randomtime секунд. Значения по умолчанию этих двух переменных sysctl равны 10 и 45 соответственно.

2.2.4. Диски и хранение

Драйвер amr(4) теперь может безопасно использоваться на системах с pae(4).

Был добавлен драйвер hptmv(4), поддерживающий HighPoint RocketRAID 182x series.

Драйвер ips(4) теперь поддерживает дампы ядра на некоторых современных моделях ServeRAID.

Был удален драйвер matcd(4).

Был добавлен класс SHSEC GEOM. Он предоставлен для разделения секретного ключа (``secret'') между несколькими провайдерами GEOM. Все эти провайдеры должны присутствовать, чтобы получить секретный ключ. Эта функция контролируется утилитой gshsec(8).

Информация о вновь смонтированных файловых системах cd9660 (например, информация о наличии расширений Rockridge) теперь печатается только если ядро было собрано в режиме verbose. Это изменение было сделано для уменьшения количества (зачастую ненужных) протоколируемых сообщений ядра.

2.2.5. Файловые системы

Вычисление суммарной информации для не размонтированных корректно (``dirty'') файловых систем UFS и UFS2 больше не выполняется во время загрузки, а делается фоновым fsck(8). Это изменение увеличивает скорость загрузки при монтировании больших файловых систем после сбоя. Предыдущее поведение может быть восстановлено установкой переменной sysctl vfs.ffs.compute_summary_at_mount в ненулевое значение.

Была исправлена ошибка NFS сервера, приводившая к панике ядра. Более подробная информация находится в сообщении о проблеме FreeBSD-EN-05:01.nfs.

2.2.6. Стороннее программное обеспечение

ACPI-CA был обновлен с 20040527 до 20041119.

2.3. Изменения в программах пользователя

Программа ftpd(8) теперь корректно использует коды статуса 212 и 213 для каталога и файла (в предыдущей версии использовался код 211). Это поведение описано в RFC 959.

Функция getaddrinfo(3) теперь запрашивает записи DNS A перед записями AAAA, когда указан AF_UNSPEC. Некоторые DNS серверы некорректно возвращают NXDOMAIN в ответ на запрос несуществующей записи AAAA, хотя должны возвращать NOERROR с пустой записью. Это проблема для двойного IPv4/IPv6 стека, поскольку после возврата NXDOMAIN на запрос AAAA приводит к тому, что запрашивающий сервер не пытается разрешить запись A. Кроме того, такое поведение потенциально может привести к DoS атаке (см. http://www.kb.cert.org/vuls/id/714121 с более подробной информацией). Обратите внимание, что хотя порядок запроса был изменен, возвращаемый результат все еще включает запись AF_INET6 перед записью AF_INET.

Команда create утилиты gpt(8) теперь поддерживает параметр командной строки -f для форсирования создания GPT даже если на диске присутствует запись MBR.

Утилита gvinum(8) теперь поддерживает субкоманды checkparity, rebuildparity и setstate.

Библиотека libarchive (как и команда tar(1), ее использующая) теперь поддерживает чтение образов ISO (с опциональным расширением RockRidge) и архивов ZIP (со сжатием deflate и none).

Была добавлена библиотека libgpib, чтобы предоставить доступ уровня пользователя к устройствам GPIB (используя драйвер pcii) через ibfoo API.

Множество исправлений для libpthread были внесены из HEAD.

В библиотеке math(3) было реализовано множество новых функций. В их число входят ceill(3), floorl(3), ilogbl(3), fma(3) и варианты, lrint(3) и варианты, и lround(3) и варианты.

Даемон moused(8) теперь поддерживает ``виртуальную прокрутку'', когда перемещения мыши при нажатой средней кнопке интерпретируются как прокрутка. Эта функция включается флагом -V.

Для динамических зон named(8) был добавлен отдельный каталог, владельцем которого является пользователь bind (для создания журнального файла зоны). Более подробная информация находится в примере динамической зоны файла named.conf(5).

Утилита newfs(8) теперь поддерживает флаг -n для подавления создания каталога .snap на новых файловых системах. Эта функция предназначена для использования с файловыми системами в памяти или виртуальными файловыми системами, которым не требуется поддержка образов.

Утилита newfs(8) теперь выдает предупреждение при создании файловых систем UFS или UFS2, которые не могут поддерживать образы. Такая ситуация может возникать в случае очень больших файловых систем с блоками малого размера.

Была добавлена переменная компиляции системы NO_NIS. Как следует из ее имени, включение этой переменной приведет к исключению поддержки NIS из различных программ, и утилиты NIS не будут компилироваться.

Утилита ncal(1) теперь поддерживает флаг -m для создания календаря определенного месяца в текущем году.

Проверка безопасности в periodic(8) теперь поддерживает отображение счетчиков пакетов, заблокированных pf(4).

В программе ppp(8) реализован параметр echo, позволяющий включать LCP ECHO независимо от LQR. Более старые версии ppp(8) переходят в режим LCP ECHO если согласование lqr не будет успешно проведено. Теперь для получения такого поведения необходимо указать enable echo.

Были исправлены две ошибки в программе pppd(8). Они могли привести к некорректному ответу CBCP, нарушающему Microsoft PPP Callback Control Protocol section 3.2.

Утилита rm(1) теперь поддерживает параметр -I, с которым (однократно) запрашивается подтверждение при рекурсивном удалении каталогов или более 3 файлов, перечисленных в командной строке.

Динамический компоновщик rtld(1) теперь поддерживает указание замещающих библиотек через переменную окружения LD_LIBMAP. Эта переменная перезаписывает записи в libmap.conf(5).

Функция strftime(3) теперь поддерживает некоторые GNU расширения, такие как - (без заполнения), _ (использовать пробел для заполнения), и 0 (заполнение нулями).

Функцию syslog(3) теперь можно безопасно использовать в многопоточных программах.

Утилита syslogd(8) теперь открывает дополнительный сокет (/var/run/logpriv по умолчанию), с правами 0600 для использования привилегированными программами. Это предотвращает блокировку привилегированных программ, когда буфер сокета переполняется вследствие локальной DoS атаки.

systat(1) -netstat теперь приспособлен для IPv6.

Параметр -f утилиты tail(1) теперь поддерживает более одного файла одновременно.

Была добавлена команда tcpdrop(8), закрывающая выбранное соединение TCP. Она была заимствована из OpenBSD.

whois(1) теперь поддерживает флаг -k для запроса whois.krnic.net (the National Internet Development Agency of Korea), содержащего информацию о IP адресах в Корее.

Была исправлена ошибка чтения файлов конфигурации, таких как hosts(5), services(5) и так далее, которые не заканчивались символом новой строки.

2.3.1. Скрипты /etc/rc.d

rc.conf(5) теперь поддерживает изменение имен сетевых интерфейсов во время загрузки. Например:

ifconfig_fxp0_name="net0"
ifconfig_net0="inet 10.0.0.1/16"

rc.conf(5) теперь поддерживает переменные tmpmfs_flags и varmfs_flags. Они могут использоваться для передачи дополнительных параметров утилите mdmfs(8), задания md(4) параметров создания файловой системы, таких как включение/выключение softupdates, указания владельца файловой системы по умолчанию и так далее.

2.4. Стороннее программное обеспечение

BIND был обновлен с версии 9.3.0 до версии 9.3.1.

Heimdal был обновлен с 0.6.1 до 0.6.3.

Был добавлен снэпшот netcat из OpenBSD от 4 февраля 2005 года. Более подробная информация находится на странице справки по nc(1).

OpenSSL был обновлен с 0.9.7d до 0.9.7e.

sendmail был обновлен с версии 8.13.1 до версии 8.13.3.

База данных timezone была обновлена с релиза tzdata2004e до релиза tzdata2004g.

2.5. Инфраструктура коллекции портов/пакетов

Файлы ports/INDEX*, в которых находится индекс всех портов коллекции, был удален из репозитория CVS. Этот файл генерировался не часто, и следовательно обычно был устаревшим и не соответствовал состоянию портов. Пользователи, которым требуется индексный файл (например, для использования с такими программами, как portupgrade(1)), могут получить копию двумя способами:

2.6. Подготовка релизов и интеграция

В предыдущих релизах FreeBSD, CD-ROM (или образ ISO) disc1 был загрузочным установочным диском, содержащим основную систему, дерево портов и широко используемые пакеты. CD-ROM (или образ ISO) disc2 был загрузочным ``fix it'' диском с live filesystem, и был предназначен для восстановления после критических сбоев. Теперь для всех архитектур за исключением ia64, на disc1 находится базовая система, дерево портов и live filesystem, что делает возможным как установку с этого диска, так и восстановление после сбоев. (На ia64, live filesystem находится на отдельном диске, поскольку не умещается на первый). Пакеты помещаются на отдельный диск; в частности, образ disc2 содержит общеиспользуемые пакеты, такие как десктоп-приложения. Документы Проекта документирования FreeBSD также помещаются на disc2.

Поддерживаемая версия десктопа GNOME была обновлена с 2.6.2 до 2.10. Более подробная информация о работе GNOME в FreeBSD находится на веб странице FreeBSD GNOME Project.

Замечание: Пользователи предыдущих версий GNOME (x11/gnome2) должны подойти к обновлению с определенной осторожностью. Простое обновление из коллекции портов FreeBSD с помощью portupgrade(1) (sysutils/portupgrade) вызовет серьезные проблемы. Пользователи GNOME должны внимательно прочесть инструкции http://www.FreeBSD.org/gnome/docs/faq210.html и использовать скрипт gnome_upgrade.sh для обновления до GNOME 2.10.



Поддерживаемая версия KDE была обновлена с 3.3.0 до 3.4.0. Более подробная информация о работе KDE в FreeBSD находится на веб странице KDE в FreeBSD.

Замечание: Пользователям более старых версий KDE предлагается следовать процедуре обновления, документированной на веб странице KDE on FreeBSD иди в файле ports/UPDATING.



Поддерживаемая версия Xorg была обновлена с 6.7.0 до 6.8.2.

2.7. Документация

Следующие страницы справочной системы, которые были получены из документов RFC, и возможно нарушали IETF копирайт, были замещены: gai_strerror(3), getaddrinfo(3), getnameinfo(3), inet6_opt_init(3), inet6_option_space(3), inet6_rth_space(3), inet6_rthdr_space(3), icmp6(4) и ip6(4).

Этот файл и другие документы, относящиеся к данной версии FreeBSD, могут быть найдены по адресу http://www.FreeBSD.org/snapshots/.

Если у вас возник вопрос, касающийся FreeBSD, прочтите документацию, прежде чем написать письмо в <questions@FreeBSD.org>.

Всем пользователям FreeBSD 5-STABLE рекомендуется подписаться на список рассылки <stable@FreeBSD.org>.

Вопросы, касающиеся этого документа, вы можете направить по адресу <doc@FreeBSD.org>.