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

### Проект FreeBSD

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

$FreeBSD: src/release/doc/ru_RU.KOI8-R/relnotes/common/new.sgml,v 1.6.2.5 2004/10/11 12:59:07 den Exp $

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

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

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

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

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

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

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

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

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

Исправлена ошибка в mksnap_ffs(8); она приводила к сбрасыванию флагов файловой системы к их значению по умолчанию при создании снимка (снэпшота) файловой системы. Возможные последствия зависят от способа использования, но могут привести к отключению дополнительных списков контроля доступа, или разрешению использования setuid бита на исполняемых файлах, расположенных на недоверяемой файловой системе. Эта ошибка также относится к параметру dump(8) -L, где используется mksnap_ffs(8). Обратите внимание, что mksnap_ffs(8) обычно доступен только суперпользователям и членам группы `operator`. За дальнейшей информацией обращайтесь к сообщению безопасности FreeBSD-SA-04:01.

Исправлена ошибка в интерфейсе System V Shared Memory (а именно в системном вызове shmat(2)). Эта ошибка приводила к расположению сегмента совместно используемой памяти в невыделенном участке памяти ядра. Это может привести к получению атакующим неавторизованного доступа к частям памяти ядра, с возможным раскрытием важной информации, обходу механизмов контроля доступа, или расширению привилегий. Более детальная информация может быть найдена в сообщении безопасности FreeBSD-SA-04:02. [MERGED]

Была исправлена ошибка в коде системного вызова jail_attach(2). Эта ошибка может позволить процессу с привилегиями суперпользователя внутри среды jail(8) изменить свой корневой каталог на корневой каталог другой среды jail, и таким образом получить полный доступ на чтение и запись к файлам и каталогам внутри этого jail. Дополнительная информация может быть найдена в сообщении безопасности FreeBSD-SA-04:03.

Потенциальная DoS атака с низким трафиком на TCP стек FreeBSD была предотвращена путем ограничения количества TCP сегментов вне последовательности, которые могут одновременно обслуживаться. Более детальная информация может быть найдена в сообщении безопасности FreeBSD-SA-04:04. [MERGED]

Была исправлена ошибка в SSL/TLS ChangeCipherSpec сообщении OpenSSL, которая могла привести к удалению нулевого указателя. Она позволяла удаленной атакующей стороне вызвать крах приложений, использующих OpenSSL, и привести к отказу в обслуживании (DoS). Более детальная информация может быть найдена в сообщении безопасности FreeBSD-SA-04:05. [MERGED]

Была исправлена ошибка в коде обработки некоторых параметров сокета IPv6 в системном вызове setsockopt(2). Она позволяла атакующему локально вызвать системную панику, а также могла позволять неавторизованный доступ к частям памяти ядра, что могло привести к раскрытию важной информации, обходу механизмов контроля доступа, или расширению привилегий. Более детальная информация может быть найдена в сообщении безопасности FreeBSD-SA-04:06.

Были исправлены две ошибки в коде CVS. Они позволяли серверу перезаписывать произвольные файлы клиента, а клиенту читать произвольные файлы на сервере при удаленном доступе к CVS репозиториям. Более детальная информация может быть найдена в сообщении безопасности FreeBSD-SA-04:07. [MERGED]

Внесено исправление в Heimdal, исправляющее проблему, вследствие которой не производилась адекватная проверка аутентификации между автономными realm. Более подробная информация находится в сообщении безопасности FreeBSD-SA-04:08. [MERGED]

Была исправлена программная ошибка в CVS, позволявшая злонамеренному клиенту перезаписывать произвольные участки памяти сервера. За дальнейшей информацией обращайтесь к сообщению безопасности FreeBSD-SA-04:10. [MERGED]

Была исправлена потенциальная проблема с целостностью кэша в реализации системного вызова msync(2), использующей операцию MS_INVALIDATE. Однако, в качестве побочного эффекта исправления проблемы безопасности, флаг MS_INVALIDATE более не гарантирует выгрузку из памяти всех страниц. Пользователи, которым требуется старая семантика MS_INVALIDATE, могут установить переменную sysctl vm.old_msync, если их не беспокоит данная проблема безопасности. За дальнейшей информацией обращайтесь к сообщению безопасности FreeBSD-SA-04:11. [MERGED]

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

Была исправлена программная ошибка обработки некоторых системных вызовов Linux, вследствие которой мог стать возможным доступ к областям памяти без соответствующей проверки. За дальнейшей информацией обращайтесь к сообщению безопасности FreeBSD-SA-04:13. [MERGED]

Множество программных ошибок в CVS, могущих привести к раскрытию информации, DoS, или выполнению произвольного кода, были исправлены путем обновления до CVS 1.11.17. За дальнейшей информацией обращайтесь к сообщению безопасности FreeBSD-SA-04:14. [MERGED]

Ошибка в CONS_SCRSHOT ioctl(2) была исправлена; она может привести к получению неавторизованного доступа к областям памяти ядра с возможным раскрытием критической информации, пропуску механизмов контроля доступа, или к получению повышенных привилегий. За дальнейшей информацией обращайтесь к сообщению безопасности FreeBSD-SA-04:15. [MERGED]

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

ADAPTIVE_MUTEXES были добавлены и включены по умолчанию. Это меняет поведение блокирующих мьютексов, которые переключаются, если поток, которому принадлежит мьютекс, выполняется другим процессором. Это поведение может быть изменено путем установки параметра ядра NO_ADAPTIVE_MUTEXES.

Был добавлен параметр ядра ADAPTIVE_GIANT, который включает адаптивность Giant блокировки при включении адаптивности мьютексов. Это повышает производительность SMP систем и включено по умолчанию на i386.

Интерфейс bus_dma(9) теперь прозрачно поддерживает выравнивание и установление границ в теге DMA при загрузке буферов, и `bus_dmamap_load()` будет автоматически использовать сброс буферов когда это необходимо. Кроме того, был добавлен набор переменных sysctl hw.busdma.* для статистики bus_dma(9).

Функция contigmalloc(9) была переписана с новым алгоритмом, который серьезно повышает надежность при высокой нагрузке. Старый алгоритм может быть использован путем установки sysctl vm.old_contigmalloc. Дополнительная информация может быть получена со страницы справочника contigmalloc(9).

Правила path devfs(5) теперь корректно работают с каталогами.

API getvfsent(3) был удален.

Переменная загрузчика hw.pci.allow_unsupported_io_range была удалена.

jail(2) теперь поддерживает использование raw сокетов изнутри jail. Эта возможность отключена по умолчанию и контролируется переменной sysctl security.jail.allow_raw_sockets.

kqueue(2) теперь поддерживает новый фильтр EVFILT_FS, который используется для отправки сигналов файловой системы в пространство пользователя. На данный момент сигнализируются события mount, unmount и up/down статус NFS.

Была добавлена новая инфраструктура отладки, KDB. Она состоит из новой подсистемы GDB, которая была переписана для поддержки потоков, run-length encoding compression, и так далее, и внешний интерфейс, в инфраструктуре которого могут быть настроены несколько различных подсистем отладки, и предоставлены основные сервисы для этих подсистем. Были изменены следующие параметры:

- KDB включен по умолчанию через параметры ядра options KDB, options GDB, и options DDB. DDB и GDB указывают, какие подсистемы KDB включать.

- WITNESS_DDB был переименован в WITNESS_KDB.

- DDB_TRACE был переименован в KDB_TRACE.

- DDB_UNATTENDED был переименован в KDB_UNATTENDED.

- SC_HISTORY_DDBKEY был переименован в SC_HISTORY_KDBKEY.

