# Информация о релизе FreeBSD/i386 5.4-RELEASE

### Проект FreeBSD

Copyright © 2000, 2001, 2002, 2003, 2004, 2005 Проект документирования FreeBSD

$FreeBSD: src/release/doc/ru_RU.KOI8-R/relnotes/common/new.sgml,v 1.6.2.10.2.5 2005/05/06 18:57:44 hrs Exp $

FreeBSD это зарегистрированная торговая марка FreeBSD Foundation.

IBM, AIX, EtherJet, Netfinity, OS/2, PowerPC, PS/2, S/390 и ThinkPad это торговые марки International Business Machines Corporation в Соединенных Штатах, других странах, или по всему миру.

IEEE, POSIX и 802 это зарегистрированные торговые марки Institute of Electrical and Electronics Engineers, Inc. в Соединенных Штатах.

Intel, Celeron, EtherExpress, i386, i486, Itanium, Pentium и Xeon это торговые марки или зарегистрированные торговые марки Intel Corporation или ее дочерних компаний в Соединенных Штатах и других странах.

Sparc, Sparc64, SPARCEngine, и UltraSPARC это торговые марки SPARC International, Inc в Соединенных Штатах и других странах. Продукты с торговой маркой SPARC основаны на архитектуре, разработанной Sun Microsystems, Inc.

Многие из обозначений, используемые производителями и продавцами для обозначения своих продуктов, заявляются в качестве торговых марок. Когда такие обозначения появляются в этом документе, и Проекту FreeBSD известно о торговой марке, к обозначению добавляется знак ``(TM)'' или ``(R)''.

Заметки о релизе для FreeBSD 5.4-RELEASE содержат общую информацию по изменениям, внесенным в систему FreeBSD с момента выпуска 5.3-RELEASE. Этот документ содержит список сообщений безопасности, выпущенных после последнего релиза, а также список значительных изменений, внесенных в ядро и пользовательские программы FreeBSD. Представлены также краткие заметки по обновлению системы.

## 1. Введение

Этот документ содержит информацию о релизе FreeBSD 5.4-RELEASE для аппаратной платформы i386. В нем описаны недавно добавленные, измененные, или удаленные возможности FreeBSD. Он также представляет некоторые заметки по обновлению с предыдущей версии FreeBSD.

Этот дистрибутив FreeBSD 5.4-RELEASE представляет собой release. Его можно найти на ftp://ftp.FreeBSD.org/ или на любом из зеркал. Дополнительная информация по получению этого (или другого) release дистрибутива FreeBSD может быть найдена в приложении ``Получение FreeBSD'' Руководства FreeBSD.

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

## 2. Что нового

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

Обычно в информации о релизе последовательно включены последние сообщения безопасности, выпущенные после 5.3-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.

В системном вызове sendfile(2) была исправлена ошибка, связанная с раскрытием информации, которая могла позволить передачу произвольных частей памяти ядра. За дальнейшей информацией обращайтесь к сообщению безопасности FreeBSD-SA-05:02.sendfile.

Была исправлена ошибка в `SIOCGIFCONF` ioctl(2), приводившая к утечке информации, из-за которой подвергались утечке 12 байт памяти ядра. За дальнейшей информацией обращайтесь к сообщению безопасности FreeBSD-SA-05:04.ifconf.

Было исправлено несколько программных ошибок в cvs(1), которые потенциально позволяли выполнение произвольного кода на серверах CVS. Дополнительная информация может быть получена из сообщения безопасности FreeBSD-SA-05:05.cvs.

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

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

Переменная загрузчика `debug.mpsafevm` была включена по умолчанию.

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

Была исправлена ошибка в обработке Inter-Processor Interrupt (IPI), которая могла вызвать крах SMP систем под высокой нагрузкой. Более подробная информация опубликована в сообщении о проблеме FreeBSD-EN-05:03.ipi. [MERGED]

Выделение памяти для старых PCI мостов было ограничено до 32MB RAM. Многие старые мосты позволяют выделение памяти только из этого диапазона. Изменение применяется только к устройствам, память которых не выделена BIOS. Это изменение исправляет ошибку ``bad Vcc'' мостов CardBus ( pccbb(4)).

#### 2.2.1. Изменения в загрузчике

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

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

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

##### 2.2.2.1. Поддержка мультимедиа

##### 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 IPFIREWALL_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).

Был добавлен драйвер arcmsr(4). Он поддерживает контроллеры SATA RAID серий Areca ARC-11`xx` и ARC-12`xx`.

Был добавлен драйвер 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) через `ib`foo`` API.

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

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

Была добавлена не-GPL утилита mkuzip(8), для сжатия образов файловых систем перед использованием с модулем `GEOM_UZIP` geom(4).

Даемон 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.

Утилита restore(8) теперь снова может читать дампы FreeBSD версии 1.

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

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

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

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

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

syslogd(8) теперь поддерживает опцию `-S`, которая позволяет изменять путь к привилегированному сокету. Это полезно, если вы не хотите, чтобы даемон получал какие-либо сообщения из локальных сокетов (по умолчанию используются `/var/run/log` и `/var/run/logpriv`).

Утилита syslogd(8) теперь позволяет использовать символы `:` и `%` в спецификации имени хоста. Эти символы используются в адресах и scope ID IPv6.

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)), могут получить копию двумя способами:

- Создать индекс файл на основе текущего дерева портов, выполнив `make index` из корневого каталога дерева `ports/`.

- Забрать индексный файл по сети, выполнив `make fetchindex` из корневого каталога дерева `ports/`. Этот индексный файл (как правило) подходит для использования в течение дня.

### 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 должны внимательно прочесть инструкции ../../../../../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).

## 3. Обновление с предыдущих релизов FreeBSD

Пользователям с уже установленными системами FreeBSD настоятельно рекомендуется прочесть ``Руководство по миграции на FreeBSD 5.4-RELEASE''. На дистрибутивном носителе или в любом другом месте, где можно найти информацию о релизе, имя файла этого документа обычно `MIGRATE5.TXT`. Он предоставляет отдельные заметки по обновлению с FreeBSD 4.X, но, что более важно, сравнительно рассматривает работу с 4.`X` и обновление до 5.`X`.

> Важно: Обновление FreeBSD конечно же должно производиться только после резервного копирования всех данных и файлов настройки.

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

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

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

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