- DDB_NOKLDSYM был удален. Новая подсистема DDB поддерживает pre-linker symbol lookups, так же как и KLD symbol lookups одновременно.

- GDB_REMOTE_CHAT был удален. Это изменение GDB протокола специфично для FreeBSD. Вместе с тем в протоколе GDB есть пакеты для вывода на консоль.

KDB дает также единственный способ взаимодействия для любого и всего кода, которому необходимо использование функций отладки, таких как вход в отладчик или обработка альтернативной последовательности прерывания. Для этих целей внешний интерфейс был сделан не опциональным. Все отладочные запросы перенаправляются или обрабатываются текущей подсистемой. Выбор текущей подсистемы выполняется переменной sysctl debug.kdb.current. Список установленных переменных находится в debug.kdb.available. В отладчик можно перейти, записав в sysctl debug.kdb.enter.

Была добавлена новая переменная sysctl debug.kdb.stop_cpus. Она контролирует, будут или нет IPI (Inter Processor Interrupts) для других CPU переданы при входе в отладчик, чтобы остановить их в отладчике.

Был добавлен новый параметр ядра, MAC_STATIC, который отключает внутреннюю синхронизацию MAC Framework, защищая от динамической загрузки и выгрузки политик MAC.

Политика mac_bsdextended(4) теперь поддерживает определение и применение только первого правила из всех соответствующих правил. Эта возможность может быть включена установкой новой переменной sysctl mac_bsdextended_firstmatch_enabled.

Политика mac_bsdextended(4) теперь может протоколировать неудачные попытки записи в syslog AUTHPRIV. Эта возможность может быть включена установкой новой переменной sysctl mac_bsdextended_logging.

mballoc был замещен на mbuma, Mbuf и Cluster аллокаторы основаны на множестве расширений инфраструктуры UMA. В связи с этим изменением, параметр ядра NMBCLUSTERS более не используется. Максимальное количество кластеров по прежнему устанавливается в соответствии с maxusers, но может быть сделано неограниченным путем установки переменной загрузчика kern.ipc.nmbclusters в нуль.

`/dev/kmem`, `/dev/mem`, и `/dev/io` теперь также поставляются в виде загружаемых модулей ядра.

Ошибка в mmap(2), вследствие которой страницы, помеченные как PROT_NONE, могли стать читаемыми при определенных условиях, была исправлена. [MERGED]

Был добавлен новый параметр ядра MP_WATCHDOG; он позволяет использовать один из логических CPU системы в качестве выделенного watchdog для перехода в отладчик и/или генерации NMI загружавшему процессору, если ядро не отвечает. Для включения watchdog вне потока ожидания процессора доступны несколько sysctl; для сброса таймера в watchdog применяется метка. Если таймер не сбрасывается по метке в течение десяти секунд, обрабатывается таймаут. Процессор для запуска watchdog назначается переменной sysctl debug.watchdog_cpu.

Была добавлена переменная sysctl debug.leak_schedlock. Она заставляет обработчик sysctl, некорректно заблокировавший планировщик, переключить блокировку для обработки watchdog, в соответствии с параметром MP_WATCHDOG option.

Новая переменная загрузчика debug.mpsafenet была добавлена и включена по умолчанию. Она отключает блокировку Giant при работе сетевого стека FreeBSD, что приводит к повышению производительности за счет улучшения параллельности и уменьшения задержек при сетевых вычислениях. Обратите внимание, что включение узла Netgraph ng_tty(4), KAME IPsec, и подсистемы IPX/SPX приводит к включению сетевых операций с Giant, или к появлению предупреждения при динамической загрузке этих компонентов, поскольку для корректной работы им требуется блокировка Giant.

Был добавлен новый параметр ядра, NET_WITH_GIANT. Он восстанавливает значение debug.mpsafenet по умолчанию (0), и предназначен для использования на системах, собранных с небезопасными компонентами, или там, где желательна более консервативная конфигурация.

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

Был добавлен новый параметр ядра PREEMPTION. Он позволяет вытеснять потоки в ядре потоками с более высокими приоритетами. Этот параметр позволяет повысить интерактивность и ускоряет работу потоков.

В дерево dev sysctl был добавлен уровень devclass для поддержки переменных по классам устройств, в дополнение к переменным по устройствам. Это означает, что dev.foo0.bar теперь называются dev.foo.0.bar, и возможно также наличие dev.foo.bar.

Была добавлена новая переменная sysctl, kern.always_console_output. Она направляет вывод ядра на консоль независимо от TIOCCONS.

Была добавлена переменная sysctl kern.sched.name, в которой находится имя используемого планировщика, и переменная kern.quantum была перемещена в kern.sched.quantum.

Обновлено управление ресурсами и энергопотреблением шины pci(4).

> Замечание: Хотя управление состоянием энергопотребления в шине pci(4) было включено по умолчанию, это может привести к проблемам на некоторых системах. Оно может быть отключено путем установки переменной hw.pci.do_powerstate в 0.

Планировщик ULE был добавлен в качестве дополнительного планировщика. Обратите внимание, что в качестве планировщика по умолчанию в ядре `GENERIC` все еще используется традиционный 4BSD. Для большинства пользователей интерактивность возросла во многих случаях. Это означает меньшее количество ``пропусков'' и ``рывков'' в интерактивных приложениях, когда компьютер сильно загружен. Это не предотвращает проблем с перегруженными дисковыми подсистемам, но может помочь при перегруженных CPU. На компьютерах с SMP, ULE реализует очереди для каждого CPU, позволяя использовать CPU affinity, CPU binding, и расширенную поддержку HyperThreading, а также предоставляет основу для дальнейших оптимизаций в будущем. При продолжении разработки fine-grained kernel locking, планировщик сможет более эффективно использовать доступные параллельные ресурсы.

Линейный алгоритм поиска, использовавшийся в vm_map_findspace(9), был замещен на алгоритм O(log n), строящий карту в виде дерева. Он значительно снижает нагрузку в vm_map_findspace(9) для приложений, которые используют mmap(2) во многих сотнях или тысячах вхождений.

Переменные загрузчика debug.witness_* были переименованы в debug.witness.*.

Динамический и статический линковщик FreeBSD теперь поддерживает Thread Local Storage (TLS), возможность GCC определять модификатор __thread к определению глобальных и статических переменных. Этот дополнительный модификатор означает, что значение переменной локально по отношению к потоку; один поток, изменяющий это значение, не повлияет на значение переменной в любом другом потоке.

Был обновлен код ядра, выделяющий файловые дескрипторы, и теперь он заимствован из кода OpenBSD.

Стала возможной компиляция ядра FreeBSD/i386 с Intel C/C++ Compiler (из порта `lang/icc`).

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

Добавлена версия `boot0` для последовательной консоли. Она может быть записана на диск с использованием boot0cfg(8) и указанием `/boot/boot0sio` в качестве аргумента к параметру -b.

`cdboot` теперь обходит проблему BIOS, встречающуюся на некоторых системах при загрузке с USB CDROM приводов.

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

Был добавлен драйвер acpi_asus(4) для использования на лэптопах ASUSTek управляемых ACPI аппаратных возможностей, таких как горячие клавиши и LED.

Был добавлен драйвер acpi_panasonic(4) для поддержки горячих клавиш лэптопов Panasonic. Теперь он поддерживает Let's note (или Toughbook, вне Японии) CF-R1N, CF-R2A, и CF-R3.

Был добавлен драйвер acpi_toshiba(4), использующий аппаратный интерфейс Toshiba для управления определенными аппаратными возможностями на лэптопах Toshiba, такие как переключение видео вывода.

Добавлен драйвер acpi_video(4) для обеспечения управления переключением экранов и фоновой яркостью с использованием видео расширений ACPI.

Драйвер acpi(4) теперь поддерживает sysctl на устройства (например, dev.root0.nexus0.acpi0.acpi_lid0.wake), чтобы пользователи могли управлять возможностью пробуждения системы с данного устройства.

Драйвер acpi(4) теперь автоматически отключается, если в BIOS компьютера имеются известные проблемы. Это поведение может быть изменено путем установки переменной loader hint.acpi.0.disabled в 0.

Был добавлен драйвер ctau(4) для последовательных синхронных адаптеров Cronyx Tau. Этот драйвер долгое время был известен как ``ct'' - до того, как был помещен в дерево исходных текстов FreeBSD. [MERGED]

> Замечание: Имя драйвера изменилось, но сетевой интерфейс все еще использует имя `ct`.

Был добавлен драйвер cp(4) для последовательных синхронных адаптеров Cronyx Tau-PCI.

Драйвер `dgb` (DigiBoard intelligent serial card) был удален вследствие неработоспособности. Его заменой является драйвер digi(4), который поддерживает все оборудование, которое поддерживалось драйвером `dgb`.

Драйвер nmdm(4) был переписан для увеличения надежности.

Драйвер `raid(4)` (диск RAIDframe из NetBSD) был удален. В настоящее время он не функционален, и потребует дополнительного объема работы, чтобы стать работоспособным под существующим geom(4) API в 5-CURRENT.

Запись для драйвера pcic(4) была исключена из файла конфигурации ядра `GENERIC`, поскольку драйвер более не поддерживается. Эта запись была закомментирована в течение длительного времени.

Драйвер psm(4) и moused(8) теперь поддерживают Synaptics TouchPad.

Генератор случайных чисел random(4) теперь поддерживает аппаратный генератор (RNG) процессора VIA C3 Nehemiah (Stepping 3 и выше).

Добавлен драйвер `sx`, поддерживающий Specialix I/O8+ и I/O4+ intelligent multiport serial controllers.

Добавлены переменные ядра для hw.uart.console и hw.uart.dbgport для устройства uart(4). Они могут быть использованы соответственно для выбора последовательной консоли и отладочного порта, как и атрибуты.

Был добавлен драйвер устройства ubser(4) для поддержки управляемых с консоли последовательных адаптеров BWCT.

Был добавлен драйвер ucycom(4) для поддержки семейства мостов USB к RS232 Cypress CY7C637xx и CY7C640/1xx, один из которых используется в DeLorme Earthmate USB GPS приемнике (который и является единственным поддерживаемым этим драйвером устройством на данный момент). Этот драйвер не полон, поскольку в нем еще нет поддержки вывода и контроля потока.

Некоторые старые драйверы для ISA карт были удалены, включая `asc` драйвер для основанных на GI1904 ручных сканеров, `ctx` драйвер для CORTEX-I Frame Grabber, `gp` драйвер для карт National Instruments AT-GPIB и AT-GPIB/TNT, `gsc` драйвер для ручного сканера Genius GS-4500, `le` драйвер для DEC EtherWORKS II и III контроллеров Ethernet, `rdp` драйвер для основанных на RealTek RTL 8002 адаптеров Ethernet, `spigot` драйвер для платы видеозахвата Creative Labs Video Spigot, `stl` и `stli` драйверы для мультипортовых последовательных контроллеров Stallion Technologies и драйвер `wt` для лент Archive/Wangtek. В настоящее время они нефункциональны, и потребуется определенный объем работы для приведения их в работоспособное состояние под новым API в 5-CURRENT. Поддержка пользовательских программ для этих устройств - соответствующие ioctl и утилиты, включая `sasc` и `sgsc` также были удалены.

Инфраструктура драйверов устройств (как и многие драйверы) была обновлена. Среди прочих изменений: еще больше драйверов теперь используют автоматически выделяемые главные (major) номера (вместо старых статических главных номеров). Расширены функции по поддержке клонирования псевдо-устройств. Несколько изменений в API драйверов, включая новое поле d_version в struct cdevsw. Обратите внимание, что сторонние драйвера устройств потребуют перекомпиляции после этого изменения.

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

Драйвер `meteor` (видеозахват) был удален вследствие неработоспособности и отсутствия поддержки.

Код Direct Rendering Manager (DRM) был обновлен из дерева CVS DRI Project от 26 мая 2004 года. Это обновление включает новые PCI ID и новый пакет для Radeon.

Драйверы для различных звуковых карт были реорганизованы; device sound это общий звуковой драйвер, а device snd_* это звуковые драйвера устройств. Драйвер `midi`, поддерживающий последовательный порт и несколько звуковых карт, был удален. Дополнительные подробности находятся на соответствующих страницах справочной системы: sound(4), snd_ad1816(4), snd_als4000(4), snd_cmi(4), snd_cs4281(4), snd_csa(4), snd_ds1(4), snd_emu10k1(4), snd_es137x(4), snd_gusc(4), snd_maestro3(4), snd_sbc(4), snd_solo(4), и snd_uaudio(4).

Драйвер sound(4) (бывший pcm(4)) был модифицирован для чтения `/boot/device.hints` при запуске, чтобы восстанавливать значения каналов mixer по умолчанию. Обратите внимание, что в `/boot/device.hints` все еще используется имя драйвера pcm. Дополнительную информацию и примеры можно найти на странице справочной системы sound(4).

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

Добавлен драйвер arl(4), поддерживающий беспроводные адаптеры Aironet Arlan 655. [MERGED]

Было исправлено кратковременно отключение в драйвере em(4) во время перенастройки параметров. [MERGED]

Был добавлен драйвер fwip(4), поддерживающий IP через FireWire. Обратите внимание, что на данный момент номер широковещательного канала жестко установлен и MCAP для широковещательного выделения каналов не поддерживается. Этот драйвер предназначен для соответствия стандартам RFC 2734 и RFC 3146 IP через FireWire и со временем заменит драйвер fwe(4).

fxp(4) теперь использует дерево устройств sysctl, например dev.fxp0, и эти переменные sysctl могут быть установлены для каждого устройства.

fxp(4) теперь предоставляет реальный контроль над возможностью получения расширенных фреймов Ethernet, отображаемый как VLAN_MTU. Она может переключаться из пространства пользователя параметрами ifconfig(8) vlanmtu и -vlanmtu.

Драйвер `hea` (Efficient Networks, Inc. ENI-155p ATM adapter) был удален вследствие неработоспособности. Его функциональность была добавлена в драйвер en(4).

Драйвер hme(4) теперь поддерживает длинные фреймы, и может использоваться для vlan(4) с полным размером Ethernet MTU.

Драйвер hme(4) теперь поддерживает TCP/UDP Transmit/Receive разгрузку контрольной суммы (checksum offload) на прием/передачу. Поскольку hme(4) не компенсирует контрольную сумму для UDP дейтаграммы, которая может принимать значение 0x0, UDP разгрузка контрольной суммы на передачу выключена по умолчанию. Она может быть включена путем установки параметра соединения link0 через ifconfig(8).

Был добавлен драйвер ixgb(4), поддерживающий карты Intel PRO/10GBE 10 Gigabit Ethernet. [MERGED]

Драйвер `lmc` (LAN Media Corp. PCI WAN adapter) был удален вследствие неработоспособности и отсутствия поддержки.

Драйвер `loran` (Loran-C receiver) был удален вследствие неработоспособности и отсутствии поддержки.

FreeBSD теперь предоставляет уровень бинарной совместимости для использования Microsoft(R) Windows(R) NDIS драйверов для сетевых адаптеров под FreeBSD/i386. Он включает relocator/linker для Windows `.SYS` для интерфейса с ядром FreeBSD и эмулирует различные части NDIS API используя родные функции ядра FreeBSD. Эта система поддерживает сетевые устройства PCI ( pci(4)) и CardBus ( cardbus(4)), и разработана главным образом для Ethernet и беспроводных сетевых интерфейсов. За дополнительной информацией обращайтесь к страницам справочника ndis(4) и ndiscvt(8).

Была исправлена ошибка в драйвере nge(4), которая делала невозможной работу VLAN. [MERGED]

Были исправлены несколько ошибок, относящиеся к поддержке polling(4) в драйвере rl(4). [MERGED]

Были исправлены несколько ошибок, относящихся к обработке multicast и promiscuous режимов в драйвере sk(4).

Драйвер ste(4) теперь поддерживает polling(4). [MERGED]

Был добавлен драйвер udav(4). Он предоставляет поддержку USB Ethernet адаптеров, основанных на Davicom DM9601 чипсете.

Был добавлен драйвер vge(4), поддерживающий чип VIA Networking Technologies VT6122 Gigabit Ethernet и интегрированный 10/100/1000 copper PHY.

Драйвер vr(4) теперь поддерживает polling(4). [MERGED]

Поддержка аппаратной TX контрольной суммы в драйвере xl(4) была отключена, поскольку она не работала корректно и уменьшала скорость передачи данных. [MERGED]

Поддержка интерфейсами polling(4) теперь может быть включена поинтерфейсно. Следующие сетевые драйверы поддерживают polling(4): dc(4), fxp(4), em(4), ixgb(4), nge(4), re(4), rl(4), sis(4), ste(4), vge(4), и vr(4). Эта возможность может управляться через ifconfig(8) (за исключением ixgb(4)). [MERGED]

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

Драйвер туннеля gre(4) теперь поддерживает WCCP версии 2.

Правила ipfw(4) теперь поддерживают параметр versrcreach, для проверки наличия в таблице маршрутизатора действующего маршрута к адресу источника пакета. Этот параметр очень полезен для маршрутизаторов с полной информацией об основных маршрутах интернет в таблице маршрутизации (BGP) для отбрасывания пакетов с подделанными или немарштутизируемыми адресами источников. Например,

    deny ip from any to any not versrcreach

это эквивалент следующей команды в синтаксисе Cisco IOS:

    ip verify unicast source reachable-via any

Правила ipfw(4) теперь поддерживают параметр antispoof, для проверки адреса источника входящих пакетов на принадлежность к непосредственно подключенной сети. Если сеть подключена непосредственно, входящий пакет проверяется на соответствие интерфейсу, с которого он пришел. Когда входящий интерфейс и подключенный непосредственно интерфейс не совпадают, пакет не соответствует правилу. Например:

    deny ip from any to any not antispoof in

Правила ipfw(4) теперь поддерживают параметр jail, для ассоциации со специфическим ID. Например:

    count ip from any to any jail 2

Имейте ввиду, что это правило на данный момент применяется только к TCP и UDP пакетам.

ipfw(4) теперь поддерживает таблицы адресов (lookup tables), полезные при обработке больших наборов разных адресов. [MERGED]

Правило ipfw(4) forward было встроено в ядро параметром IPFIREWALL_FORWARD.

Новая переменная sysctl net.inet.ip.process_options для контроля обработки параметров IP. При установке этой переменной в 0 параметры IP игнорируются и передаются не измененными, при установке в 1 все параметры IP обрабатываются (поведение по умолчанию), а при установке в 2 все пакеты с параметрами IP отбрасываются с сообщением ICMP filter prohibited.

Были исправлены некоторые ошибки в реализации IPsec от KAME Project. Эти ошибки были связаны с освобождением объектов памяти перед тем, как все ссылки на эти объекты были удалены, они могли стать причиной странного поведения или паники ядра после очистки Security Policy Database (SPD).

natd(8) теперь поддерживает несколько экземпляров через новый параметр globalports. Он позволяет natd(8) привязку к различным сетевым интерфейсам и распределение нагрузки.

Был добавлен тип узла Netgraph ng_atmllc(4), который работает с RFC 1483 ATM LLC инкапсуляцией.

Был добавлен тип узла Netgraph ng_hub(4), который поддерживает простую рассылку пакетов и работает как концентратор Ethernet. [MERGED]

Тип узла Netgraph ng_rfc1490(4) теперь поддерживает инкапсуляцию в стиле Cisco, которая часто используется вместе с RFC 1490 в соединениях frame relay.

Был добавлен тип узла Netgraph ng_sppp(4), являющийся интерфейсом netgraph(4) к оригинальному сетевому модулю sppp(4) для синхронных линий.

Был добавлен новый метод Netgraph, позволяющий восстановление поведения, потерянного при изменении стиля узлов Netgraph ng_tee(4) с 4.X.

Был добавлен тип узла Netgraph ng_vlan(4), который поддерживает IEEE 802.1Q VLAN tagging. [MERGED]

Поддержка PFIL_HOOKS теперь постоянно встроена в ядро, и соответствующие параметры ядра были удалены. Все подсистемы фильтрации пакетов, поддерживаемые FreeBSD, теперь используют инфраструктуру PFIL_HOOKS.

В сокет маршрутизации была добавлена поддержка уведомления об изменении состояния носителя Ethernet.

Поддержка Link Quality Monitoring (LQM) в ppp(8) была переписана заново. LQM, описанный в RFC 1989, позволяет PPP сохранять информацию о качестве работающего соединения. [MERGED]

Клонирование псевдо-интерфейсов было обновлено, чтобы сделать возможным создание интерфейсов stf(4) с именами `stf0`, `stf`, или `6to4`. Обратите внимание, что это нарушает обратную совместимость; например, теперь `ifconfig stf` создаст интерфейс `stf`, а не `stf0`, и не выведет `stf0` на стандартный вывод.

Следующие возможности TCP теперь включены по умолчанию: RFC 3042 (Limited Retransmit), RFC 3390 (increased initial congestion window sizes), TCP bandwidth-delay product limiting. Для этих возможностей доступен набор переменных sysctl net.inet.tcp.rfc3042, net.inet.tcp.rfc3390, и net.inet.tcp.inflight.enable. Дополнительная информация может быть найдена в tcp(4).

FreeBSD реализация TCP теперь включает поддержку минимального MSS (устанавливается через переменную sysctl net.inet.tcp.minmss) и ограничение потока данных через соединения, передающие множество мелких TCP сегментов в короткий период времени (через переменную sysctl net.inet.tcp.minmssoverload). Соединения, превысившие этот предел, могут быть сброшены. Эта возможность предоставляет защиту от целого класса исчерпывающих ресурсы атак.

Реализация TCP теперь включает частичную поддержку RFC 2385 (TCP-MD5) digest (только на вывод). Эта возможность, включаемая параметрами ядра TCP_SIGNATURE и FAST_IPSEC, является расширением TCP для аутентификации TCP сессий. setkey(8) теперь включает поддержку TCP-MD5 класса ассоциаций безопасности. [MERGED]

Обработка reset в TCP соединении была улучшена, чтобы усложнить reset атаки настолько, насколько это возможно, при сохранении совместимости с широчайшим диапазоном TCP стеков.

Реализация RFC 1948 была улучшена. Компонент временного смещения в Initial Sequence Number (ISN) теперь включает случайное положительное число, так что ISN всегда увеличивается, независимо от скорости повторного использования порта.

Было реализовано произвольное ``эфемерное'' выделение порта (random ephemeral port allocation), пришедшее из OpenBSD. Оно включено по умолчанию и может быть отключено через переменную sysctl net.inet.ip.portrange.randomized. [MERGED]

Был добавлен TCP Selective Acknowledgements (SACK), как описано в RFC 2018. Это увеличивает производительность TCP через соединения с большими потерями пакетов. SACK может быть включен переменной sysctl net.inet.tcp.sack.enable.

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

Драйвер ata(4) теперь поддерживает контроллеры cardbus(4) ATA/SATA.

Было исправлено множество ошибок в драйвере ata(4). Наиболее заметные из них относятся к улучшению детектирования master/slave устройств и к проблемам с задержками.

Драйвер ata(4) теперь поддерживает Promise command sequencer, имеющийся на всех современных контроллерах Promise (PDC203** PDC206**).

> Замечание: Добавлена также предварительная поддержка для Promise SX4/SX4000 в качестве ``обычного'' Promise ATA контроллера; ATA RAID поддерживается, но только с уровнями RAID0, RAID1 и RAID0+1.

Параметр ядра DA_OLD_QUIRKS, предназначенный для драйвера диска CAM SCSI ( cam(4)) был удален. [MERGED]

Была исправлена ошибка в geom(4), которая могла приводить к прерыванию ввода/вывода в некоторых редких случаях.

Был добавлен новый класс geom(4) GEOM_CONCAT для соединения нескольких дисков в один.

Был добавлен новый класс geom(4) GEOM_NOP для различного тестирования.

Были добавлены новый класс geom(4) GEOM_RAID3 для преобразования RAID3 и утилита пользователя graid3(8).

Был добавлен новый класс geom(4) GEOM_STRIPE, который реализует преобразование RAID0. В этом классе есть два режима: ``fast'' и ``economic''. В режиме fast, когда используются очень небольшой размер страйпа, только один запрос ввода вывода отправляется к каждому диску в страйпе; это приблизительно в 10 раз быстрее для страйпов малого размера, чем режим economic и другие реализации RAID0. Хотя режим fast используется по умолчанию, он потребляет несколько больше памяти. Путем установки переменной загрузчика kern.geom.stripe.fast в 0 может быть включен режим economic, в котором запросы отправляются каждый раз. Возможно также указание максимального количества памяти, потребляемого в режиме fast, через переменную загрузчика kern.geom.stripe.maxmem.

Был добавлен GEOM Gate, который состоит из нового класса geom(4) GEOM_GATE и нескольких утилит пользователя GEOM Gate ( ggatel(8), ggatec(8), and ggated(8)). Он поддерживает экспорт устройств, включающих не приспособленные к geom(4) через сеть.

Был добавлен новый класс geom(4) GEOM_LABEL для обнаружения меток томов на различных файловых системах, таких как UFS, MSDOSFS (FAT12, FAT16, FAT32), и ISO9660.

Новый класс geom(4) GEOM_GPT, поддерживающий разделы GUID Partition Table (GPT) и возможность создания большого количества разделов на одном диске, был добавлен в `GENERIC` по умолчанию.

Был добавлен новый класс geom(4) GEOM_MIRROR, поддерживающий функциональность RAID1. Для контроля этого класса может использоваться утилита gmirror(8).

Был добавлен новый класс geom(4) GEOM_UZIP, реализующий сжатые диски только для чтения. На данный момент он поддерживает формат сжатия дисков cloop V2.0.

Был добавлен новый класс geom(4) GEOM_VINUM для поддержки взаимодействия между vinum(4) и geom(4).

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

Был добавлен драйвер twa(4), поддерживающий контроллеры 3ware's 9000 series PATA/SATA RAID. [MERGED]

Драйвер umass(4) теперь поддерживает отсутствовавшие команды ATAPI MMC и правильно обрабатывает задержки. [MERGED]

Менеджер томов vinum(4) был обновлен для использования geom(4), инфраструктуры трансформирования дисковых запросов ввода-вывода 5.x. Была добавлена утилита пользователя `gvinum`.

Была добавлена поддержка LSI-type программного RAID.

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

Код файловой системы EXT2FS теперь включает частичную поддержку больших файлов (> 4GB). Частичность поддержки заключается в том, невозможно создать большие файлы на файловых системах, которые не были обновлены до EXT2_DYN_REV или на тех, где в суперблоке не установлен флаг EXT2_FEATURE_RO_COMPAT_LARGE_FILE.

Была исправлена паника в NFSv4 клиенте; она случалась при попытке работы с поддерживающим только NFSv3/NFSv2 сервером.

Был добавлен параметр ядра MSDOSFS_LARGE для поддержки файловых систем больших, чем 128GB. Этот параметр выключен по умолчанию. Имейте ввиду, что он использует как минимум 32 байта памяти ядра для каждого файла на диске; его использование безопасно только в четко контролируемых ситуациях, таких как монтирование файловой системы с менее чем 1 миллионом файлов только для чтения, и так далее. Экспорт этих больших файловых систем по NFS не поддерживается.

Клиент SMBFS теперь поддерживает подпись SMB запроса, которая предотвращает атаки ``man in the middle'' и необходима для подключения к серверам Windows 2003 в настройке по умолчанию. Поскольку подпись каждого сообщения понижает производительность, эта возможность включается только если сервер ее требует; со временем она может стать параметром mount_smbfs(8).

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

ALTQ framework была импортирована из снэпшота KAME от 7 июня 2004 года. Этот импорт нарушает совместимость ABI в struct ifnet и требует перекомпиляции всех сетевых драйверов. Кроме того, некоторые сетевые драйверы были изменены для поддержки инфраструктуры ALTQ. Обновлены драйверы bfe(4), em(4), fxp(4), em(4), lnc(4), tun(4), de(4), rl(4), sis(4), и xl(4).

IPFilter был обновлен с версии 3.4.31 до версии 3.4.35 [MERGED].

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

acpidump(8) теперь поддерживает таблицы SSDT. Дамп или дизассемблирование DSDT теперь также включает содержимое этих таблиц, если они присутствуют.

bsdlabel(8) теперь поддерживает параметр -f для работы с файлами вместо разделов диска.

bsdtar(1) теперь используется в качестве утилиты tar(1) в базовой системе FreeBSD по умолчанию. `/usr/bin/tar` был сделан символической ссылкой, указывающей по умолчанию на `/usr/bin/bsdtar`. Для возврата к `/usr/bin/gtar` по умолчанию, может быть использована переменная сборки WITH_GTAR.

Были добавлены команды `bthidcontrol` и `bthidd`, поддерживающие Bluetooth HID (Human Interface Device).

col(1), colcrt(1), colrm(1), column(1), fmt(1), join(1), rev(1), tr(1), и ul(1) теперь поддерживают многобайтовые символы.

conscontrol(8) теперь поддерживает команды set и unset, которые устанавливают/удаляют виртуальную консоль. unset направляет вывод из системы, например printf(9) из ядра, на реальную основную консоль. Это интерфейс к tty ioctl TIOCCONS.

Даемон cron(8) теперь принимает два параметра, -j и -J, включающие рассинхронизацию заданий, запускаемых непривилегированными пользователями и суперпользователем соответственно. Рассинхронизация означает, что перед выполнением задания cron(8) останавливается на небольшой произвольный период времени в заданном пределе. Эта возможность предназначена для уменьшения пиков нагрузки, появляющихся при выполнении большого количества задач, запланированных на определенный момент времени. [MERGED]

Параметры cut(1) -c, -d, и -f теперь корректно работают в локалях с многобайтными символами.

cvs(1) теперь поддерживает ключевое слово iso8601 для отображения дат в формате ISO 8601.

daemon(8) теперь поддерживает параметр -p для создания PID файла.

dd(1) теперь поддерживает параметр fillchar для указания альтернативного символа заполнения в режиме конверсии, или при использовании noerror с sync при возникновении ошибки ввода.

df(1) теперь поддерживает параметр -c для отображения полной статистики файловых систем.

Была исправлена ошибка в df(1), которая могла приводить к выводу некорректной информации при указании параметра -t и недоступности точки монтирования для вызывающего пользователя.

Утилита `doscmd` была удалена из базовой системы FreeBSD и доступна через порт `emulators/doscmd` из коллекции портов FreeBSD.

dump(8) и restore(8) теперь поддерживают параметр -P для указания других методов резервного копирования (не в файлы или на ленты). Аргумент передается sh(1) с определенной переменной окружения $DUMP_VOLUME или $RESTORE_VOLUME соответственно. Дополнительная информация находится на страницах справочника dump(8) и restore(8).

Была добавлена утилита eeprom(8) для отображения и изменения настроек системы, сохраненных в EEPROM или NVRAM. Существующая реализация поддерживает системы, поставляемые с Open Firmware.

Была добавлена функция fgetwln(3), версия fgetln(3) для расширенных символов.

Утилита find(1) теперь поддерживает параметр -acl в основном для поиска файлов с acl(3).

Утилита find(1) теперь поддерживает новый основной параметр -depth n, который проверяет, соответствует ли глубина вложения данного файла относительно начальной точки поиска n. [MERGED]

ftpd(8) теперь при открытии сокета для передачи данных в активном режиме использует эффективный UID текущего пользователя, а не `root`. Это полезно для сопоставления анонимного FTP трафика правилу ipfw(8) с параметром uid.

Были реализованы функции ftw(3) и nftw(3). Они используются для прохода по иерархии каталогов.

Была добавлена утилита geom(8) для оперирования классами geom(4) из пространства пользователя.

gpt(8), утилита для работы с GUID таблицей разделов, теперь поддерживает команду remove. Ее команда add теперь поддерживает параметр -i, который позволяет пользователю определять номер для нового раздела.

id(1) теперь поддерживает параметр -M для вывода метки MAC текущего процесса.

ifconfig(8) теперь поддерживает переименование сетевых интерфейсов на лету, используя параметр name.

ifconfig(8) теперь выводит polling(4) статус интерфейса. [MERGED]

ifconfig(8) теперь предоставляет параметры vlanmtu и -vlanmtu, контролирующие возможность получения расширенных фреймов некоторыми Ethernet интерфейсами (т.е. фреймов, содержащих более чем 1500 байт данных).

ifconfig(8) теперь предоставляет параметры vlanhwtag и -vlanhwtag, контролирующие возможность обработки тегов VLAN некоторыми Ethernet интерфейсами на аппаратном уровне.

indent(1) теперь поддерживает параметр -ldi для управления выравниванием локальных переменных. В этой утилите было сделано несколько других изменений.

indent(1) now supports -fbs and -ut for function declarations with the opening brace on the same line as the declaration of arguments all spaces and no tabs in order to fix problem when non-8 space tabs are used.

ip6fw(8) теперь поддерживает флаг -n для запрета внесения любых изменений в правила ядра

ipcs(1) теперь поддерживает параметр -u для отображения информации о IPC механизмах, принадлежащих определенному пользователю.

ipfw(8) теперь поддерживает параметр -b для вывода только действия и комментария каждого правила, исключая тело правила.

jail(8) теперь поддерживает параметр -U для запуска команды под пользователем, который существует только внутри среды jail(2).

jail(8) теперь поддерживает параметр -l для очистки окружения. Все переменные окружения очищаются, за исключением HOME, SHELL, PATH, TERM, и USER перед запуском программы в jail под определенным пользователем. Это поведение подобно поведению su(1) с параметром -l.

Была добавлена утилита отладки ядра kgdb(1), которая использует libgdb и работает с потоками ядра, модулями ядра и kvm(3).

killall(1) теперь поддерживает флаг -e, с которым -u указывает на эффективный, а не реальный ID пользователя. [MERGED]

В libalias(3) теперь есть поддержка (и новый API) для нескольких синонимов в одном процессе. Существующий API был переписан в терминах нового для сохранения совместимости.

Была добавлена библиотека libarchive для работы со сжатыми и несжатыми архивными файлами. Дополнительная информация может быть найдена в libarchive(3).

libdisk теперь использует d_addr_t для адресов дисков. Это позволяет sysinstall(8) правильно работать с дисками и файловыми системами размером более 1 TB.

Библиотека, первоначально известная как libkse, была переименована в libpthread и теперь это библиотека потоков по умолчанию для платформ i386, amd64 и ia64. Параметр GCC -pthread был изменен для использования libpthread вместо libc_r.

> Замечание: Пользователи со старыми бинарными файлами (например, из портов, скомпилированных до внесения этого изменения) должны использовать libmap.conf(5) для создания ссылок libc_r и/или libkse на libpthread.

> Замечание: Пользователям поставляемых NVIDIA драйверов и библиотек может потребоваться использование libmap.conf(5), в котором есть ссылка libpthread на старую библиотеку libc_r, поскольку эти драйвера не работают с libpthread.

libpthread теперь поддерживает переменную окружения LIBPTHREAD_SYSTEM_SCOPE для включения режима 1:1 (используя набор системных потоков). Обратите внимание, что сборка libpthread с флагом -DSYSTEM_SCOPE_ONLY также включает режим 1:1, и что этот параметр установлен по умолчанию для архитектур, которые еще не поддерживают режим M:N. Кроме того, переменная окружения LIBPTHREAD_PROCESS_SCOPE может использоваться для принудительного включения режима M:N (используя набор потоков процесса). Например:

    % LIBPTHREAD_SYSTEM_SCOPE=yes threaded_app

заставляет приложение threaded_app использовать системный набор потоков, а

    % LIBPTHREAD_PROCESS_SCOPE=yes threaded_app

соответственно заставляет его использовать набор потоков процесса.

Ошибка в параметре -d look(1) была исправлена. Кроме того, look(1) теперь корректно работает с многобайтными локалями.

ls(1) теперь обрабатывает имена файлов как мультибайтовые последовательности символов, в соответствии с текущей переменной LC_CTYPE, когда определяется какие символы печатаемые.

make(1) теперь поддерживает новую директиву .warning.

make(1) теперь поддерживает POSIX-совместимый флаг + в командных строках `Makefile`, которая приводит к выполнению строки даже при указании параметра -n. Это полезно например при вызове вложенных make.

make(1) теперь помещает переменные из командной строки в переменную MAKEFLAGS, как этого требует POSIX. Это приводит к передаче переменных через все вложенные make, вызываемые через make(1) (кроме переменной MAKEFLAGS, которая эксклюзивно изменяется в окружении вложенного make). Помимо прочего, это делает переменные не переписываемыми во вложенных make, кроме как из командной строки.

Были реализованы функции C99 nearbyint(3) и nearbyintf(3).

Был реализован заголовок C99 `tgmath.h`. Он предоставляет макрос для функций `math.h` и `complex.h`, которые реализованы для float, double и long double.

Были реализованы расширения GNU для mbsnrtowcs(3) и wcsnrtombs(3).

newsyslog(8) теперь позволяет пользователям устанавливать параметр отладки через файл `newsyslog.conf`.

newsyslog(8) теперь использует новый порядок при обработке ротации файлов. Сначала ротируются все файлы, которые необходимо ротировать, затем посылается одиночный сигнал каждому процессу, которому необходимо послать сигнал, и наконец все файлы, которые были ротированы, сжимаются.

Была добавлена функция nextwctype(3) для перебора всех символов из определенного класса.

Была добавлена первичная поддержка для UTF-8 версий всех поддерживаемых в настоящее время системных локалей. Это сделано в основном для порта `misc/utf8locale`.

Добавлена локаль Israel Hebrew he_IL.UTF-8.

Была добавлена утилита logins(1) для отображения информации о пользовательских и системных учетных записях.

mountd(8) теперь поддерживает параметр -p, позволяющий пользователям указывать известный порт для указания его в правилах брандмауэра.

netstat(1) теперь отображает членство в широковещательных группах, имеющихся в системе.

newfs(8) и mdmfs(8) теперь поддерживают флаг -l для установки MAC multilabel флага на новых системах без использования tunefs(8).

nologin(8) теперь сообщает о попытках входа через syslogd(8).

Программа nologin(8) была перемещена из `/sbin/nologin` в `/usr/sbin/nologin`. `/sbin/nologin` стал символической ссылкой для обратной совместимости.

В поддержку NSS было внесено исправление, которое решает проблемы с использованием сторонних NSS модулей (таких как `net/nss_ldap`) и групп с длинным списком членов.

В od(1) теперь есть поддержка многобайтных символов в стиле POSIX.

patch(1) была замещена BSD-лицензированной версией из OpenBSD. Она включает параметр --posix для строгого соответствия POSIX.

Были добавлены команды pgrep(1) и pkill(1), пришедшие их NetBSD. Они также поддерживают параметр -M для извлечения значений, связанных со списком имен из указанного дампа (core) вместо `/dev/kmem` по умолчанию, и параметр -N для извлечения списка имен из указанной системы вместо ядра (kernel) по умолчанию.

ppp(8) теперь поддерживает команду ``set rad_alive N'' для периодического отправления учетной информации RADIUS на сервер RADIUS. [MERGED]

ppp(8) теперь поддерживает команду ``set pppoe [standard|3Com]'' для настройки режима взаимодействия с низлежащим узлом Netgraph ng_pppoe(4).

Была улучшена совместимость ps(1) с POSIX/SUSv3. Эти изменения включают параметры -p для списка ID процессов, -t для списка имен терминалов, -A, которая эквивалентна -ax, -G для списка ID групп, -X, которая противоположна -x, и некоторые мелкие улучшения. За дальнейшей информацией обращайтесь к ps(1). [MERGED]

ps(1) теперь поддерживает параметр форматирования -O emul, при котором печатается имя эмулируемых системных переменных окружения, в которых находится процесс.

pw(8) теперь поддерживает параметр -H, который принимает указатель на файл с зашифрованным паролем. [MERGED]

Была исправлена ошибка в rarpd(8), которая не позволяла ему правильно работать на интерфейсах более чем с одним IP адресом. [MERGED]

regex(3) теперь поддерживает регулярные выражения, учитывая многобайтные символы.

Файлы настройки, используемые resolver(3), теперь поддерживают ключевые слова timeout: и attempts:.

resolver(3) и ассоциированные интерфейсы теперь гораздо лучше подходят для повторного использования и работы с потоками. Множественные запросы к DNS теперь могут происходить одновременно, что приводит к значительному улучшению производительности некоторых многопоточных приложений. Некоторые многопоточные приложения необходимо перекомпилировать; примеры из коллекции портов: `www/mozilla` и варианты, `mail/evolution`, `devel/gnomevfs`, и `devel/gnomevfs2`.

rmdir(1) теперь поддерживает флаг -v, для вывода информации об удаляемых файлах.

savecore(8) теперь правильно работает для дамп файлов больше 2GB.

Ошибка в script(1) была исправлена, и теперь он работает корректно если его стандартный ввод закрыт. Это исправление предотвращает потенциально опасное взаимодействие с пакетом `sysutils/portupgrade`; если он запускался не интерактивно, то мог удалить все устаревшие порты без их переустановки.

Был добавлен даемон sdpd(8) Bluetooth Service Discovery Protocol.

Команда sed(1) y (транслирование) теперь поддерживает многобайтные символы.

Были добавлены утилиты sha1(1) и rmd160(1). Подобно md5(1), они вычисляют хэш вводимых данных. [MERGED]

Была добавлена небольшая утилита smbmsg(8), для отправки/получения SMBus сообщений.

talk(1) теперь использует `localhost` в качестве компьютера по умолчанию в пакетах запроса talkd(8), если назначение и источник локальны. Это делает talk(1) зависимым от правильно установленной записи для `localhost` в `/etc/hosts` или в DNS.

tftpd(8) теперь поддерживает два новых параметра: параметр -w, позволяющий создание новых файлов, и параметр -U, позволяющий установку umask.

top(1) теперь поддерживает отображение текущего количества I/O. Эта возможность может быть включена нажатием ``m'' или передачей параметра командной строки -m io.

Многие утилиты пользователя в базовой системе (в основном предоставленные GNU утилиты) теперь используют системную версию getopt_long(3), вместо GNU версии.

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

Скрипт `diskless` был разделен на `hostname`, `resolve`, `tmp` и `var`.

Был добавлен скрипт `gbde_swap`, поддерживающий gbde устройства подкачки. При указании переменной gbde_swap_enable в rc.conf(5), устройство подкачки `/dev/foo.bde` из fstab(5) автоматически подключается во время загрузки с устройством `/dev/foo` и случайным ключом, полученным как контрольная сумма MD5 от 512 байт, прочитанных из `/dev/random`. Обратите внимание, что это делает невозможным восстановление дампов ядра.

Были добавлены ip6addrctl_enable и ip6addrctl_verbose. Когда ip6addrctl_enable установлена в YES, политика выбора адреса загружается в ядро. Если существует `/etc/ip6addrctl.conf`, он будет использован, иначе будет задействована политика по умолчанию. Применяется политика по умолчанию, описанная в RFC 3484, если ipv6_enable установлена в YES. Иначе в качестве политики по умолчанию будет использована политика приоритетов для адресов IPv4.

Был добавлен скрипт `mixer`. При завершении работы сохраняет текущие настройки всех аудио микшеров, присутствующих в системе, и восстанавливает их при загрузке.

Скрипт `named` был обновлен для поддержки BIND 9 в базовой системе. Изменения включают:

- named(8) по умолчанию запускается в каталоге chroot(2) `/var/named`. Это поведение может быть отменено переменной named_chrootdir в файле named_chrootdir, а каталог chroot(2) может быть изменен переменной named_chrootdir в том же файле.

- Когда переменная named_chroot_autoupdate установлена в YES (это значение по умолчанию), каталог chroot автоматически настраивается во время загрузки. Символическая ссылка, которая указывает на `/var/named/etc/namedb`, создается как `/etc/namedb`, а символическая ссылка, которая указывает в `/var/named/var/run/named/pid`, создается как `/var/run/named/pid`. Последнее может быть отменено переменной named_symlink_enable в файле `rc.conf`.

- Файл `rndc.key` создается автоматически, если еще не существует.

Были добавлены скрипты `pf` и `pflog` для pf(4).

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

Код ACPI-CA был обновлен с с снэпшота 20030619 до снэпшота 20040527.

AMD (am-utils) был обновлен с версии 6.0.9 до версии 6.0.10p1.

awk от Bell Labs был обновлен с релиза от 29 июня 2003 года до релиза 7 февраля 2004 года.

BIND был обновлен с версии 8.3.1-REL до версии 9.3.0. [MERGED]

Binutils были обновлены до снэпшота от 23 мая 2004 из ветви FSF 2.15.

CVS был обновлен с версии 1.11.15 до версии 1.11.17. [MERGED]

FILE был обновлен с версии 3.41 до версии 4.10.

gdtoa (библиотека, выполняющая преобразования чисел между бинарным и десятичным форматами) была обновлена с версии 20030324 до версии 20040118.

GDB был обновлен до версии 6.1.1.

GNU GCC был обновлен с версии 3.3.3-prerelease от 6 ноября, 2003 до 3.4.2-prerelease от 28 июля, 2004.

GNU grep был обновлен с версии 2.4d до версии 2.5.1.

less был обновлен с версии 371 до версии 381.

GNU readline 4.3 была обновлена официальными патчами с 001 до 005.

Библиотека GNU regex была обновлена до версии, включенной в GNU grep 2.5.1.

GNU sort был обновлен с textutils 2.1 до снэпшота coreutils 5.2.1 от 12 августа 2004 года.

Реализация GNU tar в основной системе теперь называется `gtar`.

Heimdal Kerberos был обновлен с версии 0.6 до версии 0.6.1.

Клиент ISC DHCP был обновлен c версии 3.0.1 RC10 до версии 3.0.1.

libpcap была обновлена с версии 0.7.1 до версии 0.8.3.

lukemftpd был обновлен с снэпшота от 3 ноября 2003 года до снэпшота от 9 августа 2004 года.

NTP был обновлен с версии 4.1.1a до версии 4.2.0.

OpenPAM был обновлен с релиза Dogwood до релиза Eelgrass.

OpenSSH был обновлен с версии 3.6.1p1 до версии 3.8.1p1.

> Замечание: Настройка по умолчанию для sshd(8) была изменена. SSH протокол версии 1 теперь не включен по умолчанию. Кроме того, аутентификация по паролю через SSH выключена по умолчанию если включен PAM.

OpenSSL был обновлен с версии 0.9.7c до версии 0.9.7d. [MERGED]

Поддержка OpenSSL VIA C3 Nehemiah PadLock ACE (Advanced Cryptography Engine) криптографии, которая предоставляет шифрование Advanced Encryption Standard (AES), была импортирована из пререлиза OpenSSL.

pf, пакетный фильтр OpenBSD из OpenBSD 3.5-stable, был импортирован в дерево исходных текстов FreeBSD, и теперь установлен по умолчанию. Добавлены также два новых пользователя (`proxy` и `_pflogd`) и три новых группы (`authpf`, `proxy` и `_pflogd`), которые необходимы pf.

> Замечание: При обновлении из исходных текстов, должны быть добавлены эти учетные записи. Для добавления этих записей в passwd(5) и group(5) может быть использован mergemaster -p. Для выключения сборки pf может быть использована переменная NO_PF в `make.conf`.

Были импортированы несколько утилит пользователя из OpenBSD pf. ftp-proxy(8) это ftp прокси для pf(4), pfctl(8) это эквивалент ipf(8), pflogd(8) это даемон для протоколирования пакетов через if_pflog в формате pcap(3), и authpf(8) оболочка для изменения наборов правил pf(4).

routed был обновлен с релиза 2.22 до релиза 2.27 с rhyolite.com. Обратите внимание, что для тех, кто использовал возможность RIP MD5 аутентификацию, routed(8) теперь несовместим с предыдущими версиями FreeBSD; однако, теперь он совместим с реализациями от Sun, Cisco и других поставщиков.

sendmail был обновлен с версии 8.12.10 до версии 8.13.1. [MERGED]

tcpdump был обновлен с версии 3.7.1 до версии 3.8.3.

tcsh был обновлен с версии 6.11 до 6.13.00.

База данных временных зон была обновлена с `tzdata2003a` до `tzdata2004a`.

zlib был обновлен с версии 1.1.4 до версии 1.2.1.

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

Большинство скриптов запуска/останова, устанавливаемые различными портами, теперь используют новую инфраструктуру rc(8), представленную в FreeBSD 5.X, хотя некоторые порты все еще используют скрипты в старом стиле. При запуске сначала выполняются скрипты в новом стиле, а затем в старом. При останове все происходит в точности наоборот.

Был добавлен и включен по умолчанию атрибут SIZE для distfiles, который может быть использован для проверки размеров файлов перед загрузкой. DISABLE_SIZE может быть использована для запрещения проверки размера. Это особенно полезно на старых версиях FreeBSD, где нет соответствующей поддержки в fetch(1), и для некоторых FTP прокси, которые всегда выдают неверные размеры.

Для отслеживания наиболее важных изменений в дерево портов были добавлены два файла: `ports/CHANGES` содержит список основных изменений в коллекции портов и ее инфраструктуре. `ports/UPDATING` описывает некоторые потенциально проблемные случаи, которые могут встретиться при обновлении определенных портов, по аналогии с `src/UPDATING` в базовой системе.

Код обработки версий в системных утилитах `pkg_*` был переписан для восстановления совместимости с 4.x и `sysutils/portupgrade`.

Инструментарий пакетов теперь может искать совпадения с помощью операторов отношения и выборов в стиле csh {...}, например:

    # pkg_info -I 'docbook>=3.0'

отобразит (все) docbook DTD с версией как минимум 3.0. Дополнительные параметры командной строки также были добавлены для поддержки шаблонов.

Была улучшена обработка сбойных баз данных пакетов.

pkg_create(1) теперь поддерживает параметр -S для добавления префикса ко всем @cwd во время создания пакета.

pkg_info(1) теперь поддерживает параметр -j для отображения скрипта зависимостей каждого пакета.

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

Процесс сборки загрузочных дискет был полностью пересмотрен. Наиболее значительное изменение заключается в том, что загрузчик теперь загружает `GENERIC` ядро, разделенное на несколько дисков (два на момент написания). Это существенно улучшает установку, начинающуюся загрузкой с дискеты, поскольку теперь она использует точно такое же ядро (и, таким образом, то же оборудование), что и при установке с CDROM. Урезанное ядро `MFSROOT` больше не нужно, и образ `mfsroot` более не требует подключения модулей ядра. Образы `boot.flp` и `driver.flp` также более не требуются и не собираются.

Поддержка криптографии в FreeBSD более не опциональный компонент релизов, и дистрибутивный компонент crypto теперь часть base. Обратите внимание, что параметр сборки -DNOCRYPT все еще существует для всех, кто хочет собрать бинарные файлы без поддержки криптографии.

Поддерживаемый релиз GNOME был обновлен с версии 2.4 до версии 2.6.

> Замечание: Если вы используете старый GNOME десктоп отдельно (`x11/gnome2`), простое обновление его из коллекции портов FreeBSD с помощью portupgrade(1) (`sysutils/portupgrade`) вызовет серьезные проблемы. Если вы используете GNOME в качестве десктопа, внимательно прочтите инструкции ../../../../../gnome/docs/faq26.html, и используйте скрипт `gnome_upgrade.sh` для правильного обновления до GNOME 2.6.

> Обратите внимание, что если вы используете только библиотеки GNOME, portupgrade(1) будет достаточно для обновления портов.

Поддерживаемый релиз KDE был обновлен с версии 3.1.4 до версии 3.2.3.

Утилита `security/portaudit` теперь находится в коллекции портов FreeBSD. Эта утилита читает базу данных, содержащую известные уязвимости портов, и сообщает о них администратору.

FreeBSD теперь использует Xorg вместо XFree86 в качестве X Window System по умолчанию. Поддерживаемый релиз Xorg - X11R6.7.0. Обратите внимание, что XFree86 также доступен из коллекции портов FreeBSD (`x11/XFree86-4`).

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

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

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

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

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

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

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

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