Версия для печати

Архив документации на OpenNet.ru / Раздел "Руководства по FreeBSD на русском" (Многостраничная версия)

Руководство FreeBSD

Проект Документации FreeBSD

Добро пожаловать в FreeBSD! Это руководство охватывает процесс инсталляции и ежедневного использования FreeBSD 4.9-RELEASE и FreeBSD 5.2.1-RELEASE. Это руководство находится в процессе разработки и являет собой результат работы множества людей. Многие из разделов до сих пор не существуют, а некоторые из существующих требуют обновления. Если Вы заинтересованы в помощи этому проекту, пошлите письмо в Список рассылки Проекта Русской Документации FreeBSD . Обновленная версия этого документа постоянно доступна с Основного Web сервера FreeBSD. Он также может быть загружен из Internet в одном из наиболее распространенных форматов с FTP сервера Проекта FreeBSD или с одного из многочисленных зеркал. Если Вы предпочитаете иметь напечатанный (английский) вариант Руководства, то Вы можете приобрести его на FreeBSD Mall. Вы также можете захотеть воспользоваться возможностью Поиска в Руководстве FreeBSD.


Table of Contents
Предисловие
I. В Начале
1 Введение
1.1 Краткий обзор
1.2 Добро пожаловать во FreeBSD!
1.3 О Проекте FreeBSD
2 Установка FreeBSD
2.1 Краткий обзор
2.2 Перед установкой
2.3 Начало установки
2.4 Введение в Sysinstall
2.5 Выделение дискового пространства
2.6 Выбор устанавливаемых компонентов
2.7 Выбор источника для установки
2.8 Подтверждение установки
2.9 После установки
2.10 Поддерживаемое оборудование
2.11 Решение проблем
2.12 Расширенное руководство по установке
2.13 Подготовка собственного источника установки
3 Основы UNIX
3.1 Краткий обзор
3.2 Виртуальные консоли и терминалы
3.3 Права доступа
3.4 Структура каталогов
3.5 Организация дисков
3.6 Монтирование и размонтирование файловых систем
3.7 Процессы
3.8 Демоны, сигналы, уничтожение процессов
3.9 Интерпретатор команд
3.10 Текстовые редакторы
3.11 Устройства и файлы устройств
3.12 Бинарные форматы
3.13 Дополнительная информация
4 Установка приложений: порты и пакаджи
4.1 Обзор
4.2 Обзор установки программного обеспечения
4.3 Поиск нужного вам приложения
4.4 Использование системы пакетов
4.5 Использование Коллекции Портов
4.6 Действия после установки
4.7 Обработка нерабочих портов
5 X Window System
5.1 Обзор
5.2 Основы X
5.3 Установка XFree86
5.4 Конфигурация XFree86
5.5 Использование шрифтов в XFree86
5.6 Менеджеры Экранов (Display Managers) X
5.7 Графические оболочки
II. Системное Администрирование
6 Настройка и оптимизация
6.1 Введение
6.2 Начальное конфигурирование
6.3 Основные настройки
6.4 Настройка Приложений
6.5 Запуск сервисов
6.6 Настройка утилиты cron
6.7 Использование rc в FreeBSD 5.X
6.8 Настройка карт сетевых интерфейсов
6.9 Настройка виртуальных серверов
6.10 Файлы настройки
6.11 Настройка с помощью sysctl
6.12 Оптимизация дисков
6.13 Изменение ограничений, накладываемых ядром
6.14 Увеличение объема подкачки
6.15 Управление питанием и ресурсами
7 Процесс загрузки FreeBSD
7.1 Описание
7.2 Проблема загрузки
7.3 MBR и первый, второй и третий этапы загрузки
7.4 Взаимодействие с ядром во время загрузки
7.5 Хинты устройств
7.6 Init: инициализация управления процессами
7.7 Процесс остановки системы
8 Users and Basic Account Management *
9 Configuring the FreeBSD Kernel *
10 Безопасность
10.1 Краткое описание
10.2 Введение
10.3 Защита FreeBSD
10.4 DES, MD5, и шифрование
10.5 Одноразовые пароли
10.6 KerberosIV
10.7 Kerberos5
10.8 Межсетевые экраны
10.9 OpenSSL *
10.10 VPN over IPsec *
10.11 OpenSSH *
10.12 Mandatory Access Control (MAC) *
10.13 File System Access Control Lists *
10.14 FreeBSD Security Advisories *
11 Printing *
12 Устройства хранения
12.1 Краткий обзор
12.2 Имена устройств
12.3 Добавление дисков
12.4 RAID
12.5 Запись и использование оптических носителей (CD & DVD)
12.6 Дискеты
12.7 Создание и использование архивных копий на магнитной ленте
12.8 Создание резервных копий на дискетах
12.9 Основы технологии резервного копирования
12.10 Сетевые файловые системы, файловые системы в памяти и с отображением в файл
12.11 Мгновенные копии файловых систем
12.12 Квотирование файловых систем
12.13 Шифрование дисковых разделов
13 Менеджер дискового пространства Vinum
13.1 Краткая аннотация
13.2 Диски слишком малы
13.3 Ограниченная пропускная способность
13.4 Целостность данных
13.5 Объекты Vinum
13.6 Несколько примеров
13.7 Правила именования объектов
13.8 Создание конфигурации Vinum
13.9 Vinum для корневой файловой системы
14 Локализация - I18N/L10N использование и настройка
14.1 Краткий обзор
14.2 Основы
14.3 Использование локализации
14.4 Компиляция I18N программ
14.5 Локализация FreeBSD для поддержки определенных языков
15 Приложения для настольного компьютера
15.1 Краткий обзор
15.2 Браузеры
15.3 Бизнес приложения
15.4 Программы просмотра документов
15.5 Финансовые программы
15.6 Итоги
16 Музыка и Звук
16.1 Краткий обзор
16.2 Настройка звуковой карты
16.3 Звук MP3
16.4 Воспроизведение видео
17 Последовательные соединения
17.1 Краткое описание
17.2 Введение
17.3 Терминалы
17.4 Входящие соединения по модему
17.5 Исходящие соединения по модему
17.6 Настройка последовательной консоли
18 PPP and SLIP *
19 Сложные вопросы работы в сети
19.1 Краткий обзор
19.2 Сетевые шлюзы и маршруты
19.3 Беспроводные сети
19.4 Bluetooth
19.5 Мосты
19.6 NFS
19.7 Работа с бездисковыми станциями
19.8 ISDN
19.9 NIS/YP
19.10 DHCP
19.11 DNS
19.12 NTP
19.13 Даемон преобразования сетевых адресов (natd)
19.14 ``Супер-сервер'' inetd
19.15 IP по параллельному порту (PLIP)
19.16 IPv6
20 Электронная почта
20.1 Краткий обзор
20.2 Использование электронной почты
20.3 Поиск и устранение неисправностей
20.4 Настройка почтового сервера для обслуживания всего домена
21 На переднем крае разработок
21.1 Краткий обзор
21.2 FreeBSD-CURRENT против FreeBSD-STABLE
21.3 Синхронизация ваших исходных текстов
21.4 Использование make world
21.5 Отслеживание исходных текстов для нескольких машин
22 Работа с приложениями, написанными для Linux
22.1 Краткий обзор
22.2 Инсталляция
22.3 Установка пакета Mathematica
22.4 Установка Oracle
22.5 Дополнительные сведения
III. Приложения
A. Где достать FreeBSD
A.1 Производители CD-ROM
A.2 FTP Сервера
A.3 CTM Сервера
A.4 CVSup Сервера
A.5 AFS Сервера
B. Библиография
B.1 Книги и журналы, специализирующиеся на FreeBSD
B.2 Руководства для пользователей
B.3 Руководства для администраторов
B.4 Руководства для программистов
B.5 Внутренности операционной системы
B.6 Безопасность
B.7 Оборудование
B.8 История Unix
B.9 Прочие издания
23 Resources on the Internet *
C. Ключи PGP
C.1 Офицеры
C.2 Члены Core
C.3 Разработчики
Colophon
List of Tables
2-1. Пример сведений об оборудовании
2-2. Планирование разделов для первого диска
2-3. Разметка разделов для остальных дисков
2-4. Возможные профили безопасности
2-5. Названия FreeBSD ISO образов и их значения
3-1. Коды дисковых устройств
12-1. Соглашения по именованию физических дисков
13-1. Методы организации наборов Vinum
19-1. Распайка кабеля для параллельного порта для сетевой работы
List of Figures
2-1. Меню конфигурации ядра
2-2. Визуальный интерфейс конфигурации ядра
2-3. Развернутый список драйверов
2-4. Конфигурация драйверов без конфликтов
2-5. Главное меню Sysinstall
2-6. Типичный вывод Device Probe
2-7. Выбор Sysinstall Exit
2-8. Выбор Usage в главном меню Sysinstall
2-9. Выбор меню документации
2-10. Меню документации Sysinstall
2-11. Выбор меню раскладки клавиатуры
2-12. Меню раскладки клавиатуры
2-13. Выбор параметров установки
2-14. Параметры Sysinstall
2-15. Начало стандартной установки
2-16. Выберите диск для FDisk
2-17. Типичные разделы fdisk перед редактированием
2-18. Разбиение в Fdisk с использованием всего диска
2-19. Меню менеджера загрузки Sysinstall
2-20. Выход из выбора диска
2-21. Редактор Sysinstall Disklabel
2-22. Редактор Sysinstall Disklabel с установками по умолчанию
2-23. Свободное место для корневого раздела
2-24. Редактирование размера корневого раздела
2-25. Выбор типа корневого раздела
2-26. Выбор точки монтирования корневой файловой системы
2-27. Редактор Sysinstall Disklabel
2-28. Выбор дистрибутивных наборов
2-29. Подтверждение выбора дистрибутивного набора
2-30. Выбор источника установки
2-31. Выбор Ethernet устройства
2-32. Настройка сети для ed0
2-33. Редактирование inetd.conf
2-34. Настройка по анонимного FTP по умолчанию
2-35. Редактирование FTP Welcome Message
2-36. Редактирование exports
2-37. Параметры профиля безопасности
2-38. Параметры настройки системной консоли
2-39. Параметры хранителя экрана
2-40. Временной интервал хранителя экрана
2-41. Выход из меню конфигурации консоли
2-42. Выбор региона
2-43. Выбор страны
2-44. Выбор часового пояса
2-45. Выбор протокола мыши
2-46. Установка протокола мыши
2-47. Настройка порта мыши
2-48. Установка порта мыши
2-49. Запуск мышиного даемона
2-50. Проверка мышиного даемона
2-51. Верхняя часть меню настройки сети (Network Configuration)
2-52. Выбор MTA по умолчанию
2-53. Настройка Ntpdate
2-54. Нижняя часть меню настройки сети
2-55. Меню выбора способа конфигурации
2-56. Выбор десктопа по умолчанию
2-57. Выбор категории пакетов
2-58. Выбор пакетов
2-59. Установка пакетов
2-60. Подтверждение установки пакетов
2-61. Выбор User (пользователь)
2-62. Вод информации о пользователе
2-63. Выход из меню управления пользователями и группами
2-64. Выход из установки
13-1. Организация сцепленных дисков
13-2. Организация с перемежением
13-3. Организация RAID-5
13-4. Простой том Vinum
13-5. Зеркалированный том Vinum
13-6. Том с перемежением
13-7. Зеркалированный том с перемежением
List of Examples
2-1. Использование существующего раздела без изменения
2-2. Сжатие существующих разделов
3-1. Пример имен диска, слайса, и раздела
3-2. Концептуальная модель диска
4-1. Сгрузка пакета вручную и его локальная установка
6-1. Создание файла подкачки в FreeBSD 4.X
6-2. Создание файла подкачки в FreeBSD 5.X
7-1. Образец экрана boot0
7-2. Образец экрана boot2
7-3. Незащищённая консоль в /etc/ttys
12-1. Использование dump через ssh
12-2. Использование dump при работе через ssh с заданием RSH
12-3. Скрипт для создания загрузочной дискеты
12-4. Использование vnconfig для монтирования имеющегося образа файловой системы во FreeBSD 4.X
12-5. Создание нового диска в файле с помощью vnconfig
12-6. Использование mdconfig для монтирования файла с образом существующей файловой системы во FreeBSD 5.X
12-7. Создание нового диска, отображаемого в файл, при помощи mdconfig
12-8. Настройка и монтирование диска, отображаемого в файл, при помощи команды mdmfs
12-9. Диск md в памяти во FreeBSD 4.X
12-10. Создание нового диска с отображением в память при помощи mdconfig
12-11. Создание нового диска с отображением в память при помощи mdmfs
17-1. Добавление записей терминалов в /etc/ttys
19-1. Монтирование ресурса при помощи amd
19-2. Офис подразделения или домашняя сеть
19-3. Центральный офис или другая локальная сеть
19-4. Посылка сигнала HangUP процессу inetd

Этот, и другие документы, могут быть скачаны с ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

По вопросам связанными с FreeBSD, прочитайте документацию прежде чем писать в <questions@FreeBSD.org>.
По вопросам связанным с этой документацией, пишите <doc@FreeBSD.org>.
По вопросам связанным с русским переводом документации, пишите <frdp@FreeBSD.org.ua>.


Руководство FreeBSDPrevNext

Chapter 19 Сложные вопросы работы в сети

Table of Contents
19.1 Краткий обзор
19.2 Сетевые шлюзы и маршруты
19.3 Беспроводные сети
19.4 Bluetooth
19.5 Мосты
19.6 NFS
19.7 Работа с бездисковыми станциями
19.8 ISDN
19.9 NIS/YP
19.10 DHCP
19.11 DNS
19.12 NTP
19.13 Даемон преобразования сетевых адресов (natd)
19.14 ``Супер-сервер'' inetd
19.15 IP по параллельному порту (PLIP)
19.16 IPv6

19.1 Краткий обзор

Эта глава посвящена некоторым наиболее часто используемым сетевым службам систем UNIX®. Мы опишем, как запустить, настроить, протестировать и поддерживать работу всех сетевых служб, используемых во FreeBSD. Кроме того, для облегчения вашей работы в главу включены примеры конфигурационных файлов.

После чтения этой главы вы будете знать:

Перед чтением этой главы вы должны:

Этот, и другие документы, могут быть скачаны с ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

По вопросам связанными с FreeBSD, прочитайте документацию прежде чем писать в <questions@FreeBSD.org>.
По вопросам связанным с этой документацией, пишите <doc@FreeBSD.org>.
По вопросам связанным с русским переводом документации, пишите <frdp@FreeBSD.org.ua>.


Руководство FreeBSD
Prev Chapter 8. Резервное копирование Next

8.3. Программы резервного копирования

Тремя основными программами являются dump(8), tar(1) и cpio(1).

8.3.1. Dump и Restore

dump(8) и restore(8) являются традиционными для Unix программами резервного копирования. Они работают с приводом как с набором дисковых блоков, которые расположены ниже понятий файлов, связей и каталогов, создаваемых файловыми системами. Программа dump(8) выполняет резервное копирование устройств, целых файловых систем, но не частей файловой системы и не деревьев каталогов, которые располагаются более чем в одной файловой системе при помощи символических ссылок ln(1) или монтирования одной файловой системы в другой. Утилита dump(8) не записывает на ленту файлы и каталоги, она записывает блоки данных, из которых строятся файлы и каталоги. В программе dump(8) имеются некоторые неудобства, оставшиеся от ее ранних дней в составе Version 6 операционной системы ATT Unix (около 1975). Параметры, используемые по умолчанию, подходят для 9-дорожечных лент (6250 bpi), но не для современных носителей с высокой плотностью записи информации (до 62,182 ftpi). Для использования емкостей нынешних накопителей на магнитной ленте эти параметры могут быть заданы в командной строке.

rdump(8) и rrestore(8) предназначены для резервного копирования данных по сети на накопитель, подключенный к другому компьютеру. Обе программы используют в работе rcmd(3) и ruserok(3) для доступа к накопителю на магнитной ленте на удаленном компьютере. Поэтому пользователь, выполняющий резервное копирование, должен иметь доступ к удаленному компьютеру через rhosts. Аргументы для rdump(8) и rrestore(8) должны подходить для использования на другом компьютере. (Например, при выполнении копирования по команде rdump на компьютере с FreeBSD на накопитель Exabyte, подключенный к машине Sun по имени komodo, используйте такую команду: /sbin/rdump 0dsbfu 54000 13000 126 komodo:/dev/nrsa8 /dev/rda0a 2>&1) Будьте осторожны: есть проблемы с обеспечением безопасности при разрешении использования команд rhosts. Внимательно отнеситесь к вашей ситуации.

8.3.2. Tar

Утилита tar(1) также восходит корнями к Version 6 системы ATT Unix (около 1975). tar(1) работает с файловой системой; tar(1) записывает на ленту файлы и каталоги. tar(1) поддерживает не полный набор опций, имеющихся в cpio(1), однако он не требует необычного перенаправления в командной строке, которое используется в утилите cpio(1).

В большинстве версий tar(1) создание резервных копий по сети не поддерживается. Версия GNU утилиты tar(1), которая используется во FreeBSD, поддерживает удаленные устройства в том же самом синтаксисе, что и rdump(8). Чтобы скопировать данные на накопитель Exabyte, подключенный к машине Sun по имени komodo, используйте такую команду: /usr/bin/tar cf komodo:/dev/nrsa8 . 2>&1. В случае использования версий без поддержки удаленных устройств, вы можете воспользоваться перенаправлением вывода и командой rsh(1) для посылки данных на удаленный ленточный накопитель.

    # tar cf - . | rsh hostname dd of=tape-device obs=20b
        

Если вы беспокоитесь о безопасности создания резервных копий по сети, то вместо rsh(1) вам нужно использовать ssh(1).

8.3.3. Cpio

cpio(1) является оригинальной программой Unix для обмена файлами на магнитных носителях. В утилите cpio(1) имеются опции (кроме всего прочего), позволяющие выполнять изменение порядка следования байтов, поддерживающие различные форматы архивов и выполняющие перенаправление данных другим программам. Последняя возможность делает cpio(1) прекрасным выбором для целей установки. cpio(1) не знает о том, как работать с каталогами, список файлов должен даваться через stdin.

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

8.3.4. Pax

pax(1) является ответом IEEE/POSIX на утилиты tar(1) и cpio(1). В течении многих лет различные версии программ tar(1) и cpio(1) получались не совсем совместимыми. Так что вместо того, чтобы попытаться полностью их стандартизировать, POSIX создал новую утилиту для работы с архивами. pax(1) пытается читать и писать различные форматы cpio(1) и tar(1), и, кроме того, свои собственные новые форматы. Набор команд этой утилиты больше напоминает cpio(1), чем tar(1).

8.3.5. Amanda

Amanda (Advanced Maryland Network Disk Archiver) является целой клиент/серверной системой резервного копирования, а не отдельной программой. Сервер Amanda сможет осуществлять резервное копирование на единственный накопитель любого количества компьютеров, на которых имеется клиент Amanda и которые могут связываться по сети с сервером Amanda. Общей проблемой систем с большим количеством больших дисков является время, требуемое для непосредственной записи данных на ленту, превышающее лимит времени, выделенный на эту задачу. Amanda решает эту проблему. Amanda может использовать "промежуточный диск" для резервного копирования нескольких файловых систем одновременно. Amanda создает "наборы архивов": группа лент, используемых в некоторый период времени для создания полных копий всех файловых систем, перечисленных в конфигурационном файле системы Amanda. "Архивный набор" содержит также создаваемый каждую ночь инкрементальные (или дифференциальные) резервные копии всех файловых систем. Восстановление поврежденной файловой системы требует наличие самой последней полной копии и инкрементальных резервных копий.

Конфигурационный файл дает прекрасный механизм управление процессом резервного копирования и объемом трафика, генерируемого системой Amanda. Amanda сможет использовать любую из перечисленных выше программ для записи данных на ленту. Amanda имеется в виде как порта, так и пакаджа, и по умолчанию она не установлена.

8.3.6. Не делать ничего

"Не делать ничего" - это не программа для компьютера, и в то же время это наиболее широко используемая стратегия резервного копирования. Здесь нет никаких первоначальных затрат. Здесь нет расписания, которому нужно следовать. Просто скажите нет. Если что-то случится с вашими данными, улыбнитесь и забудьте о них!

Если ваше время и данные практически ничего не стоят, то "не делать ничего" является самой подходящей программой для вашего компьютера. Но будьте осторожны, Unix является весьма полезным инструментом, и через полгода вы можете обнаружить, что у вас есть набор файлов, представляющих для вас определенную ценность.

"Ничего не делать" является правильным методом резервного копирования для /usr/obj и других деревьев каталогов, которые могут быть в точности перегенерированы вашим компьютером. Примером являются файлы, представляющие страницы этой книги - они генерируются из входных файлов SGML. Создание резервных копий файлов HTML не нужно. Исходные файлы SGML копируются регулярно.

8.3.7. Какая программа резервного копирования самая лучшая?

dump(8) Точка. Elizabeth D. Zwicky протестировала все программы резервного копирования, обсуждаемые здесь. Беспроигрышным вариантом для сохранения всех ваших данных и особенностей файловых систем Unix является dump(8). Элизабет создала файловые системы, содержащие большое количество необычных элементов (и некоторых не так уж необычных) и тестировала каждую из программ, выполняя резервное копирование и последующее восстановление этих файловых систем. В число необычных элементов входили: файлы с дырами, файлы с дырами и блоком пустого места, файлы с необычными символами в их именах, нечитаемые и незаписываемые файлы, устройства, меняющие свой размер во время резервного копирования, файлы, создаваемые и удаляемые во время копирования и тому подобное. Она представила результаты на конференции LISA V в октябре 1991 года. Посмотрите ссылку на torture-testing Backup and Archive Programs.

8.3.8. Процедура восстановления при сбое

8.3.8.1. До того, как случится катастрофа

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

Во-первых, распечатайте разметку диска для всех ваших дисков (например, disklabel da0 | lpr), таблицу файловых систем (/etc/fstab) и все сообщения, выводимые при загрузке, каждого по два экземпляра.

Во-вторых, определите, все ли устройства присутствуют на загрузочной и аварийной дискетах (boot.flp и fixit.flp). Самым простым способом проверки является перезагрузка вашей машины с загрузочной дискетой, вставленной в дисковод и последующая проверка сообщений при загрузке. Если все имеющиеся у вас устройства здесь будут перечислены и будут работоспособны, перейдите к третьему шагу.

В противном случае вам необходимо будет создать две особым образом сформированные загрузочные дискеты, на которых помещено ядро, могущее смонтировать все ваши диски и получить доступ к вашему стримеру. На этих дискетах должны быть: fdisk(8), disklabel(8), newfs(8), mount(8) и какая-либо используемая вами программа резервного копирования. Эти программы должны быть скомпонованы статически. Если вы используете dump(8), то на дискете должна присутствовать и программа restore(8).

В-третьих, регулярно создавайте резервные копии на ленте. Любые изменения, которые вы делали после последнего резервного копирования, могут быть безвозвратно потеряны. На лентах включайте защиту от записи.

В-четвертых, проверяйте работу дискет (либо boot.flp и fixit.flp, либо двух дискет, которые вы сделали при выполнении второго шага) и лент с резервными копиями. Ведите журнал выполняемых действий. Храните эти записи вместе с загрузочной дискетой, распечатками и лентами. Вы просто обезумеете при восстановлении данных, если окажется, что записи могли бы избежать разрушения ваших резервных копий (Каким образом? Вместо команды tar xvf /dev/rsa0 вы могли случайно набрать tar cvf /dev/rsa0 и тем самым перезаписать вашу резервную копию).

Для дополнительной страховки, каждый раз создавайте загрузочные дискеты и две резервные копии на ленте. Храните одну из копий в каком-то удаленном месте и НЕ в том же здании, где находится ваш офис. Достаточно большое количество компаний во Всемирном Торговом Центре изучило это на своей шкуре. Это удаленное хранилище должно быть физически отделено на большое расстояние от ваших компьютеров и дисковых устройств.

Пример скрипта для создания загрузочной дискеты:

    #!/bin/sh
    #
    # create a restore floppy
    #
    # format the floppy
    #
    PATH=/bin:/sbin:/usr/sbin:/usr/bin
    
    fdformat -q fd0
    if [ $? -ne 0 ]
    then
         echo "Bad floppy, please use a new one"
         exit 1
    fi
    
    # place boot blocks on the floppy
    #
    disklabel -w -B /dev/rfd0c fd1440
    
    #
    # newfs the one and only partition
    #
    newfs -t 2 -u 18 -l 1 -c 40 -i 5120 -m 5 -o space /dev/rfd0a
    
    #
    # mount the new floppy
    #
    mount /dev/fd0a /mnt
    
    #
    # create required directories
    #
    mkdir /mnt/dev
    mkdir /mnt/bin
    mkdir /mnt/sbin
    mkdir /mnt/etc
    mkdir /mnt/root
    mkdir /mnt/mnt          # for the root partition
    mkdir /mnt/tmp
    mkdir /mnt/var
    
    #
    # populate the directories
    #
    if [ ! -x /sys/compile/MINI/kernel ]
    then
         cat << EOM
    The MINI kernel does not exist, please create one.
    Here is an example config file:
    #
    # MINI -- A kernel to get FreeBSD on onto a disk.
    #
    machine     "i386"
    cpu     "I486_CPU"
    ident       MINI
    maxusers    5
    
    options     INET            # needed for _tcp _icmpstat _ipstat
                         #        _udpstat _tcpstat _udb
    options     FFS         #Berkeley Fast File System
    options     FAT_CURSOR      #block cursor in syscons or pccons
    options     SCSI_DELAY=15       #Be pessimistic about Joe SCSI device
    options     NCONS=2     #1 virtual consoles
    options     USERCONFIG      #Allow user configuration with -c XXX
    
    config      kernel  root on da0 swap on da0 and da1 dumps on da0
    
    controller  isa0
    controller  pci0
    
    controller  fdc0    at isa? port "IO_FD1" bio irq 6 drq 2 vector fdintr
    disk        fd0 at fdc0 drive 0
    
    controller  ncr0
    
    controller  scbus0
    
    device      sc0 at isa? port "IO_KBD" tty irq 1 vector scintr
    device      npx0    at isa? port "IO_NPX" irq 13 vector npxintr
    
    device      da0
    device      da1
    device      da2
    
    device      sa0
    
    pseudo-device   loop        # required by INET
    pseudo-device   gzip        # Exec gzipped a.out's
    EOM
         exit 1
    fi
    
    cp -f /sys/compile/MINI/kernel /mnt
    
    gzip -c -best /sbin/init > /mnt/sbin/init
    gzip -c -best /sbin/fsck > /mnt/sbin/fsck
    gzip -c -best /sbin/mount > /mnt/sbin/mount
    gzip -c -best /sbin/halt > /mnt/sbin/halt
    gzip -c -best /sbin/restore > /mnt/sbin/restore
    
    gzip -c -best /bin/sh > /mnt/bin/sh
    gzip -c -best /bin/sync > /mnt/bin/sync
    
    cp /root/.profile /mnt/root
    
    cp -f /dev/MAKEDEV /mnt/dev
    chmod 755 /mnt/dev/MAKEDEV
    
    chmod 500 /mnt/sbin/init
    chmod 555 /mnt/sbin/fsck /mnt/sbin/mount /mnt/sbin/halt
    chmod 555 /mnt/bin/sh /mnt/bin/sync
    chmod 6555 /mnt/sbin/restore
    
    #
    # create the devices nodes
    #
    cd /mnt/dev
    ./MAKEDEV std
    ./MAKEDEV da0
    ./MAKEDEV da1
    ./MAKEDEV da2
    ./MAKEDEV sa0
    ./MAKEDEV pty0
    cd /
    
    #
    # create minimum filesystem table
    #
    cat > /mnt/etc/fstab <<EOM
    /dev/fd0a   /   ufs rw 1 1
    EOM
    
    #
    # create minimum passwd file
    #
    cat > /mnt/etc/passwd <<EOM
    root:*:0:0:Charlie &:/root:/bin/sh
    EOM
    
    cat > /mnt/etc/master.passwd <<EOM
    root::0:0::0:0:Charlie &:/root:/bin/sh
    EOM
    
    chmod 600 /mnt/etc/master.passwd
    chmod 644 /mnt/etc/passwd
    /usr/sbin/pwd_mkdb -d/mnt/etc /mnt/etc/master.passwd
    
    #
    # umount the floppy and inform the user
    #
    /sbin/umount /mnt
    echo "The floppy has been unmounted and is now ready."
          

8.3.8.2. После сбоя

Главный вопрос: выжило ли ваше оборудование? Вы регулярно делали резервные копии, так что нет нужды беспокоиться о программном обеспечении.

Если оборудование было повреждено, первым делом замените неисправные компоненты.

Если с оборудованием все в порядке, проверьте ваши дискеты. При использовании самостоятельно созданной загрузочной дискеты, загрузитесь в однопользовательском режиме (набрав -s в приглашении boot:). Пропустите следующий абзац.

Если вы используете дискеты boot.flp и fixit.flp, читайте дальше. Вставьте дискету boot.flp в первый дисковод и загрузите компьютер. На экран будет выведено оригинальное меню установки. Выберите пункт Fixit--Repair mode with CDROM or floppy. После вывода приглашения вставьте fixit.flp. restore и другие нужные вам программы находятся в /mnt2/stand.

Восстановите по отдельности каждую файловую систему.

Попробуйте выполнить команду mount(8) (например, mount /dev/da0a /mnt) по отношению к корневому разделу вашего первого диска. Если метка диска была испорчена, то воспользуйтесь командой disklabel(8) для переразбиения на разделы и разметки диска так, чтобы получившаяся метка совпала с той, которая вами была распечатана и сохранена. Для повторного создания файловых систем используйте утилиту newfs(8). Повторно смонтируйте корневой раздел дискеты в режиме чтения-записи (mount -u -o rw /mnt). Воспользуйтесь вашей программой резервного копирования и резервными копиями на лентах для восстановления данных для этой файловой системы (например. restore vrf /dev/sa0). Размонтируйте файловую систему (например, umount /mnt). Повторите эту процедуру для каждой файловой системы, которая была запорчена.

Как только ваша система заработает, сделайте резервную копию на новые ленты. Что бы ни вызвало сбой или потерю данных, это может случиться снова. Еще один час, потраченный в этот момент, может спасти вас от неприятностей в будущем.


Руководство FreeBSDPrevChapter 12 Устройства храненияNext

12.8 Создание резервных копий на дискетах

12.8.1 Можно ли использовать дискеты для создания резервных копий моих данных?

На самом деле дискеты не подходят для создания резервных копий, потому что:

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

Если вы используете дискеты, то проверьте, что они должны быть хорошего качества. Дискеты, которые валялись по всему офису в течении нескольких лет, не подойдут. Идеально использовать новые от известного производителя.

12.8.2 Итак, как же сделать резервную копию данных на дискетах?

Самым лучшим методом создания резервной копии на дискете является использование утилиты tar(1) с опцией -M (многотомные архивы), которая позволяет размещать архивы на нескольких дискетах.

Для копирования всех файлов в текущем каталоге и подкаталогах выполните следующее (работая как пользователь root):

# tar Mcvf /dev/fd0 *

Когда первая дискета окажется полностью заполненной, программа tar(1) выдаст запрос на следующий том (так как работа утилиты tar(1) не зависит от носителя, она имеет дело с томами; здесь это означает дискету).

Prepare volume #2 for /dev/fd0 and hit return:

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

12.8.3 Можно ли резервные копии подвергнуть компрессии?

К сожалению, tar(1) при создании многотомных архивов не позволяет использовать опцию -z. Вы конечно же, можете скомпрессировать все файлы утилитой gzip(1), программой gzip(1) скопировать их на дискеты, а затем распаковать файлы снова утилитой gunzip(1)!

12.8.4 Как восстановить данные из моих резервных копий?

Для полного восстановления архива воспользуйтесь такой командой:

# tar Mxvf /dev/fd0

Есть два подхода к восстановлению только нужных вам файлов. В первом вы можете начать с первой дискеты и выдать такую команду:

# tar Mxvf /dev/fd0 filename

Программа tar(1) будет выдавать запрос на подачу последующих дискет до тех пор, пока не найдет требуемый файл.

Как альтернатива, если вы знаете, на какой дискете расположен файл, то вы можете просто подать ее и дать ту же самую команду, что и выше. Заметьте, что если первый файл на дискете является продолжением предыдущего, то tar(1) выдаст предупреждение о том, что не может его восстановить, хотя вы этого и не просили делать!

Этот, и другие документы, могут быть скачаны с ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

По вопросам связанными с FreeBSD, прочитайте документацию прежде чем писать в <questions@FreeBSD.org>.
По вопросам связанным с этой документацией, пишите <doc@FreeBSD.org>.
По вопросам связанным с русским переводом документации, пишите <frdp@FreeBSD.org.ua>.


Руководство FreeBSDPrevChapter 12 Устройства храненияNext

12.7 Создание и использование архивных копий на магнитной ленте

К наиболее часто используемым носителям на магнитной ленте следует отнести ленты шириной 4мм и 8мм, а также типа QIC, мини-картриджи и DLT.

12.7.1 4мм (DDS: Digital Data Storage)

Ленты шириной 4мм заменяют QIC в качестве наиболее предпочтительного носителя для создания резервных копий. Эта тенденция значительно усилилась после покупки компанией Conner фирмы Archive, ведущего производителя накопителей QIC и последующего прекращения их выпуска. Накопители 4мм малы по размеру и мало шумят, но у них нет репутации носителя, обладающего надежностью приводов 8мм. Картриджи более дешевы и меньше по размеру (3 x 2 x 0.5 дюймов, 76 x 51 x 12 мм), чем 8мм-картриджи. Накопители для лент шириной 4мм, как и 8мм, имеют сравнительно малый срок службы головок, по причине использования в обоих случаях технологии спирального сканирования (helical scan).

Пропускная способность у таких накопителей начинается с цифры ~150 kB/s, пиковая достигает ~500 kB/s. Ёмкость накопителей начинается с 1.3 GB и может достигать 2.0 GB. Аппаратное сжатие, имеющееся на большинстве таких накопителей, даёт увеличение ёмкости примерно вдвое. Блоки многоприводных ленточных библиотек могут иметь до 6 накопителей в одном модуле с автоматической сменой ленты. Емкость библиотек может достигать 240 GB.

Стандарт DDS-3 в настоящее время поддерживает ёмкости лент вплоть до 12 ГБ (или 24 ГБ сжатой информации).

В накопителях 4мм, как и в приводах 8мм, используется технология спирального сканирования. Все плюсы и минусы этой технологии относятся как к 4мм, так и 8мм приводам.

Не следует использовать ленты после того, как они были подвергнуты 2000 проходов, или были использованы для создания 100 полных копий.

12.7.2 8мм (Exabyte)

Ленты шириной 8мм являются самым распространённым типом для ленточных SCSI-накопителей; они же являются наиболее удачным выбором при выборе типа носителей для обмена лентами. Наверное, каждый сервер имеет привод Exabyte шириной 8мм и объёмом 2 ГБ. Эти приводы удобны, они работают надёжно и тихо. Картриджи дешевы и малы по размеру (4.8 x 3.3 x 0.6 дюймов; 122 x 84 x 15 мм). Одним минусом лент шириной 8мм является сравнительно малое время службы головок и лент из-за высокой скорости движения ленты вдоль головок.

Скорость передачи данных варьируется от ~250 kB/s до ~500 kB/s. Объём хранимых данных начинается с 300 МБ и может достигать 7 ГБ. Аппаратное сжатие, имеющееся практически на всех таких приводах, увеличивает емкость примерно вдвое. Эти приводы существуют как в виде отдельных модулей, так и в виде многоприводных ленточных библиотек с 6 приводами и 120 лентами в одном отсеке. Ленты сменяются автоматически модулем. Емкости библиотек достигают величин, превышающих 840 ГБ.

Модель Exabyte ``Mammoth'' поддерживает ёмкость ленты в 12 ГБ (24 ГБ со сжатием) и стоит примерно вдвое больше, чем обычный ленточный накопитель.

Данные на ленту записываются по технологии спирального сканирования, головки позиционируются под углом к носителю (примерно в 6 градусов). Лента оборачивается на 270 градусов вокруг шпульки, которая держит головки. Во время скольжения ленты вокруг шпульки последняя вращается. В результате достигается высокая плотность записи данных с очень близко лежащими дорожками, расположенными под наклоном по всей ленте.

12.7.3 QIC

Ленты и накопители формата QIC-150, наверное, являются наиболее распространенным типом носителей. Приводы лент формата QIC являются самыми дешёвыми ``серьёзными'' накопителями для резервного копирования. Минусом является стоимость носителей. Ленты формата QIC по сравнению с лентами шириной 8мм или 4мм являются дорогими, превосходя их по стоимости хранения одного гигабайта в пять раз. Однако если вам будут достаточно половины ленты, QIC может оказаться правильным выбором. QIC является самым распространенным типом привода. Каждый сайт имеет привод QIC какой-либо емкости. QIC имеет большое количество плотностей на физически похожих (иногда даже идентичных) лентах. Приводы QIC работают вовсе не тихо. Эти накопители громко осуществляют поиск перед тем, как начать запись данных и достаточно шумны в процессе чтения, записи или поиска. Ленты QIC имеют размеры (6 x 4 x 0.7 дюймов; 15.2 x 10.2 x 1.7 мм). Мини-картриджи, в которых также используется лента шириной 1/4", обсуждаются отдельно. Библиотек лент и роботов для их замены не существует.

Скорость обмена данными лежит в границах от ~150 kB/s до ~500 kB/s. Ёмкость накопителей варьируется от 40 МБ до 15 ГБ. Аппаратное сжатие присутствует во многих современных накопителях QIC. Приводы QIC устанавливаются менее часто; они вытесняются накопителями DAT.

На ленту данные записываются в виде дорожек. Дорожки располагаются в длину вдоль всей ленты. Количество дорожек, и, в свою очередь, их ширина, меняется вместе с емкостью ленты. Большинство, если не все современные накопители обеспечивают обратную совместимость по крайней мере для чтения (однако зачастую и для режима записи). Формат QIC имеет хорошую репутацию в области надежности хранения данных (механика устроена проще и более надежна, чем в случае накопителей, построенных по технологии спирального сканирования).

Ленты не следует больше использовать после создания 5,000 резервных копий.

12.7.4 XXX* Мини-картриджи

12.7.5 DLT

Формат DLT обладает самой высокой скоростью передачи данных среди всех перечисленных здесь накопителей. Лента шириной 1/2" (12.5мм) помещена в один картридж с катушкой (4 x 4 x 1 дюймов; 100 x 100 x 25 мм). Вдоль одной из сторон картриджа расположена сдвигающаяся крышечка. Механизм накопителя открывает эту крышку, чтобы вытащить конец ленты. На этом конце имеется овальное отверстие, которое используется для ``захвата'' ленты. Принимающая катушка размещена внутри накопителя. Все другие типы картриджей, перечисленные здесь (за исключением 9-дорожечных лент), имеют как подающий, так и принимающий барабаны внутри самого картриджа.

Скорость передачи данных равна примерно 1.5 MB/s, что в три раза больше скорости передачи данных для накопителей 4мм, 8мм или QIC. Ёмкость картриджей варьируется от 10 ГБ до 20 ГБ для одного накопителя. Приводы могут компоноваться как многоленточные роботизированные, так и многоленточные, многоприводные библиотеки лент, вмещающие от 5 до 900 лент и от 1 до 20 приводов, что даёт ёмкость хранилища от 50 ГБ до 9 ТБ.

Формат DLT Type IV поддерживает емкость до 70 ГБ со сжатием.

Данные на ленту записываются в виде дорожек, параллельных направлению движения (точно также, как и для лент QIC). Одновременно записываются две дорожки. Срок жизни головок чтения/записи сравнительно велик; как только лента перестает двигаться, одновременно прекращается трение между головками и лентой.

12.7.6 AIT

AIT - это новый формат фирмы Sony, который позволяет хранить до 50 ГБ (со сжатием) информации на одной ленте. Ленты содержат микросхемы памяти, на которых размещается каталог содержимого ленты. Этот каталог может быть быстро считан накопителем для определения расположения файлов на ленте, вместо того, чтобы тратить несколько минут на поиск, как это происходит с другими форматами. Такое программное обеспечение, как SAMS:Alexandria, может управлять сорока или большим количеством ленточных библиотек AIT, связываясь непосредственно с памятью лент для вывода их содержимого, определения того, какие файлы были скопированы на какую ленту, выбора нужной ленты, её загрузки и восстановления данных с ленты.

Библиотеки с такими функциями стоят в районе $20,000, выводя их из ниши любительского рынка.

12.7.7 Использование новой ленты первый раз

Если вы попытаетесь прочитать или записать новую, абсолютно чистую ленту, в первый раз, то вам это не удастся. Выводимые на консоль сообщения будут выглядеть примерно так:

sa0(ncr1:4:0): NOT READY asc:4,1
sa0(ncr1:4:0):	Logical unit is in process of becoming ready

На ленте отсутствует идентификационный блок (блок номер 0). Со времен принятия стандарта QIC-525 все накопители формата QIC записывают на ленту идентификационный блок (Identifier Block). Здесь имеется два решения:

Этот, и другие документы, могут быть скачаны с ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

По вопросам связанными с FreeBSD, прочитайте документацию прежде чем писать в <questions@FreeBSD.org>.
По вопросам связанным с этой документацией, пишите <doc@FreeBSD.org>.
По вопросам связанным с русским переводом документации, пишите <frdp@FreeBSD.org.ua>.


Руководство FreeBSD
Prev Next

Chapter 8. Резервное копирование

Table of Contents
8.1. Описание
8.2. Носители на магнитной ленте
8.3. Программы резервного копирования
8.4. Что насчет резервных копий на дискетах?

8.1. Описание

В следующей главе будут описаны методы резервного копирования данных и используемые для этого программы. Если вы хотите добавить что-то в этот раздел, пошлите ваш текст на адрес Список рассылки Проекта Документации FreeBSD .


Руководство FreeBSDPrevNext

Chapter 3 Основы UNIX

Table of Contents
3.1 Краткий обзор
3.2 Виртуальные консоли и терминалы
3.3 Права доступа
3.4 Структура каталогов
3.5 Организация дисков
3.6 Монтирование и размонтирование файловых систем
3.7 Процессы
3.8 Демоны, сигналы, уничтожение процессов
3.9 Интерпретатор команд
3.10 Текстовые редакторы
3.11 Устройства и файлы устройств
3.12 Бинарные форматы
3.13 Дополнительная информация
Переписал Chris Shumway.

3.1 Краткий обзор

В этой главе мы попытаемcя раскрыть основные принципы и команды операционной системы FreeBSD. Большая часть нижеизложенного материала в более или менее равной степени применима к любой UNIX®-подобной операционной системе. Если вы уверены, что не найдете здесь ничего нового для себя, можете смело пропустить эту главу. Если же вы новичок, мы настоятельно рекомендуем внимательно прочесть это главу.

Прочитав эту главу, вы узнаете:

Этот, и другие документы, могут быть скачаны с ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

По вопросам связанными с FreeBSD, прочитайте документацию прежде чем писать в <questions@FreeBSD.org>.
По вопросам связанным с этой документацией, пишите <doc@FreeBSD.org>.
По вопросам связанным с русским переводом документации, пишите <frdp@FreeBSD.org.ua>.


Руководство FreeBSDPrevAppendix B. БиблиографияNext

B.3 Руководства для администраторов

Этот, и другие документы, могут быть скачаны с ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

По вопросам связанными с FreeBSD, прочитайте документацию прежде чем писать в <questions@FreeBSD.org>.
По вопросам связанным с этой документацией, пишите <doc@FreeBSD.org>.
По вопросам связанным с русским переводом документации, пишите <frdp@FreeBSD.org.ua>.


Руководство FreeBSDPrevAppendix B. БиблиографияNext

B.7 Оборудование

Этот, и другие документы, могут быть скачаны с ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

По вопросам связанными с FreeBSD, прочитайте документацию прежде чем писать в <questions@FreeBSD.org>.
По вопросам связанным с этой документацией, пишите <doc@FreeBSD.org>.
По вопросам связанным с русским переводом документации, пишите <frdp@FreeBSD.org.ua>.


Руководство FreeBSDPrevAppendix B. БиблиографияNext

B.8 История Unix

Этот, и другие документы, могут быть скачаны с ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

По вопросам связанными с FreeBSD, прочитайте документацию прежде чем писать в <questions@FreeBSD.org>.
По вопросам связанным с этой документацией, пишите <doc@FreeBSD.org>.
По вопросам связанным с русским переводом документации, пишите <frdp@FreeBSD.org.ua>.


Руководство FreeBSDPrevAppendix B. БиблиографияNext

B.9 Прочие издания

Этот, и другие документы, могут быть скачаны с ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

По вопросам связанными с FreeBSD, прочитайте документацию прежде чем писать в <questions@FreeBSD.org>.
По вопросам связанным с этой документацией, пишите <doc@FreeBSD.org>.
По вопросам связанным с русским переводом документации, пишите <frdp@FreeBSD.org.ua>.


Руководство FreeBSDPrevAppendix B. БиблиографияNext

B.5 Внутренности операционной системы

Этот, и другие документы, могут быть скачаны с ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

По вопросам связанными с FreeBSD, прочитайте документацию прежде чем писать в <questions@FreeBSD.org>.
По вопросам связанным с этой документацией, пишите <doc@FreeBSD.org>.
По вопросам связанным с русским переводом документации, пишите <frdp@FreeBSD.org.ua>.


Руководство FreeBSDPrevAppendix B. БиблиографияNext

B.4 Руководства для программистов

Этот, и другие документы, могут быть скачаны с ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

По вопросам связанными с FreeBSD, прочитайте документацию прежде чем писать в <questions@FreeBSD.org>.
По вопросам связанным с этой документацией, пишите <doc@FreeBSD.org>.
По вопросам связанным с русским переводом документации, пишите <frdp@FreeBSD.org.ua>.


Руководство FreeBSDPrevAppendix B. БиблиографияNext

B.6 Безопасность

Этот, и другие документы, могут быть скачаны с ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

По вопросам связанными с FreeBSD, прочитайте документацию прежде чем писать в <questions@FreeBSD.org>.
По вопросам связанным с этой документацией, пишите <doc@FreeBSD.org>.
По вопросам связанным с русским переводом документации, пишите <frdp@FreeBSD.org.ua>.


Руководство FreeBSDPrevAppendix B. БиблиографияNext

B.2 Руководства для пользователей

Этот, и другие документы, могут быть скачаны с ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

По вопросам связанными с FreeBSD, прочитайте документацию прежде чем писать в <questions@FreeBSD.org>.
По вопросам связанным с этой документацией, пишите <doc@FreeBSD.org>.
По вопросам связанным с русским переводом документации, пишите <frdp@FreeBSD.org.ua>.


Руководство FreeBSDPrevNext

Appendix B. Библиография

Table of Contents
B.1 Книги и журналы, специализирующиеся на FreeBSD
B.2 Руководства для пользователей
B.3 Руководства для администраторов
B.4 Руководства для программистов
B.5 Внутренности операционной системы
B.6 Безопасность
B.7 Оборудование
B.8 История Unix
B.9 Прочие издания

Так как страницы Справочника FreeBSD предоставляют лишь описание определенных отдельных кусочков операционной системы FreeBSD, они не очень удобны для иллюстрации, как объединить вместе эти кусочки для того, что настроить ОС и сделать ее работу более гладкой. Для этого незаменимы хорошая книга и хорошее руководство пользователя.

B.1 Книги и журналы, специализирующиеся на FreeBSD

Международные книги и журналы:

Книги и журналы на английском языке:

Этот, и другие документы, могут быть скачаны с ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

По вопросам связанными с FreeBSD, прочитайте документацию прежде чем писать в <questions@FreeBSD.org>.
По вопросам связанным с этой документацией, пишите <doc@FreeBSD.org>.
По вопросам связанным с русским переводом документации, пишите <frdp@FreeBSD.org.ua>.


Руководство FreeBSDPrevChapter 7 Процесс загрузки FreeBSDNext

7.3 MBR и первый, второй и третий этапы загрузки

7.3.1 MBR, /boot/boot0

MBR для FreeBSD находится в /boot/boot0. Это копия MBR, так как настоящая MBR должна располагаться в специальном месте диска, вне области FreeBSD.

boot0 очень прост, так как программа в MBR может иметь размер, не превышающий 512 байт. Если вы установили MBR FreeBSD и несколько операционных систем на ваш жесткий диск, то во время загрузки вы увидите нечто похожее на следующее:

Example 7-1. Образец экрана boot0

F1 DOS
F2 FreeBSD
F3 Linux
F4 ??
F5 Drive 1

Default: F2

Известно, что другие операционные системы, в частности, Windows® 95, записывают поверх существующей MBR свою собственную. Если так случилось в вашем случае, или же вы хотите заменить существующую MBR на MBR от FreeBSD, то воспользуйтесь следующей командой:

# fdisk -B -b /boot/boot0 device

Здесь device является устройством, с которого вы загружаетесь, таким, как ad0 в случае первого диска IDE, ad2 в случае первого диска IDE на втором контроллере IDE, da0 для первого диска SCSI и так далее.

Однако если вы используете Linux и предпочитаете, чтобы процесс загрузки управлялся через LILO, вы можете отредактировать файл /etc/lilo.conf для FreeBSD или выбрать Leave The Master Boot Record Untouched в процессе установки FreeBSD. Если вы установили менеджер загрузки FreeBSD, то вы можете снова загрузить Linux и изменить конфигурационный файл /etc/lilo.conf для LILO, добавив следующий параметр:

other=/dev/hdXY
table=/dev/hdb
loader=/boot/chain.b
label=FreeBSD

который позволит загружать FreeBSD и Linux посредством LILO. В нашем примере мы используем XY для обозначения номера диска и раздела. Если вы используете диск SCSI, то вам может потребоваться заменить /dev/hdXY на что-то типа /dev/sdXY, где снова используется обозначение XY. Строка loader=/boot/chain.b может быть опущена, если обе операционные системы располагаются на одном и том же диске. Вы можете теперь запустить /sbin/lilo -v для того, чтобы ваши изменения были восприняты системой, что должно быть подтверждено сообщениями на экране.

7.3.2 Этап первый, /boot/boot1, и этап второй, /boot/boot2

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

Они располагаются в загрузочном секторе загрузочного слайса, то есть там, где boot0 или любая другая программа из MBR ожидает найти программу, которую следует запустить для продолжение процесса загрузки. Файлы в каталоге /boot являются копиями реальных файлов, которые хранятся вне файловой системы FreeBSD.

boot1 очень прост, так как он тоже может иметь размер, не превышающий 512 байт, и знает достаточно о метке диска FreeBSD, хранящей информацию о слайсе, для того, чтобы найти и запустить boot2.

boot2 устроен несколько более сложно, и умеет работать с файловой системой FreeBSD в объёме, достаточном для нахождения в ней файлов, и может предоставлять простой интерфейс для выбора и передачи управления ядру или загрузчику.

Так как загрузчик устроен гораздо более сложно, и дает удобный и простой способ настройки процесса загрузки, boot2 обычно запускает его, однако раньше его задачей был запуск непосредственно самого ядра.

Example 7-2. Образец экрана boot2

>> FreeBSD/i386 BOOT
Default: 0:ad(0,a)/kernel
boot:
	

Если вам когда-либо понадобится заменить установленные boot1 и boot2, то используйте утилиту disklabel(8).

# disklabel -B diskslice

Здесь diskslice являются диском и слайсом, с которых вы загружаетесь, такие, как ad0s1 в случае первого слайса на первом диске IDE.

Режим Dangerously Dedicated: Если вы используете только имя диска, к примеру, ad0, в команде disklabel(8) вы создадите диск в режиме эксклюзивного использования, без слайсов. Это, скорее всего, вовсе н то, что вы хотите сделать, так что дважды проверьте параметры команды disklabel(8), прежде, чем нажать Return.

7.3.3 Третий этап, /boot/loader

Передача управления загрузчику является последним, третьим этапом в процессе начальной загрузки, а сам загрузчик находится в файловой системе, обычно как /boot/loader.

Загрузчик являет собой удобный в использовании инструмент для настройки при помощи простого набора команд, управляемого более мощным интерпретатором с более сложным набором команд.

7.3.3.1 Процесс работы загрузчика

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

Затем загрузчик читает файл /boot/loader.rc, который по умолчанию использует файл /boot/defaults/loader.conf, устанавливающий подходящие значения по умолчанию для переменных и читает файл /boot/loader.conf для изменения в этих переменных. Затем с этими переменными работает loader.rc, загружающий выбранные модули и ядро.

И наконец, по умолчанию загрузчик выдерживает 10-секундную паузу, ожидая нажатия клавиши, и загружает ядро, если этого не произошло. Если ожидание было прервано, пользователю выдается приглашение, которое воспринимает простой набор команд, в помощью которых пользователь может изменить значения переменных, выгрузить все модули, загрузить модули и окончательно продолжить процесс загрузки или перезагрузить машину.

7.3.3.2 Встроенные команды загрузчика

Далее следуют наиболее часто используемые команды загрузчика. Полное описание всех имеющихся команд можно найти на странице справки о команде loader(8).

autoboot секунды

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

boot [-параметры] [имя ядра]

Продолжить процесс загрузки указанного ядра, если оно было указано, и с указанными параметрами, если они были указаны.

boot-conf

Повторно провести тот же самый процесс автоматической настройки модулей на основе переменных, что был произведен при загрузке. Это имеет смысл, если до этого вы выполнили команду unload, изменили некоторые переменные, например, наиболее часто меняемую kernel.

help [тема]

Вывод сообщений подсказки из файла /boot/loader.help. Если в качестве темы указано слово index, то выводится список имеющихся тем.

include имя файла ...

Выполнить файл с указанным именем. Файл считывается и его содержимое интерпретируется строчка за строчкой. Ошибка приводит к немедленному прекращению выполнения команды include.

load [-t тип] имя файла

Загружает ядро, модуль ядра или файл указанного типа с указанным именем. Все аргументы после имени файла передаются в файл.

ls [-l] [маршрут]

Выводит список файлов по указанному маршруту или в корневом каталоге, если маршрут не был указан. Если указан параметр -l, будут выводиться и размеры файлов.

lsdev [-v]

Выводится список всех устройств, с которых могут быть загружены модули. Если указан параметр -v, выводится дополнительная информация.

lsmod [-v]

Выводит список загруженных модулей. Если указан параметр -v, то выводится дополнительная информация.

more имя файла

Вывод указанного файла с паузой при выводе каждой строки LINES.

reboot

Выполнить немедленную перезагрузку машины.

set переменная, set переменная=значение

Задает значения переменных окружения загрузчика.

unload

Удаление из памяти всех загруженных модулей.

7.3.3.3 Примеры использования загрузчика

Вот несколько примеров практического использования загрузчика:

  • Чтобы просто загрузить ваше ядро обычным образом, но в однопользовательском режиме:

    boot -s
  • Для выгрузки обычных ядра и модулей, а потом просто загрузить ваше старое (или другое) ядро:

    unload
    load kernel.old

    Вы можете использовать kernel.GENERIC для обозначения стандартного ядра, поставляемого на установочном диске, или kernel.old для обращения к ранее установленному ядру (после того, как, например, вы обновили или отконфигурировали новое ядро).

    Note: Для загрузки ваших обычных модулей с другим ядром используйте такие команды:

    unload
    set kernel="kernel.old"
    boot-conf
  • Для загрузки скрипта конфигурации ядра (автоматизированный скрипт, который выполняет то, что вы обычно делаете в конфигураторе ядра во время загрузки):

    load -t userconfig_script /boot/kernel.conf

Этот, и другие документы, могут быть скачаны с ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

По вопросам связанными с FreeBSD, прочитайте документацию прежде чем писать в <questions@FreeBSD.org>.
По вопросам связанным с этой документацией, пишите <doc@FreeBSD.org>.
По вопросам связанным с русским переводом документации, пишите <frdp@FreeBSD.org.ua>.


Руководство FreeBSDPrevChapter 7 Процесс загрузки FreeBSDNext

7.6 Init: инициализация управления процессами

После того, как ядро завершит загрузку, оно передает управление пользовательскому процессу init(8), который расположен в файле /sbin/init или в файле, маршрут к которому указан в переменной init_path загрузчика.

7.6.1 Процесс автоматической перезагрузки

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

7.6.2 Однопользовательский режим

В этот режим можно перейти во время процесса автоматической перезагрузки, при ручной загрузке с параметром -s или заданием переменной boot_single для программы loader.

Этот режим может быть также вызван запуском программы shutdown(8) без параметров перезагрузки (-r) или останова (-h) из многопользовательского режима.

Если режим доступа к системной консоли console установлен в файле /etc/ttys в insecure, то система выведет запрос на ввод пароля пользователя root перед переходом в однопользовательский режим.

Example 7-3. Незащищённая консоль в /etc/ttys

# name	getty				type	status		comments
#
# Если консоль помечена как "insecure", то init будет запрашивать пароль
# пользователя root при переходе в однопользовательский режим.
console none                            unknown off insecure

Note: Обозначение консоли как insecure означает, что вы считаете физический доступ к консоли незащищённым, и хотите, чтобы только тот, кто знает пароль пользователя root, мог воспользоваться однопользовательским режимом, но это не значит, что вы хотите работать с консолью небезопасным способом. Таким образом, если вы хотите добиться защищённости, указывайте insecure, а не secure.

7.6.3 Многопользовательский режим

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

7.6.3.1 Настройка ресурсов (rc)

Система настройки ресурсов считывает настройки, применяемые по умолчанию, из файла /etc/defaults/rc.conf, а настройки, специфичные для конкретной системы, из /etc/rc.conf, после чего осуществляется монтирование файловых систем, перечисленных в файле /etc/fstab, запуск сетевых служб, различных системных даемонов и, наконец, выполнение скриптов запуска дополнительно установленных пакаджей.

Страница справочника по rc(8) является хорошим источником информации о системе настройки ресурсов. так же, как и самостоятельное изучение скриптов.

Этот, и другие документы, могут быть скачаны с ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

По вопросам связанными с FreeBSD, прочитайте документацию прежде чем писать в <questions@FreeBSD.org>.
По вопросам связанным с этой документацией, пишите <doc@FreeBSD.org>.
По вопросам связанным с русским переводом документации, пишите <frdp@FreeBSD.org.ua>.


Руководство FreeBSDPrevChapter 7 Процесс загрузки FreeBSDNext

7.4 Взаимодействие с ядром во время загрузки

Как только ядро окажется загруженным при помощи загрузчика (обычный способ) или boot2 (минуя загрузчик), оно проверяет флаги загрузки, если они есть, и действует соответствующим образом.

7.4.1 Флаги загрузки ядра

Вот наиболее часто используемые флаги загрузки:

-a

во время инициализации ядра запрашивать устройство для его монтирования в качестве корневой файловой системы.

-C

загрузка с компакт-диска.

-c

запустить UserConfig для конфигурации ядра во время загрузки

-s

после загрузки перейти в однопользовательский режим

-v

во время запуска ядра выводить более подробную информацию

Note: Есть и другие флаги загрузки, обратитесь к странице справочника по boot(8) для выяснения подробной информации по ним.

Этот, и другие документы, могут быть скачаны с ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

По вопросам связанными с FreeBSD, прочитайте документацию прежде чем писать в <questions@FreeBSD.org>.
По вопросам связанным с этой документацией, пишите <doc@FreeBSD.org>.
По вопросам связанным с русским переводом документации, пишите <frdp@FreeBSD.org.ua>.


Руководство FreeBSD
Prev Chapter 5. Процесс загрузки FreeBSD Next

5.3. Загрузчик: третий этап процесса начальной загрузки

Передача управления загрузчику является последним, третьим этапом в процессе начальной загрузки, а сам загрузчик находится в файловой системе, обычно как /boot/loader.

Note: Когда как файлы /boot/boot0, /boot/boot1 и /boot/boot2 здесь присутствуют, они не являются реальными копиями MBR, загрузочного сектора или метки диска соответственно.

Загрузчик являет собой удобный в использовании инструмент для настройки при помощи простого набора команд, управляемого более мощным интерпретатором с более сложным набором команд.

5.3.1. Процесс работы загрузчика

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

Затем загрузчик читает файл /boot/loader.rc, который по умолчанию использует файл /boot/defaults/loader.conf, устанавливающий подходящие значения по умолчанию для переменных и читает файл /boot/loader.conf для изменения в этих переменных. Затем с этими переменными работает loader.rc, загружающий выбранные модули и ядро.

И наконец, по умолчанию загрузчик выдерживает 10-секундную паузу в ожидании нажатия клавиши, и загружает ядро, если оно не было сделано. Если ожидание было прервано, пользователю выдается приглашение, которое воспринимает простой набор команд, в помощью которых пользователь может изменить значения переменных, выгрузить все модули, загрузить модули и окончательно продолжить процесс загрузки или перезагрузить машину.

Более подробное техническое описание этого процесса дается на странице Справочника loader(8)

5.3.2. Встроенные команды загрузчика

Простой набор команд состоит из:

autoboot секунды

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

boot [-параметры] [имя ядра]

Продолжить процесс загрузки указанного ядра, если оно было указано, и с указанными параметрами, если они были указаны.

boot-conf

Повторно провести тот же самый процесс автоматической настройки модулей на основе переменных, что был произведен при загрузке. Это имеет смысл, если до этого вы выполнили команду unload, изменили некоторые переменные, например, наиболее часто меняемую kernel.

help [тема]

Вывод сообщений подсказки из файла /boot/loader.help. Если в качестве темы указано слово index, то выводится список имеющихся тем.

include имя файла ...

Выполнить файл с указанным именем. Файл считывается и его содержимое интерпретируется строчка за строчкой. Ошибка приводит к немедленному прекращению выполнения команды include.

load [-t тип] имя файла

Загружает ядро, модуль ядра или файл указанного типа с указанным именем. Все аргументы после имени файла передаются в файл.

ls [-l] [маршрут]

Выводит список файлов по указанному маршруту или в корневом каталоге, если маршрут не был указан. Если указан параметр -l, будут выводиться и размеры файлов.

lsdev [-v]

Выводится список всех устройств, с которых могут быть загружены модули. Если указан параметр -v, выводится дополнительная информация.

lsmod [-v]

Выводит список загруженных модулей. Если указан параметр -v, то выводится дополнительная информация.

more имя файла

Вывод указанного файла с паузой при выводе каждой строки LINES.

reboot

Выполнить немедленную перезагрузку машины.

set переменная, set переменная=значение

Задает значения переменных окружения загрузчика.

unload

Удаление из памяти всех загруженных модулей.

5.3.3. Примеры использования загрузчика

Вот несколько практического использования загрузчика.


Руководство FreeBSDPrevChapter 7 Процесс загрузки FreeBSDNext

7.7 Процесс остановки системы

Во время контролируемого процесса остановки системы через утилиту shutdown(8) программа init(8) будет пытаться запустить скрипт /etc/rc.shutdown, после чего будет посылать всем процессам сигнал TERM, а затем и KILL тем процессам, которые ещё не завершили свою работу.

Для выключения машины с FreeBSD на аппаратных платформах и системах, которые поддерживают управление электропитанием, просто воспользуйтесь командой shutdown -p now для немедленного отключения электропитания. Чтобы просто перезагрузить систему FreeBSD, воспользуйтесь командой shutdown -r now. Для запуска команды shutdown(8) вам необходимо быть пользователем root или членом группы operator. Кроме того, можно также воспользоваться командами halt(8) и reboot(8), пожалуйста, обратитесь к соответствующим страницам справки и справочной странице по команде shutdown(8) для получения дополнительной информации.

Note: Для управления электропитанием требуется наличие поддержки acpi(4) в ядре или в виде загруженного модуля при использовании FreeBSD 5.X, а для FreeBSD 4.X необходима поддержка apm(4).

Этот, и другие документы, могут быть скачаны с ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

По вопросам связанными с FreeBSD, прочитайте документацию прежде чем писать в <questions@FreeBSD.org>.
По вопросам связанным с этой документацией, пишите <doc@FreeBSD.org>.
По вопросам связанным с русским переводом документации, пишите <frdp@FreeBSD.org.ua>.


Руководство FreeBSDPrevNext

Chapter 7 Процесс загрузки FreeBSD

Table of Contents
7.1 Описание
7.2 Проблема загрузки
7.3 MBR и первый, второй и третий этапы загрузки
7.4 Взаимодействие с ядром во время загрузки
7.5 Хинты устройств
7.6 Init: инициализация управления процессами
7.7 Процесс остановки системы

7.1 Описание

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

Эта глава подробно описывает параметры, которые вы можете изменить для настройки процесса загрузки FreeBSD. Под этим подразумевается все, что происходит до начала работы ядра FreeBSD, обнаружения устройств и запуска init(8). Если вы не совсем уверены, то это происходит, когда выводимый текст меняет цвет с ярко-белого на серый.

После чтения этой главы вы будете знать:

Только для x86: Эта глава описывает процесс загрузки FreeBSD только для систем на основе архитектуры Intel x86.

Этот, и другие документы, могут быть скачаны с ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

По вопросам связанными с FreeBSD, прочитайте документацию прежде чем писать в <questions@FreeBSD.org>.
По вопросам связанным с этой документацией, пишите <doc@FreeBSD.org>.
По вопросам связанным с русским переводом документации, пишите <frdp@FreeBSD.org.ua>.


Руководство FreeBSD
Prev Chapter 10. Сложные вопросы работы в сети Next

10.3. Мосты

Написано Стивом Питерсоном (Steve Peterson) .

10.3.1. Введение

Иногда полезно разделить одну физическую сеть (другими словами, сегмент Ethernet) на два отдельных сегмента сети без необходимости создания подсетей IP и использования маршрутизатора для соединения сегментов. Устройство, которое соединяет две сети на такой манер, называется мостом, а система FreeBSD с двумя сетевыми адаптерами может выступать в роли моста.

Мост работает на основе изучения адресов уровня MAC (то есть адресов Ethernet) устройств на каждом своем сетевом интерфейсе. Он перенаправляет трафик между двумя сетями, только когда адреса отправителя и получателя находятся в разных сетях.

По многим параметрам мост работает также, как коммутатор Ethernet с малым количеством портов.

10.3.2. Ситуации, когда можно использовать мосты

На сегодняшний день есть две ситуации, когда можно использовать мост.

10.3.2.1. Большой трафик в сегменте

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

Давайте рассмотрим в качестве примера газету, в которой редакторский и производственный отделы находятся в одной и той же подсети. Пользователи в редакторском отделе все используют сервер A для служб доступа к файлам, а пользователи производственного отдела используют сервер B. Для объединения всех пользователей используется Ethernet, а высокая нагрузка на сеть замедляет работу.

Если пользователи редакторского отдела могут быть собраны в одном сегменте сети, а пользователи производственного отдела в другом, то два сетевых сегмента можно объединить мостом. Только сетевой трафик, предназначенный для интерфейсов с "другой" стороны моста, будет посылаться в другую сеть, тем самым снижая уровень нагрузки на каждый сегмент сети.

10.3.2.2. Межсетевой экран с возможностями фильтрации/ограничения пропускной способности трафика

Второй распространенной ситуацией является необходимость в обеспечении функций межсетевого экрана без трансляции IP-адресов (NAT).

Для примера можно взять маленькую компанию, которая подключена к своему провайдеру по каналу DSL или ISDN. Для нее провайдер выделил 13 IP-адресов для имеющихся в сети 10 персональных компьютеров. В такой ситуации использование межсетевого экрана на основе маршрутизатора затруднено из=а проблем с разделением на подсети.

Межсетевой экран на основе моста может быть настроен и включен между маршрутизаторами DSL/ISDN без каких-либо проблем с IP-адресацией.

10.3.3. Настройка моста

10.3.3.1. Выбор сетевого адаптера

Для работы моста требуются по крайней мере два сетевых адаптера. К сожалению, не все сетевые адаптеры во FreeBSD 4.0 поддерживают функции моста. Прочтите страницу Справочника по bridge(4) для выяснения подробностей о поддерживаемых адаптерах.

Перед тем, как продолжить, сначала установите и протестируйте два сетевых адаптера.

10.3.3.2. Изменения в конфигурации ядра

Для включения поддержки функций моста в ядре, добавьте строчку

    options BRIDGE

в файл конфигурации вашего ядра, и перестройте ядро.

10.3.3.3. Поддержка функций межсетевого экрана

Если вы планируете использовать мост в качестве межсетевого экрана, вам нужно также добавить опцию IPFIREWALL. Прочтите раздел Section 6.7, содержащий общую информацию о настройке моста в качестве межсетевого экрана.

Если вам необходимо обеспечить прохождение не-IP пакетов (таких, как ARP) через мост, то имеется недокументированная опция межсетевого экрана, которую можно задать. Это опция IPFIREWALL_DEFAULT_TO_ACCEPT. Заметьте, что при этом правило, используемое межсетевым экраном по умолчанию, меняется на разрешительное для всех пакетов. Перед тем, как задавать эту опцию, убедитесь, что вы понимаете работу вашего набора правил.

10.3.3.4. Поддержка функций ограничения пропускной способности

Если вы хотите использовать мост в качестве машины, ограничивающей пропускную способность, то добавьте в файл конфигурации ядра опцию DUMMYNET. Дополнительную информацию можно почерпнуть из страницы Справочника по dummynet(4).

10.3.4. Включение функций моста

Добавьте строку

    net.link.ether.bridge=1

в файл /etc/sysctl.conf для включения функций моста во время работы системы. Если вы хотите, чтобы пакеты, проходящие через мост, фильтровались через ipfw, вы должны также туда добавить строчку

    net.link.ether.bridge_ipfw=1

10.3.5. Производительность

Я использую в качестве моста/межсетевого экрана машину Pentium 90 с двумя сетевыми адаптерами: 3Com 3C900B и 3C905B. Защищенная часть сети работает в полудуплексном режиме на скорости 10Мбит/сек, а связь между мостом и моим маршрутизатором (Cisco 675) осуществляется на скорости 100Мбит/сек в полнодуплексном режиме. Без функций фильтрации пакетов дополнительная задержка составляет около 0.4 миллисекунды для пакета утилиты ping между защищенной сетью, работающей на скорости 10 Мбит, и маршрутизатором Cisco 675.

10.3.6. Дополнительные замечания

Если вы хотите осуществлять удаленный доступ на мост по протоколу telnet из сети, то нет проблем в назначении одному из сетевых адаптеров IP-адреса. Общепринято, что назначение адреса обоим сетевым адаптерам является не самой хорошей идеей.

Если в вашей сети присутствует несколько мостов, не должно быть более одного маршрута между любыми двумя рабочими станциями. С технической точки зрения это означает отсутствие поддержки протокола spanning tree.


Руководство FreeBSDPrevChapter 10 БезопасностьNext

10.4 DES, MD5, и шифрование

Частично переписал и обновил Bill Swingle.

У каждого пользователя UNIX® системы есть пароль, связанный с его учетной записью. Очевидно, что эти пароли должны быть известны только пользователю и соответствующей операционной системе. Для защиты паролей они шифруются способом, известным как ``односторонний хэш'', то есть их можно легко зашифровать, но нельзя расшифровать. Другими словами, то, что мы сказали чуть раньше было очевидно, но не совсем верно: операционной системе сам пароль неизвестен. Ей известен только пароль в зашифрованной форме. Единственный способ получить ``обычный'' пароль это простой перебор всех возможных паролей.

К сожалению, единственный способ шифрования пароля при появлении UNIX был основан на DES, Data Encryption Standard. Это не было проблемой для пользователей, живущих в США, но поскольку исходный код DES нельзя было экспортировать из США, FreeBSD нашла способ одновременно не нарушать законов США и сохранить совместимость со всеми другими вариантами UNIX, где все еще использовался DES.

Решение было в разделении библиотек шифрования, чтобы пользователи в США могли устанавливать и использовать библиотеки DES, а у остальных пользователей был метод шифрования, разрешенный к экспорту. Так FreeBSD пришла к использованию MD5 в качестве метода шифрования по умолчанию. MD5 считается более безопасным, чем DES, поэтому установка DES рекомендуется в основном из соображений совместимости.

10.4.1 Определения механизма шифрования

До FreeBSD 4.4 libcrypt.a была символической ссылкой на библиотеку, используемую для шифрования. В FreeBSD 4.4 libcrypt.a была изменена для предоставления настраиваемой библиотеки аутентификации по хэшу пароля. На данный момент библиотека поддерживает хэши DES, MD5 и Blowfish. По умолчанию FreeBSD использует для шифрования паролей MD5.

Довольно легко определить какой метод шифрования используется в FreeBSD. Один из способов это проверка файла /etc/master.passwd. Пароли, зашифрованные в хэш MD5 длиннее, чем те, что зашифрованы с помощью DES и начинаются с символов $1$. Пароли, начинающиеся с символов $2$ зашифрованы с помощью Blowfish. Пароли, зашифрованные DES не содержат каких-то определенных идентифицирующих символов, но они короче, чем пароли MD5 и закодированы в 64-символьном алфавите, не содержащем символа $, поэтому относительно короткая строка, не начинающаяся с этого символа это скорее всего DES пароль.

Формат паролей, используемых для новых паролей, определяется параметром passwd_format в /etc/login.conf, которое может принимать значения des, md5 или blf. Обратитесь к странице справочника login.conf(5) за дополнительной информацией о параметрах login.

Этот, и другие документы, могут быть скачаны с ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

По вопросам связанными с FreeBSD, прочитайте документацию прежде чем писать в <questions@FreeBSD.org>.
По вопросам связанным с этой документацией, пишите <doc@FreeBSD.org>.
По вопросам связанным с русским переводом документации, пишите <frdp@FreeBSD.org.ua>.


Руководство FreeBSD
Prev Chapter 10. Сложные вопросы работы в сети Next

10.8. DHCP

Текст написал Gregory Sutter , март 2000.

10.8.1. Что такое DHCP?

DHCP, или Dynamic Host Configuration Protocol (Протокол Динамической Конфигурации Хостов), описывает порядок, по которому система может подключиться к сети и получить необходимую информацию для работы в ней. Во FreeBSD используется реализация DHCP от ISC (Internet Software Consortium), так что вся информация, описывающая особенности, зависящие от реализации, относится к дистрибутиву ISC.

10.8.2. Что описывается в этом разделе

В этом разделе Руководства делается попытка описать только те части системы DHCP, которые интегрированы с FreeBSD; таким образом, серверная часть не описывается. Справочные страницы по DHCP, кроме ссылок, дающихся ниже, будут вам весьма полезны.

10.8.3. Как это работает

Когда на клиентской машине выполняется программа dhclient, являющаяся клиентом DHCP, она начинает широковещательную рассылку запросов на получение настроечной информации. По умолчанию эти запросы делаются на 68 порт UDP. Сервер отвечает на UDP 67, выдавая клиенту адрес IP и другую необходимую информацию, такую, как сетевую маску, маршрутизатор и серверы DNS. Вся эта информация дается в форме "аренды" DHCP и верна только определенное время (что настраивается администратором сервера DHCP). При таком подходе устаревшие адреса IP тех клиентов, которые больше не подключены к сети, могут быть автоматически использоваться повторно.

Клиенты DHCP могут получить от сервера очень много информации. Подробный список находится в странице Справочника dhcp-options(5).

10.8.4. Интеграция с FreeBSD

Клиент DHCP от ISC, dhclient, полностью интегрирован во FreeBSD. Поддержка клиента DHCP есть как в программе установки, так и в самой системе, что исключает необходимость в знании подробностей конфигурации сети в любой сети, имеющей сервер DHCP. Утилита dhclient включена во все версии FreeBSD, начиная с 3.2.

DHCP поддерживается утилитой sysinstall. При настройке сетевого интерфейса из программы sysinstall первый вопрос, который вам задается, это "Do you want to try dhcp configuration of this interface?" ("Хотите ли вы попробовать настроить этот интерфейс через dhcp?"). Утвердительный ответ приведёт к запуску программы dhclient, и при удачном его выполнении к автоматическому заданию информации для настройки интерфейса.

Есть две вещи, которые вы должны сделать для того, чтобы ваша система использовала DHCP при загрузке:

Note: Обязательно замените fxp0 именем интерфейса, который вы хотите настроить динамически.

Если dhclient в вашей системе находится в другом месте или если вы хотите задать дополнительные параметры для dhclient, то также укажите следующее (изменив так, как вам нужно):

    dhcp_program="/sbin/dhclient"
    dhcp_flags=""
        

Сервер DHCP, dhcpd, включен как часть порта isc-dhcp2 в коллекции портов. Этот порт содержит полный дистрибутив ISC DHCP, состоящий из клиента, сервера, агент для перенаправления запросов и документация.

10.8.5. Файлы

10.8.6. Дополнительная литература

Полное описание протокола DHCP дается в RFC 2131. Кроме того, дополнительная информация есть на сервере dhcp.org.


Руководство FreeBSDPrevChapter 3 Основы UNIXNext

3.4 Структура каталогов

Файловая система FreeBSD является ключевым моментом в понимании устройства всей системы. Самым важным понятием является, несомненно, корневой каталог, обозначаемый символом ``/''. Корневой каталог монтируется самым первым на этапе загрузки и содержит все необходимое, чтобы подготовить систему к загрузке в многопользовательский режим. Корневой каталог также содержит точки монтирования всех других файловых систем.

Точкой монтирования называется каталог, который будет соответствовать корню примонтированой файловой системы. Стандартные точки монтирования включают /usr, /var, /mnt и /cdrom. Эти каталоги обычно перечислены в файле /etc/fstab, в котором указаны файловые системы и их точки монтирования. Большинство файловых систем, описанных в /etc/fstab монтируются автоматически из скрипта rc(8), если только для них не указана опция noauto. Обратитесь к fstab(5) за дополнительной информацией о формате файла /etc/fstab и различных опциях монтирования.

Полное описание иерархии файловой системы есть в hier(7). Здесь же мы упомянем лишь наиболее важные каталоги.

КаталогОписание
/Корневой каталог файловой системы.
/bin/Основные утилиты, необходимые для работы как в однопользовательском, так и в многопользовательском режимах.
/boot/Программы и конфигурационные файлы, необходимые для нормальной загрузки операционной системы.
/boot/defaults/Конфигурационные файлы с настройками по умолчанию, используемые в процессе загрузки операционной системы (см. loader.conf(5)).
/dev/Файлы устройств (см. intro(4)).
/etc/Основные конфигурационные файлы системы и скрипты.
/etc/defaults/Основные конфигурационные файлы системы с настройками по умолчанию (см. rc(8)).
/etc/mail/Конфигурационные файлы для систем обработки почты (например, sendmail(8)).
/etc/namedb/Конфигурационные файлы для утилиты named (см. named(8)).
/etc/periodic/Файлы сценариев, выполняемые ежедневно, еженедельно и ежемесячно (см. cron(8) и periodic(8)).
/etc/ppp/Конфигурационные файлы для утилиты ppp (см. ppp(8)).
/mnt/Пустой каталог, часто используемый системными администраторами как временная точка монтирования.
/proc/Виртуальная файловая система, отображающая текущие процессы (см. see procfs(5), mount_procfs(8)).
/root/Домашний каталог пользователя root.
/sbin/Системные утилиты и утилиты администрирования, необходимые для работы как в однопользовательском, так и в многопользовательском режимах.
/stand/Программы, необходимые для работы в автономном режиме (например, при установке системы).
/tmp/Временный каталог (часто монтируется как mfs(8); обычно содержимое этого каталога теряется во время перезагрузки системы).
/usr/Большинство пользовательских утилит и приложений.
/usr/bin/Пользовательские утилиты и приложения общего назначения.
/usr/include/Стандартные заголовочные файлы для языка C.
/usr/lib/Файлы стандартных библиотек.
/usr/libdata/Файлы данных для различных утилит.
/usr/libexec/Системные демоны и утилиты (выполняемые другими программами).
/usr/local/Локальные пользовательские приложения, библиотеки, и т.д. Также используется по умолчанию коллекцией портов. Внутри /usr/local иерархия каталогов должна следовать hier(7) для /usr. Исключение составляют каталог man, который расположен непосредственно в /usr/local, а не в /usr/local/share, и документация портов, которая расположена в share/doc/port.
/usr/obj/Архитектурно-зависимые файлы и каталоги, образующиеся в процессе сборки системы из исходных текстов в /usr/src.
/usr/ports/Коллекция портов FreeBSD (опционально).
/usr/sbin/Системные утилиты и утилиты администрирования (исполняемые пользователем).
/usr/share/Архитектурно-независимые файлы.
/usr/src/Исходные тексты BSD и/или программ.
/usr/X11R6/Утилиты, приложения и библиотеки X11R6 (X Window System; необязательно).
/var/Файлы журналов общего назначения, временные, перемещаемые файлы и файлы очередей.
/var/log/Различные файлы системных журналов.
/var/mail/Почтовые ящики пользователей.
/var/spool/Файлы очередей печати, почты, и пр.
/var/tmp/Временные файлы, которые необходимо сохранять между перезагрузками операционной системы.
/var/yp/Карты (maps) NIS.

Этот, и другие документы, могут быть скачаны с ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

По вопросам связанными с FreeBSD, прочитайте документацию прежде чем писать в <questions@FreeBSD.org>.
По вопросам связанным с этой документацией, пишите <doc@FreeBSD.org>.
По вопросам связанным с русским переводом документации, пишите <frdp@FreeBSD.org.ua>.


Руководство FreeBSD
Prev Chapter 10. Сложные вопросы работы в сети Next

10.5. Работа с бездисковыми станциями

Текст предоставил Martin Renters .

netboot.com/netboot.rom позволяют вам загрузить вашу машину с FreeBSD по сети и работать с FreeBSD даже без наличия диска на клиентской машине. В версии 2.0 возможно даже иметь локальный раздел подкачки. Поддерживается также подкачка поверх NFS.

Список поддерживаемых адаптеров Ethernet включает: Western Digital/SMC 8003, 8013, 8216 и совместимые с ними; NE1000/NE2000 и совместимые с ними (требуется перекомпиляция)

10.5.1. Инструкции по настройке

  1. Найдите машину, которая будет вашим сервером. Эта машина должна иметь достаточное количество дискового пространства для того, чтобы на ней поместились бинарные файлы FreeBSD 2.0, и на ней должны быть запущены сервисы bootp, tftp и NFS. Протестированные машины:

    • HP9000/8xx под управлением HP-UX 9.04 и выше (версии до 9.04 не работают)

    • Sun/Solaris 2.3. (вам может потребоваться найти bootp)

  2. Настройте сервер bootp, чтобы он сообщал клиенту его IP, сетевой шлюз и маску подсети.

        diskless:\
            :ht=ether:\
            :ha=0000c01f848a:\
            :sm=255.255.255.0:\
            :hn:\
            :ds=192.1.2.3:\
            :ip=192.1.2.4:\
            :gw=192.1.2.5:\
            :vm=rfc1048:
            
    
  3. Настройте сервер TFTP (на той же самой машине, что и сервер bootp) для того, чтобы он сообщал клиенту загрузочную информацию. Имя этого файла cfg.X.X.X.X (или /tftpboot/cfg.X.X.X.X, будут пробоваться оба), где X.X.X.X - это IP-адрес клиента. Этот файл может содержать любые корректные команды netboot. В версии 2.0 netboot воспринимает следующие команды:

    help вывод справочной информации
    ip X.X.X.X вывод/задание IP-адреса клиента
    server X.X.X.X вывод/задание адреса сервера bootp/tftp
    netmask X.X.X.X вывод/задание маски подсети
    hostname name вывод/задание имени хоста
    kernel name вывод/задание имени ядра
    rootfs ip:/fs вывод/задание корневой файловой системы
    swapfs ip:/fs вывод/задание файловой системы для подкачки
    swapsize size задание размера файла подкачки в КБайтах для бездисковой работы
    diskboot загрузка с диска
    autoboot продолжить процесс загрузки
    trans on|off включить/выключить передатчик
    flags bcdhsv задать параметры загрузки

    Типичный полный cfg-файл для бездисковой работы может содержать следующее:

        rootfs 192.1.2.3:/rootfs/myclient
        swapfs 192.1.2.3:/swapfs
        swapsize 20000
        hostname myclient.mydomain
            
    

    cfg-файл для машины с локальным разделом подкачки может содержать следующее:

        rootfs 192.1.2.3:/rootfs/myclient
        hostname myclient.mydomain
            
    
  4. Проверьте, что ваш сервер NFS экспортирует корневую файловую систему (и, если нужно, подкачку) для вашего клиента, а клиент имеет доступ с правами администратора к этим файловым системам. Типичный файл /etc/exports на системе FreeBSD может иметь такой вид:

        /rootfs/myclient -maproot=0:0 myclient.mydomain
        /swapfs -maproot=0:0 myclient.mydomain
            
    

    А на системе HP-UX:

        /rootfs/myclient -root=myclient.mydomain
        /swapfs -root=myclient.mydomain
            
    
  5. Если вы осуществляете подкачку поверх NFS (полностью бездисковая конфигурация), то создайте файл подкачки для вашего клиента при помощи команды dd. Если команде swapfs задан параметр /swapfs и указан размер 20000, как в примере выше, то файл подкачки для машины myclient будет называться /swapfs/swap.X.X.X.X, где X.X.X.X является IP-адресом клиента, например:

        # dd if=/dev/zero of=/swapfs/swap.192.1.2.4 bs=1k count=20000
            
    

    Кроме того, дисковое пространство подкачки после начала его использования может содержать важную информацию, так что постарайтесь ограничить доступ к этому файлу для предотвращения несанкционированного доступа:

        # chmod 0600 /swapfs/swap.192.1.2.4
            
    
  6. Распакуйте корневую файловую систему в каталоге, который будет использоваться клиентом для своей корневой файловой системы (/rootfs/myclient в примере выше).

    • На системах HP-UX: Сервер должен работать под управлением HP-UX версии 9.04 или выше для машин серий HP9000/800. Более ранние версии не допускают создания файлов устройств поверх NFS.

    • При распаковке каталога /dev в /rootfs/myclient обратите внимание то то, что некоторые системы (HPUX) не создадут файлы устройств, которые нужны FreeBSD. Вам может потребоваться при первой загрузке перейти в однопользовательский режим (нажав control-c во время процесса загрузки), перейти в каталог /dev и выполнить команду sh ./MAKEDEV all с клиента для того, чтобы все исправить.

  7. Запустите на клиентской машине программу netboot.com или прошейте ПЗУ файлом netboot.rom

10.5.2. Совместное использование файловых систем / и /usr

В настоящее время нет официально одобренного способа сделать это, хотя для каждого клиента я использую общую файловую систему /usr и индивидуальную /. Если у кого-либо появятся соображения о том, как сделать это корректно, пожалуйста, дайте знать мне и/или FreeBSD core team .

10.5.3. Компиляция netboot для специфичных ситуаций

Netboot может быть перекомпилирован для поддержки адаптеров NE1000/2000 изменением настроек в файле /sys/i386/boot/netboot/Makefile. Посмотрите комментарии в самом начале этого файла.


Руководство FreeBSDPrevChapter 12 Устройства храненияNext

12.3 Добавление дисков

Изначальный текст предоставилDavid O'Brien.

Предположим, что мы хотим установить новый диск SCSI на машину, имеющую в данный момент только один диск. Сначала выключим компьютер и установим диск в компьютер согласно инструкциям к компьютеру, контроллеру и от производителя диска. Из-за большого разнообразия этих процедур их рассмотрение выходит за рамки этого документа..

Войдите в систему как пользователь root. После того, как вы установили диск, просмотрите файл /var/run/dmesg.boot, чтобы убедиться, что новый диск был найден. Продолжая наш пример, только что добавленный диск будет называться da1 и мы хотим смонтировать его в каталог /1 (если вы добавляете диск IDE, то устройство будет называться wd1 в системах, предшествовавших 4.0, и ad1 в большинстве систем 4.X).

Так как FreeBSD работает на IBM-PC совместимых компьютерах, она должна принимать во внимание разделы PC BIOS. В этом заключается отличие от традиционных разделов BSD. Диск PC может иметь до четырех записей разделов BIOS. Если диск на самом деле будет использоваться исключительно под FreeBSD, вы можете использовать режим dedicated. В противном случае FreeBSD будет располагаться в одном из разделов PC BIOS. Во FreeBSD разделы PC BIOS называются слайсами, чтобы не путать их с традиционными разделами BSD. Вы также можете использовать слайсы и с диском, предназначенным исключительно для FreeBSD, однако используемым в компьютере, на котором имеется дополнительная операционная система. Это нужно для того, чтобы не было путаницы с утилитой fdisk другой операционной системы.

В случае слайсов диск будет добавлен как /dev/da1s1e. Это интерпретируется следующим образом: диск SCSI, устройство номер 1 (второй диск SCSI), слайс 1 (раздел PC BIOS 1), и раздел BSD e. В случае использования в выделенном режиме диск будет добавлен просто как /dev/da1e.

12.3.1 Использование утилиты sysinstall(8)

  1. Использование Sysinstall

    Вы можете использовать простые меню утилиты /stand/sysinstall для разбиения на разделы и разметки нового диска. Войдите как пользователь root или воспользуйтесь командой su. Запустите команду /stand/sysinstall и войдите в меню Configure. Внутри FreeBSD Configuration Menu, пролистайте и выберите пункт Fdisk.

  2. Редактор разделов fdisk

    Работая с утилитой fdisk, мы можем выбрать A для того, чтобы использовать под FreeBSD полностью весь диск. Когда будет задан вопрос о том, хотите ли вы ``сохранить совместимость с другими возможными операционными системами в будущем'', ответьте YES. Запишите изменения на диск при помощи команды W. А теперь выйдите из редактора FDISK, нажав q. В этот момент вам будет задан вопрос о главной загрузочной записи. Так как вы добавляете диск к уже работающей системе, выберите None.

  3. Редактор метки диска

    Теперь вам нужно выйти из sysinstall и запустить эту утилиту снова. Следуйте указаниям выше, но на этот раз выберите пункт Label. Вы перейдёте к меню Disk Label Editor. Здесь вы создадите традиционные разделы BSD. На диске может быть до восьми разделов, имеющих метки a-h. Некоторые из меток разделов имеют особый смысл. Раздел a используется для размещения корневого раздела (/). По этой причине только ваш системный диск (например, тот, с которого происходит загрузка), должен иметь раздел a. Раздел b используется под раздел подкачки, и вы можете иметь много дисков с разделами подкачки. Раздел c используется для доступа ко всему диску в режиме эксклюзивного использования или ко всему слайсу FreeBSD при работе в режиме с использованием слайсов. Остальные разделы имеют обычное предназначение.

    Редактор метки диска программы sysinstall использует раздел e для некорневого раздела и не для раздела подкачки. Внутри редактора метки диска создайте отдельную файловую систему, нажав C. Когда будет задан вопрос о том, будет ли это раздел с файловой системой (FS) или это будет раздел подкачки, выберите FS и наберите точку монтирования (например, /mnt). При добавлении диска после установки системы, программа sysinstall не будет автоматически создавать записи в файле /etc/fstab, поэтому точка монтирования не так уж и важна.

    Теперь вы готовы записать новую метку на диск и создать на нем файловую систему. Сделайте это, набрав W. Проигнорируйте сообщения об ошибках от sysinstall о невозможности смонтировать новый раздел. Полностью выйдите из редактора метки диска и из программы sysinstall.

  4. Завершение

    Последний шаг заключается в редактировании файла /etc/fstab и добавлении записи для вашего нового диска.

12.3.2 Использовании утилит командной строки

12.3.2.1 Работа со слайсами

Следующая настройка позволит вашему диску корректно работать с другими операционными системами, которые могут быть установлены на вашем компьютере, и не вызовет конфликта с утилитами fdisk других операционных систем. Этот способ рекомендуется использовать для установок новых дисков. Используйте эксклюзивный режим, только если у вас есть реальные причины делать это!

# dd if=/dev/zero of=/dev/da1 bs=1k count=1
# fdisk -BI da1 # Инициализируем новый диск.
# disklabel -B -w -r da1s1 auto # Размечаем его.
# disklabel -e da1s1 # Редактируем только что созданную метку диска и добавляем разделы.
# mkdir -p /1
# newfs /dev/da1s1e # Повторяем этот шаг для всех созданных разделов.
# mount /dev/da1s1e /1 # Монтируем раздел(ы)
# vi /etc/fstab # Добавляем соответствующую запись/записи в файл /etc/fstab.

Если у вас установлен диск IDE, подставьте ad вместо da. На системах версий ранее 4.X используйте wd.

12.3.2.2 Эксклюзивный режим

Если вы не будете использовать новый диск совместно с другой операционной системой, то вы можете использовать режим эксклюзивного использования. Отметьте, что этот режим может ввести в заблуждение операционные системы от Microsoft; однако информацию они не разрушат. А вот OS/2® компании IBM будет ``забирать себе'' любой раздел, который она найдет и не сможет распознать.

# dd if=/dev/zero of=/dev/da1 bs=1k count=1
# disklabel -Brw da1 auto
# disklabel -e da1				# create the `e' partition
# newfs -d0 /dev/da1e
# mkdir -p /1
# vi /etc/fstab				# add an entry for /dev/da1e
# mount /1
	

Альтернативный метод заключается в следующем:

# dd if=/dev/zero of=/dev/da1 count=2
# disklabel /dev/da1 | disklabel -BrR da1 /dev/stdin
# newfs /dev/da1e
# mkdir -p /1
# vi /etc/fstab					# add an entry for /dev/da1e
# mount /1

Note: Начиная с FreeBSD 5.1-RELEASE, на смену старой программе disklabel(8) пришла утилита bsdlabel(8). У bsdlabel(8) отсутствуют некоторые устаревшие опции и параметры; в примере выше параметр -r не может использоваться с bsdlabel(8). Для получения дополнительной информации обратитесь к справочной странице п о bsdlabel(8).

Этот, и другие документы, могут быть скачаны с ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

По вопросам связанными с FreeBSD, прочитайте документацию прежде чем писать в <questions@FreeBSD.org>.
По вопросам связанным с этой документацией, пишите <doc@FreeBSD.org>.
По вопросам связанным с русским переводом документации, пишите <frdp@FreeBSD.org.ua>.


Руководство FreeBSD
Prev Chapter 7. Диски Next

7.2. Нумерация дисков в BIOS

Вам необходимо изучить этот вопрос перед тем, как устанавливать и настраивать FreeBSD на вашей машине, особенно если у вас имеется несколько дисков.

В случае PC под управлением DOS или других зависимых от BIOS операционных систем (WINxxx), BIOS может скрывать обычный порядок следования дисков, и операционная система не замечает этого. Это позволяет пользователю загружаться с диска, отличного от так называемого "основного первичного". Это особенно удобно тем пользователям, которые находят, что самый простым и дешевым способом создания резервных копий является покупка второго винчестера, идентичного первому, и выполнение регулярных копий первого диска на второй при помощи программ Ghost или XCOPY. В таком случае, если первый диск ломается, подвергается атаке вируса или портится из-за дефекта в операционной системе, он может быть легко восстановлен просто указанием BIOS логически поменять диски местами. Это похоже на переключение кабелей на винчестерах, но без разборки корпуса.

Более дорогие системы с контроллерами SCSI часто включают расширения BIOS, которые точно также позволяют изменить порядок следования до семи дисков SCSI.

Пользователь, который привык пользоваться этой возможностью, может быть удивлен результатом попытки ею воспользоваться с FreeBSD. FreeBSD не использует BIOS и не знает о "логическом переназначении дисков BIOS". Это может привести к очень запутанной ситуации, особенно когда диски идентичны по физическим параметрам и к тому же являлись клонами друг друга.

При работе с FreeBSD, всегда настраивайте BIOS на естественный порядок нумерации дисков до установки FreeBSD, и оставляйте эту настройку. Если вам нужно поменять диски местами, делайте это, но самым сложным способом, открывая корпус машины и переключая кабели и перемычки.


Руководство FreeBSD
Prev Chapter 7. Диски Next

7.4. Монтирование и размонтирование файловых систем

Файловую систему лучше всего рассматривать как дерево, корень которого, как обычно, находится в /. /dev, /usr и другие каталоги в корневом каталоге являются ветками, которые могут иметь собственные ветви, такие, как /usr/local и так далее.

Есть несколько причин размещать некоторые из этих каталогов в раздельных файловых системах. /var содержит журналы, очереди и различные типы временных файлов, поэтому может быть заполнена до отказа. Заполнение корневой файловой системы нежелательно, так что отделение /var от / зачастую бывает весьма полезно.

Другим общим соображением при размещении отдельных деревьев каталогов в других файловых системах является их размещение на отдельных физических дисках или отдельных виртуальных дисках, таких, как точки монтирования сетевой файловой системы или привода CDROM.

7.4.1. Файл fstab

Во время процесса загрузки файловые системы, перечисленные в /etc/fstab, монтируются автоматически (если при них не указан флаг noauto).

Файл /etc/fstab состоит из строк следующего формата:

    device /mount-point fstype     options     dumpfreq     passno
          

device являются именем устройства (которое должно существовать) вида, описанного выше в главе о соглашениях по именованию дисков.

mount-point является каталогом (который должен существовать), в который будет смонтирована файловая система.

fstype является типом файловой системы для передачи в mount(8). По умолчанию во FreeBSD файловая система имеет тип ufs.

В качестве параметров options указывается rw для файловых систем, доступных по чтению-записи, или ro для файловых систем, доступных только для чтения, за которым следует любое количество других параметров, могущих быть нужными. Часто используемым параметром является опция noauto для файловых систем, которые обычно не монтируются во время загрузки. Другие параметры описаны на странице справочника по mount(8).

dumpfreq определяет количество дней для обязательного создания архивной копии файловой системы, а passno задает номер прохода, при котором файловая система была смонтирована во время процесса загрузки.

7.4.2. Команда mount

Команда mount(8) является тем, что необходимо использовать для монтирования файловых систем.

В ее самой простой форме она используется так:

    # mount device mountpoint
        

Как отмечено на справочной странице по команде mount(8), она имеет массу параметров, но наиболее часто используются следующие:

Параметры команды mount

-a

Смонтировать все файловые системы, перечисленные в файле /etc/fstab, с модификациями по параметру -t, если он задан.

-d

Сделать все, кроме собственно монтирования файловой системы.

-f

Принудительно смонтировать файловую систему.

-r

Смонтировать файловую систему в режиме только для чтения.

-t fstype

Смонтировать указанную файловую систему как файловую систему указанного типа, или смонтировать файловые системы только указанного типа, если задан параметр -a.

По умолчанию используется тип файловой системы "ufs".

-u

Обновить параметры монтирования файловой системы.

-v

Выдавать подробный журнал.

-w

Смонтировать файловую систему в режиме доступа как для чтения, так и для записи.

Опция -o принимает список разделенных запятыми параметров, включая следующее:

nodev

Не обрабатывать специальные устройства в файловой системе. Опция, полезная с точки зрения обеспечения безопасности.

noexec

Запретить выполнение бинарных файлов на этой файловой системе. Опция, полезная с точки зрения обеспечения безопасности.

nosuid

Не обрабатывать флаги установки выполнения файлов с привилегиями их владельцев и групп в этой файловой системе. Опция, полезная с точки зрения обеспечения безопасности.

7.4.3. Команда umount

Команда umount воспринимает в качестве параметра либо точку монтирования, либо имя устройства, либо параметры -a или -A.

Все формы воспринимают параметр -f для принудительного размонтирования и -v для вывода подробного журнала.

Флаги -a и -A используются для размонтирования всех смонтированных файловых систем, возможно с учетом типов файловых систем, перечисленных после -t. Однако при использовании опции -A не будет предприниматься попытка размонтировать корневую файловую систему.


Руководство FreeBSDPrevChapter 12 Устройства храненияNext

12.2 Имена устройств

Далее приводится список физических устройств хранения информации, которые поддерживаются во FreeBSD, и имена устройств, которые им соответствуют.

Table 12-1. Соглашения по именованию физических дисков

Тип дискаИмя дискового устройства
Notes:
a. 5 октября 2002 года драйвер matcd(4) был удалён из ветки FreeBSD 4.X и отсутствует во FreeBSD 5.0 и 5.1. Однако этот драйвер вновь появился в ветке FreeBSD 5.X, и присутствует там с 16 июня 2003 года.

Этот, и другие документы, могут быть скачаны с ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

По вопросам связанными с FreeBSD, прочитайте документацию прежде чем писать в <questions@FreeBSD.org>.
По вопросам связанным с этой документацией, пишите <doc@FreeBSD.org>.
По вопросам связанным с русским переводом документации, пишите <frdp@FreeBSD.org.ua>.


Руководство FreeBSDPrevChapter 12 Устройства храненияNext

12.10 Сетевые файловые системы, файловые системы в памяти и с отображением в файл

Реорганизация и улучшения выполнилMarc Fonvieille.

Кроме дисков, которые вы физически устанавливаете в ваш компьютер; дискеты, компакт-диски, винчестеры и так далее, FreeBSD воспринимает и другие типы дисков - виртуальные диски.

Сюда могут быть отнесены сетевые файловые системы, такие, как Network File System и Coda, а также файловые системы с организацией в памяти и создаваемые в файлах.

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

Note: Пользователи FreeBSD 4.X для создания требуемых устройств должны использовать MAKEDEV(8). Во FreeBSD 5.0 и более поздних версиях для создания файлов устройств используется devfs(5), которая выполняет это прозрачно для пользователей.

12.10.1 Файловая система в файле во FreeBSD 4.X

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

Для использования vnconfig(8) в конфигурационном файле ядра вам нужно включить поддержку vn(4):

pseudo-device vn

Чтобы смонтировать имеющийся образ файловой системы:

Example 12-4. Использование vnconfig для монтирования имеющегося образа файловой системы во FreeBSD 4.X

# vnconfig vn0 diskimage
# mount /dev/vn0c /mnt

Для создания нового образа файловой системы с помощью vnconfig(8):

Example 12-5. Создание нового диска в файле с помощью vnconfig

# dd if=/dev/zero of=newimage bs=1k count=5k
5120+0 records in
5120+0 records out
# vnconfig -s labels -c vn0 newimage
# disklabel -r -w vn0 auto
# newfs vn0c
Warning: 2048 sector(s) in last cylinder unallocated
/dev/vn0c:	10240 sectors in 3 cylinders of 1 tracks, 4096 sectors
	5.0MB in 1 cyl groups (16 c/g, 32.00MB/g, 1280 i/g)
super-block backups (for fsck -b #) at:
 32
# mount /dev/vn0c /mnt
# df /mnt
Filesystem  1K-blocks	  Used	  Avail Capacity  Mounted on
/dev/vn0c	 4927	     1	   4532     0%	  /mnt

12.10.2 Файловые системы, отображаемые в файлы, во FreeBSD 5.X

Во FreeBSD 5.X для конфигурации и подключения дисков md(4), отображаемых в оперативную память, используется утилита mdconfig(8). Для работы с mdconfig(8) вам нужно подгрузить модуль md(4) или добавить поддержку этих устройств в файл конфигурации ядра:

device md

Утилита mdconfig(8) поддерживает три типа виртуальных дисков, отображаемых в память: диски в памяти, которая выделяется запросами malloc(9) и диски в памяти, использующие в качестве устройств хранения файлы или раздел подкачки. Одним из возможных использований таких дисков является монтирование файлов с образами дискет или CD.

Для монтирования образа существующей файловой системы:

Example 12-6. Использование mdconfig для монтирования файла с образом существующей файловой системы во FreeBSD 5.X

# mdconfig -a -t vnode -f diskimage -u 0
# mount /dev/md0c /mnt

Для создания образа новой файловой системы при помощи mdconfig(8):

Example 12-7. Создание нового диска, отображаемого в файл, при помощи mdconfig

# dd if=/dev/zero of=newimage bs=1k count=5k
5120+0 records in
5120+0 records out
# mdconfig -a -t vnode -f newimage -u 0
# disklabel -r -w md0 auto
# newfs md0c
/dev/md0c: 5.0MB (10240 sectors) block size 16384, fragment size 2048
	using 4 cylinder groups of 1.27MB, 81 blks, 256 inodes.
super-block backups (for fsck -b #) at:
 32, 2624, 5216, 7808
# mount /dev/md0c /mnt
# df /mnt
Filesystem  1K-blocks     Used    Avail Capacity  Mounted on
/dev/md0c        4846        2     4458     0%    /mnt

Если в параметре -u вы не задали номер устройства, то mdconfig(8) для выбора неиспользуемого устройства будет использовать функцию автоматическое выделения в md(4). Имя выделенного устройства будет выдано на стандартное устройство выводы в виде, например, md4. Для получения более полной информации о mdconfig(8), пожалуйста, обратитесь к соответствующей странице справочной системы.

Note: Начиная с FreeBSD 5.1-RELEASE, на смену старой программе disklabel(8) пришла утилита bsdlabel(8). У bsdlabel(8) отсутствуют некоторые устаревшие опции и параметры; в примере выше параметр -r не может использоваться с bsdlabel(8). Для получения дополнительной информации обратитесь к справочной странице п о bsdlabel(8).

Утилита mdconfig(8) весьма полезна, однако для создания файла с файловой системой требуется произвести много действий. Вместе с FreeBSD 5.0 поставляется утилита под названием mdmfs(8), которая создаёт диск md(4) при помощи mdconfig(8), размещает на нём файловую систему UFS при помощи newfs(8) и монтирует её командой mount(8). Например, если вы хотите создать и смонтировать такой же образ файловой системе, как выше, просто наберите такую команду:

Example 12-8. Настройка и монтирование диска, отображаемого в файл, при помощи команды mdmfs

# dd if=/dev/zero of=newimage bs=1k count=5k
5120+0 records in
5120+0 records out
# mdmfs -F newimage -s 5m md0 /mnt
# df /mnt
Filesystem 1K-blocks Used Avail Capacity  Mounted on
/dev/md0        4846    2  4458     0%    /mnt

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

12.10.3 Файловая система в памяти во FreeBSD 4.X

Драйвер md(4) является простым и эффективным способом создания файловых систем в памяти во FreeBSD 4.X. Для выделения памяти используется malloc(9).

Просто возьмите файловую систему, которую вы приготовили при помощи, скажем, vnconfig(8) и:

Example 12-9. Диск md в памяти во FreeBSD 4.X

# dd if=newimage of=/dev/md0
5120+0 records in
5120+0 records out
# mount /dev/md0c /mnt
# df /mnt
Filesystem  1K-blocks	  Used	  Avail Capacity  Mounted on
/dev/md0c	 4927	     1	   4532     0%	  /mnt

Для получения более полной информации, пожалуйста, обратитесь к страницам справочной системы по md(4).

12.10.4 Файловые системы с отображением в память во FreeBSD 5.X

При работе с файловыми системами, отображаемыми в файл или память, используются одни и те же утилиты: mdconfig(8) или mdmfs(8). Место для хранения файловых систем в памяти выделяется через malloc(9).

Example 12-10. Создание нового диска с отображением в память при помощи mdconfig

# mdconfig -a -t malloc -s 5m -u 1
# newfs -U md1
/dev/md1: 5.0MB (10240 sectors) block size 16384, fragment size 2048
	using 4 cylinder groups of 1.27MB, 81 blks, 256 inodes.
	with soft updates
super-block backups (for fsck -b #) at:
 32, 2624, 5216, 7808
# mount /dev/md1 /mnt
# df /mnt
Filesystem 1K-blocks Used Avail Capacity  Mounted on
/dev/md1        4846    2  4458     0%    /mnt

Example 12-11. Создание нового диска с отображением в память при помощи mdmfs

# mdmfs -M -s 5m md2 /mnt
# df /mnt
Filesystem 1K-blocks Used Avail Capacity  Mounted on
/dev/md2        4846    2  4458     0%    /mnt

Вместо того, чтобы использовать файловую систему, опирающуюся на malloc(9), возможно использовать память раздела подкачки, для чего нужно просто заменить malloc на swap в командной строке при вызове mdconfig(8). Утилита mdmfs(8) по умолчанию (без опции -M) создаёт диск в разделе подкачки. Для выяснения всех подробностей, пожалуйста, обратитесь к страницам справочной системы по mdconfig(8) и mdmfs(8).

12.10.5 Отключение диска, отображаемого в память, от системы

Если файловые системы, отображаемые в память или файл, больше не используются, вам нужно высвободить все ресурсы для системы. Первым делом нужно размонтировать файловую систему, затем воспользоваться mdconfig(8) для отключения диска от системы и освободить ресурсы.

К примеру, чтобы отключить и освободить все ресурсы, используемые /dev/md4:

# mdconfig -d -u 4

Для выдачи информации об отконфигурированных устройствах md(4) используется команда mdconfig -l.

Во FreeBSD 4.X для отключения устройства используется команда vnconfig(8). Например, для отключения и освобождения всех ресурсов, используемых /dev/vn4:

# vnconfig -u vn4

Этот, и другие документы, могут быть скачаны с ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

По вопросам связанными с FreeBSD, прочитайте документацию прежде чем писать в <questions@FreeBSD.org>.
По вопросам связанным с этой документацией, пишите <doc@FreeBSD.org>.
По вопросам связанным с русским переводом документации, пишите <frdp@FreeBSD.org.ua>.


Руководство FreeBSDPrevNext

Chapter 12 Устройства хранения

Table of Contents
12.1 Краткий обзор
12.2 Имена устройств
12.3 Добавление дисков
12.4 RAID
12.5 Запись и использование оптических носителей (CD & DVD)
12.6 Дискеты
12.7 Создание и использование архивных копий на магнитной ленте
12.8 Создание резервных копий на дискетах
12.9 Основы технологии резервного копирования
12.10 Сетевые файловые системы, файловые системы в памяти и с отображением в файл
12.11 Мгновенные копии файловых систем
12.12 Квотирование файловых систем
12.13 Шифрование дисковых разделов

12.1 Краткий обзор

В этой главе описывается использование дисков во FreeBSD. К ним относятся диски в памяти, диски, подключенные по сети и обычные устройства хранения SCSI/IDE.

После чтения этой главы вы будете знать:

Этот, и другие документы, могут быть скачаны с ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

По вопросам связанными с FreeBSD, прочитайте документацию прежде чем писать в <questions@FreeBSD.org>.
По вопросам связанным с этой документацией, пишите <doc@FreeBSD.org>.
По вопросам связанным с русским переводом документации, пишите <frdp@FreeBSD.org.ua>.


Руководство FreeBSDPrevChapter 3 Основы UNIXNext

3.10 Текстовые редакторы

Большинство настроек в FreeBSD производится путем редактирования текстовых файлов. Соответственно, вам нужно будет освоиться с каким-либо текстовым редактором. Вместе с FreeBSD поставляются лишь некоторые из них, гораздо больше редакторов доступно из коллекции портов.

Самым простым в изучении и использовании, по-видимому, можно назвать ee, что расшифровывается как ``easy editor'', т.е. ``простой редактор''. Чтобы начать редактировать какой-либо файл, наберите в командной строке ee filename, где filename имя редактируемого файла. Например, для редактирования файла /etc/rc.conf, наберите ee /etc/rc.conf. В верхней части экрана вы увидите список основных команд редактора. Символ каретки (^) означает клавишу Ctrl, таким образом, ^e означает комбинацию клавиш Ctrl+e. Чтобы выйти из редактора, нажмите клавишу Esc, затем Enter. Если остались какие-либо не сохраненные данные, вам потребуется подтвердить выход, сохранив результат работы или оставив файл без изменения.

В FreeBSD присутствует также мощный текстовый редактор vi, а редакторы emacs и vim можно найти в коллекции портов. Эти редакторы более сложны в изучении, но их возможности порой превосходят всякие ожидания! Если в будущем вам потребуется часто редактировать большие объемы текстов, то потраченное на изучение этих редакторов время окупится с лихвой.

Этот, и другие документы, могут быть скачаны с ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

По вопросам связанными с FreeBSD, прочитайте документацию прежде чем писать в <questions@FreeBSD.org>.
По вопросам связанным с этой документацией, пишите <doc@FreeBSD.org>.
По вопросам связанным с русским переводом документации, пишите <frdp@FreeBSD.org.ua>.


Руководство FreeBSDPrevChapter 10 БезопасностьNext

10.8 Межсетевые экраны

Предоставили Gary Palmer and Alex Nash.

Интерес к межсетевым экранам (firewall) со стороны людей, подключенных к интернет, все возрастает и появились даже приложения для локальной сети, предоставляющие повышенный уровень безопасности. В этом разделе мы надеемся изложить что такое межсетевые экраны, как их использовать, и как использовать возможности, предоставляемые ядром FreeBSD для их реализации.

Note: Люди часто думают, что наличие межсетевого экрана между внутренней сетью и ``Большим плохим интернетом'' решит все их проблемы безопасности. Это может помочь, но плохо настроенный межсетевой экран представляет более серьезную угрозу безопасности, чем его полное отсутствие. Межсетевой экран добавляет еще один уровень безопасности вашим системам, но не может остановить проникновение решительно настроенного взломщика в вашу сеть. Если вы снижаете внутреннюю безопасность системы, поскольку верите в надежность межсетевого экрана, это существенно упрощает работу взломщика.

10.8.1 Что такое межсетевой экран?

Есть два четко различающихся типа межсетевых экранов, повседневно используемых в современном интернет. Первый тип правильнее называть маршрутизатор с фильтрацией пакетов. Этот тип межсетевого экрана работает на машине, подключенной к нескольким сетям и применяет к каждому пакету набор правил, определяющий переправлять ли этот пакет или блокировать. Второй тип, известный как прокси сервер, реализован в виде даемонов, выполняющих аутентификацию и пересылку пакетов, возможно на машине с несколькими сетевыми подключениями, где пересылка пакетов в ядре отключена.

Иногда эти два типа межсетевых экранов используются вместе, так что только определенной машине (известной как защитный хост (bastion host)) позволено отправлять пакеты через фильтрующий маршрутизатор во внутреннюю сеть. Прокси сервисы работают на защитном хосте, что обычно более безопасно, чем обычные механизмы аутентификации.

FreeBSD поставляется с встроенным в ядро фильтром пакетом (известным как IPFW), ему будет посвящена оставшаяся часть раздела. Прокси серверы могут быть собраны на FreeBSD из программного обеспечения сторонних разработчиков, но их слишком много и невозможно описать их в этом разделе.

10.8.1.1 Маршрутизаторы с фильтрацией пакетов

Маршрутизатор это машина, пересылающая пакеты между двумя или несколькими сетями. Маршрутизатор с фильтрацией пакетов запрограммирован на сравнение каждого пакета со списком правил перед тем как решить, пересылать его или нет. Большинство современного программного обеспечения маршрутизации имеет возможности фильтрации, и по умолчанию пересылаются все пакеты. Для включения фильтров, вам потребуется определить набор правил.

Для определения того, должен ли быть пропущен пакет, межсетевой экран ищет в наборе правило, совпадающее с содержимым заголовков пакета. Как только совпадение найдено, выполняется действие, присвоенное данному правилу. Действие может заключаться в отбрасывании пакета, пересылке пакета, или даже в отправлении ICMP сообщения в адрес источника. Учитывается только первое совпадение, поскольку правила просматриваются в определенном порядке. Следовательно, список правил можно назвать ``цепочкой правил''.

Критерий отбора пакетов зависит от используемого программного обеспечения, но обычно вы можете определять правила, зависящие от IP адреса источника пакета, IP адреса назначения, номера порта источника пакета, номера порта назначения (для протоколов, поддерживающих порты), или даже от типа пакета (UDP, TCP, ICMP, и т.д.).

10.8.1.2 Прокси серверы

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

Прокси серверы обычно лучше защищены, чем другие серверы, и зачастую имеют более широкий набор механизмов аутентификации, включая системы ``одноразовых'' паролей, так что даже если кто-то узнает, какой пароль вы использовали, он не сможет использовать его для получения доступа к системе, поскольку срок действия пароля истекает немедленно после его первого использования. Поскольку пароль не дает доступа непосредственно к компьютеру, на котором находится прокси-сервер, становится гораздо сложнее установить в систему backdoor.

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

10.8.2 Что позволяет делать IPFW?

Программное обеспечение IPFW, поставляемое с FreeBSD, это система фильтрации и учета пакетов, находящаяся в ядре и снабженная пользовательской утилитой настройки, ipfw(8). Вместе они позволяют определять и просматривать правила, используемые ядром при маршрутизации.

IPFW состоит из двух связанных частей. Межсетевой экран осуществляет фильтрацию пакетов. Часть, занимающаяся учетом IP пакетов, отслеживает использование маршрутизатора на основе правил подобных тем, что используются в части межсетевого экрана. Это позволяет администратору определять, например, объем трафика, полученного маршрутизатором от определенного компьютера, или объем пересылаемого WWW трафика.

Благодаря тому, как реализован IPFW, вы можете использовать его и на компьютерах, не являющихся маршрутизаторами для фильтрации входящих и исходящих соединений. Это особый случай более общего использования IPFW, и в этой ситуации используются те же команды и техника.

10.8.3 Включение IPFW в FreeBSD

Поскольку основная часть системы IPFW находится в ядре, вам потребуется добавить один или несколько параметров в файл настройки ядра, в зависимости от требуемых возможностей, и пересобрать ядро. Обратитесь к главе о пересборке ядра (Chapter 9) за подробным описанием этой процедуры.

Warning: Правилом IPFW по умолчанию является deny ip from any to any. Если вы не добавите других правил во время загрузки для разрешения доступа, то заблокируете доступ к серверу с включенным в ядро межсетевым экраном после перезагрузки. Мы предлагаем указать firewall_type=open в файле /etc/rc.conf при первоначальном добавлении межсетевого экрана, а затем, после тестирования его работоспособности, отредактировать правила в файле /etc/rc.firewall. Дополнительной предосторожностью может быть первоначальная настройка межсетевого экрана с локальной консоли, вместо входа через ssh. Кроме того, возможна сборка ядра с параметрами IPFIREWALL и IPFIREWALL_DEFAULT_TO_ACCEPT. В этом случае правило IPFW по умолчанию будет изменено на allow ip from any to any, что предотвратит возможную блокировку.

Существует четыре параметра настройки ядра, относящихся к IPFW:

options IPFIREWALL

Включает в ядро код для фильтрации пакетов.

options IPFIREWALL_VERBOSE

Включает протоколирование пакетов через syslogd(8). Без этого параметра, даже если вы укажете в правилах фильтрации протоколировать пакеты, это не сработает.

options IPFIREWALL_VERBOSE_LIMIT=10

Ограничивает число пакетов, протоколируемых каждым правилом через syslogd(8). Вы можете использовать этот параметр если хотите протоколировать работу межсетевого экрана, но не хотите делать возможной DoS атаку путем переполнения syslog.

Когда для одного из правил в цепочке достигается определенный параметром предел, протоколирование для этого правила выключается. Для включения протоколирования, вам потребуется сбросить соответствующий счетчик с помощью утилиты ipfw(8):

# ipfw zero 4500

где 4500 это номер правила, для которого вы хотите возобновить протоколирование.

options IPFIREWALL_DEFAULT_TO_ACCEPT

Изменяет правило по умолчанию с ``deny'' на ``allow''. Это предотвращает возможное блокирование, если ядро загружено с поддержкой IPFIREWALL, но межсетевой экран еще не настроен. Этот параметр также полезен, если вы используете ipfw(8) в качестве средства от определенных проблем по мере их возникновения. Тем не менее, используйте параметр с осторожностью, поскольку он открывает межсетевой экран и изменяет его поведение.

Note: Предыдущие версии FreeBSD содержали параметр IPFIREWALL_ACCT. Этот параметр устарел, поскольку код автоматически включает возможность учета.

10.8.4 Настройка IPFW

Настройка программного обеспечения IPFW выполняется с помощью утилиты ipfw(8). Синтаксис этой команды выглядит очень сложным, но он становится относительно прост как только вы поймете его структуру.

В настоящее время утилита использует четыре различных категории команд: добавление/удаление (addition/deletion), просмотр (listing), сброс (flushing) и очистка (clearing). Добавление/удаление используется для создания правил, определяющих как пакеты принимаются, отбрасываются и протоколируются. Просмотр используется для определения содержимого набора правил (называемого еще цепочкой) и счетчиков пакетов (учет). Сброс используется для удаления всех правил цепочки. Очистка используется для обнуления одного или нескольких счетчиков.

10.8.4.1 Изменение правил IPFW

Синтаксис этой формы команды такой:

ipfw [-N] команда [номер] действие [log] протокол адреса [параметры]

При использовании этой формы команды доступен один флаг:

-N

Разрешение адресов и имен сервисов при отображении.

Задаваемая команда может быть сокращена до более короткой уникальной формы. Существующие команды:

add

Добавление правила к списку фильтрации/учета

delete

Удаление правила из списка фильтрации/учета

Предыдущие версии IPFW использовали отдельные записи для фильтрации и учета пакетов. Современные версии учитывают пакеты для каждого правила.

Если указано значение номер, оно используется для помещения правила на определенную позицию в цепочке. Иначе правило помещается в конец цепочки с номером на 100 больше, чем у предыдущего правила (сюда не включается правило по умолчанию с номером 65535).

С параметром log соответствующие правила выводят информацию на системную консоль, если ядро собрано с опцией IPFIREWALL_VERBOSE.

Существующие действия:

reject

Отбросить пакет и отправить в адрес источникаICMP пакет, сообщающий о недостижимости хоста или порта.

allow

Пропустить пакет как обычно. (синонимы: pass, permit, и accept)

deny

Отбросить пакет. Источнику не выдается ICMP сообщение (как если бы пакет вообще не достиг цели).

count

Обновить счетчик пакета, но не применять по отношению к нему правила allow/deny. Поиск продолжится со следующего правила в цепочке.

Каждое действие может быть записано в виде более короткого уникального префикса.

Могут быть определены следующие протоколы:

all

Соответствует всем IP пакетам

icmp

Соответствует ICMP пакетам

tcp

Соответствует TCP пакетам

udp

Соответствует UDP пакетам

Поле адреса формируется так:

источник адрес/маска [порт] цель адрес/маска [порт] [via интерфейс]

Вы можете указать port только вместе с протоколами, поддерживающими порты (UDP и TCP).

Параметр via опционален и может содержать IP адрес или имя домена локального IP интерфейса, или имя интерфейса (например ed0), он настраивает правило на соответствие только тем пакетам, которые проходят через этот интерфейс. Номера интерфейсов могут быть заменены на опциональную маску. Например, ppp* будет соответствовать PPP интерфейсам ядра.

Синтаксис, используемый для указания адреса/маски:

адрес
или
адрес/маска-биты
или
адрес:маска-шаблон

Вместо IP адреса возможно указание существующего имени хоста. маска-биты это десятичный номер, указывающий количество бит, которые должны быть установлены в маске адреса. Например, 192.216.222.1/24 создаст маску, соответствующую всем адресам подсети класса C (в данном случае, 192.216.222). A valid hostname may be specified in place of the IP address. маска-шаблон это IP, который будет логически перемножен с заданным адресом. Ключевое слово any может использоваться для обозначения ``любого IP адреса''.

Номера портов указываются в следующем формате:

порт [,порт [,порт [...]]]

для указания одного порта или списка портов, или

порт-порт

для указания диапазона портов. Вы можете также комбинировать указание одного диапазона со списком портов, но диапазон всегда должен указываться первым.

Доступные параметры:

frag

Срабатывает, если пакет не является первым пакетом дейтаграммы.

in

Соответствует входящим пакетам.

out

Соответствует исходящим пакетам.

ipoptions spec

Срабатывает, если заголовок IP содержит перечисленный через запятую список параметров, указанных в spec. Поддерживаемые параметры IP: ssrr (strict source route), lsrr (loose source route), rr (record packet route), и ts (time stamp). Действие отдельных параметров может быть изменено путем указания префикса !.

established

Срабатывает, если пакет является частью уже установленного TCP соединения (т.е. если установлены биты RST или ACK). Вы можете поднять производительность межсетевого экрана, поместив правило с established близко к началу цепочки.

setup

Соответствует, если пакет является попыткой установки TCP соединения (установлен бит SYN, а бит ACK не установлен).

tcpflags флаги

Срабатывает, если заголовок TCP содержит список перечисленных через запятую флагов. Поддерживаемые флаги: fin, syn, rst, psh, ack, и urg. Действие правил по отдельным флагам может быть изменено указанием префикса !.

icmptypes типы

Срабатывает, если тип пакета ICMP находится в списке типы. Список может быть указан в виде любой комбинации диапазонов и/или отдельных типов, разделенных запятыми. Обычно используемые типы ICMP: 0 echo reply (ping reply), 3 destination unreachable, 5 redirect, 8 echo request (ping request), и 11 time exceeded (используется для обозначения истечения TTL, как с traceroute(8)).

10.8.4.2 Просмотр правил IPFW

Синтаксис этой формы команды такой:

ipfw [-a] [-c] [-d] [-e] [-t] [-N] [-S] list

Для этой формы команды существует семь флагов:

-a

Показывать значения счетчиков. Этот параметр - единственный путь для просмотра значений счетчиков.

-c

Просмотр правил в компактной форме.

-d

Показывать динамические правила в дополнение к статическим.

-e

Если определен параметр -d, показывать также динамические правила с истекшим сроком действия.

-t

Отображать последнее время срабатывание для каждого правила в цепочке. Этот список несовместим с синтаксисом, принимаемым ipfw(8).

-N

Попытаться разрешить заданные адреса и имена сервисов.

-S

Отображать набор, к которому принадлежит каждое правило. Если этот флаг не указан, заблокированные правила не будут отображены.

10.8.4.3 Сброс правил IPFW

Синтаксис для сброса правил:

ipfw flush

Все правила в цепочке будут удалены, за исключением правила по умолчанию, устанавливаемого ядром (номер 65535). Будьте осторожны при сбросе правил; правило, отбрасывающее пакеты по по умолчанию отключит систему от сети, пока разрешающие правила не будут добавлены в цепочку.

10.8.4.4 Очистка счетчиков пакетов IPFW

Синтаксис для очистки одного или нескольких счетчиков пакетов:

ipfw zero [index]

При использовании без аргумента номер будут очищены все счетчики пакетов. Если index указан, операция очистки применяется только к указанному правилу цепочки.

10.8.5 Примеры команд для ipfw

Следующая команда запретит все пакеты с хоста evil.crackers.org на telnet порт хоста nice.people.org:

# ipfw add deny tcp from evil.crackers.org to nice.people.org 23

Следующий пример запрещает и протоколирует весь TCP трафик из сети crackers.org (класса C) к компьютеру nice.people.org (на любой порт).

# ipfw add deny log tcp from evil.crackers.org/24 to nice.people.org

Если вы хотите запретить организацию X сессий в вашу сеть (часть сети класса C), следующая команда осуществит необходимую фильтрацию:

# ipfw add deny tcp from any to my.org/28 6000 setup

Для просмотра записей учета:

# ipfw -a list
или в краткой форме
# ipfw -a l

Вы можете также просмотреть время последнего срабатывания правил с помощью команды:

# ipfw -at l

10.8.6 Создание межсетевого экрана с фильтрацией пакетов

Note: Следующие рекомендации означают только одно: рекомендации. Требования к каждому межсетевому экрану различаются, и мы не можем рассказать вам, как создать межсетевой экран, отвечающий вашим потребностям.

При первоначальной настройке межсетевого экрана, до тестирования производительности и введения сервера в строй, настоятельно рекомендуется использовать версии команд с протоколированием и включить протоколирование в ядре. Это позволит вам быстро выявить проблемные области и исправить настройку без больших усилий. Даже после завершения первоначальной настройки рекомендуется использовать протоколирование для `deny', поскольку это позволяет отслеживать возможные атаки и изменять правила межсетевого экрана, если требования к нему изменятся.

Note: Если вы используете версию команды accept с протоколированием, будьте осторожны, поскольку она может создать большой объем протокольных данных. Будет произведено протоколирование каждого пакета, проходящего через межсетевой экран, поэтому большие объемы FTP/http и другого трафика существенно замедлят систему. Это также увеличит задержку таких пакетов, поскольку ядру требуется выполнить дополнительную работу перед тем, как пропустить пакет. syslogd также будет использовать гораздо больше времени процессора, поскольку он отправит все дополнительные данные на диск, и раздел /var/log может быть быстро заполнен.

Вам потребуется включить межсетевой экран в /etc/rc.conf.local или /etc/rc.conf. Соответствующая страница справочника разъясняет что именно необходимо сделать и содержит примеры готовых настроек. Если вы не используете предустановленную настройку, команда ipfw list может поместить текущий набор правил в файл, откуда он может быть помещен в стартовые файлы системы. Если вы не используете /etc/rc.conf.local или /etc/rc.conf для включения межсетевого экрана, важно убедиться в том, что он включается после настройки интерфейсов.

Далее необходимо определить, что именно делает ваш межсетевой экран! Это в основном зависит от того, насколько широкий доступ вы хотите открыть снаружи к вашей сети. Вот несколько общих правил:

Еще один список для проверки настроек межсетевого экрана доступен на CERT по адресу http://www.cert.org/tech_tips/packet_filtering.html

Как сказано выше, все эти правила всего лишь руководство. Вы сами сможете решить, какие правила фильтрации будут использованы в межсетевом экране. Мы не можем нести НИКАКОЙ ответственности в случае взлома вашей сети, даже если вы следовали советам, представленным выше.

10.8.7 Накладные расходы и оптимизация IPFW

Многие пользователи хотят знать, как сильно IPFW нагружает систему. Ответ в основном зависит от набора правил и скорости процессора. При небольшом наборе правил для большинства приложений, работающих в Ethernet ответ ``незначительно''. Для тех, кому нужен более точный ответ, и предназначен этот раздел.

Последующие измерения были выполнены с 2.2.5-STABLE на 486-66. (Хотя IPFW немного изменился в последующих релизах FreeBSD, скорость осталась приблизительно той же.) IPFW был модифицирован для измерения времени, затраченного ip_fw_chk, с выводом на консоль результата после каждого 1000-го пакета.

Были протестированы два набора из 1000 правил. Первый был составлен для демонстрации плохого набора правил путем повторения правила:

# ipfw add deny tcp from any to any 55555

Этот набор правил плох, поскольку большая часть правил IPFW не соответствует проверяемым пакетам (из-за номера порта). После 999-й итерации этого правила следует правило allow ip from any to any.

Второй набор правил был разработан для быстрейшей проверки каждого правила:

# ipfw add deny ip from 1.2.3.4 to 1.2.3.4

Не совпадающий IP адрес источника в правиле выше приведет к очень быстрой проверке этих правил. Как и прежде, 1000-е правило allow ip from any to any.

Затраты на проверку пакета в первом случае приблизительно 2.703 мс/пакет, или приблизительно 2.7 микросекунд на правило. Теоретический предел скорости проверки около 370 пакетов в секунду. Предполагая подключение через 10 Mbps Ethernet и размер пакета приблизительно 1500 байт, получаем только 55.5% использования пропускной способности.

Во втором случае каждый пакет был проверен приблизительно за 1.172 мс, или приблизительно 1.2 микросекунд на правило. Теоретический предел скорости проверки около 853 пакетов в секунду, что делает возможным полное использование пропускной способности 10 Mbps Ethernet.

Чрезмерное количество проверяемых правил и их вид не позволяет составить картину близкую к обычным условиям -- эти правила были использованы только для получения информации о времени проверки. Вот несколько рекомендаций, которые необходимо учесть для создания эффективного набора правил:

Этот, и другие документы, могут быть скачаны с ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

По вопросам связанными с FreeBSD, прочитайте документацию прежде чем писать в <questions@FreeBSD.org>.
По вопросам связанным с этой документацией, пишите <doc@FreeBSD.org>.
По вопросам связанным с русским переводом документации, пишите <frdp@FreeBSD.org.ua>.


Руководство FreeBSDPrevChapter 1 ВведениеNext

1.3 О Проекте FreeBSD

В следующей части рассказывается о том, что из себя представляет проект, включая краткую историю, цели проекта и модель разработки проекта.

1.3.1 Краткая история FreeBSD

Рассказывает Jordan K. Hubbard .

Проект FreeBSD возник в первой половине 1993 года, частично как результат развития ``Неофициального комплекта заплат к 386BSD (patchkit) '', последними 3-мя координаторами этого проекта: Nate Williams, Rod Grimes и мною.

Нашей главной задачей было привести промежуточный снэпшот 386BSD в порядок, исправив множество проблем, которые механизм patchkit не мог решить. Некоторое из вас возможно помнят раннее название этого проекта: ``386BSD 0.5'' или ``386BSD Interim''.

386BSD была операционной системой Била Джоилца, который на тот момент находился строго говоря, в состоянии полного пренебрежения к ней. Так как patchkit разрастался и его поддержание становилось более неудобным день от дня, мы пришли к единодушному соглашению что что-то нужно делать и решили помочь Билу путем предоставления промежуточных ``очистных'' снэпшотов. Эти планы были невежливо оборваны, когда Билл внезапно решил забрать его санкции у проекта без любых ясных комментариев, что должно быть сделано вместо этого.

Нам потребовалось немного времени, чтоб прийти к решению продолжать следовать той цели, даже без поддержки Билла, и мы приняли имя ``FreeBSD'' приобретенное Дэвидом Гринмэном. Наши начальные цели были установлены после консультаций с пользователями существовавшей системы, и как только стало понятно, что проект на пути к тому чтобы стать реальностью, я связался с Walnut Creek CDROM с мыслью о путях последующего улучшения каналов распространения FreeBSD для множества невезучих без доступа к Internet. Walnut Creek CDROM не только поддержал идею распространения FreeBSD на CD, но также пошел далеко вперед и предоставил проекту компьютер для работы и быстрый доступ к Internet. Без почти беспрецедентной веры Walnut Creek CDROM, в то время полностью неизвестный проект, вряд ли FreeBSD зашел далеко и так быстро, как сегодня.

Первым дистрибутивом, распространяемым как на CDROM, так и в сети, стал FreeBSD 1.0, выпущенный в декабре 1993 года. Эта версия была выполнена на основе ленты 4.3BSD-Lite (``Net/2'') из Калифорнийского Университета в Беркли, с многочисленными добавлениями из проекта 386BSD и Фонда Свободного Программного Обеспечения. Это был довольно внушительный успех для первого предложения, и мы закрепили его с выходом FreeBSD 1.1 RELEASE в мае 1994 года.

В это же время, на небе сгустились тучи в связи с назревающим скандалом между Novell и Калифорнийским Университетом, Беркли. Это был вяло-текущий судебный процесс о легальности версии Net/2 из Беркли. Обстоятельства тяжбы с Калифорнийским Университетом заключались в том, что большие куски Net/2 были ``загромождены'' кодом, права на который принадлежат Novell, которая в свою очередь, получила их (права на код) ранее от AT&T. Чтоб вернуть благославление Novell, Беркли выпустил версию 4.4BSD-Lite, который был объявлен полностью свободным ``незагроможденным'' и всем пользователям Net/2 было рекомендовано переключится на ее использование. Это также касалось FreeBSD, и проекту было дано время до конца Июля 1994 года для прекращения распространения его продукта базирующегося на Net/2. На этих условиях проекту было разрешено выпустить последний релиз до окончания срока, это был FreeBSD 1.1.5.1.

Тогда FreeBSD приступил к сложной задаче буквально полному изобретению себя из абсолютно новой и довольно неполной системы 4.4BSD-Lite. ``Lite'' был в прямом смысле light (легким) потому, что CSRG удалил большие куски кода необходимого для создания реально загружающейся системы (по причине различных лицензионных требований) и фактически порт 4.4BSD для платформы Intel был очень неполным. Проекту потребовалось время почти до Ноября 1994 года для того чтоб выполнить этот переход и на этом этапе FreeBSD 2.0 была опубликована в сети и на CDROM (в конце Декабря). Несмотря на множество недотесаных углов в этой версии она пользовалась значительным успехом и была продолжена более устойчивой и простой для установки FreeBSD 2.0.5 выпущенной в Июне 1995 года.

Мы выпустили FreeBSD 2.1.5 в августе 1996, и она стала достаточно популярной среди большого количества ISP и коммерческих производителей, но и другие версии из ветки 2.1-STABLE также заслуживают этого. Это была FreeBSD 2.1.7.1, вышедшая в феврале 1997 и завершившая главную нить разработки 2.1-STABLE. Сейчас в режиме поддержки, только безопасные расширения и прочие критические исправления ошибок включаются в эту ветку (RELENG_2_1_0).

FreeBSD 2.2 была выведена из разработки (``-CURRENT'') в ноябре 1996 как ветка RELENG_2_2, а первая полная версия (2.2.1) появилась в апреле 1997. Последующие версии ветки 2.2 появлялись летом и в конце '97, а последняя версия (2.2.8) вышла в ноябре 1998. Первая официальная версия 3.0 была подготовлена к выходу в октябре 1998, завершив развитие ветки 2.2

Третье ветвление произошло 20 января 1999 года, разделив ветки 4.0-CURRENT и 3.X-STABLE. Из ветки 3.X-STABLE были получены: 3.1 - 15 февраля 1999, 3.2 - 15 мая 1999, 3.3 - 16 сентября 1999, 3.4 - 20 декабря 1999, 3.5 - 24 Июня 2000, за которым последовал через несколько дней немного обновленный 3.5.1, который содержал несколько фиксов в области безопасности Kerberos. Это был последний релиз из ветки 3.x.

Последнее на данный момент ветвление было произведено 13 Марта, 2000 в результате которого появились ветки 4.X-STABLE и 5.0-CURRENT. Последний релиз из этой ветки на данный момент - это 5.2.1-RELEASE.

Текущая -stable ветка это 4.x-stable. 4.0-RELEASE был выпущен в Марте 2000 года, 4.1 в Июле 2000 и 4.2 в Ноябре 2000. Также планируется еще ряд выпусков из ветки 4.x-stable (RELENG_4) в 2001 году.

Долговременные разработки и проекты продолжаются в ветке 5.0-CURRENT, и по ходу разработки будут доступны снэпшот-релизы 5.0 на CDROM (и, конечно же, в сети) постоянно доступные с сервера снепшотов как промежуточные результаты.

1.3.2 Цели Проекта FreeBSD

Предоставлено Jordan K. Hubbard .

Целью Проекта FreeBSD является предоставление программного обеспечения, которое может быть использовано для любых целей и без дополнительных ограничений. Многие из нас вносят внушительные взносы в код (и проект) и совершенно не требуют за это небольшой финансовой компенсации сейчас и в последствии, и мы определенно не собираемся настаивать на этом. Мы верим, что первая и основная наша ``задача'' предоставить код для всех кому он необходим, и для любых целей, поэтому этот код становится все более и более распространен и предоставляет самые широкие выгоды. Это, я верю, является одной из основных целей Свободного Программного Обеспечения и той которую мы с энтузиазмом поддерживаем.

Тот код в нашем дереве исходных текстов, который подпадает под Общую Публичную Лицензию GNU (GPL) или Общую Публичную Лицензию Библиотек GNU (LGPL) предоставляется с дополнительными ограничениями, хотя и это только со стороны предоставления доступа, а не просто противоположность. По причине дополнительных сложностей, которые могут появится при коммерческом использовании GPL продуктов, мы предпочитаем ПО предоставленное под более свободной лицензией BSD, когда это возможно.

1.3.3 Модель Разработки FreeBSD

Предоставлено Satoshi Asami .

Разработка FreeBSD это очень открытый и гибкий процесс, FreeBSD литературно выражаясь создан из кода предоставленного сотнями людей со всего мира, в чем Вы можете убедится взглянув на список этих людей. Мы постоянно ищем новых разработчиков и новые идеи, и те кто заинтересованы в более тесном взаимодействии и хочет принять участие в проекте должны просто связаться с нами в Список рассылки FreeBSD, посвящённый техническим дискуссиям. Для тех кто желает использовать FreeBSD в различных областях для работы и не только доступен Список рассылки анонсов FreeBSD.

Полезными вещами, о которых стоит знать, если Вы интересуетесь FreeBSD и процессом разработки, независимо или тесно сотрудничая с нами, являются:

CVS Репозиторий

Главное дерево исходных текстов FreeBSD поддерживается с помощью CVS (Concurrent Version System), свободно доступной системой контроля исходных текстов, который поставляется встроенным в FreeBSD. Основной CVS репозиторий располагается на компьютере находящемся в городе Конкорд, Калифорния (США) откуда и распространяется на множество зеркал по всему миру. Дерево CVS, а также деревья -CURRENT и -STABLE, которые извлекаются из него, могут быть легко скопированы на Ваш локальный компьютер. Обратитесь к секции Синхронизация Вашего дерева исходных текстов для информации об этом процессе.

Список коммиттеров

Коммиттеры это люди, которые имеют доступ на запись к главному дереву CVS, и имеют право вносить изменения в главное дерево исходных текстов FreeBSD (термин ``коммиттер'' появился от названия одной из команд cvs(1) commit, которая используется для внесения изменений в CVS репозиторий). Лучший способ для предоставления Ваших изменений на рассмотрение коммиттеров - это использование команды send-pr(1), или если что-то произошло, то Вы можете достучаться до них посылкой письма по адресу .

CORE группа FreeBSD

CORE группа FreeBSD могла бы быть эквивалентом Совета Директоров, если бы Проект FreeBSD был бы компанией. Главная задача CORE группы создавать уверенность, что проект в целом в хорошем состоянии и движется в правильном направлении. Приглашение постоянных или ответственных разработчиков присоединится к группе коммиттеров одна из функций CORE группы, также как приглашение новых членов в CORE группу по мере того, как другие уходят. Нынешний состав группы был выбран из рядов комиттеров путем общего голосования в Октябре 2000 года. Выборы проходят каждые 2 года.

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

Note: Большинство членов CORE группы являются волонтерами и не получают никакой финансовой выгоды от участи в проекте, поэтому Вы не должны рассматривать их работу как ``гарантированную поддержку''. Аналогия с ``не очень аккуратна'' и вероятно гораздо корректнее сказать, что это люди которые отдали свои жизни в пользу FreeBSD вместо их лучшей жизни! ;-)

Внешняя помощь

Последней, но однозначно не единственной, наибольшей группой разработчиков являются пользователи, которые предоставляют комментарии и исправления ошибок нам на почти постоянной основе. Основной путь участвовать в не централизованной разработке это подписаться на Список рассылки FreeBSD, посвящённый техническим дискуссиям (смотри информацию о списках рассылки), где обсуждаются подобные вещи.

Список тех, кто предоставил что-либо попавшее в наше дерево исходных текстов, очень длинный и постоянно растет, поэтому почему бы Вам не присоединится к нему предоставив что-нибудь FreeBSD сегодня ?:-)

Предоставление кода не единственный способ помочь проекту; для более-менее полного списка вещей, которые необходимо сделать пожалуйста обратитесь к секции как помочь этого руководства.

В завершении, наша модель разработки организована как неточный набор концентрированных колец. Централизованная модель разработана для удобства пользователей FreeBSD, которые таким образом получают простую систему контроля за одной центральной базой кода, и позволяет не оставить за бортом проекта потенциальных помошников! Мы желаем предоставить стабильную операционную систему с большим количеством когерентных прикладных программ, которые пользователи смогут легко установить и использовать, и эта модель работает очень хорошо для выполнения всего этого.

Мы все приглашаем тех кто хотел бы присоединится к нам, как разработчик FreeBSD выделить немного времени и привнести свой взнос в постоянный успех FreeBSD!

1.3.4 Текущая Версия FreeBSD

FreeBSD - это свободно доступная, базирующаяся на 4.4BSD-Lite релизе для компьютерных систем основанных на Intel i386, i486, Pentium, Pentium Pro, Celeron, Pentium II, Pentium III (или совместимых) и DEC Alpha. В основном она базируется на программном обеспечении от группы CSRG, U.C. Berkley, с некоторым дополнениями из NetBSD, OpenBSD, 386BSD и Free Software Foundation.

Со времен FreeBSD версии 2.0 в конце 94, производительность, возможности, и стабильность FreeBSD выросла многократно. Самое большое изменение это полное обновление системы виртуальной памяти с объединенным VM/файловым буферизированым кэшем, который не только увеличивает производительность, но и уменьшает количество используемой памяти, делая 5MB конфигурацию более доступным минимумом. Другие улучшения включают в себя полную поддержку NIS (клиент и сервер), поддержка транзакций TCP, поддержка "звонка-по-запросу" в PPP, встроенная поддержка DHCP, улучшенная подсистема SCSI, поддержка ISDN, ATM, FDDI, Fast и Gigabit Ethernet (1000Mbit) адаптеров, улучшенная поддержка последних версий контролеров Adaptec и сотни исправленных ошибок.

Мы также приняли комментарии и предложения множества наших пользователей близко к сердцу и попытались предоставить, то что мы считаем более нормальным и простым для понимания инсталляционным процессом. Ваши отзывы об этом (постоянно развивающемся) процессе особенно приветствуются!

В дополнение к базовой системе, FreeBSD предоставляет коллекцию портированого ПО включающую в себя тысячи популярных программ. На середину ноября 2000 года она включала в себя почти 4000 портов! В коллекцию входят множество программ от http (WWW) серверов, до игр, языков программирования, текстовых редакторов и все что между ними. Полная коллекция портов требует приблизительно 100Мб дискового пространства, потому что порт представляет собой ``дельты'' от оригинальных исходных текстов. Это сильно упрощает нам процесс обновления портов, и очень сильно уменьшает количество занимаемого дискового места по сравнению со старой 1.0 коллекцией портов. Для того чтоб скомпилировать и проинсталлировать программу которую Вы хотите, Вам необходимо всего лишь войти в директорию порта программы, набрать make install и дать системе сделать все остальное. Исходные тексты для каждого порта, который Вы инсталлируете отыскиваются динамически с CDROM'a или локального FTP сервера, поэтому Вам нужно только дисковое пространство для сборки тех портов каких Вы хотите. Почти каждый порт также предоставляется как пред-компилированый ``пакадж'', который может быть проинсталлирован с помощью простой команды (pkg_add) теми кто не хочет компилировать порты из исходных текстов.

Множество дополнительных документов которые Вы можете найти очень полезными в процессе инсталляции и использования FreeBSD могут быть найдены в директории /usr/share/doc на любой машине работающей под управлением FreeBSD 2.1 и выше. Вы можете в просматривать локально установленные документы с помощью любого браузера понимающего HTML используя следующие URLи:

Справочник FreeBSD

file:/usr/share/doc/handbook/index.html

ЧаВО о FreeBSD (Часто задаваемые Вопросы и Ответы)

file:/usr/share/doc/faq/index.html

Вы также можете посмотреть главные (и наиболее часто обновляемые) копии на http://www.FreeBSD.org/.

Этот, и другие документы, могут быть скачаны с ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

По вопросам связанными с FreeBSD, прочитайте документацию прежде чем писать в <questions@FreeBSD.org>.
По вопросам связанным с этой документацией, пишите <doc@FreeBSD.org>.
По вопросам связанным с русским переводом документации, пишите <frdp@FreeBSD.org.ua>.


Руководство FreeBSD
Prev Chapter 2. Инсталляция FreeBSD Next

2.2. Инструкция по установке

Следующие секции помогут Вам подготовиться и собственно установить FreeBSD. Если Вы считаете, что мы что-либо упустили, сообщите нам об этом, послав email на Список рассылки Проекта Документации FreeBSD .

2.2.1. Подготовка к инсталляции

Ниже перечислены некоторые моменты, которые полезно иметь ввиду при установке (для каждого типа инсталляции).

В первую очередь Вы должны удостовериться, что Ваше оборудование поддерживается FreeBSD. В этом Вам поможет список поддерживаемого оборудования. Если у Вас есть какие-либо "необычные" платы расширения, типа SCSI контроллеров, сетевых и звуковых плат и т.д., хорошо бы составить список используемых ими ресурсов (IRQ и адресов портов ввода-вывода).

2.2.1.1. Создание загрузочных дискет

Перед тем как продолжить, прочтите информацию об образах загрузочных дискет. Чтобы создать инсталляционные дискеты, сделайте следующее:

Прежде всего скачайте файлы с образами загрузочных дискет, например, отсюда или с зеркала, который ближе всего к Вам.

  • Если Вы хотите инсталлировать с MS-DOS раздела, то сначала скачайте программу fdimage.exe (при установке с компакт-диска она лежит в директории tools\) и запустите ее со следующими параметрами:

        E:\> tools\fdimage floppies\kern.flp a:
    

    Программа fdimage отформатирует дискету в дисководе A: и затем перенесет на нее kern.flp (предполагается, что Вы находитесь непосредственно в директории в дистрибутивом FreeBSD и образа дискет лежат в floppies). Обратите внимание, что Вы не можете просто скопировать kern.flp на отформатированную дискету средствами DOS, так как это не обычный файл в понятии файловой системы FAT.

  • Если же Вы используете UNIX-подобную операционную систему для создания загрузочных дискет, сделайте следующее:

        # dd if=kern.flp of=disk_device bs=1k
    

    disk_device это файл устройства в директории /dev соответствующий дисководу. Если система FreeBSD, то /dev/rfd0 для диска A: и /dev/rfd1 для диска B:.

Убедитесь, что диск с kern.flp вставлен в дисковод и перезагрузите компьютер. Через некоторое время Вам нужно будет вставить дискету с mfsroot.flp, после чего можно будет продолжить процедуру инсталляции.

2.2.1.2. Прежде чем инсталлировать с компакт-дисков

Если Ваш CDROM не поддерживается (по крайней мере на стадии инсталляции), то перейдите к секции Подготовка к инсталляции из-под MS-DOS.

Если Вы устанавливаете FreeBSD с компакт-дисков, распространяемых Walnut Creek CDROM's, то никаких специальных действий перед непосредственно инсталляцией производить не придется (диски других производителей тоже должны работать, однако мы не можем этого гарантировать, так как наверняка не известно, как образом они были созданы). Можно сразу перейти к установке с компакт-диска из-под MS-DOS, запустив install.bat, или приготовить загрузочные дискеты посредством команды makeflp.bat.

Если же Ваша система поддерживает загрузку с компакт-дисков, и компакт-диск является загрузочным в соответствии со стандартом El Torito (обратите внимание, что многие старые системы НЕ поддерживают загрузку с CDROM), то просто вставьте первый из набора дисков с FreeBSD в привод CDROM и перезагрузите Ваш компьютер. Вы попадете в меню инсталляции непосредственно с компакт-диска.

Если Вы проводите инсталляцию с MS-DOS раздела жесткого диска, и у Вас есть соответствующие драйверы для Вашего CDROM, запустите командный файл install.bat с компакт-диска, чтобы начать процедуру инсталляции из-под DOS.

Note: Обратите внимание, что все вышеперечисленное нужно выполнять из-под "чистого" DOS; DOS-сессии Windows и прочие эмуляторы не подойдут.

Самым простым здесь будет набрать команду view (под DOS). В меню Вы увидите все возможные опции установки.

Если Вы собираетесь создавать загрузочные диски под UNIX-подобной системой, просмотрите примеры в секции Создание загрузочных дискет .

В любом случае, после того, как Вы загрузились либо с дискет, либо из-под DOS, выберите CDROM в качестве носителя дистрибутива и продолжайте инсталляцию. Больше Вам ничего не потребуется.

После того, как инсталляция полностью завершена и Вы перегрузили компьютер (на этот раз с жесткого диска, где у Вас установлена FreeBSD), Вы можете в любое время примонтировать CDROM, набрав:

    # mount /cdrom

Прежде чем вытащить компакт-диск из привода CDROM, его необходимо отмонтировать. Это делается при помощи следующей команды:

    # umount /cdrom

Просто так вытащить диск из привода нельзя!

Note: Перед тем как начать установку, убедитесь, что компакт-диск вставлен, и инсталлятор правильно определил Ваш привод CDROM, даже если Вы не устанавливаете FreeBSD непосредственно с компакт диска, но хотите, чтобы CDROM поддерживался в базовой конфигурации системы во время инсталляции.

Наконец, если Вы хотите, чтобы другие люди имели возможность устанавливать FreeBSD по FTP с Вашего компакт-диска, Вам нужно будет (после того, как инсталляция завершена) добавить следующую строчку в файл учетных записей пользователей (используя команду vipw):

    ftp:*:99:99::0:0:FTP:/cdrom:/nonexistent

Теперь любой, кто имеет доступ к сети, может выбрать установку по FTP и набрать ftp://ваша машина, выбрав "Другой (Other)" в качестве FTP сервера при инсталляции.

2.2.1.3. Прежде чем инсталлировать с дискет

Если Вам требуется установить FreeBSD с дискет (чего мы Вам очень НЕ рекомендуем делать), либо по той причине, что у Вас неподдерживаемое оборудование, либо потому, что Вам просто необходимо идти сложным путем, придется сначала соответствующим образом приготовить дискеты для инсталляции.

Как минимум, Вам понадобится столько 1.44MB или 1.2MB дискет, чтобы вместить все файлы в директории bin. Все дискеты должны быть отформатированы стандартной командой DOS FORMAT. Если Вы используете Windows, можно воспользоваться опцией format из Windows File Manager.

НЕ доверяйте заводскому форматированию дискет. Лучше отформатируйте их сами, чтобы быть уверенными в том, что они не дефектные. Многие проблемы, о которых нам сообщали наши пользователи, возникали из-за неправильно отформатированных дискет.

Даже если Вы создаете дискеты на компьютере под управлением FreeBSD, стоит их переформатировать. Правда, в этом случае Вам не придется размечать их под FAT (файловую систему DOS). Можно создать на них файловую систему UFS (стандартную для FreeBSD) при помощи команд disklabel и newfs, например, так (для 3.5" 1.44MB диска):

    # fdformat -f 1440 fd0.1440
    # disklabel -w -r fd0.1440 floppy3
    # newfs -t 2 -u 18 -l 1 -i 65536 /dev/rfd0

Note: Для 5.25" 1.2MB дисков, нужно заменить fd0.1440 на fd0.1200 и floppy3 на floppy5 в предыдущем примере.

Теперь их можно примонтировать и использовать как любую другую файловую систему.

После того, как Вы отформатировали дискеты, необходимо перенести на них соответствующие файлы. Дистрибутив разбит на множество кусочков, каждый размером, достаточным для того, чтобы пять таких кусочков свободно поместились на обычную 1.44MB дискету. Таким образом нужно скопировать все файлы дистрибутива, чтобы каждый файл лежал в соответствующей директории на дискете, например a:\bin\bin.aa, a:\bin\bin.ab и так далее.

Теперь во время установки в секции Media нужно будет выбрать "Floppy".

2.2.1.4. Прежде чем инсталлировать из-под MS-DOS

Для установки с MS-DOS раздела жесткого диска нужно создать директорию (например c:\FreeBSD) и скопировать туда дистрибутив (сохранив структуру каталогов), например, командой DOS xcopy. Если Вы копируете дистрибутив FreeBSD с компакт-диска:

    C:\> md c:\FreeBSD
    C:\> xcopy /s e:\bin c:\FreeBSD\bin\
    C:\> xcopy /s e:\manpages c:\FreeBSD\manpages\

Предполагается что на диске C: у Вас достаточно свободного места, а диск E: соответствует Вашему приводу CDROM.

Имейте ввиду, что на диске должно быть достаточно места и каждая дистрибуция должна лежать в своей поддиректории в созданном Вами каталоге; для минимальной установки требуется только дистрибуция BIN.

2.2.1.5. Прежде чем инсталлировать с QIC/SCSI ленты

Установка с магнитной ленты является одним из самых легких способов поставить FreeBSD. Инсталлятор ожидает, что файлы дистрибутива просто за'tar'ены на ленту, например, таким образом:

    # cd /freebsd/distdir
    # tar cvf /dev/rwt0 dist1 ... dist2

Перед началом инсталляции убедитесь, что у Вас есть достаточно свободного места в какой-нибудь временной директории (у Вас будет возможность ее выбрать), чтобы вместить все содержимое магнитной ленты. Так как доступ к информации на ленте последовательный, этот метод требует значительного свободного пространства, в зависимости от объема информации на ленте.

Note: Убедитесь, что лента вставлена в привод до того, как Вы начнете грузиться с дискет, иначе инсталлятор может ее не продетектить.

2.2.1.6. Прежде чем инсталлировать по сети

Существует три типа сетевой установки: через последовательный порт (по протоколам SLIP или PPP), через параллельный порт (PLIP (laplink кабель)), или Ethernet (через стандартный ethernet контроллер (включая некоторые PCMCIA устройства)).

SLIP интерфейс достаточно примитивный и используется в основном для соединения через последовательные каналы, например между портативными компьютерами. Вообще, лучше использовать PPP, так как это более совершенный протокол (в частности, SLIP не поддерживает дозванивание).

Если Вы пользуетесь модемом, то скорее всего Вашим выбором будет PPP. Убедитесь, что у Вас есть вся информация, предоставленная Вашим провайдером, так как она Вам понадобится на самой раннем этапе установки. Вам также необходимо знать, как дозваниваться до Вашего провайдера при помощи "AT-команд", специфичных для Вашего модема, так как PPP знает как эмулировать только самый простой терминал. Если Вы используете PAP или CHAP, Вам нужно будет набрать необходимые команды set authname и set authkey, прежде чем воспользоваться командой term. Обратитесь к соответствующему руководству по ppp и FAQ за дополнительной информацией. Если у Вас возникли проблемы, можно воспользоваться командой set log local ....

Если Ваш компьютер подсоединен к другой машине под управлением FreeBSD (2.0-R или более поздней), Вы можете выбрать установку через "laplink" кабель для параллельного порта. Скорость передачи данных в этом случае значительно выше, чем у обычного последовательного соединения, и может достигать 50 килобайт в секунду, что заметно ускоряет процесс установки.

Но самой высокой скорости можно достичь, используя ethernet адаптер. FreeBSD поддерживает большинство популярных PC ethernet карт, полный перечень которых (с указанием требуемых параметров) можно найти в списке поддерживаемого оборудования. Если у Вас одна из PCMCIA ethernet карточек, которая поддерживается FreeBSD, проследите, чтобы она была вставлена прежде чем Вы включите свой компьютер. К сожалению, в настоящее время FreeBSD не поддерживает вставку PCMCIA карточек "на лету".

Вам также потребуется знать сетевой IP адрес, маску подсети и доменное имя Вашего компьютера. Если Вы пользуетесь PPP-соединением, то скорее всего, IP адрес Вам выделяется провайдером динамически. Ваш системный администратор должен сообщить Вам всю необходимую информацию. Если Вы пользуетесь доменными именами вместо IP адресов, также потребуется адрес DNS сервера (обычно это сетевой адрес Вашего провайдера). Мы настоятельно рекомендуем Вам выяснить всю необходимую информацию у Вашего системного администратора перед тем, как начинать процесс инсталляции.

2.2.1.6.1. Прежде чем инсталлировать по NFS

NFS инсталляция тоже довольно простая. Просто скопируйте файлы дистрибутива FreeBSD на любой компьютер, способный быть NFS сервером, и выберите тип установки по NFS, указав в качестве сервера машину, где лежит дистрибутив FreeBSD.

Если NFS сервер работает только через "привелегированный порт" (это верно по умолчанию для рабочих станций Sun), Вам понадобится указать это в меню Опции перед тем, как продолжить инсталляцию.

Если у Вас не очень качественная сетевая карточка, и скорость передачи данных очень низкая, установите соответствующую опцию.

Имейте ввиду, что для NFS инсталляции требуется, чтобы сервер позволял монтировать подкаталоги, например, если Ваш дистрибутив FreeBSD расположен в:ziggy:/usr/archive/stuff/FreeBSD, то хост ziggy должен позволять монтировать /usr/archive/stuff/FreeBSD, а не только /usr или /usr/archive/stuff.

В FreeBSD эта возможность контролируется опцией -alldirs в конфигурационном файле /etc/exports, В других системах это может быть не так. Если сервер Вам отвечает "permission denied", то скорее всего данная возможность отключена или NFS неправильно сконфигурирована.

2.2.1.6.2. Прежде чем инсталлировать по FTP

Установить по FTP можно с любого зеркала, содержащего одну из последних версий FreeBSD. Вы можете выбрать сервер из списка официальных зеркал, расположенных в разных точках планеты.

Если Вы не хотите устанавливать FreeBSD ни с одного из перечисленных серверов, или в случая, когда Ваш DNS сервер неправильно сконфигурирован, у Вас есть возможность явно указать инсталлятору (в меню "Другой (Other)") имя или IP адрес (в случае отсутствия DNS сервера) FTP сервера, где лежит дистрибутив FreeBSD:

    ftp://165.113.121.81/pub/FreeBSD/4.0-RELEASE

Существуют два типа установки по FTP, из которых Вы можете выбрать: активный или пассивный FTP.

Активный FTP

Для всех FTP транзакций используйте "Активный" режим. Этот метод на позволяет устанавливать соединения через брандмауэры, но зато можно работать с FTP серверами, которые не поддерживают пассивный режим. Если соединение не устанавливается при работе в пассивном режиме (по умолчанию), попробуйте активный режим!

Пассивный FTP

Для всех FTP транзакций используйте "Пассивный" режим. В этом случае можно работать через брандмауэры, которые не разрешают соединения на случайные порты.

Note: Заметьте, что активный и пассивный режимы это не то же самое, что и соединение через "proxy", когда прокси сервер слушает и перенаправляет FTP запросы!

При использовании прокси, обычно нужно указать имя FTP сервера как часть адреса, передаваемого прокси, после символа "@". Работа с FTP сервером будет выглядеть точно также, как если бы Вы "общались" с ним напрямую. Например, если дистрибутив FreeBSD лежит на ftp.FreeBSD.org, и Вы используете прокси сервер foo.bar.com, порт 1024.

В этом случае, в меню опций укажите пользователя FTP ftp@ftp.FreeBSD.org с Вашим email адресом в качестве пароля. Укажите носитель: FTP (или пассивный FTP, если это поддерживается прокси сервером) и адрес сервера ftp://foo.bar.com:1234/pub/FreeBSD.

Директория /pub/FreeBSD на ftp.FreeBSD.org видна как директория на foo.bar.com, и когда Вы указываете в качестве сервера foo.bar.com, инсталлятор обращается к нему, который в свою очередь скачивает файлы с ftp.FreeBSD.org.

2.2.2. Установка FreeBSD

Теперь, когда все приготовления завершены, можно начинать установку FreeBSD!

Несмотря на то, что Вы не должны столкнуться с какими-либо неприятностями, случается всякое. В таких ситуациях бывает полезно вернуться на несколько шагов назад и внимательно проанализировать Ваши действия (возможно, заглядывая в данное руководство). Если у Вас проблемы с оборудованием, или FreeBSD вообще отказываться загружаться, обратитесь к документации на загрузочной дискете.

Инсталляционные дискеты FreeBSD содержат всю необходимую документацию, которая может понадобиться Вам в процессе установки. Если Вам кажется, что чего-то не хватает, дайте нам знать, что и каким образом надо улучшать. Посылайте свои замечания и пожелания на Список рассылки Проекта Документации FreeBSD . Мы стремимся сделать инсталлятор (программу /stand/sysinstall) достаточно документированным, чтобы отпала необходимость в какой-либо дополнительной "литературе" Возможно, нам потребуется некоторое время, чтобы осуществить задуманное, но в любом случае, мы не собираемся отказываться от этой цели :-)

Возможно, Вам поможет следующая "типичная последовательность установки":

  1. Загрузитесь с kern.flp дискеты и, когда увидите приглашение вставить дискету mfsroot.flp, вставьте вторую дискету и нажмите "ввод". По истечении некоторого промежутка времени (от 30 секунд до 3-х минут, в зависимости от Вашей конфигурации) Вы увидите меню с основными опциями. Если у Вас по какой-либо причине не получилось загрузиться, обратитесь к секции "Вопросы и ответы".

  2. Нажмите клавишу F1. Вы увидите инструкцию с описанием основных средств навигации и системы меню вообще. Если Вам раньше не приходилось устанавливать FreeBSD, пожалуйста, внимательно прочитайте инструкцию.

  3. В меню Опции (Options) можно изменить некоторые специфические настройки в соответствии с Вашими предпочтениями.

  4. Выберите Простой (Novice), Специальный (Custom) или Быстрый (Express) тип установки, в зависимости от того, хотите ли Вы получать подсказки по ходу инсталляции, иметь полный контроль над происходящим, или как можно скорее получить работоспособную систему. Если Вы впервые имеете дело с FreeBSD, мы рекомендуем Вам первый вариант.

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


Руководство FreeBSD
Prev Chapter 2. Инсталляция FreeBSD Next

2.3. Поддерживаемое оборудование

FreeBSD в настоящее время поддерживает широкий спектр систем с ISA, VLB, EISA и PCI шинами, начиная с 386SX и заканчивая машинами класса PentiumPro (однако 386SX не рекомендуется). Также поддерживаются большинство IDE и ESDI дисковых систем, различные SCSI контроллеры, сетевые адаптеры и проч.

Для нормальной работы FreeBSD рекомендуется иметь по крайней мере 8 мегабайт оперативной памяти, однако Вам может потребоваться 16 и более мегабайт в зависимости от Вашего оборудования и конфигурации.

Ниже перечислены всевозможные устройства, которые поддерживаются FreeBSD. Весьма вероятно, что оборудование, явно не указанное с этом списке, также будет работать; в список включено лишь то "железо", которое гарантированно поддерживается.

2.3.1. Дисковые контроллеры

Для всех поддерживаемых SCSI контроллеров, полностью функционирует любая SCSI-I и SCSI-II периферия, включая жесткие диски, оптические диски, ленточные накопители (DAT и 8mm Exabyte), сменники носителей, процессорные устройства и CDROM приводы. К WORM устройствам, поддерживающим команды CDROM, можно получить доступ в режиме "только для чтения" посредством драйвера CDROM. Поддержка записи для WORM/CD-R/CD-RW устройств обеспечивается программой cdrecord, которую можно найти в дереве портов.

Следующие типы CD-ROM систем поддерживаются в настоящее время:

Нижеперечисленные драйверы поддерживались для старой SCSI подсистемы, по ПОКА ЕЩЕ НЕ поддерживаются для новой CAM SCSI подсистемы:

Не сопровождаемые более драйверы; могут работать или не работать на Вашей системе:

2.3.2. Сетевые карты

2.3.3. USB периферия

FreeBSD поддерживает довольно широкий список USB оборудования. Так как (внутри определенного класса) USB устройства достаточно похожи, Ваше оборудование скорее всего поддерживается, даже если оно явно не перечислено ниже.

Чипсеты материнских плат

PCI plug-in USB хост-контроллеры

Некоторые специфические USB устройства:

2.3.4. ISDN (Европейский протокол DSS1 [Q.921/Q.931])

2.3.5. Прочие устройства

FreeBSD в настоящее время НЕ поддерживает шину IBM microchannel (MCA).


Руководство FreeBSDPrevChapter 2 Установка FreeBSDNext

2.11 Решение проблем

Следующий раздел описывает основные проблемы при установке, о о которых обычно сообщают пользователи. Здесь также несколько вопросов и ответов от тех, кто хочет настроить двойную загрузку FreeBSD и MS-DOS®.

2.11.1 Что делать если что-то идет не так

По причине различных ограничений архитектуры PC, невозможно протестировать устройства достоверно на 100%, тем не менее, есть несколько вещей, которые вы можете сделать, если тестирование завершится неудачно.

Сверьтесь со списком поддерживаемого оборудованию для вашей версии FreeBSD, чтобы убедиться, что ваше оборудование поддерживается.

Если оборудование поддерживается, но все же происходят зависания или вы встретились с другими проблемами, перегрузите компьютер, и когда появится опция визуальной настройки ядра, выберите ее. Это позволит вам просмотреть список оборудования и дать системе информацию о настройке. Ядро на загрузочном диске настроено в предположении, что у большинства аппаратных устройств IRQ, адреса ввода-вывода и каналы DMA установлены производителем к значениям по умолчанию. Если оборудование было перенастроено, вам потребуется использовать редактор настроек, чтобы сообщить FreeBSD где что искать.

Возможно также, что тестирование устройства, которого нет, приведет позже к ошибке тестирования существующего устройства. В этом случае тестирование конфликтующего драйвера (драйверов) должно быть запрещено.

Note: Некоторые проблемы установки можно обойти или уменьшить, обновив встроенное программное обеспечение различных компонент оборудования, особенно материнской платы. Встроенное программное обеспечение также называют BIOS и у большинства производителей компьютеров или материнских плат есть вебсайты, где можно найти обновления и информацию об обновлениях.

Большинство производителей настоятельно советуют не обновлять BIOS пока не возникнет серьезной необходимости, например появление критически важных обновлений. Процесс обновления может пойти неверно, что приведет к неустранимому повреждению микросхемы BIOS.

Warning: Не выключайте драйвера, которые понадобятся вам во время установки, такие как экран (sc0). Если после выхода из редактора конфигурации установка загадочно зависает или прерывается, возможно вы удалили или изменили что-то, что не надо было трогать. Перегрузитесь и попробуйте еще раз.

В режиме настройки вы можете:

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

2.11.2 Работа с существующими разделами MS-DOS®

Многие пользователи устанавливают FreeBSD на PC с установленной операционной системой Microsoft®. Для этих целей в FreeBSD есть утилита, называемая FIPS. Ее можно найти в каталоге tools установочного CD-ROM или загрузить с одного из множества зеркал FreeBSD.

Утилита FIPS позволит вам разделить существующий раздел MS-DOS на две части, сохранив имеющиеся данные, и сделать установку на второй свободный раздел. Вам потребуется сначала дефрагментировать раздел MS-DOS с помощью Windows® утилиты Disk Defragmenter (запустите Explorer, кликните правой клавишей мыши на жестком диске и выберите дефрагментацию диска), или используйте Norton Disk Tools. Затем запустите утилиту FIPS. Она запросит необходимую информацию, следуйте инструкциям на экране. Затем можете перегрузиться и установить FreeBSD на новый свободный слайс. Смотрите меню Distributions для определения размера необходимого для выбранного типа установки свободного пространства.

Есть также очень полезная программа PartitionMagic® от PowerQuest (http://www.powerquest.com). Эта программа гораздо более функциональна, чем FIPS, и очень рекомендуется, если вы планируете часто добавлять/убирать операционные системы. Она стоит денег, и если вы планируете установить FreeBSD и оставить ее, вам возможно отлично подойдет FIPS.

2.11.3 Использование файловых систем MS-DOS и Windows®

В настоящее время, FreeBSD не поддерживает файловые системы, сжатые с помощью программы Double Space™. Поэтому файловая система должна быть разжата, чтобы FreeBSD смогла получить доступ к данным. Это может быть сделано с помощью приложения Compression Agent, находящегося в меню Пуск> Программы > Системные.

FreeBSD поддерживает файловые системы MS-DOS. Для этого потребуется использовать команду mount_msdos(8) (в FreeBSD 5.X, это mount_msdosfs(8)) с необходимыми параметрами. Наиболее распространенный способ использования:

# mount_msdos /dev/ad0s1 /mnt

В этом примере файловая система MS-DOS расположена на первом разделе первого жесткого диска. Ваша конфигурация может быть другой, проверьте вывод команд dmesg и mount. Они должны предоставить достаточно информации для определения названий разделов.

Note: Расширенные разделы MS-DOS обычно располагаются после разделов FreeBSD. Другими словами, номер слайса может быть больше, чем используемый FreeBSD is using. Например, первый раздел MS-DOS может быть /dev/ad0s1, раздел FreeBSD /dev/ad0s2, а расширенный раздел MS-DOS /dev/ad0s3. Некоторых это иногда запутывает на первых порах.

Разделы NTFS также можно смонтировать похожим способом, используя команду mount_ntfs(8).

2.11.4 Вопросы и ответы пользователей Alpha

Этот раздел отвечает на некоторые обычно задаваемые вопросы об установке FreeBSD на Alpha.

2.11.4.1. Могу я загрузиться с ARC или с консоли Alpha BIOS?
2.11.4.2. Помогите, у меня нет места! Должен ли я сначала все удалить?
2.11.4.3. Могу ли я смонтировать файловые системы Compaq Tru64 или VMS?

2.11.4.1. Могу я загрузиться с ARC или с консоли Alpha BIOS?

Нет. FreeBSD, как и Compaq Tru64 и VMS, может загружаться только с консоли SRM.

2.11.4.2. Помогите, у меня нет места! Должен ли я сначала все удалить?

К сожалению, да.

2.11.4.3. Могу ли я смонтировать файловые системы Compaq Tru64 или VMS?

В настоящее время нет.

Этот, и другие документы, могут быть скачаны с ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

По вопросам связанными с FreeBSD, прочитайте документацию прежде чем писать в <questions@FreeBSD.org>.
По вопросам связанным с этой документацией, пишите <doc@FreeBSD.org>.
По вопросам связанным с русским переводом документации, пишите <frdp@FreeBSD.org.ua>.


Руководство FreeBSDPrevNext

Chapter 2 Установка FreeBSD

Table of Contents
2.1 Краткий обзор
2.2 Перед установкой
2.3 Начало установки
2.4 Введение в Sysinstall
2.5 Выделение дискового пространства
2.6 Выбор устанавливаемых компонентов
2.7 Выбор источника для установки
2.8 Подтверждение установки
2.9 После установки
2.10 Поддерживаемое оборудование
2.11 Решение проблем
2.12 Расширенное руководство по установке
2.13 Подготовка собственного источника установки
Реструктурировал, исправил и частично переписал Jim Mock. Обзор sysinstall, скриншоты и общее руководство Randy Pratt.

2.1 Краткий обзор

FreeBSD поставляется простой в использовании текстовой программой установки sysinstall. Это основная программа установки FreeBSD, хотя поставщики могут предлагать свои программы. В этой главе описывается использование sysinstall для установки FreeBSD.

Прочтя эту главу, вы узнаете:

Перед прочтением этой главы вам потребуется:

Note: Как правило, эти инструкции по установке написаны для i386™ (``PC совместимых'') компьютеров. Когда это возможно, приводятся инструкции, специфичные для других платформ (например, Alpha). Хотя это руководство поддерживается в актуальном состоянии настолько, насколько это возможно, вы можете обнаружить небольшие различия между программой установки и тем, что показано здесь. Предполагается, что вы будете использовать эту главу в качестве общего руководства, а не как пошаговую инструкцию по установке.

Этот, и другие документы, могут быть скачаны с ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

По вопросам связанными с FreeBSD, прочитайте документацию прежде чем писать в <questions@FreeBSD.org>.
По вопросам связанным с этой документацией, пишите <doc@FreeBSD.org>.
По вопросам связанным с русским переводом документации, пишите <frdp@FreeBSD.org.ua>.


Руководство FreeBSDPrevNext

Chapter 1 Введение

Table of Contents
1.1 Краткий обзор
1.2 Добро пожаловать во FreeBSD!
1.3 О Проекте FreeBSD

Исправил, реорганизовал и частично переписал Jim Mock , 17 января 2000.

1.1 Краткий обзор

Мы благодарим Вас за Ваш интерес к FreeBSD! Следующая глава расскажет Вам о некоторых аспектах проекта FreeBSD, таких как история, цели, модель разработки, и прочее.

FreeBSD, базирующаяся на операционной системе 4.4BSD-Lite, выпускается для архитектуры Intel (x86), а также для систем на базе DEC Alpha. Портирование на другие платформы также ведётся. Для краткого обзора FreeBSD, взгляните на следующую главу. Вы также можете прочитать об истории FreeBSD, и о текущей версии. Если вы хотите чем-нибудь помочь (кодом, оборудованием, чем-то другим) проекту, смотрите главу Содействие FreeBSD.

Этот, и другие документы, могут быть скачаны с ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

По вопросам связанными с FreeBSD, прочитайте документацию прежде чем писать в <questions@FreeBSD.org>.
По вопросам связанным с этой документацией, пишите <doc@FreeBSD.org>.
По вопросам связанным с русским переводом документации, пишите <frdp@FreeBSD.org.ua>.


Руководство FreeBSDPrevChapter 10 БезопасностьNext

10.10 VPN over IPsec *

Written by Nik Clayton.

Этот раздел еще не переведен.

Этот, и другие документы, могут быть скачаны с ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

По вопросам связанными с FreeBSD, прочитайте документацию прежде чем писать в <questions@FreeBSD.org>.
По вопросам связанным с этой документацией, пишите <doc@FreeBSD.org>.
По вопросам связанным с русским переводом документации, пишите <frdp@FreeBSD.org.ua>.


Руководство FreeBSD
Prev Chapter 10. Сложные вопросы работы в сети Next

10.6. ISDN

Последний раз внес изменения Bill Lloyd .

Полезным источником информации о технологии ISDN и его аппаратном обеспечении является Страница Дэна Кегела (Dan Kegel) об ISDN.

Быстрое введение в ISDN:

Стоимость является важным фактором при выборе вашего решения. Далее перечислены все возможности от самого дешевого до самого дорогого варианта.

10.6.1. Адаптеры ISDN

Текст предоставил Hellmuth Michaelis .

Этот раздел на самом деле имеет отношение только к пользователям ISDN в странах, где поддерживается стандарт DSS1/Q.931.

Некоторое все увеличивающееся количество ISDN-адаптеров для PC поддерживается во FreeBSD 2.2.x и выше пакетом isdn4bsd. Он находится в разработке, но сообщения говорят о том, что он успешно используется по всей Европе.

Самая последняя версия isdn4bsd доступна по адресу ftp://isdn4bsd@ftp.consol.de/pub/, на главном ftp-сервере isdn4bsd (войдите как пользователь isdn4bsd, указав свой адрес электронной почты в качестве пароля, и перейдите в каталог pub. Вход на общедоступный ftp как пользователь ftp или anonymous не даст желаемого результата).

Isdn4bsd позволяет вам подключаться к другим маршрутизаторам ISDN с использованием как IP поверх HDLC, так и PPP на синхронном канале. Имеется также программа-автоответчик.

Поддерживаются многие ISDN-адаптеры для PC, в основном с набором ISDN-микросхем Siemens (ISAC/HSCX), поддержка других наборов (фирм Motorola, Cologne Chip Designs) находится в разработке. Актуальный список поддерживаемых адаптеров находится в файле README.

Если вы заинтересованы в добавлении поддержки другого протокола ISDN, неподдерживаемого в данный момент адаптера или каком-то другом усовершенствовании isdn4bsd, то обратитесь по адресу .

Имеется список рассылки, управляемый пакетом majordomo. Чтобы к нему присоединиться, пошлите письмо на адрес и укажите:

    subscribe freebsd-isdn
        

в тексте вашего сообщения.

10.6.2. Терминальные адаптеры ISDN

Терминальные адаптеры(TA) для ISDN выполняют ту же роль, что и модемы для обычных телефонных линий.

Большинство TA используют стандартный набор модемных AT-команд, и могут использоваться в качестве простой замены для модемов.

TA будут работать точно так же, как и модемы, за исключением скорости соединения и пропускной способности, которые будут гораздо выше, чем у вашего старого модема. Вам потребуется настроить PPP точно также, как и в случае использования модема. Проверьте, что вы задали скорость работы последовательного порта максимально высокой.

Главным преимуществом использования TA для подключения к провайдеру Интернет является возможность использования динамического PPP. Так как пространство адресов IP истощается все больше, большинство провайдеров не хочет больше выдавать вам статический IP-адрес. Большинство же маршрутизаторов не может использовать динамическое выделение IP-адресов.

TA полностью полагаются на даемон PPP, который используете из-за его возможностей и стабильности соединения. Это позволяет вам при использовании FreeBSD легко заменить модем на ISDN, если у вас уже настроено соединение PPP. Однако, в тоже время любые проблемы, которые возникают с программой PPP, отражаются и здесь.

Если вы хотите максимальной надежности, используйте параметр ядра PPP, а не пользовательский iijPPP.

Известно, что следующие TA работают с FreeBSD.

Большинство остальных TA, скорее всего, тоже будут работать, производители TA прилагают все усилия для обеспечения поддержки практически всего набора стандартных AT-команд модема.

Как и в случае модемов проблемой использования внешнего TA является потребность в хорошем последовательном адаптере на вашем компьютере.

Вы должны прочесть раздел о последовательных портах Руководства для того, чтобы в деталях понять работу последовательных устройств, и осознать различие асинхронными и синхронными последовательными портами.

TA, работающий со стандартным последовательным (асинхронным) портом PC, ограничивает вас скоростью 115.2Кбс, хотя реально у вас соединение на скорости 128Кбс. Чтобы использовать 128Кбс, которые обеспечивает ISDN, полностью, вы должны подключить TA к синхронному последовательному адаптеру.

Не обманывайте себя, думая, что покупка встроенного TA поможет избежать проблемы синхронности/асинхронности. Встроенные TA просто уже имеют внутри стандартный последовательный порт PC. Все, что при этом достигается - это экономия дополнительных последовательного кабеля и электрической розетки.

Синхронный адаптер с TA по крайней мере так же быстр, как и отдельный маршрутизатор, а если он работает под управлением машины класса 386 с FreeBSD, то это гораздо более гибкое решение.

Выбор sync/TA по сравнению с отдельным маршрутизатором в большей степени вопрос религиозный. По этому поводу в списках рассылки была некоторая дискуссия. Рекомендую поискать в архивах обсуждение полностью.

10.6.3. Отдельные мосты/маршрутизаторы ISDN

Мосты или маршрутизаторы ISDN не так уж специфичны для FreeBSD или для любой другой операционной системы. Для более подробного описания технологий маршрутизации и работы мостов, пожалуйста, обратитесь к книге по сетевым технологиям.

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

Вместе с падением цен на простые мосты/маршрутизаторы ISDN, они становятся все более популярными. Маршрутизатор ISDN представляет собой маленькую коробочку, которая подключается непосредственно в вашу сеть (или адаптер) Ethernet, и поддерживает связь с другим мостом/маршрутизатором. Все программное обеспечение для работы по PPP и другим протоколам, встроено в маршрутизатор.

Маршрутизатор обладает гораздо большей пропускной способностью, чем стандартный TA, так как он использует полное синхронное соединение ISDN.

Основной проблемой с маршрутизаторами и мостами ISDN является то, что их совместная работа с оборудованием других производителей может оказаться под вопросом. Если вы собираетесь подключаться к провайдеру, я рекомендую обсудить с ним то, что вам нужно.

Если вы планируете объединить два сегмента локальной сети, то есть домашнюю сеть с сетью офиса, это самое простое решение с минимальными издержками на обслуживание. Так как вы покупаете оборудование для обоих сторон соединения, то можете быть уверены, что связь будет работать нормально.

Например, для соединения домашнего компьютера или сети подразделения к сети центрального офиса, может использоваться такая настройка.

Example 10-1. Офис подразделения или домашняя сеть

Сеть построена на основе 10 Base T Ethernet. Подключите маршрутизатор к сетевому кабелю с помощью трансивера AUI/10BT, если это нужно.

    ---Рабочая станция Sun
    |
    ---Машина с FreeBSD
    |
    ---Windows 95 (Do not admit to owning it)
    |
    Отдельный маршрутизатор
       |
    Канал ISDN BRI
          

Если ваш домашний или удаленный офис представляет собой один компьютер, то для непосредственного подключения к маршрутизатору вы вы можете использовать витую пару с перекрестным соединениям.

Example 10-2. Центральный офис или другая локальная сеть

Сеть построена на Ethernet с витой парой.

        -------Сервер Novell
        | H |
        |   ---Sun
        |   |
        | U ---FreeBSD
        |   |
        |   ---Windows 95
        | B |
        |___---Отдельно стоящий маршрутизатор
            |
         Канал ISDN BRI
          

Одним большим преимуществом большинства маршрутизаторов/мостов является то, что они позволяют иметь 2 отдельных независимых соединения PPP к 2 различным сайтам одновременно. Это не поддерживается в большинстве TA, кроме специальных (дорогих) моделей, имеющих по два последовательных порта. Не путайте это с балансировкой нагрузки, MPP и так далее.

Это может оказаться весьма полезной особенностью, например, если у вас имеется постоянное ISDN-соединение в вашем офисе, и вы хотите им воспользоваться, но не хотите задействовать дополнительный канал ISDN на работе. Маршрутизатор, расположенный в офисе, может использовать выделенное соединение по каналу B (64Кбс) для Интернет, и одновременно другой канал B для отдельного соединения для передачи данных. Второй канал B может использоваться для входящих, исходящих и динамически распределяемых соединений (MPP и другие) совместно с первым каналом B для повышения пропускной способности.

Мост Ethernet также позволяет вам передавать больше, чем просто трафик IP, вы можете передавать IPX/SPX и любые другие протоколы, которые вы используете.


Руководство FreeBSD
Prev Chapter 6. Безопасность Next

6.6. Kerberos

Contributed by Mark Murray (based on contribution by Mark Dapoz ).

Kerberos is a network add-on system/protocol that allows users to authenticate themselves through the services of a secure server. Services such as remote login, remote copy, secure inter-system file copying and other high-risk tasks are made considerably safer and more controllable.

The following instructions can be used as a guide on how to set up Kerberos as distributed for FreeBSD. However, you should refer to the relevant manual pages for a complete description.

In FreeBSD, the Kerberos is not that from the original 4.4BSD-Lite, distribution, but eBones, which had been previously ported to FreeBSD 1.1.5.1, and was sourced from outside the USA/Canada, and is thus available to system owners outside those countries.

For those needing to get a legal foreign distribution of this software, please do not get it from a USA or Canada site. You will get that site in big trouble! A legal copy of this is available from ftp.internat.FreeBSD.org, which is in South Africa and an official FreeBSD mirror site.

6.6.1. Creating the initial database

This is done on the Kerberos server only. First make sure that you do not have any old Kerberos databases around. You should change to the directory /etc/kerberosIV and check that only the following files are present:

    # cd /etc/kerberosIV
    # ls
    README      krb.conf        krb.realms

If any additional files (such as principal.* or master_key) exist, then use the kdb_destroy command to destroy the old Kerberos database, of if Kerberos is not running, simply delete the extra files.

You should now edit the krb.conf and krb.realms files to define your Kerberos realm. In this case the realm will be GRONDAR.ZA and the server is grunt.grondar.za. We edit or create the krb.conf file:

    # cat krb.conf
    GRONDAR.ZA
    GRONDAR.ZA grunt.grondar.za admin server
    CS.BERKELEY.EDU okeeffe.berkeley.edu
    ATHENA.MIT.EDU kerberos.mit.edu
    ATHENA.MIT.EDU kerberos-1.mit.edu
    ATHENA.MIT.EDU kerberos-2.mit.edu
    ATHENA.MIT.EDU kerberos-3.mit.edu
    LCS.MIT.EDU kerberos.lcs.mit.edu
    TELECOM.MIT.EDU bitsy.mit.edu
    ARC.NASA.GOV trident.arc.nasa.gov

In this case, the other realms do not need to be there. They are here as an example of how a machine may be made aware of multiple realms. You may wish to not include them for simplicity.

The first line names the realm in which this system works. The other lines contain realm/host entries. The first item on a line is a realm, and the second is a host in that realm that is acting as a "key distribution centre". The words admin server following a hosts name means that host also provides an administrative database server. For further explanation of these terms, please consult the Kerberos man pages.

Now we have to add grunt.grondar.za to the GRONDAR.ZA realm and also add an entry to put all hosts in the .grondar.za domain in the GRONDAR.ZA realm. The krb.realms file would be updated as follows:

    # cat krb.realms
    grunt.grondar.za GRONDAR.ZA
    .grondar.za GRONDAR.ZA
    .berkeley.edu CS.BERKELEY.EDU
    .MIT.EDU ATHENA.MIT.EDU
    .mit.edu ATHENA.MIT.EDU

Again, the other realms do not need to be there. They are here as an example of how a machine may be made aware of multiple realms. You may wish to remove them to simplify things.

The first line puts the specific system into the named realm. The rest of the lines show how to default systems of a particular subdomain to a named realm.

Now we are ready to create the database. This only needs to run on the Kerberos server (or Key Distribution Centre). Issue the kdb_init command to do this:

    # kdb_init
    Realm name [default  ATHENA.MIT.EDU ]: GRONDAR.ZA
    You will be prompted for the database Master Password.
    It is important that you NOT FORGET this password.
            
    Enter Kerberos master key: 

Now we have to save the key so that servers on the local machine can pick it up. Use the kstash command to do this.

    # kstash
              
    Enter Kerberos master key:
    
    Current Kerberos master key version is 1.
    
    Master key entered. BEWARE!

This saves the encrypted master password in /etc/kerberosIV/master_key.

6.6.2. Making it all run

Two principals need to be added to the database for each system that will be secured with Kerberos. Their names are kpasswd and rcmd These two principals are made for each system, with the instance being the name of the individual system.

These daemons, kpasswd and rcmd allow other systems to change Kerberos passwords and run commands like rcp, rlogin and rsh.

Now let's add these entries:

    # kdb_edit
    Opening database...
    
    Enter Kerberos master key:
    
    Current Kerberos master key version is 1.
    
    Master key entered.  BEWARE!
    Previous or default values are in [brackets] ,
    enter return to leave the same, or new value.
    
    Principal name: passwd
    Instance: grunt
    
    <Not found>, Create [y] ? y
    
    Principal: passwd, Instance: grunt, kdc_key_ver: 1
    New Password:                    <---- enter RANDOM here
    Verifying password
    
    New Password: <---- enter RANDOM here
    
    Random password [y] ? y
    
    Principal's new key version = 1
    Expiration date (enter yyyy-mm-dd) [ 2000-01-01 ] ?
    Max ticket lifetime (*5 minutes) [ 255 ] ?
    Attributes [ 0 ] ?
    Edit O.K.
    Principal name: rcmd
    Instance: grunt
    
    <Not found>, Create [y] ?
    
    Principal: rcmd, Instance: grunt, kdc_key_ver: 1
    New Password:       <---- enter RANDOM here
    Verifying password
    
    New Password:           <---- enter RANDOM here
    
    Random password [y] ?
    
    Principal's new key version = 1
    Expiration date (enter yyyy-mm-dd) [ 2000-01-01 ] ?
    Max ticket lifetime (*5 minutes) [ 255 ] ?
    Attributes [ 0 ] ?
    Edit O.K.
    Principal name:         <---- null entry here will cause an exit

6.6.3. Creating the server file

We now have to extract all the instances which define the services on each machine. For this we use the ext_srvtab command. This will create a file which must be copied or moved by secure means to each Kerberos client's /etc/kerberosIV directory. This file must be present on each server and client, and is crucial to the operation of Kerberos.

    # ext_srvtab grunt
    Enter Kerberos master key:
            
    Current Kerberos master key version is 1.
    
    Master key entered. BEWARE!
    Generating 'grunt-new-srvtab'....

Now, this command only generates a temporary file which must be renamed to srvtab so that all the server can pick it up. Use the mv command to move it into place on the original system:

    # mv grunt-new-srvtab srvtab

If the file is for a client system, and the network is not deemed safe, then copy the client-new-srvtab to removable media and transport it by secure physical means. Be sure to rename it to srvtab in the client's /etc/kerberosIV directory, and make sure it is mode 600:

    # mv grumble-new-srvtab srvtab
    # chmod 600 srvtab

6.6.4. Populating the database

We now have to add some user entries into the database. First let's create an entry for the user jane. Use the kdb_edit command to do this:

    # kdb_edit
    Opening database...
    
    Enter Kerberos master key:
    
    Current Kerberos master key version is 1.
    
    Master key entered.  BEWARE!
    Previous or default values are in [brackets] ,
    enter return to leave the same, or new value.
    
    Principal name: jane
    Instance:
    
    <Not found>, Create [y] ? y
    
    Principal: jane, Instance: , kdc_key_ver: 1
    New Password:                <---- enter a secure password here
    Verifying password
    
    New Password:                <---- re-enter the password here
    Principal's new key version = 1
    Expiration date (enter yyyy-mm-dd) [ 2000-01-01 ] ?
    Max ticket lifetime (*5 minutes) [ 255 ] ?
    Attributes [ 0 ] ?
    Edit O.K.
    Principal name:          <---- null entry here will cause an exit

6.6.5. Testing it all out

First we have to start the Kerberos daemons. NOTE that if you have correctly edited your /etc/rc.conf then this will happen automatically when you reboot. This is only necessary on the Kerberos server. Kerberos clients will automagically get what they need from the /etc/kerberosIV directory.

    # kerberos &
    Kerberos server starting
    Sleep forever on error
    Log file is /var/log/kerberos.log
    Current Kerberos master key version is 1.
    
    Master key entered. BEWARE!
    
    Current Kerberos master key version is 1
    Local realm: GRONDAR.ZA
    # kadmind -n &
    KADM Server KADM0.0A initializing
    Please do not use 'kill -9' to kill this job, use a
    regular kill instead
    
    Current Kerberos master key version is 1.
    
    Master key entered.  BEWARE!

Now we can try using the kinit command to get a ticket for the id jane that we created above:

    % kinit jane
    MIT Project Athena (grunt.grondar.za)
    Kerberos Initialization for "jane"
    Password: 

Try listing the tokens using klist to see if we really have them:

    % klist
    Ticket file:    /tmp/tkt245
    Principal:      jane@GRONDAR.ZA
    
      Issued           Expires          Principal
    Apr 30 11:23:22  Apr 30 19:23:22  krbtgt.GRONDAR.ZA@GRONDAR.ZA

Now try changing the password using passwd to check if the kpasswd daemon can get authorization to the Kerberos database:

    % passwd
    realm GRONDAR.ZA
    Old password for jane:
    New Password for jane:
    Verifying password
    New Password for jane:
    Password changed.

6.6.6. Adding su privileges

Kerberos allows us to give each user who needs root privileges their own separate supassword. We could now add an id which is authorized to su to root. This is controlled by having an instance of root associated with a principal. Using kdb_edit we can create the entry jane.root in the Kerberos database:

    # kdb_edit
    Opening database...
    
    Enter Kerberos master key:
    
    Current Kerberos master key version is 1.
    
    Master key entered.  BEWARE!
    Previous or default values are in [brackets] ,
    enter return to leave the same, or new value.
    
    Principal name: jane
    Instance: root
    
    <Not found>, Create [y] ? y
    
    Principal: jane, Instance: root, kdc_key_ver: 1
    New Password:                    <---- enter a SECURE password here
    Verifying password
    
    New Password:            <---- re-enter the password here
    
    Principal's new key version = 1
    Expiration date (enter yyyy-mm-dd) [ 2000-01-01 ] ?
    Max ticket lifetime (*5 minutes) [ 255 ] ? 12 <--- Keep this short!
    Attributes [ 0 ] ?
    Edit O.K.
    Principal name:                <---- null entry here will cause an exit

Now try getting tokens for it to make sure it works:

    # kinit jane.root
    MIT Project Athena (grunt.grondar.za)
    Kerberos Initialization for "jane.root"
    Password:

Now we need to add the user to root's .klogin file:

    # cat /root/.klogin
    jane.root@GRONDAR.ZA

Now try doing the su:

    % su
    Password:

and take a look at what tokens we have:

    # klist
    Ticket file:    /tmp/tkt_root_245
    Principal:      jane.root@GRONDAR.ZA
    
      Issued           Expires          Principal
    May  2 20:43:12  May  3 04:43:12  krbtgt.GRONDAR.ZA@GRONDAR.ZA

6.6.7. Using other commands

In an earlier example, we created a principal called jane with an instance root. This was based on a user with the same name as the principal, and this is a Kerberos default; that a <principal>.<instance> of the form <username>.root will allow that <username> to su to root if the necessary entries are in the .klogin file in root's home directory:

    # cat /root/.klogin
    jane.root@GRONDAR.ZA

Likewise, if a user has in their own home directory lines of the form:

    % cat ~/.klogin
    jane@GRONDAR.ZA
    jack@GRONDAR.ZA

This allows anyone in the GRONDAR.ZA realm who has authenticated themselves to jane or jack (via kinit, see above) access to rlogin to jane's account or files on this system (grunt) via rlogin, rsh or rcp.

For example, Jane now logs into another system, using Kerberos:

    % kinit
    MIT Project Athena (grunt.grondar.za)
    Password:
    %prompt.user; rlogin grunt
    Last login: Mon May  1 21:14:47 from grumble
    Copyright (c) 1980, 1983, 1986, 1988, 1990, 1991, 1993, 1994
            The Regents of the University of California.   All rights reserved.
    
    FreeBSD BUILT-19950429 (GR386) #0: Sat Apr 29 17:50:09 SAT 1995

Or Jack logs into Jane's account on the same machine (Jane having set up the .klogin file as above, and the person in charge of Kerberos having set up principal jack with a null instance:

    % kinit
    % rlogin grunt -l jane
    MIT Project Athena (grunt.grondar.za)
    Password:
    Last login: Mon May  1 21:16:55 from grumble
    Copyright (c) 1980, 1983, 1986, 1988, 1990, 1991, 1993, 1994
            The Regents of the University of California.   All rights reserved.
    FreeBSD BUILT-19950429 (GR386) #0: Sat Apr 29 17:50:09 SAT 1995

Руководство FreeBSD
Prev Next

Chapter 13. Отладка ядра

Table of Contents
13.1. Отладка аварийных образов ядра при помощи kgdb
13.2. Отладка аварийного дампа с помощью DDD
13.3. Посмертный анализ дампа
13.4. Отладка ядра в режиме реального времени с помощью DDB
13.5. Отладка ядра в режиме реального времени при помощи удаленного GDB
13.6. Отладка драйвера консоли

Текст предоставили Paul Richards и JЖrg Wunsch

13.1. Отладка аварийных образов ядра при помощи kgdb

Вот некоторые указания по работе с отладкой ядра с аварийными образами памяти. При этом предполагается, что у вас достаточно места на разделе подкачки для аварийного образа памяти. Если у вас есть несколько разделов подкачки и первый слишком мал для размещения образа памяти, вы можете настроить ядро на использование другого устройства для сброса образа памяти (в строке config kernel или указать его при помощи команды dumpon(8). Лучше всего использовать dumpon(8), задав переменную dumpdev в файле /etc/rc.conf. Как правило, вам нужно будет задать одно из устройств подкачки, перечисленных в файле /etc/fstab. Сброс образов памяти на устройства, не являющиеся устройствами подкачки, напрмер, ленты, в данный момент не поддерживаются. Настройте ваше ядро при помощи команды config -g. Обратитесь к разделу Настройка ядра за более подробной информацией о настройке ядра FreeBSD.

Используйте команду dumpon(8) для указания ядру места, куда нужно помещать образ памяти (отметьте, что это будут сделано после настройки соответствующего раздела как раздел подкачки через swapon(8)). Обычно это делается через /etc/rc.conf и /etc/rc. Либо вы можете задать устройство для сброса образа памяти явно через параметр dump в строке config конфигурационного файла вашего ядра. Такой способ использовать не рекомендуется и он должен использоваться, только если вы хотите получать аварийные образы памяти ядра, которое аварийно завершает свою работу при загрузке.

Note: Далее термин kgdb означает утилиту gdb, которая запущена в "режиме отладки ядра". Этот режим достигается либо при запуске gdb с параметром -k, либо компоновкой и запуском его под именем kgdb. По умолчанию этого, однако, не делается и эта идея, в общем-то, не поддерживается, потому что разработчикам GNU не нравится, когда их утилиты работают по-другому, будучи вызванными по другому имени. В будущих релизах такая возможность может исчезнуть.

Tip: Если вы используете FreeBSD версии 3 или более раннюю, вы должны выполнить усечение отладочного ядра командой strip, а не устанавливать большое отладочное ядро:

    # cp kernel kernel.debug
    # strip -g kernel
          

Этот шаг не так уж и необходим, но рекомендуем. (Во FreeBSD 4 и более поздних релизах этот шаг выполняется автоматически в конце процесса построения ядра make.) Когда ядро усечено, автоматически или при помощи команд выше, вы можете установить его обычным образом, набрав make install.

Заметьте, что в старых версиях FreeBSD (до 3.1, не включая этот релиз), используется ядра в формате a.out, поэтому их таблицы символов должны располагаться постоянно в памяти. С большой таблицей символов в не усеченном отладочном ядре это излишняя трата. Последние релизы FreeBSD используют ядра в формате ELF, где это не является проблемой.

Если вы тестируете новое ядро, скажем, набирая имя нового ядра в приглашении загрузчика, но вам нужно загружать и работать с другим ядром, чтобы снова вернуться к нормальному функционированию, загружайте его только в однопользовательском режиме при помощи флага -s, указываемого при загрузке, а затем выполните такие шаги:

    # fsck -p
    # mount -a -t ufs      # so your file system for /var/crash is writable
    # savecore -N /kernel.panicked /var/crash
    # exit          # ...to multi-user
        

Эта последовательность указывает программе savecore(8) на использование другого ядра для извлечения символических имен. Иначе она будет использовать ядро, работающее в данный момент и, скорее всего, ничего не сделает, потому что аварийный образ памяти и символы ядра будут отличаться.

А теперь, после сброса аварийного дампа, перейдите в каталог /sys/compile/WHATEVER и запустите команду kgdb. Из программы kgdb сделайте вот что:

    symbol-file kernel.debug
    exec-file /var/crash/kernel.0
    core-file /var/crash/vmcore.0
          
и вуаля - вы можете отлаживать аварийный дамп, используя исходные тексты ядра точно также, как вы это делаете с любой другой программой.

Вот журнал команд сеанса работы kgdb, иллюстрирующий эту процедуру. Длинные строки были разорваны для улучшения читабельности и для удобства строки были пронумерованы. Все остальное является трассировкой ошибки, реально возникнувшей во время работы над драйвером консоли pcvt.

     1:Script started on Fri Dec 30 23:15:22 1994
     2:# cd /sys/compile/URIAH
     3:# kgdb kernel /var/crash/vmcore.1
     4:Reading symbol data from /usr/src/sys/compile/URIAH/kernel
    ...done.
     5:IdlePTD 1f3000
     6:panic: because you said to!
     7:current pcb at 1e3f70
     8:Reading in symbols for ../../i386/i386/machdep.c...done.
     9:(kgdb) where
    10:#0  boot (arghowto=256) (../../i386/i386/machdep.c line 767)
    11:#1  0xf0115159 in panic ()
    12:#2  0xf01955bd in diediedie () (../../i386/i386/machdep.c line 698)
    13:#3  0xf010185e in db_fncall ()
    14:#4  0xf0101586 in db_command (-266509132, -266509516, -267381073)
    15:#5  0xf0101711 in db_command_loop ()
    16:#6  0xf01040a0 in db_trap ()
    17:#7  0xf0192976 in kdb_trap (12, 0, -272630436, -266743723)
    18:#8  0xf019d2eb in trap_fatal (...)
    19:#9  0xf019ce60 in trap_pfault (...)
    20:#10 0xf019cb2f in trap (...)
    21:#11 0xf01932a1 in exception:calltrap ()
    22:#12 0xf0191503 in cnopen (...)
    23:#13 0xf0132c34 in spec_open ()
    24:#14 0xf012d014 in vn_open ()
    25:#15 0xf012a183 in open ()
    26:#16 0xf019d4eb in syscall (...)
    27:(kgdb) up 10
    28:Reading in symbols for ../../i386/i386/trap.c...done.
    29:#10 0xf019cb2f in trap (frame={tf_es = -260440048, tf_ds = 16, tf_\
    30:edi = 3072, tf_esi = -266445372, tf_ebp = -272630356, tf_isp = -27\
    31:2630396, tf_ebx = -266427884, tf_edx = 12, tf_ecx = -266427884, tf\
    32:_eax = 64772224, tf_trapno = 12, tf_err = -272695296, tf_eip = -26\
    33:6672343, tf_cs = -266469368, tf_eflags = 66066, tf_esp = 3072, tf_\
    34:ss = -266427884}) (../../i386/i386/trap.c line 283)
    35:283                 (void) trap_pfault(&frame, FALSE);
    36:(kgdb) frame frame->tf_ebp frame->tf_eip
    37:Reading in symbols for ../../i386/isa/pcvt/pcvt_drv.c...done.
    38:#0  0xf01ae729 in pcopen (dev=3072, flag=3, mode=8192, p=(struct p\
    39:roc *) 0xf07c0c00) (../../i386/isa/pcvt/pcvt_drv.c line 403)
    40:403         return ((*linesw[tp->t_line].l_open)(dev, tp));
    41:(kgdb) list
    42:398
    43:399         tp->t_state |= TS_CARR_ON;
    44:400         tp->t_cflag |= CLOCAL;  /* cannot be a modem (:-) */
    45:401
    46:402     #if PCVT_NETBSD || (PCVT_FREEBSD >= 200)
    47:403         return ((*linesw[tp->t_line].l_open)(dev, tp));
    48:404     #else
    49:405         return ((*linesw[tp->t_line].l_open)(dev, tp, flag));
    50:406     #endif /* PCVT_NETBSD || (PCVT_FREEBSD >= 200) */
    51:407     }
    52:(kgdb) print tp
    53:Reading in symbols for ../../i386/i386/cons.c...done.
    54:$1 = (struct tty *) 0x1bae
    55:(kgdb) print tp->t_line
    56:$2 = 1767990816
    57:(kgdb) up
    58:#1  0xf0191503 in cnopen (dev=0x00000000, flag=3, mode=8192, p=(st\
    59:ruct proc *) 0xf07c0c00) (../../i386/i386/cons.c line 126)
    60:   return ((*cdevsw[major(dev)].d_open)(dev, flag, mode, p));
    61:(kgdb) up
    62:#2  0xf0132c34 in spec_open ()
    63:(kgdb) up
    64:#3  0xf012d014 in vn_open ()
    65:(kgdb) up
    66:#4  0xf012a183 in open ()
    67:(kgdb) up
    68:#5  0xf019d4eb in syscall (frame={tf_es = 39, tf_ds = 39, tf_edi =\
    69: 2158592, tf_esi = 0, tf_ebp = -272638436, tf_isp = -272629788, tf\
    70:_ebx = 7086, tf_edx = 1, tf_ecx = 0, tf_eax = 5, tf_trapno = 582, \
    71:tf_err = 582, tf_eip = 75749, tf_cs = 31, tf_eflags = 582, tf_esp \
    72:= -272638456, tf_ss = 39}) (../../i386/i386/trap.c line 673)
    73:673         error = (*callp->sy_call)(p, args, rval);
    74:(kgdb) up
    75:Initial frame selected; you cannot go up.
    76:(kgdb) quit
    77:# exit
    78:exit
    79:
    80:Script done on Fri Dec 30 23:18:04 1994
        

Комментарии к вышеприведенному журналу:

строка 6:

Это дамп, взятый при помощи DDB (смотри ниже), поэтому комментарий к аварийному останову имеет именно вид "because you said to!" и трассировка стека глубока; однако изначальной причиной перехода в DDB была аварийная остановка при возникновению ошибки страницы памяти.

строка 20:

Это местонахождение функции trap() в трассировке стека.

строка 36:

Принудительное использование новой границы стека; теперь это не нужно. Теперь предполагается, что границы стека указывают на правое расположение, даже в случае аварийного останова. (У меня нет под рукой новый аварийный дамп <g>, с моим ядром аварийная ситуация не случалась давно.) Глядя на строку исходного кода 403, можно сказать, что весьма вероятно, что либо виноват доступ по указателю "tp", либо был выход за границы массива.

строка 52:

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

строка 56:

Однако, очевидно, что он указывает на мусор, так что мы нашли нашу ошибку! (Для тех, кто не знаком с этой частью кода: tp->t_line служит для хранения режима канала консольного устройства, и это должно быть достаточно маленькое целое число.)


Руководство FreeBSD
Prev Next

Chapter 12. Добавление новых параметров конфигурации ядра

Table of Contents
12.1. Что же такое параметр ядра, в конце концов?
12.2. И что я должен для этого сделать?

Предоставил JЖrg Wunsch

Note: Перед тем, как читать этот раздел, вы должны усвоить материал раздела о конфигурации ядра.

12.1. Что же такое параметр ядра, в конце концов?

Использование параметров ядра в основном описано в разделе о конфигурации ядра. Там же имеется описание "устаревших" и параметров "в новом стиле". Конечной целью является постепенный перевод всех поддерживаемых параметров ядра к новому стилю, так чтобы для тех, кто корректно выполняют команду make depend в каталоге компиляции ядра после запуска config(8), процесс построения автоматически принимал модифицированные параметры и перекомпилировал только те файлы, которые необходимы. Удаление старого каталога компиляции при каждом перезапуске config(8), как это еще происходит сейчас, затем может быть убрано.

В своей основе параметр ядра является не более чем определение макроса препроцессора C для процесса компиляции ядра. Чтобы сделать построение полностью настраиваемым через опции процессом, соответствующая часть исходных текстов ядра (или файла .h ядра) должна быть написана с упором на концепцию параметров, то есть чтобы значения, используемые по умолчанию, могли быть переопределены параметрами конфигурации. Это обычно делается примерно так:

    #ifndef THIS_OPTION
    #define THIS_OPTION (некоторое значение по умолчанию)
    #endif /* THIS_OPTION */
        

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

Также возможно создание параметров, которые не принимают определенного значения, а просто включают или выключают некоторую часть кода, обрамляя его в

    #ifdef THAT_OPTION
    
    [здесь ваш код]
    
    #endif
        

Простое упоминание THAT_OPTION в конфигурационном файле (со значением или без него) приведет к включению соответствующего кода.

Те, кто знаком с языком C, могут сказать, что все может считаться как "config option", там где есть по крайней мере одна строчка #ifdef... Однако вряд ли многие будут писать

    options    notyet,notdef
        

в своих конфигурационных файлах и потом удивляться, почему компиляция ядра не проходит. :-)

Более точно, использование уникальных имен для параметров делает очень трудным отслеживание их использования в дереве исходных текстов ядра. В использовании схемы параметров в новом стиле имеется рациональное зерно, когда каждый параметр помещается в отдельный файл .h в каталоге компиляции ядра, который по соглашению называется opt_foo.h. Таким образом, могут быть применены обычные зависимости в Makefile, и утилита make может определить, что нужно перекомпилировать при изменении определенного параметра.

Параметры при использовании механизма в старом стиле имеют одно преимущество для локальных изменений или для экспериментальных параметров, которые имеют короткий срок жизни: так как весьма легко добавить новую строку #ifdef к исходному коду ядра, то это уже превращается в параметр конфигурации ядра. В таком случае администратор, использующий параметры таким образом, несет ответственность за знание влияния этого параметра (и может быть, за принудительную перекомпиляцию вручную частей ядра). Как только перевод всех поддерживаемых опций будет сделан, программа config(8) будет выдавать предупреждение о не поддерживаемой опции, появившейся в конфигурационном файле, однако она будет включать ее в файл Makefile ядра.


Руководство FreeBSDPrevChapter 22 Работа с приложениями, написанными для LinuxNext

22.2 Инсталляция

Начиная с 3.0-RELEASE, больше нет необходимости указывать options LINUX или options COMPAT_LINUX в Вашем файле конфигурации ядра.

Поддержка Linux приложений осуществляется посредством специального модуля ядра (KLD объекта, ``Kernel LoaDable object''), то есть его можно загрузить/выгрузить ``на лету'', без необходимости перезагрузки. Вам потребуется убедиться в наличии следующей строки в файле /etc/rc.conf:

linux_enable=``YES''

Это, в свою очередь, повлияет на выполнение следующего кода в файле /etc/rc.i386:

# Start the Linux binary compatibility if requested.
#
case ${linux_enable} in
[Yy][Ee][Ss])
	echo -n ' linux';	linux > /dev/null 2>&1
	;;
esac

Если Вы хотите проверить, загружен ли модуль, это можно сделать при помощи команды kldstat:

% kldstat
Id Refs Address    Size     Name
 1    2 0xc0100000 16bdb8   kernel
 7    1 0xc24db000 d000     linux.ko

Если по какой-либо причине Вы не хотите или не можете загрузить KLD, то Вы можете статически включить поддержку Linux в ядро посредством опции options LINUX в файле конфигурации ядра. Затем соберите и проинсталлируйте новое ядро, следуя описанию в секции, посвященной конфигурации ядра.

22.2.1 Установка необходимых Linux библиотек

Установить все требуемые библиотеки можно двумя путями: либо используя порт linux_base, либо установив их вручную.

22.2.1.1 Установка с помощью порта linux_base

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

# cd /usr/ports/emulators/linux_base
# make install distclean

Теперь Вы можете работать с приложениями для Linux. Некоторые программы, возможно, будут сообщать о несоответствии подверсий некоторых системных библиотек. Однако, практически, это не вызывает каких-либо неудобств.

22.2.1.2 Установка библиотек вручную

Если у Вас нет установленной коллекции портов, то можно установить требуемые библиотеки вручную Вам понадобятся разделяемые библиотеки для Linux, которые нужны программам, и runtime-компоновщик. Вам также потребуется создать ``теневой корень'': директорию /compat/linux, где будут расположены Linux библиотеки. Если нужно загрузить какую-либо разделяемую библиотеку, FreeBSD сперва будет пытаться найти ее в этом дереве. Так, если программа загружает, например, /lib/libc.so, FreeBSD попытается открыть /compat/linux/lib/libc.so, и если такого файла не существует, будет пытаться открыть /lib/libc.so. Разделяемые библиотеки должны находиться в теневом дереве, а не в пути, сообщаемым командой Linux ld.so.

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

22.2.1.3 Как установить дополнительные разделяемые библиотеки

Что, если при установленном linux_base порте Ваше приложение все равно сообщает об отсутствии необходимой библиотеки? Как узнать, какая именно нужна библиотека и где ее взять? В принципе, есть два способа. Вам необходимо иметь привилегии суперпользователя для их осуществления.

Если у Вас есть доступ к машине, на которой установлен Linux, узнайте, какие библиотеки использует Linux приложение, и просто скопируйте из на свою машину. Например:

Допустим, Вы скачали по FTP Linux версию Doom'а (на Linux машине). Вы можете узнать, какие разделяемые библиотеки нужны Doom'у при помощи команды ldd linuxdoom:

% ldd linuxdoom
libXt.so.3 (DLL Jump 3.1) => /usr/X11/lib/libXt.so.3.1.0
libX11.so.3 (DLL Jump 3.1) => /usr/X11/lib/libX11.so.3.1.0
libc.so.4 (DLL Jump 4.5pl26) => /lib/libc.so.4.6.29

Вам потребуются все файлы, перечисленные в последней колонке. Скопируйте их в директорию /compat/linux на Вашей системе, а также создайте символические ссылки на эти файлы, с именами ссылок из первой колонки соответственно. В итоге у Вас на машине должны быть следующие файлы:

/compat/linux/usr/X11/lib/libXt.so.3.1.0
/compat/linux/usr/X11/lib/libXt.so.3 -> libXt.so.3.1.0
/compat/linux/usr/X11/lib/libX11.so.3.1.0
/compat/linux/usr/X11/lib/libX11.so.3 -> libX11.so.3.1.0
/compat/linux/lib/libc.so.4.6.29 /compat/linux/lib/libc.so.4 -> libc.so.4.6.29

Note: Заметьте, что если у Вас уже есть какая-либо из перечисленных библиотек, то ее не нужно копировать заново. Однако, у Вас может быть более старая версия. В этом случае, лучше все-таки скопировать библиотеку поздней версии, изменив соответственно ссылку на нее. Предыдущую версию библиотеки можно удалить. Например, пусть у Вас есть следующие библиотеки:

/compat/linux/lib/libc.so.4.6.27
/compat/linux/lib/libc.so.4 -> libc.so.4.6.27

и какое-либо приложение требует библиотеку более поздней версии, судя по команде ldd:

libc.so.4 (DLL Jump 4.5pl26) -> libc.so.4.6.29

Если подверсии немного отличаются, копировать /lib/libc.so.4.6.29 необязательно, так как программа, скорее всего, будет нормально работать и с устаревшей версией. Тем не менее, Вы можете заменить libc.so:

/compat/linux/lib/libc.so.4.6.29
/compat/linux/lib/libc.so.4 -> libc.so.4.6.29

Note: Символические ссылки важны только для Linux программ. Runtime-компоновщик FreeBSD самостоятельно подберет правильные номера версий библиотек, и Вам не нужно об этом беспокоиться.

22.2.2 Настройка Linux ELF-исполняемых файлов

Для ELF-программ иногда требуется сделать так называемый ``branding''. Если при попытке запустить ELF-файл, Вы получаете следующее сообщение об ошибке:

% ./linux-elf-программа
ELF binary type not known
Abort

то нужно изменить тип исполняемого файла, чтобы ядро FreeBSD правильно определило, что это Linux программа. Это можно сделать при помощи утилиты brandelf(1):

% brandelf -t Linux linux-elf-программа

Следует отметить, что программы, для которых необходим ``branding'', встречаются все реже и реже, и в недалеком будущем Вы вряд ли прибегнете к нему вообще.

22.2.3 Распознавание доменных имен

Если DNS не настроен или недоступен, или Вы получаете это сообщение:

resolv+: "bind" is an invalid keyword resolv+:
"hosts" is an invalid keyword

то Вам нужно создать (модифицировать) файл /compat/linux/etc/host.conf, содержащий:

order hosts, bind
multi on

Таким образом, Вы указываете, то сначала производится поиск в файле /etc/hosts, а только затем запрашивается DNS. Когда файл /compat/linux/etc/host.conf отсутствует, Linux приложения находят файл /etc/host.conf для FreeBSD и сообщают о несовместимом синтаксисе. Если Вы не настраивали сервер имен (/etc/resolv.conf), уберите bind из файла /compat/linux/etc/host.conf.

Этот, и другие документы, могут быть скачаны с ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

По вопросам связанными с FreeBSD, прочитайте документацию прежде чем писать в <questions@FreeBSD.org>.
По вопросам связанным с этой документацией, пишите <doc@FreeBSD.org>.
По вопросам связанным с русским переводом документации, пишите <frdp@FreeBSD.org.ua>.


Руководство FreeBSDPrevChapter 22 Работа с приложениями, написанными для LinuxNext

22.3 Установка пакета Mathematica

Обновлено для Mathematica версии 4.x Murray Stokely и объединено с работой Bojan Bistrovic .

Ниже описано, как установить Linux версию пакета Mathematica 4.x на FreeBSD систему.

Linux версия Mathematica отлично работает под FreeBSD, однако исполняемые файлы должны быть модифицированы утилитой brandelf(1).

Linux версия пакета Mathematica или Mathematica для Студентов может быть заказана непосредственно через Wolfram по адресу http://www.wolfram.com/.

22.3.1 Модификация исполняемых файлов

Исполняемые файлы пакета Mathematica находятся в директории Unix на компакт диске с дистрибутивом. Скопируйте эту директорию (вместе со всеми подкаталогами) на Ваш жесткий диск, чтобы модифицировать (утилитой brandelf(1)) исполняемые файлы перед инсталляцией:

# mount /cdrom
# cp -rp /cdrom/Unix/ /localdir/
# brandelf -t Linux /localdir/Files/SystemFiles/Kernel/Binaries/Linux/*
# brandelf -t Linux /localdir/Files/SystemFiles/FrontEnd/Binaries/Linux/*
# brandelf -t Linux /localdir/Files/SystemFiles/Installation/Binaries/Linux/*
# brandelf -t Linux /localdir/Files/SystemFiles/Graphics/Binaries/Linux/*
# brandelf -t Linux /localdir/Files/SystemFiles/Converters/Binaries/Linux/*
# brandelf -t Linux /localdir/Files/SystemFiles/LicenseManager/Binaries/Linux/mathlm
# cd /localdir/Installers/Linux/
# ./MathInstaller

Вы также можете установить ELF brand по умолчанию в Linux brand с помощью команды:

# sysctl -w kern.fallback_elf_brand=3

Это заставит FreeBSD думать о том, что все программы не обработанные brandelf(1) используют Linux ABI и Вы сможете запустить MathInstaller прямо с CDROM.

22.3.2 Пароль к пакету Mathematica

Вам необходимо зарегистрировать свою копию пакета Mathematica и получить от Wolfram специальный пароль, соответствующий ``идентификатор машины''.

После того, как Вы установили необходимые библиотеки и распаковали файлы Mathematica, получите ``идентификатор машины'', запустив программу mathinfo в инсталляционной директории. Идентификатор машины зависит от MAC-адреса Вашей первой ethernet-карточки.

# cd /localdir/Files/SystemFiles/Installation/Binaries/Linux
# mathinfo
disco.example.com 7115-70839-20412

При регистрации, либо по телефону или факсу, либо по электронной почте, Вы сообщаете Ваш ``идентификатор машины'', а в ответ получаете пароль, состоящий из нескольких чисел. Введите этот пароль при первом запуске Mathematica.

22.3.3 Внешний интерфейс пакета Mathematica

Mathematica использует специальные шрифты для отображения некоторых символов, которые отсутствуют в стандартных шрифтах (символы интегралов, сумм, греческий алфавит и другие). Протокол X требует, чтобы эти шрифты были установлены локально. Это означает, что Вы должны скопировать эти шрифты с компакт диска или сетевого узла на Ваш жесткий диск. Обычно, все шрифты должны находиться в каталоге /cdrom/Unix/Files/SystemFiles/Fonts компакт диска или /usr/local/mathematica/SystemFiles/Fonts на винчестере. Собственно файлы со шрифтами находятся в подкаталогах Type1 и X. О том, как их использовать, читайте ниже.

Можно просто скопировать их в один из существующих подкаталогов в директории /usr/X11R6/lib/X11/fonts. В этом случае, Вам потребуется отредактировать файл fonts.dir, добавив в него названия шрифтов и изменив число шрифтов в первой строке. Или Вы можете запустить программу mkfontdir, находясь в том каталоге, куда Вы скопировали шрифты.

Есть альтернативный способ: скопировать директории в каталог /usr/X11R6/lib/X11/fonts:

# cd /usr/X11R6/lib/X11/fonts
# mkdir X
# mkdir MathType1
# cd /cdrom/Unix/Files/SystemFiles/Fonts
# cp X/* /usr/X11R6/lib/X11/fonts/X
# cp Type1/* /usr/X11R6/lib/X11/fonts/MathType1
# cd /usr/X11R6/lib/X11/fonts/X
# mkfontdir
# cd ../MathType1
# mkfontdir

Теперь добавьте каталоги с новыми шрифтами в путь к шрифтам:

# xset fp+ /usr/X11R6/lib/X11/fonts/X
# xset fp+ /usr/X11R6/lib/X11/fonts/MathType1
# xset fp rehash

Если Вы используете XFree86, то можно просто прописать эти каталоги в файле XF86Config.

Если на Вашем компьютере нет каталога /usr/X11R6/lib/X11/fonts/Type1, то замените MathType1 на Type1 в предыдущем примере.

Этот, и другие документы, могут быть скачаны с ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

По вопросам связанными с FreeBSD, прочитайте документацию прежде чем писать в <questions@FreeBSD.org>.
По вопросам связанным с этой документацией, пишите <doc@FreeBSD.org>.
По вопросам связанным с русским переводом документации, пишите <frdp@FreeBSD.org.ua>.


Руководство FreeBSDPrevChapter 22 Работа с приложениями, написанными для LinuxNext

22.4 Установка Oracle

Автор Marcel Moolenaar

22.4.1 Введение

Ниже описан процесс установки Oracle 8.0.5 и Oracle 8.0.5.1 Enterprise Edition для Linux на систему с FreeBSD.

22.4.2 Настройка Linux окружения

Удостоверьтесь, что порты linux_base и linux_devtools установлены на Вашей системе. Они появились в коллекции портов после выхода FreeBSD 3.2. Если Вы используете FreeBSD 3.2 или более раннюю, обновите коллекцию портов. Нелишним будет и апгрейд до более поздней версии FreeBSD. Если у Вас возникнут трудности с linux_base-6.1 или linux_devtools-6.1, воспользуйтесь версией 5.2 этих пакетов.

Если Вы хотите использовать intelligent agent, Вам также понадобится TCL пакет от Red Hat: tcl-8.0.3-20.i386.rpm. Для этого воспользуйтесь следующей командой:

# rpm -i --ignoreos --root /compat/linux --dbpath /var/lib/rpm package

Установка этого пакета должна пройти без каких-либо ошибок.

22.4.3 Настройка окружения Oracle

Прежде чем Вы сможете установить Oracle, Вам необходимо обеспечить нужное окружение. Ниже описывается, что конкретно нужно сделать, чтобы успешно запускать Oracle для Linux под FreeBSD. За общими сведениями обратитесь к фирменному руководству по инсталляции Oracle.

22.4.3.1 Настройка ядра

Как описывается в руководстве по инсталляции, необходимо установить максимальный размер разделяемой памяти. Не используйте SHMMAX под FreeBSD. SHMMAX высчитывается, исходя из SHMMAXPGS и PGSIZE. Следовательно, нужно задавать SHMMAXPGS. За информацией о прочих опциях обратитесь к фирменному руководству:

options SHMMAXPGS=10000
options SHMMNI=100
options SHMSEG=10
options SEMMNS=200
options SEMMNI=70
options SEMMSL=61

Установите эти опции в зависимости от того, как и для чего Вы будете использовать Oracle.

Не забудьте добавить следующие строки в файл конфигурации ядра:

options SYSVSHM # разделяемая память SysV
options SYSVSEM # семафоры SysV
options SYSVMSG # межпроцессное взаимодействие SysV

22.4.3.2 Oracle аккаунт

Вам нужно создать специальный Oracle аккаунт, как и любой другой аккаунт. Единственное отличие в том, что Вы должны указать для него командный интерпретатор Linux: /compat/linux/bin/bash. Не забудьте добавить /compat/linux/bin/bash в файл /etc/shells.

22.4.3.3 Переменные окружения

Кроме стандартных переменных окружения, таких как ORACLE_HOME и ORACLE_SID, Вам нужно будет установить следующие дополнительные переменные:

ПеременнаяЗначение
LD_LIBRARY_PATH$ORACLE_HOME/lib
CLASSPATH$ORACLE_HOME/jdbc/lib/classes111.zip
PATH/compat/linux/bin /compat/linux/sbin /compat/linux/usr/bin /compat/linux/usr/sbin /bin /sbin /usr/bin /usr/sbin /usr/local/bin $ORACLE_HOME/bin

Желательно устанавливать их в файле .profile. Вот реальный пример:

ORACLE_BASE=/oracle; export ORACLE_BASE
ORACLE_HOME=/oracle; export ORACLE_HOME
LD_LIBRARY_PATH=$ORACLE_HOME/lib
export LD_LIBRARY_PATH
ORACLE_SID=ORCL; export ORACLE_SID
ORACLE_TERM=386x; export ORACLE_TERM
CLASSPATH=$ORACLE_HOME/jdbc/lib/classes111.zip
export CLASSPATH
PATH=/compat/linux/bin:/compat/linux/sbin:/compat/linux/usr/bin:/compat/linux/usr/sbin:/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:$ORACLE_HOME/bin
export PATH

22.4.4 Инсталляция Oracle

Из-за небольшой несовместимости с Linux эмулятором, Вам нужно будет создать подкаталог .oracle в директории /var/tmp прежде чем можно будет начать инсталляцию. Либо сделайте ее владельцем пользователя oracle, либо поставьте права на запись для всех. Если Вы все сделали правильно, то инсталляция должна пройти без проблем. Если какие-либо трудности все же возникли, проверьте еще раз все конфигурационные файлы и целостность дистрибутива. После окончания установки, приложите патчи (смотрите следующие две секции).

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

# cd $ORACLE_HOME/network/lib
# make -f ins_network.mk ntcontab.o
# cd $ORACLE_HOME/lib
# ar r libnetwork.a ntcontab.o
# cd $ORACLE_HOME/network/lib
# make -f ins_network.mk install

Не забудьте повторно запустить root.sh!

22.4.4.1 Модификация root.sh

Инсталлируя Oracle, необходимо выполнить некоторые действия (имея при этом привилегии суперпользователя). Фактически это сводится к выполнению скрипта root.sh, который находится в директории orainst. Перед запуском, приложите к нему следующий патч (исправляет местонахождение утилиты chown), либо запускайте его в командном интерпретаторе Linux.

*** orainst/root.sh.orig Tue Oct 6 21:57:33 1998
--- orainst/root.sh Mon Dec 28 15:58:53 1998
***************
*** 31,37 ****
# This is the default value for CHOWN
# It will redefined later in this script for those ports
# which have it conditionally defined in ss_install.h
! CHOWN=/bin/chown
#
# Define variables to be used in this script
--- 31,37 ----
# This is the default value for CHOWN
# It will redefined later in this script for those ports
# which have it conditionally defined in ss_install.h
! CHOWN=/usr/sbin/chown
#
# Define variables to be used in this script

Если Вы инсталлируете Oracle не с компакт диска, то можно модифицировать файл rthd.sh, который находится в директории orainst.

22.4.4.2 Модификация genclntsh

Скрипт genclntsh используется для того, чтобы создать единую разделяемую клиентскую библиотеку. Приложите следующий патч, чтобы закомментировать определение переменной PATH:

*** bin/genclntsh.orig Wed Sep 30 07:37:19 1998
--- bin/genclntsh Tue Dec 22 15:36:49 1998
***************
*** 32,38 ****
#
# Explicit path to ensure that we're using the correct commands
#PATH=/usr/bin:/usr/ccs/bin export PATH
! PATH=/usr/local/bin:/bin:/usr/bin:/usr/X11R6/bin export PATH
#
# each product MUST provide a $PRODUCT/admin/shrept.lst
--- 32,38 ----
#
# Explicit path to ensure that we're using the correct commands
#PATH=/usr/bin:/usr/ccs/bin export PATH
! #PATH=/usr/local/bin:/bin:/usr/bin:/usr/X11R6/bin export PATH
#
# each product MUST provide a $PRODUCT/admin/shrept.lst

22.4.5 Запуск и использование Oracle

Теперь, если Вы все сделали правильно, то можете использовать Oracle так же, как если бы Вы поставили его на Linux систему.

Этот, и другие документы, могут быть скачаны с ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

По вопросам связанными с FreeBSD, прочитайте документацию прежде чем писать в <questions@FreeBSD.org>.
По вопросам связанным с этой документацией, пишите <doc@FreeBSD.org>.
По вопросам связанным с русским переводом документации, пишите <frdp@FreeBSD.org.ua>.


Руководство FreeBSDPrevNext

Chapter 22 Работа с приложениями, написанными для Linux

Table of Contents
22.1 Краткий обзор
22.2 Инсталляция
22.3 Установка пакета Mathematica
22.4 Установка Oracle
22.5 Дополнительные сведения

Реструктурировал и частично дополнил Jim Mock , 22 марта 2000. Оригинальная версия Brian N. Handy и Rich Murphey

22.1 Краткий обзор

В этой главе будет рассказано о том, каким образом можно запускать приложения, изначально написанные для Linux, под FreeBSD и что нужно для этого сделать.

Возможно, Вы спрашиваете себя, зачем FreeBSD нужно уметь работать с приложениями, написанными для Linux. Ответ на этот вопрос достаточно прост: многие компании и разработчики производят программное обеспечение только для Linux, так как эта операционная система очень быстро завоевала огромную популярность в компьютерном мире. Пользователям же FreeBSD приходится обращаться к этим компаниям и разработчикам с просьбами выпустить версии своих программ специально для FreeBSD. Проблема в том, что большинство производителей программного обеспечения не осознают, насколько бы увеличился их рынок сбыта, выпускай они FreeBSD версии наряду с Linux версиями, и продолжают разрабатывать только под Linux. Что же делать пользователям FreeBSD? В этой ситуации на помощь приходит Linux эмуляция.

Вкратце, FreeBSD позволяет Вам работать с 90% приложений для Linux без каких-либо модификаций последних. Среди них: Star Office, Linux версия Netscape, Adobe Acrobat, RealPlayer 5 и 7, VMWare, Oracle, WordPerfect, Doom, Quake и многие другие. Есть сведения, что в некоторых ситуациях эти Linux программы показывали более высокую производительность при работе под FreeBSD, чем под Linux.

Конечно, существует некоторые особенности Linux, которые (пока) не поддерживаются в полной мере FreeBSD. Например, так обстоят дела с приложениями Linux, использующими файловую систему /proc, так как реализация последней сильно отличается от таковой в FreeBSD (однако, ситуация меняется к лучшему: в FreeBSD-CURRENT поддержка Linux procfs уже встроена в систему). Существуют также системные вызовы, специфичные для i386, как, например, переключение в режим V86.

О том, как установить поддержку запуска Linux программ, читайте в следующей секции.

Этот, и другие документы, могут быть скачаны с ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

По вопросам связанными с FreeBSD, прочитайте документацию прежде чем писать в <questions@FreeBSD.org>.
По вопросам связанным с этой документацией, пишите <doc@FreeBSD.org>.
По вопросам связанным с русским переводом документации, пишите <frdp@FreeBSD.org.ua>.


Руководство FreeBSDPrevChapter 20 Электронная почтаNext

20.4 Настройка почтового сервера для обслуживания всего домена

20.4.1 Базовая конфигурация

Изначально, Вы можете отправлять почту ``во внешний мир'' если у Вас правильно составлен файл /etc/resolv.conf или у Вас запущен свой сервер имен. Если Вы хотите, чтобы почта, предназначенная для хоста в Вашем домене, доставлялась по назначению, есть два пути:

В любом случае, чтобы почта всегда приходила на Ваш хост, Вам нужно иметь постоянный (статический) IP адрес (а не, например, PPP-соединение). Если Вы находитесь за брандмауэром, то последний должен пропускать SMTP-пакеты.

Если Вы хотите, чтобы почта приходила непосредственно на Ваш хост:

Выполнение любого из перечисленных условий обеспечит доставку почты для Вашего хоста.

Попробуйте это:

# hostname
example.FreeBSD.org
# host example.FreeBSD.org
example.FreeBSD.org has address 204.216.27.XX

Если Вы это видите, то можно без проблем посылать почту на .

Однако, если Вы видите это:

# host example.FreeBSD.org
example.FreeBSD.org has address 204.216.27.XX
example.FreeBSD.org mail is handled (pri=10) by hub.FreeBSD.org

то вся почта, посланная на example.FreeBSD.org будет собираться на hub (для того же пользователя), вместо того, чтобы быть отосланной непосредственно на Ваш хост.

Эта информация обрабатывается Вашим DNS сервером. Соответствующая запись DNS, указывающая, через какой хост будет проходить Ваша почта, называется MX (от англ. Mail eXchanger). Если для хоста отсутствует такая запись, почта будет прихоть прямо на этот хост.

Допустим, что запись MX для хоста freefall.FreeBSD.org в какой-то момент выглядела так:

freefall		MX	30	mail.crl.net
freefall		MX	40	agora.rdrop.com
freefall		MX	10	freefall.FreeBSD.org
freefall		MX	20	who.cdrom.com

Вы видите, что для хоста freefall существуют несколько MX-записей. Запись с наименьшим номером соответствует хосту, на который в конце-концов попадет почта для freefall; другие будут временно сохранять почту для freefall, если тот по какой-либо причине недоступен.

Чтобы альтернативные MX-хосты использовались наиболее эффективно, они должны быть независимо подключены к Интернет. Ваш провайдер (или дружественный сайт) скорее всего без проблем сможет оказать подобные услуги.

20.4.2 Почта для Вашего домена

Вам может понадобиться создать почтовый сервер, который будет ``перехватывать'' почту, адресованную рабочим станциям в Вашем домене. Затем пользователи будут забирать почту либо непосредственно с сервера, либо по протоколам POP или IMAP.

Чтобы облегчить себе (и другим) жизнь, создайте на обеих машинах аккаунты с одинаковыми именами пользователей, например, с помощью команды adduser.

Сервер, который Вы будете использовать в качестве почтового, должен быть объявлен таковым для каждой машины в домене. Вот фрагмент примерной конфигурации:

example.FreeBSD.org	A	204.216.27.XX		; Рабочая станция
			MX	10 hub.FreeBSD.org	; Почтовый шлюз

Таким образом, вся корреспонденция, адресованная рабочей станции, будет обрабатываться Вашим почтовым сервером, независимо от того, что указано в A-записи.

Все это можно реализовать только в том случае, если Вы используете сервер DNS. Если Вы по каким-либо причинам не имеете возможности установить свой собственный сервер имен, Вам нужно поговорить с Вашим провайдером услуг Интернет о предоставлении сервиса DNS для Вас.

Если Вы хотите поддерживать несколько виртуальных почтовых серверов, Вам может пригодиться следующая информация. Допустим, что Ваш клиент зарезервировал домен, например, customer1.org, и Вам требуется, чтобы почта, предназначенная для customer1.org приходила на Ваш хост, например, mail.myhost.com. В таком случае, DNS должен выглядеть так:

customer1.org		MX	10	mail.myhost.com

Заметьте, что если Вам требуется только получать почту для домена, соответствующая A-запись не нужна.

Note: Помните, что если Вы попытаетесь каким-либо образом обратиться к хосту customer1.org, у Вас вряд ли что-либо получится, если нет A-записи для этого хоста.

Последнее, что Вы должны сделать - это сказать программе sendmail, для каких доменов и/или хостов она должна принимать почту. Это можно сделать несколькими способами:

Этот, и другие документы, могут быть скачаны с ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

По вопросам связанными с FreeBSD, прочитайте документацию прежде чем писать в <questions@FreeBSD.org>.
По вопросам связанным с этой документацией, пишите <doc@FreeBSD.org>.
По вопросам связанным с русским переводом документации, пишите <frdp@FreeBSD.org.ua>.


Руководство FreeBSDPrevChapter 20 Электронная почтаNext

20.3 Поиск и устранение неисправностей

Вот несколько часто задаваемых вопросов и ответов на них, взятых, в основном, из FAQ.

20.3.1. Почему я должен использовать FQDN для хостов вне моей подсети?
20.3.2. Sendmail выдает ошибку ``mail loops back to myself''
20.3.3. Как работать с электронной почтой при коммутируемом соединении с Интернет?

20.3.1. Почему я должен использовать FQDN для хостов вне моей подсети?

Вы, видимо, обнаружили, что хост, к которому Вы обратились, оказался на самом деле в другом домене; например, если Вы находитесь в домене foo.bar.edu и хотите обратиться к хосту mumble в домене bar.edu, то должны указать его полное доменное имя, mumble.bar.edu, а не просто mumble.

Традиционно, ресолверы (распознаватели) BSD BIND позволяли это делать. Однако, текущая версия BIND, поставляемая с FreeBSD, больше не добавляет имена доменов, отличающихся от того, в котором Вы находитесь, для не полностью указанных имен хостов. То есть, имя mumble будет опознан как mumble.foo.bar.edu или будет искаться в корневом домене.

Это отличается от предыдущего поведения, при котором поиск продолжался в доменах mumble.bar.edu и mumble.edu. Если Вам интересны причины объявления такого поведения плохой практикой и даже ошибкой в безопасности, обратитесь к RFC 1535.

Хорошим решением будет поместить строку

search foo.bar.edu bar.edu
вместо ранее используемой:
domain foo.bar.edu
в файл /etc/resolv.conf. Однако удостоверьтесь, что порядок поиска не нарушает ``границ полномочий между локальным и внешним администрирования'', в терминологии RFC 1535.

20.3.2. Sendmail выдает ошибку ``mail loops back to myself''

В FAQ по sendmail дан следующий ответ:

* Выдаются сообщения ``Local configuration error'', например:

553 relay.domain.net config error: mail loops back to myself
554 <user@domain.net>... Local configuration error

Как можно решить эту проблему?

Согласно записям MX, почта для домена domain.net перенаправляется на хост
relay.domain.net, однако последний не распознается как
domain.net.  Добавьте domain.net в файл
/etc/sendmail.cw (если Вы используете
FETURE(use_cw_file)) или добавьте ``Cw domain.net'' в файл
/etc/sendmail.cf.

Текущая версия этого FAQ больше не поставляется вместе с sendmail. Однако, этот документ регулярно помещается в конференциях comp.mail.sendmail, comp.mail.misc, comp.mail.smail, comp.answers и news.answers. Вы можете получить копию по электронной почте, послав запрос, содержащий команду ``send usenet/news.answers/mail/sendmail-faq'' в теле письма, по адресу .

20.3.3. Как работать с электронной почтой при коммутируемом соединении с Интернет?

Вы можете подключить к Интернет FreeBSD машину в локальной сети, которая будет ``промежуточным звеном'' в доставке Вашей почты. Для этого существует по крайней мере два способа. Или, в качестве альтернативы, Вы можете воспользоваться UUCP.

Прежде всего, Вам необходимо убедиться, что провайдер обеспечивает дополнительный MX-сервис для Вашего домена, например:

bigco.com.            MX        10      bigco.com.
                      MX        20      smalliap.com.

Только один хост должен быть указан в качестве последнего получателя (добавьте запись Cw bigco.com в файл /etc/sendmail.cf на машине bigco.com).

Когда программа sendmail (со стороны отправителя) ``захочет'' доставить почту, она попытается установить Интернет-соединение через модем. Скорее всего, ей это не удастся (в произвольный момент времени Вы, вероятнее всего, не будете подключены к Интернет), и она автоматически перейдет ко второму серверу, т.е. Вашему провайдеру Интернет, который, в свою очередь, будет пытаться установить соединение в Вашим компьютером каждые (sendmail_flags = -bd -q15m в файле /etc/rc.conf) 15 минут, чтобы доставить почту.

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

#!/bin/sh
# Put me in /usr/local/bin/pppbigco
( sleep 60 ; /usr/sbin/sendmail -q ) &
/usr/sbin/ppp -direct pppbigco

Если же Вы хотите написать отдельный пользовательский скрипт, лучше воспользоваться командой sendmail -qRbigco.com вместо вышеприведенного сценария, так как в этом случае вся почта в очереди для хоста bigco.com будет обработана немедленно.

Рассмотрим эту ситуацию подробнее.

Вот пример сообщения от Список рассылки, посвящённый использованию FreeBSD у провайдеров Интернет услуг (ISP).

> мы предоставляем вторичный MX для наших клиентов.  Вы соединяетесь
> с нашим сервером несколько раз в день чтобы забрать почту для Вашего
> первичного (главного) MX (мы не соединяемся с ним каждый раз, когда
> приходит новая почта для его доменов).  Далее, sendmail отправляет
> почту, находящуюся в очереди каждые 30 минут, и клиент должен быть
> подключен к Интернет в течении 30 минут, чтобы удостовериться, что
> вся почта ``ушла'' на основной MX-сервер.
>
> Может быть, есть какая-либо команда, которая заставит sendmail
> немедленно отправить все почту, находящуюся в очереди?  Естественно,
> пользователи не обладают какими-либо повышенными привилегиями на
> нашем сервере.

В секции ``privacy flags'' файла
sendmail.cf, определяется опция
Opgoaway,restrictqrun

Уберите restrictqrun, чтобы разрешить рядовым
пользователям инициировать работу с очередью.  Вам также может понадобиться
изменить порядок MX-серверов.  Так, если Вы являетесь первым (основным) MX-сервером, укажите:

# If we are the best MX for a host, try directly instead of generating
# local config error.
OwTrue

Таким образом, удаленный хост будет доставлять почту непосредственно к Вам,
не пытаясь установить соединение с клиентом. Затем уже Вы, в свою очередь,
отсылаете ее клиенту.  Удостоверьтесь, что в DNS есть записи про
``customer.com'' и ``hostname.customer.com''.  Просто
добавьте запись A в DNS для ``customer.com''.

Этот, и другие документы, могут быть скачаны с ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

По вопросам связанными с FreeBSD, прочитайте документацию прежде чем писать в <questions@FreeBSD.org>.
По вопросам связанным с этой документацией, пишите <doc@FreeBSD.org>.
По вопросам связанным с русским переводом документации, пишите <frdp@FreeBSD.org.ua>.


Руководство FreeBSDPrevChapter 20 Электронная почтаNext

20.2 Использование электронной почты

За отправку/получение почты отвечают четыре программы (сервиса): пользовательский почтовый клиент, почтовый сервер (демон), сервер DNS, POP или IMAP демон.

20.2.1 Пользовательский почтовый клиент

Обычно, это программа типа mutt, pine, elm, и mail, а также программы с графическим интерфейсом, такие, как balsa или xfmail, или интегрированные приложения (например, какой-либо WWW браузер типа Netscape). Все эти программы общаются с локальным почтовым сервером, вызывая какой-либо демон, или напрямую по протоколу TCP.

20.2.2 Почтовый демон

Обычно это sendmail (поставляется вместе с FreeBSD), однако, им может быть любая из нижеперечисленных программ: qmail, postfix или exim. Остальные менее распространены.

Почтовый демон выполняет только две функции: принимает входящую почту и отправляет исходящую. Чтобы забирать/отправлять почту по протоколам POP или IMAP, нужен специальный дополнительный демон.

Имейте ввиду, что старые версии sendmail имели серьезные проблемы с безопасностью, поэтому старайтесь всегда использовать последнюю версию. Это правило, кстати, справедливо в отношении практически любых программных продуктов.

20.2.3 Email и DNS

Служба имен доменов (Domain Name System, DNS) и соответствующий ей демон named играют важную роль в доставке почты. DNS содержит базу данных соответствия между именем домена и IP адресом, и между именем домена и почтовым сервером. IP адрес задается в записи A. Запись MX (Mail eXchanger) указывает компьютер, который обрабатывает корреспонденцию для данного домена. Если для Вашего хоста запись MX отсутствует, почта будет доставляться непосредственно на Ваш хост.

20.2.4 Получение почты

Полученную корреспонденцию почтовый сервер сохраняет для последующего чтения. Вы можете читать почту непосредственно на сервере, или забирать ее по протоколам POP или IMAP.

Чтобы настроить POP или IMAP сервер, нужно сделать две вещи:

  1. Поставить POP или IMAP сервер из коллекции портов.

  2. Прописать в файле /etc/inetd.conf POP или IMAP демон.

Этот, и другие документы, могут быть скачаны с ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

По вопросам связанными с FreeBSD, прочитайте документацию прежде чем писать в <questions@FreeBSD.org>.
По вопросам связанным с этой документацией, пишите <doc@FreeBSD.org>.
По вопросам связанным с русским переводом документации, пишите <frdp@FreeBSD.org.ua>.


Руководство FreeBSDPrevNext

Chapter 20 Электронная почта

Table of Contents
20.1 Краткий обзор
20.2 Использование электронной почты
20.3 Поиск и устранение неисправностей
20.4 Настройка почтового сервера для обслуживания всего домена
Оригинальная версия: Bill Lloyd. Переписал Jim Mock.

20.1 Краткий обзор

Электронная почта является на сегодняшний день одним из самых популярных средств связи. Миллионы людей используют ее каждый день, и их число растет. И если Вы читаете этот текст, то, вероятно, тоже пользуетесь услугами электронной почты, и у Вас даже не один почтовый ящик.

Настройке электронной почты посвящено немало страниц многочисленных системных руководств, так что у Вас не должно возникнуть проблем с настройкой почтового сервера.

Возможно, при настройке сервера Вам понадобится также настроить сервер доменных имен (Domain Name Server, DNS). В этом случае, обязательно прочитайте файл /etc/namedb и страницу руководства по команде named(8).

Этот, и другие документы, могут быть скачаны с ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

По вопросам связанными с FreeBSD, прочитайте документацию прежде чем писать в <questions@FreeBSD.org>.
По вопросам связанным с этой документацией, пишите <doc@FreeBSD.org>.
По вопросам связанным с русским переводом документации, пишите <frdp@FreeBSD.org.ua>.


Руководство FreeBSDPrevAppendix A. Где достать FreeBSDNext

A.5 AFS Сервера

AFS сервера для FreeBSD работают на следующих сайтах:

Швеция

Путь к файлам: /afs/stacken.kth.se/ftp/pub/FreeBSD/

stacken.kth.se         # Stacken Computer Club, KTH, Sweden                    
130.237.234.43         #hot.stacken.kth.se
130.237.237.230        #fishburger.stacken.kth.se
130.237.234.3          #milko.stacken.kth.se

Ответственный

Этот, и другие документы, могут быть скачаны с ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

По вопросам связанными с FreeBSD, прочитайте документацию прежде чем писать в <questions@FreeBSD.org>.
По вопросам связанным с этой документацией, пишите <doc@FreeBSD.org>.
По вопросам связанным с русским переводом документации, пишите <frdp@FreeBSD.org.ua>.


Руководство FreeBSDPrevAppendix A. Где достать FreeBSDNext

A.3 CTM Сервера

CTM/FreeBSD доступно посредством анонимного FTP с нижеприведенных зеркал. Если Вы хотите получать CTM посредством анонимного FTP, пожалуйста попытайтесь использовать ближайшее к Вам зеркало.

В случае проблем, пожалуйста свяжитесь с Poul-Henning Kamp

Калифорния, Bay Area, официальный сервер

Германия, Триер

Южная Африка, резервный сервер для старых дельт

Тайвань, Чияи

Если Вы не нашли зеркало достаточно близкое к Вам или список зеркал неполон, попробуйте FTP Поиск с http://ftpsearch.ntnu.no/ftpsearch. FTP Поиск -- это отличный, бесплатный archie сервер в Трондхемие, Норвегия.

Этот, и другие документы, могут быть скачаны с ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

По вопросам связанными с FreeBSD, прочитайте документацию прежде чем писать в <questions@FreeBSD.org>.
По вопросам связанным с этой документацией, пишите <doc@FreeBSD.org>.
По вопросам связанным с русским переводом документации, пишите <frdp@FreeBSD.org.ua>.


Руководство FreeBSDPrevAppendix A. Где достать FreeBSDNext

A.4 CVSup Сервера

CVSup сервера для FreeBSD работают на следующих сайтах:

Аргентина

Австралия

Австрия

Бразилия

Канада

  • cvsup.ca.FreeBSD.org (ответственный )

Китай

Чешская Республика

Дания

Эстония

Финляндия

Франция

Германия

Исландия

  • cvsup.is.FreeBSD.org (ответственный )

Япония

Корея

Нидерланды

Норвегия

Польша

Португалия

Россия

Словацкая Республика

  • cvsup.sk.FreeBSD.org (ответственный )

  • cvsup2.sk.FreeBSD.org (ответственный )

Словения

Южная Африка

Испания

Швеция

Тайвань

Украина

Англия

США

Ограниченный к экспорту исходный код FreeBSD (eBones и secure) доступны посредством CVSup с нижеприведенного международного репозитория. Пожалуйста используйте этот сайт для получения ограниченных к экспорту кодов, если Вы живете за пределами США или Канады.

Южная Африка

Учитывая, что этот сервер обычно сильно загружен, Вы можете использовать одно из его зеркал для получения кодов ограниченных к экспорту из США.

Дания

Германия

United Kingdom

Следующие CVSup сервера специально предназначены для пользователей CTM. В отличии от других CVSup зеркал, этот сервер обновляется посредством CTM. Это означает, что если Вы будете обновляться посредством CVSup с release=cvs с этого сайта, Вы получите версию репозитория (включая неизбежный файл .ctm_status), которая подходит для обновления с использованием CTM cvs-cur дельт. Это позволит пользователям, кто следит за всем cvs-all деревом перейти от CVSup к CTM без необходимости перестраивать Ваш репозиторий с самого начала используя свежие базовые дельты CTM.

Note: Эта особенность поддерживается только для cvs-all дистрибуции с релиз тэгом cvs. Обновление посредством CVSup любой другой дистрибуции и/или релиза даст вам указанную дистрибуцию, но не приспособленную для обновления посредством CTM.

Note: Учитывая, что CTM не сохраняет время и дату создания файлов (timestamps), то время и дата создания файлов на этом зеркале будут отличаться от других зеркал. Переключение между этим и другими зеркалами не рекомендуется. Это будет работать абсолютно корректно, но будет очень неэффективно.

Германия

Этот, и другие документы, могут быть скачаны с ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

По вопросам связанными с FreeBSD, прочитайте документацию прежде чем писать в <questions@FreeBSD.org>.
По вопросам связанным с этой документацией, пишите <doc@FreeBSD.org>.
По вопросам связанным с русским переводом документации, пишите <frdp@FreeBSD.org.ua>.


Руководство FreeBSDPrevAppendix A. Где достать FreeBSDNext

A.2 FTP Сервера

Официальные исходные тексты и дистрибутивы доступны посредством анонимного FTP c:

ftp://ftp.FreeBSD.org/pub/FreeBSD/.

База Данных по зеркалам FreeBSD более аккуратна, чем этот список Зеркал в Руководстве, так как ее информация формируется на основе DNS, а не базируясь на статическом списке сайтов.

В дополнение, FreeBSD доступна со следующих FTP Зеркал. Если Вы хотите получить FreeBSD посредством анонимного FTP, пожалуйста воспользуйтесь ближайшим к Вам зеркалом.

Аргентина, Авcтралия, Бразилия, Канада, Китай, Чешская республика, Дания, Эстония, Финляндия, Франция, Germany, Гон Конг, Ирландия, Израиль, Япония, Корея, Нидерланды, Новая Зеландия, Польша, Португалия, Россия, Саудовская Аравия, Южная Африка, Испания, Словацкая Республика, Словения, Швеция, Тайвань, Таиланд, Англия, Украина, США.

Аргентина

В случае проблем, пожалуйста свяжитесь с хостмастером этого домена.

Австралия

В случае проблем, пожалуйста свяжитесь с хостмастером этого домена.

Бразилия

В случае проблем, пожалуйста свяжитесь с хостмастером этого домена.

Канада

В случае проблем, пожалуйста свяжитесь с хостмастером этого домена.

Китай

В случае проблем, пожалуйста свяжитесь с хостмастером этого домена.

Чешская Республика

В случае проблем, пожалуйста свяжитесь с хостмастером этого домена.

Дания

В случае проблем, пожалуйста свяжитесь с хостмастером этого домена.

Эстония

В случае проблем, пожалуйста свяжитесь с хостмастером этого домена.

Финляндия

В случае проблем, пожалуйста свяжитесь с хостмастером этого домена.

Франция

В случае проблем, пожалуйста свяжитесь с хостмастером этого домена.

Германия

В случае проблем, пожалуйста свяжитесь с хостмастером этого домена.

Гон Конг

Ирландия

В случае проблем, пожалуйста свяжитесь с хостмастером этого домена.

Израиль

В случае проблем, пожалуйста свяжитесь с хостмастером этого домена.

Япония

В случае проблем, пожалуйста свяжитесь с хостмастером этого домена.

Корея

В случае проблем, пожалуйста свяжитесь с хостмастером этого домена.

Нидерланды

В случае проблем, пожалуйста свяжитесь с хостмастером этого домена.

Новая Зеландия

В случае проблем, пожалуйста свяжитесь с хостмастером этого домена.

Польша

В случае проблем, пожалуйста свяжитесь с хостмастером этого домена.

Португалия

В случае проблем, пожалуйста свяжитесь с хостмастером этого домена.

Россия

В случае проблем, пожалуйста свяжитесь с хостмастером этого домена.

Саудовская Аравия

В случае проблем, пожалуйста свяжитесь с

Южная Африка

В случае проблем, пожалуйста свяжитесь с хостмастером этого домена.

In case of problems, please contact the hostmaster for this domain.

Словацкая Республика

В случае проблем, пожалуйста свяжитесь с хостмастером этого домена.

Словения

В случае проблем, пожалуйста свяжитесь с хостмастером этого домена.

Испания

В случае проблем, пожалуйста свяжитесь с хостмастером этого домена.

Швеция

В случае проблем, пожалуйста свяжитесь с хостмастером этого домена.

Тайвань

В случае проблем, пожалуйста свяжитесь с хостмастером этого домена.

Таиланд

Украина

Англия

В случае проблем, пожалуйста свяжитесь с хостмастером этого домена.

США

В случае проблем, пожалуйста свяжитесь с хостмастером этого домена.

Последние версии ограниченных к экспорту исходных текстов для FreeBSD (2.0 или позднее) (eBones и secure) доступны со следующих сайтов. Если Вы живете не в США или Канаде, пожалуйста получите secure (DES) и eBones (Kerberos) с одного из следующих зарубежных сайтов:

Южная Африка

Хостмастер этого домена .

Бразилия

Хостмастер этого домена .

Финляндия

Этот, и другие документы, могут быть скачаны с ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

По вопросам связанными с FreeBSD, прочитайте документацию прежде чем писать в <questions@FreeBSD.org>.
По вопросам связанным с этой документацией, пишите <doc@FreeBSD.org>.
По вопросам связанным с русским переводом документации, пишите <frdp@FreeBSD.org.ua>.


Руководство FreeBSDPrevNext

Appendix A. Где достать FreeBSD

Table of Contents
A.1 Производители CD-ROM
A.2 FTP Сервера
A.3 CTM Сервера
A.4 CVSup Сервера
A.5 AFS Сервера

A.1 Производители CD-ROM

FreeBSD доступен на CD-ROM от Walnut Creek CDROM:

Walnut Creek CDROM
4041 Pike Lane, Suite F
Concord
CA94520
USA
Телефон: +1 925 674-0783
Факс: +1 925 674-0821
Email: 
WWW: http://www.cdrom.com/
      

Этот, и другие документы, могут быть скачаны с ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

По вопросам связанными с FreeBSD, прочитайте документацию прежде чем писать в <questions@FreeBSD.org>.
По вопросам связанным с этой документацией, пишите <doc@FreeBSD.org>.
По вопросам связанным с русским переводом документации, пишите <frdp@FreeBSD.org.ua>.


Руководство FreeBSD
Prev Chapter 10. Сложные вопросы работы в сети Next

10.4. NFS

Этот раздел написал Bill Swingle , 4 марта 2000.

Среди многих типов файловых систем, которые поддерживаются во FreeBSD, особое место занимает система Network File System, или NFS. NFS позволяет вам использовать каталоги и файлы, находящиеся на одной машине, совместно с еще одной или несколькими машинами по сети, к которой они подключены. При помощи NFS пользователи и программы могут получать доступ к файлам на удаленных системах точно так же, как если бы это были файлы на собственных дисках.

Использование NFS имеет несколько преимуществ:

10.4.1. Как это работает

NFS строится их двух компонент - клиент и сервер. Представляйте их в связке хочу/имею. Клиент хочет данные, которые сервер имеет. Сервер делится своими данными с клиентом. Для того, чтобы эта система нормально функционировала, нужно правильно настроить и запустить несколько процессов.

На сервере работают следующие даемоны:

На стороне клиента должен быть запущен только один-единственный даемон:

10.4.2. Настройка NFS

К счастью для нас, на системах FreeBSD эта настройка проста. Процессы, которые должны быть запущены, все могут быть запущены во время загрузки ценой нескольких модификаций в вашем файле /etc/rc.conf.

Проверьте, что на NFS-сервере у вас есть такие строки:

    nfs_server_enable="YES"
    nfs_server_flags="-u -t -n 4"
    mountd_flags="-r"
        

mountd запускается автоматически, если включен сервер NFS. Флаги -u и -t в команде nfsd указывают на обслуживание клиентов, работающих по протоколам UDP и TCP. Параметр -n 4 указывает команде nfsd на запуск 4 своих копий.

На клиентской строне убедитесь в наличии таких строк:

    nfs_client_enable="YES"
    nfs_client_flags="-n 4"
        

Как и в случае nfsd, параметр -n 4 указывает nfsiod на запуск 4 своих копий.

Последний этап настройки требует создания файла с именем /etc/exports. Файл экспортирования перечисляет, какие файловые системы на вашем сервере будут использоваться совместно с другими машинами (или "экспортироваться"), и с какими именно. Каждая строка в файле описывает файловую систему, которая будет предоставляться на доступ. Имеется полный набор параметров, который можно использовать, но я коснусь только некоторых. Описания остальных параметров можно найти в Справочнике по exports(5).

Вот несколько примерных строк из файла /etc/exports:

В следующей строке экспортируется /cdrom для для трех машинок, находящихся в том же самом домене, что и сервер (из-за отсутствия доменного имени для каждой машины) или которые имеют описания в файле /etc/hosts. Флаг -ro указывает на использование экспортируемой файловой системы в режиме только для чтения. С этим флагом удаленная система не сможет никоим образом изменить экспортируемую файловую систему.

    /cdrom -ro moe larry curly

В следующей строке экспортируется файловая система /home, которая становится доступной трем хостам, указанным по их IP-адресам. Это полезно, если у вас есть собственная сеть, но сервис DNS не используется. Флаг -alldirs позволяет также экспортировать все каталоги, находящиеся ниже в указанной файловой системе.

    /home  -alldirs  10.0.0.2 10.0.0.3 10.0.0.4

В строке, приведенной ниже, файловая система /a экспортируется для двух машин, которые находятся в различных, не совпадающих с серверным, доменах. Флаг -maproot=0 позволяет пользователю root удаленной системы осуществлять запись на совместно используемую файловую систему как пользователь root. Без флага -maproot=0 даже если кто-то имеет права доступа root на удаленной системе, он не сможет модифицировать файлы на совместно используемой файловой системе.

          /a  -maproot=0  host.domain.com box.example.com
        

Для того, чтобы клиент смог использовать экспортированную файловую систему, он должен иметь права сделать это. Проверьте, что клиент указан в вашем файле /etc/exports.

Теперь, после того, как вы сделали все эти изменения, вы можете просто перезагрузиться, а FreeBSD запустит все во время загрузки, либо последовательно запустить следующие команды, работая как пользователь root:

На сервере NFS:

    # nfsd -u -t -n 4
    # mountd -r
        

На клиенте NFS:

    # nfsiod -n 4
        

Теперь вы готовы к реальному монтированию удаленной файловой системы. Это может быть сделано двумя способами. В приводимых примерах сервер будет носить имя server, а клиент будет носить имя client. Если вы просто хотите временно смонтировать удаленную файловую систему, или всего лишь протестировать ваши настройки, то вы можете запустить команды, подобные приводимым здесь, работая как пользователь root на клиентской машине:

    # mount server:/home /mnt
        

По этой команде файловая система /home на сервере будет смонтирована в каталог /mnt на клиенте. Если все настроено правильно, вы сможете перейти в каталог /mnt на клиенте и увидеть файлы, находящиеся на сервере.

Если вы хотите иметь удаленную файловую систему смонтированной постоянно (каждый раз при загрузке), то добавьте ее в ваш файл /etc/fstab. Вот примерная строка:

    server:/home     /mnt    nfs     rw      0   0
        

Read the fstab(5) man page for more options.

10.4.3. Практическое использование

Имеется много способов использовать NFS в работе. Я достаточно часто использую ее в локальной сети, которую администрирую. Вот несколько способов ее полезного применения.

В моей сети имеется несколько машин, но всего лишь на одной из них имеется привод компакт-дисков. Почему? Потому что этот единственный привод используется совместно всеми другими машинами через NFS. То же самое может быть сделано с приводами НГМД.

С таким большим количеством машин ваши личные файлы приходят в беспорядок и распределяются по всем машинам. У меня сделан центральный сервер NFS, на котором размещены все домашние каталоги пользователей и они экспортируются на все другие машины в локальной сети, так что вне зависимости от того, с какой машины я вошел в сеть, я получаю один и тот же домашний каталог.

Когда вы переустанавливаете FreeBSD на одной из ваших машин, это можно делать через NFS. Просто поместите компакт-диск с дистрибутивом на файловый сервер.

Каталог /usr/ports/distfiles у меня является общим для всех машин. Таким образом, когда я устанавливаю порт, который уже устанавливался ранее на другой машине, мне не нужно снова скачивать архив с исходным кодом.

10.4.4. Проблемы взаимодействия с другими системами

Предоставил John Lind .

Некоторые сетевые адаптеры для систем PC с шиной ISA имеют ограничения, которые могут привести к серьезным проблемам в сети, в частности, с NFS. Эти проблемы не специфичны для FreeBSD, однако эту систему они затрагивают.

Проблема, которая возникает практически всегда при работе по сети систем PC (FreeBSD) с высокопроизводительными рабочими станциями, выпущенными такими производителями, как Silicon Graphics, Inc. и Sun Microsystems, Inc. Монтирование по протоколу NFS будет работать нормально, и некоторые операции также будут выполняться успешно, но неожиданно сервер окажется недоступным для клиент, хотя запросы к и от других систем будут продолжаться обрабатываться. Такое встречается с клиентскими системами, не зависимо от того, является ли клиент машиной с FreeBSD или рабочей станцией. Во многих системах при возникновении этой проблемы нет способа корректно завершить работу клиента. Единственным выходом зачастую является холодная перезагрузка клиента, потому что ситуация с NFS не может быть разрешена.

Хотя "правильным" решением является установка более производительного и скоростного сетевого адаптера на систему FreeBSD, имеется простое решение, приводящее к удовлетворительным результатам. Если система FreeBSD является сервером, укажите параметр -w=1024 на клиенте при монтировании. Если система FreeBSD является клиентом, то смонтируйте файловую систему NFS с параметром -r=1024. Эти параметры могут быть заданы в четвертом поле записи в файле fstab клиента при автоматическом монтировании, или при помощи параметра -o в команде mount при монтировании вручную.

Нужно отметить, что имеется также другая проблема, ошибочно принимаемая за приведенную выше, когда серверы и клиенты NFS находятся в разных сетях. Если это тот самый случай, проверьте, что ваши маршрутизаторы пропускают нужную информацию UDP, в противном случае вы ничего не получите, что бы вы ни предпринимали.

В следующих примерах fastws является именем хоста (интерфейса) высокопроизводительной рабочей станции, а freebox является именем хоста (интерфейса) системы FreeBSD со слабым сетевым адаптером. Кроме того, /sharedfs будет являться экспортируемой через NFS файловой системой (смотри команду man exports), а /project будет точкой монтирования экспортируемой файловой системы на клиенте. В любом случае, отметьте, что для вашего приложения могут понадобиться дополнительные параметры, такие, как hard, soft или bg.

Примеры для системы FreeBSD (freebox) является клиентом: в файле /etc/fstab на машине freebox:

    fastws:/sharedfs /project nfs rw,-r=1024 0 0
        

Команда, выдаваемая вручную на машине freebox:

    # mount -t nfs -o -r=1024 fastws:/sharedfs /project
        

Примеры для системы FreeBSD в качестве сервера: в файле /etc/fstab на машине fastws:

    freebox:/sharedfs /project nfs rw,-w=1024 0 0
        

Команда, выдаваемая вручную на машине fastws:

    # mount -t nfs -o -w=1024 freebox:/sharedfs /project
        

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

Для тех, кто интересуется, ниже описывается, что же происходит в при появлении этой ошибки, и объясняется, почему ее невозможно устранить. Как правило, NFS работает с "блоками" размером 8 килобайт (хотя отдельные фрагменты могут иметь меньшие размеры). Так пакет Ethernet имеет максимальный размер около 1500 байт, то "блок" NFS разбивается на несколько пакетов Ethernet, хотя на более высоком уровне это все тот же единый блок, который должен быть принят, собран и подтвержден как один блок. Высокопроизводительные рабочие станции могут посылать пакеты, которые соответствуют одному блоку NFS, сразу друг за другом, насколько это позволяет делать стандарт. На слабых, низкопроизводительных адаптерах пакеты, пришедшие позже, накладываются поверх ранее пришедших пакетов того же самого блока до того, как они могут быть переданы хосту и блок как единое целое не может быть собран или подтвержден. В результате рабочая станция входит в ситуацию таймаута и пытается повторить передачу, но уже с полным блоком в 8КБ, и процесс будет повторяться снова, до бесконечности.

Задав размер блока меньше размера пакета Ethernet, мы достигаем того, что любой полностью полученный пакет Ethernet может быть подтвержден индивидуально, и избежим тупиковую ситуацию.

Наложение пакетов может все еще проявляться, когда высокопроизводительные рабочие станции сбрасывают данные на PC-систему, однако повторение этой ситуации не обязательно с более скоростными адаптерами с "блоками" NFS. Когда происходит наложение, затронутые блоки будут переданы снова, и скорее всего, они будут получены, собраны и подтверждены.


Руководство FreeBSD
Prev Chapter 10. Сложные вопросы работы в сети Next

10.7. NIS/YP

Текст написал Bill Swingle 21 января 2000, дополнения и комментарии частично от Эрика Огрена (Eric Ogren) и Удо Эрделхоффа (Udo Erdelhoff) сделаны в июне 2000.

10.7.1. Что это такое?

NIS, что является сокращением от Network Information Services (Сетевые Информационные Службы), которые были разработаны компанией Sun Microsystems для централизованного администрирования систем Unix (первоначально SunOS). В настоящее время эти службы практически стали промышленным стандартом; все основные версии Unix (Solaris, HP-UX, AIX, Linux, NetBSD, OpenBSD, FreeBSD, и так далее) поддерживают NIS.

NIS первоначально назывались Yellow Pages (или yp), но из-за проблем с авторскими правами, Sun была вынуждена изменить это название.

Это система клиент/сервер на основе вызовов RPC, которая позволяет группе машин в одном домене NIS совместно использовать общий набор конфигурационных файлов. Системный администратор может настроить клиентскую систему NIS только с минимальной настроечной информацией, а затем добавлять, удалять и модифицировать настроечную информацию из одного места.

Это похоже на систему доменов Windows NT; хотя их внутренние реализации не так уж и похожи, основные функции сравнимы.

10.7.2. Термины/программы, о которых вы должны знать

Существует несколько терминов и некоторое количество пользовательских программ, которые будут нужны, когда вы будете пытаться сделать NIS во FreeBSD, и в случае создания сервера, и в случае работы в качестве клиента NIS:

10.7.3. Как это работает?

В системе NIS существует три типа хостов; основные (master) серверы, вторичные (slave) серверы и клиентские машины. Серверы выполняют роль централизованного хранилища информации о конфигурации хостов. Основные серверы хранят оригиналы этой информации, когда как вторичные серверы хранят ее копию для обеспечения избыточности. Клиенты связываются с серверами, чтобы предоставить им эту информацию.

Информация во многих файлах может совместно использоваться следующим образом. Файлы master.passwd, group, и hosts используются совместно через NIS. Когда процессу, работающему на клиентской машине, требуется информация, как правило, находящаяся в этих файлах локально, он делает запрос к серверу, с которым связан, для получения этой информации.

10.7.3.1. Типы машин

  • Основной сервер NIS. Такой сервер, по аналогии с первичным контроллером домена Windows NT, хранит файлы, используемые всеми клиентами NIS. Файлы passwd, group и различные другие файлы, используемые клиентами NIS, находятся на основном сервере.

    Note: Возможно использование одной машины в качестве сервера для более чем одного домена NIS. Однако, в этом введении такая ситуация не рассматривается, и предполагается менее масштабное использование NIS.

  • Вторичные серверы NIS. Похожие на вторичные контроллеры доменов NT, вторичные серверы NIS содержат копии оригинальных файлов данных NIS. Вторичные серверы NIS обеспечивают избыточность, что нужно в критичных приложениях. Они также помогают распределять нагрузку на основной сервер: клиенты NIS всегда подключаются к тому серверу NIS, который ответил первым, в том числе и к вторичным серверам.

  • Клиенты NIS. Клиенты NIS, как и большинство машин NT Workstation, аутентифицируются на сервере NIS (или на контроллере домена в случае NT Workstation) во время входа в систему.

10.7.4. Использование NIS/YP

В этом разделе приводится пример настройки NIS.

Note: В этом разделе предполагается, что вы работаете с FreeBSD версии 3.3 или выше. Указания, приводимые здесь, скорее всего, будут работать с любой версией FreeBSD, выше, чем 3.0, однако нет гарантий, что это на самом деле так.

10.7.4.1. Планирование

Давайте предположим, что вы являетесь администратором в маленькой университетской лаборатории. В настоящий момент в этой лаборатории с 15 машинами отсутствует единая точка администрирования; на каждой машине имеются собственные файлы /etc/passwd и /etc/master.passwd. Эти файлы синхронизируются друг с другом только вручную; сейчас, когда вы добавляете пользователя в лаборатории, вы должны выполнить команду adduser на всех 15 машинах. Понятно, что такое положение вещей нужно исправлять, так что вы решили перевести сеть на использование NIS, используя две машины в качестве серверов.

Итак, конфигурация лаборатории сейчас выглядит примерно так:

Имя машины IP-адрес Роль машины
ellington 10.0.0.2 Основной сервер NIS
coltrane 10.0.0.3 Вторичный сервер NIS
basie 10.0.0.4 Факультетская рабочая станция
bird 10.0.0.5 Клиентская машина
cli[1-11] 10.0.0.[6-17] Другие клиентские машины

Если вы определяете схему NIS первый раз, ее нужно хорошо обдумать. Вне зависимости от размеров вашей сети, есть несколько ключевых моментов, которые требуют принятия решений.

10.7.4.1.1. Выбор имени домена NIS

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

Некоторые организации в качестве имени домена NIS используют свой домен Интернет. Это не рекомендуется, так как может вызвать проблемы в процессе решения сетевых проблем. Имя домена NIS должно быть уникальным в пределах вашей сети и хорошо, если оно будет описывать группу машин, которые представляет. Например, художественный отдел в компании Acme Inc. может находиться в домене NIS с именем "acme-art". В нашем примере положим, что мы выбрали имя test-domain.

Несмотря на это, некоторые операционные системы (в частности, SunOS) используют свое имя домена NIS в качестве имени домена Интернет. Если одна или более машин в вашей сети имеют такие ограничения, вы обязаны использовать имя домена Интернет в качестве имени домена NIS.

10.7.4.1.2. Требования к серверу

Есть несколько вещей, которые нужно иметь в виду при выборе машины для использования в качестве сервера NIS. Одной из обескураживающей вещью, касающейся NIS, является уровень зависимости клиентов от серверов. Если клиент не может подключиться к серверу своего домена NIS, зачастую машину просто становится нельзя использовать. Отсутствие информации о пользователях и группах приводит к временной остановке работы большинства систем. Зная это, вы должны выбрать машину, которая не должна подвергаться частым перезагрузкам и не используется для разработки. Сервер NIS в идеале должен быть отдельно стоящей машиной, единственным целью в жизни которой является быть сервером NIS. Если вы работаете в сети, которая не так уж сильно загружена, то можно поместить сервер NIS на машине, на которой запущены и другие сервисы, просто имейте в виду, что если сервер NIS становится недоступным, то это негативно отражается на всех клиентах NIS.

10.7.4.2. Серверы NIS

Оригинальные копии всей информации NIS хранится на единственной машине, которая называется главным сервером NIS. Базы данных, которые используются для хранения информации, называются картами NIS. Во FreeBSD эти карты хранятся в /var/yp/[domainname], где [domainname] является именем обслуживаемого домена NIS. Один сервер NIS может поддерживать одновременно несколько доменов, так что есть возможность иметь несколько таких каталогов, по одному на каждый обслуживаемый домен. Каждый домен будет иметь свой собственный независимый от других набор карт.

Основной и вторичный серверы обслуживают все запросы NIS с помощью даемона ypserv. Ypserv отвечает за получение входящих запросов от клиентов NIS, распознавание запрашиваемого домена и отображение имени в путь к соответствующему файлы базы данных, а также передаче информации из базы данных обратно клиенту.

10.7.4.2.1. Настройка основного сервера NIS

Настройка основного сервера NIS может оказаться сравнительно простой, в зависимости от ваших потребностей. В поставку FreeBSD сразу включена поддержка NIS. Все, что вам нужно, это добавить следующие строки в файл /etc/rc.conf, а FreeBSD сделает за вас все остальное..

  •     nisdomainname="test-domain"
    
    В этой строке задается имя домена NIS, которое будет test-domain, еще до настройки сети (например, после перезагрузки).

  •     nis_server_enable="YES"
    
    Здесь указывается FreeBSD на запуск процессов серверов NIS, когда дело доходит до сетевых настроек.

  •     nis_yppasswdd_enable="YES"
    
    Здесь указывается на запуск даемона rpc.yppasswdd, который, как это отмечено выше, позволит пользователям менять свой пароль NIS с клиентской машины.

А теперь все, что вам нужно сделать, это запустить команду /etc/netstart, работая как администратор. По ней произойдет настройка всего, при этом будут использоваться значения, заданные в файле /etc/rc.conf.

10.7.4.2.2. Инициализация карт NIS

Карты NIS являются файлами баз данных, которые хранятся в каталоге /var/yp. Они генерируются из конфигурационных файлов, находящихся в каталоге /etc основного сервера NIS, за одним исключением: файл /etc/master.passwd. На это есть весомая причина; вам не нужно распространять пароли пользователя root и других административных пользователей на все серверы в домене NIS. По этой причине, прежде чем инициализировать карты NIS, вы должны сделать вот что:

    # cp /etc/master.passwd /var/yp/master.passwd
    # cd /var/yp
    # vi master.passwd
        

Вы должны удалить все записи, касающиеся системных пользователей (bin, tty, kmem, games и так далее), а также записи, которые вы не хотите распространять клиентам NIS (например, root и другие пользователи с UID, равным 0 (администраторы)).

Note: Проверьте, чтобы файл /var/yp/master.passwd был недоступен для записи ни для группы, ни для остальных пользователей (режим доступа 600)! Воспользуйтесь командой chmod, если это нужно.

Когда с этим будет покончено, самое время проинициализировать карты NIS! В поставку FreeBSD включен скрипт с именем ypinit, который делает это (обратитесь к его справочной странице за дополнительной информацией). Отметьте, что этот скрипт имеется на большинстве ОС UNIX, но не во всех. В системе Digital Unix/Compaq Tru64 Unix он называется ypsetup. Так как мы генерируем карты для главного сервера NIS, то при вызове программы ypinit мы передаем ей параметр -m. Для генерации карт NIS в предположении, что вы уже сделали шаги, описанные выше, выполните следующее:

    ellington# ypinit -m test-domain
    Server Type: MASTER Domain: test-domain
    Creating an YP server will require that you answer a few questions.
    Questions will all be asked at the beginning of the procedure.
    Do you want this procedure to quit on non-fatal errors? [y/n: n] n
    Ok, please remember to go back and redo manually whatever fails.
    If you don't, something might not work.
    At this point, we have to construct a list of this domains YP servers.
    rod.darktech.org is already known as master server.
    Please continue to add any slave servers, one per line. When you are
    done with the list, type a <control D>.
    master server   :  ellington
    next host to add:  coltrane
    next host to add:  ^D
    The current list of NIS servers looks like this:
    ellington
    coltrane
    Is this correct?  [y/n: y] y
    
    [..вывод при генерации карт..]
    
    NIS Map update completed.
    ellington has been setup as an YP master server without any errors.
        

Программа ypinit должна была создать файл /var/yp/Makefile из /var/yp/Makefile.dist. При создании этого файла предполагается, что вы работаете в окружении с единственным сервером NIS и только с машинами FreeBSD. Так как в домене test-domain имеется также и вторичный сервер, то вы должны отредактировать файл /var/yp/Makefile:

    ellington# vi /var/yp/Makefile
        

Вы должны закомментировать строку, в которой указано `NOPUSH = "True"' (она уже не раскомментирована).

10.7.4.2.3. Настройка вторичного сервера NIS

Настройка вторичного сервера NIS осуществляется еще проще, чем настройка главного сервера. Войдите на вторичный сервер и отредактируйте файл /etc/rc.conf точно также, как вы делали это ранее. Единственным отличием является то, что при запуске программы ypinit мы теперь должны использовать опцию -s. Применение опции -s требует также указание имени главного сервера NIS, так что наша команда должна выглядеть так:

    coltrane# ypinit -s ellington test-domain
    
    Server Type: SLAVE Domain: test-domain Master: ellington
    
    Creating an YP server will require that you answer a few questions.
    Questions will all be asked at the beginning of the procedure.
    
    Do you want this procedure to quit on non-fatal errors? [y/n: n]  n
    
    Ok, please remember to go back and redo manually whatever fails.
    If you don't, something might not work.
    There will be no further questions. The remainder of the procedure
    should take a few minutes, to copy the databases from ellington.
    Transferring netgroup...
    ypxfr: Exiting: Map successfully transferred
    Transferring netgroup.byuser...
    ypxfr: Exiting: Map successfully transferred
    Transferring netgroup.byhost...
    ypxfr: Exiting: Map successfully transferred
    Transferring master.passwd.byuid...
    ypxfr: Exiting: Map successfully transferred
    Transferring passwd.byuid...
    ypxfr: Exiting: Map successfully transferred
    Transferring passwd.byname...
    ypxfr: Exiting: Map successfully transferred
    Transferring group.bygid...
    ypxfr: Exiting: Map successfully transferred
    Transferring group.byname...
    ypxfr: Exiting: Map successfully transferred
    Transferring services.byname...
    ypxfr: Exiting: Map successfully transferred
    Transferring rpc.bynumber...
    ypxfr: Exiting: Map successfully transferred
    Transferring rpc.byname...
    ypxfr: Exiting: Map successfully transferred
    Transferring protocols.byname...
    ypxfr: Exiting: Map successfully transferred
    Transferring master.passwd.byname...
    ypxfr: Exiting: Map successfully transferred
    Transferring networks.byname...
    ypxfr: Exiting: Map successfully transferred
    Transferring networks.byaddr...
    ypxfr: Exiting: Map successfully transferred
    Transferring netid.byname...
    ypxfr: Exiting: Map successfully transferred
    Transferring hosts.byaddr...
    ypxfr: Exiting: Map successfully transferred
    Transferring protocols.bynumber...
    ypxfr: Exiting: Map successfully transferred
    Transferring ypservers...
    ypxfr: Exiting: Map successfully transferred
    Transferring hosts.byname...
    ypxfr: Exiting: Map successfully transferred
    
    coltrane has been setup as an YP slave server without any errors.
    Don't forget to update map ypservers on ellington.
        

Теперь у вас должен быть каталог с именем /var/yp/test-domain. Копии карт главного сервера NIS должны быть в этом каталоге. Вы должны удостовериться, что этот каталог обновляется. Следующие строки в /etc/crontab вашего вторичного сервера должны это делать:

    20 *   *   *   *   root   /usr/libexec/ypxfr passwd.byname
    21  *   *   *   *   root   /usr/libexec/ypxfr passwd.byuid
        

Эти две строки заставляют вторичный сервер синхронизировать свои карты с картами главного сервера. Хотя делать это не обязательно, потому что главный сервер делает попытки передать все изменения в своих картах NIS на свои вторичные серверы, информация для входа в систему настолько жизненно важна для систем, зависящих от сервера, что выполнение регулярных обновлений является совсем не плохой идеей. Это еще более важно в загруженных сетях, в которых обновления карт могут не всегда завершаться успешно.

А теперь точно также запустите команду /etc/netstart на вторичном сервере, по которой снова выполнится запуск сервера NIS.

10.7.4.3. Клиенты NIS

Клиент NIS выполняет так называемую привязку к конкретному серверу NIS при помощи даемона ypbind. ypbind определяет домен, используемый в системе по умолчанию (тот, который устанавливается по команде domainname), и начинает широковещательную рассылку запросов RPC в локальной сети. В этих запросах указано имя домена, к серверу которого ypbind пытается осуществить привязку. Если сервер, который был настроен для обслуживания запрашиваемого домена, получит широковещательный запрос, он ответит ypbind, который, в свою очередь запомнит адрес сервера. Если имеется несколько серверов (например, главный и несколько вторичных), то ypbind будет использовать адрес первого ответившего. С этого момента клиентская система будет направлять все свои запросы NIS на этот сервер. Время от времени ypbind будет обмениваться пакетами "ping" с сервером для проверки его работоспособности. Если на один из тестовых пакетов не удастся получить ответа за разумное время, то ypbind пометит этот домен как домен, с которым связка разорвана, и снова начнет процесс посылки широковещательных запросов в надежде найти другой сервер.

10.7.4.3.1. Настройка клиента NIS

Настройка машины с FreeBSD в качестве клиента NIS достаточно проста.

  • Отредактируйте файл /etc/rc.conf, добавив туда следующие строки для того, чтобы задать имя домена NIS и запустить ypbind во время запуска сетевых служб:

        nisdomainname="test-domain"
        nis_client_enable="YES"
                
    
  • Для получения всех возможных учетных записей от сервера NIS добавьте при помощи vipw в ваш файл /etc/master.passwd такую строчку:

        +:::::::::
                
    

    Note: Эта строчка даст всем пользователям с корректной учетной записью в картах учетных баз пользователей доступ к этой системе. Есть множество способов настроить ваш клиент NIS, изменив эту строку. Посмотрите ниже текст, касающийся сетевых групп, чтобы получить более подробную информацию. Дополнительная информация для изучения находится в книге издательства O'Reilly под названием Managing NFS and NIS.

  • Для импортирования всех возможных записей о группах с сервера NIS, добавьте в ваш файл /etc/group такую строчку:

        +:*::
                
    

После завершения выполнения этих шагов у вас должно получиться запустить команду ypcat passwd и увидеть карту учетных записей сервера NIS.

10.7.5. Безопасность NIS

В общем-то любой пользователь, зная имя вашего домена, может выполнить запрос RPC к ypserv и получить содержимое ваших карт NIS. Для предотвращения такого неавторизованного обмена ypserv поддерживает так называемую систему securenets, которая может использоваться для ограничения доступа к некоторой группе хостов. При запуске ypserv будет пытаться загрузить информацию, касающуюся securenets, из файла /var/yp/securenets.

Note: Имя каталога зависит от параметра, указанного вместе с опцией -p. Этот файл содержит записи, состоящие из указания сети и сетевой маски, разделенных пробелом. Строчки, начинающиеся со знака "#", считаются комментариями. Примерный файл securenets может иметь примерно такой вид:

    # allow connections from local host -- mandatory
    127.0.0.1     255.255.255.255
    # allow connections from any host
    # on the 192.168.128.0 network
    192.168.128.0 255.255.255.0
    # allow connections from any host
    # between 10.0.0.0 to 10.0.15.255
    # this includes the machines in the testlab
    10.0.0.0      255.255.240.0
        

Если ypserv получает запрос от адреса, который соответствует одному из этих правил, он будет отрабатывать запрос обычным образом. Если же адрес не подпадает ни под одно правило, запрос будет проигнорирован и в журнал будет записано предупреждающее сообщение. Если файл /var/yp/securenets не существует, ypserv будет обслуживать соединения от любого хоста.

Программа ypserv также поддерживает пакет программ tcpwrapper от Wietse Venema. Это позволяет администратору для ограничения доступа вместо /var/yp/securenets использовать конфигурационные файлы tcpwrapper.

Note: Хотя оба этих метода управления доступом обеспечивают некоторую безопасность, они, как основанные на проверке привилегированного порта, оба подвержены атакам типа "IP spoofing". Весь сетевой трафик, связанный с работой NIS, должен блокироваться вашим межсетевым экраном.

Серверы, использующие файл /var/yp/securenets, могут быть не в состоянии обслуживать старых клиентов NIS с древней реализацией протокола TCP/IP. Некоторые из этих реализаций при рассылке широковещательных запросов устанавливают все биты машинной части адреса в ноль и/или не в состоянии определить маску подсети при вычислении адреса широковещательной рассылки. Хотя некоторые из этих проблем могут быть решены изменением конфигурации клиента, другие могут привести к отказу от использования /var/yp/securenets.

Использование /var/yp/securenets на сервере с такой архаичной реализацией TCP/IP является весьма плохой идеей, и приведёт к потере работоспособности NIS в большой части вашей сети.

Использование пакета tcpwrapper увеличит время отклика вашего сервера NIS. Дополнительной задержки может оказаться достаточно для возникновения таймаутов в клиентских программах, особенно в загруженных сетях или с медленными серверами NIS. Если одна или более ваших клиентских систем страдают от таких проблем, вы должны преобразовать такие клиентские системы во вторичные серверы NIS и сделать принудительную их привязку к самим себе.

10.7.6. Запрет входа некоторых пользователей

В нашей лаборатории есть машина basie, о которой предполагается, что она является исключительно факультетской рабочей станцией. Мы не хотим исключать эту машину из домена NIS, однако файл passwd на главном сервере NIS содержит учетные записи как для работников факультета, так и студентов. Что мы можем сделать?

Есть способ ограничить вход некоторых пользователей на этой машине, даже если они присутствуют в базе данных NIS. Чтобы это сделать, вам достаточно добавить -username в конец файла /etc/master.passwd на клиентской машине, где username является именем пользователя, которому вы хотите запретить вход. Рекомендуется сделать это с помощью утилиты vipw, так как vipw проверит ваши изменения в /etc/master.passwd, а также автоматически перестроит базу данных паролей по окончании редактирования. Например, если мы хотим запретить пользователю bill осуществлять вход на машине basie, то мы сделаем следующее:

    basie# vipw
    [add -bill to the end, exit]
    vipw: rebuilding the database...
    vipw: done
    
    basie# cat /etc/master.passwd
    
    root:[password]:0:0::0:0:The super-user:/root:/bin/csh
    toor:[password]:0:0::0:0:The other super-user:/root:/bin/sh
    daemon:*:1:1::0:0:Owner of many system processes:/root:/sbin/nologin
    operator:*:2:5::0:0:System &:/:/sbin/nologin
    bin:*:3:7::0:0:Binaries Commands and Source,,,:/:/sbin/nologin
    tty:*:4:65533::0:0:Tty Sandbox:/:/sbin/nologin
    kmem:*:5:65533::0:0:KMem Sandbox:/:/sbin/nologin
    games:*:7:13::0:0:Games pseudo-user:/usr/games:/sbin/nologin
    news:*:8:8::0:0:News Subsystem:/:/sbin/nologin
    man:*:9:9::0:0:Mister Man Pages:/usr/share/man:/sbin/nologin
    bind:*:53:53::0:0:Bind Sandbox:/:/sbin/nologin
    uucp:*:66:66::0:0:UUCP pseudo-user:/var/spool/uucppublic:/usr/libexec/uucp/uucico
    xten:*:67:67::0:0:X-10 daemon:/usr/local/xten:/sbin/nologin
    pop:*:68:6::0:0:Post Office Owner:/nonexistent:/sbin/nologin
    nobody:*:65534:65534::0:0:Unprivileged user:/nonexistent:/sbin/nologin
    +:::::::::
    -bill
    
    basie#
        

10.7.7. Использование сетевых групп

Эта часть раздела о сетевых группах была предоставлена Удо Эрделхоффом (Udo Erdelhoff) в июле 2000 года.

Способ, описанный в предыдущей главе, работает достаточно хорошо, если вам нужны особые правила для очень малой группы пользователей или машин. В более крупных сетях вы забудете о запрете входа определенных пользователей на важные машины или даже будете настраивать каждую машину по отдельности, теряя таким образом главное преимущество использования NIS, централизованное администрирование.

Ответом разработчиков NIS на эту проблему являются сетевые группы. Их назначение и смысл можно сравнить с обычными группами, используемыми в файловых системах Unix. Главное отличие заключается в отсутствии числового идентификатора и возможности задать сетевую группу включением как пользователей, так и других сетевых групп.

Сетевые группы были разработаны для работы с большими, сложными сетями с сотнями пользователей и машин. С одной стороны, хорошо, если вам приходится с такой ситуацией. С другой стороны, эта сложность делает невозмохным описание сетевых групп с помощью простых примеров. Пример, используемый в дальнейшем, демонстрирует эту проблему.

Давайте предположим, что успешное внедрение системы NIS в вашей лаборатории заинтересовало ваше руководство. Вашим следующим заданием стало расширение домена NIS для включения в него некоторых других машин студенческого городка. В двух таблицах перечислены имена новых машин и пользователей, а также их краткое описание.

Имена пользователей Описание
alpha, beta Обычные служащие IT-департамента
charlie, delta Практиканты IT-департамента
echo, foxtrott, golf, ... Обычные сотрудники
able, baker, ... Проходящие интернатуру
Имена машин Описание
war, death, famine, polution Ваши самые важные серверы. Только служащим IT позволяется входить на эти машины.
pride, greed, envy, wraith, lust, sloth Менее важные серверы. Все сотрудники департамента IT могут входить на эти машины.
one, two, three, four, ... Обычные рабочие станции. Только реально нанятым служащим позволяется использовать эти машины.
trashcan Очень старая машина без каких-либо критичных данных. Даже проходящим интернатуру разрешено ее использовать.

Если вы попытаетесь реализовать эти требования, ограничивая каждого пользователя по отдельности, то вам придется добавить на каждой машине в файл с паролями по одной строчке -user для каждого пользователя, которому запрещено входить на эту систему. Если вы забудете даже одну строчку, у вас могут начаться проблемы. Гораздо проще делать это правильно во время начальной установки, однако вы постепенно будете забывать добавлять строчки для новых пользователей во время повседневной работы. В конце концов, Мерфи был оптимистом.

Использование в этой ситуации сетевых групп дает несколько преимуществ. Нет необходимости описывать по отдельности каждого пользователя; вы ставите в соответствие пользователю одну или несколько сетевых групп и разрешаете или запрещаете вход всем членам сетевой группы. Если вы добавляете новую машину, вам достаточно определить ограничения на вход для сетевых групп. Если добавляется новый пользователь, вам достаточно добавить его к одной или большему числу сетевых групп. Эти изменения независимы друг от друга; нет больше комбинаций "для каждого пользователя и машины". Если настройка вашей системы NIS тщательно спланирована, то для разрешения или запрещения доступа к машинам вам нужно будет модифицировать единственный конфигурационный файл.

Первым шагом является инициализация карты NIS по имени netgroup. Программа ypinit во FreeBSD по умолчанию этой карты не создает, хотя реализация NIS будет ее поддерживает, как только она будет создана. Чтобы создать пустую карту, просто наберите

    ellington# vi /var/yp/netgroup
          

и начните добавлять содержимое. Например, нам нужно по крайней мере четыре сетевых группы: сотрудники IT, практиканты IT, обычные сотрудники и интернатура.

    IT_EMP (,alpha,test-domain)    (,beta,test-domain)
    IT_APP  (,charlie,test-domain)  (,delta,test-domain)
    USERS   (,echo,test-domain) (,foxtrott,test-domain) \
        (,golf,test-domain)
    INTERNS (,able,test-domain) (,baker,test-domain)
          

IT_EMP, IT_APP и так далее являются именами сетевых групп. Несколько слов в скобках служат для добавления пользователей в группу. Три поля внутри группы обозначают следующее:

  1. Имя хоста или хостов, к которым применимы последующие записи. Если имя хоста не указано, то запись применяется ко всем хостам. Если же указывается имя хоста, то вы получите мир темноты, ужаса и страшной путаницы.

  2. Имя учетной записи, которая принадлежит этой сетевой группе.

  3. Домен NIS для учетной записи. Вы можете импортировать в вашу сетевую группу учетные записи из других доменов NIS, если вы один из тех несчастных, имеющих более одного домена NIS.

Каждое из этих полей может содержать шаблоны, подробности даны в странице справочника по netgroup(5).

Note: Не нужно использовать имена сетевых групп длиннее 8 символов, особенно если в вашем домене NIS имеются машины, работающие под управлением других операционных систем. Имена чувствительны к регистру; использование заглавных букв для имен сетевых групп облегчает распознавание пользователей, имен машин и сетевых групп.

Некоторые клиенты NIS (отличные от FreeBSD) не могут работать с сетевыми группами, включающими большое количество записей. Например, в некоторых старых версиях SunOS возникают проблемы, если сетевая группа содержит более 15 записей. Вы можете обойти это ограничение, создав несколько подгрупп с 15 или меньшим количеством пользователей и настоящую сетевую группу, состоящую из подгрупп:

    BIGGRP1  (,joe1,domain)  (,joe2,domain)  (,joe3,domain) [...]
    BIGGRP2  (,joe16,domain)  (,joe17,domain) [...]
    BIGGRP3  (,joe32,domain)  (,joe33,domain)
    BIGGROUP  BIGGRP1 BIGGRP2 BIGGRP3
        

Вы можете повторить этот процесс, если вам нужно иметь более 225 пользователей в одной сетевой группе.

Активация и распространение вашей карты NIS проста:

    ellington# cd /var/yp
    ellington# make
          

Это приведет к созданию трех карт NIS netgroup, netgroup.byhost и netgroup.byuser. Воспользуйтесь утилитой ypcat(1) для проверки доступности вашей новой карты NIS:

    ellington% ypcat -k netgroup
    ellington% ypcat -k netgroup.byhost
    ellington% ypcat -k netgroup.byuser
          

Вывод первой команды должен соответствовать содержимому файла /var/yp/netgroup. Вторая команда не выведет ничего, если вы не зададите сетевые группы, специфичные для хоста. Третья команда может использоваться пользователем для получения списка сетевых групп.

Настройка клиента достатчно проста. Чтобы настроить сервер war, вам достаточно запустить vipw(8) и заменить строку

    +:::::::::
          

на

    +@IT_EMP:::::::::
          

Теперь только данные, касающиеся пользователей, определенных в сетевой группе IT_EMP, импортируются в базу паролей машины war и только этим пользователям будет разрешен вход.

К сожалению, это ограичение также касается и функции ~ командного процессора и всех подпрограмм, выполняющих преобразование между именами пользователей и их численными идентификаторами. Другими словами, команда cd ~user работать не будет, команда ls -l будет выдавать числовые идентификаторы вместо имен пользователей, а find . -user joe -print работать откажется, выдавая сообщение "No such user". Чтобы это исправить, вам нужно будет выполнить импорт всех записей о пользователях без разрешения на вход на ваши серверы.

Это можно сделать, добавив еще одну строку в файл /etc/master.passwd. Эта строка должна содержать +:::::::::/sbin/nologin, что означает "Произвести импортирование всех записей с заменой командного процессора на /sbin/nologin в импортируемых записях". Вы можете заменить любое поле в строке с паролем, указав значение по умолчанию в вашем /etc/master.passwd.

Warning: Проверьте, что строка +:::::::::/sbin/nologin помещена после +@IT_EMP:::::::::. В противном случае все пользовательские записи, импортированные из NIS, будут иметь /sbin/nologin в качестве оболочки.

После этого изменения при появлении нового сотрудника IT вам будет достаточно изменять только одну карту NIS. Вы можете применить подобный метод для менее важных серверов, заменяя старую строку +::::::::: в их файлах /etc/master.passwd на нечто, подобное следующему:

    +@IT_EMP:::::::::
    +@IT_APP:::::::::
    +:::::::::/sbin/nologin
          

Соответствующие строки для обычных рабочих станций могут иметь такой вид:

    +@IT_EMP:::::::::
    +@USERS:::::::::
    +:::::::::/sbin/nologin
          

И все было прекрасно до того момента, когда через несколько недель изменилась политика: Департамент IT начал нанимать интернатуру. Интернатуре в IT позволили использовать обычные рабочие станции и менее важные серверы; практикантам позволили входить на главные серверы. Вы создали новую сетевую группу IT_INTERN, добавили в нее новую интернатуру и начали изменять настройки на всех и каждой машине... Как говорит старая мудрость: "Ошибки в централизованном планировании приводят к глобальному хаосу".

Возможность в NIS создавать сетевые группы из других сетевых групп можт использоваться для предотвращения подобных ситуаций. Одним из вариантов является создание сетевых групп на основе ролей. Например, вы можете создать сетевую группу с именем BIGSRV для задания ограничений на вход на важные серверы, другую сетевую группу с именем SMALLSRV для менее важных серверов и третью сетевую группу под названием USERBOX для обычных рабочих станций. Каждая из этих сетевых групп содержит сетевые группы, которым позволено входить на эти машины. Новые записи для вашей карты NIS сетевой группы должны выглядеть таким образом:

    BIGSRV   IT_EMP  IT_APP
    SMALLSRV  IT_EMP  IT_APP  ITINTERN
    USERBOX   IT_EMP  ITINTERN USERS
          

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

Задание сетевых групп в зависимости от машин является другой возможностью, которой можно воспользоваться при изменении политики, описанной выше. При таком развитии событий файл /etc/master.passwd на каждой машине содержит две строки, начинающиеся с ``+''. Первая из них добавляет сетевую группу с учетными записями, которым разрешено входить на эту машину, а вторая добавляет все оставшиеся учетные записи с /sbin/nologin в качестве командного процессора. Хорошей идеей является использование ИМЕНИ МАШИНЫ заглавными буквами для имени сетевой группы. Другими словами, строки должны иметь такой вид:

    +@BOXNAME:::::::::
    +:::::::::/sbin/nologin
          

Как только вы завершите эту работу для всех ваших машин, вам не нужно будет снова модифицировать локальные версии /etc/master.passwd. Все будущие изменения могут быть выполнены изменением карты NIS. Вот пример возможной карты сетевой группы для этого случая с некоторыми полезными дополнениями.

    # Сначала определяем группы пользователей
    IT_EMP    (,alpha,test-domain)    (,beta,test-domain)
    IT_APP    (,charlie,test-domain)  (,delta,test-domain)
    DEPT1     (,echo,test-domain)     (,foxtrott,test-domain)
    DEPT2     (,golf,test-domain)     (,hotel,test-domain)
    DEPT3     (,india,test-domain)    (,juliet,test-domain)
    ITINTERN  (,kilo,test-domain)     (,lima,test-domain)
    D_INTERNS (,able,test-domain)     (,baker,test-domain)
    #
    # Теперь задаем несколько групп на основе ролей
    USERS     DEPT1   DEPT2     DEPT3
    BIGSRV    IT_EMP  IT_APP
    SMALLSRV  IT_EMP  IT_APP    ITINTERN
    USERBOX   IT_EMP  ITINTERN  USERS
    #
    # И группы для специальных задач
    # Открыть пользователям echo и golf доступ к антивирусной машине
    SECURITY  IT_EMP  (,echo,test-domain)  (,golf,test-domain)
    #
    # Сетевые группы, специфичные для машин
    # Наши главные серверы
    WAR   BIGSRV
    FAMINE    BIGSRV
    # Пользователю india необходим доступ к этому серверу
    POLUTION  BIGSRV  (,india,test-domain)
    #
    # Этот очень важен и ему требуются большие ограничения доступа
    DEATH     IT_EMP
    #
    # Антивирусная машина, упомянутая выше
    ONE   SECURITY
    #
    # Ограничить машину единственным пользователем
    TWO   (,hotel,test-domain)
    # [...далее следуют другие группы]
          

Если вы используете какие-либо базы данных для управления учетными записями ваших пользователей, вы должны смочь создать первую часть карты с помощью инструментов построения отчетов вашей базы данных. В таком случае новые пользователи автоматически получат доступ к машинам.

И последнее замечание: Не всегда бывает разумно использовать сетевые группы на основе машин. Если в студенческих лабораториях вы используете несколько десятков или даже сотен одинаковых машин, то вам нужно использовать сетевые группы на основе ролей, а не основе машин, для того, чтобы размеры карты NIS оставались в разумных пределах.

10.7.8. Важные замечания

Есть некоторые действия, которые нужно будет выполнять по-другому, если вы работаете с NIS.

10.7.9. Совместимость с NIS v1

ypserv из поставки FreeBSD имеет встроенную поддержку для обслуживания клиентов NIS v1. Реализация NIS во FreeBSD использует только протокол NIS v2, хотя другие реализации имеют поддержку протокола v1 для совместимости со старыми системами. Даемоны ypbind, поставляемые с такими системами, будут пытаться осуществить привязку к серверу NIS v1, даже если это им не нужно (и они будут постоянно рассылать широковещательные запросы в поиске такого сервера даже после получения ответа от сервера v2). Отметьте, что хотя имеется поддержка обычных клиентских вызовов, эта версия ypserv не отрабатывает запросы на передачу карт v1; следовательно, она не может использоваться в качестве главного или вторичного серверов вместе с другими серверами NIS, поддерживающими только протокол v1. К счастью, скорее всего, в настоящий момент такие серверы практически не используются.

10.7.10. Серверы NIS, которые также являются клиентами NIS

Особое внимание следует уделить использованию ypserv в домене со многими серверами, когда серверные машины являются также клиентами NIS. Неплохо бы заставить серверы осуществить привязку к самим себе, запретив рассылку запросов на привязку и возможно, перекрестную привязку друг к другу. Если один сервер выйдет из строя, а другие будут зависеть от него, то в результате могут возникнуть странные ситуации. Постепенно все клиенты попадут в таймаут и попытаются привязаться к другим серверам, но полученная задержка может быть значительной, а странности останутся, так как серверы снова могут привязаться друг к другу.

Вы можете заставить хост выполнить привязку к конкретному серверу, запустив команду ypbind с флагом -S.

10.7.11. Использование libscrypt или libdescrypt

Одним из общих вопросов, которые возникают в начале работы с NIS, является вопрос совместимости криптографической библиотеки crypt. Если ваш сервер NIS использует криптографические библиотеки DES, он сможет поддерживать клиентов, которые тоже используют DES. Чтобы определить, что используют ваши сервер и клиенты, взгляните на символические ссылки в каталоге /usr/lib. Если машина настроена на использование библиотек DES, это будет выглядеть примерно так:

    % ls -l /usr/lib/*crypt*
    lrwxrwxrwx  1 root  wheel     13 Jul 15 08:55 /usr/lib/libcrypt.a@ -> libdescrypt.a
    lrwxrwxrwx  1 root  wheel     14 Jul 15 08:55 /usr/lib/libcrypt.so@ -> libdescrypt.so
    lrwxrwxrwx  1 root  wheel     16 Jul 15 08:55 /usr/lib/libcrypt.so.2@ -> libdescrypt.so.2
    lrwxrwxrwx  1 root  wheel     15 Jul 15 08:55 /usr/lib/libcrypt_p.a@ -> libdescrypt_p.a
    -r--r--r--  1 root  wheel  13018 Nov  8 14:27 /usr/lib/libdescrypt.a
    lrwxr-xr-x  1 root  wheel     16 Nov  8 14:27 /usr/lib/libdescrypt.so@ -> libdescrypt.so.2
    -r--r--r--  1 root  wheel  12965 Nov  8 14:27 /usr/lib/libdescrypt.so.2
    -r--r--r--  1 root  wheel  14750 Nov  8 14:27 /usr/lib/libdescrypt_p.a
        

Если машина настроена на использование стандартных для FreeBSD криптографических библиотек MD5, то они будут иметь примерно такой вид:

    % ls -l /usr/lib/*crypt*
    lrwxrwxrwx  1 root  wheel     13 Jul 15 08:55 /usr/lib/libcrypt.a@ -> libscrypt.a
    lrwxrwxrwx  1 root  wheel     14 Jul 15 08:55 /usr/lib/libcrypt.so@ -> libscrypt.so
    lrwxrwxrwx  1 root  wheel     16 Jul 15 08:55 /usr/lib/libcrypt.so.2@ -> libscrypt.so.2
    lrwxrwxrwx  1 root  wheel     15 Jul 15 08:55 /usr/lib/libcrypt_p.a@ -> libscrypt_p.a
    -r--r--r--  1 root  wheel   6194 Nov  8 14:27 /usr/lib/libscrypt.a
    lrwxr-xr-x  1 root  wheel     14 Nov  8 14:27 /usr/lib/libscrypt.so@ -> libscrypt.so.2
    -r--r--r--  1 root  wheel   7579 Nov  8 14:27 /usr/lib/libscrypt.so.2
    -r--r--r--  1 root  wheel   6684 Nov  8 14:27 /usr/lib/libscrypt_p.a
          

Если у вас возникли проблемы с аутентификацией клиента NIS, начать её решать определённо стоит отсюда. Если вы хотите использовать сервер NIS в гетерогенной сети, вам, наверное, нужно будет использовать DES на всех системах в силу того, что это минимальный общий стандарт.


Руководство FreeBSDPrevChapter 1 ВведениеNext

1.2 Добро пожаловать во FreeBSD!

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

1.2.1 Что такое FreeBSD?

Итак, FreeBSD - это великолепная операционная система, основанная на 4.4BSD-Lite. Она работает на компьютерах с архитектурой Intel (x86) и DEC Alpha.

FreeBSD используется на огромнейших сайтах в Internet, включая:

и многих других.

1.2.2 Что может FreeBSD?

FreeBSD имеет заслуживающие внимания особенности. Некоторые из них:

FreeBSD основана на 4.4BSD-Lite от Computer Systems Research Group (CSRG) Калифорнийского Университета, Беркли, и имеет в себе характерные черты модели развития BSD-систем. В дополнении к прекрасной работе предоставленной CSRG, Проект FreeBSD тратит многие тысячи часов для тонкой настройки системы для максимальной производительности и надёжности в условиях максимально приближенным к боевым. Когда большинство коммерческих гигантов только борются за рынок операционных систем для PC, FreeBSD может предложить такие особенности, производительность и надёжность прямо сейчас!

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

Исходя из того, что исходные тексты FreeBSD всегда доступны, система может быть использована в едва известных проектах для специальных приложений или проектов, а это, в большинстве своём, невозможно используя операционные системы от большинства коммерческих производителей. Вот несколько примеров того, как люди используют FreeBSD:

FreeBSD доступна как в исходных текстах, так и в бинарном виде на CDROM и через анонимный доступ к FTP. Смотрите Получение FreeBSD для уточнений.

Этот, и другие документы, могут быть скачаны с ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

По вопросам связанными с FreeBSD, прочитайте документацию прежде чем писать в <questions@FreeBSD.org>.
По вопросам связанным с этой документацией, пишите <doc@FreeBSD.org>.
По вопросам связанным с русским переводом документации, пишите <frdp@FreeBSD.org.ua>.


Руководство FreeBSDPrevChapter 10 БезопасностьNext

10.9 OpenSSL *

Этот раздел еще не переведен.

Этот, и другие документы, могут быть скачаны с ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

По вопросам связанными с FreeBSD, прочитайте документацию прежде чем писать в <questions@FreeBSD.org>.
По вопросам связанным с этой документацией, пишите <doc@FreeBSD.org>.
По вопросам связанным с русским переводом документации, пишите <frdp@FreeBSD.org.ua>.


Руководство FreeBSD
Prev Next

II. Системное Администрирование


Руководство FreeBSD
PrevNext

III. Сетевые Коммуникации


Руководство FreeBSD
Prev Next

I. В Начале


Руководство FreeBSD
PrevNext

IV. Углубленные темы


Руководство FreeBSD
PrevNext

V. Приложения


Руководство FreeBSD
Prev Next

III. Сетевые Коммуникации


Руководство FreeBSD
Prev Next

IV. Углубленные темы


Руководство FreeBSD
PrevNext

V. Приложения


Руководство FreeBSD
Prev Next

V. Приложения


Руководство FreeBSDPrevChapter 3 Основы UNIXNext

3.3 Права доступа

FreeBSD является прямым потомком BSD UNIX® и основывается на некоторых ключевых концепциях UNIX. В первую очередь это, конечно, тот факт, что FreeBSD - многопользовательская операционная система. Это означает, что несколько пользователей могут работать одновременно, решая различные задачи и совершенно не мешая друг другу. На системе лежит ответственность за правильное разделение и управление такими ресурсами как память, процессорное время, периферийные устройства и прочее.

Многопользовательская среда предполагает наличие механизма регулирования прав доступа к любому ресурсу в системе. Существует три типа прав доступа: на чтение, запись и исполнение. Права сгруппированы три по три, соответственно чтение/запись/выполнение для владельца/группы/всех остальных. Численное представление:

ЗначениеПрава доступаСписок файлов каталога
0Ничего не разрешено---
1Нельзя читать и писать, разрешено исполнять--x
2Нельзя читать и исполнять, разрешено писать-w-
3Нельзя читать, разрешено писать и исполнять-wx
4Разрешено читать, нельзя писать и исполнятьr--
5Разрешено читать и исполнять, нельзя писатьr-x
6Разрешено читать и писать, нельзя исполнятьrw-
7Разрешено всеrwx

Вы можете использовать опцию -l команды ls(1) для получения подробного листинга каталога, включающего колонку с информацией о правах на файл для владельца, группы и всех остальных. Например, команда ls -l в произвольном каталоге может вывести следующее:

% ls -l
total 530
-rw-r--r--  1 root  wheel     512 Sep  5 12:31 myfile
-rw-r--r--  1 root  wheel     512 Sep  5 12:31 otherfile
-rw-r--r--  1 root  wheel    7680 Sep  5 12:31 email.txt
...

Вот как выглядит первая колонка вывода ls -l:

-rw-r--r--

Первый (считая слева) символ говорит обычный ли это файл, каталог, символьное устройство, сокет или любое другое псевдофайловое устройство. В нашем случае -, указывает на обычный файл. Следующие три символа (в данном случае это rw-) задают права доступа владельца файла. Затем идут права группы, которой принадлежит файл (r--). Последняя тройка (r--) определяет права для всех остальных. Минус означает отсутствие каких-либо прав (т.е. нельзя ни читать, ни писать, ни выполнять). В данном случае права установлены таким образом, что владелец может читать и писать в файл, а группа и другие могут только читать. Таким образом, численное представление прав 644, где каждая цифра представляет три части прав на файл.

Права на устройства контролируются аналогичным образом. В FreeBSD все устройства представлены в виде файлов, которые можно открывать, читать и писать в них. Эти специальные файлы содержатся в каталоге /dev.

Каталоги также являются файлами. К ним применимы те же права на чтение, запись и выполнение. Правда, в данном случае ``выполнение'' имеет несколько другой смысл. Когда каталог помечен как ``исполнимый'', это означает, что можно ``зайти'' в него (с помощью команды cd, change directory). Это также означает, что в данном каталоге можно получить доступ к файлам, имена которых известны (конечно, если собственные права на файл разрешают такой доступ).

Если же требуется получить список файлов в некотором каталоге, права доступа на него должные включать доступ на чтение. Для того, чтобы удалить из каталога какой-либо файл, имя которого известно, на этот каталог должны быть даны права на запись и на исполнение.

Существуют и другие права доступа, но они как правило используются в особых случаях, например, setuid-бит на выполняемые файлы и sticky-бит на каталоги. За дополнительными сведениями по этому вопросу обращайтесь к chmod(1).

3.3.1 Символические обозначения прав

Предоставил Tom Rhodes.

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

ОпцияБукваЗначение
(кто)uПользователь (User)
(кто)gГруппа (Group)
(кто)oДругие (Other)
(кто)aВсе (All, ``world'')
(действие)+Добавление прав
(действие)-Удаление прав
(действие)=Явная установка прав
(права)rЧтение (Read)
(права)wЗапись (Write)
(права)xВыполнение (Execute)
(права)tSticky бит
(права)sSUID или SGID

Эти значения используются командой chmod(1) так же как и раньше, но с буквами. Например, вы можете использовать следующую команду для запрета доступа других пользователей к FILE:

% chmod go= FILE

Для изменения более чем одного набора прав можно применить список, разделенный запятыми. Например, следующая команда удалит права группы и ``всех остальных'' на запись в FILE, а затем добавит права на выполнение для всех:

% chmod go-w,a+x FILE

Этот, и другие документы, могут быть скачаны с ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

По вопросам связанными с FreeBSD, прочитайте документацию прежде чем писать в <questions@FreeBSD.org>.
По вопросам связанным с этой документацией, пишите <doc@FreeBSD.org>.
По вопросам связанным с русским переводом документации, пишите <frdp@FreeBSD.org.ua>.


Руководство FreeBSDPrevAppendix C. Ключи PGPNext

C.2 Члены Core

C.2.1 Warner Losh

pub  1024R/F6A8F561 1996-01-10 M. Warner Losh <imp@village.org>
     Key fingerprint = D4 31 FD B9 F7 90 17 E8  37 C5 E7 7F CF A6 C1 B9
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1.0.6 (FreeBSD)
Comment: For info see http://www.gnupg.org

mQCNAzDzTiAAAAEEAK8D7KWEbVFUrmlqhUEnAvphNIqHEbqqT8s+c5f5c2uHtlcH
V4mV2TlUaDSVBN4+/D70oHmZc4IgiQwMPCWRrSezg9z/MaKlWhaslc8YT6Xc1q+o
EP/fAdKUrq49H0QQbkQk6Ks5wKW6v9AOvdmsS6ZJEcet6d9G4dxynu/2qPVhAAUR
tCBNLiBXYXJuZXIgTG9zaCA8aW1wQHZpbGxhZ2Uub3JnPokAlQMFEDM/SK1VLh4u
c9KIpQEBFPsD/1n0YuuUPvD4CismZ9bx9M84y5sxLolgFEfP9Ux196ZSeaPpkA0g
C9YX/IyIy5VHh3372SDWN5iVSDYPwtCmZziwIV2YxzPtZw0nUu82P/Fn8ynlCSWB
5povLZmgrWijTJdnUWI0ApVBUTQoiW5MyrNN51H3HLWXGoXMgQFZXKWYiQCVAwUQ
MzmhkfUVW/uOVC1dAQG3+AP/T1HL/5EYF0ij0yQmNTzt1cLt0b1e3N3zN/wPFFWs
BfrQ+nsv1zw7cEgxLtktk73wBGM9jUIdJu8phgLtl5a0m9UjBq5oxrJaNJr6UTxN
a+sFkapTLT1g84UFUO/+8qRB12v+hZr2WeXMYjHAFUT18mp3xwjW9DUV+2fW1Wag
YDKJAJUDBRAzOYK1s1pi61mfMj0BARBbA/930CHswOF0HIr+4YYUs1ejDnZ2J3zn
icTZhl9uAfEQq++Xor1x476j67Z9fESxyHltUxCmwxsJ1uOJRwzjyEoMlyFrIN4C
dE0C8g8BF+sRTt7VLURLERvlBvFrVZueXSnXvmMoWFnqpSpt3EmN6TNaLe8Cm87a
k6EvQy0dpnkPKokAlQMFEDD9Lorccp7v9qj1YQEBrRUD/3N4cCMWjzsIFp2Vh9y+
RzUrblyF84tJyA7Rr1p+A7dxf7je3Zx5QMEXosWL1WGnS5vC9YH2WZwv6sCU61gU
rSy9z8KHlBEHh+Z6fdRMrjd9byPf+n3cktT0NhS23oXB1ZhNZcB2KKhVPlNctMqO
3gTYx+Nlo6xqjR+J2NnBYU8p
=7fQV
-----END PGP PUBLIC KEY BLOCK-----

C.2.2 Jun Kuriyama

pub  1024D/FE3B59CD 1998-11-23 Jun Kuriyama <kuriyama@imgsrc.co.jp>
     Key fingerprint = 5219 55CE AC84 C296 3A3B  B076 EE3C 4DBB FE3B 59CD
uid                            Jun Kuriyama <kuriyama@FreeBSD.org>
uid                            Jun Kuriyama <kuriyama@jp.FreeBSD.org>
sub  2048g/1CF20D27 1998-11-23
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1.0.6 (FreeBSD)
Comment: For info see http://www.gnupg.org

mQGiBDZZXiQRBACWc1PcCjIpTl6aCyOMVfz4jlRSKblwib2s07TBwbgR1zMhbPie
O2K4ZJqTcG4EnbMLEyYMbYwvNdOfUIjMW3VI1PJhRwWthTcbUjubzTu8Zxw+sKME
ansth0xZW7Ax29UWQcTPxs4SRsCPFO8t+aWwZOm6z0fb5l1vMmKNJuw1+wCg3ZZB
qK93hQPaOObwglnAIrgNpScD/j0VCEeC8fTMk+ZIo+z0+bUGPGU5cq+4XVXABYLn
wMfR6Wr5Ys/3VCx4Oyzzgp/HBzcE5HxJukJ2ur3m9IE+uFfY4+HEFiwL++Ke4TWU
7rn4rKjJYhGJ6iqGFwuxwmHdjcBh/38X0kmrCxyPYpt6xO+sJBP+QOABw3PFlMkF
PUY5A/9RGU4mm6K7cteNdbHDI8yFNorQs8W8fRb8yP8bw1T8qB5+/rQ5jxAfA5sr
FCuZsKNFdph9z/I3eFYVW4P8+9gmI2FAAAocWheSyKttAFHx63JRyBqXq9xmHKST
kuaoQVXeFycSULAPkV67j0/zDL2mis6bRpPopINGgjkia16u6LQjSnVuIEt1cml5
YW1hIDxrdXJpeWFtYUBGcmVlQlNELm9yZz6IVwQTEQIAFwUCOmRRlgULBwoDBAMV
AwIDFgIBAheAAAoJEO48Tbv+O1nN4+YAoKeQztEcbPBbbX7DZAHOsGZLrZ2NAJ9a
WEoFGMT3keQDjtjUI9c8IMh/l7QmSnVuIEt1cml5YW1hIDxrdXJpeWFtYUBqcC5G
cmVlQlNELm9yZz6IVwQTEQIAFwUCPE3sswULBwoDBAMVAwIDFgIBAheAAAoJEO48
Tbv+O1nNMp4An22RFzdv9zdNLlcY9GLPFyUrniqiAJ9F9Rhic6qBaXynksNw51Do
+cLWkbQkSnVuIEt1cml5YW1hIDxrdXJpeWFtYUBpbWdzcmMuY28uanA+iFcEExEC
ABcFAjxN7RoFCwcKAwQDFQMCAxYCAQIXgAAKCRDuPE27/jtZzYFdAJ9BFckSo4/r
SMe9UqbRMPK+8FUumwCfYH1pt4t6jFlulLk+9wYA9wISL3e5Ag0ENllesBAIAMSU
hrKdEdKzQXHzkoE4Nzl3hb6dtDmjgYr+3X95wBkUvtrk2CeYG3RC1PNwd1sEFEWp
IiSzOaQDzxZmtBGpMkQ1It+CW4sC5Cs2TQ59VHLFw7HWSYMNj+RchWuWkhwipnX5
8wu6To12Mu2MnyLszX2QIUxrQme7UpKkJgCct60C1DZLoQuZmfEZEyXmSfJsizeq
eeJuusZwOWDH0ixuFVK/5A2RwaWFMftdhh/Vw0EkxdQnMJ+7zJ/hbY64VR7uz8oI
5smfjVe0yqXMACREUzXmqn+Dc6Pz6ESVTv2XwIy0UxqxiYk1J98Cf3ffi5+e/q1d
rej2PzArpfzaygu88uMAAwUIAI/IiiQJupz9BaCws/K6j4Qs5iWRiSB7vaZfgCr9
c6vx+mIXX1Pblity5TOn9qXMv7vUM/dgmWSBbkkrvfD++H4ybJjpcOZN+peeGd0G
/UfiQFMarsj9MozAmhzI5L00JqLOf4u/XBv0rh5HOX6t+M9MfZYL3C7bn/LxmDif
prT8jxoA2SC+lPGSzI+M+ay/mz8kDmGD7fCS+uAFo5T1kjU+ed2dhXnl16gRR8NO
6yAdURIC+xs6P+7L8uOiZfuk0gzn5RC6CYrEKiGZf9VqTRA2vcirPNEZR44jYXS3
nL7x9pIsHyCyxEvojut7iGWO6qbaW/c+MRjcA8jgp9OuFROIRgQYEQIABgUCNlle
sAAKCRDuPE27/jtZzZksAKDbznARmDIIxZjHfAry2UJFBPQbvgCgl/ERQfF++Uvw
hLaVfesP/NCIt5Y=
=AoU9
-----END PGP PUBLIC KEY BLOCK-----

C.2.3 Murray Stokely

pub  1024D/0E451F7D 2001-02-12 Murray Stokely <murray@freebsd.org>
     Key fingerprint = E2CA 411D DD44 53FD BB4B  3CB5 B4D7 10A2 0E45 1F7D
sub  1024g/965A770C 2001-02-12
-----BEGIN PGP PUBLIC KEY BLOCK-----
Comment: For info see http://www.gnupg.org

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
qN+IdvKuAKC6p9c3lJBbYHFlhxPDhBvgBaSOKw==
=WyeV
-----END PGP PUBLIC KEY BLOCK-----

C.2.4 Peter Wemm

pub  1024D/7277717F 2003-12-14 Peter Wemm <peter@wemm.org>
     Key fingerprint = 622B 2282 E92B 3BAB 57D1  A417 1512 AE52 7277 717F
uid                            Peter Wemm <peter@FreeBSD.ORG>
sub  1024g/8B40D9D1 2003-12-14
pub  1024R/D89CE319 1995-04-02 Peter Wemm <peter@netplex.com.au>
     Key fingerprint = 47 05 04 CA 4C EE F8 93  F6 DB 02 92 6D F5 58 8A
uid                            Peter Wemm <peter@perth.dialix.oz.au>
uid                            Peter Wemm <peter@haywire.dialix.com>
-----BEGIN PGP PUBLIC KEY BLOCK-----

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
=7AWH
-----END PGP PUBLIC KEY BLOCK-----

C.2.5 Wes Peters

pub  1024D/AD10C6C4 2000-10-19 Wes Peters <wes@freebsd.org>
     Key fingerprint = 76C4 753C 83FF D982 C57D  3A2A 7387 E292 AD10 C6C4
uid                            Wes Peters <wes@softweyr.com>
sub  1024g/237A5EF9 2000-10-19
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1.0.6 (FreeBSD)
Comment: For info see http://www.gnupg.org

mQGiBDnubLMRBACzBJP6rUq+ruNhVttH8vMFy3IQIWgoMNbzGsa6O26y3wFXV6xr
gLGYo0Yb621CWKpO5/bfRbfPobcgVbInsx0cVJITNeLwLbvZP8Yd9GkUy5B8DomW
ptrKd61NRG4NjGoXNG3Z1KaPYEmbQG7hOeilq2cIcNlSDhILrpRlzbboSwCg+cbC
zRXEcCiGUKUgwD9E/58vKFkD+wdbVXdjRlAZ0uzs9+B1zTuR4CqFe7mOE2ZwEz+0
eI1X639jr5CFNlruWXbT4ZzcqPdAe4Z5G1SqucG8a+hOqfzybi4D04fsnM99f6IK
P4M4ejwmKQnrsUXuoyEOGhxtziXbuX7AfftDd9CcmFJi9ix4MT8JNVCmf2AnG3oU
+/WPA/9RmCW9XrnKGFzuJPrj5f+FlF0yyOfnGBtCluDg0bGWlncOoVdaHajdpTzk
2es8vDDn17vX4KDGJhai4/lgvdoIIu6VZ9gbDvjkhBPRZID2PBtRA3PqJrHAe8OK
PkP78wceHncrjH7PGOvB6K7zgkolBhbigBQxxqyJpiwlLsJYmrQdV2VzIFBldGVy
cyA8d2VzQHNvZnR3ZXlyLmNvbT6IVgQTEQIAFgUCOe5sswQLCgQDAxUDAgMWAgEC
F4AACgkQc4fikq0QxsRqSgCg5U4czx4fZBpgKXkSUwqN12NUTDgAoN6nLEpYOwax
3CZSxOHKIM0OaQaCiEYEEBECAAYFAjnuga8ACgkQXVIcjOaxUBbcsQCfU7yEZGRh
fd27HoAoCaoesLs3DDAAoNFYihZhlddiaAsSRFEdl5YLRXMKtBxXZXMgUGV0ZXJz
IDx3ZXNAZnJlZWJzZC5vcmc+iFcEExECABcFAj2QxXYFCwcKAwQDFQMCAxYCAQIX
gAAKCRBzh+KSrRDGxPC2AKDE+pC6kiHzVt/N+O+J887lxRi+MACggx0g0bc+XakU
F9uTA/Mem/EGc9S5AQ0EOe5svRAEAK6sihIm3ua+pbbXwHBq/3KP1mnR5TumcuqY
VMJH0h+Snaps/seA5332YrlYlzGZot7u/yK+oNj9HAt1b3bqRjxVpcQkkVqO5beN
vtJ2l0VDVtdynNL/p6pIj/w/tQlbMYjwDtEbner76IG0RZvwrREz5Dr5FUEcSJuN
l4sOaJ3nAAMFBACCbceKau0sxw7mymEgXlCQmj/uF4e8DaPmgPJxncccbv78GEeV
NQbLYsKKxts43vmhHKNQI0SUSN3kpqIGAP/Z1FwaxsL2UAZvGzL+o2Eb0mhfe9iI
N8MPaxLWFZevSE/e9EWsb5o3d6xZJqhuaLzMGi0yqR18ZUAUMhAeIK1hAYhGBBgR
AgAGBQI57my9AAoJEHOH4pKtEMbEIHkAn2jVNUFiT5HelooOTkOL36zXxALOAJ9K
ni2QSv6GouiphI2WO/b+d0STFg==
=oTDt
-----END PGP PUBLIC KEY BLOCK-----

Этот, и другие документы, могут быть скачаны с ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

По вопросам связанными с FreeBSD, прочитайте документацию прежде чем писать в <questions@FreeBSD.org>.
По вопросам связанным с этой документацией, пишите <doc@FreeBSD.org>.
По вопросам связанным с русским переводом документации, пишите <frdp@FreeBSD.org.ua>.


Руководство FreeBSDPrevAppendix C. Ключи PGPNext

C.3 Разработчики

C.3.1 Will Andrews

pub  1024D/F81672C5 2000-05-22 Will Andrews <will@c-60.org>
     Key fingerprint = 661F BBF7 9F5D 3D02 C862  5F6C 178E E274 F816 72C5
uid                            Will Andrews (Key for official matters) <will@FreeBSD.org>
uid                            Will Andrews <will@physics.purdue.edu>
uid                            Will Andrews <will@puck.firepipe.net>
uid                            Will Andrews <will@csociety.org>
uid                            Will Andrews <will@csociety.ecn.purdue.edu>
uid                            Will Andrews <will@telperion.openpackages.org>
sub  1024g/55472804 2000-05-22
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1.0.6 (FreeBSD)
Comment: For info see http://www.gnupg.org

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
2GBOZGTkO3F/
=Wc5F
-----END PGP PUBLIC KEY BLOCK-----

C.3.2 Mathieu Arnold

pub  1024D/6CFFBE67 2003-07-21 Mathieu Arnold <mat@FreeBSD.org>
     Key fingerprint = 1A5F 2DBB 56F5 817E 8AFF  51B2 A986 29CC 6CFF BE67
uid                            Mathieu Arnold <m@absolight.net>
uid                            Mathieu Arnold <arn-mat@micronet.fr>
uid                            Mathieu Arnold <mat@mat.cc>
uid                            Mathieu Arnold <arn_mat@club-internet.fr>
uid                            Mathieu Arnold <mat@cpan.org>
uid                            Mathieu Arnold <mathieu.arnold@t-online.fr>
sub  1024g/830CAC4B 2003-07-21 [expires: 2005-01-21]
sub  2048R/A498469E 2004-01-22
sub  2048R/09EB7735 2004-01-22
-----BEGIN PGP PUBLIC KEY BLOCK-----

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
=D7im
-----END PGP PUBLIC KEY BLOCK-----

C.3.3 Satoshi Asami

pub  1024R/1E08D889 1997-07-23 Satoshi Asami <asami@cs.berkeley.edu>
     Key fingerprint = EB 3C 68 9E FB 6C EB 3F  DB 2E 0F 10 8F CE 79 CA
uid                            Satoshi Asami <asami@FreeBSD.ORG>
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1.0.6 (FreeBSD)
Comment: For info see http://www.gnupg.org

mQCNAzPVyoQAAAEEAL7W+kipxB171Z4SVyyL9skaA7hG3eRsSOWk7lfvfUBLtPog
f3OKwrApoc/jwLf4+Qpdzv5DLEt/6Hd/clskhJ+q1gMNHyZ5ABmUxrTRRNvJMTrb
3fPU3oZj7sL/MyiFaT1zF8EaMP/iS2ZtcFsbYOqGeA8E/58uk4NA0SoeCNiJAAUR
tCVTYXRvc2hpIEFzYW1pIDxhc2FtaUBjcy5iZXJrZWxleS5lZHU+iQCVAwUQM/AT
+EqGN2HYnOMZAQF11QP/eSXb2FuTb1yX5yoo1Im8YnIk1SEgCGbyEbOMMBznVNDy
5g2TAD0ofLxPxy5Vodjg8rf+lfMVtO5amUH6aNcORXRncE83T10JmeM6JEp0T6jw
zOHKz8jRzygYLBayGsNIJ4BGxa4LeaGxJpO1ZEvRlNkPH/YEXK5oQmq9/DlrtYOJ
AEUDBRAz42JT8ng6GBbVvu0BAU8nAYCsJ8PiJpRUGlrz6rxjX8hqM1v3vqFHLcG+
G52nVMBSy+RZBgzsYIPwI5EZtWAKb22JAJUDBRAz4QBWdbtuOHaj97EBAaQPA/46
+NLUp+Wubl90JoonoXocwAg88tvAUVSzsxPXj0lvypAiSI2AJKsmn+5PuQ+/IoQy
lywRsxiQ5GD7C72SZ1yw2WI9DWFeAi+qa4b8n9fcLYrnHpyCY+zxEpu4pam8FJ7H
JocEUZz5HRoKKOLHErzXDiuTkkm72b1glmCqAQvnB4kAlQMFEDPZ3gyDQNEqHgjY
iQEBFfUEALu2C0uo+1Z7C5+xshWRYY5xNCzK20O6bANVJ+CO2fih96KhwsMof3lw
fDso5HJSwgFd8WT/sR+Wwzz6BAE5UtgsQq5GcsdYQuGI1yIlCYUpDp5sgswNm+OA
bX5a+r4F/ZJqrqT1J56Mer0VVsNfe5nIRsjd/rnFAFVfjcQtaQmjiQCVAwUQM9uV
mcdm8Q+/vPRJAQELHgP9GqNiMpLQlZig17fDnCJ73P0e5t/hRLFehZDlmEI2TK7j
Yeqbw078nZgyyuljZ7YsbstRIsWVCxobX5eH1kX+hIxuUqCAkCsWUY4abG89kHJr
XGQn6X1CX7xbZ+b6b9jLK+bJKFcLSfyqR3M2eCyscSiZYkWKQ5l3FYvbUzkeb6K0
IVNhdG9zaGkgQXNhbWkgPGFzYW1pQEZyZWVCU0QuT1JHPg==
=39SC
-----END PGP PUBLIC KEY BLOCK-----

C.3.4 Doug Barton

pub  1024D/D5B2F0FB 2003-01-16 Doug Barton <DougB@DougBarton.net>
     Key fingerprint = 9DD1 E44C 8660 ADA6 580F  83B6 C886 A42B D5B2 F0FB
uid                            Doug Barton <DougB@FreeBSD.org>
sub  4096g/2DBB3F89 2003-01-16
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1.2.1 (FreeBSD)
Comment: Public key for DougB@{DougBarton.net|FreeBSD.org}

mQGiBD4mlDMRBAC0iRjdwnYWGl2pP6W8MbxLHnZpBNAnEUaz8VfC5w3HAyFUV3jp
t5Lwerd6Xfxl9YziXC9yI3nQNMJtGLlHpAv6kgGAO581PPzS5ruXS5LBwsts7ioe
KFBv2QKVxVPgZfgowqAW7EBZN+PclrApi5e61evbr+CYFiR4OISrvo0N7wCg/sqB
X9yb5NjWLtEDEPeFWOcz1rcD/RcW6Hu0Pm6UWHmT9QT/43yC2MD/8CHpeMO2tKGx
H04nbWZIt26ViSdt6jniIDau+H9/gzshTB+rghLzuvHpupiUp0uwuAHd00bAkB5E
lBXXvDEDlI1w4EBdoRFWpnLRYtNbHmYelCFWntvgrlgw8sm7KFneZQWbK68RLHAs
vRcLBACNaC55OuDz5GqhMLp8q3pFI06a7jsTnRtH2DoMxbgkFbktNuu/yWWan8Jb
QddYcrRxZIiOq2yu0deZHAyoRpGQg8Xa0lHQrrU3APMA2m1CTUviLTb2X1SNitJI
ukkOxPlx4uM0yxYTjHJx950WxmdVCBWdEdOx7YFa5xZTkYrxVLQiRG91ZyBCYXJ0
b24gPERvdWdCQERvdWdCYXJ0b24ubmV0PohfBBMRAgAfAhsDBAsHAwIDFQIDAxYC
AQIeAQIXgAIZAQUCPi5fQAAKCRDIhqQr1bLw+w8wAKDuQOYpukaW4Ahp/04r7baX
IuWBEACgmmAKqyhOSsVoZrdeeqDR7tRCx1KIRgQTEQIABgUCPjO3qQAKCRDNC4o1
+1fXk55pAJ4pniJfx/AFTujC+yKQAcUCWYhLcgCfdp1tGz8jpjXprglPYV3I62vB
pTO0H0RvdWcgQmFydG9uIDxEb3VnQkBGcmVlQlNELm9yZz6IXAQTEQIAHAUCPi5g
KgIbAwQLBwMCAxUCAwMWAgECHgECF4AACgkQyIakK9Wy8PsDHwCg4RBH/3+NaCJm
aVeLP94Lkwyo8+UAoLPGft0n4X6XjJGvj2ScnLVfDyRbiEYEExECAAYFAj4zt7AA
CgkQzQuKNftX15M49QCguzpV+pjCG2J3HRPK3cSLQX+iBFIAoKqqZiVTwLNtB0S8
zV8lYl6pU8fYuQQNBD4mm6sQEADez0pSrDq+q+HxHipgs95jEX8UJ0R+DnuYteUy
vlZYTdwJxUkZ2lcuHqhzFhrDkOULPpq2xyr/DgtOgyh3M2jWd5i/qlAPvRHyHSzp
RZInWR/yS/DirnsFGcLZqK3v7vuiNOgLzQTtW5QCj8klCmRRxIm8VT5HXCcFKHiR
gtYu0p7TQvMfSXIIKaBSIMVpoJGQ7FbgXU3Jv4rFindszyIyNDmoDUI44qRXa1vY
+eLo21M+pKqZDGIx9azE710f90lyLrtwY2Sw8cJHj89pGG1WpCpQ52vsJ2LAI6T/
rnzOy1HZZsODh1Ct4q5xfspzf7CbttA+oPO3ujYl3tk3+NnjWVORBqJ0Q7QJLVAY
X6qIYy8Qt5Fh5lkOkg1eaWjleapqYjBZx1VSIR9gyma+uWhAbTBuVB5t0mhGT2EG
s/NXj0Auoy2Knebx/qAeh64kN6WGfVx68vpLbjRoWtI1dbLKwcJvpFgxbEtousOq
QAf2Ax7zLGzgR+XzxqQn6oiTOILHWUjOvVJbNXHH47Vzd60UrPXKWMeGJONy70zq
H7b9xhgBQPxp8fTRly+ssoBP0QB0g9dFIhI7jSywkyzReSXkpMUM2S++67HBruXZ
kK91ssFdkTwpLsJO6hPxeHbw7IcTWLp2dRXAiqI3F5rALH6HyDYwpQY7f8R1qNoB
PeounwAECw/8DeoxOwFFElKOpNqsYeANUUcnABxa0cvvI46v1tINdctNiDbqkW1Y
9fqIWj7w1sCOL18z1PmB4fGydyKj6f21zwewx5QfCFHUJyD9EciNYkbpwJa3GT2q
PAjOvhbyiVaran9yePKB+3JLAn0TjLhe4/CVXnKHDs/VN6S8V0MZjczsr8LsQTCg
7ZABSQetvPaUex3/CNfsfKzCSwlcd45olYKF69SwXkz06FgDaCwiVtGSk7d/Q7Ut
rwjeKHXuiAgz6Gkx2cIPmrnPmTPRaNxGB2bUny0uavXPdA6nmz5jksc5U05KwDPr
pSqlo0GPDR2vPyY72YiPgz+L8vrSbjv0bEM9T1JE7puKnBBD1ZUDxhCg8/es6zsb
ZvHE15EY+M/6WyX37YI93sCaMgJWoVdPJk5eUSlQ8LIlKUuqx98EFAv4lrCZ7uld
e248441nGYg/2jtZvtO9uX4asH3yRicXirv7Ee7JSn/nNKYoQTxDB7xCAbOUn3BE
d/jBSh+ZnsAM5/mGcJ3XEQ3tTQuFLNYzf/S2dd742QVvtWddjj4t49LlXWBMwbJg
xHJXISb/dUgUNCGAaUuH8dBipCbp3Cj7EW2lA3Py/GuN5vaRBFBOGP3tU72HxyRh
bQNP6GzSFODMLF8fCGNsGDOodH6gbjAzSKNLBDgmRdrfLwMyDD/aYz+IRgQYEQIA
BgUCPiabqwAKCRDIhqQr1bLw+2EZAJ4jfMwOGDSgaA31ZCkSfZBeEH0Y6QCgtv03
3aTBA//4QnkllJNaP4YZYp0=
=79FQ
-----END PGP PUBLIC KEY BLOCK-----

C.3.5 Anton Berezin

pub  1024D/7A7BA3C0 2000-05-25 Anton Berezin <tobez@catpipe.net>
     Key fingerprint = CDD8 560C 174B D8E5 0323  83CE 22CA 584C 7A7B A3C0
uid                            Anton Berezin <tobez@tobez.org>
uid                            Anton Berezin <tobez@FreeBSD.org>
sub  1024g/ADC71E87 2000-05-25
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1.0.6 (FreeBSD)
Comment: For info see http://www.gnupg.org

mQGiBDks22ERBACsqOob/YoPnaI/xubQKn/CCUFsaEMqL14TZ+FSlCphq3uZ7Y0W
Qg2eqaTp97lG2NTVNEzF7K0yr/C3ofEQmTINQTd7DmEj04DDlR+t8BMFe6Xz2sBI
WlEPD54ZfJVqhEX5P6T0xe9hiqjXKwQHHl1skKniKeO07o3K/4bCDDMfKwCg5DY1
/2j/Gid0YmxsJCIlg9kzRGMD/1lkSkQ0KrPH3RVPMrkRWE3rvvMES/F7jYNfKDQj
X5lJDKoIQyWh1JwAmW/O10V+24Vl6JEFNQ4QJ7ix9hlkI59YS4TERxCUGGDpl3jr
Lae6FFxYc1D5H8LLpiTSApmZcLxUE8CFoZJLySHgjp8qzvA60wMOjkfkWMgw3BpE
N8DVA/9UF+5ue4bLHsPn7Jv5NzOkzaTgC/9O3UZUj/jYOp/vkI+0wPnP0U5f304P
iLpYl1tlCEpciWF88MS5k3+8zsk8trqorss/XQfFzhHVtvRtgVxj87V0Z01E2ZZr
YlqrnzHKQZOAKM2X9FiRZOAkndkkpeB+7SSeXDP62I56B+690LQfQW50b24gQmVy
ZXppbiA8dG9iZXpAdG9iZXoub3JnPohWBBMRAgAWBQI5LNthBAsKBAMDFQMCAxYC
AQIXgAAKCRAiylhMenujwBepAKCCtVcVRS40E9SY4Su8GTOBVoH4UwCgu3gK3zMy
/QhZnnhmTKaguG6XopqIRgQQEQIABgUCOSz5ngAKCRCBvdPEDh+beRnEAJ9xU+6P
TJrLGk8PKtO+UY8Zt7MTxgCdHYzFsXZ81j9HY0Z4EaHkQBXv1JmITAQQEQIADAUC
OS6PpwUDCWdTAAAKCRDXjLzlZqdLMXMaAJwOE+6Jh5PnfHc09x3JKN4/a0v63wCg
6GdysmObSBQXATzYBuhy/0eFCCC0IUFudG9uIEJlcmV6aW4gPHRvYmV6QEZyZWVC
U0Qub3JnPohXBBMRAgAXBQI7JNTmBQsHCgMEAxUDAgMWAgECF4AACgkQIspYTHp7
o8CQ3wCeI+P8VsHzHpfmUMa5kCzjBeqj3zcAoKYmyZUSxhV9TBQPo2WQ7zF3zcoB
tCFBbnRvbiBCZXJlemluIDx0b2JlekBjYXRwaXBlLm5ldD6IVwQTEQIAFwUCOyTV
DwULBwoDBAMVAwIDFgIBAheAAAoJECLKWEx6e6PATIsAn3clXqExEiP/Q/IDQb7e
/yolgMrRAKDPw+6ZxTOJFba2HWEto0PwQ/COE7kBDQQ5LNt+EAQAjHltp9g75EOw
pEDSUvK/B0aRUsjoIyAokRuW9Tg8S0xIhtV8ogcklvcXjQbjiEsAiO13hX7zmdmb
yH7xLiSjea/m/whmNr9K094BS1K5i7mmUqNEFOyPB7VkPbRs5gF0dCkHT5uVgqFJ
HSbss3zPyGYEBi8uDokIfOt4o5CEMYsAAwUD/269N/UwZkO4+NYivNX0ZpcUouqV
YDPQ8YLwSrkwWpG7UNvNHd1HS43OWwAOy585SkLpZkjlW58NqyXJuWVC0xJtdTrI
MKTZ3IJNXMK2wdK+nBuTL4IvJwkf04pwFel80F2NtgUjR3ZgIlRNvFtvtCkNPg0j
t7J8pPvL2vU5hz7HiEYEGBECAAYFAjks234ACgkQIspYTHp7o8Bj7wCfSZsld8vv
iM02pWobJy/VvsBJKU8An2auT0HLmVLClDph/fQa+k1R2qsR
=ISZ3
-----END PGP PUBLIC KEY BLOCK-----

C.3.6 Martin Blapp

pub  1024D/D300551E 2001-12-20 Martin Blapp <mb@imp.ch>
     Key fingerprint = B434 53FC C87C FE7B 0A18  B84C 8686 EF22 D300 551E
sub  1024g/998281C8 2001-12-20
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1.0.6 (FreeBSD)
Comment: For info see http://www.gnupg.org

mQGiBDwhwB0RBACelK3FYxd6cT5ukbiSdVLHPLfzgH3F34JfS6Q4FMXgEAPtx7iy
U4Lc8A4Z2gCq1ZHBZTzKc61U+nzHe+eUWtAj0h3qDP4DOd7JCZbh4SW6dMIC7MAM
/9J5br6e2fIIn3rzbROXSW7CJPox2D/zZcT1b727Wgy5NHUob3qej/zhwwCgrZ0o
KBapUXgnKhesQzKlH2wWCJkD/3njAzJsFS7nDdTssMtd7ip9W97uNOFLuJ1/Sg5S
332BUby73hNzSXlS4rhtQB6NVBRLfGASuEYBJQIEz6aao/lDprIxTusCTrO/EGqa
Dy5y4XE1ClIyZ0yVw05UJiTOZ7Mu/kUTBBzQ2i15lxjzXBt9pNifvtcKBhcDmdzQ
zepQA/9Jio4IBFmjPDsl3kpvA8KqP7VXKFMMBVT9SztYVIeiFgbvff/YCqzkE5RD
0PWUFPF3o8rzsCovlpySfUNLUlfqxEZ+5+/5ky7AbJ6Vmyn7Tl+mBSZs4mTV7ktN
526ngUaW2j+aO2SdWao/di+sRutrgRjJqyvgGn1YGnrSoKbMJ7QYTWFydGluIEJs
YXBwIDxtYkBpbXAuY2g+iFcEExECABcFAjwhwB0FCwcKAwQDFQMCAxYCAQIXgAAK
CRCGhu8i0wBVHh3IAKCDMueq8RCcRO+3Lc+uQyXqDKCf3QCgpVWa7oS6lTiNxwSP
enZ7+4g+TkK5AQ0EPCHAIhAEAI3iAhZEDBjyJvPS74CXq1ypWvXfQUCYADCc/Cuv
3xrr1p4ff3oYc+IIVdeOQktKWRP1dK7v1JLmqFsNQQIs+NtgHyO+azyX5vJGVRTg
aCIuMMTnrDBC7VbAnWXtTHF5VKmmd891Y+nk68p5YVnRPc/fReXEY6dA9lqW0bN2
f2jLAAMGA/9rMbPpnRy+uvaAQChkHvOV1RnDAhN2R+U9u3d0uNnv7sWa/TJrcdig
KNUsUvXqIXVkqEMrYHTbCVC4mLMd51MLARiIKOaHeynRZYkEmdi5X7EiBLS9dCUe
7+vMz4jV6MRIGyr8TBy3CEFIdAnpY6EIVd326PzYIgx8UZw3oEvjGIhGBBgRAgAG
BQI8IcAiAAoJEIaG7yLTAFUetM4AoJg56qwlr8E1iEs0F33G6POGCWnCAJ4mW9E3
25TD51pcom8Plwy1BkuBSw==
=oE+K
-----END PGP PUBLIC KEY BLOCK-----

C.3.7 Hartmut Brandt

pub  1024D/5920099F 2003-01-29 Hartmut Brandt <brandt@fokus.fraunhofer.de>
     Key fingerprint = F60D 09A0 76B7 31EE 794B  BB91 082F 291D 5920 099F
uid                            Hartmut Brandt <harti@freebsd.org>
sub  1024g/21D30205 2003-01-29
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1.2.1 (FreeBSD)

mQGiBD43wzYRBACpuUuayKjLpf+tMndpkOwxmpaPkLFxiA/dI1iWjY8I9ItDLZyM
LqgYXemOOga6vbTvIUq7Bjzl3oR72kjNX3J1EljsMj7dxksoY5lflEMdxAyzdVoI
+/cu+cWiP0Z9unKpYmTk8S13sUTtZc0+ixioaUvHzSJ0nxQMpIW7dqCDewCgmSVR
6i2aK4oImAa9+ZbCxg7fCxcD/2xgAAwJSmaiaV/0As3A6IO0eSkbkzFSkMF+ms7C
OtrHr1zmdM7h8MaGg/jw0Z6eZalYD7AclLvXDW0rxCMFwh06SC2axUTk+aE+vcys
fuSk/HJtnktHUxZDgb28jf4X6zfcdTKE5dt5a9w3XHHPgdTXjGn7+sQNR4CWDcvq
1qNQBACOqNxJdCC9tDLycRoupNSwzldMKVBZ2/JdQjfCIq6d8HPMNVLU8PGlDjoy
RN4QkMZLbwV9Gaigk2DR6vvi8meARADt53x4OjS4W3O/Pc/Aj8rsUcF2mRU/wiJC
8VkQsnaci5GuaYAssgKroOTZQzxHkOjbk4FeQ70C+wxovRsTh7QrSGFydG11dCBC
cmFuZHQgPGJyYW5kdEBmb2t1cy5mcmF1bmhvZmVyLmRlPohfBBMRAgAfAhsDBAsH
AwIDFQIDAxYCAQIeAQIXgAIZAQUCPjlTfwAKCRAILykdWSAJnxpyAJ9eHCdgiEt/
+Z5Ms8Qe3ekWTYTy1gCfdVWLF2MrZNL/MYOgBhhex70gKzu0IkhhcnRtdXQgQnJh
bmR0IDxoYXJ0aUBmcmVlYnNkLm9yZz6IXAQTEQIAHAUCPjlT2QIbAwQLBwMCAxUC
AwMWAgECHgECF4AACgkQCC8pHVkgCZ+BBQCeMpgFMMm4siEtrzqdisrRaxJJvosA
nA7UDwOVoHDZaAkFD0HNcUsTkO3KuQENBD43wzcQBADsEH8o/9tD01ScNfhoMbK4
N7GsIJNFwQf0+MQuplpXQx4eBpI9ST1ZoAUXeM1j4jk5PIAMJzt8w6BAGgcU4iUG
Un0R/QMTTXVkfovdSe9FW7/QtUjRtTQz3QOfZTkekYauFIiW+lSmH3BDwRXhpKgM
e19eQZYOPRfLCnLLwqdr9wADBQQA5tIdzlDS80CNZxxoFDKlvOghtrIzPG/wIwGV
at2clZMLhXESxDxDkpwT7XP1GRLyN/Plh/4k2vwxni7nOJ8BIch7rRh3E48TJat1
iZ99SFc9iibED5hY/HrKlc/kphFnUuEr/kk82UCv9p4/d2V1+8v1N+Cy2jCGvrip
IQ6v2fOIRgQYEQIABgUCPjfDNwAKCRAILykdWSAJn0J4AJwMsjovUA6jCJRMEzOS
kIakJgqJvgCeNLKyNEkyJZh0wZUcEg1zYLRYp/w=
=+h/9
-----END PGP PUBLIC KEY BLOCK-----

C.3.8 Oliver Braun

pub  1024D/EF25B1BA 2001-05-06 Oliver Braun <obraun@unsane.org>
     Key fingerprint = 6A3B 042A 732E 17E4 B6E7  3EAF C0B1 6B7D EF25 B1BA
uid                            Oliver Braun <obraun@obraun.net>
uid                            Oliver Braun <obraun@freebsd.org>
uid                            Oliver Braun <obraun@haskell.org>
sub  1024g/09D28582 2001-05-06
-----BEGIN PGP PUBLIC KEY BLOCK-----

mQGiBDr1p9kRBADrTCmhk/+XY9Jc34z36wp8zy1rbxGBy80enJM+aFPHks/iYPxR
WA1tB8BEdGPJliUMYcNGeo+ZX3As1+xxo7NJCc7Zd7Gfs1+fMOXPwKGt02mr+Nje
+nF9XMfdGPP0IcK9lzkVeEdH2JP41pS2SmrMwsTE/eGv9pFEnnmRxeuFcwCg1RYc
f8freOk8v68+J99mCUUAGl8EANePcxWbRYgH5KulTzE5nYIt9WBn247T7goE3yn1
R2VddSXXGhs0byRxXpNAcrysyGshIQY0nnZSB5AUt27tZJucoT1p/BtBFQ6hLCQe
kaIRL0sdXrVJZn3/Q1G7vJWD6wwS35dro5PsYYPDI+qL1tISlWHZNQ2Y6jGdqhc4
Len0A/4nV78yB7cLvHksxwvbdtVVn8eVo1B2U+/b4cXhevHAl8AmNN+usmEodxxe
8FYWV8jY323xiYSMrCpYT9FuD3r2qORMOGWpg0zth6BkhdgH1z2i7koKkGIfc4mV
6oea3ep5uaU82r1sGe7/cVzMGUwzZq9xizwODfbmSW6E+vdAjLQgT2xpdmVyIEJy
YXVuIDxvYnJhdW5AdW5zYW5lLm9yZz6IXwQTEQIAHwIbAwQLBwMCAxUCAwMWAgEC
HgECF4ACGQEFAj4YDoEACgkQwLFrfe8lsbr7rgCg1K0Zl8CPgrQG7BEaZqzSiIM6
IZAAnjz5ifN2xHJSOJiLYloidZsikNFQtCBPbGl2ZXIgQnJhdW4gPG9icmF1bkBv
YnJhdW4ubmV0PohcBBMRAgAcBQI9Y1sqAhsDBAsHAwIDFQIDAxYCAQIeAQIXgAAK
CRDAsWt97yWxuv0CAJ9lUDzKKdaCp/8mJjlXLjlSZaaJTgCfXIqQr58p5MSFkVdL
hLbK1P1l8FK0IU9saXZlciBCcmF1biA8b2JyYXVuQGZyZWVic2Qub3JnPohcBBMR
AgAcBQI9Y1tFAhsDBAsHAwIDFQIDAxYCAQIeAQIXgAAKCRDAsWt97yWxukHLAJ9u
oP9cIdBXldt7XfQ/5xK2fUsHPgCdFIR7cK0l0spO2xjzbzhoPPVShbq0IU9saXZl
ciBCcmF1biA8b2JyYXVuQGhhc2tlbGwub3JnPoheBBMRAgAeBQJAViQBAhsDBgsJ
CAcDAgMVAgMDFgIBAh4BAheAAAoJEMCxa33vJbG6MhIAoJ3dqHVStQdGzLPTGbtP
Zq8wG0jmAKCzMo+si/LFBZAnOqYN3g2yVOOc6rkBDQQ69afaEAQAlaNzX3ql+XfL
obAAIWW/TdY9Yh6r0fFFoK2Mdt6vungWhzSWb63DprREXyW1k6QbPQxL+pAfeCYZ
oXQuNBmsUpO1Xn6ViEGRd53D07sNJfBrE/5w3hwL+c9lWSJlt0vHKzFtPAmqenBd
fA0fs9afiew2sHhk/jz/FAwWcnF4aC8AAwUD/0upFaHEZsf8sVmSEew5tAtZ6i3x
zaBjhaDv3sYobza57S8mXYhscK+nNHx3bP036wJ0z8ypqb5oCqGzWUkj9OpYZs0u
Tbpla/MoCI9N1Ch8LfQkWPuvYjHF6LSY3wpZKaNWfeZPCmMT5XPqjuxDB1pCmnAU
OizLyimZU2Y8tfQWiEYEGBECAAYFAjr1p9oACgkQwLFrfe8lsbqmfgCffgEhvau1
1EUoZmkdnzUg2rbKYnQAn1fVK9TjWnJWQ/YDOn9hmMZWYjib
=wrrS
-----END PGP PUBLIC KEY BLOCK-----

C.3.9 Jonathan M. Bresler

pub  1024R/97E638DD 1996-06-05 Jonathan M. Bresler <jmb@Bresler.org>
     Key fingerprint = 31 57 41 56 06 C1 40 13  C5 1C E3 E5 DC 62 0E FB
uid                            Jonathan M. Bresler <jmb@FreeBSD.ORG>
uid                            Jonathan M. Bresler
uid                            Jonathan M. Bresler <Jonathan.Bresler@USi.net>
uid                            Jonathan M. Bresler <jmb@Frb.GOV>
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1.0.6 (FreeBSD)
Comment: For info see http://www.gnupg.org

mQCNAzG2GToAAAEEANI6+4SJAAgBpl53XcfEr1M9wZyBqC0tzpie7Zm4vhv3hO8s
o5BizSbcJheQimQiZAY4OnlrCpPxijMFSaihshs/VMAz1qbisUYAMqwGEO/T4QIB
nWNo0Q/qOniLMxUrxS1RpeW5vbghErHBKUX9GVhxbiVfbwc4wAHbXdKX5jjdAAUR
tCVKb25hdGhhbiBNLiBCcmVzbGVyIDxqbWJARnJlZUJTRC5PUkc+iQCVAwUQNbtI
gAHbXdKX5jjdAQHamQP+OQr10QRknamIPmuHmFYJZ0jU9XPIvTTMuOiUYLcXlTdn
GyTUuzhbEywgtOldW2V5iA8platXThtqC68NsnN/xQfHA5xmFXVbayNKn8H5stDY
2s/4+CZ06mmJfqYmONF1RCbUk/M84rVT3Gn2tydsxFh4Pm32lf4WREZWRiLqmw+J
AJUDBRA44g2RH3+pCANY/L0BASF9A/0apMb/yMyQgcBLRPI+MO1QjiLxIXeh1nsK
jWpqSUojzNmosasXU9WnY3AaYv1tkXGHd031Jlhooi7W9Cr8y2Ou8cYF3kZmxTN/
cDkSWAijoduK3209QjpzdkfNZQyeWrXewRBohgt2b1jKuz3CMtmu8yV187vdITBQ
/m1Ed/uONog/AwUQNd6r4j1NsS003qvIEQJxcQCffcdAPWYz04JfuMnTVGiOAbvF
CnYAoPCa7zqkrz4C+NNZWv6naUq28Z1TiQCVAwUQNAtxKFUuHi5z0oilAQEm/gP/
eYOsPQwz0Rg5W7JeKTdQZUjyq5g0D0StVwt23XQ2NhzXpUjYc6dhWA9FqDda3tbz
CVdKGmiR8L+8I23t/kmBF/yHZrX8yNDG2UP7j8mzyTsYtrneguifphBiTfYgQp7G
gs/AhE7gvYEdZrcbMcklI/ZpNH8Sn3T+kt0A67+gkNSJAJUDBRA4uR++V8m5SpXB
F3EBARc5A/9jtM4Ds4ppcEwOyn5+QbncmqIZ1pkolASMWypkOb0sRVB4rw4Qcufv
cq9NFy7cOVzMGqU7t6Xt+JwBSAXhT6ftkgqz4Z3z9X/uDXXLNl9xwG+prcioHysJ
AuuPhyUgaQCICTf1+2LKxV11aVfNn1eVJ5NNHg6+CIVl+We/7Iyt3ohGBBARAgAG
BQI2CQVCAAoJEGNKpdi6XK7SitoAnjShEqJHD2ALvwkUBGlEUhskuHxkAKDexPfc
e6H7zFSdQXvddPpvU3Lec4kAlQMFEDWiXlNlYKmsNPn51QEBPNcD/2H9lS6GhEpN
ZWJqKy0Yl9aLboUH8qbmcNAGv8SvDdeSxAIzBMvIS6CDp1qFDW71jkTm0o/FsHr1
4X7sldUcT/PfOLNHpUvex1HHvhM9pw+x2FlGMKERBzSG0stgA+QmsU9UDMCVKWbu
p34xd/x8mi9CzrE+1kle6RC6Q82WGpn3iD8DBRA0h/5BeLVyoGs5bW8RAn5OAKDv
lWhVX4LlJFl9dKT0kn7z8jyqogCeMZ/EUiHtbbZp6pJAzIS4dNJio5SIRgQQEQIA
BgUCOEVR4AAKCRCWrNRNg2cM0c1qAKCtP5zsLVfZQTruoogvyp25ocJ6sACgsF7c
v4sg8sPgs4HE3EVogHl1VhmJAJUDBRAyrIvQs1pi61mfMj0BAXblA/0YVeEGvPa2
JbPb7SBZulwY2fJlt+xWMXqiMYN2ayMkzJYIbDj1dH+88pgglj0Riji3j0YhqNGQ
hJA02IjPbZ8ECNPa5j1iW+dMn00mV4x8evh3JujugQpgxZaKNDMaOp/abzB/05pq
h8QrAFfqfFxFsqzGb8FUspzMZiXde2ORy4kAlQMFEDQN8X31FVv7jlQtXQEBxnQE
AILJ2JJQbVVHRrkMFwd22KfaJkw+wlQ9Gom1a8/pV4jw4Wk1ZDgtboRMC+ffkfFX
aQJxAzKG3WQwP4oQnPuvxVv3hNLsq1mc2+TYPVdTHwuhyPrF6Xlz8ufOWeensGnV
dsmPa783MJplDR5gF0/+TtEtgFgdBCWfnHsE66JEk1VTiEYEEBECAAYFAjnufrgA
CgkQI+eG6b7tlG7qMwCeKE+mmecBnRdF6KTmUNRuf/xMANIAni8Wju9074WOiUlj
wCBWrvBMtwafiQCVAwUQOe6AHU1WKCF5BQwRAQEBBAP/REth5Qb//1T+a6jvv+Rw
VayyzlE24W/McZRyL1pXDzbRuRx9wPiMS9yq8kwwozFQZbeHLLJkxSO661W6Fn1t
LA3+Rn02ooZ8uvrqk1GM6TvlLdzOU/2pOcUkFICu8xTPCSySVjQgFr811YwHYVZK
1uhessQyqlFROgdQ4lcJo2eIRgQQEQIABgUCOe57PAAKCRBdUhyM5rFQFtNqAKCQ
iOJTUg+XEzw4kJT6GrBjmb1MNQCdHo/p1MhqvDg8W5f2yEVWsshuvvSIRgQQEQIA
BgUCOe6DBQAKCRAgFTHVhF3+3ScPAJ9XLuCarFLgNYtc5XuT2jN0nLq5GwCfXwmK
wiwnzbOFlbSITRfBDXnbAVeJAJUDBRA57pqgfEtnbaAOFWMBAV8YBADLjY62KZgj
XJyLSkZtvJzgnKUCzeUAA/mO0i0aQd4QrlU4lvORGX49CzfWpPUoEIz6/slj9IrS
w5x4+W6/F2wgWneOMKkmkROtrxfkK/JiDF17cC+zA6W4MSZj3WfcZ1Cx5czh1zS7
KZt4X+AALhlgP9IdoYZ6aYguva44haoyUYhGBBARAgAGBQI57ppjAAoJEML8hqol
OUaLZC0AoPIjsOAF9TVLJH+n0uWKzSiQ6tPrAJ4+fHCwBQbZ+HcjeP5yNaWsxlZ3
S4kAlQMFEDnumqzW4KH+T74q3QEBZvsEALkknigcjnZcLz4q86YQIPSwinmLiEgW
cggrYVCUC3J246VCaJKcsJF03W2Yhp2MJuFhElcOZEfRSozk3O9QsuaAx+hmB/Ww
mrQD7Aq7KleNSEoNLeao8vB1VlWVRSWjmtwtDj7kLo0DwJQPwr7RbsrkTKMC/DXr
evAR8Q+V37bEiEYEEBECAAYFAjxI8Y4ACgkQDJkTa5SHS1Q7ogCgk/vN0Ojp2f5r
vJSCuMXnfbwMQcAAn3h3QmTwBFLyExCGnRqGgkiyJNtOtBNKb25hdGhhbiBNLiBC
cmVzbGVyiQCVAwUQMbYtYQHbXdKX5jjdAQHEHwP/fEaQoTi7zKD1U/5kW2YPIBUy
MTpLiO9QOr4stYjJvhHh4EjwfGvMIhbFrPKtxSNH1s3m4jAXKXiQBDCz17IIzL4n
8dlunxNGE5MHcsmpWzggyIg4zbPqPOcg4gLFEWsEkr2o0akwzIGa3tbCvC+ITaX/
rdlWV1jaQjTqSNyPZBOIPwMFEDSH/lx4tXKgazltbxECmXgAoLaWM3SvE67viXkq
S2MMO8UHqG1MAKCsCyhLvqh9cmQDKs8hwJ6MBzoRPYhGBBARAgAGBQI57ns/AAoJ
EF1SHIzmsVAWAxoAoMaEEZ9kUqSwFm6sPsslETsnrHy6AKDgNz2bZ8N+X8MGwFZh
vuLIlymSHYhGBBARAgAGBQI57oLRAAoJECAVMdWEXf7dc9YAn3hfo8kvuWZA2YuT
BE6mPp0DKY9pAKCFzsfQRhqdZhPaK5MqochPkd3Mq4kAlQMFEDnumqV8S2dtoA4V
YwEB0JID/0r92+qOLTZns+hFzAfi1vdqJ7nSNsG8ESIVMq4wVNVUf+b0A+5pNLAY
ZgrQjL8CbgQT1h03uvvudmMwNY7nhRKYbkdtwIOUId+9XCLkepo0aScRhL4esuSC
jcWI+MgSzZxJeyqsavoCx5L+rLe1l1s1+vvazq8liQeSyXlcU1VwiEYEEBECAAYF
AjnummUACgkQwvyGqiU5Rou3UQCeLAOGkBiAovJemwQx0gTc3qhxdoYAnj+x/ACW
iaekxgwmyTmG0lLxFnuBiQCVAwUQOe6ardbgof5PvirdAQFRUgQAstd65wbZWxGF
VDmMVmJNR62SZGburDLq8SvX/vvjoac6/2zBg/u6sZaji7DJCcAto8MCKj6pbvq3
fTZdfwve52XhDk6EMM50i5Hqc2fPWJYB6JuOjCWyutnTXj9odg8Y1o5cUSuaxsOh
TGmDXmmyT1vsf7j3FMDDzYuWXAfEWp6IRgQQEQIABgUCPEjxlgAKCRAMmRNrlIdL
VAYsAJ9R5CD4T/m59oJ5fZDFZBDEqxyAQQCggPB/NYegHZZFqe8UvIwDawvzRp+0
LkpvbmF0aGFuIE0uIEJyZXNsZXIgPEpvbmF0aGFuLkJyZXNsZXJAVVNpLm5ldD6J
AJUDBRA123UpAdtd0pfmON0BAVf+A/0SyTU67QKidQE8V1r/YPAq9/2BdBk5seXS
KyTqQbqe3kkpojPwS/SLOGDLKFW1wiP/E6gOu0zCAr6t+T2VOMG6EAfA6gQK/oEP
Oe/DOxJMNTgBeiV2OgBdj/JO4THFQXFTgAhCz0/zcjzQchuUEQ6DZpbKJCWllP9p
bOEEgWWZW4g/AwUQNhlqDT1NsS003qvIEQK37wCbB3PS9GfrxsuQ4AkE011KsdYz
tnkAn1lv/gOBbRuI7cpzaugzUXAXTvaniEYEEBECAAYFAjYJB1kACgkQY0ql2Lpc
rtK/kgCgsUMJ5Te8teWc5975HtaCbsFBymkAoNl01D0GgAqY2RcVUdm8HwqkB1oI
iEYEEBECAAYFAjkGAQgACgkQf0/uBDn7eUQ4EQCfQZlhYxtvbvpKk/xxMf8E1uZT
kW8AnAhzff+mTJ1odLahcdnZj3RCLog6iD8DBRA2ikVNsmH2M6yqReURAvvgAKDm
eL5BkG+s9r7u4EynZlHsLsZ8RwCcC9556M1OwODG8ONZ1G1ylBSeBUSJAJUDBRA5
7oAxTVYoIXkFDBEBAfM1A/9RzuGwZkpx7fusQBmiLkDdNuLq3bNqWRdpEsrBB6qH
YxZgQ2egYS1UNLPkISVHd2aJjLnaE53pq1fEMig3wnhnIGkHdb9w9HPIbFklOej2
0VJEocEc46pPxa3gx8SK696JDoXS0dWiYHX77Do/ro73U5hJJWeIZnXNufKsE4BG
u4hGBBARAgAGBQI57ns/AAoJEF1SHIzmsVAWB+4AoOrr1fhnul1zpfTLn/iN/n1K
jWl0AKDHMaBsSOUgNPueiB7HNZt1aqZhiohGBBARAgAGBQI57oMIAAoJECAVMdWE
Xf7dbB4AoI3GO8yAvh0uF66bD9B+NlHpUal3AKCGaHKa0Q5j1EZBFI+4bSney4Pw
qIkAlQMFEDnumqV8S2dtoA4VYwEB8zcEAKpk/Dz50tcyMH5Rf6fsqOJEEavuWiIT
ghf3qyI99E5L7gi1Tiy2aJmLbgbKK2p2uSMoV3H+p9dGEaVpCIxHrAn77iljw3uX
9M/5jhO8dcDOxXBbDTUEYkGHe2oU3af+/JbyX8a4jQLLHQtQmW/9j5H/QKQC4IVT
+wEQAQpqGG7LiEYEEBECAAYFAjnummUACgkQwvyGqiU5RotGwACfezC2rPY51SLA
SP5vQrMpQVkYvbcAoIYINz1Bpz9OXuyHpi4AqaDnR58RiQCVAwUQOe6ardbgof5P
virdAQFfWQP8C+ciH9S5Zm0parEgVPGjn3/uBCOJuz8aiiCY7SaFZxjcjRdHU1m4
rNqwmPlsMZlqrqo7JRJOQ76cCW0jSscicqCfeKWuc8RhtIxjPL3C80l3WMrSS5Qf
cq8nXga6FFOx8XQgS/gBLcqSb1RM1Jf46WlgAOMU8i8CSjEjHV2zn02IRgQQEQIA
BgUCPEjxlgAKCRAMmRNrlIdLVDRTAKCHydMKzwB7GwbQJiGmYl2kQOwdRwCeIgjs
m13E8ArGGqGUkA6SuQqv0Gm0IUpvbmF0aGFuIE0uIEJyZXNsZXIgPGptYkBGcmIu
R09WPokAlQMFEDWiXnxlYKmsNPn51QEBzcMD/3UZQwz2npbOtOvX3tJmmiPS6zyN
0lzCWUiKYrK2wGEVnqXbsDD67eH7yRPHfrRPlQOSa+UC9ssNYwzI7qcTqDruDcMp
Sn9jH40fhl2YGli9wcPoNy4B6uKXd9N/AgOiQTDEn4xs4C/NlG1o93lU3QCY5SXG
xAKWyCtePWVY6BrGiD8DBRA0h/51eLVyoGs5bW8RAtMpAJ487dbxFRAtp/MptpJC
6PBxXBvKsACg1EIMJZw9fB2Te+bKPT53vnxjt6q0JUpvbmF0aGFuIE0uIEJyZXNs
ZXIgPGptYkBCcmVzbGVyLm9yZz6JAJUDBRA7OHatAdtd0pfmON0BAaNEA/9VjhJZ
kBrKgKtuLzzLcPnMVWDM41ZCyCCy7brN01DTLwaEVpl966PRqt+uOs3onanWI3wG
/EP95akELBsrgcwG58huk7PjVNYNaCrJYMiSKY95bGxYUGXInU9mH1dSzvksZ6iR
pX25BMHqkEMHAxahVagzguPetlTIHxHGRSH3lg==
=ttzj
-----END PGP PUBLIC KEY BLOCK-----

C.3.10 Christian Brüffer

pub  1024D/A0ED982D 2002-10-14 Christian Brueffer <chris@unixpages.org>
     Key fingerprint = A5C8 2099 19FF AACA F41B  B29B 6C76 178C A0ED 982D
uid                            Christian Brueffer <brueffer@hitnet.rwth-aachen.de>
uid                            Christian Brueffer <brueffer@FreeBSD.org>
sub  4096g/1DCC100F 2002-10-14
-----BEGIN PGP PUBLIC KEY BLOCK-----

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
B7mWxE+O/VwCRKNHOACfYuq+wytbP9pFJkZQwX1rW0lWgvuIRgQTEQIABgUCPxVe
hQAKCRDwI/gLJoQdW+9AAJ9VvvZW5R7ppcZfYrJ1SZChveCnvQCfR2sWHPSbzGrp
sii0DbkB3x4GE6GIRgQTEQIABgUCPxWL9AAKCRBTtrgdwTzuB+GUAJ4yxAtvBEqG
tDKsySqR2Ywv7xcRzwCfRQBmGdzar/OeLVHUziwduAoeShWIRgQTEQIABgUCPxPz
IQAKCRBL7yYkIt9Ah2GWAJ4kpQG83TGrnIR0p6Web4T1QZjBsACgiBqEfjSGxngU
cTRrQxx/bs8TX6iIRgQTEQIABgUCPxPzKAAKCRCVZB9rJT5Y45ftAJ9fNjIStddg
GjgMs3jcGo6oak8QjQCgq4Q7ivzJ2HJUawLk0hOM1p8BT3eIRgQTEQIABgUCPxXW
bwAKCRBBufToW3E98CEaAKCAodx0EjodNg5VE5AF3oPAVPlZSgCgrIh3fheMXgTy
32bqzny8BV5yjhSJAdcEEwECAMEFAj8V9CqGFIAAAAAAGgBjc2lnbmF0dXJlLW5v
dGVzQHBlbmd1aW4uZGUiaHR0cDovL3d3dy5wZW5ndWluLmRlL35iYi9jb250YWN0
L3BncC9zaWduaW5ncy9ub3Rlcy5BNUM4MjA5OTE5RkZBQUNBRjQxQkIyOUI2Qzc2
MTc4Q0EwRUQ5ODJELmFzYyIzGmh0dHA6Ly93d3cucGVuZ3Vpbi5kZS9+YmIvY29u
dGFjdC9wZ3AvcG9saWN5L3YxLjEvAAoJEBmiaAmIOP2URR0IANjcbSgJNDnmGxUg
lEcaoUk6QEeo9iNa11OJP4+Uv1XXEEbHiyWpvALvzQ6v7Vwhofo2KGLVCTEhZHz7
MVIl+0c/zbCd7v99iOPySRRN3DhJvqPnD22Kc2KTM7WknZSW2WOKd1fU29vENFr7
7Z59UPqiB55zbXIobObbJOwu3x/vRNC/5bE4t2H7zLNRxmeNKt3S/ch6odJdCM/B
lYy0Df2REc2s2EVLcOYsL+RXwWQp33BFt4/YqmGJQUus2nxz6GraY4J925p2S4Y7
3RcTDcWZTAeexwpxHSw4VmJ5Vupa9Jll/vAdurLUVCDd4Dd1pGJAnsHsLqD5/zdX
YIxNST2JAQEEExECAMEFAj8V9DuGFIAAAAAAGgBjc2lnbmF0dXJlLW5vdGVzQHBl
bmd1aW4uZGUiaHR0cDovL3d3dy5wZW5ndWluLmRlL35iYi9jb250YWN0L3BncC9z
aWduaW5ncy9ub3Rlcy5BNUM4MjA5OTE5RkZBQUNBRjQxQkIyOUI2Qzc2MTc4Q0Ew
RUQ5ODJELmFzYyIzGmh0dHA6Ly93d3cucGVuZ3Vpbi5kZS9+YmIvY29udGFjdC9w
Z3AvcG9saWN5L3YxLjEvAAoJEKseS2BGdWse/3oAn297V8QlgeWSsvqfNYPKpqWp
OGRhAKCIuuT96Pn38WtlGOBa7zZrECTNvohGBBMRAgAGBQI/E7DoAAoJEOfJ26/j
Vu/ApXcAn0Czyiw503iLkF53c2qHJ2HUelW7AKDDiDT1zAGHdsdcaH9svMxWOa0l
dIhGBBMRAgAGBQI/Ft47AAoJEDu/z3e9iwUNnssAoK6lcUf4GkqjwYYqH08P1J+r
HaJHAJ9c9pAx86VmCaV6wQ26cKLBKUNdgohGBBARAgAGBQI/EaO3AAoJENAZ9e+Q
J6uIx6UAn11HUO9dUXyAcUXqx8lyaEa20cW7AJ9kMTvSqDHkvci2MhcUkGzjpUv6
xYhGBBIRAgAGBQI/ERsxAAoJEPS0sMx5fr+r/m0AmwT/dtstpPJs7wEOejhbgGqm
vc/PAJ9Ynh+eN+noydvRINXMXigzuuoX1YhGBBMRAgAGBQI/F9G0AAoJEJEfSuaG
oRjmlD0Anj1mLd5E3VlkwvE2/tjgs6fQ7Zy4AJ0Z7vIFQjFnMIGJwhFqYsLbKsy4
+ohGBBMRAgAGBQI/GE0WAAoJEBp0fkUw4LnYvPgAoIUWj1ZA98QOQqcjUoC2XYom
fJl+AJ9O71OiZXEgbccf2oQeY0B9mD00IIhGBBMRAgAGBQI/GX6nAAoJEGZmcXrb
g1Z57xIAoNUVFg9YL70dNJk6t9ktEEjzb2QrAJoCbcLt/dEXOcWXWbY6hDrpkKro
oohGBBMRAgAGBQI/GX7LAAoJEA2WS2ZXDm3qO3MAniLwLC8Yy9QYRDWNfPNgkOhO
L9lVAJ9AL3wmTAeNsmupBo6rUaw+gFw4sohGBBMRAgAGBQI/GX74AAoJEE4CrK4d
1rOArlMAn31ZFiAi9SPYMbK4MUgJjmVvF0znAKCPp7dwDl1Xi4hTigwPlgC+aqvF
o4hGBBMRAgAGBQI/GNSkAAoJEM6KedeYAW3H84gAnAu3PMqTcX+JptdB37ZOmijC
gihkAJ9ENGWYLfe60LF5xG8/57lUSswxQIhGBBMRAgAGBQI/GvN1AAoJECyYPlrS
ilXWFAUAoNEZuH54IwKv3HKqwdTb5DL08dJvAKCVsuNiCCrAadVPkmIPOHcC7Xpm
lIhGBBMRAgAGBQI/HE8FAAoJEHFe1qB+e4rJehgAn12rQA8HsCAuMgIlZfE4HtGe
atjYAJ9ceEBHVmJxsAF3FcCr38hxW2PwfohGBBARAgAGBQI/FbTNAAoJECole3fG
NyjSnukAn3LkrAAgqj9XTzCauqMRDJwY0EN+AJ4pUAViilJ4+l0xkiB8G6w9zBVj
mohGBBIRAgAGBQI/HGcmAAoJEMgPdFmtwp7NMGIAnRZpcoAfoNrvzFIoGcY2d1fu
9GTSAJ92cH6IuV1sargAc0JD/vUrzQpfp4hGBBARAgAGBQI/HanrAAoJEIsCZlm2
jV9/Sf8AoMAQDmyuP/iKKZERTcP02ZCXv3JHAKDcHVMd7wFzEZ9qNnJuUEAQ6ovZ
uohGBBMRAgAGBQI/HasEAAoJEN56r26UwJx/7UEAoMz4FRCmX3fCjNNDk0gmwLYQ
c40RAKDjnf8D9EUTbvCCJvxQ+O7kEYnnM4hGBBARAgAGBQI/HaguAAoJECjdsP0Z
yba6H7MAnAvGz3+gipApA92/b+SK1uVpFGwsAJ9yH+kNzOTDXwo175VGLAmURBWO
LYiOBBMRAgBOBQI/FzFmRxpodHRwOi8vd3d3Lm1hdGhlbWF0aWsudW5pLWJpZWxl
ZmVsZC5kZS9+bW11dHovc2lnbi1wb2xpY3ktMjAwMy0wNy5odG1sAAoJEN6Fg/i9
v+g45T0AoMBLmZPru2CgFojMenlKza7YIMThAKC4Wiu1jnPKUwLOp5/MB2MvmHx/
RohGBBMRAgAGBQI/HsRyAAoJEPhZkLAkiutz3TAAniyoHpHInn/2jUtEPN3jGkCN
6pD5AJwKClQwZX+WmC4aX+jzP1zamQa4G4hGBBARAgAGBQI/HoSMAAoJEG8ji8JP
2loMBSwAnAvu0OawaAa/YM3/4qajHNr+X2JnAKCGtUpISQdh/E/IrZ7edx/qUnE6
+ohGBBMRAgAGBQI/Hvd7AAoJEDPN5fiITHpBKh8AoLE1re+oa04pjBTtTf3/36Nl
gcaSAJ0QbazVwe0lBE8ETg50Kg49prwSdIhGBBMRAgAGBQI/HuFUAAoJEJSbJewH
RHJSjP0Anje106ckc1DIxXY1P5fBawny3A6qAKChKf9GrwfT4n8KhfofgMVIO43M
gohGBBIRAgAGBQI/Hw1YAAoJEOdNKbgr4W0BL6oAnRnMjBLoSTryzhH9RbgEvzqP
b5TNAKCNwTLxRmyFK0ggzoWc54Dj7vecOIhGBBIRAgAGBQI/I5jRAAoJEBigzI1X
BqS0aykAoM97S+RAuCp1fMZwVTKxpeRmaB7wAKCoq/P79PiPTdc1Dx+jXWsZJuE4
IohGBBMRAgAGBQI/JXRrAAoJEPK1Kl0KX7aHiREAoJCYlW13RsXkN2h9+wnnxfxH
NCm4AJ48N1o5SqnLkoH1RbaGNSCLzemZaYhGBBMRAgAGBQI/JuGpAAoJEIkhtdzN
FaiDH+cAnRQdXLaRinzhypYKixILJ/kqbM1FAKCD71d5zuec12xpIdpTIGSHS//X
p4hGBBMRAgAGBQI/JuG0AAoJEAcXdOAA2M0W5HAAn2nCP4ChajePMo13UgUhBAdj
WEDcAJ9OxZ8RWnV4/woi4cJzI8ecYdZKW4iNBBMRAgBNBQI/J8icRhpodHRwOi8v
d3d3LnRyYXNoLm5ldC9+dGhvbWFzYi9jcnlwdG8va2V5c2lnbmluZy9rZXlzaWdu
aW5nLnZlcjEuMC50eHQACgkQpHnNxFq0YGqQqwCgmC3Bor+yZOdWCVMPcU4UJwme
4nwAn1ogianeyFlIdSmXdVyAKZCI8yDoiQFjBBMBAgBNBQI/J8inRhpodHRwOi8v
d3d3LnRyYXNoLm5ldC9+dGhvbWFzYi9jcnlwdG8va2V5c2lnbmluZy9rZXlzaWdu
aW5nLnZlcjEuMC50eHQACgkQ+Xz54zpLf10zZgf/USp4QHtIfkjZzwcTZ9A8ZshL
o2F/+u2E+rs83afTmFHPZWVQeQOakPceaQXkHq99yVERNTr2btJs17LroQDg/DRT
spuMOnWpU1HqiaFDsHXJi0/An2aDg51nEDzzdiH/aIL2B9rQAk8ZkdaOEns1VwdI
7pr5gBW3DGwIwMxkIU5bagzuTYe/DYqwQr1WJgdh30IaX3N/u/7rLnGCkkuoTnPJ
pSLHBdnWCnXvS3zj7Ky22Xi2YdQSGxqvMHvaPp2vvwUFLC/plnyZFi8SpEptncFY
gohdU+awfkZMLWs2lJ1uQmb6Ce3Miw3k3DYVrGsKSF+S0cEfCyprlPjPG8e3oIiN
BBMRAgBNBQI/J8iyRhpodHRwOi8vd3d3LnRyYXNoLm5ldC9+dGhvbWFzYi9jcnlw
dG8va2V5c2lnbmluZy9rZXlzaWduaW5nLnZlcjEuMC50eHQACgkQeQV2j3WE9dg3
qgCgkNm7eLMfVxKfRmxc4KAYg2Z09W4AnRSC551xVi3FQAiT1MK4AtAzsP/FiEYE
ExECAAYFAj8nyMIACgkQ+dAU8DjJhY390ACePZsJNaxFOT73pg8KEoDXD4UxGMEA
oNvNIjre4i2MZZbM0Wmhft72hbxXiEYEExECAAYFAj8nyMsACgkQXQ9/SeDknzRW
xQCg3oqo0keERowG1CDWB61hzWVzZbYAnjz59v8q0it2nMI6bdoW+k5cexb/iJwE
EwECAAYFAj8nyNUACgkQG7CLvyqSMiUw+gQAmw3DUvljjS//6vm+fqSQoOiNoD1e
UwCM88Ug3tacEEuI6/mHTghuuvnuJ7Q/PbIxmJEFtNDMCAZV3zto8+FjuoI0DiaB
u3xdn8qWQOn662XZ6bNvS7eog93fk+Hxk0LWocw0aEu2pVM7FNegRsjzx9qtzkVq
5ow533SVeHBkqJOIRgQTEQIABgUCPyfKvgAKCRApvl0iaP1Un4bEAKCWhOwKmCW4
jvrqNdkAE7IQZhe/BwCgiLRIrNBxcRXUj1bSFg78IbgSGjuIRgQSEQIABgUCPyfh
MgAKCRCfzyzNPz5kJvp5AJ9SNJGpZkQ/6j1+Fmde6tmo3j3APACdFSsB5Ydr1lVo
JlIx/hzh5cRlzhyIRgQSEQIABgUCPyheRQAKCRCWJIPhVmLHNLs+AJ9E2uMLZOqL
9YVFPi+b5fw7hijHVwCgnXLQuv8mfVjc+j2Kb5FWmnlptuKIRgQTEQIABgUCPykS
RAAKCRAC1u0h4yxPS45aAJ91+p06ngZRvjfEXEBLD3P3L+NRyQCgpHNju63uXD4k
tz+IDW1mB5tKQvSIRgQTEQIABgUCPy5JvwAKCRA5Ig1uDBr/u8XoAJsH1kfPDKp9
K5QF8+CQMdbRfWsOlwCcCwJvCLfXTlONYE57Ymm14pKrEaWIRgQTEQIABgUCPy6P
mgAKCRDKDhacKPo4im0HAJ4wFWktr3ddxLyObSvsgTWkvWpIEQCgq+2w2ZcTMaZI
+9DORKLz3i7XaFKJARwEEAECAAYFAj8wMdwACgkQC3gy83PWLUG+qQgAjlu0+Nuc
UMGjGsjAzDj91vdQQSY3tnr5xN3Q8ThElsieaTlsktZdu9FBe6yS0acUnQ1TvXlD
ub+KTpc3AJmG4dlm0EhHtK7Cg8l416jZ+zNFlIitSdY7mZADS8LLVOkjPetpPVol
R/o1zGrLO3XZhZ8kCWUXI7DyVgz2Y+VleAiD5YkZ0jqEC6JQlbQf2fpyQdqJnCgk
86oHMAG5u3Ue62mn2OSWBGYGS4FP7Kauap+E8HnRFz0yMPhBXGkxy6juoMz1y9WZ
CaDlsMZ+4QjRLuj+371oZwNeL5IsadEfiFmgE0pmrF55dzELaUQx+9cmN9d3YCmj
nijFrYNUWHZKQIkBHAQQAQIABgUCPzAx6gAKCRAZq6/sHbI0q3zSB/4gASNN4W7l
BSyZ9hbzoRlVoE0UqQr6U6OlOov0fkyGC2v8pYmcz1M1Cbjjq5G68cd+qurDzqzG
4Qj4ZHI1rSwQFT8T68owL/Z/h2loUn9rpDZEBts2Vx1lUCa05t+b+znFtGjDgZYT
fhMsd+3GQg3nx5E2rMfnyj+bSlNLzyvtBbZ4KPQshEBvn8YoUtZtnQFGXKiVRULF
tv/laXPkxA06e8pwFshv9ZcVztM2JrY28bm4AeIxV+lXltXzuRuhaNIQk5HMrQpw
zOyNqLMmk+AsHV1aO2LcTF6uILyS73/T0cXpnnUXfMooZ7d0au9HCqawssGqL1e0
EoDj5fTiXx0AiEYEEBECAAYFAj8wMfgACgkQeF8wZf69S9yHpQCfe5VHuI3+Jd3y
QrO2Y1GdG4JX+38AoPfazoV9u8oHnlT8xFr83Zif6IQFiQIcBBABAgAGBQI/MDIG
AAoJEHw5el/KZtCx7DMP/2aRTGoRvfamj8ruS+USMF/jDl6/S6AWvsxIziqYOmh+
fv7CsqJL8h4yvoDcAjQcm9fEOguVhQi7juWU5RsrFHzAjzB8Pts527S7UZlnSKUs
SZLq6rINSu/LvXjXFDErXyPTQWFPq3k+SPbq9zbYjd9FzHO657rGFGM2zLkLSme1
zevAtOZZM4nXXb+lZACnMlayETDG62KBGbpEkyCDx20ciBKnc1O0gt80pb6BZvyt
Feuveqrzjv8llbz0yS8c6WwZCIRSGL+SSk8GMoVAlUnc+n40YzWDqFE2nyhI3OpT
QuukUPkim6YpyHw7U0kKHv90NNKA8v7/AiI6enBfN0omIiAccr2obWhlhbOt9nS9
npXvmCDnC2oOjE145GfC+7FdbuTE6dL7tPbuDhZ5vT8tpqV+9Gj9EJK2H6ztMY5r
ecjgHddf3rbjQXE6PG+/uIoVmjh3Rsmx63clIulEAU8lLwrQbb2CqIcsY/Zl9TBv
sDOV5iuusLrV27LJHvzxNiMnDI917GBQWlsvj0w2LoTdJDCKgcHCJq3v6SOQsqoP
n9ijvj2xZGWoRjUTizy3F932aHPMQhyTUVTA87/IxF61jCvcDCy3YUJ6EuHkuF1G
151efg9w46e8u1+KF38KunEYrwo0sOuU6GU+v79ZFOhgJY12awEulbFn5TGZZ86d
iEYEEBECAAYFAj8wMhYACgkQlYRRoq3PfpSW5ACfdMKPaOquZzmWviuXWfoMFzAo
IE8AniVwalnJp5JljCxr1OWr0PaDaKoOiJwEEAECAAYFAj8wMicACgkQ/Uo43Ch2
DT20JQP+NFxgVD2xrfjN/PCN7ZatwGT4eEe+j7FE4lDYGpYJ830Q57xpxzDfrsGv
fIDVqQezmdVZoGuOECA09sD/DJ8fVb7HtlUcE3zCMk9nMVfhJAe+JLIZVOkVedWd
rwbYtx54TqmCYduaP5X/IlMqSa5HL9lsAgTwCZLr7sOt24LAf0qIRgQTEQIABgUC
Pzal8AAKCRC7xxTRnGfNlrxGAJ4hwZ4KAbBORIrkTlQprQXaTfgf0ACeI47PZfdu
Mn1iZ7Xg4ejlKigPz2WIRgQTEQIABgUCPzflcgAKCRCAdScAZahB7eQoAJ0SZt2o
HMBiSE0gbG+hMu2lJ4nrngCgpEtvcDkdvk3/Qy4JEm3fLR7Cpo6IRgQTEQIABgUC
Pzf4IwAKCRBFwCFHaavdVMhDAJ4rhdl/bKvFlu/ahFADLZTtwR6/3ACeNtWb6fVA
llBaFCOxSBtaICz5W9mIRgQTEQIABgUCP0konwAKCRCPubcPpM/JbgEmAJ9PIP8H
bg278jI1avE1N+C9VjFV2ACgmGrFTHsIWGgFfrw7Sqj/vMmrywC0M0NocmlzdGlh
biBCcnVlZmZlciA8YnJ1ZWZmZXJAaGl0bmV0LnJ3dGgtYWFjaGVuLmRlPohPBBAR
AgAPBQI9q0EkCAsJCAcDAgEKAAoJEGx2F4yg7Zgt74oAnjGE1c1jdTHTGEYhWgUj
YeHee0U5AJ9cmeMgr5XSuF6B6H4saaaL8C0yGYhGBBIRAgAGBQI9tHFYAAoJED4s
35lZGelGshoAoKjcIBjSAQvs7qs1YPobVnCtXk5DAJ4+aucRPTSAjG53Oi3UufOD
5EMoXYhGBBMRAgAGBQI9tIq7AAoJENSNEHJ4+KjUn5cAn3QIeyeEcztJAG/g0TDn
O9G4Fti+AJ4oKRxI9s+mC0ZKTLxVGNA/VvSfs4hGBBARAgAGBQI99RB+AAoJEKZa
JJONqkR/xGEAn2hhwbXcGFeyaAfu8NAIgewXfofyAJ96u5jnfMiUnI5M0IZ85j0p
CE+enIhGBBMRAgAGBQI99PpZAAoJEN+hCDdk3bohHrcAoJg1hl0wWn36eWkeR3Sz
7Wl+t2eZAKCmfeJTPxD15DuoRzwTHjgI2LRixIhGBBARAgAGBQI99mhTAAoJEIMf
ett9H+vdkRIAniOZxKBze0MfDYjUFqpU8Mkmi/2uAKDXtq7qNVR+8BHyZHzO3Rce
QQzL1ohGBBARAgAGBQI+QCnWAAoJEJWnRNJ6HmtffAMAnRtBAMYtiRm34zmTfkBG
MhPHNXkYAKDsI4vO3pPN4yHL3zg7Im2Vtt8LOYhGBBMRAgAGBQI+QCWnAAoJEGxG
8ZwW/bKYHmcAnRaexQEkpH/weZuhhWFd3k4NfcgqAJ9sIjBlBgYfZ4/K0MizocDV
UYqHb4kBHAQSAQEABgUCPkA0XQAKCRC1rDlKuf8qEQxuB/40ondanrBbsEFNEdnG
HzOZzxUB1hG0jAomkbO3gv79qiTxizq9t8weQB4fVh0AhZ0KJVxeJr86Z4iPSz46
1S2IXRyi4VCdhZ0zWtw6s7+cVGF47egcyMOPe4cESgeJn6Macp/vVwbyf44EJ+KX
9o9Qn0iV2aW/J4bL0fKpV3p8a90LIJtmK2agLk4V3fZMfOPOV+15oytmO4Pmrxum
fcvgpIA5vfqM0dTL+ZpBIWITMU0e85vl+WPx2zok8xt7Ly84hS+gLnRDwrNKYm7G
12viTJOUDg9mcfxCOyV7z5EmVjfMzQbinsatgZ9BBK1HjGak7RfCLn5zmF/WXam7
xF+MiEYEExECAAYFAj5ASuEACgkQlI/WoOEPUC4B9wCfQdt6bD3cg67q6NapMzl8
tVkvwfkAniHumuOtEoPxjxOiz838H+VvlH34iEYEEBECAAYFAj5ARsgACgkQHI0n
ZIQ34x8BWQCgnZQ0SvlZny3U7nM6yPIcEiiBUH4AoMWc4PpBTJDQicAXi1sho54z
wZA/iEYEEBECAAYFAj5AVSkACgkQgGcShyMVr6PzqACg6CVGOLFGtw5Q8sAJ+Ujq
qOFgJ5cAoLqBYBwb8zBaaqZRYB8OK18U18TZiJwEEwECAAYFAj5AWbgACgkQhqAI
GyKylR1OggP/bTrJNeOtMd+C0YdFEjOUvaxLRtXP8ga2rVi5b8UwdQSDTHmtq7iE
+b10Jkgj6eaUhmDyKgknezBIQLRPzu/7aDjM0+3BSPmkW4CTI7UWxECQJwqiCu2R
AnrduAllRG3z2Zgur87l9zoH+IOguERmIfawU3c+VIt6Fj9euNFOgE2IRgQTEQIA
BgUCPkCsngAKCRBiSEuPG0iN6omYAKDnbWbx4mPpI69Wor6B6OOaAQTjtACfc/WA
J38X3O0OENnb/K5IgGL2f6uIRgQTEQIABgUCPkCqFAAKCRCuUcxBI0Z68dlvAKCP
XIuDufIzJSMMljNAq4nAErw0IgCfRt6GmlkPjnhtid3uaJC4A+iOqyWIRgQTEQIA
BgUCPkDJGwAKCRDVVqZgiOPvV8CdAJ48OwRI/e2sAAlBxKC9zRFKg6wbVwCfWSCp
GA2L39tMexAn55CpdKR2K5aIRgQTEQIABgUCPkDglwAKCRA5o8lM/cSo/f/UAJ0Q
dEZSxgWIIwUE4dneT/oDNtIZrwCfb76Kr9o4RaKQjAaHDlViEeqHt6aIRgQTEQIA
BgUCPkFU0wAKCRC0deIHurWCKQ5AAKCRN4ozZTbwVoDDKUE8/5gWpPQeQgCgquc4
oMK47BicU2CzTOwJWCMcq2WITAQQEQIADAUCPkFeMwUDAeEzgAAKCRBPg4y3JqCo
FlhuAKCO0wWTLknRQLNlwlUa8qk8ES7lmwCg+MdIinFHkKQG4T4NveGx3M2sKBaI
RgQTEQIABgUCPkGUwgAKCRDwJO+CNVGeqFRuAJ4vbA3s4Bc1BCMAYE+oxtCEvBqQ
bgCeMDgyFQPET6ZFKZ0cHIeKcJJiHOGIRgQTEQIABgUCPkEW2AAKCRDcNnQ35arL
NJHYAJ9KKBN4skVd0f9eap/dTZLkEz19jQCgrmFeW1esQbrvvrJfndRDt6DlEN2I
RgQTEQIABgUCPkFcTwAKCRAHJZTVR7A165/kAJoCAXm2/WMWCnkeSDGueKYBEu6l
DgCgnJSZhVZvaKwnomv1W1KtlRjl+BWIRgQTEQIABgUCPkFcYwAKCRA/V8xvnmt2
3/l5AJ41iWNVTfcuWAS8nIzzhYTDVWnPTwCg19SZ3hZXkFlHVks4VLGAAiwPBsiI
RgQTEQIABgUCPkF10AAKCRBBGPb8lSbpxbM0AJ9zUihZu04IpPRZPSz9LiG2dgHO
MgCgnrll692/wGopjsYCE8aRzlJuFDiIRgQTEQIABgUCPkFzRQAKCRDQ5Ee9ESjy
X+dBAJ9OroeixjCx/bDMDoBSCYqB321S1ACeJ2H9NHd3KGXZ8JvMELMvmS/RxgWI
RgQTEQIABgUCPkFzXQAKCRBrphakwVE7DK/9AJ4kYBvBO0OKLPbjsWBcZ+F7e7sN
ZACfencb2FyQneCzhX78tjjrWraRIBqIRgQTEQIABgUCPkEMZgAKCRDHON/LNYa6
cUkHAJoD517olE6O5piUrvw+yoZzF8++4ACfWOCLwyh2DEVl+Y8PZYnCIsB1TvOI
RgQQEQIABgUCPkF7XwAKCRBueUUCoBl5wB6ZAJ40y6v+9Wr/Me0lEsg4VwhoVW8y
NgCgj+5cl3eEEX+Ou8vR16ATBdlgnH+IRgQQEQIABgUCPkF7bAAKCRCjGM7Esm5q
ucvYAJ4ulBIZxcnftwKEhfBzSbGNCJyrpwCfXxX7ISVFgqeqkSESFZW+JHwfipWI
TAQQEQIADAUCPkDKfgUDAeEzgAAKCRB1E6I2ExAs9SkMAJ9W5y4x0CHyg8GSL0s/
CUVmJJ6MIQCg0Jw7lN4t3LtFCjScjeDU+IabpmSIRgQTEQIABgUCPkKmEAAKCRBA
DB62okjOYyvHAJ4zV/6Z+/o2g1z45eEWeGaqqwP/5gCfc7Dfa6RiCQDsGOnWNA5m
bwAGnMeIRgQTEQIABgUCPkQyqwAKCRCwxLn3mg2CqcvwAJ42iDFNJbmM+g2Ah7hT
IuBjsey8BACgkCMQxNDIRObSJZD7t1fqO3NdCvOInAQTAQIABgUCPkRPKgAKCRAS
6T6JP9G2tSTaA/44qliNYgOZfKeTRzhDzwX3IRZlVmDX6PhGAHPb1ju/ClUJN+Qs
i1Meq8qOxJ7EmxWdhVaicvPQuSUP/9zKWBF7xT5DOmBFwruK5TB4azgixsEnqTbn
E2Ueqqba74xTFO2+jfj/9r+rNwYxsprNhh1yKV+oClgoMOg18UiQiYWzxYhGBBAR
AgAGBQI+RYMeAAoJEFv8diRAZaHa8p4An2BVlKsaa7mOkTfotelp+kStgveQAJ4y
nhx0QrwelwDFlnMLAb/hJhNwEohGBBMRAgAGBQI+QY9hAAoJEC9KXfQQ64+oVo0A
n0BHI9vdu8OYdVeI8Nqy4O7w+MJ0AJ9cLRVTXawC0XC45h6LxJ+KqiNrdIhGBBAR
AgAGBQI+RsZ1AAoJEJ71dopqzj+sNkoAnAgmXXhMgwAtbLhbAhgVOMFlRRUmAJ0X
Y7tvPh8CFXT6fOb6xf8qozpem4hGBBMRAgAGBQI+RsY3AAoJEOpKzVz2XGjNJgQA
oKfu2aKW7fSiH5z4ZBrPjqA1moWbAKC4GRKnvliFWw7nqg69xNmffHVu/oicBBMB
AgAGBQI+Rs/1AAoJEEC/HpEdDdC5rUEEANq8aUuaMlZ1aw6oCTlFDhxSOu+Gpkcx
grlziYDwKXUjR2OFUZaq/wohbjrJGTGR3DBdOe2NYaTudbFNehl9nfAEAdw1bxTE
rDuDydm96FSYVh4XpKBCdndNjF5TIyT3miwkCyE/AIvWpa7tJVZzwTfyiPpX+BWW
jTpu3Hl2rDNFiEYEEBECAAYFAj5Hr40ACgkQagIyDYKgMl6dvgCg47NneegMxMG7
biK/VPBZDwP1YfEAoLxxEAkHSDkeNBg+lkmB+HlbJaiAiEYEEBECAAYFAj5H0HgA
CgkQEMun3/wGpS2VhACgypTumsugt1rogDj6n9vS403AesoAn3f5F9gcRmo5x5iJ
WRQGkyqDn9e6iEYEExECAAYFAj5IZ7wACgkQmpTNb38U76Q0gACeMWM0+Zlma8mL
sVBYvy+sFl24pegAoICrdVi0Vp0d1S8PlhnLfVBmJkMOiEYEExECAAYFAj5IaTEA
CgkQv7s1Bo4lI/3jBwCfWhLWZlO1s087n/FfB4pC1v4/n5UAn1zTvthQ8iEaXlGb
97ycKkGRTq80iEYEExECAAYFAj5JZJ4ACgkQ3uEZ6Jp2yaN5hwCfVmppO2o1alnw
VuglKbdXjOE1rpgAoJwOiXq5tuE4pSjdbQi/b+8/YMLgiEYEExECAAYFAj5PlXUA
CgkQcieKIj7SkS4XSACfWqEMG5JG2di4ScIs4bBuTC/i7ZUAoI5f3vVGq2ZgjoCg
ZT0GNuCT8yFbiEkEExECAAkFAj7wz8YCBwAACgkQDbEkl9DbWrZlIACfQst10m5i
3W/Zw1IhTGymFHr5lz0An3+3+EQGY4rktVDTvAkI+GOp/qJ8iEYEEhECAAYFAj8I
RKsACgkQnIUccvEtoGVYnwCdHtQFnSIRNHApNkvDCTXjaBvlvgkAnjwDaZGVW2cv
i7HMcnCem6zK0qfIiEYEEBECAAYFAj8QVQkACgkQ1vr63ZUvP/+6cwCg8MI1AMI7
aWXiVHhsevxtmKb8K8UAoIfduASaeW1jfkIQJjKvnSAJCUOfiQEcBBMBAQAGBQI/
EH+ZAAoJEEAGFQ5ACertyh4H/jpXvk+I6jjf6yoHT76hbi7X22fBJoacEJDQr+W3
qESSANtS0QS2ha8e6sIMXvoZb9lCDdGMOOf8v7+h58kpwVzCrwP6bvk5HboORULF
bP+AQnzuWIY5I7URtFviqbZDUtcTnUine5Bnr9EgE+IsT04G4Bdra2tTF8NywrWn
zB7L8KW5fgGEjx8FuCMl3xhHKLVGTAFbGEUG0p7bIcszKmL9skXZfOR2BBwOei2r
PcUkFhVrAFnbYZDOzH0dOU9XNyYC/sciS1uRunhJgbvhlEy/3/z8B+REOTO6SoOW
ShQmVpHF1L+RM2vbgaA7n4Lm1M0fD1cuFFeecOCxr5WbyB+IRgQTEQIABgUCPw2/
zwAKCRB8IsOfgHrFOjHXAKCQMiaglcYaiOJzpMlWsI2g9OUSLgCeMxJubKw4zbte
Ay0EwHn1XOzDkt+IRgQTEQIABgUCPw6kqgAKCRBN/6N0Q4ZdAd8kAJwPB1+MBBya
+I6+FZBA0F6+hwH8nQCgu8br/qRVO/37nWKXcBrdovqMrymIRgQTEQIABgUCPxAe
SAAKCRDhhSLXfHEry8HKAJ4j5xQM6HBjgGS2m6QGiUmNR5dOqQCePZXu5A6YWe8x
eXbi8r6vPwhaFtyIRgQTEQIABgUCPxAotQAKCRCzNNMIli/S3necAKD6pZHPYzJR
QCvCthKRLehSscHijwCgynfSZuATXmj4Dw9ujUs0LwCCoJWIRgQTEQIABgUCPxD7
LAAKCRDFwMXHIY0Y12OOAKDx2DUpUt1R3qsn3sVmLb213OiBbQCdFT21Q5ZVNjyi
0Du0TF4s9HcqnKuIRgQTEQIABgUCPxFJLAAKCRDqIZlBJHfK+O94AJ9Jhf6DOhk6
SNTMc3vcxW6oja7gVgCdESo1tGfX5eNioP1a78vlE9Td+92IRgQTEQIABgUCPxFc
uAAKCRAZ/tg84r6jQV0gAJ4nGDM3FYzIfwc7/OWNGgt/Jnky9ACgr+5vwUI2+s3m
H0mM7oAGKxXzg5iJARwEEAECAAYFAj8RQWYACgkQCen5CopyTkUtQgf6AzTMbzqi
7dNRiblJ+3p4r993zSDGeiPMeS6iM62Ab6yGHbCJWDXS3N/AV3AY31H9zg1kfnYb
hUmIpKnoML1V5vXND2+a0feC8eg6YaFUzATZbA1LJxQgsukEoGPjUutuzHrdTUme
aWEvcEjrqjit32/r2/Ii72IJLp46EUHT3arMe86yyH/ui/SO/kNUe78rgM6QmKOf
KVImKee+0lsU8y+H/v+81YUgxXqFjjpIW1MxFLtuinug53dOYworXhOLKUFg7JOn
Y1OWxdNNLmjP5+hCDvEJeFobKUJeneFJHBzq/x+YJdqrcwRpdP76W4Oy1uZJMTNy
T7kr7VzxhgIie4hGBBARAgAGBQI/EScQAAoJEPVrJqOmOZ5zDWAAn18TasWrwIRv
55y1GIsgYByCbytNAJ97Mi2X1jbcQ9Glyl3GQPd0a6teKohGBBMRAgAGBQI/El8f
AAoJEKCQ+9OXGZ/DEBgAn3J/H+TnOg/+twcFz6qlzvTMx3sfAJ4g2GwIEU4QslyL
S6OLz3JUgyphFIhGBBMRAgAGBQI/Eo7MAAoJEFZtNizuCXfoIZcAoJmG/mmltkyw
EK8fHmc0EV6gyRd9AJ42LmhI63aCOjf1th67+LqsHaZg44hGBBMRAgAGBQI/EpRG
AAoJEI+5mXFO6zHxsV8AniK2jiSurdSQWdixPZoV2eUXulpGAKCYrtNkuLP4s5Ej
cx+54hmyhyRKqYhGBBARAgAGBQI/ErtgAAoJEEbMXGPzGKVqeVQAoIc5qKO5Q6GE
vLUe8dFWWjoPZn2YAJ9LBBPFsQxIGavFNMCtEfaVGICOUohGBBARAgAGBQI/Eo1F
AAoJENQ8swWV/so0wwYAoL0ynA9cDZlRVk1WKRCx0U3MWsmVAKDDkTQxbcVhx4Y4
wNPp/9+bLQbcRYhGBBIRAgAGBQI/EvroAAoJEL9BWVtzcqKlDjcAn07iDymtatbZ
1A4lzxgP9J+LUNKBAKCBmNvdGEgB3NStaioG1ykK38WJ64hGBBMRAgAGBQI/ExEL
AAoJELmCy9XA4x8d2ekAniL9GJ18995gauA8HIZfGs1+AHBEAJ9x4by7OYz6s1p4
X58cYM5EJqRVJ4icBBMBAgAGBQI/EyqtAAoJELRrkjttir5xQ1UD/3qEX2rdoUfy
BnnicW1Wlj9xCzi8tjpeawzjf2lSKW4UlwfSoZvPBTTnyp9gVrtWKI+Ore9pdCQq
qOzbAAjEJIjiWRkRNRSyj401W7nEB0v0cUsxdyh3ajScAdZsG86OpqmLHIPZg2TQ
hdFiBJAI0jRQ6haTY7Vc+3C4kgF4jfKriEYEEhECAAYFAj8TLaEACgkQNfZhfFE6
79kzhwCcCcGP7VtaWt+vXh8i2p9QdJLXFwwAmgMz496wZkvq6AtXvPc3rv4dKRJe
iEYEExECAAYFAj8S58QACgkQklW9n+aETbkOtwCgiV7F6uPAkVhyniYK47lrplJp
WUMAnRrc7filMie3WQ6KoIYMc58AFUneiEYEEBECAAYFAj8TQ5YACgkQrews0RqV
N+eIFQCfZv0mqPt9yfoTIf0iEHFL7+nRIHUAoJHd2euw2J6ivJXwDnYTJQvg17FW
iJwEEAECAAYFAj8TXYUACgkQ722CQfCBGV0MxgQAo/5lTYhqACyuXP6o1yZBTBOL
yOB5jQ4hXSJEefy0P0iIwZGFOxXE1BVfgA272XqgU2wByxFe8BPMrkNdlgoxmgpo
/H1nvcUMINwFbixM3loOgy4NpDSxfg3/i4wrSn6flqJ0X/aNDlUcwaxRyo0XVX8J
WxDPob7rLd/tMjgshZeIRgQTEQIABgUCPxGixQAKCRAoxvVrgXw1aF/WAKCuLcvb
sIDc/yIOJ4L/PwetJqz65wCgv14ZUzkr2byfbxWqB0x9Pe8Z4ZyIRgQTEQIABgUC
PxQjDwAKCRBRrPatdb6Al1zHAJ9HRP0Qei3JEyXz4WwigmOCxGzCLgCdEz0mS8ca
K0YGTruexNKnVz4c3S+IRgQTEQIABgUCPxRZoQAKCRCELNt6RHeeGJgJAJ0eBH2p
BiN/er2jDaR65lwk7GHsMACfXCSInkBPdcRrmDx4qjBVMPh7c0SIRgQTEQIABgUC
PxRSGQAKCRBYKVdQBQCDi0/PAKCUqyyZnTffFI0Cc6XXIxLcSc+l5QCgyKOzD0UP
F3LyejZLMXoE6HNHsJaIRgQQEQIABgUCPxRgnAAKCRB3+BUzuw7oxx3MAKCRkneT
Fl4GmlPR9PimSByE28Z/WwCghDzNUCmnkgwl67jbtpZAJNuSPcmIRgQSEQIABgUC
PxUOmwAKCRDVTq5LyZhwsf6bAJ9P7azN7qGk4buXQ7CIhQ3a2pHb7ACeJSF9Qdn2
8nkdMM7G6u8jb96wBaKIRgQQEQIABgUCPxUqvwAKCRCJzUshYHVZ5tNZAKCwYW7A
KNF1Jl5WF8YrLZdQXqfmIQCglwELvUiyJWOMzPqFR0YPx0n1u5qIRgQTEQIABgUC
PxUq+QAKCRDTW7yZvH0CCpsoAJsHOkTbpuzsvGTvNrrYNPSwXAhvkQCeNinhCKOS
jjiIUbUIHDsOz8sIAYCIRgQTEQIABgUCPxVegwAKCRCe0HjvSzoTXCvGAJ9w31Zv
azal4I/N1CX9sOu/2R/ABgCeMyo5M0vG06uLFkVKidTP0t838QOIRgQTEQIABgUC
PxVehQAKCRDwI/gLJoQdWzvhAJ90ieEwIPKGXlPEmCnLlaCfGAhpCgCg9H/SGzS4
V+jAaEqmSIvltHTf/c+IRgQTEQIABgUCPxWL+QAKCRBTtrgdwTzuByH/AJ9S0n5U
egb5DNIUMt05ImWfQ+uWEQCfTRu3SC9Yn/YGW18W65mSeoGEkqmIRgQTEQIABgUC
PxPzIgAKCRBL7yYkIt9Ah08pAJwMs9tctTxNv/QGhPmlonaQ6ugxcACfcTmKFWST
9tpWQGJYMdPIymVW3+SIRgQTEQIABgUCPxPzKQAKCRCVZB9rJT5Y4xYwAJsEa4Zi
Ib+DJ3f1K3KX7ofvADBQ7ACgkAR1nIokfD6rFzMhfWGCIfmgXU2IRgQTEQIABgUC
PxXWdAAKCRBBufToW3E98CnFAKCH+yj3Fo+mwbSpXoHJmDk9pd+BfQCfXgANpSPQ
qib0Wtteoo2PPtgiMi2JAdcEEwECAMEFAj8V9DCGFIAAAAAAGgBjc2lnbmF0dXJl
LW5vdGVzQHBlbmd1aW4uZGUiaHR0cDovL3d3dy5wZW5ndWluLmRlL35iYi9jb250
YWN0L3BncC9zaWduaW5ncy9ub3Rlcy5BNUM4MjA5OTE5RkZBQUNBRjQxQkIyOUI2
Qzc2MTc4Q0EwRUQ5ODJELmFzYyIzGmh0dHA6Ly93d3cucGVuZ3Vpbi5kZS9+YmIv
Y29udGFjdC9wZ3AvcG9saWN5L3YxLjEvAAoJEBmiaAmIOP2UEw0H/RVZqajm10VQ
cFpumvPC/qvWRIxZdQASPdMGKAASqPnrNQmfqHo/3rnU3BoquWWlZikwn22BGkuR
aytvAI+AAyrrkA3R5HgwlIgtCQpTzljJPVEOA261BDlXLvttZipW6DvjZ8+s7QWW
fKZYwbRCm5mcri1JQAmxtjZkK3E1K7yfDL7onLrHDx6H1d0njgN1j5K/82m3e6eF
YOoi0Qpq17yH1HggGXx04rGgn9yaBOTmP0fJPsfnzWo4+GIfmQjfG0rrJhdakRgW
a1JO4aI+goaxu6KSTFhpOnd2Rw34bkQICL6jZC6G4MtVSao0IsVtNiP1YcBbv2Bs
0ueQduyvaJiJAQEEExECAMEFAj8V9D2GFIAAAAAAGgBjc2lnbmF0dXJlLW5vdGVz
QHBlbmd1aW4uZGUiaHR0cDovL3d3dy5wZW5ndWluLmRlL35iYi9jb250YWN0L3Bn
cC9zaWduaW5ncy9ub3Rlcy5BNUM4MjA5OTE5RkZBQUNBRjQxQkIyOUI2Qzc2MTc4
Q0EwRUQ5ODJELmFzYyIzGmh0dHA6Ly93d3cucGVuZ3Vpbi5kZS9+YmIvY29udGFj
dC9wZ3AvcG9saWN5L3YxLjEvAAoJEKseS2BGdWseZeQAoIz9KlFMtajFGHN2dxGK
sG6mO3oCAJ0X8Z4DETXm/K8ILQ1Z/pP4RodIP4hGBBMRAgAGBQI/E7DrAAoJEOfJ
26/jVu/Aw+4AoO4wBXNHbVE/rPsMbKPufe7Ec31YAJ4/1ioDRk5fR5TEb+vvXSW8
nofiqohGBBMRAgAGBQI/Ft48AAoJEDu/z3e9iwUNDfQAn2WxsohG5n9Aq43Ct95k
koqBFturAJ9+96R3ERPGKh9swWnJ9rBlkUFGZ4hGBBARAgAGBQI/EaO6AAoJENAZ
9e+QJ6uI8fYAn2tnCEZv5HogN3Abkr0XrmYL+7KPAJ9H4zrNiI2xha68apWA5qlV
LqyHPohGBBIRAgAGBQI/ERszAAoJEPS0sMx5fr+r7kYAnRw1oK6hqhlDWUHxmPRW
VbnYP5NxAJ9GDLHgyWasYFj4rFsBHleIAmu+yYhGBBMRAgAGBQI/GE0WAAoJEBp0
fkUw4LnYihIAoMSxOoAUqwrOSZZfAT1PN5tnh7X6AJ4pe0/QNg+zIB9/mvZAJbvg
bSHfsIhGBBMRAgAGBQI/GX6qAAoJEGZmcXrbg1Z5GsoAoNPTcGZB/zlLarfBlJdN
cyTkaTN+AKDAj9c7kZqVwQRvfgO19viKFqOuEIhGBBMRAgAGBQI/GX7NAAoJEA2W
S2ZXDm3qNhcAn16xPNxTE4U9eqCCT26dCf7VqAyzAJ9RT4KTUEUGKseS8f13FzTo
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
AgAGBQI/FV6DAAoJEJ7QeO9LOhNcdRsAniNNCWCT3t/EosNju1EPYDaK9t/eAJ4k
dChYqxvVu2svHHxQnP42VC1zf4hGBBMRAgAGBQI/FV6FAAoJEPAj+AsmhB1b6/UA
mwU7MIhoLC7bmh7l36761YwzQksxAKDOWIJW/wXBbulL8Gw6XXMJvtRrCohGBBMR
AgAGBQI/FYv5AAoJEFO2uB3BPO4Hw5kAoMGOp6M8HsCoWqOer0DSsNwxViHRAJ9s
55WWSjqlWBoz2l23y6643Bz3AohGBBMRAgAGBQI/E/MiAAoJEEvvJiQi30CHnt8A
n3HUfqUqQriyiTZN2WMHIk9hRDe5AJ9adB5xQdh4wBZnNSSSo9nlL62/T4hGBBMR
AgAGBQI/E/MpAAoJEJVkH2slPljj6BIAniMNct9yBdxXiOMCVJl0HjACq6lPAKDG
NnzpHdoqODj83NcmyXJVWETt6IhGBBMRAgAGBQI/FdZ0AAoJEEG59OhbcT3wPJAA
oLuaK8k/Ql+BzeTWzCrvnV/WsuM1AJ9BE8/KPWvRl/CZanwDgSAZ+3Ha3okB1wQT
AQIAwQUCPxX0L4YUgAAAAAAaAGNzaWduYXR1cmUtbm90ZXNAcGVuZ3Vpbi5kZSJo
dHRwOi8vd3d3LnBlbmd1aW4uZGUvfmJiL2NvbnRhY3QvcGdwL3NpZ25pbmdzL25v
dGVzLkE1QzgyMDk5MTlGRkFBQ0FGNDFCQjI5QjZDNzYxNzhDQTBFRDk4MkQuYXNj
IjMaaHR0cDovL3d3dy5wZW5ndWluLmRlL35iYi9jb250YWN0L3BncC9wb2xpY3kv
djEuMS8ACgkQGaJoCYg4/ZT6JAgAvfifYdKHBnC3Ezv483f2fsdF/jbUNa+1iz77
iFI1dRa+SRWKRVbglKeznpT8GYbw6+82gxWZ7Xotbn3s5yGLXNYP0vBhek1YG0zY
ig498ROlIc8OPwNgCEVUHj962FFfQSwF2CQ+2e7h5PRll2PRpZNQCzm+c5Xj9p/t
slSBWQ23/1p1U7eI3bvfMLVRx9tC/nyPsQo/V/yhIYPi4Ys1anBCl0Gin9g+eg4g
hhWl7ksOZqG/Oc6c6viQsgVME4eKVHpljdOj9WCpWIYar2Jsf16ITOMlYnGB4a3S
J1kxfXVR4lhZCaZ7PhVAaEH/GZC1ElPzjbKLNdvCTfe3GMNTBokBAQQTEQIAwQUC
PxX0PYYUgAAAAAAaAGNzaWduYXR1cmUtbm90ZXNAcGVuZ3Vpbi5kZSJodHRwOi8v
d3d3LnBlbmd1aW4uZGUvfmJiL2NvbnRhY3QvcGdwL3NpZ25pbmdzL25vdGVzLkE1
QzgyMDk5MTlGRkFBQ0FGNDFCQjI5QjZDNzYxNzhDQTBFRDk4MkQuYXNjIjMaaHR0
cDovL3d3dy5wZW5ndWluLmRlL35iYi9jb250YWN0L3BncC9wb2xpY3kvdjEuMS8A
CgkQqx5LYEZ1ax7SjwCgmoUN3NUQ0fQwbmHqkVnBCc/jL8YAmweyJNMQNKsDC0fr
sHFyejRnNGumiEYEExECAAYFAj8TsOsACgkQ58nbr+NW78AkMACfWs9ycteAylXk
2RTrD5RHIYXgrVQAn0VpM3W6vemovNt5zQWuHwUHKMELiEYEExECAAYFAj8W3jwA
CgkQO7/Pd72LBQ2EJgCgqRYVlay6OEUReBS4I1Rj2wKtZrcAnidL9ET5crzLbhC9
Gx6/tHWhhPPriEYEEBECAAYFAj8Ro7oACgkQ0Bn175Anq4jOzACeLP5omUoyFcsN
XRdWv/IYPBW3jLIAn1Vg4cqudANdKnKBSoTDTh0YxC60iEYEEhECAAYFAj8RGzMA
CgkQ9LSwzHl+v6vvzACfaVizS3TQYJEAP8o1Qaz/KbQaVmwAnj5l/c+7wA/YOzu5
sJpArDrXZ+CRiEYEExECAAYFAj8X0bUACgkQkR9K5oahGOZPrACfaQI+NCA28YYg
nl2gjmoI1mLl2/QAn38tDQ910otKemZf9Eie7p/zTbGZiEYEExECAAYFAj8ZfqoA
CgkQZmZxetuDVnl0pACgiUtNtNoOd0Wbsiifl8jXtNOzkGMAn0WikIoLoN6BlIzY
MWjJNhnttKt+iEYEExECAAYFAj8Zfs0ACgkQDZZLZlcOberQGQCfV4ZlNvw3wH/9
ta7BKKgKBzVHj4MAnj++kNQTiMn7F28Nrqv7oavDW8DyiEYEExECAAYFAj8ZfvoA
CgkQTgKsrh3Ws4DaHACdG3J2dN/Ht7InqFmFAp+bsPIGxKMAn349vGOvuO3WGqcf
gmM+8BDNoVzJiEYEExECAAYFAj8Y1KkACgkQzop515gBbcepuwCfUEZxQi8amnQK
l1RS/2Z4MasB/YgAnjxMNuDjHxEIjhwyY8Mk+JtdWmVpiEYEExECAAYFAj8a830A
CgkQLJg+WtKKVdZ+rACfXkoiYy82nK/iYRGzPYcBV0hjwLkAoMGxpR1weQQwjgLY
ea8VDeSU66ZfiEYEExECAAYFAj8cTwUACgkQcV7WoH57isn++QCfbhjBUzU5EfBM
OxwXHd80vwRWTFsAoJMp0cfimpqtBYReuwaCgUmuHV+EiEYEEBECAAYFAj8VtNkA
CgkQKiV7d8Y3KNLBkwCgoA0kZroWq8B+ag+qFhwgFfTUGGgAmwcQ/qJN0IO0d1Zu
7m7ex9OCUxfIiEYEEhECAAYFAj8cZygACgkQyA90Wa3Cns0OegCfUFBDn9FBailX
pLIoksAsZ27NSkgAnRI70vpPjFvb880qbgF3TkMQuVJ2iEYEEBECAAYFAj8dqfAA
CgkQiwJmWbaNX3/9/gCbBaaHT1TQNSp6Y/EoRyYqBAel8IcAoKWvO/u8TwpNruMH
+WH11TB67cDXiEYEExECAAYFAj8dqwcACgkQ3nqvbpTAnH+negCfcddCOdcCmF8A
xieobFEgaFM5SzAAoJLWt4QuQQMb+5LGi6HOfseqhvH3iEYEEBECAAYFAj8dqDAA
CgkQKN2w/RnJtroclgCfTWrG2BkWpeG0peOeyfnmeBWI64AAoNYCOG5EA+52XuU6
9JjeIqszZf0eiEYEEBECAAYFAj8ehJEACgkQbyOLwk/aWgz09gCfZWcalQyB0a4G
0QHSD7VxkWFTXyUAniqUNQKvts2I18wQzH7F306DZe4ciEYEExECAAYFAj8e4VYA
CgkQlJsl7AdEclLTGgCggsUlLw5yEf2M1Cnaaw6N0Ad/l1AAnjB8UZ5fTPJSKPUg
FpP/hfflfCvNiEYEEhECAAYFAj8fDVoACgkQ500puCvhbQHOOQCeJlrssgsQVNCb
42WxqaBp6e7Omq4AniuERsB6p23quHNGl3tkpA77MRtAiEYEEhECAAYFAj8jmNQA
CgkQGKDMjVcGpLQElwCePTqpW7AWzc+fjU4u1sObSP9kOkcAoOX/pYt05VCXzkKa
IDiQsitAW1zgiEYEExECAAYFAj8kSI8ACgkQ+FmQsCSK63OKnQCfYoWfh8UGrL+Y
c9UkH5fLdVLSpGsAnA87zg5HQWV9VKgkwjA7Q1gk/o+TiEYEExECAAYFAj8ldG0A
CgkQ8rUqXQpftod80ACcCIEO/NksTr12Ka3M+xwdwR8APPwAnik0OuGabOoH1cdM
9ucb1c2TuVyTiEYEExECAAYFAj8m4awACgkQiSG13M0VqIOS9wCfYTFqZOjyXShs
zGT/5n1P2BnHAXMAn1laYpV9MlJZZ433TunwfmXAaW8KiEYEExECAAYFAj8m4bcA
CgkQBxd04ADYzRb/QQCeIYeWMEtqYONpEFShsdv9jT3NQp0AniNQSdgk02WKnIrg
U7BdKwqV3/6piI0EExECAE0FAj8nyJ9GGmh0dHA6Ly93d3cudHJhc2gubmV0L350
aG9tYXNiL2NyeXB0by9rZXlzaWduaW5nL2tleXNpZ25pbmcudmVyMS4wLnR4dAAK
CRCkec3EWrRgaumsAJ49yYODSjXTHdF4uogHi2icoLyOkACfaqc1xnyfvxNnr8hY
Gn1HHh5nXyWJAWMEEwECAE0FAj8nyKpGGmh0dHA6Ly93d3cudHJhc2gubmV0L350
aG9tYXNiL2NyeXB0by9rZXlzaWduaW5nL2tleXNpZ25pbmcudmVyMS4wLnR4dAAK
CRD5fPnjOkt/Xa3sCACEx/OEdlEQQArfalLWO4GlbfrBTrhzUMc5gmOFxPbTTu0H
Bg7xFNtPV9tcTfs2sUikM9OnzZo6DBPsteKvF793G//Dt10s74WvJB1E6+K6PM2f
YUancvcqGt61wSx1DiP1gTlh5ifNNJxoazU6tMseWp34UtWT6Jzh6cciUAnKQEIi
1Updi3CuoUnPL8s+tv30CdXnQOY5eCSkymCEOicjXgHgIyAsAYdmybd4fsl0wJbX
eiinGf8Fpp3AKsbqQXNaiGUV6ghXTNNDNRDd7bkdIjrSpjWdqQy8eA+3VVU6YvM3
GWpeLBHGo/6egjk2oymEpjOno4M7KVG8xyCWcG9CiI0EExECAE0FAj8nyLVGGmh0
dHA6Ly93d3cudHJhc2gubmV0L350aG9tYXNiL2NyeXB0by9rZXlzaWduaW5nL2tl
eXNpZ25pbmcudmVyMS4wLnR4dAAKCRB5BXaPdYT12AqQAJ9olcgtXD9q6blGQ9oM
BzTO8qaLtQCfeTuMjvpcK9qgry2qOxz4c6j7nlCIRgQTEQIABgUCPyfIxQAKCRD5
0BTwOMmFjVDVAJ9+NLIHcNgIlrfSYvT1wSSkr5lKgwCgjktXHVXa4ED+qK4zwnE/
iGEaRZ+IRgQTEQIABgUCPyfIzgAKCRBdD39J4OSfNJhWAKD9qwn9gmx4l6sm6S2U
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
wbWi2ooYrpfqJx4K
=CgQQ
-----END PGP PUBLIC KEY BLOCK-----

C.3.11 Wilko Bulte

pub  1024R/EADEE409 1997-06-16 Wilko Bulte <wilko@tcja.nl>
     Key fingerprint = CF F5 30 59 20 AE 17 69  98 F6 58 F0 4F F0 EB 3E
uid                            Wilko Bulte <wilko@freebsd.org>
uid                            "Wilko Bulte <wilko@freebie.xs4all.nl>"
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1.0.6 (FreeBSD)
Comment: For info see http://www.gnupg.org

mQCNAzOldcsAAAEEALOm0m0njPXcJXJerVjwiLMA0jho2mJFtWqup3Dj4Z/ra8JT
k+tf9deja26fG2PjEaDCLogjdKIhF/ZKFAxxZnaoIevhc/M2Tt1m4GuOe8gTR1t0
BdqsjR8zY834LTFlYxF40w7UkdAvqynAkX8kDD1ydfAkCEJB+6fGT4fq3uQJAAUR
tB9XaWxrbyBCdWx0ZSA8d2lsa29AZnJlZWJzZC5vcmc+iQCVAwUQM6V1y6fGT4fq
3uQJAQEasgP8Dy986Wy0UhnwhQiYcyWbSnUtzwYH8Tgxh2hNixr3jEr7GTVQn/Ik
rt7QDk7+0b++RQuZs2c23Iie7TLS+g0yihx+l/LSvl5EWMBpLrKebB4MinvwtRBM
iTJtpoK9CqDT0hYO3N34oRlf1FBaaFAyyfi1HYWrBEMo0ja5oHfwCl60JyJXaWxr
byBCdWx0ZSA8d2lsa29AZnJlZWJpZS54czRhbGwubmw+IokAlQMFEDw7STynxk+H
6t7kCQEBJY8EAJXiHeP8NoMvIL6e6QnKmg+FiP7Lel+L67KNa07FaAykDQZpn6Tx
TxYxuJvkmjdRLfZ6Mbm3kehqXl8VpL2ygmt2ovXT3RRaQ2RpydujFxnHb8SJDZVp
TfHILcnILe0YDUmEzhMNhjSE1DcorpGNQAsz6udYwjb96HcOkG43enhAtBtXaWxr
byBCdWx0ZSA8d2lsa29AdGNqYS5ubD6JAJUDBRA8O0mNp8ZPh+re5AkBAWBZA/4n
kQGBkrS2neeUbdIzF9u3Udy0bf8dUkojjupbjCHBH8IxlNzkq1K/TvCDPkeKxriG
Qq4Zi6GasGcgJpUJV0rK9bZaeVI8xNeqFm9VkLlvCXrgOKborLR8V+T52WB+C3+X
YsQre7WGrvmof6B+p1LbcFuYSq7XnYP/sU4htprVTw==
=AxGr
-----END PGP PUBLIC KEY BLOCK-----

C.3.12 Jonathan Chen

pub  1024D/2539468B 1999-10-11 Jonathan Chen <jon@spock.org>
     Key fingerprint = EE31 CDA1 A105 C8C9 5365  3DB5 C2FC 86AA 2539 468B
uid                            Jonathan Chen <jon@freebsd.org>
uid                            Jonathan Chen <chenj@rpi.edu>
uid                            Jonathan Chen <spock@acm.rpi.edu>
uid                            Jonathan Chen <jon@cs.rpi.edu>
sub  3072g/B81EF1DB 1999-10-11
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1.0.6 (FreeBSD)
Comment: For info see http://www.gnupg.org

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
=cJgh
-----END PGP PUBLIC KEY BLOCK-----

C.3.13 Luoqi Chen

pub  1024D/2926F3BE 2002-02-22 Luoqi Chen <luoqi@FreeBSD.org>
     Key fingerprint = B470 A815 5917 D9F4 37F3  CE2A 4D75 3BD1 2926 F3BE
uid                            Luoqi Chen <luoqi@bricore.com>
uid                            Luoqi Chen <lchen@onetta.com>
sub  1024g/5446EB72 2002-02-22
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1.0.6 (FreeBSD)
Comment: For info see http://www.gnupg.org

mQGiBDx2qBMRBADYSjvWKVcUxUb1aR1VjHTlFo6zc6PHMK8W3CRin7lY3NgsYsmZ
n0IvGQIDEHhTpOEWLS0S6A/bseaGUir52X6spZ8i5hfd7Ps9RmeS0oHx0XDS9JTJ
HXFE5RjExHbLnw4DbsaqR4Fl1V7NJU2U/nkiJILJd/PGPZsdstKYv5QvnwCgmwr7
QZlkTV/m61MmbMAEpEFWaecD/Rp5Qb9S5NGVplNeNqub4fC+Ydarkorr8qBJN9Va
xu1Qgj3sOAoxmuOnZ99YAgXhs9Bqe4QsrQfs1cMUVzZsl3FIffh92HkrLmdJlsjX
8lrRT694cIP7+ELNGKJ/zaXI3j2cnQPVqUO1icVfijqatqDg8bgQS8C8CGQX6e6h
ADKGA/9cIY450gMvrtbR3/bqH+IgvBCUog5RXv0y8c80sJnzeqawx2BuziFvv6mZ
Kv0PJ2vnWok0NHcyuBHkkEt+ujYlMQXHZ6wRykYxIUzM8tl+9129tSNEK+GdcCOZ
rfbwm8scs+VmzrHXP+saOPcHPBr0e/KPPixNN1I5HB3yI0ILSLQeTHVvcWkgQ2hl
biA8bHVvcWlAYnJpY29yZS5jb20+iFcEExECABcFAjx2qnEFCwcKAwQDFQMCAxYC
AQIXgAAKCRBNdTvRKSbzvmmrAJ9FVK0lT4Qym+qzj0EA6TP3V42cwACfQl+ClPzJ
zngykscMJW07MBXkQ9i0HUx1b3FpIENoZW4gPGxjaGVuQG9uZXR0YS5jb20+iFcE
ExECABcFAjx2qpkFCwcKAwQDFQMCAxYCAQIXgAAKCRBNdTvRKSbzvkEwAKCRteUw
2X3XbPsVDCBZarrkf113YgCeIHmhkDHbauw4UlUO1tYNVObn5dO0Hkx1b3FpIENo
ZW4gPGx1b3FpQEZyZWVCU0Qub3JnPohXBBMRAgAXBQI8dq6XBQsHCgMEAxUDAgMW
AgECF4AACgkQTXU70Skm876CUQCggJuwNIJy6f05Ka17RYn+j8hEQhwAnicDXnsy
5SEYN6amlHdqN/HwXCsbuQENBDx2qBUQBACifA9hUBBYNqCcXTs8Jk1MCcToMFob
vRt/SK2EcwjZ9aF9sIX3tJFrOHEe/bIcDMX19e480T4+BBs9MyHdnKgPR6vP8ZEe
FvT8+44Wd6psLB1LwsE8UpJ3CbLjkgafTpJIlh4NP5iM2p+2ugUIRM2ZaAG7MOMK
Ec47KOEb6yI9ywADBgP9F+p+zQ1Z/qVekBooIKU4xKBryGb/XIPJi/Pgapgr3oE9
kKH4iObbvMBSV3kd4a0+FSEXSZyRnMD1AG+dWhAHgb9rbjtICp3hZOKCMfdZxFVg
QStZO8vP5EhQYYtIXiNmOvkkBPqb+to5RgFFez8oIdPlMUq2Hf9MBIY6XDoNJl+I
RgQYEQIABgUCPHaoFQAKCRBNdTvRKSbzvh9GAJ9K3KifYIBOHlsmRLF75mgKQk/c
0wCeIOeVykZkImOxs0pEQMR/4g47Wjs=
=RNuY
-----END PGP PUBLIC KEY BLOCK-----

C.3.14 Andrey A. Chernov

pub  1024R/D99D08EB 1992-08-20 Andrey A. Chernov <ache@FreeBSD.org>
     Key fingerprint = 33 03 9F 48 33 7B 4A 15  63 48 88 0A C4 97 FD 49
uid                            Andrey A. Chernov <ache@nagual.pp.ru>
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1.2.2 (FreeBSD)

mQCNAiqUMGQAAAEEAPGhcD6A2Buey5LYz0sphDLpVgOZc/bb9UHAbaGKUAGXmafs
Dcb2HnsuYGgX/zrQXuCi/wIGtXcZWB97APtKOhFsZnPinDR5n/dde/mw9FnuhwqD
m+rKSL1HlN0z/Msa5y7g16760wHhSR6NoBSEG5wQAHIMMq7Q0uJgpPLZnQjrAAUT
tCVBbmRyZXkgQS4gQ2hlcm5vdiA8YWNoZUBuYWd1YWwucHAucnU+iD8DBRAzy/q4
PAK5NSZ7LAYRArfiAJkBLMporxZ0VHeao7g0UBJIC/8YNQCgutO6edcPP5UXoorH
OuVB2CONEkaJAJUDBRA8Xspm4mCk8tmdCOsBAd30BAC5kHBMtn978yvCd0dKsB8V
Sv3rIVBeFaGlNnioer33vXXY2bKkjDP3+m+lfK4I5ZQwDLWjvmqWUmpQi7H1fDa3
x9dd5CmuQ0pFucgxeJy4NBqkTZslFrW2+gj5XLfYAycyRpo2wHhVlHldKRZKDV1H
aFnT+LG6bsYXD3aElS1UwrQiQW5kcmV5IEEuIENoZXJub3YgPGFjaGVAbmFndWFs
LnJ1PokAlQMFMDxe05niYKTy2Z0I6wEBKWgEAISNy1MXqUq3uXjKm1M8wv0QTdmV
/GMIvzyertJIvb0afB8L2MYWSjKjaDBbWXX9XUKmpYLUcK25c2KgdArKoAfTWnHP
DjI8+aRQo0+Q4GQSqm52QC3tHzyc86YD/ChwX1XVw1oCEWoT9a7Zj1z08tJBoB5b
BWpHLIygXstbEPqKiEYEEBECAAYFAjix//wACgkQQkjOfdhCGxc8ZACgk5dvp2zr
qlzEjbtaUb7VMyDHE/QAn00Q3BqcFhJd+5NA5QmpoUjnKq6fiQCVAwUQMcm5HeJg
pPLZnQjrAQHwvQP9GdmAf1gdcuayHEgNkc11macPH11cwWjYjzA2YoecFMGV7iqK
K8QYrr1MjbGXf8DAG8Ubfm0QbI8Lj8iG3NgqIru0c72UuHGSn/APfGGG0AtPX5UK
/k7BgI0Ca2po6NA5nrSp8tDsdEz/4gyea84RXl2prtTf5Jj07hflbRstGXK0JEFu
ZHJleSBBLiBDaGVybm92IDxhY2hlQEZyZWVCU0Qub3JnPohGBBARAgAGBQI6dLvR
AAoJEF1SHIzmsVAWipkAoM3ZK7fdKH9axPR+qDK9Gb/pjbNFAJ91+ArlW3wqtoWf
t4pOpIdU5IBnv4g/AwUQNJ/sNY5hppeSXgXCEQKAuQCghoR/kUSIv++6Kwp1baqg
GFzUcN8AnjzN66WhisQPMF2xZJ8PUJRFRYX9iQCVAwUQNHm5VuJgpPLZnQjrAQEu
AQP/aaf6HDj/el4vHRJv0s3H/818IKRV59J/Yb1DCHHp2/BtfuGYVxr3uHsFA3ga
5tTVnkV+zpN5qZIGui0FgaY4LC8npL1aKAX1gdAhDcHgsSOyQC2lyNTnzfLjbMzX
WSS8S5BTYZ17rV1ojKUnI7GyCmNJamTGrnR+BjaQsx+CX9+0JkFuZHJleSBBLiBD
aGVybm92IDxhY2hlQG5pZXR6c2NoZS5uZXQ+iQCVAwUwPF7TnuJgpPLZnQjrAQGV
7AQAt+Ff8z3/a2Iq9B0agty7ubP4GRNaDf/OXXysUiCNfHB/zq2jdM98i0acaWOb
Z2DrMgeFQGR3P5O0gc+cwWg863M/Ytt5fMG8cWBqMzQ1gZBy4m94AxXiYSFpGN9u
uEaBFT06r5/2QieyuQAxKer+yprXJGWAaQQaJX0SoDZ74m+JAJUDBRA0ebLw4mCk
8tmdCOsBATk0A/9DkwgFyI7mpN+t5oxEb80pFbDbSB/YQNZdMOmfefoh9Hx61sVy
k9LwWRNMtBJvkt3KLSy9GzJlRNxdw9xssYQVZoM48sdDWDaIkI2HYvuoPz1d9Ap+
LzjuoQQaUsiOr2OqhjanLGsLkbRzbyv+dzKTnysEpSAhAWEIpnGYZHIvhLQyQW5k
cmV3IEEuIENoZXJub3YsIEJsYWNrIE1hZ2UgPGFjaGVAYXN0cmFsLm1zay5zdT6J
AJUDBTA8XtQU4mCk8tmdCOsBAdNDA/4qaRZDApCVul79ztISp1hVu+8xLkmN7FPk
sMwLdRszcpGQAvncM4qjD3TTS74zPd0+fuiANkbBamwWeX50TRybl+avkbYzfpBZ
5ggV9rDgMRHGmUIkWFoWp6JGzmn2ALRKThoDMbQ07tUG7Xam6aqh9iBDShVZy7VQ
I3JpS5RV/YkAVQIFECw/DtoPMnk/5rEpbQEB0v4B/1p22B08NEiLeZ32Yi7OzGSU
x/VBsKb0M3cd4vHOq1NpJ9Npmumh63MwSXIMinSJg5f0kOU8kPvNDN4RAQ822gOJ
AFUCBRAqlTF3vtlI/HoTNvUBAbKgAf90Gc7wQD+nnPfa5cRbygIwhBsKRHPTcuA+
Q4cw9pxDyx5rP3nX2/9WLCt2mjCWU+8azL2EPycj2yj8E9AcINDEiQBVAgUQKtZs
JsBZrJRXtjnNAQH5/AH/ftSIdQsT0TfROoD3oNXKlB0BRNLk9n/loxgdgo8E6JdT
Sjwv6y6DbWWOIx3jOeHedbdj/jF+pwq7//tfPjvxbokAVQIFECwcyHfNP8+ZgPs5
LwEB4iACAJXf+a1C6lWT3Wek+J6t56m3ZKb9JyTm0WlhLr9I4U7T3xOo+gLN9LG2
7A1mdy3VNpV4Lkf3nCxvChO/uSKEvueJAJUCBRAt/1zc1T70qQVgy2EBAdT9BACe
2n4lHwDK0uOSe5sHeq2uJNm7n6NM2DTdCnvPHI4SEhv679aILIvQzNCqo15tW2le
ZNAZK+HX6TfQ5SGYvD+IzGjnmNiBKbicfcueMi+3BmPIbqi+0ldXNPkAQ9PGheDy
iMkLWdBpfRYWjGydJtael5zERUYz6ypOCUH+oujIaYkAlQIFEC3v+C7iYKTy2Z0I
6wEBuTsEAId91Ic+wAbOVzfqXiQGOS3LJpjVqo4IJoj2NMsbbZH/0gW45WBBkdea
zL7FWgQkP8/fTjT4KWRUcSbhd1wZ42I8ME984CcUj9/mAofAn4sNxiIqwe8BzqrQ
VojYBAITLZ3jRHqAY2CxHCEN8jR94vCyBRiQ0y5vTMmj2VBZcFlpiQBVAgUQLD+8
YeSBEPHD4o8vAQEAiAH/VGq6E1+ZANCb5NZvWzcL9PwbhwZs9OL4q1/2WqBR6NUD
CnXRj6prP0Uuth0aMJe24JL6B2VXGXaFt+Bqv8UixYkAlQMFEC9fWDHtMMnXZzjK
4QEBcwQD/A/nCx/DRga/VySwHk8NA/WjhqwNu/P4mQo1TU5q1wfdRAJKukbEJJzV
RByTFwzsjlVA/w3pQzWSAwPiH2aQCtCjHTT44wex/8biiovSwVmjXRHrWm7hXANz
JePjejrgVnKDHLa9CBJnp2ev8ktTkN8L9bwKadrpoWQg35yTcfUwiQCVAgUQKvCF
p/TKAIGN5yLZAQHHGAQAmYedyBv06feLsd8qKRkLN5QI3eTVcAtH9Yk+hUFH6JHL
aRrlSy9r5Rwyf99Ma8ptcljiHiTo5/Jr2Tg+8i3PKCqDP4nVSrXcZrQHhMdXg1V1
o4ez0h5ekv7qa3nRG/GmdObzZlKeDaUkRx1ZAKsqoTrYsdCJRXJu8vn8hjaaGSyI
RgQQEQIABgUCPmKdCgAKCRDhqZsPqaYP4z9dAKDG0sFfs9n2H2hyFskd+jL07y3e
YACdF1ebVCqWZ66Hq6zTBCypW7M96bu0MkFuZHJleSBBLiBDaGVybm92LCBCbGFj
ayBNYWdlIDxhY2hlQGFzdHJhbC5tc2suc3U+iQCVAwUwP4akW+JgpPLZnQjrAQHQ
YgQAwvmC07THkHZpyWEsEAH9sg2fjFkIIzRx5E0Xxncjy5idgzoXiFToHDkXRbFe
WZNsI3rqOVhCY5aDvQYsxOtlQGFKinoZ+JlH4bjvj9ugch4tq6iMxLaWvVY2M6eM
zi7dgWvrHoIsR2S/sTUejlskbPXKs8phBI4o+yApE7kMlPeJAJUDBRAwEcybIlGW
2WZtAFEBAVCTA/9gLdqGzdkwyiuI6W3dnEY1RQ9MXusgRHeP5zuaoYbjp0ScMHmx
SuTNpymgtfmyPW0ZHdu/P1ri+aTUC/coU02+tlnf8FkUamreYJOIAL3OzI1hDwvQ
B8YhQ7mCgIiOrA5M1AgA6k2wnlL6cwCRAHhiaY2UjoZNvcPXzN+E9nq5yIkAlQMF
EDAq/ChrWmeNgbKneQEBGKEEAKhevep8brmEULIokhKaM69qgatqfFQiR4NLTJB1
MfOFD53AHU6GErXkTQ3CvQwpqMsyb3Sfr5l1vnL8UiOk+uK7x0iuUetZmV7Brzx4
QMz5D83FPWJiD4dooMATXvWOYulKkIvQyIm07SLfovd6RUPse/y9985kc9IeKsjM
k5lNiQCVAwUQMAzqgHcdkq6JcsfBAQGTxwQAtgeLFi2rhSOdllpDXUwz+SS6bEjF
TWgRsWFMy9QnOcqryw7LyuFmWein4jasjY033JsODfWQPiPVNA3UEnXVg9+n8AvN
MPO8JkRvCn1eNg0VaJy9J368uArio93agd2Yf/R5r+QEuPjIssVk8hdcy/luEhSi
XWf6bLMVHEA0J+OJAJUDBRAwKwCjn+savKgvyHcBAerVBACJ3I0WoD2G+uYxyOlj
tywlUWUa+PnvhaPgY9qjell65BowGaxappctidZT8CV1vqRPPr6dFxBfnTMUfRMd
I98CnARbvLJtJMjlqkmZZPeqEo3a+Ys2DbI3OGotPMcsPWUfeLWl9CrxZ6+s1+Mt
RyjlL9W56ROZr+iyfMILDt9DMIkAlQMFEDAOz6qx/IyHe3rl4QEBIvYD/jIr8Xqo
/2I5gncghSeFR01n0vELFIvaF4cHofGzyzBpYsfA+6pgFI1IM+LUF3kbUkAY/2uS
f9U5ECcaMCTWCwVgJVO+oG075SHEM4buhrzutZiM1dTyTaepaPpTyRMUUx9ZMMYJ
s7sbqLId1eDwrJxUPhrBNvf/w2W2sYHSY8cdiQCVAwUQMBq7rMUtR20Nv5BtAQFB
fwP8DHCRh4VpjFlgwU4Mci9KTbeECyMKZQDZSKXUV5YC6xv6jzFF88NztOeiysiJ
8mpsXn59wcIblVJMaWEGF3XxhZR5pt/+H07YGxBfnnJZG4HbHd2InXEj9VV0b6vG
UwKYThlHVOX3H4y26f0qopWkHf1WWQIFhDeGWA239MlRjiuJAJUDBRAwDUi+4mCk
8tmdCOsBAatBBACHB+qtW880seRCDZLjl/bT1b145po60U7u6a3PEBkY0NA72tWD
QuRPF/Cn/0+VdFNxQUsgkrbwaJWOoi0KQsvlOm3RrsxKbn9uvEKLxExyKH3pxp76
kvz/lEWwEeKvBK+84Pb1lzpG3W7u2XDfi3VQPTi35SZMAHc6C0Ct/mjNlYkAlQIF
EDAPSyXi5bvh+14VGQEBawAD/01ioFEEpuaW1AOnIrj6MEBiORcEmYBEVcolhOWd
OA4cylmqhXJb3rGdprkzPESK7tlabmgvXRAMinWSuQE/Ypya99IwwdvloYIJBzb8
/w2V9cC4e00bNiIjRQAjCLyKH9LWWJV++eoX25Xd3eSgTtWxD04DhCjRkvaCBb7+
ARpgiQCVAwUQMAys8PvCP42xMxQ5AQElyQP+KThaxnObao7H0XB6sartnByFz4mr
Vh43k/GnOpJ/gAbv7t0Uif6h7pfYVwjOBthj4h+aAkgcRWMMcfn64BfJvqXiIpzz
15BrA7e3zyl8cslZtPOae+DPZwyvG33gdG+CQd+9ykYSBvKV2roQHfc66drMVx9k
VEhxeTWx/IsO9gSJARUDBRA6Ej7Gv8plHjvdG4cBAToZB/0YpwHrJgFQdH3nYlrb
tIv7BlA7tjBX/xf9Oy9VvEfrOjzJMZcDu0RV4SGznRHGsI/ZreotqDHQcJ7eBFZP
YBt4Ix22kq8KJ3xrrY4nyI8dv4xdecfao8VgruCpZTHK+ugo9hn324H3ZBRNxnAx
v6GCdRg9Gkn10EQ8uFFaByDHEyA/XfvYzjSSsKUaUyIQo1qNTfWilHtI4stxecqk
GpM4Mq8Y12M13M6lfDy7aneIZOP29rzomIaDZbm3D1/2FwrjBTD7V2nBFTrxyPaz
oYm4CFiN9Kb6ghAKGRhmrHbAr1uJztvP9++nlXPedsQwUGjaBXulE9Wv6YNbQoxH
zFNkiEYEEBECAAYFAjoSPvkACgkQB5oFL6O4NUkP8gCg/luH6KyFzV6t3sgSxecU
/t1OzBwAnRG333251BBJEVqdU2L0U+CXDi06
=qg1H
-----END PGP PUBLIC KEY BLOCK-----

C.3.15 Sean Chittenden

pub  1024D/BC84B341 2003-02-15 Sean Chittenden (http://sean.chittenden.org/) <sean@chittenden.org>
     Key fingerprint = 3849 3760 1AFE 7B17 11A0  83A6 DD99 E31F BC84 B341
uid                            Sean Chittenden (http://www.nexadesic.com/) <sean@nexadesic.com>
uid                            Sean Chittenden (http://www.ruby-lang.org/) <sean@ruby-lang.org>
uid                            Sean Chittenden (http://www.FreeBSD.org/) <seanc@FreeBSD.org>
uid                            Sean Chittenden (http://www.rubynet.org/) <sean@rubynet.org>
uid                            [jpeg image of size 5617]
sub  4096g/B6991464 2003-02-15 [expires: 2005-02-14]
-----BEGIN PGP PUBLIC KEY BLOCK-----

mQGiBD5N0sIRBADQfd6bSwUn1B8cK4Xb/D7Cm3kU+gt3tGpCBH5ioMSleO6wbjjB
HsUxU+I9y4UjpckOyIJxbixxbqSoCfvbJKxBWUL5mWHOFQxuWNSwGM8VP7mP3fmH
UStJG4Wpg+Ic6QjUI+O6k1ED4hrQmHeBVqPe3uUoxNxiGWPyRhnC1y1V4wCg6ixC
CgHaloSzZVkOPjQvQktRAw8D/R1i8j86t9wAufmu+Lv6uHxLWe3ZcXszuPEDUt7G
SodzqigfOBEBC3AiBuB/oFpgSdypaN8vbsQvVBxxEjPi68+7H4Jz5EWjAmbfbERL
bMnnxWe/wfxSwwJkWlV9S1Kg4sJY5SFMi6qiinPQKSGjDNQ6G4+5UNKBQU8mWRPU
Q1GcA/wPv4G/hJnHPfS8720YA22fjpbdgFsTbFR6jXR5GwA6+phiT9h2JlG9g4c5
ZOH5K52LUC3IZeua9jNLYlO37xYxLX8F79oHegeo6atuRG4juuJ45gyIO4Roets/
nYL0kI9xzjvU+cgcoFUwp6mgUnQhdKHKITRD697JjcDtuBAIhbRDU2VhbiBDaGl0
dGVuZGVuIChodHRwOi8vc2Vhbi5jaGl0dGVuZGVuLm9yZy8pIDxzZWFuQGNoaXR0
ZW5kZW4ub3JnPohlBBMRAgAlAhsDBQkDwmcABAsHAwIDFQIDAxYCAQIeAQIXgAIZ
AQUCPk3ivgAKCRDdmeMfvISzQQprAKCeWF8bj8FnuE5BAYoWXfQMQomsMQCfT01r
SvgimVwQTZHPFboXS6SMPn60QFNlYW4gQ2hpdHRlbmRlbiAoaHR0cDovL3d3dy5u
ZXhhZGVzaWMuY29tLykgPHNlYW5AbmV4YWRlc2ljLmNvbT6IYgQTEQIAIgUCPk3i
9QIbAwUJA8JnAAQLBwMCAxUCAwMWAgECHgECF4AACgkQ3ZnjH7yEs0GlsgCdEOP1
dQRHEDQCjnwtSCZxcwskIycAn37IzM/raOcZ9Wx4C6EtUTU9AMFFtEBTZWFuIENo
aXR0ZW5kZW4gKGh0dHA6Ly93d3cucnVieS1sYW5nLm9yZy8pIDxzZWFuQHJ1Ynkt
bGFuZy5vcmc+iGIEExECACIFAj5N42kCGwMFCQPCZwAECwcDAgMVAgMDFgIBAh4B
AheAAAoJEN2Z4x+8hLNBhHoAnRxZvAwhzYvcPqwvLMkAoS40GR74AKCbk8dQ+rmw
afLmuuGF0fLWbJKxibQ9U2VhbiBDaGl0dGVuZGVuIChodHRwOi8vd3d3LkZyZWVC
U0Qub3JnLykgPHNlYW5jQEZyZWVCU0Qub3JnPohiBBMRAgAiBQI+TeOaAhsDBQkD
wmcABAsHAwIDFQIDAxYCAQIeAQIXgAAKCRDdmeMfvISzQeVaAKDXySjoHnugvq/d
7fSdNiRzNpULWwCfffJQeGEd0DzdUfUpQnlgEDmnGA20PFNlYW4gQ2hpdHRlbmRl
biAoaHR0cDovL3d3dy5ydWJ5bmV0Lm9yZy8pIDxzZWFuQHJ1YnluZXQub3JnPohi
BBMRAgAiBQI+TeOxAhsDBQkDwmcABAsHAwIDFQIDAxYCAQIeAQIXgAAKCRDdmeMf
vISzQcFUAKDgfF2CxILe+mIjLM0zJ/tUBw9VqACeI3VvpklyTvg0qDJWorII+qED
iRrR1UTVQgEQAAEBAAAAAAAAAAAAAAAA/9j/4AAQSkZJRgABAQIAHAAcAAD//gAY
U2VhbiBDaGl0dGVuZGVuICgyMDAyKf/bAEMACgcHCAcGCggICAsKCgsOGBAODQ0O
HRUWERgjHyUkIh8iISYrNy8mKTQpISIwQTE0OTs+Pj4lLkRJQzxINz0+O//bAEMB
CgsLDg0OHBAQHDsoIig7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7
Ozs7Ozs7Ozs7Ozs7Ozs7O//CABEIAMgAhAMBIgACEQEDEQH/xAAbAAABBQEBAAAA
AAAAAAAAAAADAAECBAYFB//EABgBAAMBAQAAAAAAAAAAAAAAAAABAgME/9oADAMB
AAIQAxAAAAHLuNZoit7AMPH0eqqxYt4NVgG2tNrKt2eXUwmNyZNKKGToIqfSdaWf
PlN2Oxnxo0NWp2IfO5fT4ro8KlW10M7orDjLIwHCSQF63NuqjCnF3amCoToK3ArS
XKTqlFOwrPZzqHpc90uWKKdCuEDaVjg4BsSFwDg60zXOQ1AkcSPbRWaXaYjlh63K
ecEyeZOvxewXVE7hO9X7i0T2K61aIytgVwY68LYwrZvR5p8ySVZPrcl6BG2UBr+Y
rqdvidptq9sE1XFOg107/HuJy58WZZzGizbwZJXktfkOlOuhm4o6qnSgVxVBeEVV
GaNIZ5DGBppp89psysRJ08GdkzUdnF7rPfnmHMsg5xVgHbqlDNVuAgOIU8jq8pXO
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
=LG1v
-----END PGP PUBLIC KEY BLOCK-----

C.3.16 Junho CHOI

pub  1024D/E60260F5 2002-10-14 CHOI Junho (Work) <cjh@wdb.co.kr>
     Key fingerprint = 1369 7374 A45F F41A F3C0  07E3 4A01 C020 E602 60F5
uid                            CHOI Junho (Personal) <cjh@kr.FreeBSD.org>
uid                            CHOI Junho (FreeBSD) <cjh@FreeBSD.org>
sub  1024g/04A4FDD8 2002-10-14
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1.2.0 (FreeBSD)

mQGiBD2qLwkRBADbZ6Rsv7guMTzGT9lj4eIE29vj0ZZNWFepFEqEmWK0jMLAATX0
koXkP/qWsuGBhVHcSyZtVG+MYTwAzo5nBszx12CNL/GkEokQ/9FXi+cA3W5TJZTE
ssMq0PPwqCB7+s/4DBmc3uI22TCOI7J26XkftuwkdihCMG/gk+cgKkzZ7wCggaBp
02a96DwV/78wUZy9C8B6uMMD/j5jAO2HOubn5CRZrOpko3za+qVsk6yTCmq12z+t
r9veYORoVohxVTIY+xpeHQVlOe5URTiKO0Uvu34Tl34x0BbSLBWrGU8UTMA4+hpl
QTUK1GI1DheFPGGGxbt9w40nslRVw2Or7GA/XHexCDwx5KZpJNtO8c/MqdlzAae5
CuYQA/9bb5T8xhamrsOFTmdLY3wPM2efnp5d3luwA2Fe3SdC5Rkoa2fDye5w7fy1
9YX638Nw0YU6P/xmygdBjqxKs28/6evo79KAWONL0dl20pEYoj3yVz58C3YGLEFe
p9ggrBf41MjnnMg+D7NdBOHtISfOrU3TtB/1DiGE3+QpMwuOHrQqQ0hPSSBKdW5o
byAoUGVyc29uYWwpIDxjamhAa3IuRnJlZUJTRC5vcmc+iFkEExECABkFAj2qLwkE
CwcDAgMVAgMDFgIBAh4BAheAAAoJEEoBwCDmAmD1SyYAn3JBBPs/6lAQ55HLjew2
suN8XP8RAJ9OBFQhUphqmQ/shjrwbNRBsgDbc7QmQ0hPSSBKdW5obyAoRnJlZUJT
RCkgPGNqaEBGcmVlQlNELm9yZz6IXAQTEQIAHAUCPa7Z7gIbAwQLBwMCAxUCAwMW
AgECHgECF4AACgkQSgHAIOYCYPW9MgCeOYgOUTCIsagnCymketJwQoGBEpsAnik+
bL1lPnomVghlMMUgU8wxB9sQtCFDSE9JIEp1bmhvIChXb3JrKSA8Y2poQHdkYi5j
by5rcj6IXAQTEQIAHAUCPa7aJwIbAwQLBwMCAxUCAwMWAgECHgECF4AACgkQSgHA
IOYCYPVI0gCbBZEg/a9K4BAY5HQ7wFOp6u/G+nYAnRgb4zUmf2M57dxEx2hm93pI
aKP/uQENBD2qLxAQBADMGxA9f5QYLFnR/XZ+Hqa/YCeqFMZ3hC4KnjWBDDXfI0Cv
HMLBIW5027NPIDeN95998T5YJPDm1TY5Cort72CTDS3eIfoG0iGwIzzLfXrZB7Zc
1BukNV5NMFeKPO7pX6k4R0aQr0SQUmcdYD7t6V/M4xswVOwcECk/W9BuGA/9NwAD
BwQAy8LmYyssQdjImAASQABcpdOua5orv0ojYMu+edGmjd0WqhXToUHcDfQgL6YA
kO/4g37ysvGwlpj8U7cZwabMO/zwnryyOEeGEA+5aCsji4VRZHOkdflcuBOXj0nR
9yHmPFfwWTxLtV9ajLCP4vXqKPrKciS8SbuLYzvx+lnUiCqIRgQYEQIABgUCPaov
EAAKCRBKAcAg5gJg9eZZAJ90E4gu6VACob81uH3MxWmgjpG2iwCfeNTe1Wz7EO3K
z54TjDmC4biJg2M=
=g8A3
-----END PGP PUBLIC KEY BLOCK-----

C.3.17 Crist J. Clark

pub  1024D/FE886AD3 2002-01-25 Crist J. Clark <cjclark@jhu.edu>
     Key fingerprint = F04E CCD7 3834 72C2 707F  0A8F 259F 8F4B FE88 6AD3
uid                            Crist J. Clark <cjclark@alum.mit.edu>
uid                            Crist J. Clark <cjc@freebsd.org>
sub  1024g/9B6BAB99 2002-01-25
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1.0.6 (FreeBSD)
Comment: For info see http://www.gnupg.org

mQGiBDxRQfMRBACvHk6znTM5boH4k+2+anGxRuPxPPIJgo6Ny385v60FtJjwLwDh
9LwvZZjpjXi7MM/0FRfUE4bqzrdBtUm6XXGC8v/FTH72TemXR54yr2zuCTcX3jML
e7wjrO0SO1cttASSeb8OsVQEqiMT4VRm94AYdQvS8bNxbqlog9PYmhh6lwCgwDYl
Br/IhYSKQTugPEb8nSyP3e0D/izp3mt4NXcULIp0PZFpvnGZAMLq8moZ3cYa+8nM
kRCWd/1/94lCd1YM8f3lQsaEvRuWaw7rT1ENknSb5TZnEMsTvV03CM4DMzH63Zde
wgl8Xne5lF/WyiSsjUeSkmvCExFA83fz/Cv8/fk6K2O2Ajo0b33Rb7WLH/gb4U4s
9ZkEA/48XB6/s0vGFVnELRSXbc6wCHbnhG0/58ewSbJ2XjyIFFFmeqIF2bpLhuRT
YTBz3styfrjeAqsi9t4gtcEK3vyvF83ql5b23u5/V/+O/ZLwk3kceYmjM0mbETil
FajrLZjaWXpTRQauL/tsqxItBI4BNuTvnh9bizQY8V7xzAgMwLQlQ3Jpc3QgSi4g
Q2xhcmsgPGNqY2xhcmtAYWx1bS5taXQuZWR1PohXBBMRAgAXBQI8UUHzBQsHCgME
AxUDAgMWAgECF4AACgkQJZ+PS/6IatMaGgCgqdklRK39OoUma5sl44pEl7R3GhAA
n1680hBnTGdIR4wxFY39uX9zK708tCBDcmlzdCBKLiBDbGFyayA8Y2pjQGZyZWVi
c2Qub3JnPohXBBMRAgAXBQI8UUKgBQsHCgMEAxUDAgMWAgECF4AACgkQJZ+PS/6I
atPX0wCghHE+X/oyrMbMrCsdwubBf1WudnAAn2WHoVNZpzgMck2MhFdwa/1rAJI1
tCBDcmlzdCBKLiBDbGFyayA8Y2pjbGFya0BqaHUuZWR1PohXBBMRAgAXBQI8UULc
BQsHCgMEAxUDAgMWAgECF4AACgkQJZ+PS/6IatOKKACgsnfy7ZCxEWmdnY+c9KLm
x0V1Zy0An34Ky4kzHxDYDTIoO6XRS48+/aljuQENBDxRQfoQBADouiAUldDORJkG
K7fN81SWvocuySMOL/dEv6UQnBgR4lmjmaLog3QMbGIsJqiPRLDDS3PMkYf1dgDy
6hPmMkWF/xd13Vpk4S5sIjrqTBGoE9f0SPbcDPIjRj+htXFcI+qvhvdceYi24Zvs
xGX90jb+fimZdrJNtobfEqJaYOkrDwADBQQAsCwtAczuP/aM624+UYBrNMCmHpRS
ZAOAnp7Hz83GafkWynaNRDYan2KsBrZJmbZ3MJ6kyUj6k37Keh1c7pR5DsY202on
9haB3lTZv+j2QooPyj9Ityd985eqiRwAMBuOrpaCpot7zYlwiG/Lx/0P00RZ+Jdz
hyidSKrsudGAp0OIRgQYEQIABgUCPFFB+gAKCRAln49L/ohq06htAKC7SFr0uQmS
9fjEOFsF9oPMMxgFwQCgjvMA6reNmNAm0i6ycFh3QVYEUic=
=C4zW
-----END PGP PUBLIC KEY BLOCK-----

C.3.18 Joe Marcus Clarke

pub  1024D/FE14CF87 2002-03-04 Joe Marcus Clarke (FreeBSD committer address) <marcus@FreeBSD.org>
     Key fingerprint = CC89 6407 73CC 0286 28E4  AFB9 6F68 8F8A FE14 CF87
uid                            Joe Marcus Clarke <marcus@marcuscom.com>
sub  1024g/B9ACE4D2 2002-03-04
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1.0.6 (FreeBSD)
Comment: For info see http://www.gnupg.org

mQGiBDyDmj4RBADa/Icz5Xl+cJUGNxC/tWgXWqcA9VA8GN+PeqKhXS0BnVHntdsQ
xbpFUUKK4ld0Zex/Rec1jgC/ikExJHHIee8ZVcHqP+tsWexi83/ZvEdzI95diBp2
Is5fYp8P8hdIBNQSOoc1jVYrTJUaZgJK2uBzbkh/WbipwsQbueRzXqPORwCgsPNr
StLzqOpjrA7FdUz/JVQf5+8D/1SiKAOFiW4TxY+fS09lqiLs3mbXjvw23iQwLxje
4vBd4+b9iAUWOsSretSKv6OE9ZlD4FYea8HmMgEkuKfXGc8GvTq4J1uHZ0gcVbrB
GmxAUBPPaAENYEJfJf7dcysKVAl14ZQVIvzAGJAZHGuegD7uekGKnOEA61R3ze4a
M2zNA/96I77l0qiMc6J7gXmiD5uxC7FsSCFj5sqTYMgBqzIYEZjU/tTUbth84xcR
i4X0WNkaILqq1mOcBfmzQMvzG1n1CydmJU6iF1ewle6cIui9TQYg5CESrJF7xid4
vVXRz+xi6hc1+0bSaoJa3sfpNrSSr0lKGdWHZozWdQjOvTMCXbQoSm9lIE1hcmN1
cyBDbGFya2UgPG1hcmN1c0BtYXJjdXNjb20uY29tPohXBBMRAgAXBQI8g5o+BQsH
CgMEAxUDAgMWAgECF4AACgkQb2iPiv4Uz4c6rgCgg7XXmcYqcIlJdDl0aGU8r0Dl
kfYAn3W4oHUReFhATFkj2d+7zu+Rsu2MtEJKb2UgTWFyY3VzIENsYXJrZSAoRnJl
ZUJTRCBjb21taXR0ZXIgYWRkcmVzcykgPG1hcmN1c0BGcmVlQlNELm9yZz6IVwQT
EQIAFwUCPK4tTQULBwoDBAMVAwIDFgIBAheAAAoJEG9oj4r+FM+H7U0AoICIVoBe
9B8bo1lrvHh+UF7GY/WaAJ9C2mCThFrmqxCr2bCtR12UoPCPqrkBDQQ8g5pAEAQA
qk1J4LBDLeWs6ZOkPDYYcKCSAu0qlzEf5YP/TcSeZcjJyXILgesFXcayoy1v7ILP
QSXj4p5uzRyn0fuGqiTvajjxMZz1aSkvgGyS+gc+PDmi4SJ2N/tX2isrul8MK+NG
eUsLuZaM1JKhgKpq9yuu3D3ELG7ESga7xsOs1V/sSd8AAwUD/20XByIlsUUC/65K
G/DQ1WfX2gNuy5If9tSPQ6h1Lno5Hv3ow3ktybIoQSxbcBo28nA/Gzg5NFGVkkqf
OkH2xtS6V0K/WjzsrloBHCPFiKp2yHpXfKubxl8yefQPTMj8hLwlBKrNiN1fz5/6
29TIkEwDwrUwHxQreE7FAzPMqHORiEYEGBECAAYFAjyDmkAACgkQb2iPiv4Uz4cn
uQCfX1zNrahRTWz/HRpF7ms8qZqzdOIAn1uuu6Jst43pDzanBHUOBzUP6ymA
=Bu/6
-----END PGP PUBLIC KEY BLOCK-----

C.3.19 Nik Clayton

pub  1024D/2C37E375 2000-11-09 Nik Clayton <nik@freebsd.org>
     Key fingerprint = 15B8 3FFC DDB4 34B0 AA5F  94B7 93A8 0764 2C37 E375
uid                            Nik Clayton <nik@slashdot.org>
uid                            Nik Clayton <nik@crf-consulting.co.uk>
uid                            Nik Clayton <nik@ngo.org.uk>
uid                            Nik Clayton <nik@bsdi.com>
sub  1024g/769E298A 2000-11-09
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1.0.6 (FreeBSD)
Comment: For info see http://www.gnupg.org

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
PbUkrewAn0exWATudMNC4IQf18YvII1t4Cn8
=9wNg
-----END PGP PUBLIC KEY BLOCK-----

C.3.20 Ceri Davies

pub  1024D/34B7245F 2002-03-08 Ceri Davies <ceri@submonkey.net>
     Key fingerprint = 9C88 EB05 A908 1058 A4AE  9959 A1C7 DCC1 34B7 245F
uid                            Ceri Davies <setantae@submonkey.net>
uid                            Ceri Davies <ceri@FreeBSD.org>
sub  1024g/0C482CBC 2002-03-08
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1.0.7 (FreeBSD)

mQGiBDyI9msRBAD3ChWTrd6eyVBO/p8CKWvVwR2nHBlwNzjUwLhXK12wNXpzIOkD
ZoRm+eh23B06dTISQhfCJEdC6nhb2Tu/q7ZdTVZ8xsuEQh0AYgxDfaKbDkOQ5UXb
CbymX6LEarS7yt/WNTZYZ42wKfaaznW7k9/pf6BiqkSOeXyYAhqgHty7KwCgyqN8
2In5R/b/DDAN51vGrFWcD5UEAJwcZ6zCpwZKKRNbWziKGC+avf2AAkc94uwU+qzn
3oea4Fp/NCSwoLghisKtMM9PDWk8Kkt0HUcv5n88sD3HfXzYQDFbx8VxLXqdaIyA
NYtY9JJ6ErX9FlUaUM0qwbxI5fahKzmENFPn/1322Tq7UpuVcLOdqsHZG3xMAv4s
ynzmBADBf1z7t9xBlbbLOZ90KxH9+TAbfap62fryCmr+a0cQVsynfPMfM2vdgUi1
UP26yE5IqpIliNTdxtXCei5sWsWkA/N4sEMREXzsNjiN/IAerU9aw7MIW/On9oC7
vNGBiVZ0sX0mMnG+m39wPP/WFsWogHehM2ZDDLQCgkcxqJHpqLQkQ2VyaSBEYXZp
ZXMgPHNldGFudGFlQHN1Ym1vbmtleS5uZXQ+iFcEExECABcFAjyI9msFCwcKAwQD
FQMCAxYCAQIXgAAKCRChx9zBNLckX0oMAKCpxcvH6Wy26NQgnnt9h9fsOlpOVgCg
mvkKmB419Urr02VlIvDS2zPF3re0HkNlcmkgRGF2aWVzIDxjZXJpQEZyZWVCU0Qu
b3JnPohXBBMRAgAXBQI8lfbDBQsHCgMEAxUDAgMWAgECF4AACgkQocfcwTS3JF8l
QACcDIWbwFoiyzwstCX9yLofxXoX8OgAn0+C1dAVU+SLHk8a3eXSiqqfZaLJtCBD
ZXJpIERhdmllcyA8Y2VyaUBzdWJtb25rZXkubmV0PohXBBMRAgAXBQI8lfbaBQsH
CgMEAxUDAgMWAgECF4AACgkQocfcwTS3JF8B+QCglZ+/NH9oWiL7+EyJ04KUFF6N
btEAoLWBDEfP8E0EX/KdcO/0elAnMbRauQENBDyI9nMQBACCsXTESbCbETBauHz5
lsLGPcIu3Wxxm6q03eu4ssivMNN7eYhkxoHK4bE0iIMl8iFUjeIzvGXBrdPIbhhr
mFJ6gIfQ0lwVexTZkpFDQyn84CY+TbzWXNOdkAZsq+hQugw1yVKn4FO6cGxKdB4q
NSaee/7TTBWXluiOblwU3B3fSwADBgP/RwKczbedj+27cYLvuk2jpDs7hmhL2BLh
a9HmnTyPFYDhW97s7gHjHn3nYjikWssTYuVGllsn2DXRUVOeYJMzC9KaFHwRM+iL
gPOKTNopEmvvDCVi8ZeUvyquowH0l3sigHyF+vPaQph3ZxHvO5bI6eaqtffLMagt
l0rlSKD4kheIRgQYEQIABgUCPIj2cwAKCRChx9zBNLckXx4mAJ9kE53878kMY2jH
iJ8ElEzEWbJOsQCfStKMIHgOPO05CJbsJXq7OYX9wSM=
=aCeK
-----END PGP PUBLIC KEY BLOCK-----

C.3.21 Brooks Davis

pub  1024D/F2381AD4 2001-02-10 Brooks Davis (The Aerospace Corporation) <brooks@aero.org>
     Key fingerprint = 655D 519C 26A7 82E7 2529  9BF0 5D8E 8BE9 F238 1AD4
uid                            Brooks Davis <brooks@one-eyed-alien.net>
uid                            Brooks Davis <brooks@FreeBSD.org>
uid                            Brooks Davis <brooks@aero.org>
sub  2048g/CFDACA7A 2003-01-25 [expires: 2008-01-24]
sub  1024g/42921194 2001-02-10 [expires: 2009-02-08]
-----BEGIN PGP PUBLIC KEY BLOCK-----

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
=k1pm
-----END PGP PUBLIC KEY BLOCK-----

C.3.22 Brian S. Dean

pub  1024D/723BDEE9 2002-01-23 Brian S. Dean <bsd@FreeBSD.org>
     Key fingerprint = EF49 7ABE 47ED 91B3 FC3D  7EA5 4D90 2FF7 723B DEE9
sub  1024g/4B02F876 2002-01-23
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1.0.6 (FreeBSD)
Comment: For info see http://www.gnupg.org

mQGiBDxOCiIRBACyyyoMk5OyGdOkR0a4fj8zPJ2AOielQ1BYv7JlIWdNeMHdQ0gj
liTgXwDimeBnElw7sNrmdfocfwKbmX33exFPa3AkJgLflBcuH9+xE3ozgzMl6t76
QL90PPIc24Er670NnhF7Smvubus4IdckvM24kuUTINmiuFzVwuwWdXdwvwCght6R
HPpuFeiMZHRJAiHmu9AkKrkEAJRLmRGgdqTQ6RRIQobqGS+1grl6AsXHzKfvjx8I
//12yrFiUcXE+167I529OW2i4ilmVjBmnwwe3750ZKBIp8OUBkMkfMuTSyCCFD22
CX4N7D68d8eCJiCqv0jMZGnoWoMulmWzdyplcg/FhdLzUfpXLWX7/9gzy9k8hKBT
Ou2UBACRLG7zwgKcYx4yjHhsCxuqGOeKtcfF49ghCp1s+wPsnXy8b6ZAY3wFeHC5
LFyUsQFarizV0aeqJoOXEB296xZYPpgW6C+rajd1WVi7zhPxsfYedldX8HtGDMKm
FRN88P75OGjMdFOYrpXTqUAJnoTUN4UynLV6WbfM7Cne0syg9rQfQnJpYW4gUy4g
RGVhbiA8YnNkQEZyZWVCU0Qub3JnPohXBBMRAgAXBQI8TgoiBQsHCgMEAxUDAgMW
AgECF4AACgkQTZAv93I73un4TwCfWqT0UeeEn9qstLTycDZF6oiKUusAn2dZRiNX
06KUv2qJk2g88nUsBXgDuQENBDxOCiQQBADXY+I+CYMmiant5TBMzh5JfqhW2FXa
aZDgi5XTVAStL6AaygeLIaVSSUUuOxiD4JB7vxHYB7pyVg71/lg5moud8NP2HNKW
YR2mZjCQ9bHRQRqqPBTMrSHJpq10cZ6grxvVmte/oC4cI35wL8HEe2WwChZgk0tS
YrA5PRt/UGWLLwAECwP/SxokqxcRa3lZqkpdwLgLWpyx1KNBg7wIJYLmALI0UxpS
ezweD7OukikqZ1BYlaaWZ7N++r4sNDR9WTIv0ySNovxJnnlyo6FzD9RD7ijQbAvp
nhpikigC+GvdnvmreMXYztc9WvFeJT/S8LGDkDHcm0ECmBDo3EA8W0+sOQsZxk2I
RgQYEQIABgUCPE4KJAAKCRBNkC/3cjve6eroAKCCMN4s5AqvTy38BWmspFvSu90I
IwCfTGutfs+PGUY9JJoabnnfJhfIgNA=
=MFJO
-----END PGP PUBLIC KEY BLOCK-----

C.3.23 Dima Dorfman

pub  1024D/69FAE582 2001-09-04 Dima Dorfman <dima@trit.org>
     Key fingerprint = B340 8338 7DA3 4D61 7632  098E 0730 055B 69FA E582
uid                            Dima Dorfman <dima@unixfreak.org>
uid                            Dima Dorfman <dd@freebsd.org>
sub  1024g/A51DD1C0 2001-09-04 [expires: 2003-09-04]
sub  2048g/65AF3B89 2003-08-19 [expires: 2005-08-18]
-----BEGIN PGP PUBLIC KEY BLOCK-----

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
EoQZKxCl9C8Iuwj3RgM9
=6nju
-----END PGP PUBLIC KEY BLOCK-----

C.3.24 Udo Erdelhoff

pub  1024R/E74FA871 1994-07-19 Udo Erdelhoff <uer@de.uu.net>
     Key fingerprint = 8C B1 80 CA 2C 52 73 81  FB A7 B4 03 C5 32 C8 67
uid                            Udo Erdelhoff <ue@nathan.ruhr.de>
uid                            Udo Erdelhoff <ue@freebsd.org>
uid                            Udo Erdelhoff <uerdelho@eu.uu.net>
uid                            Udo Erdelhoff <uerdelho@uu.net>
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1.0.6 (FreeBSD)
Comment: For info see http://www.gnupg.org

mQCNAi4rWsAAAAEEAM1u8Y60omElX7Wtrh75P8K0L2Gp6omV6iDuwl9kXYhN94jF
DE1F4xpkRDWvQxsWbYeIk2F3VYGuN12BhbRNcNqoyniQt2XMmbdEmp6ltumH5WbG
jR5Xg0LkJ5AJmxvjJXXA9q+/eTfmyTfPjnCL70cTMWHdUl+EBUPoh1XnT6hxAAUR
tCFVZG8gRXJkZWxob2ZmIDx1ZUBuYXRoYW4ucnVoci5kZT6JAJUDBRA0K3Q0Q+iH
VedPqHEBAe9vBAC+el5mJpqPkC/+om/SSE7mxyuUqHAx1tNUymL8gTuV3mFB0goM
xkxhUOMMYe9z2zyi+RXrECfLT2OqqUA60EZpl6Mgymj8SVZSv4ZwXdU8cgynYNfX
T1pC57mN9mxL10vTTJEix7QsrVz0W479/IkBrhW9nTidQtORW1Si5T5IA7QeVWRv
IEVyZGVsaG9mZiA8dWVAZnJlZWJzZC5vcmc+iQCVAwUTOwzFWUPoh1XnT6hxAQGl
eQP/bLMp1qSdkt2/BKchpx+lhOemCmT3LHQ1sNzelb7dBwnsvE3Z9lOycH2pm1ro
j6x3vmcDAqZ1yh2eFEVNK5abfhuI3QH+9QdgvMcSIQgF3VIMer7JXxNtFFX8JRKm
+YfLfDifcK+B2HRkpMt9ETY8b3/cYz+gbdKNe4nVde5KPT20IlVkbyBFcmRlbGhv
ZmYgPHVlcmRlbGhvQGV1LnV1Lm5ldD6JAJUDBRM7DMX9Q+iHVedPqHEBAYHUA/4l
j98KC7y8cjapO4Hi0r/eO7gUwDujvrBMYbWuhmNCO6xlPfwRNm76tnNiTFdqVLat
XSrQwEUys9Mq9xe2F2RuqSfYWjmHKX3/gNW3gRJbnBqO1QN6CDqo39a7LgllqFf4
yFj9V6i1c0WSBiOeWy75DHpsfXHupMxZWPPRWh0TnbQfVWRvIEVyZGVsaG9mZiA8
dWVyZGVsaG9AdXUubmV0PokAlQMFEzsMxhFD6IdV50+ocQEBzqsD/0nX9rV5cAcd
jFTayQvoAjb/nIN+TJVHumuC/Glp9fKHlfTjMnsUawma+iQESjUB8XgyeJ0WvR8M
vQGEMowYr1YTtFiYfFOvrzXZmhB6NfhFV3s34ZLDeBnncUqkas79Pi9G9AP2Y/Mc
c//i2owj58xTfocYNT5IxVVYjB72Py+3tB1VZG8gRXJkZWxob2ZmIDx1ZXJAZGUu
dXUubmV0PokAlQMFEzsMxiND6IdV50+ocQEBBJsD/1SVP70fNa3ShAn18+yEXOIL
TlFYCUmGaBIeAsd7r8tXFYbf5STAOEOiqBB9Y7V1tV4IriACru+9wo5wBQoCLBT1
RNj4NhwVvkGReTDsA+Zz/vUULrbklVKO724DktO0+WRbn/w99trttuUTGvTHRER3
BjuOfJ/QoLlnLAsDBMov
=TCJD
-----END PGP PUBLIC KEY BLOCK-----

C.3.25 Ruslan Ermilov

pub  1024D/A8EE370A 2002-03-31 Ruslan Ermilov (Sunbay Software Ltd) <ru@sunbay.com>
     Key fingerprint = A3C4 291D 95A0 AF1F A85C  B029 524B F83F A8EE 370A
uid                            Ruslan Ermilov (FreeBSD) <ru@FreeBSD.org>
uid                            Ruslan Ermilov (FreeBSD Ukraine) <ru@FreeBSD.org.ua>
sub  1024g/2E858CD8 2002-03-31 [expires: 2004-03-30]
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1.0.6 (FreeBSD)
Comment: For info see http://www.gnupg.org

mQGiBDynFvkRBACvJhyWUOYn4yRZE2PANbsbkWpGETeXoFD7UVEI6IgXGXe4ctWb
Ct0BuARjmtPu1jM/6rzRkhMwtwxw703Es6TpsTWDB1Lvh41MsyXXtMH67al3leg4
fbxNbI/0BEwRv7CVx0VN8JPZpx+uM7hZXxwaeIZAW6ikEyeGTatsgUqpswCgjWNB
mcFjN84zzE0oiuWG8vIOBUcD/jYkX/ov5B6Mi0jIpeQbG7mHtG4tC8c3GFUNrr/7
Atq4ZxEdXzEPszkSKK/iDR6x1tA4Y3NZr83b5x9OEZ5a/X0v4ozc4SMVA8phqh82
+03qaufLm8OfnQ0Iv5gY54a/PgbwnVLFJ5za6edl8akmk4bTArU5Xi7PBQEMSvcF
POW0A/sGSAMojoAtbz8UFKEZVrIW3w44eoqsmU0JTu4PrV1ROZeejeScDrnv5bf6
qGFGBdHpBF2BVOgHary+1VopTnOCZ3RaMXUkPRlFUmEpFnHePz8VhvxcKe0VnKYS
WZTAihKtTJbJh3lUi0RMEzce2sTNymJ7zau64NNiUV3rHzQJsLQpUnVzbGFuIEVy
bWlsb3YgKEZyZWVCU0QpIDxydUBGcmVlQlNELm9yZz6IXAQTEQIAHQUCPKcW+QUJ
A8JnAAULBwoDBAMVAwIDFgIBAheAAAoJEFJL+D+o7jcKPjkAljy9YgxUtTogXDgn
Nzi6b/KPO0wAn39JM6TtZG4oktuqcyUlCeYG29FMtDRSdXNsYW4gRXJtaWxvdiAo
RnJlZUJTRCBVa3JhaW5lKSA8cnVARnJlZUJTRC5vcmcudWE+iF0EExECAB0FAjyn
GBEFCQPCZwAFCwcKAwQDFQMCAxYCAQIXgAAKCRBSS/g/qO43ChnRAJ9rr0sGbkQR
arBCZ0Z6QGqB67VU5ACdGAJ/xzWc3DS5KRRciCkJPAjrFoy0NFJ1c2xhbiBFcm1p
bG92IChTdW5iYXkgU29mdHdhcmUgTHRkKSA8cnVAc3VuYmF5LmNvbT6IXQQTEQIA
HQUCPKcYJAUJA8JnAAULBwoDBAMVAwIDFgIBAheAAAoJEFJL+D+o7jcK+PcAn09P
V3D9BGrvqzqx4To7L6LBJ7z2AJwNGJrhJoTogtE+4xf31Pg6PGuirrkBDQQ8pxb8
EAQAql4D1eAsTEuEI6URE0wSzen9FrtTKDCGyPICg1usCACvbFBxcavf9F/ZMV1U
Zi3Jo2Ggv2WAHE2ymLRNYGKx2RQaEQi6ivbp04b3eMHfm9ZB1aJ5y+uPgjXv6EQn
crZr6KJnzTG52WogbX/zDBT/0F8ijlrlsdzgKoHgYx2nMAsAAwUD/3ld+9MP+UIv
1YV4XT28ihskbtmJJsx4rdjxaKTvHwdhCjB/urPGG48XKlbw3LrIkWVjtTM25LJS
dx015Rb/PDR0HbV7DoBdX/1XqnT1MGgdUwQwwlsgeN4COCxIMr3Pk/meC1SLUbdM
uWwdRXSOLe8+AlK5Vqql4rCDPWFyWiUsiEwEGBECAAwFAjynFvwFCQPCZwAACgkQ
Ukv4P6juNwqx2wCeOAbMTBXdEG0534h3VCqTtgEIpiwAnRNGTbLTMOVpDxsmnbBd
fj73qDX4
=GuP8
-----END PGP PUBLIC KEY BLOCK-----

C.3.26 Chris D. Faulhaber

pub  1024D/FE817A50 2000-12-20 Chris D. Faulhaber <jedgar@FreeBSD.org>
     Key fingerprint = A47D A838 9216 F921 A456  54FF 39B6 86E0 FE81 7A50
uid                            Chris D. Faulhaber <jedgar@fxp.org>
sub  2048g/93452698 2000-12-20
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1.0.6 (FreeBSD)
Comment: For info see http://www.gnupg.org

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
6r7mPk8=
=R6MH
-----END PGP PUBLIC KEY BLOCK-----

C.3.27 Brian F. Feldman

pub  1024D/41C13DE3 2000-01-11 Brian Fundakowski Feldman <green@FreeBSD.org>
     Key fingerprint = 6A32 733A 1BF6 E07B 5B8D  AE14 CC9D DCA2 41C1 3DE3
sub  1024g/A98B9FCC 2000-01-11 [expires: 2001-01-10]

pub  1024D/773905D6 2000-09-02 Brian Fundakowski Feldman <green@FreeBSD.org>
     Key fingerprint = FE23 7481 91EA 5E58 45EA  6A01 B552 B043 7739 05D6
sub  2048g/D2009B98 2000-09-02
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1.0.6 (FreeBSD)
Comment: For info see http://www.gnupg.org

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
uPPUsA==
=oR1w
-----END PGP PUBLIC KEY BLOCK-----

C.3.28 Mário Sérgio Fujikawa Ferreira

pub  1024D/A6381352 2003-06-01 Mario Sergio Fujikawa Ferreira (Key For Official Matters) <lioux@FreeBSD.org>
     Key fingerprint = 9CB8 0712 2E58 8B14 7C00  B2FB F26B 6E64 A638 1352
uid                            Mario Sergio Fujikawa Ferreira <lioux@brturbo.com>
uid                            Mario Sergio Fujikawa Ferreira <lioux@uol.com.br>
sub  4096g/F28E9D8C 2003-06-01 [expires: 2006-05-31]
sub  1024g/40575E32 2003-06-01 [expires: 2004-05-31]
sub  1024D/4764FFBA 2003-06-01 [expires: 2004-05-31]
-----BEGIN PGP PUBLIC KEY BLOCK-----

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
=DBjc
-----END PGP PUBLIC KEY BLOCK-----

C.3.29 Tony Finch

pub  1024D/84C71B6E 2002-05-03 Tony Finch <dot@dotat.at>
     Key fingerprint = 199C F25B 2679 6D04 63C5  2159 FFC0 F14C 84C7 1B6E
uid                            Tony Finch <fanf@FreeBSD.org>
uid                            Tony Finch <fanf@apache.org>
uid                            Tony Finch <fanf2@cam.ac.uk>
sub  2048g/FD101E8B 2002-05-03
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1.0.7 (FreeBSD)

mQGiBDzS0/URBACREmlUnPeSzfnC0m2oQV4eSzgYjskiLfwZ++Ql3zErPw0AphH7
m95dZwAscTm3CQRHDDd/RYxkJMAYA+jmw8cVX1rXtQ2URRmzy2/I+qBU1NCPrqBj
KRqrav9uhLCLGvEwdqWg2dqn8TMwNdlETbH+R0QQ/1lK8XtW0NiHC8I+NwCgj/8A
v8ifdpVSnFp1QesTAVwdTbMD/icRYOZ5I94DSRk5GGnmD+lyhfj+ejYbuVEgg2ig
V9HuXJMnBKTnuwriuskTreeNQBvBCTltHrRe1LujAtlsbixooTgUU5jkzY+J/PeN
fLd1J9uoqTGQ7GjT4SMfKuetSRBhcRZYvm9FM+54vsumKcXGK+qBfPVBHo1bk8go
JxgBA/9tnrAoLIUPvs4d4ce9h5BGA2yG9Synz3w1l8Zr+4coomUjbJFV86ZWKPM6
nyb2RhDb20ESkZnCoDxZY+p5t9c3aiQJKQQV8Gj0tj3c7/OKoyMePgabH9752Q6u
piZ5Ml3mfse/Kja4THRoPEjkQzAn77jxfvesKiEh+fu6gsJ3cLQdVG9ueSBGaW5j
aCA8ZmFuZkBGcmVlQlNELm9yZz6IVwQTEQIAFwUCPNLYkwULBwoDBAMVAwIDFgIB
AheAAAoJEP/A8UyExxtu8J8Anixqe2bmDbJpcPb0IoT84nnhJ3kvAJ9sOLAQjWYv
K7SdJyMF10YX0CIfHohGBBARAgAGBQI9c+arAAoJECm+XSJo/VSfOQ0An0ygDe/V
bqSTjYJwlIE8YYpty4jLAJ47UkBPjTiVre6ew5VF19jMKvdsE4hGBBMRAgAGBQI9
c+V+AAoJEPbdMwIQ+kzRlegAoISM0MmY8lkBCBTsow3Joc7tLgn9AJ0QrUzWpq7N
YPnlJ0lcd41pGeMTqIhGBBMRAgAGBQI9suQtAAoJEAtcZfDlrYLgTkQAoJNPNMs7
ScBAN/nLDgzNue3K8KvGAJ9ss/muSiHvLiFfiITYIrMb3iDD4YhGBBARAgAGBQI9
szNDAAoJED5DhLnTnUHhMXIAoNb0MSJWURRoRUBuzS3IqGjeBckJAJ451qIIzvpv
0BPv7IwsHLalwHN0p4hGBBARAgAGBQI9szLjAAoJEHw7eXCIx8H3AfoAn2d2BuYF
xAiBrtgQINxUFv0f6uO+AJsG4UaBDFeDfYWuy5ewplYVeKEiCohGBBMRAgAGBQI9
suRJAAoJEIhoz/fZwesRGRsAnihqruuppwzOavzHgImgw880g30bAJ0QG8O547sJ
CaSeppCiY9Yy/wQBh4hGBBARAgAGBQI9sre0AAoJENUEeBB7Yyy4xn0AnA7Ro8by
KFrC60C4/dHOqU/+AkeEAKD2PCSVlEx8ycBVnWMk0XyXSItDsYhGBBMRAgAGBQI9
sgLLAAoJEOdNKbgr4W0BhsYAoJVB/mXnINoaGdxDp2NoHNLOyCkvAJ9iN6Zhoo2C
4E2eLDhoU93f4F9AArQcVG9ueSBGaW5jaCA8ZmFuZkBhcGFjaGUub3JnPohXBBMR
AgAXBQI80ti2BQsHCgMEAxUDAgMWAgECF4AACgkQ/8DxTITHG27ATwCfQaJHzDZc
MzhOrYjhobphXayiTboAnifEwKJ1DDVZxPxxWvxNoTvaPwm2iEYEEBECAAYFAj1z
5rEACgkQKb5dImj9VJ8CPQCdEcZ3a7bXQyNZLg3KQ1ZvBfaGIEIAoJKdHTkC63GL
fT+osKfdjM4UZ01piEYEExECAAYFAj1z5YQACgkQ9t0zAhD6TNHaUACdHH9+sG2/
msrvhZ0FbGmp1tKsotgAn0y/a+fx5rh2/FTVcpYywQj13jDZiEYEExECAAYFAj2z
Dt4ACgkQC1xl8OWtguDpOgCgwPUtE7jFzwXRzAs1svxg5YXU3BcAmgJLcKt0G+FE
YL0O0stYX2ea03SHiEYEEBECAAYFAj2zM0sACgkQPkOEudOdQeEXPwCgnJ+9OF4H
22joPbsKqJjFN9hfIaoAoNJDV86nE1d6/CU/LuKH2uvAhv1biEYEEBECAAYFAj2z
MucACgkQfDt5cIjHwfcLsQCgi6NITOb5mKFKbsjjxj0LFZ/rauAAoIiJoS55pdqH
RVp5WgUikc0YJiWMiEYEExECAAYFAj2zDu8ACgkQiGjP99nB6xHghACdGSHyJofq
RXByL+rSxSlV3OosmyIAoJn/bRX4LGGdXqj8OUpvZt4ViIWJiEYEEBECAAYFAj2y
t7cACgkQ1QR4EHtjLLi5nACeOt3CWse7n/I4D4z8IH9+foodbEcAoNKDnRE1uR0o
SsnDqCVBpVwpGX5ciEYEExECAAYFAj2yAs8ACgkQ500puCvhbQGtKACeJ2FG606O
sLLjrzGmeIjZ5xzvK10Anjv8e5eBab8M2cxd5IdieOi6PfNitBlUb255IEZpbmNo
IDxkb3RAZG90YXQuYXQ+iFoEExECABoFCwcKAwQDFQMCAxYCAQIXgAIZAQUCPNLf
LAAKCRD/wPFMhMcbbieAAJ99oc3W8UA0Peqdc5cX4Lbis7hI5QCgg7U7yZqSbW1b
RDP8kufk/86S5g+IRgQQEQIABgUCPXPmsQAKCRApvl0iaP1Un6hiAKCRNZdsA0tc
0oTdJ/pkPkhyRWQx1ACeKRe/CfJF/xWBi8jquecKf6gPMkyIRgQTEQIABgUCPXPl
hAAKCRD23TMCEPpM0ZNrAJ9pF8Jkhu9JhU9naYgwAmYX5iS9NwCeOCi1gW7nJx/J
dN55WbPIyfzKw8qIRgQTEQIABgUCPbLkMgAKCRALXGXw5a2C4EwAAJ9goNYWpdCh
RnPzdARqPkIl9BBcVQCeLVknYrZ7yL0wT/DGabOtE0y+qXiIRgQQEQIABgUCPbMz
SwAKCRA+Q4S5051B4UqkAJ9jWdqexFEJSzT+idX58XITvse0jwCg0lOck6/COkYd
8aAwqfIdyH4QJWKIRgQQEQIABgUCPbMy5wAKCRB8O3lwiMfB96UCAKCIyFg+QCTB
0f0VQPOnHFVi3CT0qACcDqnzRgYu3Tz/kzUSr3hWzhnBx+2IRgQTEQIABgUCPbLk
TQAKCRCIaM/32cHrEahEAJ92I8GNwWTl02bcQ1vMPHtnbbCf/ACfTilFKvw5z64/
XubRaVr54idRUHKIRgQQEQIABgUCPbK3twAKCRDVBHgQe2MsuMfUAJ9HnuPn+dd3
TgMwr+VCfvox4Dw3ygCeNWvusO4oy5RYuRej36qzPe9nLGKIRgQTEQIABgUCPbIC
zwAKCRDnTSm4K+FtAfExAKCjbHa1kgHxAC9FoBJGk0DYBziZMgCdGO25X841oHkq
kfXEH/bhoKy597K0HFRvbnkgRmluY2ggPGZhbmYyQGNhbS5hYy51az6IXAQTEQIA
HAUCPRc64wIbAwQLBwMCAxUCAwMWAgECHgECF4AACgkQ/8DxTITHG265qgCePGYX
+2/SUFlhIlTtJt+cq1BuP+4An3OThP4AU4PT/9Qv+VBQusMz17XciEYEEBECAAYF
Aj1z5rEACgkQKb5dImj9VJ8fIACfbBiH1K+OnrBefDuwiQRnk+l0Q90An2eZDyVX
69irU3BQGTnfSSC0oFOFiEUEExECAAYFAj1z5YQACgkQ9t0zAhD6TNFNCQCfRE+X
4BB27oPuIrcghqF8cwAH07kAlAxSx4k8w3cRL8zg3+pj7pYgYNmIRgQTEQIABgUC
PbLkMgAKCRALXGXw5a2C4O42AJ9K2vWLCYfeNf3486r/I2Le+gslJwCgyuQ0LQeX
T1gzsZN0js913k5tb5mIRgQQEQIABgUCPbMzSwAKCRA+Q4S5051B4deJAJ9QJuZs
+TE6tIX72XF6gUhwumxL8wCeKL3F4GkGbKD7oZdAmxyKmXO1mEqIRgQQEQIABgUC
PbMy5wAKCRB8O3lwiMfB99OLAKCxSmibXonC4pzcM/wXjWGFdXcITQCgqVk0Wghb
V020dqzH92iBgXDleRmIRgQTEQIABgUCPbLkTQAKCRCIaM/32cHrEf54AJ9EOwW3
SLucyv4vGDTv06BeywcYpgCffv5ykOmLpd/OJpeB9YQK1nsiX3KIRgQQEQIABgUC
PbK3twAKCRDVBHgQe2MsuJG/AKDjdNIMYpdwcn1/4/U2EBJNAsYWHwCgnfzGdKSc
jX9iz+Kxlk6+5ol8X7CIRgQTEQIABgUCPbICzwAKCRDnTSm4K+FtATW4AJ90Xspu
Rd+QhrXweG3haragq2CQEQCfe+/ll3/HjfrA+9883jDP14owSAa5Ag0EPNLUFRAI
AJtkhGBrUaEVP2fO4wQpmujYfPc7+GT+Q0naKCXrMQ1vDK5ppsghiSr9TdVB3kdk
ev2oGxgsCfy2uPC/JuewQByYBmtKJuU6GDaRVXgMhpVwhcRraaDeYZm0GIDQEX3f
WSlL07xxbzSZnewlSqUEAznHjLGN1pq9mvPBczq2hrAsd9TPHo/IB9JsVmHV9GYa
sHUSbVWx1S6ntU2kV2TyKpBS4luF1Z7y6yIWS9pwiZjTlWdUGSfUkkTu6sM59dBA
xv9S5Q8TY44TUQfhHQhcLTz84UurU96i6cb99ZmN5uq6IP6NPIumhOJAqPvHSqly
+Ez/oSzSyUoyZ0Saj35E1C8AAwUH/0tkQh1bn/BhIyBO4S9z5wQfI+ZpR7npeKZ1
aYQUjFzbULb27Y20HRujvXljFPoWB1oJO+oXULkCaNWI+72TYXzKRDqYWMaubwrY
e5dHJ4hEDpmpqeG7W425rItDfhz2wKORc9vk+eHMHGZZhKamurmeH7hrVpe33BRf
ts5yvYWofYonWGF+KydBcrMp3AMbKGQMSOwcBiSpIJVn0HYJFIOWmthtKIMqfVmL
WS2sqFKITbBKHBemP+97FVAc82dXxj6irB7/jBjdPX5/5B8HHOXWeEvuHSjZ+6ef
XFrTVbeh2u1alB0aX5kz4cb8Fl9Oziqc2Lx5HLgfkKiWgDAu4YOIRgQYEQIABgUC
PNLUFQAKCRD/wPFMhMcbbofuAJ4k3jgHTXOHznfpXNRDIjZqPPjJEACfXAql73R3
KnkOqXNQ7FzYXOIPK74=
=7TEa
-----END PGP PUBLIC KEY BLOCK-----

C.3.30 Marc Fonvieille

pub  1024D/6C6481CA 2002-04-20 Marc Fonvieille <blackend@FreeBSD.org>
 Empreinte de la clИ = BA56 0F99 83D0 2601 F9F0  2ADA F354 F531 6C64 81CA
uid                            Marc Fonvieille <marc@blackend.org>
uid                            Marc Fonvieille <marc@freebsd-fr.org>
sub  1024g/D187C27A 2002-04-20
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1.0.7 (FreeBSD)

mQGiBDzBDvARBACiMOP91teeYI9VAEvaJoKCp5LFDF6F7kj9Gfs8ZEheZjT6i6Jl
YomPjcwn/yNvZ7BcSH8VyJyZ39dVDnRigUcZIeCPpahUQV9WxVSOtIplyzMlAeGV
+9W8zcEmxEJwF1/jrmVvEhmvpXA0VXaXdDf/E/SgK/YeJnqMZ34Fnc8QxwCgo8Zz
N4DjetlH3yaO1paom8+ELSsEAIwGlBNP5qHQcH05YGxmLu3dnKt8WidNCHgqessC
b831u1SC5oWjhKd8T96eVkaLDuwfVl5ZZ0BsXQCOW6zseuivNd/7xJHSBnNhPr5X
8hJwV+CIhFwLwjfyoI6C+2RhkA3PursrYmC4HRIHAPY1bfsgL4jj0HvUYXWooDt0
gMRAA/9EfMXc4wDiJ0o7TJuWwE8N1sx2bRx3HBjoOs3/8jueCa3t5lOmSchFHDzt
SziR0c2viPRV3J15xVHCUKgCrE/RkL0oEfKX8JJb6KCKpCihBxHrmtwkaSvSUklv
OyzXXBcHT9uZwfItsySggHYMQNP125nw1L8zNGl9oZJZbXcLsLQjTWFyYyBGb252
aWVpbGxlIDxtYXJjQGJsYWNrZW5kLm9yZz6IVwQTEQIAFwUCPMEO8AULBwoDBAMV
AwIDFgIBAheAAAoJEPNU9TFsZIHKCL0An1Oo2ZQF83lpzfzp7dE1ftFIpIDLAJ9f
gfCQAc30IHtPRLdXzjKRMBX+Z7QmTWFyYyBGb252aWVpbGxlIDxibGFja2VuZEBG
cmVlQlNELm9yZz6IXwQTEQIAHwIbAwQLBwMCAxUCAwMWAgECHgECF4ACGQEFAj1v
iVsACgkQ81T1MWxkgcqQeQCdEOqPQySZY+MnocrOc8Ps+Kk/REYAn2jmonVRNsnW
liUql1w3S8jdbpwHtCVNYXJjIEZvbnZpZWlsbGUgPG1hcmNAZnJlZWJzZC1mci5v
cmc+iFwEExECABwFAj1vibgCGwMECwcDAgMVAgMDFgIBAh4BAheAAAoJEPNU9TFs
ZIHKYXUAoJrUKDlTagyb7HZCsQGu3wcVSAn4AJ94gTc5Bg6ZJf4iv2rLKc9KUQ6w
UbkBDQQ8wQ7xEAQAwMksHEeImYc6o/txlOB/5D30WAvsn6thnbQIwnrQU8DhFz+/
WcllWpo1O+KuZi4wQrZoZBSmIs5CfY6GyWMbtIwMDwMTKtcWuZcBxNZglNpnPMOL
BTDrSbSaHsyGAX3Jui6c/yzXy3zkpMmGSYf1d8qYP1tlORMDyVT8EfmGYj8AAwUE
AIH3Vbfn0ZG++EtECWyQQPvokPRVMhWriGOPm/zWgyFG0zNENe5uVT6Unlgl8ven
LnabGGdX8VDGmk+0yq2E17JCsBmqec1LgQwjycuiCvZ7V4Nv17e9K6JyQvVaXxap
GMCIyzU/4zJ4VgWBV/iorUb6POQm+KEn+4fWePJ5TiLdiEYEGBECAAYFAjzBDvEA
CgkQ81T1MWxkgcrl/QCeJe7zmy6hf/KFcMVEAQICIIUZ6iEAniUGdiXy3yD3CGTv
b2DowNpBxRiX
=wxjm
-----END PGP PUBLIC KEY BLOCK-----

C.3.31 Pete Fritchman

pub  1024D/74B91CFD 2001-01-30 Pete Fritchman <petef@FreeBSD.org>
     Key fingerprint = 9A9F 8A13 DB0D 7777 8D8E  1CB2 C5C9 A08F 74B9 1CFD
uid                            Pete Fritchman <petef@databits.net>
uid                            Pete Fritchman <petef@csh.rit.edu>
sub  1024g/0C02AF0C 2001-01-30
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1.0.6 (FreeBSD)
Comment: For info see http://www.gnupg.org

mQGiBDp2C0ERBADDEONsb7B2tbhvATFEmuw64H7A+W9Kk6NMunEF9kp1VguwRP2w
pjtAon2QbvM7HABE7t3IHnDhhS61kLpN3Zxdxwt994s+jRMZ1s/p/XIP5/eIx5ds
BgKZk45sm2qdg0vRKAPF+On5voQttbBvBdOVMWOmr60Fc3I+BTNuAgaEHwCg++GC
1P4Upv9OHJCQ7JI7gKa3qQcD/3HWzaGMwyuvcuzWFDLpfv2kuYxNutg75+l0K83p
hCFxorUVw16+j4r1/464GnTAhvfp16Z7ReODy53NOlG9/fQXAE1nHZp93kFnkgLF
uIQZQKTiYsHP5eqt42gOGmX4lBRpJlpTNsdlSr8CC9VUvzqZ+H6wG4epDE2jUnFD
+kmRA/oCBoq5k3Hm4gyi3Y1F8cLUGU9YFDzhzTkDQiZc1Wqd/QlnvMW6vci7MRKv
eeeZHQOpzOSxzuPo+b/Prn1ssluAi2IIPObxrq5Gcz9lQ7/xqrvQH5EosbpH5zQM
35ku8psPGcRqcRKG7OecAoYpioLLWc5UJ/SoKAoxqzecICf3qLQjUGV0ZSBGcml0
Y2htYW4gPHBldGVmQGRhdGFiaXRzLm5ldD6IVwQTEQIAFwUCPCEaTAULBwoDBAMV
AwIDFgIBAheAAAoJEMXJoI90uRz9hSgAn0Yp/3lUexQCv3MEjwm7l7XhZi5IAKC8
Qnw/RCmcFjahkHQTXXZmW+rSwokCFQMFEDrzKkoSaX0gm5SkDQEBszoQAKvEeQYp
zt242YB6MVU88HavNYkonemSqA5s1fbg3dwA4TT6TTJ/757W47vbFnzjb/AmGIJb
r8moK8rC+6mnSC2IewsaFqkDRFSRp42XLxyVdwdkJKY/L0Of8rOpWlUsW/Zk6dIE
XFUs+5bjSEO9DiMQjmd4upPTF6r4o0jddW+wn0thrqNk+3ghd35q4HjtFnYMruMv
BKzLUYfyLkYA16w45nOF9Lr1Tz6oNzdVEJXrubpdHsHMs2sFQlrnD9A6EMog/ouD
g2N1ASr6UycE9s2nyVXM5W0WVahAhdMosrUCuzDlhGWv6mQqjTNZfl27/+LJd5sM
QEv0MQoTf/fzOI7kJdPsNGTibnnTuE99atLXpbNhsKj82BjYgAAeycutTw3Qy6CX
B6fpdWa1PE+BNSdOUbiAtxyV4XPcw84C6rvk7mZepYVBYPKUrupPM9OY1d/mCEE4
zDFv6o9UjiZabQmzKq7T8wKZgV+Pl14dpHcR+xd7tZP79duLdyIkxOe6Z2xbnqY5
NlOar2AfMNtes7GIkknx1p+2koRfqh+W1mPH02Vjgi09ru+kY27jzxHmswRlu67q
3r69rGouXBgIJQ1OnyOPXLKY/iglgkRIXGmAoU2R3Ii/X0lsQRYA5XdtiBodezQd
gCuJ1XfK6W4xWjZsONGmEhNN9RezUJKoMSeziEYEEBECAAYFAjwhG2AACgkQF47i
dPgWcsVClwCcDW2kRANOyFNhbBhDE4OHOPTAau4AnA/8TasNnyJLhAxeYFiQhpuI
fiRDiEYEEBECAAYFAjv9fJwACgkQXvSymrg2XlXuQgCeNou9DlCKpHZF7os0/9K3
xV/hva8AnjNqFXvpIZPylro1vJkzgHh3I4SkiEYEEBECAAYFAjxOdVEACgkQ2z94
QKW3O1wm8QCgx5i66wSVMIhs+Yvb0He27mJFW64Amwdkruw5+oN0NUm8HHHCAqFV
S4HitCJQZXRlIEZyaXRjaG1hbiA8cGV0ZWZARnJlZUJTRC5vcmc+iFcEExECABcF
AjwhGlEFCwcKAwQDFQMCAxYCAQIXgAAKCRDFyaCPdLkc/VorAKD3J94O/gJeEgYW
R+adK3SewjnB6QCfQK+70Io6Jlz3GmoS8+/c3o2hSUyIRgQQEQIABgUCPCEbYgAK
CRAXjuJ0+BZyxSERAJ4z//S1Bzb2OUl7ozm899AYR8W1LQCbBkDibniWmMf6Gwy7
fL9Flyks7yKIRgQQEQIABgUCO/18pgAKCRBe9LKauDZeVd66AJ44EAAjhGopDGym
iCGXJV0EvKo01QCgiGW4Tr5DZG2mY1aqCtBgl9UIz/qIRgQQEQIABgUCPE51VwAK
CRDbP3hApbc7XBD4AJ0Q7a37xCQKlc/m1uxQ62JxgvgHWgCfQFAKfveCwE3W/Fpy
+glLmP0/ZTe0IlBldGUgRnJpdGNobWFuIDxwZXRlZkBjc2gucml0LmVkdT6IVwQT
EQIAFwUCPCEaUQULBwoDBAMVAwIDFgIBAheAAAoJEMXJoI90uRz9gnoAoPosyzKa
niM7FvhR4xLDLaazqe/gAJ9eE0hFz6NDr5h9nRZ1qfU8BK6NM4hGBBARAgAGBQI8
IRtjAAoJEBeO4nT4FnLF08EAmwXdi9L+Yq3liDz2FYledwRRqO8ZAJ9hax4xk4ue
E2B8IogV9WHnnRSci4hGBBARAgAGBQI7/XymAAoJEF70spq4Nl5V7ucAn2K6WfjX
4vncJacQLGLVuh3tMCAWAJ430sgOCEmwY2bAdNfu/+WYe6YxwIhGBBARAgAGBQI8
TnVXAAoJENs/eECltztcBPoAn3zovCq0kHyFqm1x0QPDtlAkRG4gAJ4gCD4Le8Rq
43M+s91wrrTyNOutobkBDQQ6dgtUEAQA3sN519zCh7owShpNYRObr//qeAZnPcx1
69ZscNuVDy4EoKeyiLletkmnwNes1IDpq1RslCkHa8UOjFy0jby9cjePCJNo0b8Q
5qG/4iJf1020PT8AMxvL/H/SZH27ueF6PxkpSgDSsz/e92c7CeYpTu+n+xBYsLO9
GtNi5asTvKcAAwcEAL+HRDhWp0dDD4AxTa5evEl7GFy22y5sFVDHA9eukt70/d0d
nAi5d14uA/LbAIWyLCE6KC23MAJOgrQSc2PbOa2O45rx3dDw5RoqXDqyn9xPM304
hFzXgllOFOTYKMy6G4DBOv5KWKgVOx03XyIPqAVAObw3rHzewU0wXhD5Qk/QiEYE
GBECAAYFAjwhGssACgkQxcmgj3S5HP24HgCfdErc/JU9fVJIH/iLTbWo28vu5yMA
oIDNzwMAwpXoLZkEkk/dMUDTsFCy
=ZbG1
-----END PGP PUBLIC KEY BLOCK-----

C.3.32 Bill Fumerola

pub  1024D/7F868268 2000-12-07 Bill Fumerola (FreeBSD Developer) <billf@FreeBSD.org>
     Key fingerprint = 5B2D 908E 4C2B F253 DAEB  FC01 8436 B70B 7F86 8268
uid                            Bill Fumerola (Security Yahoo) <fumerola@yahoo-inc.com>
sub  1024g/43980DA9 2000-12-07
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1.0.6 (FreeBSD)
Comment: For info see http://www.gnupg.org

mQGhBDov9skRBADzrOg1JwL+kHv1dTePFR2lNrErbMe+WVeP1sdGuKcYTP15VQyJ
WV/6ZoUGsihAmFGcGyJuhcUJbvlvqRf4ZlwD80a1y33SNxxsqe8n5dm4Wy9FElL5
bjs4L0kGJlSL8KnYYUTQKEDBcTch3+GTjgS4NQBZWy4h0W6EWqgxr7CZYwCgpeB3
tnDcY3ELA5EP6Bx8wZN97zUEAJo972g6HplZyuyjqqTjdztXNgD+DlsyNpNkEfqs
AnZcr4aqEeyMNtGl8gPIc9JwPPSlX5OfmjCm3zWtEjwrHway6YPggXqX8efuY3lo
LxVfjRt6NLI0TuV0FhojgHuJYB9RsXQFZxbYH8A/j6jQHbiN3wTyYHtaAJJ/iELg
82oWA/dTeR0kjvjgrfB1MiFCH4AL77bZWuxSv1CvV09DlYtSxfLpyBm4OHvDZmOv
V6zT9COM2+f2/EMI15cNllYXB3WnwfYit9tZtEFBl1+OshqYBbcNkser1pBd5jP7
fDAkpDYGx5OgpqAS8hz4XLPZdS/HXSegodYKinU0p0Rzza6KtDdCaWxsIEZ1bWVy
b2xhIChTZWN1cml0eSBZYWhvbykgPGZ1bWVyb2xhQHlhaG9vLWluYy5jb20+iFcE
ExECABcFAjov9skFCwcKAwQDFQMCAxYCAQIXgAAKCRCENrcLf4aCaPIbAJ41RzBA
OuxYwZFUSbMbU5PHENe6ngCfcnVzDC5+lkssh628m3GTG0EjINS0NUJpbGwgRnVt
ZXJvbGEgKEZyZWVCU0QgRGV2ZWxvcGVyKSA8YmlsbGZARnJlZUJTRC5vcmc+iFcE
ExECABcFAjvw0YEFCwcKAwQDFQMCAxYCAQIXgAAKCRCENrcLf4aCaMcVAJ9brBw2
LPC2RcZpsm5S//dETM/qFwCgiuPpVVwBP7ibzn5xQVNAdB12xOa5AQ0EOi/2yxAE
AL/FYZQw0b7NrD04j6dxrp7wBjgd19ux4zQocXgXPlzpBZxQ4A4/icGOLnIU+vDu
ltbpf7aMTd/mJokJwx9pE82pOgxk6i42c5qKkwkmjhO2/4FFk8HXco2DJ9roRi0n
eBJztXskUY4cVavKdXNeJY2JUeBYvmrnREWG1W2/0ZMzAAMFA/4ytkv46phPokQe
s7yy67bEeHiydjvf3uM+v1z3xWoLw5ZU+8hLdFkESpZ7u+qA1mj3i7LNBZhfA5Bt
Cgl10v9DWX9cda2HlMjyyI9p3dfPlOcAh69PMwexJ1VYPtizK4ZkC8dNk0rTVPOf
SYftSsFGdDbUAq3ZokhjLkVRFY1LxYhGBBgRAgAGBQI6L/bLAAoJEIQ2twt/hoJo
ewUAnRRikiShfD9wCuyMazVJ9+FZLWiiAJ0YFgos24sNEFq5rA4I8UZU0LZ5Iw==
=y5FR
-----END PGP PUBLIC KEY BLOCK-----

C.3.33 Patrick S. Gardella

pub  1024R/527BC62B 1997-06-23 Patrick Gardella <patrick@windministries.org>
     Key fingerprint = 54 7C D6 81 B1 63 D2 5E  BD DD 58 4D A4 0E E4 E1
uid                            Patrick Gardella <patrick@freebsd.org>
uid                            patrick@freebsd.org
uid                            Patrick Gardella <patrick@intothewind.cx>

pub  1024D/C6AF4835 2000-01-19 Patrick Gardella <patrick@freebsd.org>
     Key fingerprint = 4B2D 3CFA 963B E310 847E  7D6C C072 B447 C6AF 4835
uid                            Patrick Gardella <patrick@windministries.org>
uid                            Patrick Gardella <patrick@intothewind.cx>
sub  2048g/DB3B83E7 2000-01-19

pub  1024R/EE2D47A9 1996-08-17 Patrick Gardella <patrick@freebsd.org>
     Key fingerprint = A6 DE 3C C0 33 CF 36 E6  D1 F5 BB E8 3C C4 67 50
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1.0.6 (FreeBSD)
Comment: For info see http://www.gnupg.org

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
Kt2KhXZ5jxlBX4l9Ea1ZxbUMxuJ3p9Tj
=iJ7F
-----END PGP PUBLIC KEY BLOCK-----

C.3.34 Sebastien Gioria

pub  1024D/7C8DA4F4 2002-02-09 Sebastien Gioria <eagle@freebsd-fr.org>
     Key fingerprint = 41F4 4885 7C23 6ED3 CC24  97AA 6DDD B426 7C8D A4F4
uid                            Sebastien Gioria <gioria@FreeBSD.ORG>
uid                            Sebastien Gioria <gioria@Francenet.fr>
uid                            Sebastien Gioria <gioria@fluxus.net>
sub  4096g/F147E4D3 2002-02-09
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1.0.6 (FreeBSD)
Comment: For info see http://www.gnupg.org

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
=U7Mx
-----END PGP PUBLIC KEY BLOCK-----

C.3.35 John-Mark Gurney

pub  1024R/3F9951F5 1997-02-11 John-Mark Gurney <johnmark@gladstone.uoregon.edu>
     Key fingerprint = B7 EC EF F8 AE ED A7 31  96 7A 22 B3 D8 56 36 F4
uid                            John-Mark Gurney <gurney_j@efn.org>
uid                            John-Mark Gurney <jmg@cs.uoregon.edu>
uid                            John-Mark Gurney <gurney_j@resnet.uoregon.edu>
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1.0.6 (FreeBSD)
Comment: For info see http://www.gnupg.org

mQCNAzL/8IwAAAEEANuX7fcIa0S5fVATYQCGwgBJo9DxRr0m/QjrP4dJh/JEIjmv
h37FMs9qsMPtyAZWlRSnbVFyQiz5ptFuL1irClW2UHzlLvd5s+pKMfIkJWDTnrvp
0jFebYQt0chZeLcKT9s5sSo9ua+fUumOfaWyubUZPIqmDYqy98Em7wI/mVH1AAUR
tCNKb2huLU1hcmsgR3VybmV5IDxndXJuZXlfakBlZm4ub3JnPokAlQMFEDMBDfTB
Ju8CP5lR9QEBmnsEALAS5dZyQXxsDAROz+yHizsbgV1Ok9vFwE5en7QnOGcSkQX9
pE7MzzlbpP63toF9zWLF75dbXE5X0yYLoB0pvNi1NXhXqA0YbDeAi1Ed6uBXbomW
MDdm0s+O0Y1NfuS0uKiFiJUDOjdBrgEbnmPZM/77dhr5UbmAtQUHFftaQfY6tDFK
b2huLU1hcmsgR3VybmV5IDxqb2hubWFya0BnbGFkc3RvbmUudW9yZWdvbi5lZHU+
iQCVAwUQMwF753W7bjh2o/exAQGjjwP+MKiFH9EfOGS7yr5NQ4+vWXuHe1N6fi9N
jJsFfzT/RCM/wo/dNG/xhTgdCoCWRt0gKkv3SLEPYGDPDtC3Nf7HV/66wOiYYnxD
3cmjgpLn5u/Ju0oS5xxNb5Ly8EZnfz967lIHjp/qhbZ9o7kO7Nkb7bUgozNqBaRy
9Yo81fVAtrOJAJUDBRAzARCXwSbvAj+ZUfUBAeUyBACKoIXfYBpsKqmmnTg944Tw
5t8lAFZ8qJz42Fjw+hswC6c+7b87imwaH3AjPnFmsA6f1ES7xDHG8RQleDtKsyik
gHc9Yos/neVqwfrr4zSV1PdNPPpG5uNT/jI1k1M3pH8kwYdKiwaIHQb5+sGUQsO1
ZoxCdzT7HJq4jJtBGVIRULQlSm9obi1NYXJrIEd1cm5leSA8am1nQGNzLnVvcmVn
b24uZWR1PokAlQMFEDMBEHfBJu8CP5lR9QEBak8D/2V+1pP6zA1dvhRLcO2pGldn
Q/dcVAAtZIZ7AUUap1pKXZF/Tt4gWKMtAHj01xUbwU1fmI6DF1p4AVjDqOxJDnoZ
RD9gv0RiZXdUesXL2UBNHc/7f+amAJgmXNrP/m70ejgzPluniR5hQm76fKYjkxV1
opRhhchTjhrFndoQ9nvQtC5Kb2huLU1hcmsgR3VybmV5IDxndXJuZXlfakByZXNu
ZXQudW9yZWdvbi5lZHU+iQCVAwUQMwEQWsEm7wI/mVH1AQHxMgP8D7VM+qUo0qGM
uFUKqxoQcDPVKt2W1X6wWTHdj9cxo3oW1tlLEZ24Y2v5v1pzonvseaTjsse134dP
a9qjcwXjs/zxXzHoQs3B9BZB2qXaR4T3YeuCjq2qIXGwsrrY5fkoch4OLg0/FOui
dmNbFjVQkIma2rIRPa8GhXZJtGl+UEk=
=bUtb
-----END PGP PUBLIC KEY BLOCK-----

C.3.36 Daniel Harris

pub  1024D/84D0D7E7 2001-01-15 Daniel Harris <dannyboy@worksforfood.com>
     Key fingerprint = 3C61 B8A1 3F09 D194 3259  7173 6C63 DA04 84D0 D7E7
uid                            Daniel Harris <dannyboy@freebsd.org>
uid                            Daniel Harris <dh@askdh.com>
uid                            Daniel Harris <dh@wordassault.com>
sub  1024g/9DF0231A 2001-01-15
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1.0.7 (FreeBSD)

mQGiBDpjbB4RBADW+4fkXvVjAZ0A1X4wgXJQ4Eyes1LH7sTexP/Zm7sg1D/R9zV5
w2kBwOhICRX/hxVL76YZv2MTNL/d3pV3ZW2yV3Z6H7Pq7s4oVn2q35owUwLQZfSI
SBTnBiVN7NqMZ/kzCCdWBwg/4G2FVNFwc7RyuOFQL3ly1PBtgbANbpCyfwCg3QXB
K6AtFaEP2MA+SWWHQD2dNxcEAI11cbOHbYU8asIxbqYYyPOMgPsaLlPiTh6JQOO0
2OiGxoQlmZvkhlWf8B9ahCeYoKgA1zPqdHA2C9YMvOV2LvN+/Qi0n3hpqkfM7lLC
QMJgm1KxIzccWY9Iz09GRlIFm2JPaCVLsKh1QPW50c3yO9TMSa6lXwiRgvxPz76C
JHniBACa25NHH3x8zx5KA0FgMM15Wc481777CFVsKazNay00G0HogSICZ5lHffdi
1O5u+qQHchVKL0Lbe1zhdbVHdSAbEqnKTqseVMQ6I1TVu4gO89B72aY1RxAnAYjh
PAb5W/RhZBSR5NDVZyANnqaGE7U7KMqn4/E0lC7w1TzoIZvDMrQkRGFuaWVsIEhh
cnJpcyA8ZGFubnlib3lAZnJlZWJzZC5vcmc+iFcEExECABcFAjpjbB4FCwcKAwQD
FQMCAxYCAQIXgAAKCRBsY9oEhNDX55peAJ9NKai2qEcFLxzC14qDz80zBGwP0ACf
YhsW5qhTw/Rck1Id2W1alUEXMre0KURhbmllbCBIYXJyaXMgPGRhbm55Ym95QHdv
cmtzZm9yZm9vZC5jb20+iFoEExECABoFCwcKAwQDFQMCAxYCAQIXgAIZAQUCOmOL
hgAKCRBsY9oEhNDX5wXyAKC6VLe3svRc+FgmmjPS/EWvi83sDACeOpmPRbViajOw
4MUhKA7hxnRlBeG0HERhbmllbCBIYXJyaXMgPGRoQGFza2RoLmNvbT6IXAQTEQIA
HAUCPSJfQAIbAwQLBwMCAxUCAwMWAgECHgECF4AACgkQbGPaBITQ1+dSxQCgsBwM
uDviakYEKswiv6zMHfYBBCEAnjMyu+oxjKOWOo+of2qmtQH2LNg9tCJEYW5pZWwg
SGFycmlzIDxkaEB3b3JkYXNzYXVsdC5jb20+iFwEExECABwFAj0iX2ACGwMECwcD
AgMVAgMDFgIBAh4BAheAAAoJEGxj2gSE0Nfn6bIAoJlPaQlqk4wbNGoscjigAp0R
B9ooAJ41JxSh9w2S16mFTGNKvVpjXw15BbQyRGFuaWVsIEhhcnJpcyA8ZGFubnli
b3lAZGFubnlib3kud29ya3Nmb3Jmb29kLmNvbT6ISQQwEQIACQUCPSJiFAIdIAAK
CRBsY9oEhNDX558OAJ9iOqCDUX4cdNMSZ1KBQg1gfTn1yACfZNL6BY+mYC+XV83L
7DXacstXHlSIVwQTEQIAFwUCOmOLtgULBwoDBAMVAwIDFgIBAheAAAoJEGxj2gSE
0NfnaM4An1YVu3iDtrG314UIuZoTw3zd9ucxAJ4yg3vWB6ceg06KuyaGTJSdZ1Oa
p7kBDQQ6Y2wkEAQA0RSR8vkmX33oyYl+LwlOmemSKbSQFZNImw5TDcRYX83fa1Z1
4oIgJSk1h5l2jx/+29chVR1nTNqPYlRQEDMxVby9rMq2RAnjorM6oDdtIQIBNJ63
vmUcUiORGnKhC0waajpmZibcxoUFk1KcLyfxOT0JTOLgsJfqdqUENIc6NqsAAwUE
ALaLYnBOoIr5Wm/KC7wRtS4gHeeOeskZyyoa3+AeBorDl0VvpgYwlNdAaP4xJrx+
CH6UYnxrMgCXG1l4dupkGXOCRPlAcM2ouEyDIGHRTVqHy40khZnWzN7xfZhKNcVd
FxeHqOG61ZrhcMboxZrdJC7hK+sYrbngeKRiDs4VRoOuiEYEGBECAAYFAjpjbCQA
CgkQbGPaBITQ1+foeACgme+2LKdFkytbn/JUhBqPYVAD8KQAnjP+IDVQ3PDEKRkv
AFGJ6i5SrWJ6
=j+GD
-----END PGP PUBLIC KEY BLOCK-----

C.3.37 John Hay

pub  2048R/A9275B93 2000-05-10 John Hay <jhay@icomtek.csir.co.za>
     Key fingerprint = E7 95 F4 B9 D4 A7 49 6A  83 B9 77 49 28 9E 37 70
uid                            John Hay <jhay@mikom.csir.co.za>
uid                            Thawte Freemail Member <jhay@mikom.csir.co.za>
uid                            John Hay <jhay@csir.co.za>
uid                            John Hay <jhay@FreeBSD.ORG>
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1.0.6 (FreeBSD)
Comment: For info see http://www.gnupg.org

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
=l5Xu
-----END PGP PUBLIC KEY BLOCK-----

C.3.38 Sheldon Hearn

pub  1024D/74A06ACD 2002-06-20 Sheldon Hearn <sheldonh@starjuice.net>
     Key fingerprint = 01A3 EF91 9C5A 3633 4E01  8085 A462 57F1 74A0 6ACD
sub  1536g/C42F8AC8 2002-06-20
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1.0.6 (FreeBSD)
Comment: For info see http://www.gnupg.org

mQGiBD0R0hQRBACPEDZc2XKdvIq9F4ofeq/EUB8ISFQ6kaVPcb5ingy5ND+0MUbz
K9U+q6Ik8d67KfHHvqGn7XTOXxGu2WS6rIa4ElFHtG/9lpgYtOFRZJxM8nv5+zCn
elu18skUNup1y3uIwvhNUY3OPSzVkHC+tUPWfW/8DqdJzud/l8sDFDRtBwCgtixB
FHJ2jRXInApVzwLcjpgVJq8D/ixzt0O/Zg2p62/qyAHac7M1sEc2QarCAGwRbuNw
jHRtglxQw/GT2NACWqy7lVHKd37ciCrXg9QrTjotJtMcoJbCitYvbQo2RHfEeIyN
yw7rffTQ4CpB51KxNhUWHcUfe6Jhx2hgHzehJg7hYnbtSv5hJcn2DXMSHHyHwBri
hpldBACI7iJxl2MtFUHBo3XW27WYDzTNTh2LUaMcIaowMW/+vIDds6EI71dCAjuU
Ai8DcNacMtE0xRdtNzDMS8vgYWBVLkHv2ENVdLfpxhM72iu4tmPKGF5AXK191dvJ
qPge41Z2/57191Xt+keYtuSQDtXwZfSu1uLOHBa0BBvmppBOtrQmU2hlbGRvbiBI
ZWFybiA8c2hlbGRvbmhAc3Rhcmp1aWNlLm5ldD6IVwQTEQIAFwUCPRHSFAULBwoD
BAMVAwIDFgIBAheAAAoJEKRiV/F0oGrNMRsAnAlWdC5LkmEF3hZjNAIA8gMxkfnZ
AJ4k6LXdmHMSSPbd48MbDYq67yzOG7kBjQQ9EdIrEAYAib54xuFqjHpvLxXmqFRl
qAgAD5XpavuJisxGjfm7aTVWIpR/OOVFYkW59YInHM7dDHL0Y7tQETeEKf9pj6kF
TMyWFoBjtdazqSmq2YXOvI00N27IKT9eqxJ/qR8QgIqBMNkraP9QKi60ASDIRUtl
OZSfokSbAKkZMTyS086CgWw0bCPXRCvQLHDjga3KCbht0AjrZFkGmi6r4+rXFnT6
D3JrNSQ0Hj2qFEixHtZvXTsqgsEkOEtoe5taMFSygM0jAAMFBf97Ip2a/kPkXNt0
p+2xmWIFEDim7J9Cwl5viTb1t8fOKx69hFDQ2BwPNDZd1HvlrYTpuJ23uTrDOZsw
IT/wVc/IQ9nn4+mkxOmq9iTHCBS99OXz4IsODT3W1sgzUfl+mdqJP8xfEnsyqy6G
ivOoR3QdZg7rxvOU98HhDQ1iJX3rCtLNFGisrovDF33oHMEE4oHvSMXeg65JXWiU
EpEpioINjrA3P+TL+fMv1tb4+wSUPqTWX34Gx4UfDKnMedxl6j2IRgQYEQIABgUC
PRHSKwAKCRCkYlfxdKBqzVtaAJ42mqzwmJCpk8fdsfkHUt5uGTN8sgCfdmDni1OD
NWQi1mhQOXZX9oGgyso=
=PTeT
-----END PGP PUBLIC KEY BLOCK-----

C.3.39 Mike Heffner

pub  1024D/CDECBF99 2001-02-02 Michael Heffner <mheffner@novacoxmail.com>
     Key fingerprint = AFAB CCEB 68C7 573F 5110  9285 1689 1942 CDEC BF99
uid                            Michael Heffner <mheffner@vt.edu>
uid                            Michael Heffner <mikeh@FreeBSD.org>
uid                            Michael Heffner <spock@techfour.net>
uid                            Michael Heffner (ACM sysadmin) <mheffner@acm.vt.edu>
sub  1024g/3FE83FB5 2001-02-02
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1.0.6 (FreeBSD)
Comment: For info see http://www.gnupg.org

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
2Q8=
=/joR
-----END PGP PUBLIC KEY BLOCK-----

C.3.40 Guy Helmer

pub  1024R/35F4ED2D 1997-01-26 Guy G. Helmer <ghelmer@freebsd.org>
     Key fingerprint = A2 59 4B 92 02 5B 9E B1  B9 4E 2E 03 29 D5 DC 3A
uid                            Guy G. Helmer <ghelmer@cs.iastate.edu>
uid                            Guy G. Helmer <ghelmer@palisadesys.com>
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1.0.6 (FreeBSD)
Comment: For info see http://www.gnupg.org

mQCNAzLrzf0AAAEEALuGJUgTVleE9HeqPAi+AqBDMMfa76kC63xx98Hqv1N9TlT3
jlWVShX7Da/9h9WgK98wkb7613Ur7dPl2qVcSns5w7MCustbtt4YEaQwXZ2jOEZf
snKt82+DYxZRyfUlY4h/8WA79R8BwTGd/l6g3kDoQuD/446BT8c0Yd819O0tAAUR
tCZHdXkgRy4gSGVsbWVyIDxnaGVsbWVyQGNzLmlhc3RhdGUuZWR1PokAlQMFEDLr
znbHNGHfNfTtLQEBxIUD/2Lk7Ds8Rt5ZPVNB2Xv2kzEByndv+r1FUDSDcWUn7MaG
HdgIqfkNespNzv8K7ORW+qrgIAtCRGXhc0Z1q1/Mb3kzC0g4UW5BuleZEur8Ys7t
lc13ZV94Wb/rVEnY5wh2s3mCmMeXVA9CAiNBzzI9O1RKVZrLLYJk62ysSoq1os+A
tCdHdXkgRy4gSGVsbWVyIDxnaGVsbWVyQHBhbGlzYWRlc3lzLmNvbT6JAJUDBRA7
8tH9xzRh3zX07S0BAdUDA/4poipXJFYG6r7+Hk32P5unYZt6dJZ4qSwsnc4+DVuk
krv5L1jC8Wg/Ojerk2hYTyArM7xQkw0tELOADL2KBUlHp+Ipz7UuO55n/9aOHnWr
YJLjT3+9eliYkPqJ4t7sHqlCeuyKc7HkoaaN1ErJTmLLy/Jfcx8BsyVsgihI9V1s
VLQjR3V5IEcuIEhlbG1lciA8Z2hlbG1lckBmcmVlYnNkLm9yZz6JAJUDBRA78tIj
xzRh3zX07S0BAXQ6A/4zKB/ROfSAUmVQGm0tH1IC4lZX1qV/PZ4z2KUWQPmXP3jr
jzYFdlAPaUNIwVqW8Mwj+p9njnL/Ltd3NzAjTP2I7bSzBtg4NcEBRNclOOnbCamX
B4mSGt07WgfT1QGCY8HyKXNhUBbqvPShfeH1OM7iyooLWU79V/1v8utB/mHxYw==
=nrvZ
-----END PGP PUBLIC KEY BLOCK-----

C.3.41 Maxime Henrion

pub  1024D/881D4806 2003-01-09 Maxime Henrion <mux@FreeBSD.org>
     Key fingerprint = 81F1 BE2D 12F1 184A 77E4  ACD0 5563 7614 881D 4806
sub  2048g/D0B510C0 2003-01-09
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1.2.1 (FreeBSD)

mQGiBD4dlrYRBADhXves+DDbhv8dD1LyC7e+RIASp8rEN0mJDVarhEy45KxRZcD2
hE9dLXZU/5hcdK7yfatneg5xGFiedFJ+u/HcsMkxeb60+RUcF6Ec5L8PJmCwIQl3
3xP7UmC203YufvyidQSayOk4LDyg5WVGEXiN5KuShJC+feAwvtAao5eHnwCg5CmE
y6rO8Bh/K2MQxP8CXCoLG80EAINd8twMsRIIqAxtVWeG0yudtgYdvhpbGrNKoq2b
cxmfunLAQmHim1jL5run1St3ZACyuP4brckPiBAOxVoRcIMOGPk04Lw3blKQ7u02
6aOKKlGvW2pF5/Wh6v/q7gzAucn1HJYcGK7Xc8IvfdIZJl/tTeCo0/smxND4EWhU
C94zA/0bvNhgntEwLF8x6UJnZXfQ8/LGl/NkSTyTMA1QqRrrik1oN4mYOAHE05Y4
Oija6MSgD8YDRcrxxr8Dwh4pqS/+FlEsV5y4A4OoYbPW5L6FAbEpKO86jbE3FK20
lX9Li5+woBWaTuLRcU2Tk69WLeOTdOrs+f50S1xWB4DJKBjmu7QgTWF4aW1lIEhl
bnJpb24gPG11eEBGcmVlQlNELm9yZz6IWQQTEQIAGQUCPh2WtgQLBwMCAxUCAwMW
AgECHgECF4AACgkQVWN2FIgdSAaZtQCcDxSj1KNFQXWXPl+U27Sl2/IbKEgAoNDq
Yn86zUh4NPJZJb3P174CFRK0uQINBD4dlxYQCADaMWMhYNWemjrdioJoZU3vYkup
IcQg422OZoxWYcUz6zKVHZuPdXSAFO+Edrt8QwvYrjhSiOSF9NNnFgNGMBGmqOg9
Kfk5rIKnENNQP8H8CZtzlDjJXVoMAeTfaeV9+ztHwWKk6XagjLApl9Fx42Quu4Po
JdvJNHhq5Bf299jecRsWmSo7DtpNnzGC2HFWRkGdkkNmpK7hFe9m3YsFuP3nCFps
RXCFMx9t2Bneh1eM+NqogjON+vyZzOUB32WY+x9Kz6Xf29auU1PSNYz+1LC7JAYk
f4CrFA6wexQHKe/nXwlik3/JeFSPAsp/VsmvaHOenZTOfmtBT4ruOwqn8DGzAAMF
B/4tHAo7/sAMgvkz0qHAxV1DjOjB5AQSs4phksYWYN1uaJq2//oD/jjifmmkhAq0
JLEeKDquvuNot9dtJ/75DF/XNa0Upt4Hq509Wm4o5NBN/CxRzMn6oU+K86S6RF1x
JidNNI+CsTfdkNnCn0x6OjRsG0j+CUbwRrs4CJ/7ZWkuMCclLBKoI+rAwd5YM4eI
noSrSZ4/2Uct7CyVm2aGIh5ofR75L7k92qZ/D5hN0wwKrL42bO8gJqPGPgsCtr9m
OcT2DtOxkS9ir2QRyD7SelKM4pmSbxvk8S/IzrNS7dvKiO0xQXsvf+sG9rZOJ2vF
i3in0uB9SeXAzsqNCqtEkSbeiEYEGBECAAYFAj4dlxYACgkQVWN2FIgdSAadQACg
z3dGbsy32PBhRn/t1lXp1120VrAAn04hxsFX0HEKt6sqAcpIuzdTVrEM
=8gWX
-----END PGP PUBLIC KEY BLOCK-----

C.3.42 Michael L. Hostbaek

pub  1024D/0F55F6BE 2001-08-07 Michael L. Hostbaek <mich@freebsdcluster.org>
     Key fingerprint = 4D62 9396 B19F 38D3 5C99  1663 7B0A 5212 0F55 F6BE
uid                            Michael L. Hostbaek <mich@freebsdcluster.dk>
uid                            Michael L. Hostbaek <mich@icommerce-france.com>
uid                            Micahel L. Hostbaek <mich@freebsd.dk>
uid                            Michael L. Hostbaek <mich@the-lab.org>
uid                            Michael L. Hostbaek <mich@freebsd.org>
sub  1024g/8BE4E30F 2001-08-07
-----BEGIN PGP PUBLIC KEY BLOCK-----

mQGiBDtvujkRBACVspBVp8gaHUZeh35hSQiKdKYiA5zd0Qez3eiRrWFIilZLB5HH
reTe+wFwBOMEsgwA7e4v5GWnsWySWVRe3okPQ+Nc3CTmF7JGlnHklhExFtQ4EGCq
Z2BCj+QfusUap4vArd+hOW4MS8bCnV8GvDJLdIMdbOBUI7RAl6+JRxQqYwCgz47A
a3bnV0/c9E9nuRek+XRQfDUD/1fsX2sK0w1fjLvBDcrhlPFUDj4P/G9QrjnWJbBl
RaDpYaSEklbb+g8TOVtPEqprtFPQvqB9kWS9IJfmd+WRSJYXBtTFPJaYAy7hlQi5
jw7pqIK934cMbJEIMKDfkScpKrC3qplRIUN8oRtpYONF9TnzfrA3RkLvG1Dk20kc
RIU8A/9uOfhXSgKgTqSZbW3QbWdE7VyVOBLANeWgHY3MOhh4qKsbM2v7SK2lSVu+
cY650DmZNJEpD7mE5wje7eFTvmrTbB1bygBrpxlithpNkqlFp/ePmU+sal3VTzJ2
SOpDkw6NaGTMercnJe+jWObfPMphEKL18zM/BFwOWg3ubGYlWLQsTWljaGFlbCBM
LiBIb3N0YmFlayA8bWljaEBmcmVlYnNkY2x1c3Rlci5kaz6IWQQTEQIAGQIXgAIe
AQQLBwMCAxUCAwMWAgEFAjtvujwACgkQewpSEg9V9r7TyQCgjH3eMZ0+irDBZ+eS
N4S9vV2eC5IAniLYcMk66do4xiru6g3Qt54B0beAiQCVAwUQO3JisgDy2QnruxtB
AQFYBwP9FMPDSv4DdSWaGkCXSeSLfyMsTflkVRa0gRljcqEQQ8iEfYKaum8eI8vE
Et2h+bMVe8q9PnCB9Fn++pukaH5wrggg3O5o+2gSh2Hoy0/Ter1E6gHiH8aWoV5V
4yB2J9hEffTrzzG0X4G77XVVWCiAqyp52gRMl6ftbOOXU8XDat+IRgQQEQIABgUC
O3MMugAKCRCjLHqb4LuvBA+BAJ9Zrf3OInzwdjeMthjZ6kYtSYysZACeK9vXzmNn
PcrKw/W/6M7egoZIeouIRgQTEQIABgUCPmxk0gAKCRDdEQhXRChuGuaeAKC9pThr
yviZ4bdM8X16xVvd8RDrZwCdHOPEdLM5xJrMyi52SnqVFukInMqIRgQTEQIABgUC
Pow66QAKCRAATVS4OT0kackyAJ9v60ShjVJHiu0CdRf/ylAid9w2yACeNrFJ5axk
lXLO1sqje+YW9goFCkK0LU1pY2hhZWwgTC4gSG9zdGJhZWsgPG1pY2hAZnJlZWJz
ZGNsdXN0ZXIub3JnPohfBBMRAgAfAhsDAh4BAheAAhkBBAsHAwIDFQIDAxYCAQUC
PW34AwAKCRB7ClISD1X2vi5YAJ4ueZ6kNzV3M8yZADEIk1dIxGgGuACeIbYVHm20
m5d9weh9XCs3mpOTzV6IRgQTEQIABgUCPmxk1QAKCRDdEQhXRChuGkMaAJ4ggn3x
rOrY4GLFl3X1u2HB0FjSWgCgmpQOyeTHDMYVZiEx5KnulXKwLQ2IRgQTEQIABgUC
Pow67QAKCRAATVS4OT0kacDpAJwPRftj6HdKuYeuMbRrREzlts/oJwCcCRx4r0Gj
sUIhk5/ImJOBGKYrf9u0L01pY2hhZWwgTC4gSG9zdGJhZWsgPG1pY2hAaWNvbW1l
cmNlLWZyYW5jZS5jb20+iFwEExECABwCGwMCHgECF4AECwcDAgMVAgMDFgIBBQI9
bfibAAoJEHsKUhIPVfa+cIIAn2NHuE79An0zOAe5Eb6U/wmZXAvSAKCv8K0wgLvl
NPjksWEx8t2G3e78uohGBBMRAgAGBQI+bGTVAAoJEN0RCFdEKG4aswcAoMBnOBII
HYdUEJ4WMT2sDzq7GHioAKDd912ew00eGfdnEwSlkRuhGYl6CohGBBMRAgAGBQI+
jDrtAAoJEABNVLg5PSRpNzIAn0T3AF1A70ENm7gxLzjgQpdfEyyMAJ4/H3SBcNQS
oQQnxAdrSmzCEBtllrQlTWljYWhlbCBMLiBIb3N0YmFlayA8bWljaEBmcmVlYnNk
LmRrPohcBBMRAgAcAhsDAh4BAheABAsHAwIDFQIDAxYCAQUCPW34sgAKCRB7ClIS
D1X2vm4FAKCyQJB4hpYGOeZ39eeHRkpfnXFPFQCgtyV3qtUcD7h7ZXPcVDdPvd3a
vjKIRgQTEQIABgUCPmxk1gAKCRDdEQhXRChuGurhAKCqdGFrZzRWHmH/3jnH1yXt
NJjNlgCeNtY28lujuwijpNDERkqZ2e+awduIRgQTEQIABgUCPow67AAKCRAATVS4
OT0kaX15AJ9NxqQYM/8ESbK4QDoYMzlpFvu9LQCfZMmINbzh4fFzEdAc/PKvPYUH
T8+0Jk1pY2hhZWwgTC4gSG9zdGJhZWsgPG1pY2hAdGhlLWxhYi5vcmc+iFwEExEC
ABwCGwMCHgECF4AECwcDAgMVAgMDFgIBBQI9b0hiAAoJEHsKUhIPVfa+sZkAoIlI
oBDtL4BAInfH1oiTVbWNHQhDAJwPeBUXsa2F3cU3+Fksg7n6sDIYYYhGBBMRAgAG
BQI+bGTWAAoJEN0RCFdEKG4aTxcAmwa2jsIaacyRb31elEKZdSWMfZbSAKCy+LiA
AemcmXzGUnvSM7/M4w1J04hGBBMRAgAGBQI+jDrtAAoJEABNVLg5PSRpfLEAn05R
33B7SPNsIHEPt+cEINb+JexQAJ97c3MUuDW8FHq8GnY+AM26YzHa+rQmTWljaGFl
bCBMLiBIb3N0YmFlayA8bWljaEBmcmVlYnNkLm9yZz6IXAQTEQIAHAIbAwIeAQIX
gAQLBwMCAxUCAwMWAgEFAj63lLQACgkQewpSEg9V9r4BqQCfdJrsDo9ero5u9yeO
WPMyO6lNCL8Anj+GTaudrlrYhV87cWvWp3TF3JJKuQENBDtvujsQBACFt7tjPWjH
lYZMEml5R+o7eZTrUUw0tAtcMcwV86r5xmvllPhsjar/LMAY+VqLPD7Z/KwTwrRf
df236sPshB/v5BoRu4RCDW0yy6Q5xOLCj0LlOarUfTYUMhYVfv2FNKNm5FSk9/3N
EkwNi/PxGAV5KNIxQXDND4YskIjGiJUZMwADBQP+LVrKJYCmOM3iq3qfcuONwpBv
hJb8Z7AWywUyl3H+Gy5/PF0nWzN9nQNHcb5aqiszY4tvdqAUW/ttIRtKR09BXDaA
kct55YywRf+mM5EgKxWQtjPW7THXzsPrSCJ9V+lYMH3wHw9+qs34fA1I2m0P2QGw
6b1ZcESbH58wM4x7ZQOIRgQYEQIABgUCO2+6OwAKCRB7ClISD1X2vgovAJ4xjmcd
ulAo4ML4T8TJ+alYnQO5zgCfXsb8wtA8I0ngWwOQxrnRRE7+Smw=
=Tcpo
-----END PGP PUBLIC KEY BLOCK-----

C.3.43 Howard F. Hu

pub  1024D/4E9BCA59 2003-09-01 Foxfair Hu <foxfair@FreeBSD.org>
     Key fingerprint = 280C A846 CA1B CAC9 DDCF  F4CB D553 4BD5 4E9B CA59
sub  1024g/3356D8C1 2003-09-01 [expires: 2004-02-28]
-----BEGIN PGP PUBLIC KEY BLOCK-----

mQGiBD9TDBwRBACs0PcLGuginQVidy1QScHuKS9G7gd8smYI2FcSsk/AkBhqIkWv
hieu+iXlpxyZYCDDPKPhieDLkTHc9hYOGG7oTJhBMXUrUqBIk+sqeeUAl/eh0grX
wUU2khj8EkYC1f6p9AKu25zoyXHxjnKulMhrZRIItg7jVJLaFQn2A9KCkwCgyVeF
jCegTvZWikBuoXmDI/K3OuUD/19Za3DHV+H0dmfAG7JdVwTW7mJ3nCWJFvlpTSSU
9Di4VCVj8kUGmo/kRgpZ6gwlCaPmwh/wWiT/vHVQqdd+EH/k/ITs+zWrPOnWCxLY
zV0BEKtW4kdaP5H9ttNh3Wj1GRpyxh/FrMP7zJfdgze2WoRY57j+H9Kuw2s/42RU
zYDAA/9wIriNXAj6pFB+J2sCqYXIMNDNDQh6lYFNFgTS/WPYJoA8PWY62oFc0V6n
ES8GOXjyEya428vedVy/G9kj7cB/IiTTy8Hj7JjhUk/rSIPXMMtNyvM6vQ++f1IV
1qSzR9sijpmpk/M2RusUQwBP131PnCzSCmAZB8gvcNSlbA9gnrQgRm94ZmFpciBI
dSA8Zm94ZmFpckBGcmVlQlNELm9yZz6IZAQTEQIAJAUCP1MMHAIbAwUJAO1OAAYL
CQgHAwIDFQIDAxYCAQIeAQIXgAAKCRDVU0vVTpvKWeZ+AJ0WEAehp+jufcbpKUxs
P+DnMXVmDQCfVWsK9Vv67evXLYZW6AOcNFv/Z3W5AQ0EP1MMHxAEAP6wR7DLVEQM
9BbJyp1lVbPGaJLVf5PNICB9xzv9Aq8BkSwYAO+Edy9oAJMG5hFWvwPLNTEVTF40
HJZKQt7s3keZqpq7DrzXOwj7aix9dtYmSnclTJt4VIg3mlpws0/n4MQA7POmEIXw
Au/0f8wHwn11GFnAORjtIq39xI2HgLPHAAMFA/9oPh7GHOgXWJdHjzv3EQACxHLc
IJqiI814TgCP2ZaaOoQzNZg6MN5nbMVbwmufaL605UYWmDYUrC26pTwlGz+Wpt51
hSUzdRCXamoZJXa0DOK4soqTM+cpajrv2EiGuNAIQ+TUyqKmgvqXyplvy9sGmgJ5
7k0XvvaNHzlqLRl0aYhPBBgRAgAPBQI/UwwfAhsMBQkA7U4AAAoJENVTS9VOm8pZ
ldgAoKwfWpC/Tb9nRecHz3IHsBoPsAZnAJ4i99qxrYRvYkUWE7m6dHMTuywsRQ==
=Zz7u
-----END PGP PUBLIC KEY BLOCK-----

C.3.44 Jordan K. Hubbard

pub  1024R/8E542D5D 1996-04-04 Jordan K. Hubbard <jkh@FreeBSD.org>
     Key fingerprint = 3C F2 27 7E 4A 6C 09 0A  4B C9 47 CD 4F 4D 0B 20
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1.0.6 (FreeBSD)
Comment: For info see http://www.gnupg.org

mQCNAzFjX0IAAAEEAML+nm9/kDNPp43ZUZGjYkm2QLtoC1Wxr8JulZXqk7qmhYcQ
jvX+fyoriJ6/7ZlnLe2oG5j9tZOnRLPvMaz0g9CpW6Dz3nkXrNPkmOFV9B8D94Mk
tyFeRJFqnkCuqBj6D+H8FtBwEeeTecSh2tJ0bZZTXnAMhxeOdvUVW/uOVC1dAAUR
tCNKb3JkYW4gSy4gSHViYmFyZCA8amtoQEZyZWVCU0Qub3JnPog/AwUQND7kZgis
sbaj1yqUEQIhvACeJ58983s/0jjThuj6WeTP6hLZNHgAn0o2KINvhw+Oc8uQk5m2
aTiVgVQxiQEVAwUQNcJNdAyPjrKngh89AQHA7wgAg3QnT0BcF/zp0VRMUZwAysRC
o4Xkgv4oaisCPO5jERGEp8NlXuMD6wJCrGRZ9xVwTbSRXJVirNkiSKj1rnNc/pPA
DbjsmQ+3nhLU+YwNgc2VEhiVpeU2iOL7ircc/YN8epdFPbzn2timb98b+/qlaSiz
m+g8pxnY4USn1b4CnzyirD7mvHhV61k0mrUSmaKzgg2Ppeo2qPzn4w44hgT5/jjm
iEMzoH8zFrN3pwcUYYhH5rNWNnqUIMwuPOEHn4Wp+sMti4yOqQxNHnP0Mv6mxS8+
UKRhtDXU0Ra0SaIhaNRw0k0YLEbO/lteTRc+7cAPBs+QUTa6xbVxIzsBAWLC7IkA
lQMFEDF8ldoff6kIA1j8vQEBDH4D/0Zm0oNlpXrAE1EOFrmp43HURHbij8n0Gra1
w9sbfo4PV+/HU8ojTdWLy6r0+prH7NODCkgtIQNpqLuqM8PF2pPtUJj9HwTmSqfa
T/LMztfPA6PQcsyT7xxdXl0+4xTDl1avGSJfYsI8XCAy85cTs+PQwuyzugE/iykJ
O1Bnj/paiD8DBRA0FhC0XatM0mFMec0RAgaSAJ4kHkYXQO/74W5m/7ZvQa3CPR8E
/QCgpHafK/S6PWQsSOChmVjwrZDVP8qJAJUDBRAxe+Q9a1pnjYGyp3kBAV7XA/oC
SL/Cc2USpQ2ckwkGpyvIkYBPszIcabSNJAzm2hsU9Qa6WOPxD8olDddBuJNiW/gz
nPC4NsQ0N8Zr4IqRX/TTDVf04WhLmd8AN9SOrVv2q0BKgU6fLuk979tJutrewH6P
R2qBOjAaR0FJNk4pcYAHeT+e7KaKy96YFvWKIyDvc4hGBBARAgAGBQI1f/BdAAoJ
ELwCvAMsr1lwqUEAnjOz1VWwJeI2QZMNEHO8RLURWHSYAKDqG+S3NzCeiKM3RRzc
FubwdsfYLIhGBBARAgAGBQI5ZAxAAAoJEMN1Z4b84RmYUt4AoOtidEj2yIZubvvT
kB+moQ1+ZscyAJ9dhz4GLNev7zNNfdAKi8JqoqfMlokAlQMFEDF75Qb1FVv7jlQt
XQEBdn0D/0X2Auka6RU2R46NqrFB0kZNL5rGH8BuTRz+cqEATLGkCXknJDeJ9iTo
EeE++VOL0utmhcYDyyT95Th5FNlXO8YQLgb7Gxq+UT/HOS7zznlBMs+mQK6dSlB6
7XDNoitRQTpmOHTmKYVsljJA4GBMWm6pawKuxSmX7aavwgYjEbmsiEYEEBECAAYF
AjmtSQAACgkQLKRaTx+AVKjiTQCg9FfHlNeMts2GcXWplPQya7GEQtMAn0nrzupn
fRNx6+Gi0Km+WSlUQkMF
=ZyVN
-----END PGP PUBLIC KEY BLOCK-----

C.3.45 Trevor Johnson

pub  1024D/3A3EA137 2000-04-20 Trevor Johnson <trevor@jpj.net>
     Key fingerprint = 7ED1 5A92 76C1 FFCB E5E3  A998 F037 5A0B 3A3E A137
sub  1024g/46C24F1E 2000-04-20
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1.0.6 (FreeBSD)
Comment: For info see http://www.gnupg.org

mQGiBDj+agARBAC1AfvgGQEVdLwS0dirwaN+pDDWWiaSWBNRNo4T4KKG2vyhhnUi
f2PcjPx8rYLvbokJFltoTWos3lS8hD8PZGBDlImOPzffdm/GYEmr1mE8fQvzjdKD
iOTqQi5IYYhLZIMmUpBTK7XN2zrM8VrkgCpb5TYtBrQUPheWs/SZ31EvLwCglUPA
T54Joolfvk0Y8I6dSGYctpUD/3teZiYwem99CE3b1tsqavQ1MUfjwSPZQq8wjVe8
GZUtwaeExugAxNjXIJeXiaCij7S6JSTS0ytyxZ5/O1QFmBhuD/7zjNFD8yB8nu8x
slma7mVhMuhqkwU06hTkp6MNNJ7kRItoVETtLqR5mW+0UUSZyePQFIH9U7TKPG3W
vYMIA/9btsMQD/7QA9p/m5OP4sfdVdNCZ32tJ534bMjDYyf/P8k7QzvDWU8f7lbk
3vX5pSmHplws0PwSZITmRarMdEH9ucP+24m06MQ7YmDYyLlUCestT2gAxnB5/X1h
fJnmdCLi/Vt19WrVM79ebddbCqCaoz0xv+1qOQmPue/vKXIH87QfVHJldm9yIEpv
aG5zb24gPHRyZXZvckBqcGoubmV0PohWBBMRAgAWBQI4/moABAsKBAMDFQMCAxYC
AQIXgAAKCRDwN1oLOj6hN4YuAJwOTOURcLpgAx4HT43jNxDYCsT7DACdFdGCwsi4
w5ZiCeoizmoBMFvYTa65AQ0EOP5qIhAEAMAerdyvcs7DOxpsli24gkKJxCwHSq9U
23k283XpZHOp/0eS6WEJMHMyQ7BRrx3X6mkSgBEnHdO6MetBQjOHdjSb8ycotrJa
H9eMkZ/Iky6dbiWpPLI4ytS4Q8Z4oEGjUTm7pJiE/pgmaCX/kv0WMs/35En+42sY
VoVU9bDI+X+3AAMFA/435RbM6ywO/kL8D3lhwINGEIqmxWpJDlXPPJf2pLiWZZVK
MLGkHOTe2kUdd+E6WcoRZdGblOKxLACrlKpJa91aw1ftQT6rt0k8GDCGLT/33FWx
2IRSf5sHmz8IOm6L8TcZU31hdWqpDLmiIj+IjUCx8+eAUjZcVRoj6BYnWc1Z64hG
BBgRAgAGBQI4/moiAAoJEPA3Wgs6PqE3PKYAnikfYo//UA7/jrDuTXzqPmi/Un5f
AKCFsfcXDbLGfWaAqe2YzeDR2Z55/A==
=N4HT
-----END PGP PUBLIC KEY BLOCK-----

C.3.46 Poul-Henning Kamp

pub  1024R/0358FCBD 1995-08-01 Poul-Henning Kamp <phk@FreeBSD.org>
     Key fingerprint = A3 F3 88 28 2F 9B 99 A2  49 F4 E2 FA 5A 78 8B 3E
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1.0.6 (FreeBSD)
Comment: For info see http://www.gnupg.org

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
=GwRf
-----END PGP PUBLIC KEY BLOCK-----

C.3.47 Josef Karthauser

pub  1024D/E6B15016 2000-10-19 Josef Karthauser <joe@FreeBSD.org>
     Key fingerprint = 7266 8EAF 82C2 D439 5642  AC26 5D52 1C8C E6B1 5016
uid                            Josef Karthauser <joe@tao.org.uk>
uid                            Josef Karthauser <joe@uk.FreeBSD.org>
uid                            [revoked] Josef Karthauser <josef@bsdi.com>
uid                            [revoked] Josef Karthauser <joe@pavilion.net>
sub  2048g/1178B692 2000-10-19
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1.0.6 (FreeBSD)
Comment: For info see http://www.gnupg.org

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
p5J1gj4xWykgTuA=
=U6zf
-----END PGP PUBLIC KEY BLOCK-----

C.3.48 Kris Kennaway

pub  1024D/68E840A5 2000-01-14 Kris Kennaway <kris@citusc.usc.edu>
     Key fingerprint = E65D 0E7D 7E16 B212 1BD6  39EE 5ABC B405 68E8 40A5
uid                            Kris Kennaway <kris@FreeBSD.org>
uid                            Kris Kennaway <kris@obsecurity.org>
sub  2048g/03A41C45 2000-01-14 [expires: 2006-01-14]
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1.0.6 (FreeBSD)
Comment: For info see http://www.gnupg.org

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
=nTL1
-----END PGP PUBLIC KEY BLOCK-----

C.3.49 Giorgos Keramidas

pub  1024D/318603B6 2001-09-21 Giorgos Keramidas <keramida@FreeBSD.org>
     Key fingerprint = C1EB 0653 DB8B A557 3829  00F9 D60F 941A 3186 03B6
uid                            Giorgos Keramidas <charon@labs.gr>
uid                            Giorgos Keramidas <keramida@ceid.upatras.gr>
uid                            Giorgos Keramidas <keramida@hellug.gr>
uid                            Giorgos Keramidas <keramida@linux.gr>
sub  1024g/50FDBAD1 2001-09-21
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1.2.1 (FreeBSD)

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
=AAq1
-----END PGP PUBLIC KEY BLOCK-----

C.3.50 Max Khon

pub  1024D/414420F4 2003-04-29 Max Khon <fjoe@freebsd.org>
     Key fingerprint = CE1F 29CA A6BF 2F26 13E8  1B61 62AE 6B8F 4144 20F4
uid                            Max Khon <fjoe@iclub.nsu.ru>
sub  1024g/6585039B 2003-04-29
-----BEGIN PGP PUBLIC KEY BLOCK-----

mQGiBD6urdgRBADQpkTC4vQZ0QvJaenfB5vMGNzpxq3shsQD5C/ExNtZ2PTrPe8A
GAcsNUmZD2O2d0r7VSDmPWQ2zDB8bE+gak1pEmooOZ+lb9t+1UwtkzDWK5MEgbRj
8dlNEagiWZ70jwbm+q8P09LMmjB2ez3OFpDzROjvA0/rU7FMWlo893aqxwCg+0P1
d6tf6xfiE0Dgz0h7aoOBNhUEAIds+i+l14zzp5Dg8nVcrp8GhsDhGUERkpmnu4Ks
iXRAbgnhv7XD1qD4EKagITMXmHQ1A6IXVqGjKuEPW3otOEhOMkfOrvI9TCcp4s7s
6d4eHt0wgjptmWF4pV8KCjj6hAkakFuli/ZjVMNiGAb3cXVocw/Q847Df6jNI5vp
OfPtA/9kGOoNIssPPa1Ni0k5MPAXB6jm658pmQShlHv1GCG+tbbzqawvimwcal31
m20DwVc/ocRQFf0/2Rqx0h9GfU/QtB+uq2qk6HTEvDfzGv7SRpPwx43fscF3Sn8N
K9VXs4Xtbrs5OYGJAMFOWg5SHd9jddTnViNtJQPGD6Bd12BB1bQcTWF4IEtob24g
PGZqb2VAaWNsdWIubnN1LnJ1PohXBBMRAgAXBQI+rq3YBQsHCgMEAxUDAgMWAgEC
F4AACgkQYq5rj0FEIPTqigCg2Qe8X9Qw88N7mk9llaZqs+3A+FkAn0Hy5JfEudVm
/3rXsNKkDf95Z9cmtBtNYXggS2hvbiA8ZmpvZUBmcmVlYnNkLm9yZz6IVwQTEQIA
FwUCPq6uzAULBwoDBAMVAwIDFgIBAheAAAoJEGKua49BRCD02zMAmgLFdtcfQwJ3
ctRFpJf8dHyClNQZAKDzqyItbtqEsWQGgN3QsG9+dpsbmrkBDQQ+rq4AEAQAyLyK
nyVL7VVb7oJh3n8H6CMXcBy/5OV4bATxxCJLQIP/eJkOWv8H+feYnv8Z1LpMI6CT
qhtVpobIpejR1CA/jo0NStQ5phhejvg08K+wgLMPFEOCCI/RUdHjNGHW4CXmhy6G
Pm1PPwBiIJGG2AvZie+7NdYjnyd7Q77lE/bFQV8ABRcD/2B36PEMQJu2HpivP/hU
15sVnYim3phBpGeYTV4e8PLhx1TFDgxnplBkCrEB24hqIFge5zjDVvJyE6t4Zlkz
IilsEanYbzBUkO/3qYCnwrUefxLxmzMx3tkNVK9W7Z22j3H6Dtvcxb17kMuJNHoV
KIufCJXylZFXAp7t03T3uo2miEYEGBECAAYFAj6urgAACgkQYq5rj0FEIPSc0QCg
3Jjbq8a/pI2C+MXDMrW1sC/PhkQAn3vNQqLa/nntV0b3V4lWRI3wk3k+
=AcmI
-----END PGP PUBLIC KEY BLOCK-----

C.3.51 Andreas Klemm

pub  1024D/6C6F6CBA 2001-01-06 Andreas Klemm <andreas.klemm@eu.didata.com>
     Key fingerprint = F028 D51A 0D42 DD67 4109  19A3 777A 3E94 6C6F 6CBA
uid                            Andreas Klemm <andreas@klemm.gtn.com>
uid                            Andreas Klemm <andreas@FreeBSD.org>
uid                            Andreas Klemm <andreas@apsfilter.org>
sub  2048g/FE23F866 2001-01-06
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1.0.6 (FreeBSD)
Comment: For info see http://www.gnupg.org

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
7A==
=E/l3
-----END PGP PUBLIC KEY BLOCK-----

C.3.52 Sergei Kolobov

pub  1024D/3BA53401 2003-10-10 Sergei Kolobov <sergei@FreeBSD.org>
     Key fingerprint = A2F4 5F34 0586 CC9C 493A  347C 14EC 6E69 3BA5 3401
uid                            Sergei Kolobov <sergei@kolobov.com>
sub  2048g/F8243671 2003-10-10
-----BEGIN PGP PUBLIC KEY BLOCK-----

mQGiBD+GP80RBACjmIRFKqJ337zOjW51eExucWRny0pu5fuGaxuJmGSbKaJRAORU
1jx9i/Cxcw7iwrnbR5xeyjWLDb7FIAemPltBItt0tE9H4pQXgP8d8VL3eehguMda
o0yfP7WUm3U9uriJEJ8141Yql5IR0e8isQa+YsYbkd2RmDdCMDdC3W0Q9wCgsquv
jc1gvAh7ypvhk8VLhflAeZcD/jQclE6S2zLZ1DSP2Q5mmuMS2ouRV6Z+fbWKF9XF
TSxdLevWcXmPqvsXFT75cz8pcBIw4c/wVd8OsPU2fd+1LZCFdms1PqLjhUfXgVbP
Q1Pl8zCAyriSnR2+BDwUMGzEgidkTjmjlbwhGzPsSJ8rv4i18xYs/JbmkeAV/ZBA
e6jrA/wMU3ho5aIJ69KxZb3bmPVHYrqL8Q3n51uYausLxdHDMxVvjL06VAGWbF/h
TdiFJ1ngMKfcfzI5/awpKwb9FPbERuNvmT10MDKumFW3xSAJMRzxh7O61u8N7dmc
xLdirICQMRN2jPo3v8T2ANsdydVTn89nqdpg4Bo9Rsz/Fdnrm7QjU2VyZ2VpIEtv
bG9ib3YgPHNlcmdlaUBrb2xvYm92LmNvbT6IXgQTEQIAHgUCP4Y/zQIbAwYLCQgH
AwIDFQIDAxYCAQIeAQIXgAAKCRAU7G5pO6U0ASlRAJ4mnVHx0rA5dhw0scFGOddP
cH/w9wCdG6HPWlDpXFB5nkpQalMnGzLAkka0I1NlcmdlaSBLb2xvYm92IDxzZXJn
ZWlARnJlZUJTRC5vcmc+iF4EExECAB4FAj+VJGgCGwMGCwkIBwMCAxUCAwMWAgEC
HgECF4AACgkQFOxuaTulNAHJ7wCfbcMzZiTmwuTD7wLTxvzC35OQE1YAn3et7KAt
aLZuVXYIDROr33RIlfcUuQINBD+GQA4QCACIrLJbs3SkUJpuvYC1N/iykFYGHKPM
L+XCCK3A4HL6f+GyCpvajz62cjUfuXv/pkLjcYANnqKKPJu6Bj2rFmOG785R/RPD
o2dl+zlZ0fggQAv8zZqIP2KyQRSVa44Pxc/G1V5odcg/QOcKU+FZrkRXoz8SqfDU
OEfarQP687+DU+Th0Nwn5M20+0ml7yw0/y9DtggWXzlWyIdYfhU+8HckvzgXnUFA
tPdfDUzUxEjvVBUwZ5iHtUlId6sHiiTCS/fbnRzwJA1Pu1E52B2AfsLxFrwV5cRC
ASfi7IGhZazGCctqZi4hbWQCB/+ipEVGct+bD9BpW9yS/JiMAxcwE0ubAAMFB/9F
k6mZUzBbxQkSbXP4w1VSxf2m/lIV9v9M0LCMwjmcsJzsdLUG/i3Zo+hAjT+GznMU
DVzPHq55LiNs2MKC8WKHXgXFCB2uoZvlGu88I2JjucoeibtC7zbKmVOntuY55zTk
uiGkGRawIIKC6oqVFV0EGXxrcJ6v3/0vgBQSva08reETZaUFe3ivt0rU0NSbhVJ0
1WiPXk9wFY0ccemUVmdcX4hhC0yyBB0px4qbEBY3+mtHpFVh/r24GXvWXkbLowGd
nmKeigX/tlRyYgPHLM2goUHUYe0erbKp2fyeQhockLOWY0DBFcFRK2kSx9HYdtcI
N45tvtkBza2O8C7uCtwgiEkEGBECAAkFAj+GQA4CGwwACgkQFOxuaTulNAGwbwCe
P3RXUuqmNGYCM0IXPlop9XLZIcQAn1B9zRfHFJm7tgMI0A6Avybs7V8i
=EDjf
-----END PGP PUBLIC KEY BLOCK-----

C.3.53 Maxim Konovalov

pub  1024D/2C172083 2002-05-21 Maxim Konovalov <maxim@FreeBSD.org>
     Key fingerprint = 6550 6C02 EFC2 50F1 B7A3  D694 ECF0 E90B 2C17 2083
uid                            Maxim Konovalov <maxim@macomnet.ru>
sub  1024g/F305DDCA 2002-05-21
-----BEGIN PGP PUBLIC KEY BLOCK-----

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
=WWB9
-----END PGP PUBLIC KEY BLOCK-----

C.3.54 Joseph Koshy

pub  1024D/D93798B6 2001-12-21 Joseph Koshy (FreeBSD) <jkoshy@freebsd.org>
     Key fingerprint = 0DE3 62F3 EF24 939F 62AA  2E3D ABB8 6ED3 D937 98B6
sub  1024g/43FD68E9 2001-12-21
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1.0.6 (FreeBSD)
Comment: For info see http://www.gnupg.org

mQGiBDwi3FcRBADkiWSSJSOX38CIPgbUnnDQ8S79eZ0zQYnYn5aeRMi7w0B4SnQP
1DcFZ/EHNtQWJTCaQBWQZZWvL1ZjdK284YrpSKs7gfoV5BufcFqKatewWZUfsUad
FEKTXLXlZa55151UtFy9erkA22VWHmqkauDFYl4DiOtaUWCX1Gg8xCvB3wCg0sbC
/VtANEu2XbxUp5pGmReNn50EAM4vLWfZk3T2woHN0VBOwEk0BM216zfJQGLFUFqT
nLKezO/QqoCCcVpH7rwV0V6NI1w6YOSx14CU+s83iyyO0KlRypoptWKBoA+cjs/y
3Iy05K147YfWUhgkKcyw/Qwx8wCDaetG+qZCX4nY0EByezFe504uDkcxk5BrqBX8
E6kzA/9vSG+J4aejKRw9z7Ku5cLV9ygXCksu325uY2t+J6b+48cT8eFMOpgUHyNV
m5ypOL31KYRPkOzK+iiDoTPODh4Zg8YZLsgWdTrC0ZQW2nWPNd3Zv+tLAmiwVjIV
x4XqtFXh4nhI2eM/PXhdN37R48OKB0DmrvdH819/2+9upNvO/bQrSm9zZXBoIEtv
c2h5IChGcmVlQlNEKSA8amtvc2h5QGZyZWVic2Qub3JnPohXBBMRAgAXBQI8IuKv
BQsHCgMEAxUDAgMWAgECF4AACgkQq7hu09k3mLaWwQCbBEeFWt8z4HlnAys0FYB8
/U63eqkAnjKz2Lxj14N8QYtbtFThZRB5fq5cuQENBDwi3GIQBAC79Y5tcPi18bZd
REXZmDOnLc0gHD9y6PHgR92BUCWQuafcxfQqqY2ESF/JQ0dFfBEkCAmYU2YkPZA5
A7skmv9zHun/bXAP02hrvMU1Gt0ZHIzDV0EaO+uxY8eSKg4JuxZzpgzWCIxI/6uh
ZhOuEF/uql7IDKMQcOfsvVrF8cZfNwAECwP/UvxNG/RUOlOHdRo3hY3H5l7zmaCi
AwUU6Z+LxDn+fwERX7wL5rasafi1r7/9VvGADfelpxKR0kZM1eKYPtri1zS6Zm5a
CC+QVyyoTcb+x0mWForq6FxLDf7+l/O0TuEG7VOH4RgLaT2N33yoScEvxdB/Qo4w
KnT39F7lYjbzBvGIRgQYEQIABgUCPCLcYgAKCRCruG7T2TeYth30AKCzp2KXBqsa
N6wOyM+tHQ4DKNMasgCglJCipoxpnnvCsGiZJv9AgNQFDGM=
=a9D2
-----END PGP PUBLIC KEY BLOCK-----

C.3.55 Hideyuki KURASHINA

pub  1024D/439ADC57 2002-03-22 Hideyuki KURASHINA <rushani@bl.mmtr.or.jp>
     Key fingerprint = A052 6F98 6146 6FE3 91E2  DA6B F2FA 2088 439A DC57
uid                            Hideyuki KURASHINA <rushani@FreeBSD.org>
uid                            Hideyuki KURASHINA <rushani@jp.FreeBSD.org>
sub  1024g/64764D16 2002-03-22
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1.2.1 (FreeBSD)

mQGiBDybt48RBAC/KCE5CLVZsYvpmgrbum7JHgIgnX39EPMQmL9Y3LmYy6Iwh+OF
iIjIqW6cDeCcxHoJBwbSUerC5ueriwZCh46gSnLVjnmBLlGFXyxYbSfFGetMVVSR
6OpiQuITp4ZhVw/UoCGloNsIFKg6l4JMwqZmsrZPdl+zUU79RV9Zb4XhFwCgsRIo
1mf9I3rNZ8f1Jv69nUR/lJkEAJB6fY1rtUNUwq+JXOnFGD0KnC8isQNyOeQ7Y1il
HQ9mGVKuUC3Zh0FzvdsU7Ks2ss9ynxfbFXnyyAOqXwTzU9pMuW5oLOUmjqwEfAhV
4S0xcnPcfGGJ671NNeqa8X4LQv6ECWai6O4CbA4aluRqhHNxT9dgEai8RN434LQE
tGxcA/4mIlvVoM2c2DRjD4+/Oj+i80ZMpOgE1RkuQmXoZ/DwLD3EHbIBX4cNffOd
FzxYrKCrXD50MehIw/IhFfHN/GdEN7NT87M3j/ydSYFluoiLv8FXO00mr8cDi3wF
q+LGbniEhVcW6wpUz9zVFmdLAp3HQi1uRAHqYmdSs6gqjl/+pLQqSGlkZXl1a2kg
S1VSQVNISU5BIDxydXNoYW5pQGJsLm1tdHIub3IuanA+iF8EExECAB8CGwMECwcD
AgMVAgMDFgIBAh4BAheAAhkBBQI+L/K/AAoJEPL6IIhDmtxXgj8An1YuXcp0iurB
ZYHiaYMzAb+lYhALAJsEAKTyeqO0plIvHBV49L5CErZo87QoSGlkZXl1a2kgS1VS
QVNISU5BIDxydXNoYW5pQEZyZWVCU0Qub3JnPohcBBMRAgAcBQI+OM7uAhsDBAsH
AwIDFQIDAxYCAQIeAQIXgAAKCRDy+iCIQ5rcVwyNAJ9Y5N6lIMXVy4sYCdgQvqDR
xkUN0gCgrsbQwfTOBcy8Mw/UmGOE4/fwrNa0K0hpZGV5dWtpIEtVUkFTSElOQSA8
cnVzaGFuaUBqcC5GcmVlQlNELm9yZz6IXAQTEQIAHAUCPjjO/wIbAwQLBwMCAxUC
AwMWAgECHgECF4AACgkQ8vogiEOa3FerLwCfRPWW7lC/pAVdD2Jo+8rcWTKQ1xEA
oIQ/on62k7YBO+buO+K472a/cW2MuQENBDybt6UQBAD/ZGmvwhzt9YWhF9q7mLOT
iEMzL2AzBryLzzUphejgDlJN/TIoDtaJfMyNkO16FbUq/WLQbKYFKfDunqx+eVSi
PsneeYw9nAdlcXVgHRjoL3vj5O7PIg4qqps2mnLKEOXLAH2PNTYY6+8T0NQicdht
YIraowzLoKRdINuDQrCpEwADBgP9H4CwbNJtQAHwS9ATmfL6F2Bg9LWe1godSWkM
N+nBxKvMqrajJWfxV09f9gzn0qmMZT9u2DwcADzRQLC3jkzgOD1f8UiAuCuDEE1a
vg1iCuyiI6m+MMWCkOCj/69wIu1ilmWqkn8SeoEwN+hwqHa20ue7vBhXreQanJim
sq38ZdCIRgQYEQIABgUCPJu3pQAKCRDy+iCIQ5rcVzT/AKCgYOyEMpIxXYVI5gYM
CwQ3hkJ28gCePnTu3Ke6lPoQsMAo3TzKkUO9Wj0=
=cXJQ
-----END PGP PUBLIC KEY BLOCK-----

C.3.56 Alexander Langer

pub  1024D/8E2523FD 2003-01-28 Alexander Langer <alex@FreeBSD.org>
     Key fingerprint = B757 5ABF 691F 4011 F565  3765 BFBB 3506 8E25 23FD
sub  1024g/16C3B12D 2003-01-28
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1.2.1 (FreeBSD)

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
=4rxH
-----END PGP PUBLIC KEY BLOCK-----

C.3.57 Erwin Lansing

pub  1024D/15256990 1998-07-03 Erwin Lansing <erwin@FreeBSD.org>
     Key fingerprint = FB58 9797 299A F18E 2D3E  73D6 AB2F 5A5B 1525 6990
uid                            Erwin Lansing <erwin@lansing.dk>
uid                            Erwin Lansing <erwin@pil.dk>
uid                            Erwin Lansing <erwin@droso.dk>
uid                            Erwin Lansing <erwin@droso.org>
sub  2048g/7C64013D 1998-07-03
-----BEGIN PGP PUBLIC KEY BLOCK-----

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
=prJB
-----END PGP PUBLIC KEY BLOCK-----

C.3.58 Yen-Ming Lee

pub  1024R/5EB52E51 1999-03-03 Yen-Ming Lee <leeym@FreeBSD.org>
     Key fingerprint = FE 7E 04 56 FC D7 24 21  B9 3B 53 06 E8 93 B5 81
uid                            Yen-Ming Lee <leeym@civil.ncku.edu.tw>
uid                            Yen-Ming Lee <leeym@cae.ce.ntu.edu.tw>
uid                            Yen-Ming Lee <leeym@leeym.com>
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1.2.1 (FreeBSD)

mQCNAzbdCccAAAEEANydbxi0PCKpAl+7A5I07015Sm4R8YzqQF2LXvneC4FplHvy
Qq3ZmibDQEDHEOArFDnox3iY04Svl3KejPkmOAyZWzqZYINLGOaIW/hwkjB+U2ZA
cLMUaHDdXgG9U3P5nanksJ2dBpVgehZ7p7PKnqsyMW17Kq+M8snMx0NetS5RAAUR
tCZZZW4tTWluZyBMZWUgPGxlZXltQGNpdmlsLm5ja3UuZWR1LnR3PokAlQMFEDbd
CcfJzMdDXrUuUQEBG64D/iZgQNzZaNM1AigEwVYIzqvyWcOJsk19VGrQI9fJK92s
fwJxJXKVGvU+8R8px2HsNqiu/jYovud52NjqVheFGrRdQNS08/HslbEUZ5UH+ID4
Jg3WqMrHJScaau25N4o8FXIdqBz89KfpCFOwdMx699Qa6P8D7GLsxY5Mc7ikZjec
tCZZZW4tTWluZyBMZWUgPGxlZXltQGNhZS5jZS5udHUuZWR1LnR3PokAlQMFEDpT
X7LJzMdDXrUuUQEBx98EANyLMVVMIQxDOE6xUNeXwUw+ZAETEUcAVKztz/jxLI07
BoNbCquSoZzja2R54IUXwSDcQ71aV5KG/KVI4HT3XBroKYRvJzzf+ePNZtOSokeq
5ybdtvrMAO7oEIkJqOpN/H6lIXhApLtXRi8yhIaoIVQ4k8WG2yQiIFu69qWFM6DD
tB5ZZW4tTWluZyBMZWUgPGxlZXltQGxlZXltLmNvbT6JAJUDBRA6euJ8yczHQ161
LlEBAa2FBAClvm2syJMdCfVlUJpdr2f9SH8qwi9uxf88lVfJb3+46IArDBCLHHdp
kDvy+H3NPVCUPeYndcfl/P9fLLunqosTuVksdNKFFhx6+hmyI3+tmGXavgc2wq/z
oJ6vnHYW2sOMiQYD46cUsepf9aroH8BvNgoe2VfldDqwW43nVXNwVLQgWWVuLU1p
bmcgTGVlIDxsZWV5bUBGcmVlQlNELm9yZz6JAJUDBRA9Wn+pyczHQ161LlEBAW5+
A/9NaKX20d+ixhO5C1/ShUXUVt9IIIX46Arj1HGeWR5xs5Ibt1QXGH+F92v56Sm4
yakclijxU0nSmFxeQQNiTndACMrpkCUz+G3SzTzYzu9N+2eJ4FP/KYb2os2QJ2u8
IztGZ+3GmEdfQM6brT6MhAH5DK3RurYg+wQcSFR5A6msng==
=B37X
-----END PGP PUBLIC KEY BLOCK-----

C.3.59 Alexander Leidinger

pub  1024D/B0063FE7 1999-11-11 Alexander Leidinger (Privat) <Alexander@Leidinger.net>
     Key fingerprint = C518 BC70 E67F 143F BE91  3365 79E2 9C60 B006 3FE7
sub  1024g/263CAC76 1999-11-11

pub  1024D/72077137 2002-01-31 Alexander Leidinger <netchild@FreeBSD.org>
     Key fingerprint = AA3A 8F69 B214 6BBD 5E73  C9A0 C604 3C56 7207 7137
sub  2048g/8C9828D3 2002-01-31
-----BEGIN PGP PUBLIC KEY BLOCK-----

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
099D7B/I
=OE8v
-----END PGP PUBLIC KEY BLOCK-----

C.3.60 Ying-Chieh Liao

pub  1024D/11C02382 2001-01-09 Ying-Chieh Liao <ijliao@CCCA.NCTU.edu.tw>
     Key fingerprint = 4E98 55CC 2866 7A90 EFD7  9DA5 ACC6 0165 11C0 2382
uid                            Ying-Chieh Liao <ijliao@FreeBSD.org>
uid                            Ying-Chieh Liao <ijliao@csie.nctu.edu.tw>
uid                            Ying-Chieh Liao <ijliao@dragon2.net>
uid                            Ying-Chieh Liao <ijliao@tw.FreeBSD.org>
sub  4096g/C1E16E89 2001-01-09
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1.0.6 (FreeBSD)
Comment: For info see http://www.gnupg.org

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
gJ4OtCdZaW5nLUNoaWVoIExpYW8gPGlqbGlhb0B0dy5GcmVlQlNELm9yZz6ISwQQ
EQIACwUCOuXFUQQLAwECAAoJEKzGAWURwCOCLMgAoJGhtnPbzYhZWHm5S9Dkgmvj
QsgvAKDq9LzJ14Sojrtpxka5F5iViLoqEYhGBBARAgAGBQI7J4TCAAoJEGvZyNJ3
mDKxzzAAoJFFuWMLf6HHO0TiPdafPjuruVpuAKCC0eE7oh9t4xMlTb2SYWMpZS9p
hokBFQMFEDsyHL7DfcPfQ7mVNQEB9KQH/iLaexNwzgB9efMXg6RH+TtaWzxBdeEc
7CD9oxjG/1tsfd8S10UScnr+JHTDNn3eh5KdQDjPmKkedPngAIjKHvb/Jux7jcxO
OLmRnVeFD1kMyNlv5ggtJcHJ4QXe4rBko68qyU5ON9pvA/h7Xe/ulGw71dOCx0T6
jBlpmLF8AZlHW7z8OS+DYa7fJFI65cDbtd6c9hM+O4WNj8PK7p6MPgilIaWsnJq1
lS5fkaQK+dqaIaVEE4WqTt8v8xC805X58HZXRFma5D39yGFNd3LRCpu48mM5LDLT
Q7tfs9jn1Ru7iUHyjI1Jel0hvRGblL8iW/zvwmS/XTXPsh3H0U/WfWG0KVlpbmct
Q2hpZWggTGlhbyA8aWpsaWFvQENDQ0EuTkNUVS5lZHUudHc+iFcEExECABcFAjrt
DlEFCwcKAwQDFQMCAxYCAQIXgAAKCRCsxgFlEcAjgknjAJ47s3GGw/KsEHKDjjRi
D/kcOgiNZACgxKgabQRGmvwKMl8fTtNxiTbAyDOIRgQQEQIABgUCOyeEwgAKCRBr
2cjSd5gysSzKAJwOKSwO0ZIm9II4sjcxWPeNUHAl5ACfXShCxB2mVs6kRDsD1o7f
aWeuChCJARUDBRA7MhzCw33D30O5lTUBAaMTB/0S70cAqqqAqrJBZosRZhmXWixk
Ah1gMH8SkNVygA3BE3k4A9LC3LNyvlnbCGPFH8PYvN8ymcn3sSPu9nyHVZ31VDU0
mp7JvKeW49tWxBeoFWpNJeNxTv2aNpFCLahpiwcDt/HW8/1NC5dJirDrIrVTrhWG
85UUYeGmMX/5qC7bFh+Y5FC6HxnFTCWlxpZQDtWw4Dbf8r4dMrw/2I9Uubj6brEx
LeOG2gB5UAuSS5Brp/9eiAlJs6jRgLU883IzpIhYanz37nJcLV5MVHhbGiR1Yyhr
IQlO4pQ2f3VhaEpkUu63x6lxfyVVJsZZ+vZU6EvtJSFACWR1nK2SbszGt/FRuQQN
BDpaoxcQEAD5GKB+WgZhekOQldwFbIeG7GHszUUfDtjgo3nGydx6C6zkP+NGlLYw
SlPXfAIWSIC1FeUpmamfB3TT/+OhxZYgTphluNgN7hBdq7YXHFHYUMoiV0MpvpXo
Vis4eFwL2/hMTdXjqkbM+84X6CqdFGHjhKlP0YOEqHm274+nQ0YIxswdd1ckOEri
xPDojhNnl06SE2H22+slDhf99pj3yHx5sHIdOHX79sFzxIMRJitDYMPj6NYK/aEo
Jguuqa6zZQ+iAFMBoHzWq6MSHvoPKs4fdIRPyvMX86RA6dfSd7ZCLQI2wSbLaF6d
fJgJCo1+Le3kXXn11JJPmxiO/CqnS3wy9kJXtwh/CBdyorrWqULzBej5UxE5T7bx
brlLOCDaAadWoxTpj0BV89AHxstDqZSt90xkhkn4DIO9ZekX1KHTUPj1WV/cdlJP
PT2N286Z4VeSWc39uK50T8X8dryDxUcwYc58yWb/Ffm7/ZFexwGq01uejaClcjrU
GvC/RgBYK+X0iP1YTknbzSC0neSRBzZrM2w4DUUdD3yIsxx8Wy2O9vPJI8BD8KVb
GI2Ou1WMuF040zT9fBdXQ6MdGGzeMyEstSr/POGxKUAYEY18hKcKctaGxAMZyAcp
esqVDNmWn6vQClCbAkbTCD1mpF1Bn5x8vYlLIhkmuquiXsNV6z3WFwACAhAA4vXK
JfvHChbHRCc0z99UHVCluHwRUDopIFNfuBmiAOA7Ozz19dmYBKDgudZpDNZtbE4w
0S2eW3xVTkPUWdrhr0jDcibkhpdFI+Cp3x2zOhL16Yug1xFSqWDSOo3QX4eBVxMH
0sCHiZMlcx/QGl1bwZ9PpO10PttjloI2SqWGUNK9FGDjVfJoX8YMy5DG4rLcaS8+
m2IOb9BiYoRs2Dot9KZjWtL7+CDrFmLH4q8P6OHiE0RJy+7YoTvsHr0JU6suasHK
NPfzrXlWZ8C5sKX0XuZTJNkfKojMVucM6olzpaE04NAtKjDffHr7Rr0md/6Zy7ru
gJIOwClDyfMmVud0J9Sx/pLKlldakJl25Xfctcz/DXZJNGpvfeMm5+pzR/zulQc1
zDopdrSq261hJKE/5N6tPflXz9UreUdRm1mZV7SEgCKODMxSxexRfw51O0fk3vZ3
rfSjSgeIz9Fs3ypJHCd2q5C4LDa5XgX8vNSYxLKIevu62BnQXJVTKCyuvzUGOrvs
nhKzR4GjrMm2575e+pxojQPVXcytFqzn4CS3QTWHvm+J1EzFwhdpR2kXAmaarpye
JbUjuCDHDhJPegXY0oRa51lLhvcij1U6smqutADIQSck5JmyQKuC+x7Y8iLk/HSO
3uni8G44oFCf9KJG69f5Va0RHgjBUOZgKMAlKA2IPwMFGDpaoxesxgFlEcAjghEC
3KEAoK+jSxWG0hQa1aK0vkQ+IvD+Ag7EAKDahnKlbMifGmPSpYjK0zcUeojzyw==
=NLH6
-----END PGP PUBLIC KEY BLOCK-----

C.3.61 Clive Lin

pub  1024D/A008C03E 2001-07-30 Clive Lin <clive@tongi.org>
     Key fingerprint = FA3F 20B6 A77A 6CEC 1856  09B0 7455 2805 A008 C03E
uid                            Clive Lin <clive@CirX.ORG>
uid                            Clive Lin <clive@FreeBSD.org>
sub  1024g/03C2DC87 2001-07-30  [expires: 2004-09-08]
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: 5.0
Comment: PGP Key Server 0.9.4+patch2

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
h595qTbzrEVfRA==
=vmJY
-----END PGP PUBLIC KEY BLOCK-----

C.3.62 Tilman Linneweh

pub  1024D/807AC53A 2002-06-03 Tilman Linneweh <arved@FreeBSD.org>
     Key fingerprint = A92F 344F 31A8 B8DE DDFA  7FB4 7C22 C39F 807A C53A
uid                            Tilman Linneweh <tilman@arved.de>
uid                            Tilman Linneweh <e0025974@student.tuwien.ac.at>
uid                            Tilman Linneweh <linneweh@zid.tuwien.ac.at>
uid                            Tilman Linneweh <arved@arved.de>
sub  1024g/FA351986 2002-06-03 [expires: 2004-06-02]
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1.2.0 (FreeBSD)

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
RgQQEQIABgUCPQPwnQAKCRB4y7mVGlcnuRJOAJ9LS7+vS3boxnAKsrPYd0qO6+2R
HgCgsYwJn6OfnTm/cKC/4j+kLLRRa/yJARIDBRA9A+0UlWBhpt2TQTkBAS1UB+IC
tY+/MOSiz1j5xqhC7STAxOPPQD18HmO3AHZywXr3G8iOh7iyJU3EphQID6B43Tvu
8VjaX2mvJur0rppMlHqGDJSvk1J8diwkuhb5jwmKBBTOoPdh6QEhi8GanAizKd/r
nppwAfzeP0CmiKjzQQJUiAK/P4KLhf//////////////////////////////////
////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////
////////////////iEYEEBECAAYFAj0EsHIACgkQzjzRQHYXE2eG7QCfcEiEGHSI
kInfEejdpD/8f6Y9m58An22TX5Bih78xgT3UO9KS8f9S/ylBiEYEEBECAAYFAj0B
/C8ACgkQlWQfayU+WONmegCfT1kY6b07HTIq4VCPBT3In2XbZh8AnRDjvSvwjSKU
MjjnpUhiMtXa07SFiEYEEhECAAYFAj0E3w8ACgkQcV7WoH57islESQCdGD2QXknl
os8pcpVMqVGiGm2bDXAAoIUuDg3KWXFjFgKPld+ZS2mavWFXiEYEEhECAAYFAj0E
50kACgkQj/Eaxd/oD7J4tgCfVWUu7UihVszFVvd/81eBbED8xbMAn209Hm3s1eOz
Yo/58hUcCXdN5B2viEYEEBECAAYFAj0E2YYACgkQ43e2O3Z+/CTsZACgigG3GK7M
oFnwncUbzJyi2VppBqYAn37m1LIu17G9TcN5o8RwsO88+UeOiEwEEBECAAwFAj0F
9X4FgwO4SRMACgkQFBE43aPkXWa0pQCg3HBHDpZqmVSpwSErMCJLKiY4N04An3Vp
c6u5ili9/wYZ8i6VuEAyv90giEwEEhECAAwFAj0FpJgFgwO4mfkACgkQNfZhfFE6
79nK4wCfRd6W2DnPsmPr6m2OFvyUfEs/3oMAmwWQXu94+Do8kzcDUAqlZnNIQgz8
iEwEExECAAwFAj0GC/IFgwO4Mp8ACgkQjZo8HzjZ7ZtnGQCfdU7o1RurcEvPvIbf
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
=sbOD
-----END PGP PUBLIC KEY BLOCK-----

C.3.63 Scott Long

pub  1024D/017C5EBF 2003-01-18 Scott A. Long (This is my official FreeBSD key) <scottl@freebsd.org>
     Key fingerprint = 34EA BD06 44F7 F8C3 22BC  B52C 1D3A F6D1 017C 5EBF
sub  1024g/F61C8F91 2003-01-18
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1.2.1 (FreeBSD)

mQGiBD4p5ccRBAC+tbiJm4bc9dO8oaRhVGqWmNhYfi2GnX4AM2h+L7bcIU/7jWVn
uWGe/PFHDcuOpEov/XRw1gmgoNh2DopTxf363DVMevmGW3R1842YMmLvCYZ7C0Rd
0GdbHW1xXeRSygs6peLcPGQ/7ISK0BHMudFim5FrpD0tq3qrqRmuGgls2wCgyF37
u+ZoP3xiP0wANhoWJtyBWQEEAIeYSHvIPKFIo9FG/+wckx9Fc+hLXPKwoETBPof7
Wft9zXiYyowuGj6/ydb6v229nI3lJwVPR8X6Ptjf6rO1vjf7uUED9dNBLr10vdW6
jYClBT8lqJAq3DzEpDk2kOlhYwtrykyld9Ys/7vgliuBB0XRUxGVNieqDck7PZWL
ewz5A/947m/ZrlZbn6+jsshGk30/pEXZUhcDnUBwW26GuFk0TGlXBha3N0NFwqz3
a7qnJcvSTKfeZJY5NCwqzCo/rLpmaNd9JCUrgwSd1MI9Txrbj3lDRy5dj4FZBQ2N
BVgni7SRKaiPw1KeEprSOR8yiM9ZjbV1g5zPeZ2bZhSMCP7mdbREU2NvdHQgQS4g
TG9uZyAoVGhpcyBpcyBteSBvZmZpY2lhbCBGcmVlQlNEIGtleSkgPHNjb3R0bEBm
cmVlYnNkLm9yZz6IWQQTEQIAGQUCPinlxwQLBwMCAxUCAwMWAgECHgECF4AACgkQ
HTr20QF8Xr9fvgCfUMy+qlN9qQtwMFAKWViSllk0xYgAnApLMv95d6Ecrj7+U9Et
liAwNQXWiEYEEhECAAYFAj4p8nkACgkQtNcQog5FH332EQCghR98TNpvYGdrsg6Q
S3BngO5n3VgAn1zo89iPy8VMP/kXq2jlzs/74+i2iEYEExECAAYFAj4p9igACgkQ
2MoxcVugUsOwsQCfY34hwJIc8MapwIy8fWmCeLs4T0IAn0aVpewWF99H6SapelNP
hvDzTYLIiQCVAwUQPioA7mVgqaw0+fnVAQEUHgP9EJXxzQlkaN8VsfRJo/UFmC4z
wGkwu2yatUjMSZR58VpS9rF6CH1rzmNFtZZmIh6ItQ/mPaUDW2yObWBRL2r9vkVx
e+DPcpcZAebM3ibjsOg05cftcphv41rLak0C2Nec3MXnxT15O7fcO6aO+d4oJ2Yi
oL7YJX6RHrqNCTQn6/65AQ0EPinlyxAEAIGtuZXdf7K51Gb9jijgdV1NMPKwujoq
K9f1PZocpDve0vwXN6AvzJ1L/LTrZPvBZ0UCAJR/zVtz4H2bnSqalbd8j8bmxfYx
0SA3QNAKJhgBGNlnK4HvAGJCs8oXYp+6Ph9WWlTcPzkfscPFc42VcUEdfL/5kyLr
OvGAUW6D7iCnAAMFA/9CWXarz2QMrkduiasc8bhSmv2lVOfUVcIdz9imc72Z5GUk
FBiQJ2kuqJrxMUqAgoccnJ9R0QVZwCaQyRNakEQEcENBKq9Haa5LLo7nD3CAiqIi
URqloJORSzXoQCrw8OelbBp9RaEqVdCecbNqAbA8Ru4NIwcyZCgvnX/bUTKq54hG
BBgRAgAGBQI+KeXLAAoJEB069tEBfF6/XBkAoJtQ4ECj3ntS2xlODgB8N+cKIsdb
AJ9Lwk2EEIZhvzhwvhpwIKAhWhHcmQ==
=C3Jv
-----END PGP PUBLIC KEY BLOCK-----

C.3.64 Bruce A. Mah

pub  1024D/5BA052C3 1997-12-08 Bruce A. Mah <bmah@acm.org>
     Key fingerprint = F829 B805 207D 14C7 7197  7832 D8CA 3171 5BA0 52C3
uid                            Bruce A. Mah <bmah@ca.sandia.gov>
uid                            Bruce A. Mah <bmah@ieee.org>
uid                            Bruce A. Mah <bmah@cisco.com>
uid                            Bruce A. Mah <bmah@employees.org>
uid                            Bruce A. Mah <bmah@freebsd.org>
uid                            Bruce A. Mah <bmah@packetdesign.com>
sub  2048g/B4E60EA1 1997-12-08
-----BEGIN PGP PUBLIC KEY BLOCK-----

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
=zVdk
-----END PGP PUBLIC KEY BLOCK-----

C.3.65 Mike Makonnen

pub  1024D/7CD41F55 2004-02-06 Michael Telahun Makonnen <mtm@FreeBSD.Org>
     Key fingerprint = AC7B 5672 2D11 F4D0 EBF8  5279 5359 2B82 7CD4 1F55
uid                            Michael Telahun Makonnen <mtm@tmsa-inc.com>
uid                            Mike Makonnen <mtm@identd.net>
uid                            Michael Telahun Makonnen <mtm@acs-et.com>
sub  2048g/E7DC936B 2004-02-06
-----BEGIN PGP PUBLIC KEY BLOCK-----

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
=TuyI
-----END PGP PUBLIC KEY BLOCK-----

C.3.66 David Malone

pub   512/40378991 1994/04/21 David Malone <dwmalone@maths.tcd.ie>
            Key fingerprint = 86 A7 F4 86 39 2C 47 2C  C1 C2 35 78 8E 2F B8 F5
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: 2.6.3ia

mQBNAi22tqgAAAECAPARUB5VpJvYQyHAzL0WITkJmKG1lpwFMPz4jenjJRplPr33
OvKxQcXh1bAWNVFiJVDJsWwnfif94wQdVUA3iZEABRG0JERhdmlkIE1hbG9uZSA8
ZHdtYWxvbmVAbWF0aHMudGNkLmllPokAlQIFEDCwQ4yqxsuiiP+uKQEBricEAKAE
f18kbKpFKU/DPRVhVYlLHCkzXLzZCiTxBUGjMaXZswKwrjVLF2l8mrNQhqC9L953
AGyUYNfPLtqw7b088v3ATCIrZ+izWyE27IrjZWSS57GZiDtnkm6moarG79yANBql
LBc0sK077cHEC+/gDwXNBLg0NNpHkaVXPxixt/ETiQBVAgUQMK+p+pFKk8pIl/up
AQF0QQH+ME6vPoS2+FgSN1q9R1hwmwEPAaYdyfhv2lj1/6KYDEaO9Lhw2u57nW7z
CDpir9gNN0X9U3XrIxlJ7wWxa1k2PokAVQIFEC7vu/zjBB1VQDeJkQEBWFsCANX+
qJO8J6qeJW8gcrmxMBA0l2MjEHcu8XNky6YT3yS6So72yL1lZbG78Sew03fXnWNS
GyhRrPz7sURNLtJDNDo=
=wpn4
-----END PGP PUBLIC KEY BLOCK-----

C.3.67 Makoto Matsushita

pub  1024D/20544576 1999-04-18 Makoto Matsushita <matusita@FreeBSD.org>
     Key fingerprint = 71B6 13BF B262 2DD8 2B7C  6CD0 EB2D 4147 2054 4576
uid                            Makoto Matsushita <matusita@matatabi.or.jp>
uid                            Makoto Matsushita <matusita@jp.FreeBSD.ORG>
uid                            Makoto Matsushita <matusita@ics.es.osaka-u.ac.jp>
sub  1024g/F1F3C94D 1999-04-18
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1.0.6 (FreeBSD)
Comment: For info see http://www.gnupg.org

mQGiBDcZe6YRBACDOZSZ5cWE6IvNkx2Ht6S/VdIY1OXFU8n+cOVxNIHFWXPUOrFG
F526VZoPfjURnslubdxXC8TKGspX96uc1jdROHvEwsxUUELyzZ7G5oJ5wd4jHwjq
K5zwV5FZoNm1SHdeN0FqZB9rlJdOt0kxVZS+b1PUc0j1i4oDNZz7+8rc0wCgltLi
c2i5RQzjuvJvF9P8OYGujHcD/3Tq02ov/aNX+jIoO58uuOBZpYFL7ZfbCeiMs+4A
dmvjTI9MpfLBP711iu1asuikx6HLQts9UTVk36qP9ubNmFi54kDHsej7Ce8m+dOu
Cjcjle6Be71MGLq4YUxd9xZmGGDPhEFnHWbB/QPP4n/m3DN3hblWBgP2PsgmqDyK
518dA/0bhL5pvw5LSaRtGxxWvFBInfWGzC5EuLw4ERZW+bEFB0To08ZnocLRN/E6
tZ2JTr2O5aMLqUEM3jgsIvs9EOGUBwPRzyOQXpc2uQemn7J0pL6PQfuBIaUI/NOu
ULM0gQfLIV3wOP6Y5gH0FBcLt/ofrqdYys0C6zTq3LqDW5FdQbQrTWFrb3RvIE1h
dHN1c2hpdGEgPG1hdHVzaXRhQG1hdGF0YWJpLm9yLmpwPohVBBMRAgAVBQI3GXum
AwsKAwMVAwIDFgIBAheAAAoJEOstQUcgVEV28OwAn3Vej8AnsKK8uTWbJ21VDY7T
OjUEAJ4yLYfPw5a8C8vGiAKid9sGeZiGwbQrTWFrb3RvIE1hdHN1c2hpdGEgPG1h
dHVzaXRhQGpwLkZyZWVCU0QuT1JHPohVBBMRAgAVBQI3GX1RAwsKAwMVAwIDFgIB
AheAAAoJEOstQUcgVEV2OhMAnRDxuze75oYGBKpmajy5uqKoxzqSAJwK9RX1Qz16
XxNkpl1GXpxu/uTMJ7QxTWFrb3RvIE1hdHN1c2hpdGEgPG1hdHVzaXRhQGljcy5l
cy5vc2FrYS11LmFjLmpwPohVBBMRAgAVBQI3GX1lAwsKAwMVAwIDFgIBAheAAAoJ
EOstQUcgVEV2cwIAnjzKpQYVzgQKH+m2p0INfg9WLNv2AJ4pKR2Euf6bc5a2/gmX
dIjpyg44brQoTWFrb3RvIE1hdHN1c2hpdGEgPG1hdHVzaXRhQEZyZWVCU0Qub3Jn
PohXBBMRAgAXBQI71CCFBQsHCgMEAxUDAgMWAgECF4AACgkQ6y1BRyBURXbNzwCd
FbR5SgpkfCI3USicWNAuX3ZmgxsAn3nMt3/3WBkLJYx4b9Fq9j8XIrHEuQENBDcZ
fB4QBACE5eLj/ouWmFq+5jwSwGln6EOH8k96VE4bUrYspqrKxAxSoVagPyg9z1Fd
QnjgXPaKuvcdfqVJZFWM97w675NIT/ncup3q1BG5HRrTCi7xs2pHaJ3eeY4Ek2eg
jx8asi72tOkKWPLY/Qjg7pxVBPjD1VeC3/VOMDHhA2RRGL3GowADBQP/ZCqA2Nbq
9ZgDyUVgHBDjcZ8Ilqnu5fvn4P9veMK2vCJAGxe+tIjJ6qut6mr7Bk+sUrTIvRMG
QuvO6fOrBXseihfrrz9OAkwMrfhQKYe6GuOAHViaOLSeEj/MSM5zomUvHJVsMU2q
r/TXMui2cG2X/z+Nu3oBdc7r+QPzEztyg+2IRgQYEQIABgUCNxl8HgAKCRDrLUFH
IFRFdivuAJ0clNOzjVcGl+mtAISube0ZfBGsbQCfXNRIS0bUADiMVc2AiW53Q47h
oyY=
=GDLX
-----END PGP PUBLIC KEY BLOCK-----

C.3.68 Kenneth D. Merry

pub  1024D/54C745B5 2000-05-15 Kenneth D. Merry <ken@FreeBSD.org>
     Key fingerprint = D25E EBC5 F17A 9E52 84B4  BF14 9248 F0DA 54C7 45B5
uid                            Kenneth D. Merry <ken@kdm.org>
sub  2048g/89D0F797 2000-05-15

pub  1024R/2FA0A505 1995-10-30 Kenneth D. Merry <ken@plutotech.com>
     Key fingerprint = FD FA 85 85 95 C4 8E E8  98 1A CA 18 56 F0 00 1F
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1.0.6 (FreeBSD)
Comment: For info see http://www.gnupg.org

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
sGDiYyJDVnPYxZcEN0h06w==
=CRmh
-----END PGP PUBLIC KEY BLOCK-----

C.3.69 Dirk Meyer

pub  1024R/331CDA5D 1995-06-04 Dirk Meyer <dinoex@FreeBSD.org>
     Key fingerprint = 44 16 EC 0A D3 3A 4F 28  8A 8A 47 93 F1 CF 2F 12
uid                            Dirk Meyer <dirk.meyer@dinoex.sub.org>
uid                            Dirk Meyer <dirk.meyer@guug.de>
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1.0.6 (FreeBSD)
Comment: For info see http://www.gnupg.org

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
=b0g6
-----END PGP PUBLIC KEY BLOCK-----

C.3.70 Yoshiro Sanpei MIHIRA

pub  1024R/391C5D69 1996-11-21 sanpei@SEAPLE.ICC.NE.JP
     Key fingerprint = EC 04 30 24 B0 6C 1E 63  5F 5D 25 59 3E 83 64 51
uid                            MIHIRA Yoshiro <sanpei@sanpei.org>
uid                            Yoshiro MIHIRA <sanpei@FreeBSD.org>
uid                            MIHIRA Yoshiro <sanpei@yy.cs.keio.ac.jp>
uid                            MIHIRA Yoshiro <sanpei@cc.keio.ac.jp>
uid                            MIHIRA Yoshiro <sanpei@educ.cc.keio.ac.jp>
uid                            MIHIRA Yoshiro <sanpei@st.keio.ac.jp>
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1.0.6 (FreeBSD)
Comment: For info see http://www.gnupg.org

mQCNAzKTzO0AAAEEAMVsAcUX89qHkwlI03RlAYBqQa00TFmgPwZs8sWvNUqTGtlK
kOXcN9WNBvwzMYtEk/u5C1HukqISnFkDW7ZKYm+Um1sQPioFHTwDC6R2HRDZBCV7
0fROlQpb479iBlr8wNAYDhOs0rl25FpE/uAXYThW9Ik/apgXN4rTGxk5HF1pAAUR
tCJNSUhJUkEgWW9zaGlybyA8c2FucGVpQHNhbnBlaS5vcmc+iQCVAwUQNu4ch4rT
Gxk5HF1pAQHYiQP+IoxOpfpSPg8Gr7MUtoU3WZPY/5IuKoOwnFNFcSyuhrgn/OOB
pbxkYjTO3MLh7Xa+9sPigevHy/sNA4vVZdjk05sjRfAZxIWPrinRy/kzva0KOY69
u1QfX+Vx2mfq/EfMJMHP/Am0H71nOfAZsscKlb/jmuo1TxIpCUx+wWmNn5+0I1lv
c2hpcm8gTUlISVJBIDxzYW5wZWlARnJlZUJTRC5vcmc+iQCVAwUQOY7IlorTGxk5
HF1pAQGQBgP+MXSjPfcnNhNfUmeLu8sM63DnrFIfRP9E+n/yhZT0wO51r2LmF4ZX
YI04IJCywJiPjEpCFXNAhqDfypkTXWcbLTxX6gE5GNqii5iq+z+UuO4panpJO5OY
4H0/90cH6I/zl93EZN9wfZJghn66vgL4tDTgILdRPekIOB23JQIXsf60KE1JSElS
QSBZb3NoaXJvIDxzYW5wZWlAeXkuY3Mua2Vpby5hYy5qcD6JAJUDBRAyk8ztitMb
GTkcXWkBAf3zA/9sDB0n/UlsH9hzaw4r2k0FT9F7Ixtk2i/vqmHDUUcrlEqGaeko
/3Q+et2KzepX981mI7N2jdClqJgjlHapGoIQWZL3Jy7ocgCXDTYwGU2cFRF7kzkz
h3FyYotm6bMi5F53GamkVbYZfogLo1MW7jmqIydJNdT1oseDbrwkjvXwdLQlTUlI
SVJBIFlvc2hpcm8gPHNhbnBlaUBjYy5rZWlvLmFjLmpwPokAlQMFEDKUUFiK0xsZ
ORxdaQEBjuIEALtVC6fjyDiRnZ3ReckdTO7k83VUTZiQH+2cMFNd8gi+O2sZ3YnW
6veQI45VB3oHD9kzMjol3B1ld7iKcQzHC6qUEviW+mTRRN2Y26DB704FNeUrqm1A
LO8NPL6iNKFvUNsu3T0ZRY7oX9a9nMmcD7M2bm6jxrhckS8hY7x1D0xftCpNSUhJ
UkEgWW9zaGlybyA8c2FucGVpQGVkdWMuY2Mua2Vpby5hYy5qcD6JAJUDBRAylFA5
itMbGTkcXWkBARgCA/0RBudh/8z/HWdX0GC0m3I0zIAOiGfmnJMPkzLryXuOQsbE
dg28b193QnwTz6/ASF6PLJkivcd1vREXCz3C+jHz6OGs5jUKcSf5c0ZaIE4T21Hq
LPKHSj0cYxgiC0auwY46m/yfO8I0bdiM6Ki3fSBTlTmDlNhWxOQ4Ic2RamKNNrQl
TUlISVJBIFlvc2hpcm8gPHNhbnBlaUBzdC5rZWlvLmFjLmpwPokAlQMFEDKUTtSK
0xsZORxdaQEBjWYD/i3EOU8lEoje9jTBHfQaps9BQgviFSaHk0G41emKszLSLnGQ
BeMGZTyWda6sTSqeLKg56HEmmVGzC/nHlhwspC6bdYaBmOpnSmmzxVstcYq8oiXI
mlfFEcL5DJEau1VTBP56Fk4GCffaibCTRGYrQcJz4yLfATjYsni5Y8zXqhWItBdz
YW5wZWlAU0VBUExFLklDQy5ORS5KUIkAlQMFEDrvMx2K0xsZORxdaQEBTgAD/jO7
tb78V3muNw+rfD8tA+yWXw8IdC4QHCa+Ga6Uwf9nw0WD+fuuz0I2La4iaC3FPtTs
1hz1QlmrztffL3tfsePDeN59nz89m+WPW/Cu+mLY2Eim2Hm6AWKVvtxtndunOSls
xQLr0uhvNN5BOzEqv2V+l0MrwadPxUrHG0izqmGJ
=cmvD
-----END PGP PUBLIC KEY BLOCK-----

C.3.71 Jim Mock

pub  1024D/3AA4FEE0 2002-01-10 Jim Mock <jim@FreeBSD.org>
     Key fingerprint = AEEC 998D 7828 D306 AFF7  06CA D8FE 7285 3AA4 FEE0
uid                            Jim Mock <mij@soupnazi.org>
sub  1024g/3780652B 2002-01-10
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1.0.6 (FreeBSD)
Comment: For info see http://www.gnupg.org

mQGiBDw88s8RBACUCev7G9g7Bl2dxPQQpmO8jrud/oRe7Q9OyXfSl4f9hZBFYoB9
jS5+H+Cz0nnALPpCAQVpjEjUQ3llDE7XcfNTeEJrqlhTcLzPW5k/icKbPgHnbZgp
qC1Brxy1sjy1qGOJSoYCkludXkI1iyt3Fw7ingUFpvTpT9gFYqgLExNZbwCg/scY
9iub1moAJTdBsva/jGatazUD/2GymldDx+M1gW3P8YqOkmn/lv8RDTjlCvfhe+xA
X6hxIbasYDJAX0cNs6tJd1KJpznwT0MtRuaFq6+xmVcGTCEyTXsf5yqQDV9mGyMn
B5cr7kyxArfyNcoq9DYyEhtrqfewLIA6eiPCIdyPRD9/5GpLk+9c/I5MQB1All0H
LjJuA/9OTyJkKvPO5rsLSjVfhNg4FPx3W/23f9767tcOKbFSYsb5rHYSC8sP/Mim
fgyqZJd2jm/ch4xU9zxPRmKIgz8mUxpofwh2v8iDtfUZwqVJCrN6RYskJCwG0WkT
bhG7Hp3q4xGa48npkCXGw4NnKkKYZTU3RK7FbcwZmJYb7krzX7QbSmltIE1vY2sg
PG1pakBzb3VwbmF6aS5vcmc+iFcEExECABcFAjw88s8FCwcKAwQDFQMCAxYCAQIX
gAAKCRDY/nKFOqT+4FuNAKCRO4EJs5q5YNgbe12hCiPPKL9eaACg+z6prde98KAn
qD/gCRvAORa04bG0GkppbSBNb2NrIDxqaW1ARnJlZUJTRC5vcmc+iFcEExECABcF
Ajw88wgFCwcKAwQDFQMCAxYCAQIXgAAKCRDY/nKFOqT+4O7RAJ9pKTJDRjdP/cPo
pkzTIgjhk1cPugCgp/hX2a7w26gqnvrRXCa9T0Rxvgq5AQ0EPDzy1BAEAKJwt13v
YhG4P6mgwevIECIshvuM9vRqlR5MULHavyZqNOLp5M3mCr3k4v3ok8G7UeSc1Jg/
5ND1EKw63gNh2SsetlruSMWZLEJ3aerbBBS71HIog4oGuLst3dbc1TJ3ZQkamMnk
BB8kWARSzSdpjCc7ANGi/5Omnu0koknduPabAAMFA/wNcC6i3fr7SGo0kFqCq752
lkl85IdVFApLVnhz7PrrI8WMw5QaltnW8aiKDwE7+EDu8C6vQj9YQNldjVzjAnav
RpvZue3K+mdrZ2BzCxOnF9PNxo4pcFwYefyPqSWnht9bvlU7DHeeykgStBGcCE8F
YS6CogoPwRGC7WGYF2amL4hGBBgRAgAGBQI8PPLUAAoJENj+coU6pP7ghJcAn2LW
giZk+flVW0OUFmBACgqffLtmAKDxU4uLZrS4nA3Utgiu5x+/8n8yUQ==
=uAGs
-----END PGP PUBLIC KEY BLOCK-----

C.3.72 Marcel Moolenaar

pub  1024D/61EE89F6 2002-02-09 Marcel Moolenaar <marcel@xcllnt.net>
     Key fingerprint = 68BB E2B7 49AA FF69 CA3A  DF71 A605 A52D 61EE 89F6
sub  1024g/6EAAB456 2002-02-09
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1.0.6 (FreeBSD)
Comment: For info see http://www.gnupg.org

mQGiBDxk42sRBACyzSSCLYA90zaZoMlg4zhMXhciG/YuiBZ005q0s9W9cuFFxwOM
0mLFbBHQKj5TG5TNswnf9VreRg8lRPCzgQ63atc10RU2tfa88hIjWZ4G4WEFDeXS
hlj4dIA6KO93UEoJmIyR7hswisb086mK4dM9hq9FxJT7YQ63PkUYmd+pfwCgjX/y
xM6+aPj0sXuOvAcVVmrnp8UD/2pEd8kxAKIaWmxOm9aGB0/E6vjZWxCk1+CO7tgG
4gInFYUnqniPB4JOXOWriwBGPx5IqWYwYpgeuoi/KeE/Wn7bRUEeCbBGEmJkHO9l
3xJuPX8JKDkGuTNDvR3SINKSzx7gb77eGorwxV7e4FXBeXOyXLxgDqDhh7Sjv5/4
ikr2A/99b5t1akHlNe1ITpuEETDNRcfu38/KW/nF3p1IKQ4Q+exSlEJzPFupYNoZ
O7uD3A0YCNf3jIY52ufkZXqhqfsp6aRLetbqDcKVrZWSudAzGAEk3Q85a6Ei4mUB
tfv4dmXQOLzfAFHezhCQIt5LIPJ5Dmz/a26+u0DmlfisgP5ltbQkTWFyY2VsIE1v
b2xlbmFhciA8bWFyY2VsQHhjbGxudC5uZXQ+iFcEExECABcFAjxk42sFCwcKAwQD
FQMCAxYCAQIXgAAKCRCmBaUtYe6J9pN3AJ982m/rtLgyiuHl1IM+/xfsZ460SACb
BM7V955SU4T2b+1FW1ieOuuZEKC5AQ0EPGTjbBAEAKbxUKuiOJsAQnGKTXtbyRdR
Y6BZQK9tPNXEIjIUZ94Crs9lVq/P3kyvpR/ziL+Yt3agUAELiX+cggUZ5KRzKBmo
PJ6ZdWOuKLRN2+PfK1QVOQayeZV11XZAsPwyHI2v/hvjJnFvQNTEXWLZsBNnfTdx
0zi5RBNhf5Gt1hyuT4cvAAMFA/9xKQ7aKkvi+C7KafwH6B5X6lIQxRbTQuaZaqKL
M8pDmVLqo3er7S1ullwMWfarQLHtlwirX9IOQN833TCDev9QeeYZZ5g2MpWO5nx4
kxEOAK6Lg+QBg4RcoLK9CpHUpLoChGQzNaDudztUixwVaaigj21O4PXFr9pmLLZk
vj7AN4hGBBgRAgAGBQI8ZONsAAoJEKYFpS1h7on2XgAAnj0B9B7g4XPMXjizKVNP
YLC2BYjgAJ4tZI/tGYxHex5RCeFv/fG4wN593g==
=R/4a
-----END PGP PUBLIC KEY BLOCK-----

C.3.73 Thomas Möstl

pub  1024D/419C776C 2000-11-28 Thomas Moestl <tmm@FreeBSD.org>
     Key fingerprint = 1C97 A604 2BD0 E492 51D0  9C0F 1FE6 4F1D 419C 776C
uid                            Thomas Moestl <tmoestl@gmx.net>
uid                            Thomas Moestl <t.moestl@tu-bs.de>
sub  2048g/ECE63CE6 2000-11-28
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1.0.6 (FreeBSD)
Comment: For info see http://www.gnupg.org

mQGiBDoj/ekRBACnO84k2i5lLHZKscyV8tjQSkkr26hasdbc/uyV7HTiPhMUjEAz
Pamk+bDmy/Ls8k0SJ1l0vILBBd31G5VYtKonIrgp4vZ9gV0fBdCyFDXb8bh11Pk3
pEZiG9vJevq40OPvsThLKHCLNhZ5zLPp6gd0IHwRJ0LU94pouFXd33MzrwCg4gTJ
K00Dw0w1hFtUsq6WjNC+1B8D/2WiEuzBMnO6gz0p/eJ1eZ7mvrBXLQZ0u5vJ3eg2
CCPrtS1ZITq3ICPDN6biEiMgtRmlYn/VYvDQqxwNE0X2yMfB/9sdah45zma9EeVn
Iy8meaCFDLhm4aIYc1foUuz3WbCNlJFY5xYPXCMXLkC65xdybHKng5TXh6NOOWf3
PfCWBACPMotTRKttAuw5YcZE5VDrSXPYHu/jm2CpIVmrac7+kDj9pGH9sB7BdUxw
vczqtAT0jk7MrT+u3FH9wBtEFTXl7ksGTmDOFWJgYn3ZOEaVaX/OqD89UNhrOA2v
ZOaaoKMYxK/pszPdr1Ghd6BQCmYKtLBlFYiTDRM5UMVHTqN7VrQfVGhvbWFzIE1v
ZXN0bCA8dG1vZXN0bEBnbXgubmV0PohXBBMRAgAXBQI6I/3pBQsHCgMEAxUDAgMW
AgECF4AACgkQH+ZPHUGcd2xMLwCfdEkPZVBgEmYnlyOKfyTSslMhud0AoKDKZNXA
huNslb4KF8yKWBNRwfPStCFUaG9tYXMgTW9lc3RsIDx0Lm1vZXN0bEB0dS1icy5k
ZT6IVwQTEQIAFwUCOo01FgULBwoDBAMVAwIDFgIBAheAAAoJEB/mTx1BnHdsOfMA
n1xd4f7iAe6id42DLg4W3fibsCwsAJ0cT2lf08RhHkT+zLVoubyIDoY6ILQfVGhv
bWFzIE1vZXN0bCA8dG1tQEZyZWVCU0Qub3JnPohXBBMRAgAXBQI6pO9pBQsHCgME
AxUDAgMWAgECF4AACgkQH+ZPHUGcd2z+7gCdF5fq/lebn3/gp40O8xP/J0XFbiIA
oKJP186L04qpSNamc/qG3gs7h3DGuQINBDoj/wkQCACl8M8ObSTJaOY4SgoQkKgB
CkJJP5ScUpfYV9w3dxKL/77cyfghfYsnAWuA9yXJcjA0F+u+jRf8gS7OaHD9H9Mm
pMGq54Aa0KUQaDbL/Jzf5zrKS/RASHzl1vYXuZB1OIzPfeAIx9u3UaziVEGXJha3
1KgTur+TU+F94ZFTi8uApq2VoNT6sFi/V2x79bxlLFr9M9yD/0+kMZKovWRODy6T
gWJzzcdd//dkvKp22tNf6C2wq8Bu60cWR81+awgG2otgZjCPUs2Bwhqa5opeUqGn
J+f+PXo6+m2UF21m1vLARENuumu6SXf3XqGIUiQbT6jCdJORzwaxeCiMfu0qNnUX
AAQLB/9u9gZN0N0r21ZjM6ZRmDC/REouCdYHEj49+f9g/xLXCfacpWVcrK9lIrcg
hxRE2mQ/nlQLeHroC3Dp1AfThKSPFX3PRD/9CcRu480imT84ljf+6vonAZ20Edm5
vVO+UoJMZQ2G+rWRRf4bDfwFoyDw3DsNmUL4yH8m2RpTxXn0pQtD2riJD8CBCXEP
K95TYT4MomJ7Szg7O5/QLngfw0q6QdKRm1vEIP7r6t+UbVNp9+5g9qvz4aqm3beY
pw1QCDHcqpDITnlTxTdV2SgNpF8JPg7joaOa36AxWwRzfLFyzyw/JGQE8RwJa8BN
iTu0IrKuiF1biRxqiYO887GBA/8QiEYEGBECAAYFAjoj/wkACgkQH+ZPHUGcd2xN
TACgkS0AGqqd2nLtWhpbE72tD660tv8AoI24cRkUa2op32mti5zfLLMsM4AZ
=76WN
-----END PGP PUBLIC KEY BLOCK-----

C.3.74 Rich Murphey

pub  1024R/583443A9 1995-03-31 Rich Murphey <rich@lamprey.utmb.edu>
     Key fingerprint = AF A0 60 C4 84 D6 0C 73  D1 EF C0 E9 9D 21 DB E4
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1.0.6 (FreeBSD)
Comment: For info see http://www.gnupg.org

mQCNAy97V+MAAAEEALiNM3FCwm3qrCe81E20UOSlNclOWfZHNAyOyj1ahHeINvo1
FBF2Gd5Lbj0y8SLMno5yJ6P4F4r+x3jwHZrzAIwMs/lxDXRtB0VeVWnlj6a3Rezs
wbfaTeSVyh5JohEcKdoYiMG5wjATOwK/NAwIPthB1RzRjnEeer3HI3ZYNEOpAAUR
tCRSaWNoIE11cnBoZXkgPHJpY2hAbGFtcHJleS51dG1iLmVkdT6JAJUDBRAve15W
vccjdlg0Q6kBAZTZBACcNd/LiVnMFURPrO4pVRn1sVQeokVX7izeWQ7siE31Iy7g
Sb97WRLEYDi686osaGfsuKNA87Rm+q5F+jxeUV4w4szoqp60gGvCbD0KCB2hWraP
/2s2qdVAxhfcoTin/Qp1ZWvXxFF7imGA/IjYIfB42VkaRYu6BwLEm3YAGfGcSw==
=QoiM
-----END PGP PUBLIC KEY BLOCK-----

C.3.75 Akinori MUSHA

pub  1024D/9FD9E1EE 2000-03-21 Akinori MUSHA <knu@and.or.jp>
     Key fingerprint = 081D 099C 1705 861D 4B70  B04A 920B EFC7 9FD9 E1EE
uid                            Akinori MUSHA <knu@FreeBSD.org>
uid                            Akinori MUSHA <knu@idaemons.org>
uid                            Akinori MUSHA <knu@ruby-lang.org>
sub  1024g/71BA9D45 2000-03-21
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1.0.6 (FreeBSD)
Comment: For info see http://www.gnupg.org

mQGiBDjXWqERBACDCxgN9+yMfpm3yvkYp+P4Uw6xxPdcZ9RvnTRkBX9zXaRgSPmM
zeZ63LpB99uVphVZrv/EdlyTf+cRdz6VXXRcTBloA/FsyY86IluBnWCH054WyXzr
7az5WB9yDbPnlwcSL919bq0UqTuQUlQswdQAoDQG5LNNZNa0T01ydYtNlwCg3weS
I/nEJrGCXGy2wrjg8LiwQ28D/Re2JHQPTYqDEZl6wj5U83wT55ChnTrjPRbGmr/C
UdJP6CZQg6+DXYGYulcp3oL4btcdFDRFglJzmQNkUYmqiVC20SMVKUctrOCAI60P
7VE40UtXz9EounPSRQQ1lSdMNeRwrZ9o7IcrSj0EBw8lw3d2WxyM2Rs2crZWfOI2
mu8dA/9LbmAw5sLk5Lo5i41nAWP76pyuGxSia6zMRdML6ynoC5kmyrI9TwW5LNU/
Lsq1Ru2XSA+CwSBpTt0vdwS88dDwPGxRuUHhWVpa1M5t7K7uYODB1cD5AyNoNnR/
lHpxfPZOJNdA3OPgfssN9K+PIuhbBU5xONCoAcdC9TEqSezfUrQfQWtpbm9yaSBN
VVNIQSA8a251QEZyZWVCU0Qub3JnPohWBBMRAgAWBQI411qhBAsKBAMDFQMCAxYC
AQIXgAAKCRCSC+/Hn9nh7n1bAJ4vkEQX0JkcYgltt0Vv5qkS3bGqNgCguxfhuEzZ
vBzpAW9/XdstjA/DSPS0HUFraW5vcmkgTVVTSEEgPGtudUBhbmQub3IuanA+iFYE
ExECABYFAjnly3oECwoEAwMVAwIDFgIBAheAAAoJEJIL78ef2eHu7RoAoKn5Lw0y
C+/lju5+pV0WI5dmxTzxAKDJRtsRSTBcJ7ohvzztxZqyjfSK+bQgQWtpbm9yaSBN
VVNIQSA8a251QGlkYWVtb25zLm9yZz6IVgQTEQIAFgUCOZGiowQLCgQDAxUDAgMW
AgECF4AACgkQkgvvx5/Z4e4t+ACgnr8RmYw81/oC7MKS2CSoFb9cg6sAnjKay6ho
14iMG+YcFNbjxwGvSE9EtCFBa2lub3JpIE1VU0hBIDxrbnVAcnVieS1sYW5nLm9y
Zz6IVgQTEQIAFgUCOeXLZwQLCgQDAxUDAgMWAgECF4AACgkQkgvvx5/Z4e5+zQCf
Z/09J5FOgAqw3UrTTAzR6QWicG0AoJdlBcdUltEO4WV+q3FRlw4RVnA8uQENBDjX
WqwQBAC09OxAmKbGn9FETdMA/5abvOY7JgNcFhQutEVnJ90mF/npBucWkCRbOr83
t+NB0h5Te+lV/c+mjPyOemfWdAK4R9zQsat+ZqATv4Vgiy0UbJ/5TPfSraNK+QkX
nxcDrhpcJXZhX6VYzbWdRSn8xSZzPT19qq0BFafz9UhZKXnLDwAEDQP/dpZe0jWw
rED/Kbyr8CDoEKuun/5gPi5xmNz9iJlyvcsdOgok7yen0HHWgdaZAGX3GzjpB5gA
aISX/kK66s+NeM1XQ7YXpcI8naf0jPa6N3SNWjLf3xPxLbMk0SyaGnrnSQNikk/H
Bk2Nqyn0kcEaaBbdfrgkuuQWPnBDrq2EdOOIRgQYEQIABgUCONdarAAKCRCSC+/H
n9nh7oxxAKC+gMyhZmSZdTvT3a2Y0RDOx5kRLACeP3JEvGZAZuo1sJeEw504+jr8
1Xo=
=M+Al
-----END PGP PUBLIC KEY BLOCK-----

C.3.76 Masafumi NAKANE

pub  1024D/CE356B59 2000-02-19 Masafumi NAKANE <max@wide.ad.jp>
     Key fingerprint = EB40 BCAB 4CE5 0764 9942  378C 9596 159E CE35 6B59
uid                            Masafumi NAKANE <max@FreeBSD.org>
uid                            Masafumi NAKANE <max@accessibility.org>
uid                            Masafumi NAKANE <kd5pdi@qsl.net>
sub  1024g/FA9BD48B 2000-02-19
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1.2.2 (FreeBSD)

mQGiBDiuMYURBACEgL3d4mL0pojugj8TZFEQef+MKkXB3lazrqV2ahgWqt6K24qr
5fZrGkI8vxmYR4VkI1eLfe0Q4LoBZifL5nJYEvMvWPmdLuYjp4iwjgBdzLnwr59+
k8+T/fohGDOqx45voCdq68Jmxg283zFGQ4FChMP3ZMlOPmFRIp01C84xxwCguNFG
BVPeuM0y7JH0ucRygUqc4acD/jfe/UEjGBWxOCfZYOnXEp4NXWis3xRyUDO3cuoG
8M8MEmg0dX0onFuNU5yrEBFtzPw2GO6DMM8h5hJXdSWkiyusn05PGk/jVSP9/MD5
TYyqKL1tG/fKUgtevZSi7o1x/N0bgIBqmzd30Cqx29p7juVV+SBcKCRT1qloz6fc
a5B6A/wJD5n3HOAStsWpZ6To/Apdb4A3PD4+ePfQxSICsHCFg/M04FkrG48So2qc
7dSq6UH3xLsoiRIUonwCQsT+PaQQMrZNKjfal9xlEFfw1TV/squ+oNE8E24Lkzxt
8Kkn86Ec5uiUlRulSMG9HJuWM+9Qu7TF76FWP8llVp6ELkYCGrQhTWFzYWZ1bWkg
TkFLQU5FIDxtYXhARnJlZUJTRC5vcmc+iFcEExECABcFAjv4RDQFCwcKAwQDFQMC
AxYCAQIXgAAKCRCVlhWezjVrWUEIAKCgwVSawCg1Lzrbf8uZdMAfeOWFXQCcD7EF
tsdhbEV62AOUeQQWPr9de1O0J01hc2FmdW1pIE5BS0FORSA8bWF4QGFjY2Vzc2li
aWxpdHkub3JnPohXBBMRAgAXBQI7+ERfBQsHCgMEAxUDAgMWAgECF4AACgkQlZYV
ns41a1lUuwCgsIhWJdtPBebkV6w+NQ/8jlkJgrwAnj9lZkiTAgl1E/vcF7yPbY7f
HlHetCBNYXNhZnVtaSBOQUtBTkUgPGtkNXBkaUBxc2wubmV0PohXBBMRAgAXBQI7
+ESBBQsHCgMEAxUDAgMWAgECF4AACgkQlZYVns41a1nv1ACggYgtKhaprmMs30oz
yoC0NatFJ44AoI0XSPh2G9zHEjF8AyYAe6sVCLqvtCBNYXNhZnVtaSBOQUtBTkUg
PG1heEB3aWRlLmFkLmpwPohXBBMRAgAXBQI7+EljBQsHCgMEAxUDAgMWAgECF4AA
CgkQlZYVns41a1lYRwCcC8l4PdrwHKNrZlTW6vod6kYgR3YAni8iLUZW5Se6nTH9
WuN0XYPpZRG5uQENBDiuMdYQBADVzBBn5+1UQVCLS51y6eCD3TidT/uJAr+eeiWZ
IbTmXrltNm5rGs7OT9QYNLhCFFPYKJxa9hFbrGpgserEFnqBfxcbMLa/wyIm9m/l
MI+NNCAU4IpgDWtgjf1kjzwnJPwH69YzcqS2jlEKIjkCrEa/Bpr1Nvo4aLvqlTR8
tJh+1wAECwP/YBMEMx/zgTvS3Jtji6nPceRe8icGRHb4SD7MVF/WxYu5VK7wlmuw
9I9WXnHyYaL4c6Q49FAvwhkppByqJFL0txyJ8+nNa6H5mit8m6dcsCMG3NzyvxBP
082h/MWbJn3Xdg89lp4UG3UP8sV1oWyIchd8rqxFk/EVB7fVQWNz/gKIRgQYEQIA
BgUCOK4x1gAKCRCVlhWezjVrWUlcAJ467I5lFNlkwcENe5vND+DPaWyreQCfddOu
6Va2/bf7Ln4TKyl17uRro7Y=
=VmY5
-----END PGP PUBLIC KEY BLOCK-----

C.3.77 Yoichi NAKAYAMA

pub  1024D/E0788E46 2000-12-28 Yoichi NAKAYAMA <yoichi@assist.media.nagoya-u.ac.jp>
     Key fingerprint = 1550 2662 46B3 096C 0460  BC03 800D 0C8A E078 8E46
uid                            Yoichi NAKAYAMA <yoichi@eken.phys.nagoya-u.ac.jp>
uid                            Yoichi NAKAYAMA <yoichi@FreeBSD.org>
sub  1024g/B987A394 2000-12-28
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1.0.6 (GNU/Linux)
Comment: KUHASIKU WA http://www.gnupg.org/ WO GORANKUDASAI

mQGiBDpK8uIRBACY5SwFQXiqzDlO1k/syoFoiFIFl/Dp+QmwK2oovIvlBVo/1gbx
EhXrKRrfC67KSxxdUsgN290v/VVTmq8Opy1/RF+RAdxM3JrUfkcm5+IBWbSUfXFP
i8OXBVgh7wNENVtwwD52F+0CFIWZXkClaif4DGkf38V6LJ6hBIycxuNDQwCggXTT
Kj5SP2hFC0ueyQtPDoJEgbED/0bPL9R08io82IQqksOR9IUy0OdFJkLVWLnollEY
LGjXa/AHgE8L8oWU/2eF1WM4JrtVRdcKe0Ja2e9LuH6IonGAdwqUeeAOwA/RdGj3
63EglH5ugv4rZZKWZ3/piuNXvtq0bhAfl6zBHi5iUB4bgPVoVJGn3VyykPWxdqfX
sT5+A/wIml11cFMogN3RXy/2Y3JRWeBtUCfdoRjeQPgK8++krm2Pr/AtHgcqNSjI
W0slX4cLou2TEhV3BHb/4npsdaY0BzYgL7V1YggCv0Pu1s2D53Nzi30V66SRP0BZ
OlNTA88WdMfoF3ttb04swSenG9X8dbpyYEdlvxNbbKKbUiBORbQxWW9pY2hpIE5B
S0FZQU1BIDx5b2ljaGlAZWtlbi5waHlzLm5hZ295YS11LmFjLmpwPohXBBMRAgAX
BQI6SvLiBQsHCgMEAxUDAgMWAgECF4AACgkQgA0MiuB4jkZz3wCeIi857V2zyRA7
gRVsx+DcoCLeC3YAn2G3gFd+v14iZHXrPaqpd1gSjjayiEYEEhECAAYFAj2pty0A
CgkQFwU5DuZsm7CchQCfdD/itI8d/uhmH9A0upJYYoYS46YAoOAfpFKvAGe/vBpw
dy40SxBG/qELtCRZb2ljaGkgTkFLQVlBTUEgPHlvaWNoaUBGcmVlQlNELm9yZz6I
VwQTEQIAFwUCPai4HwULBwoDBAMVAwIDFgIBAheAAAoJEIANDIrgeI5GKx0An1kh
KzDAfR7Fzba/V7DHq2BRLcRQAJ9nZFgBncerxFMYAanwJruIYtPnJYhGBBIRAgAG
BQI9qbcxAAoJEBcFOQ7mbJuwe4kAn1E2VVFpLajGFYgipCmMgpxRXPmxAKCUa/ee
BEW5LPNf8xhaeIGlAtPZm7Q0WW9pY2hpIE5BS0FZQU1BIDx5b2ljaGlAYXNzaXN0
Lm1lZGlhLm5hZ295YS11LmFjLmpwPohXBBMRAgAXBQI9qLhMBQsHCgMEAxUDAgMW
AgECF4AACgkQgA0MiuB4jkYrnQCfUgkHO/ioUTHeBtYJHGeL9qthlnMAnikYzk6K
gDV8cHI/ETcNoh542Q6piEYEEhECAAYFAj2ptzEACgkQFwU5DuZsm7A/JgCgvX8u
hjU7WPofTfM2d11+j+ywHm4AnRS8iRNMqbP9+crcNzCRSQ7OZFqluQENBDpK8vEQ
BAClmz0m/wuG01nst/7X+riyNgZ3j3oRurb9Fg2pb7wkci6nlhzCHTcFNCZiY1nS
Vp+/3tRkC7HQPz3zhYo3ieCf12NUweJ8jhbZubp1fYY9ubKoj12I+LXTfZf3kA5G
UD/n1nkAqxH2yP3eVz1BpKUc+Lz+5USiDo+XfrvfxQcZHwADBQP9GejakrIdVKcA
/4UTWnMh8HK2b7tDLwLKyJg/8lagBkIAH5tPpCXi1qXuvHe+T9SjbdwW/lyxSARV
FAz1ejp4QEWsAGQ/pchjb+S+iYvNq0VfzkZPqFFllLMaQc9mo6blgGgSEqLNpba6
gDmVTJZ5jAhVxFBhRPwchSdPP3ewVRWIRgQYEQIABgUCOkry8QAKCRCADQyK4HiO
RpwtAJ0alZHYWdBCXaPF9G9HCl/T40wzJQCdF5K4aEEsIG1P0WmNjbY4PEAVndc=
=NZ/b
-----END PGP PUBLIC KEY BLOCK-----

C.3.78 Alexander Nedotsukov

pub  1024D/D004116C 2003-08-14 Alexander Nedotsukov <bland@FreeBSD.org>
     Key fingerprint = 35E2 5020 55FC 2071 4ADD  1A4A 86B6 8A5D D004 116C
sub  1024g/1CCA8D46 2003-08-14
-----BEGIN PGP PUBLIC KEY BLOCK-----

mQGiBD87tOARBACkfv0/19ar/kUNsj2vL+APjo/cx0A0bubEmaPhwNuLOjtafdNm
/pUULYi28lDVDxQJ8UM1voqrCcue+finCyy+k2L0nR37tlUA4t/+GH4gq4y2xL7S
o/D5DqHDA0cTDAIQCbdD/rj3Z7nJw2Vkn3tAwZ6NUXV7OdLS+csbpJIjmwCg0HB1
tzahpgegUe5XauCly+NXNMMD/3UcnNA7kBKSZMcuOVq7TkqYYvQZPoroK3yYcAZL
Yo4WoPEyjtlD/ZpZVysQiSMxLXRHjsEbMAMZL7Tx/Sav01XUiBHBGDHXaWWVdqmg
efxtBeoG7MZxAAXBLfcSeV0bjkd9oGWW/inHrl0NgEljZQqo1kbIEb5asooyT18v
vZgjA/9l8xZdOlSJv7Ct+VGrfMStMmpBCn7IRSjeJRq2pNe0pbJtzXAnAwyrB62X
gF6n7ONKdLk/WPihRdfrc4BZnNIWZU0q5P11rOENQEnToprAOYebhmS6cY0lx0SR
M00HVTTgzsNVWDy9h+uOobicBSHPh2La7KGnFRtMb6pZFg5Y2LQoQWxleGFuZGVy
IE5lZG90c3Vrb3YgPGJsYW5kQEZyZWVCU0Qub3JnPohbBBMRAgAbBQI/O7TgBgsJ
CAcDAgMVAgMDFgIBAh4BAheAAAoJEIa2il3QBBFsAUoAoIGf7gn1DPL+Miw3/2W1
YdJPT3TjAJ9LOVjgV1mZks+FjRdl1IETcJ4fPLkBDQQ/O7TjEAQA9yIaEvU/Vbj0
L1xFjIOGEyM5vFvn5xP2LibOI7hUH+cMDaWkBgrSLqsI7k6P3HSTVWpkKUTl+vJe
OJnIx1gFE/WJDPK5trnjzHQI9kWf6j8EREXCFuuvDy3QhuJiHTjB+I8IVYh+oiXl
6SNo0ekvQd6KZlkPUXy8rczb8Y+A7GsAAwUD/iPYrIWC4xSX8kL6HFjaE2fS42EW
iyfyb7slFSE2xtRf+xZyBa2Mu5XQsg+vJcSBsjrxpYdd+OuyTLuYRsYvuLZnB65H
tTli1/ous2J56useJyeik9wJfFyZBlOtmw1QFLxELly+XgKiyGRNkTrws+smyFjC
GWwhlhc40r824oWPiEYEGBECAAYFAj87tOMACgkQhraKXdAEEWySXACgwFVr9ZgH
TYnmgWGXAmQWvJV+xAQAn2HlGDmOpuTDzfO5PvXOOWnFjvIt
=bcPN
-----END PGP PUBLIC KEY BLOCK-----

C.3.79 Simon L. Nielsen

pub  1024D/27359A51 2003-07-22 Simon L. Nielsen <simon@nitro.dk>
     Key fingerprint = 912B F341 7E90 2049 05B4  3800 87DA 5C0D 2735 9A51
uid                            Simon L. Nielsen <simon@FreeBSD.org>
sub  2048g/C11D9097 2003-07-22 [expires: 2006-07-21]
-----BEGIN PGP PUBLIC KEY BLOCK-----

mQGiBD8dLTcRBADMsl+DCPR8Q1jwimfBJcaQv+oSW/gM6H3hTbIdge6atmkmqPCd
KsD4DO56upi76h6SQSIiJbzKK+FVJGXaIhpBQ09obulObrmd/EnpxJRDwkOh7Yfc
WoVrkzZu2nJTRVgRzcVN5S91mG8jC080+izpBdSXFEn22gRqNmq5nOTlJwCgzG1i
iVXRCkOO2AKgS4jvHn8skFMD/0vRit2WUPhcrvhL15JfUOuRpG9A8h4uqBxeK1pu
rDX93XFeiBmGdi4cLy6D5wyJwkp3biojiHhTeBOQqNrwsa1O1Jg5OVXR6vT4KFcV
goItGZezSJk+e9BmjhiOgaFiWuTXcvyBGv/hgGNAeW5UY/gA8FH7Mu/FbqGDAsGi
DJFOBACJIe8UhdiK4QOUrlAk3OoX9UrgCmBQwwxBZKkQyjKgeKTgIQ+jnjiZ3Azj
eR9Z1H4Y80BGeCoZCe0l0wdRjm4lQVD8gk7wp0Ru5qBhxxV8cQIhyRHzfgt58UDl
jAnAk4bvfUtHApx+G3bVh5jhvEuGLnZsB2d5XNqZLMEMvcCBdrQhU2ltb24gTC4g
TmllbHNlbiA8c2ltb25Abml0cm8uZGs+iGQEExECACQFCQWjmoAGCwkIBwMCAxUC
AwMWAgECHgECF4AFAj8dMhkCGQEACgkQh9pcDSc1mlH6LACfRWO9Uv2sLEfRk0lf
DbBuo6BZl2MAoJtKCZRBW5GOdLUvUWLE3p+YYxn+iEwEExECAAwFAj8dMioFgwWj
lY0ACgkQ8kocFXgPTRwyMwCgxHTbtWznRLOuvDtUGKD//6IVGt8AoIV/yqC4/eMc
To/U23AXnVMyUlRHtCRTaW1vbiBMLiBOaWVsc2VuIDxzaW1vbkBGcmVlQlNELm9y
Zz6IZAQTEQIAJAUCPx0tagIbAwUJBaOagAYLCQgHAwIDFQIDAxYCAQIeAQIXgAAK
CRCH2lwNJzWaUZARAJ0d0KQu1jQh7j4tOs/4jnJXPe4D+gCfQVlNR6jR9cLwVB2x
WDVzWqPG1WmITAQTEQIADAUCPx0yKgWDBaOVjQAKCRDyShwVeA9NHB1sAKCodM0f
LdSyHN6pe+nAZaX1upC8TgCeKTtcl7BvRXeznP+JGUMUT0Qb6CW5Ag0EPx0tQBAI
ALZ59V+SBIYMA6pk5gzPAxfvs9RZnLCAktE+BlssdYfsed+mu3VbcXmrtKMbb1xB
ADW/Jr9JsUQIC2McVCB0ZGtiZDPxIvcLaGQAVUsN6Q/FPrT7fHuN4r+DKPB4BXJ0
2CK/qYZLrid3XsrYVc/7W/InaTz6skrIwfykggO4e5JNNd2hraahihQWurHJEQq0
4leB+gMg4KBGKD5dc+M/Orw5Z9jhsT/+GkAQlwPsBVvNXks9RnLldkL5N7CDw7jL
00RBJnASNPJp44zKPP4mMtFNOoYmFQVQGC7Qt+yHalGhdFR2qnsshz2Tm3BuNvI0
vbSRMxJjl3W88pCwpgZvOEMAAwYH/RcMNwpjDEhXoyPBwXIGRPerP1j7ZLMeGW4N
cakUorZ5Qt/m2H5n0WAjVQaoKs+l+WYTpyGcg8ilFcBQjVJM9g9oWaGi0X9VL2XE
JXtWu8F+epXRzfZSoj3UFk0iT0ut0ckrjaJKvkMdvrWfTlu2l1TPbG/UjlXoY6uJ
Xgo85CwkaSgoV7HEUyr7CI2LLbnwGNw0Ugx6wU+lZoPqUylRCf1wwEMokyo/qHx4
dlsELvQlfG2sOrX5ogwQcU05FwyWK8zZC5XynrMEXYt1aLlgOrgO8RTac47KYw2z
SSRvRPANpgRZ+BGJtPvWl5gQRV+vohxgW2flWRNiqKLJ89Kmm0SITAQYEQIADAUC
Px0tQAUJBaOagAAKCRCH2lwNJzWaUazaAJ9koP8M9azeT7FzlMv3QTihNQfn3QCf
RIjHFx0IpWJIGdTWrCB3m02y35Q=
=TWiy
-----END PGP PUBLIC KEY BLOCK-----

C.3.80 Anders Nordby

pub  1024D/00835956 2000-08-13 Anders Nordby <anders@fix.no>
     Key fingerprint = 1E0F C53C D8DF 6A8F EAAD  19C5 D12A BC9F 0083 5956
uid                            Anders Nordby <anders@FreeBSD.org>
sub  2048g/4B160901 2000-08-13
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1.0.6 (FreeBSD)
Comment: For info see http://www.gnupg.org

mQGiBDmXNAsRBAD0WcmPy11DRvDsEpadBPCATmPrvAImfj5XjcxBAJlBJoc9fiq4
8OcnipVdId6STdVKvB3K3h9aNsb75+rD/W3nMi8MumjyXJoHAf8d68cnjppizcPd
uQPOy76lkbiyV9OYBtaNQqmU8hE8MTr5Kew9NBCoC4SB4NX8kVh8iglrZwCg8J4F
ltBYDz+Z5ZGoh54fnYN6IAED/jO7ISCvWbFtnzCw1FOghcgueqrWoy0OYKq8ZfuO
m046fuIlHcswJOKLLexTajsYAC0WWe9H3SvKvv1etexMh5SsrgWTsSuIvlPfG4oj
D5vIYqvH5NiqJdh9qiFEzGsv44jgESDVy9qaErbXRVe9htuRZqbtEPnB5cRRwTr1
WhfuBADW1VLXj3UGw4OeBBd5KPIYXCx7RKS4nfrlBCqMcIaiD+K42U+7PXEJB8uM
2sJ6uRYs0j4tTLBbDC2TC1QfT5NIVLG5wWkIh+jL7PODH+i4LF8n0pQyuLwJOFAx
s6RIHNPB2fdI5sqB9lMIBszlb896wVJf9PPWFAt/5Aekw7eTLbQiQW5kZXJzIE5v
cmRieSA8YW5kZXJzQEZyZWVCU0Qub3JnPohXBBMRAgAXBQI76xZsBQsHCgMEAxUD
AgMWAgECF4AACgkQ0Sq8nwCDWVZnYgCg4fzk40pYLg3iNayO9dDNp4yHS/MAoLi/
WCYhNOS0TMpap9SQXC/2e0MZtB1BbmRlcnMgTm9yZGJ5IDxhbmRlcnNAZml4Lm5v
PohXBBMRAgAXBQI76xekBQsHCgMEAxUDAgMWAgECF4AACgkQ0Sq8nwCDWVaoNACd
HR57Uuyyti+OqVr4zaVEIgg+bYwAoMcFR3xdqArQmp561541p+k1IBUWuQINBDmX
NGsQCADRkDqg2uW9mn5YCXlzx9KlhAfPRny6kF4+B+ga0ZaIzJng2pY8EsAxKn88
yH6ERs/PYdsy/AyksG8vzuc9CalW8JFEc+kvtJIL0HhBonlInaeUWHPixGEcOPcW
ab8dPhW3zfEgOqquky21d8Zg+G3Z29tmKGcYKSQgt6W59z7vITK7+gv7tOGp2IpZ
1kGqPZn+JqvB3n/uWo3rTxOGA/tduMwfESA5gHmEzKmU/17yIkE0SflKOp0VIGdl
Fp1A1ULJDDVXjtDkxFvZ1I+WpqF7p9FCgy/OHUfUa0py3uHIEKMahqpAZ9e8D+GI
nGizPR33ZY5PfM72ABXeGhFnweP/AAQNB/9HPBzxoJJFJNLyosSlI+Wkmh51K/nC
EawQG6a+tgL6cPHgJQkgthPUywkI+2g7SUSurgPz0hRCPg2PjHP3PwVhjKzUgfAj
y9eVnu+JSpst/a0Y5LEQdNnwG+Y+Cs0q9xj4T1VXw8B9fA3y1wS1a13zCQjfLrZP
ziIGjHIBvpOFrSU3ML1rRaVfQpm2wQXsGHzjkaZq7HQy2EOVLzik34XkPBY1DrnY
nSEwSurfjTrKTLNYsN53xCGwJ2w2347qXr04j87XhRmGCJQ/Nrrin4z4LQ/zNm5Z
bErlts8PAfR13kqP7rx/H1n5obhpOoXUqb4Rm94c0r/s9JRah9ppgADRiEYEGBEC
AAYFAjmXNGsACgkQ0Sq8nwCDWVbTvwCcCG0X50Tq7V4NeGgREttltmR7UlYAoOgK
1OFsIdCCq6JjrwvfN7ry3pwc
=clge
-----END PGP PUBLIC KEY BLOCK-----

C.3.81 David O'Brien

pub  1024R/34F9F9D5 1995-04-23 David E. O'Brien <defunct - obrien@Sea.Legent.com>
     Key fingerprint = B7 4D 3E E9 11 39 5F A3  90 76 5D 69 58 D9 98 7A
uid                            David E. O'Brien <obrien@NUXI.com>
uid                            deobrien@ucdavis.edu
uid                            David E. O'Brien <whois Do38>
uid                            David E. O'Brien <obrien@FreeBSD.org>
uid                            David E. O'Brien <dobrien@seas.gwu.edu>
uid                            David E. O'Brien <obrien@cs.ucdavis.edu>
uid                            David E. O'Brien <defunct - obrien@media.sra.com>
uid                            David E. O'Brien <obrien@elsewhere.roanoke.va.us>
uid                            David E. O'Brien <obrien@Nuxi.com>

pub  1024D/7F9A9BA2 1998-06-10 "David E. O'Brien" <obrien@cs.ucdavis.edu>
     Key fingerprint = 02FD 495F D03C 9AF2 5DB7  F496 6FC8 DABD 7F9A 9BA2
uid                            "David E. O'Brien" <obrien@NUXI.com>
uid                            "David E. O'Brien" <obrien@FreeBSD.org>
sub  3072g/BA32C20D 1998-06-10
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1.0.6 (FreeBSD)
Comment: For info see http://www.gnupg.org

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
wFQ+RbHSXThyO1HZCYdfSaaYVfrrLv5ooTBRHzP5DlSXk13nddBOE4g/AwUQOT3B
NOMeMj1ArjBSEQKxUQCfY3XjdW3Yun2hWKmKaPpXDBKonz0An1Wr4nbjBvlsovrs
eysWYs1ovDgKtCdEYXZpZCBFLiBPJ0JyaWVuIDxkb2JyaWVuQHNlYXMuZ3d1LmVk
dT6JAJUDBRAw9rraP9k6yEHOCYkBAZjmA/9lczxVp0UjLAXM3jfErQv2dzpLDAiT
QVp10pi+a8mAzPVCnmCfcNy4fQJbInAfe5FC8gxBe9DnsjLfHh5vlZzDHANpbq5P
MLW5C2igBoAg0Im4RpevDhD664ZgYgB6HXHhPBSB3Gaarnpx+R6JpfDBolSg6Boi
IN3q+kzftlTaDIkAlQMFEC+a5SFlYKmsNPn51QEB/tEEALKURfb7Y7metDHx5oV5
LybWyV8cTJKINUllX8HDnz6zZQ7bMYlQ0qsqRqEIDMpMk1tojT+/HI4te21uW0T/
FCemdm7leZM6g38Ne358L8jY/34iz0bIFeZjDzLoOKW5C8wtG/N88voiE0grVR3e
iFEmtwWT5lRaV+DmKYQ4kXxAiQCVAwUQL6UVDceLqoSSZB6ZAQFokgP9G9xfWcKj
CxbEr9TAEDsKIsNkKQKEFlfqGuAjSVWOBqEIyG0Wb1pZEQKHI379aEK9nVNSsQ5m
Qk/E6JRvYENt9q5uJ9mp6+wPUVYt83YL7uv1YJJSy788tdr1esutgiAeLNmNMmOg
Rw3vz8iKYJozmSyDSK/HwHS7zZ2Q9K5hpDCJAJUDBRAvoGvwym8rg/wMAtUBATFj
A/9h8jSR5py9wPy6WkjsYQbml8B2fVjsLzoQbMI+b5IFYeDkRYLTnSLJKzuK8zHn
1aFeXIhD0CRY5PC9jMAu84I59iE90x95uLPAH00rSJam2gEqPovRYcinADluivOT
XGAn5qN9bKlmdsFNLMIFs/rohnIFab7wG3+t+i+8YYY2YIkAdQMFEC/kX5DT8j9C
J2rqEQEBOFcDAKcdXpMcMjw+uSDwNc0pjOEYkfnpaW6MKnOo0qbwALmuSn/l21+J
eypp1kr9VeWKn9tcUHucBHyTzswxeu21jI/KUUIRzuQsupgnop5LyNNrpDjxbQvN
uiBIX+jAVQvxsbQoRGF2aWQgRS4gTydCcmllbiA8b2JyaWVuQGNzLnVjZGF2aXMu
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
lSVmAKDF3kyQAZDAyz+21MQJnmJ2O5dFJg==
=cMCa
-----END PGP PUBLIC KEY BLOCK-----

C.3.82 Mark Peek

pub  1024D/330D4D01 2002-01-27 Mark Peek <mp@FreeBSD.org>
     Key fingerprint = 510C 96EE B4FB 1B0A 2CF8  A0AF 74B0 0B0E 330D 4D01
sub  1024g/9C6CAC09 2002-01-27
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1.0.6 (FreeBSD)
Comment: For info see http://www.gnupg.org

mQGiBDxThkERBACPf5/QHmyM944qrl3hWlWvK9fZZR2c37rhxAeqDJ8WsEMPBTZK
WPn9BsMk+2d8e62FkzYo6L5juekd8invwd1nnszFFJdTDWx+vpMMgYuHBmme0QuP
OnlU2FwJUCknw5Ed5pYV8F6azGgUNjYKIIJi/L3D9S2qDZ7l+3DgD0knKwCg4o8Z
ZE2vd9uQw0AZ7lIa+li3hB8D/jHrVZqHxhOuUbxIXoJG3g54mH4i9GF8uN8ZdhA0
9AxLVLzjLr4CQd97++LdSLagSvgD9N6OrtMPeqge4Frr1anJ+LRPDeOQhd0meJZB
iCiekil4DSOsowqgmIG7DlAJx+PNV66qO1ExX1fv1ugyoWHJqYmdBSF9x1fHU788
GxCtBACC9DLBMmMVu1Fsw3rnkZaR7xX1a1Bu95ZUu6TKJP6qUS5GnQOxF7dDjuwX
/uRinkQ7W9vR4UuVvcV+Ct5R/yq7e+SfLb+YFQ2BmWeGNs5AVLxIZsZ0ar16fwB9
XdxxHU/IkA3kYo4JfTvi3QXjLn4mbYUuBIVGAL63UO1kx1c8crQaTWFyayBQZWVr
IDxtcEBGcmVlQlNELm9yZz6IVwQTEQIAFwUCPFOGQQULBwoDBAMVAwIDFgIBAheA
AAoJEHSwCw4zDU0BXeQAoMlSoeOO5WtFMyC8viNAafpPcT6hAKCcjmQyI/cI0id2
PMX9ZOfrKd/ma7kBDQQ8U4ZDEAQAw9gcDj02cAlUh8G9bLIQazPLJnX0fah7KB3O
kxh8wFn0LliP7W7HLB+nQNyO4TfNgI0bhVyKDQQbKI2xJ4hylo9Z1K2R7GilgCnB
FUqIp0MdqAswX2Dq7KXoyYAZRBOnQounUMaQ+6cfRI37mWc6dC2uY5qHne4zmLML
/lVOjVMAAwYD/1ZArkN4IDk/VALPnzW4VYcCcT+101DMZfIMvHK2MiwWFmO+Er/K
gIo9DrybHNQ6+bVQh/F6PSlxDrgWey7dQbHQSssC364v3RPOCmuBJCMTEszaais3
VekHF9i9NMsUzbGpowaQv+YKMFQu4Rtlwaq7NUp/cD4a+jaxto9ij4EliEYEGBEC
AAYFAjxThkMACgkQdLALDjMNTQHvuQCg1PrMlcafQ3BUaXAQRlGoyvF2WcQAn17c
HA1RAO/MXM99nT62+AKLlpeb
=mfY+
-----END PGP PUBLIC KEY BLOCK-----

C.3.83 Peter Pentchev

pub  1024D/16194553 2002-02-01 Peter Pentchev <roam@ringlet.net>
     Key fingerprint = FDBA FD79 C26F 3C51 C95E  DF9E ED18 B68D 1619 4553
uid                            Peter Pentchev <roam@sbnd.net>
uid                            Peter Pentchev <roam@FreeBSD.org>
uid                            Peter Pentchev <roam@online.bg>
uid                            Peter Pentchev <roam@orbitel.bg>
uid                            Peter Pentchev <roam@techlab.office1.bg>
sub  1024g/7074473C 2002-02-01
-----BEGIN PGP PUBLIC KEY BLOCK-----

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
=7eJY
-----END PGP PUBLIC KEY BLOCK-----

C.3.84 Denis Peplin

pub  1024D/485DDDF5 2003-09-11 Denis Peplin <den@FreeBSD.org>
     Key fingerprint = 495D 158C 8EC9 C2C1 80F5  EA96 6F72 7C1C 485D DDF5
sub  1024g/E70BA158 2003-09-11
-----BEGIN PGP PUBLIC KEY BLOCK-----

mQGiBD9gSfARBAC0ZC5VEuEzqk8KQ3tFam5rugDTaigVzYDmT6XBrQuVwYrFY5zj
gz3o87e/KGmvh0FgpulhoJpkOW9l7oPQpp0wvEm45WRq17+7quW9VppgVCzs79FL
Cc77A4g5LAuO27i1yygfMfPrr6J/M5bM2FyuUS35QvKBTlkZiB/Zt1d1QwCgzJML
PdRvozXQdg6/bPc+M3Wh9AsD/0NxL7cwGExg57hnxA3oNB4M7IM1MwbDDaEQvJbW
Ls8c+x2UMzdE4XHMhr940GiwUzEa1lyy0M7FmB+cdFgqhJ1VFjYE6VyGkyYtticL
my6Im5S4Pfvx7pO2qLmYW+OnbnC6FFgFPbsAZVl/1fy4hN7U2zQIMw3kIodFBnyN
RMsvA/9uzITCim3ov/9x4OYX0BfUNNmczIZMvXbmcuDH+NfwkGu9pmRitx/AWHGJ
chOv4vMuMnBHU12TV1dstlWrb+Q5DVrnbVUq90mUbxg2emvlv+xK2oZ9EBKjAv/z
NFqySi52vd+OmgopbVI6bI2+VdKrKeNcDByt/2zRGo9Y9hDULbQeRGVuaXMgUGVw
bGluIDxkZW5ARnJlZUJTRC5vcmc+iFsEExECABsFAj9gSfAGCwkIBwMCAxUCAwMW
AgECHgECF4AACgkQb3J8HEhd3fUzKwCgj1hA+IDNLHGdD+ua2bs3nPcL+vMAnjR8
6CwsvOZIL5cr0EyveMsGNWqnuQENBD9gSfIQBAD+YKY2v46TD994B3h0KtAI8/Zd
aJ+K1yUNIDxjueo7v+c3jKaWPgX1h+Cr/O936IVnG1zg81zEF0Ly6NcwWrj70UDO
deA4tvx8HQoYfjwRA2kYAv73yvt+UG6WS3cGkX28dcLb8/JEV5M64AYKhgqRX12m
VJWIKdqMYzho8n0mCwADBQQA9WcaZB8RVj22I88DA6okYxiU2vqAN+QUvZfX0X1/
7Rh3mB8iAXBuASEw6NbQnGtky8RlkTDgYu1UJt0aSV2U2CXKOyPCJut0Ka+YYtOM
prdHmnNSksNvwThju8F6js51nrf3D/7L9SFhc+W8JTfa8iz9Zfgq1HQkZ3foSO5J
W0CIRgQYEQIABgUCP2BJ8gAKCRBvcnwcSF3d9Ut3AJ9WFh2gFxmqE8O3B85dO4yx
z/OvxQCgsQynjVGZI9JJn1W0KOAYSbihdu4=
=kQUf
-----END PGP PUBLIC KEY BLOCK-----

C.3.85 Jim Pirzyk

pub  1024D/4E23DACA 2001-03-02 Jim Pirzyk <pirzyk@freebsd.org>
     Key fingerprint = 07EE A1BD 32E5 C402 59B6  22D5 D846 31D1 4E23 DACA
uid                            Jim Pirzyk <Jim.Pirzyk@disney.com>
sub  1024g/F38895F7 2001-03-02
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1.0.6 (FreeBSD)
Comment: For info see http://www.gnupg.org

mQGiBDqfK40RBADDZo6Nm31TcstpbbDGjJXxTAace2fZhTtu98UaC3/78vD+YTqH
Mp4sR6OSSWuf1vS9MSeaHJitLvuProQvOC+yEKzW31KuAPnldqrTerEdcy41GASb
NbqNz0fTBOUyRebJQ52XZjFC3nagAf+btqIEd8rRegwK0JDWdkIhuNztBwCgzWyj
Z3y2+rYSoTc0gK170uL/zAUD/jIOCSPtLFgZf8AgPaxx1fkWmDZdf4RKpckVMgnK
vZrQkhXymksXoH7CeT2MpB5R05tpOQF4jV8OwCHSYqJ3P1XlEod7plw98BUiyS3y
gu+ML1fiIERHnZumDFxRwKN2ybkzMbZzuHiZl3pAdWe+3lYa65aRIs3CrUoQSzN1
/JfJBACtOCm6Xq8kfk4fVvlN3lqDcpU7Gw3kJiudOg3gAv45egeG18HKJI3H6gvq
N7rj0xl4m0vEL5AYBRJ/THVy/3574s0DwCCPI18VQPL8vmSXc8UgAkJlgkdtumH3
OHqPNi4NPEd82wECXmnflbCS5A5CXGtrzXsPMrhiXz3lpFFR+LQiSmltIFBpcnp5
ayA8SmltLlBpcnp5a0BkaXNuZXkuY29tPohXBBMRAgAXBQI6nyuNBQsHCgMEAxUD
AgMWAgECF4AACgkQ2EYx0U4j2sqnWQCgvXWdITNFCbKedEmEXTbwzzKq0qcAnjrg
XUiN3MvMvXk9tnGDCJwnWhoYtB9KaW0gUGlyenlrIDxwaXJ6eWtAZnJlZWJzZC5v
cmc+iFcEExECABcFAjsEMxcFCwcKAwQDFQMCAxYCAQIXgAAKCRDYRjHRTiPaym2w
AJ4oUKyvm2uf0Hkqig4s66TzKYVu2ACfVLrGSFHD0oharwIs8CcwN5wPg5O5AQ0E
Op8rmBAEAOKSRsTI+Ty5w27RVzf62B29RZOfdySTmEPQu3YdlWFuA7Rks5fD565U
PMUtPRzTEy7ofoPHxWv0bgbEBDuAoXmkjz/KYhcTGCwVyzg9PN/QEa8F/ETn/1Y9
bbTejC3mM6ThPDqKvdh70IZW7jMfeDxKUTCHs3rFdGQrJfbdP6dnAAMFA/94szUi
Hx02WgHQjVdYjFNp4YdWNTn/HEDZZdhKyI+ATw1IqtnnAlhSfLW0AhRIr2qSwT2t
PW6eocCmrDHPd1VZ891QfcF/tWkSIgB8ROaFkjJra57wZO+/Dg46kdpZYh5xjrbR
tffQr2c0/2tnvTrl4/ErMmhskeppBtwZfpuzE4hGBBgRAgAGBQI6nyuYAAoJENhG
MdFOI9rKNWcAn2WQbmvRcYF9B0YjzGNFKXjGjzuVAJ4v+kxM46P9tcQ3ZTKMKOaz
9bVtpA==
=ggLc
-----END PGP PUBLIC KEY BLOCK-----

C.3.86 John Polstra

pub  1024R/BFBCF449 1997-02-14 John D. Polstra <jdp@polstra.com>
     Key fingerprint = 54 3A 90 59 6B A4 9D 61  BF 1D 03 09 35 8D F6 0D
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1.0.6 (FreeBSD)
Comment: For info see http://www.gnupg.org

mQCNAzMElMEAAAEEALizp6ZW9QifQgWoFmG3cXhzQ1+Gt+a4S1adC/TdHdBvw1M/
I6Ok7TC0dKF8blW3VRgeHo4F3XhGn+n9MqIdboh4HJC5Iiy63m98sVLJSwyGO4oM
dkEGyyCLxqP6h/DU/tzNBdqFzetGtYvU4ftt3RO0a506cr2CHcdm8Q+/vPRJAAUR
tCFKb2huIEQuIFBvbHN0cmEgPGpkcEBwb2xzdHJhLmNvbT6JAJUDBRAzBNBE9RVb
+45ULV0BAWgiA/0WWO3+c3qlptPCHJ3DFm6gG/qNKsY94agL/mHOr0fxMP5l2qKX
O6a1bWkvGoYq0EwoKGFfn0QeHiCl6jVi3CdBX+W7bObMcoi+foqZ6zluOWBC1Jdk
WQ5/DeqQGYXqbYjqO8voCScTAPge3XlMwVpMZTv24u+nYxtLkE0ZcwtY9IkAlQMF
EDMEt/DHZvEPv7z0SQEBXh8D/2egM5ckIRpGz9kcFTDClgdWWtlgwC1iI2p9gEhq
aufy+FUJlZS4GSQLWB0BlrTmDC9HuyQ+KZqKFRbVZLyzkH7WFs4zDmwQryLV5wkN
C4BRRBXZfWy8s4+zT2WQD1aPO+ZsgRauYLkJgTvXTPU2JCN62Nsd8R7bJS5tuHEm
7HGmiQCVAwUQMwSvHB9/qQgDWPy9AQFAhAQAgJ1AlbKITrEoJ0+pLIsov3eQ348m
SVHEBGIkU3Xznjr8NzT9aYtq4TIzt8jplqP3QoV1ka1yYpZf0NjvfZ+ffYp/sIaU
wPbEpgtmHnVWJAebMbNs/Ad1w8GDvxEt9IaCbMJGZnHmfnEqOBIxF7VBDPHHoJxM
V31K/PIoYsHAy5w=
=cHFa
-----END PGP PUBLIC KEY BLOCK-----

C.3.87 Kirill Ponomarew

pub  1024D/AEB426E5 2002-04-07 Kirill Ponomarew <ponomarew@oberon.net>
     Key fingerprint = 58E7 B953 57A2 D9DD 4960  2A2D 402D 46E9 AEB4 26E5
uid                            Kirill Ponomarew <krion@netic.de>
uid                            Kirill Ponomarew <krion@guug.de>
uid                            Kirill Ponomarew <krion@FreeBSD.org>
sub  1024g/0CEE1A9B 2002-04-07
-----BEGIN PGP PUBLIC KEY BLOCK-----

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
/V9mzIKIAJ4t9TIuZLbKZjDxDY8Acz+a2+W7SA==
=K6me
-----END PGP PUBLIC KEY BLOCK-----

C.3.88 Mark Pulford

pub  1024D/182C368F 2000-05-10 Mark Pulford <markp@FreeBSD.org>
     Key fingerprint = 58C9 C9BF C758 D8D4 7022  8EF5 559F 7F7B 182C 368F
uid                            Mark Pulford <mark@kyne.com.au>
sub  2048g/380573E8 2000-05-10
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1.0.6 (FreeBSD)
Comment: For info see http://www.gnupg.org

mQGiBDkY4OYRBADvB+3Uh68SGrlbrq1MTAN/gnVaj4ztmA15X13bunGYdLKLEJdq
rd9xFv5OgxGZXJ+sDhbKomJ7yrBGtUwC5kIrKXN+MPbO60yy30+kIVLKjXIv1d+c
MlWhjFzHra7WGFmvhzYnbOI/zjlOR68iKHnwxhtKFOK9m2O3voURWLEuqwCgzK/S
j4UGrPUmZf9XOZcKdnN07nMEAJrNh6aoVgK1xwpyO9uTURuCppqAUym/fr4xNQqh
mngblwIACnV9FpBi1ogtX1iDo4YeQa7t7ALgdwTBbU8upVFYzoVByid9ibNu3OKv
j9JvL55jUVg0wv6a8bEWjxnNK/zVa/HCzTbAzHob0CSgH9WmEJJEUIqI2/PG2dj+
ZX3QA/4y6Gon6iya2wk0Zs7mrTj80kxLRMnuPN6geTGVNTfrxat+sA1PVpT2WWSo
qOrPoyxcpUBbJ3VlFmuYDDgld4lJiGD/2SG5BkD6OoGlRnD5AMgUxQtQFnkloao0
3md8UDucIJnJRF94pttQtv4lVKaocm4z0Fx6cWC4Ysupj1AG0rQfTWFyayBQdWxm
b3JkIDxtYXJrQGt5bmUuY29tLmF1PohWBBMRAgAWBQI5GODmBAsKBAMDFQMCAxYC
AQIXgAAKCRBVn397GCw2jxyVAKCbPwK2rDZx/oahfd4M7XJ4GoF0xQCcDExtL+DK
wOugUQwfVIExB+HBM3y0IE1hcmsgUHVsZm9yZCA8bWFya3BARnJlZUJTRC5vcmc+
iFcEExECABcFAjse9k4FCwcKAwQDFQMCAxYCAQIXgAAKCRBVn397GCw2j/OXAJsF
bdYQGgCs3sXMOdb7pNUi2DL2kgCdFOFSojmWV9mulpzH6ceb/fKgoJC5Ag0EORjh
UxAIAMrmc2VXtnp/WWhGne6yTirnnWjR/c+rSK8ixbAqTkdYnocY6gtBJliR7LSh
Cv2RD8TaUc0ZZseHC5vR7VZKXobXUF7QqB1Rgzz/CpsFeEmxxQxZrVKNjwcMloSt
wmH17yW5tBDg8+6KhFwHj40oV88/49L8utVMEW80gh9O9TlYw5qCAp5QKqkFS52A
hO54xjTNdEpv/9yXpwQfgUqkAHM8MQhsaxmKCIQXUGt6Lp13aHDAYtMizED0LBjV
3P3qCoc03P9k2nWwGGU7dukncYNNuLDW9xwkAfV9VQuPYCHEBiPTcRnn99imyvNz
FNhOElHDttCyKtt1FdZZVAQzXusAAwYH/18mnEMMv4rMZglYb0PRCxaxwQYkxESt
KyXEclTc0kgyaZnf4Vbdz1rroxxZLIf+16p/MVNFierz/7d5FbJYggCDSsBAaj4r
Qe2/Os3oCnHyyQY+zF9Ac30CsxzgDxMYxYGJHr6x+s9cloZ3WwBFAO0bMoS/9T/9
/S7L0d0litecox5et2yEw4AqHdCslGx5mX0os66uh99eeEwW2EQHSLklwUPReb7U
6m+fNyWxq5w+qTPG+zcXdiW/117T1aONVmg29tSNW8S/syha2PCJ+IoordBus4mU
kfa49yCuXyZAYDNLbkiqMVTDCqrH2+n1mbUuhRBaSZEvgqVfVLZzRziIRgQYEQIA
BgUCORjhUwAKCRBVn397GCw2j7T3AJ0ZDGzVqNQBE07ntRKuzQQmou8YhwCgibYR
ZJyP31xlO+Lt5FgzzeqcQwU=
=DKp2
-----END PGP PUBLIC KEY BLOCK-----

C.3.89 Thomas Quinot

pub  1024D/393D2469 1999-09-23 Thomas Quinot <thomas@cuivre.fr.eu.org>
 Empreinte de la clИ = 4737 A0AD E596 6D30 4356  29B8 004D 54B8 393D 2469
uid                            Thomas Quinot <thomas@debian.org>
uid                            Thomas Quinot <thomas@FreeBSD.org>
sub  1024g/8DE13BB2 1999-09-23
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1.0.7 (FreeBSD)

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
=mFN1
-----END PGP PUBLIC KEY BLOCK-----

C.3.90 Doug Rabson

pub  1024R/95C11771 2000-02-27 Doug Rabson <dfr@freebsd.org>
     Key fingerprint = 20 BB E4 38 5D 89 D2 D4  68 A6 2F DC 0A DE 10 3C
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1.0.6 (FreeBSD)
Comment: For info see http://www.gnupg.org

mQCNAzi5GEEAAAEEAK2MWoFtSEoa6/eVi1dRiebsF+F4DnoxIaQATYfhynrLDLDL
Zvl0pfgzMWG6VvtsC5c2u549BdYsbs7F95dUUAe2JG9V3m8YeLuzC5uTpac5PeX4
2pHpniY5DDRRlgv0BpCRDOF7JmnMSp1yv5I+EFzTdGYv1CdcyFfJuUqVwRdxAAUR
tB1Eb3VnIFJhYnNvbiA8ZGZyQGZyZWVic2Qub3JnPokAlQMFEDi5GuIB213Sl+Y4
3QEBIPMD/Aqz0G5OfPjsHo+QgqXgwYfsdl5D2qEoQGj/GvJNW/+I5MeV4YuydZGJ
PbJa6dX0C9jdhlPd6BUtDKBsY6/lQns+VIufraYhalinWpExFdDYi8ONu9tPzgab
7HCvgz+Ecp5UFdbIdfBvgelfwJBgJ1486VUsC8H4TfAjp0ZXlxRXiQCVAwUQOLkY
QVfJuUqVwRdxAQEFqwQAkREhyh+Eu3QYxDkhhGwxHWl8G3WLEth/6MRUwLY0L3dt
qPfZ5MByKqhj8EqKoso4KnBzDajeKwjIeM2mzlmOdRH6ElR4WtoQpn7Ru3O9u7/O
l0ojq8PDUw0KTNKcLYuvG2qBKHeLYzpTEPRbKiRprZtB6bRSYE2mM3rY7q9LU8k=
=pQjj
-----END PGP PUBLIC KEY BLOCK-----

C.3.91 Tom Rhodes

pub  1024D/1B9EBD43 2002-01-15 Tom Rhodes <trhodes@FreeBSD.org>
     Key fingerprint = 2D4D 1D31 A5C6 08AA 1075  C963 C0F9 A089 1B9E BD43
uid                            Tom Rhodes <darklogik@pittgoth.com>
sub  3072g/F7A606E4 2002-01-15
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1.2.1 (FreeBSD)

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
m9rVxuLvsLUuy0UenEK6/bBsDsk=
=C9cS
-----END PGP PUBLIC KEY BLOCK-----

C.3.92 Benno Rice

pub  1024D/87C59909 2002-01-16 Benno Rice <benno@FreeBSD.org>
     Key fingerprint = CE27 DADA 08E3 FAA3 88F1  5B31 5E34 705A 87C5 9909
uid                            Benno Rice <benno@jeamland.net>
sub  1024g/4F7C2BAD 2002-01-16 [expires: 2007-01-15]
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1.0.7 (FreeBSD)

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
YbCuiDguaEN052KDrSoDvk4S
=L0S4
-----END PGP PUBLIC KEY BLOCK-----

C.3.93 Paul Richards

pub  2048R/BD42E037 2000-02-21 Paul Richards <paul@originative.co.uk>
     Key fingerprint = 38 4F 33 80 53 92 01 46  ED 4B A4 91 3E 1E 6B FE
uid                            Dr David Paul Richards <paul@originative.com>
uid                            Paul Richards <paul@originative.com>
uid                            Paul Richards <paul@FreeBSD.org>
uid                            Paul Richards <paul@apache.org>
-----BEGIN PGP PUBLIC KEY BLOCK-----

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
=bMYo
-----END PGP PUBLIC KEY BLOCK-----

C.3.94 Ollivier Robert

pub  1024D/7DCAE9D3 1997-08-21 Ollivier Robert <roberto@FreeBSD.org>
     Key fingerprint = 2945 61E7 D4E5 1D32 C100  DBEC A04F FB1B 7DCA E9D3
uid                            Ollivier Robert <roberto@keltia.freenix.fr>
uid                            Ollivier Robert <roberto@keltia.net>
uid                            Ollivier Robert <roberto@eurocontrol.fr>
sub  2048g/C267084D 1997-08-21
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1.2.1 (FreeBSD)

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
Sz4M7QCfdTT4428ML0KH1ozDZ3Ipizq3ic4=
=6Dn6
-----END PGP PUBLIC KEY BLOCK-----

C.3.95 Guido van Rooij

pub  1024R/599F323D 1996-05-18 Guido van Rooij <guido@gvr.org>
     Key fingerprint = 16 79 09 F3 C0 E4 28 A7  32 62 FA F6 60 31 C0 ED
uid                            Guido van Rooij <guido@gvr.win.tue.nl>

pub  1024D/A95102C1 2000-10-25 Guido van Rooij <guido@madison-gurkha.nl>
     Key fingerprint = 5B3E 51B7 0E7A D170 0574  1E51 2471 117F A951 02C1
uid                            Guido van Rooij <guido@madison-gurkha.com>
sub  1024g/A5F20553 2000-10-25
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1.0.6 (FreeBSD)
Comment: For info see http://www.gnupg.org

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
jwCgnb++jBLoAgqu7BiWMBVe9sCLfMY=
=qL8T
-----END PGP PUBLIC KEY BLOCK-----

C.3.96 Hiroki Sato

pub  1024D/2793CF2D 2001-06-12 Hiroki Sato <hrs@allbsd.org>
     Key fingerprint = BDB3 443F A5DD B3D0 A530  FFD7 4F2C D3D8 2793 CF2D
uid                            Hiroki Sato <hrs@eos.ocn.ne.jp>
uid                            Hiroki Sato <hrs@ring.gr.jp>
uid                            Hiroki Sato <hrs@FreeBSD.org>
uid                            Hiroki Sato <hrs@jp.FreeBSD.org>
uid                            Hiroki Sato <hrs@vlsi.ee.noda.tus.ac.jp>
uid                            Hiroki Sato <hrs@jp.NetBSD.org>
uid                            Hiroki Sato <hrs@NetBSD.org>
sub  1024g/8CD251FF 2001-06-12
-----BEGIN PGP PUBLIC KEY BLOCK-----

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
F7Gi41lcFhA=
=uLMC
-----END PGP PUBLIC KEY BLOCK-----

C.3.97 Wolfram Schneider

Type Bits/KeyID    Date       User ID
pub  1024/2B7181AD 1997/08/09 Wolfram Schneider <wosch@FreeBSD.org>
            Key fingerprint = CA 16 91 D9 75 33 F1 07  1B F0 B4 9F 3E 95 B6 09
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: 2.6.3ia

mQCNAzPs+aEAAAEEAJqqMm2I9CxWMuHDvuVO/uh0QT0az5ByOktwYLxGXQmqPG1G
Q3hVuHWYs5Vfm/ARU9CRcVHFyqGQ3LepoRhDHk+JcASHan7ptdFsz7xk1iNNEoe0
vE2rns38HIbiyQ/2OZd4XsyhFOFtExNoBuyDyNoe3HbHVBQT7TmN/mkrcYGtAAUR
tCVXb2xmcmFtIFNjaG5laWRlciA8d29zY2hARnJlZUJTRC5vcmc+iQCVAwUQNxnH
AzmN/mkrcYGtAQF5vgP/SLOiI4AwuPHGwUFkwWPRtRzYSySXqwaPCop5mVak27wk
pCxGdzoJO2UgcE812Jt92Qas91yTT0gsSvOVNATaf0TM3KnKg5ZXT1QIzYevWtuv
2ovAG4au3lwiFPDJstnNAPcgLF3OPni5RCUqBjpZFhb/8YDfWYsMcyn4IEaJKre0
JFdvbGZyYW0gU2NobmVpZGVyIDxzY2huZWlkZXJAemliLmRlPokAlQMFEDcZxu85
jf5pK3GBrQEBCRgD/jPj1Ogx4O769soiguL1XEHcxhqtrpKZkKwxmDLRa0kJFwLp
bBJ3Qz3vwaB7n5gQU0JiL1B2M7IxVeHbiIV5pKp7FD248sm+HZvBg6aSnCg2JPUh
sHd1tK5X4SB5cjFt3Cj0LIN9/c9EUxm3SoML9bovmze60DckErrRNOuTk1IntCJX
b2xmcmFtIFNjaG5laWRlciA8d29zY2hAYXBmZWwuZGU+iQEVAwUQNmfWXAjJLLJO
sC7dAQEASAgAnE4g2fwMmFkQy17ATivljEaDZN/m0GdXHctdZ8CaPrWk/9/PTNK+
U6xCewqIKVwtqxVBMU1VpXUhWXfANWCB7a07D+2GrlB9JwO5NMFJ6g0WI/GCUXjC
xb3NTkNsvppL8Rdgc8wc4f23GG4CXVggdTD2oUjUH5Bl7afgOT4xLPAqePhS7hFB
UnMsbA94OfxPtHe5oqyaXt6cXH/SgphRhzPPZq0yjg0Ef+zfHVamvZ6Xl2aLZmSv
Cc/rb0ShYDYi39ly9OPPiBPGbSVw2Gg804qx3XAKiTFkLsbYQnRt7WuCPsOVjFkf
CbQS31TaclOyzenZdCAezubGIcrJAKZjMIkAlQMFEDPs+aE5jf5pK3GBrQEBlIAD
/3CRq6P0m1fi9fbPxnptuipnoFB/m3yF6IdhM8kSe4XlXcm7tS60gxQKZgBO3bDA
5QANcHdl41Vg95yBAZepPie6iQeAAoylRrONeIy6XShjx3S0WKmA4+C8kBTL+vwa
UqF9YJ1qesZQtsXlkWp/Z7N12RkueVAVQ7wRPwfnz6E3tC5Xb2xmcmFtIFNjaG5l
aWRlciA8d29zY2hAcGFua2UuZGUuZnJlZWJzZC5vcmc+iQCVAwUQNxnEqTmN/mkr
cYGtAQFnpQP9EpRZdG6oYN7d5abvIMN82Z9x71a4QBER+R62mU47wqdRG2b6jMMh
3k07b2oiprVuPhRw/GEPPQevb6RRT6SD9CPYAGfK3MDE8ZkMj4d+7cZDRJQ35sxv
gAzQwuA9l7kS0mt5jFRPcEg5/KpuyehRLckjx8jpEM7cEJDHXhBIuVg=
=3V1R
-----END PGP PUBLIC KEY BLOCK-----

C.3.98 David Schultz

pub  1024D/BE848B57 2001-07-19 David Schultz <das@FreeBSD.ORG>
     Key fingerprint = 0C12 797B A9CB 19D9 FDAF  2A39 2D76 A2DB BE84 8B57
uid  David Schultz <dschultz@uclink.Berkeley.EDU>
uid  David Schultz <das@FreeBSD.ORG>
sub  2048g/69206E8E 2001-07-19
-----BEGIN PGP PUBLIC KEY BLOCK-----

mQGiBDtXc9MRBADg4tN94el8rq0ZMUqB2jEVACg/UfYjtsaboDL4HBBUH+P+Wxic
9JqotcTbT8pJGeRpeXbfO0YHaAFnUfilhoFkeLyAgDvnUP9Z77DjFpliLAKlvuCz
Lxi4UxgQXRdedNCg3omrxQWx7Yx067GT/yw4RgvogOuYBX0l3AJ25/WBxQCg/6Dj
TMTu6iYR2Y6dEL4NGs9PnBMEAKBlhelAhzYoMpcWpk2VITUgONMW+Oi2JDTmwDd+
1FAUDc1mHSoNBKPUrCWyXiwfzL09/ROlK/KMR6YoYtV6d66zZ/dQNuzrMhsis+Ou
PCtvcaR5NGln49THgcw7/K5gTjwrG1xA/wcwnvUp6sxjh4p88meI/LNBAstixb3z
FiLDA/9pAqn42B9ZBL1le98DTiLDemHvQFgXu8Oj20IIF0umyJRBfKwDY6iIx0gd
1rUKua6XnqMSEg+LmHmSfDBaAOsFTdnL7wVU0tLF0V9goxU4qDZjw5EeMEqnk7tg
/6REIvtdOA/GLOmr/Q0WA4JEukcih3AQ9iFnwg7WAp0S4GF6gLQsRGF2aWQgU2No
dWx0eiA8ZHNjaHVsdHpAdWNsaW5rLkJlcmtlbGV5LkVEVT6JAEsEEBECAAsFAjtX
c9MECwMBAgAKCRAtdqLbvoSLV78JAKD4iJ2kNeTsYQnWZ2DeytAeqVaKFwCfTIQE
lFPZyaQr7yjthREE+8SPZCG0H0RhdmlkIFNjaHVsdHogPGRhc0BGcmVlQlNELk9S
Rz6JAEsEEBECAAsFAj5S1iEECwMBAgAKCRAtdqLbvoSLV4b5AKCljokqRgi/pbDa
ZebYLluQCIkbgQCg+jSKAIi1r+CZiaCJdqk193IZVnm5Ag0EO1dz0xAIAPZCV7cI
fwgXcqK61qlC8wXo+VMROU+28W65Szgg2gGnVqMU6Y9AVfPQB8bLQ6mUrfdMZIZJ
+AyDvWXpF9Sh01D49Vlf3HZSTz09jdvOmeFXklnN/biudE/F/Ha8g8VHMGHOfMlm
/xX5u/2RXscBqtNbno2gpXI61Brwv0YAWCvl9Ij9WE5J280gtJ3kkQc2azNsOA1F
HQ98iLMcfFstjvbzySPAQ/ClWxiNjrtVjLhdONM0/XwXV0OjHRhs3jMhLLUq/zzh
sSlAGBGNfISnCnLWhsQDGcgHKXrKlQzZlp+r0ApQmwJG0wg9ZqRdQZ+cfL2JSyIZ
Jrqrol7DVekyCzsAAgIH/1AtvAGCJchvLFoaR5KNocKcoUMe2NrpRrFS3DsYOsXU
0U95pmAHJaMt+wv4UDs/wNzOzC6stRML+3lg6sYnSgddH+N/DA0b5jQSAyNWlL87
j08h3ATaPeDD6qhqFRe3uzpQMAJJWbeTdyiT2vwgglgcaJWuVjYSfkkxX7AVDFHw
C4IOuZ0aQhHyHQsGQURTg+sotMx+kX68o7oGZqBBOcr8VdFyrlq0Tq1b/i0fJnn2
Nz5hY+OOXbyeoJbaY0KiGnnMwHmeZ2eJWk1cCHUZnrY5WOxYQHail2KHXxhYuPoI
xsL0y+XdErX+lc2BiEbvXROs+VxEo/3/BVJXAIar3nCJAD8DBRg7V3PTLXai276E
i1cRAsj2AKC26JMJWsvd93UUWRXDKmU46MgLggCfTOIjPheQwY9VCN3jO9YROzij
QVE=
=qhh7
-----END PGP PUBLIC KEY BLOCK-----

C.3.99 Jens Schweikhardt

pub  1024D/0FF231FD 2002-01-27 Jens Schweikhardt <schweikh@FreeBSD.org>
     Key fingerprint = 3F35 E705 F02F 35A1 A23E  330E 16FE EA33 0FF2 31FD
uid                            Jens Schweikhardt <schweikh@schweikhardt.net>
sub  1024g/6E93CACC 2002-01-27 [expires: 2005-01-26]
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1.0.6 (FreeBSD)
Comment: For info see http://www.gnupg.org

mQGiBDxUIHoRBACGAbIspofa2HTwV0Y81ZgrizVgvsHduKRMYmu9scX6eFSQWC2a
JLXXnMJMK97LG2m6qX/hzjxZKU/n2eNpHa3h9zLYQ/8VdN+AFHGZtgmZ7xe7UpBI
V2YohykdmgKqg8WuVQGrNTwbkaAFeLnG3yXhR83qukRvv+qFfXbEF+1S2wCg6lLg
YJ6U4J1pfTO95Rd4hw5v6DsD/0hUfa6C6C6xjME6P7r/ORd91+nJsfO0pcV1rK0s
yCMdAy/zdUlKpsNF9vS0qhCFonuOHWxMEe7D8L80oUAwlk4RrFBm+Ch7RoBGYGru
aEom/7JGNoRqUD2CKbFnkAYi9HP6XlXcpgm3GO4c4VtIcEbgywjw7rNhmNoYLrZV
YUb0A/9mNCqpPTd8ngm7kPyTTMJitYEVaBPXEdiPueYJND+eI9AQkcqYhs6LWq4c
jgmTNeImQ+kR1UeDj3dOwUDqhGmLPN60nD+Q2oHHBif8NJOu47mx1dgdriM9FsTN
3UbeSve+mY8Z8zcPIYKl2UJLPZckWgq4pZRrE147cnKHSHHM9LQtSmVucyBTY2h3
ZWlraGFyZHQgPHNjaHdlaWtoQHNjaHdlaWtoYXJkdC5uZXQ+iF0EExECAB0FAjxU
IHoFCQWjmoAFCwcKAwQDFQMCAxYCAQIXgAAKCRAW/uozD/Ix/ZB8AJ989jyDH1G2
T1KMoNd7gPk9tAw1VACfXJgkrI42ShC4cHz37xrVLXeJp9i0KEplbnMgU2Nod2Vp
a2hhcmR0IDxzY2h3ZWlraEBGcmVlQlNELm9yZz6IXQQTEQIAHQUCPFQ+0AUJBaOa
gAULBwoDBAMVAwIDFgIBAheAAAoJEBb+6jMP8jH9P+YAoM72fnNwxxcDjb+3Mv3A
CfbHonYCAJ9lfK9fIbkgfAHo+2kwnOEN4yWxzLkBDQQ8VCB/EAQAzzIqOgms7u+e
UKampP/5U9G78HA3GIkVLcAeq5FfpFtls4NmSKz240zNxXmABWTSlBmOQvMdhB08
vRbzEsxPoVdNaF+QvRZYEr5+2bOM1pnHqYYMyUKwN83LXgTDnXxas4mtrkgngZTe
tGdFQ3PIVqW4jV0MmnEmaqde0nMJ6XsAAwUD/2z82PDDwFBu1Ogogh63qE69HSQt
8weHX+Skmi75jE3r2niUlx6B0IfLXzFqP33vyrsov7QHgAuOjNficisbC73o3gjp
voJ2RYB2IfUCgeFvipLpqY1TWJ3bF52TYnJg4rrEWd5OWs4FB0iaJ78LVWgq3WsN
zfgcgfQ38d+scJu4iEwEGBECAAwFAjxUIH8FCQWjmoAACgkQFv7qMw/yMf1PIwCg
nSP0i+q9jhEf9T5xA0+qg2yYB/IAnjvd/tA+2/5bP4pObE/oRNjIVZBZ
=YPu9
-----END PGP PUBLIC KEY BLOCK-----

C.3.100 Gregory Neil Shapiro

pub  1024R/4FBE2ADD 2000-10-13 Gregory Neil Shapiro <gshapiro@gshapiro.net>
     Key fingerprint = 56 D5 FF A7 A6 54 A6 B5  59 10 00 B9 5F 5F 20 09
uid                            Gregory Neil Shapiro <gshapiro@FreeBSD.org>

pub  1024D/F76A9BF5 2001-11-14 Gregory Neil Shapiro <gshapiro@FreeBSD.org>
     Key fingerprint = 3B5E DAF1 4B04 97BA EE20  F841 21F9 C5BC F76A 9BF5
uid                            Gregory Neil Shapiro <gshapiro@gshapiro.net>
sub  2048g/935657DC 2001-11-14

pub  1024D/FCE56561 2000-10-14 Gregory Neil Shapiro <gshapiro@FreeBSD.org>
     Key fingerprint = 42C4 A87A FD85 C34F E77F  5EA1 88E1 7B1D FCE5 6561
uid                            Gregory Neil Shapiro <gshapiro@gshapiro.net>
sub  1024g/285DC8A0 2000-10-14 [expires: 2001-10-14]
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1.0.6 (FreeBSD)
Comment: For info see http://www.gnupg.org

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
LsOLmQ==
=GprF
-----END PGP PUBLIC KEY BLOCK-----

C.3.101 Arun Sharma

pub  1024D/7D112181 2003-03-06 Arun Sharma <arun@sharma-home.net>
     Key fingerprint = A074 41D6 8537 C7D5 070E  0F78 0247 1AE2 7D11 2181
uid                            Arun Sharma <arun@freebsd.org>
uid                            Arun Sharma <arun.sharma@intel.com>
sub  1024g/ACAD98DA 2003-03-06 [expires: 2005-03-05]
-----BEGIN PGP PUBLIC KEY BLOCK-----

mQGiBD5my2cRBADKOgeJz+IX/4UT65iwvAMoR5SMctMAEGNHvTk96H0DSYmDmqPE
6D4PWxjiAmbFdMmxGvmPlZDGRk7IpZhrvmsAuAvwImA/UyGb3Qnb0zOoOlAIQiGz
NXRvum8vzoTeW5r9ghLOKkBuze1qi8PZdT+ztreaYcPPZBI9zPNfnZd29wCg4Sqo
eWA46NgWICUsOpC3dkhAmdMEAKBUmh8p4kOZQq5LPv3y1fo+5MBI1gnawiJoO955
nzVuisH5h1yaNjz0nkB5VtEG2Ub2mhBjckze4EP4FzPgIpOhSMdGfNh67rrByvv5
DD/SBwjULSEGbBlywn462QDb1X0PxFX5C6IYK2Q6i/vbWkOFMI2dVuQX0PUq9zjN
D5QJA/sFeXR7NcutCUaLknFCaV1cBTITJNurKn5Vm3QQq5s6R2cFTxdouHcSNkto
EbhcAvMapxlWl146h7mAtLsXXa5s3wuMWq+igOXUk0wkcm8CqvSQtnVYl4Xy/Ll3
zXKxtzKHZ1YxAdYQXGkesBuaSafCN6VYDFFSEwChHrwe1sV9obQiQXJ1biBTaGFy
bWEgPGFydW5Ac2hhcm1hLWhvbWUubmV0PohiBBMRAgAiBQkDwmcABAsHAwIDFQID
AxYCAQIeAQIXgAIZAQUCPmbLaAAKCRACRxrifREhgYRWAJwLdcAEvjkJf5bHy975
R7q7Rp4KUACgq214dvKu35ysWriNNxu2jtIj1he0HkFydW4gU2hhcm1hIDxhcnVu
QGZyZWVic2Qub3JnPohiBBMRAgAiBQI+ZsydAhsDBQkDwmcABAsHAwIDFQIDAxYC
AQIeAQIXgAAKCRACRxrifREhgVrxAKCXiBsYhu++BPQX9prGf2BeKNYaswCfaS2Z
eNyZsxSNedBb26k8ARWrZzq0I0FydW4gU2hhcm1hIDxhcnVuLnNoYXJtYUBpbnRl
bC5jb20+iGIEExECACIFAj5q4pcCGwMFCQPCZwAECwcDAgMVAgMDFgIBAh4BAheA
AAoJEAJHGuJ9ESGBbWIAnRAlo9PVZzdar5pmWDGspeyGk63ZAJ9X3x6ZQSD7uYeB
ajKe61NpPAamJbkBDQQ+ZstqEAQAkgu4UWlgyF1IeMM+vwHQ43zik3Rn6nhpJXRb
Arpg4QyVHQNQshVT4XsmSvcgw0TSUub0x5m23dqnhcoB/mk0kAIymVQiEaa4SLjI
tTXd93yRvSgPd8JEUNFwcSE43ZJrrmSAqIc6MUJ0hI/pAeCFvRWYQ80+82xx30Vn
fJLOJR8AAwUD/R2xFX5geJ7W8OyLtB5XQirkL1YPGLNNx4lyAPXFJc1s1KwfZ90q
LYNw2qLRIacYKmY2X9BrWADXPrEZIDKljn+Awz34lSwerLHWwYDDoeyjfMt4Mmra
MsV8UIjaBGO1ptbqEDSVeb1tiWQGa622pT5YaZp/r/OFdlmg+JvkAzHkiEwEGBEC
AAwFAj5my2oFCQPCZwAACgkQAkca4n0RIYGWkgCgxhDAezhK5kiSC4N74g9ifsF2
jl8AnjujFRJcMfV2R28jiZ2BS9mnvqjU
=klyl
-----END PGP PUBLIC KEY BLOCK-----

C.3.102 Vanilla I. Shu

pub  1024D/ACE75853 2001-11-20 Vanilla I. Shu <vanilla@FreeBSD.org>
     Key fingerprint = 290F 9DB8 42A3 6257 5D9A  5585 B25A 909E ACE7 5853
sub  1024g/CE695D0E 2001-11-20
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1.0.6 (FreeBSD)
Comment: For info see http://www.gnupg.org

mQGiBDv5ys0RBACm/dkRFFWNFb6pafzsHX3YHfyYBQAhyoT5ZPvvh7e6RdHYdxYc
tYjgtOid4jL20Uz7kXYwT5OVYo/l9j/AqknacYoboO5AHcJrfO3QjfztJaorUSqv
w9dv6DSOQWwTmexeshp6v5aEsOpDbfPtUnFBwcJe5lOBsokk2CqkzI/XqwCgv49G
uNLbdtIN87CrUwyiLG5nsSED/35/A/9b/KNwjBoBbheCJDByHNPd9svQIpVWTuk5
i5RKVQQET4ZD5tPQWPnSZ95ztkkwcjjOak+esHK85yTYXXjrfcP7JiE3HIZhyj3S
dxWaOFEbSE3Xc0BT+8BOAPFfb2WMSdCQFowkRqbMiFudLnz4tZnBmTQcuxqp4G7S
AFh8A/4jBhhkKaw0KeWtkFKugVgUWZNWZ54aJhUaLg5wGbSTNME74YLO0Xc+wkjY
id3gG5ayJyecZXCMUf175/ZaSPeNRCBOfMjDnl3G05b/huBFUnXzxTkWCcmopOwW
5tz4C69UVP1UHg4XMu+f6D48srIaFu+DOMTwniL95vqcGkCUJrQkVmFuaWxsYSBJ
LiBTaHUgPHZhbmlsbGFARnJlZUJTRC5vcmc+iFcEExECABcFAjv5ys0FCwcKAwQD
FQMCAxYCAQIXgAAKCRCyWpCerOdYU/oHAJ4kKjpX6iMF1Y0FjPMyFiyUlgjT7ACf
a3czQMrflxJC/VNuzMAmzA19j3y5AQ0EO/nKzRAEALHq1lBY0OBQBeV7sGOvTaBN
itMZeVDrGDYUQ9xunaDsEHfz2fD3jXCZLaUayv4LZeWzRr4DbnK4F0AmZLR1v5h3
LxBuvqHPRma5RyyFRftwTNHM+DWu6TSqnE43QS7Ci+z8ua96CmcDa+PnEfubyNLE
dco8gfE4oHDqni1R2qVfAAMFA/4uVSYj/DvIzckbZ05FjG+pg4HKsyxyFeFsrm9D
8JD9tC26k4YxLG5FPBdKRsDrN/lZbnLWHTtZqhE3WlX6DRlea93T9Vi2skbujKcN
mbao5pyVXWl1dboFquP8ku91CRTZvmdLF6IBnPo0LfOu4jD6DsD5O0UZ7lD/Y+6p
8WcDfohGBBgRAgAGBQI7+crNAAoJELJakJ6s51hTsJUAoIB80SN0z90ocSdxYGwl
xkOSm2cvAJ93DigXb3moOsw3BRLlLPQRS6TZxg==
=aR5H
-----END PGP PUBLIC KEY BLOCK-----

C.3.103 Christopher Shumway

pub  1024D/3219F982 2001-05-17 Christopher Shumway <cshumway@freebsd.org>
     Key fingerprint = 45F5 931B 0646 BF84 E78E  E274 6C29 340E 3219 F982
uid                            Christopher Shumway <cshumway@titan-project.org>
sub  1024g/D215EFED 2001-05-17
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1.0.6 (FreeBSD)
Comment: For info see http://www.gnupg.org

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
=NDqN
-----END PGP PUBLIC KEY BLOCK-----

C.3.104 Dmitry Sivachenko

pub  1024D/13D5DF80 2002-03-18 Dmitry Sivachenko <mitya@cavia.pp.ru>
     Key fingerprint = 72A9 12C9 BB02 46D4 4B13  E5FE 1194 9963 13D5 DF80
uid                            Dmitry S. Sivachenko <demon@FreeBSD.org>
sub  1024g/060F6DBD 2002-03-18
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1.0.6 (FreeBSD)
Comment: For info see http://www.gnupg.org

mQGiBDyVYkARBAC2Z/8odq3zwRIQZ9XOF4ZoQ8ITJRrTUwwYjwOf4Kz6gTH+zIGt
Q57m5w1Scse3J/fDdIZzw0gJgH0XRpKOonWi23di4B3Oyvrdr1Zm6OlqUjoty8CC
7jo5WlLF/05Vai2HCUmFeqiukCN0mfm3Fd8S+hf1IpE1gaIxCKNvYaf14wCgpoVG
Tqi+lIMCktV/vxUf3h7KgOsD/3nBeANz3U+Izr9g/AsF/FnHXeawl2m7USaIB7b1
4CFrQp8FDl6TCAtPHQyQ6pdnh0HZ3h+7cfPB1poRaXUvDimQZR9KHZO9uIilpC2n
MdBjbkXmvVQ5FhOJz49cXw51Lck11n/+OuP4N4TcIHdt0DQJoUrGIB6X6Op9aOrP
Ob70A/sFsFfebYdfH8loLsJkHU8VbB2Y0KZBXSnhysQ9muvj1HqT+n66o/3SliCE
R3cNVMgg51pqxzUC0o6qTVKJbfOrI5b2tbYjvx87ejugQwafhKu8t1liDuUYQK0Q
S549pzLKUr/NUvJaYU//6QlFIPNSzwB6x4wjrWAKBv6Vn+x0c7QoRG1pdHJ5IFMu
IFNpdmFjaGVua28gPGRlbW9uQEZyZWVCU0Qub3JnPohXBBMRAgAXBQI8lWJABQsH
CgMEAxUDAgMWAgECF4AACgkQEZSZYxPV34DFVgCfREoIUfpKaEeGyzl0zKThVC7J
XccAnjiB85SwuNAxMraQuGDJXojukUfwtCVEbWl0cnkgU2l2YWNoZW5rbyA8bWl0
eWFAY2F2aWEucHAucnU+iFcEExECABcFAjyVY4cFCwcKAwQDFQMCAxYCAQIXgAAK
CRARlJljE9XfgA6GAJ9RFwXlNqYap2SI14IPRjX9ZAzvjACeOC/Elh0HkwQ2HZMT
edpgzOuknUK5AQ0EPJViRRAEAO4VdFfYGd/amgG2MDGqD269Kb5vTFbS5mDczgjM
6gXZgOjhbvj3x2auo+Pfos6M/bOtHuIk7QFOeOEJ1wcg8wgE3L3kFQPeEPeOgKBk
/eA1ExIW3hiPeuwNxT3iWEv0GF/rvCSeSK3nuuDBNmkSpJ4LHIyO8Kf5YJNp8+6D
yJ8rAAMFA/4jaulRHxSsWlFIm3gpBR9aiXGGX1pZTuJpXqjAQcRzDa9cuVatiSJS
H9wzfE8R4353s5HpaY3AkVRjY6s9AB8bygGdUCQjuIuifTS4+tG/wmaXNgyqBqaB
6V9gTgfW/7XqcJUGeLLMUpccSRZhlQvHd18aTfPWPB49xu2+arw6P4hGBBgRAgAG
BQI8lWJFAAoJEBGUmWMT1d+AYlgAoKZWZs7rDLdQbn2d0CVwmWb6hQLhAJ9E/r8N
n3jf2PI8Psl2wtgvWazpaA==
=mkxU
-----END PGP PUBLIC KEY BLOCK-----

C.3.105 Jesper Skriver

pub  1024D/F9561C31 2001-03-09 Jesper Skriver <jesper@FreeBSD.org>
     Key fingerprint = 6B88 9CE8 66E9 E631 C9C5  5EB4 22AB F0EC F956 1C31
uid                            Jesper Skriver <jesper@skriver.dk>
uid                            Jesper Skriver <jesper@wheel.dk>
sub  1024g/777C378C 2001-03-09
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1.0.6 (FreeBSD)
Comment: For info see http://www.gnupg.org

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
Crfzumk=
=Ru0+
-----END PGP PUBLIC KEY BLOCK-----

C.3.106 Ville Skyttä

pub  1024D/BCD241CB 2002-04-07 Ville SkyttД <ville.skytta@iki.fi>
     Key fingerprint = 4E0D EBAB 3106 F1FA 3FA9  B875 D98C D635 BCD2 41CB
uid                            Ville SkyttД <ville.skytta@xemacs.org>
uid                            Ville SkyttД <scop@FreeBSD.org>
sub  2048g/9426F4D1 2002-04-07
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1.0.7 (GNU/Linux)

mQGiBDywu5YRBACKxY/5WzdUtpL2aK2Yy/Yde2spYiEP2vKj3bs+ovV7a9129lki
ldCu8PhoJO+x+96+AwbrR/T5FlXyQrInMa9U5os/8/HQjTXtY/oeq+UNDNFZrnMR
Gu0zYICbzgd1rW/tnZJBkB3X2Ao6k0hSATGmP5/sowT7EBSdaM7ZhhqOywCg5A5n
J7+062MfzdS/3KoSn+Utex8D/2BN/BMLvrItQBUjy0tn8Vsomx+FHbFKOm1cuOeq
smhsOmsANwIafiZnK4+SnQlVbXJLM6exNTqSimH93y7Q9BX7hmWYl0XVpUui0mBR
UrVG00PEa0jTLasOkvlyYBS1En4gZ5J2ArE2cYFPkv7jndqJ/pAAZkG+tQnXJ8l5
g0SLA/4tJHLJ6kPad98V3cVbTfhY2Dn/i+QbHvzBbBj+bETLEUdqOKzADGrWoJeE
fADfxYi24wHkpH3U781p4SldZpOUvkyYj7YmjqZP0AH6SsKI3i52z1BDQF49gRcD
uc0sSmv57yvjKCk1Cehen4/qaVcqXWTZ5NfyGb+hbHLtA2FxSrQjVmlsbGUgU2t5
dHTDpCA8dmlsbGUuc2t5dHRhQGlraS5maT6IWgQTEQIAGgULBwoDBAMVAwIDFgIB
AheAAhkBBQI8sLuXAAoJENmM1jW80kHL8KkAn1yTiwsMLq9GsqA44hkh1Sk0etM/
AJ9BiDSqgX0S/wzyXAqfYcsmxS96qbQnVmlsbGUgU2t5dHTDpCA8dmlsbGUuc2t5
dHRhQHhlbWFjcy5vcmc+iFcEExECABcFAj0dWzwFCwcKAwQDFQMCAxYCAQIXgAAK
CRDZjNY1vNJBywFtAJ9NCVHRa6GxtfTxae+6ZkTh08xQZQCfcGNMwhcSGJUyjKI2
eYucgrkwp2C0IFZpbGxlIFNreXR0w6QgPHNjb3BARnJlZUJTRC5vcmc+iFwEExEC
ABwFAj0di4oCGwMECwcDAgMVAgMDFgIBAh4BAheAAAoJENmM1jW80kHLzoYAoLqR
3unds+O73Z3EppJna4gECkQ0AJ0Uye7ZXLMTJo7pNmZSBSz6bA/qFLkCDQQ8sLvS
EAgAinenfe1g5Cdp8bf72+idBePq0zHyPUOpCuFGkiKXecXpgQUHCVYM8IiafB1M
Or9V97vy1H56sr+HaBsC75mpuPC7lnltoY+zq0zIkNbi20+p/546W7A5MV66xtTx
D6uUSyZ3jksAaVch+6yQNNxr3CDWiNSjomkK1ExPsjaPAA82L4yExAJJGwUYAPOS
B1Gw6N3dUtoNuQwJdcw8fjsaRektXsHm6Nnm++3gB0YJ4/x3gcvxlNlONHNp5vdW
msQAJtWj4isSMfqi6Y4SQsw2MWOKrYr8Lt++m4cQC6/VZXafTR/TrDZCqYhwovyX
vgLMdKfxTZLqsyZwgWDxFKOEewADBQf8CCEh65lRfWQG3MopboOs2fFp3BsfVMvA
stV5AYktLHvwGXTW0rx7sCdb3kBtKjiuNFob3gis2Nd05NUxFrzrZsyaktyDiZmT
gjmEL1LvodDg/mXLRQgl3QDzUL1nlfFQRkcKqlDfCYezbgYFxCy4EGsC86cf8s8F
ZI0hyXXY+zir+xJ/w4KBtL+cY5LJExh0FyPfNnL+tXUthRuN9wxZwVyQ9I4RTlkv
ybb8VTWEgzkIf5BiDZalvcOJNAujptlgz2cLnV4Kzu55Xy7jOi5YfYjMbSDa6W5c
vO/wbcAG3gwZOoeHBRjwTNkn4iBkDPq71o1LDDxHvWUVAO+jU3TrZYhGBBgRAgAG
BQI8sLvSAAoJENmM1jW80kHL1RMAoNsmDIuxlUf3YwjAr/fSqBOKWgN0AKDc0CBV
uZAqlAL0tDv8Fiz3HvICMQ==
=mEvy
-----END PGP PUBLIC KEY BLOCK-----

C.3.107 Ben Smithurst

pub  1024D/2CEF442C 2001-07-11 Ben Smithurst <ben@LSRfm.com>
     Key fingerprint = 355D 0FFF B83A 90A9 D648  E409 6CFC C9FB 2CEF 442C
uid                            Ben Smithurst <ben@vinosystems.com>
uid                            Ben Smithurst <ben@smithurst.org>
uid                            Ben Smithurst <ben@FreeBSD.org>
uid                            Ben Smithurst <csxbcs@comp.leeds.ac.uk>
uid                            Ben Smithurst <ben@scientia.demon.co.uk>
sub  1024g/347071FF 2001-07-11
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1.0.6 (FreeBSD)
Comment: For info see http://www.gnupg.org

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
=D508
-----END PGP PUBLIC KEY BLOCK-----

C.3.108 Dag-Erling C. Smørgrav

pub  1024D/8B71D3A4 2003-07-01 Dag-Erling SmЬrgrav <des@freebsd.org>
     Key fingerprint = FDD3 5997 92A0 007F 9905  511C EB80 DE1D 8B71 D3A4
uid                            Dag-Erling SmЬrgrav <des@des.no>
uid                            Dag-Erling SmЬrgrav <des@ofug.org>
uid                            Dag-Erling SmЬrgrav <des@ifi.uio.no>
sub  1024g/CC6B8628 2003-07-01 [expires: 2004-06-30]
-----BEGIN PGP PUBLIC KEY BLOCK-----

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
=Il3u
-----END PGP PUBLIC KEY BLOCK-----

C.3.109 Maxim Sobolev

pub  1024D/888205AF 2001-11-21 Maxim Sobolev <sobomax@FreeBSD.org>
     Key fingerprint = 85C9 DCB0 6828 087C C977  3034 A0DB B9B7 8882 05AF
uid                            Maxim Sobolev <sobomax@mail.ru>
uid                            Maxim Sobolev <sobomax@altavista.net>
uid                            Maxim Sobolev <vegacap@i.com.ua>

pub  1024D/468EE6D8 2003-03-21 Maxim Sobolev <sobomax@portaone.com>
     Key fingerprint = 711B D315 3360 A58F 9A0E  89DB 6D40 2558 468E E6D8
uid                            Maxim Sobolev <sobomax@FreeBSD.org>
uid                            Maxim Sobolev <sobomax@mail.ru>
uid                            Maxim Sobolev <vegacap@i.com.ua>
-----BEGIN PGP PUBLIC KEY BLOCK-----

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
=WseN
-----END PGP PUBLIC KEY BLOCK-----

C.3.110 Daniel C. Sobral

pub  1024R/488A2DD5 2000-06-07 Daniel C. Sobral <dcs@newsguy.com>
     Key fingerprint = AF 90 A6 A2 B5 8D 6C 28  37 F3 F4 47 8B 31 47 DF
uid                            Daniel C. Sobral <dcs@freebsd.org>
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1.0.6 (FreeBSD)
Comment: For info see http://www.gnupg.org

mQCNAzk+tBAAAAEEAK5EJZPGnimL5cl9lFRpl3mYboOuN6K/ne/2oHt5CNlhBTuU
64VDPcBsM6ha+KJwSCdiO191AHnbpJSmIzNmL1VLHZunbZhJms2rf388pXO6nyu3
GW7x2nmqg5qTTkVZAILcuqb8DF4ODF8FEwwCzDJ4ikhSxgXbsTN8YkBIii3VAAUR
tCJEYW5pZWwgQy4gU29icmFsIDxkY3NAZnJlZWJzZC5vcmc+iQCVAwUQOT60EDN8
YkBIii3VAQH1AQP+L27NSLH7LAG4M6GMaMVaI4GkLroqWVumwggYI0UsrBazSYhI
t2fULDSnbhXGYUnmMYc8GcS2+m7KIp6getBSXWXPYr44aOwC2r3mB4WmUp4gWsqd
80C5Zc35m62xpkg/yb59UMI/OWTGdU9tVVS1YTdaarLGl+yJ6EWM7qECiVSJAJUD
BRA5RV1dVS4eLnPSiKUBAaXaBACBbO0J8IhMnsAXZ7fYKrQVCQFK6HSMQjISlm4Y
8kD1ZtKEMUuBlbbHEt7NoIcvH60jDJPkjSgwMRjUYbluTQe/dfthRkFa92WYcy0G
BbgEz+Iib1s0deFF5wL0wSLC9RIIReOk/pEOg/cY7efeutoEOX8LVfz18MkxgH2A
3Cv6gLQiRGFuaWVsIEMuIFNvYnJhbCA8ZGNzQG5ld3NndXkuY29tPokAlQMFEDk+
vYUzfGJASIot1QEBPjAEAJMooQYQUef1jKBsYC9xh9WcvtQ45Hku+BKwU6tBlhLT
JMIn9n0guzXey4gsVcpgJcjmZEXAq+dbgL/ps63CXQAahomlszpdea9aumbak1aU
51eIEftheyZaqmM4stDvoC+pdQxWP5K3n2d/7itwFde19xQNuK9UD9iPjJnz2L47
=Axyy
-----END PGP PUBLIC KEY BLOCK-----

C.3.111 Brian Somers

pub  1024R/666A7421 1997-04-30 Brian Somers <brian@freebsd-services.com>
     Key fingerprint = 2D 91 BD C2 94 2C 46 8F  8F 09 C4 FC AD 12 3B 21
uid                            Brian Somers <brian@awfulhak.org>
uid                            Brian Somers <brian@FreeBSD.org>
uid                            Brian Somers <brian@OpenBSD.org>
uid                            Brian Somers <brian@uk.FreeBSD.org>
uid                            Brian Somers <brian@uk.OpenBSD.org>
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1.0.6 (FreeBSD)
Comment: For info see http://www.gnupg.org

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
3mPjEgv3yQyXxmScDQ==
=g4uu
-----END PGP PUBLIC KEY BLOCK-----

C.3.112 Nicolas Souchu

pub  1024D/C744F18B 2002-02-13 Nicholas Souchu <nsouch@freebsd.org>
     Key fingerprint = 992A 144F AC0F 40BA 55AE  DE6D 752D 0A6C C744 F18B
sub  1024g/90BD3231 2002-02-13
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1.0.6 (FreeBSD)
Comment: Pour information voir http://www.gnupg.org

mQGiBDxq4ZARBACJSN3t0e7d8A7LNfvsKsNNfMWbANu/f3vEhDEj4D4X2QLKyk8t
Ti5/wO2Z7HJiT5QfI3zeRWetvHMWXhAYc24GrTUMdCt2zhUjufi5BdysmcbLiZFt
9wjJpJITW4A6W7YP55ORkZs6ye/j4Luf7YN4xISWvM9/kzpUtU8R6txC3wCgq28H
0tdFPUDvyAwr+97vHs97z/UEAIFPSIAsrH00DuudiLpqZB0LE+BcDsSKgxBQsZJT
06EQQaE9XMN4f46nAtxzFhSbGZL4qIBUO3Ny1Pp0rqjCfumuwONLXZSK829LaaJn
WfZ5ux9ZjvfYJ86NgUV2tFnwZm2UYQXc4234FfzfebeiSmYI27BMvLJ28xXU+pNw
vUvhA/9uPu+i3Dk+ha+0UaBTp/HNTAveoTKH6lNOS12XhCNNPQUL0gonJTeWThRO
z4YttxgLa5I/MoNsub0+GtNrlyhLyHKzjBBHEqJHJp7+zkyfCODnJaxUqoKskUSD
QF5VX6v6vEQl5UBjGwonHmzsrnuqTb9pyYhfPTch9n22eS6ZqrQkTmljaG9sYXMg
U291Y2h1IDxuc291Y2hAZnJlZWJzZC5vcmc+iFcEExECABcFAjxq4ZAFCwcKAwQD
FQMCAxYCAQIXgAAKCRB1LQpsx0Txi0J7AJ9q3/ulyXnWjGWlR0L+3QtfPKI5EgCf
WTLlr+SXYF+nrW4VvQcJvuyzZyG5AQ0EPGrhlBAEAKQjsjIRO+kHT+9qCYsw6HPi
BYzH++xP0i5143trUJ66FoEfqOl4UqHwNJ7GEXq9MWgzBH9wDL69Bb4kSKQ9vKwD
EgAnXObS3FOUPLK5AMXc5jy8rRaUru58+cGs1cNIg69zgQ3FQyWF0FHI7kGsAdz9
8iUZhXL22I7+EVBgd9DLAAMGA/9oK+Xjo7xdLZvkW8b4nNIA7Xyml2uMLYjg/OVg
qRkVU5f7KM2oHna7+VtvdJrIl9bTVc6mrTl6GY1/0GYb1edgSu2Axg+msj3fVkGd
8hWuNQ/T5v45kgPcoJxWLzaWWkDeLQAf5tq/QVmN8hofl6UsrsNDvYTBbl7129uo
3BJbG4hGBBgRAgAGBQI8auGUAAoJEHUtCmzHRPGLta8An39UVQwz3OgsZQ5e8upC
VEBCvTUmAJ9/8mbmXF+Ii/JdY6STmU1MMfmQvQ==
=A6my
-----END PGP PUBLIC KEY BLOCK-----

C.3.113 Gregory Sutter

pub  1024D/845DFEDD 2000-10-10 Gregory S. Sutter <gsutter@zer0.org>
     Key fingerprint = D161 E4EA 4BFA 2427 F3F9  5B1F 2015 31D5 845D FEDD
uid                            Gregory S. Sutter <gsutter@freebsd.org>
uid                            Gregory S. Sutter <gsutter@daemonnews.org>
uid                            Gregory S. Sutter <gsutter@pobox.com>
sub  2048g/0A37BBCE 2000-10-10
-----BEGIN PGP PUBLIC KEY BLOCK-----

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
sTEQABKrEX0m
=fxvp
-----END PGP PUBLIC KEY BLOCK-----

C.3.114 Yoshihiro Takahashi

pub  1024D/8394B81F 2001-10-15 Yoshihiro TAKAHASHI <nyan@jp.FreeBSD.org>
     Key fingerprint = D4FA D8CA 2AED FCF4 90A3  3569 8666 0500 8394 B81F
uid                            Yoshihiro TAKAHASHI <nyan@furiru.org>
uid                            Yoshihiro TAKAHASHI <nyan@FreeBSD.org>
sub  1024g/B796F020 2001-10-15
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1.0.6 (FreeBSD)
Comment: For info see http://www.gnupg.org

mQGiBDvKlwgRBADKGTPgNos5F4dobTyIhNN1nVHwKtvdTM06orzFj8VccmdZlJF7
DLp1UH1gwiVGLu1NPOrQXKeaZmK3iO11fTV0zbCUlUnfgSQsJJeGUFMx7/tgu/F3
L1qe1p37txNYN09SSEBJe7rlTLhM4VWa3LeEG58Td0d2qP/fJeikz9HIVwCgzIJd
aEclfjgNmsx2lM8jn6qxJXED/jyqV1eAgTD8C6MRPGYcqyLUZoIy7SwdhvQLKlT3
rAI4yHy5m8Njj0bk1oJM+2PAhZN3o16tpsjQEJuWoIGWxe9P4AX2Rr6htpidn2Gc
UOXaMFZyy0MX4ULfph78FEzRC8WGEV1hWLW9pNnzaASY/RwNNvW/YnGyKSCq9ilC
YG9mBACfcmN76QnFFDHd76otrltwwjj1zTRoHEnBgfj/EldDeOaU5cBG0HiV6cbv
94MYUi16AnN6462qG8RHJmSPblsm2Og1e7aaZl0CpVgOq86QBwqDHFXh0q0UtgXU
EQChaBe68ydZRwd9TScAknuj5iAXfXtwAeyhWbzmVyJH0Kk8QbQlWW9zaGloaXJv
IFRBS0FIQVNISSA8bnlhbkBmdXJpcnUub3JnPohXBBMRAgAXBQI7ypcIBQsHCgME
AxUDAgMWAgECF4AACgkQhmYFAIOUuB9UUQCgwTQSPrbTxhJvi1DdGsYhHOsT0PsA
nRNBwMyeLPQPhLxw8EPLgyno7+EHtCZZb3NoaWhpcm8gVEFLQUhBU0hJIDxueWFu
QEZyZWVCU0Qub3JnPohXBBMRAgAXBQI7ypdXBQsHCgMEAxUDAgMWAgECF4AACgkQ
hmYFAIOUuB8q0ACfTgzsn+Q6wc4aDQ7nT3+M4HPWXhUAn3nhtyq4Ucu2A6oHXvVt
1oAhhGyPtClZb3NoaWhpcm8gVEFLQUhBU0hJIDxueWFuQGpwLkZyZWVCU0Qub3Jn
PohXBBMRAgAXBQI8VVkOBQsHCgMEAxUDAgMWAgECF4AACgkQhmYFAIOUuB/XmgCa
AgHmONlOiOhKdY5LtVJoDi0+cOgAoK4wJFYzstYbpXayj0LqbgmYiY3QuQENBDvK
lwwQBACBBH7cM4WCT6D1w1XAQnWgL4eE/fMcR3aPiHBDd8eDWFFOhwSPh3W6jZ5T
STUEZCF7lgD3k+QJtDhVKE0U/hha1ZFMgdTTbhEW9Pl9DHW3BYxPXxq/SURwpGFg
0GriV65Hx3Dq6cxkBfzGZzrZA2JfRwb3pXisNSGDILAtNRw3jwADBQP+OSbFQWL2
n+KrBX4dPbp5cuFVL1/NNOWhSOwU+IsR8jDaCYpLy+Zkn7Bn90bIee7zsdWOkGWf
/qV0qm6dY7xLs/hoCKgk+0jPPevVcCayfCTzBZ+d76qPjWQtEgKN7/LJZn8rMCBf
B4kHxrcclf9z3OdI+BzTNrPZaCeHLd7nMKeIRgQYEQIABgUCO8qXDAAKCRCGZgUA
g5S4H1r/AJ973EUo0J+SF83Sj/hL0zDTQBKlKgCcDy1o6LmSduT3NE28KB3Iw10I
kqA=
=eB3G
-----END PGP PUBLIC KEY BLOCK-----

C.3.115 Mikhail Teterin

pub  1024R/3FC71479 1995-09-08 Mikhail Teterin <mi@aldan.star89.galstar.com>
     Key fingerprint = 5F 15 EA 78 A5 40 6A 0F  14 D7 D9 EA 6E 2B DA A4
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1.0.6 (FreeBSD)
Comment: For info see http://www.gnupg.org

mQCNAzBPh/0AAAEEAKiF0rNVbbuQue8Mo+knlGKtZJXWkLOhmdzE+FPxTSRv3TOS
OHOfFbEbTlcuplvYv1US6o4liAyyx6vGLGa7ZW0zLFAtTOJTfwW3GPmcMTieOIK3
wwzJtjH+wi7VeXIQCU/mOcLC9A8QaLqhJ86e3m9FODSFMIluSoucrgI/xxR5AAUR
tC1NaWtoYWlsIFRldGVyaW4gPG1pQGFsZGFuLnN0YXI4OS5nYWxzdGFyLmNvbT6J
AJUDBRAwT4kMH2ldntvsCqUBAVAcA/4x53VCfOx5Bm+BtneQNEvHgV8aqWW0tM4r
31KtsSjMwuHF3kl7PJtCfVk4OpRvog4u9V5G7gtUhUIOi/Qfuia2YHvvxIh3sx7Z
Gg22e4FxNzNob3qV+YiPOr+Aa6EoYfHB45eHSLFXryCBS60a0CfZies+CSzcHBy9
/Zu51dCtnQ==
=f57V
-----END PGP PUBLIC KEY BLOCK-----

C.3.116 Gordon Tetlow

pub  1024D/357D65FB 2002-05-14 Gordon Tetlow <gordont@gnf.org>
     Key fingerprint = 34EF AD12 10AF 560E C3AE  CE55 46ED ADF4 357D 65FB
uid                            Gordon Tetlow <gordon@FreeBSD.org>
sub  1024g/243694AB 2002-05-14
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1.0.7 (FreeBSD)

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
=1nJ4
-----END PGP PUBLIC KEY BLOCK-----

C.3.117 Jacques Vidrine

pub  2048R/33C1627B 2001-07-05 Jacques A. Vidrine <nectar@celabo.org>
     Key fingerprint = CB CE 7D A0 6E 01 DC 61  E5 91 0A BE 79 17 D3 82
uid                            Jacques A. Vidrine <jvidrine@verio.net>
uid                            Jacques A. Vidrine <n@nectar.com>
uid                            Jacques A. Vidrine <jacques@vidrine.cc>
uid                            Jacques A. Vidrine <nectar@FreeBSD.org>
uid                            Jacques A. Vidrine <n@nectar.cc>

pub  1024D/1606DB95 2001-07-05 Jacques A. Vidrine <nectar@celabo.org>
     Key fingerprint = 46BC EA5B F70A CC81 5332  0832 8C32 8CFF 1606 DB95
uid                            Jacques A. Vidrine <jvidrine@verio.net>
uid                            Jacques A. Vidrine <n@nectar.com>
uid                            Jacques A. Vidrine <jacques@vidrine.cc>
uid                            Jacques A. Vidrine <nectar@FreeBSD.org>
uid                            Jacques A. Vidrine <n@nectar.cc>
sub  2048g/57EDEA6F 2001-07-05
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1.2.1 (FreeBSD)

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
=lY5L
-----END PGP PUBLIC KEY BLOCK-----

C.3.118 Adam Weinberger

pub  1024D/42C743FD 2002-10-12 Adam Weinberger <adam@vectors.cx>
     Key fingerprint = A980 3F2E 80A8 9619 9D1C  82E8 A3C2 8CD9 42C7 43FD
sub  1024g/15D67628 2002-10-12
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1.2.0 (FreeBSD)

mQGiBD2neE8RBADgkTfNUPbm3AVnVPn/Ds5lDO89yKowW3ULixWqJ6Mti+7sIQ6y
A4v5/dlUODTH0sdL4Cl3q36pCOP13IIq7o14h4YOjMhdMhsv43678VYK0PvR70hK
/PxqIRV3lQsP2g8LihKLpRy6sHleIXu1hRLbIBI6/iJTmFcENQfivyHpBwCg31J6
6jew1OrTLlB76aWmmRJIlVkEAII7j0gAqV/zjR16sAsfiCSHSg9A8RGBmC67zUfK
PxnrLiw0gqyrt77YnXvANGWDdIMHEZrcDBrb8ciSO8agBO2+/7mOVDVDU5I/SJRi
rfJTQvFphcnOe7F3MaxdfA/vZE9woXq4JLXfnmcgUAey4iYB2QbV/+v1HBo6wys6
qyDXBACMsXFWZbDNDwUZBxGVS66bLwpZ/UhWqkrAyvK/7M/HQjkFTUUX2fSTPnWh
AkcA82asPxQFTdbd7BOs4JnXUY4m+wfP3pzGaCbgL6WYumRjvmvkmeyZtFD+2wxL
nu/F3oO9PC2f4mGa6E928BLy2bRCV75L0OMmbR5Fd0Z+95k3kLQhQWRhbSBXZWlu
YmVyZ2VyIDxhZGFtQHZlY3RvcnMuY3g+iFkEExECABkFAj2neE8ECwcDAgMVAgMD
FgIBAh4BAheAAAoJEKPCjNlCx0P9I7UAmQGWPEjqlXfxptWgb5WKskfl+rkkAJwI
OSvOdiBFM7/EBBgn9pUQ/6PVUrkBDQQ9p3haEAQAzc17FQj9ePY4tW2+nWiQzj8I
GVG+8fsVwFhDb4hFcpJxPiR3/J07tU4iyKek/qUiOQdW/dI30vm3rOSIUa3r9iaj
OaJilRVDO3ErUCdcrJjGf+fTWZFa8t2TLwOooyV8tJ5IUYLwJ8s7/3OpwWh1pfCQ
qxGACCiXeKQo0a9jxJcAAwUD/35x0sm6jV2OZaHxX/JteeLu1hJOE4hc8oRqiE93
4j8frz33jIsRFpKJ+H28LXtRmVXtVTdq3RuHll5JRCMG+IPLT3Tns/d0L90twpOj
4r+2BFIK6SYE6JYngf+J5clwve3vE7Y/b8NbSawEApvVxdrpsevGH0Sn5MSdiukm
EkJviEYEGBECAAYFAj2neFoACgkQo8KM2ULHQ/1NRgCeJ6ZJYvc1oOUBdEKd7SoH
rFA6N/8An3A9ukQlZm3lPMutMia2vnsb108k
=0qTN
-----END PGP PUBLIC KEY BLOCK-----

C.3.119 Nate Williams

pub  1024D/C2AC6BA4 2002-01-28 Nate Williams (FreeBSD) <nate@FreeBSD.org>
     Key fingerprint = 8EE8 5E72 8A94 51FA EA68  E001 FFF9 8AA9 C2AC 6BA4
sub  1024g/03EE46D2 2002-01-28
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1.0.6 (FreeBSD)
Comment: For info see http://www.gnupg.org

mQGiBDxVl7cRBADbXnR4t/xRvvOSiPuGPnOGeamrphPbpPXsWD8Nm/pjfN3fhSfa
0gv3Y2n/IyLTg93gWZhWloMznkdg59Oj0oPSUxjgPauVw4q6l3JJIcurJNlp/Q7l
DH0KLFJ8GuL6zxAz7Jcx1BpAIEu+G2SnI8+ZuGvq+YwaDxPFavfCqmVaBwCg/iPu
OI+84/W54yZXvxfUN7dkDmED/3CxYLGeWqPqE8B8Eq8BlmgfP/FwaqXXb6xR7jsE
XBaqNOIita6Iz49sYTYKYY2rMv6dMXjX1FM13wNW3rS73xkNvuJz0WU6sWl9Hw1e
kjNjCN2oIqkqB5/1H14NMSOcUPLqERP7goFIK7OAJejUmm5Nc3KjG1S2G97xxjPe
39mlBAC0QFfa8J0Z6TORFa8Uqyx90pC/Y+I/S+y0vP/59ReP/PnQq/aUdDPLt5OZ
edtpz7M4A2GtoVkWtedPRsw0hYK+Q3CtOMemQSnlfVjTZq5edL05Po09N89M/WMz
hB9aRcdY7IN/btsQ0H12ZH+rEj+O4Adu+qEjsWePfW60Uj74GbQqTmF0ZSBXaWxs
aWFtcyAoRnJlZUJTRCkgPG5hdGVARnJlZUJTRC5vcmc+iFcEExECABcFAjxVl7cF
CwcKAwQDFQMCAxYCAQIXgAAKCRD/+YqpwqxrpMSwAKCVuyt4B1Pc1tAwRMEOmmZw
2nGIIQCgyRvB49snyBl86TikYv97ZifyLmK5AQ0EPFWXuRAEAIghycOZtElvBhfw
r7TisjtVtzKhbF0Kj9cGg5brCC8/bJLK7PxNe48NSdlqMJ7algumsgYR37b/QBmq
sOSEa2wXCnvCSD0ol+bdPn+Psb+hyi+AVNmVgdlJwuxHUHny0lWQnxeQLrt07SAw
Ye/Nnc+arH6GXzBwXSpsQ2sOaMajAAMGA/9Hzjkv6HmJkPlKT2TNx33mbLaDk8xv
vAJXxogxDcUqDDwqszWPcqShaW0IkMZo+grZfykZJjA0/8QUCaEUwhnYIwHMQRdA
uNegCF/D2x4yzkF4d9gKYCCykDUrwvFDztIhGkinyzu6+xwe9qFcL/esIxnnonz7
Wx8/3e7pRvS2QIhGBBgRAgAGBQI8VZe5AAoJEP/5iqnCrGukuikAnAt8uA1EIv/5
WDCIpvNp0lgmwes9AJ4vD1R35+Db6UIw+R5EJaxNBY84zg==
=xbGI
-----END PGP PUBLIC KEY BLOCK-----

C.3.120 Garrett Wollman

pub  1024D/0B92FAEA 2000-01-20 Garrett Wollman <wollman@FreeBSD.org>
     Key fingerprint = 4627 19AF 4649 31BF DE2E  3C66 3ECF 741B 0B92 FAEA
sub  1024g/90D5EBC2 2000-01-20
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1.0.6 (FreeBSD)
Comment: For info see http://www.gnupg.org

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
iq7OH/kskwCfeEvJINcMBk0UEdjpgO85woB6QKI=
=stB+
-----END PGP PUBLIC KEY BLOCK-----

C.3.121 Jörg Wunsch

pub  1024R/76A3F7B1 1996-04-27 Joerg Wunsch <joerg_wunsch@interface-business.de>
     Key fingerprint = DC 47 E6 E4 FF A6 E9 8F  93 21 E0 7D F9 12 D6 4E
uid                            Joerg Wunsch <j@interface-business.de>
uid                            Joerg Wunsch <joerg_wunsch@uriah.heep.sax.de>
uid                            Joerg Wunsch <j@uriah.heep.sax.de>
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1.0.6 (FreeBSD)
Comment: For info see http://www.gnupg.org

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
=Bpdm
-----END PGP PUBLIC KEY BLOCK-----

C.3.122 Alexey Zelkin

pub  1024D/9196B7D9 2002-01-28 Alexey Zelkin <phantom@FreeBSD.org>
     Key fingerprint = 4465 F2A4 28C1 C2E4 BB95  1EA0 C70D 4964 9196 B7D9
sub  1024g/E590ABA4 2002-01-28
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1.0.6 (FreeBSD)
Comment: For info see http://www.gnupg.org

mQGiBDxVhBMRBAD20EH9hS3S3gy73E1s//vYS1yo4GmmvzUzMTJo4HH6OMFT/MVn
B51RXK5YlQ1cau4MWt2sifpWsG2hmmmPtOIaC6Mn4X8cEXmzy6qW5m+3RUdXB8rM
pFSEVVEGhE9Sq+pTI1wB4VUJ5mhQtvWVJKsmuyf1YRa/zrr2zbZTIXg5EwCggloA
GdcoFNm7p+cW56HJI1jZTpcD/jUyc4KLeimo+6Fn3z6NZh64GS+JmmCDe7mlcK2S
XNPVq3tXXP3ZUKdv3faoMAgI1hSi82/32GINDkhiLPc0Q2tQZRDYKvyY/swgJSnV
1LV8jlpk2VsmsYOp9hW4SJLAQUaejpZe4CwHpOfJWbPkXE83nVygA0lnN89dfhIH
JaB8A/9VottMl88+CLzqF3AzN72R5tFWnSFMWumaODis+UvLW0XAMP4AHhvux/FS
Pl+m2YtilHhib6lfMYuGalN84H7VxOBxjc9L4qORV9jP4cWEYXpxx0DTmmtFfLae
xGGTyYNM1RiqmScXMF28Am1I+WhnLTql8DVFWr8XoZUbususg7QjQWxleGV5IFpl
bGtpbiA8cGhhbnRvbUBGcmVlQlNELm9yZz6IVwQTEQIAFwUCPFWEEwULBwoDBAMV
AwIDFgIBAheAAAoJEMcNSWSRlrfZ9yQAn0bnLWBjo47dKrS82X1VvbuokkNXAJsH
oANWk5PoOZzySJ7st8/IyaLBErkBDQQ8VYQXEAQA2cEOpYzl8L5y8TErdj1lfpHt
gxm1QFETl8HvZGb/hTRWVhIcUhtOLA2uftk1oDHbnp+FPsJuFTxanCaCSQVdtMEE
I1zK/Qy384FjS1B6L3yq84yTKn+Gp8SbMX3ZWT+dVmy88yJpmo/yFiiN9d2hYy1q
fCUWhbAoWeD7sqSeGL8ABA0D/Au95rpaYunrMhu5nVdvZpTbNEIEDLOTS337GWy7
n1E9RG72ujCLFg8tbEmjEUFYfCZ/cW+6+2/Nj7zoGH9xXH6bRTfSKXojdKgNkUvL
SLynpmFpUlFKc4fzSxx5EkCxH/zog9X2CQjMvxHmSD1/x+LeD0v/5WMsLvIdj6Op
0KmziEYEGBECAAYFAjxVhBcACgkQxw1JZJGWt9nbrQCcCvSJho7n1r4+1PGTlcep
ABxplbsAn05jPrtZLjln7aKcavCp8FICJ2TY
=GYHE
-----END PGP PUBLIC KEY BLOCK-----

Этот, и другие документы, могут быть скачаны с ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

По вопросам связанными с FreeBSD, прочитайте документацию прежде чем писать в <questions@FreeBSD.org>.
По вопросам связанным с этой документацией, пишите <doc@FreeBSD.org>.
По вопросам связанным с русским переводом документации, пишите <frdp@FreeBSD.org.ua>.


Руководство FreeBSDPrevNext

Appendix C. Ключи PGP

Table of Contents
C.1 Офицеры
C.2 Члены Core
C.3 Разработчики

В случае если Вам необходимо проверить подпись или послать зашифрованное электронное письмо одному из офицеров безопасности или члену core группы FreeBSD ряд PGP ключей представлены здесь для Вашего удобства. Полный список ключей пользователей FreeBSD.org доступен для скачивания с http://www.FreeBSD.org/doc/pgpkeyring.txt.

C.1 Офицеры

C.1.1 Security Officer Team

pub  1024D/CA6CDFB2 2002-08-27 FreeBSD Security Officer <security-officer@FreeBSD.org>
     Key fingerprint = C374 0FC5 69A6 FBB1 4AED  B131 15D6 8804 CA6C DFB2
sub  2048g/A3071809 2002-08-27

pub  1024R/73D288A5 1996-04-22 FreeBSD Security Officer (Deprecated key) <security-officer@freebsd.org>
     Key fingerprint = 41 08 4E BB DB 41 60 71  F9 E5 0E 98 73 AF 3F 11
uid                            FreeBSD Security Officer <security-officer@freebsd.org>
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1.2.1 (FreeBSD)

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
3QCeKRrlaWusbYfqZn4BQsSpYw90evo=
=DbL2
-----END PGP PUBLIC KEY BLOCK-----

C.1.2 Core Team Secretary

pub  1024R/FF8AE305 2002-01-08 core-secretary@FreeBSD.org
     Key fingerprint = CE EF 8A 48 70 00 B5 A9  55 69 DE 87 E3 9A E1 CD
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1.0.6 (FreeBSD)
Comment: For info see http://www.gnupg.org

mQCNAzw7fN4AAAEEALL1ENfbFYcAEmS6Hrb7CV7sWrbG+HlIwYvUUuqvr8+D3axd
XuRJGFaWk8zNrTrwWROnlMMlctG3iXNsKzQNxAE6N64rbrUbKI5PzihfEsJW5/io
XGXrRGdXvwob/Qdnd6mIlm3IJduChV7Nf3K2WbimUNkFeXrrh/ymwUj/iuMFAAUR
tBpjb3JlLXNlY3JldGFyeUBGcmVlQlNELm9yZ4kAlQMFEDw7fN78psFI/4rjBQEB
U4ID/1N6haUd+k+tzwNpX6pKnlCuTCJvJ619Lp83T8pRDGZom/uSLrfMrzvmKPeE
abXGnreM41JRLAbGOclsONVBCLvwc/v+VVXTm24J1rdS1qY/SD+LE87pxPL6Ncyt
Ug2sxPSo8fDVKu+MdcGK5zwP5ekNHDl+DB1mMsYDkZHTp9FMiQCVAwUQPDt+RafG
T4fq3uQJAQFKvAQAl6+XaXQ1GzfqJoGqaTVW2O1OaodyBJjLxgRsVv7ps5Z4M4nl
uYoe5ih+Lk3BVD9Y18QKUrnAPlbXDr1Ld0arq8uFkFsVzNDb2asg6tgcQe7mQ9lA
QZPgVOU+siTmEuolSvxwsjxn/szBYBPv5EnU6lSmGf/RDJnbFXC9Z/LgPFU=
=tMn4
-----END PGP PUBLIC KEY BLOCK-----

Этот, и другие документы, могут быть скачаны с ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

По вопросам связанными с FreeBSD, прочитайте документацию прежде чем писать в <questions@FreeBSD.org>.
По вопросам связанным с этой документацией, пишите <doc@FreeBSD.org>.
По вопросам связанным с русским переводом документации, пишите <frdp@FreeBSD.org.ua>.


Руководство FreeBSD
Prev Chapter 4. Установка приложений: Коллекция портов Next

4.4. Вопросы повышенной сложности

Описание, которое здесь было, для удобства перемещено в отдельное Руководство по портированию. Пожалуйста, обращайтесь к нему, если вы собираетесь создавать и присылать нам ваши порты.


Руководство FreeBSD
Prev Chapter 4. Установка приложений: Коллекция портов Next

4.3. Устранение некоторых проблем

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

4.3.1. Некоторые Вопросы и Ответы

Q: Я думал, здесь будут обсуждаться модемы??!
Q: Я думал, что для установки дополнительных программ вы посоветуете использовать пакаджи?
Q: Если так, то зачем тогда возиться с портами?
Q: Что такое патч?
Q: Что это за tar-файлы?
Q: А контрольная сумма?
Q: Я делал все, что здесь сказано, при компиляции портов с компакт-диска и все прекрасно работало до тех пор, пока я не попытался установить порт программы kermit.
Q: Я это сделал, но, когда я попытался поместить этот файл в каталог /usr/ports/distfiles, то получил сообщение об ошибке, сообщающее об отсутствии прав доступа.
Q: Система портов работает, только когда все находится в каталоге /usr/ports? Администратор нашей системы сказал, что я должен держать все свои файлы в /u/people/guests/wurzburger, но тогда ничего не работает.
Q: У меня нет компакт-диска с FreeBSD, но я хочу скопировать все tar-файлы вручную на мою систему, чтобы при установке порта не ждать каждый раз, когда же он скачается. Есть ли способ получить все эти файлы сразу?
Q: Я знаю, что, скорее всего, быстрее получится скачивать tar-файлы с одного из ближайших зеркальных серверов FreeBSD. Есть ли способ указать, что порты нужно сгружать оттуда, а не с серверов, указанных в качестве MASTER_SITES?
Q: Я хочу знать, какие файлы нужно будет скачать при выполнении команды make до того, как они начнут скачиваться.
Q: Есть ли способ предотвратить компиляцию порта? Я хочу немножко покопаться в исходных текстах до того, как буду устанавливать порт, однако несколько поднадоедает каждый раз следить и нажимать в нужный момент control-C.
Q: Я пытаюсь создать собственный порт и хочу отключить компиляцию до тех пор, пока не увижу, что мои патчи работают нормально. Есть ли команда типа make extract, но работающая для патчей?
Q: Я слышал, что некоторые параметры работы компилятора могут приводить к ошибкам. Это правда? Как я могу быть уверенным, что порт компилируется с правильными параметрами?
Q: Портов так много, что трудно найти именно тот, который мне нужен. Есть ли где-нибудь список всех имеющихся портов?
Q: Я начал устанавливать порт foo, однако система неожиданно остановила компиляцию и стала компилировать порт bar. Что, собственно, произошло?
Q: Я установил программу grizzle из портов и оказалось, что это бесполезная трата дискового пространства. Я хочу удалить ее, но не знаю, где находятся все файлы этой программы. Что посоветуете?
Q: Минуточку, вы же должны знать номер версии для использования в этой команде. Вы всерьез полагаете, что я должен их все помнить??
Q: Если говорить о дисковом пространстве, то каталог с портами, похоже, занимает ужасно много места. Можно ли удалять отсюда что-нибудь?
Q: Я попробовал сделать так, но все равно все эти архивы или как там вы их называете, остались в каталоге distfiles. Могу ли я удалить и их тоже?
Q: Мне нравится иметь все больше и больше программ для того, чтобы поиграться с ними. Есть ли способ установить все порты за раз?
Q: OK, я попробовал сделать это, но подумал, что этот процесс займет очень много времени, так что пошел спать, оставив все работать. Когда же я посмотрел утром на компьютер, то было откомпилировано только три с половиной порта. Что-то было сделано не так?
Q: Я вовсе не хочу провести весь день, пялясь в монитор. Есть идеи получше?
Q: На моей работе используется программа frobble, которая есть в вашей Коллекции портов, однако мы ее несколько исправили, чтобы получить то, что нужно. Есть ли способ создания наших собственных пакаджей для их распространения по нашим сайтам?
Q: Эта система портов - весьма хитрая штука. Я не могу понять, как вы это делаете. В чем секрет?

Q: Я думал, здесь будут обсуждаться модемы??!

A: А, вы, наверное, имеете в виду последовательные порты на задней панели вашего компьютера. Здесь мы используем слово "порт" в смысле результата "портирования" (переноса) программы с одной версии UNIX на другую.

Q: Я думал, что для установки дополнительных программ вы посоветуете использовать пакаджи?

A: Да, обычно это самый легкий и быстрый способ сделать это.

Q: Если так, то зачем тогда возиться с портами?

A: На это есть несколько причин:

  1. Условия лицензирования некоторых пакетов программного обеспечения запрещают распространение в виде двоичного кода. Они должны распространяться в виде исходного кода.

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

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

  4. У Вас может быть своё мнение по поводу того, как именно должна быть скомпилирована программа, и это мнение может отличаться от мнения того человека, который создавал пакадж--некоторые очень строго придерживаются определённых настроек параметров оптимизации, а также того, строить ли отладочные версии, а затем убирать отладочную информацию командой strip или нет, и так далее.

  5. Как правило. пакаджи строятся с весьма консервативными, стандартными настройками. Если в порте присутствует параметр компиляции, задающий использование кода, специфичного для некоторого процессора или нестандартного адаптера, то Вы можете включить его использование сами, не привлекая людей, создающих порты, к генерации множества различных версий пакаджей.

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

  6. Некоторым нравится иметь всегда под рукой исходный код, так что они могут его читать, если им станет скучно, хакать его, заимствовать оттуда что-либо (конечно, если это позволяет лицензионное соглашение), и так далее.

  7. Если у вас нет исходных текстов, то это не программы! ;-)

Q: Что такое патч?

A: Патч - это маленький файл, в котором указано, как перейти от одной версии файла к другой. Он имеет формат обычного текста, и, как правило, содержит указания типа "удалить строку 23", "добавить вот эти две строки после строки 468" или "заменить строку 197 вот на такую". Их также называют дифф-файлами или просто диффами, потому что они создаются программой diff.

Q: Что это за tar-файлы?

A: Это файлы, оканчивающиеся на .tar или, как вариант, на .tar.gz, .tar.Z, .tar.bz2 и даже .tgz.

В основном такие файлы представляют собой дерево каталогов, которое было заархивировано в один файл (.tar) и (может быть) подвергнуто сжатию (.gz). Такая методика первоначально использовалась для архивов на лентах Tape ARchives (откуда, собственно, и пошло слово tar), и она широко используется для распространения исходного кода программ в Интернет.

Вы можете просмотреть, какие файлы находятся в этих архивах, или даже самостоятельно извлечь их с помощью стандартной для UNIX программы tar, включенной в стандартную поставку системы FreeBSD, как здесь:

    % tar tvzf foobar.tar.gz
    % tar xzvf foobar.tar.gz
    % tar tvf foobar.tar
    % tar xvf foobar.tar
          

Q: А контрольная сумма?

A: Это число, получаемое в результате сложения содержимого того файла, который вы хотите проконтролировать. Если меняется хоть один символ, контрольные суммы перестают совпадать, так что простое их сравнение поможет выявить изменение.

Q: Я делал все, что здесь сказано, при компиляции портов с компакт-диска и все прекрасно работало до тех пор, пока я не попытался установить порт программы kermit.

    # make install
    >> cku190.tar.gz doesn't seem to exist on this system.
    >> Attempting to fetch from ftp://kermit.columbia.edu/kermit/archives/.
          

Почему он не может быть найден? У меня не тот компакт-диск?

A: Как уже было сказано в главе о компиляции портов с компакт-диска, некоторые порты не могут быть помещены на CDROM из-за их лицензионных ограничений. Kermit является примером такого приложения. Его условия лицензирования не позволяют нам поместить его tar-файл на компакт-диск, так что вам придется скачать его вручную--извините!

Причиной, по которой вы получили все эти сообщения об ошибках, является то, что в тот момент вы не были подключены к Интернет. Как только вы скачаете этот файл с любого из MASTER_SITES (перечисленных в Makefile), то сможете начать процесс установки заново.

Q: Я это сделал, но, когда я попытался поместить этот файл в каталог /usr/ports/distfiles, то получил сообщение об ошибке, сообщающее об отсутствии прав доступа.

A: При работе система портов ищет tar-файл в каталоге /usr/ports/distfiles, однако вы не сможете скопировать туда ничего, потому что это на самом деле это символическая ссылка на компакт-диск, который доступен только для чтения. Вы можете заставить систему выполнять поиск в другом месте, сделав следующее:

    # make DISTDIR=/where/you/put/it install
          

Q: Система портов работает, только когда все находится в каталоге /usr/ports? Администратор нашей системы сказал, что я должен держать все свои файлы в /u/people/guests/wurzburger, но тогда ничего не работает.

A: Для того, чтобы указать системе построения портов на использование других каталогов, вы можете использовать переменные PORTSDIR и PREFIX. В частности,

    # make PORTSDIR=/u/people/guests/wurzburger/ports install
          

будет строить порт в каталоге /u/people/guests/wurzburger/ports, а устанавливать все в /usr/local.

    # make PREFIX=/u/people/guests/wurzburger/local install
          

будет строить порт в каталоге /usr/ports и устанавливать в /u/people/guests/wurzburger/local.

И, наконец,

    # make PORTSDIR=../ports PREFIX=../local install
          

использует обе переменные (этот пример слишком длинен для помещения на страницу полностью, но вы должны уловить общую идею).

Если вам не нравится набирать все это каждый раз при установке портов, можно поместить эти переменные в ваше окружение. Прочтите страницы Справочника по вашему командному процессору и найдите, как это сделать.

Q: У меня нет компакт-диска с FreeBSD, но я хочу скопировать все tar-файлы вручную на мою систему, чтобы при установке порта не ждать каждый раз, когда же он скачается. Есть ли способ получить все эти файлы сразу?

A: Чтобы скачать все tar-файлы для Коллекции портов, сделайте вот что:

    # cd /usr/ports
    # make fetch
          

Чтобы скачать все tar-файлы для какого-то одного каталога из дерева портов, выполните следующее:

    # cd /usr/ports/directory
    # make fetch
          

ну а что касается одного конкретного порта--ну, я думаю, вы уже догадались, что вам нужно сделать.

Q: Я знаю, что, скорее всего, быстрее получится скачивать tar-файлы с одного из ближайших зеркальных серверов FreeBSD. Есть ли способ указать, что порты нужно сгружать оттуда, а не с серверов, указанных в качестве MASTER_SITES?

A: Да. Если вы, например, знаете, что ftp.FreeBSD.org гораздо ближе к вам, чем сайты, перечисленные в строке MASTER_SITES, то сделайте так:

    # cd /usr/ports/directory
    # make MASTER_SITE_OVERRIDE= \
ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/distfiles/ fetch
          

Q: Я хочу знать, какие файлы нужно будет скачать при выполнении команды make до того, как они начнут скачиваться.

A: Команда make fetch-list выдаст список файлов, которые нужны для построения порта.

Q: Есть ли способ предотвратить компиляцию порта? Я хочу немножко покопаться в исходных текстах до того, как буду устанавливать порт, однако несколько поднадоедает каждый раз следить и нажимать в нужный момент control-C.

A: При выполнении команды make extract процесс построения остановится после того, как будет сгружен и распакован исходный код порта.

Q: Я пытаюсь создать собственный порт и хочу отключить компиляцию до тех пор, пока не увижу, что мои патчи работают нормально. Есть ли команда типа make extract, но работающая для патчей?

A: Ага, make patch - это то, что вы ищете. Также вам может оказаться полезным параметр PATCH_DEBUG. И кстати, благодарим вас за ваши усилия!

Q: Я слышал, что некоторые параметры работы компилятора могут приводить к ошибкам. Это правда? Как я могу быть уверенным, что порт компилируется с правильными параметрами?

A: Да, в версии 2.6.3 компилятора gcc (которая поставлялась с FreeBSD 2.1.0 и 2.1.5), параметр -O2 мог приводить к генерации ошибочного кода, если вы не использовали также опцию -fno-strength-reduce. (Большинство портов не используют параметр -O2). У вас должно получиться указание используемых параметров компилятора примерно следующим образом:

    # make CFLAGS='-O2 -fno-strength-reduce' install
          

или посредством редактирования /etc/make.conf, но, к сожалению, не все порты это поддерживают. Самый надежный способ - это выполнить команду make configure, а затем перейти в каталог с исходными текстами и изучить файлы Makefile вручную, но это может оказаться утомительным занятием, если исходный код имеет много подкаталогов, каждый с собственными make-файлами.

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

Q: Портов так много, что трудно найти именно тот, который мне нужен. Есть ли где-нибудь список всех имеющихся портов?

A: Взгляните на файл INDEX в каталоге /usr/ports. Если вы хотите выполнить поиск в коллекции портов по ключевому слову, вы это тоже осуществимо. Например, вы можете найти порты, связанные с языком программирования LISP, с помощью команды:

    % cd /usr/ports
    % make search key=lisp
          

Q: Я начал устанавливать порт foo, однако система неожиданно остановила компиляцию и стала компилировать порт bar. Что, собственно, произошло?

A: Порту foo требуется что-то, имеющееся в порту bar -- например, если foo использует графику, в bar может присутствовать библиотека с полезными функциями обработки графики. Или bar может быть инструментом, который необходим для компиляции порта foo.

Q: Я установил программу grizzle из портов и оказалось, что это бесполезная трата дискового пространства. Я хочу удалить ее, но не знаю, где находятся все файлы этой программы. Что посоветуете?

A: Нет проблем, просто сделайте следующее:

    # pkg_delete grizzle-6.5
          

Альтернативным способом является:

    # cd /usr/ports/somewhere/grizzle
    # make deinstall
          

Q: Минуточку, вы же должны знать номер версии для использования в этой команде. Вы всерьез полагаете, что я должен их все помнить??

A: Вовсе нет, вы можете выяснить это с помощью:

    # pkg_info -a | grep grizzle
    Information for grizzle-6.5:
    grizzle-6.5 - the combined piano tutorial, LOGO interpreter and shoot 'em up
    arcade game.
          

Q: Если говорить о дисковом пространстве, то каталог с портами, похоже, занимает ужасно много места. Можно ли удалять отсюда что-нибудь?

A: Да, если вы установили программу и достаточно уверены, что ее исходные тексты вам больше не понадобятся, то хранить их вовсе не обязательно. Лучше сделать это так:

    # cd /usr/ports
    # make clean
          

в результате чего будет сделан проход по всем подкаталогам и произойдет удаление всего, кроме скелетов каждого порта.

Q: Я попробовал сделать так, но все равно все эти архивы или как там вы их называете, остались в каталоге distfiles. Могу ли я удалить и их тоже?

A: Да, если вы уверены, что с ними покончено, то их тоже можно удалить. Их можно удалить вручную, или командой make distclean.

Q: Мне нравится иметь все больше и больше программ для того, чтобы поиграться с ними. Есть ли способ установить все порты за раз?

A: Просто сделайте вот так:

    # cd /usr/ports
    # make install
          

Будьте внимательны, потому что некоторые порты могут устанавливать файлы с уже имеющимися именами. Если Вы устанавливаете два работающих с графикой приложения, и оба они устанавливают файл /usr/local/bin/plot, то у вас однозначно возникнут проблемы.

Q: OK, я попробовал сделать это, но подумал, что этот процесс займет очень много времени, так что пошел спать, оставив все работать. Когда же я посмотрел утром на компьютер, то было откомпилировано только три с половиной порта. Что-то было сделано не так?

A: Нет, проблема в том, что некоторые порты задают вам вопросы, на которые мы не можем ответить за вас (например, "Хотите ли вы печатать на листы формата A4 или US letter?"), но на эти вопросы кто-то должен ответить.

Q: Я вовсе не хочу провести весь день, пялясь в монитор. Есть идеи получше?

A: OK, перед тем, как идти в кроватку/на работу/парк отдыха, сделайте вот что:

    # cd /usr/ports
    # make -DBATCH install
          

При этом будут установлены все порты, которым не нужно взаимодействовать с пользователем. Затем, когда вы вернетесь, сделайте:

    # cd /usr/ports
    # make -DIS_INTERACTIVE install
          

чтобы завершить работу.

Q: На моей работе используется программа frobble, которая есть в вашей Коллекции портов, однако мы ее несколько исправили, чтобы получить то, что нужно. Есть ли способ создания наших собственных пакаджей для их распространения по нашим сайтам?

A: Нет проблем, полагая, что вы знаете, как сделать патчи с вашими изменениями:

    # cd /usr/ports/somewhere/frobble
    # make extract
    # cd work/frobble-2.8
    [Apply your patches]
    # cd ../..
    # make package
          

Q: Эта система портов - весьма хитрая штука. Я не могу понять, как вы это делаете. В чем секрет?

A: Здесь нет никакого секрета, просто взгляните на файлы bsd.port.mk и bsd.port.subdir.mk в каталоге с make-файлами.

(Читателям, испытывающим дурноту при чтении скриптов, советуем не переходить по этой ссылке...)

4.3.2. Помогите! Этот порт не работает!

Если вы встретили порт, который у вас не работает, есть несколько вещей, которые вы можете сделать, а именно:

  1. Исправьте его! Раздел "о создании портов" должен вам помочь.

  2. Надавите--только по электронной почте! Сначала пошлите письмо человеку, сопровождающему порт. Наберите команду make maintainer или прочтите Makefile, чтобы найти его адрес. Не забудьте указать имя и версию порта (скопировав строчку $FreeBSD: из файла Makefile) и включите в письмо весь вывод, предшествующий возникновению ошибки. Если вы не получили ответа от этого человека, то можете воспользоваться командой send-pr для посылки сообщения об ошибке.

  3. Забудьте об этом. Это самый простой путь--лишь весьма незначительное число портов можно отнести к разряду "жизненно необходимых". Также имеется большая вероятность того, что все проблемы будут исправлены в следующей версии при обновлении порта.

  4. Сгрузите пакадж с ближайшего к вам сервера. "Основная" коллекция пакаджей находится на сервере ftp.FreeBSD.org в каталоге с пакаджами, но первым делом проверьте местное зеркало! Это, скорее всего, будет работать, и сделать это, кроме того, будет гораздо быстрее, чем пытаться компилировать порты из исходного кода. Воспользуйтесь программой pkg_add(1) для установки пакаджа в вашей системе.


Руководство FreeBSDPrevChapter 4 Установка приложений: порты и пакаджиNext

4.5 Использование Коллекции Портов

В этих разделах описаны основные приемы использования коллекции портов для установки и удаления программ из вашей системы.

4.5.1 Получение Коллекции Портов

Перед тем, как вы сможете устанавливать порты, вы сначала должны установить коллекцию портов--она представляет собой в основном набор файлов Makefile, патчей, файлов описаний, и она размещается в каталоге /usr/ports.

При установке вашей системы FreeBSD утилита Sysinstall запрашивает, требуется ли вам установка коллекции портов. Если вы ответили отрицательно, то можете следовать следующим указаниям для установки коллекции портов:

Метод с использованием Sysinstall

В этом методе повторно используется sysinstall для ручной установки коллекции портов.

  1. Работая как пользователь root, запустите /stand/sysinstall так, как это показано ниже:

    # /stand/sysinstall
  2. Опуститесь вниз и выберите Configure, нажмите Enter

  3. Опуститесь вниз и выберите Distributions, затем нажмите Enter

  4. Опуститесь вниз к пункту ports, нажмите клавишу Пробел

  5. Поднимитесь вверх к Exit, нажмите Enter

  6. Выберите желаемый носитель для установки, например, CDROM, FTP и так далее.

  7. Перейдите на пункт меню Exit и нажмите Enter.

  8. Нажмите X для выхода из sysinstall.

Альтернативный метод получения и постоянной актуализации вашей коллекции портов заключается в использовании CVSup. Посмотрите на файл CVSup из портов, /usr/share/examples/cvsup/ports-supfile. Прочтите раздел Использование CVSup () для получения более полной информации об использовании CVSup и этого файла.

Метод с использованием CVSup

Это быстрый способ для получения коллекции портов при помощи CVSup. Если вы хотите поддерживать ваше дерево портов в актуальном состоянии, или узнать больше о CVSup, то прочтите вышеотмеченные разделы.

  1. Установите порт net/cvsup. Обратитесь к разделу Установка CVSup () для получения более подробной информации.

  2. Работая как пользователь root, скопируйте /usr/share/examples/cvsup/ports-supfile в новое место, например, в каталог /root или в ваш домашний каталог.

  3. Отредактируйте ports-supfile.

  4. Измените CHANGE_THIS.FreeBSD.org на близкий к вам сервер CVSup. Посмотрите раздел Зеркала CVSup () для получения полного списка зеркалирующих сайтов.

  5. Запустите cvsup

    # cvsup -g -L 2 /root/ports-supfile
  6. При повторных запусках этой команды все последние изменения (кроме реального перестроения портов для вашей системы) будут сгружаться и переноситься в вашу коллекцию портов.

4.5.2 Установка портов

Когда речь заходит о коллекции портов, то первым делом вы должны понять, что именно подразумевается под словом ``скелет''. По сути скелетом порта является минимальный набор файлов, который указывает вашей системе FreeBSD, как корректно откомпилировать и установить программу. Скелет каждого порта включает:

В некоторых портах присутствуют и другие файлы, такие, как pkg-message. Система портов использует эти файлы для обработки особых ситуаций. Если вы хотите узнать более подробно об этих файлах и о портах вообще, то обратитесь к Руководству по созданию портов для FreeBSD.

Теперь, когда вы имеете достаточное количество информации о том, для чего предназначена коллекция портов, вы в состоянии установить ваш первый порт. Это может быть сделано двумя способами, каждый из которых будет описан ниже.

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

Другой метод заключается в использовании команды whereis(1). Чтобы ей воспользоваться, просто наберите в приглашении ``whereis file '', где file - программа, которую вы хотите установить. И если она имеется в вашей системе, вам об этом будет сообщено, как показано ниже:

# whereis lsof
lsof: /usr/ports/sysutils/lsof

Это говорит о том, что lsof (системная утилита) находится в каталоге /usr/ports/sysutils/lsof.

Ещё одним способом поиска некоторого порта является использование встроенной возможности поиска в коллекции портов. Чтобы ею воспользоваться, вы должны находиться в каталоге /usr/ports. Очутившись в этом каталоге, выполните команду make search name=program-name, где program-name - это название программы, которую вы хотите найти. Например, если вы ищете lsof:

# cd /usr/ports
# make search name=lsof
Port:   lsof-4.56.4
Path:   /usr/ports/sysutils/lsof
Info:   Lists information about open files (similar to fstat(1))
Maint:  obrien@FreeBSD.org
Index:  sysutils
B-deps:
R-deps:

Вам следует обратить особое внимание на строчку ``Path:'', так как в ней указывается, где найти порт. Остальная сообщаемая информация для установки порта не нужна, поэтому здесь она описываться не будет.

Для выполнения более глубокого поиска вы можете также использовать make search key=string, где string представляет собой некоторый текст, который ищется. При этом будет выполнен поиск в именах портов, комментариях, описаниях и зависимостях, и его можно использовать для поиска портов, связанных с некоторой темой, если вы не знаете названия программы, которую вы ищете.

В обоих этих случаях строка поиска нечувствительна к регистру. Поиск ``LSOF'' приводит к тому же самому результату, что и поиск ``lsof''.

Note: Для установки портов вы должны войти в систему как пользователь root.

Теперь, когда вы нашли порт, который хотите установить, можно выполнять реальную установку. В порт включаются инструкции относительно того, как выполнять построение из исходного кода, но не сам код. Вы можете получить исходный код с CD-ROM или из Интернет. Исходный код распространяется в том виде, какой предпочёл выбрать разработчик. Зачастую это tar-файл, обработанный утилитой gzip, но он может также быть упакованным каким-то другим инструментом или быть не сжатым. Исходный код программы, в каком бы то виде он ни был, называется ``дистрибутивным'' (distfile). Вы можете получить дистрибутивный файл с CD-ROM или через Интернет.

4.5.2.1 Установка портов с CD-ROM

Официальные образы CD-ROM Проекта FreeBSD больше не содержат дистрибутивные файлы. На них есть достаточно места, которое лучше использовать для предкомпилированных пакаджей. Продукты на CD-ROM, такие, как FreeBSD PowerPak, включают дистрибутивные файлы, и вы можете заказать их от таких поставщиков, как FreeBSD Mall. В этом разделе предполагается, что у вас есть такой набор CD-ROM с FreeBSD.

Вставьте ваш CD-ROM с FreeBSD в привод. Смонтируйте его в каталог /cdrom. (Если вы используете другую точку монтирования, то установка работать не будет.) Чтобы начать, перейдите в каталог с портом, который вы хотите установить:

# cd /usr/ports/sysutils/lsof

Оказавшись в каталоге lsof, вы увидите структуру порта. Следующим шагом является компиляция, или построение (``build'') порта. Это выполняется простой выдачей команды make в ответ на приглашение командного процессора. Как только вы это сделаете, то увидите выдачу, выглядящую примерно так:

# make
>> lsof_4.57D.freebsd.tar.gz doesn't seem to exist in /usr/ports/distfiles/.
>> Attempting to fetch from file:/cdrom/ports/distfiles/.
===>  Extracting for lsof-4.57
...
[выдача при распаковке опущена]
...
>> Checksum OK for lsof_4.57D.freebsd.tar.gz.
===>  Patching for lsof-4.57
===>  Applying FreeBSD patches for lsof-4.57
===>  Configuring for lsof-4.57
...
[выдача при конфигурации опущена]
...
===>  Building for lsof-4.57
...
[выдача при компиляции опущена]
...
#

Заметьте, что, как только компиляция закончится, вы снова вернётесь к приглашению вашего командного процессора. Следующим шагом является установка порта. Чтобы это сделать, вам нужно просто добавить одно слово к команде make, а именно слово install:

# make install
===>  Installing for lsof-4.57
...
[выдача при установке опущена]
...
===>   Generating temporary packing list
===>   Compressing manual pages for lsof-4.57
===>   Registering installation for lsof-4.57
===>  SECURITY NOTE:
      This port has installed the following binaries which execute with
      increased privileges.
#

Как только вы вернулись к приглашению вашей оболочки, вы должны суметь запустить приложение, которое только что установили. Так как lsof является программой, которая запускается с повышенными правами, то выдаётся предупреждение о безопасности. Во время построения и установки портов вы должны принимать во внимание все выдаваемые предупреждения.

Note: Вы можете сэкономить лишний шаг, просто выдав команду make install вместо make и последующей make install в двух отдельных шагах.

Note: Некоторые командные процессоры для ускорения поиска выполнимых файлов и команд кэшируют имена таких программ, которые доступны для вызова из каталогов, перечисленных в переменной окружения PATH. Если вы используете один из таких командных процессоров, то перед использованием только что добавленных команд вам может понадобиться вызвать директиву rehash после установки порта. Это верно как для оболочек, являющихся частями базового системного набора (например, tcsh), так и командных процессоров, доступных в виде портов (например, shells/zsh).

Note: Пожалуйста, будьте готовы к тому, что лицензии некоторых портов не позволяют помещать их на CD-ROM. Это может делаться из-за обязательности заполнения регистрационной формы перед сгрузкой или запрета на дальнейшее распространение, либо по какой-то другой причине. Если вы хотите установить порт, которого нет на CD-ROM, вам нужно иметь подключение к Интернет, чтобы это сделать (обратитесь к следующему разделу).

4.5.2.2 Установка портов из Интернет

Как и в предыдущем разделе, здесь предполагается, что у вас имеется работающее подключение к Интернет. Если это не ваш случай, вам нужно выполнять установку с CD-ROM либо поместить копию дистрибутивного файла в каталог /usr/ports/distfiles вручную.

Установка порта из Интернет производится точно так же, как если бы делали её с CD-ROM. Единственным отличием между ними является тот факт, что дистрибутивный файл сгружается из Интернет, а не считывается с CD-ROM.

Выполняются те же самые шаги:

# make install
>> lsof_4.57D.freebsd.tar.gz doesn't seem to exist in /usr/ports/distfiles/.
>> Attempting to fetch from ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/distfiles/.
Receiving lsof_4.57D.freebsd.tar.gz (439860 bytes): 100%
439860 bytes transferred in 18.0 seconds (23.90 kBps)
===>  Extracting for lsof-4.57
...
[выдача при распаковке опущена]
...
>> Checksum OK for lsof_4.57D.freebsd.tar.gz.
===>  Patching for lsof-4.57
===>  Applying FreeBSD patches for lsof-4.57
===>  Configuring for lsof-4.57
...
[выдача процесса конфигурации опущена]
...
===>  Building for lsof-4.57
...
[выдача компиляции опущена]
...
===>  Installing for lsof-4.57
...
[выдача процедуры установки опущена]
...
===>   Generating temporary packing list
===>   Compressing manual pages for lsof-4.57
===>   Registering installation for lsof-4.57
===>  SECURITY NOTE:
      This port has installed the following binaries which execute with
      increased privileges.
#

Как вы видите, единственным отличием является строка, в которой указывается, откуда система сгружает дистрибутивный файл порта.

Для сгрузки файлов система портов использует утилиту fetch(1), которая принимает во внимание различные переменные окружения, включая FTP_PASSIVE_MODE, FTP_PROXY и FTP_PASSWORD. Если вы находитесь за сетевым экраном или для работы с работы с FTP/HTTP вам необходимо использовать прокси, то определите соответствующие переменные. Обратитесь к справочной странице по fetch(3) для получения полного списка переменных.

Пользователям, которые не могут быть постоянно подключенными к сети, поможет команда make fetch. Просто запустите эту команду в каталоге самого верхнего уровня (/usr/ports), и требуемые файлы будут сгружены. Эта команда будут работать также и с вложенными категориями, например: /usr/ports/net. Заметьте, что если порт имеет зависимости от библиотек или других портов, то он не будет также сгружать дистрибутивные файлы этих портов. Замените fetch на fetch-recursive, если вы хотите выполнить сгрузку также и всех этих зависимостей порта.

Note: Вы можете построить все порты в категории за раз, запустив команду make в каталоге верхнего уровня, как и в вышеописанном методе с make fetch. Однако это опасно, так как некоторые порты не могут сосуществовать. В других случаях некоторые порты могут устанавливать два различных файла с одним и тем же именем.

В некоторых редких случая пользователям необходимо получить tar-архивы с сайтов, отличающихся от MASTER_SITES (это место, откуда файлы обычно сгружаются). Вы можете переопределять значение MASTER_SITES посредством следующей команды:

# cd /usr/ports/directory
# make MASTER_SITE_OVERRIDE= \
ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/distfiles/ fetch

В этом примере мы изменили значение переменной MASTER_SITES на ftp.FreeBSD.org/pub/FreeBSD/ports/distfiles/.

Note: Некоторые порты позволяют (или даже требуют) задавать параметры, которые включают или выключают построение отдельных частей приложения, которые не нужны, некоторые параметры безопасности, а также прочие настройки. К некоторым из них, часто упоминаемым, относятся пакеты www/mozilla, security/gpgme и mail/sylpheed-claws. При наличии подобных параметров будет выдано сообщение.

4.5.2.3 Переназначение каталогов с портами по умолчанию

Иногда бывает полезным (или необходимым) использование других каталогов с портами и дистрибутивными файлами. Для переопределения каталогов, используемых по умолчанию, используются переменные PORTSDIR и PREFIX. К примеру:

# make PORTSDIR=/usr/home/example/ports install

будет компилировать порт в каталоге /usr/home/example/ports, а установит всё в /usr/local.

# make PREFIX=/usr/home/example/local install

будет компилировать его в каталоге /usr/ports, а установит в /usr/home/example/local.

И, конечно,

# make PORTSDIR=../ports PREFIX=../local install

использует обе возможности (полная команда слишком длинна для написания на этой странице, однако вы должны уловить общую идею).

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

4.5.2.4 Работа с imake

Некоторые порты, использующие imake (часть X Window System) нормально не работают с PREFIX, и будут пытаться установиться в дерево /usr/X11R6. Аналогично некоторые Perl-порты игнорируют значения PREFIX и устанавливаются в дерево Perl. Заставить такие порты воспринимать переменную PREFIX является сложной или невыполнимой задачей.

4.5.3 Удаление установленных портов

Теперь, когда вы знаете, как устанавливать порты, вы наверное, уже задумывались о том, как же их удалять, просто даже на тот случай, если вы установили один из них, а позже решили, что установили не тот порт. Мы удалим порт из нашего предыдущего примера (а это была программа lsof, если вы обратили внимание). Как и при установке портов, первым делом вы должны перейти в каталог с портом, /usr/ports/sysutils/lsof. После смены каталога вы готовы к удалению xchat. Это делается командой make deinstall:

# cd /usr/ports/sysutils/lsof
# make deinstall
===>  Deinstalling for lsof-4.57

Это было достаточно легко. Вы удалили lsof из вашей системы. Если вам захочется переустановить эту программу, то это можно будет сделать, выдав команду make reinstall из каталога /usr/ports/sysutils/lsof.

Последовательность команд make deinstall и make reinstall не сработает, если вы запустите команду make clean. Если вы хотите убрать порт из системы после зачистки каталога, используйте команду pkg_delete(1), как это описано в разделе о пакаджах Руководства.

4.5.4 Порты и дисковое пространство

Использование коллекции портов может определённо стоить вам дискового пространства. По этой причине вы не должны забывать о зачистке рабочих каталогов при помощи команды make clean. При этом будет удаляться каталог work, возникающий после построения и установки порта. Вы можете также удалить tar-файлы из каталога distfiles, а позже удалить установленные порты, если они не используются.

Некоторые пользователи ограничивают набор категорий портов, помещая в файл refuse соответствующую запись. В этом случае при запуске программы CVSup она не будет сгружать файлы из указанных категорий.

4.5.5 Обновление портов

Поддержание ваших портов в актуальном состоянии может оказаться нудным занятием. К примеру, чтобы обновить порт, вам нужно перейти в каталог с портами, построить порт, удалить старый порт, установить новый, а затем вычистить его после построения. Представьте, сколько действий (пять) нужно сделать! Скучно, да? Это было большой проблемой для системных администраторов, но теперь есть утилиты, выполняющие эти действия за нас. Например, утилита sysutils/portupgrade сделает всё за вас сама! Просто установите её, как обычный порт, при помощи команды make install clean.

Теперь создайте базу данных командой pkgdb -F. Она выяснит перечень установленных портов и создаст файл базы данных в каталоге /var/db/pkg. Теперь при вызове команды portupgrade -a, она будет использовать эту базу данных и файл портов INDEX. Наконец, portupgrade сгрузит, построит, сделает резервную копию, установит и очистит порты, которые были обновлены. portupgrade имеет массу параметров для использования в разных ситуациях, из которых наибольшего внимания заслуживает описываемая далее.

Если вы хотите обновить только определённое приложение, но не полностью базу данных, используйте portupgrade pkgname, с флагом -r, если portupgrade должен отработать все пакаджи, которые зависят от указанного, и использовать флаг -R для отработки всех пакаджей, которые требуют указанные пакаджи. Для использования при установке пакаджей, а не портов, укажите флаг -P, а для простой сгрузки дистрибутивных файлов без построения или установки чего бы то ни было задайте флаг -F. Дополнительную информацию можно получить на странице справки по утилите portupgrade(1).

Note: Важно регулярно обновлять базу данных пакаджей при помощи команды pkgdb -F для восстановления целостности, особенно когда portupgrade запрашивает вас это сделать. Не прерывайте работы portupgrade при обновлении базы данных пакаджей, это может привести к рассогласованию данных.

Существуют и другие утилиты, которые делают подобные вещи, посмотрите в каталоге ports/sysutils и выберите то, что вам подходит.

Этот, и другие документы, могут быть скачаны с ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

По вопросам связанными с FreeBSD, прочитайте документацию прежде чем писать в <questions@FreeBSD.org>.
По вопросам связанным с этой документацией, пишите <doc@FreeBSD.org>.
По вопросам связанным с русским переводом документации, пишите <frdp@FreeBSD.org.ua>.


Руководство FreeBSDPrevNext

Chapter 4 Установка приложений: порты и пакаджи

Table of Contents
4.1 Обзор
4.2 Обзор установки программного обеспечения
4.3 Поиск нужного вам приложения
4.4 Использование системы пакетов
4.5 Использование Коллекции Портов
4.6 Действия после установки
4.7 Обработка нерабочих портов

4.1 Обзор

Вместе с FreeBSD в составе базового комплекта системы поставляется богатый набор системный утилит. Однако для выполнения какой-то реальной работы очень скоро возникает необходимость в установке дополнительных приложений сторонних разработчиков. FreeBSD даёт две взаимодополняющих технологии для установки программного обеспечения сторонних разработчиков в вашу систему: Коллекция Портов FreeBSD и бинарные пакеты с программным обеспечением. Любая из этих систем может быть использована для установки самых последних версий ваших любимых приложений с локальных носителей или прямо из сети.

После чтения этой главы вы будете знать:

Этот, и другие документы, могут быть скачаны с ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

По вопросам связанными с FreeBSD, прочитайте документацию прежде чем писать в <questions@FreeBSD.org>.
По вопросам связанным с этой документацией, пишите <doc@FreeBSD.org>.
По вопросам связанным с русским переводом документации, пишите <frdp@FreeBSD.org.ua>.


Руководство FreeBSDPrevChapter 12 Устройства храненияNext

12.12 Квотирование файловых систем

Квоты - это опциональная возможность операционной системы, которая позволяет ограничивать объем дискового пространства и/или количество файлов для конкретного пользователя или членов определенной группы в рамках одной файловой системы. Чаще всего эта возможность используется в системах разделения времени, когда желательно ограничить количество ресурсов, которые может использовать один пользователь или группа пользователей. Это позволит не допустить ситуации, когда один пользователь или группа пользователей заполняют всё доступное дисковое пространство.

12.12.1 Настройка вашей системы на использование дисковых квот

Перед тем, как попытаться использовать дисковые квоты, необходимо убедиться, что квоты включены в вашем ядре. Это делается добавлением следующей строки в конфигурационный файл вашего ядра:

options QUOTA
      

В стандартном ядре GENERIC это по умолчанию не включено, так что для использования дисковых квот вам нужно будет настроить, откомпилировать и установить собственное ядро. Пожалуйста, обратитесь к разделу Chapter 9 за дополнительной информацией о настройке ядра.

Затем вам потребуется включить квотирование дисков в файле /etc/rc.conf. Это делается добавление такой строчки:

enable_quotas="YES"

Для более полного контроля над запуском квотирования имеется дополнительная переменная для настройки. Как правило, при загрузке целостность квот каждой файловой системы проверяется программой quotacheck(8). При работе программы quotacheck(8) проверяется точное соответствие данных в базе данных квот данным в файловой системе. Это весьма долгий процесс, что отражается на времени загрузки системы. Если вам захочется пропустить этот шаг, то для этого предназначена специальная переменная в файле /etc/rc.conf:

check_quotas="NO"

Если вы работаете с FreeBSD версий до 3.2-RELEASE, то настройка делается проще, и она состоит только из одной переменной. Задайте следующее в вашем файле /etc/rc.conf:

check_quotas="YES"

Наконец, вам потребуется отредактировать файл /etc/fstab для включения дисковых квот на уровне файловых систем. Это то место, где вы можете включить квоты для пользователей, для групп или для обеих этих категорий для всех ваших файловых систем.

Для включения пользовательских квот для файловой системы, добавьте параметр userquota в поле параметров файловой системы, на которой вы хотите включить квотирование, в файле /etc/fstab. Например:

/dev/da1s2g   /home    ufs rw,userquota 1 2

Подобным же образом для включения квотирования на уровне групп, воспользуйтесь параметром groupquota вместо userquota. Чтобы включить квотирование как для пользователей, так и для групп, измените строчку следующим образом:

/dev/da1s2g    /home	ufs rw,userquota,groupquota 1 2
      

По умолчанию файлы квот хранятся в корневом каталоге файловой системы в файлах с именами quota.user и quota.group соответственно для пользовательских и групповых квот. Для получения подробной информации обратитесь к команде fstab(5). Хотя справочная страница по fstab(5) утверждает, что вы можете указать другое местоположение файлов с квотами, этого делать не рекомендуется, потому что различные утилиты для работы с квотами не могут нормально работать в такой ситуации.

На этом этапе вы должны перезагрузить вашу систему с новым ядром. Скрипт /etc/rc автоматически запустит соответствующие команды для создания начальных файлов для всех квот, которые вы создали в файле /etc/fstab, так что нет нужды вручную создавать никаких файлов квот нулевой длины.

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

12.12.2 Установка квот

Как только вы настроили вашу систему на использование квот, проверьте, что они действительно были задействованы. Простым способом сделать это является запуск такой команды:

# quota -v

Вы должны увидеть однострочную информацию, отражающую использование диска и текущие ограничения для каждой файловой системы, на которой включено квотирование.

Теперь вы действительно готовы задавать ограничения при помощи команды edquota(8).

У вас есть несколько вариантов того, как приводить в действие ограничения по объему дискового пространства, который могут занимать пользователь или группа, а также по количеству файлов, которые они могут создать. Вы можете ограничивать размещение ресурсов на основе объема дискового пространства (квотирование блоков), количества файлов (квотирование inode) или их комбинации. Каждое из этих ограничений, в свою очередь, делится на две категории: мягкие и жёсткие ограничения.

Жёсткое ограничение не может быть превышено. Как только пользователь достиг своих ограничений, ресурсы соответствующей файловой системы ему больше выделяться не будут. Например, если пользователь имеет жесткое ограничение в 500 блоков на файловой системе и в текущий момент он использует 490 блоков, то пользователь может получить дополнительно еще 10 блоков. Попытка получить еще 11 блоков окончится неудачно.

С другой стороны, мягкие ограничения могут быть превышены в течении некоторого периода времени. Этот период времени также называют периодом отсрочки, который по умолчанию равен одной неделе. Если пользователь превышает своё мягкое ограничение в течение периода времени, превышающего отсрочку, то это мягкое ограничение становится жестким и последующее выделение ресурсов будет запрещено. Когда пользователь вернётся обратно к отметке, меньшей, чем мягкое ограничение, то период отсрочки будет сброшен.

Далее приводится пример того, что вы можете наблюдать при запуске команды edquota(8). Когда вызывается команда edquota(8), вы оказываетесь в редакторе, заданном переменной переменной окружения EDITOR, или в редакторе vi, если переменная EDITOR не задана, и можете редактировать квоты.

# edquota -u test
Quotas for user test:
/usr: blocks in use: 65, limits (soft = 50, hard = 75)
	inodes in use: 7, limits (soft = 50, hard = 60)
/usr/var: blocks in use: 0, limits (soft = 50, hard = 75)
	inodes in use: 0, limits (soft = 50, hard = 60)

Для каждой файловой системы, на которой включено квотирование, вы должны увидеть две строки. В одной строке приведены ограничения на блоки, а в другой на количество inode. Например, чтобы увеличить ограничения на количество блоков для пользователя с мягкого ограничения в 50 и жёсткого ограничения в 75, на мягкое ограничение в 500 и жёсткое ограничение в 600, измените:

/usr: blocks in use: 65, limits (soft = 50, hard = 75)
      

на:

/usr: blocks in use: 65, limits (soft = 500, hard = 600)
      

Новые ограничения вступят в силу после выхода из редактора.

Иногда желательно установить ограничения квот на некоторый диапазон UID (идентификаторов пользователей). Это можно сделать при помощи параметра -p в команде edquota(8). Во-первых, установите желаемое ограничение для пользователя, а затем запустите команду edquota -p protouser startuid-enduid. Например, если пользователь test имеет желаемые ограничения, то для дублирования этих ограничений на пользователей с UID от 10000 до 19999 может быть использована такая команда:

# edquota -p test 10000-19999

Дополнительную информацию можно получить из справочной страницы по команде edquota(8).

12.12.3 Проверка ограничений и использования диска

Для проверки квот и использования дисков вы можете использовать команды quota(1) или repquota(8). Команда quota(1) может быть использована для проверки квот отдельных пользователей, групп, а также использования дисков. Пользователь может только проверить собственную квоту и квоту той группы, к которой он принадлежит. Только администратор системы может проверить квоты всех пользователей и групп. Команду repquota(8) можно использовать для получения суммарной статистики всех квот и использования дисков для файловых систем с включенными квотами.

Далее приведен пример вывода команды quota -v для пользователя, который имеет ограничения на двух файловых системах.

Disk quotas for user test (uid 1002):
     Filesystem  blocks   quota   limit   grace   files   quota   limit   grace
	   /usr      65*     50      75   5days       7      50      60
       /usr/var       0      50      75 	      0      50      60

В этом примере для файловой системы /usr пользователь превысил свое мягкое ограничение в 50 блоков на 15 блоков и имеет 5 дней до истечения отсрочки. Отметьте знак звездочки *, который указывает на превышение пользователем своего ограничения.

Как правило, файловые системы, на которых пользователь не занимает дискового пространства, не показываются в выводе команды quota(1), даже если ему выделена квота на этой файловой системе. При использовании параметра -v эти файловые системы выводятся, как, например, файловая система /usr/var в примере выше.

12.12.4 Квоты в NFS

Квоты определяются подсистемой квот на сервере NFS. Даемон rpc.rquotad(8) предоставляет информацию о квотах для программы quota(1) на клиентах NFS, позволяя пользователям на этих машинах смотреть свою статистику о квотах.

Включите rpc.rquotad в файле /etc/inetd.conf следующим образом:

rquotad/1      dgram rpc/udp wait root /usr/libexec/rpc.rquotad rpc.rquotad
      

Теперь перезапустите inetd:

# kill -HUP `cat /var/run/inetd.pid`

Этот, и другие документы, могут быть скачаны с ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

По вопросам связанными с FreeBSD, прочитайте документацию прежде чем писать в <questions@FreeBSD.org>.
По вопросам связанным с этой документацией, пишите <doc@FreeBSD.org>.
По вопросам связанным с русским переводом документации, пишите <frdp@FreeBSD.org.ua>.


Руководство FreeBSD
Prev Chapter 10. Сложные вопросы работы в сети Next

10.2. Сетевые шлюзы и маршруты

Предоставил Coranth Gryphon , 6 октября 1995.

Чтобы некоторая машина могла найти другую, должен иметься механизм описания того, как добраться от одной машине к другой. Такой механизм называется маршрутизацией. "Маршрут" задается парой адресов: "адресом назначения" (destination) и "сетевым шлюзом" (gateway). Эта пара означает, что, если Вы пытаетесь соединиться с адресом назначения, то вам нужно будет пройти через "сетевой шлюз". Существует три типа адресов назначения: отдельные хосты, подсети и "маршрут по умолчанию" (default). "Маршрут по умолчанию" (default route) используется, если не подходит ни один из других маршрутов. Мы поговорим немного подробнее о маршрутах по умолчанию позже. Также имеется и три типа сетевых шлюзов: отдельные хосты, интерфейсы (также называемые "подключениями" (links)) и аппаратные адреса ethernet.

10.2.1. Пример

Для иллюстрации различных аспектов маршрутизации мы будем использовать следующий пример, который является результатом работы команды netstat -r:

    Destination     Gateway        Flags     Refs     Use     Netif Expire
    
    default      outside-gw     UGSc       37      418  ppp0
    localhost    localhost      UH      0      181   lo0
    test0        0:e0:b5:36:cf:4f   UHLW    5    63288   ed0     77
    10.20.30.255     link#1         UHLW    1     2421
    foobar.com   link#1         UC      0    0
    host1        0:e0:a8:37:8:1e    UHLW    3     4601   lo0
    host2        0:e0:a8:37:8:1e    UHLW    0    5   lo0 =>
    host2.foobar.com link#1         UC      0    0
    224      link#1         UC      0    0
        

В первых двух строках фигурируют маршрут по умолчанию (который будет описан в следующем разделе) и маршрут на localhost.

Интерфейс (колонка Netif), который будет использоваться для localhost, и который назван lo0, имеет также второе название, устройство loopback. Это значит сохранение всего трафика для указанного адреса назначения внутри, без посылки его по сети, так как он все равно будет направлен туда, откуда был создан.

Следующими выделяющимися адресами являются строчки 0:e0:.... Это аппаратные адреса ethernet. FreeBSD будет автоматически распознавать любой хост (в нашем примере это test0) в локальной сети ethernet и добавит маршрут для этого хоста, указывающий непосредственно на интерфейс ethernet, ed0. С этим типом маршрута также связан параметр таймаута (колонка Expire), используемый в случае неудачной попытки услышать этот хост в течении некоторого периода времени. В таком случае маршрут будет автоматически удален. Такие хосты поддерживаются при помощи механизма, известного как RIP (Routing Information Protocol), который вычисляет маршруты к хостам локальной сети при помощи определения кратчайшего расстояния.

FreeBSD добавит также все маршруты к подсетям для локальных подсетей (10.20.30.255 является широковещательным адресом для подсети 10.20.30, а имя foobar.com является именем домена, связанным с этой подсетью). Назначение link#1 соответствует первому сетевому адаптеру в машине. Отметьте отсутствие дополнительного интерфейса для этих строк.

В обеих этих группах (хосты и подсети локальной сети) маршруты конфигурируются автоматически даемоном, который называется routed. Если он не запущен, то будут существовать только статически заданные (то есть введенные явно) маршруты.

Строка host1 относится к нашему хосту, который известен по адресу ethernet. Так как мы являемся посылающим хостом, FreeBSD знает, что нужно использовать loopback-интерфейс (lo0) вместо того, чтобы осуществлять посылку в интерфейс ethernet.

Две строки host2 являются примером того, что происходит при использовании алиасов в команде ifconfig (обратитесь к разделу об ethernet для объяснения того, почему мы это делаем). Символ => после интерфейса lo0 указывает на то, что мы используем не просто интерфейс loopback (так как это адрес, обозначающий локальный хост), но к тому же это алиас. Такие маршруты появляются только на хосте, поддерживающем алиасы; для всех остальных хостов в локальной сети в таких случаях будут показаны просто строчки link#1.

Последняя строчка (подсеть назначения 224) имеет отношение к многоадресной посылке, которая будет рассмотрена в другом разделе.

Другим столбцом, о котором стоит сказать, является Flags. Каждый маршрут имеет различные атрибуты, которые перечислены в этой колонке. Ниже приведена краткая таблица значений некоторых этих флагов и их значений:

U Up: Маршрут актуален.
H Host: Адресом назначения является отдельный хост.
G Gateway: Посылать все для этого адреса назначения на указанную удаленную систему, которая будет сама определять дальнейший путь прохождения информации.
S Static: Маршрут был настроен вручную, а не автоматически сгенерирован системой.
C Clone: Новый маршрут сгенерирован на основе указанного для машин, к которым мы подключены. Такой тип маршрута обычно используется для локальных сетей.
W WasCloned: Указывает на то, что маршрут был автоматически сконфигурирован на основе маршрута в локальной сети (Clone).
L Link: Маршрут включает ссылку на аппаратный адрес ethernet.

10.2.2. Маршруты по умолчанию

Когда локальной системе нужно установить соединение с удаленным хостом, она обращается к таблице маршрутов для того, чтобы определить, существует ли такой маршрут. Если удаленный хост попадает в подсеть, для которой известен способ ее достижения (маршруты типа Cloned), то система определяет возможность подключиться к ней по этому интерфейсу.

Если все известные маршруты не подходят, у системы имеется последняя возможность: маршрут "default". Это маршрут с особым типом сетевого шлюза (обычно единственным, присутствующим в системе), и в поле флагов он всегда помечен как c. Для хостов в локальной сети этот сетевой шлюз указывает на машину, имеющую прямое подключение к внешнему миру (неважно, используется ли связь по протоколу PPP или устройство, подключенное к выделенной линии).

Если вы настраиваете маршрут по умолчанию на машине, которая сама является сетевым шлюзом во внешний мир, то маршрутом по умолчанию будет являться сетевой шлюз у Вашего провайдера Интернет (ISP).

Давайте взглянем на примеры маршрутов по умолчанию. Вот типичная конфигурация:

[Local2]  <--ether-->  [Local1]  <--PPP--> [ISP-Serv]  <--ether-->  [T1-GW]
    

Хосты Local1 и Local2 находятся в нашей сети, первый хост служит для подключения по протоколу PPP к серверу доступа вашего ISP. У Вашего провайдера имеется локальная сеть, в которой, кроме всего прочего, находится сервер, к которому вы подключены, и аппаратура (T1-GW) обеспечивающая собственное подключение провайдера к Интернет.

Маршруты по умолчанию для каждой из ваших машин будут следующими:

хост маршрут по умолчанию интерфейс
Local2 Local1 ethernet
Local1 T1-GW PPP

Часто задается вопрос "Почему (или каким образом) в качестве шлюза по умолчанию для машины Local1 мы указываем T1-GW, а не сервер провайдера, к которому подключаемся?".

Запомните, что из-за использования PPP-интерфейсом адреса в сети провайдера Интернет с вашей стороны соединения, маршруты для всех других машин в локальной сети провайдера будут сгенерированы автоматически. Таким образом, вы уже будете знать, как достичь машины T1-GW, так что нет нужды в промежуточной точке при посылке трафика к серверу ISP.

И напоследок отметим, что в локальной сети адрес ...1 часто используется в качестве адреса сетевого шлюза. Тогда (при использовании того же самого примера) если пространство адресов класса C вашей локальной сети было задано как 10.20.30, а ваш провайдер использует 10.9.9, то маршруты по умолчанию будут такие:

Local2 (10.20.30.2) --> Local1 (10.20.30.1)
Local1 (10.20.30.1, 10.9.9.30) --> T1-GW (10.9.9.1)
    

10.2.3. Хосты с двойным подключением

Есть еще один тип подключения, который мы должны рассмотреть, и это случай, когда хост находится в двух различных сетях. Технически, любая машина, работающая как сетевой шлюз (в примере выше использовалось PPP-соединение), считается хостом с двойным подключением. Однако этот термин реально используется для описания машины, находящейся в двух локальных сетях.

В одном случае у машины имеется два адаптера ethernet, каждый имеющий адрес в разделенных подсетях. Как альтернативу можно рассмотреть вариант с одним ethernet-адаптером и использованием алиасов в команде ifconfig. В первом случае используются два физически разделенных сети ethernet, в последнем имеется один физический сегмент сети, но две логически разделенных подсети.

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

10.2.4. Распространение маршрутов

Мы уже говорили о том, как мы задаем наши маршруты во внешний мир, но не упоминали о том, как внешний мир находит нас.

Мы уже знаем, что таблицы маршрутизации могут быть настроены так, что весь трафик для некоторого диапазона адресов (в нашем примере это подсеть класса C) может быть направлен заданному хосту в той сети, которая будет перенаправлять входящие пакеты дальше.

При получении адресного пространства, выделенного Вашей сети, Ваш провайдер настроит свои таблицы маршрутизации так, что весь трафик для Вашей подсети будет пересылаться по PPP-соединению к Вашей сети. Но как серверы по всей стране узнают, что Ваш трафик нужно посылать Вашему ISP?

Существует система (подобная распределению информации DNS), которая отслеживает все назначенные пространства адресов и определяет точку подключения к магистрали Интернет. "Магистралью" называют главные каналы, по которым идет трафик Интернет внутри страны и по всему миру. Каждая магистральная машина имеет копию основного набора таблиц, согласно которой трафик для конкретной сети направляется по конкретному магистральному каналу, и затем, передаваясь по цепочке провайдеров, он достигает вашей сети.

Задачей вашего провайдера является объявить на магистрали о том, что он отвечает за подключение (и поэтому на него указывает маршрут) вашей сети. Этот процесс называется распространением маршрута.

10.2.5. Устранение неполадок

Иногда с распространением маршрута возникают проблемы, и некоторые сайты не могут к вам подключиться. Наверное, самой полезной командой для определения точки неверной работы маршрутизации является traceroute(8). Она также полезна и когда вы сами не можете подключиться к удаленной машине (то есть команда ping(8) не срабатывает).

Команда traceroute(8) запускается с именем удаленного хоста, с которым вы хотите установить соединение, в качестве параметра. Она показывает промежуточные сетевые шлюзы по пути следования, в конце концов достигая адрес назначения или прерывая свою работу из-за отсутствия соединения.

За дополнительной информацией обратитесь к странице Справочника по traceroute(8).


Руководство FreeBSDPrevChapter 10 БезопасностьNext

10.3 Защита FreeBSD

Команда и протокол: В этом документе мы будет использовать выделенный упоминая команду или приложение. Например, мы будем использовать выделение для ssh, поскольку это и команда и протокол.

В последующем разделе будут рассмотрены методы защиты системы FreeBSD, упомянутые в предыдущем разделе этой главы.

10.3.1 Защита учетной записи root и служебных учетных записей

Во-первых, не беспокойтесь о защите служебных учетных записей, если не защищена учетная запись root. В большинстве систем у учетной записи root есть пароль. Использование пароля root опасно всегда. Это не означает, что вы должны удалить пароль. Пароль почти всегда необходим для доступа по консоли. Но это означает, что вы должны сделать невозможным использование пароля не из консоли или может быть даже с помощью команды su(1). Например, убедитесь, что псевдотерминалы в файле /etc/ttys перечислены с параметром insecure, что делает невозможным вход на них под root напрямую с помощью telnet или rlogin. При использовании других средств входа, таких как sshd, убедитесь что вход под root напрямую отключен и в них. Сделайте это, открыв файл /etc/ssh/sshd_config, и убедившись, что параметр PermitRootLogin установлен в NO. Проверьте каждый метод доступа - сервис FTP и ему подобные часто подвержены взлому. Прямой вход под root должен быть разрешен только с системной консоли.

Конечно, как системный администратор вы должны иметь доступ root, поэтому потребуется открыть несколько ``лазеек''. Но убедитесь, что для доступа к ним необходим дополнительный пароль. Одним из способов доступа к root является добавление соответствующих учетных записей к группе wheel (в файле /etc/group). Это позволяет использовать su для доступа к root. Вы никогда не должны давать таким учетным записям доступ к wheel непосредственно, помещая их в группу wheel в файле паролей. Служебные учетные записи должны помещаться в группу staff, а затем добавляться к группе wheel в файле /etc/group. Только те члены группы staff, которым действительно нужен доступ к root, должны быть помещены в группу wheel. При работе с такими методами аутентификации как Kerberos, возможно также использование файла .k5login в каталоге пользователя root для доступа к учетной записи root с помощью ksu(1) без помещения кого-либо в группу wheel. Это решение возможно лучше, поскольку механизм wheel все еще позволяет взлом root, если злоумышленник получил копию файла паролей и смог взломать служебную учетную запись. Хотя использование механизма wheel лучше, чем работа через root напрямую, это не обязательно самый безопасный способ.

Непрямой способ защиты служебных учетных записей и конечно root это использование альтернативных методов доступа и замена зашифрованных паролей на символ ``*''. Используя команду vipw(8), замените каждый зашифрованный пароль служебных учетных записей на этот символ для запрета входа с аутентификацией по паролю. Эта команда обновит файл /etc/master.passwd и базу данных пользователей/паролей.

Служебная учетная запись вроде этой:

foobar:R9DT/Fa1/LV9U:1000:1000::0:0:Foo Bar:/home/foobar:/usr/local/bin/tcsh

Должна быть заменена на такую:

foobar:*:1000:1000::0:0:Foo Bar:/home/foobar:/usr/local/bin/tcsh

Это изменение предотвратит обычный вход, поскольку зашифрованный пароль никогда не совпадет с ``*''. После этого члены группы staff должны использовать другой механизм аутентификации, например kerberos(1) или ssh(1) с парой ключей: публичным и приватным. При использовании такой системы как Kerberos, потребуется защитить сервер Kerberos и рабочую станцию. При использовании пары публичного/приватного ключей с ssh, потребуется защитить компьютер, с которого происходит вход (обычно это рабочая станция). Дополнительных слой защиты может быть добавлен путем защиты пары ключей при создании их с помощью ssh-keygen(1). Возможность заменить пароли служебных учетных записей на ``*'' гарантирует также, что вход может быть осуществлен только через защищенные методы доступа, которые вы настроили. Это принуждает всех членов staff использовать защищенные, шифрованные соединения для всех входов, что закрывает большую брешь, используемую многими нарушителями: перехват паролей с другого, слабо защищенного компьютера.

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

Использование такой системы как Kerberos дает возможность заблокировать или изменить пароль в одном месте, что сразу отразиться на всех компьютерах, где существует служебная учетная запись. Если эта учетная запись будет взломана, возможность немедленно изменить пароль на всех компьютерах нельзя недооценивать. Без этой возможности изменение паролей на N машинах может стать проблемой. Вы можете также наложить ограничения на смену паролей с помощью Kerberos: не только установить значения timeout в Kerberos, но и добавить требование смены пароля пользователем после определенного периода времени (скажем, раз в месяц).

10.3.2 Защита работающих под root сервисов и suid/sgid исполняемых файлов

Предусмотрительный системный администратор запускает только те сервисы, в которых нуждается, ни больше ни меньше. Учитывайте, что сервисы сторонних разработчиков наиболее подвержены ошибкам. К примеру, работа со старыми версиями imapd или popper это все равно что раздача доступа root всему миру. Никогда не запускайте сервисы, которые вы не проверили достаточно внимательно. Многим сервисам не требуется работа под root. Например, даемоны ntalk, comsat, и finger могут быть запущены в так называемых песочницах (sandboxes). Песочница это не идеальное решение, поскольку вызывает много проблем, но она подходит под модель послойной безопасности: если кто-то сможет взломать сервис, работающий в песочнице, ему потребуется взломать еще и саму песочницу. Чем больше уровней (``слоев'') потребуется пройти атакующему, тем меньше вероятность его успеха. Ошибки, позволяющие получать root доступ, находили фактически во всех сервисах, запускаемых под root, включая основные системные сервисы. Если вы обслуживаете машину, на которую входят только через sshd и никогда не входят через telnetd, rshd или rlogind, отключите эти сервисы!

В FreeBSD сервисы ntalkd, comsat и finger теперь по умолчанию работают в ``песочнице''. Другая программа, которая может быть кандидатом на запуск в ``песочнице'' это named(8). /etc/defaults/rc.conf включает необходимые для запуска named в ``песочнице'' аргументы в закомментированой форме. В зависимости от того, устанавливаете ли вы новую систему, или обновляете старую, учетные записи пользователей, используемые этими ``песочницами'' могут не быть созданы. Предусмотрительный системный администратор должен узнать о ``песочницах'' для сервисов и установить их если есть возможность.

Есть множество других сервисов, которые обычно не работают в ``песочницах'': sendmail, popper, imapd, ftpd, и другие. Некоторым из этих сервисов есть альтернативы, но их установка может потребовать больше работы, чем вы готовы выполнить (фактор удобства). Вы можете запустить эти сервисы под root и положиться на другие механизмы обнаружения вторжений, которые могут пройти через них.

Другая большая потенциальная root брешь в системе это suid-root и sgid исполняемые файлы. Большинство этих исполняемых файлов, таких как rlogin, установлены в /bin, /sbin, /usr/bin, или /usr/sbin. Хотя ничто не может быть безопасно на 100%, находящиеся по умолчанию в системе suid и sgid исполняемые файлы могут быть признаны достаточно безопасными. Но root бреши все еще обнаруживаются в этих исполняемых файлах. root брешь, обнаруженная в Xlib в 1998 делала xterm (который обычно suid) подверженным взлому. Лучше сразу принять меры предосторожности, чем сожалеть потом. Предусмотрительный системный администратор ограничит права запуска suid исполняемых файлов, которые должны запускаться пользователями группы staff, только этой группой, а также запретит доступ (chmod 000) к тем исполняемым файлам suid, которые никем не используются. Серверу без монитора обычно не требуется исполняемый файл xterm. Исполняемые sgid исполняемые файлы могут быть почти так же опасны. Если нарушитель сможет взломать sgid-kmem исполняемый файл, он возможно сможет прочесть /dev/kmem и таким образом получить файл зашифрованных паролей, что потенциально делает возможным взлом любой защищенной паролем учетной записи. Аналогично нарушитель, проникший в группу kmem, может отслеживать последовательности клавиш, отправленные через псевдотерминалы, включая псевдотерминалы, используемые через безопасные соединения. Нарушитель, вошедший в группу tty может сделать вывод почти на любой пользовательский терминал. Если пользователь работает с терминальной программой или эмулятором с возможностью эмуляции клавиатуры, взломщик может потенциально сгенерировать поток данных, который заставит терминал пользователя ввести команду, и она будет запущена с правами этого пользователя.

10.3.3 Защита учетных записей пользователей

Учетные записи пользователей обычно сложнее всего защитить. Вы можете ввести драконовские ограничения доступа к служебным учетным записям, заменив их пароли на символ ``*'', но возможно не сможете сделать то же с обычными учетными записями пользователей. Если есть такая возможность, вы возможно сможете защитить учетные записи пользователей соответствующим образом. Если нет, просто более бдительно отслеживайте эти учетные записи. Использование ssh и Kerberos для учетных записей пользователей более проблематично, поскольку требует дополнительной административной работы и технической поддержки, но все же это решение лучше, чем файл с шифрованными паролями.

10.3.4 Защита файла паролей

Единственный абсолютно надежный способ это замена на * максимально возможного количества паролей и использование ssh или Kerberos для доступа к таким учетным записям. Хотя файл с шифрованными паролями (/etc/spwd.db) доступен для чтения только root, возможно, что нарушитель сможет получить доступ на чтение к этому файлу, даже если не получит права root на запись.

Ваши скрипты безопасности должны всегда проверять и составлять отчет об изменениях файла паролей (обратитесь к разделу Проверка целостности файлов ниже по тексту).

10.3.5 Защита ядра, raw устройств и файловых систем

Если атакующий взломает root, он сможет сделать практически все, но есть способы усложнить его задачу. Например, в большинстве современных ядер встроено устройство перехвата пакетов. В FreeBSD оно называется bpf. Нарушитель обычно пытается запустить перехват пакетов на взломанной машине. Вы не должны предоставлять ему такой возможности, на большинстве систем устройство bpf не должно быть встроено в ядро.

Но даже если вы выключите устройство bpf, все еще остаются проблемы, связанные с устройствами /dev/mem и /dev/kmem. Нарушитель все еще может писать на дисковые raw устройства. Есть также другая возможность ядра, загрузка модулей, kldload(8). Активный нарушитель может использовать KLD модуль для установки собственного устройства bpf или другого перехватывающего устройства на работающее ядро. Для решения этих проблем запускайте ядро с большим уровнем безопасности, как минимум 1. Уровень безопасности может быть установлен с помощью sysctl через переменную kern.securelevel. После установки уровня безопасности в 1 доступ на запись в raw устройства будет запрещена и полностью заработают специальные флаги chflags, такие как schg. Убедитесь также, что флаг schg установлен на критически важных загрузочных исполняемых файлах, каталогах и файлах скриптов - на всем, что запускается до установке уровня безопасности. Это требует большого объема работы, и обновление системы на более высоком уровне безопасности может стать гораздо сложнее. Вы можете пойти на компромисс и запускать систему на высоком уровне безопасности, но не устанавливать флаг schg для каждого существующего системного файла и каталога. Другая возможность состоит в монтировании / и /usr только для чтения. Необходимо заметить, что такие правила слишком жесткие и могут помешать обнаружению вторжения.

10.3.6 Проверка целостности файлов: исполняемые, конфигурационные файлы и т.д.

Вы можете защищать только ядро, файлы настройки и управления системой только до тех пор, пока эта защита не вступит в конфликт с удобством работы в системе. Например, использование chflags для установки бита schg на большинство файлов в / вероятно может только навредить, поскольку хотя и может защитить файлы, препятствует обнаружению. Последний слой системы безопасности, возможно, наиболее важный - обнаружение. Остальные меры безопасности практически бесполезны (или, что еще хуже, могут дать вам ложное ощущение безопасности) если вы не обнаружите потенциальное вторжение. Половина функций системы безопасности направлена на замедление атакующего, а не на его остановку, для того, чтобы дать системе обнаружения возможность поймать нарушителя на месте преступления.

Лучший способ обнаружения вторжения - отслеживание измененных, отсутствующих, или неожиданно появившихся файлов. Для наблюдения за измененными файлами лучше всего использовать другую (зачастую централизованную) систему с ограниченным доступом. Добавление написанных вами скриптов к этой дополнительно защищенной системе с ограниченным доступом делает ее практически невидимой для потенциальных взломщиков, и это важно. В целях достижения максимального эффекта вам может потребоваться предоставить этой системе доступ к другим машинам в сети, обычно с помощью NFS экспорта только для чтения или сгенерировав пары ключей ssh для доступа к другим машинам по ssh. Помимо большого объема сетевого трафика, NFS более скрытый метод - он позволяет контролировать файловые системы на каждом клиентском компьютере практически незаметно. Если ваш сервер с ограниченным доступом подключен к клиентским компьютерам через коммутатор, NFS метод это зачастую лучший выбор. При соединении через концентратор, или через несколько маршрутизаторов, NFS метод может стать слишком небезопасным и использование ssh может стать лучшим выбором даже несмотря на то, что ssh оставляет следы своей работы.

Как только у вас появился сервер с ограниченным доступом, и как минимум доступ на чтение в клиентских системах, потребуется написать скрипты для выполнения мониторинга. При наличии доступа по NFS вы можете написать скрипты с помощью простых системных утилит, таких как find(1) и md5(1). Лучше всего подсчитывать md5 файлов на клиентском компьютере как минимум один раз в день, а файлы, контролирующие запуск из /etc и /usr/local/etc даже более часто. При обнаружении расхождений в md5, контролирующий компьютер должен просигналить системному администратору проверить изменившиеся файлы. Хороший скрипт безопасности проверит также наличие несоответствующих исполняемых suid файлов и новых или измененных файлов в системных разделах / и /usr.

При использовании ssh вместо NFS, написать скрипты безопасности гораздо сложнее. Вам обязательно потребуется скопировать (scp) скрипты на клиентский компьютер, сделать из невидимыми, и для безопасности потребуется также скопировать исполняемые файлы (такие как find), которые будут использоваться скриптом. Приложение ssh на клиентском компьютере может быть уже взломано. В конечном итоге, без ssh не обойтись при работе через небезопасные соединения, но его гораздо сложнее использовать.

Хороший скрипт безопасности проверит также изменения в файлах настройки, работающих при подключении пользователей и служебных учетных записей: .rhosts, .shosts, .ssh/authorized_keys и так далее... файлы, которые могли не попасть в область проверки MD5.

Если для пользователей выделен большой объем дискового пространства, проверка каждого файла на таких разделах может занять слишком много времени. В таком случае установка флагов монтирования для запрета suid исполняемых файлов и устройств на таких разделах это хорошая идея. Примените параметры mount(8) nodev и nosuid. Проверяйте эти разделы в любом случае, хотя бы раз в неделю, поскольку необходимо обнаруживать попытки взлома, независимо от того, эффективны они или нет.

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

Наконец, скрипты безопасности должны обработать лог файлы, которые необходимо создавать настолько защищенным способом, насколько это возможно - подключение syslog удаленно может быть очень полезным. Злоумышленник попытается уничтожить следы взлома, и лог файлы критически важны для системного администратора, пытающегося отследить время и метод первого проникновения. Один из надежных способов получения лог файлов является подключение системной консоли к последовательному порту и постоянный сбор информации через защищенную машину, отслеживающую консоли.

10.3.7 Паранойя

Немного паранойи никогда не повредит. Как правило, системный администратор может добавлять элементы безопасности в любом количестве, пока это не влияет на удобство, а также некоторое количество элементов безопасности, влияющих на удобство. Что даже более важно, системный администратор должен немного изменить их - если вы используете рекомендации, например те, что даны в этом документе, они становятся известны атакующему, который также имеет доступ к этому документу. prospective attacker who also has access to this document.

10.3.8 Атаки DoS

Этот раздел охватывает DoS атаки. DoS атаки это обычно пакетные атаки. Хотя против современной атаки с подделкой пакетов, которая перегружает сеть, мало что можно сделать, вы можете ограничить повреждения, убедившись, что атака не может обрушить ваши сервера.

  1. Ограничение количества порождаемых процессов.

  2. Уменьшение последствий springboard атак (ICMP ответ, широковещательный ping и т.д.).

  3. Кэш маршрутизации ядра.

Обычная DoS атака против порождающего процессы сервера пытается исчерпать ресурсы сервера по процессам, файловым дескрипторам и памяти до тех пор, пока машина не ``подвиснет''. У inetd (обратитесь к inetd(8)) есть несколько параметров, позволяющих ограничить такие атаки. Необходимо учесть, что хотя можно предотвратить падение системы, в общем случае невозможно предотвратить прекращение работы сервиса. Внимательно прочтите страницу справочника и обратите особое внимание на параметры -c, -C, и -R. Учтите, что параметр -C не работает в случае атак с использованием поддельных IP пакетов, поэтому как правило необходимо использование комбинации параметров. Некоторые standalone сервисы используют собственные параметры, ограничивающие порождение процессов.

У Sendmail есть собственный параметр -OMaxDaemonChildren, которая работает гораздо лучше, чем параметр sendmail, ограничивающий нагрузку. Вам необходимо задать параметр запуска sendmail MaxDaemonChildren достаточно большим, чтобы обслуживать ожидаемую нагрузку, но так, чтобы компьютер мог обслужить такое количество приложений sendmail без падения системы. Хорошей мерой является запуск sendmail в режиме очереди (-ODeliveryMode=queued) и запуск даемона (sendmail -bd) отдельно от очереди (sendmail -q15m). Если вы все же хотите организовать доставку в режиме реального времени, запускайте очередь с меньшим интервалом -q1m, но убедитесь в правильной установке параметра sendmail MaxDaemonChildren для предотвращения ошибок.

Syslogd может быть атакован непосредственно, настоятельно рекомендуется использовать параметр -s если это возможно и параметр -a в остальных случаях.

Вы также должны быть очень осторожны с сервисами, совершающими обратное подключение, такими как tcpwrapper с reverse-identd, который может быть атакован непосредственно. По этой причине возможность tcpwrappers reverse-ident обычно не следует использовать.

Правильным будет запрет доступа к внутренним сервисам из внешней сети путем соответствующей настройки межсетевого экрана на внешнем маршрутизаторе. Идея в том, чтобы предотвратить перегрузку сервисов атаками из внешней сети, а кроме того защитить root от взлома через сеть. Всегда настраивайте исключающий межсетевой экран, т.е. ``закрыть все кроме портов A, B, C, D, и M-Z''. Этим способом вы можете закрыть все порты нижнего диапазона, кроме явно указанных, таких как named (если вы поддерживаете интернет-зону), ntalkd, sendmail, и других сервисов, доступных из интернет. Если вы попробуете настроить межсетевой экран другим способом - включающий, или разрешающий межсетевой экран, есть большой шанс забыть ``закрыть'' пару сервисов, или добавить новый внутрисетевой сервис и забыть обновить межсетевой экран. Вы можете открыть диапазон портов с большими номерами для обычных приложений без угрозы портам нижнего диапазона. Учтите также, что FreeBSD позволяет вам контролировать диапазоны портов, используемые для динамической привязки через различные переменные sysctl net.inet.ip.portrange (sysctl -a | fgrep portrange), что позволяет упростить настройку межсетевого экрана. Например, вы можете использовать обычный диапазон портов со значениями от 4000 до 5000, и диапазон портов с большими номерами от 49152 до 65535, а затем заблокировать все до 4000 порта (конечно оставив доступ из интернет к определенным портам.

Другой распространенный тип DoS атак называется springboard - сервер атакуется таким образом, что генерируемые ответы перегружают его, локальную сеть или какие-то другие компьютеры. Наиболее распространенная атака этого вида это широковещательная ICMP ping атака. Атакующий подделывает пакеты ping, подставляя IP адрес машины, которую он намеревается атаковать, и отправляет их на широковещательный адрес вашей локальной сети. Если ваш внешний маршрутизатор не настроен на отбрасывание пакетов ping на широковещательные адреса, ваша сеть начинает генерировать соответствующие ответы на поддельный адрес, что приводит к перегрузке хоста-жертвы, особенно если атакующий использует этот же трюк с множеством широковещательных адресов в множестве сетей одновременно. Были зарегистрированы широковещательные атаки свыше ста двадцати мегабит. Другая распространенная springboard атака направлена на ICMP систему сообщения об ошибках. Конструируя пакеты, вызывающие ICMP сообщения об ошибках, атакующий может нагрузить входящее соединение сервера и вынудить сервер нагрузить исходящее соединение ICMP ответами. Этот тип атаки может также обрушить сервер, когда тот исчерпает mbuf, обычно если сервер не может ограничить число ответов ICMP, когда они генерируются слишком быстро. В ядре FreeBSD есть новая опция сборки, ICMP_BANDLIM, которая ограничивает эффективность этого типа атак. Последний основной класс springboard атак относится к определенным внутренним сервисам inetd, таким как сервис udp echo. Атакующий просто подделывает адрес источника и адрес назначения UDP пакетов, устанавливая в их качестве соответственно echo порт сервера A и B, оба этих сервера принадлежат вашей локальной сети. Эти два сервера начинают перебрасываться этим пакетом друг с другом. Атакующий может вызвать перегрузку обеих серверов и их сетей, просто отправив несколько пакетов таким способом. Аналогичные проблемы существуют с портом chargen. Компетентный системный администратор должен отключить эти тестовые сервисы inetd.

Атаки с поддельными пакетами могут также использоваться для переполнения кэша маршрутизации ядра. Обратитесь к параметрам sysctl net.inet.ip.rtexpire, rtminexpire, и rtmaxcache. Атака с поддельными пакетами, использующая произвольный IP адрес источника, заставит ядро сгенерировать временный кэшированный маршрут в таблице маршрутизации, который можно увидеть с помощью netstat -rna | fgrep W3. Эти маршруты обычно удаляются через 1600 секунд или около того. Если ядро определит, что кэшированная маршрутная таблица стала слишком большой, оно динамически уменьшит rtexpire, но никогда не станет делать его меньше чем rtminexpire. С этим связаны две проблемы:

  1. Ядро не отреагирует достаточно быстро, когда легко нагруженный сервер будет внезапно атакован.

  2. Значение rtminexpire недостаточно мало для поддержки работоспособности в условиях продолжительной атаки.

Если ваши серверы подключены к интернет через линию T3 или более быструю, предусмотрительно будет изменить оба значения rtexpire и rtminexpire с помощью sysctl(8). Никогда не устанавливайте ни один из этих параметров в нуль (если только вы не хотите обрушить систему). Установка обеих параметров в значение 2 секунды должна предотвратить таблицу маршрутизации от атак.

10.3.9 Проблемы, связанные с доступом к Kerberos и SSH

При использовании Kerberos и ssh необходимо учесть несколько возможных проблем. Kerberos V это отличный протокол аутентификации, но в адаптированных к нему приложениях telnet и rlogin есть несколько ошибок, которые могут сделать их непригодными к работе с бинарными потоками. К тому же, по умолчанию Kerberos не шифрует сессию, если вы не используете параметр -x. ssh шифрует все по умолчанию.

ssh работает очень хорошо во всех ситуациях, но пересылает ключи по умолчанию. Это означает, что если вы работаете с защищенной рабочей станции, ключи на которой дают доступ к остальной сети, и заходите по ssh на незащищенный компьютер, эти ключи могут быть использованы для взлома. Атакующему не удастся получить сами ключи, но поскольку ssh открывает порт во время входа в систему, то если на незащищенной машине взломан root, эти ключи могут быть использованы для доступа к другим компьютерам, на которых они действуют.

Мы рекомендуем использовать ssh в комбинации с Kerberos для служебных учетных записей если это возможно. ssh может быть собран с поддержкой Kerberos. Это уменьшает зависимость от потенциально подверженных взлому ssh ключей, и в то же время защищает пароли через Kerberos. Ключи ssh должны использоваться только для работы скриптов на защищенных компьютерах (там, где Kerberos использовать не получится). Мы также рекомендуем или выключить передачу ключей в настройках ssh, или использовать параметр from=IP/DOMAIN, поддерживаемый ssh в файле authorized_keys, который позволяет использовать ключи только с определенных компьютеров.

Этот, и другие документы, могут быть скачаны с ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

По вопросам связанными с FreeBSD, прочитайте документацию прежде чем писать в <questions@FreeBSD.org>.
По вопросам связанным с этой документацией, пишите <doc@FreeBSD.org>.
По вопросам связанным с русским переводом документации, пишите <frdp@FreeBSD.org.ua>.


Руководство FreeBSDPrevChapter 10 БезопасностьNext

10.2 Введение

Безопасность это первая и основная функция системного администратора. Хотя все многопользовательские системы BSD UNIX® уже снабжены некоторой защитой, работа по созданию и поддержке дополнительных механизмов безопасности, обеспечивающих защищенную работу пользователей, это одна из самых серьезных задач системного администратора. Компьютеры безопасны настолько, насколько вы сделаете их безопасными и требования безопасности всегда находятся в противоречии с удобством работы пользователей. Системы UNIX способны одновременно работать с огромным количеством процессов и многие из этих процессов серверные - это означает, что с ними могут взаимодействовать внешние программы. Сегодня десктопы заменили мини-компьютеры и мэйнфрэймы, и поскольку компьютеры в наши дни подключены к сети интернет, безопасность важна как никогда.

Наилучшая реализация системы безопасности представима в виде ``послойной'' системы. Вообще говоря все, что нужно сделать, это создать столько слоев безопасности, сколько необходимо и затем внимательно следить за вторжениями в систему. Не переусердствуйте в настройке системы безопасности, иначе она сделает невозможной обнаружение вторжений, являющееся одним из наиболее важных аспектов механизма безопасности. Например, нет большого смысла в установке флага schg (chflags(1)) на каждый исполняемый файл системы, поскольку хотя таким способом можно временно защитить исполняемые файлы, это помешает обнаружению факта взлома системы.

Безопасность системы также относится к различным формам атак, имеющих своей целью вызвать крах системы, или сделать систему недоступной другим способом, но не пытающихся получить доступ к учетной записи root (``break root''). Угрозы безопасности могут быть поделены на несколько категорий:

  1. Отказ в обслуживании (Denial of service, DoS).

  2. Взлом пользовательских учетных записей.

  3. Взлом учетной записи root через доступные сервисы.

  4. Взлом учетной записи root через учетные записи пользователей.

  5. Создание backdoor.

Атака ``отказ в обслуживании'' отбирает у машины необходимые ресурсы. Обычно DoS атаки используют грубую силу, чтобы попытаться обрушить систему или сделать ее недоступной другим способом, превысив лимиты ее сервисов или сетевого стека. Некоторые DoS атаки пытаются использовать ошибки в сетевом стеке для обрушения системы одним пакетом. Эту проблему можно решить только исправив ядро системы. Атаки зачастую можно предотвратить правильной установкой параметров, ограничивающих нагрузку на систему в неблагоприятных условиях. С атаками, использующими грубую силу, бороться сложно. Например, атака с использованием пакетов с поддельными адресами, которую почти невозможно остановить, может быстро отключить вашу систему от интернет. Возможно, она не приведет к отказу системы, но сможет переполнить соединение с интернет.

Взлом учетной записи пользователя обычно встречается чаще, чем DoS атаки. Многие системные администраторы все еще используют стандартные сервисы telnetd, rlogind и ftpd на своих серверах. Эти сервисы по умолчанию не работают с зашифрованными соединениям. В результате при среднем количестве пользователей пароль одного или нескольких пользователей, входящих в систему через внешнее соединение (это обычный и наиболее удобный способ входа в систему), будет перехвачен. Внимательный системный администратор должен анализировать логи удаленного доступа на предмет подозрительных адресов пользователей даже в случае успешного входа.

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

Системные администраторы должны помнить, что существует множество потенциальных способов взлома учетной записи root. Атакующий может узнать пароль root, найти ошибку в сервисе, работающем с привилегиями и взломать учетную запись root через сетевое соединение с этим сервисом, или узнать об ошибке в suid-root программе, позволяющей атакующему взлом root с помощью взломанной учетной записи пользователя. Если атакующий нашел способ взлома root, ему может не понадобиться установка backdoor. Многие из обнаруженных и закрытых на сегодняшний день брешей в системе, позволяющие взлом root, требуют от атакующего серьезной работы по заметанию следов, поэтому большинство атакующих устанавливают backdoor. Backdoor предоставляет атакующему простой способ восстановления доступа к системе с привилегиями root, но также дает системному администратору удобный способ обнаружения вторжения. Устранение возможности установки backdoor возможно повредит безопасности системы, поскольку это не устранит брешь, позволившую проникнуть в систему.

Меры безопасности всегда должны быть реализованы многоуровнево, и могут быть классифицированы следующим образом:

  1. Защита root и служебных учетных записей.

  2. Защита root - работающих под root сервисов и suid/sgid исполняемых файлов.

  3. Защита учетных записей пользователей.

  4. Защита файла паролей.

  5. Защита ядра, raw устройств и файловых систем.

  6. Быстрое обнаружение несанкционированных изменений в системе.

  7. Паранойя.

В следующем разделе этой главы эти темы изложены более подробно.

Этот, и другие документы, могут быть скачаны с ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

По вопросам связанными с FreeBSD, прочитайте документацию прежде чем писать в <questions@FreeBSD.org>.
По вопросам связанным с этой документацией, пишите <doc@FreeBSD.org>.
По вопросам связанным с русским переводом документации, пишите <frdp@FreeBSD.org.ua>.


Руководство FreeBSDPrevNext

Chapter 10 Безопасность

Table of Contents
10.1 Краткое описание
10.2 Введение
10.3 Защита FreeBSD
10.4 DES, MD5, и шифрование
10.5 Одноразовые пароли
10.6 KerberosIV
10.7 Kerberos5
10.8 Межсетевые экраны
10.9 OpenSSL *
10.10 VPN over IPsec *
10.11 OpenSSH *
10.12 Mandatory Access Control (MAC) *
10.13 File System Access Control Lists *
10.14 FreeBSD Security Advisories *
Большая часть этой главы была взята из страницы справочника security(7) которую написал Matthew Dillon.

10.1 Краткое описание

Эта глава представляет введение в основные концепции безопасности системы, некоторые эмпирические правила и более подробно обращается к отдельным темам, касающимся FreeBSD. Большая часть затрагиваемых тем может быть применена к безопасности системы и безопасности в интернет вообще. Интернет больше не то ``дружественное'' место, где каждый хочет быть вам добрым соседом. Защита системы необходима для сохранения ваших данных, интеллектуальной собственности, времени и всего остального от хакеров и им подобных.

FreeBSD предоставляет массу утилит и механизмов для обеспечения целостности и безопасности системы и сети.

После прочтения этой главы вы узнаете:

Перед чтением этой главы вам потребуется:

Этот, и другие документы, могут быть скачаны с ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

По вопросам связанными с FreeBSD, прочитайте документацию прежде чем писать в <questions@FreeBSD.org>.
По вопросам связанным с этой документацией, пишите <doc@FreeBSD.org>.
По вопросам связанным с русским переводом документации, пишите <frdp@FreeBSD.org.ua>.


Руководство FreeBSDPrevChapter 3 Основы UNIXNext

3.9 Интерпретатор команд

При работе с FreeBSD, в большинстве случаях для выполнения повседневных задач используется командный интерфейс (так называемая ``оболочка'', ``shell''). Основная задача интерпретатора -- принимать вводимые команды и выполнять их. Многие командные интерпретаторы имеют встроенные средства для выполнения повседневной работы, например, операции над файлами и каталогами, редактирование командной строки, командные макросы и переменные окружения. Вместе с FreeBSD поставляется несколько командных интерпретаторов, например, sh, или Bourne Shell, и tcsh, расширенная версия C-shell. Многие другие интерпретаторы доступны из коллекции портов FreeBSD, например zsh и bash.

Какой из командных интерпретаторов использовать? Это дело вкуса. Если вы программируете на C, то вам, возможно, понравится tcsh. Если вы работали с Linux, или только начинаете работать с интерфейсом командной строки UNIX®, попробуйте bash. Каждый из названных интерпретаторов имеет свои особенности, которые отличат его от других, и, возможно, повлияют на ваш выбор.

Одна из наиболее часто используемых функций командного интерпретатора - дополнение частичного имени файла до полного. Вы можете набрать только первые несколько символов имени файла, нажать клавишу табуляции (TAB), и командный интерпретатор автоматически завершит имя. Например, у нас есть два файла, названные foobar и foo.bar. Допустим, мы хотим удалить файл foo.bar. Для этого, наберем на клавиатуре rm fo[Tab].[Tab].

Вы увидите следующее: rm foo[BEEP].bar.

Здесь [BEEP] - это так называемый консольный сигнал, оповещающий о том, что интерпретатор не в состоянии закончить имя файла, так как по введенным вами символам невозможно однозначно идентифицировать файл. Например, имена файлов foobar и foo.bar оба начинаются с fo, но после нажатия TAB можно однозначно дополнить только до foo. Если же теперь ввести точку (.) и вновь нажать TAB, интерпретатор достроит имя файла целиком.

Дополнительные возможности при работе с интерпретатором дает использование переменных окружения. Переменные окружения это пары переменная=значение, хранящиеся в памяти интерпретатора. Значение переменных окружения может быть прочитано любой программой, запущенной из командного интерпретатора, и часто содержит настройки для многих приложений и утилит. Ниже приведены некоторые наиболее часто встречающиеся переменные окружения и их значения:

ПеременнаяОписание
USERИмя текущего пользователя.
PATHКаталоги, разделенные двоеточием, для поиска исполняемых файлов.
DISPLAYСетевое имя виртуального дисплея X11, доступного для подключения.
SHELLТекущий командный интерпретатор.
TERMНазвание (тип) терминала. Используется, чтобы узнать возможности терминала.
TERMCAPСписок escape-последовательностей для управления различными функциями терминала.
OSTYPEНазвание (тип) операционной системы. Например, FreeBSD.
MACHTYPEАрхитектура машины (процессора).
EDITORВыбранный пользователем текстовый редактор.
PAGERВыбранная пользователем утилита просмотра файлов.
MANPATHКаталоги, разделенные двоеточием, для поиска файлов системного справочника.

Установка значений переменных окружения различна для разных оболочек. Например, в интерпретаторах C-стиля, таких как tcsh и csh, это setenv. В интерпретаторах Bourne, таких как sh и bash, это export. Например, чтобы установить или изменить значение переменной EDITOR к значению /usr/local/bin/emacs в csh или tcsh, выполните команду:

% setenv EDITOR /usr/local/bin/emacs

В оболочках Bourne:

% export EDITOR="/usr/local/bin/emacs"

Чтобы получить значение переменной, например, в командной строке, поместите символ $ перед именем переменной. Например, команда echo $TERM выведет значение переменной $TERM.

Командный интерпретатор воспринимает некоторые символы, называемые метасимволами, в качестве управляющих. Один из наиболее часто используемых - символ *, который заменяет любое количество символов в имени файла. Метасимволы используются для поиска файлов по маске, например, команда echo * делает практически тоже самое, что и команда ls, поскольку интерпретатор вызывает команду echo, передавая ей имена всех файлов, попадающих под маску *.

В некоторых ситуациях требуется, чтобы интерпретатор воспринимал метасимволы как обычные, не несущие специальной смысловой нагрузки. Этого можно достичь, поставив перед символом обратную косую черту (\). Например, команда echo $TERM выведет тип вашего терминала, в то же время команда echo \$TERM выведет именно слово $TERM, а не значение переменной $TERM.

3.9.1 Как изменить командный интерпретатор по умолчанию

Самым простым способом, пожалуй, будет воспользоваться командой chsh. Если переменная EDITOR определена, то будет загружен соответствующий текстовый редактор, иначе vi. Вам нужно будет изменить значение поля ``Shell:'' и выйти из редактора с сохранением результатов.

Можно также воспользоваться опцией -s команды chsh. Например, если вы хотите изменить интерпретатор на bash, выполните:

% chsh -s /usr/local/bin/bash

Также можно запустить chsh без параметров и изменить интерпретатор по умолчанию в редакторе.

Note: Интерпретатор, который вы будете использовать, обязательно должен быть в файле /etc/shells. Обычно, при установке интерпретаторов из коллекции портов, это делается автоматически. Если же это не так, вам нужно будет самостоятельно добавить соответствующую строчку в этот файл.

Например, если вы установили bash вручную и поместили его в каталог /usr/local/bin, нужно набрать:

# echo "/usr/local/bin/bash" >> /etc/shells

Теперь можно смело использовать команду chsh.

Этот, и другие документы, могут быть скачаны с ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

По вопросам связанными с FreeBSD, прочитайте документацию прежде чем писать в <questions@FreeBSD.org>.
По вопросам связанным с этой документацией, пишите <doc@FreeBSD.org>.
По вопросам связанным с русским переводом документации, пишите <frdp@FreeBSD.org.ua>.


Руководство FreeBSD
Prev Chapter 6. Безопасность Next

6.5. S/Key

S/Key is a one-time password scheme based on a one-way hash function. FreeBSD uses the MD4 hash for compatibility but other systems have used MD5 and DES-MAC. S/Key has been part of the FreeBSD base system since version 1.1.5 and is also used on a growing number of other operating systems. S/Key is a registered trademark of Bell Communications Research, Inc.

There are three different sorts of passwords which we will talk about in the discussion below. The first is your usual UNIX-style or Kerberos password; we will call this a "UNIX password". The second sort is the one-time password which is generated by the S/Key key program and accepted by the keyinit program and the login prompt; we will call this a "one-time password". The final sort of password is the secret password which you give to the key program (and sometimes the keyinit program) which it uses to generate one-time passwords; we will call it a "secret password" or just unqualified "password".

The secret password does not have anything to do with your UNIX password; they can be the same but this is not reccomended. S/Key secret passwords are not limted to 8 characters like UNIX passwords, they can be as long as you like. Passwords of six or seven word long phrases are fairly common. For the most part, the S/Key system operates completely independently of the UNIX password system.

Besides the password, there are two other pieces of data that are important to S/Key. One is what is known as the "seed" or "key" and consists of two letters and five digits. The other is what is called the "iteration count" and is a number between 1 and 100. S/Key creates the one-time password by concatenating the seed and the secret password, then applying the MD4 hash as many times as specified by the iteration count and turning the result into six short English words. These six English words are your one-time password. The login and su programs keep track of the last one-time password used, and the user is authenticated if the hash of the user-provided password is equal to the previous password. Because a one-way hash is used it is impossible to generate future one-time passwords if a sucessfully used password is captured; the interation count is decremented after each sucessfull login to keep the user and the login program in sync. When the iteration count gets down to 1 S/Key must be reinitialized.

There are four programs involved in the S/Key system which we will discuss below. The key program accepts an iteration count, a seed, and a secret password, and generates a one-time password. The keyinit program is used to initialized S/Key, and to change passwords, iteration counts, or seeds; it takes either a secret password, or an iteration count, seed, and one-time password. The keyinfo program examines the /etc/skeykeys file and prints out the invoking user's current iteration count and seed. Finally, the login and su programs contain the necessary logic to accept S/Key one-time passwords for authentication. The login program is also capable of disallowing the use of UNIX passwords on connections coming from specified addresses.

There are four different sorts of operations we will cover. The first is using the keyinit program over a secure connection to set up S/Key for the first time, or to change your password or seed. The second operation is using the keyinit program over an insecure connection, in conjunction with the key program over a secure connection, to do the same. The third is using the key program to log in over an insecure connection. The fourth is using the key program to generate a number of keys which can be written down or printed out to carry with you when going to some location without secure connections to anywhere.

6.5.1. Secure connection initialization

To initialize S/Key for the first time, change your password, or change your seed while logged in over a secure connection (e.g., on the console of a machine or via ssh), use the keyinit command without any parameters while logged in as yourself:

    % keyinit
    Adding unfurl:
    Reminder - Only use this method if you are directly connected.
    If you are using telnet or rlogin exit with no password and use keyinit -s.
    Enter secret password: 
    Again secret password: 
    
    ID unfurl s/key is 99 to17757
    DEFY CLUB PRO NASH LACE SOFT

At the Enter secret password: prompt you should enter a password or phrase. Remember, this is not the password that you will use to login with, this is used to generate your one-time login keys. The "ID" line gives the parameters of your particular S/Key instance; your login name, the iteration count, and seed. When logging in with S/Key, the system will remember these parameters and present them back to you so you do not have to remember them. The last line gives the particular one-time password which corresponds to those parameters and your secret password; if you were to re-login immediately, this one-time password is the one you would use.

6.5.2. Insecure connection initialization

To initialize S/Key or change your secret password over an insecure connection, you will need to already have a secure connection to some place where you can run the key program; this might be in the form of a desk accessory on a Macintosh, or a shell prompt on a machine you trust. You will also need to make up an iteration count (100 is probably a good value), and you may make up your own seed or use a randomly-generated one. Over on the insecure connection (to the machine you are initializing), use the keyinit -s command:

    % keyinit -s
    Updating unfurl:
    Old key: to17758
    Reminder you need the 6 english words from the key command.
    Enter sequence count from 1 to 9999: 100
    Enter new key [default to17759]: 
    s/key 100 to 17759
    s/key access password:

To accept the default seed (which the keyinit program confusingly calls a key), press return. Then before entering an access password, move over to your secure connection or S/Key desk accessory, and give it the same parameters:

    % key 100 to17759
    Reminder - Do not use this program while logged in via telnet or rlogin.
    Enter secret password: <secret password>
    CURE MIKE BANE HIM RACY GORE

Now switch back over to the insecure connection, and copy the one-time password generated by key over to the keyinit program:

    s/key access password:CURE MIKE BANE HIM RACY GORE
    ID unfurl s/key is 100 to17759
    CURE MIKE BANE HIM RACY GORE

The rest of the description from the previous section applies here as well.

6.5.3. Generating a single one-time password

Once you've initialized S/Key, when you login you will be presented with a prompt like this:

    % telnet example.com
    Trying 10.0.0.1...
    Connected to example.com
    Escape character is '^]'.
    
    FreeBSD/i386 (example.com) (ttypa)
    
    login: <username>
    s/key 97 fw13894
    Password: 

As a side note, the S/Key prompt has a useful feature (not shown here): if you press return at the password prompt, the login program will turn echo on, so you can see what you are typing. This can be extremely useful if you are attempting to type in an S/Key by hand, such as from a printout. Also, if this machine were configured to disallow UNIX passwords over a connection from my machine, the prompt would have also included the annotation (s/key required), indicating that only S/Key one-time passwords will be accepted.

At this point you need to generate your one-time password to answer this login prompt. This must be done on a trusted system that you can run the key command on. (There are versions of the key program from DOS, Windows and MacOS as well.) The key program needs both the iteration count and the seed as command line options. You can cut-and-paste these right from the login prompt on the machine that you are logging in to.

On the trusted system:

    % key 97 fw13894
    Reminder - Do not use this program while logged in via telnet or rlogin.
    Enter secret password: 
    WELD LIP ACTS ENDS ME HAAG

Now that you have your one-time password you can continue logging in:

    login: <username>
    s/key 97 fw13894
    Password: <return to enable echo>
    s/key 97 fw13894
    Password [echo on]: WELD LIP ACTS ENDS ME HAAG
    Last login: Tue Mar 21 11:56:41 from 10.0.0.2 ... 

This is the easiest mechanism if you have a trusted machine. There is a Java S/Key key applet, The Java OTP Calculator, that you can download and run locally on any Java supporting browser.

6.5.4. Generating multiple one-time passwords

Sometimes you have have to go places where you do not have access to a trusted machine or secure connection. In this case, it is possible to use the key command to generate a number of one-time passwords before hand to be printed out and taken with you. For example:

    % key -n 5 30 zz99999
    Reminder - Do not use this program while logged in via telnet or rlogin.
    Enter secret password: <secret password>
    26: SODA RUDE LEA LIND BUDD SILT 
    27: JILT SPY DUTY GLOW COWL ROT  
    28: THEM OW COLA RUNT BONG SCOT  
    29: COT MASH BARR BRIM NAN FLAG  
    30: CAN KNEE CAST NAME FOLK BILK

The -n 5 requests five keys in sequence, the 30 specifies what the last iteration number should be. Note that these are printed out in reverse order of eventual use. If you are really paranoid, you might want to write the results down by hand; otherwise you can cut-and-paste into lpr. Note that each line shows both the iteration count and the one-time password; you may still find it handy to scratch off passwords as you use them.

6.5.5. Restricting use of UNIX passwords

Restrictions can be placed on the use of UNIX passwords based on the host name, user name, terminal port, or IP address of a login session. These restrictions can be found in the configuration file /etc/skey.access. The skey.access(5) manual page has more info on the complete format of the file and also details some security cautions to be aware of before depending on this file for security.

If there is no /etc/skey.access file (this is the FreeBSD default), then all users will be allowed to use UNIX passwords. If the file exists, however, then all users will be required to use S/Key unless explicitly permitted to do otherwise by configuration statements in the skey.access file. In all cases, UNIX passwords are permitted on the console.

Here is a sample configuration file which illustrates the three most common sorts of configuration statements:

    permit internet 192.168.0.0 255.255.0.0
    permit user fnord
    permit port ttyd0

The first line (permit internet) allows users whose IP source address (which is vulnerable to spoofing) matches the specified value and mask, to use UNIX passwords. This should not be considered a security mechanism, but rather, a means to remind authorized users that they are using an insecure network and need to use S/Key for authentication.

The second line (permit user) allows the specified username, in this case fnord, to use UNIX passwords at any time. Generally speaking, this should only be used for people who are either unable to use the key program, like those with dumb terminals, or those who are uneducable.

The third line (permit port) allows all users logging in on the specified terminal line to use UNIX passwords; this would be used for dial-ups.


Руководство FreeBSD
Prev Appendix C. Коллектив Проекта FreeBSD Next

C.2. Разработчики FreeBSD

Это люди, которые имеют права доступа к Главному Репозиторию FreeBSD и занимаются основной работой над исходными текстами FreeBSD. Члены Core Группы также являются разработчиками.


Руководство FreeBSD
Prev Appendix C. Коллектив Проекта FreeBSD Next

C.3. Проект Документации FreeBSD

Проект Документации FreeBSD ответственен за большое количество различных подпроектов, каждый подпроект контролируется отдельными индивидумами и их делегатами (если таковые есть):

Главный Архитектор Проекта Документации

Nik Clayton

Webmaster

Wolfram Schneider

Редактор Руководства

Jim Mock

Редактор ЧаВО

FAQ Maintainer

Редактор Новостей

Jim Mock

Пресс Редактор

Joseph Koshy

Редактор ``Очень-Быстрых'' Новостей FreeBSD

Chris Coleman

Редактор Галереи FreeBSD

Alexey Zelkin

Редактор Галереи Коммерческих Разработчиков

Alexey Zelkin

Редактор Списка Изменений Web сервера

Список рассылки webmaster'ов FreeBSD.org

Редактор списка Групп Пользователей

Greg Lehey

Редактор списка проектов и задач FreeBSD

Jeroen Ruigrok/Asmodai

Проект Java в FreeBSD

Patrick S. Gardella

Конвертация документации из формата LinuxDoc в DocBook

Nik Clayton


Руководство FreeBSD
Prev Appendix C. Коллектив Проекта FreeBSD Next

C.5. Официальные участники Проекта Русской Документации FreeBSD

Это люди, которые имеют права доступа к Репозиторию Проекта Русской Документации FreeBSD и занимаются переводом существующей документации на русский язык.

(в алфавитном порядке, отсортировано по фамилии):


Руководство FreeBSD
Prev Appendix C. Коллектив Проекта FreeBSD Next

C.4. Кто за Что Ответственен

Руководитель Проекта Документации

Nik Clayton

Загрузочные блоки

Robert Nordier , John Baldwin

Начальный загрузчик

Daniel C. Sobral

John Baldwin

Интернационализация

Andrey A. Chernov

Postmaster

Jonathan M. Bresler

Координатор Релизов FreeBSD

Jordan K. Hubbard

Связи с Общественностью

Jordan K. Hubbard

Офицер Безопасности

Kris Kennaway

Менеджеры CVS Репозитория

Peter Wemm

Помошник: John Polstra

Менеджер Коллекции Портов FreeBSD

Satoshi Asami

Стандарты

Garrett Wollman

Представитель XFree86 Project, Inc.

Rich Murphey

Поддержка в Usenet

JЖrg Wunsch

GNATS Администратор

Steve Price

Webmaster

Wolfram Schneider


Руководство FreeBSD
Prev Next

Appendix C. Коллектив Проекта FreeBSD

Table of Contents
C.1. Core Группа FreeBSD
C.2. Разработчики FreeBSD
C.3. Проект Документации FreeBSD
C.4. Кто за Что Ответственен
C.5. Официальные участники Проекта Русской Документации FreeBSD

Проект FreeBSD контролируется и действует при участии следующих групп людей:

C.1. Core Группа FreeBSD

Core Группа FreeBSD представляет собой "Совет Директоров", ответственных за решение вопросов связанных общими целями проекта и его руководством и руководство отдельных направлений развития проекта FreeBSD.

(в алфавитном порядке, отсортировано по фамилии):


Руководство FreeBSDPrevChapter 5 X Window SystemNext

5.3 Установка XFree86

Перед тем, как устанавливать XFree86, определитесь, с какой версией работать. XFree86 3.X является веткой разработки XFree86, находящейся в режиме только поддержки. Она весьма стабильна и поддерживает огромное количество графических адаптеров. Однако новых разработок в этом программном обеспечении не ведётся. В XFree86 4.X архитектура системы была полностью пересмотрена, в ней появились новые возможности, такие, как улучшенная поддержка шрифтов и антиалиасинга. К сожалению, эта новая архитектура требует переписывания драйверов видео, и некоторые из старых адаптеров, поддерживаемых в 3.X, пока не поддерживаются в 4.X. Так как новые разработки и поддержка новых графических адаптеров выполняются в этой ветке, XFree86 4.X теперь является стандартно используемой во FreeBSD версией X Window System.

Программа установки FreeBSD предоставляет пользователям возможность установить и настроить XFree86 4.X во время установки (описано в Section 2.9.12). Для установки и запуска XFree86 3.X сначала нужно выполнить установку базовой системы FreeBSD, а затем установить XFree86. К примеру, чтобы построить и установить XFree86 3.X из Коллекции Портов:

# cd /usr/ports/x11/XFree86
# make all install clean

Как вариант, любая версия XFree86 может быть установлена непосредственно из бинарных файлов для FreeBSD, которые размещены на веб-сайте XFree86. Для установки посредством утилиты pkg_add(1) имеется также бинарный пакадж для XFree86 4.X. При использовании возможности сгрузки по сети, предусмотренной в утилите pkg_add(1), номер версии пакаджа должен быть опущен. pkg_add(1) автоматически сгрузит самую последнюю версию приложения. Таким образом, для сгрузки и установки пакаджа для XFree86 4.X, просто наберите:

# pkg_add -r XFree86

Для установки XFree86 4.X вы можете также воспользоваться Коллекцией Портов, для чего вам нужно просто набрать следующие команды:

# cd /usr/ports/x11/XFree86-4
# make install clean

Note: В примерах выше будет установлен полный дистрибутив XFree86, включая серверы, клиенты, шрифты и так далее. Также доступны и отдельные пакаджи и порты для различных частей XFree86 4.X.

В оставшейся части главы будет рассказано о том, как сконфигурировать XFree86 и настроить рабочее окружение.

Этот, и другие документы, могут быть скачаны с ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

По вопросам связанными с FreeBSD, прочитайте документацию прежде чем писать в <questions@FreeBSD.org>.
По вопросам связанным с этой документацией, пишите <doc@FreeBSD.org>.
По вопросам связанным с русским переводом документации, пишите <frdp@FreeBSD.org.ua>.


Руководство FreeBSD
Prev Chapter 9. X Window System Next

9.2. Общий обзор

Вместе с FreeBSD поставляется XFree86, порт X11R6, поддерживающий несколько различных версий UNIX на платформе Intel. Эта глава рассказывает о том, как настроить ваш сервер XFree86. Она написана на основе материалов, поставляемых с релизом для FreeBSD, в частности, файлов README.FreeBSD и README.Config из каталога /usr/X11R6/lib/X11/doc. Если Вы найдете какие-либо разночтения, то содержимое этих файлов содержит самую последнюю информацию. Кроме того, в файле /usr/X11R6/lib/X11/doc/RELNOTES содержится независимая от ОС информация о текущем релизе.

X использует много памяти. Для того, чтобы работать с X, вашей системе абсолютно необходимо иметь не менее 8 МБ оперативной памяти, однако с таким маленьким объемом памяти производительность будет болезненно низка. Более разумным минимумом является 16 МБ, и Вы можете увеличить производительность, добавив еще оперативной памяти. Если Вы используете X весьма интенсивно, то увеличение производительности может наблюдаться при увеличения объемов ОЗУ до 128 МБ.

В оставшейся части главы содержится масса полезной информации, но может быть, что прямо сейчас вам информация не нужна, а все, что вам нужно - это запустить ваш X-сервер и начать работу. Однако, мы предупреждаем :

Warning: Неправильная установка может сжечь ваш монитор или графический адаптер.

Однако, если Вы считаете себя специалистом, у вас стандартный адаптер Super VGA и хороший многочастотный монитор, то, вероятнее всего, вам удастся запустить все и начать работу без чтения этого раздела.


Руководство FreeBSDPrevNext

Chapter 5 X Window System

Table of Contents
5.1 Обзор
5.2 Основы X
5.3 Установка XFree86
5.4 Конфигурация XFree86
5.5 Использование шрифтов в XFree86
5.6 Менеджеры Экранов (Display Managers) X
5.7 Графические оболочки

5.1 Обзор

FreeBSD использует XFree86 для того, чтобы дать пользователям мощный графический интерфейс. XFree86 является открытой реализацией X Window System. Эта глава посвящена установке и настройке XFree86 в системе FreeBSD. Чтобы получить более полную информацию о XFree86 и поддерживаемом в ней графическом оборудовании, посетите сайт XFree86.

После чтения этой главы вы будете знать:

Перед чтением этой главы вы должны:

Этот, и другие документы, могут быть скачаны с ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

По вопросам связанными с FreeBSD, прочитайте документацию прежде чем писать в <questions@FreeBSD.org>.
По вопросам связанным с этой документацией, пишите <doc@FreeBSD.org>.
По вопросам связанным с русским переводом документации, пишите <frdp@FreeBSD.org.ua>.


Руководство FreeBSD
Prev Chapter 3. Основы Unix Next

3.6. За дополнительной информацией...

3.6.1. Системный справочник (man)

Пожалуй, самым полным руководством по FreeBSD является системный справочник (man). Практически каждое приложение или утилита имеют соответствующую страницу (часто не одну), описывающую тот или иной аспект работы программы, всевозможные опции и настройки. Для просмотра этих страниц существует команда man:

% man command

Здесьcommand - это команда, про которую Вы хотите получить информацию. Например, для команды ls наберите:

% man ls

Содержимое системного справочника для удобства разделено на несколько секций:

  1. Пользовательские команды.

  2. Системные вызовы и коды ошибок.

  3. Функции стандартных библиотек.

  4. Драйверы устройств.

  5. Форматы файлов.

  6. Развлечения и игры.

  7. Дополнительная информация.

  8. Команды системного администрирования.

  9. Для разработчиков ядра.

В некоторых случаях (не так уж редко), страницы, относящиеся к одной и той же команде, находятся в различных секциях справочника. Например, есть команда cdmod и системный вызов chmod(). В этом случае, необходимо явно указать секцию, в которой искать соответствующую страницу:

% man 1 chmod

Эта команда выведет справку об утилите chmod. По традиции, конкретная секция справочника указывается в скобках после команды, например, chmod(1) относится к утилите chmod, а chmod(2) - к соответствующему системному вызову.

Часто бывает так, что Вы не знаете название команды, но имеете представление о том, что она должна делать. В этом случае можно попытаться найти нужную команду по ключевым словам, встречающимся в ее описании, используя опцию -k программы man:

% man -k mail

Вы получите список команд, имеющих слово ``mail'' в своих описаниях. Это эквивалентно использованию команды apropos.

Или например, Вы видите список файлов в каталоге /usr/bin, при этом не имея ни малейшего представления о том, какие функции выполняет каждый их них? Просто наберите % cd /usr/bin; man -f * или % cd /usr/bin; whatis *, что фактически одно и то же.

3.6.2. GNU Info Files

FreeBSD поставляется с многочисленными приложениями и утилитами от Фонда Свободного Программного Обеспечения, Free Software Foundation (FSF). В дополнение к этим программам посталяется обширная гипертекстовая документация в виде так называемых info файлов, которые могут быть просмотрены с помощью команды info, или, в качестве альтернативы, если Вы имеете установленый emacs, в соответствующем (info) режиме этого редактора.

Чтобы воспользоваться командой info(1), просто наберите в командной строке:

% info

Чтобы вызвать на экран краткое введение, наберите h. Для ознакомления с возможными командами, наберите ?.


Руководство FreeBSD
PrevChapter 9. Работа с приложениями, написанными для LinuxNext

9.5. Дополнительные сведения

Если Вы интересуетесь, как работает Linux эмуляция, эта секция для Вас. Большинство материала взято из электронного письма, адресованного Список рассылки посвященный беседам о FreeBSD by Terry Lambert (ID письма: <199906020108.SAA07001@usr09.primenet.com>).

9.5.1. Как все это устроено?

FreeBSD поддерживает абстракцию, называемую "загрузчик исполнимых классов", который фактически является первой стадией системного вызова execve(2).

На самом деле, FreeBSD имеет несколько загрузчиков вместо одного, который, в случае неудачи, выполняет программу как сценарий (скрипт).

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

Если файл не опознавался системой как исполнимый, execve(2) возвращал ошибку, и текущий командный интерпретатор начинал выполнять файл как скрипт.

Позднее, sh(1) был модифицирован, так, чтобы проверять первые два символа в файле, и если они оказывались :\n, то файл выполнялся как сценарий для csh(1) (утверждается, что SCO были первыми, кто сделал эту модификацию).

FreeBSD ведет себя по-другому: пробегает по списку загрузчиков, включая специальный #! загрузчик, который вызывает нужный интерпретатор или /bin/sh, если не нашел подходящего.

Формат исполняемого файла FreeBSD определяет по "магическому числу". На этой стадии пока не различается, для какой операционной системы предназначен файл (Linux, Solaris, или любой другой, использующей ELF-формат исполняемых файлов).

Далее, ELF-загрузчик определяет "марку" (специальный комментарий; отсутствует в исполняемых файлах SVR4/Solaris) исполняемого файла, то есть для какой операционной системы он предназначен.

Соответственно, Linux программы должны быть "маркированы" для Linux (например, с помощью утилиты brandelf(1)):

    # brandelf -t Linux file

Когда ELF-загрузчик находит "марку" Linux, он заменяет соответствующий указатель в структуре proc. Все системные вызовы индексируются через этот указатель (в традиционной UNIX системе, это массив sysent[], содержащий системные вызовы). Некоторые особые ситуации и системные вызовы обрабатываются специальным модулем ядра поддержки Linux.

Плюс ко всему, Linux эмулятор динамически "изменяет корень" файловой системы при поиске файлов (фактически делая то же самое, что и опция union при монтировании файловых систем (не путать с unionfs!)). Сперва, файл ищется в директории /compat/linux/original-path и только затем, в случае неудачи, в /original-path. Это дает возможность Linux программам выполнять FreeBSD команды, если не найдется соответствующих Linux команд. Например, скопировав FreeBSD uname(1) в каталог /compat/linux/bin/, можно "заставить" Linux программы сообщать, что они запускаются под FreeBSD.

На самом деле, ядра FreeBSD и Linux во многом похожи: системные операции, виртуальная память, система сигналов и сообщений, межпроцессное взаимодействие и прочее. Разница в том, что FreeBSD программы обращаются к системным вызовам FreeBSD, Linux программы соответственно к системным вызовам Linux. Во многих операционных системах прошлого адреса системных вызовов были зашиты в статический глобальный массив sysent[], вместо обращения по указателю в структуре proc, который инициализируется динамически, позволяя таким образом запускать программы, написанные для разных операционных систем.

В чем же разница между системными вызовами Linux и FreeBSD? Фактически никакой. Единственное различие (на данный момент, в будущем все может и, вероятно, изменится), пожалуй, в том, что функции системных вызовов FreeBSD зашиты в ядро, а для Linux они могут быть либо в ядре, либо в динамически загружаемом модуле.

Можно ли назвать это эмуляцией? Нет. Как таковой, эмулятор (или симулятор) отсутствует. В таком случае, почему же тогда говорят "Linux эмуляция"? Чтобы "насолить" FreeBSD?! 8-). На самом деле, это вопрос терминологии: не существовало слова, которое бы точнее описывало этот процесс. Нельзя сказать, что FreeBSD запускает приложения Linux (без перекомпиляции или загрузки соответствующего модуля ядра). Тогда и придумали термин "Linux эмуляция".


Руководство FreeBSD
Prev Chapter 12. Добавление новых параметров конфигурации ядра Next

12.2. И что я должен для этого сделать?

Во-первых, отредактируйте файл sys/conf/options (или sys/<arch>/conf/options.<arch>, например sys/i386/conf/options.i386), и выберите файл opt_foo.h, в котором лучше всего поместить вашу новую опцию.

Если имеется что-то, уже похожее на предназначение новой опции, выберите это. Например, опции, изменяющие общее поведение подсистемы SCSI, могут быть помещены в opt_scsi.h. По умолчанию простое упоминание опции в соответствующем файле опций, скажем, FOO, приводит к тому, что ее значение помещается в соответствующий файл opt_foo.h. Это может быть переопределено в правой части правила указанием другого имени файла.

Если файла opt_foo.h для предполагаемой новой опции еще нет, придумайте новое имя. Сделайте его значимым и прокомментируйте новый раздел в файле options[.<arch>]. Утилита config(8) автоматически воспримет изменения и создаст этот файл при следующем своем запуске. Большинство опций должно оказаться в заголовочном файле..

Размещение слишком большого количества опций в одном файле opt_foo.h приведет к перестроению слишком большого количества файлов ядра при изменении одной из опций в конфигурационном файле.

Наконец, определите, какие файлы ядра зависят от новой опции. Если только вы не только что придумали вашу опцию и она еще нигде не упоминается, то команда

    % find /usr/src/sys -type f | xargs fgrep NEW_OPTION
          
вам поможет ее найти. Сделайте это и отредактируйте все эти файлы, а также добавьте
    #include "opt_foo.h"
вверху до всех строк #include <xxx.h>. Эта последовательность очень важна, так как опции могут переопределять значения по умолчанию из обычных включаемых файлов, если эти значения по умолчанию даются в форме
     #ifndef NEW_OPTION #define NEW_OPTION (что-то)
          #endif
в обычном заголовке.

Добавление опции, которая переопределяет что-то в системном заголовочном файле (то есть файле, находящемся в каталоге /usr/include/sys/), практически всегда ошибочно. opt_foo.h не может быть включен в те файлы, потому что это изменит заголовки более серьезно, но если он не включен, то в местах его включения может получиться рассогласованность значений для этой опции. Да, такие прецеденты имеют место и сейчас, но это их не оправдывает.


Руководство FreeBSD
Prev Chapter 13. Отладка ядра Next

13.2. Отладка аварийного дампа с помощью DDD

Возможно также и исследование аварийного дампа ядра при помощи такого графического отладчика, как ddd. Добавьте флаг -k к командной строке ddd, которую вы обычно используете для его вызова. Например;

    # ddd -k /var/crash/kernel.0 /var/crash/vmcore.0
        

После этого у вас должно получиться исследование аварийного дампа при помощи графического интерфейса ddd.


Руководство FreeBSD
Prev Chapter 13. Отладка ядра Next

13.3. Посмертный анализ дампа

Что делать, если ядро аварийно завершает работу, хотя этого вы не хотели и поэтому командой config -g его не компилировали? Здесь не все еще потеряно. Не паникуйте!

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

Перейдите в каталог конфигурации ядра (/usr/src/sys/arch/conf) и отредактируйте ваш конфигурационный файл. Раскомментируйте (или добавьте, если она не существует) такую строку

    makeoptions    DEBUG=-g           #Build kernel with gdb(1) debug symbols
        

Перестройте ядро. Из-за изменения метки времени в Makefile будут перестроены некоторые другие объектные файлы, например, trap.o. К некоторому счастью, добавление опции -g не изменит все и вся в генерируемом коде, так что в конце концов вы получите новое ядро с тем же кодом, что и сбоящее ядро, за исключением наличия отладочной информации. По крайней мере, вы можете сравнить старый и новый размеры ядер командой size(1). Если они не совпадают, то вам придется отказаться от вашей затеи.

Исследуйте дамп так, как это описано выше. Отладочной информации может не хватать в некоторых местах, как это можно видеть в трассировке стека примера выше, когда некоторые функции выводятся без номеров строк и списка аргументов. Если вам нужно больше отладочной информации, удалите соответствующие объектные файлы и повторите сеанс работы с kgdb, пока не получите достаточно подробную информацию.

Не гарантируется, что все это будет работать, однако в большинстве случаев все работает прекрасно.


Руководство FreeBSD
Prev Chapter 13. Отладка ядра Next

13.4. Отладка ядра в режиме реального времени с помощью DDB

Хотя kgdb является отладчиком не реального времени с высокоуровневым пользовательским интерфейсом, есть несколько вещей, которые он сделать не сможет. Самыми важными из них являются точки останова и пошаговое выполнение кода ядра.

Если вам нужно выполнять низкоуровневую отладку вашего ядра, то на этот случай имеется отладчик реального времени, который называется DDB. Он позволяет устанавливать точки останова, выполнять функции ядра по шагам, исследовать и изменять переменные ядра и прочее. Однако он не может использовать исходные тексты ядра и имеет доступ только к глобальным и статическим символам, а не ко всей отладочной информации, как kgdb.

Чтобы отконфигурировать ваше ядро для включения DDB, добавьте строчку с параметром

    options DDB
          
в ваш конфигурационный файл, и перестройте ядро. (Обратитесь к разделу о конфигурации ядра для выяснения деталей конфигурации ядра FreeBSD.

Note: Заметьте, что, если у вас устаревшая версия загрузочных блоков, то отладочная информация может оказаться не загруженной. Обновите блоки загрузки; самые новые загружают символы для DDB автоматически.)

После того, как ядро с DDB запущено, есть несколько способов войти в DDB. Первый, и самый простой, способ заключается в наборе флага загрузки -d прямо в приглашении загрузчика. Ядро будет запущено в режиме отладки и войдет в DDB до выполнения процедуры распознавания каких бы то ни было устройств. Поэтому вы можете выполнить отладку даже функций распознавания/присоединения устройств.

Второй способ - это особая комбинация клавиш на клавиатуре, как правило, Ctrl-Alt-ESC. Для системной консоли syscon это может быть переопределено; некоторые из поставляемых раскладок это выполняют, так что присмотритесь. Для последовательных консолей имеется параметр, позволяющий использовать последовательность BREAK на канале консоли для входа в DDB (options BREAK_TO_DEBUGGER в конфигурационном файле ядра). По умолчанию этого не делается, так как существует множество паршивых последовательных адаптеров, которые генерируют последовательность BREAK, к примеру, при вытягивании кабеля.

Третий способ заключается во входе в DDB при возникновении любой аварийной ситуации, если ядро его использует. По этой причине не очень умно конфигурировать ядро с DDB для машины, которая работает без присмотра.

Команды DDB примерно повторяют некоторые команды gdb. Первым делом вам, наверное, нужно задать точку останова:

    b function-name
    b address
        

Значения по умолчанию воспринимаются в шестнадцатиричном виде, но чтобы отличать их от имен символов; шестнадцатиричные числа, начинающиеся с букв a-f, должны предваряться символами 0x (это опционально для других чисел). Разрешены простые выражения, например: function-name + 0x103.

Чтобы продолжить работу прерванного ядра, просто наберите:

    c

Чтобы получить трассировку стека, задайте:

    trace

Note: Заметьте, что при входе в DDB по специальной комбинации, ядро в данный момент обслуживает прерывание, так что трассировка стека может не дать много информации.

Если вы хотите убрать точку останова, введите

    del
    del address-expression
        

В первом варианте команда будет исполнена сразу же по достижении точки останова, а текущая точка останова будет удалена. Во второй форме можно удалить любую точку останова, однако вам нужно будет указать ее точный адрес; его можно получить из:

    show b

Чтобы выполнить один шаг ядра, попробуйте:

    s

При этом будет осуществляться пошаговое выполнение функций, однако вы можете трассировать их с помощью DDB, пока не будет достигнуто соответствие возвращаемому значению:

    n

Note: Это отличается от команды next отладчика gdb; это похоже на команду gdb finish.

Чтобы выводить значения в памяти, используйте, (к примеру):

    x/wx 0xf0133fe0,40
    x/hd db_symtab_space
    x/bc termbuf,10
    x/s stringbuf
          
для доступа к данным типа слово/полуслово/байт и вывода в шестнадцатиричном/десятичном/символьном виде. Число после запятой означает счетчик объектов. Чтобы вывести следующие 0x10 объектов, просто укажите:

    x ,10

Подобным же образом используйте

    x/ia foofunc,10
для дизассемблирования и вывода первых 0x10 инструкций функции foofunc вместе с их адресом относительно начала foofunc.

Чтобы изменить значения в памяти, используйте команду write:

    w/b termbuf 0xa 0xb 0
    w/w 0xf0010030 0 0
        

Модификатор команды (b/h/w) указывает на размер записываемых данных, первое следующее за ним выражение является адресом для записи, а оставшаяся часть интерпретируется как данные для записи в доступные области памяти.

Если вам нужно узнать текущее содержимое регистров, используйте:

    show reg

Альтернативно вы можете вывести содержимое одного регистра по команде, скажем,

    p $eax
и изменить его по:

    set $eax new-value

Если вам нужно вызвать некоторую функцию ядра из DDB, просто укажите:

    call func(arg1, arg2, ...)

Будет выведено возвращаемое значение.

Для вывода суммарной статистики по всем работающим процессам в стиле команды ps(1) воспользуйтесь такой командой:

    ps

Теперь вы узнали, почему ядро работает с ошибками и хотите выполнить перезагрузку. Запомните, что в зависимости от влияния предыдущих ошибок, не все части ядра могут работать так, как ожидается. Выполните одно из следующих действий для закрытия и перезагрузки вашей системы:

    panic

Это приведет к созданию дампа ядра и перезагрузке, так что позже вы можете проанализировать дамп на более высоком уровне при помощи kgdb. Как правило, эта команда должна следовать за другой командой continue.

    call boot(0)

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

    call cpu_reset()

самый последнее средство при аварии и практически то же самое, что нажатие Большой Красной Кнопки.

Если вам нужен краткий справочник по командам, просто наберите:

    help

Однако настоятельно рекомендуем отпечатать копию страницы справочника по ddb(4) при подготовке к сеансу отладки. Помните, что трудно читать онлайновое руководство при пошаговом выполнении ядра.


Руководство FreeBSD
PrevChapter 12. Работа с приложениями, написанными для LinuxNext

12.5. Дополнительные сведения

Если Вы интересуетесь, как работает Linux эмуляция, эта секция для Вас. Большинство материала взято из электронного письма, адресованного Список рассылки посвященный беседам о FreeBSD by Terry Lambert (ID письма: <199906020108.SAA07001@usr09.primenet.com>).

12.5.1. Как все это устроено?

FreeBSD поддерживает абстракцию, называемую "загрузчик исполнимых классов", который фактически является первой стадией системного вызова execve(2).

На самом деле, FreeBSD имеет несколько загрузчиков вместо одного, который, в случае неудачи, выполняет программу как сценарий (скрипт).

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

Если файл не опознавался системой как исполнимый, execve(2) возвращал ошибку, и текущий командный интерпретатор начинал выполнять файл как скрипт.

Позднее, sh(1) был модифицирован, так, чтобы проверять первые два символа в файле, и если они оказывались :\n, то файл выполнялся как сценарий для csh(1) (утверждается, что SCO были первыми, кто сделал эту модификацию).

FreeBSD ведет себя по-другому: пробегает по списку загрузчиков, включая специальный #! загрузчик, который вызывает нужный интерпретатор или /bin/sh, если не нашел подходящего.

Формат исполняемого файла FreeBSD определяет по "магическому числу". На этой стадии пока не различается, для какой операционной системы предназначен файл (Linux, Solaris, или любой другой, использующей ELF-формат исполняемых файлов).

Далее, ELF-загрузчик определяет "марку" (специальный комментарий; отсутствует в исполняемых файлах SVR4/Solaris) исполняемого файла, то есть для какой операционной системы он предназначен.

Соответственно, Linux программы должны быть "маркированы" для Linux (например, с помощью утилиты brandelf(1)):

    # brandelf -t Linux file

Когда ELF-загрузчик находит "марку" Linux, он заменяет соответствующий указатель в структуре proc. Все системные вызовы индексируются через этот указатель (в традиционной UNIX системе, это массив sysent[], содержащий системные вызовы). Некоторые особые ситуации и системные вызовы обрабатываются специальным модулем ядра поддержки Linux.

Плюс ко всему, Linux эмулятор динамически "изменяет корень" файловой системы при поиске файлов (фактически делая то же самое, что и опция union при монтировании файловых систем (не путать с unionfs!)). Сперва, файл ищется в директории /compat/linux/original-path и только затем, в случае неудачи, в /original-path. Это дает возможность Linux программам выполнять FreeBSD команды, если не найдется соответствующих Linux команд. Например, скопировав FreeBSD uname(1) в каталог /compat/linux/bin/, можно "заставить" Linux программы сообщать, что они запускаются под FreeBSD.

На самом деле, ядра FreeBSD и Linux во многом похожи: системные операции, виртуальная память, система сигналов и сообщений, межпроцессное взаимодействие и прочее. Разница в том, что FreeBSD программы обращаются к системным вызовам FreeBSD, Linux программы соответственно к системным вызовам Linux. Во многих операционных системах прошлого адреса системных вызовов были зашиты в статический глобальный массив sysent[], вместо обращения по указателю в структуре proc, который инициализируется динамически, позволяя таким образом запускать программы, написанные для разных операционных систем.

В чем же разница между системными вызовами Linux и FreeBSD? Фактически никакой. Единственное различие (на данный момент, в будущем все может и, вероятно, изменится), пожалуй, в том, что функции системных вызовов FreeBSD зашиты в ядро, а для Linux они могут быть либо в ядре, либо в динамически загружаемом модуле.

Можно ли назвать это эмуляцией? Нет. Как таковой, эмулятор (или симулятор) отсутствует. В таком случае, почему же тогда говорят "Linux эмуляция"? Чтобы "насолить" FreeBSD?! 8-). На самом деле, это вопрос терминологии: не существовало слова, которое бы точнее описывало этот процесс. Нельзя сказать, что FreeBSD запускает приложения Linux (без перекомпиляции или загрузки соответствующего модуля ядра). Тогда и придумали термин "Linux эмуляция".


Руководство FreeBSD
Prev Chapter 13. Отладка ядра Next

13.5. Отладка ядра в режиме реального времени при помощи удаленного GDB

Эта возможность поддерживается во FreeBSD начиная с версии 2.2, и она на самом деле очень удобна.

В GDB уже давно имеется поддержка удаленной отладки. Это делается при помощи весьма простого протокола по последовательному каналу. В отличие от других методов, описанных выше, для этого вам требуется наличие двух машин. Одна из них является хостом, предоставляющим ресурсы для отладки, включая все исходные тексты и копию ядра со всеми символами в нем, а другая является целевой машиной, на которой запущена та же копия того же ядра (но без отладочной информации).

Вы должны настроить исследуемое ядро при помощи команды config -g, включить DDB в конфигурацию и откомпилировать его обычным образом. Это даст большой объем получаемого бинарного файла из-за отладочной информации. Скопируйте это ядро на целевую машину, усеките отладочную информацию командой strip -x и загрузите это ядро с использованием параметра загрузки -d. Подключите последовательный канал целевой машины, имеющий установленные флаги "flags 080" на соответствующем устройстве sio к любому последовательному каналу отладочного хоста. А теперь на отладочной машине перейдите в каталог компиляции целевого ядра и запустите gdb:

    % gdb -k kernel
    GDB is free software and you are welcome to distribute copies of it
     under certain conditions; type "show copying" to see the conditions.
    There is absolutely no warranty for GDB; type "show warranty" for details.
    GDB 4.16 (i386-unknown-freebsd),
    Copyright 1996 Free Software Foundation, Inc...
    (kgdb)
        

Проинициализируйте сеанс удаленной отладки (предполагается, что используется первый последовательный порт) такой командой:

    (kgdb) target remote /dev/cuaa0
        

Теперь на целевом хосте (тот, который перешел в DDB даже до начала процесса обнаружения устройств) наберите:

    Debugger("Boot flags requested debugger")
    Stopped at Debugger+0x35: movb  $0, edata+0x51bc
    db> gdb
        

DDB ответит следующим:

    Next trap will enter GDB remote protocol mode

Каждый раз, когда вы будете набирать gdb, режим будет меняться между удаленным GDB и локальным DDB. Чтобы немедленно вызвать следующее прерывание, просто наберите s (step). Ваш хостирующий GDB получит управление над целевым ядром:

    Remote debugging using /dev/cuaa0
    Debugger (msg=0xf01b0383 "Boot flags requested debugger")
        at ../../i386/i386/db_interface.c:257
    (kgdb)
        

Вы можете работать в этом сеансе точно также, как и в любом другом сеансе GDB, включая полный доступ к исходным текстам, запуск его в режиме gud-mode внутри окна Emacs (что дает вам автоматический вывод исходного кода в другом окне Emacs) и тому подобное.

Удаленный GDB также может использоваться для отладки модулей LKM. Сначала откомпилируйте LKM с отладочной информацией:

    # cd /usr/src/lkm/linux
    # make clean; make COPTS=-g
        

Затем установите эту версию модуля на целевой машине, загрузите его и воспользуйтесь командой modstat для определения того, куда он был загружен:

    # linux
    # modstat
    Type     Id Off Loadaddr Size Info     Rev Module Name
    EXEC      0   4 f5109000 001c f510f010   1 linux_mod
        

Возьмите адрес загрузки модуля и добавьте к нему 0x20 (для размера заголовка a.out). Получится адрес, куда был перемещен код модуля. Воспользуйтесь командой add-symbol-file в GDB для указания отладчику на модуль:

    (kgdb) add-symbol-file /usr/src/lkm/linux/linux_mod.o 0xf5109020
    add symbol table from file "/usr/src/lkm/linux/linux_mod.o" at
    text_addr = 0xf5109020? (y or n) y
    (kgdb)
        

Теперь вы имеете доступ ко всем символам в LKM.


Руководство FreeBSD
Prev Chapter 13. Отладка ядра Next

13.6. Отладка драйвера консоли

Так как для работы DDB вам требуется драйвер консоли, то в случае неисправностей самого драйвера консоли все становится гораздо сложнее. Вы можете вспомнить об использовании последовательной консоли (либо с исправленными загрузочными блоками, либо при указании флага -h в приглашении Boot:) и подключить обычный терминал к первому последовательному порту. DDB работает с любым отконфигурированным драйвером консоли, в том числе, конечно же, и с последовательной консолью.


Руководство FreeBSD
Prev Chapter 14. Работа с приложениями, написанными для Linux Next

14.5. Дополнительные сведения

Если Вы интересуетесь, как работает Linux эмуляция, эта секция для Вас. Большинство материала взято из электронного письма, адресованного Список рассылки посвященный беседам о FreeBSD by Terry Lambert (ID письма: <199906020108.SAA07001@usr09.primenet.com>).

14.5.1. Как все это устроено?

FreeBSD поддерживает абстракцию, называемую "загрузчик исполнимых классов", который фактически является первой стадией системного вызова execve(2).

На самом деле, FreeBSD имеет несколько загрузчиков вместо одного, который, в случае неудачи, выполняет программу как сценарий (скрипт).

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

Если файл не опознавался системой как исполнимый, execve(2) возвращал ошибку, и текущий командный интерпретатор начинал выполнять файл как скрипт.

Позднее, sh(1) был модифицирован, так, чтобы проверять первые два символа в файле, и если они оказывались :\n, то файл выполнялся как сценарий для csh(1) (утверждается, что SCO были первыми, кто сделал эту модификацию).

FreeBSD ведет себя по-другому: пробегает по списку загрузчиков, включая специальный #! загрузчик, который вызывает нужный интерпретатор или /bin/sh, если не нашел подходящего.

Формат исполняемого файла FreeBSD определяет по "магическому числу". На этой стадии пока не различается, для какой операционной системы предназначен файл (Linux, Solaris, или любой другой, использующей ELF-формат исполняемых файлов).

Далее, ELF-загрузчик определяет "марку" (специальный комментарий; отсутствует в исполняемых файлах SVR4/Solaris) исполняемого файла, то есть для какой операционной системы он предназначен.

Соответственно, Linux программы должны быть "маркированы" для Linux (например, с помощью утилиты brandelf(1)):

    # brandelf -t Linux file

Когда ELF-загрузчик находит "марку" Linux, он заменяет соответствующий указатель в структуре proc. Все системные вызовы индексируются через этот указатель (в традиционной UNIX системе, это массив sysent[], содержащий системные вызовы). Некоторые особые ситуации и системные вызовы обрабатываются специальным модулем ядра поддержки Linux.

Плюс ко всему, Linux эмулятор динамически "изменяет корень" файловой системы при поиске файлов (фактически делая то же самое, что и опция union при монтировании файловых систем (не путать с unionfs!)). Сперва, файл ищется в директории /compat/linux/original-path и только затем, в случае неудачи, в /original-path. Это дает возможность Linux программам выполнять FreeBSD команды, если не найдется соответствующих Linux команд. Например, скопировав FreeBSD uname(1) в каталог /compat/linux/bin/, можно "заставить" Linux программы сообщать, что они запускаются под FreeBSD.

На самом деле, ядра FreeBSD и Linux во многом похожи: системные операции, виртуальная память, система сигналов и сообщений, межпроцессное взаимодействие и прочее. Разница в том, что FreeBSD программы обращаются к системным вызовам FreeBSD, Linux программы соответственно к системным вызовам Linux. Во многих операционных системах прошлого адреса системных вызовов были зашиты в статический глобальный массив sysent[], вместо обращения по указателю в структуре proc, который инициализируется динамически, позволяя таким образом запускать программы, написанные для разных операционных систем.

В чем же разница между системными вызовами Linux и FreeBSD? Фактически никакой. Единственное различие (на данный момент, в будущем все может и, вероятно, изменится), пожалуй, в том, что функции системных вызовов FreeBSD зашиты в ядро, а для Linux они могут быть либо в ядре, либо в динамически загружаемом модуле.

Можно ли назвать это эмуляцией? Нет. Как таковой, эмулятор (или симулятор) отсутствует. В таком случае, почему же тогда говорят "Linux эмуляция"? Чтобы "насолить" FreeBSD?! 8-). На самом деле, это вопрос терминологии: не существовало слова, которое бы точнее описывало этот процесс. Нельзя сказать, что FreeBSD запускает приложения Linux (без перекомпиляции или загрузки соответствующего модуля ядра). Тогда и придумали термин "Linux эмуляция".


Руководство FreeBSD

Распространение и использование исходных (SGML DocBook) и 'скомпилированных' форм (SGML, HTML, PDF, PostScript, RTF и прочих) с модификацией или без оной, разрешены при соблюдении следующих соглашений:

  1. Распространяемые копии исходного кода (SGML DocBook) должны сохранять вышеупомянутые объявления copyright, этот список положений и сохранять следующий отказ от права в первых строках этого файла немодифицированным.

  2. Распространяемые копии скомпилированных форм (преобразование в другие DTD, конвертированные в PDF, PostScript, RTF и другие форматы) должны повторять вышеупомянутые объявления copyright, этот список положений и и следующий отказ в документации и/или других материалах, поставляемых с дистрибьюцией.

Important: ЭТА ДОКУМЕНТАЦИЯ ПОСТАВЛЯЕТСЯ ПРОЕКТОМ ДОКУМЕНТАЦИИ FREEBSD "КАК ЕСТЬ" И ЛЮБЫЕ ЯВНЫЕ ИЛИ НЕЯВНЫЕ ГАРАНТИИ, ВКЛЮЧАЯ, НО НЕ ОГРАНИЧИВАЯСЬ НЕЯВНЫМИ ГАРАНТИЯМИ, КОММЕРЧЕСКОЙ ЦЕННОСТИ И ПРИГОДНОСТИ ДЛЯ КОНКРЕТНОЙ ЦЕЛИ ОТРИЦАЮТСЯ. НИ В КОЕМ СЛУЧАЕ РЕГЕНТЫ ИЛИ УЧАСТНИКИ НЕ ДОЛЖНЫ БЫТЬ ОТВЕТСТВЕННЫМИ ЗА ЛЮБОЙ ПРЯМОЙ, КОСВЕННЫЙ, СЛУЧАЙНЫЙ, СПЕЦИАЛЬНЫЙ, ОБРАЗЦОВЫЙ ИЛИ ПОСЛЕДУЮЩИЙ УЩЕРБЫ (ВКЛЮЧАЯ, НО НЕ ОГРАНИЧИВАЯСЬ ПОСТАВКОЙ ТОВАРОВ ЗАМЕНЫ ИЛИ УСЛУГ; ПОТЕРЮ ДАННЫХ ИЛИ ИХ НЕПРАВИЛЬНУЮ ПЕРЕДАЧУ ИЛИ ПОТЕРИ; ПРИОСТАНОВЛЕНИЕ БИЗНЕСА), И ТЕМ НЕ МЕНЕЕ ВЫЗВАННЫЕ И В ЛЮБОЙ ТЕОРИИ ОТВЕТСТВЕННОСТИ, НЕЗАВИСИМО ОТ КОНТРАКТНОЙ, СТРОГОЙ ОТВЕТСТВЕННОСТИ, ИЛИ ПРАВОНАРУШЕНИИ (ВКЛЮЧАЯ ХАЛАТНОСТЬ ИЛИ ИНЫМ СПОСОБОМ), ВОЗНИКШЕМ ЛЮБЫМ ПУТЕМ ПРИ ИСПОЛЬЗОВАНИИ ЭТОГО ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ, ДАЖЕ ЕСЛИ БЫ БЫЛО СООБЩЕНО О ВОЗМОЖНОСТИ ТАКОГО УЩЕРБА.

FreeBSD is a registered trademark of Wind River Systems, Inc. This is expected to change soon.

3Com and HomeConnect are registered trademarks of 3Com Corporation.

3ware and Escalade are registered trademarks of 3ware Inc.

ARM is a registered trademark of ARM Limited.

Adaptec is a registered trademark of Adaptec, Inc.

Adobe, Acrobat, Acrobat Reader, and PostScript are either registered trademarks or trademarks of Adobe Systems Incorporated in the United States and/or other countries.

Apple, FireWire, Mac, Macintosh, Mac OS, Quicktime, and TrueType are trademarks of Apple Computer, Inc., registered in the United States and other countries.

Corel and WordPerfect are trademarks or registered trademarks of Corel Corporation and/or its subsidiaries in Canada, the United States and/or other countries.

Sound Blaster is a trademark of Creative Technology Ltd. in the United States and/or other countries.

Heidelberg, Helvetica, Palatino, and Times Roman are either registered trademarks or trademarks of Heidelberger Druckmaschinen AG in the U.S. and other countries.

IBM, AIX, EtherJet, Netfinity, OS/2, PowerPC, PS/2, S/390, and ThinkPad are trademarks of International Business Machines Corporation in the United States, other countries, or both.

IEEE, POSIX, and 802 are registered trademarks of Institute of Electrical and Electronics Engineers, Inc. in the United States.

Intel, Celeron, EtherExpress, i386, i486, Itanium, Pentium, and Xeon are trademarks or registered trademarks of Intel Corporation or its subsidiaries in the United States and other countries.

Intuit and Quicken are registered trademarks and/or registered service marks of Intuit Inc., or one of its subsidiaries, in the United States and other countries.

Linux is a registered trademark of Linus Torvalds in the United States.

LSI Logic, AcceleRAID, eXtremeRAID, MegaRAID and Mylex are trademarks or registered trademarks of LSI Logic Corp.

M-Systems and DiskOnChip are trademarks or registered trademarks of M-Systems Flash Disk Pioneers, Ltd.

Macromedia, Flash, and Shockwave are trademarks or registered trademarks of Macromedia, Inc. in the United States and/or other countries.

Microsoft, FrontPage, MS-DOS, Outlook, Windows, Windows Media, and Windows NT are either registered trademarks or trademarks of Microsoft Corporation in the United States and/or other countries.

Netscape and the Netscape Navigator are registered trademarks of Netscape Communications Corporation in the U.S. and other countries.

Motif, OSF/1, and UNIX are registered trademarks and IT DialTone and The Open Group are trademarks of The Open Group in the United States and other countries.

Oracle is a registered trademark of Oracle Corporation.

PowerQuest and PartitionMagic are registered trademarks of PowerQuest Corporation in the United States and/or other countries.

RealNetworks, RealPlayer, and RealAudio are the registered trademarks of RealNetworks, Inc.

Red Hat, RPM, are trademarks or registered trademarks of Red Hat, Inc. in the United States and other countries.

SAP, R/3, and mySAP are trademarks or registered trademarks of SAP AG in Germany and in several other countries all over the world.

Sun, Sun Microsystems, Java, Java Virtual Machine, JavaServer Pages, JDK, JSP, JVM, Netra, Solaris, StarOffice, Sun Blade, Sun Enterprise, Sun Fire, SunOS, and Ultra are trademarks or registered trademarks of Sun Microsystems, Inc. in the United States and other countries.

Symantec and Ghost are registered trademarks of Symantec Corporation in the United States and other countries.

MATLAB is a registered trademark of The MathWorks, Inc.

SpeedTouch is a trademark of Thomson

U.S. Robotics and Sportster are registered trademarks of U.S. Robotics Corporation.

VMware is a trademark of VMware, Inc.

Waterloo Maple and Maple are trademarks or registered trademarks of Waterloo Maple Inc.

Mathematica is a registered trademark of Wolfram Research, Inc.

XFree86 is a trademark of The XFree86 Project, Inc.

Ogg Vorbis and Xiph.Org are trademarks of Xiph.Org.

Many of the designations used by manufacturers and sellers to distinguish their products are claimed as trademarks. Where those designations appear in this document, and the FreeBSD Project was aware of the trademark claim, the designations have been followed by the ``™'' or the ``®'' symbol.

Этот, и другие документы, могут быть скачаны с ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

По вопросам связанными с FreeBSD, прочитайте документацию прежде чем писать в <questions@FreeBSD.org>.
По вопросам связанным с этой документацией, пишите <doc@FreeBSD.org>.
По вопросам связанным с русским переводом документации, пишите <frdp@FreeBSD.org.ua>.


Руководство FreeBSDPrevChapter 6 Настройка и оптимизацияNext

6.15 Управление питанием и ресурсами

Написал Hiten Pandya and Tom Rhodes.

Очень важно использовать аппаратные ресурсы эффективно. До того, как появился ACPI, управление потреблением питания и температурными характеристиками системы было очень сложной для операционной системы задачей. Аппаратное обеспечение контролировалось одним из видов встроенного интерфейса BIOS, таким как: Plug and Play BIOS (PNPBIOS), Advanced Power Management (APM) и так далее. Управление питанием и ресурсами это один из ключевых компонентов современной операционной системы. Например, вам может потребоваться, чтобы операционная система следила за температурными ограничениями и возможно, предупреждала при неожиданном росте температуры.

В этом разделе Руководства FreeBSD, мы предоставим исчерпывающую информацию о ACPI. В конце раздела есть ссылки для дальнейшего чтения. Учтите, что ACPI есть только в FreeBSD 5.X и выше в качестве стандартного модуля ядра. В FreeBSD 4.9 ACPI можно включить добавлением строки device acpi к файлу настройки ядра и его пересборкой.

6.15.1 Что такое ACPI?

Advanced Configuration and Power Interface (ACPI) это стандарт, написанный объединением поставщиков в целях предоставления стандартного интерфейса для аппаратных ресурсов и управления питанием (отсюда и название). Это ключевой элемент Operating System-directed configuration and Power Management, т.е.: он предоставляет операционной системе (OS) больше контроля и более универсален. Современные системы вышли за пределы ограничений существующих Plug and Play интерфейсов (таких как APM, использовавшийся в FreeBSD 4.X), до появления ACPI. ACPI это прямой наследник APM (Advanced Power Management).

6.15.2 Недостатки Advanced Power Management (APM)

Средства Advanced Power Management (APM) управляют энергопотреблением системы в зависимости от нагрузки. APM BIOS предоставляется поставщиком системы и специфичен для данной аппаратной платформы. Драйвер APM в OS обеспечивает доступ к APM Software Interface, который позволяет управлять уровнями потребления питания.

В APM имеется четыре основных проблемы. Во-первых, управление энергопотреблением осуществляется через зависимый от поставщика BIOS, и OS ничего не знает нем. Один пример: когда пользователь устанавливает время ожидания для жесткого диска в APM BIOS, и это время истекает, BIOS останавливает жесткий диск без согласования с OS. Во-вторых, алгоритм APM встроен в BIOS, и все действия происходят вне контроля OS. Это означает, что пользователи могут решить проблемы с APM BIOS только путем перепрошивки его ROM; это очень опасная процедура, и если она завершится неудачно, система может прийти в невосстановимое состояние. В-третьих, реализация технологии APM зависит от поставщика, что означает дублирование усилий и если в BIOS одного из поставщиков будет найдена и исправлена ошибка, ее могли не исправить другие поставщики. Наконец, объем APM BIOS недостаточно велик для реализации сложной политики управления питанием, или такой политики, которая может хорошо адаптироваться к потребностям компьютера.

Plug and Play BIOS (PNPBIOS) был неудобен во многих ситуациях. PNPBIOS это 16-битная технология, поэтому OS требовалось использовать 16-битную эмуляцию для ``взаимодействия'' с методами PNPBIOS.

FreeBSD драйвер APM документирован в странице справочника apm(4).

6.15.3 Настройка ACPI

loader(8) загружает драйвер acpi.ko по умолчанию, его не надо встраивать в ядро. Причина в том, что с модулями проще работать, например переключиться на другой acpi.ko без пересборки ядра. Преимущество в упрощении тестирования. Другая причина в том, что запуск ACPI после старта системы не очень полезен и при некоторых условиях может приводить к краху. Если вы сомневаетесь, отключите ACPI совсем. Драйвер не должен и не может быть выгружен, поскольку системная шина используется для различных взаимодействий оборудования. ACPI может быть выключен с помощью утилиты acpiconf(8). Фактически большинство взаимодействий с ACPI может быть выполнено через acpiconf(8). В основном это означает, что если в выводе dmesg(8) есть что-то об ACPI, он скорее всего работает.

Note: ACPI и APM не могут сосуществовать и должны использоваться раздельно. Каждый из них прервет загрузку, если обнаружит загруженный драйвер другого.

В простейшей форме, ACPI может использоваться для перевода системы в спящий режим с помощью acpiconf(8), с флагом -s и параметром 1-5. Большинству пользователей нужен только параметр 1. Параметр 5 сделает ``мягкое'' завершение работы, так же как и:

# halt -p

Доступны и другие параметры. Обратитесь к странице справочника acpiconf(8) за дополнительной информацией.

6.15.4 Отладка и отключение ACPI

Почти все в ACPI прозрачно, пока не начинаются проблемы. Это обычно случается, когда пользователь узнает, что что-то работает неправильно. Драйвер acpi(4) поддерживает много параметров отладки, можно даже выборочно отключить некоторые части системы ACPI. За более подробной информацией о средствах отладки обратитесь к странице справочника acpi(4).

Иногда по различным причинам необходимо выгрузить модуль acpi.ko. Это можно сделать только во время загрузки через loader(8). Вы можете набирать unset acpi_load в приглашении loader(8) при каждом старте системы, или отменить автозагрузку драйвера acpi(4), добавив в /boot/loader.conf следующую строку:

exec="unset acpi_load"

FreeBSD 5.1-RELEASE и более новые поставляются с меню, управляющим загрузкой FreeBSD. Один из предоставляемых параметров, это отключение ACPI. Для отключения ACPI просто выберите в меню 2. Boot FreeBSD with ACPI disabled.

Этот, и другие документы, могут быть скачаны с ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

По вопросам связанными с FreeBSD, прочитайте документацию прежде чем писать в <questions@FreeBSD.org>.
По вопросам связанным с этой документацией, пишите <doc@FreeBSD.org>.
По вопросам связанным с русским переводом документации, пишите <frdp@FreeBSD.org.ua>.


Руководство FreeBSDPrevChapter 6 Настройка и оптимизацияNext

6.14 Увеличение объема подкачки

Вне зависимости от того, что вы планировали, иногда система ведет себя неожиданно. Если вам потребовался дополнительный объем подкачки, его довольно просто добавить. Есть три способа увеличения объема подкачки: добавить новый жесткий диск, включить подкачку по NFS, или создать файл подкачки на существующем разделе.

6.14.1 Подкачка на новом жестком диске

Лучший способ добавить подкачку, конечно, использовать еще один жесткий диск. Вы можете сделать это в любой момент. Если такой способ подходит, прочтите еще раз информацию по разделу подкачки из раздела Руководства по первоначальной настройке, где рассказывается о наилучшем способе организации раздела подкачки.

6.14.2 Подкачка через NFS

Подкачка через NFS рекомендуется только в том случае, если в системе отсутствует жесткий диск. Подкачка через NFS медленна и неэффективна в версиях FreeBSD до 4.X. Она довольно быстра и эффективна в 4.0-RELEASE и выше. Но даже в новых версиях FreeBSD, подкачка через NFS ограничена скоростью сетевого подключения и к тому же дополнительно нагружает NFS сервер.

6.14.3 Файлы подкачки

Вы можете создать файл определенного размера и использовать его как файл подкачки. В нашем примере будет использован файл /usr/swap0 размером 64MB. Конечно, вы можете использовать любое имя.

Example 6-1. Создание файла подкачки в FreeBSD 4.X

  1. Убедитесь, что ядре включен драйвер vnode. Он невключен в последних версиях GENERIC.

    pseudo-device   vn 1   #Vnode driver (turns a file into a device)
  2. Создайте устройство vn:

    # cd /dev
    # sh MAKEDEV vn0
  3. Создайте файл подкачки (/usr/swap0):

    # dd if=/dev/zero of=/usr/swap0 bs=1024k count=64
  4. Установите подходящие права на (/usr/swap0):

    # chmod 0600 /usr/swap0
  5. Включите файл подкачки в /etc/rc.conf:

    swapfile="/usr/swap0"   # Set to name of swapfile if aux swapfile desired.
  6. Перегрузите компьютер, или для включения подкачки прямо сейчас выполните:

    # vnconfig -e /dev/vn0b /usr/swap0 swap

Example 6-2. Создание файла подкачки в FreeBSD 5.X

  1. Убедитесь, что в файле настройки ядра присутствует драйвер виртуального диска (md(4)). Он есть в ядре GENERIC.

    device   md   # Memory "disks"
  2. Создайте файл подкачки (/usr/swap0):

    # dd if=/dev/zero of=/usr/swap0 bs=1024k count=64
  3. Установите подходящие права на (/usr/swap0):

    # chmod 0600 /usr/swap0
  4. Включите файл подкачки в /etc/rc.conf:

    swapfile="/usr/swap0"   # Set to name of swapfile if aux swapfile desired.
  5. Перегрузите компьютер или для включения подкачки прямо сейчас введите:

    # mdconfig -a -t vnode -f /usr/swap0 -u 0 && swapon /dev/md0

Этот, и другие документы, могут быть скачаны с ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

По вопросам связанными с FreeBSD, прочитайте документацию прежде чем писать в <questions@FreeBSD.org>.
По вопросам связанным с этой документацией, пишите <doc@FreeBSD.org>.
По вопросам связанным с русским переводом документации, пишите <frdp@FreeBSD.org.ua>.


Руководство FreeBSDPrevNext

III. Приложения

Этот, и другие документы, могут быть скачаны с ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

По вопросам связанными с FreeBSD, прочитайте документацию прежде чем писать в <questions@FreeBSD.org>.
По вопросам связанным с этой документацией, пишите <doc@FreeBSD.org>.
По вопросам связанным с русским переводом документации, пишите <frdp@FreeBSD.org.ua>.


Руководство FreeBSDPrevChapter 12 Устройства храненияNext

12.9 Основы технологии резервного копирования

Тремя основными программами резервного копирования являются dump(8), tar(1) и cpio(1).

12.9.1 Dump и Restore

Для UNIX® традиционными программами резервного копирования являются dump и restore. Они работают с приводом как с набором дисковых блоков, которые расположены ниже понятий файлов, связей и каталогов, создаваемых файловыми системами. Программа dump выполняет резервное копирование всей файловой системы, располагающейся на устройстве. Невозможно выполнить резервное копирование части файловой системы или дерева каталогов, которые располагаются более чем в одной файловой системе. Утилита dump не записывает на ленту файлы и каталоги, она записывает блоки данных, из которых строятся файлы и каталоги.

Note: Если вы используете программу dump для работы с корневым каталогом, при этом не будет выполняться резервное копирование /home, /usr и многих других каталогов, так как они обычно являются точками монтирования других файловых систем или символическими ссылками на эти файловые системы.

В программе dump имеются некоторые неудобства, оставшиеся от её ранних дней в составе Version 6 операционной системы AT&T UNIX (примерно 1975). Параметры, используемые по умолчанию, подходят для 9-дорожечных лент (6250 bpi), но не для современных носителей с высокой плотностью записи информации (до 62,182 ftpi). Для использования ёмкостей нынешних накопителей на магнитной ленте эти параметры могут быть заданы в командной строке.

При помощи rdump и rrestore возможно резервное копирование данных по сети на накопитель, подключенный к другому компьютеру. Обе программы используют в работе rcmd(3) и ruserok(3) для доступа к накопителю на магнитной ленте на удалённом компьютере. Поэтому пользователь, выполняющий резервное копирование, должен быть указан в файле .rhosts на удалённом компьютере. Аргументы для rdump и rrestore должны подходить для использования на другом компьютере. При выполнении копирования по команде rdump на компьютере с FreeBSD на накопитель Exabyte, подключенный к машине Sun по имени komodo, используйте такую команду:

# /sbin/rdump 0dsbfu 54000 13000 126 komodo:/dev/nsa8 /dev/da0a 2>&1

Будьте осторожны: есть проблемы с обеспечением безопасности при аутентификации посредством .rhosts. Внимательно рассмотрите вашу ситуацию.

Программы dump и restore можно использовать в более защищённом режиме посредством ssh.

Example 12-1. Использование dump через ssh

# /sbin/dump -0uan -f - /usr | gzip -2 | ssh1 -c blowfish \
targetuser@targetmachine.example.com dd of=/mybigfiles/dump-usr-l0.gz

Либо воспользуйтесь встроенной в dump возможностью, задав переменную окружения RSH:

Example 12-2. Использование dump при работе через ssh с заданием RSH

# RSH=/usr/bin/ssh /sbin/dump -0uan -f targetuser@targetmachine.example.com:/dev/sa0

12.9.2 tar

Утилита tar(1) также восходит корнями к Version 6 системы AT&T UNIX (около 1975). tar работает с файловой системой; tar записывает на ленту файлы и каталоги. tar поддерживает не полный набор опций, имеющихся в cpio(1), однако он не требует необычного перенаправления в командной строке, которое используется в утилите cpio.

В большинстве версий tar создание резервных копий по сети не поддерживается. Версия GNU утилиты tar, которая используется во FreeBSD, поддерживает удалённые устройства в том же самом синтаксисе, что и rdump. Чтобы скопировать данные на накопитель Exabyte, подключенный к машине Sun по имени komodo, используйте такую команду:

# /usr/bin/tar cf komodo:/dev/nsa8 . 2>&1

В случае использования версий без поддержки удалённых устройств, вы можете воспользоваться перенаправлением вывода и командой rsh для посылки данных на удалённый ленточный накопитель.

# tar cf - . | rsh hostname dd of=tape-device obs=20b

Если вы беспокоитесь о безопасности создания резервных копий по сети, то вместо rsh вам нужно использовать ssh.

12.9.3 cpio

cpio(1) является оригинальной программой UNIX для обмена файлами на магнитных носителях. В утилите cpio имеются опции (кроме всего прочего), позволяющие выполнять изменение порядка следования байтов, поддерживающие различные форматы архивов и выполняющие перенаправление данных другим программам. Последняя возможность делает cpio прекрасным выбором для целей установки. cpio не знает о том, как работать с каталогами, список файлов должен даваться через stdin.

cpio не поддерживает создание резервных копий по сети. Вы можете воспользоваться перенаправлением вывода и программой rsh для посылки данных на удалённый накопитель.

# for f in directory_list; do
find $f >> backup.list
done
# cpio -v -o --format=newc < backup.list | ssh user@host "cat > backup_device"

Где directory_list это список директорий, c которых Вы хотите создать резервные копии, user@host это комбинация пользователь/хост которая описывает того кто занимается резервированием, и backup_device это устройство куда копии должны быть записаны (например, /dev/nsa0).

12.9.4 pax

pax(1) является ответом IEEE/POSIX® на утилиты tar и cpio. В течение многих лет различные версии программ tar и cpio получались не совсем совместимыми. Так что вместо того, чтобы попытаться полностью их стандартизировать, POSIX создал новую утилиту для работы с архивами. pax пытается читать и писать различные форматы cpio и tar, и, кроме того, свои собственные новые форматы. Набор команд этой утилиты больше напоминает cpio, чем tar.

12.9.5 Amanda

Amanda (Advanced Maryland Network Disk Archiver) является целой клиент/серверной системой резервного копирования, а не отдельной программой. Сервер Amanda сможет осуществлять резервное копирование на единственный накопитель любого количества компьютеров, на которых имеется клиент Amanda и которые могут связываться по сети с сервером Amanda. Общей проблемой систем с большим количеством больших дисков является то, что время, требуемое для непосредственной записи данных на ленту, превышает лимит времени, выделенный на эту задачу. Amanda решает эту проблему. Amanda может использовать ``промежуточный диск'' для резервного копирования нескольких файловых систем одновременно. Amanda создаёт ``наборы архивов'': группа лент, используемых в некоторый период времени для создания полных копий всех файловых систем, перечисленных в конфигурационном файле системы Amanda. ``Архивный набор'' содержит также создаваемый каждую ночь инкрементальные (или дифференциальные) резервные копии всех файловых систем. Восстановление повреждённой файловой системы требует наличия самой последней полной копии и инкрементальных резервных копий.

Конфигурационный файл даёт прекрасный механизм для управления процессом резервного копирования и объёмом трафика, генерируемого системой Amanda. Amanda сможет использовать любую из перечисленных выше программ для записи данных на ленту. Amanda имеется в виде как порта, так и пакаджа, и по умолчанию она не установлена.

12.9.6 Не делать ничего

``Не делать ничего'' - это не программа для компьютера, и в то же время это наиболее широко используемая стратегия резервного копирования. Здесь нет никаких первоначальных затрат. Здесь нет расписания, которому нужно следовать. Просто скажите нет. Если что-то случится с вашими данными, улыбнитесь и забудьте о них!

Если ваше время и данные практически ничего не стоят, то ``не делать ничего'' является самой подходящей программой для вашего компьютера. Но будьте осторожны, POSIX является весьма полезным инструментом, и через полгода вы можете обнаружить, что у вас есть набор файлов, представляющих для вас определенную ценность.

``Ничего не делать'' является правильным методом резервного копирования для /usr/obj и других деревьев каталогов, которые могут быть в точности перегенерированы вашим компьютером. Примером являются файлы, представляющие страницы этого Руководства в форматах HTML или PostScript®. Они генерируются из входных файлов в формате SGML. Создавать резервные копии файлов в форматах HTML и PostScript не нужно. Исходные файлы в формате SGML копируются регулярно.

12.9.7 Какая программа резервного копирования самая лучшая?

dump(8) Точка. Elizabeth D. Zwicky протестировала все программы резервного копирования, обсуждаемые здесь. Беспроигрышным вариантом для сохранения всех ваших данных и особенностей файловых систем UNIX является dump. Элизабет создала файловые системы, содержащие большое количество необычных элементов (и некоторых не так уж необычных) и тестировала каждую из программ, выполняя резервное копирование и последующее восстановление этих файловых систем. В число необычных элементов входили: файлы с дырами, файлы с дырами и блоком пустого места, файлы с необычными символами в их именах, нечитаемые и незаписываемые файлы, устройства, меняющие свой размер во время резервного копирования, файлы, создаваемые и удаляемые во время копирования и тому подобное. Она представила результаты на конференции LISA V в октябре 1991 года. Посмотрите ссылку на сайте torture-testing Backup and Archive Programs.

12.9.8 Процедура восстановления при сбое

12.9.8.1 До того, как случится катастрофа

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

Во-первых, распечатайте разметку диска для всех ваших дисков (к примеру, disklabel da0 | lpr), таблицу файловых систем (/etc/fstab) и все сообщения, выводимые при загрузке, каждого по два экземпляра.

Во-вторых, определите, все ли устройства присутствуют на загрузочной и аварийной дискетах (boot.flp и fixit.flp). Самым простым способом проверки является перезагрузка вашей машины с загрузочной дискетой, вставленной в дисковод и последующая проверка сообщений при загрузке. Если все имеющиеся у вас устройства здесь будут перечислены и будут работоспособны, перейдите к третьему шагу.

В противном случае вам необходимо будет создать две особым образом сформированные загрузочные дискеты, на которых помещено ядро, могущее смонтировать все ваши диски и получить доступ к вашему стримеру. На этих дискетах должны быть: fdisk, disklabel, newfs, mount и какая-либо используемая вами программа резервного копирования. Эти программы должны быть скомпонованы статически. Если вы используете dump, то на дискете должна присутствовать и программа restore.

В-третьих, регулярно создавайте резервные копии на ленте. Любые изменения, которые вы делали после последнего резервного копирования, могут быть безвозвратно потеряны. На лентах включайте защиту от записи.

В-четвертых, проверяйте работу дискет (либо boot.flp и fixit.flp, либо двух дискет, которые вы сделали при выполнении второго шага) и лент с резервными копиями. Ведите журнал выполняемых действий. Храните эти записи вместе с загрузочной дискетой, распечатками и лентами. Вы просто обезумеете при восстановлении данных, если окажется, что записи могли бы избежать разрушения ваших резервных копий (Каким образом? Вместо команды tar xvf /dev/sa0 вы могли случайно набрать tar cvf /dev/sa0 и тем самым перезаписать вашу резервную копию).

Для дополнительной страховки, каждый раз создавайте загрузочные дискеты и две резервные копии на ленте. Храните одну из копий в каком-то удаленном месте и НЕ в том же здании, где находится ваш офис. Достаточно большое количество компаний во Всемирном Торговом Центре изучило это на своей шкуре. Это удаленное хранилище должно быть физически отделено на большое расстояние от ваших компьютеров и дисковых устройств.

Example 12-3. Скрипт для создания загрузочной дискеты

#!/bin/sh
#
# create a restore floppy
#
# format the floppy
#
PATH=/bin:/sbin:/usr/sbin:/usr/bin

fdformat -q fd0
if [ $? -ne 0 ]
then
	 echo "Bad floppy, please use a new one"
	 exit 1
fi

# place boot blocks on the floppy
#
disklabel -w -B /dev/fd0c fd1440

#
# newfs the one and only partition
#
newfs -t 2 -u 18 -l 1 -c 40 -i 5120 -m 5 -o space /dev/fd0a

#
# mount the new floppy
#
mount /dev/fd0a /mnt

#
# create required directories
#
mkdir /mnt/dev
mkdir /mnt/bin
mkdir /mnt/sbin
mkdir /mnt/etc
mkdir /mnt/root
mkdir /mnt/mnt			# for the root partition
mkdir /mnt/tmp
mkdir /mnt/var

#
# populate the directories
#
if [ ! -x /sys/compile/MINI/kernel ]
then
	 cat << EOM
The MINI kernel does not exist, please create one.
Here is an example config file:
#
# MINI -- A kernel to get FreeBSD onto a disk.
#
machine		"i386"
cpu		"I486_CPU"
ident		MINI
maxusers	5

options 	INET			# needed for _tcp _icmpstat _ipstat
					#            _udpstat _tcpstat _udb
options 	FFS			#Berkeley Fast File System
options 	FAT_CURSOR		#block cursor in syscons or pccons
options 	SCSI_DELAY=15		#Be pessimistic about Joe SCSI device
options 	NCONS=2		 	#1 virtual consoles
options 	USERCONFIG		#Allow user configuration with -c XXX

config		kernel	root on da0 swap on da0 and da1 dumps on da0

device		isa0
device		pci0

device		fdc0	at isa? port "IO_FD1" bio irq 6 drq 2 vector fdintr
device		fd0	at fdc0 drive 0

device		ncr0

device		scbus0

device		sc0	at isa? port "IO_KBD" tty irq 1 vector scintr
device		npx0	at isa? port "IO_NPX" irq 13 vector npxintr

device		da0
device		da1
device		da2

device		sa0

pseudo-device	loop		# required by INET
pseudo-device	gzip		# Exec gzipped a.out's
EOM
	 exit 1
fi

cp -f /sys/compile/MINI/kernel /mnt

gzip -c -best /sbin/init > /mnt/sbin/init
gzip -c -best /sbin/fsck > /mnt/sbin/fsck
gzip -c -best /sbin/mount > /mnt/sbin/mount
gzip -c -best /sbin/halt > /mnt/sbin/halt
gzip -c -best /sbin/restore > /mnt/sbin/restore

gzip -c -best /bin/sh > /mnt/bin/sh
gzip -c -best /bin/sync > /mnt/bin/sync

cp /root/.profile /mnt/root

cp -f /dev/MAKEDEV /mnt/dev
chmod 755 /mnt/dev/MAKEDEV

chmod 500 /mnt/sbin/init
chmod 555 /mnt/sbin/fsck /mnt/sbin/mount /mnt/sbin/halt
chmod 555 /mnt/bin/sh /mnt/bin/sync
chmod 6555 /mnt/sbin/restore

#
# create the devices nodes
#
cd /mnt/dev
./MAKEDEV std
./MAKEDEV da0
./MAKEDEV da1
./MAKEDEV da2
./MAKEDEV sa0
./MAKEDEV pty0
cd /

#
# create minimum filesystem table
#
cat > /mnt/etc/fstab <<EOM
/dev/fd0a    /    ufs    rw  1  1
EOM

#
# create minimum passwd file
#
cat > /mnt/etc/passwd <<EOM
root:*:0:0:Charlie &:/root:/bin/sh
EOM

cat > /mnt/etc/master.passwd <<EOM
root::0:0::0:0:Charlie &:/root:/bin/sh
EOM

chmod 600 /mnt/etc/master.passwd
chmod 644 /mnt/etc/passwd
/usr/sbin/pwd_mkdb -d/mnt/etc /mnt/etc/master.passwd

#
# umount the floppy and inform the user
#
/sbin/umount /mnt
echo "The floppy has been unmounted and is now ready."

12.9.8.2 После сбоя

Главный вопрос: выжило ли ваше оборудование? Вы регулярно делали резервные копии, так что нет нужды беспокоиться о программном обеспечении.

Если оборудование было повреждено, должны быть заменены неисправные компоненты.

Если с оборудованием все в порядке, проверьте ваши дискеты. При использовании самостоятельно созданной загрузочной дискеты, загрузитесь в однопользовательском режиме (набрав -s в приглашении boot:). Пропустите следующий абзац.

Если вы используете дискеты boot.flp и fixit.flp, читайте дальше. Вставьте дискету boot.flp в первый дисковод и загрузите компьютер. На экран будет выведено оригинальное меню установки. Выберите пункт Fixit--Repair mode with CDROM or floppy. После вывода приглашения вставьте fixit.flp. restore и другие нужные вам программы находятся в /mnt2/stand.

Восстановите по отдельности каждую файловую систему.

Попробуйте выполнить команду mount (например, mount /dev/da0a /mnt) по отношению к корневому разделу вашего первого диска. Если метка диска была испорчена, то воспользуйтесь командой disklabel для переразбиения на разделы и разметки диска так, чтобы получившаяся метка совпала с той, которая вами была распечатана и сохранена. Для повторного создания файловых систем используйте утилиту newfs. Повторно смонтируйте корневой раздел дискеты в режиме чтения-записи (mount -u -o rw /mnt). Воспользуйтесь вашей программой резервного копирования и резервными копиями на лентах для восстановления данных для этой файловой системы (например. restore vrf /dev/sa0). Размонтируйте файловую систему (например, umount /mnt). Повторите эту процедуру для каждой файловой системы, которая была повреждена.

Как только ваша система заработает, сделайте резервную копию на новые ленты. Что бы ни вызвало сбой или потерю данных, это может случиться снова. Ещё один час, потраченный в этот момент, может спасти вас от неприятностей в будущем.

Этот, и другие документы, могут быть скачаны с ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

По вопросам связанными с FreeBSD, прочитайте документацию прежде чем писать в <questions@FreeBSD.org>.
По вопросам связанным с этой документацией, пишите <doc@FreeBSD.org>.
По вопросам связанным с русским переводом документации, пишите <frdp@FreeBSD.org.ua>.


Руководство FreeBSDPrevChapter 3 Основы UNIXNext

3.8 Демоны, сигналы, уничтожение процессов

Если вы запускаете редактор, им можно легко управлять, открывать в нем файлы и т.д. Вы можете делать это, поскольку редактор предоставляет такие возможности и потому, что редактор присоединен к терминалу. Некоторые программы разработаны без поддержки интерфейса пользователя, поэтому они отсоединяются от терминала при первой возможности. Например, веб-сервер целый день отвечает на запросы из сети, и ему как правило не требуется ваше вмешательство. Программы, передающие почту от сервера к серверу -- другой пример приложений этого класса.

Мы называем эти программы демонами. Демоны это персонажи греческой мифологии; хорошие или плохие, они были спутниками человека и, вообще говоря, выполняли полезную работу для людей. Почти как веб- и почтовые серверы выполняют полезную работу сегодня. Это причина, по которой талисманом BSD долгое время является веселый демон в тапочках и с вилами.

Есть соглашение, по которому имя программы, которая обычно запускается как демон, заканчивается на ``d''. BIND это Berkeley Internet Name Daemon (выполняемая программа называется named), программа веб сервера Apache называется httpd, демон очереди печати это lpd и так далее. Это соглашение, а не жесткое правило; например, главный почтовый демон для Sendmail называется sendmail, а не maild, как вы могли бы предположить.

Иногда может потребоваться взаимодействие с процессом демона. Эти можно сделать с помощью сигналов, т.е. взаимодействовать с демонами (или с любыми запущенными процессами), посылая им сигнал. Есть множество различных сигналов -- некоторые из них имеют специальное значение, другие обрабатываются приложением, реакция которого на эти сигналы должна быть описана в документации. Вы можете посылать сигналы только тем процессам, владельцем которых являетесь. Если вы отправите сигнал какому-то другому процессу с помощью kill(1) или kill(2), доступ будет запрещен. Исключением из правил является пользователь root, который может отправлять сигналы любому процессу.

В некоторых случаях FreeBSD тоже посылает сигналы приложениям. Если приложение плохо написано и пробует обратиться к области памяти, к которой оно не должно обращаться, FreeBSD посылает процессу сигнал нарушение сегментации (SIGSEGV). Если приложение использует системный вызов alarm(3), чтобы получить уведомление по истечении определенного периода времени, будет отправлен сигнал Alarm (SIGALRM) и т.д.

Два сигнала могут быть использованы для завершения процесса, SIGTERM и SIGKILL. SIGTERM это корректный способ завершить процесс; процесс может поймать сигнал, определить, что его хотят завершить, закрыть любые файлы, которые он мог открыть, и закончить то, что он делал в момент перед закрытием. В некоторых случаях процесс может даже игнорировать SIGTERM, если выполняет задачу, которая не может быть прервана.

SIGKILL не может быть проигнорирован процессом. Этот сигнал говорит ``Меня не волнует что ты делаешь -- остановись немедленно''. Если вы посылаете процессу SIGKILL, FreeBSD сразу же остановит этот процесс[1].

Другие сигналы, которые возможно вам понадобятся, SIGHUP, SIGUSR1, и SIGUSR2. Это сигналы общего назначения, различные приложения могут по-разному реагировать на них.

Предположим, что вы изменили файл конфигурации веб сервера -- теперь нужно указать ему перечитать конфигурацию. Можно остановить и запустить httpd, но это приведет к кратковременной остановке сервера, которая может быть нежелательна. Большинство демонов написаны так, чтобы при получении сигнала SIGHUP перечитывать файлы конфигурации. Поэтому вместо уничтожения и запуска httpd можно послать сигнал SIGHUP. Поскольку нет стандартного способа реагирования на этот сигнал, различные демоны будут вести себя по разному; прочитайте документацию на демон по этому вопросу.

Сигналы посылаются с помощью команды kill(1), как показано в этом примере.

Отправка сигнала процессу

Этот пример показывает как послать сигнал inetd(8). Файл конфигурации inetd /etc/inetd.conf, inetd перечитает этот файл, если ему отправить сигнал SIGHUP.

  1. Нужно определить PID процесса, которому вы хотите отправить сигнал. Сделайте это с помощью ps(1) и grep(1). Команда grep(1) используется для поиска по заданной строке в выходном потоке. Эта команда запускается под обычным пользователем, а inetd(8) под root, поэтому ps(1) должна быть запущена с параметром ax.

    % ps -ax | grep inetd
      198  ??  IWs    0:00.00 inetd -wW

    Итак, PID inetd(8) 198. В некоторых случаях в выводе команды может также появиться grep inetd. Это из-за способа, которым ps(1) получает список запущенных процессов.

  2. Используйте kill(1) для отправки сигнала. Поскольку inetd(8) запускается из под root, нужно сначала использовать su(1) для получения прав root.

    % su
    Password:
    # /bin/kill -s HUP 198

    Как и большинство команд UNIX®, kill(1) ничего не выведет, если отработает нормально. Если вы посылаете сигнал процессу, которым не владеете, на экране появится ``kill: PID: Operation not permitted''. При неправильно набранном PID вы или отправите сигнал другому процессу, что может привести к неприятностям, или, если повезет, сигнал будет отправлен на PID, который в данный момент не используется -- на экране появится ``kill: PID: No such process''.

    Зачем использовать /bin/kill?: Во многих оболочках команда kill встроена; таким образом, оболочка вместо вызова /bin/kill сама посылает сигнал. Это может быть очень полезно, но в разных оболочках имя сигнала указывается по-разному. Чем пытаться выучить их все, гораздо проще использовать /bin/kill ... непосредственно.

Отправка других сигналов очень похожа, просто замените TERM или KILL в командной строке на имя другого сигнала.

Important: Уничтожение процессов наугад может быть плохой идеей. В частности, init(8), чей PID 1, имеет особое значение. Выполнение /bin/kill -s KILL 1 -- быстрый способ перегрузить систему. Всегда дважды проверяйте параметры запуска kill(1) перед тем, как нажать Enter.

Notes

[1]

Не совсем верно -- есть несколько действий, которые не могут быть прерваны. Например, если процесс пытается прочитать файл на другом компьютере в сети, и другой компьютер по какой-то причине не отвечает (был выключен, или в сети произошла ошибка), процесс находится в так называемом ``непрерываемом состоянии''. В конце концов время ожидания закончится, обычно это происходит через две минуты. Как только время закончится, процесс будет уничтожен.

Этот, и другие документы, могут быть скачаны с ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

По вопросам связанными с FreeBSD, прочитайте документацию прежде чем писать в <questions@FreeBSD.org>.
По вопросам связанным с этой документацией, пишите <doc@FreeBSD.org>.
По вопросам связанным с русским переводом документации, пишите <frdp@FreeBSD.org.ua>.


Руководство FreeBSDPrevChapter 3 Основы UNIXNext

3.11 Устройства и файлы устройств

Термин ``устройство'' используется в основном по отношению к аппаратному обеспечению системы, такому как диски, принтеры, графические адаптеры, устройства ввода текста. При загрузке FreeBSD главным образом выводит на экран информацию об обнаруженных устройствах. Вы можете найти эти сообщения в файле /var/run/dmesg.boot.

Например, acd0 это первый диск IDE CDROM, а kbd0 -- клавиатура.

В UNIX® доступ к большинству этих устройств можно получить через специальные файлы устройств, расположенные в каталоге /dev.

3.11.1 Создание файлов устройств

При добавлении в систему нового устройства, или добавление поддержки дополнительных устройств, может понадобиться создать один или несколько файлов устройств для нового оборудования.

3.11.1.1 Скрипт MAKEDEV

В системах без DEVFS (это относится ко всем версиям FreeBSD ниже 5.0), файлы устройств создаются с помощью MAKEDEV(8), как показано ниже:

# cd /dev
# sh MAKEDEV ad1
	

В этом примере создается соответствующий файл устройства для вторичного IDE диска.

3.11.1.2 DEVFS (DEVice File System)

Device filesystem, или DEVFS, предоставляет доступ к пространству устройств ядра через общую файловую систему. Вместо создания и модификации файлов устройств, DEVFS создает специальную файловую систему.

Обращайтесь к devfs(5) за дополнительной информацией.

В FreeBSD 5.0 и выше DEVFS используется по умолчанию.

Этот, и другие документы, могут быть скачаны с ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

По вопросам связанными с FreeBSD, прочитайте документацию прежде чем писать в <questions@FreeBSD.org>.
По вопросам связанным с этой документацией, пишите <doc@FreeBSD.org>.
По вопросам связанным с русским переводом документации, пишите <frdp@FreeBSD.org.ua>.


Руководство FreeBSDPrevChapter 3 Основы UNIXNext

3.13 Дополнительная информация

3.13.1 Системный справочник (man)

Пожалуй, самым полным руководством по FreeBSD является системный справочник (man). Практически каждое приложение или утилита имеют соответствующую страницу (часто не одну), описывающую тот или иной аспект работы программы, всевозможные опции и настройки. Для просмотра этих страниц существует команда man:

% man command

Здесь command - это команда, о которой вы хотите получить информацию. Например, чтобы узнать побольше о команде ls, наберите:

% man ls

Содержимое системного справочника для удобства разделено на несколько секций:

  1. Пользовательские команды.

  2. Системные вызовы и коды ошибок.

  3. Функции стандартных библиотек.

  4. Драйверы устройств.

  5. Форматы файлов.

  6. Развлечения и игры.

  7. Дополнительная информация.

  8. Команды системного администрирования.

  9. Для разработчиков ядра.

В некоторых случаях (не так уж редко), страницы, относящиеся к одной и той же команде, находятся в различных секциях справочника. Например, есть команда cdmod и системный вызов chmod(). В этом случае, необходимо явно указать man секцию, в которой нужно искать соответствующую страницу:

% man 1 chmod

Эта команда выведет справку об утилите chmod. По традиции, конкретная секция справочника указывается в скобках после команды, например, chmod(1) относится к утилите chmod, а chmod(2) - к соответствующему системному вызову.

Часто бывает так, что вы не знаете название команды, но имеете представление о том, что она должна делать. В этом случае можно попытаться найти нужную команду по ключевым словам, встречающимся в ее описании, используя опцию -k программы man:

% man -k mail

Вы получите список команд, имеющих слово ``mail'' в своих описаниях. Это эквивалентно использованию команды apropos.

Или например, вы видите список файлов в каталоге /usr/bin, при этом не имея ни малейшего представления о том, какие функции выполняет каждый их них? Просто наберите:

% cd /usr/bin
% man -f *

или

% cd /usr/bin
% whatis *

что фактически одно и то же.

3.13.2 Файлы GNU Info

FreeBSD поставляется с многочисленными приложениями и утилитами от Фонда Свободного Программного Обеспечения, Free Software Foundation (FSF). В дополнение к страницам справочника, с этими программами поставляется обширная гипертекстовая документация в виде так называемых info файлов, которые могут быть просмотрены с помощью команды info, или, если установлен emacs, в info режиме этого редактора.

Чтобы воспользоваться командой info(1), просто наберите в командной строке:

% info

Вызвать на экран краткое введение можно набрав h. Краткий список команд можно получить набрав ?.

Этот, и другие документы, могут быть скачаны с ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

По вопросам связанными с FreeBSD, прочитайте документацию прежде чем писать в <questions@FreeBSD.org>.
По вопросам связанным с этой документацией, пишите <doc@FreeBSD.org>.
По вопросам связанным с русским переводом документации, пишите <frdp@FreeBSD.org.ua>.


Руководство FreeBSDPrevChapter 3 Основы UNIXNext

3.7 Процессы

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

У каждого процесса есть уникальный номер, называемый process ID, или PID, и, как и у файлов, у каждого процесса есть владелец и группа. Информация о владельце и группе процесса используется для определения того, какие файлы и устройства могут быть открыты процессом с учетом прав на файлы, о которых говорилось ранее. Также у большинства процессов есть родительский процесс. Например, при запуске команд из оболочки, оболочка является процессом и любая запущенная команда также является процессом. Для каждого запущенного таким путем процесса оболочка будет являться родительским процессом. Исключением из этого правила является специальный процесс, называемый init(8). init всегда первый процесс, его PID всегда 1. init запускается автоматически ядром во время загрузки FreeBSD.

Две команды очень полезны для просмотра работающих в системе процессов, это ps(1) и top(1). Команда ps используется для получения списка запущенных процессов и может показать их PID, сколько памяти они используют, команду которой они были запущены и т.д. Команда top показывает запущенные процессы и обновляет экран каждые несколько секунд, что позволяет наблюдать за работой компьютера в реальном времени.

По умолчанию, ps показывает только принадлежащие вам процессы. Например:

% ps
  PID  TT  STAT      TIME COMMAND
  298  p0  Ss     0:01.10 tcsh
 7078  p0  S      2:40.88 xemacs mdoc.xsl (xemacs-21.1.14)
37393  p0  I      0:03.11 xemacs freebsd.dsl (xemacs-21.1.14)
48630  p0  S      2:50.89 /usr/local/lib/netscape-linux/navigator-linux-4.77.bi
48730  p0  IW     0:00.00 (dns helper) (navigator-linux-)
72210  p0  R+     0:00.00 ps
  390  p1  Is     0:01.14 tcsh
 7059  p2  Is+    1:36.18 /usr/local/bin/mutt -y
 6688  p3  IWs    0:00.00 tcsh
10735  p4  IWs    0:00.00 tcsh
20256  p5  IWs    0:00.00 tcsh
  262  v0  IWs    0:00.00 -tcsh (tcsh)
  270  v0  IW+    0:00.00 /bin/sh /usr/X11R6/bin/startx -- -bpp 16
  280  v0  IW+    0:00.00 xinit /home/nik/.xinitrc -- -bpp 16
  284  v0  IW     0:00.00 /bin/sh /home/nik/.xinitrc
  285  v0  S      0:38.45 /usr/X11R6/bin/sawfish

Как вы можете видеть в данном примере, вывод ps(1) организован в несколько колонок. Идентификатор процесса PID обсуждался ранее. PID назначаются с 1 до 99999 и опять с начала, если последнее число будет превышено. Колонка TT показывает терминал (tty), на котором запущена программа (можете пока забыть про это). STAT показывает состояние программы и опять же может быть пока проигнорирован. TIME это количество времени центрального процессора, использованное программой -- это обычно не время, прошедшее с запуска программы, поскольку большинство программы проводят много времени в в ожидании некоторого события перед тем, как занять время процессора. Наконец, COMMAND это команда, которой программа была запущена.

У ps(1) есть множество различных опций, влияющих на выводимую информацию. Один из наиболее полезных наборов опций это auxww. a позволяет показать информацию о всех запущенных процессах, а не только тех, которыми вы владеете. u показывает имя пользователя, владеющего процессом, и информацию об используемой памяти. x показывает информацию о процессах-демонах и ww указывает ps(1) показать всю командную строку, вместо обрезания ее, когда она станет слишком длинной, чтобы уместиться на экран.

Вывод top(1) похож на только что описанный. Обычно он выглядит так:

% top
last pid: 72257;  load averages:  0.13,  0.09,  0.03    up 0+13:38:33  22:39:10
47 processes:  1 running, 46 sleeping
CPU states: 12.6% user,  0.0% nice,  7.8% system,  0.0% interrupt, 79.7% idle
Mem: 36M Active, 5256K Inact, 13M Wired, 6312K Cache, 15M Buf, 408K Free
Swap: 256M Total, 38M Used, 217M Free, 15% Inuse

  PID USERNAME PRI NICE  SIZE    RES STATE    TIME   WCPU    CPU COMMAND
72257 nik       28   0  1960K  1044K RUN      0:00 14.86%  1.42% top
 7078 nik        2   0 15280K 10960K select   2:54  0.88%  0.88% xemacs-21.1.14
  281 nik        2   0 18636K  7112K select   5:36  0.73%  0.73% XF86_SVGA
  296 nik        2   0  3240K  1644K select   0:12  0.05%  0.05% xterm
48630 nik        2   0 29816K  9148K select   3:18  0.00%  0.00% navigator-linu
  175 root       2   0   924K   252K select   1:41  0.00%  0.00% syslogd
 7059 nik        2   0  7260K  4644K poll     1:38  0.00%  0.00% mutt
...

Вывод разбит на два раздела. Заголовок (первые пять линий) показывает PID последнего запущенного процесса, среднее значение загрузки системы (которое показывает насколько система занята), время работы системы с последней перезагрузки и текущее время. Другие цифры заголовка относятся к количеству запущенных процессов (в данном примере 47), количеству занятой памяти и подкачки и время, занимаемое различными состояниями процессора.

Ниже идут несколько колонок, содержащих похожую на вывод ps(1) информацию. Как и раньше, это PID, время процессора, командная строка. top(1) показывает также величину занятой процессом памяти. Это значение разбито на две колонки, одна для общего объема, а другая для резидентного -- общий объем показывает сколько всего памяти нужно приложению, а резидентный показывает количество памяти, используемой в данный момент. Из этого примера видно, что Netscape® требует почти 30 MB памяти, но в данный момент использует только 9 MB.

top(1) автоматически обновляет экран каждые две секунды; это значение можно изменить опцией s.

Этот, и другие документы, могут быть скачаны с ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

По вопросам связанными с FreeBSD, прочитайте документацию прежде чем писать в <questions@FreeBSD.org>.
По вопросам связанным с этой документацией, пишите <doc@FreeBSD.org>.
По вопросам связанным с русским переводом документации, пишите <frdp@FreeBSD.org.ua>.


Руководство FreeBSDPrevChapter 3 Основы UNIXNext

3.12 Бинарные форматы

Для понимания почему FreeBSD использует формат elf(5), вам потребуется сначала немного узнать о трех ``доминирующих'' исполняемых форматах для UNIX®:

FreeBSD имеет произошла из ``классического'' лагеря и использовала формат a.out(5), технологию опробованную и проверенную на многих поколениях релизов BSD, до начала ветки 3.X. Хотя собирать и запускать родные бинарные файлы ELF (и ядро) в системе FreeBSD можно было несколько раньше, FreeBSD вначале сопротивлялась ``проталкиванию'' ELF как формата по умолчанию. Почему? Когда лагерь Linux производил болезненный переход к ELF, у него не было большого преимущества перед исполняемым форматом a.out, из-за негибкого, основанного на таблице переходов механизма разделяемых библиотек, что делало создание разделяемых библиотек очень трудным для поставщиков и разработчиков. Когда доступные инструменты ELF предоставили решение проблемы разделяемых библиотек, и появилась некоторая перспектива, цена перехода была признана допустимой и он был сделан. Механизм разделяемых библиотек FreeBSD близок по стилю к механизму разделяемых библиотек SunOS™ от Sun, и поэтому очень прост в использовании.

Итак, почему так много разных форматов?

Давно, в темном далеком прошлом, оборудование было простым. Это простое оборудование поддерживало простые, маленькие системы. a.out был совершенно адекватен задаче представления бинарных файлов на таких простых системах (PDP-11). Люди, портировавшие UNIX с этих простых систем, оставили a.out формат потому, что он был достаточен для ранних портов UNIX на архитектуры подобные Motorola 68k, VAXen, etc.

Затем какой-то смышленый инженер по оборудованию решил что если он сможет заставить программы исполнять некоторые трюки, то сможет несколько упростить дизайн и заставить ядро CPU работать быстрее. Хотя это было сделано с новым типом оборудования (известного сейчас как RISC), формат a.out не подходил для него, и было разработано множество форматов чтобы получить лучшую производительность на таком оборудовании по сравнению с той, которую мог предоставить простой формат a.out. Были изобретены форматы COFF, ECOFF и некоторые другие малоизвестные форматы, и их ограничения были учтены когда все похоже остановились на ELF.

Кроме того, размеры программ стали огромны, а диски (и оперативная память) остались относительно малы, поэтому появилась концепция разделяемых библиотек. Система VM также стала более сложной. Хотя все эти усовершенствования были выполнены с форматом a.out, его полезность все больше и больше уменьшалась с каждым нововведением. К тому же потребовалась динамическая загрузка во время выполнения, или выгрузка частей программы после выполнения стартового кода для экономии памяти или места на диске. Языки усложнялись и потребовался автоматический вызов кода перед главной программой. Множество изменений было внесено в формат a.out чтобы все это появилось и в основном работало некоторое время. Настал момент, когда a.out не смог решить все эти проблемы без чрезмерного увеличения размера и сложности. В то время как ELF решил многие из этих проблем, перевод этого формата с системы на систему болезненен. Поэтому формату ELF пришлось подождать пока не стало более болезненным оставаться с a.out чем перейти на ELF.

Тем временем, инструменты разработки, от которых произошли инструменты разработки FreeBSD (особенно ассемблер и загрузчик) развивались в двух параллельных направлениях. Направление FreeBSD добавило разделяемые библиотеки и устранило некоторые ошибки. Люди из GNU, написавшие эти программы, переписали их и добавили простую поддержку сборки кросскомпиляторов, подключения различных форматов в будущем и так далее. Многим требовалось собрать кросскомпиляторы для FreeBSD, и это не удалось, поскольку устаревшие исходные тексты FreeBSD для as и ld не подходили для этой задачи. Новый набор инструментов GNU (binutils) поддерживает кросскомпилирование, ELF, разделяемые библиотеки, C++, расширения и т.д. В дополнение, многие поставщики выпустили программы в формате ELF и они хорошо подходят для запуска в FreeBSD.

ELF более выразителен чем a.out позволяет базовой системе быть более гибкой. ELF лучше поддерживается, и предоставляет поддержку кросскомпиляторов, что важно для многих людей. ELF может быть немного медленнее чем a.out, но замерить это сложно. Есть также множество деталей, отличающихся для этих двух форматов, в том как они отображают страницы, обрабатывают начальный код, и т.д. В этом нет ничего очень важного, но они различаются. В настоящее время поддержка a.out убрана из ядра GENERIC, и со временем будет убрана из ядра как только потребность в запуске старых программ a.out останется в прошлом.

Этот, и другие документы, могут быть скачаны с ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

По вопросам связанными с FreeBSD, прочитайте документацию прежде чем писать в <questions@FreeBSD.org>.
По вопросам связанным с этой документацией, пишите <doc@FreeBSD.org>.
По вопросам связанным с русским переводом документации, пишите <frdp@FreeBSD.org.ua>.


Руководство FreeBSDPrevNext

Предисловие

Целевая Аудитория

Люди, которые используют FreeBSD с недавнего времени, найдут, что данная глава проводит читателя через процесс установки FreeBSD и кратко освещает идеи и традиции, на которых базируется UNIX®. Работа с этой главой требует несколько большего, чем просто желание исследовать, но и возможность принимать к сведению новые идеи.

Вторая, много большая глава Руководства, является всеобъемлющим справочником о всех темах, которые могут интересовать администраторов FreeBSD. Некоторые из разделов этой главы могут рекомендовать Вам предварительное чтение некоторых других документов, о чём упоминается в кратком обзоре в начале каждого раздела.

Список рекомендуемой дополнительной литературы Вы можете найти здесь: Appendix B.

Изменения во Второй Редакции

Эта, вторая, редакция является кульминацией более чем двухлетней работы членов Проекта документации FreeBSD. Нижеследующий список перечисляет все значительные изменения в этой новой редакции:

Структура этой книги

Эта книга разбита на три части. В первой части, В Начале, рассматривается установка и основные навыки использования FreeBSD. Предполагается, что читатель освоит эти разделы последовательно, возможно пропуская разделы, в которых обсуждаются уже знакомые для него темы. Вторая часть, Системное Администрирование, рассказывает о широком круге задач и тем, которые будут интересны более продвинутым пользователям FreeBSD. Каждая часть начинается с краткого обзора, который описывает, о чём говорится в ней и что читатель должен будет знать для прочтения этой части. Это сделано для того, чтобы нерегулярный читатель мог найти разделы, которые его интересуют. Третья часть содержит приложения и справочную информацию.

Chapter 1, Введение

Знакомит пользователя с FreeBSD. Рассказывает об истории проекта FreeBSD, его задачах и модели разработки.

Chapter 2, Установка

Проводит пользователя через весь процесс установки. Некоторые более сложные вопросы установки, такие как установка по серийной консоли тоже обсуждаются.

Chapter 3, Основы UNIX

Рассказывает об основных командах и функциональности операционной системы FreeBSD. Если Вы знакомы с Linux или другой UNIX-подобной операционной системой, возможно, Вы можете пропустить эту главу.

Chapter 4, Установка приложений: порты и пакеты

Рассказывает о процессе установки программного обеспечения сторонних производителей с использованием ``Коллекции Портов FreeBSD'' и стандартных бинарных пакетов.

Chapter 5, The X Window System

Описывает X Window System и использование XFree86 под управлением FreeBSD в частности. Также описывает популярные окружения рабочего стола, такие как KDE и GNOME.

Chapter 6, Настройка FreeBSD

Описывает всевозможные параметры настройки FreeBSD, которые может использовать системный администратор для оптимальной настройки системы. Также описывает различные конфигурационные файлы, используемые в FreeBSD и расположение этих файлов на диске.

Chapter 7, Процесс загрузки

Рассказывает о процессе загрузки FreeBSD и объясняет, как управлять этим процессом при помощи различных конфигурационных настроек.

Chapter 8, Пользователи и основы управления учётными записями

Рассказывает о создании и управлении пользовательскими учётными записями. Также обсуждает установку ограничений ресурсов для пользователей и другие задачи управления пользователями.

Chapter 9, Настройка ядра FreeBSD

Объясняет почему Вам может понадобиться перенастроить ядро и детально описывает процесс настройки, сборки и установки нового ядра.

Chapter 10, Безопасность

Описывает множество различных утилит, которые помогут Вам поддерживать FreeBSD в безопасном, надёжном состоянии, включая Kerberos, IPsec, OpenSSH и сетевые фильтры.

Chapter 11, Печать

Рассказывает об управлении принтерами в FreeBSD, включая информацию об титульных страницах, учёте использования принтеров и первоначальной настройке.

Chapter 12, Устройства хранения

Описывает как управлять накопителями информации и файловыми системами в FreeBSD, включая физические диски, массива RAID, оптические и ленточные носители, диски в оперативной памяти и сетевые файловые системы.

Chapter 13, Vinum

Рассказывает как использовать Vinum, менеджер логических разделов, при помощи которого можно создавать и использовать независимые от устройств хранения логические диски и программно реализовывает RAID-0, RAID-1 и RAID-5.

Chapter 14, Локализация

Описывает использование FreeBSD на языках, отличных от английского. Рассказывает о локализации на уровне системы и отдельных приложений.

Chapter 15, Прикладные программы

Перечисляет некоторые популярные приложения для рабочей станции, такие как веб-браузеры и офисные пакеты и рассказывает процесс их установки на FreeBSD.

Chapter 16, Мультимедиа

Рассказывает, как настроить поддержку воспроизведения звука и видео на Вашей системе. Также описывает некоторые примеры приложений для воспроизведения звука и видео.

Chapter 17, Последовательные коммуникации

Объясняет как подключать терминалы и модемы к Вашей FreeBSD как в серверном, так и в клиентском режиме.

Chapter 18, PPP и SLIP

Описывает использование PPP, SLIP или PPP через Ethernet для соединения с удалёнными системами при помощи FreeBSD.

Chapter 19, Сложные вопросы работы в сети

Рассматривает множество вопросов работы с сетью, включая совместный доступ компьютеров в Вашей локальной сети к Internet, использование сетевых файловых систем, обмен информацией об учётных записях при помощи NIS, настройку сервера имён (DNS) и многое другое.

Chapter 20, Электронная почта

Объясняет использование различных компонентов почтового сервера и более углублённо рассматривает простые вопросы конфигурации для наиболее популярного программного обеспечения для создания почтовых серверов: sendmail.

Chapter 21, На переднем крае разработок

Объясняет различия между FreeBSD-STABLE, FreeBSD-CURRENT и FreeBSD-RELEASE. Рассказывает, кому из пользователей будет полезно отслеживать версию системы в разработке и вкратце описывает этот процесс.

Chapter 22, Работа с приложениями, написанными для Linux

Описывает возможности Linux-совместимости в FreeBSD. Также предоставляет детальные инструкции по установке для многих популярных приложений для Linux, таких как: Oracle, SAP R/3 и Mathematica®.

Appendix A, Получение FreeBSD

Перечисляет различные источники, из которых можно получить FreeBSD на CDROM или DVD, равно как и различные сайты в Internet, с которых можно скачать и установить FreeBSD.

Appendix B, Библиография

Эта книга касается многих различных тем, которые могут оставить Вас "голодными" на более детальное объяснение. Библиография перечисляет множество отличных книг, которые упоминаются в тексте.

Chapter 23, Ресурсы в Internet

Описывает множество форумов, доступных для пользователей FreeBSD, в которых можно задать вопросы и поучаствовать в технических обсуждениях FreeBSD.

Appendix C, Ключи PGP

Содержит ключи PGP некоторых разработчиков FreeBSD.

Договоренности, используемые в этой книге

Для того чтобы обеспечить целостность и простоту чтения текста в данной книге мы применяем некоторые договорённости.

Типографические договорённости

Наклонный шрифт

Наклонный шрифт используется для имен файлов, адресов в Internet (URL), выделенного текста и первого применения технических терминов.

Моноширинный шрифт

Моноширинных шрифт используется для сообщений об ошибках, команд, имен пользователей, названий групп, названий устройств, переменных и фрагментов кода.

Полужирный шрифт

Полужирный шрифт используется для обозначения приложений, команд и параметров.

Пользовательский ввод

Клавиши представляются в виде полужирного текста для того, чтобы выделяться среди остального текста. Комбинации клавиш, которые должны вводиться одновременно разделяются символом `+', например:

Ctrl+Alt+Del

Это будет означать, что пользователь должен нажать клавиши Ctrl, Alt и Del одновременно.

Комбинации клавиш, которые должны вводиться последовательно, разделяются запятыми, например:

Ctrl+X, Ctrl+S

Это будет означать, что пользователь должен нажать Ctrl и X одновременно, после чего одновременно нажать Ctrl и S.

Примеры

Примеры, которые начинаются с E:\> обозначают команды MS-DOS®. Пока не указано противного, эти команды могут вводиться из окна ``Сеанс MS-DOS'' в современных системах Microsoft® Windows®.

E:\> tools\fdimage floppies\kern.flp A:

Примеры, которые начинаются с # обозначают команды, которые должны быть запущены с правами суперпользователя в FreeBSD. Вы можете войти в систему как пользователь root для того, чтобы ввести эти команды или войти в систему обычным пользователем и использовать su(1) для того, чтобы получить привилегии суперпользователя.

# dd if=kern.flp of=/dev/fd0

Примеры, начинающиеся с % указывают, что команда должна быть исполнена с правами обычного пользователя. Пока не указано противного, используется синтаксис C-shell для установки переменных окружения и других команд.

% top

Благодарности

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

Несколько компаний поддерживали разработку этого документа, оплачивая авторам их труд, оплачивая публикацию и т.д. В частности, BSDi (в последствии приобретённая компанией Wind River Systems) оплачивала труд по улучшению этой книги участникам Проекта Документации FreeBSD, что в итоге сделало возможным выпуск первой печатной версии в марте 2000 года (ISBN 1-57176-241-8). Впоследствии компания Wind River Systems оплатила работу нескольких авторов по улучшению генерации книги в удобном для печати виде и добавлению нескольких глав. Кульминация этой работы являла собой публикацию второй печатной версии в ноябре 2001 года (ISBN 1-57176-303-1).

Этот, и другие документы, могут быть скачаны с ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

По вопросам связанными с FreeBSD, прочитайте документацию прежде чем писать в <questions@FreeBSD.org>.
По вопросам связанным с этой документацией, пишите <doc@FreeBSD.org>.
По вопросам связанным с русским переводом документации, пишите <frdp@FreeBSD.org.ua>.


Руководство FreeBSDPrevChapter 7 Процесс загрузки FreeBSDNext

7.2 Проблема загрузки

Включение компьютера и запуск операционной системы приводят к интересной дилемме. По определению до запуска операционной системы компьютер умеет ничего. В том числе и не знает, как запускать программы с диска. Так что компьютер не может запустить программу с диска без операционной системы, но программы операционной системы находятся на диске, но как запустить операционную систему?

Эта проблема имеет параллели с одной проблемой из книги Приключения барона Мюнхаузена. Герой провалился в болото, и вытащил сам себя, ухватив за волосы и потянув. В эпоху начала компьютеризации термин начальная загрузка применялся к механизму, используемому для загрузки операционной системы, и затем был сокращен до просто ``загрузки''.

На оборудовании архитектуры x86 за загрузку операционной системы отвечает BIOS (Basic Input/Output System). Для этого BIOS ищет на жестком диске MBR (Master Boot Record), которая должна располагаться в определенном месте на диске. BIOS может загрузить и запустить MBR, и предполагается, что MBR может взять на себя остальную работу, связанную с загрузкой операционной системой.

Если на вашем диске установлена только одна операционная система, то стандартной MBR будет достаточно. Такая MBR выполняет поиск на диске первого загрузочного слайса, после чего запускает с этого слайса код загрузки оставшейся части операционной системы.

Если на ваших дисках установлено несколько операционных систем, то вы можете установить другую MBR, ту, что может выдать список различных операционных систем и позволит вам выбрать одну из них для загрузки. FreeBSD поставляется с одной из такой MBR, которую можно установить; другие производители операционных систем также предоставляют свои MBR.

Оставшаяся часть системы начальной загрузки FreeBSD разделяется на три этапа. Первый этап запускается из MBR, и он знает достаточно для перевода компьютера в особое состояние и загрузки второго этапа. Второй этап может делать несколько больше до запуска третьего этапа. Третий этап заканчивает работу по загрузке операционной системы. Работа разделена на эти три этапа, потому что стандарты ПК ограничивают размеры программ, которые могут быть запущены на первом и втором этапах. Последовательное выполнение работ позволяет FreeBSD получить более гибкий загрузчик.

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

Этот, и другие документы, могут быть скачаны с ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

По вопросам связанными с FreeBSD, прочитайте документацию прежде чем писать в <questions@FreeBSD.org>.
По вопросам связанным с этой документацией, пишите <doc@FreeBSD.org>.
По вопросам связанным с русским переводом документации, пишите <frdp@FreeBSD.org.ua>.


Руководство FreeBSDPrev 

Colophon

Эта книга представляет собой результат совместной работы сотен людей в рамках ``Проекта Документирования FreeBSD''. Текст написан в SGML формате в соответствии с DocBook DTD и сформатирован из SGML во множество различных представительских форматов с помощью приложения Jade, открытой DSSSL системы. DSSSL стили от Норма Волша (Norm Walsh) были использованы совместно c допольнительными стилями разработанными в рамках проекта для создания презентационных инструкций для Jade. Создание печатной версии этого документа было бы невозможно без языка TeX Девида Кнута, LaTeX Лисли Лэмпорта, и макро пакета JadeTeX Себастьяна Ратца.

Этот, и другие документы, могут быть скачаны с ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

По вопросам связанными с FreeBSD, прочитайте документацию прежде чем писать в <questions@FreeBSD.org>.
По вопросам связанным с этой документацией, пишите <doc@FreeBSD.org>.
По вопросам связанным с русским переводом документации, пишите <frdp@FreeBSD.org.ua>.


Руководство FreeBSDPrevChapter 6 Настройка и оптимизацияNext

6.8 Настройка карт сетевых интерфейсов

Предоставил Marc Fonvieille.

В наши дни мы не представляем себе компьютера без сетевого подключения. Добавление и настройка сетевой карты это обычная задача любого администратора FreeBSD.

6.8.1 Поиск подходящего драйвера

В первую очередь определите тип используемой карты (PCI или ISA), модель карты и используемый в ней чип. FreeBSD поддерживает многие PCI и ISA карты. Обратитесь к Списку поддерживаемого оборудования вашего релиза чтобы узнать, поддерживается ли карта.

Как только вы убедились, что карта поддерживается, потребуется определить подходящий драйвер. В файле /usr/src/sys/i386/conf/LINT находится список драйверов сетевых интерфейсов с информацией о поддерживаемых чипсетах/картах. Если вы сомневаетесь в том, какой драйвер подойдет, прочтите страницу справочника к драйверу. Страница справочника содержит больше информации о поддерживаемом оборудовании и даже о проблемах, которые могут возникнуть.

Если ваша карта широко распространена, вам скорее всего не потребуется долго искать драйвер. Драйверы для широко распространенных карт представлены в ядре GENERIC, так что ваша карта должна определиться при загрузке, примерно так:

dc0: <82c169 PNIC 10/100BaseTX> port 0xa000-0xa0ff mem 0xd3800000-0xd38
000ff irq 15 at device 11.0 on pci0
dc0: Ethernet address: 00:a0:cc:da:da:da
miibus0: <MII bus> on dc0
ukphy0: <Generic IEEE 802.3u media interface> on miibus0
ukphy0:  10baseT, 10baseT-FDX, 100baseTX, 100baseTX-FDX, auto
dc1: <82c169 PNIC 10/100BaseTX> port 0x9800-0x98ff mem 0xd3000000-0xd30
000ff irq 11 at device 12.0 on pci0
dc1: Ethernet address: 00:a0:cc:da:da:db
miibus1: <MII bus> on dc1
ukphy1: <Generic IEEE 802.3u media interface> on miibus1
ukphy1:  10baseT, 10baseT-FDX, 100baseTX, 100baseTX-FDX, auto

В этом примере две карты используют имеющийся в системе драйвер dc(4).

Для использования сетевой карты потребуется загрузить подходящий драйвер. Это можно сделать двумя способами. Самый простой способ это загрузка модуля ядра для сетевой карты с помощью kldload(8). Не для каждой сетевой карты есть модуль (например ISA карты и карты, использующие драйвер ed(4)). В качестве альтернативы, вы можете статически добавить поддержку сетевой карты в ядро. Проверьте /usr/src/sys/i386/conf/LINT и страницу справочника драйвера, чтобы узнать, что добавить в файл конфигурации ядра. За дополнительной информацией о пересборке ядра обращайтесь к Chapter 9. Если ваша карта была обнаружена ядром (GENERIC) во время загрузки, собирать новое ядро не потребуется.

6.8.2 Настройка сетевой карты

Как только для сетевой карты загружен подходящий драйвер, ее потребуется настроить. Как и многое другое, сетевая карта может быть настроена во время установки с помощью sysinstall.

Для вывода информации о настройке сетевых интерфейсов системы, введите следующую команду:

% ifconfig
dc0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
        inet 192.168.1.3 netmask 0xffffff00 broadcast 192.168.1.255
        ether 00:a0:cc:da:da:da
        media: Ethernet autoselect (100baseTX <full-duplex>)
        status: active
dc1: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
        inet 10.0.0.1 netmask 0xffffff00 broadcast 10.0.0.255
        ether 00:a0:cc:da:da:db
        media: Ethernet 10baseT/UTP
        status: no carrier
lp0: flags=8810<POINTOPOINT,SIMPLEX,MULTICAST> mtu 1500
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> mtu 16384
        inet 127.0.0.1 netmask 0xff000000
tun0: flags=8010<POINTOPOINT,MULTICAST> mtu 1500

Note: Старые версии FreeBSD могут потребовать запуска ifconfig(8) с параметром -a, за более подробным описанием синтаксиса ifconfig(8) обращайтесь к странице справочника. Учтите также, что строки, относящиеся к IPv6 (inet6 и т.п.) убраны из этого примера.

В этом примере были показаны следующие устройства:

Для присвоения имени сетевой карте FreeBSD использует имя драйвера и порядковый номер, в котором карта обнаруживается при инициализации устройств. Например, sis2 это третья сетевая карта, использующая драйвер sis(4).

В этом примере, устройство dc0 включено и работает. Ключевые признаки таковы:

  1. UP означает, что карта настроена и готова.

  2. У карты есть интернет (inet) адрес (в данном случае 192.168.1.3).

  3. Установлена маска подсети (netmask; 0xffffff00, то же, что и 255.255.255.0).

  4. Широковещательный адрес (в данном случае, 192.168.1.255).

  5. Значение MAC адреса карты (ether) 00:a0:cc:da:da:da

  6. Выбор физической среды передачи данных в режиме автовыбора (media: Ethernet autoselect (100baseTX <full-duplex>)). Мы видим, что dc1 была настроена для работы с 10baseT/UTP. За более подробной информацией о доступных драйверу типах среды обращайтесь к странице справочника.

  7. Статус соединения (status) active, т.е. несущая обнаружена. Для dc1, мы видим status: no carrier. Это нормально, когда ethernet кабель не подключен к карте.

Если ifconfig(8) показывает примерно следующее:

dc0: flags=8843<BROADCAST,SIMPLEX,MULTICAST> mtu 1500
	        ether 00:a0:cc:da:da:da

это означает, что карта не была настроена.

Для настройки карты вам потребуются привилегии пользователя root. Настройка сетевой карты может быть выполнена из командной строки с помощью ifconfig(8), но вам потребуется делать это после каждой перезагрузки системы. Подходящее место для настройки сетевых карт это файл /etc/rc.conf.

Откройте /etc/rc.conf в текстовом редакторе. Вам потребуется добавить строку для каждой сетевой карты, имеющейся в системе, например, в нашем случае, было добавлено две строки:

ifconfig_dc0="inet 192.168.1.3 netmask 255.255.255.0"
ifconfig_dc1="inet 10.0.0.1 netmask 255.255.255.0 media 10baseT/UTP"

Замените dc0, dc1, и так далее на соответствующие имена ваших карт, подставьте соответствующие адреса. Обратитесь к страницам справочника сетевой карты и ifconfig(8), за подробной информацией о доступных опциях и к странице справочника rc.conf(5) за дополнительной информацией о синтаксисе /etc/rc.conf.

Если вы настроили сетевую карту в процессе установки системы, некоторые строки, касающиеся сетевой карты, могут уже присутствовать. Внимательно проверьте /etc/rc.conf перед добавлением каких-либо строк.

Отредактируйте также файл /etc/hosts для добавления имен и IP адресов различных компьютеров сети, если их еще там нет. За дополнительной информацией обращайтесь к man.hosts.5; и к /usr/share/examples/etc/hosts.

6.8.3 Тестирование и решение проблем

Как только вы внесете необходимые изменения в /etc/rc.conf, перегрузите компьютер. Изменения настроек интерфейсов будут применены, кроме того будет проверена правильность настроек.

Как только система перезагрузится, проверьте сетевые интерфейсы.

6.8.3.1 Проверка Ethernet карты

Для проверки правильности настройки сетевой карты, попробуйте выполнить ping для самого интерфейса, а затем для другой машины в локальной сети.

Сначала проверьте локальный интерфейс:

% ping -c5 192.168.1.3
PING 192.168.1.3 (192.168.1.3): 56 data bytes
64 bytes from 192.168.1.3: icmp_seq=0 ttl=64 time=0.082 ms
64 bytes from 192.168.1.3: icmp_seq=1 ttl=64 time=0.074 ms
64 bytes from 192.168.1.3: icmp_seq=2 ttl=64 time=0.076 ms
64 bytes from 192.168.1.3: icmp_seq=3 ttl=64 time=0.108 ms
64 bytes from 192.168.1.3: icmp_seq=4 ttl=64 time=0.076 ms

--- 192.168.1.3 ping statistics ---
5 packets transmitted, 5 packets received, 0% packet loss
round-trip min/avg/max/stddev = 0.074/0.083/0.108/0.013 ms

Затем проверьте другую машину в локальной сети:

% ping -c5 192.168.1.2
PING 192.168.1.2 (192.168.1.2): 56 data bytes
64 bytes from 192.168.1.2: icmp_seq=0 ttl=64 time=0.726 ms
64 bytes from 192.168.1.2: icmp_seq=1 ttl=64 time=0.766 ms
64 bytes from 192.168.1.2: icmp_seq=2 ttl=64 time=0.700 ms
64 bytes from 192.168.1.2: icmp_seq=3 ttl=64 time=0.747 ms
64 bytes from 192.168.1.2: icmp_seq=4 ttl=64 time=0.704 ms

--- 192.168.1.2 ping statistics ---
5 packets transmitted, 5 packets received, 0% packet loss
round-trip min/avg/max/stddev = 0.700/0.729/0.766/0.025 ms

Вы можете также использовать имя машины вместо 192.168.1.2, если настроен файл /etc/hosts.

6.8.3.2 Решение проблем

Решение проблем с аппаратным и программным обеспечением всегда вызывает сложности, которые можно уменьшить, проверив сначала самые простые варианты. Подключен ли сетевой кабель? Правильно ли настроены сетевые сервисы? Правильно ли настроен межсетевой экран? Поддерживается ли используемая карта в FreeBSD? Всегда проверяйте информацию об оборудовании перед отправкой сообщения об ошибке. Обновите FreeBSD до последней версии STABLE. Просмотрите архивы списков рассылки, или поищите информацию в интернет.

Если карта работает, но производительность низка, может помочь чтение страницы справочника tuning(7). Проверьте также настройки сети, поскольку неправильные настройки могут стать причиной низкой скорости соединения.

Некоторые пользователи встречаются с несколькими ``device timeouts'', что нормально для некоторых сетевых карт. Если это продолжается и надоедает, убедитесь, что устройство не конфликтует с другим устройством. Внимательно проверьте подключение кабеля. Возможно также, что вам просто надо установить другую карту.

Время от времени, пользователи видят несколько ошибок ``watchdog timeout''. Первое, что требуется сделать, это проверить сетевой кабель. Многие карты требуют поддержки Bus Mastering слотом PCI. На некоторых старых материнских платах, только один PCI слот имеет такую поддержку (обычно слот 0). Сверьтесь с документацией на сетевую карту и материнскую плату, чтобы определить, может ли это быть проблемой.

Сообщение ``No route to host'' появляются, если система не в состоянии доставить пакеты к хосту назначения. Это может случиться, если не определен маршрут по умолчанию, или кабель не подключен. Проверьте вывод команды netstat -rn и убедитесь, что к соответствующему хосту есть работающий маршрут. Если это не так, прочтите Chapter 19.

Сообщения ``ping: sendto: Permission denied'' зачастую появляются при неправильно настроенном межсетевом экране. Если ipfw включен в ядре, но правила не определены, правило по умолчанию блокирует весь трафик, даже запросы ping! Прочтите Section 10.8 с более подробной информацией.

Иногда карты недостаточна, или ниже среднего. В этих случаях лучше всего изменить режим выбора типа подключения с autoselect на правильный тип. Обычно это работает для большинства оборудования, но не может решить проблему во всех случаях. Проверьте еще раз настройки сети и прочтите страницу руководства tuning(7).

Этот, и другие документы, могут быть скачаны с ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

По вопросам связанными с FreeBSD, прочитайте документацию прежде чем писать в <questions@FreeBSD.org>.
По вопросам связанным с этой документацией, пишите <doc@FreeBSD.org>.
По вопросам связанным с русским переводом документации, пишите <frdp@FreeBSD.org.ua>.


Руководство FreeBSDPrevNext

Chapter 6 Настройка и оптимизация

Table of Contents
6.1 Введение
6.2 Начальное конфигурирование
6.3 Основные настройки
6.4 Настройка Приложений
6.5 Запуск сервисов
6.6 Настройка утилиты cron
6.7 Использование rc в FreeBSD 5.X
6.8 Настройка карт сетевых интерфейсов
6.9 Настройка виртуальных серверов
6.10 Файлы настройки
6.11 Настройка с помощью sysctl
6.12 Оптимизация дисков
6.13 Изменение ограничений, накладываемых ядром
6.14 Увеличение объема подкачки
6.15 Управление питанием и ресурсами
Написал Chern Lee. Основывается на учебнике, написанном Mike Smith. и на tuning(7), написанном Matt Dillon.

6.1 Введение

Один из важных аспектов FreeBSD это настройка системы. Правильная настройка системы поможет избежать головной боли при последующих обновлениях. Эта глава описывает большую часть процесса настройки FreeBSD, включая некоторые параметры, которые можно установить для оптимизации системы FreeBSD.

После прочтения этой главы вы узнаете:

Перед прочтением этой главы вам следует:

Этот, и другие документы, могут быть скачаны с ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

По вопросам связанными с FreeBSD, прочитайте документацию прежде чем писать в <questions@FreeBSD.org>.
По вопросам связанным с этой документацией, пишите <doc@FreeBSD.org>.
По вопросам связанным с русским переводом документации, пишите <frdp@FreeBSD.org.ua>.


Руководство FreeBSDPrevChapter 6 Настройка и оптимизацияNext

6.4 Настройка Приложений

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

Обычно эти файлы устанавливаются в /usr/local/etc. В случае, если приложению нужно большое количество конфигурационных файлов, для их хранения будет создан подкаталог.

Обычно, вместе с установкой портов и пакетов, устанавливаются и примеры конфигурационных файлов. Обычно они имеют расширение .default. Если не существует конфигурационных файлов для этого приложения, они будут созданы путём копирования .default файлов.

Например, /usr/local/etc/apache:

-rw-r--r--  1 root  wheel   2184 May 20  1998 access.conf
-rw-r--r--  1 root  wheel   2184 May 20  1998 access.conf.default
-rw-r--r--  1 root  wheel   9555 May 20  1998 httpd.conf
-rw-r--r--  1 root  wheel   9555 May 20  1998 httpd.conf.default
-rw-r--r--  1 root  wheel  12205 May 20  1998 magic
-rw-r--r--  1 root  wheel  12205 May 20  1998 magic.default
-rw-r--r--  1 root  wheel   2700 May 20  1998 mime.types
-rw-r--r--  1 root  wheel   2700 May 20  1998 mime.types.default
-rw-r--r--  1 root  wheel   7980 May 20  1998 srm.conf
-rw-r--r--  1 root  wheel   7933 May 20  1998 srm.conf.default

Размеры файлов показывают, что только файл srm.conf был изменён. При следующем обновлении Apache этот файл уже не будет перезаписан.

Этот, и другие документы, могут быть скачаны с ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

По вопросам связанными с FreeBSD, прочитайте документацию прежде чем писать в <questions@FreeBSD.org>.
По вопросам связанным с этой документацией, пишите <doc@FreeBSD.org>.
По вопросам связанным с русским переводом документации, пишите <frdp@FreeBSD.org.ua>.


Руководство FreeBSDPrevChapter 6 Настройка и оптимизацияNext

6.10 Файлы настройки

6.10.1 Каталог /etc

Во FreeBSD определён ряд директорий, предназначенных для хранения конфигурационных файлов. Это:

/etcОсновные файлы конфигурации системы. Тут размещены системно-зависимые данные.
/etc/defaultsВерсии системных конфигурационных файлов по умолчанию.
/etc/mailДополнительные конфигурационные файлы sendmail(8) остальные конфигурационные файлы MTA.
/etc/pppНастройка для user- и kernel-ppp программ.
/etc/namedbОсновное место расположения данных named(8). Обычно named.conf и файлы зон расположены здесь.
/usr/local/etcКонфигурационные файлы установленных приложений. Могут содержать подкаталоги приложений.
/usr/local/etc/rc.dСкрипты запуска/остановки установленных приложений.
/var/dbАвтоматически генерируемые системно-специфичные файлы баз данных, такие как база данных пакетов, и так далее

6.10.2 Имена хостов

6.10.2.1 /etc/resolv.conf

/etc/resolv.conf определяет, как ресолвер (resolver) FreeBSD получает доступ к Системе Доменных Имён (DNS).

Основные записи resolv.conf:

nameserverIP адрес сервера имён. Сервера опрашиваются в порядке описания. Максимальное количество адресов - три.
searchСписок доменов для поиска с помощью hostname lookup. Обычно определяется доменом, в котором находится компьютер.
domainДомен, в котором находится компьютер.

Типичный вид resolv.conf:

search example.com
nameserver 147.11.1.11
nameserver 147.11.100.30

Note: Опции search и domain нельзя использовать совместно.

Если вы используете DHCP, dhclient(8) обычно перезаписывает resolv.conf информацией, полученной от серверов DHCP.

6.10.2.2 /etc/hosts

/etc/hosts - простая текстовая база данных, напоминающая старый Интернет. Она работает совместно с DNS и NIS, сопоставляя доменные имена IP адресу. Отдельные компьютеры, соединённые с помощью локальной сети могут быть записаны тут вместо named(8) сервера с целью упрощения. Кроме того, /etc/hosts используется для записи IP адресов и соответствующих им доменов, избавляя от внешнего трафика, используемого для запросов к DNS серверам.

# $FreeBSD$
#
# Host Database
# This file should contain the addresses and aliases
# for local hosts that share this file.
# In the presence of the domain name service or NIS, this file may
# not be consulted at all; see /etc/nsswitch.conf for the resolution order.
#
#
::1                     localhost localhost.my.domain myname.my.domain
127.0.0.1               localhost localhost.my.domain myname.my.domain

#
# Imaginary network.
#10.0.0.2               myname.my.domain myname
#10.0.0.3               myfriend.my.domain myfriend
#
# According to RFC 1918, you can use the following IP networks for
# private nets which will never be connected to the Internet:
#
#       10.0.0.0        -   10.255.255.255
#       172.16.0.0      -   172.31.255.255
#       192.168.0.0     -   192.168.255.255
#
# In case you want to be able to connect to the Internet, you need
# real official assigned numbers.  PLEASE PLEASE PLEASE do not try
# to invent your own network numbers but instead get one from your
# network provider (if any) or from the Internet Registry (ftp to
# rs.internic.net, directory `/templates').
#

Формат /etc/hosts:

[IP адрес в Интернете] [имя компьютера] [alias1] [alias2] ...

Например:

10.0.0.1 myRealHostname.example.com myRealHostname foobar1 foobar2

За дополнительной информацией обращайтесь к hosts(5).

6.10.3 Настройка лог файлов

6.10.3.1 syslog.conf

syslog.conf is является файлом конфигурации для syslogd(8). В нём указываются, типы сообщений генерируемые syslog, и лог файлы, в которые они записываются.

# $FreeBSD$
#
#       Spaces ARE valid field separators in this file. However,
#       other *nix-like systems still insist on using tabs as field
#       separators. If you are sharing this file between systems, you
#       may want to use only tabs as field separators here.
#       Consult the syslog.conf(5) manual page.
*.err;kern.debug;auth.notice;mail.crit          /dev/console
*.notice;kern.debug;lpr.info;mail.crit;news.err /var/log/messages
security.*                                      /var/log/security
mail.info                                       /var/log/maillog
lpr.info                                        /var/log/lpd-errs
cron.*                                          /var/log/cron
*.err                                           root
*.notice;news.err                               root
*.alert                                         root
*.emerg                                         *
# uncomment this to log all writes to /dev/console to /var/log/console.log
#console.info                                   /var/log/console.log
# uncomment this to enable logging of all log messages to /var/log/all.log
#*.*                                            /var/log/all.log
# uncomment this to enable logging to a remote log host named loghost
#*.*                                            @loghost
# uncomment these if you're running inn
# news.crit                                     /var/log/news/news.crit
# news.err                                      /var/log/news/news.err
# news.notice                                   /var/log/news/news.notice
!startslip
*.*                                             /var/log/slip.log
!ppp
*.*                                             /var/log/ppp.log

За более полной информацией обратитесь к syslog.conf(5).

6.10.3.2 newsyslog.conf

newsyslog.conf - конфигурационный файл newsyslog(8), программы, обычно контролируемой cron(8). newsyslog(8) определяет, когда лог-файлы нуждаются в архивировании и перегруппировке. logfile перемещается в logfile.0, logfile.0 перемещается в logfile.1, и так далее. Другое именование получится при архивировании с помощью gzip(1): logfile.0.gz, logfile.1.gz, и т.д.

newsyslog.conf показывает, какие лог файлы должны быть проинспектированы, сколько их должно быть сохранено, и когда они должны быть пересмотрены. Лог файлы могут быть перегруппированы и/или заархивированы, когда они либо достигнут определённого размера, либо при достижении определённых даты/времени.

# configuration file for newsyslog
# $FreeBSD$
#
# filename          [owner:group]    mode count size when [ZB] [/pid_file] [sig_num]
/var/log/cron                           600  3     100  *     Z
/var/log/amd.log                        644  7     100  *     Z
/var/log/kerberos.log                   644  7     100  *     Z
/var/log/lpd-errs                       644  7     100  *     Z
/var/log/maillog                        644  7     *    @T00  Z
/var/log/sendmail.st                    644  10    *    168   B
/var/log/messages                       644  5     100  *     Z
/var/log/all.log                        600  7     *    @T00  Z
/var/log/slip.log                       600  3     100  *     Z
/var/log/ppp.log                        600  3     100  *     Z
/var/log/security                       600  10    100  *     Z
/var/log/wtmp                           644  3     *    @01T05 B
/var/log/daily.log                      640  7     *    @T00  Z
/var/log/weekly.log                     640  5     1    $W6D0 Z
/var/log/monthly.log                    640  12    *    $M1D0 Z
/var/log/console.log                    640  5     100  *     Z

За дополнительной информацией обращайтесь к newsyslog(8).

6.10.4 sysctl.conf

sysctl.conf очень похож на rc.conf. Значения устанавливаются в виде variable=value. Указанные значения устанавливаются после перевода системы в многопользовательский режим. Однако не все переменные могут быть установлены в этом режиме.

Пример sysctl.conf настроенной для выключения нотирования фатальных ошибок и разрешения Linux-программам определять, что они запускаются под FreeBSD:

kern.logsigexit=0       # Do not log fatal signal exits (e.g. sig 11)
compat.linux.osname=FreeBSD
compat.linux.osrelease=4.3-STABLE

Этот, и другие документы, могут быть скачаны с ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

По вопросам связанными с FreeBSD, прочитайте документацию прежде чем писать в <questions@FreeBSD.org>.
По вопросам связанным с этой документацией, пишите <doc@FreeBSD.org>.
По вопросам связанным с русским переводом документации, пишите <frdp@FreeBSD.org.ua>.


Руководство FreeBSDPrevChapter 6 Настройка и оптимизацияNext

6.3 Основные настройки

Основные настройки системы располагаются в /etc/rc.conf. Этот файл вмещает широкий спектр конфигурационной информации, используемой при загрузке системы. Имя этого файла прямо отражает его назначение, это файл настройки для файлов rc*.

Администратор должен сделать записи в rc.conf чтобы переопределить строки по умолчанию из /etc/defaults/rc.conf. Файлы по умолчанию нельзя копировать в /etc - они вмещают значения по умолчанию, а не примеры значений. Все специфичные для данной системы изменения должны быть сделаны в файле rc.conf.

Существует несколько методов для отделения общей конфигурации для группы систем от конкретной для данной системы в целях уменьшения объема работы администратора. Рекомендуемый метод - прописать общую конфигурацию в отдельный файл, например, в /etc/rc.conf.site, и включить его название в /etc/rc.conf, который вмещает только специфичную для данной системы информацию.

Поскольку rc.conf читается sh(1), есть тривиальный способ сделать это. Например:

Файл rc.conf.site может быть распространён на все системы, используя rsync или подобную ей программу, в то время, как rc.conf должен остаться только на одной машине.

Обновление системы с помощью sysinstall(8) или make world не повлекут за собой перезапись rc.conf. Вся информация в этом файле сохранится.

Этот, и другие документы, могут быть скачаны с ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

По вопросам связанными с FreeBSD, прочитайте документацию прежде чем писать в <questions@FreeBSD.org>.
По вопросам связанным с этой документацией, пишите <doc@FreeBSD.org>.
По вопросам связанным с русским переводом документации, пишите <frdp@FreeBSD.org.ua>.


Руководство FreeBSDPrevChapter 6 Настройка и оптимизацияNext

6.6 Настройка утилиты cron

Предоставил Tom Rhodes.

Одна из наиболее полезных утилит FreeBSD это cron(8). Утилита cron работает в фоновом режиме и постоянно проверяет файл /etc/crontab. Утилита cron проверяет также каталог /var/cron/tabs в поиске новый файлов crontab. Файлы crontab содержат информацию об определенных функциях, которые cron выполняет в указанное время.

Давайте заглянем в файл /etc/crontab:

# /etc/crontab - root's crontab for FreeBSD
#
# $FreeBSD: src/etc/crontab,v 1.32 2002/11/22 16:13:39 tom Exp $
# (1)
#
SHELL=/bin/sh
PATH=/etc:/bin:/sbin:/usr/bin:/usr/sbin (2)
HOME=/var/log
#
#
#minute	hour	mday	month	wday	who	command (3)
#
#
*/5	*	*	*	*	root	/usr/libexec/atrun (4)
(1)
Как и в большинстве файлов настройки FreeBSD, символы ``#'' означают комментарии. Комментарии нужны для напоминания о том, что означает строка и зачем она добавлена. Комментарии не могут находиться на той же строке, что и команда, или они будут восприняты как часть команды; располагайте их на новой строке. Пустые строки игнорируются.
(2)
Сначала должны быть заданы переменные окружения. Знак равно (=) используется для задания переменных окружения, в этом примере SHELL, PATH, и HOME. Если переменная для оболочки не задана, cron использует оболочку по умолчанию, sh. Если не задана переменная PATH, значение по умолчанию не устанавливается и пути к файлам должны быть полными. Если не задана переменная HOME, cron будет использовать домашний каталог соответствующего пользователя.
(3)
В строке всего семь полей. Их значения minute, hour, mday, month, wday, who (кто), и command. Значение полей почти очевидно. minute это время в минутах, когда будет запущена команда. hour означает то же самое для часов. mday означает день месяца. month, это то же самое, что час и минута, но для месяцев. Параметр wday это день недели. Все эти поля должны быть в числовом формате, время в двадцатичетырехчасовом исчислении. Поле who имеет специальное значение, и присутствует только в файле /etc/crontab. Это поле определяет пользователя, с правами которого должна быть запущена команда. Когда пользователь устанавливает собственный файл crontab, он не указывает этот параметр. Последний параметр command. Он указывает команду, которая должна быть запущена.
(4)
Последняя строка определяет параметры, описанные выше. Здесь задано значение */5, и несколько символов *. Эти символы * означают ``первый-последний'', и могут быть интерпретированы как каждый. Таким образом, для этой строки соответствующая команда atrun вызывается под пользователем root каждые пять минут независимо от дня или месяца. За дополнительной информацией по atrun обращайтесь к странице справочника atrun(8).

Команды могут принимать любое количество параметров; однако команды, состоящие из нескольких строк, должны быть объединены символом ``\''.

Этот формат одинаков для каждого файла crontab, за исключением одной детали. Шестое поле, где указано имя пользователя, присутствует только в файле /etc/crontab. Это поле должно быть исключено из crontab файлов пользователей.

6.6.1 Установка crontab

Для установки готового crontab, используйте утилиту crontab. Обычно она используется так:

# crontab crontab

Существует также параметр для просмотра установленных файлов crontab, задайте crontab параметр -l.

Для пользователей, составляющих crontab вручную, без временного файла, существует параметр crontab -e. Она вызовет редактор с пустым файлом. Когда файл будет сохранен, crontab автоматически установит его.

Этот, и другие документы, могут быть скачаны с ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

По вопросам связанными с FreeBSD, прочитайте документацию прежде чем писать в <questions@FreeBSD.org>.
По вопросам связанным с этой документацией, пишите <doc@FreeBSD.org>.
По вопросам связанным с русским переводом документации, пишите <frdp@FreeBSD.org.ua>.


Руководство FreeBSDPrevChapter 6 Настройка и оптимизацияNext

6.12 Оптимизация дисков

6.12.1 Переменные Sysctl

6.12.1.1 vfs.vmiodirenable

Значением переменной vfs.vmiodirenable может быть установлено в 0 (выключено) или 1 (включено); по умолчанию 1. Эта переменная отвечает за метод кэширования каталогов. Размер большинства каталогов невелик. Они могут поместиться в одном фрагменте (обычно 1K), и могут занимать ещё меньше места (обычно 512 байт) в кэше буфера. Однако, при работе в стандартном режиме буфер прокэширует только заданное число каталогов даже если у вас много памяти. Включение этого параметра sysctl позволит использовать страничное кэширование VM, делая доступным для кэширования каталогов весь объём памяти. Однако, минимальный объём памяти, используемой для кэширования каталогов стал равен объёму страницы (обычно 4 K) вместо 512 байт. Мы рекомендуем включить эту опцию, если ваш компьютер исполняет программы, манипулирующие значительным количеством файлов. Примером таких программ могут быть кэширующие прокси-серверы, большие почтовые серверы и серверы новостей. Обычно включение этой опции не понижает производительности, однако лучше поэкспериментировать, чтобы узнать оптимальное значение для вашей машины.

6.12.1.2 vfs.write_behind

Переменная sysctl vfs.write_behind по умолчанию установлена в 1 (включено). Она указывает системе выполнять запись на носитель по кластерам, что обычно делается для больших файлов. Идея в том, чтобы избежать заполнения кэша неполными буферами, когда это не увеличивает производительность. Однако, это может заблокировать процессы и в некоторых случаях вам может понадобиться отключить этот параметр.

6.12.1.3 vfs.hirunningspace

Переменная sysctl vfs.hirunningspace определяет число запросов записи на диск, которые могут быть поставлены в очередь. Значение по умолчанию обычно подходит, но на компьютерах с большим количеством дисков вы можете увеличить его до четырех или пяти мегабайт. Учтите, что установка слишком большого значения (превышающего размер буфера записи) может привести к очень значительному падению общей производительности. Не делайте это значение произвольно большим! Большие значения могут привести к задержкам чтения, выполняемого в то же время

Есть много других переменных sysctl, относящихся к кэшированию в буфер и страничному кэшированию VM. Мы не рекомендуем изменять эти значения. Начиная FreeBSD 4.3, система VM делает отличную работу по автоматической самонастройке.

6.12.1.4 vm.swap_idle_enabled

Переменная sysctl vm.swap_idle_enabled полезна в больших многопользовательских системах, где есть много пользователей, входящих и выходящих из системы, и множество ожидающих процессов. Такие системы обычно генерируют большое количество запросов на выделение памяти. Включение этой переменной и настройка задержки выгрузки (swapout hysteresis, в секундах) установкой переменных vm.swap_idle_threshold1 и vm.swap_idle_threshold2 позволит освобождать страницы памяти, занятые ожидающими процессами, более быстро, чем при нормальном алгоритме выгрузки. Это помогает даемону выгрузки страниц. Не включайте этот параметр, пока он на самом деле вам не понадобится, поскольку его действие в сущности заключается в более ранней выгрузке страниц из памяти; это повышает нагрузку на подкачку и диск. В малых системах эффект от включения этого параметра предсказуем, но в больших системах нагруженной на подкачкой этот параметр позволяет системе VM проще загружать и выгружать процессы из памяти.

6.12.1.5 hw.ata.wc

Во FreeBSD 4.3 кэширование записи на IDE диски было отключено. Это понижало производительность IDE дисков в тестах, но было необходимо для лучшей сохранности данных. Проблема состоит в том, что IDE диски неправильно указывают время завершения записи на диск. При включенном кэшировании IDE диски могут не только записать данные в неправильном порядке - при большой нагрузке на диск некоторые блоки могут задержаться до бесконечности. Сбой, или отключение питания могут могут стать причиной серьёзных повреждений в файловой системе. Поэтому для безопасности системы значение по умолчанию этого параметра было изменено. К сожалению, результатом этого стало столь значительная потеря производительности, что после выхода релиза значение этого параметра было возвращено в первоначальное состояние. Вам следует проверить значение переменной sysctl hw.ata.wc на вашей машине. Если кэширование выключено - вы можете включить его, установив значение переменной ядра, равное 1. Это должно быть сделано при помощи загрузчика при загрузке. Если вы сделаете это позже - изменения не будут иметь силы.

За более подробной информацией обращайтесь к ata(4).

6.12.1.6 SCSI_DELAY (kern.cam.scsi_delay)

Параметр настройки ядра SCSI_DELAY может использоваться для уменьшения времени загрузки системы. Значение по умолчанию велико и может составлять более 15 секунд в процессе загрузки. Уменьшение его до 5 секунд обычно работает (особенно с современными дисками). В новые версии FreeBSD (5.0+) должен использоваться параметр kern.cam.scsi_delay, настраиваемый во время загрузки. Этот параметр и параметр настройки ядра принимают значения в миллисекундах, а не в секундах.

6.12.2 Soft Updates

Программа tunefs(8) используется для настройки файловой системы. Эта программа может принимать большое количество параметров, но мы рассмотрим лишь один из них - включение и выключение Soft Updates, что может быть достигнуто следующим образом:

# tunefs -n enable /filesystem
# tunefs -n disable /filesystem

Нельзя изменять файловую систему с помощью tunefs(8) когда она смонтирована. Самое подходящее время для включения "Soft Updates" - перед монтированием разделов, в однопользовательском режиме.

Note: Начиная с FreeBSD 4.5, можно включить Soft Updates во время создания файловой системы, используя newfs(8) с параметром -U.

Soft Updates существенно увеличивают скорость создания и удаления файлов путём использования кэширования. Мы рекомендуем использовать Soft Updates на всех ваших файловых системах. Однако у Soft Updates есть и обратные стороны: во-первых, Soft Updates гарантирует целостность файловой системы в случае сбоя, но может наблюдаться задержка в несколько секунд (или даже минуту!) перед записью на жесткий диск. Если система зависнет - вы можете потерять больше, чем, если бы вы не включили Soft Updates. Во-вторых, Soft Updates задерживает освобождение блоков файловой системы. Если ваша файловая система заполнена, выполнение значительного обновления, например. make installworld, может вызвать переполнение.

6.12.2.1 Дополнительная информация о Soft Updates

Есть два традиционных способа записи метаданных файловых систем на диск. (Пример метаданных: индексные дескрипторы и каталоги.)

Исторически, поведение по умолчанию заключается в синхронном обновлении метаданных. Если каталог был изменен, система ждет, пока изменение не будет физически записано на диск. Содержимое файлов проходит через кэш и записывается на диск асинхронно. Преимущество этого способа в его надежности. При сбое во время обновления метаданные остаются в нормальном состоянии. Файл либо создается целиком, либо вообще не создается. Если блоки данных не были записаны в файл из буфера во время сбоя, fsck(8) сможет определить это и восстановить файловую систему, установив длину файла в 0. Кроме того, реализация этого способа проста и понятна. Недостаток в том, что обновление метаданных занимает много времени. Команда rm -r, например, последовательно удаляет все файлы в каталоге, и каждое изменение в каталоге (удаление файла) будет синхронно записано на диск. Сюда включаются обновления самого каталога, таблицы индексных дескрипторов, и возможно блоков, занятых файлом. Те же соглашения работают при распаковке больших иерархий (tar -x).

Другой вариант это асинхронное обновление метаданных. Это поведение по умолчанию для Linux/ext2fs и *BSD ufs с параметром mount -o async. Все обновления метаданных просто пропускаются через кэш буфера, как и содержимое файлов. Преимущество этой реализации в том, что нет необходимости ждать каждый раз, пока метаданные будут записаны на диск, поэтому все операции с большим объемом обновления метаданных будут происходить гораздо быстрее чем при синхронном обновлении. Кроме того, реализация все еще проста и понятна, поэтому риск появления ошибок в коде невелик. Недостаток в том, что нет никаких гарантий исправности файловой системы. Если во время во время обновления большого объема метаданных произойдет сбой (например, отключение питания, или нажатие кнопки reset), файловая система останется в непредсказуемом состоянии. Нет возможности определить состояние файловой системы после такого сбоя; блоки данных файла могут быть уже записаны на диск, а обновления таблицы индексных дескрипторов нет. Невозможно реализовать fsck, которая могла бы исправить получившийся хаос (поскольку необходимой информации нет на диске). Если файловая система была уничтожена во время восстановления, единственный способ восстановления -- запустить newfs(8) и воспользоваться резервной копией.

Обычное решение этой проблемы состояло в реализации протоколировании проблемной области (dirty region logging), известном как журналирование, хотя этот термин использовался неправильно и порой также применялся к другим формам протоколирования транзакций. Обновление метаданных как и прежде происходит синхронно, но в отдельную область диска. Позже они перемещаются туда, где должны быть. Поскольку область протоколирования это небольшая, последовательная область диска, головкам жесткого диска не приходится перемещаться на большие расстояния даже во время значительных обновлений, поэтому такой способ быстрее, чем синхронные обновления. Кроме того, сложность реализации довольно ограничена, поэтому риск внесения ошибок невелик. Недостаток в том, что все обновления метаданных записываются дважды (один раз в область протоколирования и один раз окончательно), поэтому при обычной работе производительность может понизиться. С другой стороны, в случае сбоя все незаконченные действия с метаданными могут быть быстро отменены, или завершены после загрузки системы, поэтому система после сбоя загружается быстрее.

Kirk McKusick, разработчик Berkeley FFS, решил эту проблему с помощью Soft Updates: все незавершенные обновления метаданных находятся в памяти и записываются на диск в упорядоченном виде (``упорядоченное обновления метаданных''). При значительных обновлениях метаданных более поздние обновления ``присоединяются'' к предыдущим, если они все еще находятся в памяти и еще не записаны на диск. Поэтому все операции, скажем, над каталогом, обычно выполняются в памяти перед записью обновления на диск (блоки данных сортируются в соответствии с их положением, так что они не будут записаны на диск до метаданных. При крахе операционной системы выполняется ``откат'': считается, что все операции, не записанные на диск, никогда не происходили. Файловая система находится в том состоянии, в котором она была за 30-60 секунд до сбоя. Используемый алгоритм гарантирует, что все используемые ресурсы маркированы соответствующим образом в своих областях: блоки и индексные дескрипторы. После сбоя могут остаться только ошибки, выделения ресурсов, они помечаются как ``используемые'', хотя на самом деле ``свободны''. fsck(8) разбирается в ситуации и освобождает более не используемые ресурсы. После сбоя система может быть безопасно смонтирована с опцией mount -f. Для освобождения ресурсов, которые могут не использоваться, в дальнейшем потребуется запустить fsck(8). Эта идея лежит в основе background (фоновая) fsck: во время запуска системы записывается только снимок файловой системы. Все системы могут быть смонтированы в ``грязном'' состоянии, и система загружается в многопользовательский режим. Затем, фоновые fsck ставятся в очередь для всех систем, где это требуется, чтобы освободить неиспользуемые ресурсы. (Файловые системы, где не используются Soft Updates, все еще требуют запуска fsck в обычном режиме).

Преимущество этого способа в том, что обновления метаданных происходят почти так же быстро, как при асинхронных обновлениях (т.е. быстрее, чем при журналировании, когда метаданные записываются дважды). Недостаток в сложности кода (подразумевающим больший риск появления ошибок в области, где вероятность потери данных пользователя особенно высока) и в более высоких требованиях к объему памяти. К тому же могут возникнуть некоторые странные на первый взгляд ситуации. После сбоя состояние файловой системы несколько более ``старое''. В ситуации, когда стандартный способ синхронизации оставит несколько файлов нулевой длины после выполнения fsck, в файловой системе с Soft Updates их не останется вовсе, поскольку ни метаданные, ни содержимое файлов не были записаны на диск. Дисковое пространство не будет освобождено пока обновления не будут записаны на диск, что может занять некоторое время после выполнения rm. Это может повлечь проблемы при установке большого количества файлов на файловую систему, где не хватает места для помещения всех файлов дважды.

Этот, и другие документы, могут быть скачаны с ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

По вопросам связанными с FreeBSD, прочитайте документацию прежде чем писать в <questions@FreeBSD.org>.
По вопросам связанным с этой документацией, пишите <doc@FreeBSD.org>.
По вопросам связанным с русским переводом документации, пишите <frdp@FreeBSD.org.ua>.


Руководство FreeBSDPrevChapter 6 Настройка и оптимизацияNext

6.2 Начальное конфигурирование

6.2.1 Разделы диска

6.2.1.1 Основы построения разделов

Во время разметки жёсткого диска с помощью disklabel(8) или sysinstall(8), важно помнить, что скорость чтения и записи данных уменьшается от внешних к внутренним трекам диска. Самые маленькие и самые часто используемые файловые системы (корневую и раздел подкачки) должны быть расположены в начале диска, в то время как самые большие, такие, как /usr, в конце. Самым оптимальным считается следующий порядок расположения файловых систем: root, swap, /var, /usr.

Размер файловой системы /var определяется предназначением машины. /var используется для хранения почтовых ящиков, очередей печати и лог файлов. Размер почтовых ящиков и лог файлов может расти неограниченно в зависимости от количества пользователей системы и от того, как долго хранятся лог-файлы. Большинству пользователей никогда не потребуется гигабайт, но помните, что /var/tmp должен быть достаточно большим для пакетов.

В разделе /usr содержит большинство файлов, необходимых для поддержки системы, ports(7) (порты, рекомендуется) и исходные тексты (опционально). Оба эти каталога опциональны при установке. Для этого раздела рекомендуется как минимум 2 гигабайта.

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

Note: Многие пользователи обнаружили, что размер разделов, предлагаемый sysinstall(8)'ом по умолчанию, иногда меньше подходящего для разделов /var и /. Тщательно планируйте размер разделов и не жалейте места.

6.2.1.2 Раздел подкачки

Как правило, размер раздела подкачки должен быть равен удвоенному размеру оперативной памяти. Например, если на машине установлено 128 мегабайт памяти, раздел подкачки должен быть 256 мегабайт. Системы с меньшим количеством памяти могут работать лучше с большим объёмом раздела подкачки. Не рекомендуется устанавливать размер раздела подкачки меньше 256 мегабайт, необходимо также принять во внимание возможное наращивание объема установленной на машине памяти. Алгоритмы кэширования VM настроены на максимальное быстродействие, когда размер раздела подкачки равен как минимум удвоенному размеру памяти. Заниженный размер раздела подкачки может привести к неэффективной работе постраничного сканирования VM и вызвать проблемы при увеличении объёма памяти.

На больших системах с несколькими SCSI дисками (или несколькими IDE дисками, находящимися на разных контроллерах), рекомендуется создавать раздел подкачки на каждом диске (до четырёх дисков). Разделы подкачки должны быть примерно одного размера. Ядро не накладывает ограничений на размер раздела подкачки, но внутренние структуры позволяют иметь общий размер разделов подкачки, равный наибольшему, умноженному на четыре. Выделение под разделы подкачки примерно одинакового места позволить ядру оптимально расположить разделы подкачки. Установка размера подкачки больше требуемого нормальна, даже если этот объем не используется. В этих условиях может быть проще восстановиться после зависания программы перед тем, как возникнет необходимость перезагрузки.

6.2.1.3 Зачем нужны разделы?

Некоторые пользователи считают, что лучше использовать один большой раздел, но есть несколько причин, по которым этого лучше не делать. Во-первых, у каждого раздела свои характеристики, и отделяя их, можно выполнить соответствующие настройки. Например, корневая и файловая система и /usr в основном предназначены для чтения, без большого объема записи. В то же время множество операций чтения и записи выполняется в /var и /var/tmp.

При правильном размещении и выборе размера разделов системы, фрагментация в более маленьких разделах, куда часто записываются данные, не перенесётся на остальные разделы. Размещение самых часто используемых разделов ближе к началу диска увеличит скорость ввода/вывода там, где она нужна больше всего. Хотя производительность важна и для больших дисков, передвижение их ближе к концу диска не повлечёт значительного уменьшения быстродействия по сравнению с перемещением ближе к концу диска /var. И, наконец, разделы существуют и из соображений безопасности. Наличие маленького аккуратного корневого раздела, доступного только для чтения даёт значительные шансы на "выживание" после краха системы.

Этот, и другие документы, могут быть скачаны с ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

По вопросам связанными с FreeBSD, прочитайте документацию прежде чем писать в <questions@FreeBSD.org>.
По вопросам связанным с этой документацией, пишите <doc@FreeBSD.org>.
По вопросам связанным с русским переводом документации, пишите <frdp@FreeBSD.org.ua>.


Руководство FreeBSDPrevChapter 6 Настройка и оптимизацияNext

6.13 Изменение ограничений, накладываемых ядром

6.13.1 Ограничения на Файлы/Процессы

6.13.1.1 kern.maxfiles

Значение kern.maxfiles может быть увеличено или уменьшено в зависимости от потребностей вашей системы. Эта переменная определяет максимальное число дескрипторов файлов. Когда таблица дескрипторов файлов полна, в очереди системных сообщений появится сообщение ``file: table is full''. Это сообщение может быть прочитано с помощью команды dmesg.

Каждый открытый файл, сокет или буфер использует дескриптор файла. Широкомасштабному серверу может понадобиться много тысяч дескрипторов файлов, в зависимости от количества программ, одновременно выполняемых на сервере.

Стандартное значение kern.maxfile определяется переменной MAXUSERS в вашем файле конфигурации ядра. Значение kern.maxfiles увеличивается пропорционально значению MAXUSERS. При компилировании ядра, нужно установить эту переменную согласно потребностям вашей системы. Исходя из значения этой переменной, ядро устанавливает значения большинства предопределённых переменных. Даже если предполагается, что к компьютеру не будут одновременно подсоединяться 256 пользователей, требуемые ресурсы могут быть такими же, как у крупномасштабного сервера.

Note: Начиная с FreeBSD 4.5, установка значения MAXUSERS в 0 в файле конфигурации ядра выберет подходящее значение по умолчанию, основанное на объеме оперативной памяти системы.

6.13.1.2 kern.ipc.somaxconn

Переменная sysctl kern.ipc.somaxconn ограничивает размер очереди для приема новых TCP соединений. Значение по умолчанию 128 слишком мало для надежной обработки новых соединений для нагруженного web сервера. Для такого сервера рекомендуется увеличить это значение до 1024 или выше. Даемон сервиса может сам ограничивать очередь приема новых соединений (например, sendmail(8), или Apache), но обычно в файле настройки даемона есть директива для настройки длины очереди. Более длинная очередь также помогает избежать атак Denial of Service (DoS).

6.13.2 Сетевые Ограничения

Опция ядра NMBCLUSTERS обуславливает количество Mbuf, доступных на машине. На сервере с большим трафиком и маленьким Mbuf производительность будет пониженной. Каждый кластер представлен двумя килобайтами памяти, поэтому значение 1024 означает 2 мегабайта памяти ядра, зарезервированной для сетевых буферов. Для определения оптимального значения необходимо провести простые вычисления. Если у вас веб сервер, который может обслуживать 1000 одновременных соединений, и каждое соединение ``съедает'' 16 K буфера приема и 16 K буфера отправки, вам потребуется 32 MB памяти под буферы. Хорошее правило -- умножение этого значения на 2, 2x32 MB / 2 KB = 64 MB / 2 kB = 32768. Мы рекомендуем значения между 4096 и 32768 для машин с большим объемом памяти. Не указывайте произвольно большое значение параметра, это может привести к падению системы при загрузке. Используйте netstat(1) -m для определения количества используемых сетевых кластеров.

Для настройки в процессе загрузки используйте в loader переменную kern.ipc.nmbclusters. Только в старых версиях FreeBSD потребуется пересобрать ядро (config(8)) с измененным параметром NMBCLUSTERS.

Для нагруженных серверов, интенсивно использующих системный вызов sendfile(2), может потребоваться увеличения буферов sendfile(2) с помощью параметра конфигурации ядра NSFBUFS, или изменения значения путем установки переменной в /boot/loader.conf (обратитесь к loader(8) за подробностями). Общий признак того, что параметр требуется изменить -- состояние процессов ``sfbufa''. Переменная sysctl kern.ipc.nsfbufs установлена только для чтения. Этот параметр увеличивается вместе с kern.maxusers, хотя может потребоваться увеличить его отдельно.

Important: Даже если сокет помечен как неблокирующий, вызов sendfile(2) на неблокирующем сокете может вызвать блокирование sendfile(2), пока не станет доступным достаточное количество struct sf_buf.

6.13.2.1 net.inet.ip.portrange.*

Переменные sysctl net.inet.ip.portrange.* контролируют диапазоны номеров портов, автоматически привязываемых к TCP и UDP сокетам. Есть три диапазона: нижний диапазон, диапазон по умолчанию и верхний диапазон. Большинство сетевых программ используют диапазон по умолчанию, контролируемый net.inet.ip.portrange.first и net.inet.ip.portrange.last, установленными соответственно в 1024 и 5000. Диапазоны портов привязки используются исходящих соединений и при некоторых условиях портов может не хватить. Это чаще всего происходит на сильно загруженном прокси сервере. Диапазон портов не становится проблемой при работе серверов, которые обрабатывают в основном входящие соединения, или с небольшим количеством исходящих соединений, например mail relay. Для ситуаций, когда возможен недостаток портов, рекомендуется немного увеличить net.inet.ip.portrange.last. Может подойти значение 10000, 20000, или 30000. Учтите также возможное влияние межсетевого экрана при изменении диапазона портов. Некоторые могут блокировать большие диапазоны портов (обычно с небольшими номерами) и вынуждают использовать более высокие диапазоны для исходящих соединений. По этой причине рекомендуется настроить значение net.inet.ip.portrange.first.

6.13.2.2 TCP Bandwidth Delay Product

TCP Bandwidth Delay Product Limiting похоже на TCP/Vegas в NetBSD. Оно может быть включено установкой переменной sysctl net.inet.tcp.inflight_enable в 1. Система попытается вычислить задержку пакетов для каждого соединения и ограничить объем данных в очереди сети до значения, требуемого для поддержания оптимальной пропускной способности.

Эта возможность полезна при передаче данных через модемы, Gigabit Ethernet, или даже через высокоскоростные WAN соединения (или любые другие соединения с большой задержкой передачи), особенно если вы также используете изменение размера окна или настроили большое окно передачи. Если вы включили этот параметр, убедитесь также, что переменная net.inet.tcp.inflight_debug установлена в 0 (отладка выключена), а для использования в реальных может понадобиться установка переменной net.inet.tcp.inflight_min к значению как минимум 6144. Но учтите, что установка большого значения этой переменной может фактически отключить ограничение в зависимости от вида соединения. Ограничение уменьшает количество данных на определенном маршруте и управляет очередью пакетов, как и уменьшает общее количество данных в очереди локального интерфейса хоста. С меньшим количеством пакетов в очереди двусторонние интерактивные соединения, особенно на медленных линиях, могут проходить быстрее. Но имейте ввиду, что эта функция работает только при передаче данных (передача данных / сторона сервера). Она не работает при получении данных (загрузке).

Изменение значения переменной net.inet.tcp.inflight_stab не рекомендуется. Этот параметр по умолчанию равен 20, что означает добавление 2 пакетов к вычислению задержки передачи. Дополнительное окно требуется для стабилизации алгоритма и улучшения ответной реакции на изменение условий, но также приводит к большему времени ping на медленных соединениях (задержка все же гораздо меньше, чем без алгоритма inflight). Вы можете попробовать уменьшить этот параметр до 15, 10 или 5; а также уменьшить net.inet.tcp.inflight_min (например, до 3500) для получения желаемого эффекта. Уменьшение значений этих параметров может использоваться только как крайняя мера.

Этот, и другие документы, могут быть скачаны с ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

По вопросам связанными с FreeBSD, прочитайте документацию прежде чем писать в <questions@FreeBSD.org>.
По вопросам связанным с этой документацией, пишите <doc@FreeBSD.org>.
По вопросам связанным с русским переводом документации, пишите <frdp@FreeBSD.org.ua>.


Руководство FreeBSDPrevChapter 6 Настройка и оптимизацияNext

6.7 Использование rc в FreeBSD 5.X

Предоставил Tom Rhodes.

В FreeBSD недавно была интегрирована из NetBSD система rc.d, используемая для старта системы. Многие из файлов в каталоге /etc/rc.d предназначены для основных сервисов, они могут управляться параметрами start, stop, и restart. Например, sshd(8) может быть перезапущен следующей командой:

# /etc/rc.d/sshd restart

Эта процедура похожа для других сервисов. Конечно, сервисы обычно запускаются автоматически, как указано в rc.conf(5). Например, включение даемона Network Address Translation при запуске выполняется простым добавлением следующей строки в /etc/rc.conf:

natd_enable="YES"

Если natd_enable="NO" уже присутствует, просто измените NO на YES. Скрипты rc автоматически загрузят все другие зависимые сервисы, как описано ниже.

Поскольку система rc.d в основном предназначена для запуска/отключения сервисов во время запуска/отключения системы, стандартные параметры start, stop и restart будут работать только если установлена соответствующая переменная в /etc/rc.conf. Например, команда выше sshd restart будет работать только если переменная sshd_enable в файле /etc/rc.confустановлена в YES. Для выполнения скриптов независимо от установок в /etc/rc.conf, параметры start, stop или restart необходимо задавать с префиксом ``force''. Например, для перезапуска sshd независимо от установок в /etc/rc.conf, выполните следующую команду:

# /etc/rc.d/sshd forcerestart

Проверить состояние переменной в файле /etc/rc.conf легко: запустите соответствующий скрипт из rc.d с параметром rcvar. Проверка переменной для sshd выполняется следующей командой:

# /etc/rc.d/sshd rcvar
# sshd
$sshd_enable=YES

Note: Вторая строка (# sshd) это вывод команды команды sshd, а не консоль root.

Чтобы определить, запущен ли сервис, существует параметр status. Например для проверки того, запущен ли sshd, выполните:

# /etc/rc.d/sshd status
sshd is running as pid 433.

Возможна также перегрузка (reload) сервиса. Скрипт, запущенный с этим параметром, попытается отправить сервису сигнал, вызывающий перезагрузку файлов настройки. В большинстве случаев это означает отправку сервису сигнала SIGHUP.

Структура rcNG используется не только для сетевых серверов, она отвечает также за большую часть инициализации системы. Рассмотрим, к примеру, файл bgfsck. Во время выполнения этот скрипт выводит следующее сообщение:

Starting background file system checks in 60 seconds.

Следовательно, этот файл используется для фоновой проверки файловых систем, которая выполняется только в процессе инициализации системы.

Функционирование многих сервисов системы зависит от корректной работы других сервисов. Например, NIS и другие основанные на RPC сервисы могут не запуститься, пока не загрузится rpcbind (portmapper). Для разрешения этой проблемы, в начале каждого скрипта в комментарии включаются информация о зависимостях и другие метаданные. Программа rcorder(8) для разбора этих комментариев во время старта системы для определения порядка, в котором должны вызываться системные сервисы в соответствии с зависимостями. В начало каждого стартового файла должны быть включены следующие строки:

Используя этот метод, администратор может легко контролировать системные сервисы без использования ``уровней запуска'', как в некоторых других операционных системах UNIX®.

Дополнительную информацию о системе rc.d FreeBSD 5.X можно найти на страницах справочника rc(8) и and rc.subr(8).

Этот, и другие документы, могут быть скачаны с ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

По вопросам связанными с FreeBSD, прочитайте документацию прежде чем писать в <questions@FreeBSD.org>.
По вопросам связанным с этой документацией, пишите <doc@FreeBSD.org>.
По вопросам связанным с русским переводом документации, пишите <frdp@FreeBSD.org.ua>.


Руководство FreeBSDPrevChapter 6 Настройка и оптимизацияNext

6.5 Запуск сервисов

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

Программное обеспечение, установленное из коллекции портов или пакетов обычно записывает свои скрипты в /usr/local/etc/rc.d который выполняется с аргументом start при запуске и с аргументом stop при завершении работы системы. Этот метод запуска рекомендуется, если вы запускаете сервисы как root, или же они должны быть запущены с привилегиями root. Эти скрипты устанавливаются вместе с пакетами, и соответственно, при удалении пакетов скрипты будут также удалены.

Типичный скрипт из /usr/local/etc/rc.d, выполняющийся при запуске выглядит следующим образом:

#!/bin/sh
echo -n ' FooBar'

case "$1" in
start)
        /usr/local/bin/foobar
        ;;
stop)
        kill -9 `cat /var/run/foobar.pid`
        ;;
*)
        echo "Usage: `basename $0` {start|stop}" >&2
        exit 64
        ;;
esac

exit 0
    

Стартовые скрипты FreeBSD ищут в каталоге /usr/local/etc/rc.d скрипты с расширением .sh, исполняемые пользователем root. Обнаруженные скрипты выполняются с с параметром start при старте системы и с параметром stop при завершении работы системы. Поэтому если вы хотите использовать пример скрипта выше и запускать его во время старта системы, сохраните его в каталоге /usr/local/etc/rc.d с именем FooBar.sh и убедитесь, что он исполняемый. Вы можете сделать скрипт исполняемым с помощью chmod(1), как показано ниже:

# chmod 755 FooBar.sh

Некоторые сервисы должны быть запущены inetd(8) при установке соединения с определённым портом. Это может понадобиться, например, для почтовых серверов (POP, IMAP, и т.д.). Для этого нужно отредактировать файл /etc/inetd.conf. Подробнее о работе с этим файлом вы можете прочитать в inetd(8).

Некоторые дополнительные системные сервисы могут быть не учтены в файле /etc/rc.conf. Тогда для их запуска нужно прописать соответствующую команду в /etc/rc.local. Во FreeBSD 3.1 не предусмотрен /etc/rc.local; но считается признаком хорошего тона создание этого файла администратором. Заметьте, что rc.local используется для запуска сервисов только в крайнем случае. Если есть лучший способ запустить сервис, используйте его.

Note: Не записывайте свои команды в /etc/rc.conf. Для запуска демонов, или для выполнения вашей команды во время запуска - запишите ваш скрипт в /usr/local/etc/rc.d.

Также допускается использование cron(8) для запуска системных сервисов. Этот метод обладает рядом преимуществ, которые заключаются не только в том, что cron(8) запускает эти процессы, как владелец crontab, но и в том, что сервисы могут быть запущены и не привилегированными пользователями.

Очень удобно пользоваться возможностью cron(8), которая заключается в том, что если вместо времени указать @reboot, запланированная программа будет запущена сразу после запуска cron(8) после перезагрузки системы.

Этот, и другие документы, могут быть скачаны с ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

По вопросам связанными с FreeBSD, прочитайте документацию прежде чем писать в <questions@FreeBSD.org>.
По вопросам связанным с этой документацией, пишите <doc@FreeBSD.org>.
По вопросам связанным с русским переводом документации, пишите <frdp@FreeBSD.org.ua>.


Руководство FreeBSDPrevChapter 6 Настройка и оптимизацияNext

6.11 Настройка с помощью sysctl

sysctl(8) - это интерфейс, позволяющий вам вносить изменения в работающую систему FreeBSD. Эти изменения могут касаться многих опций стека TCP/IP и виртуальной памяти и могут облегчить опытному администратору жизнь. Более пяти тысяч системных переменных могут быть прочитаны и записаны с помощью sysctl(8).

По своей сути, sysctl(8) выполняет две функции: чтение и изменение настроек системы.

Для просмотра всех доступных для чтения переменных::

% sysctl -a

Чтобы прочитать определённую переменную, например, kern.maxproc, введите:

% sysctl kern.maxproc
kern.maxproc: 1044

Для присвоения значения переменной, используйте выражение вида переменная=значение:

# sysctl kern.maxfiles=5000
kern.maxfiles: 2088 -> 5000

Изменяемые с помощью sysctl переменные обычно принимают значения либо строкового, либо целого, либо булевого типа. Переменные булевого типа могут принимать два значения (1 (истина) и 0 (ложь)).

6.11.1 Переменные sysctl(8) только для чтения

Предоставил Tom Rhodes.

В некоторых случаях желательно изменить переменные sysctl(8) только для чтения. Хотя это не рекомендуется, иногда другого способа решить проблему нет.

Например, на некоторых моделях лэптопов диапазон памяти устройства cardbus(4) не определяется и выдается приблизительно такая ошибка:

cbb0: Could not map register memory
device_probe_and_attach: cbb0 attach returned 12

Ситуации, похожие на эту, требуют изменения некоторых значений sysctl(8), модификация которых запрещена. Для разрешения этой ситуации пользователь может поместить sysctl(8) ``OID'' в файл /boot/loader.conf.local. Значения по умолчанию хранятся в файле /boot/defaults/loader.conf.

Решение проблемы, приведенной выше, потребует помещения строки hw.pci.allow_unsupported_io_range=1 в вышеупомянутый файл. Теперь cardbus(4) будет работать нормально.

Этот, и другие документы, могут быть скачаны с ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

По вопросам связанными с FreeBSD, прочитайте документацию прежде чем писать в <questions@FreeBSD.org>.
По вопросам связанным с этой документацией, пишите <doc@FreeBSD.org>.
По вопросам связанным с русским переводом документации, пишите <frdp@FreeBSD.org.ua>.


Руководство FreeBSDPrevChapter 6 Настройка и оптимизацияNext

6.9 Настройка виртуальных серверов

Очень часто FreeBSD используется для размещения сайтов, когда один сервер работает в сети как несколько серверов. Это достигается присвоением нескольких сетевых адресов одному интерфейсу.

У сетевого интерфейса всегда есть один ``настоящий'' адрес, хотя он может иметь любое количество ``синонимов'' (alias). Эти алиасы обычно добавляются путём помещения синонимов в /etc/rc.conf.

Синоним для интерфейса fxp0 выглядит следующим образом:

ifconfig_fxp0_alias0="inet xxx.xxx.xxx.xxx netmask xxx.xxx.xxx.xxx"

Заметьте, что алиас записи должны начинаться с alias0 и идти далее в определенном порядке, (например, _alias1, _alias2, и т.д.). Конфигурационный процесс остановится на первом отсутствующем по порядку числе.

Определение маски подсети для синонима очень важно, но к счастью, так же просто. Для каждого интерфейса должен быть один адрес с истинной маской подсети. Любой другой адрес в сети должен иметь маску подсети, состоящую из всех единичек.

Например, рассмотрим случай, когда интерфейс fxp0 подключён к двум сетям, к сети 10.1.1.0 с маской подсети 255.255.255.0 и к сети 202.0.75.16 с маской 255.255.255.240. Мы хотим, чтобы система была видна по IP, начиная с 10.1.1.1 по 10.1.1.5 и с 202.0.75.17 по 202.0.75.20.

Для этого должны быть внесены следующие записи:

 ifconfig_fxp0="inet 10.1.1.1 netmask 255.255.255.0"
 ifconfig_fxp0_alias0="inet 10.1.1.2 netmask 255.255.255.255"
 ifconfig_fxp0_alias1="inet 10.1.1.3 netmask 255.255.255.255"
 ifconfig_fxp0_alias2="inet 10.1.1.4 netmask 255.255.255.255"
 ifconfig_fxp0_alias3="inet 10.1.1.5 netmask 255.255.255.255"
 ifconfig_fxp0_alias4="inet 202.0.75.17 netmask 255.255.255.240"
 ifconfig_fxp0_alias5="inet 202.0.75.18 netmask 255.255.255.255"
 ifconfig_fxp0_alias6="inet 202.0.75.19 netmask 255.255.255.255"
 ifconfig_fxp0_alias7="inet 202.0.75.20 netmask 255.255.255.255"

Этот, и другие документы, могут быть скачаны с ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

По вопросам связанными с FreeBSD, прочитайте документацию прежде чем писать в <questions@FreeBSD.org>.
По вопросам связанным с этой документацией, пишите <doc@FreeBSD.org>.
По вопросам связанным с русским переводом документации, пишите <frdp@FreeBSD.org.ua>.


Руководство FreeBSDPrevChapter 3 Основы UNIXNext

3.2 Виртуальные консоли и терминалы

FreeBSD можно использовать разными способами. Один из них -- набор команд в текстовом терминале. Используйте этот способ, и вся гибкость и мощь систем UNIX® будет в ваших руках. Этот раздел рассказывает о ``терминалах'', ``консолях'' и их использовании в FreeBSD.

3.2.1 Консоль

Если во время установки вы не настроили FreeBSD для автоматического запуска графической среды при загрузке, система запросит ввод логина сразу после завершения стартовых скриптов. Вы увидите примерно следующее:

Additional ABI support:.
Local package initialization:.
Additional TCP options:.

Fri Sep 20 13:01:06 EEST 2002

FreeBSD/i386 (pc3.example.org) (ttyv0)

login:

В вашей системе сообщение может быть другим, но очень похожим на это. В данный момент нас интересуют последние две строки. Вторая с конца строка:

FreeBSD/i386 (pc3.example.org) (ttyv0)

В этой строке содержится немного информации о только что загруженной системе. Это консоль ``FreeBSD'', работающей на Intel или совместимом процессоре x86 архитектуры[1]. Имя этого компьютера (у каждого компьютера UNIX есть имя) pc3.example.org, и в данный момент вы видите системную консоль -- терминал ttyv0.

Наконец, последняя линия всегда:

login:

Здесь вам предлагается ввести ``имя пользователя'', чтобы войти в FreeBSD. Следующий раздел описывает способ, которым вы можете сделать это.

3.2.2 Вход в FreeBSD

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

Любой многопользовательской системе нужен способ отличать каждого ``пользователя'' от остальных. В FreeBSD (и всех UNIX подобных операционных системах), эта задача решается путем ``входа'' пользователя в систему перед запуском каких-либо программ. У каждого пользователя есть уникальное имя (``имя пользователя'') и персональный, секретный ключ (``пароль''). Перед тем, как разрешить пользователю выполнять какие-либо программы, FreeBSD запрашивает их оба.

Сразу после загрузки FreeBSD и завершения работы стартовых скриптов[2], система предложит вам ввести имя пользователя:

login:

В этом примере, предположим что ваше имя пользователя john. Введите john в этом приглашении и нажмите Enter. Далее должно появиться приглашение ввести ``пароль'':

login: john
Password:

Введите соответствующий имени johnпароль и нажмите Enter. Пароль не виден!. Не беспокойтесь об этом. Это сделано по соображениям безопасности.

Если вы ввели пароль правильно, то сразу же войдете в FreeBSD и можете начать выполнять команды.

Вы увидите сообщение дня (MOTD, или message of the day) за которым последует командная строка (с символом #, $, или %). Это означает, что вы успешно вошли в FreeBSD.

3.2.3 Множественные консоли

Запуск команд UNIX из консоли это конечно хорошо, но FreeBSD может выполнять множество программ одновременно, поэтому наличие одной консоли может быть недостатком. В таком случае очень полезны ``виртуальные консоли''.

FreeBSD может быть настроена для работы с несколькими виртуальными консолями. Вы можете переключаться с одной виртуальной консоли на другую, нажимая соответствующие сочетания клавиш на клавиатуре. У каждой консоли есть свой канал вывода и FreeBSD заботится о том, чтобы правильно перенаправить ввод с клавиатуры и вывод на монитор как только вы переключитесь с одной консоли на другую.

Для переключения между консолями зарезервированы специальные комбинации клавиш[3]. Вы можете использовать сочетания Alt-F1, Alt-F2, до Alt-F8 чтобы переключаться между различными виртуальными консолями в FreeBSD.

При переключении от одной консоли к другой, FreeBSD заботится о сохранении и восстановлении вывода на экран. Результатом является ``иллюзия'' наличия множества ``виртуальных'' экранов и клавиатур, которые могут быть использованы для ввода и запуска команд FreeBSD. Программы, которые вы запускаете на одной виртуальной консоли, не прекращают выполнение когда консоль становится невидимой. Они продолжают выполняться, когда вы переключаетесь на другую виртуальную консоль.

3.2.4 Файл /etc/ttys

В конфигурации по умолчанию FreeBSD запускает восемь виртуальных консолей. Тем не менее это не ограничение оборудования, и вы можете легко настроить систему для загрузки большего или меньшего числа виртуальных консолей. Число и параметры виртуальных консолей задаются в файле /etc/ttys.

Вы можете использовать это файл для настройки виртуальных консолей FreeBSD. Любая не закомментированная линия в этом файле (линия, не начинающаяся с символа #), содержит настройки для одного терминала или виртуальной консоли. Версия этого файла по умолчанию, поставляемая с FreeBSD, содержит настройки для девять виртуальных консолей и включает восемь терминалов. Это линии, начинающиеся с ttyv:

# name  getty                           type    status          comments
#
ttyv0   "/usr/libexec/getty Pc"         cons25  on  secure
# Virtual terminals
ttyv1   "/usr/libexec/getty Pc"         cons25  on  secure
ttyv2   "/usr/libexec/getty Pc"         cons25  on  secure
ttyv3   "/usr/libexec/getty Pc"         cons25  on  secure
ttyv4   "/usr/libexec/getty Pc"         cons25  on  secure
ttyv5   "/usr/libexec/getty Pc"         cons25  on  secure
ttyv6   "/usr/libexec/getty Pc"         cons25  on  secure
ttyv7   "/usr/libexec/getty Pc"         cons25  on  secure
ttyv8   "/usr/X11R6/bin/xdm -nodaemon"  xterm   off secure

За детальным описанием каждой колонки этого файла и всех опций, которые можно указать для настройки виртуальных консолей, обращайтесь к ttys(5).

3.2.5 Консоль в однопользовательском режиме

Детальное описание ``однопользовательского режима'' можно найти в Section 7.6.2. Стоит отметить, что при работе FreeBSD в однопользовательском режиме есть только одна консоль. Виртуальных консолей нет. Установки консоли в однопользовательском режиме можно найти в файле /etc/ttys. Обратите внимание на линию, начинающуюся с console:

# name  getty                           type    status          comments
#
# If console is marked "insecure", then init will ask for the root password
# when going to single-user mode.
console none                            unknown off secure

Note: Как сказано в комментариях выше линии console, можно отредактировать эту линию и изменить secure на insecure. Если вы сделаете это, FreeBSD даже при загрузке в однопользовательском режиме будет запрашивать пароль root.

Будьте осторожны при изменении этого значения на insecure. Если вы забудете пароль root, загрузка в однопользовательский режим сильно усложнится. Это все еще возможно, но несколько более сложно для тех, кто не еще не очень освоился с процессом загрузки FreeBSD и вызова программ.

Notes

[1]

Это следует из обозначения i386. Обратите внимание, что даже если FreeBSD работает не на процессоре Intel 386, это обозначение будет i386. Здесь показан не тип процессора, а его ``архитектура''.

[2]

Стартовые скрипты -- это программы, запускаемые автоматически во время загрузки FreeBSD. Их основная задача -- подготовить систему к запуску других программ и запустить настроенные сервисы, которые будут работать в фоновом режиме, выполняя полезную работу.

[3]

Подробное техническое описание деталей работы драйверов консолей FreeBSD и клавиатуры можно найти в syscons(4), atkbd(4), vidcontrol(1) и kbdcontrol(1). Здесь мы не раскрываем деталей, однако интересующиеся этим вопросом всегда могут обратиться к страницам справочника за более детальным объяснением принципов этой темы.

Этот, и другие документы, могут быть скачаны с ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

По вопросам связанными с FreeBSD, прочитайте документацию прежде чем писать в <questions@FreeBSD.org>.
По вопросам связанным с этой документацией, пишите <doc@FreeBSD.org>.
По вопросам связанным с русским переводом документации, пишите <frdp@FreeBSD.org.ua>.


Руководство FreeBSDPrevChapter 12 Устройства храненияNext

12.5 Запись и использование оптических носителей (CD & DVD)

Текст предоставилMike Meyer.

12.5.1 Введение

Компакт-диски (CD) имеют несколько особенностей, отличающих их от обычных дисков. Во-первых, на них невозможно производить запись. Они спроектированы с расчетом на то, что их можно читать последовательно без задержек на перемещение головки между дорожками. К тому же их гораздо проще переносить от системы к системе, чем носители близкого объема.

У CD имеются дорожки, но они представляют собой последовательность данных, читаемую последовательно, и не являются физической характеристикой диска. Для записи CD во FreeBSD вы готовите файлы данных, которые будут формировать дорожки на компакт-диске, а затем записываете дорожки на CD.

Файловая система ISO 9660 была разработана с учетом этих отличий, К сожалению, она унаследовала ограничения файловых систем, которые были тогда. К счастью, она дает механизм расширений, которые позволяют правильно записанным дискам обходить эти ограничения и при этом продолжать работать с системами, которые не поддерживают эти расширения.

Для создания файла данных, содержащего файловую систему ISO 9660, используется программа sysutils/mkisofs. Она имеет опции, поддерживающие различные расширения, и описана ниже. Вы можете установить её из порта sysutils/mkisofs.

Какой инструмент использовать для записи CD, зависит от того, является ли ваше устройство для записи CD устройством ATAPI или каким-либо другим. С устройствами для записи стандарта ATAPI используется программа burncd, которая является частью комплекта поставки системы. С устройствами SCSI и USB нужно использовать cdrecord из порта sysutils/cdrtools.

burncd поддерживает не все устройства. Для определения того, поддерживается ли устройство, посмотрите список поддерживаемых приводов CD-R/RW.

Note: Если вы используете FreeBSD 5.X, FreeBSD 4.8-RELEASE или более новые версии, то при работе с ATAPI-оборудованием через модуль ATAPI/CAM можно использовать утилиту cdrecord и другие инструменты для SCSI-приводов.

12.5.2 mkisofs

sysutils/mkisofs создаёт файловую систему ISO 9660, которая является образом дерева каталогов в пространстве имён файловой системы UNIX®. В самом простом случае она используется так:

# mkisofs -o imagefile.iso /path/to/tree

Эта команда создаст файл imagefile.iso, содержащий файловую систему ISO 9660, которая является копией дерева каталогов /path/to/tree. Во время работы она будет преобразовывать имена файлов в имена, которые удовлетворяют ограничениям файловой системы ISO 9660, и исключит файлы, которые носят имена, неподходящие для файловой системы ISO.

Для того, чтобы обойти эти ограничения, имеется несколько опций. В частности, -R включает использование расширений Rock Ridge, распространенных в UNIX-системах, с -J будут применены расширения Joliet, используемые в системах от Microsoft, а -hfs может использоваться для создания файловых систем HFS, используемых в Mac OS®.

Для CD, которые будут использоваться только с системами FreeBSD, может использоваться опция -U, отменяющая все ограничения на имена файлов. При использовании с опцией -R генерируется образ файловой системы, идентичный начальному дереву FreeBSD, хотя при этом стандарт ISO 9660 может нарушаться в нескольких местах.

Последней часто используемой опцией является -b. Она используется для указания загрузочного образа для использования при создании загрузочного CD в стандарте ``El Torito''. Этой опции указывается аргумент, который является маршрутом к загрузочному образу из корня дерева, записываемого на CD. Так что, положив, что /tmp/myboot содержит загрузочную систему FreeBSD с загрузочным образом в /tmp/myboot/boot/cdboot, вы можете создать образ файловой системы ISO 9660 в /tmp/bootable.iso следующим образом:

# mkisofs -U -R -b boot/cdboot -o /tmp/bootable.iso /tmp/myboot

Сделав это, и имея в ядре отконфигурированное устройство vn (для FreeBSD 4.X) или md (при использовании FreeBSD 5.X), вы можете смонтировать файловую систему, выполнив:

# vnconfig -e vn0c /tmp/bootable.iso
# mount -t cd9660 /dev/vn0c /mnt

в случае использования FreeBSD 4.X, а для FreeBSD 5.X:

# mdconfig -a -t vnode -f /tmp/bootable.iso -u 0
# mount -t cd9660 /dev/md0 /mnt

В этот момент вы можете проверить, что /mnt и /tmp/myboot идентичны.

Имеется много других опций, которые можно использовать с программой sysutils/mkisofs для тонкой настройки её поведения. В частности: модификации в размещении ISO 9660 и создание дисков в форматах Joliet и HFS. Обратитесь к справочным страницам по mkisofs(8) для получения более подробной информации.

12.5.3 burncd

Если ваше устройство для записи CD соответствует стандарту ATAPI, то для записи ISO-образа на компакт-диск вы можете воспользоваться командой burncd. burncd входит в базовый комплект операционной системы и установлена как /usr/sbin/burncd. Использовать её очень просто, так как параметров у ней немного:

# burncd -f cddevice data imagefile.iso fixate

По этой команде файл imagefile.iso будет скопирован на cddevice. По умолчанию используется устройство /dev/acd0c. Для получения информации о параметрах, задающих скорость записи, выброс диска после записи и запись звуковых данных, обратитесь к burncd(8).

12.5.4 cdrecord

Если ваше устройство для записи CD не соответствует стандарту ATAPI, то для записи компакт-дисков вам нужно пользоваться программой cdrecord. cdrecord не входит в комплект поставки системы; вы должны установить её из порта sysutils/cdrtools или из соответствующего пакаджа. Изменения в системе могут приводить к тому, что откомпилированные версии этой программы работать не будут, или приводить к порче дисков. Поэтому вы должны при обновлении системы либо обновить порт, либо, если вы следуете -STABLE, обновить порт при появлении его новой версии.

Хотя cdrecord имеет много опций, в основном использовать её ещё проще, чем burncd. Запись образа ISO 9660 делается такой командой:

# cdrecord dev=device imagefile.iso

Тонким моментом при использовании cdrecord является определение правильного устройства dev. Чтобы задать параметр правильно, воспользуйтесь флагом -scanbus команды cdrecord, в результате чего может получиться примерно такой результат:

# cdrecord -scanbus
Cdrecord 1.9 (i386-unknown-freebsd4.2) Copyright (C) 1995-2000 Jörg Schilling
Using libscg version 'schily-0.1'
scsibus0:
        0,0,0     0) 'SEAGATE ' 'ST39236LW       ' '0004' Disk
        0,1,0     1) 'SEAGATE ' 'ST39173W        ' '5958' Disk
        0,2,0     2) *
        0,3,0     3) 'iomega  ' 'jaz 1GB         ' 'J.86' Removable Disk
        0,4,0     4) 'NEC     ' 'CD-ROM DRIVE:466' '1.26' Removable CD-ROM
        0,5,0     5) *
        0,6,0     6) *
        0,7,0     7) *
scsibus1:
        1,0,0   100) *
        1,1,0   101) *
        1,2,0   102) *
        1,3,0   103) *
        1,4,0   104) *
        1,5,0   105) 'YAMAHA  ' 'CRW4260         ' '1.0q' Removable CD-ROM
        1,6,0   106) 'ARTEC   ' 'AM12S           ' '1.06' Scanner
        1,7,0   107) *

Здесь приведены соответствующие значения параметров dev для имеющихся устройств. Найдите здесь ваше устройство для записи CD, а в качестве параметров для dev задавайте три числа через запятые. В нашем случае CRW-устройству соответствуют числа 1,5,0, так что правильным параметром будет dev=1,5,0. Имеется более простой способ задать эти значения; обратитесь к справочной информации о cdrecord(1) для выяснения подробностей. Там же находится информация о записи звуковых дорожек, управлении скоростью и другим вещам.

12.5.5 Копирование аудио CD

Вы можете копировать музыкальные CD, извлекая данные аудио с CD в набор файлов, а затем записывая эти файлы на чистый CD. Процесс несколько различен в случаях использования устройств ATAPI и SCSI.

Устройства SCSI

  1. Используйте cdda2wav для извлечения данных аудио.

    % cdda2wav -v255 -D2,0 -B -Owav
  2. Воспользуйтесь cdrecord для записи файлов .wav.

    % cdrecord -v dev=2,0 -dao -useinfo  *.wav

    Значение, соответствующее 2.0, должно быть установлено правильно, как это описано в Section 12.5.4.

Устройства ATAPI

  1. Драйвер устройств ATAPI CD делает каждую дорожку доступной как /dev/acddtnn, где d является номером привода, а nn соответствует номеру дорожки, который записывается двумя десятичными цифрами с нулём в начале, если это нужно. Таким образом, первая дорожка на первом диске будет носить имя /dev/acd0t01, вторая будет именоваться /dev/acd0t02, третья будет носить имя /dev/acd0t03 и так далее.

    Удостоверьтесь, что соответствующий файл имеется в каталоге /dev.

    # cd /dev
    # sh MAKEDEV acd0t99

    Note: Во FreeBSD 5.0 devfs(5) будет автоматически создавать объекты в каталоге /dev и управлять ими, так что использовать MAKEDEV не обязательно.

  2. Извлеките каждую дорожку при помощи команды dd(1). При извлечении файлов вы должны также использовать специфическое значение для размера блока.

    # dd if=/dev/acd0t01 of=track1.cdr bs=2352
    # dd if=/dev/acd0t02 of=track2.cdr bs=2352
    ...
  3. Запишите извлечённые файлы на диск при помощи утилиты burncd. Вы должны указать, что это файлы с аудио, и что burncd должна зафиксировать диск по окончании работы.

    # burncd -f /dev/acd0c audio track1.cdr track2.cdr ... fixate

12.5.6 Копирование компакт-дисков с данными

Вы можете скопировать CD с данными в файл образа, который функционально эквивалентен файлу образа, созданному командой sysutils/mkisofs, и вы можете использовать его для копирования любого CD с данными. В приводимом здесь примере предполагается, что ваш привод CDROM называется acd0. Подставьте название вашего привода CDROM. Символ c должен быть добавлен в конце имени устройства для указания на то, что берётся весь раздел, а в случае CDROM, весь диск.

# dd if=/dev/acd0c of=file.iso bs=2048

Теперь, когда вы имеете образ, вы можете записать его на CD так, как это описано выше.

12.5.7 Использование компакт-диски с данными

Теперь, после того, как вы создали стандартный CDROM с данными, вы, наверное, захотите смонтировать его и считать с него данные. По умолчанию mount(8) предполагает, что файловая система имеет тип ufs. Если вы попытаетесь выполнить что-то вроде:

# mount /dev/cd0c /mnt

вы получите сообщение ``Incorrect super block'', и диск не смонтируется. CDROM не является файловой системой UFS, поэтому попытки смонтировать его таким образом будут терпеть неудачу. Вам просто нужно указать команде mount(8), что файловая система имеет тип ISO9660, и всё должно заработать. Сделайте это, задав параметр -t cd9660 при вызове mount(8). К примеру, если вы хотите смонтировать устройство CDROM, /dev/cd0c, в каталог /mnt, вы должны выполнить:

# mount -t cd9660 /dev/cd0c /mnt

Заметьте, что имя вашего устройства (/dev/cd0c в этом примере) может быть другим, в зависимости от интерфейса, используемого в CDROM. Кроме того, параметр -t cd9660 всего лишь задаёт выполнение утилиты mount_cd9660(8). Пример выше может быть упрощён до:

# mount_cd9660 /dev/cd0c /mnt

Таким способом, вообще говоря, вы можете использовать компакт-диски любого производителя. Диски с некоторыми расширениями ISO 9660 могут, однако, работать со странностями. К примеру диски Joliet хранят все имена файлов в виде последовательностей двухбайтовых символов Unicode. Ядро FreeBSD (пока ещё) не может работать с Unicode, поэтому не английские символы выводятся в виде знаков вопроса. (Если в работаете с FreeBSD 4.3 или более поздней версией, то в драйвере CD9660 имеется механизм для динамической загрузки соответствующей таблицы преобразования Unicode. Модули для некоторых распространённых кодировок могут быть получены из порта sysutils/cd9660_unicode.)

Время от времени вы можете получать сообщения ``Device not configured'' при попытке смонтировать CDROM. Это обычно означает, что привод CDROM полагает, что в нём нет диска, или что привод не виден на шине. Приводу CDROM может понадобиться несколько секунд, чтобы понять, что он был закрыт, так что будьте терпеливы.

Иногда SCSI CDROM может потеряться из-за того, что у него не было достаточно времени, чтобы ответить на сброс шины. Если у вас имеется SCSI CDROM, то, пожалуйста, добавьте следующий параметр в конфигурацию вашего ядра и перестройте его.

options SCSI_DELAY=15000

Это укажет вашей шине SCSI выдерживать 15-секундную паузу во время загрузки, чтобы дать вашему приводу CDROM шанс ответить на сброс шины.

12.5.8 Запись необработанных данных на компакт-диски

Вы можете предпочесть запись файла непосредственно на CD без создания файловой системы ISO 9660. Некоторые поступают так при создании резервных копий. Это выполняется гораздо быстрее. чем запись стандартного компакт-диска:

# burncd -f /dev/acd1c -s 12 data archive.tar.gz fixate

Для извлечения данных, записанных так на компакт-диск, вы должны считывать данные из файла непосредственного доступа к устройству:

# tar xzvf /dev/acd1c

Вы не можете монтировать этот диск как обычный CDROM. Такой компакт-диск не может быть прочитан ни в какой другой операционной системе, кроме FreeBSD. Если вы хотите монтировать CD или обменяться данными с другой операционной системой, то вы должны использовать sysutils/mkisofs так, как это было описано выше.

12.5.9 Использование драйвера ATAPI/CAM

Этот драйвер позволяет работать с ATAPI-устройствами (приводы CD-ROM, CD-RW, DVD и так далее) через подсистему SCSI, таким образом расширяя использование таких приложений, как sysutils/cdrdao или cdrecord(1).

Для использования этого драйвера вам необходимо добавить в файл конфигурации ядра следующие строки:

device atapicam
device scbus
device cd
device pass

Кроме того, в файле конфигурации ядра должны быть следующие строки:

device ata
device atapicd

Обе строки уже должны там присутствовать.

После этого перестройте и установите ваше новое ядро, выполните перезагрузку машины. В процессе загрузки ваш пишущий привод должен появиться примерно следующим образом:

acd0: CD-RW <MATSHITA CD-RW/DVD-ROM UJDA740> at ata1-master PIO4
cd0 at ata1 bus 0 target 0 lun 0
cd0: <MATSHITA CDRW/DVD UJDA740 1.00> Removable CD-ROM SCSI-0 device
cd0: 16.000MB/s transfers
cd0: Attempt to query device size failed: NOT READY, Medium not present - tray closed

Теперь с ним можно работать через устройство /dev/cd0, например, чтобы смонтировать CD-ROM в каталог /mnt, просто наберите следующую команду:

# mount -t cd9660 /dev/cd0c /mnt

Для получения SCSI-адреса пишущего привода, вы можете, работая как пользователь root, запустить такую команду:

# camcontrol devlist
<MATSHITA CDRW/DVD UJDA740 1.00>   at scbus1 target 0 lun 0 (pass0,cd0)

Таким образом, 1,0,0 будет SCSI-адресом для использования с cdrecord(1) и другими приложениями для работы со SCSI.

Для получения дополнительной информации об ATAPI/CAM и системе SCSI, обратитесь к страницам справочной системы по atapicam(4) и cam(4).

Этот, и другие документы, могут быть скачаны с ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

По вопросам связанными с FreeBSD, прочитайте документацию прежде чем писать в <questions@FreeBSD.org>.
По вопросам связанным с этой документацией, пишите <doc@FreeBSD.org>.
По вопросам связанным с русским переводом документации, пишите <frdp@FreeBSD.org.ua>.


Руководство FreeBSDPrevChapter 21 На переднем крае разработокNext

21.2 FreeBSD-CURRENT против FreeBSD-STABLE

Во FreeBSD имеется две ветки разработки: FreeBSD-CURRENT и FreeBSD-STABLE. Этот раздел описывает каждую из них и объясняет, как синхронизировать вашу систему с любой из веток. Сначала будет обсуждаться ветка FreeBSD-CURRENT, затем FreeBSD-STABLE.

21.2.1 Как следовать текущим разработкам во FreeBSD

Пока вы читаете этот текст, помните, что FreeBSD-CURRENT является ``передовым краем'' работ над FreeBSD. Предполагается, что пользователи FreeBSD-CURRENT технически более грамотны и могут решать проблемы с системой самостоятельно. Если вы являетесь во FreeBSD новичком, вам лучше сначала дважды подумать, прежде чем её устанавливать.

21.2.1.1 Что такое FreeBSD-CURRENT?

FreeBSD-CURRENT является последними рабочими версиями исходных текстов FreeBSD. Сюда включаются неоконченные работы, экспериментальные изменения и промежуточные механизмы, которые могут присутствовать, а могут и отсутствовать в следующем официальном релизе программного обеспечения. Хотя многие из разработчиков FreeBSD выполняют компиляцию из исходных текстов FreeBSD-CURRENT ежедневно, случаются периоды, когда исходные тексты заведомо не могут быть откомпилированы. Такие проблемы обычно решаются так быстро, как это возможно, но всё-таки момент, когда вы сгрузили исходные тексты FreeBSD-CURRENT, может повлиять на то, содержат они мину замедленного действия или очень нужную функциональность!

21.2.1.2 Кому нужна FreeBSD-CURRENT?

FreeBSD-CURRENT предназначается трём основным заинтересованным группам:

  1. Члены команды разработчиков FreeBSD, активно работающие над некоторой частью дерева исходных текстов и для кого работа в ``current'' является абсолютной необходимостью.

  2. Члены команды разработчиков FreeBSD, которые являются активными тестерами. Они тратят свое время на исправление проблем для того, чтобы FreeBSD-CURRENT оставалась, насколько это возможно, нормально работающей системой. Есть также люди, которые вносят важные предложения по изменениям и общему направлению развития FreeBSD и присылают свои патчи, реализующие эти изменения.

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

21.2.1.3 Чем FreeBSD-CURRENT не является?

  1. Быстрым способом получить предварительную версию, в случае, если вы услышали, что здесь появилась некая крутая возможность, и вы хотите быть первым в вашем микрорайоне, у кого она есть. Здесь быть первым из тех, кто имеет это программное обеспечение означает также быть первым из тех, кто столкнулся с ошибками в нём.

  2. Быстрым способом получения исправлений. Любая версия FreeBSD-CURRENT является в равной мере как источником исправлений существующих ошибок, так и источником появления новых.

  3. ``Официально поддерживаемой'' каким бы то ни было способом. Мы прилагаем все усилия, чтобы помочь тем, кто изначально принадлежит одной из трех ``признанных'' групп пользователей FreeBSD-CURRENT, но у нас просто нет времени на техническую поддержку. Это не потому, что мы гадкие и злые люди, которые ни за что не будут помогать другим (если бы это было так, мы бы не создали FreeBSD). Мы просто не в силах отвечать на сотни сообщений в день и работать над FreeBSD! Если бы стоял выбор между тем, отвечать ли на множество вопросов об экспериментально коде или продолжать работу над совершенствованием FreeBSD, большинство разработчиков проголосовало бы за последнее.

21.2.1.4 Использование FreeBSD-CURRENT

  1. Подпишитесь на списки рассылки freebsd-current и cvs-all. Это не просто хорошая идея, это необходимость. Если вы не являетесь участником списка рассылки freebsd-current, то вы не увидите замечаний, высказываемых о текущем состоянии системы и в итоге можете столкнуться со множеством проблем, которые уже были найдены и решены другими. Ещё хуже, если вы пропустите важные сообщения, касающиеся жизнеспособности вашей системы.

    Список рассылки cvs-all позволит вам для каждого изменения увидеть соответствующую запись в журнале коммитов, а они порой содержат относящуюся к делу информацию о возможных побочных эффектах.

    Чтобы подключиться к этим и другим доступным спискам рассылки, перейдите по ссылке http://lists.FreeBSD.org/mailman/listinfo и щёлкните на списке, к которому вы хотите подключиться. Инструкции по дальнейшим действиям размещены там же.

  2. Сгрузите исходные тексты с зеркального сайта FreeBSD. Вы можете сделать это одним из следующих двух способов:

    1. При помощи программы cvsup с sup-файлом standard-supfile, который можно найти в каталоге /usr/share/examples/cvsup. Это наиболее рекомендуемый метод, так как он позволяет вам сгрузить набор исходных текстов один раз полностью, а затем сгружать только произошедшие изменения. Многие запускают cvsup при помощи программы cron и получают самые свежие исходные тексты автоматически. Измените примерный файл supfile выше и отконфигурируйте cvsup для вашего окружения.

    2. При помощи CTM. Если у вас очень плохое подключение (дорогое или предоставляющее доступ только к электронной почте), то CTM можно рассматривать как вариант. Однако в нем много "подводных камней", и его использование может привести к появлению неправильных файлов. Это привело к тому, что этот способ используется редко, что, в свою очередь, увеличивает шанс появления периодов его неработы. Мы рекомендуем использовать CVSup всем, чья скорость подключения равна 9600 bps и выше.

  3. Если вам нужны исходные тексты для компиляции и запуска, а не просто для ознакомления, то сгружайте исходные тексты ветки FreeBSD-CURRENT полностью, а не отдельные ее части. Причиной является то, что многие части исходных текстов зависят от других обновлений где-то еще, и попытка компиляции лишь некоторой части программ в этом случае гарантированно вызовет проблемы.

    Перед тем, как компилировать FreeBSD-CURRENT, внимательно прочтите файл Makefile в каталоге /usr/src. В процессе обновления вы по крайней мере раз должны пройти через установку нового ядра и перестроение всех компонентов системы. Чтение Список рассылки, посвящённый обсуждению FreeBSD-CURRENT и /usr/src/UPDATING позволит вам быть в курсе всех процедур, которые иногда бывают необходимы в процессе работы над следующим релизом.

  4. Будьте активным подписчиком! Если вы работаете с FreeBSD-CURRENT, мы хотим знать, что вы думаете о ней, особенно если у вас есть соображения по ее улучшению или исправлению ошибок. Пожелания, к которым прилагается код, всегда принимаются с большим энтузиазмом!

21.2.2 Работа с веткой stable во FreeBSD

21.2.2.1 Что такое FreeBSD-STABLE?

FreeBSD-STABLE является нашей веткой разработки, из которой делаются основные релизы. Изменения в этой ветке происходят с разной скоростью, и при этом предполагается, что сначала они были выполнены для FreeBSD-CURRENT в целях тестирования. Однако эта ветка остаётся веткой для разработки, а это значит, что в любой момент времени исходные тексты FreeBSD-STABLE могут оказаться неприменимы для некоторой задачи. Это просто ещё одна ветка при разработке, а не ресурс для конечных пользователей.

21.2.2.2 Кому нужна FreeBSD-STABLE?

Если вы заинтересованы в отслеживании процесса разработки FreeBSD или хотите принять в нём участие, особенно в той мере, насколько это касается выпуска следующего релиза FreeBSD с ``точкой'', то вам необходимо отслеживать FreeBSD-STABLE.

Хотя правда то, что исправления, касающиеся безопасности, также делаются и в ветке FreeBSD-STABLE, вам не нужно для этого отслеживать FreeBSD-STABLE. Каждый бюллетень по безопасности FreeBSD описывает, как решить проблему для тех релизов, которых он касается [1] , а отслеживание ветки разработки в полном объёме только ради исправлений пробелов в безопасности приводит к появлению большого количества дополнительных ненужных изменений.

Хотя мы прилагаем все усилия, чтобы ветка FreeBSD-STABLE всегда компилировалась и работала, этого нельзя гарантировать. Кроме того, несмотря на то, что перед включением в FreeBSD-STABLE, код разрабатывается в FreeBSD-CURRENT, гораздо большее количество людей работают с FreeBSD-STABLE, чем с FreeBSD-CURRENT. Поэтому неудивительно, что в FreeBSD-STABLE иногда обнаруживаются ошибки и всплывают непредвиденные ситуации, которые не проявляли себя в FreeBSD-CURRENT.

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

Если у вас нет возможности сделать это, то мы рекомендуем работать с самой последним релизом FreeBSD и использовать механизм обновления бинарных файлов для перехода от релиза к релизу.

21.2.2.3 Использование FreeBSD-STABLE

  1. Подпишитесь на список рассылки freebsd-stable. Это позволит вам узнавать о зависимостях процесса компиляции, которые могут появиться в ветке FreeBSD-STABLE или любых других проблемах, требующих особого внимания. В этом списке рассылки разработчики также делают объявления о спорных исправлениях или добавлениях, давая пользователям возможность высказать свое мнение о возможных тонких моментах.

    Список рассылки cvs-all позволит вам для каждого изменения увидеть соответствующую запись в журнале коммитов, а они порой содержат относящуюся к делу информацию о возможных побочных эффектах.

    Чтобы подключиться к этим и другим доступным спискам рассылки, перейдите по ссылке http://lists.FreeBSD.org/mailman/listinfo и щёлкните на списке, к которому вы хотите подключиться. Инструкции по дальнейшим действиям размещены там же.

  2. Если вы устанавливаете новую систему и хотите, чтобы она работала максимально стабильно, то можете просто сгрузить самый свежий снэпшот ветки по адресу и установить его, как любой другой релиз. Либо вы можете установить самый последний релиз FreeBSD-STABLE, сгрузив его с зеркалирующих сайтов, а затем следовать инструкциям ниже по обновлению исходных текстов вашей системы до самой последней версии FreeBSD-STABLE.

    Если вы уже работаете с предыдущим релизом FreeBSD и хотите обновить его из исходных текстов, то вы можете легко это сделать с зеркального сайта FreeBSD. Это можно сделать одним из двух способов:

    1. При помощи программы cvsup с sup-файлом stable-supfile из каталога /usr/share/examples/cvsup. Это наиболее рекомендуемый метод, так как он позволяет вам сгрузить набор исходных текстов один раз полностью, а затем сгружать только произошедшие изменения. Многие запускают cvsup при помощи программы cron и получают самые свежие исходные тексты автоматически. Измените примерный файл supfile выше и отконфигурируйте cvsup для вашего окружения.

    2. При помощи CTM. Если у вас нет быстрого и недорогого подключения к Интернет, то это как раз тот метод, которым вы должны воспользоваться.

  3. Итак, если вам нужен быстрый доступ к исходным текстам и нагрузка на каналы связи для вас не проблема, то используйте cvsup или ftp. В противном случае воспользуйтесь CTM.

  4. Перед тем, как компилировать FreeBSD-STABLE, внимательно прочтите файл Makefile в каталоге /usr/src. В процессе обновления вы по крайней мере раз должны пройти через установку нового ядра и перестроение всех компонентов системы. Чтение Список рассылки, посвящённый обсуждению FreeBSD-STABLE и /usr/src/UPDATING позволит вам быть в курсе всех процедур, которые иногда бывают необходимы при переходе к следующему релизу.

Notes

[1]

Это не совсем так. Мы не можем поддерживать старые релизы FreeBSD бесконечно долго, хотя мы поддерживаем их многие годы. Полное описание текущей политики безопасности относительно старых релизов FreeBSD можно найти по адресу http://www.FreeBSD.org/security/.

Этот, и другие документы, могут быть скачаны с ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

По вопросам связанными с FreeBSD, прочитайте документацию прежде чем писать в <questions@FreeBSD.org>.
По вопросам связанным с этой документацией, пишите <doc@FreeBSD.org>.
По вопросам связанным с русским переводом документации, пишите <frdp@FreeBSD.org.ua>.


Руководство FreeBSDPrevNext

Chapter 21 На переднем крае разработок

Table of Contents
21.1 Краткий обзор
21.2 FreeBSD-CURRENT против FreeBSD-STABLE
21.3 Синхронизация ваших исходных текстов
21.4 Использование make world
21.5 Отслеживание исходных текстов для нескольких машин
Реструктурирование, реорганизацию и частичное обновление выполнилJim Mock. Оригинальный текст написалJordan Hubbard, Poul-Henning Kamp, John Polstra, and Nik Clayton.

21.1 Краткий обзор

Между релизами над FreeBSD ведется постоянная работа. Для тех, кто хочет быть на переднем крае, есть несколько простых методов для поддержания своей системы в соответствии с последними разработками. Будьте осторожны -- передний край не для всех! Эта глава поможет вам решить, хотите ли вы отслеживать систему в процессе работы над ней или останетесь верным одному из выпущенных релизов.

После чтения этой главы вы будете знать:

Перед чтением этой главы вы должны:

Этот, и другие документы, могут быть скачаны с ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

По вопросам связанными с FreeBSD, прочитайте документацию прежде чем писать в <questions@FreeBSD.org>.
По вопросам связанным с этой документацией, пишите <doc@FreeBSD.org>.
По вопросам связанным с русским переводом документации, пишите <frdp@FreeBSD.org.ua>.


Руководство FreeBSDPrevChapter 15 Приложения для настольного компьютераNext

15.2 Браузеры

FreeBSD поставляется без предустановленного браузера. Взамен каталог www коллекции портов содержит множество готовых к установке браузеров. Если у вас нет времени компилировать все (в некоторых случаях это может занять очень много времени), многие из них доступны в виде пакетов.

В KDE и GNOME уже есть HTML браузеры. Обратитесь к Section 5.7 для подробной информации об установке этих полноценных десктопов.

Если вы ищете облегченный браузер, попробуйте www/dillo, www/links, или www/w3m из коллекции портов.

Этот раздел рассказывает о следующих приложениях:

Название приложенияПотребность в ресурсахУстановка из портовОсновные зависимости
MozillaбольшаятяжелаяGtk+
Netscape®большаялегкаяLinux Binary Compatibility
OperaмалаялегкаяВерсия для FreeBSD: нет. Версия для Linux: Linux Binary Compatibility и linux-openmotif

15.2.1 Mozilla

Mozilla это возможно наиболее подходящий браузер для десктопа FreeBSD. Он современный, стабильный и полностью портирован на FreeBSD. Его достоинство в высокой совместимости со стандартами HTML. В нем есть почтовая и новостная программы. В нем даже найдется редактор HTML, если вам потребуется самостоятельно написать несколько веб-страничек. Пользователи Netscape найдут общие черты с Communicator, поскольку оба браузера имеют одну основу.

На медленных компьютерах с частотой CPU меньше 233MHz или с памятью меньше 64MB, Mozilla требует слишком много ресурсов, чтобы быть удобной в использовании. Вместо нее вы можете обратить внимание на браузер Opera, описанный ниже в этой главе.

Если вы не можете или не хотите компилировать Mozilla по какой-то причине, команда FreeBSD GNOME уже сделала это для вас. Просто установите пакет из сети с помощью:

# pkg_add -r mozilla

Если пакет недоступен, но у вас достаточно времени и места на диске, вы можете скачать исходные тексты для Mozilla, скомпилировать их и установить в вашу систему. Это делается так:

# cd /usr/ports/www/mozilla
# make install clean

Порт Mozilla проверяет правильность установки путем запуска регистрации chrome с привилегиями пользователя root. Если вы хотите загрузить некоторые дополнения, например курсоры мыши, потребуется запустить Mozilla под root для их правильной установки.

После завершения установки Mozilla, больше не требуется работать под root. Вы можете запустить Mozilla в качестве браузера, набрав:

% mozilla

Вы можете также запустить непосредственно программу чтения почты и новостей, как показано ниже:

% mozilla -mail

15.2.2 Mozilla, Java™, и Macromedia® Flash

Предоставил Tom Rhodes.

Установка Mozilla проста, но к сожалению, установка Mozilla с поддержкой дополнений, таких как Java™ и Macromedia® Flash™ отнимает и время и место на диске.

Первое, что нужно сделать -- загрузку файлов, которые будут использоваться с Mozilla. Зайдите с помощью имеющегося веб браузера на http://www.sun.com/software/java2/download.html и создайте учетную запись на этом вебсайте. Сохраните имя пользователя и пароль, они могут понадобиться в будущем. Загрузите копию файла j2sdk-1_3_1-src.tar.gz и поместите в каталог /usr/ports/distfiles/, поскольку порт не загрузит его автоматически. Причина в лицензионном ограничении. Загрузите с этого же сайта ``java environment'', http://java.sun.com/webapps/download/Display?BundleId=7905. Имя файла j2sdk-1_3_1_08-linux-i586.bin, он большой (около 25 мегабайт!). Как и раньше, этот файл требуется поместить в /usr/ports/distfiles/. Наконец, загрузите копию ``java patchkit'' с http://www.eyesbeyond.com/freebsddom/java/ и поместите ее в /usr/ports/distfiles/.

Установите порт java/jdk13 стандартной командой make install clean, затем установите порт www/flashpluginwrapper. Этот порт требует emulators/linux_base (большой порт). Есть и другие плагины Flash но у меня они не работают.

Установите порт www/mozilla, если Mozilla еще не установлена.

Теперь скопируйте файлы Flash плагина:

# cp /usr/local/lib/flash/libflashplayer.so \
	/usr/X11R6/lib/browser_plugins/libflashplayer_linux.so
# cp /usr/local/lib/flash/ShockwaveFlash.class \
	/usr/X11R6/lib/browser_plugins/

Теперь добавьте следующие линии к верхней части (но под #!/bin/sh) стартового скрипта Mozilla: /usr/X11R6/bin/mozilla.

LD_PRELOAD=/usr/local/lib/libflashplayer.so.1
export LD_PRELOAD

Они включат Flash плагин.

Теперь просто запустите Mozilla:

% mozilla &

И войдите в пункт About Plug-ins меню Help. Должен появиться список со всеми доступными плагинами. В нем должны присутствовать Java и Shockwave® Flash.

15.2.3 Netscape®

Коллекция портов содержит несколько версий браузера Netscape. Поскольку в версии для FreeBSD он содержит серьезную ошибку безопасности, установка этой версии настоятельно не рекомендуется. Вместо этого, используйте более свежую версию для Linux или DIGITAL UNIX.

Последний стабильный релиз браузера Netscape это Netscape 7. Он может быть установлен из коллекции портов:

# cd /usr/ports/www/linux-netscape7
# make install clean

Есть локализованные версии в французском, немецком и японском разделах.

Caution: Версии Netscape 4.x не рекомендуются, поскольку они не совместимы с современными стандартами. Однако, Netscape 7.x и более новые версии доступны только для платформы i386™.

15.2.4 Opera

Opera это очень быстрый, полноценный и совместимый со стандартами браузер. Он поставляется в двух вариантах: ``родная'' для FreeBSD версия и версия, запускаемая в режиме эмуляции Linux. Для каждой операционной системы есть бесплатная версия браузера, показывающая баннеры, и версия без баннеров, которую можно купить на веб сайте Opera.

Для работы в сети с помощью FreeBSD версии Opera установите пакет:

# pkg_add -r opera

На некоторых серверах FTP нет всех пакетов, но те же результаты можно получить с помощью коллекции портов, набрав:

# cd /usr/ports/www/opera
# make install clean

Для установки Linux версии Opera, замените opera на linux-opera в примере выше. Версия для Linux полезна в ситуации, когда требуются плагины, доступные только для Linux, такие как Adobe Acrobat Reader®. Во всех других отношениях версии для FreeBSD и Linux являются функционально идентичными.

Этот, и другие документы, могут быть скачаны с ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

По вопросам связанными с FreeBSD, прочитайте документацию прежде чем писать в <questions@FreeBSD.org>.
По вопросам связанным с этой документацией, пишите <doc@FreeBSD.org>.
По вопросам связанным с русским переводом документации, пишите <frdp@FreeBSD.org.ua>.


Руководство FreeBSDPrevChapter 15 Приложения для настольного компьютераNext

15.5 Финансовые программы

Если по каким-то причинам вам нужно управлять своими финансами на десктопе FreeBSD, есть несколько мощных и простых в использовании приложений. Некоторые из них совместимы с широко распространенными форматами файлов, такими как документы Quicken® или Excel.

В этом разделе говорится о следующих приложениях:

Название приложенияПотребность в ресурсахУстановка из портовОсновные зависимости
GnuCashмалаятяжелаяGNOME
GnumericмалаятяжелаяGNOME
AbacusмалаялегкаяTcl/Tk

15.5.1 GnuCash

GnuCash это часть проекта GNOME, который стремится предоставить дружественные к пользователю приложения с широким набором функций. С GnuCash вы можете отслеживать доходы и расходы, банковские счета или акции. Интуитивный интерфейс программы не мешает ей оставаться очень профессиональной.

GnuCash предоставляет интеллектуальный журнал записей, иерархическую систему учетных записей, множество клавиатурных сокращений и метод автозавершения. Он может разбивать одну транзакцию на несколько частей, детализируя ее. GnuCash может импортировать и присоединять файлы Quicken QIF. Он также работает с основными международными форматами дат и валютами.

Для установки GnuCash в вашу систему, выполните:

# pkg_add -r gnucash

Если пакет недоступен, вы можете использовать коллекцию портов:

# cd /usr/ports/finance/gnucash
# make install clean

15.5.2 Gnumeric

Gnumeric это электронная таблица, часть графической среды GNOME. Она использует удобное автоматическое ``угадывание'' ввода пользователя в зависимости от формата ячейки и систему автозаполнения для множества последовательностей. Она может импортировать файлы нескольких популярных форматов, таких как Excel, Lotus 1-2-3, или Quattro Pro. Gnumeric работает с диаграммами через math/guppi. В ней множество встроенных функций, можно использовать обычные форматы ячеек: число, валюта, дата, время и многие другие.

Для установки Gnumeric из пакета, введите:

# pkg_add -r gnumeric

Если пакет недоступен, вы можете использовать коллекцию портов:

# cd /usr/ports/math/gnumeric
# make install clean

15.5.3 Abacus

Abacus это небольшая и простая в использовании программа электронных таблиц. В ней много встроенных функций из нескольких областей, таких как статистика, финансы и математика. Она может импортировать и экспортировать файлы Excel. Abacus также может печатать PostScript®.

Для установки Abacus из пакета, выполните:

# pkg_add -r abacus

Если пакет недоступен, вы можете использовать коллекцию портов, выполнив:

# cd /usr/ports/deskutils/abacus
# make install clean

Этот, и другие документы, могут быть скачаны с ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

По вопросам связанными с FreeBSD, прочитайте документацию прежде чем писать в <questions@FreeBSD.org>.
По вопросам связанным с этой документацией, пишите <doc@FreeBSD.org>.
По вопросам связанным с русским переводом документации, пишите <frdp@FreeBSD.org.ua>.


Руководство FreeBSDPrevChapter 15 Приложения для настольного компьютераNext

15.3 Бизнес приложения

В начале работы новые пользователи зачастую стремятся найти хороший офисный пакет или удобный текстовый процессор. Хотя некоторые десктопы, такие как KDE, поставляются с готовым офисным пакетом, приложения по умолчанию не существует. В FreeBSD есть все необходимое, кроме графической среды.

Этот раздел описывает следующие приложения:

Название приложенияПотребность в ресурсахУстановка из портовОсновные зависимости
KOfficeмалаятяжелаяKDE
AbiWordмалаялегкаяGtk+ или GNOME
The GimpмалаятяжелаяGtk+
OpenOffice.orgбольшаяочень тяжелаяGCC 3.1, JDK™ 1.3, Mozilla

15.3.1 KOffice

Сообщество KDE предоставляет графическую среду с офисным пакетом, который может быть использован вне KDE. Он включает четыре стандартных компонента, встречающиеся и в других офисных пакетах. Текстовый процессор KWord, программа электронных таблиц KSpread, KPresenter для создания презентаций и программа векторной графики Kontour.

Перед установкой последней версии KOffice, убедитесь в наличии свежей версии KDE.

Для установки KOffice из пакета, выполните следующую команду:

# pkg_add -r koffice

Если пакет недоступен, используйте коллекцию портов. Например, для установки KOffice для KDE3, выполните:

# cd /usr/ports/editors/koffice-kde3
# make install clean

15.3.2 AbiWord

AbiWord это свободно распространяемый текстовый процессор, по внешнему виду и поведению очень похожий на Microsoft® Word. Он подходит для набора документов, писем, отчетов, напоминаний и так далее. Он очень быстр, содержит много новшеств и очень удобен в использовании.

AbiWord может импортировать и экспортировать множество файловых форматов, включая патентованный Microsoft .doc.

AbiWord доступен в виде пакета. Вы можете установить его так:

# pkg_add -r AbiWord-gnome

Если пакет недоступен, он может быть собран из коллекции портов, которая должна быть свежей. Это можно сделать командой:

# cd /usr/ports/editors/AbiWord
# make install clean

15.3.3 GIMP

Для создания и редактирования изображений есть продвинутая программа GIMP. Она может быть использована как простая программа рисования и как программа обработки фотографий. Поддерживается большое количество плагинов и предоставлен интерфейс для скриптов. GIMP может читать и записывать файлы многих форматов. Есть интерфейс со сканерами и планшетами.

Вы можете установить пакет, выполнив эту команду:

# pkg_add -r gimp

Если на вашем сервере FTP нет этого пакета, вы можете использовать коллекцию портов. Каталог graphics коллекции портов содержит также раздел Руководство Gimp. Здесь показано, как его установить:

# cd /usr/ports/graphics/gimp1
# make install clean
# cd /usr/ports/graphics/gimp-manual-pdf
# make install clean

Note: Каталог graphics коллекции портов содержит версию GIMP для разработчиков в graphics/gimp-devel. HTML и PostScript® версии Руководства Gimp находятся в graphics/gimp-manual-html и graphics/gimp-manual-ps.

15.3.4 OpenOffice.org

OpenOffice.org включает все обязательные компоненты полноценного офисного пакета: текстовый процессор, программу электронных таблиц, программу управления презентациями и программу векторной графики. Интерфейс пользователя очень похож на другие офисные пакеты, возможен импорт и экспорт различных популярных файловых форматов. Приложение доступно в вариантах для множества разных языков, включая интерфейсы, проверку орфографии и словари.

Текстовый процессор OpenOffice.org использует чистый XML формат файлов для увеличения переносимости и гибкости. Программа для работы с текстовыми таблицами предоставляет макроязык и может работать с внешними базами данных. OpenOffice.org уже стабильна и существует в версиях для Windows®, Solaris™, Linux, FreeBSD, и Mac OS® X. Дополнительную информацию об OpenOffice.org можно найти на веб сайте OpenOffice. Получить специфичную для FreeBSD и загрузить пакеты можно с веб сайта команды портирования OpenOffice на FreeBSD (FreeBSD OpenOffice Porting Team).

Для установки OpenOffice.org, выполните:

# pkg_add -r openoffice

После установки пакета запустите программу настройки и выберите standard workstation installation. Запустите эту команду из под пользователя, который будет использовать OpenOffice.org:

% openoffice-setup

Если пакеты OpenOffice.org недоступны, можно выбрать компиляцию порта. Однако, вы должны помнить, что это потребует много места на диске и компиляция будет довольно долгой.

# cd /usr/ports/editors/openoffice
# make install clean

Потом запустите настройку под пользователем, который будет использовать OpenOffice.org и выберите standard workstation installation:

% cd /usr/ports/editors/openoffice
% make install-user

Если вы хотите использовать локализованную версию, вот доступные порты:

ЯзыкПорт
Арабскийeditors/openoffice-ar
Датскийeditors/openoffice-dk
Испанскийeditors/openoffice-es
Греческийeditors/openoffice-gr
Итальянскийeditors/openoffice-it
Голландскийeditors/openoffice-nl
Шведскийeditors/openoffice-se
Турецкийeditors/openoffice-tr
Французскийfrench/openoffice
Немецкийgerman/openoffice
Японскийjapanese/openoffice
Корейскийkorean/openoffice
Польскийpolish/openoffice
Португальскийportuguese/openoffice
Русскийrussian/openoffice

Этот, и другие документы, могут быть скачаны с ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

По вопросам связанными с FreeBSD, прочитайте документацию прежде чем писать в <questions@FreeBSD.org>.
По вопросам связанным с этой документацией, пишите <doc@FreeBSD.org>.
По вопросам связанным с русским переводом документации, пишите <frdp@FreeBSD.org.ua>.


Руководство FreeBSDPrevChapter 15 Приложения для настольного компьютераNext

15.6 Итоги

Хотя FreeBSD популярна в основном среди провайдеров из-за стабильности и высокой производительности, на сегодняшний день она вполне готова к использованию в качестве десктопа. С несколькими тысячами приложений, доступных в виде пакетов или портов, вы можете создать прекрасный десктоп, отвечающий всем вашим потребностям.

После первой установки десктопа, вы можете попробовать сделать шаг вперед с misc/instant-workstation. Этот ``мета-порт'' позволяет вам собрать типичный набор портов для рабочей станции. Вы можете настроить его, редактируя /usr/ports/misc/instant-workstation/Makefile. Следуйте синтаксису существующего файла при добавлении и удалении портов, соберите порт как обычно. В конечном итоге, вы можете создать большой пакет, соответствующий вашему собственному десктопу, и установить его на другие рабочие станции!

Вот небольшой обзор всех графических приложений, о которых говорилось в этой главе:

Имя приложенияИмя пакетаИмя порта
Mozillamozillawww/mozilla
Netscape®linux-netscape7www/linux-netscape7
Operalinux-operawww/linux-opera
KOfficekoffice-kde3editors/koffice-kde3
AbiWordAbiWord-gnomeeditors/AbiWord
The GIMPgimpgraphics/gimp1
OpenOffice.orgopenofficeeditors/openoffice
Acrobat Reader®acroread5print/acroread5
gvgvprint/gv
Xpdfxpdfgraphics/xpdf
GQviewgqviewgraphics/gqview
GnuCashgnucashfinance/gnucash
Gnumericgnumericmath/gnumeric
Abacusabacusdeskutils/abacus

Этот, и другие документы, могут быть скачаны с ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

По вопросам связанными с FreeBSD, прочитайте документацию прежде чем писать в <questions@FreeBSD.org>.
По вопросам связанным с этой документацией, пишите <doc@FreeBSD.org>.
По вопросам связанным с русским переводом документации, пишите <frdp@FreeBSD.org.ua>.


Руководство FreeBSDPrevChapter 15 Приложения для настольного компьютераNext

15.4 Программы просмотра документов

Некоторые новые форматы документов приобрели большую популярность. Стандартные программы для их просмотра могут отсутствовать в базовой системе. В этом разделе мы увидим, как их установить.

В разделе говорится о следующих приложениях:

Название приложенияПотребность в ресурсахУстановка из портовОсновные зависимости
Acrobat Reader®малаялегкаяLinux Binary Compatibility
gvмалаялегкаяXaw3d
XpdfмалаялегкаяFreeType
GQviewмалаялегкаяGtk+ или GNOME

15.4.1 Acrobat Reader®

Сейчас многие документы распространяются в формате PDF, аббревиатура для ``Portable Document Format''. Одна из рекомендованных программ для просмотра этого типа документов, это Acrobat Reader, выпущенный Adobe для Linux. Поскольку FreeBSD может запускать исполняемые файлы Linux, он доступен также и для FreeBSD.

Для установки пакета Acrobat Reader 5 выполните:

# pkg_add -r acroread5

Обычно если пакет недоступен, или вам нужна более поздняя версия, вы можете использовать коллекцию портов так:

# cd /usr/ports/print/acroread5
# make install clean

Note: Acrobat Reader доступен в нескольких различных версиях. В то время, как пишется этот документ, есть: print/acroread (версия 3.0.2), print/acroread4 (версия 4.0.5), and print/acroread5 (версия 5.0.6). Не для всех могут быть пакеты в вашей версии FreeBSD. Коллекция портов всегда содержит последнюю версию.

15.4.2 gv

gv это программа просмотра PostScript® и PDF. Она разработана на основе ghostview, но выглядит лучше благодаря библиотеке Xaw3d. Она быстра, а ее интерфейс несложен. У gv есть множество функций, таких как выбор ориентации, размера бумаги, масштаба и сглаживание. Почти любая операция может быть выполнена как с клавиатуры, так и мышью.

Для установки gv из пакета, выполните:

# pkg_add -r gv

Если вы не можете получить пакет, используйте коллекцию портов:

# cd /usr/ports/print/gv
# make install clean

15.4.3 Xpdf

Если вам нужна небольшая программа просмотра PDF под FreeBSD, Xpdf это легкая и эффективная программа. Она требует очень небольшого количества ресурсов и очень стабильна. Используются стандартные шрифты X, Motif® или другие пакеты для X не нужны.

Для установки пакета Xpdf, выполните эту команду:

# pkg_add -r xpdf

Если пакет недоступен, или вы предпочитаете коллекцию портов, выполните:

# cd /usr/ports/graphics/xpdf
# make install clean

После завершения установки вы можете запустить Xpdf и использовать правую кнопку мыши для активации меню.

15.4.4 GQview

GQview это программа для работы с изображениями. Вы можете просмотреть файл одним кликом, запустить внешний редактор, получить миниатюры и многое другое. Еще в нем есть слайдшоу и несколько основных файловых операций. Вы можете управлять коллекциями изображений и легко находить дубликаты. В GQview изображения можно просматривать во весь экран, его можно адаптировать к разным языкам.

Если вы хотите установить пакет GQview, выполните:

# pkg_add -r gqview

Если пакет недоступен, или вы предпочитаете использовать коллекцию портов, выполните:

# cd /usr/ports/graphics/gqview
# make install clean

Этот, и другие документы, могут быть скачаны с ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

По вопросам связанными с FreeBSD, прочитайте документацию прежде чем писать в <questions@FreeBSD.org>.
По вопросам связанным с этой документацией, пишите <doc@FreeBSD.org>.
По вопросам связанным с русским переводом документации, пишите <frdp@FreeBSD.org.ua>.


Руководство FreeBSDPrevNext

Chapter 15 Приложения для настольного компьютера

Table of Contents
15.1 Краткий обзор
15.2 Браузеры
15.3 Бизнес приложения
15.4 Программы просмотра документов
15.5 Финансовые программы
15.6 Итоги
Предоставил Christophe Juniet.

15.1 Краткий обзор

FreeBSD может работать с широким кругом приложений для настольного компьютера (десктопа), таких как браузеры и текстовые процессоры. Большинство из них доступны в качестве пакетов или могут быть автоматически собраны из коллекции портов. Многим новым пользователям хотелось бы видеть эти приложения на своем компьютере. В этой главе показано как без усилий установить некоторые популярные приложения для настольного компьютера из пакетов или из коллекции портов.

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

Поскольку FreeBSD обеспечивает двоичную совместимость с Linux, многие приложения, первоначально разработанные для Linux, доступны и на вашем компьютере. Настоятельно рекомендуется прочитать Chapter 22 перед установкой любого из приложений Linux. Названия многих портов, использующих двоичную совместимость с Linux, начинаются с ``linux-''. Помните это при поиске отдельного порта, например с помощью whereis(1). Далее в статье подразумевается, что вы включили бинарную совместимость с Linux перед установкой какого-либо приложения Linux.

Вот несколько категорий, о которых пойдет речь в этой главе:

Перед прочтением этой главы вам потребуется:

Чтобы получить дополнительную информацию о настройке мультимедиа среды, прочтите Chapter 16. Если вам нужна электронная почта, обратитесь к Chapter 20.

Этот, и другие документы, могут быть скачаны с ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

По вопросам связанными с FreeBSD, прочитайте документацию прежде чем писать в <questions@FreeBSD.org>.
По вопросам связанным с этой документацией, пишите <doc@FreeBSD.org>.
По вопросам связанным с русским переводом документации, пишите <frdp@FreeBSD.org.ua>.


Руководство FreeBSDPrevChapter 7 Процесс загрузки FreeBSDNext

7.5 Хинты устройств

Текст предоставилTom Rhodes.

Note: Эта функция присутствует только во FreeBSD 5.0 и последующих версиях, но не в более ранних.

Во время начального запуска системы загрузчик loader(8) производит чтение файла device.hints(5). В этом файле хранится необходимая для загрузки ядра информация, задаваемая в виде переменных, которую иногда называют хинтами для устройств (``device hints''). Эти ``хинты устройств'' используются драйверами устройств для их конфигурации.

Хинты для устройств могут быть также заданы в приглашении начального загрузчика Стадии 3. Переменные могут быть добавлены при помощи команды set, удалены посредством unset и просмотрены командой show. В этот момент могут быть также переопределены переменные, заданные в файле /boot/device.hints. Хинты для устройств, введённые в начальном загрузчике, не сохраняются, и при следующей перезагрузке будут утеряны.

После загрузки системы для выдачи значений всех переменных можно воспользоваться командой kenv(1).

Синтаксически в файле /boot/device.hints в каждой строке определяется по одной переменной, в качестве метки начала комментария используется стандартный символ ``#''. Строки строятся следующим образом:

hint.driver.unit.keyword="value"

Синтаксис для начального загрузчика Стадии 3 таков:

set hint.driver.unit.keyword=value

driver определяет имя драйвера устройства, unit соответствует порядковому номеру модуля устройства, а keyword является ключевым словом хинта. В качестве ключевых слов могут применяться следующие опции:

Драйверы устройств могут поддерживать (и даже требовать) другие хинты, здесь не перечисленные, поэтому рекомендуется просматривать справочные страницы по этим драйверам. Для получения дополнительной информации обратитесь к страницам справки по device.hints(5), kenv(1), loader.conf(5) и loader(8).

Этот, и другие документы, могут быть скачаны с ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

По вопросам связанными с FreeBSD, прочитайте документацию прежде чем писать в <questions@FreeBSD.org>.
По вопросам связанным с этой документацией, пишите <doc@FreeBSD.org>.
По вопросам связанным с русским переводом документации, пишите <frdp@FreeBSD.org.ua>.


Руководство FreeBSDPrevChapter 17 Последовательные соединенияNext

17.5 Исходящие соединения по модему

Текст, приведенный ниже, это советы, позволяющие настроить ваш хост для доступа к другому компьютеру через модем. Они подходят для установления терминальной сессии с удаленным хостом.

Это подходит для входа на BBS.

Этот вид соединения может очень выручить, если требуется получить файл из интернет и есть проблемы с PPP. Если вам требуется зайти куда-то по FTP, а PPP не работает, используйте терминальную сессию для получения файла по FTP. Затем используйте zmodem для сброса его на свой компьютер.

17.5.1 Мой модем Stock Hayes не поддерживается, что я могу сделать?

На самом деле, страница руководства для tip устарела. Встроенная поддержка generic Hayes уже есть. Используйте at=hayes в файле /etc/remote.

Драйвер Hayes не умеет работать с некоторыми расширенными возможностями более новых модемов -- сообщения вроде BUSY, NO DIALTONE, или CONNECT 115200. Вы должны отключить эти сообщения при использовании tip (с помощью ATX0&W).

Таймаут дозвона для tip составляет 60 секунд. Ваш модем должен использовать меньшее значение, или tip решит, что возникли проблемы со связью. Попробуйте ATS7=45&W.

Note: Оригинальная tip не полностью поддерживает модемы Hayes. Решить это проблему можно отредактировав файл tipconf.h в каталоге /usr/src/usr.bin/tip/tip. Конечно, для этого вам потребуются исходные тексты.

Замените строку #define HAYES 0 на #define HAYES 1. Затем выполните make и make install. После этого все должно работать отлично.

17.5.2 Как нужно выполнять команды AT?

Сделайте то, что называется ``прямой'' записью в файле /etc/remote. Например, если модем подключен к первому последовательному порту, /dev/cuaa0, добавьте следующую строку:

cuaa0:dv=/dev/cuaa0:br#19200:pa=none

Используйте для br наибольшее значение bps, поддерживаемое модемом. Для подключения к модему выполните tip cuaa0.

Если в системе нет устройства /dev/cuaa0, выполните:

# cd /dev
# sh MAKEDEV cuaa0

Или используйте cu под root так:

# cu -lline -sspeed

line это последовательный порт (например /dev/cuaa0), а speed это скорость (например 57600). После ввода команд AT наберите ~. для выхода.

17.5.3 Знак @ не работает для pn!

Знак @ в телефонном номере указывает tip взять телефонный номер из /etc/phones. Но знак @ это также специальный символ в таких файлах как /etc/remote. Экранируйте его с помощью обратной косой черты:

pn=\@

17.5.4 Как я могу позвонить по телефонному номеру из командной строки?

Поместите так называемую ``generic'' запись в файл /etc/remote. Например:

tip115200|Dial any phone number at 115200 bps:\
        :dv=/dev/cuaa0:br#115200:at=hayes:pa=none:du:
tip57600|Dial any phone number at 57600 bps:\
        :dv=/dev/cuaa0:br#57600:at=hayes:pa=none:du:

Затем вы можете сделать следующее:

# tip -115200 5551234

Если вы предпочитаете cu команде tip, используйте generic запись для cu:

cu115200|Use cu to dial any number at 115200bps:\
        :dv=/dev/cuaa1:br#57600:at=hayes:pa=none:du:

и выполните:

# cu 5551234 -s 115200

17.5.5 Должен ли я вводить значение bps каждый раз?

Создайте запись tip1200 или cu1200, но используйте то значение bps, которое записано в поле br. tip считает, что хорошее значение по умолчанию это 1200 bps, поэтому обращается к записи tip1200. Тем не менее, значение bps будет другим.

17.5.6 Я получаю доступ ко множеству хостов через терминальный сервер

Вместо ожидания соединения и ввода каждый раз CONNECT <host>, используйте возможность tip cm. Вот пример записи в /etc/remote:

pain|pain.deep13.com|Forrester's machine:\
        :cm=CONNECT pain\n:tc=deep13:
muffin|muffin.deep13.com|Frank's machine:\
        :cm=CONNECT muffin\n:tc=deep13:
deep13:Gizmonics Institute terminal server:\
        :dv=/dev/cuaa2:br#38400:at=hayes:du:pa=none:pn=5551234:

Она позволит вам вводить tip pain или tip muffin для соединения с хостами pain или muffin, и tip deep13 для доступа к терминальному серверу.

17.5.7 Может ли tip соединяться более через одну линию для каждого сайта?

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

Создайте запись для университета в /etc/remote и используйте @ для pn:

big-university:\
        :pn=\@:tc=dialout
dialout:\
        :dv=/dev/cuaa3:br#9600:at=courier:du:pa=none:

Затем, создайте список телефонов для университета в /etc/phones:

big-university 5551111
big-university 5551112
big-university 5551113
big-university 5551114

tip попробует связаться с каждым в указанном порядке, затем прекратит попытки. Если вы хотите продолжать соединяться, запустите tip в цикле.

17.5.8 Почему я должен дважды нажать Ctrl+P для отправки Ctrl+P один раз?

Ctrl+P это ``управляющий'' символ по умолчанию, используемый для указания tip того, что далее идут символьные данные. Вы можете сделать любой другой символ управляющим с помощью экранирования ~s, которое означает ``установить переменную''.

Введите ~sforce=single-char, завершив ввод новой строкой. single-char это любой одиночный символ. Если вы не введете single-char, управляющим символом станет nul, который можно получить, введя Ctrl+2 или Ctrl+Space. Хорошее значение для single-char это Shift+Ctrl+6, которое используется только на некоторых терминальных серверах.

Вы можете использовать в качестве управляющего символа все, что захотите, поместив его в файл $HOME/.tiprc:

force=<single-char>

17.5.9 Почему все, что я ввожу, вдруг стало отображаться в верхнем регистре??

Вы нажали Ctrl+A, ``повышающий символ'' tip, который был специально введен для тех, у кого не работает клавиша caps-lock. Используйте ~s как в примере выше для установки переменной raisechar в подходящее значение. Фактически, вы можете установить ее в то же значение, что и управляющий символ, если не собираетесь использовать ни один из них.

Вот пример .tiprc, отлично подходящий для пользователей Emacs, которым часто требуется вводить Ctrl+2 и Ctrl+A:

force=^^
raisechar=^^

Символ ^^ это Shift+Ctrl+6.

17.5.10 Могу ли я передавать файлы с помощью tip?

Если вы соединяетесь с другой системой UNIX®, возможны передача и прием файлов с помощью команды ~p (put) и ~t (take). Эти команды запускают cat и echo в удаленной системе для приема и передачи файлов. Синтаксис следующий:

~p local-file [remote-file]

~t remote-file [local-file]

Коррекции ошибок нет, поэтому возможно лучше использовать другой протокол, например zmodem.

17.5.11 Как мне запустить zmodem с tip?

Для получения файла запустите отправляющую программу на удаленной стороне. Затем, наберите ~C rz для начала локального приема файла.

Для отправки файлов запустите принимающую программу на удаленной стороне. Затем, наберите ~C sz файлы для отправки их на удаленную систему.

Этот, и другие документы, могут быть скачаны с ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

По вопросам связанными с FreeBSD, прочитайте документацию прежде чем писать в <questions@FreeBSD.org>.
По вопросам связанным с этой документацией, пишите <doc@FreeBSD.org>.
По вопросам связанным с русским переводом документации, пишите <frdp@FreeBSD.org.ua>.


Руководство FreeBSDPrevChapter 17 Последовательные соединенияNext

17.4 Входящие соединения по модему

Предоставил Guy Helmer. Дополнил Sean Kelly.

Настройка системы FreeBSD для поддержки входящих соединений очень похожа на подсоединение терминалов за исключением того, что вы работаете с модемами вместо терминалов.

17.4.1 Внешние и внутренние модемы

Внешние модемы более удобны для дозвона, поскольку легко могут быть настроены с помощью параметров, сохраняемых в энергонезависимой памяти. На них обычно есть индикаторы, отображающие состояние основных RS-232 сигналов. Мигающие индикаторы впечатляют, но кроме того они также очень полезны для индикации правильной работы модема.

Внутренние модемы обычно не снабжаются энергонезависимой памятью, поэтому их настройка может ограничиваться установкой DIP переключателей. Если на внутреннем модеме есть индикаторы, их обычно сложно увидеть при закрытой крышке корпуса.

17.4.1.1 Модемы и кабели

Если вы используете внешний модем, несомненно потребуется подходящий кабель. Стандартный RS-232C кабель должен подойти, если подключены все обычные сигналы:

  • Transmitted Data (SD)

  • Received Data (RD)

  • Request to Send (RTS)

  • Clear to Send (CTS)

  • Data Set Ready (DSR)

  • Data Terminal Ready (DTR)

  • Carrier Detect (CD)

  • Signal Ground (SG)

FreeBSD требуются сигналы RTS и CTS для контроля передачи на скоростях выше 2400 bps, сигнал CD для определения, был ли ответ на сигнал или произошло отключение линии, и сигнал DTR для сброса модема после завершения сессии. Некоторые кабели не поддерживают все необходимые сигналы, поэтому, если вы столкнулись с проблемами, например, если сессия не завершается после отсоединения линии, причиной возможно являются проблемы с кабелем.

Как и другие UNIX® подобные операционные системы, FreeBSD использует аппаратные сигналы для определения того, был ли ответ на звонок или линия была отключена и требуется завершить работу модема и сбросить его в начальное состояние. FreeBSD избегает отправлять команды модему или просматривать отчеты о статусе от модема. Если вы знакомы с настройкой BBS, это может показаться неудобным.

17.4.2 Рекомендации по последовательным интерфейсам

FreeBSD поддерживает интерфейсы, основанные на NS8250, NS16450, NS16550, и NS16550A EIA RS-232C (CCITT V.24). Устройства 8250 и 16450 снабжены односимвольным буфером. Устройство 16550 снабжено 16-ти символьным буфером, который повышает производительность системы. (Ошибки в 16550 делают невозможным использование 16-символьного буфера, поэтому используйте 16550A если возможно). Поскольку устройства с односимвольным буфером предъявляют большие требования к операционной системе, чем с 16-ти символьным буфером, предпочтительны устройства на 16550A. Если в системе много активных последовательных портов или нагрузка велика, устройства на 16550A лучше подходят для поддержки соединений с малым количеством ошибок.

17.4.3 Краткий обзор

Как и с терминалами, init запускает процесс getty на каждом настроенном для входящих звонков последовательном порту. Например, если модем подключен к /dev/ttyd0, команда ps ax может вывести следующее:

 4850 ??  I      0:00.09 /usr/libexec/getty V19200 ttyd0

Когда пользователь дозванивается на подключенный модем, модем выдает сигнал CD (Carrier Detect). Ядро определяет, что несущая обнаружена и завершает открытие порта командой getty. getty отправляет приглашение login: на указанной скорости. getty ожидает в ответ набор символов, и, как правило, получает неправильный набор (обычно это происходит из-за того, что скорость соединения модема отличается от скорости getty). getty пробует подобрать скорость линии до тех пор, пока не получит правильный набор символов.

После того, как будет введено имя пользователя, getty выполняет /usr/bin/login, которая завершает вход, запрашивая пароль пользователя и запуская оболочку.

17.4.4 Файлы настройки

Есть три файла настройки системы в каталоге /etc, которые возможно потребуется отредактировать для включения удаленного доступа по модему в FreeBSD. Первый, /etc/gettytab, содержит информацию по настройке даемона /usr/libexec/getty. Второй, /etc/ttys, содержит информацию, указывающую /sbin/init на каких устройствах tty должны быть запущены процессы getty. Наконец, вы можете поместить команды инициализации портов в скрипт /etc/rc.serial.

В UNIX есть две школы настройки модемов для входящих соединений. Одна предпочитает настраивать модемы и системы так, что не важно на какой скорости подсоединяется удаленный пользователь. Локальный интерфейс RS-232 компьютер-модем работает на жестко заданной скорости. Преимущество этой настройки в том, что удаленный пользователь всегда сразу видит приглашение ко входу. Обратная сторона в том, что система не знает, какова на самом деле скорость передачи данных, поэтому полноэкранные программы, такие как Emacs, не настраивают свои методы отображения на экране для работы с медленными соединениями.

Другая школа настраивает интерфейс RS-232 для работы с различной скоростью в зависимости от скорости подсоединения удаленного пользователя. Например, соединение модемов по протоколу V.32bis (14.4 Кбит/с) установит скорость порта RS-232 равной 19.2 Кбит/с, а соединение на скорости 2400 бит/с установит скорость RS-232 равной 2400 бит/с. Поскольку getty не понимает сообщений модема о скорости соединения, getty выдает приглашение login: на установленной по умолчанию скорости и считывает символы, полученные в ответе. Если пользователь видит ``мусор'' вместо приглашения ко входу, это означает, что нужно нажимать Enter до тех пор, пока не появится приглашение ко входу. Если скорости не совпадают, getty получает все, что вводит пользователь, в виде ``мусора'', пробует переключиться на другую скорость и выдает приглашение login: опять. Эта процедура может продолжаться до отвращения, но обычно требуется одно или два нажатия клавиши перед появлением нормально выглядящего приглашения. Очевидно, эта последовательность входа не так хороша, как метод с фиксированной скоростью, но при низкой скорости соединения работать с полноэкранными программами станет проще.

В этом разделе делается попытка дать сбалансированную информацию для настройки, но предпочтение будет отдано установке скорости соединения с модемом в соответствие скорости подключения.

17.4.4.1 /etc/gettytab

/etc/gettytab это файл в стиле termcap(5), содержащей информацию по настройке getty(8). Пожалуйста, обратитесь к странице справочника gettytab(5) за полной информацией о формате файла и за списком возможностей getty.

17.4.4.1.1 Настройка фиксированной скорости

Если вы зафиксировали скорость соединения модема на определенной скорости, редактировать файл /etc/gettytab скорее всего не потребуется.

17.4.4.1.2 Настройка изменяемой скорости

Вам потребуется сделать запись в /etc/gettytab для предоставления getty информации о скоростях, которые предполагается использовать для модема. Если у вас 2400 бит/с модем, возможно, подойдет существующая запись D2400.

#
# Fast dialup terminals, 2400/1200/300 rotary (can start either way)
#
D2400|d2400|Fast-Dial-2400:\
        :nx=D1200:tc=2400-baud:
3|D1200|Fast-Dial-1200:\
        :nx=D300:tc=1200-baud:
5|D300|Fast-Dial-300:\
        :nx=D2400:tc=300-baud:

Если у вас более скоростной модем, вам возможно потребуется добавить запись в /etc/gettytab; вот запись, которую вы можете использовать для 14.4 Кбит/с модема с максимальной скоростью интерфейса 19.2 Кбит/с:

#
# Additions for a V.32bis Modem
#
um|V300|High Speed Modem at 300,8-bit:\
        :nx=V19200:tc=std.300:
un|V1200|High Speed Modem at 1200,8-bit:\
        :nx=V300:tc=std.1200:
uo|V2400|High Speed Modem at 2400,8-bit:\
        :nx=V1200:tc=std.2400:
up|V9600|High Speed Modem at 9600,8-bit:\
        :nx=V2400:tc=std.9600:
uq|V19200|High Speed Modem at 19200,8-bit:\
        :nx=V9600:tc=std.19200:

Эта настройка включает 8-битные соединения без программного контроля четности.

В примере выше скорость порта будет переключаться в цикле начиная с 19.2 Кбит/с (для соединения по V.32bis), затем 9600 бит/с (для V.32), 2400 бит/с, 1200 бит/с, 300 бит/с, и обратно на 19.2 Кбит/с. Переключение скоростей в цикле реализовано с помощью nx= (``next table''). Каждая из линий использует tc= (``table continuation'') для указания ``стандартных'' (std) настроек на каждой скорости.

Если у вас 28.8 Кбит/с модем и/или вы хотите получить преимущество от сжатия на скорости 14.4 Кбит/с, потребуются скорости выше, чем 19.2 Кбит/с. Вот пример записи из gettytab для начала соединения на скорости 57.6 Кбит/с:

#
# Additions for a V.32bis or V.34 Modem
# Starting at 57.6 Kbps
#
vm|VH300|Very High Speed Modem at 300,8-bit:\
        :nx=VH57600:tc=std.300:
vn|VH1200|Very High Speed Modem at 1200,8-bit:\
        :nx=VH300:tc=std.1200:
vo|VH2400|Very High Speed Modem at 2400,8-bit:\
        :nx=VH1200:tc=std.2400:
vp|VH9600|Very High Speed Modem at 9600,8-bit:\
        :nx=VH2400:tc=std.9600:
vq|VH57600|Very High Speed Modem at 57600,8-bit:\
        :nx=VH9600:tc=std.57600:

Если у вас медленный CPU или сильно загруженная система без последовательных портов на базе 16550A, на скорости 57.6 Кбит/с могут возникнуть ошибки ``sio'' ``silo''.

17.4.4.2 /etc/ttys

Настройка файла /etc/ttys была описана в разделе Example 17-1. Настройка модемов похожа, но потребуется передавать getty различные аргументы и указывать различные типы терминалов. Общий формат для фиксированной и переменной скорости такой:

ttyd0   "/usr/libexec/getty xxx"   dialup on

Первый пункт в строке выше это специальный файл устройства для этой записи -- ttyd0 означает, что getty будет запущена на /dev/ttyd0. Второй пункт, "/usr/libexec/getty xxx" (xxx будет замещено на запись из gettytab для начальной скорости), это процесс, который будет запущен на данном устройстве. Третий пункт, dialup, это тип терминала по умолчанию. Четвертый параметр, on, указывает init, что линия включена. Может быть пятый параметр, secure, но он должен использоваться только для терминалов, которые физически безопасны (таких как системная консоль).

Тип терминала по умолчанию (dialup в примере выше) может зависеть от личных предпочтений. dialup это традиционный тип терминала по умолчанию на линиях для дозвона, который позволяет пользователям, зная что тип терминала dialup, автоматически настраивать свой тип терминала. Однако, автор находит более легким указание vt102 в качестве типа терминала по умолчанию, поскольку пользователи работают на своих удаленных системах с эмулятором терминала VT102.

После внесения изменений в /etc/ttys, вы можете отправить процессу init сигнал HUP перечитать файл. Используйте команду

# kill -HUP 1
для отправки сигнала. Если вы настраиваете систему в первый раз, то возможно захотите подождать, пока модем(ы) правильно настроятся и соединятся перед отправкой сигнала init.

17.4.4.2.1 Настройка фиксированной скорости

Для настройки соединения с фиксированной скоростью, в файле ttys должна быть запись с фиксированной скоростью для getty. Для модема, скорость порта которого фиксирована на значении 19.2 Кбит/с, строка в ttys может выглядеть так:

ttyd0   "/usr/libexec/getty std.19200"   dialup on

Если скорость модема фиксирована на другом значении, подставьте соответствующее значение в std.speed вместо std.19200. Убедитесь, что вы используете тип, описанный в /etc/gettytab.

17.4.4.2.2 Настройка переменной скорости

В настройке с переменной скоростью, запись в ttys должна обращаться к соответствующей ``auto-baud'' (sic) записи в /etc/gettytab. Например, если вы добавите предложенную выше запись для подключения модема с переменной скоростью, которая начинается с 19.2 Кбит/с (запись в gettytab начинается с V19200), запись в ttys может выглядеть так:

ttyd0   "/usr/libexec/getty V19200"   dialup on

17.4.4.3 /etc/rc.serial

Для высокоскоростных модемов, таких как V.32, V.32bis и V.34, требуется использование аппаратного контроля передачи (RTS/CTS). Вы можете добавить команды stty к файлу /etc/rc.serial для установки флага аппаратного контроля передачи в ядре FreeBSD для модемных портов.

Например, для установки флага termios crtscts на последовательном порту номер 1 (COM2) при инициализации устройств для входящей и исходящей связи, в /etc/rc.serialдолжны быть добавлены следующие строки:

# Serial port initial configuration
stty -f /dev/ttyid1 crtscts
stty -f /dev/cuaia1 crtscts

17.4.5 Настройка модема

Если параметры вашего модема могут быть сохранены в энергонезависимой памяти, потребуется использовать терминальную программу (например, Telix под MS-DOS® или tip под FreeBSD) для установки параметров. Подсоединитесь к модему, используя ту же скорость соединения, которую использует getty в качестве начальной скорости, и настройте модем для соответствия следующим требованиям:

Прочтите документацию на модем для определения какие команды и/или DIP переключатели требуются чтобы установить эти настройки.

Например, для установки вышеуказанных параметров на внешнем 14,400 модеме U.S. Robotics® Sportster®, требуется отправить модему следующие команды:

ATZ
AT&C1&D2&H1&I0&R2&W

Вы, возможно, захотите настроить и другие параметры модема, такие как использование сжатия V.42bis и/или MNP5.

Внешний U.S. Robotics Sportster 14,400 модем также снабжен некоторыми DIP переключателями, которые требуется установить; для других модемов эти настройки могут быть использованы в качестве примера:

Коды возврата должны быть отключены/подавлены для устранения проблем, которые могут возникнуть, если getty ошибочно выдаст приглашение login: модему в командном режиме и модем вернет (echo) эту команду или код возврата. Эта последовательность может привести к дополнительному и бессмысленному обмену командами между getty и модемом.

17.4.5.1 Настройка фиксированной скорости

Для настройки фиксированной скорости вам потребуется настроить модем с поддержкой постоянной скорости обмена данными модем-компьютер независимо от скорости соединения. На внешнем модеме U.S. Robotics Sportster 14,400 эти команды зафиксируют скорость передачи модем-компьютер на скорости, которая установлена при выполнении команды:

ATZ
AT&B1&W

17.4.5.2 Настройка переменной скорости

Для настройки переменной скорости вам потребуется настроить модем с поддержкой изменения скорости передачи данных через последовательный порт в соответствии через скоростью соединения. Следующие команды зафиксируют скорость передачи данных с коррекцией ошибок внешнего модема U.S. Robotics Sportster 14,400 на значении, которое установлено при выполнении команды, но сделают возможным изменение скорости последовательного порта для соединений без коррекции ошибок:

ATZ
AT&B2&W

17.4.5.3 Проверка настроек модема

Большинство высокоскоростных модемов предоставляют команды для просмотра текущих параметров модема в виде, отчасти приспособленном для чтения. Для внешних модемов U.S. Robotics Sportster 14,400 команда ATI5 отображает установки, сохраненные в энергонезависимой памяти. Для просмотра действующих параметров модема (с учетом положения DIP переключателей), используйте команду ATZ, а затем ATI4.

Если ваш модем другого производителя, проверьте руководство к модему для аккуратной проверки параметров настройки модема.

17.4.6 Решение проблем

Вот несколько шагов, которые нужно выполнить для проверки настроек.

17.4.6.1 Проверьте систему FreeBSD

Подсоедините модем к системе FreeBSD, загрузите систему, и, если на модеме есть индикаторы, посмотрите, загорелся ли индикатор DTR при появлении приглашения login: на системной консоли -- если он загорелся, это означает, что FreeBSD запустила процесс getty на соответствующем коммуникационном порту и модем ожидает входящего звонка.

Если индикатор DTR не загорелся, войдите на консоль системы FreeBSD и выполните команду ps ax, чтобы увидеть, пытается ли FreeBSD запустить процесс getty на соответствующем порту. Вы должны увидеть строки вроде этих среди показанных процессов:

  114 ??  I      0:00.10 /usr/libexec/getty V19200 ttyd0
  115 ??  I      0:00.10 /usr/libexec/getty V19200 ttyd1

Если вы видите что-то другое, вроде этого:

  114 d0  I      0:00.10 /usr/libexec/getty V19200 ttyd0

и модем все еще не принимает звонок, это означает, что getty завершила открытие коммуникационного порта. Это может означать проблему с кабелем или неправильную настройку модема, поскольку getty не должна открывать коммуникационный порт, пока модем не установит CD (обнаружение несущей).

Если вы не видите процессов getty, ожидающих открытия соответствующего порта ttydN, внимательно проверьте записи в /etc/ttys и попробуйте найти ошибки, если они есть. Проверьте также лог файл /var/log/messages, нет ли там сообщений от init или getty, имеющих отношение к проблеме. Если сообщения есть, проверьте еще раз файлы настройки /etc/ttys и /etc/gettytab, как и соответствующие специальные файлы устройств /dev/ttydN, чтобы обнаружить ошибки, отсутствующие записи или отсутствующие специальные файлы устройств.

17.4.6.2 Попробуйте позвонить на модем

Попробуйте дозвониться до системы; убедитесь, что используете 8 бит без четности и 1 стоп бит на удаленной системе. Если вы не получите приглашение сразу, или получите случайные данные, попробуйте нажимать Enter примерно раз в секунду. Если вы все еще не видите приглашения login: после нескольких попыток, попробуйте отправить команду BREAK. Если вы используете для дозвона высокоскоростной модем, попробуйте позвонить еще раз после фиксирования скорости интерфейса дозванивающегося модема (например, с помощью команды AT&B1 для модема U.S. Robotics Sportster).

Если вы все еще не можете получить приглашение login:, проверьте /etc/gettytab еще раз и убедитесь, что

  • Имя параметра getty, указанного в /etc/ttys, совпадает с именем параметра в /etc/gettytab

  • Каждая запись nx= соответствует имени другой записи в gettytab

  • Каждая запись tc= соответствует имени другой записи в gettytab

Если система FreeBSD не отвечает на звонок, убедитесь, что модем настроен для ответа на звонок при включении DTR. Если модем настроен правильно, проверьте, что DTR включается, взглянув на индикаторы модема (если они есть).

Если вы проверили все несколько раз и все еще не добились результата, сделайте перерыв и вернитесь к настройкам позже. Если опять ничего не получилось, возможно вам потребуется отправить письмо в рассылку Список рассылки, посвящённый вопросам и ответам пользователей FreeBSD, описав модем и возникшую проблему, участники рассылки попробуют помочь вам.

Этот, и другие документы, могут быть скачаны с ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

По вопросам связанными с FreeBSD, прочитайте документацию прежде чем писать в <questions@FreeBSD.org>.
По вопросам связанным с этой документацией, пишите <doc@FreeBSD.org>.
По вопросам связанным с русским переводом документации, пишите <frdp@FreeBSD.org.ua>.


Руководство FreeBSDPrevChapter 3 Основы UNIXNext

3.5 Организация дисков

Наименьшая единица, которую FreeBSD использует для обращения к файлам, это имя файла. Имена файлов чувствительны к регистру, поэтому readme.txt и README.TXT -- два разных файла. FreeBSD не использует расширение файла (.txt) для определения программа это, документ или другой тип данных.

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

Обращение к файлам происходит путем задания имени файла или каталога, дополняемого прямым слэшем /, за которым может следовать имя другого каталога. Если есть каталог foo, содержащий каталог bar, который содержит файл readme.txt, полное имя, или путь к файлу будет foo/bar/readme.txt.

Каталоги хранятся в файловых системах. Каждая файловая система содержит один каталог на верхнем уровне, называемый корневым каталогом этой файловой системы. Этот корневой каталог может содержать другие каталоги.

Внешне это может быть похоже на те операционные системы, которые вы возможно использовали. Есть несколько отличий: например, MS-DOS® использует \ для разделения имен файлов и каталогов, а Mac OS® использует :.

FreeBSD не использует букв дисков, или других имен дисков в пути. Вам не нужно писать c:/foo/bar/readme.txt в FreeBSD.

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

Предположим, у вас есть три файловых системы: A, B, и C. Каждая файловая система имеет один корневой каталог, в котором содержатся другие каталоги, называемые A1, A2 (и аналогично B1, B2 и C1, C2).

Назовем A корневой файловой системой. Если вы используете команду ls для просмотра содержимого каталога, вы увидите два подкаталога, A1 и A2. Дерево каталогов выглядит так:

Файловая система должна быть примонтирована к каталогу другой файловой системы. Предположим, что вы монтируете файловую систему B на каталог A1. Корневой каталог B замещается A1, а каталоги в B отображаются соответственно:

Если потребуется, любые файлы из каталогов B1 или B2 могут быть получены через путь /A1/B1 или /A1/B2. Все файлы, бывшие в /A1, временно скрыты. Они появятся, если B будет размонтирована с A.

Если B была смонтирована на A2, диаграмма будет выглядеть так:

а пути будут /A2/B1 и /A2/B2 соответственно.

Файловые системы могут быть смонтированы одна на другую. Продолжая предыдущий пример, файловая система C может быть смонтирована на каталог B1 файловой системы B в таком порядке:

Или C может быть смонтирована прямо на файловую систему A, на каталог A1 :

Если вы знакомы с MS-DOS, это похоже, хотя и не идентично, команде join.

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

Можно создать одну большую корневую файловую систему и не создавать других. У такого подхода есть несколько недостатков и одно преимущество.

Преимущества нескольких файловых систем

Преимущество одной файловой системы

Файловые системы содержатся в разделах. Этот термин не имеет того же смысла, что и при более раннем его использовании в этой главе, из-за наследия UNIX® в FreeBSD. Каждый раздел обозначается буквой от a до h. Каждый раздел может содержать только одну файловую систему, это значит что файловая система может быть описана ее точкой монтирования в файловой иерархии, или буквой раздела, в котором она содержится.

FreeBSD также использует дисковое пространство под раздел подкачки (swap space). Подкачка позволяет FreeBSD работать с виртуальной памятью. ваш компьютер может работать так, как если бы у него было больше памяти, чем есть на самом деле. Когда у FreeBSD кончается память, она перемещает часть данных, не используемых в данный момент, в раздел подкачки и возвращает их обратно (перемещая в подкачку что-то другое), когда они нужны.

По некоторым разделам есть определенные соглашения.

РазделСоглашение
aКак правило, содержит корневую файловую систему
bКак правило, содержит раздел подкачки
cКак правило, такого же размера, что и весь слайс (slice). Это позволяет утилитам, которым нужно работать над всем слайсом (например, сканер плохих блоков), работать с разделом c. В обычной ситуации не нужно создавать файловую систему на этом разделе.
dРаздел d создавался для специальных целей, хотя сейчас не используется. На настоящий момент, некоторые утилиты могут работать некорректно при попытке обращения к d, поэтому sysinstall обычно не создает раздел d.

Каждый раздел-содержащий-файловую-систему хранится на том, что во FreeBSD называется слайс (slice). Слайс -- это термин FreeBSD, то, что обычно называют разделом, и опять же это из-за UNIX основы FreeBSD. Слайсы нумеруются с 1 по 4.

Номера слайсов следуют за именем устройства, предваряемые строчной s, начиная с 1. Так ``da0s1'' это первый слайс первого SCSI устройства. Может быть только четыре физических слайса на диске, но могут быть логические слайсы нужного типа внутри физических слайсов. Эти дополнительные слайсы нумеруются начиная с 5, так что ``ad0s5'' это первый дополнительный слайс на первом IDE диске. Эти устройства используются файловыми системами, занимающими весь слайсе.

Слайсы, ``эксклюзивно выделенные (dangerously dedicated)'' физические устройства и другие устройства содержат разделы, представляемые буквами от a до h. Эти буквы добавляются к имени устройства, ``da0a'' это раздел a на первом устройстве da, который ``эксклюзивно выделен''. ``ad1s3e'' это пятый раздел в третьем слайсе второго IDE диска.

Наконец, каждый диск идентифицирован. Имя диска начинается с кода, обозначающего тип диска, затем идет номер, обозначающий который это диск. В отличие от слайсов, нумерация дисков начинается с 0. Основные коды, которые вам могут встретиться, есть в списке Table 3-1.

В то время, как ссылка на раздел FreeBSD требует также указания слайса и диска, содержащего раздел, ссылка на слайс требует также указания имени диска. Делайте это указанием имени диска, s, номера слайса, и затем буквы раздела. Примеры показаны в Example 3-1.

Example 3-2 показывает концептуальную модель диска, которая должна помочь прояснить ситуацию.

Для установки FreeBSD вы должны сначала настроить слайсы дисков, затем создать разделы внутри слайсов, которые будут использованы для FreeBSD, а затем создать файловую систему (или подкачку) в каждом разделе и решить куда файловая система будет смонтирована.

Table 3-1. Коды дисковых устройств

КодЗначение
adATAPI (IDE) диск
daSCSI direct access диск
acdATAPI (IDE) CDROM
cdSCSI CDROM
fdFloppy disk

Example 3-1. Пример имен диска, слайса, и раздела

ИмяЗначение
ad0s1aПервый раздел (a) на первом слайсе (s1) первого IDE диска (ad0).
da1s2eПятый раздел (e) на втором слайсе (s2) второго SCSI диска (da1).

Example 3-2. Концептуальная модель диска

Эта диаграмма показывает первый подключенный к системе IDE диск с точки зрения FreeBSD. Предположим, что размер диска 4 GB, и он содержит два 2 GB слайса (MS-DOS разделы). Первый слайс содержит MS-DOS диск, C:, а второй слайс содержит установленную FreeBSD. В этом примере в установленной FreeBSD три раздела и раздел подкачки.

В каждом из трех разделов есть файловая система. Раздел a используется для корневой файловой системы, e для иерархии каталогов /var, а f для иерархии каталогов /usr.

Этот, и другие документы, могут быть скачаны с ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

По вопросам связанными с FreeBSD, прочитайте документацию прежде чем писать в <questions@FreeBSD.org>.
По вопросам связанным с этой документацией, пишите <doc@FreeBSD.org>.
По вопросам связанным с русским переводом документации, пишите <frdp@FreeBSD.org.ua>.


Руководство FreeBSDPrevChapter 12 Устройства храненияNext

12.13 Шифрование дисковых разделов

Текст предоставилLucky Green.

FreeBSD предоставляет прекрасную возможность по защите от несанкционированного доступа к данным. Права на доступ к файлам и технология мандатного контроля доступа MAC (Mandatory Access Control) (смотрите see Section 10.12) помогают предотвратить несанкционированный доступ посторонних лиц к данным, при условии работы операционной системы и компьютера. Однако права доступа, контролируемые операционной системой, не имеют значения, если нападающий получает физический доступ к компьютеру и может просто перенести жёсткий диск на другую машину для копирования и дальнейшего анализа важных данных.

Вне зависимости от того, как атакующий завладел жёстким диском или выключенным компьютером, технология gbde (GEOM Based Disk Encryption - шифрование диска на уровне GEOM) может защитить данные файловой системы компьютера даже против очень заинтересованной атакующей стороны с достаточными ресурсами. В отличие от громоздких систем шифрования, которые шифруют отдельные файлы, gbde шифрует в прозрачном режиме файловую систему в целом, при этом данные в открытом виде на диск никогда не записываются.

12.13.1 Включение gbde в ядре

  1. Получите права пользователя root

    Настройка gbde требует права доступа администратора системы.

    % su -
    	    Password:
  2. Проверьте номер версии операционной системы

    Для работы gbde(4) требуется FreeBSD 5.0 и выше.

    # uname -r
    	    5.0-RELEASE
  3. Включите поддержку gbde(4) в конфигурационный файл ядра

    При помощи вашего любимого текстового редактора добавьте следующую строку в файл конфигурации вашего ядра:

    options GEOM_BDE

    Выполните конфигурацию, компиляцию и установку нового ядра FreeBSD. Этот процесс описан в Chapter 9.

    Перезагрузитесь, запустив новое ядро.

12.13.2 Подготовка зашифрованного жёсткого диска

В следующем примере предполагается, что в вашу систему вы добавляете новый винчестер, на котором будет располагаться единственный раздел с зашифрованными данными. Этот раздел будет монтироваться в каталог /private. gbde может также использоваться для шифрования /home и /var/mail, но это требует более сложной последовательности действий, что выходит за рамки этого вводного материала.

  1. Подключите новый жёсткий диск

    Установите новый диск в систему, как это описано в Section 12.3. В рамках этого примера раздел, соответствующий новому жёсткому диску, будет называться /dev/ad4s1c. Устройства /dev/ad0s1* представляют существующие стандартные разделы FreeBSD нашей тестовой системы.

    # ls /dev/ad*
    	    /dev/ad0        /dev/ad0s1b     /dev/ad0s1e     /dev/ad4s1
    	    /dev/ad0s1      /dev/ad0s1c     /dev/ad0s1f     /dev/ad4s1c
    	    /dev/ad0s1a     /dev/ad0s1d     /dev/ad4
  2. Создайте каталог для размещения файлов блокировок GBDE

    # mkdir /etc/gbde

    Файл блокировки gbde содержит информацию, которая нужна gbde для доступа к зашифрованному разделу. Не имея доступа к файлу блокировки, gbde не сможет расшифровать данные, хранимые в зашифрованном разделе, без значительного ручного вмешательства, что программно не поддерживается. Каждый зашифрованный раздел использует отдельный файл блокировки.

  3. Инициализируйте раздел gbde

    Перед началом работы с разделом gbde его необходимо проинициализировать. Эта инициализация производится только один раз:

    # gbde init /dev/ad4s1c -i -L /etc/gbde/ad4s1c

    gbde(8) запустит редактор, что позволит вам задать в шаблоне различные конфигурационные параметры. При работе с файловыми системами UFS1 и UFS2 задайте значение sector_size равным 2048:

    $FreeBSD: src/sbin/gbde/template.txt,v 1.1 2002/10/20 11:16:13 phk Exp $
    	    #
    	    # Sector size is the smallest unit of data which can be read or written.
    	    # Making it too small decreases performance and decreases available space.
    	    # Making it too large may prevent filesystems from working.  512 is the
    	    # minimum and always safe.  For UFS, use the fragment size
    	    #
    	    sector_size     =       2048
    	    [...]

    gbde(8) дважды запросит ввод пароля, который будет использоваться для защиты данных. Пароль в обоих случаях должен вводиться одинаковый. Возможности gbde по защите ваших данных полностью зависят от качества выбранной вами ключевой фразы. [1]

    По команде gbde init создаётся файл блокировок для вашего раздела gbde, который в нашем случае будет иметь имя /etc/gbde/ad4s1c.

    Caution: Резервные копии файлов блокировок gbde должны храниться вместе с содержимым шифруемых разделов. Хотя удаление только блокировочного файла не сможет противостоять дешифрации атакующим раздела gbde, без этого файла даже легитимный пользователь не сможет получить доступ к данным без определённых и значительных усилий, что не поддерживается gbde(8) и его разработчиком.

  4. Подключите зашифрованный раздел к системе

    # gbde attach /dev/ad4s1c -l /etc/gbde/ad4s1c

    Будет выдан запрос на ввод ключевой фразы, которую вы выбирали во время инициализации зашифрованного раздела. Новое защищённое устройство будет видно в каталоге /dev под названием /dev/device_name.bde:

    # ls /dev/ad*
    	    /dev/ad0        /dev/ad0s1b     /dev/ad0s1e     /dev/ad4s1
    	    /dev/ad0s1      /dev/ad0s1c     /dev/ad0s1f     /dev/ad4s1c
    	    /dev/ad0s1a     /dev/ad0s1d     /dev/ad4        /dev/ad4s1c.bde
  5. Создайте файловую систему на зашифрованном устройстве

    Как только защищённое устройство будет подключено к системе, вы сможете создать на нём файловую систему. Для этого используется утилита newfs(8). Так как инициализация новой файловой системы UFS2 происходит быстрее, чем инициализация файловой системы старого формата UFS1, то рекомендуется использовать newfs(8) с параметром -O2.

    Note: Во FreeBSD 5.1-RELEASE и последующих релизах параметр -O2 используется по умолчанию.

    # newfs -U -O2 /dev/ad4s1c.bde

    Note: Запуск команды newfs(8) должен выполняться над подключенном разделе gbde, который идентифицируется по расширению *.bde в имени устройства.

  6. Смонтируйте зашифрованный раздел

    Создайте точку монтирования для зашифрованной файловой системы.

    # mkdir /private

    Смонтируйте защищённую файловую систему.

    # mount /dev/ad4s1c.bde /private
  7. Проверьте доступность зашифрованной файловой системы

    Защищённая файловая система теперь должна быть доступна утилите df(1) и доступной для использования.

    % df -H
    	    Filesystem        Size   Used  Avail Capacity  Mounted on
    	    /dev/ad0s1a      1037M    72M   883M     8%    
    	    /devfs            1.0K   1.0K     0B   100%    /dev 
    	    /dev/ad0s1f       8.1G    55K   7.5G     0%    /home 
    	    /dev/ad0s1e      1037M   1.1M   953M     0%    /tmp 
    	    /dev/ad0s1d       6.1G   1.9G   3.7G    35%    /usr 
    	    /dev/ad4s1c.bde   150G   4.1K   138G     0%    /private

12.13.3 Монтирование имеющихся зашифрованных файловых систем

После каждой загрузки для каждой защищённой файловой системы перед их использованием должны выполняться повторное подключение к системе, проверка на наличие ошибок и монтирование. Требуемые для этого команды должны выполняться пользователем root.

  1. Подключение gbde-раздела к системе

    # gbde attach /dev/ad4s1c -l /etc/gbde/ad4s1c

    Будет выдан запрос на ввод ключевой фразы, выбранной на этапе инициализации зашифрованного раздела gbde.

  2. Проверка файловой системы на наличие ошибок

    Так как защищаемая файловая система не может пока быть указана в файле /etc/fstab для автоматического монтирования, то она должны проверяться на наличие ошибок посредством ручного запуска fsck(8) до её монтирования.

    # fsck -p -t ffs /dev/ad4s1c.bde
  3. Монтирование зашифрованной файловой системы

    # mount /dev/ad4s1c.bde /private

    Теперь защищённая файловая система доступна для работы.

12.13.3.1 Автоматическое монтирование зашифрованных разделов

Для автоматического подключения, проверки и монтирования зашифрованного раздела можно создать скрипт, но во соображениям безопасности в этом скрипте пароля для gbde(8) быть не должно. Поэтому рекомендуется запускать такие скрипты вручную, а пароль задавать с консоли или сеанса ssh(1).

12.13.4 Криптографическая защита, применяемая в gbde

gbde(8) шифрует содержимое секторов при помощи 128-битного AES в режиме CBC. Каждый сектор диска шифруется различным ключом AES. Более полная информацию о системе шифрования gbde, включая алгоритм генерации ключей для секторов из ключевой фразы, вводимой пользователем, можно найти на страницах справочной системы о gbde(4).

12.13.5 Вопросы совместимости

sysinstall(8) несовместим с устройствами, зашифрованными gbde. Все устройства *.bde перед запуском sysinstall(8) должны быть отключены от системы, или эта утилита аварийно завершит работу на этапе обнаружения устройств. Для отключения защищённого устройства, используемого в нашем примере, воспользуйтесь такой командой:

# gbde detach /dev/ad4s1c

Также заметьте, что, так как vinum(4) работает не через подсистему geom(4), то вы не можете использовать тома vinum с gbde.

Notes

[1]

Советы по выбору легкозапоминающихся ключевых фраз можно найти на сайте Diceware Passphrase.

Этот, и другие документы, могут быть скачаны с ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

По вопросам связанными с FreeBSD, прочитайте документацию прежде чем писать в <questions@FreeBSD.org>.
По вопросам связанным с этой документацией, пишите <doc@FreeBSD.org>.
По вопросам связанным с русским переводом документации, пишите <frdp@FreeBSD.org.ua>.


Руководство FreeBSDPrevNext

Chapter 23 Resources on the Internet *

Эта глава не переведена.

Этот, и другие документы, могут быть скачаны с ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

По вопросам связанными с FreeBSD, прочитайте документацию прежде чем писать в <questions@FreeBSD.org>.
По вопросам связанным с этой документацией, пишите <doc@FreeBSD.org>.
По вопросам связанным с русским переводом документации, пишите <frdp@FreeBSD.org.ua>.


Руководство FreeBSDPrevChapter 12 Устройства храненияNext

12.6 Дискеты

Первоначальный текст предоставилJulio Merino. ПереписалMartin Karlsson.

Хранение данных на дискетах иногда бывает полезным, например, когда нет других съёмных носителей или когда необходимо перенести небольшой объём данных на другой компьютер.

В этом разделе будет описано, как использовать дискеты во FreeBSD. В основном речь пойдёт о форматировании и использовании дискет DOS размером 3.5 дюйма, однако общие принципы применимы и для других форматов гибких дисков.

12.6.1 Форматирование дискет

12.6.1.1 Устройство

Доступ к гибким дискам, как, впрочем, и к остальным устройствам, осуществляется через соответствующие файлы в каталога /dev. Чтобы обратиться к дискете при использовании релизов 4.X и ранее, необходимо работать с /dev/fdN, где N обозначает номер привода, обычно 0, или /dev/fdNX, где X обозначает букву.

В 5.0 и более новых релизах просто используйте /dev/fdN.

12.6.1.1.1 Размер диска в 4.X и более ранних релизах

Имеются также устройства /dev/fdN.size, где size обозначает размер дискеты в килобайтах. Эти файлы устройств используются во время низкоуровневого форматирования для задания размера устройства. В последующих примерах будет использоваться размер в 1440kB.

Иногда записи в каталоге /dev необходимо создавать повторно. Для этого выполните следующее:

# cd /dev && ./MAKEDEV "fd*"

12.6.1.1.2 Размер диска в 5.0 и последующих релизах

В 5.0 devfs(5) управляет файлами устройств в каталоге /dev в автоматическом режиме, так что использование MAKEDEV необязательно.

Требуемый размер диска передаётся утилите fdformat(1) при помощи параметра -f. Поддерживаемые размеры перечислены в fdcontrol(8), но, по нашему мнению, лучше всего работает 1440kB.

12.6.1.2 Форматирование

Перед тем, как дискетой можно будет воспользоваться, её необходимо отформатировать на низком уровне. Обычно это выполняется производителем, однако форматирование является хорошим способом проверить целостность носителя. Большинство гибких дисков предназначены для использования с размером 1440kB, однако возможно задать меньший или больший размер.

Для низкоуровневого форматирования дискет вам нужно использовать fdformat(1). В качестве параметра этой утилите передаётся имя устройства.

Обратите внимание на появление сообщений об ошибках, так как они могут помочь определить, хорошая это дискета или плохая.

12.6.1.2.1 Форматирование в 4.X и более ранних релизах

Для форматирования дискет используйте устройства /dev/fdN.size. Вставьте новую 3.5-дюймовую дискету в дисковод и введите команду:

# /usr/sbin/fdformat /dev/fd0.1440

12.6.1.2.2 Форматирование в 5.0 и более новых релизах

Для форматирования гибких дисков используйте устройства /dev/fdN. Вставьте новую 3.5-дюймовую дискету в дисковод и введите команду:

# /usr/sbin/fdformat -f 1440 /dev/fd0

12.6.2 Метка диска

После низкоуровневого форматирования диска вам нужно поместить на него метку диска. Эта метка будет потом разрушена, но она будет нужна системе для определения размера диска и его характеристик.

Новая метка диска будет касаться диска в целом, и будет содержать полную информацию о параметрах дискеты. Значения геометрии для метки диска перечислены в файле /etc/disktab.

Теперь вы можете запустить disklabel(8) примерно так:

# /sbin/disklabel -B -r -w /dev/fd0 fd1440

Note: Начиная с FreeBSD 5.1-RELEASE, на смену старой программе disklabel(8) пришла утилита bsdlabel(8). У bsdlabel(8) отсутствуют некоторые устаревшие опции и параметры; в примере выше параметр -r не может использоваться с bsdlabel(8). Для получения дополнительной информации обратитесь к справочной странице п о bsdlabel(8).

12.6.3 Файловая система

Теперь ваша дискета готова к высокоуровневому форматированию. При этом на неё будет помещаться новая файловая система, которая позволит FreeBSD читать и записывать информацию на диск. После создания новой файловой системы метка диска уничтожается, так что если вы захотите переформатировать диск, вам придётся создавать метку диска повторно.

Файловой системой для дискеты может служить UFS или FAT. Вообще говоря, FAT для дискет походит лучше.

Для размещения на дискете новой файловой системы, выполните:

# /sbin/newfs_msdos /dev/fd0

Теперь диск готов к работе.

12.6.4 Использование дискет

Для работы с гибким диском смонтируйте его при помощи утилит mount_msdos(8) (для 4.X и более ранних релизов) или mount_msdosfs(8) (в 5.0 и последующих релизах). Можно также использовать пакет emulators/mtools из коллекции портов.

Этот, и другие документы, могут быть скачаны с ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

По вопросам связанными с FreeBSD, прочитайте документацию прежде чем писать в <questions@FreeBSD.org>.
По вопросам связанным с этой документацией, пишите <doc@FreeBSD.org>.
По вопросам связанным с русским переводом документации, пишите <frdp@FreeBSD.org.ua>.


Руководство FreeBSDPrevChapter 10 БезопасностьNext

10.13 File System Access Control Lists *

Contributed by Tom Rhodes.

Этот раздел еще не переведен.

Этот, и другие документы, могут быть скачаны с ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

По вопросам связанными с FreeBSD, прочитайте документацию прежде чем писать в <questions@FreeBSD.org>.
По вопросам связанным с этой документацией, пишите <doc@FreeBSD.org>.
По вопросам связанным с русским переводом документации, пишите <frdp@FreeBSD.org.ua>.


Руководство FreeBSDPrevNext

I. В Начале

Эта часть Руководства Пользователя FreeBSD предназначена для пользователей и администраторов - новичков в FreeBSD. Эти главы:

  • Введут Вас в FreeBSD.

  • Проведут Вас по инсталляционному процессу FreeBSD.

  • Обучат Вас некоторым основам UNIX®.

  • Покажут Вам как устанавливать программные пакеты не входящие в стандартную поставку FreeBSD.

  • Введут Вас в X Window, оконную систему для UNIX, и опишут как настроить графическое окружение и сделать Вашу работу более продуктивной.

Мы попытались сократить множество ссылок в тексте до минимума для того, чтоб Вы могли прочитать эту секцию Руководства с начала до конца с минимумом перелистываний страниц.

Этот, и другие документы, могут быть скачаны с ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

По вопросам связанными с FreeBSD, прочитайте документацию прежде чем писать в <questions@FreeBSD.org>.
По вопросам связанным с этой документацией, пишите <doc@FreeBSD.org>.
По вопросам связанным с русским переводом документации, пишите <frdp@FreeBSD.org.ua>.


Руководство FreeBSDPrevChapter 2 Установка FreeBSDNext

2.12 Расширенное руководство по установке

Предоставлено Valentino Vaschetto.

Эта секция описывает особые случаи установки FreeBSD.

2.12.1 Установка FreeBSD на систему без монитора или клавиатуры

Этот тип установки называется ``установка без монитора'', потому что на компьютере, на который вы пробуете установить FreeBSD или не подсоединен монитор, или даже нет VGA выхода. Вы спросите, как это возможно? Используя последовательную консоль. Последовательная консоль в своей основе имеет другой компьютер, который служит дисплеем и клавиатурой для системы. Чтобы сделать это, создайте инсталляционные дискеты, как описано в разделе Section 2.2.7.

Чтобы модифицировать дискеты для загрузки с последовательной консоли, следуйте этой инструкции:

  1. Включение загрузки с последовательной консоли

    Если вы произведете загрузку с только что полученных дискет, FreeBSD загрузится в нормальный режим установки. Мы хотим, чтобы FreeBSD загрузилась на последовательную консоль для нашей установки. Чтобы сделать это, смонтируйте kern.flp на вашу систему FreeBSD используя команду mount(8).

    # mount /dev/fd0 /floppy

    Теперь, когда дискета смонтирована, нужно перейти в каталог дискеты:

    # cd /floppy

    Сейчас вам нужно настроить дискету для загрузки в последовательную консоль. Нужно создать файл boot.config, содержащий /boot/loader -h. Это нужно для того, чтобы передать загрузчику флаг загрузки с последовательной консоли.

    # echo "/boot/loader -h" > boot.config

    Теперь, когда ваша дискета правильно настроена, размонтируйте ее с помощью команды umount(8):

    # cd /
    # umount /mnt

    Теперь удалите дискету из дисковода.

  2. Подсоединение нуль-модемного кабеля

    Теперь нужно соединить два компьютера нуль-модемным кабелем. Просто подсоедините этот кабель к последовательным портам двух компьютеров. Обычный последовательный кабель не будет работать, вам потребуется нуль-модемный кабель, поскольку в нем некоторые соединения перевернуты.

  3. Загрузка для установки

    Настало время начать установку. Вставьте диск kern.flp в дисковод компьютера, на который вы будете производить установку без монитора и включите его.

  4. Подключение к компьютеру без монитора

    Теперь вы можете подключиться к этому компьютеру с помощью cu(1):

    # cu -l /dev/cuaa0

Это все! Теперь вы можете управлять компьютером без монитора через сессию cu. Будет запрошен диск mfsroot.flp, затем появится выбор типа терминала. Выберите цветную консоль FreeBSD и проводите установку!

Этот, и другие документы, могут быть скачаны с ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

По вопросам связанными с FreeBSD, прочитайте документацию прежде чем писать в <questions@FreeBSD.org>.
По вопросам связанным с этой документацией, пишите <doc@FreeBSD.org>.
По вопросам связанным с русским переводом документации, пишите <frdp@FreeBSD.org.ua>.


Руководство FreeBSDPrevChapter 2 Установка FreeBSDNext

2.6 Выбор устанавливаемых компонентов

2.6.1 Выбор дистрибутивного набора (Distribution Set)

Выбор дистрибутивного набора зависит в основном от направления будущего использования системы и от доступного дискового пространства. Предустановленные опции варьируются от наименьшей возможной конфигурации до полной установки. Для новичков в UNIX® и/или FreeBSD лучшим выбором будет одна из этих предустановленных опций. Настройка дистрибутивного набора как правило нужна более опытным пользователям.

Нажмите F1 для получения информации о дистрибутивных наборах и их содержимом. После просмотра помощи нажмите Enter для возврата к меню выбора дистрибутивного набора.

Если желательно наличие графического интерфейса пользователя, должен быть выбран дистрибутивный набор с названием, начинающимся на X. Настройка XFree86 и выбор десктопа по умолчанию -- часть послеустановочного процесса.

Устанавливаемая по умолчанию версия XFree86 зависит от устанавливаемой версии FreeBSD. Для версий FreeBSD ниже 4.6 устанавливается XFree86 3.X. Для FreeBSD 4.6 и выше, версия по умолчанию XFree86 4.X.

Проверьте на веб-сайте XFree86 поддерживается ли ваша видеокарта. Если видеокарта не поддерживается в версии по умолчанию, которую устанавливает FreeBSD, выберите дистрибутивный набор без X. После установки установите и настройте соответствующую версию XFree86 используя коллекцию портов.

Если планируется пересборка ядра, выберите опцию, включающую исходные тексты. Информация о том, зачем пересобирать ядро и как это сделать, находится на Chapter 9.

Ясно, что наиболее универсальная система включает все. Если места на диске достаточно, выберите All, как показано на Figure 2-28 и нажмите Enter. Если есть сомнения относительно того, хватит ли диска, используйте наиболее подходящую опцию. Не беспокойтесь о том, какой выбор будет наилучшим, другие части дистрибутива могут быть добавлены после установки.

Figure 2-28. Выбор дистрибутивных наборов

2.6.2 Установка коллекции портов

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

Программа установки не проверяет, есть ли достаточно места. Выберите эту опцию только если его достаточно. В FreeBSD 5.2.1, коллекция портов занимает около 300 MB. В более современных релизах это значение всегда больше.

                         User Confirmation Requested
 Would you like to install the FreeBSD ports collection? 

 This will give you ready access to over 10,000 ported software packages,
 at a cost of around 300 MB of disk space when "clean" and possibly much
 more than that if a lot of the distribution tarballs are loaded
 (unless you have the extra CDs from a FreeBSD CD/DVD distribution
 available and can mount it on /cdrom, in which case this is far less
 of a problem). 

 The ports collection is a very valuable resource and well worth having
 on your /usr partition, so it is advisable to say Yes to this option. 

 For more information on the ports collection & the latest ports,
 visit: 
     http://www.FreeBSD.org/ports  

                              [ Yes ]     No

Выберите [ Yes ] для установки коллекции портов, или [ No ], чтобы пропустить установку. Нажмите Enter, чтобы продолжить. Меню выбора дистрибутивных наборов появится опять.

Figure 2-29. Подтверждение выбора дистрибутивного набора

Если вы согласны с выбранными опциями, переместитесь на Exit, убедитесь что выбран [ OK ] и нажмите Enter, чтобы продолжить.

Этот, и другие документы, могут быть скачаны с ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

По вопросам связанными с FreeBSD, прочитайте документацию прежде чем писать в <questions@FreeBSD.org>.
По вопросам связанным с этой документацией, пишите <doc@FreeBSD.org>.
По вопросам связанным с русским переводом документации, пишите <frdp@FreeBSD.org.ua>.


Руководство FreeBSDPrevChapter 2 Установка FreeBSDNext

2.13 Подготовка собственного источника установки

Note: Чтобы не повторяться, ``диск FreeBSD'' в данном случае означает FreeBSD CDROM или DVD который вы купили или подготовили самостоятельно.

Может быть несколько ситуаций, в которых вам потребуется подготовить собственный диск и/или источник для установки FreeBSD. Это может быть физический носитель, такой как лента, или источник, с которого sysinstall сможет взять файлы, такой как локальный сервер FTP, или раздел MS-DOS®.

Например:

2.13.1 Создание установочного CDROM

В составе каждого релиза проект FreeBSD предоставляет доступ к двум образам CDROM (``ISO images''). Эти образы могут быть записаны (``прожжены'') на CD если у вас есть CD-рекордер, а затем использованы для установки FreeBSD. Если у вас есть CD-рекордер и дешевый канал интернет, это простейший путь установить FreeBSD.

  1. Скачайте соответствующие ISO образы

    ISO образы для каждого релиза могут быть загружены с ftp://ftp.FreeBSD.org/pub/FreeBSD/ISO-IMAGES-архитектура/версия или с ближайшего зеркала. Замените архитектура и версия в соответствии архитектурой (Alpha или i386™) и номером релиза соответственно.

    Этот каталог обычно содержит следующие образы:

    Table 2-5. Названия FreeBSD ISO образов и их значения

    Имя файлаСодержимое
    версия-mini.isoВсе что вам нужно для установки FreeBSD.
    версия-disc1.isoВсе что вам нужно для установки FreeBSD, и столько дополнительных пакетов сторонних производителей, сколько уместилось на диске.
    версия-disc2.iso``live filesystem'', используемая в сочетании со средством ``Repair'' программы sysinstall. Копия дерева CVS FreeBSD. Столько дополнительных пакетов сторонних производителей, сколько уместилось на диске.

    Вам необходимо загрузить или образ mini ISO, или образ первого диска. Не загружайте их оба, так как образ первого диска содержит все, что есть на образе mini ISO.

    Используйте mini ISO если доступ в интернет затруднен. Он позволит вам установить FreeBSD, и вы сможете установить в последствии программы сторонних производителей используя систему портов/пакетов (смотрите Chapter 4) если необходимо.

    Используйте образ первого диска, если хотите выбрать программы сторонних производителей с этого диска.

    Дополнительные образы дисков полезны, но не необходимы, особенно если у вас есть высокоскоростной доступ к интернет.

  2. Запись CD

    Затем вам нужно записать образы CD на диски. Если вы делаете это из другой системы FreeBSD, обратитесь к Section 12.5 за более подробной информацией (в частности, Section 12.5.3 и Section 12.5.4).

    Если вы делаете это в другой системе, потребуется использовать те утилиты для управления CD-рекордером, которые есть в этой системе. Образы дисков предоставляются в стандартном формате ISO, который поддерживается многими программами.

2.13.2 Создание локального сервера FTP с FreeBSD

Диск FreeBSD сформирован так же, как и сервер FTP. Это сильно упрощает создание локального сервера FTP, который может быть использован другими компьютерами вашей сети для установки FreeBSD.

  1. Убедитесь, что на компьютере FreeBSD, на котором будет установлен сервер FTP, CDROM находится в приводе и смонтируйте /cdrom.

    # mount /cdrom
  2. Создайте учетную запись для anonymous FTP в /etc/passwd. Сделайте это, отредактировав /etc/passwd с помощью vipw(8) и добавив эту строку:

    ftp:*:99:99::0:0:FTP:/cdrom:/nonexistent
  3. Убедитесь что сервис FTP включен в /etc/inetd.conf.

Всякий, кто может подсоединиться по сети к вашему компьютеру, может выбрать тип носителя FTP и набрать ftp://ваш компьютер после выбора ``Other'' в меню серверов FTP во время установки.

Warning: Этот подход хорош для компьютера в вашей локальной сети, защищенного с помощью файрволла. Предоставление сервиса FTP другим компьютерам через интернет (а не через локальную сеть) привлекает к вашему компьютеру внимание кракеров и других лиц, чье внимание нежелательно. Мы настоятельно рекомендуем придерживаться правильной политики безопасности, если вы делаете это.

2.13.3 Создание дискет для установки

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

Как минимум, вам потребуется столько 1.44 MB или 1.2 MB дискет, сколько нужно, чтобы вместить все файлы из каталога bin (binary distribution). Если вы подготавливаете эти дискеты из DOS, они ДОЛЖНЫ быть отформатированы с помощью команды MS-DOS FORMAT. Если вы используете Windows, используйте Explorer для форматирования дисков (кликните правой кнопкой мыши на диске A: и выберите ``Format''.

Не доверяйте заводскому форматированию дискет. Отформатируйте их еще раз самостоятельно, просто для уверенности. Множество проблем, о которых сообщали наши пользователи, были результатом использования неправильно отформатированных дисков, поэтому мы сейчас обращаем на это внимание.

Если вы создаете образы на другом компьютере FreeBSD, форматирование все еще не лишне, хотя вам не потребуется создавать файловую систему DOS на каждой дискете. Вы можете использовать disklabel и newfs для создания на них файловых систем UFS, в следующей последовательности (для 3.5" 1.44 MB дискет):

# fdformat -f 1440 fd0.1440
# disklabel -w -r fd0.1440 floppy3
# newfs -t 2 -u 18 -l 1 -i 65536 /dev/fd0

Note: Используйте fd0.1200 и floppy5 для 5.25" 1.2 MB дискет.

Затем вы можете смонтировать их и писать на них как на любую другую файловую систему.

После форматирования дискет вам потребуется скопировать на них файлы. Файлы дистрибутива разделены на части, размер которых позволяет легко разместить пять частей на обычной 1.44 MB дискете. Заполните все дискеты файлами, помещая столько файлов на одну дискету, сколько уместится, пока у вас не будет всех необходимых компонент дистрибутива. Каждый компонент должен располагаться в подкаталоге на дискете, например a:\bin\bin.aa, a:\bin\bin.ab, и так далее.

Как только в процессе установки появится экран Media, выберите ``Floppy'' и установка продолжится.

2.13.4 Установка с раздела MS-DOS®

Чтобы подготовиться к установке с раздела MS-DOS, скопируйте файлы с дистрибутива в каталог freebsd корневого каталога раздела. Например, c:\freebsd. Структура каталога CDROM или сервера FTP должна быть в точности воспроизведена в этом каталоге, мы предлагаем использовать команду DOS xcopy если вы копируете дистрибутив с CD. Например, чтобы подготовить минимальную установку FreeBSD:

C:\> md c:\freebsd
C:\> xcopy e:\bin c:\freebsd\bin\ /s
C:\> xcopy e:\manpages c:\freebsd\manpages\ /s

Предполагается, что на C: есть свободное место, а на E: смонтирован CDROM.

Если у вас нет CDROM, можно загрузить дистрибутив с ftp.FreeBSD.org. Каждый компонент находится в своем собственном каталоге, например компонент base можно найти в каталоге 5.2.1/base/.

Note: В 4.X и более поздних релизах FreeBSD компонент ``base'' называется ``bin''. Поправьте команды и ссылки соответственно, если вы используете эти версии.

Все компоненты, которые вы будете устанавливать с раздела MS-DOS (и для которых у вас есть место), нужно расположить в c:\freebsd -- для минимальной установки нужна только компонента BIN.

2.13.5 Создание ленты для установки

Установка с ленты это возможно самый простой метод, уступающий только установке с FTP или CDROM. Программа установки может найти на ленте файлы, которые записаны на нее с помощью tar. После получения всех файлов дистрибутива, которые вам нужны, запишите их на ленту с помощью tar:

# cd /freebsd/distdir
# tar cvf /dev/rwt0 dist1 ... dist2

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

Note: При начале установки лента должна быть в приводе до загрузки с дискеты. В ином случае она может быть не найдена при тестировании устройств.

2.13.6 Перед установкой по сети

Есть три возможных типа установки по сети. Через последовательный порт (SLIP или PPP), параллельный порт (PLIP (laplink кабель)), или Ethernet (стандартный Ethernet контроллер (включая некоторые PCMCIA)).

Поддержка SLIP немного примитивна, и ограничена в основном постоянными соединениями, такими как последовательный кабель между ноутбуком и другим компьютером. Соединение должно быть постоянным, так как устанавливаемый SLIP в настоящее время не имеет возможности дозвона; эта возможность предоставляется программой PPP, которая должна быть использована вместо SLIP когда это возможно.

Если вы используете модем, PPP это конечно почти единственный выбор. Убедитесь что у вас есть информация о провайдере, так как она понадобится на довольно ранней стадии процесса установки.

Если вы используете PAP или CHAP для соединения с провайдером (другими словами, вы можете соединяться с провайдером из Windows без использования скрипта), все что вам понадобится это ввести dial в приглашении ppp. Иначе вам нужно знать, как дозвониться до провайдера с помощью ``AT команд'', специфичных для вашего модема, так как программа дозвона PPP предоставляет только очень простой эмулятор терминала. Обратитесь к руководству user-ppp и FAQ для получения более подробных сведений. Если у вас проблемы, логи могут быть выведены на экран с помощью команды set log local ....

Если доступно постоянное соединение с другой машиной FreeBSD (2.0-R или выше), вы можете также подумать об установке через параллельный порт ``laplink'' кабелем. Скорость соединения через параллельный порт значительно выше, чем обычно возможно через последовательную линию (до 50 кбайт/с), это приведет к ускорению установки.

Наконец, для самой быстрой установки по сети хорошим выбором будет Ethernet адаптер! FreeBSD поддерживает большинство PC Ethernet карт; список поддерживаемых карт (и требуемых для них установок) предоставляется в информации об оборудовании для каждого релиза FreeBSD. Если вы используете одну из поддерживаемых PCMCIA Ethernet карт, убедитесь также что она подключена перед тем, как ноутбук будет включен! К сожалению, FreeBSD в настоящее время не поддерживает горячее подключение PCMCIA карт во время установки.

Вам также потребуется знать IP адрес в сети, сетевую маску для класса подсети, и имя компьютера. Если вы делаете установку через соединение PPP и у вас нет статического IP, не бойтесь, IP адрес будет динамически выделен вам провайдером. Системный администратор может подсказать вам какие значения использовать для данной установки по сети. Если вы будете обращаться к другим хостам по имени, а не по IP адресу, понадобится также ДНС сервер и, возможно, адрес шлюза (если вы используете PPP, это IP адрес вашего провайдера), чтобы связаться с ним. Если вы хотите производить установку с FTP через HTTP прокси, потребуется также адрес прокси. Если вы не знаете ответов на все или большинство этих вопросов, свяжитесь с системным администратором или ISP перед тем, как начать этот тип установки.

2.13.6.1 Перед установкой через NFS

Установка через NFS очень проста. Просто скопируйте компоненты FreeBSD, которые вам нужны на NFS сервер, а затем укажите на него при выборе источника установки NFS.

Если этот сервер поддерживает только ``привилегированные порты'' (это как правило так для рабочих станций Sun), потребуется установить этот параметр в меню Options перед тем, как начать установку.

Если у вас Ethernet карта плохого качества с низкой скоростью передачи данных, вы возможно захотите переключить соответствующий флаг в Options.

Чтобы установка по NFS работала, сервер должен поддерживать монтирование подкаталогов, например, если установочный каталог дистрибутива FreeBSD 5.2.1 находится на: ziggy:/usr/archive/stuff/FreeBSD, ziggy должен позволять непосредственное монтирование /usr/archive/stuff/FreeBSD, а не только /usr или /usr/archive/stuff.

В файле FreeBSD /etc/exports, это управляется параметром -alldirs. Другие NFS сервера могут иметь другие соглашения. Если вы получаете сообщения сервера ``permission denied'', это может означать, что соответствующая опция не включена.

Этот, и другие документы, могут быть скачаны с ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

По вопросам связанными с FreeBSD, прочитайте документацию прежде чем писать в <questions@FreeBSD.org>.
По вопросам связанным с этой документацией, пишите <doc@FreeBSD.org>.
По вопросам связанным с русским переводом документации, пишите <frdp@FreeBSD.org.ua>.


Руководство FreeBSDPrevChapter 2 Установка FreeBSDNext

2.8 Подтверждение установки

Теперь можно начинать установку. Это последний шанс отменить установку и таким образом избежать изменений на жестком диске.

                       User Confirmation Requested
 Last Chance! Are you SURE you want to continue the installation? 

 If you're running this on a disk with data you wish to save then WE
 STRONGLY ENCOURAGE YOU TO MAKE PROPER BACKUPS before proceeding! 

 We can take no responsibility for lost disk contents!  

                             [ Yes ]    No

Выберите [ Yes ] и нажмите Enter, чтобы начать.

Время установки сильно зависит от выбранного дистрибутивного набора, источника установки и скорости компьютера. Появится несколько сообщений о статусе процесса установки.

Установка будет завершена когда отобразится следующее сообщение:

                               Message 

Congratulations! You now have FreeBSD installed on your system. 

We will now move on to the final configuration questions. 
For any option you do not wish to configure, simply select No. 

If you wish to re-enter this utility after the system is up, you may
do so by typing: /stand/sysinstall .  

                                 [ OK ] 

                      [  Press enter to continue  ]

Нажмите Enter для начала послеустановочной настройки.

Выбор [ No ] и нажатие Enter прервет процесс установки, изменения в систему внесены не будут. Появится следующее сообщение:

                                Message
Installation complete with some errors.  You may wish to scroll
through the debugging messages on VTY1 with the scroll-lock feature. 
You can also choose "No" at the next prompt and go back into the
installation menus to retry whichever operations have failed. 

                                 [ OK ]

Это сообщение появилось поскольку ничего не было установлено. Нажатие Enter вернет вас в главное меню установки, чтобы выйти из нее.

Этот, и другие документы, могут быть скачаны с ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

По вопросам связанными с FreeBSD, прочитайте документацию прежде чем писать в <questions@FreeBSD.org>.
По вопросам связанным с этой документацией, пишите <doc@FreeBSD.org>.
По вопросам связанным с русским переводом документации, пишите <frdp@FreeBSD.org.ua>.


Руководство FreeBSDPrevChapter 2 Установка FreeBSDNext

2.7 Выбор источника для установки

При установке с CDROM или DVD используйте клавиши навигации, для перехода к Install from a FreeBSD CD/DVD. Убедитесь что выбран [ OK ] и нажмите Enter для запуска установки.

При других методах установки выберите соответствующую опцию и следуйте инструкциям.

Нажмите F1 для просмотра справки по источникам установки. Нажмите Enter для возврата к меню выбора источника установки.

Figure 2-30. Выбор источника установки

Режимы установки с FTP: Есть три режима установки через FTP, которые вы можете выбрать: активный FTP, пассивный FTP, или через HTTP прокси.

Активный FTP: Install from an FTP server

С этой опцией все закачки по FTP будут выполнены в ``активном'' режиме. Этот режим не позволяет работать через файрволл, но зачастую позволяет работать со старыми серверами FTP, не поддерживающими пассивный режим. Если соединение прерывается в пассивном режиме (по умолчанию), попробуйте активный!

Пассивный FTP: Install from an FTP server through a firewall

Эта опция говорит sysinstall использовать ``пассивный'' режим для работы с FTP. Он позволяет работать через файрволл, не разрешающий входящие соединения на случайных TCP портах.

FTP через HTTP прокси: Install from an FTP server through a http proxy

Эта опция говорит sysinstall использовать HTTP протокол (как веб браузер) для работы с FTP через прокси. Прокси будет транслировать все запросы и посылать их на FTP сервер. Это позволяет проходить через файрволл, на котором FTP запрещен, но есть HTTP прокси. В этом случае потребуется указать прокси и FTP сервер.

Для работы с FTP через прокси, необходимо поместить имя сервера как часть имени пользователя после знака ``@''. Прокси сервер ``обманет'' настоящий сервер. Например, предположим что вы хотите провести установку с ftp.FreeBSD.org, используя FTP через прокси foo.example.com, прослушивающем порт 1024.

в этом случае, войдите в меню параметров, установите имя пользователя FTP ftp@ftp.FreeBSD.org, а вместо пароля введите свой адрес email. В качестве источника установки выберите FTP (или пассивный FTP, если прокси его поддерживает), и URL ftp://foo.example.com:1234/pub/FreeBSD.

Так как /pub/FreeBSD с сервера ftp.FreeBSD.org идет через прокси foo.example.com, вы сможете провести установку с этого компьютера (файлы будут загружены с ftp.FreeBSD.org как требуется для установки).

Этот, и другие документы, могут быть скачаны с ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

По вопросам связанными с FreeBSD, прочитайте документацию прежде чем писать в <questions@FreeBSD.org>.
По вопросам связанным с этой документацией, пишите <doc@FreeBSD.org>.
По вопросам связанным с русским переводом документации, пишите <frdp@FreeBSD.org.ua>.


Руководство FreeBSDPrevChapter 2 Установка FreeBSDNext

2.9 После установки

После успешной установки необходимо настроить множество параметров. Некоторые параметры могут быть заданы из меню параметров после установки перед загрузкой установленной FreeBSD или после с использованием /stand/sysinstall, где надо выбрать пункт Configure.

2.9.1 Настройка сетевых устройств (Network Device Configuration)

Если вы настраивали PPP для установки через FTP, этот экран не появится, настройку можно будет произвести позже как описано выше.

Чтобы лучше узнать о локальных сетях и настройке FreeBSD в качестве шлюза/маршрутизатора, обратитесь к главе Advanced Networking.

                      User Confirmation Requested 
   Would you like to configure any Ethernet or SLIP/PPP network devices?

                             [ Yes ]   No

Для настройки сетевого устройства выберите [ Yes ] и нажмите Enter. Или нажмите [ No ], чтобы продолжить.

Figure 2-31. Выбор Ethernet устройства

Выберите интерфейс для настройки с помощью клавиш навигации и нажмите Enter.

                      User Confirmation Requested 
       Do you want to try IPv6 configuration of the interface?

                              Yes   [ No ]

Для частной локальной сети обычный протокол интернет (IPv4) вполне достаточен, поэтому выбрана кнопка [ No ] и нажат Enter.

Если вы хотите подсоединиться к существующей сети IPv6 через сервер RA, выберите [ Yes ] и нажмите Enter. Поиск RA серверов займет несколько секунд.

                             User Confirmation Requested 
        Do you want to try DHCP configuration of the interface?

                              Yes   [ No ]

Если DHCP (Dynamic Host Configuration Protocol) не нужен, выберите [ No ] с помощью клавиш навигации и нажмите Enter.

Выбор [ Yes ] запустит dhclient, и если все пройдет нормально, заполнит информацию о конфигурации сети автоматически. Обратитесь к Section 19.10 за более подробными сведениями.

Следующий экран конфигурации сети показывает настройку устройства Ethernet системы, которая будет работать шлюзом для локальной сети.

Figure 2-32. Настройка сети для ed0

Используйте Tab для выбора полей и заполнения их соответствующими данными:

Host

Полное имя хоста, в этом примере k6-2.example.com.

Domain

Имя домена, в котором находится ваш компьютер, в этом примере example.com.

IPv4 Gateway

IP хоста, пересылающего пакеты наружу локальной сети. Вам потребуется заполнить его, если это компьютер, подключенный к сети. Оставьте это поле пустым, если компьютер является шлюзом в интернет для сети. Шлюз IPv4 известен также как шлюз по умолчанию или маршрут по умолчанию.

Name server

IP адрес местного сервера DNS. В этой локальной сети нет DNS сервера, поэтому использован IP адрес DNS сервера провайдера (208.163.10.2).

IPv4 address

IP адрес, использованный для этого интерфейса, 192.168.0.1

Netmask

Адрес блока, использованного для этой локальной сети, это блок класса C (192.168.0.0 - 192.168.255.255). Маска по умолчанию дана для сети класса C (255.255.255.0).

Дополнительные параметры для ifconfig

Любые специфичные для интерфейса опции к ifconfig, которые вы хотите добавить. В данном случае ничего.

Используйте Tab для выбора [ OK ] после окончания настройки и нажмите Enter.

                      User Confirmation Requested 
        Would you like to Bring Up the ed0 interface right now?

                             [ Yes ]   No

Выбор [ Yes ] и нажатие Enter введет компьютер в сеть. Тем не менее, компьютеру все еще требуется перезагрузка.

2.9.2 Настройка шлюза (Configure Gateway)

                       User Confirmation Requested 
       Do you want this machine to function as a network gateway?

                              [ Yes ]    No

Если компьютер будет шлюзом для локальной сети, пересылая пакеты между другими компьютерами, выберите [ Yes ] и нажмите Enter. Если это обычный компьютер, выберите [ No ] и нажмите Enter для продолжения.

2.9.3 Настройка сервисов интернет (Configure Internet Services)

                      User Confirmation Requested
Do you want to configure inetd and the network services that it provides?

                               Yes   [ No ]

Если выбрана [ No ], различные сервисы, такие как telnetd не будут запущены. Это означает, что удаленные пользователи не смогут зайти по telnet на этот компьютер. Локальные пользователи все же смогут заходит на удаленные компьютеры по telnet.

Эти сервисы могут быть включены после установки путем редактирования /etc/inetd.conf с помощью вашего любимого текстового редактора. Обращайтесь к Section 19.14.1 за более подробной информацией.

Выберите [ Yes ] если хотите настроить эти сервисы во время установки. Появится дополнительный запрос подтверждения:

                      User Confirmation Requested
The Internet Super Server (inetd) allows a number of simple Internet
services to be enabled, including finger, ftp and telnetd.  Enabling
these services may increase risk of security problems by increasing
the exposure of your system.

With this in mind, do you wish to enable inetd?

                             [ Yes ]   No

Нажмите [ Yes ], чтобы продолжить.

                      User Confirmation Requested
inetd(8) relies on its configuration file, /etc/inetd.conf, to determine
which of its Internet services will be available.  The default FreeBSD
inetd.conf(5) leaves all services disabled by default, so they must be
specifically enabled in the configuration file before they will
function, even once inetd(8) is enabled.  Note that services for
IPv6 must be separately enabled from IPv4 services.

Select [Yes] now to invoke an editor on /etc/inetd.conf, or [No] to
use the current settings.

                             [ Yes ]   No

Выбор [ Yes ] позволит добавить сервисы путем удаления # перед началом строки.

Figure 2-33. Редактирование inetd.conf

После добавления нужных сервисов нажатие Esc отобразит меню, позволяющее выйти с сохранением изменений.

2.9.4 Анонимный (Anonymous) FTP

                      User Confirmation Requested
 Do you want to have anonymous FTP access to this machine? 

                              Yes    [ No ]

2.9.4.1 Запрещение анонимного FTP

Выбор кнопки по умолчанию [ No ] и нажатие Enter все же позволит пользователям, имеющим учетные записи с паролями, использовать FTP для доступа к компьютеру.

2.9.4.2 Разрешение анонимного FTP

Кто угодно сможет получить доступ к компьютеру если вы разрешите анонимные соединения FTP. Предварительно должны быть рассмотрены возможные осложнения с безопасностью. Более подробная информация о безопасности доступна на Chapter 10.

Чтобы разрешить анонимный FTP, используя клавиши навигации выберите [ Yes ] и нажмите Enter. Появится следующий (или похожий) экран:

Figure 2-34. Настройка по анонимного FTP по умолчанию

Нажатие F1 отобразит справку:

This screen allows you to configure the anonymous FTP user.

The following configuration values are editable:

UID:     The user ID you wish to assign to the anonymous FTP user.
         All files uploaded will be owned by this ID.

Group:   Which group you wish the anonymous FTP user to be in.

Comment: String describing this user in /etc/passwd


FTP Root Directory:

        Where files available for anonymous FTP will be kept.

Upload subdirectory:

        Where files uploaded by anonymous FTP users will go.

Корневой каталог ftp по умолчанию будет размещен в /var. Если в нем предположительно не хватает места для для нужд FTP, можно использовать каталог /usr, выбрав корневой каталог FTP (FTP Root Directory) /usr/ftp.

Когда будут выбраны подходящие значения, нажмите Enter, чтобы продолжить.

                          User Confirmation Requested 
         Create a welcome message file for anonymous FTP users?

                              [ Yes ]    No

Если вы выберете [ Yes ] и нажмете Enter, запустится редактор, позволяющий отредактировать сообщение FTP.

Figure 2-35. Редактирование FTP Welcome Message

Этот текстовый редактор называется ee. Используйте инструкции, чтобы изменить сообщение, или измените сообщение позже, используя выбранный вами редактор. Обратите внимание, что имя/расположение файла показаны внизу окна редактора.

Нажмите Esc и появится меню с пунктом по умолчанию a) leave editor (выйти из редактора). Нажмите Enter, чтобы выйти и продолжить. Нажмите Enter еще раз, чтобы сохранить изменения, если они были сделаны.

2.9.5 Настройка сетевой файловой системы (Configure Network File System)

Сетевая файловая система (Network File System, NFS) позволяет совместно использовать файлы в сети. Компьютер может быть настроен как сервер, клиент, или как то и другое. Обратитесь к Section 19.6 за более подробной информацией.

2.9.5.1 Сервер NFS (NFS Server)

                       User Confirmation Requested
 Do you want to configure this machine as an NFS server? 

                              Yes    [ No ]

Если вам не нужен NFS сервер, выберите [ No ] и нажмите Enter.

Если выбран пункт [ Yes ], появится сообщение, говорящее о том, что должен быть создан файл exports.

                               Message
Operating as an NFS server means that you must first configure an
/etc/exports file to indicate which hosts are allowed certain kinds of
access to your local filesystems.
Press [Enter] now to invoke an editor on /etc/exports
                               [ OK ]

Нажмите Enter, чтобы продолжить. Запустится текстовый редактор, позволяющий создать и отредактировать файл exports.

Figure 2-36. Редактирование exports

Используйте инструкции для добавления экспортируемых файловых систем сейчас, или позднее с помощью выбранного вами текстового редактора. Обратите внимание, что имя/расположение файла показаны внизу окна редактора.

Нажмите Esc и появится меню с пунктом по умолчанию a) leave editor. Нажмите Enter, чтобы выйти и продолжить.

2.9.5.2 Клиент NFS (NFS Client)

NFS клиент позволяет организовать доступ к серверам NFS.

                       User Confirmation Requested
 Do you want to configure this machine as an NFS client? 

                              Yes   [ No ]

С помощью клавиш навигации выберите [ Yes ] или [ No ], как потребуется, и нажмите Enter.

2.9.6 Профиль безопасности (Security Profile)

``Профиль безопасности'' это набор параметров настройки, с помощью которого делается попытка достичь требуемого уровня безопасности и удобства путем разрешения или запрещения запуска определенных программ и другими настройками. Чем строже профиль безопасности, тем меньше программ будет запущено по умолчанию. Это один из основных принципов безопасности: не запускайте ничего кроме того что необходимо.

Имейте ввиду, что профиль безопасности это лишь установка по умолчанию. Любая программа может быть запущена или остановлена после установки FreeBSD путем редактирования или добавления соответствующих строк в /etc/rc.conf. Для получения более подробной информации обратитесь к странице справочника rc.conf(5).

Следующая таблица описывает действие каждого профиля безопасности. Колонки показывают выбранный вами профиль безопасности, а ряды -- программы или функции, которые профиль включает или выключает.

Table 2-4. Возможные профили безопасности

 Extreme (Максимальный)Moderate (Умеренный)
sendmail(8)НЕТДА
sshd(8)НЕТДА
portmap(8)НЕТМОЖЕТ БЫТЬ [a]
NFS serverНЕТДА
securelevel(8)ДА [b] НЕТ
Notes:
a. Portmapper включен, если компьютер был настроен в процессе установки как NFS клиент или сервер.
b. Если вы выберете профиль безопасности с уровнем ``Extreme'' или ``High'', будьте готовы к последствиям. Прочитайте страницу справочника init(8) и уделите некоторое внимание значениям уровней безопасности, или позже могут возникнуть серьезные проблемы!
                       User Confirmation Requested
 Do you want to select a default security profile for this host (select
 No for "medium" security)? 

                            [ Yes ]    No

Выбор [ No ] и нажатие Enter установит профиль безопасности к среднему значению.

Выбор [ Yes ] и нажатие Enter позволит выбрать другой профиль безопасности.

Figure 2-37. Параметры профиля безопасности

Нажмите F1, чтобы получить помощь. Нажмите Enter для возврата к меню выбора.

Используйте клавиши навигации для выбора Medium, если вы не уверены, что необходим другой уровень. С подсвеченным [ OK ] нажмите Enter.

Будет отображен запрос на подтверждение, соответствующий выбранным настройкам безопасности.

                                 Message

Moderate security settings have been selected.

Sendmail and SSHd have been enabled, securelevels are
disabled, and NFS server setting have been left intact.
PLEASE NOTE that this still does not save you from having
to properly secure your system in other ways or exercise
due diligence in your administration, this simply picks
a standard set of out-of-box defaults to start with.

To change any of these settings later, edit /etc/rc.conf

                                  [OK]
                                 Message

Extreme security settings have been selected.

Sendmail, SSHd, and NFS services have been disabled, and
securelevels have been enabled.
PLEASE NOTE that this still does not save you from having
to properly secure your system in other ways or exercise
due diligence in your administration, this simply picks
a more secure set of out-of-box defaults to start with.

To change any of these settings later, edit /etc/rc.conf

                                  [OK]

Нажмите Enter, чтобы продолжить послеустановочные настройки.

Warning: Профиль безопасности не панацея! Если даже вы выберете экстремальные установки, понадобится поддерживать безопасность, читая соответствующие списки рассылки, используя хорошие пароли и идентификационные фразы, и придерживаясь хорошей практики безопасности. Профиль всего лишь повышает желаемый уровень безопасности свежеустановленной системы до приемлемого значения.

2.9.7 Настройки системной консоли (System Console Settings)

Есть несколько параметров для настройки системной консоли.

                      User Confirmation Requested 
       Would you like to customize your system console settings?

                              [ Yes ]  No

Для просмотра и настройки параметров выберите [ Yes ] и нажмите Enter.

Figure 2-38. Параметры настройки системной консоли

Часто используемая опция это хранитель экрана (screen saver). Используйте клавиши навигации для выбора Saver и нажмите Enter.

Figure 2-39. Параметры хранителя экрана

Выберите подходящий хранитель экрана с помощью клавиш навигации и нажмите Enter. Опять появится меню настройки системной консоли.

Время по умолчанию 300 секунд. Для изменения временного интервала выберите Saver еще раз. В меню настроек хранителя экрана выберите Timeout с помощью клавиш навигации и нажмите Enter. Появится меню:

Figure 2-40. Временной интервал хранителя экрана

Значение может быть изменено, затем выберите [ OK ] и нажмите Enter для возврата в меню настройки системной консоли.

Figure 2-41. Выход из меню конфигурации консоли

Выбор Exit и нажатие Enter вернет вас к послеустановочной настройке.

2.9.8 Установка часового пояса (Setting The Time Zone)

Установка часового на компьютере позволит ему автоматически вносить поправки к местному времени и правильно выполнять другие, связанные с часовым поясом функции.

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

                      User Confirmation Requested 
          Would you like to set this machine's time zone now?

                            [ Yes ]   No

Выберите [ Yes ] и нажмите Enter для установки часового пояса.

                       User Confirmation Requested
 Is this machine's CMOS clock set to UTC? If it is set to local time
 or you don't know, please choose NO here! 

                              Yes   [ No ]

Выберите [ Yes ] или [ No ] в зависимости от настроек часов компьютера и нажмите Enter.

Figure 2-42. Выбор региона

Соответствующий регион выбран с помощью клавиш навигации и нажат Enter.

Figure 2-43. Выбор страны

Выберите соответствующую страну с помощью клавиш навигации и нажмите Enter.

Figure 2-44. Выбор часового пояса

Выбран соответствующий часовой пояс с помощью клавиш навигации и нажат Enter.

                            Confirmation 
            Does the abbreviation 'EDT' look reasonable?

                            [ Yes ]   No

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

2.9.9 Совместимость с Linux (Linux Compatibility)

                      User Confirmation Requested 
          Would you like to enable Linux binary compatibility?

                            [ Yes ]   No

Выбор [ Yes ] и нажатие Enter позволит запускать программы Linux под FreeBSD. Программа установки добавит соответствующие пакеты для совместимости с Linux.

При установке по FTP, компьютеру потребуется соединиться с интернет. Иногда на сервере ftp нет всех необходимых компонент, например для бинарной совместимости с Linux. Эти компоненты могут быть установлены позже, если потребуется.

2.9.10 Настройка мыши (Mouse Settings)

Эти настройки позволят вырезать и вставлять текст в консоли и пользовательских программах с помощью трехкнопочной мыши. Если используется двухкнопочная мышь, обратитесь к странице справочника moused(8) после установки, чтобы узнать подробности об эмуляции трехкнопочной мыши. Этот пример приведен для настройки не-USB мыши (например мыши для порта PS/2 или COM):

                      User Confirmation Requested 
         Does this system have a non-USB mouse attached to it?

                            [ Yes ]    No 

Выберите [ Yes ] для USB мыши или [ No ] для не-USB мыши и нажмите Enter.

Figure 2-45. Выбор протокола мыши

Используйте клавиши навигации для выбора Type и нажмите Enter.

Figure 2-46. Установка протокола мыши

В этом примере использована PS/2 мышь, поэтому подойдет протокол по умолчанию Auto. Чтобы изменить протокол, используйте клавиши навигации для выбора другого пункта. Убедитесь, что выбран [ OK ], и нажмите Enter для выхода из меню.

Figure 2-47. Настройка порта мыши

Используйте клавиши навигации для выбора Port и нажмите Enter.

Figure 2-48. Установка порта мыши

К этой системе подключена мышь PS/2, поэтому подходит значение по умолчанию PS/2. Чтобы изменить порт, используйте клавиши навигации и нажмите Enter.

Figure 2-49. Запуск мышиного даемона

Наконец, используйте клавиши навигации для выбора Enable, затем нажмите Enter для запуска и тестирования даемона мыши.

Figure 2-50. Проверка мышиного даемона

Подвигайте курсор по экрану и убедитесь, что он движется правильно. Если это так, выберите [ Yes ] и нажмите Enter. Если нет, мышь не была правильно настроена -- выберите [ No ] и попробуйте использовать другие опции настройки.

Выберите Exit с помощью клавиш навигации и нажмите Enter для возврата к послеустановочной настройке.

2.9.11 Настройка дополнительных сетевых сервисов

Настройка сетевых сервисов может быть пугающей задачей для новых пользователей если у них нет опыта в этой области. Работа в сети, включая интернет, критична для многих современных операционных систем, включая FreeBSD; очень важно иметь некоторые знания о дополнительных сетевых возможностях FreeBSD. Настраивая их во время установки, пользователь получает некоторую информацию о различных доступных сервисах.

Сетевые сервисы -- это программы, принимающие данные из любой точки сети. Чтобы убедиться, что эти программы не делают ничего ``вредного'', требуется особое внимание. К сожалению, программисты не совершенны и время от времени допускают ошибки в сетевых сервисах; эти ошибки позволяют атакующим взломать их и использовать в собственных целях. Важно, чтобы вы включали сетевые сервисы только в том случае, когда знаете, какие сервисы нужны. В случае сомнений лучше не включать сервис, пока он не понадобится. Вы всегда можете включить его позже, запустив sysinstall еще раз, или используя возможности, предоставляемые файлом /etc/rc.conf.

Выбор опции Networking отобразит меню, похожее на это:

Figure 2-51. Верхняя часть меню настройки сети (Network Configuration)

Первая опция, Interfaces (интерфейсы), была ранее описана в разделе Section 2.9.1, эту опцию можно проигнорировать.

Выбор опции AMD добавит поддержку BSD утилиты автоматического монтирования. Она обычно используется вместе с протоколом NFS (смотрите ниже) для автоматического монтирования удаленных файловых систем. Здесь не требуется специальной конфигурации.

Следующая линия это опция флаги AMD (flags). Когда эта опция выбрана, появится меню для ввода специфичных флагов AMD. Меню уже содержит набор различных опций:

-a /.amd_mnt -l syslog /host /etc/amd.map /net /etc/amd.map

Опция -a указывает месторасположение монтирования систем по умолчанию, в этом примере /.amd_mnt. Опция -l указывает log файл по умолчанию; тем не менее, если для ведения логов используется syslogd, все логи отправляются даемону системных логов. Каталог /host используется для монтирования экспортированных файловых систем с удаленного хоста, а /net для монтирования экспортированных файловых систем с IP адреса. Файл /etc/amd.map определяет опции по умолчанию для монтируемых AMD каталогов.

Опция Anon FTP позволяет получить анонимный доступ к FTP. Выберите ее, чтобы сделать этот компьютер анонимным FTP сервером. Помните о риске безопасности, создаваемом этой опцией. Будет отображено еще одно меню для разъяснения риска безопасности и для более тонкой настройки.

Опция Gateway сделает компьютер шлюзом, как было объяснено ранее. Этот пункт может быть использован для отмены опции Gateway, если она была ошибочно установлена в процессе установки.

Опцию Inetd можно использовать для настройки или полного отключения даемона inetd(8), как было описано выше.

Опция Mail используется для настройки системного MTA по умолчанию (Mail Transfer Agent, агент передачи почты). Выбор этой опции приведет к появлению следующего меню:

Figure 2-52. Выбор MTA по умолчанию

Здесь предоставляется выбор MTA для установки по умолчанию. MTA это почтовый сервер, доставляющий почту пользователям системы или интернет.

Выбор Sendmail приведет к установке популярного сервера sendmail, MTA по умолчанию для FreeBSD. Опция Sendmail local настроит sendmail в качестве MTA по умолчанию, но отключит возможность получения входящей почты из интернет. Другие MTA, представленные здесь, Postfix и Exim, действуют подобно Sendmail. Оба они доставляют почту; тем не менее, некоторые пользователи предпочитают эти альтернативы sendmail.

После выбора MTA или пропуска этого пункта появится меню настройки сети со следующей опцией, клиент NFS.

Клиент NFS позволяет настроить систему для соединения с сервером через NFS. Сервер NFS дает другим машинам доступ к файловой системе через протокол NFS. Если это отдельно стоящий компьютер, опцию можно не выбирать. Опция может потребовать дополнительной настройки позже; обращайтесь к Section 19.6 за более подробной информацией о настройке сервера и клиента.

Ниже находится опция NFS сервер, позволяющая вам настроить систему для работы в качестве NFS сервера. Она добавляет требуемую информацию для запуска процедуры вызова удаленных сервисов RPC (remote procedure call services). RPC используется для организации соединения между хостами и программами.

Следующая строка это Ntpdate, которая отвечает за синхронизацию времени. Когда эта опция выбрана, появится приблизительно такое меню:

Figure 2-53. Настройка Ntpdate

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

Следующая опция это выбор PCNFSD. Эта опция устанавливает пакет net/pcnfsd из коллекции портов. Это полезная утилита, предоставляющая сервисы авторизации NFS для систем, в в которых собственная отсутствует, таких как Microsoft MS-DOS®.

Теперь вы можете прокрутить меню немного вниз, чтобы увидеть другие опции:

Figure 2-54. Нижняя часть меню настройки сети

Утилиты rpcbind(8), rpc.statd(8), и rpc.lockd(8) для удаленного вызова процедур (Remote Procedure Calls, RPC). Утилита rpcbind управляет соединением между NFS серверами и клиентами, она требуется серверу NFS для корректной работы. Даемон rpc.statd взаимодействует с даемонами rpc.statd на других хостах для обеспечения мониторинга статуса. Полученный статус обычно хранится в файле /var/db/statd.status. Последняя опция это rpc.lockd, которая, будучи выбранной, предоставляет сервисы блокировки файлов. Она обычно используется с rpc.statd для отслеживания хостов, запрашивающих блокировки и частоты этих запросов. Хотя две последние опции прекрасно подходят для отладки, они не требуются серверам и клиентам NFS для корректной работы.

Ниже в списке опций находится Routed, даемон маршрутизации. Утилита routed(8) управляет сетевыми таблицами маршрутизации, обнаруживает широковещательные маршрутизаторы, и предоставляет копию таблиц маршрутизации любому физически подключенному к сети хосту по запросу. Это обычно используется компьютерами, являющимися шлюзом для локальной сети (смотрите страницы справочника icmp(4) и udp(4)). Когда эта опция выбрана, появится меню выбора местоположения утилиты по умолчанию. Значение по умолчанию уже выбрано, чтобы подтвердить его нажмите Enter. Появится следующее меню, запрашивающее флаги для routed. По умолчанию это флаг -q, он должен уже быть на экране.

На следующей линии находится опция Rwhod, выбор которой приведет к запуску даемона rwhod(8) при старте системы. Утилита rwhod периодически рассылает широковещательные системные сообщения по сети или собирает их в режиме ``потребителя''. Дополнительную информацию можно найти на страницах справочника ruptime(1) и rwho(1).

Следующая перед последней опцией в списке это даемон sshd(8). Это сервер безопасной оболочки (secure shell) из OpenSSH и он очень рекомендуется для использования вместо стандартных серверов telnet и FTP. Сервер sshd используется для создания безопасных соединений от одного хоста к другому с использованием шифрования.

И наконец, опция TCP Extensions. Она включает расширения TCP, определенные в RFC 1323 и RFC 1644. Хотя для многих хостов они могут повысить скорость соединения, с другими соединение может быть оборвано. Для серверов эти расширения не рекомендуются, но клиентским компьютерам могут дать некоторые преимущества.

Теперь, после настройки сетевых сервисов, вы можете прокрутить меню к верхнему пункту, Exit, и перейти к следующему разделу настройки.

2.9.12 Настройка X Сервера (Configure X Server)

Чтобы использовать графический интерфейс пользователя KDE, GNOME, или другие, нужно настроить X сервер.

Note: Чтобы запустить XFree86 не из под root, вам потребуется установленный x11/wrapper. Он устанавливается по умолчанию начиная с FreeBSD 4.7. В более ранних версиях он может быть добавлен из меню выбора пакетов (Package Selection menu).

Чтобы узнать, поддерживается ли ваша видеокарта, обратитесь к сайту XFree86.

                      User Confirmation Requested 
        Would you like to configure your X server at this time?

                            [ Yes ]   No

Warning: Необходимо узнать параметры монитора и информацию о видеокарте. Установкой неправильных параметров можно повредить оборудование. Если у вас нет этой информации, выберите [ No ] и выполните конфигурацию после установки, когда необходимая информация будет собрана. Используя /stand/sysinstall, выберите Configure а затем XFree86. Неправильная настройка X сервера может ``подвесить'' компьютер. Зачастую настройку X сервера рекомендуют производить после завершения установки.

Если у вас есть информация о графической карте и мониторе, выберите [ Yes ] и нажмите Enter для начала настройки X сервера.

Figure 2-55. Меню выбора способа конфигурации

Есть несколько путей настройки X сервера. Используйте клавиши навигации для выбора одного из методов и нажмите Enter. Внимательно прочтите все инструкции.

Команды xf86cfg и xf86cfg -textmode могут сделать экран темным и запуститься через несколько секунд. Будьте терпеливы.

Далее описывается использование программы настройки xf86config. Выбор настроек будет зависеть от оборудования системы, так что ваши настройки возможно будут отличаться от тех, что приведены:

                                Message
 You have configured and been running the mouse daemon. 
 Choose "/dev/sysmouse" as the mouse port and "SysMouse" or
 "MouseSystems" as the mouse protocol in the X configuration utility. 

                                 [ OK ]

                      [ Press enter to continue ]

Это говорит, что предварительно настроенный даемон мыши был обнаружен. Нажмите Enter, чтобы продолжить.

При запуске xf86config отобразит краткое введение:

This program will create a basic XF86Config file, based on menu selections you
make.

The XF86Config file usually resides in /usr/X11R6/etc/X11 or /etc/X11. A sample
XF86Config file is supplied with XFree86; it is configured for a standard
VGA card and monitor with 640x480 resolution. This program will ask for a
pathname when it is ready to write the file.

You can either take the sample XF86Config as a base and edit it for your
configuration, or let this program produce a base XF86Config file for your
configuration and fine-tune it.

Before continuing with this program, make sure you know what video card
you have, and preferably also the chipset it uses and the amount of video
memory on your video card. SuperProbe may be able to help with this.

Press enter to continue, or ctrl-c to abort.

Нажатие Enter запустит настройку мыши. Следуя инструкциям, выберите ``Mouse Systems'' в качестве протокола мыши и /dev/sysmouse в качестве порта мыши, даже если вы используете PS/2, как показано в примере.

First specify a mouse protocol type. Choose one from the following list:

 1.  Microsoft compatible (2-button protocol)
 2.  Mouse Systems (3-button protocol) & FreeBSD moused protocol
 3.  Bus Mouse
 4.  PS/2 Mouse
 5.  Logitech Mouse (serial, old type, Logitech protocol)
 6.  Logitech MouseMan (Microsoft compatible)
 7.  MM Series
 8.  MM HitTablet
 9.  Microsoft IntelliMouse

If you have a two-button mouse, it is most likely of type 1, and if you have
a three-button mouse, it can probably support both protocol 1 and 2. There are
two main varieties of the latter type: mice with a switch to select the
protocol, and mice that default to 1 and require a button to be held at
boot-time to select protocol 2. Some mice can be convinced to do 2 by sending
a special sequence to the serial port (see the ClearDTR/ClearRTS options).

Enter a protocol number: 2

You have selected a Mouse Systems protocol mouse. If your mouse is normally
in Microsoft-compatible mode, enabling the ClearDTR and ClearRTS options
may cause it to switch to Mouse Systems mode when the server starts.

Please answer the following question with either 'y' or 'n'.
Do you want to enable ClearDTR and ClearRTS? n

You have selected a three-button mouse protocol. It is recommended that you
do not enable Emulate3Buttons, unless the third button doesn't work.

Please answer the following question with either 'y' or 'n'.
Do you want to enable Emulate3Buttons? y

Now give the full device name that the mouse is connected to, for example
/dev/tty00. Just pressing enter will use the default, /dev/mouse.
On FreeBSD, the default is /dev/sysmouse.

Mouse device: /dev/sysmouse

Следующий пункт настройки это клавиатура. В примере показана модель generic 101-key. В качестве варианта можно использовать любое имя, или просто нажать Enter, чтобы принять значение по умолчанию.

Please select one of the following keyboard types that is the better
description of your keyboard. If nothing really matches,
choose 1 (Generic 101-key PC)

  1  Generic 101-key PC                                
  2  Generic 102-key (Intl) PC                         
  3  Generic 104-key PC                                
  4  Generic 105-key (Intl) PC                         
  5  Dell 101-key PC                                   
  6  Everex STEPnote                                   
  7  Keytronic FlexPro                                 
  8  Microsoft Natural                                 
  9  Northgate OmniKey 101                             
 10  Winbook Model XP5                                 
 11  Japanese 106-key                                  
 12  PC-98xx Series                                    
 13  Brazilian ABNT2                                   
 14  HP Internet                                       
 15  Logitech iTouch                                   
 16  Logitech Cordless Desktop Pro                     
 17  Logitech Internet Keyboard                        
 18  Logitech Internet Navigator Keyboard              
 19  Compaq Internet                                   
 20  Microsoft Natural Pro                             
 21  Genius Comfy KB-16M                               
 22  IBM Rapid Access                                  
 23  IBM Rapid Access II                               
 24  Chicony Internet Keyboard                         
 25  Dell Internet Keyboard                            

Enter a number to choose the keyboard.

1


Please select the layout corresponding to your keyboard


  1  U.S. English                                      
  2  U.S. English w/ ISO9995-3                         
  3  U.S. English w/ deadkeys                          
  4  Albanian                                          
  5  Arabic                                            
  6  Armenian                                          
  7  Azerbaidjani                                      
  8  Belarusian                                        
  9  Belgian                                           
 10  Bengali                                           
 11  Brazilian                                         
 12  Bulgarian                                         
 13  Burmese                                           
 14  Canadian                                          
 15  Croatian                                          
 16  Czech                                             
 17  Czech (qwerty)                                    
 18  Danish                                            

Enter a number to choose the country.
Press enter for the next page

1


Please enter a variant name for 'us' layout. Or just press enter
for default variant

us


Please answer the following question with either 'y' or 'n'.
Do you want to select additional XKB options (group switcher,
group indicator, etc.)? n

Теперь переходим к настройке монитора. Не превышайте значений для вашего монитора. Он может быть поврежден. Если у вас есть какие-то сомнения, проводите настройку после того как получите информацию.

Now we want to set the specifications of the monitor. The two critical
parameters are the vertical refresh rate, which is the rate at which the
whole screen is refreshed, and most importantly the horizontal sync rate,
which is the rate at which scanlines are displayed.

The valid range for horizontal sync and vertical sync should be documented
in the manual of your monitor. If in doubt, check the monitor database
/usr/X11R6/lib/X11/doc/Monitors to see if your monitor is there.

Press enter to continue, or ctrl-c to abort.



You must indicate the horizontal sync range of your monitor. You can either
select one of the predefined ranges below that correspond to industry-
standard monitor types, or give a specific range.

It is VERY IMPORTANT that you do not specify a monitor type with a horizontal
sync range that is beyond the capabilities of your monitor. If in doubt,
choose a conservative setting.

    hsync in kHz; monitor type with characteristic modes
 1  31.5; Standard VGA, 640x480 @ 60 Hz
 2  31.5 - 35.1; Super VGA, 800x600 @ 56 Hz
 3  31.5, 35.5; 8514 Compatible, 1024x768 @ 87 Hz interlaced (no 800x600)
 4  31.5, 35.15, 35.5; Super VGA, 1024x768 @ 87 Hz interlaced, 800x600 @ 56 Hz
 5  31.5 - 37.9; Extended Super VGA, 800x600 @ 60 Hz, 640x480 @ 72 Hz
 6  31.5 - 48.5; Non-Interlaced SVGA, 1024x768 @ 60 Hz, 800x600 @ 72 Hz
 7  31.5 - 57.0; High Frequency SVGA, 1024x768 @ 70 Hz
 8  31.5 - 64.3; Monitor that can do 1280x1024 @ 60 Hz
 9  31.5 - 79.0; Monitor that can do 1280x1024 @ 74 Hz
10  31.5 - 82.0; Monitor that can do 1280x1024 @ 76 Hz
11  Enter your own horizontal sync range

Enter your choice (1-11): 6

You must indicate the vertical sync range of your monitor. You can either
select one of the predefined ranges below that correspond to industry-
standard monitor types, or give a specific range. For interlaced modes,
the number that counts is the high one (e.g. 87 Hz rather than 43 Hz).

 1  50-70
 2  50-90
 3  50-100
 4  40-150
 5  Enter your own vertical sync range

Enter your choice: 2

You must now enter a few identification/description strings, namely an
identifier, a vendor name, and a model name. Just pressing enter will fill
in default names.

The strings are free-form, spaces are allowed.
Enter an identifier for your monitor definition: Hitachi

Далее производится выбор видеокарты из списка. Если вы пропустили карту в списке, продолжайте нажимать Enter, и список повторится. Показан только отрывок:

Now we must configure video card specific settings. At this point you can
choose to make a selection out of a database of video card definitions.
Because there can be variation in Ramdacs and clock generators even
between cards of the same model, it is not sensible to blindly copy
the settings (e.g. a Device section). For this reason, after you make a
selection, you will still be asked about the components of the card, with
the settings from the chosen database entry presented as a strong hint.

The database entries include information about the chipset, what driver to
run, the Ramdac and ClockChip, and comments that will be included in the
Device section. However, a lot of definitions only hint about what driver
to run (based on the chipset the card uses) and are untested.

If you can't find your card in the database, there's nothing to worry about.
You should only choose a database entry that is exactly the same model as
your card; choosing one that looks similar is just a bad idea (e.g. a
GemStone Snail 64 may be as different from a GemStone Snail 64+ in terms of
hardware as can be).

Do you want to look at the card database? y



288  Matrox Millennium G200 8MB                        mgag200
289  Matrox Millennium G200 SD 16MB                    mgag200
290  Matrox Millennium G200 SD 4MB                     mgag200
291  Matrox Millennium G200 SD 8MB                     mgag200
292  Matrox Millennium G400                            mgag400
293  Matrox Millennium II 16MB                         mga2164w
294  Matrox Millennium II 4MB                          mga2164w
295  Matrox Millennium II 8MB                          mga2164w
296  Matrox Mystique                                   mga1064sg
297  Matrox Mystique G200 16MB                         mgag200
298  Matrox Mystique G200 4MB                          mgag200
299  Matrox Mystique G200 8MB                          mgag200
300  Matrox Productiva G100 4MB                        mgag100
301  Matrox Productiva G100 8MB                        mgag100
302  MediaGX                                           mediagx
303  MediaVision Proaxcel 128                          ET6000
304  Mirage Z-128                                      ET6000
305  Miro CRYSTAL VRX                                  Verite 1000

Enter a number to choose the corresponding card definition.
Press enter for the next page, q to continue configuration.

288

Your selected card definition:

Identifier: Matrox Millennium G200 8MB
Chipset:    mgag200
Driver:     mga
Do NOT probe clocks or use any Clocks line.

Press enter to continue, or ctrl-c to abort.



Now you must give information about your video card. This will be used for
the "Device" section of your video card in XF86Config.

You must indicate how much video memory you have. It is probably a good
idea to use the same approximate amount as that detected by the server you
intend to use. If you encounter problems that are due to the used server
not supporting the amount memory you have (e.g. ATI Mach64 is limited to
1024K with the SVGA server), specify the maximum amount supported by the
server.

How much video memory do you have on your video card:

 1  256K
 2  512K
 3  1024K
 4  2048K
 5  4096K
 6  Other

Enter your choice: 6

Amount of video memory in Kbytes: 8192

You must now enter a few identification/description strings, namely an
identifier, a vendor name, and a model name. Just pressing enter will fill
in default names (possibly from a card definition).

Your card definition is Matrox Millennium G200 8MB.

The strings are free-form, spaces are allowed.
Enter an identifier for your video card definition:

Далее, производится установка видеорежимов для требуемого разрешения. Обычно используемые значения 640x480, 800x600, и 1024x768, но они зависят от возможностей видеокарты, размера монитора и зрительного комфорта. Выбирая глубину цвета, устанавливайте самое большое поддерживаемое видеокартой значение.

For each depth, a list of modes (resolutions) is defined. The default
resolution that the server will start-up with will be the first listed
mode that can be supported by the monitor and card.
Currently it is set to:

"640x480" "800x600" "1024x768" "1280x1024" for 8-bit
"640x480" "800x600" "1024x768" "1280x1024" for 16-bit
"640x480" "800x600" "1024x768" "1280x1024" for 24-bit

Modes that cannot be supported due to monitor or clock constraints will
be automatically skipped by the server.

 1  Change the modes for 8-bit (256 colors)
 2  Change the modes for 16-bit (32K/64K colors)
 3  Change the modes for 24-bit (24-bit color)
 4  The modes are OK, continue.

Enter your choice: 2

Select modes from the following list:

 1  "640x400"
 2  "640x480"
 3  "800x600"
 4  "1024x768"
 5  "1280x1024"
 6  "320x200"
 7  "320x240"
 8  "400x300"
 9  "1152x864"
 a  "1600x1200"
 b  "1800x1400"
 c  "512x384"

Please type the digits corresponding to the modes that you want to select.
For example, 432 selects "1024x768" "800x600" "640x480", with a
default mode of 1024x768.

Which modes? 432

You can have a virtual screen (desktop), which is screen area that is larger
than the physical screen and which is panned by moving the mouse to the edge
of the screen. If you don't want virtual desktop at a certain resolution,
you cannot have modes listed that are larger. Each color depth can have a
differently-sized virtual screen

Please answer the following question with either 'y' or 'n'.
Do you want a virtual screen that is larger than the physical screen? n



For each depth, a list of modes (resolutions) is defined. The default
resolution that the server will start-up with will be the first listed
mode that can be supported by the monitor and card.
Currently it is set to:

"640x480" "800x600" "1024x768" "1280x1024" for 8-bit
"1024x768" "800x600" "640x480" for 16-bit
"640x480" "800x600" "1024x768" "1280x1024" for 24-bit

Modes that cannot be supported due to monitor or clock constraints will
be automatically skipped by the server.

 1  Change the modes for 8-bit (256 colors)
 2  Change the modes for 16-bit (32K/64K colors)
 3  Change the modes for 24-bit (24-bit color)
 4  The modes are OK, continue.

Enter your choice: 4



Please specify which color depth you want to use by default:

  1  1 bit (monochrome)                                
  2  4 bits (16 colors)                                
  3  8 bits (256 colors)                               
  4  16 bits (65536 colors)                            
  5  24 bits (16 million colors)                       

Enter a number to choose the default depth.

4

Наконец, настройки нужно сохранить. Убедитесь что ввели /etc/XF86Config в качестве места хранения настроек.

I am going to write the XF86Config file now. Make sure you don't accidently
overwrite a previously configured one.

Shall I write it to /etc/X11/XF86Config? y

Если настройка прервалась, вы можете запустить настройку опять, выбрав [ Yes ] когда появится следующее сообщение:

          User Confirmation Requested
The XFree86 configuration process seems to have
failed.  Would you like to try again?

             [ Yes ]         No

Если у вас проблемы с настройкой XFree86, выберите [ No ], нажмите Enter и продолжайте процесс установки. После установки вы можете использовать xf86cfg -textmode или xf86config для получения доступа к утилитам настройки в режиме командной строки под root. Это дополнительный метод настройки XFree86, описанный в Chapter 5. Если вы решите не настраивать XFree86 сейчас, следующим появится меню выбора пакетов.

Настройкой по умолчанию, позволяющей перезагрузить сервер, является комбинация клавиш Ctrl+Alt+Backspace. Эта комбинация может быть применена если что-то не так с установками сервера, она позволяет предотвратить повреждение оборудования.

Настройкой по умолчанию, позволяющей переключать видео режимы во время работы X, является комбинация клавиш Ctrl+Alt++ or Ctrl+Alt+-.

После установки высота, ширина экрана или центровка экрана может быть выбрана с использованием xvidtune, если вы запустите XFree86 с xvidtune.

Будут выданы предупреждения, что неверные установки могут повредить ваше оборудование. Прислушайтесь к ним. Если вы сомневаетесь в чем-то, не делайте этого. Вместо этого, используйте настройки монитора для подстройки его под X Window. Вид экрана может несколько отличаться при переключении обратно в текстовый режим, но это лучше, чем повреждение оборудования.

Прочитайте справочник xvidtune(1) перед тем как производить какие-либо настройки.

После успешной настройки XFree86, будет предложен выбор десктопа по умолчанию.

2.9.13 Выбор десктопа по умолчанию (Select Default X Desktop)

Доступны самые разные оконные менеджеры. Их функциональность варьируется от самых минимальных до полноценных десктопов с большим набором программ. Некоторые требуют минимума места на диске и небольшого количества памяти, другие, с большим набором функций, требуют гораздо больше. Лучший путь определить наиболее подходящий вам -- попробовать несколько. Они доступны из коллекции портов и в виде пакетов, и могут быть добавлены после установки.

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

Figure 2-56. Выбор десктопа по умолчанию

Используйте клавиши навигации, чтобы выбрать десктоп, и нажмите Enter. Будет запущена установка выбранного десктопа.

2.9.14 Установка пакетов (Install Packages)

Пакеты -- это прекомпилированные бинарные файлы и это удобный способ установки программ.

В качестве примера показана установка одного пакета. Если потребуется, можно установить дополнительные пакеты. После установки для добавления пакетов может быть использована команда /stand/sysinstall.

                     User Confirmation Requested
 The FreeBSD package collection is a collection of hundreds of
 ready-to-run applications, from text editors to games to WEB servers
 and more. Would you like to browse the collection now? 

                            [ Yes ]   No

Выбор [ Yes ] и нажатие Enter приведет к появлению экрана выбора пакетов:

Figure 2-57. Выбор категории пакетов

Только пакеты с текущего носителя доступны для установки в любое время.

Все доступные пакеты будут показаны если выбрать категорию All, можно также выбирать отдельные категории. Перейдите к выбранной категории с помощью клавиш навигации и нажмите Enter.

Появится меню, содержащее доступные в данной категории пакеты.

Figure 2-58. Выбор пакетов

Выбрана оболочка bash. Выберите все необходимые пакеты, перемещаясь по меню и нажимая клавишу пробела на выбираемых пакетах. Краткое описание пакета будет появляться в нижней левой части экрана.

Нажатие Tab переключает между последним выбранным пакетом, [ OK ], и [ Cancel ].

После того, как будет закончена отметка пакетов для установки, нажмите Tab один раз для переключения на [ OK ] и нажмите Enter для переключения на меню выбора пакетов.

Нажимая клавиши навигации влево или вправо, можно переключаться между [ OK ] и [ Cancel ]. Этот метод может быть применен также для выбора [ OK ], и возврата к меню выбора пакетов нажатием Enter.

Figure 2-59. Установка пакетов

Используйте Tab и клавиши навигации для выбора [ Install ] и нажмите Enter. вам потребуется подтвердить установку пакетов:

Figure 2-60. Подтверждение установки пакетов

Выбор [ OK ] и нажатие Enter запустит установку пакетов. Во время установки будут выдаваться сообщения. Обратите внимание на возможные сообщения об ошибках.

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

2.9.15 Добавление пользователей/групп (Add Users/Groups)

В процессе установки нужно добавить хотя бы одного пользователя, чтобы использовать систему без входа под root. Корневой каталог обычно мал и запуск приложений под root быстро заполнит его. Ниже показано предупреждение:

                     User Confirmation Requested
 Would you like to add any initial user accounts to the system? Adding
 at least one account for yourself at this stage is suggested since
 working as the "root" user is dangerous (it is easy to do things which
 adversely affect the entire system). 

                            [ Yes ]   No

Выберите [ Yes ] и нажмите Enter чтобы продолжить добавление пользователя.

Figure 2-61. Выбор User (пользователь)

Выберите User с помощью клавиш навигации и нажмите Enter.

Figure 2-62. Вод информации о пользователе

При выборе полей с помощью Tab в нижней части экрана будет появляться описание, помогающее ввести необходимую информацию:

Логин (Login ID)

Имя нового пользователя (обязательно).

UID

Числовой ID (идентификатор) для этого пользователя (оставьте пустым для автоматического выбора).

Группа (Group)

Имя группы этого пользователя (оставьте пустым для автоматического выбора).

Пароль (Password)

Пароль этого пользователя (заполняйте это поле с осторожностью!).

Полное имя

Полное имя пользователя (комментарий).

Член групп (Member groups)

Группы, к которым принадлежит пользователь (т.е. имеет права доступа).

Домашний каталог (Home directory)

Домашний каталог пользователя (оставьте пустым для выбора по умолчанию).

Оболочка (Login shell)

Оболочка пользователя, запускаемая при входе в систему (оставьте пустым для оболочки по умолчанию, например /bin/sh).

Оболочка была изменена с /bin/sh на /usr/local/bin/bash для использования bash, которая была перед этим установлена из пакета. Не пытайтесь использовать несуществующую оболочку, вы не сможете войти в систему. Наиболее часто используемая в мире BSD оболочка это C shell, которую можно обозначить как /bin/tcsh.

Пользователь был добавлен в группу wheel, чтобы иметь возможность стать суперпользователем с привилегиями root.

Когда все будет введено, нажмите [ OK ] и меню управления пользователями и группами (User and Group Management) появится снова:

Figure 2-63. Выход из меню управления пользователями и группами

Сейчас также можно добавить группы, если известно, для чего они потребуются. Иначе в это меню можно войти, запустив /stand/sysinstall после окончания установки.

После завершения добавления пользователей, выберите Exit с помощью клавиш навигации и нажмите Enter для продолжения установки.

2.9.16 Установка пароля root

                        Message
 Now you must set the system manager's password.  
 This is the password you'll use to log in as "root". 

                         [ OK ] 

               [ Press enter to continue ]

Нажмите Enter для установки пароля root.

Необходимо два раза правильно ввести пароль. Излишне упоминать, что должна быть возможность восстановления пароля, если вы его забудете.

Changing local password for root. 
New password : 
Retype new password :

Установка продолжится после успешного ввода пароля.

2.9.17 Выход из установки (Exiting Install)

Если нужно настроить дополнительные сетевые устройства, или произвести другие настройки, вы можете сделать это сейчас или после установки с помощью/stand/sysinstall.

                     User Confirmation Requested
 Visit the general configuration menu for a chance to set any last
 options? 

                              Yes   [ No ]

Выберите [ No ] с помощью клавиш навигации и нажмите Enter для возврата к главному меню установки.

Figure 2-64. Выход из установки

Выберите [X Exit Install] с помощью клавиш навигации и нажмите Enter. Будет задан вопрос о подтверждении выхода из установки:

                     User Confirmation Requested
 Are you sure you wish to exit? The system will reboot (be sure to  
 remove any floppies from the drives). 

                            [ Yes ]   No

Выберите [ Yes ] и удалите дискету если загрузка была с нее. CDROM заблокирован, пока компьютер не начнет перегружаться. CDROM будет разблокирован и диск нужно будет извлечь из привода (быстро).

Система начнет перезагрузку, смотрите за сообщениями об ошибках, которые могут появиться.

2.9.18 Загрузочный процесс FreeBSD (FreeBSD Bootup)

2.9.18.1 Загрузка FreeBSD на i386

Если все пройдет нормально, вы увидите прокручивающиеся за экран сообщения, затем приглашение ко входу в систему. Вы может просмотреть сообщения, нажав Scroll-Lock и используя PgUp и PgDn. Нажатие Scroll-Lock еще раз вернет вас к приглашению.

Все сообщение может не отобразиться (ограничение буфера), но может быть просмотрено путем ввода команды dmesg в командной строке.

Войдите, используя имя пользователя/пароль, добавленные во время установки (rpratt в этом примере). Избегайте входа под root, если это не требуется.

Типичные сообщения при загрузке (информация о версии удалена):

Copyright (c) 1992-2002 The FreeBSD Project. 
Copyright (c) 1979, 1980, 1983, 1986, 1988, 1989, 1991, 1992, 1993, 1994
        The Regents of the University of California. All rights reserved. 

Timecounter "i8254"  frequency 1193182 Hz
CPU: AMD-K6(tm) 3D processor (300.68-MHz 586-class CPU)
  Origin = "AuthenticAMD"  Id = 0x580  Stepping = 0
  Features=0x8001bf<FPU,VME,DE,PSE,TSC,MSR,MCE,CX8,MMX> 
  AMD Features=0x80000800<SYSCALL,3DNow!> 
real memory  = 268435456 (262144K bytes) 
config> di sn0 
config> di lnc0 
config> di le0 
config> di ie0 
config> di fe0 
config> di cs0 
config> di bt0  
config> di aic0 
config> di aha0 
config> di adv0 
config> q 
avail memory = 256311296 (250304K bytes)
Preloaded elf kernel "kernel" at 0xc0491000. 
Preloaded userconfig_script "/boot/kernel.conf" at 0xc049109c. 
md0: Malloc disk 
Using $PIR table, 4 entries at 0xc00fde60
npx0: <math processor> on motherboard 
npx0: INT 16 interface 
pcib0: <Host to PCI bridge> on motherboard 
pci0: <PCI bus> on pcib0 
pcib1: <VIA 82C598MVP (Apollo MVP3) PCI-PCI (AGP) bridge> at device 1.0 on pci0 
pci1: <PCI bus> on pcib1 
pci1: <Matrox MGA G200 AGP graphics accelerator> at 0.0 irq 11 
isab0: <VIA 82C586 PCI-ISA bridge> at device 7.0 on pci0 
isa0: <ISA bus> on isab0 
atapci0: <VIA 82C586 ATA33 controller> port 0xe000-0xe00f at device 7.1 on pci0 
ata0: at 0x1f0 irq 14 on atapci0 
ata1: at 0x170 irq 15 on atapci0 
uhci0: <VIA 83C572 USB controller> port 0xe400-0xe41f irq 10 at device 7.2 on pci0 
usb0: <VIA 83C572 USB controller> on uhci0 
usb0: USB revision 1.0 
uhub0: VIA UHCI root hub, class 9/0, rev 1.00/1.00, addr 1 
uhub0: 2 ports with 2 removable, self powered 
chip1: <VIA 82C586B ACPI interface> at device 7.3 on pci0 
ed0: <NE2000 PCI Ethernet (RealTek 8029)> port 0xe800-0xe81f irq 9 at
device 10.0 on pci0 
ed0: address 52:54:05:de:73:1b, type NE2000 (16 bit) 
isa0: too many dependant configs (8) 
isa0: unexpected small tag 14 
fdc0: <NEC 72065B or clone> at port 0x3f0-0x3f5,0x3f7 irq 6 drq 2 on isa0
fdc0: FIFO enabled, 8 bytes threshold 
fd0: <1440-KB 3.5" drive> on fdc0 drive 0 
atkbdc0: <keyboard controller (i8042)> at port 0x60-0x64 on isa0 
atkbd0: <AT Keyboard> flags 0x1 irq 1 on atkbdc0 
kbd0 at atkbd0 
psm0: <PS/2 Mouse> irq 12 on atkbdc0 
psm0: model Generic PS/2 mouse, device ID 0 
vga0: <Generic ISA VGA> at port 0x3c0-0x3df iomem 0xa0000-0xbffff on isa0
sc0: <System console> at flags 0x1 on isa0 
sc0: VGA <16 virtual consoles, flags=0x300> 
sio0 at port 0x3f8-0x3ff irq 4 flags 0x10 on isa0 
sio0: type 16550A 
sio1 at port 0x2f8-0x2ff irq 3 on isa0 
sio1: type 16550A 
ppc0: <Parallel port> at port 0x378-0x37f irq 7 on isa0 
ppc0: SMC-like chipset (ECP/EPP/PS2/NIBBLE) in COMPATIBLE mode 
ppc0: FIFO with 16/16/15 bytes threshold 
ppbus0: IEEE1284 device found /NIBBLE
Probing for PnP devices on ppbus0: 
plip0: <PLIP network interface> on ppbus0 
lpt0: <Printer> on ppbus0 
lpt0: Interrupt-driven port 
ppi0: <Parallel I/O> on ppbus0
ad0: 8063MB <IBM-DHEA-38451> [16383/16/63] at ata0-master using UDMA33 
ad2: 8063MB <IBM-DHEA-38451> [16383/16/63] at ata1-master using UDMA33 
acd0: CDROM <DELTA OTC-H101/ST3 F/W by OIPD> at ata0-slave using PIO4 
Mounting root from ufs:/dev/ad0s1a 
swapon: adding /dev/ad0s1b as swap device 
Automatic boot in progress... 
/dev/ad0s1a: FILESYSTEM CLEAN; SKIPPING CHECKS 
/dev/ad0s1a: clean, 48752 free (552 frags, 6025 blocks, 0.9% fragmentation)
/dev/ad0s1f: FILESYSTEM CLEAN; SKIPPING CHECKS 
/dev/ad0s1f: clean, 128997 free (21 frags, 16122 blocks, 0.0% fragmentation)
/dev/ad0s1g: FILESYSTEM CLEAN; SKIPPING CHECKS
/dev/ad0s1g: clean, 3036299 free (43175 frags, 374073 blocks, 1.3% fragmentation)
/dev/ad0s1e: filesystem CLEAN; SKIPPING CHECKS 
/dev/ad0s1e: clean, 128193 free (17 frags, 16022 blocks, 0.0% fragmentation)
Doing initial network setup: hostname. 
ed0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
        inet 192.168.0.1 netmask 0xffffff00 broadcast 192.168.0.255
        inet6 fe80::5054::5ff::fede:731b%ed0 prefixlen 64 tentative scopeid 0x1
        ether 52:54:05:de:73:1b
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> mtu 16384 
        inet6 fe80::1%lo0 prefixlen 64 scopeid 0x8 
        inet6 ::1 prefixlen 128 
        inet 127.0.0.1 netmask 0xff000000 
Additional routing options: IP gateway=YES TCP keepalive=YES
routing daemons:. 
additional daemons: syslogd. 
Doing additional network setup:. 
Starting final network daemons: creating ssh RSA host key 
Generating public/private rsa1 key pair.
Your identification has been saved in /etc/ssh/ssh_host_key. 
Your public key has been saved in /etc/ssh/ssh_host_key.pub. 
The key fingerprint is: 
cd:76:89:16:69:0e:d0:6e:f8:66:d0:07:26:3c:7e:2d root@k6-2.example.com
 creating ssh DSA host key 
Generating public/private dsa key pair.
Your identification has been saved in /etc/ssh/ssh_host_dsa_key. 
Your public key has been saved in /etc/ssh/ssh_host_dsa_key.pub. 
The key fingerprint is: 
f9:a1:a9:47:c4:ad:f9:8d:52:b8:b8:ff:8c:ad:2d:e6 root@k6-2.example.com.
setting ELF ldconfig path: /usr/lib /usr/lib/compat /usr/X11R6/lib
/usr/local/lib 
a.out ldconfig path: /usr/lib/aout /usr/lib/compat/aout /usr/X11R6/lib/aout 
starting standard daemons: inetd cron sshd usbd sendmail.
Initial rc.i386 initialization:. 
rc.i386 configuring syscons: blank_time screensaver moused. 
Additional ABI support: linux. 
Local package initialization:. 
Additional TCP options:. 

FreeBSD/i386 (k6-2.example.com) (ttyv0)

login: rpratt 
Password:

Генерирование ключей RSA и DSA может занять некоторое время на медленных компьютерах. Это может случиться только при первой загрузке свежеустановленной системы. Последующие загрузки будут быстрее.

Если X сервер был настроен и был выбран десктоп по умолчанию, он может быть запущен из командной строки командой startx.

2.9.18.2 Загрузка FreeBSD на Alpha

Когда процедура установки будет завершена, вы сможете запустить FreeBSD в приглашении SRM примерно такой командой:

>>>BOOT DKC0

Это команда дает указание на загрузку с заданного диска. Чтобы FreeBSD в будущем загружалась автоматически, используйте эти команды:

>>> SET BOOT_OSFLAGS A
>>> SET BOOT_FILE ''
>>> SET BOOTDEF_DEV DKC0
>>> SET AUTO_ACTION BOOT

Загрузочные сообщения будут похожи (но не идентичны) сообщениям, выводимым FreeBSD при загрузке на i386™.

2.9.19 Завершение работы FreeBSD (FreeBSD Shutdown)

Важно правильно завершать работу операционной системы. Нельзя просто выключать питание. Сначала нужно стать суперпользователем, введя в командной строке su и пароль root. Это сработает только если пользователь является членом группы wheel. Или зайдите под root и используйте команду shutdown -h now.

The operating system has halted. 
Please press any key to reboot.

Можно безопасно выключать питание после того, как будет выполнена команда shutdown и появится сообщение ``Please press any key to reboot''. Если вместо выключения питания будет нажата любая клавиша, система перезагрузится.

Вы также можете использовать комбинацию клавиш Ctrl+Alt+Del для перезагрузки системы, хотя это не рекомендуется в обычной ситуации.

Этот, и другие документы, могут быть скачаны с ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

По вопросам связанными с FreeBSD, прочитайте документацию прежде чем писать в <questions@FreeBSD.org>.
По вопросам связанным с этой документацией, пишите <doc@FreeBSD.org>.
По вопросам связанным с русским переводом документации, пишите <frdp@FreeBSD.org.ua>.


Руководство FreeBSDPrevChapter 2 Установка FreeBSDNext

2.2 Перед установкой

2.2.1 Соберите информацию о компьютере

Перед установкой FreeBSD попытайтесь собрать информацию об устройствах компьютера. Во время установки FreeBSD покажет информацию об устройствах (жестких дисках, сетевых картах, CDROM и т.д.) с номером модели и производителем. FreeBSD также попытается определить правильную конфигурацию для этих устройств, включая информацию об IRQ и портах ввода-вывода. Из-за возможных проблем с оборудованием этот процесс не всегда завершается успешно, и возможно вам придется исправлять определенную FreeBSD конфигурацию.

Если у вас уже есть установленная операционная система, например Windows® или Linux, неплохо будет использовать ее возможности для просмотра настроек оборудования. Если вы не уверены какие какие настройки карты расширения использовать, можете найти их на самой карте. Часто используемые номера прерываний 3, 5 и 7, порты ввода- вывода обычно пишутся в шестнадцатеричном виде, например 0x330.

Мы рекомендуем распечатать эту информацию перед установкой FreeBSD. Вам может помочь использование таблицы вроде этой:

Table 2-1. Пример сведений об оборудовании

Название устройстваIRQПорт ввода-выводаПримечания
Первый жесткий дискнетнет40 GB, Seagate, первый IDE master
CDROMнетнетПервый IDE slave
Второй жесткий дискнетнет20 GB, IBM, второй IDE master
Первый IDE контроллер140x1f0 
Сетевая картанетнетIntel® 10/100
Модемнетнет3Com® 56K факс-модем, COM1
...   

2.2.2 Сделайте резервное копирование данных

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

2.2.3 Решите куда установить FreeBSD

Если вы хотите, чтобы FreeBSD использовала весь жесткий диск, не о чем беспокоиться -- можете пропустить этот раздел.

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

2.2.3.1 Разделы диска для i386

Диск PC может быть поделен отдельные части. Эти части называют разделами. Первоначально PC поддерживал только четыре раздела на диск. Эти разделы называются главными разделами. Чтобы обойти это ограничение и дать возможность создавать более чем четыре раздела, был создан новый тип раздела, расширенный раздел. Диск может содержать только один расширенный раздел. Специальные разделы, называемые логическими разделами, могут быть созданы внутри расширенного раздела.

Каждый раздел имеет ID раздела -- номер, который используется для определения типа данных на разделе. FreeBSD использует ID раздела 165.

Как правило, каждая операционная система, которую вы используете, определяет разделы своим способом. Например, DOS и ее потомки, такие как Windows, присваивают каждому главному и логическому разделу букву диска, начиная с C:.

FreeBSD нужно устанавливать в главный раздел. FreeBSD может хранить все свои данные, включая создаваемые вами файлы, на этом одном разделе. Тем не менее, если дисков много, вы можете создать разделы FreeBSD на всех дисках или на некоторых из них. При установке FreeBSD должен быть доступен по крайней мере один раздел. Это может быть чистый, подготовленный для установки раздел, или раздел с данными, которые больше не нужны.

Если все разделы на диске уже используются, вы должны освободить один из них для FreeBSD, используя программы, поставляемые с имеющейся операционной системой (например, fdisk для DOS или Windows).

Если есть резервный раздел, используйте его. Однако, возможно сначала придется ужать один или несколько существующих разделов.

FreeBSD для установки нужен диск не менее 100 MB. Однако, это оченьминимальная установка, при которой не останется места для ваших личных файлов. Более реальный объем -- 250 MB без графической оболочки, и более 350 MB с графической оболочкой. Если вы собираетесь устанавливать большое количество дополнительного ПО, понадобится еще больше дискового пространства.

Вы можете использовать коммерческие программы, такие как PartitionMagic®, для изменения размера разделов и освобождения места под FreeBSD. Каталог tools на CDROM содержит две свободно распространяемых утилиты, которые могут быть использованы для этой задачи, называющиеся FIPS и PResizer. FIPS, PResizer, и PartitionMagic могут изменять размер разделов FAT16 и FAT32, используемых системами от MS-DOS® до Windows ME. PartitionMagic это единственная известная программа, способная изменять размер NTFS. Документация на них находится в том же каталоге.

Warning: Неправильное использование этих утилит может привести к уничтожению данных на диске. Удостоверьтесь в наличии свежих и исправных резервных копий данных перед их использованием.

Example 2-1. Использование существующего раздела без изменения

Представьте что в компьютере один 4 GB диск, на котором уже установлена Windows, и диск разбит на два логических диска C: и D:, каждый по 2 GB. 1 GB данных на C:, и 0.5 GB данных на D:.

Это означает, что диск состоит из двух разделов, по одному на каждую букву. Вы можете скопировать все данные с D: на C:, это освободит второй раздел для FreeBSD.

Example 2-2. Сжатие существующих разделов

Представьте, что в компьютере один 4 GB диск, на котором уже установлена Windows. При установке Windows вы создали один большой раздел, получив при этом диск C: размером 4 GB. Вы используете 1.5 GB, и хотите выделить 2 GB для FreeBSD.

Для установки FreeBSD нужно выбрать:

  1. Сделать резервную копию Windows, затем переустановить Windows, выделив 2 GB под ее раздел.

  2. Использовать одну из утилит, таких как PartitionMagic, описанную выше, для сжатия раздела Windows.

2.2.3.2 Разделы диска для Alpha

Вам потребуется выделенный диск для FreeBSD на Alpha. В настоящее время невозможно установить две операционные системы на диск. В зависимости от конкретного компьютера Alpha, диск может быть SCSI или IDE, главное, чтобы ваш компьютер мог с него загружаться.

В соответствии с соглашениями, принятыми в руководствах Digital / Compaq, весь SRM ввод показан в верхнем регистре. SRM нечувствителен к регистру.

Для поиска имен и типов дисков на компьютере используйте команду SHOW DEVICE SRM консоли:

>>>SHOW DEVICE
dka0.0.0.4.0               DKA0           TOSHIBA CD-ROM XM-57  3476
dkc0.0.0.1009.0            DKC0                       RZ1BB-BS  0658
dkc100.1.0.1009.0          DKC100             SEAGATE ST34501W  0015
dva0.0.0.0.1               DVA0
ewa0.0.0.3.0               EWA0              00-00-F8-75-6D-01
pkc0.7.0.1009.0            PKC0                  SCSI Bus ID 7  5.27
pqa0.0.0.4.0               PQA0                       PCI EIDE
pqb0.0.1.4.0               PQB0                       PCI EIDE

Этот пример с Digital Personal Workstation 433au показывает три подключенных диска. Первый -- устройство CDROM с именем DKA0, другие два называются DKC0 и DKC100 соответственно.

Диски с именами DKx -- SCSI диски. Например, DKA100 означает SCSI диск со SCSI целевым ID 1 на первой SCSI шине (A), в то время как DKC300 означает SCSI диск с SCSI ID 3 на третьей SCSI шине (C). Имя устройства PKx означает SCSI адаптер. Как показано в выводе SHOW DEVICE, SCSI устройство CDROM определяется как любой другой жесткий диск SCSI.

Имена IDE дисков выглядят как DQx, в то время как PQx -- IDE контроллер.

2.2.4 Соберите информацию о конфигурации сети

Если вы хотите подключиться к сети в процессе установки FreeBSD (например, при установке с FTP или NFS сервера), нужно знать конфигурацию сети. Вам будет предложено ввести эту информацию, чтобы FreeBSD смогла подключиться к сети для продолжения установки.

2.2.4.1 Подключение к сети Ethernet, или через кабельный/DSL модем

Если вы подключаетесь к сети Ethernet, или соединение с интернет подключено к Ethernet через кабельный или DSL модем, понадобится следующая информация:

  1. IP адрес

  2. IP адрес шлюза по умолчанию

  3. Имя хоста

  4. IP адрес DNS сервера

  5. Маска подсети

Если у вас нет этой информации, спросите системного администратора или провайдера интернет. Они могут сказать, что эти данные присваиваются автоматически, с использованием DHCP. Если это так, запомните это.

2.2.4.2 Подсоединение с помощью модема

Если вы дозваниваетесь до провайдера с помощью обычного модема, вы все же сможете установить FreeBSD через интернет, но это займет очень много времени.

Вам нужно знать:

  1. Номер телефона провайдера

  2. COM порт, к которому подключен модем

  3. Имя пользователя и пароль учетной записи для доступа в интернет

2.2.5 Проверьте сведения об обнаруженных ошибках FreeBSD

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

Информация о релизах, включая сообщения об ошибках каждого релиза, находится странице информации о релизах сайта FreeBSD.

2.2.6 Получение установочных файлов FreeBSD

Программа установки FreeBSD может установить FreeBSD из файлов, расположенных в одном из следующих мест:

Локальный диск

Сеть

Если вы купили FreeBSD на CD или DVD, у вас уже есть все, что нужно, переходите к следующему разделу (Section 2.2.7).

Если у вас нет установочных файлов FreeBSD, перейдите к разделу Section 2.13, который описывает, как подготовиться к установке FreeBSD любым указанным выше способом. После прочтения этого раздела, вернитесь сюда и прочтите Section 2.2.7.

2.2.7 Подготовка загрузочных дисков

Процесс установки FreeBSD начинается с загрузки в ваш компьютер программы установки FreeBSD -- эта программа не запускается из других операционных систем. Компьютер обычно загружает операционную систему, установленную на жестком диске, но также может быть настроен для использования ``загрузочной'' дискеты. Большинство современных компьютеров могут также загрузиться с компакт-диска в приводе CDROM.

Tip: Если у вас есть FreeBSD на CDROM или DVD (купленный или записанный самостоятельно), и компьютер позволяет загрузку с CDROM или DVD (обычно этот пункт в BIOS называется ``Boot Order'' или что-то вроде), можете пропустить этот раздел. Образы FreeBSD CDROM и DVD являются загрузочными и могут быть использованы для установки FreeBSD без какой-либо специальной подготовки.

Для создания загрузочных дисков сделайте следующее:

  1. Получение образов загрузочных дисков

    Загрузочные диски есть на установочном диске в каталоге floppies/, и могут быть также закачаны из каталога floppies для компьютеров i386™ и из каталога floppies для компьютеров Alpha.

    Расширение файла образа диска .flp. Каталог floppies/ содержит множество разных образов, ваш выбор будет зависеть от устанавливаемой версии FreeBSD и, в некоторых случаях, от конфигурации компьютера. В большинстве случаев понадобятся всего лишь два файла, kern.flp и mfsroot.flp. В некоторых системах могут потребоваться дополнительные драйверы устройств. Они находятся в файле drivers.flp. Обратитесь к файлу README.TXT в том же каталоге за свежей информацией об этих образах дисков.

    Important: FTP клиент должен использовать бинарный режим для загрузки образов дисков. Некоторые веб браузеры используют текстовый (ASCII) режим, который точно не позволит загрузиться с этих дисков.

  2. Подготовка дискет

    Необходимо подготовить по одной дискете на каждый загруженный образ. Эти дискеты должны быть без дефектов. Лучший способ проверить это -- отформатировать дискеты самостоятельно. Не доверяйте заводскому форматированию дискет. Утилита форматирования в Windows не сообщит о наличии плохих секторов, она просто пометит их как ``плохие'' и проигнорирует. Советуем использовать новые дискеты если вы выбрали этот способ установки.

    Important: Если при попытке установки FreeBSD программа установки рушится, зависает, или делает что-то не так, сразу проверьте дискеты. Попробуйте записать образы на новые дискеты и попытайтесь еще раз.

  3. Запись образов на дискеты

    Файлы с расширением .flp это не обычные файлы, которые можно записать на диск. Это образы всего содержимого диска. Это означает, что вы не можете просто скопировать их с одного диска на другой. Вместо этого, нужно использовать специальные утилиты для записи образов на диск.

    Если вы записываете флоппи на компьютере под MS-DOS/Windows, используйте утилиту fdimage.

    Если вы используете образы с CDROM, и буква вашего CDROM E:, запустите ее так:

    E:\> tools\fdimage floppies\kern.flp A:

    Повторите эту команду для каждого файла .flp, вставляя новую дискету каждый раз, пометьте каждый диск именем файла, который вы скопировали на него. Измените команду если потребуется, в зависимости от места, куда вы поместили файлы .flp. Если у вас нет CDROM, fdimage может быть загружена из каталога tools FTP сервера FreeBSD.

    Если вы записываете дискеты под UNIX® (например, под другой системой FreeBSD), используйте утилиту dd(1) для записи образов непосредственно на дискеты. Под FreeBSD запустите:

    # dd if=kern.flp of=/dev/fd0

    Под FreeBSD, /dev/fd0 означает первый гибкий диск (диск A:). /dev/fd1 будет диском B:, и так далее. Другие UNIX системы могут по-другому именовать устройства гибких дисков, вам возможно понадобится прочитать документацию по соответствующей системе.

Теперь вы готовы к установке FreeBSD.

Этот, и другие документы, могут быть скачаны с ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

По вопросам связанными с FreeBSD, прочитайте документацию прежде чем писать в <questions@FreeBSD.org>.
По вопросам связанным с этой документацией, пишите <doc@FreeBSD.org>.
По вопросам связанным с русским переводом документации, пишите <frdp@FreeBSD.org.ua>.


Руководство FreeBSDPrevChapter 2 Установка FreeBSDNext

2.3 Начало установки

Important: Как правило, программа установки не будет производить никаких изменений на дисках, пока не выдаст следующее сообщение:

Last Chance: Are you SURE you want continue the installation?

If you're running this on a disk with data you wish to save then WE
STRONGLY ENCOURAGE YOU TO MAKE PROPER BACKUPS before proceeding!

We can take no responsibility for lost disk contents!

Установка может быть прервана в любой момент до этого предупреждения без каких-либо изменений на жестком диске. Если вы считаете, что что-то настроили неправильно, можете просто выключить компьютер без риска что-либо повредить.

2.3.1 Загрузка

2.3.1.1 Загрузка i386

  1. Компьютер выключен.

  2. Включите компьютер. После включения он должен показать способ входа в меню установки BIOS, как правило это клавиши F2, F10, Del, или Alt+S. Используете те клавиши, которые показаны на экране. В некоторых случаях компьютер может показывать картинку после запуска. Как правило, нажатие Esc уберет картинку и позволит вам увидеть необходимую информацию.

  3. Найдите установки системы, указывающие ей с какого устройства загружаться. Обычно они обозначаются как ``Boot Order'', и там как правило отображен список устройств, таких как Floppy, CDROM, First Hard Disk, и так далее.

    Если вы подготовили дискеты, убедитесь, что выбран Floppy. Если вы загружаетесь с CDROM, убедитесь что выбран он. Если вы не уверены, посмотрите руководство к компьютеру и/или к его материнской плате.

    Сделайте изменения, затем сохраните их и выйдите. Компьютер должен перезагрузиться.

  4. Если вы подготовили дискеты, как описано в разделе Section 2.2.7, одна из них будет первым загрузочным диском; как правило, это дискета с kern.flp. Вставьте эту дискету в дисковод.

    Если вы загружаетесь с CDROM, потребуется сначала включить компьютер и вставить компакт-диск как только это станет возможно.

    Если компьютер запускается как обычно, и загружает существующую операционную систему, возможны следующие причины:

    1. Диск был вставлен недостаточно рано в процессе загрузки. Оставьте его внутри и перегрузите компьютер.

    2. Установки BIOS, измененные ранее, действуют неправильно. Надо изменять их их пока они не заработают.

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

  5. FreeBSD начнет загрузку. Если загрузка происходит с CDROM, вы увидите что-то вроде этого (информация о версии удалена):

    Verifying DMI Pool Data ........
    Boot from ATAPI CD-ROM :
     1. FD 2.88MB  System Type-(00)
    Uncompressing ... done
    
    BTX loader 1.00 BTX version is 1.01
    Console: internal video/keyboard
    BIOS drive A: is disk0
    BIOS drive B: is disk1
    BIOS drive C: is disk2
    BIOS drive D: is disk3
    BIOS 639kB/261120kB available memory
    
    FreeBSD/i386 bootstrap loader, Revision 0.8
    
    /kernel text=0x277391 data=0x3268c+0x332a8 |
    
    |
    Hit [Enter] to boot immediately, or any other key for command prompt.
    Booting [kernel] in 9 seconds... _

    Если происходит загрузка с дискеты, вы увидите что-то вроде этого (информация о версии удалена):

    Verifying DMI Pool Data ........
    
    BTX loader 1.00  BTX version is 1.01
    Console: internal video/keyboard
    BIOS drive A: is disk0
    BIOS drive C: is disk1 
    BIOS 639kB/261120kB available memory 
    
    FreeBSD/i386 bootstrap loader, Revision 0.8 
    /kernel text=0x277391 data=0x3268c+0x332a8 |
    
    Please insert MFS root floppy and press enter:

    Следуя инструкциям, уберите дискету с kern.flp, вставьте дискету с mfsroot.flp и нажмите Enter.

  6. Идет ли загрузка с дискет или с CDROM, в процессе загрузки появится:

    Hit [Enter] to boot immediately, or any other key for command prompt.
    Booting [kernel] in 9 seconds... _

    Подождите десять секунд или нажмите Enter. Будет запущено меню конфигурации ядра.

2.3.1.2 Загрузка Alpha

  1. Компьютер выключен.

  2. Включите компьютер и дождитесь приглашения к загрузке на мониторе.

  3. Если вы подготовили загрузочные дискеты, как описано в разделе Section 2.2.7, одна из них будет первым загрузочным диском; как правило, это дискета с kern.flp. Вставьте эту дискету в дисковод и наберите следующую команду для загрузки (замените на имя вашего дисковода если потребуется):

    >>>BOOT DVA0 -FLAGS '' -FILE ''

    Если вы загружаетесь с CDROM, вставьте компакт-диск в привод и наберите для начала установки следующую команду (замените на имя соответствующего устройства CDROM если потребуется):

    >>>BOOT DKA0 -FLAGS '' -FILE ''
  4. FreeBSD начнет загружаться. Если загрузка идет с дискет, через некоторое время вы увидите сообщение:

    Please insert MFS root floppy and press enter:

    Следуя инструкциям, удалите дискету с kern.flp, вставьте дискету с mfsroot.flp и нажмите Enter.

  5. Идет ли загрузка с дискет или с CDROM, в процессе загрузки появится:

    Hit [Enter] to boot immediately, or any other key for command prompt.
    Booting [kernel] in 9 seconds... _

    Подождите десять секунд или нажмите Enter. Будет запущено меню конфигурации ядра.

2.3.2 Конфигурация ядра (kernel)

Note: Начиная с FreeBSD версии 5.0 и более поздних, userconfig был удален в пользу метода device.hints(5). За более подробной информацией о device.hints(5) обращайтесь к Section 7.5

kernel это ядро операционной системы. В нем реализовано множество функций, включая доступ ко всем устройствам, которые могут быть в системе, таким как жесткие диски, сетевые карты, звуковые карты и т.д. Каждое устройство, поддерживаемое ядром FreeBSD имеет свой драйвер. У каждого драйвера есть имя из двух или трех букв, например sa для драйвера последовательного доступа SCSI, или sio для драйвера последовательного ввода-вывода (который управляет COM портами).

Когда ядро загружено, каждый драйвер проверяет систему на предмет наличия поддерживаемого оборудования. Если оно найдено, драйвер конфигурирует оборудование и делает его доступным остальной части ядра.

Такая проверка обычно называется тестированием устройства. К сожалению, это не всегда безопасно. Некоторые драйвера конфликтуют между собой, и проверка части оборудования иногда может привести другую часть в неработоспособное состояние. Это основное ограничение архитектуры PC.

Многие старые устройства называются ISA -- в противоположность PCI. Стандарт ISA требует, чтобы в каждом устройстве была прописана некоторая информация, обычно номер Interrupt Request Line (IRQ) и адрес порта ввода-вывода, которые используются драйвером. Эта информация обычно устанавливается с использованием перемычек на карте, или с помощью DOS утилиты.

Часто это вызывало проблемы, поскольку было невозможно использовать два устройства с одинаковыми IRQ или адресами портов.

Новые устройства поддерживают PCI стандарт, который не требует установки параметров вручную, так как устройства способны общаться с BIOS и договариваться, какие IRQ и адреса портов ввода-вывода использовать.

Если в вашем компьютере есть устройства ISA, FreeBSD драйвер для этого устройства должен быть настроен с IRQ и адресом порта установленными на карте. Для этого может понадобиться собрать сведения об оборудовании (Section 2.2.1).

К сожалению, номера IRQ и адреса портов, используемые некоторыми драйверами, конфликтуют. Это потому, что некоторые устройства ISA поставляются с конфликтующими номерами IRQ или адресами портов. По умолчанию драйвера FreeBSD предусмотрительно настроены для использования заводских установок, поэтому будут работать столько устройств, сколько возможно.

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

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

Поэтому первое, что вы должны сделать при установке FreeBSD -- проверить список устройств, настроенных в ядре. Отключите некоторые из них, если таких устройств нет. Подтвердите (и измените) конфигурацию, если это устройство присутствует, но установки по умолчанию неверны.

Возможно, это звучит гораздо сложнее чем есть на самом деле.

На Figure 2-1 показано главное меню конфигурации ядра. Мы рекомендуем выбрать опцию Start kernel configuration in full-screen visual mode, так как это самый простой интерфейс для нового пользователя.

Figure 2-1. Меню конфигурации ядра

Экран конфигурации ядра (Figure 2-2) поделен на четыре части:

  1. Свернутый список устройств, помеченных как ``active'', поделен на группы, такие как Storage, и Network. Каждый драйвер показан в виде описания, имени из двух или трех букв, используемых IRQ и порта. В дополнение, если какой-либо активный драйвер конфликтует с другим активным драйвером, после имени драйвера пишется CONF. В этом разделе также показано общее число конфликтующих активных драйверов.

  2. Драйверы, помеченные как неактивные. Они остаются в ядре, но не будут тестировать свои устройства при загрузке ядра. Они поделены на группы так же как и активные драйверы.

  3. Дополнительная информация о выбранном в данный момент драйвере, включая IRQ и адрес порта.

  4. Информация об управляющих клавишах, доступных в данный момент.

Figure 2-2. Визуальный интерфейс конфигурации ядра

Не беспокойтесь если появятся сообщения о конфликтах, так и должно быть; все драйверы включены и как уже объяснялось, некоторые из них будут конфликтовать с другими.

Сейчас вам нужно просмотреть список драйверов и разрешить конфликты.

Разрешение конфликтов драйверов

  1. Нажмите X. Это полностью раскроет список драйверов и вы сможете увидеть их все. Вам понадобятся клавиши навигации для прокрутки назад и вперед в списке активных драйверов.

    Figure 2-3 показывает результат действия X.

    Figure 2-3. Развернутый список драйверов

  2. Отключите все драйвера устройств, которых у вас нет. Для отключения драйвера, переместитесь к нему с помощью клавиш навигации и нажмите Del. Драйвер будет помещен в список Inactive Drivers.

    Если вы случайно отключили нужное устройство, нажмите Tab для переключения на Inactive Drivers, выберите отключенный драйвер, и нажмите Enter, чтобы вернуть его обратно в список активных драйверов.

    Warning: Не отключайте sc0. Он управляет экраном, и он нужен, если только вы не производите установку через последовательный порт.

    Warning: Отключайте atkbd0 только если вы используете USB клавиатуру. Если клавиатура обычная, оставьте atkbd0.

  3. Если конфликтов нет, можете пропустить этот этап. В другом случае оставшиеся конфликты должны быть проверены. Если они не помечены как ``allowed conflict'' в окне сообщений, должны быть изменены или IRQ/адрес порта для тестирования устройства, или IRQ/адрес порта физического устройства.

    Для изменения IRQ и адреса порта ввода-вывода драйвера, выберите устройство и нажмите Enter. Курсор переместится в третье окно и вы сможете изменить значения. вам нужно ввести значения IRQ и адреса порта, определенные в процессе сбора информации об оборудовании. Нажмите Q для завершения редактирования конфигурации устройства и возвращения в список активных устройств.

    Если вы не уверены, какими должны быть эти значения, попробуйте использовать -1. Некоторые драйвера FreeBSD могут безопасно протестировать оборудование для определения правильных значений, и значение -1 указывает им сделать это.

    Процедура изменения адреса физического устройства различна для разных устройств. Для некоторых устройств вам может понадобиться извлечь карту из компьютера и установить перемычки или DIP переключатели. Другие устройства могут поставляться с DOS дискетой, содержащей программы, используемые для перенастройки карты. В любом случае, обращайтесь к документации, поставляемой с устройством. Изменение адреса несомненно потребует перезагрузки компьютера, так что вам потребуется опять вернуться к процессу установки FreeBSD после перенастройки карты.

  4. Когда все конфликты будут разрешены, экран будет выглядеть как Figure 2-4.

    Figure 2-4. Конфигурация драйверов без конфликтов

    Как видите, список активных драйверов стал гораздо меньше, поскольку в нем только драйвера реально установленных устройств.

    Теперь вы можете сохранить изменения и перейти к следующему пункту установки. Нажмите Q для выхода из меню конфигурации. Появится сообщение:

    Save these parameters before exiting? ([Y]es/[N]o/[C]ancel)

    Нажмите Y для сохранения параметров в памяти (они будут сохранены на диск после завершения установки) и тестирование начнется. После отображения белым по черному результатов тестирования запустится sysinstall и отобразится главное меню (Figure 2-5).

    Figure 2-5. Главное меню Sysinstall

2.3.3 Просмотр результатов тестирования устройств

Последние несколько сотен линий, отображенные на экране, сохраняются и могут быть просмотрены.

Для просмотра буфера нажмите Scroll Lock. Это включит прокрутку экрана. Вы можете использовать клавиши навигации или PageUp и PageDown для просмотра результатов. Нажмите Scroll Lock еще раз для отключения прокрутки.

Сделайте это сейчас для просмотра текста, ушедшего за экран, когда ядро закончило тестирование устройств. Вы увидите текст вроде Figure 2-6, хотя в деталях он будет отличаться в зависимости от устройств, имеющихся в вашем компьютере.

Figure 2-6. Типичный вывод Device Probe

avail memory = 253050880 (247120K bytes)
Preloaded elf kernel "kernel" at 0xc0817000.
Preloaded mfs_root "/mfsroot" at 0xc0817084.
md0: Preloaded image </mfsroot> 4423680 bytes at 0xc03ddcd4

md1: Malloc disk
Using $PIR table, 4 entries at 0xc00fde60
npx0: <math processor> on motherboard   
npx0: INT 16 interface   
pcib0: <Host to PCI bridge> on motherboard
pci0: <PCI bus> on pcib0
pcib1:<VIA 82C598MVP (Apollo MVP3) PCI-PCI (AGP) bridge> at device 1.0 on pci0
pci1: <PCI bus> on pcib1
pci1: <Matrox MGA G200 AGP graphics accelerator> at 0.0 irq 11
isab0: <VIA 82C586 PCI-ISA bridge> at device 7.0 on pci0
isa0: <iSA bus> on isab0
atapci0: <VIA 82C586 ATA33 controller> port 0xe000-0xe00f at device 7.1 on pci0
ata0: at 0x1f0 irq 14 on atapci0
ata1: at 0x170 irq 15 on atapci0
uhci0 <VIA 83C572 USB controller> port 0xe400-0xe41f irq 10 at device 7.2 on pci
0
usb0: <VIA 83572 USB controller> on uhci0
usb0: USB revision 1.0
uhub0: VIA UHCI root hub, class 9/0, rev 1.00/1.00, addr1
uhub0: 2 ports with 2 removable, self powered
pci0: <unknown card> (vendor=0x1106, dev=0x3040) at 7.3
dc0: <ADMtek AN985 10/100BaseTX> port 0xe800-0xe8ff mem 0xdb000000-0xeb0003ff ir
q 11 at device 8.0 on pci0
dc0: Ethernet address: 00:04:5a:74:6b:b5
miibus0: <MII bus> on dc0
ukphy0: <Generic IEEE 802.3u media interface> on miibus0
ukphy0: 10baseT, 10baseT-FDX, 100baseTX, 100baseTX-FDX, auto
ed0: <NE2000 PCI Ethernet (RealTek 8029)> port 0xec00-0xec1f irq 9 at device 10.
0 on pci0
ed0 address 52:54:05:de:73:1b, type NE2000 (16 bit)
isa0: too many dependant configs (8)
isa0: unexpected small tag 14
orm0: <Option ROM> at iomem 0xc0000-0xc7fff on isa0
fdc0: <NEC 72065B or clone> at port 0x3f0-0x3f5,0x3f7 irq 6 drq2 on isa0
fdc0: FIFO enabled, 8 bytes threshold
fd0: <1440-KB 3.5" drive> on fdc0 drive 0
atkbdc0: <Keyboard controller (i8042)> at port 0x60,0x64 on isa0
atkbd0: <AT Keyboard> flags 0x1 irq1 on atkbdc0
kbd0 at atkbd0
psm0: <PS/2 Mouse> irq 12 on atkbdc0
psm0: model Generic PS/@ mouse, device ID 0
vga0: <Generic ISA VGA> at port 0x3c0-0x3df iomem 0xa0000-0xbffff on isa0
sc0: <System console> at flags 0x100 on isa0
sc0: VGA <16 virtual consoles, flags=0x300>
sio0 at port 0x3f8-0x3ff irq 4 flags 0x10 on isa0
sio0: type 16550A
sio1 at port 0x2f8-0x2ff irq 3 on isa0
sio1: type 16550A
ppc0: <Parallel port> at port 0x378-0x37f irq 7 on isa0
pppc0: SMC-like chipset (ECP/EPP/PS2/NIBBLE) in COMPATIBLE mode
ppc0: FIFO with 16/16/15 bytes threshold
plip0: <PLIP network interface> on ppbus0
ad0: 8063MB <IBM-DHEA-38451> [16383/16/63] at ata0-master UDMA33
acd0: CD-RW <LITE-ON LTR-1210B> at ata1-slave PIO4
Mounting root from ufs:/dev/md0c
/stand/sysinstall running as init on vty0

Внимательно проверьте результаты тестирования устройств и убедитесь, что FreeBSD обнаружила все устройства какие нужно. Если устройство не найдено, его не будет в списке. Если драйвер устройства нуждается в настройке IRQ и адреса порта, проверьте, введены ли они правильно.

Если вам нужно внести изменения в UserConfig, потребуется выйти из sysinstall и начать сначала. Это также хороший путь познакомиться поближе с процессом конфигурации.

Figure 2-7. Выбор Sysinstall Exit

Используйте клавиши навигации для выбора Exit Install из главного меню. Отобразится сообщение:

                      User Confirmation Requested
         Are you sure you wish to exit? The system will reboot
           (be sure to remove any floppies from the drives).

                            [ Yes ]    No

Программа установки запустится опять, если компакт-диск остался в устройстве и было выбрано [Yes].

Если вы загружаетесь с дискет, необходимо будет извлечь дискету с mfsroot.flp и заменить ее дискетой с kern.flp перед перезагрузкой.

Этот, и другие документы, могут быть скачаны с ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

По вопросам связанными с FreeBSD, прочитайте документацию прежде чем писать в <questions@FreeBSD.org>.
По вопросам связанным с этой документацией, пишите <doc@FreeBSD.org>.
По вопросам связанным с русским переводом документации, пишите <frdp@FreeBSD.org.ua>.


Руководство FreeBSDPrevChapter 2 Установка FreeBSDNext

2.5 Выделение дискового пространства

Ваша первая задача -- выделить дисковое пространство под FreeBSD и разметить его, чтобы sysinstall могла его подготовить. Для этого вам нужно знать, как FreeBSD ищет информацию на диске.

2.5.1 Нумерация дисков в BIOS

Перед установкой и настройкой FreeBSD нужно позаботиться кое о чем, особенно если жестких дисков несколько.

В PC, работающем под BIOS-зависимой операционной системой, такой как MS-DOS® или Microsoft® Windows®, BIOS может отходить от обычного порядка нумерации дисков. Это позволяет пользователю загружаться не только с так называемого ``primary master'' диска. Это особенно удобно для тех пользователей, кто обнаружил, что простейший и самый дешевый путь делать резервную копию системы -- купить второй идентичный первому жесткий диск и регулярно делать копии первого диска на второй, используя Ghost® или XCOPY. Затем, если первый диск выйдет из строя, будет заражен вирусом или поврежден из-за сбоя операционной системы, он может быть легко восстановлен путем логической перестановки дисков в BIOS. Это все равно что переключить кабели дисков, но без вскрытия корпуса.

Более дорогостоящие системы со SCSI контроллерами зачастую имеют расширения BIOS, позволяющие сходным путем менять порядок до семи SCSI дисков.

Пользователи, привыкшие пользоваться этими полезными функциями, могут быть удивлены, что во FreeBSD результаты не совпадают с ожидаемыми. FreeBSD не использует BIOS, и не знает о ``логическом отображении дисков в BIOS''. Это может привести к очень сложным ситуациям, особенно когда диски имеют одинаковую геометрию и содержат точную копию данных друг друга.

При использовании FreeBSD всегда восстанавливайте настройки BIOS к первоначальной нумерации перед установкой системы и оставляйте их в таком виде. Если вам понадобится переключить диски, сделайте это, но путем физического переконфигурирования, вскрыв корпус, переключив перемычки и кабели.

2.5.2 Создание слайсов с использованием FDisk

Note: Внесенные вами изменения не будут записываться на диск сразу. Если вы думаете, что сделали ошибку, и хотите начать сначала, можете использовать меню для выхода из sysinstall и попробовать еще раз или нажатием U вызвать опцию Undo (отмена). Если вы запутались и не можете выйти, просто выключите компьютер.

После начала стандартной установки в sysinstall будет показано это сообщение:

                                 Message
 In the next menu, you will need to set up a DOS-style ("fdisk")
 partitioning scheme for your hard disk. If you simply wish to devote
 all disk space to FreeBSD (overwriting anything else that might be on
 the disk(s) selected) then use the (A)ll command to select the default
 partitioning scheme followed by a (Q)uit. If you wish to allocate only
 free space to FreeBSD, move to a partition marked "unused" and use the
 (C)reate command. 
                                [  OK  ] 

                      [ Press enter or space ]

Нажмите Enter как предлагается. Будет показан список всех жестких дисков, обнаруженных ядром во время тестирования устройств. Figure 2-16 показывает пример системы с двумя IDE дисками. Они были названы ad0 и ad2.

Figure 2-16. Выберите диск для FDisk

Вы можете быть удивлены, почему устройства ad1 здесь нет. Почему оно было пропущено?

Предположим, что у вас есть два жестких диска IDE, один master на первом контроллере IDE, а второй master на втором контроллере IDE. Если FreeBSD пронумерует их в том порядке, в котором нашла, ad0 и ad1, все будет работать.

Но если вы добавите третий диск, как slave устройство на первый контроллер IDE, он станет ad1, а предыдущий ad1 станет ad2. Поскольку имена устройств (таких как ad1s1a) используются для обращения к файловым системам, вы можете вдруг обнаружить, что некоторые из ваших файловых систем больше не отображаются правильно и вам потребуется изменить конфигурацию FreeBSD.

Для обхода этой проблемы, ядро может быть настроено так, чтобы именовать IDE диски на основе их местоположения, а не порядка, в котором они были найдены. С этой схемой master диск на втором контроллере IDE будет всегда устройством ad2, если даже нет устройств ad0 или ad1.

Это конфигурация ядра FreeBSD по умолчанию, поэтому на экране показаны ad0 и ad2. У компьютера, с которого был взят этот снимок экрана, есть по одному IDE диску на обеих master каналах IDE контроллеров и ни одного диска на каналах slave.

Вы должны выбрать диск, на который хотите установить FreeBSD, и нажать [ OK ]. Запустившийся FDisk будет выглядеть примерно как Figure 2-17.

Экран FDisk разбит на три секции.

Первая секция, занимающая первые две линии экрана, показывает подробную информацию о выбранном в данный момент диске, включая его имя во FreeBSD, геометрию и общий размер диска.

Вторая секция показывает имеющиеся в данный момент на диске слайсы, где они начинаются и заканчиваются, их размер, имя, которое им дала FreeBSD, описание и подтип. На этом примере показаны два маленьких неиспользованных слайса, которые являются артефактами схемы разметки диска на PC. Также показан один большой FAT слайс, который почти всегда является диском C: в MS-DOS / Windows, и дополнительный слайс, который может содержать диски с другими буквами для MS-DOS / Windows.

Третья секция показывает команды, доступные в FDisk.

Figure 2-17. Типичные разделы fdisk перед редактированием

Ваши действия теперь будут зависеть от того, как вы хотите разбить диск на слайсы.

Если вы хотите использовать для FreeBSD весь диск (это приведет к удалению всех других данных на этом диске когда вы подтвердите sysinstall продолжение процесса установки), нажмите A, что соответствует опции Использовать весь диск (Use Entire Disk). Существующие слайсы будут удалены, и заменены на небольшую область, помеченную как неиспользуемая (unused) (это опять же артефакт разметки диска PC), и один большой слайс для FreeBSD. Когда вы сделаете это, нужно выбрать вновь созданный слайс FreeBSD используя клавиши навигации, а затем нажать S, чтобы сделать слайс загрузочным. Экран будет похож на Figure 2-18. Обратите внимание, что A в колонке Flags означает, что слайс активен и с него будет происходить загрузка.

Если вы будете удалять существующий слайс для освобождения места под FreeBSD, выберите слайс, используя клавиши навигации, и нажмите D. Затем можете нажать C, и получить приглашение на ввод размера слайса, который вы хотите создать. Введите соответствующее значение и нажмите Enter. Значение по умолчанию в этом поле означает наибольший размер слайса, который может быть выбран; это может быть наибольший непрерывный блок неразмеченного пространства или размер всего жесткого диска.

Если вы уже освободили место для FreeBSD (возможно, используя утилиту похожую на PartitionMagic®), можете нажать C для создания нового слайса. Будет также предложено ввести размер слайса, который вы хотите создать.

Figure 2-18. Разбиение в Fdisk с использованием всего диска

Когда закончите, нажмите Q. Изменения будут сохранены в sysinstall, но еще не записаны на диск.

2.5.3 Установка менеджера загрузки (Boot Manager)

Теперь вам предлагается установить менеджера загрузки. Как правило, нужно выбрать установку менеджера загрузки если:

Если FreeBSD единственная операционная система, установленная на этом компьютере, и находится на первом жестком диске, подойдет менеджер загрузки Standard. Выберите None если вы используете менеджер загрузки сторонних разработчиков, способный загрузить FreeBSD.

Сделайте выбор и нажмите Enter.

Figure 2-19. Меню менеджера загрузки Sysinstall

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

2.5.4 Создание слайсов на другом диске

Если дисков больше чем один, вернитесь к экрану выбора дисков (Select Drives) после выбора менеджера загрузки. Если вы собираетесь устанавливать FreeBSD более чем на один диск, можете выбрать другой диск и повторить процесс разбиения на слайсы с использованием FDisk.

Important: Если вы устанавливаете FreeBSD не на первый жесткий диск, потребуется установить менеджер загрузки FreeBSD на оба диска.

Figure 2-20. Выход из выбора диска

Клавиша Tab переключает между последним выбранным диском, [ OK ], и [ Cancel ].

Нажмите Tab один раз для выбора [ OK ], затем нажмите Enter для продолжения установки.

2.5.5 Создание разделов с помощью Disklabel

Теперь вы должны создать несколько разделов внутри каждого только что созданного слайса. Запомните, что у каждого раздела есть буква с a до h, а разделы b, c, и d имеют соглашения, которых вы должны придерживаться.

Некоторые приложения могут выигрывать от определенных схем разделов, особенно если у вас разделы на более чем одном диске. Тем не менее, для вашей первой установки FreeBSD не нужно слишком углубляться в принципы разбиения диска. Более важно установить FreeBSD и начать ее использовать. Вы всегда можете переустановить FreeBSD для изменения схемы разделов, когда поближе познакомитесь с операционной системой.

Эта схема показывает четыре раздела -- один для подкачки и три для файловых систем.

Table 2-2. Планирование разделов для первого диска

РазделФайловая системаРазмерОписание
a/100 MBКорневая файловая система. Любая другая файловая система будет смонтирована на эту. 100 MB это подходящий размер для этой файловой системы. Вы не будете хранить на ней слишком много данных, а обычная установка FreeBSD разместит здесь около 40 MB данных. Оставшееся пространство используется для временных файлов, а также оставляет возможность расширения для будущих версий FreeBSD, которым может понадобится больше места в /.
bN/A2-3 x RAM

Здесь находится раздел подкачки. Выбор правильного размера раздела подкачки это немного искусство. Хороший практический способ выбрать размер подкачки это установить его равным двум или трем размерам доступной физической памяти (RAM). Должно быть хотя бы 64 MB подкачки; если в компьютере меньше чем 32 MB памяти -- установите размер подкачки равным 64 MB.

Если у вас больше одного диска, можно расположить подкачку на каждом диске. FreeBSD будет использовать каждый диск, что серьезно увеличит скорость подкачки. В этом случае, определите общий размер подкачки, который вам нужен (например, 128 MB), и поделите его на число имеющихся дисков (например, два) для определения размера разделов подкачки, которые нужно разместить на каждом вашем диске, в этом примере 64 MB на диск.

e/var50 MBКаталог /var содержит файлы, которые постоянно меняются; логи и другие административные файлы. Многие из этих файлов интенсивно читаются и записываются в процессе ежедневной работы FreeBSD. Размещение их на отдельной файловой системе позволяет FreeBSD оптимизировать доступ к этим файлам без затрагивания других каталогов, не имеющих такой же модели доступа.
f/usrОстальная часть дискаВсе другие файлы как правило хранятся в каталоге /usr и его подкаталогах.

Если вы устанавливаете FreeBSD более чем на один диск, вы должны также создать разделы в других слайсах, которые настроили. Простейший путь сделать это -- создать два раздела на каждом диске, один для подкачки, а другой для файловой системы.

Table 2-3. Разметка разделов для остальных дисков

РазделФайловая системаРазмерОписание
bN/AСмотрите описаниеКак уже обсуждалось, вы можете распространить подкачку на каждый диск. Даже если раздел a свободен, соглашение говорит о том, что подкачка находится на разделе b.
e/disknОстальная часть дискаОстальная часть диска занята одним большим разделом. Он легко может быть помещен на раздел a вместо раздела e. Однако, соглашение говорит что раздел a зарезервирован на слайсе для корневой (/) файловой системы. вы можете не следовать этому соглашению, но программа sysinstall будет ему следовать, поэтому приняв его, вы сделаете установку несколько проще. вы можете монтировать эти файловые системы к любой точке; в этом примере предлагается смонтировать их как каталоги /diskn, где n это номер, который уникален для каждого диска. Но вы можете использовать другую схему, если захотите.

Теперь, выбрав разметку разделов, можете приступить к их созданию в sysinstall. Вы увидите это сообщение:

                                 Message
 Now, you need to create BSD partitions inside of the fdisk
 partition(s) just created. If you have a reasonable amount of disk
 space (200 MB or more) and don't have any special requirements, simply
 use the (A)uto command to allocate space automatically. If you have
 more specific needs or just don't care for the layout chosen by
 (A)uto, press F1 for more information on manual layout.  

                                [  OK  ]
                          [ Press enter or space ]

Нажмите Enter для запуска редактора разделов FreeBSD, называемого Disklabel.

Figure 2-21 показывает экран только что запущенного Disklabel. Экран поделен на три раздела.

Первые несколько линий показывают имя диска, с которым вы сейчас работаете и слайс, содержащий раздел который вы создаете (здесь Disklabel называет это именем раздела (Partition name) вместо имени слайса). Этот экран также показывает объем свободного пространства на слайсе; т.е. пространство, выделенное под слайс, но еще не отданное под раздел.

В центре экрана показаны уже созданные разделы, имена файловых систем, содержащихся в разделах, их размер и некоторые опции, применяемые при создания файловых систем.

Нижняя треть экрана показывает управляющие клавиши, работающие в Disklabel.

Figure 2-21. Редактор Sysinstall Disklabel

Disklabel может автоматически создать разделы и присвоить им размеры по умолчанию. Попробуйте это, нажав A. Вы увидите экран как на Figure 2-22. В зависимости от размера диска, значения по умолчанию могут подходить или не подходить вам. Это не имеет значения, если вы не принимаете их.

Note: Начиная с FreeBSD 4.5, по умолчанию под каталог /tmp выделяется собственный раздел вместо использования части раздела /. Это помогает избежать заполнения раздела / временными файлами.

Figure 2-22. Редактор Sysinstall Disklabel с установками по умолчанию

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

Для создания первого раздела (a, монтируемого как / -- root), убедитесь, что выбран соответствующий слайс вверху экрана и нажмите C. Появится диалог, предлагающий выбрать размер нового раздела (как показано в Figure 2-23). Вы можете ввести количество блоков диска, или количество мегабайт с M после номера, или гигабайт с G, или цилиндров с C.

Note: Начиная с FreeBSD 5.X, пользователи могут: выбирать UFS2, используя опцию Custom Newfs (Z), использовать опцию Auto Defaults и изменять параметры с помощью опции Custom Newfs, или добавлять опцию -O 2 в процессе создания раздела. Не забудьте добавить -U для включения SoftUpdates если вы используете опциюCustom Newfs!

Figure 2-23. Свободное место для корневого раздела

Размер по умолчанию задан для создания корневого раздела на весь слайс. Если вы используете размеры разделов, описанные ранее в примере, удалите это значение используя Backspace, а затем введите 64M, как показано на Figure 2-24. Затем нажмите [ OK ].

Figure 2-24. Редактирование размера корневого раздела

После указания размера раздела вам будет задан вопрос, должен ли этот раздел содержать файловую систему или раздел подкачки. Диалог показан на Figure 2-25. Первый раздел будет содержать файловую систему, поэтому проверьте, что выбрана FS и нажмите Enter.

Figure 2-25. Выбор типа корневого раздела

Наконец, поскольку вы создаете файловую систему, нужно сказать Disklabel где файловая система будет смонтирована. Диалог показан на Figure 2-26. Точка монтирования корневой файловой системы /, поэтому введите /, и нажмите Enter.

Figure 2-26. Выбор точки монтирования корневой файловой системы

На экране будет показан вновь созданный раздел. Вам нужно повторить эту процедуру для других разделов. При создании раздела подкачки вопроса про точку монтирования не будет, поскольку раздел подкачки никогда не монтируется. Когда будете создавать последний раздел, /usr, можете оставить предложенный размер как есть, чтобы использовать весь остаток слайса.

Последний экран FreeBSD редактора DiskLabel будет похож на Figure 2-27, хотя ваш выбор значений может быть другим. Нажмите Q, чтобы выйти.

Figure 2-27. Редактор Sysinstall Disklabel

Этот, и другие документы, могут быть скачаны с ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

По вопросам связанными с FreeBSD, прочитайте документацию прежде чем писать в <questions@FreeBSD.org>.
По вопросам связанным с этой документацией, пишите <doc@FreeBSD.org>.
По вопросам связанным с русским переводом документации, пишите <frdp@FreeBSD.org.ua>.


Руководство FreeBSDPrevChapter 10 БезопасностьNext

10.7 Kerberos5

Предоставил Tillman Hodgson. Оригинальный материал предоставил Mark Murray.

Все релизы FreeBSD после FreeBSD-5.1 включают поддержку только Kerberos5. Таким образом, Kerberos5 это единственная включаемая в поставку версия и его конфигурация похожа на KerberosIV во многих аспектах. Эта информация применима только к Kerberos5 из релизов после FreeBSD-5.0. Пользователи, желающие использовать пакет KerberosIV, могут установить его из порта security/krb4.

Kerberos это дополнительная сетевая система/протокол, позволяющая пользователям авторизоваться через защищенные сервисы на защищенном сервере. Такие сервисы как удаленный вход, удаленное копирование, защищенное копирование файлов между системами и другие задачи с высоким риском становятся допустимо безопасными и более контролируемыми.

Kerberos может быть описана как прокси система идентификации-проверки. Она также может быть описана как защищенная внешняя система аутентификации. Kerberos предоставляет только одну функцию -- защищенную аутентификацию пользователей сети. Он не предоставляет Он не предоставляет функций авторизации (что разрешено делать пользователям) или функций аудита (какой пользователь что делает). После того, как клиент и сервер использовали Kerberos для идентификации, они могут зашифровать все соединения для гарантирования собственной безопасности и целостности данных.

Следовательно крайне рекомендуется использовать Kerberos с другими методами безопасности, предоставляющими сервисы авторизации и аудита.

Последующие инструкции могут использоваться в качестве руководства по настройке Kerberos, поставляемого с FreeBSD. Тем не менее, вам потребуется обратиться к соответствующим страницам справочника за полным описанием.

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

Note: Используйте действующие имена доменов при настройке Kerberos даже если вы будете использовать его во внутренней сети. Это позволит избежать проблем с DNS и гарантирует возможность связи с Kerberos под другими идентификаторами.

10.7.1 История

Kerberos был создан MIT в качестве решения проблем с безопасностью сети. Протокол Kerberos использует стойкую криптографию, так что клиент может идентифицироваться на сервере (и обратно) через незащищенное сетевое соединение.

Kerberos это и имя сетевого протокола аутентификации и общий термин для описания программ, где он реализован (например, Kerberos telnet). Текущая версия протокола 5 описана в RFC 1510.

Доступно несколько свободных реализаций этого протокола, работающих на множестве операционных систем. Massachusetts Institute of Technology (MIT), где Kerberos был первоначально разработан, продолжает разрабатывать собственный пакет Kerberos. Он обычно использовался в США как криптографический продукт, и в этом качестве попадал под действие ограничений на экспорт. MIT Kerberos доступен в виде порта (security/krb5). Heimdal Kerberos это другая реализация версии 5, которая разрабатывалась исключительно вне США для обхода экспортных ограничений (и поэтому часто включалась в некоммерческие реализации UNIX®). Heimdal Kerberos доступен в виде порта (security/heimdal), его минимальный комплект включен в базовую установку FreeBSD.

В целях получения наибольшей аудитории, в этих инструкциях предполагается использование Heimdal включаемого в FreeBSD.

10.7.2 Настройка Heimdal KDC

Центр распространения ключей (Key Distribution Center, KDC) это централизованный сервис аутентификации, предоставляемый Kerberos -- это компьютер, который предоставляет доступ через Kerberos. KDC считается доверяемым всеми другими компьютерами с определенным идентификатором Kerberos и поэтому к нему предъявляются высокие требования безопасности.

Имейте ввиду, что хотя работа сервера Kerberos требует очень немного вычислительных ресурсов, из соображений безопасности для него рекомендуется отдельный компьютер, работающий только в качестве KDC.

Перед началом настройки KDC, убедитесь что в файле /etc/rc.conf содержатся правильные настройки для работы в качестве KDC (вам может потребоваться изменить пути в соответствии с собственной системой):

kerberos5_server_enable="YES"
kadmind5_server_enable="YES"
kerberos_stash="YES"

Note: Параметр kerberos_stash существует только в FreeBSD 4.X.

Затем приступим к редактированию файла настройки Kerberos, /etc/krb5.conf:

[libdefaults]
    default_realm = EXAMPLE.ORG
[realms]
    EXAMPLE.ORG = {
        kdc = kerberos.example.org
    }
[domain_realm]
    .example.org = EXAMPLE.ORG

Обратите внимание что в файле /etc/krb5.conf подразумевается наличие у KDC полного имени kerberos.example.org. Вам потребуется добавить CNAME (синоним) к файлу зоны, если у KDC другое имя.

Note: Для больших сетей с правильно настроенным сервером BIND DNS пример выше может быть урезан до:

[libdefaults]
      default_realm = EXAMPLE.ORG

Со следующими строками, добавленными в файл зоны example.org:

_kerberos._udp      IN  SRV     01 00 88 kerberos.example.org.
_kerberos._tcp      IN  SRV     01 00 88 kerberos.example.org.
_kpasswd._udp       IN  SRV     01 00 464 kerberos.example.org.
_kerberos-adm._tcp  IN  SRV     01 00 749 kerberos.example.org.
_kerberos           IN  TXT     EXAMPLE.ORG.

Создадим теперь базу данных Kerberos. Эта база данных содержит ключи всех основных хостов, зашифрованных с помощью главного пароля. Вам не требуется помнить этот пароль, он хранится в файле (/var/heimdal/m-key). Для создания главного ключа запустите kstash и введите пароль.

Как только будет создан главный ключ, вы можете инициализировать базу данных с помощью программы kadmin с ключом -l (означающим ``local''). Этот ключ сообщает kadmin обращаться к файлам базы данных непосредственно вместо использования сетевого сервиса kadmind. Это помогает решить ``проблему курицы и яйца'', когда обращение идет к еще не созданной базе данных. Как только вы увидите приглашение kadmin, используйте команду init для создания базы данных идентификаторов.

Наконец, оставаясь в приглашении kadmin, создайте первую запись с помощью команды add. Оставьте неизменными параметры по умолчанию, вы всегда сможете изменить их позже с помощью команды modify. Обратите внимание, что вы всегда можете использовать команду ? для просмотра доступных параметров.

Пример создания базы данных показан ниже:

# kstash
Master key: xxxxxxxx
Verifying password - Master key: xxxxxxxx

# kadmin -l
kadmin> init EXAMPLE.ORG
Realm max ticket life [unlimited]:
kadmin> add tillman
Max ticket life [unlimited]:
Max renewable life [unlimited]:
Attributes []:
Password: xxxxxxxx
Verifying password - Password: xxxxxxxx

Теперь пришло время запустить сервисы KDC. Выполните команды /etc/rc.d/kerberos start и /etc/rc.d/kadmind start для запуска сервисов. Ни один из поддерживающих Kerberos даемонов на этот момент запущен не будет, но у вас должна быть возможность убедиться в том, что KDC функционирует путем получения списка доступа для пользователя, которого вы только что самостоятельно создали из командной строки самого KDC:

% k5init tillman
tillman@EXAMPLE.ORG's Password:

% k5list
Credentials cache: FILE:/tmp/krb5cc_500
	Principal: tillman@EXAMPLE.ORG

  Issued           Expires          Principal
Aug 27 15:37:58  Aug 28 01:37:58  krbtgt/EXAMPLE.ORG@EXAMPLE.ORG

10.7.3 Сервер Kerberos с сервисами Heimdal

Для начала нам потребуется копия файла настройки Kerberos, /etc/krb5.conf. Просто скопируйте его с KDC на клиентский компьютер безопасным способом (используя сетевые утилиты, такие как scp(1), или физически, с помощью дискеты).

Затем вам понадобится файл /etc/krb5.keytab. Это основное различие между сервером, поддерживающим Kerberos и рабочими станциями -- на сервере должен быть файл keytab. В этом файле находится центральный ключ сервера, который позволяет KDC проверять все другие идентификаторы. Он должен быть помещен на сервер безопасным способом, поскольку безопасность сервера может быть нарушена, если ключ станет общедоступен. Это означает, что его передача через незашифрованный канал, такой как FTP - очень плохая идея.

Обычно перенос файла keytab на сервер производится с помощью программы kadmin. Это удобно, поскольку вам потребуется также создать запись хоста (KDC часть krb5.keytab) с помощью kadmin.

Обратите внимание, что должны быть уже зарегистрированы в системе и необходимо наличие прав на использование интерфейса kadmin в файле kadmind.acl. Обратитесь к разделу ``Remote administration'' в info страницах Heimdal (info heimdal) за деталями по составлению списка доступа. Если вы не хотите включать удаленный доступ kadmin, можете просто подключиться к KDC через защищенное соединение (локальную консоль, ssh(1) или Kerberos telnet(1)) и выполнять администрирование локально с помощью kadmin -l.

После добавления файла /etc/krb5.conf, вы можете использовать kadmin с сервера Kerberos. Команда add --random-key позволит вам добавить запись для сервера, а команда ext позволит перенести эту запись в собственный keytab файл сервера. Например:

# kadmin
kadmin> add --random-key host/myserver.example.org
Max ticket life [unlimited]:
Max renewable life [unlimited]:
Attributes []:
kadmin> ext host/myserver.example.org
kadmin> exit

Обратите внимание, что команда ext (сокращение от ``extract'') сохраняет полученный ключ в файле /etc/krb5.keytab по умолчанию.

Если на KDC не запущен kadmind (возможно по соображениям безопасности) и вы не можете получить доступ к kadmin удаленно, возможно добавление записи хоста (host/myserver.EXAMPLE.ORG) непосредственно на KDC с последующим извлечением ее во временный файл (и перезаписью /etc/krb5.keytab на KDC) примерно так:

# kadmin
kadmin> ext --keytab=/tmp/example.keytab host/myserver.example.org
kadmin> exit

Затем вы можете скопировать keytab на сервер защищенным способом (например, используя scp или дискету). Убедитесь, что используемое имя keytab не совпадает с именем по умолчанию во избежание перезаписывания keytab на KDC.

Теперь ваш сервер может связываться с KDC (добавлен файл krb5.conf) и идентифицировать себя (добавлен файл krb5.keytab). Теперь вы готовы к включению некоторых сервисов Kerberos. В этом примере мы включим сервис telnet, поместив в /etc/inetd.conf нижеприведенную строку и перезапустив сервис inetd(8) командой /etc/rc.d/inetd restart:

telnet    stream  tcp     nowait  root    /usr/libexec/telnetd  telnetd -a user

Очень важно установить ключ -a (тип аутентификации) в user. Обратитесь к странице справочника telnetd(8) за подробной информацией.

10.7.4 Клиент Kerberos с Heimdal

Настройка клиентского компьютера почти тривиально проста. Как только настройка Kerberos закончена, вам потребуется только файл настройки Kerberos, /etc/krb5.conf. Просто скопируйте его безопасным способом на клиентский компьютер с KDC.

Протестируйте клиентский компьютер, попытавшись использовать kinit, klist, и kdestroy для получения, отображения и удаления списка доступа. Соединитесь с Kerberos севером используя клиент Kerberos, если соединение не работает и получение доступа является проблемой, это скорее всего проблема сервера, а не клиента или KDC.

При тестировании приложения вроде telnet, попробуйте использовать программу перехвата пакетов (такую как tcpdump(1)), чтобы убедиться, что ваш пароль не передается незашифрованным. Попробуйте использовать telnet с параметром -x, чтобы зашифровать весь поток данных (подобно ssh).

Основные клиентские приложения Kerberos (традиционно называющиеся kinit, klist, kdestroy, и kpasswd) находятся в базовой установке FreeBSD. Обратите внимание, что в FreeBSD версий до 5.0 они были переименованы в k5init, k5list, k5destroy, k5passwd, и k5stash (хотя их обычно использовали лишь однократно).

Различные неосновные клиентские приложения Kerberos также устанавливаются по умолчанию. Здесь проявляется ``минимальность'' базовой установки Heimdal: telnet это единственное приложение, поддерживающее Kerberos.

Порт Heimdal добавляет некоторые отсутствующие клиентские приложения: поддерживающие Kerberos версии ftp, rsh, rcp, rlogin, и некоторые другие реже используемые программы. Порт MIT также содержит полный пакет клиентских приложений Kerberos.

10.7.5 Пользовательские файлы настройки: .k5login и .k5users

Учетные записи пользователя в Kerberos (например tillman@EXAMPLE.ORG) обычно связаны с локальными учетными записями (например с локальной учетной записью6 tillman). Клиентские приложения, такие как telnet, обычно не требуют указания имени пользователя или учетной записи.

Тем не менее, время от времени вам может потребоваться дать доступ к локальной учетной записи кому-то, у кого нет соответствующей учетной записи Kerberos. Например, пользователю tillman@EXAMPLE.ORG может потребоваться доступ к локальной учетной записи webdevelopers. Другим учетным записям также может потребоваться доступ к этой локальной учетной записи.

Файлы .k5login и .k5users, помещенные в домашний каталог пользователя, могут быть использованы подобно действенной комбинации .hosts и .rhosts для решения этой проблемы. Например, файл .k5login со следующим содержанием:

tillman@example.org
jdoe@example.org

помещен в домашний каталог локального пользователя webdevelopers, то обе упомянутые учетные записи получат доступ к этой учетной записи без необходимости наличия общего пароля.

Рекомендуется прочитать страницу справочника по этим командам. Обратите внимание, что страница справочника о ksu содержит информацию по .k5users.

10.7.6 Подсказки, советы и решение проблем с Kerberos

10.7.7 Отличия от порта MIT

Основное различие между установками MIT и Heimdal относится к программе kadmin, которая имеет другой (но эквивалентный) набор команд и использует другой протокол. Если ваш KDC работает на MIT, вы не сможете использовать kadmin для удаленного администрирования KDC (и наоборот, по этой же причине).

Опции командной строки клиентов также могут немного отличаться для одинаковых задач. Рекомендуется следование инструкциям на MIT Kerberos веб сайте (http://web.mit.edu/Kerberos/www/). Будьте внимательны при определении PATH: порт MIT устанавливается по умолчанию в /usr/local/, и если в PATH вначале указаны системные каталоги, вместо приложений MIT могут быть запущены системные приложения.

Note: С портом MIT security/krb5, предоставляемым FreeBSD, убедитесь что файл /usr/local/share/doc/krb5/README.FreeBSD установлен портом, если вы хотите понять почему вход через telnetd и klogind иногда происходит так странно. Наиболее важно, исправление ``incorrect permissions on cache file'' требует использования бинарного файла login.krb5 для аутентификации, чтобы права на переданное удостоверение передавались правильно.

10.7.8 Преодоление ограничений, обнаруженных в Kerberos

10.7.8.1 Kerberos это все или ничего

Каждый сервис, работающий в сети, должен быть модифицирован для работы с Kerberos (или другим способом защищен от атак по сети) или удостоверения пользователей могут быть украдены или использованы повторно. В качестве примера может быть приведено использование Kerberos версий оболочек для удаленной работы (например через rsh и telnet), при наличии POP3 сервера, получающего пароли в незашифрованном виде.

10.7.8.2 Kerberos предназначен для однопользовательских рабочих станций

В многопользовательской среде Kerberos менее безопасен. Это потому, что он хранит билеты в каталоге /tmp, которая доступна для чтения всем. Если пользователь работает с несколькими другими пользователями одновременно на одном компьютере (т.е. в многопользовательской среде), возможна кража (копирование) билета другим пользователем.

Решить проблему можно с помощью параметра командной строки -c или (предпочтительно) с помощью переменной окружения KRB5CCNAME, но это делается редко. Для преодоления ограничения достаточно сохранять билет в домашнем каталоге пользователя и использовать простые ограничения на доступ к файлам.

10.7.8.3 От KDC зависит вся система

Архитектура системы такова, что KDC должен быть максимально защищен, поскольку главный пароль базы данных содержится в нем. На KDC не должно быть запущено никаких других сервисов и он должен быть защищен физически. Опасность велика, поскольку Kerberos хранит все пароли зашифрованными одним ключом (``главным'' ключом), который хранится в файле на KDC.

Хорошей новостью является то, что кража главного ключа не станет такой проблемой, как может показаться. Главный ключ используется только для шифрования базы данных Kerberos и в качестве seed для генератора случайных чисел. Поскольку доступ к KDC защищен, атакующий мало что сможет сделать с главным ключом.

Кроме того, если KDC станет недоступен (возможно по причине атак DoS или проблем в сети) сетевые сервисы будет невозможно использовать, поскольку аутентификация не может быть выполнена. Уменьшить последствия можно при наличии нескольких KDC (один главный и один или несколько резервных) и с аккуратно реализованной резервной аутентификацией (отлично подойдет PAM).

10.7.8.4 Недостатки Kerberos

Kerberos позволяет пользователям, хостам и сервисам производить аутентификацию друг друга. В нем нет механизма аутентификации KDC для пользователей, хостов или сервисов. Это означает, что поддельный kinit (например) может записывать все имена пользователей и паролей. Помочь решить проблему может security/tripwire или другой инструмент проверки целостности файловой системы.

10.7.9 Ресурсы и информация для дальнейшего изучения

Этот, и другие документы, могут быть скачаны с ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

По вопросам связанными с FreeBSD, прочитайте документацию прежде чем писать в <questions@FreeBSD.org>.
По вопросам связанным с этой документацией, пишите <doc@FreeBSD.org>.
По вопросам связанным с русским переводом документации, пишите <frdp@FreeBSD.org.ua>.


Руководство FreeBSDPrevChapter 10 БезопасностьNext

10.6 KerberosIV

Предоставил Mark Murray. Оригинальный текст предоставил Mark Dapoz.

Kerberos это сетевая дополнительная система/протокол, которая делает возможной аутентификацию пользователей через сервисы на защищенном сервере. Такие сервисы, как удаленный вход, удаленное копирование, защищенное копирование файлов между системами и другие задачи с высоким риском становятся допустимо безопасными и более контролируемыми.

Последующие инструкции могут использоваться в качестве руководства по настройке поставляемого с FreeBSD Kerberos. Тем не менее, вам могут потребоваться страницы справочника полного дистрибутива.

10.6.1 Установка KerberosIV

Kerberos это опциональный компонент FreeBSD. Простейший способ установки этой программы это выбор krb4 или krb5 из sysinstall во время первой установки FreeBSD. Будет установлен ``eBones'' (KerberosIV) или ``Heimdal'' (Kerberos5) вариант Kerberos. Включение этих реализаций объясняется тем, что они разработаны вне США/Канады и доступны вне этих стран, поскольку на них не влияют ограничения на экспорт криптографического кода из США.

Кроме того, реализация MIT Kerberos доступна из коллекции портов в виде пакета security/krb5.

10.6.2 Создание базы данных

Это необходимо сделать только на сервере Kerberos. Во-первых, убедитесь что не осталось старой базы данных Kerberos. Войдите в каталог /etc/kerberosIV и убедитесь, что в нем находятся только эти файлы:

# cd /etc/kerberosIV
# ls
README		krb.conf        krb.realms

Если присутствуют еще какие-то файлы (такие как principal.* или master_key), используйте команду kdb_destroy для удаления старой базы данных Kerberos, или, если Kerberos не запущен, просто удалите эти файлы.

Затем отредактируйте файлы krb.conf и krb.realms, введя ваши данные. В этом примере уникальный идентификатор EXAMPLE.COM, сервер grunt.example.com. Отредактируем или создадим файл krb.conf:

# cat krb.conf
EXAMPLE.COM
EXAMPLE.COM grunt.example.com admin server
CS.BERKELEY.EDU okeeffe.berkeley.edu
ATHENA.MIT.EDU kerberos.mit.edu
ATHENA.MIT.EDU kerberos-1.mit.edu
ATHENA.MIT.EDU kerberos-2.mit.edu
ATHENA.MIT.EDU kerberos-3.mit.edu
LCS.MIT.EDU kerberos.lcs.mit.edu
TELECOM.MIT.EDU bitsy.mit.edu
ARC.NASA.GOV trident.arc.nasa.gov

В этом примере другие идентификаторы введены для иллюстрации настройки c несколькими хостами. С целью упрощения настройки вы можете не включать их.

Первая строка содержит идентификатор, под которым работает эта система. Остальные строки связывают идентификаторы с именами хостов. Сначала указывается идентификатор, затем хост под этим идентификатором, работающий как ``центр распространения ключей''. Слова admin server с последующим именем хоста означают, что этот хост также является сервером администрирования базы данных. За дальнейшей информацией об этих терминах обратитесь к страницам справочника по Kerberos.

Мы добавили grunt.example.com к идентификатору EXAMPLE.COM и кроме того сопоставили всем хостам в домене .example.com идентификатор EXAMPLE.COM. Файл krb.realms будет выглядеть так:

# cat krb.realms
grunt.example.com EXAMPLE.COM
.example.com EXAMPLE.COM
.berkeley.edu CS.BERKELEY.EDU
.MIT.EDU ATHENA.MIT.EDU
.mit.edu ATHENA.MIT.EDU

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

В первой строке определенная система сопоставляется с идентификатором. В остальных строках показано, сопоставить идентификатору остальные системы определенного поддомена.

Теперь мы готовы к созданию базы данных. Потребуется всего лишь запустить сервер Kerberos (или центр распространения ключей). Используйте для этого kdb_init:

# kdb_init
Realm name [default  ATHENA.MIT.EDU ]: EXAMPLE.COM
You will be prompted for the database Master Password.
It is important that you NOT FORGET this password.
		
Введите главный ключ Kerberos: 

Теперь мы должны сохранить ключ, чтобы сервера на локальных компьютерах могли его взять. Используйте для этого команду kstash:

# kstash

Enter Kerberos master key:

Current Kerberos master key version is 1.

Master key entered. BEWARE!

Этой командой зашифрованный главный пароль сохранен в /etc/kerberosIV/master_key.

10.6.3 Запуск Kerberos

Для каждой системы, защищаемой Kerberos, в базу данных должны быть добавлены две записи. Это kpasswd и rcmd. Они добавляются вместе с именем системы.

Эти даемоны, kpasswd и rcmd позволяют другим системам изменять пароли Kerberos и запускать такие команды как rcp(1), rlogin(1), rsh(1).

Теперь добавим эти записи:

# kdb_edit
Opening database...

Enter Kerberos master key:

Current Kerberos master key version is 1.

Master key entered.  BEWARE!
Previous or default values are in [brackets] ,
enter return to leave the same, or new value.

Principal name: passwd
Instance: grunt

<Not found>, Create [y] ? y

Principal: passwd, Instance: grunt, kdc_key_ver: 1
New Password:                    <---- enter RANDOM here
Verifying password

New Password: <---- enter RANDOM here

Random password [y] ? y

Principal's new key version = 1
Expiration date (enter yyyy-mm-dd) [ 2000-01-01 ] ?
Max ticket lifetime (*5 minutes) [ 255 ] ?
Attributes [ 0 ] ?
Edit O.K.
Principal name: rcmd
Instance: grunt

<Not found>, Create [y] ?

Principal: rcmd, Instance: grunt, kdc_key_ver: 1
New Password:		<---- enter RANDOM here
Verifying password

New Password:           <---- enter RANDOM here

Random password [y] ?

Principal's new key version = 1
Expiration date (enter yyyy-mm-dd) [ 2000-01-01 ] ?
Max ticket lifetime (*5 minutes) [ 255 ] ?
Attributes [ 0 ] ?
Edit O.K.
Principal name:         <---- null entry here will cause an exit

10.6.4 Создание файла настройки сервера

Теперь необходимо создать все записи сервисов, которые были определены для каждого компьютера. Используем для этого команду ext_srvtab. Будет создан файл, который должен быть скопирован или перемещен безопасным способом в каталог /etc/kerberosIV каждого Kerberos клиента. Этот файл должен присутствовать на каждом сервере и клиенте, он необходим для работы Kerberos.

# ext_srvtab grunt
Enter Kerberos master key:
		
Current Kerberos master key version is 1.

Master key entered. BEWARE!
Generating 'grunt-new-srvtab'....

Эта команда создаст временный файл, который должен быть переименован в srvtab, чтобы серверы смогли обратиться к нему. Используйте команду mv(1) для перемещения его в исходной системе:

# mv grunt-new-srvtab srvtab

Если файл предназначен для клиентской системы, и сеть не безопасна, скопируйте client-new-srvtab на съемный носитель и перенесите файл с его помощью. Убедитесь, что переименовали его в srvtab в каталоге /etc/kerberosIV клиента, и что режим доступа к нему 600:

# mv grumble-new-srvtab srvtab
# chmod 600 srvtab

10.6.5 Пополнение базы данных

Теперь необходимо добавить в базу данных пользователей. Во-первых, создадим запись для пользователя jane. Используйте команду kdb_edit:

# kdb_edit
Opening database...

Enter Kerberos master key:

Current Kerberos master key version is 1.

Master key entered.  BEWARE!
Previous or default values are in [brackets] ,
enter return to leave the same, or new value.

Principal name: jane
Instance:

<Not found>, Create [y] ? y

Principal: jane, Instance: , kdc_key_ver: 1
New Password:                <---- enter a secure password here
Verifying password

New Password:                <---- re-enter the password here
Principal's new key version = 1
Expiration date (enter yyyy-mm-dd) [ 2000-01-01 ] ?
Max ticket lifetime (*5 minutes) [ 255 ] ?
Attributes [ 0 ] ?
Edit O.K.
Principal name:		   <---- null entry here will cause an exit

10.6.6 Тестирование всей системы

Во-первых, запустите даемоны Kerberos. При правильном редактировании файла /etc/rc.conf они запустятся автоматически при перезагрузке. Это необходимо только на сервере Kerberos. Клиенты Kerberos получат все необходимые данные из каталога /etc/kerberosIV.

# kerberos &
Kerberos server starting
Sleep forever on error
Log file is /var/log/kerberos.log
Current Kerberos master key version is 1.

Master key entered. BEWARE!

Current Kerberos master key version is 1
Local realm: EXAMPLE.COM
# kadmind -n &
KADM Server KADM0.0A initializing
Please do not use 'kill -9' to kill this job, use a
regular kill instead

Current Kerberos master key version is 1.

Master key entered.  BEWARE!

Теперь для получения доступа через созданного пользователя jane используйте kinit:

% kinit jane
MIT Project Athena (grunt.example.com)
Kerberos Initialization for "jane"
Password: 

Попробуйте просмотреть имеющиеся данные с помощью klist:

% klist
Ticket file:    /tmp/tkt245
Principal:      jane@EXAMPLE.COM

  Issued           Expires          Principal
Apr 30 11:23:22  Apr 30 19:23:22  krbtgt.EXAMPLE.COM@EXAMPLE.COM

Теперь попробуйте изменить пароль с помощью passwd(1), чтобы убедиться, что даемон kpasswd может получить информацию из базы данных Kerberos:

% passwd
realm EXAMPLE.COM
Old password for jane:
New Password for jane:
Verifying password
New Password for jane:
Password changed.

10.6.7 Включение su

Kerberos позволяет назначить каждому пользователю, который нуждается в привилегиях root, свой собственный пароль su(1). Необходимо добавить учетную запись, которой разрешено получать root доступ через su(1). Это делается путем связывания учетной записи root с пользовательской учетной записью. Создадим в базе данных Kerberos запись jane.root с помощью kdb_edit:

# kdb_edit
Opening database...

Enter Kerberos master key:

Current Kerberos master key version is 1.

Master key entered.  BEWARE!
Previous or default values are in [brackets] ,
enter return to leave the same, or new value.

Principal name: jane
Instance: root

<Not found>, Create [y] ? y

Principal: jane, Instance: root, kdc_key_ver: 1
New Password:                    <---- enter a SECURE password here
Verifying password

New Password:    	 	 <---- re-enter the password here

Principal's new key version = 1
Expiration date (enter yyyy-mm-dd) [ 2000-01-01 ] ?
Max ticket lifetime (*5 minutes) [ 255 ] ? 12 <--- Keep this short!
Attributes [ 0 ] ?
Edit O.K.
Principal name:		         <---- null entry here will cause an exit

Теперь проверим работоспособность этой записи:

# kinit jane.root
MIT Project Athena (grunt.example.com)
Kerberos Initialization for "jane.root"
Password:

Необходимо добавить пользователя к root файлу .klogin:

# cat /root/.klogin
jane.root@EXAMPLE.COM

Теперь попробуйте выполнить su(1):

% su
Password:

и посмотрите на имеющиеся данные:

# klist
Ticket file:	/tmp/tkt_root_245
Principal:      jane.root@EXAMPLE.COM

  Issued           Expires          Principal
May  2 20:43:12  May  3 04:43:12  krbtgt.EXAMPLE.COM@EXAMPLE.COM

10.6.8 Использование других команд

В примере выше мы создали запись (principal) jane с доступом к root (instance). Она основана на пользователе с таким же именем, как и идентификатор, что принято Kerberos по умолчанию; <principal>.<instance> в форме <username>.root позволяет использовать su(1) для доступа к root, если соответствующие записи находятся в файле .klogin домашнего каталога root:

# cat /root/.klogin
jane.root@EXAMPLE.COM

Подобно этому, если в файле .klogin из домашнего каталога пользователя есть строки в форме:

% cat ~/.klogin
jane@EXAMPLE.COM
jack@EXAMPLE.COM

это позволит любому с идентификатором EXAMPLE.COM, кто аутентифицировался как jane или jack (с помощью команды kinit, см. выше) получить доступ к учетной пользователя jane или файлам этой системы (grunt) через rlogin(1), rsh(1) или rcp(1).

Например, jane может входить в другую систему используя Kerberos:

% kinit
MIT Project Athena (grunt.example.com)
Password:
% rlogin grunt
Last login: Mon May  1 21:14:47 from grumble
Copyright (c) 1980, 1983, 1986, 1988, 1990, 1991, 1993, 1994
        The Regents of the University of California.   All rights reserved.

FreeBSD BUILT-19950429 (GR386) #0: Sat Apr 29 17:50:09 SAT 1995

Или jack входит в учетную запись jane's на этом же компьютере (файл .klogin jane настроен как показано выше, и в Kerberos настроена учетная запись jack):

% kinit
% rlogin grunt -l jane
MIT Project Athena (grunt.example.com)
Password:
Last login: Mon May  1 21:16:55 from grumble
Copyright (c) 1980, 1983, 1986, 1988, 1990, 1991, 1993, 1994
        The Regents of the University of California.   All rights reserved.
FreeBSD BUILT-19950429 (GR386) #0: Sat Apr 29 17:50:09 SAT 1995

Этот, и другие документы, могут быть скачаны с ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

По вопросам связанными с FreeBSD, прочитайте документацию прежде чем писать в <questions@FreeBSD.org>.
По вопросам связанным с этой документацией, пишите <doc@FreeBSD.org>.
По вопросам связанным с русским переводом документации, пишите <frdp@FreeBSD.org.ua>.


Руководство FreeBSDPrevChapter 2 Установка FreeBSDNext

2.10 Поддерживаемое оборудование

В настоящее время FreeBSD работает на разнообразных PC, с шинами ISA, VLB, EISA, и PCI с процессорами ``x86'' от Intel, AMD, Cyrix, или NexGen, так же как и с множеством компьютеров на процессорах Compaq Alpha. Поддерживаются также IDE или ESDI диски, различные SCSI контроллеры, карты PCMCIA, устройства USB, сетевые карты и карты последовательных портов. FreeBSD также поддерживает шину MCA от IBM.

Список поддерживаемого оборудования поставляется с каждым релизом FreeBSD в информации о поддерживаемом FreeBSD оборудовании. Этот документ обычно может быть найден в файле HARDWARE.TXT в корневом каталоге CDROM, дистрибутива на FTP или в меню документации sysinstall. В нем находится список аппаратных устройств, которые поддерживаются этим релизом FreeBSD для данной архитектуры. Копии списка поддерживаемого оборудования для различных релизов и архитектур также можно найти на странице Информации о релизах сайта FreeBSD.

Этот, и другие документы, могут быть скачаны с ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

По вопросам связанными с FreeBSD, прочитайте документацию прежде чем писать в <questions@FreeBSD.org>.
По вопросам связанным с этой документацией, пишите <doc@FreeBSD.org>.
По вопросам связанным с русским переводом документации, пишите <frdp@FreeBSD.org.ua>.


Руководство FreeBSDPrevNext

Chapter 9 Configuring the FreeBSD Kernel *

Эта глава не переведена.

Этот, и другие документы, могут быть скачаны с ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

По вопросам связанными с FreeBSD, прочитайте документацию прежде чем писать в <questions@FreeBSD.org>.
По вопросам связанным с этой документацией, пишите <doc@FreeBSD.org>.
По вопросам связанным с русским переводом документации, пишите <frdp@FreeBSD.org.ua>.


Руководство FreeBSDPrevChapter 14 Локализация - I18N/L10N использование и настройкаNext

14.2 Основы

14.2.1 Что такое I18N/L10N?

Разработчики сократили интернационализацию в термин I18N, по числу символов между первым и последним символом интернационализации. В названии L10N используется тот же принцип от ``локализации''. Совместно используемые I18N/L10N методы, протоколы и приложения позволяют пользователям использовать языки по своему выбору.

I18N приложения написаны с применением набора I18N посредством библиотек. Это позволяет разработчикам писать простые файлы и переводить отображаемые меню и надписи на разные языки. Мы настоятельно рекомендуем программистам следовать этому соглашению.

14.2.2 Почему я должен использовать I18N/L10N?

I18N/L10N используется всегда, когда вы хотите просмотреть, ввести или обработать данные на отличных от английского языках.

14.2.3 Какие языки поддерживаются в проекте I18N?

I18N и L10N не являются специфичными для FreeBSD. На текущий момент у вас есть выбор между самыми распространенными языками мира, включая, но не ограничиваясь: китайский, немецкий, японский, корейский, французский, русский, вьетнамский и др.

Этот, и другие документы, могут быть скачаны с ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

По вопросам связанными с FreeBSD, прочитайте документацию прежде чем писать в <questions@FreeBSD.org>.
По вопросам связанным с этой документацией, пишите <doc@FreeBSD.org>.
По вопросам связанным с русским переводом документации, пишите <frdp@FreeBSD.org.ua>.


Руководство FreeBSDPrevChapter 14 Локализация - I18N/L10N использование и настройкаNext

14.4 Компиляция I18N программ

Многие порты FreeBSD были созданы с поддержкой I18N. Некоторые из них помечены символами -I18N в имени порта. Эти и многие другие программы имеют встроенную поддержку I18N и не нуждаются в специальной настройке.

Однако, некоторые приложения, такие как MySQL, требуют указания кодировки в Makefile. Это обычно делается правкой Makefile или передачей параметров configure при сборке из исходных текстов.

Этот, и другие документы, могут быть скачаны с ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

По вопросам связанными с FreeBSD, прочитайте документацию прежде чем писать в <questions@FreeBSD.org>.
По вопросам связанным с этой документацией, пишите <doc@FreeBSD.org>.
По вопросам связанным с русским переводом документации, пишите <frdp@FreeBSD.org.ua>.


Руководство FreeBSDPrevNext

Chapter 14 Локализация - I18N/L10N использование и настройка

Table of Contents
14.1 Краткий обзор
14.2 Основы
14.3 Использование локализации
14.4 Компиляция I18N программ
14.5 Локализация FreeBSD для поддержки определенных языков
Предоставил Andrey A. Chernov. Переписал Michael C. Wu.

14.1 Краткий обзор

FreeBSD - это очень распределенный проект, пользователи и контрибьюторы которого находятся в самых разных частях света. В этой главе рассказывается о возможностях интернационализации и локализации FreeBSD, которые позволяют не-англоговорящим пользователям делать свою работу. Существует много подходов в i18n реализации - как на системном уровне, так и на уровне приложений, так что, где это возможно, мы будем давать читателю ссылки на более углубленные источники документации.

После прочтения этой главы, вы будете знать:

Перед чтением этой главы вам следует::

Этот, и другие документы, могут быть скачаны с ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

По вопросам связанными с FreeBSD, прочитайте документацию прежде чем писать в <questions@FreeBSD.org>.
По вопросам связанным с этой документацией, пишите <doc@FreeBSD.org>.
По вопросам связанным с русским переводом документации, пишите <frdp@FreeBSD.org.ua>.


Руководство FreeBSDPrevChapter 14 Локализация - I18N/L10N использование и настройкаNext

14.5 Локализация FreeBSD для поддержки определенных языков

14.5.1 Русский язык (кодировка KOI8-R)

Первоначально предоставил Andrey A. Chernov.

За дополнительной информацией о кодировке KOI8-R, обращайтесь к странице KOI8-R References (Russian Net Character Set).

14.5.1.1 Настройка локализации

Поместите в ~/.login_conf следующие строки:

me:My Account:\
	:charset=KOI8-R:\
	:lang=ru_RU.KOI8-R:

Обратитесь к вышеизложенному материалу этой главы за соответствующей информацией.

14.5.1.2 Настройка консоли

  • Для FreeBSD версий до 5.0 добавьте к файлу настройки ядра следующую строку:

    options		SC_MOUSE_CHAR=0x03

    Для FreeBSD версий 4.4 и выше вставьте следующую строку в /etc/rc.conf:

    mousechar_start=3
  • Используйте в /etc/rc.conf такие настройки:

    keymap="ru.koi8-r"
    scrnmap="koi8-r2cp866"
    font8x16="cp866b-8x16"
    font8x14="cp866-8x14"
    font8x8="cp866-8x8"
  • Для каждого устройства ttyv* в файле /etc/ttys, используйте cons25r в качестве типа терминала.

Обратитесь к вышеизложенному материалу этой главы за примерами настройки консоли.

14.5.1.3 Настройка принтера

Большинство принтеров для России поставляются с аппаратной кодовой страницей CP866, требуется специальный выходной фильтр для перекодировки из KOI8-R в CP866. Такой фильтр устанавливается по умолчанию в /usr/libexec/lpr/ru/koi2alt. Запись для принтера в /etc/printcap должна выглядеть приблизительно так:

lp|Russian local line printer:\
	:sh:of=/usr/libexec/lpr/ru/koi2alt:\
	:lp=/dev/lpt0:sd=/var/spool/output/lpd:lf=/var/log/lpd-errs:

Обратитесь к printcap(5) за подробным описанием.

14.5.1.4 MS-DOS® FS и русские имена файлов

Следующий пример записи в fstab(5) включает поддержку русских имен файлов при монтировании файловых систем MS-DOS®:

/dev/ad0s2      /dos/c  msdos   rw,-Wkoi2dos,-Lru_RU.KOI8-R 0 0

Параметр -L выбирает имя используемой локализации, а параметр -W задает таблицу перекодировки. При использовании параметра -W убедитесь, что раздел /usr смонтирован перед разделом MS-DOS, поскольку таблицы перекодировки расположены в каталоге /usr/libdata/msdosfs. За более подробной информацией обращайтесь к странице справочника mount_msdos(8).

14.5.1.5 Настройка X11

  1. Выполните сначала не-X настройку локализации.

    Note: Локализация KOI8-R может не работать со старыми релизами XFree86 (ниже 3.3). На настоящий момент в FreeBSD в качестве системы X Window по умолчанию используется XFree86 4.X. Поэтому если только вы не используете старые версии FreeBSD, это не должно стать проблемой.

  2. Зайдите в каталог russian/X.language и выполните следующую команду:

    # make install

    Вышеуказанный порт установит последнюю версию KOI8-R шрифтов. В XFree86 3.3 уже есть некоторые KOI8-R шрифты, но эти масштабируются лучше.

    Проверьте раздел "Files" в файле /etc/XF86Config. Следующие строки должны быть добавлены перед всеми записями FontPath:

    FontPath   "/usr/X11R6/lib/X11/fonts/cyrillic/misc"
    FontPath   "/usr/X11R6/lib/X11/fonts/cyrillic/75dpi"
    FontPath   "/usr/X11R6/lib/X11/fonts/cyrillic/100dpi"

    Если вы используете видеорежим с высоким разрешением, поменяйте местами строки для 75 dpi и 100 dpi.

  3. Для настройки ввода на русском языке, добавьте нижеприведенные строки в раздел "Keyboard" файла XF86Config.

    Для XFree86 3.X:

    XkbLayout  "ru"
    XkbOptions "grp:caps_toggle"

    Для XFree86 4.X:

    Option "XkbLayout"   "ru"
    Option "XkbOptions"  "grp:caps_toggle"

    Убедитесь, что XkbDisable отключен (закомментирован) в этом разделе.

    Переключателем RUS/LAT служит CapsLock. Прежняя функция CapsLock все еще доступна в комбинации Shift+CapsLock (только в режиме LAT).

    Если на вашей клавиатуре есть клавиши ``Windows®'', и некоторые не-алфавитные клавиши работают неправильно в режиме RUS, добавьте следующую строку в файл XF86Config.

    Для XFree86 3.X:

    XkbVariant "winkeys"

    Для XFree86 4.X:

    Option "XkbVariant" "winkeys"

    Note: Ввод на русском языке может может не работать со старыми версиями XFree86, прочтите предупреждение выше с более подробной информацией. Ввод на русском языке может также не работать с нелокализованными приложениями. Минимально локализованные приложения должны вызывать функцию XtSetLanguageProc (NULL, NULL, NULL); в начале программы. Обратитесь к KOI8-R for X Window за дальнейшими инструкциями по локализации приложений X11.

14.5.2 Локализация на традиционном китайском для Тайваня

У проекта FreeBSD-Taiwan есть I18N/L10N учебник для FreeBSD по адресу http://freebsd.sinica.edu.tw/~ncvs/zh-l10n-tut/, в котором используются многие порты на китайском. Редактором учебника zh-L10N-tut является Clive Lin . Вы можете получить с помощью cvsup с freebsd.sinica.edu.tw следующие коллекции:

КоллекцияОписание
outta-port tag=.Beta-quality коллекция портов на китайском
zh-L10N-tut tag=.Локализация учебника FreeBSD на BIG-5 традиционном китайском
zh-doc tag=.Перевод документации FreeBSD на BIG-5 традиционный китайский

Chuan-Hsing Shen создал Chinese FreeBSD Collection (CFC) используя FreeBSD-Taiwan zh-L10N-tut. Пакеты и скрипты доступны по адресу ftp://ftp.csie.ncu.edu.tw/OS/FreeBSD/taiwan/CFC/.

14.5.3 Локализация на немецкий язык (для всех ISO 8859-1 языков)

Slaven Rezic написал учебник по использованию umlauts в FreeBSD. Учебник написан на немецком и доступен по адресу http://www.de.FreeBSD.org/de/umlaute/.

14.5.4 Локализация на японский и корейский языки

За информацией по японской локализации, обратитесь к http://www.jp.FreeBSD.org/, а за информацией о корейской локализацией к http://www.kr.FreeBSD.org/.

14.5.5 Не-англоязычная документация FreeBSD

Отдельные контрибьюторы FreeBSD перевели части документации FreeBSD на другие языки. Эти переводы доступны на основном сайте или из каталога /usr/share/doc.

Этот, и другие документы, могут быть скачаны с ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

По вопросам связанными с FreeBSD, прочитайте документацию прежде чем писать в <questions@FreeBSD.org>.
По вопросам связанным с этой документацией, пишите <doc@FreeBSD.org>.
По вопросам связанным с русским переводом документации, пишите <frdp@FreeBSD.org.ua>.


Руководство FreeBSDPrevChapter 10 БезопасностьNext

10.12 Mandatory Access Control (MAC) *

Sponsored by DARPA and Network Associates Laboratories. Contributed by Robert Watson.

Этот раздел еще не переведен.

Этот, и другие документы, могут быть скачаны с ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

По вопросам связанными с FreeBSD, прочитайте документацию прежде чем писать в <questions@FreeBSD.org>.
По вопросам связанным с этой документацией, пишите <doc@FreeBSD.org>.
По вопросам связанным с русским переводом документации, пишите <frdp@FreeBSD.org.ua>.


Руководство FreeBSDPrevChapter 21 На переднем крае разработокNext

21.4 Использование make world

После того, как вы синхронизировали ваше локальное дерево исходных текстов с некоторой версией FreeBSD (FreeBSD-STABLE, FreeBSD-CURRENT и так далее), то можете использовать эти исходные тексты для перестроения системы.

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

Обязательно сделайте резервную копию. И держите под рукой аварийную (fixit) дискету. Может быть, вам никогда не приходилось ими пользоваться, но, постучав по дереву, всегда лучше подготовиться, чем потом сожалеть.

Подпишитесь на соответствующий список рассылки: Ветки FreeBSD-STABLE и FreeBSD-CURRENT кода по природе своей являются изменяющимися. В разработке FreeBSD участвуют люди, и время от времени случаются ошибки.

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

Если возникают подобные проблемы, в соответствующем списке рассылки публикуется сообщение ``heads up'', в котором описывается природа проблемы и затрагиваемые системы. Когда проблема решается, публикуется сообщение ``all clear''.

Если вы пытаетесь отслеживать FreeBSD-STABLE или FreeBSD-CURRENT и не читаете списки рассылки Список рассылки, посвящённый обсуждению FreeBSD-STABLE или Список рассылки, посвящённый обсуждению FreeBSD-CURRENT соответственно, то вы напрашиваетесь на неприятности.

21.4.1 Канонический способ обновления вашей системы

Для обновления вашей системы вы должны воспользоваться следующей процедурой:

# make buildworld
# make buildkernel
# make installkernel
# reboot

Вы должны загрузиться в однопользовательский режим (например, по команде boot -s из приглашения загрузчика). Затем выполните:

# mergemaster -p
# make installworld
# mergemaster
# reboot

Вы должны загрузиться в однопользовательский режим (например, по команде boot -s из приглашения загрузчика). Затем выполните:

# mergemaster -p
# make installworld
# mergemaster
# reboot

Прочтите более полное описание: Описанная выше последовательность является только краткой выжимкой для того, чтобы помочь вам начать. Вы должны всё же прочесть последующие разделы для полного понимания каждого шага, особенно если собираетесь использовать собственную конфигурацию ядра.

21.4.2 Прочтите /usr/src/UPDATING

Перед тем, как делать что-либо, прочтите /usr/src/UPDATING (или соответствующий файл в вашей копии исходных текстов). В этом файле содержится важная информация о проблемах, с которыми вы можете столкнуться, или указан порядок, в котором вы должны запускать определенные команды. Если в файле UPDATING написано нечто, противоречащее тому, что вы здесь читаете, то нужно следовать указаниям в UPDATING.

Important: Чтение UPDATING не заменит подписки на соответствующий список рассылки, как это и описано выше. Эти два условия являются дополняющими, а не взаимоисключающими друг друга.

21.4.3 Проверьте содержимое /etc/make.conf

Просмотрите файлы /etc/defaults/make.conf и /etc/make.conf. Первый содержит некоторые предопределенные по умолчанию значения - большинство из них закомментировано. Чтобы воспользоваться ими при перестроении системы из исходных текстов, добавьте их в файл /etc/make.conf. Имейте в виду, что все, добавляемое вами в /etc/make.conf, используется также каждый раз при запуске команды make, так что полезно задать здесь значения, подходящие вашей системе.

Вероятно стоит скопировать строки CFLAGS и NOPROFILE, расположенные в /etc/defaults/make.conf, в файл /etc/make.conf и раскомментировать их.

Посмотрите на другие определения (COPTFLAGS, NOPORTDOCS и так далее) и решите, нужны ли они вам.

21.4.4 Обновите файлы в каталоге /etc

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

Некоторые конфигурационные файлы также используются в ежедневной работе системы. В частности, файл /etc/group.

Случалось, что установочная часть ``make world'' ожидала существования определённых имен пользователей или групп. При обновлении существует вероятность, что эти пользователи или группы не существуют. Это вызывает проблемы при обновлении.

Свежим примером этого является добавление пользователя smmsp. Пользователи столкнулись с прерыванием процесса установки, когда mtree(8) пыталась создать /var/spool/clientmqueue.

Выходом является просмотр файла /usr/src/etc/group и сравнение списка групп в нем с вашим собственным. Если в новом файле есть группы, отсутствующие в вашем, то скопируйте их. Таким же образом вы должны переименовывать все группы в /etc/group, которые имеют тот же самый GID, но другое название в /usr/src/etc/group.

Начиная с 4.6-RELEASE, вы можете запустить mergemaster(8) в режиме, предваряющем построение системы, задаваемым опцией -p. Она будет сравнивать только те файлы, которые необходимы для успешного выполнения целей buildworld или installworld. Если ваша старая версия утилиты mergemaster не поддерживает опцию -p, воспользуйтесь новой версией из дерева исходных текстов при первом запуске:

# cd /usr/src/usr.sbin/mergemaster
# ./mergemaster.sh -p

Tip: Если вы параноик, можете поискать файлы, владельцем которых является та группа, которую вы переименовываете или удаляете:

# find / -group GID -print

выдаст список всех файлов, владельцем которых является группа GID (задаваемая именем или численным значением ID).

21.4.5 Перейдите в однопользовательский режим

Вам может понадобиться откомпилировать систему в однопользовательском режиме. Кроме обычного выигрыша в скорости процесса, переустановка системы затрагивает много важных системных файлов, все стандартные выполнимые файлы системы, библиотеки, include-файлы и так далее. Изменение их на работающей системе (в частности, в которой активно работают пользователи) может привести к неприятностям.

Другим способом является компиляция системы в многопользовательском режиме с последующим переходом в однопользовательский режим для выполнения установки. Если вы хотите поступить именно так, просто следуйте инструкциям до момента окончания построения. Вы можете отложить переход в однопользовательский режим до завершения целей installkernel или installworld.

Как администратор, вы можете выполнить:

# shutdown now

на работающей системе, что переведет ее в однопользовательский режим.

Либо вы можете выполнить перезагрузку и в приглашении загрузчика задать флаг -s. После этого система загрузится в однопользовательском режиме. В приглашении командного процессора вы должны запустить:

# fsck -p
# mount -u /
# mount -a -t ufs
# swapon -a

Эти команды выполняют проверку файловых систем, повторно монтируют / в режиме чтения/записи, монтируют все остальные файловые системы UFS, перечисленные в файле /etc/fstab и включат подкачку.

Note: Если часы в вашей CMOS настроены на местное время, а не на GMT (это имеет место, если команда date(1) выдаёт неправильные время и зону), то вам может понадобиться запустить следующую команду:

# adjkerntz -i

Это обеспечит корректную настройку местного часового пояса -- без этого впоследствии вы можете столкнуться с некоторыми проблемами.

21.4.6 Удалите /usr/obj

При перестроении частей системы они помещаются в каталоги, которые (по умолчанию) находятся в /usr/obj. Структура повторяет структуру /usr/src.

Вы можете ускорить выполнение процесса ``make world'' и, возможно, избавить себя от некоторой головной боли, связанной с зависимостями, удалив этот каталог.

На некоторых файлах из /usr/obj могут быть установлены специальные флаги (обратитесь к chflags(1) за дополнительной информацией), которые сначала должны быть сняты.

# cd /usr/obj
# chflags -R noschg *
# rm -rf *
      

21.4.7 Перекомпилируйте исходные тексты

21.4.7.1 Сохраните вывод

Неплохо сохранить вывод, получаемый при работе программы make(1), в файл. Если что-то вдруг пойдет не так, вы будете иметь копию сообщения об ошибке и полную картину того, где она произошла. Хотя это может и не помочь в определении причин происходящего, это может помочь другим, если вы опишите вашу проблему в одном из списков рассылки FreeBSD.

Проще всего это сделать при помощи команды script(1) с параметром, в котором указано имя файла, в который нужно сохранить вывод. Вы должны сделать это непосредственно перед тем, как перестроить систему, а по окончании процесса набрать exit.

# script /var/tmp/mw.out
Script started, output file is /var/tmp/mw.out
# make world
... compile, compile, compile ...
# exit
Script done, ...
        

Если вы делаете это, не сохраняйте вывод в /tmp. Этот каталог может быть очищен при следующей перезагрузке. Лучше сохранить его в /var/tmp (как в предыдущем примере) или в домашнем каталоге пользователя root.

21.4.7.2 Компиляция базовых компонентов системы

Вы должны находиться в каталоге /usr/src:

# cd /usr/src

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

Для полного перестроения системы используется команда make(1). Эта команда читает инструкции из файла Makefile, описывающего, как должны быть перестроены программы, которые составляют систему FreeBSD, в каком порядке они должны быть построены и так далее.

Общий формат командной строки, которую вы будет набирать, таков:

# make -x -DVARIABLE target

В этом примере -x является параметром, который вы передаете в make(1). Обратитесь к справочной странице программы make(1), которая содержит список возможных параметров.

-DVARIABLE передает переменную в Makefile. Поведение Makefile определяется этими переменными. Это те же самые переменные, которые задаются в /etc/make.conf, и это -- еще один способ их задания.

# make -DNOPROFILE=true target

является другим способом указания того, что библиотеки для профилирования строить не нужно, и соответствует строке

NOPROFILE=    true	# Обход построения библиотек для профилирования

в файле /etc/make.conf.

target указывает программе make(1) на то, что вы хотите сделать. Каждый файл Makefile определяет некоторое количество различных ``целей'', и ваш выбор цели определяет то, что будет делаться.

Некоторые цели, перечисленные в файле Makefile, не предназначены для вызова. Просто они используются в процессе построения для разбиения его на этапы.

В большинстве случаев вам не нужно передавать никаких параметров в make(1), так что ваша команда будет выглядеть примерно так:

# make target
        

Начиная с версии FreeBSD 2.2.5 (на самом деле впервые это было сделано в ветке FreeBSD-CURRENT, а затем адаптировано в FreeBSD-STABLE где-то между 2.2.2 и 2.2.5) цель world была разделена на две: buildworld и installworld.

Как указывают на это названия, buildworld строит полностью новое дерево в каталоге /usr/obj, а installworld устанавливает это дерево на используемой машине.

Это весьма полезно по двум причинам. Во-первых, это позволяет вам безопасно строить систему, зная, что компоненты вашей рабочей системы затронуты не будут. Построение ``самодостаточно''. По этой причине вы можете спокойно запустить buildworld на машине, работающей в многопользовательском режиме без опаски получить какие-либо проблемы. Но всё же рекомендуется запускать цель installworld в однопользовательском режиме.

Во-вторых, это позволяет вам использовать монтирование по NFS для обновления многих машин в сети. Если у вас есть три машины, A, B и C, которые вы хотите обновить, запустите make buildworld и make installworld на машине A. Хосты B и C должны будут затем смонтировать по NFS каталоги /usr/src и /usr/obj с машины A, и вы сможете запустить make installworld для установки результатов построения на машинах B и C.

Хотя цель world всё ещё имеется в наличии, вам настоятельно рекомендуется не пользоваться ею.

Выполните

# make buildworld

В настоящее время имеется возможность задавать команде make параметр -j, который приводит к запуску нескольких одновременно работающих процессов. Наиболее полезно использовать это на многопроцессорных машинах. Однако, так как процесс компиляции больше всего требователен к подсистеме ввода/вывода, а не к производительности процессора, это можно использовать и на машинах с одним процессором.

На типичной машине с одним CPU вы должны запускать:

# make -j4 buildworld
        

make(1) будет иметь до 4 одновременно работающих процессов. Эмпирические замеры, опубликованные как-то в списке рассылки, показывают, что в среднем это дает наибольшее увеличение производительности.

Если у вас многопроцессорная машина и вы используете ядро с настройками для SMP, попробуйте использовать значения между 6 и 10 и посмотрите, как это отразится на скорости работы.

Имейте в виду, что это все еще экспериментальная возможность, и изменения в дереве исходных текстов иногда могут быть не совместимы с параллельной сборкой. Если система не может быть построена с использованием этого параметра, попробуйте еще раз без него перед тем, как сообщать о проблемах.

21.4.7.3 Время на построение

На время компиляции влияет множество факторов, но на данный момент Pentium® III частотой 500 МГц и 128 МБ ОЗУ справляется с построением дерева FreeBSD-STABLE примерно за 2 часа без дополнительных хитростей и убыстряющих процесс уловок. Дерево FreeBSD-CURRENT строится несколько дольше.

21.4.8 Откомпилируйте и установите новое ядро

Чтобы получить полную отдачу от вашей новой системы, вы должны перекомпилировать ядро. Это практически необходимость, так как отдельные структуры в памяти могут меняться, и программы типа ps(1) и top(1) не будут работать, пока версии ядра и исходных текстов системы не будут совпадать.

Самым простым и надежным способом сделать это является компиляция и установка ядра на основе GENERIC. Хотя в GENERIC могут оказаться не все необходимые для работы вашей системы устройства, в нем имеется все необходимое для перезагрузки вашей системы обратно в однопользовательский режим. Это является хорошей проверкой на правильность работы новой системы. После загрузки с ядром GENERIC и проверки работоспособности системы вы можете построить новое ядро на основе вашего обычного конфигурационного файла ядра.

Если вы обновляете систему до FreeBSD 4.0 и выше, то старая процедура построения ядра (как это описано в Chapter 9) не подходит. Вместо этого вы должны выполнить следующие команды после того, как перестроили систему командой buildworld.

Note: Если вы хотите построить собственное ядро и уже подготовили файл конфигурации, просто используйте KERNCONF=MYKERNEL следующим образом:

# cd /usr/src
# make buildkernel KERNCONF=MYKERNEL
# make installkernel KERNCONF=MYKERNEL

Для FreeBSD 4.2 и более старых версиях вы должны заменять KERNCONF= на KERNEL=. 4.2-STABLE, сгруженная до 2 февраля 2001 года, не распознаёт KERNCONF=.

Заметьте, что, если вы установили kern.securelevel в значение, превышающее 1, и установили флаг noschg или подобный на бинарный файл ядра, то вы будете вынуждены перейти в однопользовательский режим для того, чтобы воспользоваться installkernel. В противном случае вы должны выполнять эти команды без проблем. Обратитесь к справочным страницам об init(8) для получения подробной информации о kern.securelevel и chflags(1) для получения информации о различных флагах файлов.

Если вы производите обновление до версии FreeBSD ниже 4.0, то нужно использовать старую процедуру построения ядра. Однако рекомендуется использовать новую версию программы config(8) со следующей командной строкой.

# /usr/obj/usr/src/usr.sbin/config/configKERNELNAME
      

21.4.9 Перезагрузитесь в однопользовательский режим

Для проверки работоспособности ядра вы должны перезагрузить систему и перейти в однопользовательский режим. Сделайте это, следуя указаниям в Section 21.4.5.

21.4.10 Установите новые версии системных программ

Если вы компилировали достаточно свежую версию FreeBSD, в которой имеется команда make buildworld, то для установки новых версий программ вы должны теперь выполнить команду installworld.

Запустите

# cd /usr/src
# make installworld

Note: Если при выполнении команды make buildworld вы задавали значения каких-либо переменных, то при выполнении make installworld вы должны задать те же самые переменные. Это не всегда так для остальных параметров; например, при выполнении installworld никогда не должен использоваться параметр -j.

Например, если вы выполняли команду:

# make -DNOPROFILE buildworld

то результат её выполнения должен устанавливаться командой

# make -DNOPROFILE installworld

В противном случае будет делаться попытка установить библиотеки для профилирования, которые не компилировались на этапе выполнения команды make buildworld.

21.4.11 Обновите файлы, не обновленные по команде make world

При перестроении системы не будут обновляться некоторые каталоги (в частности, /etc, /var и /usr) с конфигурационными файлами.

Самым простым способом обновить такие файлы является запуск утилиты mergemaster(8), хотя можно сделать это и вручную, если вам так больше нравится. Вне зависимости от выбранного вами способа обязательно сделайте резервную копию каталога /etc на случай, если произойдёт что-то непредвиденное.

21.4.11.1 mergemaster

Текст предоставилTom Rhodes.

Утилита mergemaster(8) является скриптом для оболочки Боурна, которая поможет вам в определении разницы между вашими конфигурационными файлами в каталоге /etc и конфигурационными файлами из дерева исходных текстов /usr/src/etc. Это является рекомендуемым способом синхронизации системных конфигурационных файлов с теми, что размещены в дереве исходных текстов.

mergemaster была интегрирована в базовый комплект системы FreeBSD между выпусками 3.3-RELEASE и 3.4-RELEASE, что означает её наличие во всех системах -STABLE и -CURRENT, начиная с 3.3.

Для начала просто наберите mergemaster в приглашении командной строки и посмотрите, что происходит. mergemaster построит временное окружение для пользователя root, начиная от /, а затем заполнит его различными системными конфигурационными файлами. Эти файлы затем будут сравниваться с теми, что установлены в вашей системе. В этот момент файлы, которые имеют отличия, будут выданы в формате diff(1), где знак + будет означать добавленные или изменённые строки, а знак - будет означать строки, которые были либо полностью удалены, либо заменены на новые. Обратитесь к страницам справочной системы по команде diff(1) для получения более полной информации о синтаксисе команды diff(1) и формате выдачи отличий в файлах.

Затем mergemaster(8) выдаст вам каждый файл, в котором есть изменения, и в этот момент у вас есть возможность либо удалить новый файл (который будем считать временным), установить временный файл в его неизменённом виде, объединить временный файл с установленным на данный момент, либо просмотреть выдачу diff(1) ещё раз.

Выбор удаления временного файла укажет mergemaster(8) на то, что мы хотим оставить наш текущий файл без изменений и удалить его новую версию. Делать это не рекомендуется, если только у вас нет причин вносить изменения в текущий файл. Вы можете получить помощь в любое время, набрав ? в приглашении mergemaster(8). Если пользователь выбирает пропуск файла, запрос появится снова после того, как будут обработаны все остальные файлы.

Выбор установки немодифицированного временного файла приведёт к замене текущего файла новым. Для большинства немодифицированных файлов это является подходящим вариантом.

Выбор варианта с объединением файла приведёт к вызову текстового редактора, содержащего текст обоих файлов. Теперь вы можете объединить их, просматривая оба файла на экране, и выбирая те части из обоих, что подходят для окончательного варианта. Когда файлы сравниваются на экране, то нажатие l выбирает содержимое слева, а нажатие r выбирает содержимое справа. В окончательном варианте будет файл, состоящий из обеих частей, который и будет установлен. Этот вариант используется для файлов, настройки в которых изменялись пользователем.

Выбор повторного просмотра diff(1)-разниц выдаст вам разницы между файлами, как это делала утилита mergemaster(8) до того, как запросила вас о выборе.

После того, как утилита mergemaster(8) закончит работу с системными файлами, она выдаст запрос относительно других параметров. mergemaster(8) может запросить вас относительно перестроения файла паролей и/или запуска MAKEDEV(8) при использовании FreeBSD версий, меньших чем 5.0, и завершит запросом на удаление оставшихся временных файлов.

21.4.11.2 Обновление в ручном режиме

Однако если вы хотите произвести обновление вручную, то вы не можете просто скопировать файлы из /usr/src/etc в /etc и получить работающую систему. Некоторые из этих файлов сначала нужно ``установить''. Это нужно потому, что каталог /usr/src/etc не является копией того, что должен содержать ваш каталог /etc. Кроме того, есть файлы, которые должны присутствовать в /etc, но которых нет в /usr/src/etc.

Если вы используете mergemaster(8) (как это рекомендуется), то вы можете перейти сразу к следующему разделу.

Вручную проще всего сделать это, установив файлы в новый каталог, а затем пройтись по ним, отмечая разницу.

Сделайте резервную копию вашего каталога /etc: Хотя, в теории, никаких автоматических действий с этим каталогом не производится, всегда лучше чувствовать себя уверенным. Так что скопируйте имеющийся каталог /etc в какое-нибудь безопасное место. Запустите что-то вроде:

# cp -Rp /etc /etc.old

-R задает выполнение рекурсивного копирования, а -p сохраняет даты, владельца файлов и тому подобное.

Вам нужно создать шаблонную структуру каталогов для установки нового содержимого /etc и других файлов. Подходящим местом является /var/tmp/root, и в нём потребуется разместить некоторое количество подкаталогов.

# mkdir /var/tmp/root
# cd /usr/src/etc
# make DESTDIR=/var/tmp/root distrib-dirs distribution

Эти команды приведут к созданию нужной структуры каталогов и установке файлов. Множество каталогов, созданных в /var/tmp/root, будут пустыми и должны быть удалены. Проще всего сделать это так:

# cd /var/tmp/root
# find -d . -type d | xargs rmdir 2>/dev/null

Эти команды удалят все пустые каталоги. (Стандартный поток диагностических сообщений перенаправляется в /dev/null для исключения предупреждений о непустых каталогах.)

Теперь /var/tmp/root содержит все файлы, которые должны быть помещены в соответствующие места в /. Теперь пройдитесь по каждому их этих файлов и определите, чем они отличаются от имеющихся у вас файлов.

Заметьте, что некоторые из файлов, которые были установлены в каталог /var/tmp/root, имеют первым символом ``.''. На момент написания единственными такими файлами являлись файлы начальных скриптов командных процессоров в /var/tmp/root/ и /var/tmp/root/root/, хотя могут быть и другие (зависит от того, когда вы это читаете). Обязательно пользуйтесь командой ls -a, чтобы выявить их.

Проще всего сделать это путём сравнения двух файлов при помощи команды diff(1):

# diff /etc/shells /var/tmp/root/etc/shells

Эта команда покажет разницу между вашим файлом /etc/shells и новым файлом /var/tmp/root/etc/shells. Используйте это для определения того, переносить ли сделанные вами изменения или скопировать поверх вашего старого файла.

Называйте новый корневой каталог (/var/tmp/root) по дате, чтобы вы смогли легко выявить разницу между версиями: Частое перестроение системы означает также и частое обновление /etc, которое может быть несколько обременительным.

Вы можете ускорить этот процесс, сохраняя копию последнего набора измененных файлов, которые вы перенесли в /etc. Следующая процедура подаст вам одну идею о том, как это сделать.

  1. Выполните перестроение системы обычным образом. Когда вы вам потребуется обновить /etc и другие каталоги, дайте целевому каталогу имя на основе текущей даты. Если вы делаете это 14 февраля 1998 года, то вы можете сделать следующее:

    # mkdir /var/tmp/root-19980214
    # cd /usr/src/etc
    # make DESTDIR=/var/tmp/root-19980214 \
        distrib-dirs distribution
  2. Перенесите изменение из этого каталога, как это описано выше.

    Не удаляйте каталог /var/tmp/root-19980214 после окончания этого процесса.

  3. Когда вы сгрузите самую последнюю версию исходного кода и перестроите систему, выполните шаг 1. Это даст вам новый каталог, который может называться /var/tmp/root-19980221 (если вы ждете неделю между обновлениями).

  4. Теперь вы можете видеть изменения, которые были сделаны за прошедшую неделю, выполнив при помощи команды diff(1) рекурсивное сравнение двух каталогов:

    # cd /var/tmp
    # diff -r root-19980214 root-19980221

    Как правило, здесь содержится гораздо меньше отличий, чем между каталогами /var/tmp/root-19980221/etc и /etc. Так как отличий меньше, то и легче перенести эти изменения в ваш каталог /etc.

  5. Теперь вы можете удалить более старый из двух каталогов /var/tmp/root-*:

    # rm -rf /var/tmp/root-19980214
  6. Повторяйте этот процесс всякий раз, когда вам нужно перенести изменения в каталог /etc.

Для автоматической генерации имён каталогов можно использовать команду date(1):

# mkdir /var/tmp/root-`date "+%Y%m%d"`

21.4.12 Обновите /dev

Note: Если вы работаете с FreeBSD 5.0 или более поздними версиями, то можете спокойно пропустить этот раздел. В этих версиях devfs(5) используется для выделения файлов устройств в режиме, прозрачном для пользователя.

Если вы используете DEVFS, то этого можно не делать.

В большинстве случаев утилита mergemaster(8) обнаружит, что необходимо обновить файлы устройств, и предложит сделать это автоматически. Эти указания описывают, как обновить файлы устройств вручную.

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

  1. Скопируйте /var/tmp/root/dev/MAKEDEV в /dev:

    # cp /var/tmp/root/dev/MAKEDEV /dev

    Если вы использовали mergemaster(8) для обновления /etc, то ваш скрипт MAKEDEV уже должен быть обновлен, так что его не нужно проверять (утилитой diff(1)) и копировать вручную в случае необходимости.

  2. Теперь выведите текущее содержимое вашего каталога /dev. Этот список должен содержать права, владельцев, старшее и младшее числа каждого файла, но не должен содержать информацию о времени. Проще всего это сделать, отрезав при помощи awk(1) часть информации:

    # cd /dev
    # ls -l | awk '{print $1, $2, $3, $4, $5, $6, $NF}' > /var/tmp/dev.out
  3. Повторно создайте все файлы устройств:

    # sh MAKEDEV all
  4. Создайте ещё один список содержимого каталога, на этот раз в /var/tmp/dev2.out. Теперь просмотрите оба эти файла и поищите файлы устройств, которые вы забыли создать. Таких быть не должно, но лишний раз удостовериться не помешает.

    # diff /var/tmp/dev.out /var/tmp/dev2.out

    Скорее всего, вы заметите разногласия в именовании дисковых слайсов, что решается такими командами, как:

    # sh MAKEDEV sd0s1

    для повторного создания устройств слайсов. Точное название зависит от вашей системы и может отличаться от приведённого.

21.4.13 Обновите /stand

Note: Этот шаг описан только для полноты. Он может быть безболезненно опущен. Если вы работаете с FreeBSD 5.2 или более поздней версией, то для пользователей каталог /rescue автоматически обновляется до текущего состояния, а статически компилируемые выполнимые файлы во время выполнения команды make installworld, поэтому каталог /stand обновлять не нужно.

В целях полноты обновления вам может потребоваться обновить также файлы в каталоге /stand. Эти файлы представляют собой жёсткие ссылки на выполнимый файл /stand/sysinstall. Этот файл должен быть статически скомпонован, чтобы его работа не зависела от других файловых систем (в частности, от наличия смонтированной файловой системы /usr).

# cd /usr/src/release/sysinstall
# make all install

21.4.14 Перезагрузка

Теперь вы сделали всё. После того, как вы проверили, что всё на месте, можете перегрузить систему. Простая команда shutdown(8) должна это сделать:

# shutdown -r now

21.4.15 Завершение

Теперь у вас имеется успешно обновлённая система FreeBSD. Поздравляем!

Если что-то работает неправильно, можно с лёгкостью перестроить конкретную часть системы. Например, если вы случайно удалили файл /etc/magic в процессе обновления или переноса /etc, то команда file(1) перестанет работать. В таком случае это можно исправить вот так:

# cd /usr/src/usr.bin/file
# make all install

21.4.16 Вопросы?

21.4.16.1. Нужно ли полностью перестраивать систему при каждом изменении?
21.4.16.2. Компиляция прерывается с большим количеством ошибок по сигналу 11 (или с другим номером сигнала). Что случилось?
21.4.16.3. Могу ли я удалить каталог /usr/obj после окончания?
21.4.16.4. Могут ли быть продолжены прерванные процессы построения?
21.4.16.5. Как ускорить процесс построения системы?
21.4.16.6. Что мне делать, если что-то пошло не так?

21.4.16.1. Нужно ли полностью перестраивать систему при каждом изменении?

Простого ответа на этот вопрос нет, так как это зависит от характера изменения. Например, если вы только что выполнили CVSup, и оказалось, что с момента последнего его запуска были изменены следующие файлы:

src/games/cribbage/instr.c
src/games/sail/pl_main.c
src/release/sysinstall/config.c
src/release/sysinstall/media.c
src/share/mk/bsd.port.mk

то перестраивать всю систему незачем. Вы можете просто перейти в соответствующий подкаталог и выдать команду make all install, этого будет достаточно. Однако, если меняется что-то важное, например, src/lib/libc/stdlib, то вы должны перестроить всю систему или по крайней мере те ее части, которые скомпонованы статически.

В конце концов, выбор за вами. Может быть вам нравится перестраивать систему, скажем, каждый вечер, а изменения скачивать ночью. Или вы можете захотеть перестраивать только те вещи, которые менялись, но быть уверенным, что отслежены все изменения.

И, конечно же, всё это зависит от того, как часто вы хотите делать обновление, и отслеживаете ли вы FreeBSD-STABLE или FreeBSD-CURRENT.

21.4.16.2. Компиляция прерывается с большим количеством ошибок по сигналу 11 (или с другим номером сигнала). Что случилось?

Как правило, это говорит о проблемах с оборудованием. (Пере)построение системы является эффективным стресс-тестом для вашего оборудования и частенько выявляет проблемы с памятью. Обычно это проявляется в виде неожиданных сбоев компилятора или получения странных программных сигналов.

Явным указателем на это является то, что при перезапуске процедуры построения она прекращается в различные моменты времени.

В этом случае вы мало что можете сделать, разве что попробовать заменить комплектующие вашей машины для определения сбоящей компоненты.

21.4.16.3. Могу ли я удалить каталог /usr/obj после окончания?

Если отвечать коротко, то да.

Каталог /usr/obj содержит все объектные файлы, которые создаются во время фазы компиляции. Обычно одним из первых шагов в процессе ``make world'' является удаление этого каталога. В этом случае сохранение /usr/obj после окончания имеет мало смысла; вдобавок, он будет занимать большой объём дискового пространства (на данный момент около 340 МБ).

Однако если вы точно знаете, что делаете, то можете заставить процедуру ``make world'' пропустить этот шаг. Это позволит последующие построения выполняться гораздо быстрее, так как большинство исходных текстов не нужно будет перекомпилировать. Оборотной стороной медали этого подхода является вероятность появления некоторых проблем с зависимостями, что может привести к прерыванию построения по странным причинам. Это частенько вызывает шум в списках рассылки FreeBSD, когда кто-либо жалуется на прерывание процесса построения, не обращая внимания на то, что он пытается срезать углы на повороте.

21.4.16.4. Могут ли быть продолжены прерванные процессы построения?

Это зависит от того, насколько далеко зашел процесс построения перед тем, как вы обнаружили проблему.

В общем случае (и это несложное и быстрое правило) процесс ``make world'' строит новые копии необходимых инструментальных средств (таких, как gcc(1) и make(1)) и системные библиотеки. Затем эти средства и библиотеки устанавливаются. Новые инструментальные средства и библиотеки затем используются для перестроения самих себя, и повторно устанавливаются. Система в целом (теперь включая обычные пользовательские программы, такие, как ls(1) или grep(1)) теперь перестраивается с новыми системными файлами.

Если вы на последнем шаге, и вы знаете это (потому что просматривали вывод, который сохраняете), то вы можете (достаточно безболезненно) выполнить команду:

... исправление проблемы ...
# cd /usr/src
# make -DNOCLEAN all

При этом результат предыдущего запуска ``make world'' откатываться не будет.

Если вы видите сообщение:

--------------------------------------------------------------
Building everything..
--------------------------------------------------------------

в выводе команды ``make world'', то делать так достаточно безопасно.

Если этого сообщения не было, или вы в этом не уверены, то всегда лучше обезопасить себя, и начать построение с самого начала.

21.4.16.5. Как ускорить процесс построения системы?

  • Работайте в однопользовательском режиме.

  • Разместите каталоги /usr/src и /usr/obj в отдельных файловых системах, располагающихся на разных дисках. Если это возможно, то разместите эти диски на разных дисковых контроллерах.

  • Ещё лучше разместить эти файловые системы на нескольких дисках при помощи устройства ccd(4) (драйвер объединённых дисков).

  • Выключите генерацию профилирующего кода (установив ``NOPROFILE=true'' в файле /etc/make.conf). Вам это скорее всего никогда не понадобится.

  • Также в /etc/make.conf установите значение CFLAGS во что-то типа -O -pipe. Оптимизация -O2 выполняется гораздо медленнее, а разница между -O и -O2 обычно несущественна. -pipe позволяет компилятору использовать для связи вместо временных файлов программные каналы, что уменьшает обращение к диску (за счет оперативной памяти).

  • Передайте утилите make(1) параметр -jn для запуска параллельно нескольких процессов. Обычно это помогает вне зависимости от того, сколько процессоров установлено в вашей машине.

  • Файловая система, на которой располагается каталог /usr/src, может быть смонтирована (или перемонтирована) с опцией noatime. При этом запись на диск информации о времени последнего доступа к файлам будет отключена. Скорее всего, вам эта информация и не нужна.

    # mount -u -o noatime /usr/src

    Warning: В примере предполагается, что /usr/src располагается на собственной файловой системе. Если это не так (то есть он является частью, скажем, /usr), то вам нужно использовать точку монтирования той файловой системы, а не /usr/src.

  • Файловая система, на которой располагается /usr/obj, может быть смонтирована (или перемонтирована) с параметром async. Это приведёт к тому, что операции записи на диск будут выполняться асинхронно. Другими словами, запись будет завершаться немедленно, но данные записываться на диск несколькими секундами позже. Это позволит объединять операции записи и приведёт к значительному приросту производительности.

    Warning: Имейте в виду, что эта опция делает вашу файловую систему менее устойчивой. С этой опцией имеется больше шансов, что при перезагрузке машины после неожиданного сбоя при пропадании напряжения файловая система окажется в невосстановимом состоянии.

    Если каталог /usr/obj -- это все, что есть в этой файловой системе, то это не проблема. Если на той же самой файловой системе имеются какие-то важные данные, то проверьте давность ваших резервных копий перед включением этой опции.

    # mount -u -o async /usr/obj

    Warning: Как и раньше, если каталог /usr/obj располагается не на собственной файловой системе, то в примере замените его на имя соответствующей точки монтирования.

  • 21.4.16.6. Что мне делать, если что-то пошло не так?

    Скрупулезно проверьте, чтобы в вашем окружении не было мешающих остатков от предыдущих построений. Это достаточно просто.

    # chflags -R noschg /usr/obj/usr
    # rm -rf /usr/obj/usr
    # cd /usr/src
    # make cleandir
    # make cleandir

    Да, команду make cleandir действительно нужно выполнять дважды.

    После этого повторите весь процесс снова, начиная с make buildworld.

    Если у вас все еще есть проблемы, пришлите текст ошибки и выдачу команды uname -a на адрес Список рассылки, посвящённый вопросам и ответам пользователей FreeBSD. Будьте готовы ответить на другие вопросы о конфигурации вашей системы!

    Этот, и другие документы, могут быть скачаны с ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

    По вопросам связанными с FreeBSD, прочитайте документацию прежде чем писать в <questions@FreeBSD.org>.
    По вопросам связанным с этой документацией, пишите <doc@FreeBSD.org>.
    По вопросам связанным с русским переводом документации, пишите <frdp@FreeBSD.org.ua>.


    Руководство FreeBSDPrevChapter 3 Основы UNIXNext

    3.6 Монтирование и размонтирование файловых систем

    Файловая система лучше всего представима в виде дерева, с корнем в /. Каталоги, /dev, /usr и прочие - это ветви дерева, которые, в свою очередь, являются корнями для поддеревьев, также имеющих ветви (/usr/local), и т.д.

    Хорошей практикой является разнесение некоторых особо важных каталогов на разные файловые системы. Например, /var, содержит log/, spool/, а также всевозможные временные файлы и нередко может занять все свободное место на диске. Поэтому лучше смонтировать /var отдельно, чтобы избежать переполнения /.

    Часто бывает так, что некоторые разделы файловой системы расположены на разных физических носителях (дисках, CDROM), виртуальных или сетевых (например, сетевая файловая система (Network File System, NFS)). В этом случае узлы файловой иерархии будут расположены на разных файловых системах.

    3.6.1 Файл fstab

    Файловые системы, перечисленные в /etc/fstab, монтируются автоматически в процессе загрузки (если, конечно, для них не указана опция noauto).

    Формат файла /etc/fstab следующий (файловые системы перечисляются построчно):

    	устройство	/точка-монтирования	тип файловой системы	опции	частота дампов	порядок проверки

    устройство

    Имя устройства (которое должно присутствовать), как описано в Section 12.2.

    точка монтирования

    Каталог (существующий), куда следует смонтировать файловую систему.

    тип файловой системы

    Тип файловой системы, который передается программе mount(8). По умолчанию FreeBSD использует ufs.

    опции

    Например, rw для монтирования файловой системы в режиме ``чтение-запись'' или ro для режима ``только чтение'', за которыми могут следовать и другие опции. Довольно часто используется опцияnoauto, чтобы не монтировать автоматически файловые системы в процессе загрузки. Об остальных опциях можно прочитать в mount(8).

    частота дампов

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

    порядок проверки

    Определяет порядок, в котором следует проверять файловые системы (чаще всего, в случае некорректного размонтирования или внезапной перезагрузки системы). Если файловую системы не нужно проверять, этот параметр должен быть установлен в ноль. Для корневой файловой системы (которая должна быть проверена в первую очередь) установите его в 1. Для всех остальных - 2 или больше. Если две или более файловые системы имеют одинаковое значение passno, fsck(8) попытается проверять их параллельно (если, конечно, это возможно физически).

    3.6.2 Команда mount

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

    Пример использования (простейший случай):

    # mount устройство точка-монтирования

    Перечислим основные опции, которые может принимать команда mount(8) (полный список смотрите в странице руководства):

    Опции монтирования

    -a

    Смонтировать все файловые системы, перечисленные в файле /etc/fstab. Исключение составляют помеченные как ``noauto'', перечисленные после опции -t и уже смонтированные.

    -d

    Сделать все кроме самого системного вызова mount. Эта опция полезна вместе с флагом -v для определения того, что на самом деле пытается сделать mount(8).

    -f

    Монтировать поврежденный раздел (опасно!), или форсировать отмену всех запросов на запись при изменении режима монтирования с ``чтение-запись'' на ``только чтение''.

    -r

    Монтировать файловую систему в режиме ``только для чтения''. То же самое, что и указание аргумента rdonly для опции -o.

    -t fstype

    Монтировать файловую систему как систему указанного типа, или, в случае опции -a, только файловые системы данного типа.

    По умолчанию, тип файловой системы - ``ufs''.

    -u

    Обновить опции монтирования для файловой системы.

    -v

    Выдавать более подробную информацию.

    -w

    Монтировать файловую систему в режиме ``чтение-запись''.

    Опция -o принимает разделенные запятыми аргументы, включая нижеперечисленные:

    nodev

    Не обращать внимание на специальные файлы устройств на файловой системе (то есть не считать их файлами устройств). Весьма полезная опция для повышения безопасности системы.

    noexec

    Запрет на исполнение бинарных файлов на файловой системе (тоже полезная опция для повышения безопасности системы).

    nosuid

    Игнорировать suid- и sgid-биты на файловой системе (еще одна полезная опция для повышения безопасности системы).

    3.6.3 Команда umount

    Команда umount(8) принимает в качестве параметра точку монтирования какой-либо файловой системы, имя устройства, опцию -a или -A.

    Кроме того, вы можете дополнительно указать опцию -f для форсированного размонтирования файловой системы, и -v для получения более подробной информации. Имейте ввиду, что это в общем случае опасно и потому не рекомендуется, так как тем самым вы можете нарушить работу компьютера или повредить данные на файловой системе.

    Опции -a и -A используются для размонтирования всех файловых систем (разве что вы укажете опцию -t). Разница состоит в том, что -A не пытается размонтировать корневую файловую систему.

    Этот, и другие документы, могут быть скачаны с ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

    По вопросам связанными с FreeBSD, прочитайте документацию прежде чем писать в <questions@FreeBSD.org>.
    По вопросам связанным с этой документацией, пишите <doc@FreeBSD.org>.
    По вопросам связанным с русским переводом документации, пишите <frdp@FreeBSD.org.ua>.


    Руководство FreeBSDPrevNext

    Chapter 16 Музыка и Звук

    Table of Contents
    16.1 Краткий обзор
    16.2 Настройка звуковой карты
    16.3 Звук MP3
    16.4 Воспроизведение видео
    Предоставлено Moses Moore.

    16.1 Краткий обзор

    FreeBSD поддерживает большое количество различных звуковых карт, что позволяет Вам насладится высококачественным звуком. Также это дает вам возможность записывать и воспроизводить звуковые файлы в формате MPEG Audio Layer 3 (MP3), WAV, Ogg Vorbis, а также в множестве других форматов. Коллекция Портов FreeBSD также содержит ряд приложений позволяющих редактировать записанные звуковые файлы, добавлять звуковые эффекты, управлять подключенными MIDI устройствами.

    Также FreeBSD может поддерживать воспроизведение видеофайлов и DVD. Количество приложений, позволяющих кодировать, преобразовывать и воспроизводить различные форматы видео, существенно меньше, чем количество приложений для работы со звуком. Например, на время написания этого документа в Коллекции Портов FreeBSD не существовало хорошего приложения для преобразования видео, которое могло бы быть использовано для преобразований между разными форматами, как, например, audio/sox. Впрочем, ситуация в этой области меняется быстро.

    Эта глава описывает необходимые шаги для настройки вашей звуковой карты. Настройка и установка XFree86 (Chapter 5) уже позаботилась о вопросах, связанных с аппаратными установками вашей видеокарты, хотя, возможно, могут быть возможности дополнительной настройки для улучшения воспроизведения.

    После прочтения этой главы Вы будете знать:

    Прежде чем начать читать эту главу Вы должны:

    Для разделов о видео подразумевается, что XFree86 4.X (x11/XFree86-4) был установлен. XFree86 3.X может работать, но данная версия не была протестирована с тем, что описывается в этой главе. Если вы найдете, что что-нибудь, описанное здесь, работает с XFree86 3.X, пожалуйста, дайте нам знать.

    Warning: Попытка смонтировать аудио CD или видео DVD при помощи команды mount(8) как минимум, сообщит об ошибке и, как максимум, может привести к панике ядра. Эти носители имеют специальные форматы, которые отличны от обычной файловой системы ISO.

    Этот, и другие документы, могут быть скачаны с ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

    По вопросам связанными с FreeBSD, прочитайте документацию прежде чем писать в <questions@FreeBSD.org>.
    По вопросам связанным с этой документацией, пишите <doc@FreeBSD.org>.
    По вопросам связанным с русским переводом документации, пишите <frdp@FreeBSD.org.ua>.


    Руководство FreeBSDPrevChapter 19 Сложные вопросы работы в сетиNext

    19.4 Bluetooth

    Текст предоставилPav Lucistnik.

    19.4.1 Введение

    Bluetooth является беспроводной технологией для создания персональных сетей на расстоянии не более 10 метров, работающей на частоте 2.4 ГГц, которая не подлежащит лицензированию. Обычно такие сети формируются из портативных устройств, таких, как сотовые телефоны, КПК и лаптопы. В отличие от Wi-Fi, другой популярной беспроводной технологии, Bluetooth предоставляет более высокий уровень сервиса, например, файловые серверы типа FTP, передачу файлов, голоса, эмуляцию последовательного порта и другие.

    Стек протоколов Bluetooth во FreeBSD реализован на основе технологии Netgraph (обратитесь к netgraph(4)). Широкий спектр USB-устройств Bluetooth поддерживается драйвером ng_ubt(4). Устройства Bluetooth на основе набора микросхем Broadcom BCM2033 поддерживается драйвером ng_bt3c(4). Устройства Bluetooth, работающие через последовательные и UART-порты, поддерживаются драйверами sio(4), ng_h4(4) и hcseriald(8). В этой главе описывается использование Bluetooth-устройств, подключаемых через USB. Поддержка Bluetooth имеется во FreeBSD 5.0 и более новых версиях системы.

    19.4.2 Подключение устройства

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

    # kldload ng_ubt

    Если Bluetooth-устройство в момент запуска системы подключено, то загружайте модуль из файла /boot/loader.conf.

    ng_ubt_load="YES"

    Подключите ваше USB-устройство. На консоли (или в журнале syslog) появится примерно такое сообщение.

    ubt0: vendor 0x0a12 product 0x0001, rev 1.10/5.25, addr 2
    ubt0: Interface 0 endpoints: interrupt=0x81, bulk-in=0x82, bulk-out=0x2
    ubt0: Interface 1 (alt.config 5) endpoints: isoc-in=0x83, isoc-out=0x3,
          wMaxPacketSize=49, nframes=6, buffer size=294

    Скопируйте файл /usr/share/examples/netgraph/bluetooth/rc.bluetooth в какое-нибудь подходящее место, например, в файл /etc/rc.bluetooth. Этот скрипт используется для запуска и остановки работы Bluetooth-стека. Перед отключением устройства рекомендуется остановить его работы, хотя (обычно) это не фатально. При запуске стека вы получите сообщения, подобные следующим:

    # /etc/rc.bluetooth start ubt0
    BD_ADDR: 00:02:72:00:d4:1a
    Features: 0xff 0xff 0xf 00 00 00 00 00
    <3-Slot> <5-Slot> <Encryption> <Slot offset>
    <Timing accuracy> <Switch> <Hold mode> <Sniff mode>
    <Park mode> <RSSI> <Channel quality> <SCO link>
    <HV2 packets> <HV3 packets> <u-law log> <A-law log> <CVSD>
    <Paging scheme> <Power control> <Transparent SCO data>
    Max. ACL packet size: 192 bytes
    Number of ACL packets: 8
    Max. SCO packet size: 64 bytes
    Number of SCO packets: 8

    19.4.3 Host Controller Interface (HCI)

    Host Controller Interface (HCI) предоставляет интерфейс для управления контроллером передатчика и менеджером соединений, а также доступ к данным о состоянии оборудования и его управляющим регистрам. Этот интерфейс предоставляет унифицированный метод доступа к передающим возможностям Bluetooth. Уровень HCI на управляющей машине обменивается данными и командами с микрокодом HCI в оборудовании Bluetooth. Драйвер для Host Controller Transport Layer (то есть физической шины) предоставляет обоим слоям HCI возможность обмениваться данными друг с другом.

    Для одного Bluetooth-устройства создаётся один узел Netgraph типа hci. HCI-узел обычно подключается к узлу драйвера устройства Bluetooth (входящий поток) и к узлу L2CAP (исходящий поток). Все операции с HCI должны выполняться на узле HCI, но не на узле драйвера устройства. В качестве имени по умолчанию для узла HCI используется ``devicehci''. Дополнительные подробности можно найти на справочной странице ng_hci(4).

    Одной из самой часто выполняемой задач является обнаружение Bluetooth-устройств в радиусе RF-доступности. Эта операция называется опросом (inquiry). Опрос и другие операции, связанные с HCI, выполняются при помощи утилиты hccontrol(8). Пример ниже показывает, как найти доступные устройства Bluetooth. Список таких устройств должен быть получен в течение нескольких секунд. Заметьте, что удалённые устройства будут отвечать на опрос, если только они находятся в режиме обнаруживаемости (discoverable).

    % hccontrol -n ubt0hci inquiry
    Inquiry result, num_responses=1
    Inquiry result #0
           BD_ADDR: 00:80:37:29:19:a4
           Page Scan Rep. Mode: 0x1
           Page Scan Period Mode: 00
           Page Scan Mode: 00
           Class: 52:02:04
           Clock offset: 0x78ef
    Inquiry complete. Status: No error [00]

    BD_ADDR является уникальным адресом устройства Bluetooth, вроде MAC-адресов сетевых адаптеров. Этот адрес необходим для дальнейшей работы с устройством. Адресу BD_ADDR можно присвоить удобное для чтения имя. Файл /etc/bluetooth/hosts содержит информацию об известных хостах Bluetooth. В следующем примере показано, как получить имя, назначенное удалённому устройству.

    % hccontrol -n ubt0hci remote_name_request 00:80:37:29:19:a4
    BD_ADDR: 00:80:37:29:19:a4
    Name: Pav's T39

    Если вы выполните опрос на другом Bluetooth-устройстве, но ваш компьютер будет опознан как ``your.host.name (ubt0)''. Имя, назначаемое локальному устройству, может быть в любой момент изменено.

    Система Bluetooth предоставляет услуги по соединениям типа точка-точка (при этом задействованы только два устройства Bluetooth) или точка-ко-многим-точкам. В последнем случае соединение используется совместно несколькими устройствам Bluetooth. В следующем примере показывается, как получить список активных для локального устройства соединений.

    % hccontrol -n ubt0hci read_connection_list
    Remote BD_ADDR    Handle Type Mode Role Encrypt Pending Queue State
    00:80:37:29:19:a4     41  ACL    0 MAST    NONE       0     0 OPEN

    Идентификатор соединения (connection handle) полезен, когда необходимо прекратить соединение. Заметьте, что обычно нет нужды делать это вручную. Стек будет автоматически разрывать неактивные соединения.

    # hccontrol -n ubt0hci disconnect 41
    Connection handle: 41
    Reason: Connection terminated by local host [0x16]

    Обратитесь к помощи посредством hccontrol help для получения полного списка доступных HCI-команд. Большинство команд HCI для выполнения не требуют прав администратора системы.

    19.4.4 Logical Link Control and Adaptation Protocol (L2CAP)

    Протокол L2CAP (Logical Link Control and Adaptation Protocol) предоставляет услуги по работе с данными, как ориентированные на соединения, так и без ориентации на них, протоколам более высокого уровня с возможностями мультиплексирования и обеспечением операций по сегментации и обратной сборке. L2CAP позволяет протоколам более высокого уровня и приложениям передавать и получать пакеты данных L2CAP длиной до 64 Кбайт.

    L2CAP основан на концепции каналов. Каналом является логическое соединение поверх соединения по радиоканалу. Каждый канал привязан к некоторому протоколу по принципу многие-к-одному. Несколько каналов могут быть привязаны к одному и тому же протоколу, но канал не может быть привязан к нескольким протоколам. Каждый пакет L2CAP, получаемый каналом, перенаправляется к соответствующему протоколу более высокого уровня. Несколько каналов могут совместно использовать одно и то же радиосоединение.

    Для одного Bluetooth-устройства создается один узел Netgraph типа l2cap. Узел L2CAP обычно подключается к узлу Bluetooth HCI (нижестоящий) и узлам Bluetooth-сокетов (вышестоящие). По умолчанию для узла L2CAP используется имя ``devicel2cap''. Для получения дополнительной информации обратитесь к справочной странице по ng_l2cap(4).

    Полезной является программа l2ping(8), которая может использоваться для проверки связи с другими устройствами. Некоторые реализации Bluetooth могут не возвращать все данные, посылаемые им, так что 0 bytes в следующем примере - это нормально.

    # l2ping -a 00:80:37:29:19:a4
    0 bytes from 0:80:37:29:19:a4 seq_no=0 time=48.633 ms result=0
    0 bytes from 0:80:37:29:19:a4 seq_no=1 time=37.551 ms result=0
    0 bytes from 0:80:37:29:19:a4 seq_no=2 time=28.324 ms result=0
    0 bytes from 0:80:37:29:19:a4 seq_no=3 time=46.150 ms result=0

    Утилита l2control(8) используется для выполнения различных операций с узлами L2CAP. В этом примере показано, как получить список логических соединений (каналов) и перечень радиосоединений локального устройства.

    % l2control -a 00:02:72:00:d4:1a read_channel_list
    L2CAP channels:
    Remote BD_ADDR     SCID/ DCID   PSM  IMTU/ OMTU State
    00:07:e0:00:0b:ca    66/   64     3   132/  672 OPEN
    % l2control -a 00:02:72:00:d4:1a read_connection_list
    L2CAP connections:
    Remote BD_ADDR    Handle Flags Pending State
    00:07:e0:00:0b:ca     41 O           0 OPEN

    Ещё одним диагностическим инструментом является btsockstat(1). Она выполняет действия, подобные тем, что обычно выполняет netstat(1), но со структурами данных, связанных с работой в сети Bluetooth. В примере ниже описывается то же самое логическое соединение, что и с l2control(8) выше.

    % btsockstat
    Active L2CAP sockets
    PCB      Recv-Q Send-Q Local address/PSM       Foreign address   CID   State
    c2afe900      0      0 00:02:72:00:d4:1a/3     00:07:e0:00:0b:ca 66    OPEN
    Active RFCOMM sessions
    L2PCB    PCB      Flag MTU   Out-Q DLCs State
    c2afe900 c2b53380 1    127   0     Yes  OPEN
    Active RFCOMM sockets
    PCB      Recv-Q Send-Q Local address     Foreign address   Chan DLCI State
    c2e8bc80      0    250 00:02:72:00:d4:1a 00:07:e0:00:0b:ca 3    6    OPEN

    19.4.5 Протокол RFCOMM

    Протокол RFCOMM эмулирует последовательные порты поверх протокола L2CAP. Он основан на ETSI-стандарте TS 07.10. RFCOMM представляет собой простой транспортный протокол, с дополнительными возможностями по эмуляции 9 цепей последовательных портов RS-232 (EIATIA-232-E). Протокол RFCOMM поддерживает одновременно до 60 соединений (каналов RFCOMM) между двумя устройствами Bluetooth.

    В рамках RFCOMM полный коммуникационный маршрут включает два приложения, работающие на разных устройствах (конечные коммуникационные точки) с коммуникационным сегментом между ними. RFCOMM предназначен для сокрытия приложений, использующих последовательные порты устройств, в которых они расположены. Коммуникационный сегмент по сути является Bluetooth-связью от одного устройства к другому (прямое соединение).

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

    Во FreeBSD протокол RFCOMM реализован на уровне сокетов Bluetooth.

    19.4.6 Pairing of Devices

    По умолчанию связь Bluetooth не аутентифицируется, поэтому любое устройство может общаться с любым другим. Устройство Bluetooth (например, сотовый телефон) может задать обязательность аутентификации для предоставления определённого сервиса (в частности, услугу доступа по коммутируемой линии). Bluetooth-аутентификация обычно выполняется через PIN-коды. PIN-код представляет из себя ASCII-строку длиной до 16 символов. Пользователь обязан ввести один и тот же PIN-код на обоих устройствах. Как только он введёт PIN-код, оба устройства сгенерируют ключ связи. После этого ключ может быть сохранён либо в самом устройстве, либо на постоянном носителе. В следующий раз оба устройства будут использовать ранее сгенерированный ключ соединения. Процедура, описанная выше, носит название подгонки пары (pairing). Заметьте, что если ключ связи потерян любой из сторон, то подбор пары должен быть повторен.

    За обработку всех запросов на Bluetooth-аутентификацию отвечает даемон hcsecd(8). По умолчанию файл конфигурации называется /etc/bluetooth/hcsecd.conf. Пример раздела, содержащего информацию о сотовом телефоне с явно заданным PIN-кодом ``1234'' приведен ниже.

    device {
            bdaddr  00:80:37:29:19:a4;
            name    "Pav's T39";
            key     nokey;
            pin     "1234";
          }

    Кроме длины, на PIN-коды не накладывается никаких ограничений. Некоторые устройства (например, Bluetooth-гарнитуры) могут иметь фиксированный встроенный PIN-код. Параметр -d позволяет запустить hcsecd(8) как нефоновый процесс, что облегчает просмотр происходящих событий. Задайте получение парного ключа на удалённом устройстве и инициируйте Bluetooth-соединение с этим устройством. Удалённое устройство должно подтвердить получение пары и запросить PIN-код. Введите тот же самый код, что находится в hcsecd.conf. Теперь ваш ПК и удалённое устройство спарены. Альтернативным способом является инициация процесса создания пары на удалённом устройстве. Ниже даётся пример выдачи протокола команды hcsecd.

    hcsecd[16484]: Got Link_Key_Request event from 'ubt0hci', remote bdaddr 0:80:37:29:19:a4
    hcsecd[16484]: Found matching entry, remote bdaddr 0:80:37:29:19:a4, name 'Pav's T39', link key doesn't exist
    hcsecd[16484]: Sending Link_Key_Negative_Reply to 'ubt0hci' for remote bdaddr 0:80:37:29:19:a4
    hcsecd[16484]: Got PIN_Code_Request event from 'ubt0hci', remote bdaddr 0:80:37:29:19:a4
    hcsecd[16484]: Found matching entry, remote bdaddr 0:80:37:29:19:a4, name 'Pav's T39', PIN code exists
    hcsecd[16484]: Sending PIN_Code_Reply to 'ubt0hci' for remote bdaddr 0:80:37:29:19:a4

    19.4.7 Service Discovery Protocol (SDP)

    Протокол обнаружения сервисов SDP даёт возможность клиентским приложениям осуществлять поиск услуг, предоставляемых серверными приложениями, а также характеристик этих услуг. В перечень атрибутов сервиса включается тип класса предлагаемого сервиса и информация о механизме или протоколе, требуемом для использования сервиса.

    SDP подразумевает коммуникации между SDP-сервером и SDP-клиентом. Сервер поддерживает список сервисов, в котором описываются параметры сервисов, связанных с сервером. Каждая запись об услуге содержит информацию об одном сервисе. Клиент может запросить информацию об опеределённом сервисе, обслуживаемом SDP-сервером, выдавая SDP-запрос. Если клиент или приложение, связанное с клиентом, решат воспользоваться сервисом, то для его использования необходимо открыть отдельное соединение к устройству, предоставляющему сервис. SDP предоставляет механизм обнаружения услуг и их параметров, но не даёт механизма использования этих сервисов.

    Обычно SDP-клиент выполняет поиск услуг на основе некоторых желаемых характеристик услуг. Однако иногда возникает необходимость выяснить полный перечень типов услуг, предоставляемых SDP-сервером, не имея никакой информации об имеющихся сервисах. Такой процесс всех предлагаемых сервисов называется обзором (browsing).

    Существующие на данный момент серверы и клиенты SDP реализованы в пакете стороннего разработчика sdp-1.5, который можно сгрузить здесь. Утилита sdptool является SDP-клиентом, управляемым из командной строки. В следующем примере показано, как выполнять запрос на SDP-обзор.

    # sdptool browse 00:80:37:29:19:a4
    Browsing 00:80:37:29:19:A4 ...
    Service Name: Dial-up Networking
    Protocol Descriptor List:
     "L2CAP" (0x0100)
     "RFCOMM" (0x0003)
       Channel: 1
    
    Service Name: Fax
    Protocol Descriptor List:
     "L2CAP" (0x0100)
     "RFCOMM" (0x0003)
       Channel: 2
    
    Service Name: Voice gateway
    Service Class ID List:
     "Headset Audio Gateway" (0x1112)
     "Generic Audio" (0x1203)
    Protocol Descriptor List:
     "L2CAP" (0x0100)
     "RFCOMM" (0x0003)
       Channel: 3

    ... и так далее. Заметьте, что каждый сервис имеет перечень атрибутов (например, канал RFCOMM). В зависимости от сервиса вам может потребоваться где-то сохранить эти атрибуты. Некоторые реализации Bluetooth не поддерживают просмотр сервисов и могут возвращать пустой список. В этом случае возможен поиск конкретной услуги. В примере ниже показано, как выполнить поиск службы OBEX Object Push (OPUSH).

    # sdptool search --bdaddr 00:07:e0:00:0b:ca OPUSH

    Во FreeBSD предоставление сервисов клиентам Bluetooth осуществляется сервером sdpd.

    # sdpd

    Для регистрации сервиса в локальном SDP-сервере также применяется утилита sdptool. В примере ниже показывается, как зарегистрировать Network Access с услугой PPP (LAN). Заметьте, что некоторые сервисы требуют указания их атрибутов (например, канала RFCOMM).

    # sdptool add --channel=7 LAN

    Перечень сервисов, зарегистрированных в локальном SDP-сервере, может быть получен посылкой SDP-запроса на просмотр ``специального'' адреса BD_ADDR.

    # sdptool browse ff:ff:ff:00:00:00

    19.4.8 Доступ к сети по коммутируемой линии связи (DUN) и по протоколу PPP (LAN)

    Модуль работы с коммутируемым доступом к сети (DUN - Dial-Up Networking) в большинстве случаев используется с модемами и сотовыми телефонами. Этот модуль покрывает следующие случаи:

    Модуль доступа к сети по протоколу PPP (Network Access with PPP - LAN) может использоваться в следующих ситуациях:

    Во FreeBSD оба случая реализуются при помощи сервисных программ ppp(8) и rfcomm_pppd(8) - это обработчик, преобразующий RFCOMM-соединения Bluetooth в нечто, с чем может работать PPP. Перед тем, как использовать любой модуль, в файле /etc/ppp/ppp.conf должна быть создана новая PPP-метка. Примеры использования можно найти в справочной странице к rfcomm_pppd(8).

    В следующем примере rfcomm_pppd(8) будет использоваться для открытия RFCOMM-соединения к удалённому устройству с BD_ADDR 00:80:37:29:19:a4 на DUN RFCOMM-канале. Реальный номер RFCOMM-канала будет получаться с удалённого устройства через SDP. Возможно указать RFCOMM-канал вручную, и в этом случае rfcomm_pppd(8) не будет выполнять SDP-запрос. Для нахождения RFCOMM-канала на удалённом устройстве используйте утилиту sdptool.

    # rfcomm_pppd -a 00:80:37:29:19:a4 -c -C dun -l rfcomm-dialup

    Для того, чтобы организовать сервис Network Access with PPP (LAN), необходимо запустить сервер sdpd. Также необходимо зарегистрировать сервис LAN на локальном SDP-сервере. Заметьте, что сервис LAN требует наличия RFCONN-канала. В файле /etc/ppp/ppp.conf должна быть создана новая запись для клиентов LAN. Примеры можно найти в справке по rfcomm_pppd(8). Наконец, должен быть запущен сервер RFCOMM PPP, который работает и прослушивает на том же самом RFCOMM-канале, что зарегистрирован на локальном SDP-сервере. В примере ниже показано, как запустить сервер RFCOMM PPP.

    # rfcomm_pppd -s -C 7 -l rfcomm-server

    19.4.9 OBEX Push (OPUSH) Profile

    OBEX является широкоиспользуемым протоколом для простой передачи файлов между мобильными устройствами. В основном он используется в коммуникациях через инфракрасный порт для передачи файлов между ноутбуками или КПК компании Palm, а также для пересылки визитных карточек или календарных планов между сотовыми телефонами и другими устройствами с персональными информационными менеджерами.

    Сервер и клиент OBEX реализованы в виде пакета стороннего разработчика obexapp-1.0, который можно сгрузить отсюда. Пакет требует наличия библиотеки openobex (она включена в пакет) и порта devel/glib12. Заметьте, что для работы obexapp привилегий администратора системы не требуются.

    Клиент OBEX используется для посылки или приёма объектов с сервера OBEX. Объектом, к примеру, может быть визитная карточка или указание. Клиент OBEX может получить номер RFCOMM-канала, указав вместо него имя сервиса. Поддерживаются следующие имена сервиса: IrMC, FTRN и OPUSH. Канал RFCOMM можно задать его номером. Ниже даётся пример сеанса OBEX, где с сотового телефона забирается объект с информацией об устройстве, а новый объект (визитная карточка) передаётся в каталог сотового телефона.

    % obexapp -a 00:80:37:29:19:a4 -C IrMC
    obex> get
    get: remote file> telecom/devinfo.txt
    get: local file> devinfo-t39.txt
    Success, response: OK, Success (0x20)
    obex> put
    put: local file> new.vcf
    put: remote file> new.vcf
    Success, response: OK, Success (0x20)
    obex> di
    Success, response: OK, Success (0x20)

    Для того, чтобы предоставить сервис OBEX Push, должен быть запущен сервер sdpd. Он также требуется и для регистрации услуги OPUSH на локальном SDP-сервере. Заметьте, что сервис OPUSH требует для своей работы RFCOMM-канал. Должен быть создан корневой каталог, в котором будут сохраняться все поступающие объекты. По умолчанию корневым каталогом является /var/spool/obex. Наконец, сервер OBEX должен работать и прослушивать тот же самый RFCOMM-канал, что зарегистрирован на локальном SDP-сервере. В примере ниже показано, как запустить OBEX-сервер.

    # obexapp -s -C 10

    19.4.10 Модуль последовательного порта (SP)

    Модуль последовательного порта (SP - Serial Port) позволяет Bluetooth-устройству осуществлять эмуляцию последовательного порта RS232 (или подобного). Этот модуль покрывает случаи, касающиеся работы унаследованных приложений с Bluetooth в качестве замены кабельному соединению, при это используется абстракция виртуального последовательного порта.

    Утилита rfcomm_sppd(1) является модулем, реализующим последовательный порт. В качестве виртуального последовательного порта используется псевдотерминал. В примере ниже показано, как подключиться к сервису Serial Port удалённого устройства. Заметьте, что вы не указываете RFCOMM-канал - rfcomm_sppd(1) может получить его с удалённого устройства через SDP. Если вы хотите переопределить это, укажите RFCOMM-канал явно в командной строке.

    # rfcomm_sppd -a 00:07:E0:00:0B:CA -t /dev/ttyp6
    rfcomm_sppd[94692]: Starting on /dev/ttyp6...

    После подключения псевдотерминал можно использовать как последовательный порт.

    # cu -l ttyp6

    19.4.11 Решение проблем

    19.4.11.1 Удалённое устройство не подключается

    Некоторые старые Bluetooth-устройства не поддерживают переключение ролей. По умолчанию, когда FreeBSD подтверждает новое соединение, она пытается выполнить переключение роли и стать ведущим устройством. Устройства, которые это не поддерживают, не смогут подключиться. Заметьте, что переключение ролей выполняется при установлении нового соединения, поэтому невозможно выяснить, поддерживает ли удалённое устройство переключение ролей. На локальной машине имеется возможность отключить переключение ролей при помощи HCI-параметра.

    # hccontrol -n ubt0hci write_node_role_switch 0

    19.4.11.2 Что-то идёт не так, можно ли посмотреть, что в точности происходит?

    Да, можно. Воспользуйтесь пакетом hcidump-1.5 стороннего разработчика, который доступен для сгрузки здесь. Утилита hcidump похожа на tcpdump(1). Она может использоваться для вывода на терминал содержимого Bluetooth-пакетов и сбрасывать пакеты Bluetooth в файл.

    Этот, и другие документы, могут быть скачаны с ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

    По вопросам связанными с FreeBSD, прочитайте документацию прежде чем писать в <questions@FreeBSD.org>.
    По вопросам связанным с этой документацией, пишите <doc@FreeBSD.org>.
    По вопросам связанным с русским переводом документации, пишите <frdp@FreeBSD.org.ua>.


    Руководство FreeBSDPrevChapter 19 Сложные вопросы работы в сетиNext

    19.5 Мосты

    Текст создалSteve Peterson.

    19.5.1 Введение

    Иногда полезно разделить одну физическую сеть (такую, как сегмент Ethernet) на два отдельных сегмента сети без необходимости создания подсетей IP и использования маршрутизатора для соединения сегментов. Устройство, которое соединяет две сети на такой манер, называется ``сетевым мостом'' (``bridge''). Система FreeBSD с двумя сетевыми адаптерами может выступать в роли моста.

    Мост работает на основе изучения адресов уровня MAC (адресов Ethernet) устройств на каждом из своих сетевых интерфейсах. Он перенаправляет трафик между двумя сетями, только когда адреса отправителя и получателя находятся в разных сетях.

    По многим параметрам мост работает также, как коммутатор Ethernet с малым количеством портов.

    19.5.2 Ситуации, когда можно использовать мосты

    На сегодняшний день есть две ситуации, когда можно использовать мост.

    19.5.2.1 Большой трафик в сегменте

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

    Давайте рассмотрим в качестве примера газету, в которой редакторский и производственный отделы находятся в одной и той же подсети. Пользователи в редакторском отделе все используют сервер A для служб доступа к файлам, а пользователи производственного отдела используют сервер B. Для объединения всех пользователей используется сеть Ethernet, а высокая нагрузка на сеть замедляет работу.

    Если пользователи редакторского отдела могут быть собраны в одном сегменте сети, а пользователи производственного отдела в другом, то два сетевых сегмента можно объединить мостом. Только сетевой трафик, предназначенный для интерфейсов с ``другой'' стороны моста, будет посылаться в другую сеть, тем самым снижая уровень нагрузки на каждый сегмент сети.

    19.5.2.2 Межсетевой экран с возможностями фильтрации/ограничения пропускной способности трафика

    Второй распространенной ситуацией является необходимость в обеспечении функций межсетевого экрана без трансляции сетевых адресов (NAT).

    Для примера можно взять маленькую компанию, которая подключена к своему провайдеру по каналу DSL или ISDN. Для неё провайдер выделил 13 глобально доступных IP-адресов для имеющихся в сети 10 персональных компьютеров. В такой ситуации использование межсетевого экрана на основе маршрутизатора затруднено из-за проблем с разделением на подсети.

    Межсетевой экран на основе моста может быть настроен и включен между маршрутизаторами DSL/ISDN без каких-либо проблем с IP-адресацией.

    19.5.3 Настройка моста

    19.5.3.1 Выбор сетевого адаптера

    Для работы моста требуются по крайней мере два сетевых адаптера. К сожалению, не все сетевые адаптеры во FreeBSD 4.0 поддерживают функции моста. Прочтите страницу Справочника по bridge(4) для выяснения подробностей о поддерживаемых адаптерах.

    Перед тем, как продолжить, сначала установите и протестируйте два сетевых адаптера.

    19.5.3.2 Изменения в конфигурации ядра

    Для включения поддержки функций моста в ядре, добавьте строчку

    options BRIDGE

    в файл конфигурации вашего ядра, и перестройте ядро.

    19.5.3.3 Поддержка функций межсетевого экрана

    Если вы планируете использовать мост в качестве межсетевого экрана, вам нужно также добавить опцию IPFIREWALL. Прочтите раздел Section 10.8, содержащий общую информацию о настройке моста в качестве межсетевого экрана.

    Если вам необходимо обеспечить прохождение не-IP пакетов (таких, как ARP) через мост, то имеется опция межсетевого экрана, которую можно задать. Это опция IPFIREWALL_DEFAULT_TO_ACCEPT. Заметьте, что при этом правило, используемое межсетевым экраном по умолчанию, меняется на разрешительное для всех пакетов. Перед тем, как задавать эту опцию, убедитесь, что вы понимаете работу вашего набора правил.

    19.5.3.4 Поддержка функций ограничения пропускной способности

    Если вы хотите использовать мост в качестве машины, ограничивающей пропускную способность, то добавьте в файл конфигурации ядра опцию DUMMYNET. Дополнительную информацию можно почерпнуть из страницы Справочника по dummynet(4).

    19.5.4 Включение функций моста

    Добавьте строку

    net.link.ether.bridge=1

    в файл /etc/sysctl.conf для включения функций моста во время работы системы, и строку:

    net.link.ether.bridge_cfg=if1,if2

    для включения функций моста для указанных интерфейсов (замените if1 и if2 на имена двух ваших сетевых интерфейсов). Если вы хотите, чтобы проходящие через мост пакеты фильтровались посредством ipfw(8), вы должны добавить строчку:

    net.link.ether.bridge_ipfw=1

    Во FreeBSD 5.2-RELEASE и последующих версиях нужно использовать вместо указанных следующие строки:

    net.link.ether.bridge.enable=1
    net.link.ether.bridge.config=if1,if2
    net.link.ether.bridge.ipfw=1

    19.5.5 Дополнительные замечания

    Если вы хотите осуществлять удалённый доступ на мост через telnet(1) из сети, то корректно назначить одному из сетевых адаптеров IP-адрес. Общепринято, что назначение адреса обоим сетевым адаптерам является не самой хорошей идеей.

    Если в вашей сети присутствует несколько мостов, не должно быть более одного маршрута между любыми двумя рабочими станциями. С технической точки зрения это означает отсутствие поддержки протокола spanning tree.

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

    Этот, и другие документы, могут быть скачаны с ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

    По вопросам связанными с FreeBSD, прочитайте документацию прежде чем писать в <questions@FreeBSD.org>.
    По вопросам связанным с этой документацией, пишите <doc@FreeBSD.org>.
    По вопросам связанным с русским переводом документации, пишите <frdp@FreeBSD.org.ua>.


    Руководство FreeBSDPrevChapter 19 Сложные вопросы работы в сетиNext

    19.10 DHCP

    Текст написалGreg Sutter.

    19.10.1 Что такое DHCP?

    DHCP, или Dynamic Host Configuration Protocol (Протокол Динамической Конфигурации Хостов), описывает порядок, по которому система может подключиться к сети и получить необходимую информацию для работы в ней. Во FreeBSD используется реализация DHCP от ISC (Internet Software Consortium), так что вся информация, описывающая особенности, зависящие от реализации, относится к дистрибутиву ISC.

    19.10.2 Что описывается в этом разделе

    В этом разделе описываются компоненты системы ISC DHCP как со стороны клиента, так и со стороны сервера. Программа, работающая на клиентской стороне, dhclient, интегрирована в поставку FreeBSD, а серверная часть доступна в виде порта net/isc-dhcp3-server. Кроме ссылок ниже, много полезной информации находится на страницах справочной системы, описывающих dhclient(8), dhcp-options(5) и dhclient.conf(5).

    19.10.3 Как это работает

    Когда на клиентской машине выполняется программа dhclient, являющаяся клиентом DHCP, она начинает широковещательную рассылку запросов на получение настроечной информации. По умолчанию эти запросы делаются на 68 порт UDP. Сервер отвечает на UDP 67, выдавая клиенту адрес IP и другую необходимую информацию, такую, как сетевую маску, маршрутизатор и серверы DNS. Вся эта информация даётся в форме ``аренды'' DHCP и верна только определенное время (что настраивается администратором сервера DHCP). При таком подходе устаревшие адреса IP тех клиентов, которые больше не подключены к сети, могут автоматически использоваться повторно.

    Клиенты DHCP могут получить от сервера очень много информации. Подробный список находится в странице Справочника dhcp-options(5).

    19.10.4 Интеграция с FreeBSD

    Клиент DHCP от ISC, dhclient, полностью интегрирован во FreeBSD. Поддержка клиента DHCP есть как в программе установки, так и в самой системе, что исключает необходимость в знании подробностей конфигурации сети в любой сети, имеющей сервер DHCP. Утилита dhclient включена во все версии FreeBSD, начиная с 3.2.

    DHCP поддерживается утилитой sysinstall. При настройке сетевого интерфейса из программы sysinstall первый вопрос, который вам задается, это ``Do you want to try DHCP configuration of this interface?'' (``Хотите ли вы попробовать настроить этот интерфейс через DHCP?''). Утвердительный ответ приведёт к запуску программы dhclient, и при удачном его выполнении к автоматическому заданию информации для настройки интерфейса.

    Есть две вещи, которые вы должны сделать для того, чтобы ваша система использовала DHCP при загрузке:

    Note: Обязательно замените fxp0 на имя интерфейса, который вы хотите настраивать динамически, как это описано в Section 6.8.

    Если dhclient в вашей системе находится в другом месте или если вы хотите задать дополнительные параметры для dhclient, то также укажите следующее (изменив так, как вам нужно):

    dhcp_program="/sbin/dhclient"
    dhcp_flags=""

    Сервер DHCP, dhcpd, включён как часть порта net/isc-dhcp3-server в коллекцию портов. Этот порт содержит DHCP-сервер от ISC и документацию.

    19.10.5 Файлы

    19.10.6 Дополнительная литература

    Полное описание протокола DHCP дается в RFC 2131. Кроме того, дополнительная информация есть на сервере dhcp.org.

    19.10.7 Установка и настройка сервера DHCP

    19.10.7.1 Чему посвящён этот раздел

    Этот раздел даёт информацию о том, как настроить систему FreeBSD для работы в качестве сервера DHCP на основе реализации пакета DHCP от ISC (Internet Software Consortium).

    Серверная часть пакета не поставляется как часть FreeBSD, так что вам потребуется установить порт net/isc-dhcp3-server для получения этого сервиса. Обратитесь к Chapter 4 для получения более полной информации об использовании коллекции портов.

    19.10.7.2 Установка сервера DHCP

    Для того, чтобы настроить систему FreeBSD на работу в качестве сервера DHCP, вам необходимо обеспечить присутствие устройства bpf(4), вкомпилированного в ядро. Для этого добавьте строку pseudo-device bpf в файл конфигурации вашего ядра. Для получения более полной информации о построении ядер, обратитесь к Chapter 9.

    Устройство bpf уже входит в состав ядра GENERIC, поставляемого с FreeBSD, так что вам не нужно создавать собственное ядро для обеспечения работы DHCP.

    Note: Те, кто обращает особое внимание на вопросы безопасности, должны заметить, что bpf является тем устройством, что позволяет нормально работать снифферам пакетов (хотя таким программам требуются привилегированный доступ). Наличие устройства bpf обязательно для использования DHCP, но если вы очень обеспокоены безопасностью, наверное, вам не нужно включать bpf в ваше ядро только потому, что в отдалённом будущем вы собираетесь использовать DHCP.

    Следующим действием, которое вам нужно выполнить, является редактирование примерного dhcpd.conf, который устанавливается в составе порта net/isc-dhcp3-server. По умолчанию это файл /usr/local/etc/dhcpd.conf.sample, и вы должны скопировать его в файл /usr/local/etc/dhcpd.conf перед тем, как его редактировать.

    19.10.7.3 Настройка сервера DHCP

    dhcpd.conf состоит из деклараций относительно подсетей и хостов, и проще всего описывается на примере:

    option domain-name "example.com";(1)
    option domain-name-servers 192.168.4.100;(2)
    option subnet-mask 255.255.255.0;(3)
    
    default-lease-time 3600;(4)
    max-lease-time 86400;(5)
    ddns-update-style none;(6)
    
    subnet 192.168.4.0 netmask 255.255.255.0 {
      range 192.168.4.129 192.168.4.254;(7)
      option routers 192.168.4.1;(8)
    }
    
    host mailhost {
      hardware ethernet 02:03:04:05:06:07;(9)
      fixed-address mailhost.example.com;(10)
    }
    (1)
    Этот параметр задаёт домен, который будет выдаваться клиентам в качестве домена, используемого по умолчанию при поиске. Обратитесь к страницам справочной системы по resolv.conf(5) для получения дополнительной информации о том, что это значит.
    (2)
    Этот параметр задаёт список разделённых запятыми серверов DNS, которые должен использовать клиент.
    (3)
    Маска сети, которая будет выдаваться клиентам.
    (4)
    Клиент может запросить определённое время, которое будет действовать выданная информация. В противном случае сервер выдаст настройки с этим сроком (в секундах).
    (5)
    Это максимальное время, на которое сервер будет выдавать конфигурацию. Если клиент запросит больший срок, он будет подтверждён, но будет действовать только max-lease-time секунд.
    (6)
    Этот параметр задаёт, будет ли сервер DHCP пытаться обновить DNS при выдаче или освобождении конфигурационной информации. В реализации ISC этот параметр является обязательным.
    (7)
    Это определение того, какие IP-адреса должны использоваться в качестве резерва для выдачи клиентам. IP-адреса между и включая границы, будут выдаваться клиентам.
    (8)
    Объявление маршрутизатора, используемого по умолчанию, который будет выдаваться клиентам.
    (9)
    Аппаратный MAC-адрес хоста (чтобы сервер DHCP мог распознать хост, когда тот делает запрос).
    (10)
    Определение того, что хосту всегда будет выдаваться один и тот же IP-адрес. Заметьте, что указание здесь имени хоста корректно, так как сервер DHCP будет разрешать имя хоста самостоятельно до того, как выдать конфигурационную информацию.

    Как только вы закончите составлять свой dhcpd.conf, вы можете продолжить работу запуском сервера при помощи следующей команды:

    # /usr/local/etc/rc.d/isc-dhcpd.sh start

    Если в будущем вам понадобится сделать изменения в настройке вашего сервера, то важно заметить, что посылка сигнала SIGHUP приложению dhcpd не приведёт к перезагрузке настроек, как это бывает для большинства даемонов. Вам нужно послать сигнал SIGTERM для остановки процесса, а затем перезапустить его при помощи вышеприведённой команды.

    19.10.7.4 Файлы

    • /usr/local/sbin/dhcpd

      dhcpd скомпонован статически и расположен в каталоге /usr/local/sbin. Страницы справочной системы dhcpd(8), устанавливаемые портом, содержат более полную информацию о dhcpd.

    • /usr/local/etc/dhcpd.conf

      dhcpd требует наличия конфигурационного файла, /usr/local/etc/dhcpd.conf, до того, как он будет запущен и начнёт предоставлять сервис клиентам. Необходимо, чтобы этот файл содержал все данные, которая будет выдаваться обслуживаемым клиентам, а также информацию о работе сервера. Этот конфигурационный файл описывается на страницах справочной системы dhcpd.conf(5), которые устанавливаются портом.

    • /var/db/dhcpd.leases

      Сервер DHCP ведёт базу данных выданной информации в этом файле, который записывается в виде протокола. Страницы справочной системы dhcpd.leases(5), устанавливаемые портом, дают гораздо более подробное описание.

    • /usr/local/sbin/dhcrelay

      dhcrelay используется в сложных ситуациях, когда сервер DHCP пересылает запросы от клиента другому серверу DHCP в отдельной сети. Если вам нужна такая функциональность, то установите порт net/isc-dhcp3-server. На страницах справочной системы dhcrelay(8), которые устанавливаются портом, даётся более полное описание.

    Этот, и другие документы, могут быть скачаны с ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

    По вопросам связанными с FreeBSD, прочитайте документацию прежде чем писать в <questions@FreeBSD.org>.
    По вопросам связанным с этой документацией, пишите <doc@FreeBSD.org>.
    По вопросам связанным с русским переводом документации, пишите <frdp@FreeBSD.org.ua>.


    Руководство FreeBSDPrevChapter 19 Сложные вопросы работы в сетиNext

    19.7 Работа с бездисковыми станциями

    Текст обновилJean-FranГois DockХs.

    Машина с FreeBSD может загружаться по сети и работать без наличия локального диска, используя файловые системы, монтируемые с сервера NFS. Кроме стандартных конфигурационных файлов, не нужны никакие модификации в системе. Такую систему легко настроить, потому что все необходимые элементы уже готовы:

    Существует много способов настройки бездисковой рабочей станции. При этом задействованы многие компоненты, и большинство из них могут быть настроены для удовлетворения ваших вкусов. Далее будет описана полная настройка системы, при этом упор будет делаться на простоту и совместимость с стандартной системой скриптов начальной загрузки FreeBSD. Описываемая система имеет такие характеристики:

    Caution: Как описано, эта система незащищена. Она должна располагаться в защищенной части сети, а другие хосты не должны на нее полагаться.

    19.7.1 Инструкции по настройке

    19.7.1.1 Настройка DHCP/BOOTP

    Есть два протокола, часто используемых для загрузки рабочих станций, которые запрашивают свою конфигурацию по сети: BOOTP и DHCP. При начальной загрузке рабочей станции они используются в нескольких местах:

    • etherboot использует (по умолчанию) DHCP или BOOTP (требуется опция при настройке) для поиска ядра. (PXE использует DHCP).

    • Ядро использует BOOTP для поиска корневой файловой системы в NFS.

    Возможна настройка системы на использование исключительно BOOTP. Программа сервера bootpd(8) включена в базовую систему FreeBSD.

    Однако DHCP имеет некоторый набор преимуществ перед BOOTP (лучше настроечные файлы, возможность использования PXE, плюс множество других, напрямую не связанных к работе без диска), и мы опишем как конфигурацию с чистым BOOTP, так и BOOTP+DHCP, с упором на последнее, в котором используется пакет DHCP от ISC.

    19.7.1.1.1 Конфигурация с использованием ISC DHCP

    Сервер isc-dhcp может обрабатывать как запросы BOOTP, так и запросы DHCP.

    Начиная с релиза 4.4, isc-dhcp 3.0 не включается в поставку системы. Сначала вам нужно будет установить порт net/isc-dhcp3-server или соответствующий пакадж. Пожалуйста, обратитесь к Chapter 4 для получения общего представления о портах и пакаджах.

    После установки isc-dhcp ему для работы требуется конфигурационный файл (обычно называемый /usr/local/etc/dhcpd.conf). Вот прокомментированный пример:

                default-lease-time 600;
                max-lease-time 7200;
                authoritative;
    
                option domain-name "example.com";
                option domain-name-servers 192.168.4.1;
                option routers 192.168.4.1;
    
                subnet 192.168.4.0 netmask 255.255.255.0 {
                  use-host-decl-names on; (1)
                  option subnet-mask 255.255.255.0;
                  option broadcast-address 192.168.4.255;
    
                  host margaux {
                    hardware ethernet 01:23:45:67:89:ab;
                    fixed-address margaux.example.com;
                    next-server 192.168.4.4;(2)
                    filename "/tftpboot/kernel.diskless";(3)
                    option root-path "192.168.4.4:/data/misc/diskless";(4)
                  }
                }
              
    (1)
    Этот параметр указывает dhcpd посылать значения деклараций host как имя хоста для бездисковой машины. Альтернативным способом было бы добавление option host-name margaux внутри объявлений хоста.
    (2)
    Директива next-server определяет сервер TFTP (по умолчанию используется тот же самый хост, на котором расположен сервер DHCP).
    (3)
    Директива filename определяет файл, который будет загружать etherboot в качестве ядра.

    Note: Похоже, что PXE предпочитает относительное имя файла, и он загружает pxeboot, а не ядро (option filename "pxeboot").

    (4)
    Параметр root-path определяет путь к корневой файловой системе, в обычной нотации NFS.

    19.7.1.1.2 Настройка с использованием BOOTP

    Далее описана эквивалентная конфигурация с использованием bootpd. Она будет располагаться в /etc/bootptab.

    Пожалуйста, отметьте, что etherboot должен быть откомпилирован с нестандартной опцией NO_DHCP_SUPPORT для того, чтобы можно было использовать BOOTP, и что для работы PXE необходим DHCP. Единственным очевидным преимуществом bootpd является его наличие в поставке системы.

              .def100:\
                :hn:ht=1:sa=192.168.4.4:vm=rfc1048:\
                :sm=255.255.255.0:\
                :ds=192.168.4.1:\
                :gw=192.168.4.1:\
                :hd="/tftpboot":\
                :bf="/kernel.diskless":\
                :rp="192.168.4.4:/data/misc/diskless":
    
              margaux:ha=0123456789ab:tc=.def100
              

    19.7.1.2 Подготовка программы загрузки при помощи Etherboot

    Сайт Etherboot содержит подробную документацию, в основном предназначенную для систем Linux, но несомненно, она полезна. Далее будет просто кратко описано, как вы должны использовать etherboot в системе FreeBSD.

    Сначала вы должны установить пакадж или порт net/etherboot. Порт etherboot обычно расположен в /usr/ports/net/etherboot. Если в вашей системе установлено дерево портов, просто наберите make в этом каталоге, все остальное будет сделано за вас. Либо обратитесь к Chapter 4 для получения информации о портах и пакаджах.

    В нашей ситуации мы будем использовать загрузочную дискету. Для других методов (PROM или программа DOS) пожалуйста, обратитесь к документации по etherboot.

    Для создания загрузочной дискеты, вставьте дискету в дисковод на машине, где установлен etherboot, затем перейдите в каталог src в дереве etherboot и наберите:

    	  # gmake bin32/devicetype.fd0
    	

    devicetype зависит от типа адаптера Ethernet на бездисковой рабочей станции. Обратитесь к файлу NIC в том же самом каталоге для определения правильного значения для devicetype.

    19.7.1.3 Настройка серверов TFTP и NFS

    Вам нужно включить tftpd на сервере TFTP:

    1. Создайте каталог, файлы которого будет обслуживать tftpd, например, /tftpboot.

    2. Добавьте в ваш /etc/inetd.conf такую строчку:

      tftp    dgram   udp     wait    root  /usr/libexec/tftpd    tftpd -s /tftpboot

      Note: Бывает, что некоторым версиям PXE требуется TCP-вариант TFTP. В таком случае добавьте вторую строчку, заменяющую dgram udp на stream tcp.

    3. Укажите inetd на повторное чтение своего конфигурационного файла:

      # kill -HUP `cat /var/run/inetd.pid`

    Вы можете поместить каталог tftpboot в любом месте на сервере. Проверьте, что это местоположение указано как в inetd.conf, так и в dhcpd.conf.

    Вам также нужно включить NFS и экспортировать соответствующую файловую систему на сервере NFS.

    1. Добавьте следующее в /etc/rc.conf:

      nfs_server_enable="YES"
    2. Проэкспортируйте файловую систему, в которой расположен корневой каталог для бездисковой рабочей станции, добавив следующую строку в /etc/exports (подправьте точку монтирования и замените margaux на имя бездисковой рабочей станции):

      /data/misc -alldirs -ro margaux
    3. Укажите mountd на повторное чтение настроечного файла. На самом деле если вам потребовалось на первом шаге включить NFS в /etc/rc.conf, то вам нужно будет выполнить перезагрузку.

      # kill -HUP `cat /var/run/mountd.pid`

    19.7.1.4 Построение ядра для бездисковой рабочей станции

    Создайте конфигурационный файл ядра для бездискового клиента со следующими параметрами (вдобавок к обычным):

              options     BOOTP          # Use BOOTP to obtain IP address/hostname
              options     BOOTP_NFSROOT  # NFS mount root filesystem using BOOTP info
              options     BOOTP_COMPAT   # Workaround for broken bootp daemons.
    	

    Вам может потребоваться использовать BOOTP_NFSV3 и BOOTP_WIRED_TO (посмотрите LINT).

    Постройте ядро (обратитесь к Chapter 9) и скопируйте его в каталог tftp под именем, указанным в dhcpd.conf.

    19.7.1.5 Подготовка корневой файловой системы

    Вам нужно создать корневую файловую систему для бездисковых рабочих станций, в местоположении, заданном как root-path в dhcpd.conf.

    Самым простым способом сделать это является использование скрипта /usr/share/examples/diskless/clone_root. Этот скрипт требуется настроить, по крайней мере, подправив место, где будет создана файловая система (переменная DEST).

    Прочтите комментарии в начале скрипта для получения указаний. Там описано, как строится основная файловая система, и как файлы могут быть выборочно заменены версиями, предназначенными для работы без диска, для подсети или для отдельной рабочей станции. Также здесь даются примеры бездисковых файлов /etc/fstab и /etc/rc.conf.

    Файлы README в /usr/share/examples/diskless много интересной информации, но вместе с другими примерами из каталога diskless они на самом деле описывают метод настройки, который отличается от того, что используется в clone_root и /etc/rc.diskless[12], этим несколько запутывая дело. Используйте их только для справки, за исключением того случая, когда вы выберете метод, ими описываемый, и тогда вам нужны исправленные скрипты rc.

    19.7.1.6 Настройка области подкачки

    Если это нужно, то файл подкачки, расположенный на сервере, можно использовать посредством NFS. Точные параметры bootptab или dhcpd.conf пока плохо документированы. Сообщается, что работает следующая конфигурация с использованием isc-dhcp 3.0rc11.

    1. Добавьте следующие строки в dhcpd.conf:

                    # Global section
                    option swap-path code 128 = string;
                    option swap-size code 129 = integer 32;
      
                    host margaux {
                      ... # Стандартные строки, смотрите выше
                      option swap-path "192.168.4.4:/netswapvolume/netswap";
                      option swap-size 64000;
                    }
      	    

      Идея заключается в том, что, по крайней мере для клиента FreeBSD, дополнительный параметр DHCP/BOOTP под кодом 128 является маршрутом к файлу подкачки NFS, а параметр с кодом 129 задает размер области подкачки в килобайтах. Более старые версии dhcpd разрешали использовать синтаксис типа option option-128 "..., который больше не поддерживается.

      Во /etc/bootptab будет использоваться такой синтаксис:

      T128="192.168.4.4:/netswapvolume/netswap":T129=0000fa00

      Note: В файле /etc/bootptab размер файла подкачки должен быть записан в шестнадцатиричном формате.

    2. На файловом сервере NFS создайте файл (или файлы) подкачки

                    # mkdir /netswapvolume/netswap
                    # cd /netswapvolume/netswap
                    # dd if=/dev/zero bs=1024 count=64000 of=swap.192.168.4.6
                    # chmod 0600 swap.192.168.4.6
                  

      192.168.4.6 является IP-адресом бездискового клиента.

    3. На файловом сервере NFS, в /etc/exports добавьте такую строку:

      	      /netswapvolume  -maproot=0:10 -alldirs margaux 
      	    

      Затем укажите mountd на повторное чтение файла exports, как описано ранее.

    19.7.1.7 Различные проблемы

    19.7.1.7.1 Работа с /usr, доступной только для чтения

    Если бездисковая рабочая станция настроена на запуск X, вам нужно подправить настроечный файл для xdm, который по умолчанию помещает протокол ошибок в /usr.

    19.7.1.7.2 Использование не-FreeBSD сервера

    Если сервер с корневой файловой системой работает не под управлением FreeBSD, вам потребуется создать корневую файловую систему на машине FreeBSD, а затем скопировать ее в нужно место, при помощи tar или cpio.

    В такой ситуации иногда возникают проблемы со специальными файлами в /dev из-за различной разрядности целых чисел для старшего/младшего чисел. Решением этой проблемы является экспортирование каталога с не-FreeBSD сервера, монтирование его на машине с FreeBSD и запуск скрипта MAKEDEV на машине с FreeBSD для создания правильных файлов устройств (во FreeBSD 5.0 и более поздних версиях используется devfs(5) для создания файлов устройств прозрачно для пользователя, запуск MAKEDEV в этих версиях бесполезен).

    Этот, и другие документы, могут быть скачаны с ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

    По вопросам связанными с FreeBSD, прочитайте документацию прежде чем писать в <questions@FreeBSD.org>.
    По вопросам связанным с этой документацией, пишите <doc@FreeBSD.org>.
    По вопросам связанным с русским переводом документации, пишите <frdp@FreeBSD.org.ua>.


    Руководство FreeBSDPrevChapter 19 Сложные вопросы работы в сетиNext

    19.11 DNS

    Текст предоставилChern Lee.

    19.11.1 Обзор

    По умолчанию во FreeBSD используется одна из версий программы BIND (Berkeley Internet Name Domain), являющейся самой распространенной реализацией протокола DNS. DNS - это протокол, при помощи которого имена преобразуются в IP-адреса и наоборот. Например, в ответ на запрос о www.FreeBSD.org будет получен IP-адрес веб-сервера Проекта FreeBSD, а запрос о ftp.FreeBSD.org возвратит IP-адрес соответствующей машины с FTP-сервером. Точно также происходит и обратный процесс. Запрос, содержащий IP-адрес машины, возвратит имя хоста. Для выполнения запросов к DNS вовсе не обязательно иметь в системе работающий сервер имён.

    В сети Интернет DNS управляется через достаточно сложную систему авторизированных корневых серверов имён, и других менее крупных серверов имён, которые содержат и кэшируют информацию о конкретных доменах.

    В этом документа рассматривается BIND 8.x, так как это стабильная версия, используемая во FreeBSD. BIND 9.x может быть установлен как порт net/bind9.

    Протокол DNS стандартизован в RFC1034 и RFC1035.

    На данный момент пакет BIND поддерживается Internet Software Consortium (www.isc.org).

    19.11.2 Используемая терминология

    Для понимания этого документа нужно понимать значения некоторых терминов, связанных с работой DNS.

    ТерминОпределение
    Прямой запрос к DNS (forward DNS)Преобразование имён хостов в адреса IP
    Ориджин (origin)Обозначает домен, покрываемый конкретным файлом зоны
    named, bind, сервер имёнОбщеупотребительные названия для обозначения пакета BIND, обеспечивающего работу сервера имён во FreeBSD.
    РесолверСистемный процесс, посредством которого машина обращается к серверу имён для получения информации о зоне
    Обратный DNS (reverse DNS)Операция, обратная прямому запросу к DNS; преобразование адресов IP в имена хостов
    Корневая зонаНачало иерархии зон Интернет. Все зоны находятся под корневой зоной, подобно тому, как все файлы располагаются ниже корневого каталога.
    ЗонаОтдельный домен, поддомен или часть DNS, управляемая одним сервером.

    Примеры зон:

    Как можно видеть, уточняющая часть имени хоста появляется слева. Например, example.org. более точен, чем org., также, как org. более точен, чем корневая зона. Расположение каждой части имени хоста сильно похоже на файловую систему: каталог /dev расположен в корневой файловой системе, и так далее.

    19.11.3 Причины, по которым вам может понадобиться сервер имён

    Сервера имён обычно используются в двух видах: авторитетный сервер имён и кэширующий сервер имён.

    Авторитетный сервер имён нужен, когда:

    Кэширующий сервер имён нужен, когда:

    Например, когда кто-нибудь запрашивает информацию о www.FreeBSD.org, то обычно ресолвер обращается к серверу имён вашего провайдера, посылает запрос и ожидает ответа. С локальным кэширующим сервером DNS запрос во внешний мир будет делаться всего один раз. Каждый дополнительный запрос не будет посылаться за пределы локальной сети, потому что информация уже имеется в кэше.

    19.11.4 Как это работает

    Во FreeBSD даемон BIND, по очевидным причинам, называется named.

    ФайлОписание
    namedдаемон BIND
    ndcпрограмма управления даемоном сервера имён
    /etc/namedbкаталог, в котором располагается вся информация о зонах BIND
    /etc/namedb/named.confконфигурационный файл для даемона

    Файлы зон обычно располагаются в каталоге /etc/namedb и содержат информацию о зоне DNS, за которую отвечает сервер имён.

    19.11.5 Запуск BIND

    Так как сервер имён BIND устанавливается по умолчанию, его настройка сравнительно проста.

    Чтобы даемон named запускался во время загрузки, сделайте следующие изменения в файле /etc/rc.conf

    named_enable="YES"

    Для запуска даемона вручную (после его настройки)

    # ndc start

    19.11.6 Конфигурационные файлы

    19.11.6.1 Использование make-localhost

    Обязательно выполните следующие команды:

    # cd /etc/namedb
    # sh make-localhost

    для того, чтобы правильно создать файл /etc/namedb/localhost.rev локальной обратной зоны для loopback-интерфейса.

    19.11.6.2 /etc/namedb/named.conf

    // $FreeBSD$
    //
    // Refer to the named(8) manual page for details.  If you are ever going
    // to setup a primary server, make sure you've understood the hairy
    // details of how DNS is working.  Even with simple mistakes, you can
    // break connectivity for affected parties, or cause huge amount of
    // useless Internet traffic.
    
    options {
            directory "/etc/namedb";
    
    // In addition to the "forwarders" clause, you can force your name
    // server to never initiate queries of its own, but always ask its
    // forwarders only, by enabling the following line:
    //
    //      forward only;
    
    // If you've got a DNS server around at your upstream provider, enter
    // its IP address here, and enable the line below.  This will make you
    // benefit from its cache, thus reduce overall DNS traffic in the
    Internet.
    /*
            forwarders {
                    127.0.0.1;
            };
    */

    Как и говорится в комментариях, если вы хотите получить эффект от использования кэша провайдера, то можно включить раздел forwarders. В обычном случае сервер имён будет рекурсивно опрашивать определённые серверы имён Интернет до тех пор, пока не получит ответ на свой запрос. При включении этого раздела он будет автоматически опрашивать сервер имён вашего провайдера (или тот, который здесь указан), используя преимущества его кэша. наличия нужной информации. Если соответствующий сервер имён провайдера работает быстро и имеет хороший канал связи, то в результате такой настройки вы можете получить хороший результат.

    Warning: 127.0.0.1 здесь работать не будет. Измените его на IP-адрес сервера имён провайдера.

    /*
             * If there is a firewall between you and name servers you want
             * to talk to, you might need to uncomment the query-source
             * directive below.  Previous versions of BIND always asked
             * questions using port 53, but BIND 8.1 uses an unprivileged
             * port by default.
             */
            // query-source address * port 53;
    
            /*
             * If running in a sandbox, you may have to specify a different
             * location for the dumpfile.
             */
            // dump-file "s/named_dump.db";
    };
    
    // Note: the following will be supported in a future release.
    /*
    host { any; } {
            topology {
                    127.0.0.0/8;
            };
    };
    */
    
    // Setting up secondaries is way easier and the rough picture for this
    // is explained below.
    //
    // If you enable a local name server, don't forget to enter 127.0.0.1
    // into your /etc/resolv.conf so this server will be queried first.
    // Also, make sure to enable it in /etc/rc.conf.
    
    zone "." {
            type hint;
            file "named.root";
    };
    
    zone "0.0.127.IN-ADDR.ARPA" {
            type master;
            file "localhost.rev";
    };
    
    zone
    "0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.IP6.INT" {
            type master;
            file "localhost.rev";
    };
    
    // NB: Do not use the IP addresses below, they are faked, and only
    // serve demonstration/documentation purposes!
    //
    // Example secondary config entries.  It can be convenient to become
    // a secondary at least for the zone where your own domain is in.  Ask
    // your network administrator for the IP address of the responsible
    // primary.
    //
    // Never forget to include the reverse lookup (IN-ADDR.ARPA) zone!
    // (This is the first bytes of the respective IP address, in reverse
    // order, with ".IN-ADDR.ARPA" appended.)
    //
    // Before starting to setup a primary zone, better make sure you fully
    // understand how DNS and BIND works, however.  There are sometimes
    // unobvious pitfalls.  Setting up a secondary is comparably simpler.
    //
    // NB: Don't blindly enable the examples below. :-)  Use actual names
    // and addresses instead.
    //
    // NOTE!!! FreeBSD runs bind in a sandbox (see named_flags in rc.conf).
    // The directory containing the secondary zones must be write accessible
    // to bind.  The following sequence is suggested:
    //
    //      mkdir /etc/namedb/s
    //      chown bind:bind /etc/namedb/s
    //      chmod 750 /etc/namedb/s

    Дополнительная информация о запуске BIND в ограниченном окружении находится в соответствующем разделе.

    /*
    zone "example.com" {
            type slave;
            file "s/example.com.bak";
            masters {
                    192.168.1.1;
            };
    };
    
    zone "0.168.192.in-addr.arpa" {
            type slave;
            file "s/0.168.192.in-addr.arpa.bak";
            masters {
                    192.168.1.1;
            };
    };
    */

    Это примеры описаний прямой и обратной зон из файла named.conf для вторичных серверов.

    Для каждого новой зоны, которую будет обслуживать сервер имён, в файл named.conf должна быть добавлена запись

    К примеру, самая простая запись для домена example.org может выглядеть вот так:

    zone "example.org" {
    	type master;
    	file "example.org";
    };

    Зона является первичной, что отражается в поле type, и информация о зоне хранится в файле /etc/namedb/example.org, что указывается в поле file.

    zone "example.org" {
    	type slave;
    	file "example.org";
    };

    В случае вторичной зоны информация о ней передается с основного сервера имён для заданной зоны и сохраняется в указанном файле. Если и когда основной сервер имён выходит и строя или недосягаем, то скачанная информация о зоне будет находиться на вторичных серверах и они смогут обслуживать эту зону.

    19.11.6.3 Файлы зон

    Пример файла зоны example.org для основного сервера (располагающийся в файле /etc/namedb/example.org) имеет такой вид:

    $TTL 3600
    
    example.org. IN SOA ns1.example.org. admin.example.org. (
                            5               ; Serial
                            10800           ; Refresh
                            3600            ; Retry
                            604800          ; Expire
                            86400 )         ; Minimum TTL
    
    ; DNS Servers
    @       IN NS           ns1.example.org.
    @       IN NS           ns2.example.org.
    
    ; Machine Names
    localhost       IN A    127.0.0.1
    ns1             IN A    3.2.1.2
    ns2             IN A    3.2.1.3
    mail            IN A    3.2.1.10
    @               IN A    3.2.1.30
    
    ; Aliases
    www             IN CNAME        @
    
    ; MX Record
    @               IN MX   10      mail.example.org.

    Заметьте, что все имена хостов, оканчивающиеся на ``.'', задают полное имя, тогда как все имена без символа ``.'' на конце считаются заданными относительно ориджина. Например, www преобразуется в www + origin. В нашем воображаемом файле ориджином является example.org., так что www преобразуется в www.example.org.

    Файл зоны имеет следующий формат:

    recordname      IN recordtype  value

    Наиболее часто используемые записи DNS:

    SOA

    начало зоны ответственности

    NS

    авторитативный сервер имен

    A

    адрес хоста

    CNAME

    каноническое имя для алиаса

    MX

    обмен почтой

    PTR

    указатель на доменное имя (используется в обратных зонах DNS)

    example.org. IN SOA ns1.example.org. admin.example.org. (
                            5               ; Serial
                            10800           ; Refresh after 3 hours
                            3600            ; Retry after 1 hour
                            604800          ; Expire after 1 week
                            86400 )         ; Minimum TTL of 1 day

    example.org.

    имя домена, а также ориджин для этого файла зоны.

    ns1.example.org.

    основной/авторитативный сервер имён для этой зоны

    admin.example.org.

    человек, отвечающий за эту зону, адрес электронной почты с подменённым символом @. ( становится admin.example.org)

    5

    последовательный номер файла. При каждом изменении файла зоны это число должно увеличиваться. В настоящее время для нумерации многие администраторы предпочитают формат ггггммддвв. 2001041002 будет означать, что файл последний раз изменялся 10.04.2001, а последнее число 02 означает, что это была вторая модификация файла за день. Последовательный номер важен, так как он служит для того, чтобы вторичные серверы узнавали об обновлении зоны.

    @       IN NS           ns1.example.org.

    Это NS-запись. Такие записи должны иметься для всех серверов имён, которые будут отвечать за зону. Символ @, используемый здесь, преобразуется в example.org. Этот символ @ соответствует ориджину.

    localhost       IN A    127.0.0.1
    ns1             IN A    3.2.1.2
    ns2             IN A    3.2.1.3
    mail            IN A    3.2.1.10
    @               IN A    3.2.1.30

    Записи типа A служат для обозначения имён машин. Как это видно выше, имя ns1.example.org будет преобразовано в 3.2.1.2. И снова здесь используется символ ориджина @, обозначая, что example.org будет преобразовано в 3.2.1.30.

    www             IN CNAME        @

    Записи с каноническими именами обычно используются для присвоения машинам псевдонимов. В этом примере www является псевдонимом для машины, соответствующей ориджину, то есть example.org (3.2.1.30). Записи CNAME могут использоваться для присвоения псевдонимов именам хостов или для использования одного имени несколькими машинами по очереди.

    @               IN MX   10      mail.example.org.

    MX-запись указывает, какие почтовые серверы отвечают за обработку входящей электронной почты для зоны. mail.example.org является именем почтового сервера, а 10 обозначает приоритет этого почтового сервера.

    Можно иметь несколько почтовых серверов с приоритетами 3, 2 и 1. Почтовый сервер, пытающийся доставить почту для example.org, сначала попробует связаться с машиной, имеющий MX-запись с самым большим приоритетом, затем с приоритетом поменьше и так далее, до тех пор, пока почта не будет отправлена.

    Для файлов зон in-addr.arpa (обратные записи DNS) используется тот же самый формат, отличающийся только использованием записей PTR вместо A или CNAME.

    $TTL 3600
    
    1.2.3.in-addr.arpa. IN SOA ns1.example.org. admin.example.org. (
                            5               ; Serial
                            10800           ; Refresh
                            3600            ; Retry
                            604800          ; Expire
                            3600 )          ; Minimum
    
    @       IN NS   ns1.example.org.
    @       IN NS   ns2.example.org.
    
    2       IN PTR  ns1.example.org.
    3       IN PTR  ns2.example.org.
    10      IN PTR  mail.example.org.
    30      IN PTR  example.org.

    В этом файле дается полное соответствие имён хостов IP-адресам в нашем описанном ранее вымышленном домене.

    19.11.7 Кэширующий сервер имён

    Кэширующий сервер имён - это сервер имён, не отвечающий ни за какую зону. Он просто выполняет запросы от своего имени и сохраняет результаты для последующего использования. Для настройки такого сервера достаточно исключить все описания зон из стандартной конфигурации сервера имён.

    19.11.8 Запуск named в песочнице

    Для дополнительной безопасности вам может потребоваться запускать named(8) с правами непривилегированного пользователя и настроить его на выполнение chroot(8) в каталог-песочницу. Это позволит сделать недоступным для даемона named все, что расположено вне песочницы. Если named будет взломан, то это поможет уменьшить возможный ущерб. По умолчанию во FreeBSD имеются пользователь и группа с именами bind, которые предназначены именно для такого использования.

    Note: Многие рекомендуют вместо настройки named на использование chroot, запускать named внутри jail(8). В этом разделе такой подход не рассматривается.

    Так как named не сможет обратиться ни к чему вне песочницы (например, совместно используемым библиотекам, сокетам протоколов и так далее), то нужно выполнить несколько шагов, чтобы named смог работать нормально. В следующем списке предполагается, что каталогом песочницы является /etc/namedb и что вы не делали никаких изменений в содержимом этого каталога. Выполните следующие шаги, работая как пользователь root.

    Следующим шагом является редактирование файла /etc/namedb/etc/named.conf так, чтобы named знал, какую зону загружать и где найти их на диске. Далее следует прокомментированный пример (все, что специально не прокомментировано, ничем не отличается от настройки сервера DNS, работающего не в песочнице):

    options {
            directory "/";(1)
            named-xfer "/bin/named-xfer";(2)
            version "";		// Не выдавайте версию BIND
            query-source address * port 53;
    };
    // управляющий сокет ndc
    controls {
            unix "/var/run/ndc" perm 0600 owner 0 group 0;
    };
    // Далее следуют зоны:
    zone "localhost" IN {
            type master;
            file "master/named.localhost";(3)
            allow-transfer { localhost; };
            notify no;
    };
    zone "0.0.127.in-addr.arpa" IN {
            type master;
            file "master/localhost.rev";
            allow-transfer { localhost; };
            notify no;
    };
    zone "0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.int" {
           type master;
           file "master/localhost-v6.rev";
           allow-transfer { localhost; };
           notify no;
    };
    zone "." IN {
            type hint;
            file "master/named.root";
    };
    zone "private.example.net" in {
            type master;
            file "master/private.example.net.db";
    	allow-transfer { 192.168.10.0/24; };
    };
    zone "10.168.192.in-addr.arpa" in {
            type slave;
            masters { 192.168.10.2; };
            file "slave/192.168.10.db";(4)
    };
    (1)
    В директиве directory указан каталог /, так как все файлы, которые нужны для named, находятся внутри этого каталога (вспомните, что это равнозначно ``обычному'' пользовательскому /etc/namedb.
    (2)
    Задает полный путь к двоичному выполнимому файлу named-xfer (внутри границ видимости named). Это необходимо, так как named компилируется с тем, чтобы брать named-xfer по умолчанию из /usr/libexec.
    (3)
    Задает имя файла (относительно директивы directory выше), в котором named может найти файл зоны для этой зоны.
    (4)
    Задает имя файла (относительно директивы directory выше), в котором named должен записывать копию файла зоны для этой зоны после успешной передачи ее с основного сервера. Вот почему нам нужно изменить владельца каталога slave на bind на этапах настроек выше.

    После выполнения шагов выше либо перезагрузите ваш сервер, либо перезапустите syslogd(8) и запустите named(8), не забыв использовать новые опции, заданные в syslogd_flags и named_flags. Теперь named должен заработать в песочнице!

    19.11.9 Безопасность

    Хотя BIND является самой распространенной реализацией DNS, всегда стоит вопрос об обеспечении безопасности. Время от времени обнаруживаются возможные и реальные бреши в безопасности.

    Весьма полезно подписаться на списки рассылки CERT и freebsd-security-notifications для того, чтобы быть в курсе текущих проблем с обеспечением безопасности Internet и FreeBSD.

    Tip: Если возникают проблемы, то наличие последних исходных текстов и свежеоткомпилированного named не помешает.

    19.11.10 Дополнительная литература

    Справочная информация по BIND/named: ndc(8) named(8) и named.conf(5)

    Этот, и другие документы, могут быть скачаны с ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

    По вопросам связанными с FreeBSD, прочитайте документацию прежде чем писать в <questions@FreeBSD.org>.
    По вопросам связанным с этой документацией, пишите <doc@FreeBSD.org>.
    По вопросам связанным с русским переводом документации, пишите <frdp@FreeBSD.org.ua>.


    Руководство FreeBSDPrevChapter 19 Сложные вопросы работы в сетиNext

    19.14 ``Супер-сервер'' inetd

    Текст предоставилChern Lee.

    19.14.1 Обзор

    inetd(8) называют также ``супер-сервером Интернет'', потому что он управляет соединениями к нескольким даемонам. Программы, которые предоставляют сетевые услуги, называют даемонами. inetd выступает в качестве управляющего сервера для других даемонов. Когда inetd принимает соединение, он определяет, для какого даемона предназначено соединение, вызывает соответствующий даемон и предоставляет ему сокет. Запуск одного экземпляра inetd уменьшает общую нагрузку на систему по сравнению с запуском каждого даемона индивидуально в выделенном режиме.

    В первую очередь inetd используется для вызова других даемонов, но несколько простых протоколов, таких, как chargen, auth и daytime, обслуживаются непосредственно.

    Этот раздел посвящен основам настройки inetd посредством его параметров командной строки и его конфигурационного файла, /etc/inetd.conf.

    19.14.2 Настройки

    inetd инициализируется посредством системы /etc/rc.conf. Параметр inetd_enable по умолчанию установлен в ``NO'', однако часто включается утилитой sysinstall при выборе профиля среднего уровня безопасности. Указание

    inetd_enable="YES"
    или
    inetd_enable="NO"
    в файле /etc/rc.conf может задать или запретить запуск inetd во время загрузки.

    Кроме того, через inetd_flags даемону inetd могут быть переданы различные параметры командной строки.

    19.14.3 Параметры командной строки

    Формат вызова inetd:

    inetd [-d] [-l] [-w] [-W] [-c maximum] [-C rate] [-a address | hostname] [-p filename] [-R rate] [configuration file]

    -d

    Включение отладочной информации.

    -l

    Включение регистрации успешных соединений.

    -w

    Включение механизма TCP Wrapping для внешних служб (по умолчанию включено).

    -W

    Включение механизма TCP Wrapping для внутренних служб, которые встроены в inetd (по умолчанию включено).

    -c maximum

    Определение максимального числа одновременных запусков каждой службы; по умолчание не ограничено. Может быть переопределено индивидуально для каждой службы при помощи параметра max-child.

    -C rate

    Определение по умолчанию максимального количества раз, которое служба может быть вызвана с одного IP-адреса в минуту; по умолчанию не ограничено. Может быть переопределено для каждой службы параметром max-connections-per-ip-per-minute.

    -R rate

    Определяет максимальное количество раз, которое служба может быть вызвана в минуту; по умолчанию 256. Частота, равная 0, не ограничивает число вызовов.

    -a

    Задает один IP-адрес, к которому делается привязка. Альтернативно может быть указано имя хоста, и в этом случае используется соответствующий этому имени хоста адрес IPv4 или IPv6. Обычно имя хоста задается, когда inetd запускается в окружении jail(8), и в этом случае имя хоста соответствует этому jail(8)-окружению.

    Если используется формат с именем хоста и требуется привязка как для IPv4, так и для IPv6, то для каждой привязки требуется запись с соответствующим типом протокола для каждой службы в файле /etc/inetd.conf. К примеру, службе на основе TCP потребуется две записи, в одной для протокола используется ``tcp4'', а в другой используется ``tcp6''.

    -p

    Задает альтернативный файл для хранения ID процесса.

    Эти параметры могут быть переданы в inetd при помощи inetd_flags в файле /etc/rc.conf. По умолчанию значение inetd_flags установлено в ``-wW'', что включает механизм TCP wrapping для внутренних и внешних служб inetd. Новичкам эти параметры изменять и даже задавать их в файле /etc/rc.conf не нужно.

    Note: Внешняя служба является даемоном вне inetd, который запускается при получении соединения к нему. С другой стороны, внутренней службой является услуга, которую inetd предоставляет сам.

    19.14.4 inetd.conf

    Настройка inetd управляется через файл /etc/inetd.conf.

    Если в файле /etc/inetd.conf делались изменения, то inetd можно заставить считать его конфигурационный файл повторно, послав сигнал HangUP процессу inetd, как показано здесь:

    Example 19-4. Посылка сигнала HangUP процессу inetd

    # kill -HUP `cat /var/run/inetd.pid`

    В каждой строке конфигурационного файла описывается отдельный даемон. Комментариям в файле предшествует знак ``#''. Файл /etc/inetd.conf имеет такой формат:

    service-name
    socket-type
    protocol
    {wait|nowait}[/max-child[/max-connections-per-ip-per-minute]]
    user[:group][/login-class]
    server-program
    server-program-arguments

    Пример записи для даемона ftpd, использующего IPv4:

    ftp     stream  tcp     nowait  root    /usr/libexec/ftpd       ftpd -l

    service-name

    Это имя сервиса, предоставляемого конкретным даемоном. Оно должно соответствовать сервису, указанному в файле /etc/services. Здесь определяется, какой порт должен обслуживать inetd. При создании нового сервиса он должен помещаться сначала в файл /etc/services.

    socket-type

    stream, dgram, raw либо seqpacket. stream должен использоваться для ориентированных на соединение даемонов TCP, когда как dgram используется для даемонов, использующих транспортный протокол UDP.

    protocol

    Одно из следующих:

    ПротоколОписание
    tcp, tcp4TCP IPv4
    udp, udp4UDP IPv4
    tcp6TCP IPv6
    udp6UDP IPv6
    tcp46TCP как для IPv4, так и для v6
    udp46UDP как для IPv4, так и для v6

    {wait|nowait}[/max-child[/max-connections-per-ip-per-minute]]

    wait|nowait определяет, может ли даемон, вызванный из inetd, работать с собственным сокетом, или нет. Сокеты типа dgram должны использовать параметр wait, когда как даемоны с потоковыми сокетами, которые обычно многопоточны, должны использовать nowait. wait обычно передает много сокетов одному даемону, когда как nowait порождает даемон для каждого нового сокета.

    Максимальное число порожденных даемонов, которых может создать inetd, может быть задано параметром max-child. Если нужно ограничение в десять экземпляров некоторого даемона, то после параметра nowait нужно задать /10.

    Кроме max-child, может быть задействован другой параметр, ограничивающий максимальное число соединений от одного источника. max-connections-per-ip-per-minute служит именно для этого. Здесь значение, равное десяти, будет ограничивать любой заданный IP-адрес на выполнение десяти попыток подключения к некоторому сервису в минуту. Это полезно для предотвращения намеренного или ненамеренного расходования ресурсов и атак типа Denial of Service (DoS) на машину.

    В этом поле wait или nowait обязательны. max-child и max-connections-per-ip-per-minute опциональны.

    Многопоточный даемон типа stream без ограничений max-child или max-connections-per-ip-per-minute будет определен просто вот так: nowait

    Тот же самый даемон с ограничением в максимум десять даемонов будет определен так: nowait/10

    Наконец, та же конфигурация с ограничением в двадцать соединений на IP-адрес в минуту и общим ограничением в максимум десять порожденных даемонов выглядит так: nowait/10/20

    Эти параметры, используемые все со значениями по умолчанию даемоном fingerd, имеют такой вид:

    finger stream  tcp     nowait/3/10 nobody /usr/libexec/fingerd fingerd -s
    user

    Поле user является именем пользователем, под которым должен работать соответствующий даемон. Чаще всего даемоны работают как пользователь root. Для обеспечения безопасности некоторые серверы запускаются как пользователь daemon или как пользователь с минимальными правами nobody.

    server-program

    Полный маршрут к даемону, который будет выполняться при установлении соединения. Если даемон является сервисом, предоставляемым самим inetd, то нужно задать ключевое слово internal.

    server-program-arguments

    Этот параметр работает вместе с параметром server-program, задавая параметры, начиная с argv[0], передаваемые даемону при запуске. Если в командной строке задано mydaemon -d, то mydaemon -d будет являться значением для server program arguments. И снова, если даемон является внутренней службой, то здесь нужно использовать internal.

    19.14.5 Безопасность

    В зависимости от схемы безопасности, выбранной при установке, многие из даемонов inetd могут оказаться по умолчанию включенными. Если нет особой нужды в некотором даемоне, то выключите его! Поместите знак ``#'' перед ненужным даемоном и пошлите сигнал для inetd. Некоторые даемоны, такие, как fingerd, вообще нежелательны, потому что они дают атакующему слишком много информации.

    Некоторые даемоны не заботятся о безопасности и имеют большие таймауты для соединений или вообще их не имеют. Это позволяет атакующему неспешно устанавливать соединения к конкретному даемону, истощая имеющиеся ресурсы. Может оказаться полезным задать для некоторых даемонов ограничения ip-per-minute и max-child.

    По умолчанию механизм TCP wrapping включен. Обратитесь к справочной странице по hosts_access(5) для получения более подробной информации о задании ограничений TCP для различных даемонов, запускаемых посредством inetd.

    19.14.6 Разное

    daytime, time, echo, discard, chargen и auth все являются услугами, предоставляемыми самим inetd.

    Сервис auth предоставляет идентификационные сетевые услуги (ident, identd) и поддается настройке.

    Обратитесь к справочной странице по inetd(8) для получения более подробной информации.

    Этот, и другие документы, могут быть скачаны с ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

    По вопросам связанными с FreeBSD, прочитайте документацию прежде чем писать в <questions@FreeBSD.org>.
    По вопросам связанным с этой документацией, пишите <doc@FreeBSD.org>.
    По вопросам связанным с русским переводом документации, пишите <frdp@FreeBSD.org.ua>.


    Руководство FreeBSDPrevChapter 19 Сложные вопросы работы в сетиNext

    19.16 IPv6

    Первоначальный текст написалAaron Kaplan. Реструктуризацию и добавления внёсTom Rhodes.

    IPv6 (также называемый IPng ``IP next generation'' - следующее поколение IP) является новой версией широко известного протокола IP (называемого также IPv4). Как и другие современные системы *BSD, FreeBSD включает эталонную реализацию IPv6 от KAME. Так что система FreeBSD поставляется со всем, что вам нужно для экспериментирования с IPv6. Этот раздел посвящён настройке и запуску в работу IPv6.

    В начале 1990-х люди стали беспокоиться о быстро иссякающем адресном пространстве IPv4. Принимая во внимание темпы роста Интернет, имелись основные проблемы:

    IPv6 решает эти и многие другие вопросы:

    Имеется также множество других полезных особенностей IPv6, таких, как:

    Для получения дополнительной информации посмотрите:

    19.16.1 Основы адресации IPv6

    Существуют различные типы адресов IPv6: одноадресные (Unicast), групповые (Anycast) и многоадресные (Multicast).

    Адреса типа Unicast хорошо всем известны. Пакет, посланный на такой адрес, достигает в точности интерфейса, который этому адресу соответствует.

    Адреса типа Anycast синтаксически неотличимы от адресов Unicast, но они адресуют группу интерфейсов. Пакет, направленный такому адресу, попадёт в ближайший (согласно метрике маршрутизатора) интерфейс. Адреса Anycast могут использоваться только маршрутизаторами.

    Адреса типа Multicast идентифицируют группу интерфейсов. Пакет, посланный на такой адрес, достигнет всех интерфейсов, привязанных к группе многоадресного вещания.

    Note: Широковещательные адреса IPv4 (обычно xxx.xxx.xxx.255) выражаются адресами многоадресного вещания IPv6.

    Зарезервированные адреса IPv6:

    ipv6-address 	prefixlength(Bits)	description	Notes
    
    	::			128 Bits			unspecified cf. 0.0.0.0 in IPv4 address
    	::1			128 Bits			loopback address cf. 127.0.0.1 in IPv4
    	::00:xx:xx:xx:xx	96 Bits				embedded IPv4	The lower 32 bits are the
    								address	IPv4 address. Also called
    								``IPv4 compatible IPv6
    								address''
    	::ff:xx:xx:xx:xx	96 Bits		IPv4 mapped     The lower 32 bits are the
    						IPv6 address	IPv4 address. For hosts
    								which do not support IPv6
    	fe80:: - feb::		10 Bits		link-local	cf. loopback address in
    						IPv4
    	fec0:: - fef::		10 Bits		site-local
    	ff::			8 Bits		multicast
    	001 (base 2)		3 Bits		global unicast	All global unicast
    								addresses are assigned from
    								this pool. The first 3 Bits
    								are ``001''.

    19.16.2 Чтение адресов IPv6

    Каноническая форма представляется в виде x:x:x:x:x:x:x:x, где каждый символ ``x'' является 16-битовым шестнадцатиричным числом. К примеру, FEBC:A574:382B:23C1:AA49:4592:4EFE:9982

    Часто в адресе присутствуют длинные строчки, заполненные нулями, поэтому каждая такая последовательность может быть сокращена до ``::''. К примеру, fe80::1 соответствует канонической форме fe80:0000:0000:0000:0000:0000:0000:0001

    В третьей форме последние 32 бита записываются в широко известном (десятичном) стиле IPv4 с точками ``.'' в качестве разделителей. Например, f2002::10.0.0.1 соответствует (шестнадцатеричному) каноническому представлению 2002:0000:0000:0000:0000:0000:0a00:0001, которое, в свою очередь, равнозначно записи 2002::a00:1

    Теперь читатель должен понять следующую запись:

    # ifconfig
    rl0: flags=8943<UP,BROADCAST,RUNNING,PROMISC,SIMPLEX,MULTICAST> mtu 1500
             inet 10.0.0.10 netmask 0xffffff00 broadcast 10.0.0.255
             inet6 fe80::200:21ff:fe03:8e1%rl0 prefixlen 64 scopeid 0x1
             ether 00:00:21:03:08:e1
             media: Ethernet autoselect (100baseTX )
             status: active

    fe80::200:21ff:fe03:8e1%rl0 является автоматически отконфигурированным локальным адресом. В процессе автоматической конфигурации в него включается MAC-адрес Ethernet.

    Для получения дополнительной информации о структуре адресов IPv6 обратитесь к RFC3513.

    19.16.3 Настройка подключения

    На данный момент существуют четыре способа подключиться к другим хостам и сетям IPv6:

    Здесь мы будем рассматривать подключение к 6bone, так как на данный момент это является самым популярным способом.

    Сначала взгляните на сайт 6bone и найдите ближайшую к вам точку подключения к 6bone. Напишите ответственному и при некоторой удаче вам дадут инструкции по настройке соединения. Обычно это касается настройки туннеля GRE (gif).

    Вот типичный пример настройки туннеля gif(4):

    # ifconfig gif0 create
    # ifconfig gif0
    gif0: flags=8010<POINTOPOINT,MULTICAST> mtu 1280
    # ifconfig gif0 tunnel MY_IPv4_ADDR  HIS_IPv4_ADDR
    # ifconfig gif0 inet6 alias MY_ASSIGNED_IPv6_TUNNEL_ENDPOINT_ADDR

    Замените слова, написанные заглавными буквами, информацией, которую вам дал вышестоящий узел 6bone.

    При этом установится туннель. Проверьте работу туннеля утилитой ping6(8) с адресом ff02::1%gif0. Вы должны получить два положительных ответа.

    Note: Если вы заинтригованы адресом ff02:1%gif0, скажем, что это адрес многоадресного вещания. %gif0 указывает на использование такого адреса с сетевым интерфейсом gif0. Так как мы выполняем ping над адресом многоадресного вещания, то другая сторона туннеля также должна ответить).

    Теперь настройка маршрута к вашей вышестоящей точке подключения 6bone должна быть весьма проста:

    # route add -inet6 default -interface gif0
    # ping6 -n MY_UPLINK
    # traceroute6 www.jp.FreeBSD.org
    (3ffe:505:2008:1:2a0:24ff:fe57:e561) from 3ffe:8060:100::40:2, 30 hops max, 12 byte packets
         1  atnet-meta6  14.147 ms  15.499 ms  24.319 ms
         2  6bone-gw2-ATNET-NT.ipv6.tilab.com  103.408 ms  95.072 ms *
         3  3ffe:1831:0:ffff::4  138.645 ms  134.437 ms  144.257 ms
         4  3ffe:1810:0:6:290:27ff:fe79:7677  282.975 ms  278.666 ms  292.811 ms
         5  3ffe:1800:0:ff00::4  400.131 ms  396.324 ms  394.769 ms
         6  3ffe:1800:0:3:290:27ff:fe14:cdee  394.712 ms  397.19 ms  394.102 ms

    Эта выдача будет отличаться от машины к машине. Теперь вы должны суметь достигнуть сайта IPv6 www.kame.net и увидеть танцующую черепаху -- в случае, если ваш браузер поддерживает IPv6, как, например, www/mozilla.

    19.16.4 DNS в мире IPv6

    Для IPv6 имеются два новых типа записей DNS:

    Использование записей AAAA достаточно просто. Назначение вашему имени хоста нового адреса IPv6 достигается просто добавлением:

    MYHOSTNAME           AAAA    MYIPv6ADDR

    к вашему первичному файлу DNS зоны. В случае, если вы не обслуживаете собственные зоны DNS, обратитесь к вашему провайдеру DNS. Имеющиеся версии bind (версий 8.3 и 9) поддерживают записи AAAA.

    Этот, и другие документы, могут быть скачаны с ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

    По вопросам связанными с FreeBSD, прочитайте документацию прежде чем писать в <questions@FreeBSD.org>.
    По вопросам связанным с этой документацией, пишите <doc@FreeBSD.org>.
    По вопросам связанным с русским переводом документации, пишите <frdp@FreeBSD.org.ua>.


    Руководство FreeBSDPrevChapter 19 Сложные вопросы работы в сетиNext

    19.8 ISDN

    Полезным источником информации о технологии ISDN и его аппаратном обеспечении является Страница Дэна Кегела (Dan Kegel) об ISDN.

    Быстрое введение в ISDN:

    Стоимость является важным фактором при выборе вашего решения. Далее перечислены все возможности от самого дешевого до самого дорогого варианта.

    19.8.1 Адаптеры ISDN

    Текст предоставилHellmuth Michaelis.

    Реализация ISDN во FreeBSD поддерживает только стандарт DSS1/Q.931 (или Евро-ISDN) при помощи пассивных адаптеров. Начиная с FreeBSD 4.4 поддерживаются некоторые активные адаптеры, прошивки которых поддерживают также другие сигнальные протоколы; также сюда впервые включена поддержка адаптеров ISDN Primary Rate (PRI).

    Пакет программ isdn4bsd позволяет вам подключаться к другим маршрутизаторам ISDN при помощи IP поверх DHLC, либо при помощи синхронного PPP; либо при помощи PPP на уровне ядра с isppp, модифицированного драйвера sppp(4), или при помощи пользовательского ppp(8). При использовании пользовательского ppp(8) возможно использование двух и большего числа B-каналов ISDN. Также имеется приложение, работающее как автоответчик, и много утилит, таких, как программный модем на 300 Бод.

    Во FreeBSD поддерживается все возрастающее число адаптеров ISDN для ПК, и сообщения показывают, что они успешно используются по всей Европе и других частях света.

    Из пассивных адаптеров ISDN поддерживаются в основном те, которые сделаны на основе микросхем Infineon (бывший Siemens) ISAC/HSCX/IPAC ISDN, а также адаптеры ISDN с микросхемами от Cologne Chip (только для шины ISA), адаптеры PCI с микросхемами Winbond W6692, некоторые адаптеры с набором микросхем Tiger300/320/ISAC и несколько адаптеров, построенных на фирменных наборах микросхем, такие, как AVM Fritz!Card PCI V.1.0 и AVM Fritz!Card PnP.

    На данный момент из активных адаптеров ISDN поддерживаются AVM B1 (ISA и PCI) адаптеры BRI и AVM T1 PCI адаптеры PRI.

    Документацию по isdn4bsd можно найти в каталоге /usr/share/examples/isdn/ вашей системы FreeBSD или на домашней странице isdn4bsd, на которой также размещены ссылки на советы, замечания по ошибкам и более подробную информацию, например, на руководство по isdn4bsd.

    Если вы заинтересованы в добавлении поддержки для различных протоколов ISDN, неподдерживаемых на данный момент адаптеров ISDN для PC или каких-то других усовершенствованиях isdn4bsd, пожалуйста, свяжитесь с Hellmuth Michaelis .

    Для обсуждения вопросов, связанных с установкой, настройкой и устранением неисправностей isdn4bsd, имеется список рассылки freebsd-isdn.

    subscribe freebsd-isdn

    19.8.2 Терминальные адаптеры ISDN

    Терминальные адаптеры (TA) для ISDN выполняют ту же роль, что и модемы для обычных телефонных линий.

    Большинство TA используют стандартный набор AT-команд Hayes-модемов, и могут использоваться в качестве простой замены для модемов.

    TA будут работать точно так же, как и модемы, за исключением скорости соединения и пропускной способности, которые будут гораздо выше, чем у вашего старого модема. Вам потребуется настроить PPP точно также, как и в случае использования модема. Проверьте, что вы задали скорость работы последовательного порта максимально высокой.

    Главным преимуществом использования TA для подключения к провайдеру Интернет является возможность использования динамического PPP. Так как пространство адресов IP истощается все больше, большинство провайдеров не хочет больше выдавать вам статический IP-адрес. Большинство же маршрутизаторов не может использовать динамическое выделение IP-адресов.

    TA полностью полагаются на даемон PPP, который используете из-за его возможностей и стабильности соединения. Это позволяет вам при использовании FreeBSD легко заменить модем на ISDN, если у вас уже настроено соединение PPP. Однако, в тоже время любые проблемы, которые возникают с программой PPP, отражаются и здесь.

    Если вы хотите максимальной надёжности, используйте PPP на уровне параметра ядра, а не пользовательский PPP.

    Известно, что следующие TA работают с FreeBSD:

    Большинство остальных TA, скорее всего, тоже будут работать, производители TA прилагают все усилия для обеспечения поддержки практически всего набора стандартных AT-команд модема.

    Как и в случае модемов проблемой использования внешнего TA является потребность в хорошем последовательном адаптере на вашем компьютере.

    Вы должны прочесть учебник Последовательные устройства во FreeBSD для того, чтобы в деталях понять работу последовательных устройств и осознать различие между асинхронными и синхронными последовательными портами.

    TA, работающий со стандартным последовательным (асинхронным) портом PC, ограничивает вас скоростью 115.2 Кбит/с, хотя реально у вас соединение на скорости 128 Кбит/с. Чтобы использовать 128 Кбит/с, которые обеспечивает ISDN, полностью, вы должны подключить TA к синхронному последовательному адаптеру.

    Не обманывайте себя, думая, что покупка встроенного TA поможет избежать проблемы синхронности/асинхронности. Встроенные TA просто уже имеют внутри стандартный последовательный порт PC. Все, что при этом достигается - это экономия дополнительных последовательного кабеля и электрической розетки.

    Синхронный адаптер с TA по крайней мере так же быстр, как и отдельный маршрутизатор, а если он работает под управлением машины класса 386 с FreeBSD, то это гораздо более гибкое решение.

    Выбор между использованием синхронного адаптера/TA или отдельного маршрутизатора в большей степени является религиозным вопросом. По этому поводу в списках рассылки была некоторая дискуссия. Рекомендуем поискать в архивах обсуждение полностью.

    19.8.3 Отдельные мосты/маршрутизаторы ISDN

    Мосты или маршрутизаторы ISDN не так уж специфичны для FreeBSD или для любой другой операционной системы. Для более подробного описания технологий маршрутизации и работы мостов, пожалуйста, обратитесь к справочникам по сетевым технологиям.

    В контексте этого раздела термины маршрутизатор и сетевой мост будут использоваться как взаимозаменяемые.

    Вместе с падением цен на простые мосты/маршрутизаторы ISDN, они становятся все более популярными. Маршрутизатор ISDN представляет собой маленькую коробочку, которая подключается непосредственно в вашу сеть Ethernet, и поддерживает связь с другим мостом/маршрутизатором. Всё программное обеспечение для работы по PPP и другим протоколам встроено в маршрутизатор.

    Маршрутизатор обладает гораздо большей пропускной способностью, чем стандартный TA, так как он использует полное синхронное соединение ISDN.

    Основной проблемой с маршрутизаторами и мостами ISDN является то, что их совместная работа с оборудованием других производителей может оказаться под вопросом. Если вы собираетесь подключаться к провайдеру, то вы должны обсудить с ним то, что вам нужно.

    Если вы планируете объединить два сегмента локальной сети, например, домашнюю сеть с сетью офиса, это самое простое решение с минимальными издержками на обслуживание. Так как вы покупаете оборудование для обоих сторон соединения, то можете быть уверены, что связь будет работать нормально.

    Например, для соединения домашнего компьютера или сети подразделения к сети центрального офиса, может использоваться такая настройка:

    Example 19-2. Офис подразделения или домашняя сеть

    Сеть построена в топологии общей шины на основе 10 base 2 Ethernet (``thinnet'' - ``тонкий Ethernet''). Подключите маршрутизатор к сетевому кабелю с помощью трансивера AUI/10BT, если это нужно.

    Если ваш домашний или удаленный офис представляет собой один компьютер, то для непосредственного подключения к маршрутизатору вы вы можете использовать витую пару с перекрестным соединениям.

    Example 19-3. Центральный офис или другая локальная сеть

    Сеть построена в топологии звезды на основе 10 Base T Ethernet (``витая пара'').

    Одним большим преимуществом большинства маршрутизаторов/мостов является то, что они позволяют иметь 2 отдельных независимых соединения PPP к 2 различным сайтам одновременно. Это не поддерживается в большинстве TA, кроме специальных (обычно дорогих) моделей, имеющих по два последовательных порта. Не путайте это с балансировкой нагрузки, MPP и так далее.

    Это может оказаться весьма полезной особенностью, например, если у вас имеется постоянное ISDN-соединение в вашем офисе, и вы хотите им воспользоваться, но не хотите задействовать дополнительный канал ISDN на работе. Маршрутизатор, расположенный в офисе, может использовать выделенное соединение по каналу B (64 Кбит/с) для Интернет, и одновременно другой канал B для отдельного соединения для передачи данных. Второй канал B может использоваться для входящих, исходящих и динамически распределяемых соединений (MPP и так далее) совместно с первым каналом B для повышения пропускной способности.

    Мост Ethernet также позволяет вам передавать больше, чем просто трафик IP. Вы сможете передавать IPX/SPX и любые другие протоколы, которые вы используете.

    Этот, и другие документы, могут быть скачаны с ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

    По вопросам связанными с FreeBSD, прочитайте документацию прежде чем писать в <questions@FreeBSD.org>.
    По вопросам связанным с этой документацией, пишите <doc@FreeBSD.org>.
    По вопросам связанным с русским переводом документации, пишите <frdp@FreeBSD.org.ua>.


    Руководство FreeBSDPrevChapter 19 Сложные вопросы работы в сетиNext

    19.13 Даемон преобразования сетевых адресов (natd)

    Текст предоставилChern Lee.

    19.13.1 Обзор

    Даемон преобразования сетевых адресов (Network Address Translation) во FreeBSD, широко известный как natd(8), является даемоном, который принимает входящие IP-пакеты, изменяет адрес отправителя на адрес локальной машины и повторно отправляет эти пакеты в потоке исходящих пакетов. natd(8) делает это, меняя IP-адрес отправителя и порт таким образом, что когда данные принимаются обратно, он может определить расположение источника начальных данных и переслать их машине, которая запрашивала данные изначально.

    Чаще всего NAT используется для организации так называемого Совместного Использования Интернет.

    19.13.2 Настройка

    Из-за исчерпания пространства адресов в IPv4 и увеличения количества пользователей высокоскоростных каналов связи, таких, как кабельное подключение или DSL, необходимость в решении по Совместному Использованию Интернет растёт. Возможность подключить несколько компьютеров через единственное соединение и IP-адрес делает natd(8) подходящим решением.

    Чаще всего у пользователя имеется машина, подключенная к кабельному каналу или каналу DSL с одним IP-адресом и есть желание использовать этот единственный подключенный компьютер для организации доступа в Интернет другим компьютерам в локальной сети.

    Для этого машина FreeBSD, находящаяся в Интернет, должна выступать в роли шлюза. Эта шлюзовая машина должна иметь два сетевых адаптера--один для подключения к маршрутизатору Интернет, а другой для подключения к ЛВС. Все машины в локальной сети подключаются через сетевой концентратор или коммутатор.

    Подобная конфигурация часто используется для совместного использования доступа в Интернет. Одна из подключенных к локальной сети машин подключается к Интернет. Остальные машины работают с Интернет посредством этой ``шлюзовой'' машины.

    19.13.3 Настройка

    В файле конфигурации ядра должны присутствовать следующие параметры:

    options IPFIREWALL
    options IPDIVERT

    Дополнительно, если это нужно, можно добавить следующее:

    options IPFIREWALL_DEFAULT_TO_ACCEPT
    options IPFIREWALL_VERBOSE

    В файле /etc/rc.conf должны быть такие строки:

    gateway_enable="YES"
    firewall_enable="YES"
    firewall_type="OPEN"
    natd_enable="YES"
    natd_interface="fxp0"
    natd_flags=""

    gateway_enable="YES"Указывает машине выступать в качестве шлюза. Выполнение команды sysctl net.inet.ip.forwarding=1 приведёт к тому же самому результату.
    firewall_enable="YES"При загрузке включает использование правил межсетевого экрана из файла /etc/rc.firewall.
    firewall_type="OPEN"Здесь задается предопределенный набор правил межсетевого экрана, который разрешает все. Посмотрите файл /etc/rc.firewall для нахождения дополнительных типов.
    natd_interface="fxp0"Указывает, через какой интерфейс передавать пакеты (интерфейс, подключенный к Интернет).
    natd_flags=""Любые дополнительный параметры, передаваемые при запуске даемону natd(8).

    При использовании вышеуказанных параметров в файле /etc/rc.conf при загрузке будет запущена команда natd -interface fxp0. Эту команду можно запустить и вручную.

    Note: Если для передачи natd(8) набирается слишком много параметров, возможно также использовать конфигурационный файл. В этом случае имя настроечного файла должно быть задано добавлением следующей строки в /etc/rc.conf:

    natd_flags="-f /etc/natd.conf"

    Файл /etc/natd.conf будет содержать перечень конфигурационных параметров, по одному в строке. К примеру, для примера из следующего раздела будет использоваться такой файл:

    redirect_port tcp 192.168.0.2:6667 6667
    redirect_port tcp 192.168.0.3:80 80

    Для получения более полной информации о конфигурационном файле прочтите страницу справки по natd(8) относительно параметра -f.

    Каждой машине и интерфейсу в ЛВС должен быть назначен IP-адрес из адресного пространства частных сетей, как это определено в RFC 1918, а в качестве маршрутизатора по умолчанию должен быть задан IP-адрес машины с natd из внутренней сети.

    Например, клиенты A и B в ЛВС имеют IP-адреса 192.168.0.2 и 192.168.0.3, а интерфейс машины с natd в локальной сети имеет IP-адрес 192.168.0.1. Маршрутизатором по умолчанию для клиентов A и B должна быть назначена машина с natd, то есть 192.168.0.1. Внешний, или Интернет-интерфейс машины с natd не требует особых настроек для работы natd(8).

    19.13.4 Перенаправление портов

    Минусом использования natd(8) является то, что машины в локальной сети недоступны из Интернет. Клиенты в ЛВС могут выполнять исходящие соединения во внешний мир, но не могут обслуживать входящие. Это является проблемой при запуске служб Интернет на клиентских машинах в локальной сети. Простым решением является перенаправление некоторых портов Интернет машины с natd на клиента локальной сети.

    Пусть, к примеру, сервер IRC запущен на клиенте A, а веб-сервер работает на клиенте B. Чтобы это работало, соединения, принимаемые на портах 6667 (IRC) и 80 (веб), должны перенаправляться на соответствующие машины.

    Программе natd(8) должна быть передана команда -redirect_port с соответствующими параметрами. Синтаксис следующий:

         -redirect_port proto targetIP:targetPORT[-targetPORT]
                     [aliasIP:]aliasPORT[-aliasPORT]
                     [remoteIP[:remotePORT[-remotePORT]]]

    В примере выше аргументы должен быть такими:

        -redirect_port tcp 192.168.0.2:6667 6667
        -redirect_port tcp 192.168.0.3:80 80

    При этом будут перенаправлены соответствующие порты tcp на клиентские машины в локальной сети.

    Аргумент -redirect_port может использоваться для указания диапазонов портов, а не конкретного порта. Например, tcp 192.168.0.2:2000-3000 2000-3000 будет перенаправлять все соединения, принимаемые на портах от 2000 до 3000, на порты от 2000 до 3000 клиента A.

    Эти параметры можно указать при непосредственном запуске natd(8), поместить их в параметр natd_flags="" файла /etc/rc.conf, либо передать через конфигурационный файл.

    Для получение информации о других параметрах настройки обратитесь к справочной странице по natd(8)

    19.13.5 Перенаправление адреса

    Перенаправление адреса полезно, если имеется несколько адресов IP, и они должны быть на одной машине. В этой ситуации natd(8) может назначить каждому клиенту ЛВС свой собственный внешний IP-адрес. Затем natd(8) преобразует исходящие от клиентов локальной сети пакеты, заменяя IP-адреса на соответствующие внешние, и перенаправляет весь трафик, входящий на некоторый IP-адрес, обратно конкретному клиенту локальной сети. Это также называют статическим NAT. К примеру, пусть IP-адреса 128.1.1.1, 128.1.1.2 и 128.1.1.3 принадлежат шлюзовой машине natd. 128.1.1.1 может использоваться в качестве внешнего IP-адреса шлюзовой машины natd, тогда как 128.1.1.2 и 128.1.1.3 будут перенаправляться обратно к клиентам ЛВС A и B.

    Синтаксис для -redirect_address таков:

    -redirect_address localIP publicIP

    localIPВнутренний IP-адрес клиента локальной сети.
    publicIPВнешний IP, соответствующий клиенту локальной сети.

    В примере этот аргумент будет выглядеть так:

    -redirect_address 192.168.0.2 128.1.1.2
    -redirect_address 192.168.0.3 128.1.1.3

    Как и для -redirect_port, эти аргументы также помещаются в строку natd_flags="" файла /etc/rc.conf или передаются через конфигурационный файл. При перенаправлении адресов нет нужды в перенаправлении портов, потому что перенаправляются все данные, принимаемые для конкретного IP-адреса.

    Внешние IP-адреса машины с natd должны быть активизированы и являться алиасами для внешнего интерфейса. Обратитесь к rc.conf(5), чтобы это сделать.

    Этот, и другие документы, могут быть скачаны с ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

    По вопросам связанными с FreeBSD, прочитайте документацию прежде чем писать в <questions@FreeBSD.org>.
    По вопросам связанным с этой документацией, пишите <doc@FreeBSD.org>.
    По вопросам связанным с русским переводом документации, пишите <frdp@FreeBSD.org.ua>.


    Руководство FreeBSDPrevChapter 19 Сложные вопросы работы в сетиNext

    19.6 NFS

    Реорганизация и улучшения Tom Rhodes. Текст создалBill Swingle.

    Кроме поддержки многих прочих типов файловых систем, во FreeBSD встроена поддержка сетевой файловой системы (Network File System), известной как NFS. NFS позволяет системе использовать каталоги и файлы совместно с другими машинами, посредством сети. Посредством NFS пользователи и программы могут получать доступ к файлам на удалённых системах точно так же, как если бы это были файлы на собственных дисках.

    Вот некоторые из наиболее заметных преимуществ, которые даёт использование NFS:

    19.6.1 Как работает NFS

    NFS строится по крайней мере из двух основных частей: сервера и одного или большего количества клиентов. Клиент обращается к данным, находящимся на сервере, в режиме удалённого доступа. Для того, чтобы это нормально функционировало, нужно настроить и запустить несколько процессов:

    Note: В FreeBSD 5.X, утилита portmap была заменена на rpcbind. Таким образом, при использовании FreeBSD 5.X пользователю необходимо заменить в последующих примерах все команды portmap на rpcbind.

    На сервере работают следующие даемоны:

    ДаемонОписание
    nfsdДаемон NFS, обслуживающий запросы от клиентов NFS.
    mountdДаемон монтирования NFS, который выполняет запросы, передаваемые ему от nfsd(8).
    portmapДаемон отображения портов позволяет клиентам NFS определить порт, используемый сервером NFS.

    Клиент может запустить также даемон, называемый nfsiod. nfsiod обслуживает запросы, поступающие от сервера от сервера NFS. Он необязателен, увеличивает производительность, однако для нормальной и правильной работы не требуется. Для получения дополнительной информации обратитесь к разделу справочной системы о nfsiod(8).

    19.6.2 Настройка NFS

    Настройка NFS является достаточно незамысловатым процессом. Все процессы, которые должны быть запущены, могут быть стартованы во время загрузки посредством нескольких модификаций в вашем файле /etc/rc.conf.

    Проверьте, что на NFS-сервере в файле /etc/rc.conf имеются такие строки:

    portmap_enable="YES"
    nfs_server_enable="YES"
    nfs_server_flags="-u -t -n 4"
    mountd_flags="-r"

    mountd запускается автоматически, если включена функция сервера NFS.

    На клиенте убедитесь, что в файле /etc/rc.conf присутствует такой параметр:

    nfs_client_enable="YES"

    Файл /etc/exports определяет, какие файловые системы на вашем сервере NFS будут экспортироваться (иногда их называют ``совместно используемыми''). Каждая строка в /etc/exports задаёт файловую систему, которая будет экспортироваться и какие машины будут иметь к ней доступ. Кроме машин, имеющих доступ, могут задаваться другие параметры, влияющие на характеристики доступа. Имеется полный набор параметров, которые можно использовать, но здесь пойдёт речь лишь о некоторых из них. Описания остальных параметров можно найти на страницах справочной системы по exports(5).

    Вот несколько примерных строк из файла /etc/exports:

    В следующих примерах даётся общая идея того, как экспортировать файловые системы, хотя конкретные параметры могут отличаться в зависимости от ваших условий и конфигурации сети. К примеру, чтобы экспортировать каталог /cdrom для трёх машин, находящихся в том же самом домене, что и сервер (поэтому отсутствует доменное имя для каждой машины) или для которых имеются записи в файле /etc/hosts. Флаг -ro указывает на использование экспортируемой файловой системы в режиме только чтения. С этим флагом удалённая система не сможет никоим образом изменить экспортируемую файловую систему.

    /cdrom -ro host1 host2 host3

    В следующей строке экспортируется файловая система /home, которая становится доступной трем хостам, указанным по их IP-адресам. Это полезно, если у вас есть собственная сеть без настроенного сервера DNS. Как вариант, файл /etc/hosts может содержать внутренние имена хостов; пожалуйста, обратитесь к справочную систему по hosts(5) для получения дополнительной информации. Флаг -alldirs позволяет рассматривать подкаталоги в качестве точек монтирования. Другими словами, это не монтирование подкаталогов, но разрешение клиентам монтировать только каталоги, которые им требуются или нужны.

    /home  -alldirs  10.0.0.2 10.0.0.3 10.0.0.4

    В строке, приведённой ниже, файловая система /a экспортируется таким образом, что она доступна двум клиентам из других доменов. Параметр -maproot=root позволяет пользователю root удалённой системы осуществлять запись на экспортируемую файловую систему как пользователь root. Если параметр -maproot=root не задан, то даже если пользователь имеет права доступа root на удалённой системе, он не сможет модифицировать файлы на экспортированной файловой системе.

    /a  -maproot=root  host.example.com box.example.org

    Для того, чтобы клиент смог обратиться к экспортированной файловой системе, он должен иметь права сделать это. Проверьте, что клиент указан в вашем файле /etc/exports.

    В файле /etc/exports каждая строка содержит информацию об экспортировании для отдельной файловой системы для отдельно взятого хоста. Удалённый хост может быть задан только один раз для каждой файловой системы, и может иметь только одну запись, используемую по умолчанию, для каждой локальной файловой системы. К примеру, предположим, что /usr является отдельной файловой системой. Следующий /etc/exports будет некорректен:

    /usr/src   client
    /usr/ports client

    Одна файловая система, /usr, имеет две строки, задающие экспортирование для одного и того же хоста, client. Правильный формат в этом случае таков:

    /usr/src /usr/ports  client

    Свойства отдельной файловой системы, экспортируемой некоторому хосту, должны задаваться в одной строке. Строки без указания клиента воспринимаются как отдельный хост. Это ограничивает то, как вы можете экспортировать файловые системы, но для большинства это не проблема.

    Ниже приведён пример правильного списка экспортирования, где /usr и /exports являются локальными файловыми системами:

    # Экспортируем src и ports для client01 и client02, но
    # только client01 имеет права пользователя root на них
    /usr/src /usr/ports -maproot=root    client01
    /usr/src /usr/ports               client02
    # Клиентские машины имеют пользователя root и могут монтировать всё в
    # каталоге /exports.  Кто угодно может монтировать /exports/obj в режиме чтения
    /exports -alldirs -maproot=root      client01 client02
    /exports/obj -ro

    Вы должны перезапустить mountd после того, как изменили /etc/exports, чтобы изменения вступили в силу. Это может быть достигнуто посылкой сигнала HUP процессу mountd:

    # kill -HUP `cat /var/run/mountd.pid`

    Как вариант, при перезагрузке FreeBSD всё настроится правильно. Хотя выполнять перезагрузку вовсе не обязательно. Выполнение следующих команд пользователем root запустит всё, что нужно.

    На сервере NFS:

    # portmap
    # nfsd -u -t -n 4
    # mountd -r

    На клиенте NFS:

    # nfsiod -n 4

    Теперь всё должно быть готово к реальному монтированию удалённой файловой системы. В приводимых примерах сервер будет носить имя server, а клиент будет носить имя client. Если вы только хотите временно смонтировать удалённую файловую систему, или всего лишь протестировать ваши настройки, то просто запустите команды, подобные приводимым здесь, работая как пользователь root на клиентской машине:

    # mount server:/home /mnt

    По этой команде файловая система /home на сервере будет смонтирована в каталог /mnt на клиенте. Если всё настроено правильно, вы сможете войти в каталог /mnt на клиенте и увидеть файлы, находящиеся на сервере.

    Если вы хотите автоматически монтировать удалённую файловую систему при каждой загрузке компьютера, добавьте файловую систему в /etc/fstab. Вот пример:

    server:/home	  /mnt	  nfs	  rw	  0	  0

    На страницах справочной системы по fstab(5) перечислены все доступные параметры.

    19.6.3 Практическое использование

    У NFS есть много вариантов практического применения. Ниже приводится несколько наиболее широко распространённых способов её использования:

    19.6.4 Автоматическое монтирование с amd

    Текст предоставилWylie Stilwell. Текст переписалChern Lee.

    amd(8) (даемон автоматического монтирования) автоматически монтирует удалённую файловую систему, как только происходит обращение к файлу или каталогу в этой файловой системе. Кроме того, файловые системы, которые были неактивны некоторое время, будут автоматически размонтированы даемоном amd. Использование amd является простой альтернативой статическому монтированию, так как в последнем случае обычно всё должно быть описано в файле /etc/fstab.

    amd работает, сам выступая как сервер NFS для каталогов /host и /net. Когда происходит обращение к файлу в одном из этих каталогов, amd ищет соответствующий удаленный ресурс для монтирования и автоматически его монтирует. /net используется для монтирования экспортируемой файловой системы по адресу IP, когда как каталог /host используется для монтирования ресурса по удаленному имени хоста.

    Обращение к файлу в каталоге /host/foobar/usr укажет amd на выполнение попытки монтирования ресурса /usr, который находится на хосте foobar.

    Example 19-1. Монтирование ресурса при помощи amd

    Вы можете посмотреть доступные для монтирования ресурсы отдалённого хоста командой showmount. К примеру, чтобы посмотреть ресурсы хоста с именем foobar, вы можете использовать:

    % showmount -e foobar
    Exports list on foobar:
    /usr                               10.10.10.0
    /a                                 10.10.10.0
    % cd /host/foobar/usr

    Как видно из примера, showmount показывает /usr как экспортируемый ресурс. При переходе в каталог /host/foobar/usr даемон amd пытается разрешить имя хоста foobar и автоматически смонтировать требуемый ресурс.

    amd может быть запущен из скриптов начальной загрузки, если поместить такую строку в файл /etc/rc.conf:

    amd_enable="YES"

    Кроме того, даемону amd могут быть переданы настроечные флаги через параметр amd_flags. По умолчанию amd_flags настроен следующим образом:

    amd_flags="-a /.amd_mnt -l syslog /host /etc/amd.map /net /etc/amd.map"

    Файл /etc/amd.map задает опции, используемые по умолчанию при монтировании экспортируемых ресурсов. В файле /etc/amd.conf заданы настройки некоторых более сложных возможностей amd.

    Обратитесь к справочным страницам по amd(8) и amd.conf(5) для получения более полной информации.

    19.6.5 Проблемы взаимодействия с другими системами

    Текст предоставилJohn Lind.

    Некоторые сетевые адаптеры для систем PC с шиной ISA имеют ограничения, которые могут привести к серьезным проблемам в сети, в частности, с NFS. Эти проблемы не специфичны для FreeBSD, однако эту систему они затрагивают.

    Проблема, которая возникает практически всегда при работе по сети систем PC (FreeBSD) с высокопроизводительными рабочими станциями, выпущенными такими производителями, как Silicon Graphics, Inc. и Sun Microsystems, Inc. Монтирование по протоколу NFS будет работать нормально, и некоторые операции также будут выполняться успешно, но неожиданно сервер окажется недоступным для клиент, хотя запросы к и от других систем будут продолжаться обрабатываться. Такое встречается с клиентскими системами, не зависимо от того, является ли клиент машиной с FreeBSD или рабочей станцией. Во многих системах при возникновении этой проблемы нет способа корректно завершить работу клиента. Единственным выходом зачастую является холодная перезагрузка клиента, потому что ситуация с NFS не может быть разрешена.

    Хотя ``правильным'' решением является установка более производительного и скоростного сетевого адаптера на систему FreeBSD, имеется простое решение, приводящее к удовлетворительным результатам. Если система FreeBSD является сервером, укажите параметр -w=1024 на клиенте при монтировании. Если система FreeBSD является клиентом, то смонтируйте файловую систему NFS с параметром -r=1024. Эти параметры могут быть заданы в четвертом поле записи в файле fstab клиента при автоматическом монтировании, или при помощи параметра -o в команде mount при монтировании вручную.

    Нужно отметить, что имеется также другая проблема, ошибочно принимаемая за приведенную выше, когда серверы и клиенты NFS находятся в разных сетях. Если это тот самый случай, проверьте, что ваши маршрутизаторы пропускают нужную информацию UDP, в противном случае вы ничего не получите, что бы вы ни предпринимали.

    В следующих примерах fastws является именем хоста (интерфейса) высокопроизводительной рабочей станции, а freebox является именем хоста (интерфейса) системы FreeBSD со слабым сетевым адаптером. Кроме того, /sharedfs будет являться экспортируемой через NFS файловой системой (обратитесь к страницам справочной системы по команде exports(5)), а /project будет точкой монтирования экспортируемой файловой системы на клиенте. В любом случае, отметьте, что для вашего приложения могут понадобиться дополнительные параметры, такие, как hard, soft или bg.

    Пример системы FreeBSD (freebox) как клиента в файле /etc/fstab на машине freebox:

    fastws:/sharedfs /project nfs rw,-r=1024 0 0

    Команда, выдаваемая вручную на машине freebox:

    # mount -t nfs -o -r=1024 fastws:/sharedfs /project

    Пример системы FreeBSD в качестве сервера в файле /etc/fstab на машине fastws:

    freebox:/sharedfs /project nfs rw,-w=1024 0 0

    Команда, выдаваемая вручную на машине fastws:

    # mount -t nfs -o -w=1024 freebox:/sharedfs /project

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

    Для тех, кто интересуется, ниже описывается, что же происходит в при появлении этой ошибки, и объясняется, почему ее невозможно устранить. Как правило, NFS работает с ``блоками'' размером 8 килобайт (хотя отдельные фрагменты могут иметь меньшие размеры). Так, пакет Ethernet имеет максимальный размер около 1500 байт, то ``блок'' NFS разбивается на несколько пакетов Ethernet, хотя на более высоком уровне это все тот же единый блок, который должен быть принят, собран и подтвержден как один блок. Высокопроизводительные рабочие станции могут посылать пакеты, которые соответствуют одному блоку NFS, сразу друг за другом, насколько это позволяет делать стандарт. На слабых, низкопроизводительных адаптерах пакеты, пришедшие позже, накладываются поверх ранее пришедших пакетов того же самого блока до того, как они могут быть переданы хосту и блок как единое целое не может быть собран или подтвержден. В результате рабочая станция входит в ситуацию таймаута и пытается повторить передачу, но уже с полным блоком в 8 КБ, и процесс будет повторяться снова, до бесконечности.

    Задав размер блока меньше размера пакета Ethernet, мы достигаем того, что любой полностью полученный пакет Ethernet может быть подтвержден индивидуально, и избежим тупиковую ситуацию.

    Наложение пакетов может все еще проявляться, когда высокопроизводительные рабочие станции сбрасывают данные на PC-систему, однако повторение этой ситуации не обязательно с более скоростными адаптерами с ``блоками'' NFS. Когда происходит наложение, затронутые блоки будут переданы снова, и скорее всего, они будут получены, собраны и подтверждены.

    Этот, и другие документы, могут быть скачаны с ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

    По вопросам связанными с FreeBSD, прочитайте документацию прежде чем писать в <questions@FreeBSD.org>.
    По вопросам связанным с этой документацией, пишите <doc@FreeBSD.org>.
    По вопросам связанным с русским переводом документации, пишите <frdp@FreeBSD.org.ua>.


    Руководство FreeBSDPrevChapter 19 Сложные вопросы работы в сетиNext

    19.9 NIS/YP

    Текст создалBill Swingle. Внёс добавленияEric Ogren and Udo Erdelhoff.

    19.9.1 Что это такое?

    NIS, что является сокращением от Network Information Services (Сетевые Информационные Службы), которые были разработаны компанией Sun Microsystems для централизованного администрирования систем UNIX® (изначально SunOS™). В настоящее время эти службы практически стали промышленным стандартом; все основные UNIX-подобные системы (Solaris™, HP-UX, AIX®, Linux, NetBSD, OpenBSD, FreeBSD и так далее) поддерживают NIS.

    NIS первоначально назывались Yellow Pages (или yp), но из-за проблем с торговым знаком Sun изменила это название. Старое название (и yp) всё ещё часто употребляется.

    Это система клиент/сервер на основе вызовов RPC, которая позволяет группе машин в одном домене NIS совместно использовать общий набор конфигурационных файлов. Системный администратор может настроить клиентскую систему NIS только с минимальной настроечной информацией, а затем добавлять, удалять и модифицировать настроечную информацию из одного места.

    Это похоже на систему доменов Windows NT®; хотя их внутренние реализации не так уж и похожи, основные функции сравнимы.

    19.9.2 Термины/программы, о которых вы должны знать

    Существует несколько терминов и некоторое количество пользовательских программ, которые будут нужны, когда вы будете пытаться сделать NIS во FreeBSD, и в случае создания сервера, и в случае работы в качестве клиента NIS:

    ТерминОписание
    Имя домена NISГлавный сервер NIS и все его клиенты (включая вторичные серверы), имеют доменное имя NIS. Как и в случае с именем домена Windows NT, имя домена NIS не имеет ничего общего с DNS.
    portmapДля обеспечения работы RPC (Remote Procedure Call, Удалённого Вызова Процедур, сетевого протокола, используемого NIS), должен быть запущен даемон portmap. Если даемон portmap не запущен, невозможно будет запустить сервер NIS, или работать как NIS-клиент.
    ypbind``Связывает'' NIS-клиента с его NIS-сервером. Он определяет имя NIS-домена системы, и при помощи RPC подключается к серверу. ypbind является основой клиент-серверного взаимодействия в среде NIS; если на клиентской машине программа ypbind перестанет работать, то эта машина не сможет получить доступ к серверу NIS.
    ypservПрограмма ypserv, которая должна запускаться только на серверах NIS: это и есть сервер NIS. Если ypserv(8) перестанет работать, то сервер не сможет отвечать на запросы NIS (к счастью, на этот случай предусмотрен вторичный сервер). Есть несколько реализаций NIS (к FreeBSD это не относится), в которых не производится попыток подключиться к другому серверу, если ранее используемый сервер перестал работать. Зачастую единственным средством, помогающим в этой ситуации, является перезапуск серверного процесса (или сервера полностью) или процесса ypbind на клиентской машине.
    rpc.yppasswddПрограмма rpc.yppasswdd, другой процесс, который запускается только на главных NIS-серверах: это даемон, позволяющий клиентам NIS изменять свои пароли NIS. Если этот даемон не запущен, то пользователи должны будут входить на основной сервер NIS и там менять свои пароли.

    19.9.3 Как это работает?

    В системе NIS существует три типа хостов: основные (master) серверы, вторичные (slave) серверы и клиентские машины. Серверы выполняют роль централизованного хранилища информации о конфигурации хостов. Основные серверы хранят оригиналы этой информации, когда как вторичные серверы хранят ее копию для обеспечения избыточности. Клиенты связываются с серверами, чтобы предоставить им эту информацию.

    Информация во многих файлах может совместно использоваться следующим образом. Файлы master.passwd, group и hosts используются совместно через NIS. Когда процессу, работающему на клиентской машине, требуется информация, как правило, находящаяся в этих файлах локально, то он делает запрос к серверу NIS, с которым связан.

    19.9.3.1 Типы машин

    • Основной сервер NIS. Такой сервер, по аналогии с первичным контроллером домена Windows NT, хранит файлы, используемые всеми клиентами NIS. Файлы passwd, group и различные другие файлы, используемые клиентами NIS, находятся на основном сервере.

      Note: Возможно использование одной машины в качестве сервера для более чем одного домена NIS. Однако, в этом введении такая ситуация не рассматривается, и предполагается менее масштабное использование NIS.

    • Вторичные серверы NIS. Похожие на вторичные контроллеры доменов Windows NT, вторичные серверы NIS содержат копии оригинальных файлов данных NIS. Вторичные серверы NIS обеспечивают избыточность, что нужно в критичных приложениях. Они также помогают распределять нагрузку на основной сервер: клиенты NIS всегда подключаются к тому серверу NIS, который ответил первым, в том числе и к вторичным серверам.

    • Клиенты NIS. Клиенты NIS, как и большинство рабочих станций Windows NT, аутентифицируются на сервере NIS (или на контроллере домена Windows NT в случае работы с Windows NT Workstation) во время входа в систему.

    19.9.4 Использование NIS/YP

    В этом разделе приводится пример настройки NIS.

    Note: В этом разделе предполагается, что вы работаете с FreeBSD 3.3 или выше. Указания, приводимые здесь, скорее всего, будут работать с любой версией FreeBSD, выше, чем 3.0, однако нет гарантий, что это на самом деле так.

    19.9.4.1 Планирование

    Давайте предположим, что вы являетесь администратором в маленькой университетской лаборатории. В настоящий момент в этой лаборатории с 15 машинами отсутствует единая точка администрирования; на каждой машине имеются собственные файлы /etc/passwd и /etc/master.passwd. Эти файлы синхронизируются друг с другом только вручную; сейчас, когда вы добавляете пользователя в лаборатории, вы должны выполнить команду adduser на всех 15 машинах. Понятно, что такое положение вещей нужно исправлять, так что вы решили перевести сеть на использование NIS, используя две машины в качестве серверов.

    Итак, конфигурация лаборатории сейчас выглядит примерно так:

    Имя машиныIP-адресРоль машины
    ellington10.0.0.2Основной сервер NIS
    coltrane10.0.0.3Вторичный сервер NIS
    basie10.0.0.4Факультетская рабочая станция
    bird10.0.0.5Клиентская машина
    cli[1-11]10.0.0.[6-17]Другие клиентские машины

    Если вы определяете схему NIS первый раз, ее нужно хорошо обдумать. Вне зависимости от размеров вашей сети, есть несколько ключевых моментов, которые требуют принятия решений.

    19.9.4.1.1 Выбор имени домена NIS

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

    Некоторые организации в качестве имени домена NIS используют свой домен Интернет. Это не рекомендуется, так как может вызвать проблемы в процессе решения сетевых проблем. Имя домена NIS должно быть уникальным в пределах вашей сети и хорошо, если оно будет описывать группу машин, которые представляет. Например, художественный отдел в компании Acme Inc. может находиться в домене NIS с именем ``acme-art''. В нашем примере положим, что мы выбрали имя test-domain.

    Несмотря на это, некоторые операционные системы (в частности, SunOS) используют свое имя домена NIS в качестве имени домена Интернет. Если одна или более машин в вашей сети имеют такие ограничения, вы обязаны использовать имя домена Интернет в качестве имени домена NIS.

    19.9.4.1.2 Требования к серверу

    Есть несколько вещей, которые нужно иметь в виду при выборе машины для использования в качестве сервера NIS. Одной из обескураживающей вещью, касающейся NIS, является уровень зависимости клиентов от серверов. Если клиент не может подключиться к серверу своего домена NIS, зачастую машину просто становится нельзя использовать. Отсутствие информации о пользователях и группах приводит к временной остановке работы большинства систем. Зная это, вы должны выбрать машину, которая не должна подвергаться частым перезагрузкам и не используется для разработки. Сервер NIS в идеале должен быть отдельно стоящей машиной, единственным целью в жизни которой является быть сервером NIS. Если вы работаете в сети, которая не так уж сильно загружена, то можно поместить сервер NIS на машине, на которой запущены и другие сервисы, просто имейте в виду, что если сервер NIS становится недоступным, то это негативно отражается на всех клиентах NIS.

    19.9.4.2 Серверы NIS

    Оригинальные копии всей информации NIS хранится на единственной машине, которая называется главным сервером NIS. Базы данных, которые используются для хранения информации, называются картами NIS. Во FreeBSD эти карты хранятся в /var/yp/[domainname], где [domainname] является именем обслуживаемого домена NIS. Один сервер NIS может поддерживать одновременно несколько доменов, так что есть возможность иметь несколько таких каталогов, по одному на каждый обслуживаемый домен. Каждый домен будет иметь свой собственный независимый от других набор карт.

    Основной и вторичный серверы обслуживают все запросы NIS с помощью даемона ypserv. ypserv отвечает за получение входящих запросов от клиентов NIS, распознавание запрашиваемого домена и отображение имени в путь к соответствующему файлы базы данных, а также передаче информации из базы данных обратно клиенту.

    19.9.4.2.1 Настройка основного сервера NIS

    Настройка основного сервера NIS может оказаться сравнительно простой, в зависимости от ваших потребностей. В поставку FreeBSD сразу включена поддержка NIS. Все, что вам нужно, это добавить следующие строки в файл /etc/rc.conf, а FreeBSD сделает за вас всё остальное..

    1. nisdomainname="test-domain"
      В этой строке задается имя домена NIS, которое будет test-domain, еще до настройки сети (например, после перезагрузки).

    2. nis_server_enable="YES"
      Здесь указывается FreeBSD на запуск процессов серверов NIS, когда дело доходит до сетевых настроек.

    3. nis_yppasswdd_enable="YES"
      Здесь указывается на запуск даемона rpc.yppasswdd, который, как это отмечено выше, позволит пользователям менять свой пароль NIS с клиентской машины.

    Note: В зависимости от ваших настроек NIS, вам могут понадобиться дополнительные строки. Обратитесь к разделу о серверах NIS, которые являются и клиентами NIS ниже для получения подробной информации.

    А теперь всё, что вам нужно сделать, это запустить команду /etc/netstart, работая как администратор. По ней произойдет настройка всего, при этом будут использоваться значения, заданные в файле /etc/rc.conf.

    19.9.4.2.2 Инициализация карт NIS

    Карты NIS являются файлами баз данных, которые хранятся в каталоге /var/yp. Они генерируются из конфигурационных файлов, находящихся в каталоге /etc основного сервера NIS, за одним исключением: файл /etc/master.passwd. На это есть весомая причина; вам не нужно распространять пароли пользователя root и других административных пользователей на все серверы в домене NIS. По этой причине, прежде чем инициализировать карты NIS, вы должны сделать вот что:

    # cp /etc/master.passwd /var/yp/master.passwd
    # cd /var/yp
    # vi master.passwd

    Вы должны удалить все записи, касающиеся системных пользователей (bin, tty, kmem, games и так далее), а также записи, которые вы не хотите распространять клиентам NIS (например, root и другие пользователи с UID, равным 0 (администраторы)).

    Note: Проверьте, чтобы файл /var/yp/master.passwd был недоступен для записи ни для группы, ни для остальных пользователей (режим доступа 600)! Воспользуйтесь командой chmod, если это нужно.

    Когда с этим будет покончено, самое время проинициализировать карты NIS! В поставку FreeBSD включен скрипт с именем ypinit, который делает это (обратитесь к его справочной странице за дополнительной информацией). Отметьте, что этот скрипт имеется в большинстве операционных систем UNIX, но не во всех. В системе Digital Unix/Compaq Tru64 UNIX он называется ypsetup. Так как мы генерируем карты для главного сервера NIS, то при вызове программы ypinit мы передаем ей параметр -m. Для генерации карт NIS в предположении, что вы уже сделали шаги, описанные выше, выполните следующее:

    ellington# ypinit -m test-domain
    Server Type: MASTER Domain: test-domain
    Creating an YP server will require that you answer a few questions.
    Questions will all be asked at the beginning of the procedure.
    Do you want this procedure to quit on non-fatal errors? [y/n: n] n
    Ok, please remember to go back and redo manually whatever fails.
    If you don't, something might not work.
    At this point, we have to construct a list of this domains YP servers.
    rod.darktech.org is already known as master server.
    Please continue to add any slave servers, one per line. When you are
    done with the list, type a <control D>.
    master server	:  ellington
    next host to add:  coltrane
    next host to add:  ^D
    The current list of NIS servers looks like this:
    ellington
    coltrane
    Is this correct?  [y/n: y] y
    
    [..вывод при генерации карт..]
    
    NIS Map update completed.
    ellington has been setup as an YP master server without any errors.

    Программа ypinit должна была создать файл /var/yp/Makefile из /var/yp/Makefile.dist. При создании этого файла предполагается, что вы работаете в окружении с единственным сервером NIS и только с машинами FreeBSD. Так как в домене test-domain имеется также и вторичный сервер, то вы должны отредактировать файл /var/yp/Makefile:

    ellington# vi /var/yp/Makefile

    Вы должны закомментировать строку, в которой указано

    NOPUSH = "True"

    (она уже не раскомментирована).

    19.9.4.2.3 Настройка вторичного сервера NIS

    Настройка вторичного сервера NIS осуществляется ещё проще, чем настройка главного сервера. Войдите на вторичный сервер и отредактируйте файл /etc/rc.conf точно также, как вы делали это ранее. Единственным отличием является то, что при запуске программы ypinit мы теперь должны использовать опцию -s. Применение опции -s требует также указание имени главного сервера NIS, так что наша команда должна выглядеть так:

    coltrane# ypinit -s ellington test-domain
    
    Server Type: SLAVE Domain: test-domain Master: ellington
    
    Creating an YP server will require that you answer a few questions.
    Questions will all be asked at the beginning of the procedure.
    
    Do you want this procedure to quit on non-fatal errors? [y/n: n]  n
    
    Ok, please remember to go back and redo manually whatever fails.
    If you don't, something might not work.
    There will be no further questions. The remainder of the procedure
    should take a few minutes, to copy the databases from ellington.
    Transferring netgroup...
    ypxfr: Exiting: Map successfully transferred
    Transferring netgroup.byuser...
    ypxfr: Exiting: Map successfully transferred
    Transferring netgroup.byhost...
    ypxfr: Exiting: Map successfully transferred
    Transferring master.passwd.byuid...
    ypxfr: Exiting: Map successfully transferred
    Transferring passwd.byuid...
    ypxfr: Exiting: Map successfully transferred
    Transferring passwd.byname...
    ypxfr: Exiting: Map successfully transferred
    Transferring group.bygid...
    ypxfr: Exiting: Map successfully transferred
    Transferring group.byname...
    ypxfr: Exiting: Map successfully transferred
    Transferring services.byname...
    ypxfr: Exiting: Map successfully transferred
    Transferring rpc.bynumber...
    ypxfr: Exiting: Map successfully transferred
    Transferring rpc.byname...
    ypxfr: Exiting: Map successfully transferred
    Transferring protocols.byname...
    ypxfr: Exiting: Map successfully transferred
    Transferring master.passwd.byname...
    ypxfr: Exiting: Map successfully transferred
    Transferring networks.byname...
    ypxfr: Exiting: Map successfully transferred
    Transferring networks.byaddr...
    ypxfr: Exiting: Map successfully transferred
    Transferring netid.byname...
    ypxfr: Exiting: Map successfully transferred
    Transferring hosts.byaddr...
    ypxfr: Exiting: Map successfully transferred
    Transferring protocols.bynumber...
    ypxfr: Exiting: Map successfully transferred
    Transferring ypservers...
    ypxfr: Exiting: Map successfully transferred
    Transferring hosts.byname...
    ypxfr: Exiting: Map successfully transferred
    
    coltrane has been setup as an YP slave server without any errors.
    Don't forget to update map ypservers on ellington.

    Теперь у вас должен быть каталог с именем /var/yp/test-domain. Копии карт главного сервера NIS должны быть в этом каталоге. Вы должны удостовериться, что этот каталог обновляется. Следующие строки в /etc/crontab вашего вторичного сервера должны это делать:

    20	*	*	*	*	root   /usr/libexec/ypxfr passwd.byname
    21	*	*	*	*	root   /usr/libexec/ypxfr passwd.byuid

    Эти две строки заставляют вторичный сервер синхронизировать свои карты с картами главного сервера. Хотя эти строчки не обязательны, так как главный сервер делает попытки передать все изменения в своих картах NIS на свои вторичные серверы, но из-за того, что информация для входа в систему настолько жизненно важна для систем, зависящих от сервера, что выполнение регулярных обновлений является совсем не плохой идеей. Это ещё более важно в загруженных сетях, в которых обновления карт могут не всегда завершаться успешно.

    А теперь точно также запустите команду /etc/netstart на вторичном сервере, по которой снова выполнится запуск сервера NIS.

    19.9.4.3 Клиенты NIS

    Клиент NIS выполняет так называемую привязку к конкретному серверу NIS при помощи даемона ypbind. ypbind определяет домен, используемый в системе по умолчанию (тот, который устанавливается по команде domainname), и начинает широковещательную рассылку запросов RPC в локальной сети. В этих запросах указано имя домена, к серверу которого ypbind пытается осуществить привязку. Если сервер, который был настроен для обслуживания запрашиваемого домена, получит широковещательный запрос, он ответит ypbind, который, в свою очередь запомнит адрес сервера. Если имеется несколько серверов (например, главный и несколько вторичных), то ypbind будет использовать адрес первого ответившего. С этого момента клиентская система будет направлять все свои запросы NIS на этот сервер. Время от времени ypbind будет ``пинать'' сервер для проверки его работоспособности. Если на один из тестовых пакетов не удастся получить ответа за разумное время, то ypbind пометит этот домен как домен, с которым связка разорвана, и снова начнет процесс посылки широковещательных запросов в надежде найти другой сервер.

    19.9.4.3.1 Настройка клиента NIS

    Настройка машины с FreeBSD в качестве клиента NIS достаточно проста.

    1. Отредактируйте файл /etc/rc.conf, добавив туда следующие строки для того, чтобы задать имя домена NIS и запустить ypbind во время запуска сетевых служб:

      nisdomainname="test-domain"
      nis_client_enable="YES"
    2. Для импортирования всех возможных учётных записей от сервера NIS, удалите все записи пользователей из вашего файла /etc/master.passwd и воспользуйтесь командой vipw для добавления следующей строки в конец файла:

      +:::::::::

      Note: Эта строчка даст всем пользователям с корректной учетной записью в картах учетных баз пользователей доступ к этой системе. Есть множество способов настроить ваш клиент NIS, изменив эту строку. Посмотрите ниже текст, касающийся сетевых групп, чтобы получить более подробную информацию. Дополнительная информация для изучения находится в книге издательства O'Reilly под названием Managing NFS and NIS.

      Note: Вы должны оставить хотя бы одну локальную запись (то есть не импортировать ее через NIS) в вашем /etc/master.passwd и эта запись должна быть также членом группы wheel. Если с NIS что-то случится, эта запись может использоваться для удаленного входа в систему, перехода в режим администратора и исправления неисправностей.

    3. Для импортирования всех возможных записей о группах с сервера NIS, добавьте в ваш файл /etc/group такую строчку:

      +:*::

    После завершения выполнения этих шагов у вас должно получиться запустить команду ypcat passwd и увидеть карту учетных записей сервера NIS.

    19.9.5 Безопасность NIS

    В общем-то любой пользователь, зная имя вашего домена, может выполнить запрос RPC к ypserv(8) и получить содержимое ваших карт NIS. Для предотвращения такого неавторизованного обмена ypserv(8) поддерживает так называемую систему securenets, которая может использоваться для ограничения доступа к некоторой группе хостов. При запуске ypserv(8) будет пытаться загрузить информацию, касающуюся securenets, из файла /var/yp/securenets.

    Note: Имя каталога зависит от параметра, указанного вместе с опцией -p. Этот файл содержит записи, состоящие из указания сети и сетевой маски, разделенных пробелом. Строчки, начинающиеся со знака ``#'', считаются комментариями. Примерный файл securenets может иметь примерно такой вид:

    # allow connections from local host -- mandatory
    127.0.0.1     255.255.255.255
    # allow connections from any host
    # on the 192.168.128.0 network
    192.168.128.0 255.255.255.0
    # allow connections from any host
    # between 10.0.0.0 to 10.0.15.255
    # this includes the machines in the testlab
    10.0.0.0      255.255.240.0

    Если ypserv(8) получает запрос от адреса, который соответствует одному из этих правил, он будет отрабатывать запрос обычным образом. Если же адрес не подпадает ни под одно правило, запрос будет проигнорирован и в журнал будет записано предупреждающее сообщение. Если файл /var/yp/securenets не существует, ypserv будет обслуживать соединения от любого хоста.

    Программа ypserv также поддерживает пакет программ tcpwrapper от Wietse Venema. Это позволяет администратору для ограничения доступа вместо /var/yp/securenets использовать конфигурационные файлы tcpwrapper.

    Note: Хотя оба этих метода управления доступом обеспечивают некоторую безопасность, они, как основанные на проверке привилегированного порта, оба подвержены атакам типа ``IP spoofing''. Весь сетевой трафик, связанный с работой NIS, должен блокироваться вашим межсетевым экраном.

    Серверы, использующие файл /var/yp/securenets, могут быть не в состоянии обслуживать старых клиентов NIS с древней реализацией протокола TCP/IP. Некоторые из этих реализаций при рассылке широковещательных запросов устанавливают все биты машинной части адреса в ноль и/или не в состоянии определить маску подсети при вычислении адреса широковещательной рассылки. Хотя некоторые из этих проблем могут быть решены изменением конфигурации клиента, другие могут привести к отказу от использования /var/yp/securenets.

    Использование /var/yp/securenets на сервере с такой архаичной реализацией TCP/IP является весьма плохой идеей, и приведёт к потере работоспособности NIS в большой части вашей сети.

    Использование пакета tcpwrapper увеличит время отклика вашего сервера NIS. Дополнительной задержки может оказаться достаточно для возникновения таймаутов в клиентских программах, особенно в загруженных сетях или с медленными серверами NIS. Если одна или более ваших клиентских систем страдают от таких проблем, вы должны преобразовать такие клиентские системы во вторичные серверы NIS и сделать принудительную их привязку к самим себе.

    19.9.6 Запрет входа некоторых пользователей

    В нашей лаборатории есть машина basie, о которой предполагается, что она является исключительно факультетской рабочей станцией. Мы не хотим исключать эту машину из домена NIS, однако файл passwd на главном сервере NIS содержит учетные записи как для работников факультета, так и студентов. Что мы можем сделать?

    Есть способ ограничить вход некоторых пользователей на этой машине, даже если они присутствуют в базе данных NIS. Чтобы это сделать, вам достаточно добавить -username в конец файла /etc/master.passwd на клиентской машине, где username является именем пользователя, которому вы хотите запретить вход. Рекомендуется сделать это с помощью утилиты vipw, так как vipw проверит ваши изменения в /etc/master.passwd, а также автоматически перестроит базу данных паролей по окончании редактирования. Например, если мы хотим запретить пользователю bill осуществлять вход на машине basie, то мы сделаем следующее:

    basie# vipw
    [add -bill to the end, exit]
    vipw: rebuilding the database...
    vipw: done
    
    basie# cat /etc/master.passwd
    
    root:[password]:0:0::0:0:The super-user:/root:/bin/csh
    toor:[password]:0:0::0:0:The other super-user:/root:/bin/sh
    daemon:*:1:1::0:0:Owner of many system processes:/root:/sbin/nologin
    operator:*:2:5::0:0:System &:/:/sbin/nologin
    bin:*:3:7::0:0:Binaries Commands and Source,,,:/:/sbin/nologin
    tty:*:4:65533::0:0:Tty Sandbox:/:/sbin/nologin
    kmem:*:5:65533::0:0:KMem Sandbox:/:/sbin/nologin
    games:*:7:13::0:0:Games pseudo-user:/usr/games:/sbin/nologin
    news:*:8:8::0:0:News Subsystem:/:/sbin/nologin
    man:*:9:9::0:0:Mister Man Pages:/usr/share/man:/sbin/nologin
    bind:*:53:53::0:0:Bind Sandbox:/:/sbin/nologin
    uucp:*:66:66::0:0:UUCP pseudo-user:/var/spool/uucppublic:/usr/libexec/uucp/uucico
    xten:*:67:67::0:0:X-10 daemon:/usr/local/xten:/sbin/nologin
    pop:*:68:6::0:0:Post Office Owner:/nonexistent:/sbin/nologin
    nobody:*:65534:65534::0:0:Unprivileged user:/nonexistent:/sbin/nologin
    +:::::::::
    -bill
    
    basie#

    19.9.7 Использование сетевых групп

    Текст предоставилUdo Erdelhoff.

    Способ, описанный в предыдущем разделе, работает достаточно хорошо, если вам нужны особые правила для очень малой группы пользователей или машин. В более крупных сетях вы забудете о запрете входа определенных пользователей на важные машины или даже будете настраивать каждую машину по отдельности, теряя таким образом главное преимущество использования NIS, централизованное администрирование.

    Ответом разработчиков NIS на эту проблему являются сетевые группы. Их назначение и смысл можно сравнить с обычными группами, используемыми в файловых системах UNIX. Главное отличие заключается в отсутствии числового идентификатора и возможности задать сетевую группу включением как пользователей, так и других сетевых групп.

    Сетевые группы были разработаны для работы с большими, сложными сетями с сотнями пользователей и машин. С одной стороны, хорошо, если вам приходится с такой ситуацией. С другой стороны, эта сложность делает невозможным описание сетевых групп с помощью простых примеров. Пример, используемый в дальнейшем, демонстрирует эту проблему.

    Давайте предположим, что успешное внедрение системы NIS в вашей лаборатории заинтересовало ваше руководство. Вашим следующим заданием стало расширение домена NIS для включения в него некоторых других машин студенческого городка. В двух таблицах перечислены имена новых машин и пользователей, а также их краткое описание.

    Имена пользователейОписание
    alpha, betaОбычные служащие IT-департамента
    charlie, deltaПрактиканты IT-департамента
    echo, foxtrott, golf, ...Обычные сотрудники
    able, baker, ...Проходящие интернатуру

    Имена машинОписание
    war, death, famine, pollutionВаши самые важные серверы. Только служащим IT позволяется входить на эти машины.
    pride, greed, envy, wrath, lust, slothМенее важные серверы. Все сотрудники департамента IT могут входить на эти машины.
    one, two, three, four, ...Обычные рабочие станции. Только реально нанятым служащим позволяется использовать эти машины.
    trashcanОчень старая машина без каких-либо критичных данных. Даже проходящим интернатуру разрешено ее использовать.

    Если вы попытаетесь реализовать эти требования, ограничивая каждого пользователя по отдельности, то вам придется добавить на каждой машине в файл passwd по одной строчке -user для каждого пользователя, которому запрещено входить на эту систему. Если вы забудете даже одну строчку, у вас могут начаться проблемы. Гораздо проще делать это правильно во время начальной установки, однако вы постепенно будете забывать добавлять строчки для новых пользователей во время повседневной работы. В конце концов, Мерфи был оптимистом.

    Использование в этой ситуации сетевых групп дает несколько преимуществ. Нет необходимости описывать по отдельности каждого пользователя; вы ставите в соответствие пользователю одну или несколько сетевых групп и разрешаете или запрещаете вход всем членам сетевой группы. Если вы добавляете новую машину, вам достаточно определить ограничения на вход для сетевых групп. Если добавляется новый пользователь, вам достаточно добавить его к одной или большему числу сетевых групп. Эти изменения независимы друг от друга; нет больше комбинаций ``для каждого пользователя и машины''. Если настройка вашей системы NIS тщательно спланирована, то для разрешения или запрещения доступа к машинам вам нужно будет модифицировать единственный конфигурационный файл.

    Первым шагом является инициализация карты NIS по имени netgroup. Программа ypinit(8) во FreeBSD по умолчанию этой карты не создаёт, хотя реализация NIS будет её поддерживает, как только она будет создана. Чтобы создать пустую карту, просто наберите

    ellington# vi /var/yp/netgroup

    и начните добавлять содержимое. Например, нам нужно по крайней мере четыре сетевых группы: сотрудники IT, практиканты IT, обычные сотрудники и интернатура.

    IT_EMP	(,alpha,test-domain)	(,beta,test-domain)
    IT_APP	(,charlie,test-domain)	(,delta,test-domain)
    USERS	(,echo,test-domain)	(,foxtrott,test-domain) \
    	(,golf,test-domain)
    INTERNS (,able,test-domain)	(,baker,test-domain)

    IT_EMP, IT_APP и так далее являются именами сетевых групп. Несколько слов в скобках служат для добавления пользователей в группу. Три поля внутри группы обозначают следующее:

    1. Имя хоста или хостов, к которым применимы последующие записи. Если имя хоста не указано, то запись применяется ко всем хостам. Если же указывается имя хоста, то вы получите мир темноты, ужаса и страшной путаницы.

    2. Имя учетной записи, которая принадлежит этой сетевой группе.

    3. Домен NIS для учетной записи. Вы можете импортировать в вашу сетевую группу учетные записи из других доменов NIS, если вы один из тех несчастных, имеющих более одного домена NIS.

    Каждое из этих полей может содержать шаблоны, подробности даны в странице справочника по netgroup(5).

    Note: Не нужно использовать имена сетевых групп длиннее 8 символов, особенно если в вашем домене NIS имеются машины, работающие под управлением других операционных систем. Имена чувствительны к регистру; использование заглавных букв для имен сетевых групп облегчает распознавание пользователей, имен машин и сетевых групп.

    Некоторые клиенты NIS (отличные от FreeBSD) не могут работать с сетевыми группами, включающими большое количество записей. Например, в некоторых старых версиях SunOS возникают проблемы, если сетевая группа содержит более 15 записей. Вы можете обойти это ограничение, создав несколько подгрупп с 15 или меньшим количеством пользователей и настоящую сетевую группу, состоящую из подгрупп:

    BIGGRP1  (,joe1,domain)  (,joe2,domain)  (,joe3,domain) [...]
    BIGGRP2  (,joe16,domain)  (,joe17,domain) [...]
    BIGGRP3  (,joe31,domain)  (,joe32,domain)
    BIGGROUP  BIGGRP1 BIGGRP2 BIGGRP3

    Вы можете повторить этот процесс, если вам нужно иметь более 225 пользователей в одной сетевой группе.

    Активация и распространение вашей карты NIS проста:

    ellington# cd /var/yp
    ellington# make

    Это приведет к созданию трех карт NIS netgroup, netgroup.byhost и netgroup.byuser. Воспользуйтесь утилитой ypcat(1) для проверки доступности ваших новых карт NIS:

    ellington% ypcat -k netgroup
    ellington% ypcat -k netgroup.byhost
    ellington% ypcat -k netgroup.byuser

    Вывод первой команды должен соответствовать содержимому файла /var/yp/netgroup. Вторая команда не выведет ничего, если вы не зададите сетевые группы, специфичные для хоста. Третья команда может использоваться пользователем для получения списка сетевых групп.

    Настройка клиента достаточно проста. Чтобы настроить сервер war, вам достаточно запустить vipw(8) и заменить строку

    +:::::::::

    на

    +@IT_EMP:::::::::

    Теперь только данные, касающиеся пользователей, определенных в сетевой группе IT_EMP, импортируются в базу паролей машины war и только этим пользователям будет разрешен вход.

    К сожалению, это ограничение также касается и функции ~ командного процессора и всех подпрограмм, выполняющих преобразование между именами пользователей и их числовыми ID. Другими словами, команда cd ~user работать не будет, команда ls -l будет выдавать числовые идентификаторы вместо имён пользователей, а find . -user joe -print работать откажется, выдавая сообщение ``No such user''. Чтобы это исправить, вам нужно будет выполнить импорт всех записей о пользователях без разрешения на вход на ваши серверы.

    Это можно сделать, добавив еще одну строку в файл /etc/master.passwd. Эта строка должна содержать:

    +:::::::::/sbin/nologin, что означает ``Произвести импортирование всех записей с заменой командного процессора на /sbin/nologin в импортируемых записях''. Вы можете заменить любое поле в строке с паролем, указав значение по умолчанию в вашем /etc/master.passwd.

    Warning: Проверьте, что строка +:::::::::/sbin/nologin помещена после +@IT_EMP:::::::::. В противном случае все пользовательские записи, импортированные из NIS, будут иметь /sbin/nologin в качестве оболочки.

    После этого изменения при появлении нового сотрудника IT вам будет достаточно изменять только одну карту NIS. Вы можете применить подобный метод для менее важных серверов, заменяя старую строку +::::::::: в их файлах /etc/master.passwd на нечто, подобное следующему:

    +@IT_EMP:::::::::
    +@IT_APP:::::::::
    +:::::::::/sbin/nologin

    Соответствующие строки для обычных рабочих станций могут иметь такой вид:

    +@IT_EMP:::::::::
    +@USERS:::::::::
    +:::::::::/sbin/nologin

    И все было прекрасно до того момента, когда через несколько недель изменилась политика: Департамент IT начал нанимать интернатуру. Интернатуре в IT позволили использовать обычные рабочие станции и менее важные серверы; практикантам позволили входить на главные серверы. Вы создали новую сетевую группу IT_INTERN, добавили в нее новую интернатуру и начали изменять настройки на всех и каждой машине... Как говорит старая мудрость: ``Ошибки в централизованном планировании приводят к глобальному хаосу''.

    Возможность в NIS создавать сетевые группы из других сетевых групп может использоваться для предотвращения подобных ситуаций. Одним из вариантов является создание сетевых групп на основе ролей. Например, вы можете создать сетевую группу с именем BIGSRV для задания ограничений на вход на важные серверы, другую сетевую группу с именем SMALLSRV для менее важных серверов и третью сетевую группу под названием USERBOX для обычных рабочих станций. Каждая из этих сетевых групп содержит сетевые группы, которым позволено входить на эти машины. Новые записи для вашей карты NIS сетевой группы должны выглядеть таким образом:

    BIGSRV	  IT_EMP  IT_APP
    SMALLSRV  IT_EMP  IT_APP  ITINTERN
    USERBOX   IT_EMP  ITINTERN USERS

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

    Задание сетевых групп в зависимости от машин является другой возможностью, которой можно воспользоваться при изменении политики, описанной выше. При таком развитии событий файл /etc/master.passwd на каждой машине содержит две строки, начинающиеся с ``+''. Первая из них добавляет сетевую группу с учётными записями, которым разрешено входить на эту машину, а вторая добавляет все оставшиеся учетные записи с /sbin/nologin в качестве командного процессора. Хорошей идеей является использование ИМЕНИ МАШИНЫ заглавными буквами для имени сетевой группы. Другими словами, строки должны иметь такой вид:

    +@BOXNAME:::::::::
    +:::::::::/sbin/nologin

    Как только вы завершите эту работу для всех ваших машин, вам не нужно будет снова модифицировать локальные версии /etc/master.passwd. Все будущие изменения могут быть выполнены изменением карты NIS. Вот пример возможной карты сетевой группы для этого случая с некоторыми полезными дополнениями.

    # Сначала определяем группы пользователей
    IT_EMP	  (,alpha,test-domain)	  (,beta,test-domain)
    IT_APP	  (,charlie,test-domain)  (,delta,test-domain)
    DEPT1	  (,echo,test-domain)	  (,foxtrott,test-domain)
    DEPT2	  (,golf,test-domain)	  (,hotel,test-domain)
    DEPT3	  (,india,test-domain)	  (,juliet,test-domain)
    ITINTERN  (,kilo,test-domain)	  (,lima,test-domain)
    D_INTERNS (,able,test-domain)	  (,baker,test-domain)
    #
    # Теперь задаем несколько групп на основе ролей
    USERS	  DEPT1   DEPT2     DEPT3
    BIGSRV	  IT_EMP  IT_APP
    SMALLSRV  IT_EMP  IT_APP    ITINTERN
    USERBOX   IT_EMP  ITINTERN  USERS
    #
    # И группы для специальных задач
    # Открыть пользователям echo и golf доступ к антивирусной машине
    SECURITY  IT_EMP  (,echo,test-domain)  (,golf,test-domain)
    #
    # Сетевые группы, специфичные для машин
    # Наши главные серверы
    WAR	  BIGSRV
    FAMINE	  BIGSRV
    # Пользователю india необходим доступ к этому серверу
    POLLUTION  BIGSRV  (,india,test-domain)
    #
    # Этот очень важен и ему требуются большие ограничения доступа
    DEATH	  IT_EMP
    #
    # Антивирусная машина, упомянутая выше
    ONE	  SECURITY
    #
    # Ограничить машину единственным пользователем
    TWO	  (,hotel,test-domain)
    # [...далее следуют другие группы]

    Если вы используете какие-либо базы данных для управления учетными записями ваших пользователей, вы должны смочь создать первую часть карты с помощью инструментов построения отчетов вашей базы данных. В таком случае новые пользователи автоматически получат доступ к машинам.

    И последнее замечание: Не всегда бывает разумно использовать сетевые группы на основе машин. Если в студенческих лабораториях вы используете несколько десятков или даже сотен одинаковых машин, то вам нужно использовать сетевые группы на основе ролей, а не основе машин, для того, чтобы размеры карты NIS оставались в разумных пределах.

    19.9.8 Важные замечания

    Есть некоторые действия, которые нужно будет выполнять по-другому, если вы работаете с NIS.

    19.9.9 Совместимость с NIS v1

    ypserv из поставки FreeBSD имеет встроенную поддержку для обслуживания клиентов NIS v1. Реализация NIS во FreeBSD использует только протокол NIS v2, хотя другие реализации имеют поддержку протокола v1 для совместимости со старыми системами. Даемоны ypbind, поставляемые с такими системами, будут пытаться осуществить привязку к серверу NIS v1, даже если это им не нужно (и они будут постоянно рассылать широковещательные запросы в поиске такого сервера даже после получения ответа от сервера v2). Отметьте, что хотя имеется поддержка обычных клиентских вызовов, эта версия ypserv не отрабатывает запросы на передачу карт v1; следовательно, она не может использоваться в качестве главного или вторичного серверов вместе с другими серверами NIS, поддерживающими только протокол v1. К счастью, скорее всего, в настоящий момент такие серверы практически не используются.

    19.9.10 Серверы NIS, которые также являются клиентами NIS

    Особое внимание следует уделить использованию ypserv в домене со многими серверами, когда серверные машины являются также клиентами NIS. Неплохо бы заставить серверы осуществить привязку к самим себе, запретив рассылку запросов на привязку и возможно, перекрестную привязку друг к другу. Если один сервер выйдет из строя, а другие будут зависеть от него, то в результате могут возникнуть странные ситуации. Постепенно все клиенты попадут в таймаут и попытаются привязаться к другим серверам, но полученная задержка может быть значительной, а странности останутся, так как серверы снова могут привязаться друг к другу.

    Вы можете заставить хост выполнить привязку к конкретному серверу, запустив команду ypbind с флагом -S. Если вы не хотите делать это вручную каждый раз при перезагрузке вашего сервера NIS, то можете добавить в файл /etc/rc.conf такие строки:

    nis_client_enable="YES"   # run client stuff as well
    nis_client_flags="-S NIS domain,server"

    Дополнительную информацию можно найти на странице справки по ypbind(8).

    19.9.11 Форматы паролей

    Одним из общих вопросов, которые возникают в начале работы с NIS, является вопрос совместимости форматов паролей. Если ваш сервер NIS использует пароли, зашифрованные алгоритмом DES, то он будет поддерживать только тех клиентов, что также используют DES. К примеру, если в вашей сети имеются клиенты NIS, использующие Solaris, то вам, скорее всего, необходимо использовать пароли с шифрованием по алгоритму DES.

    Чтобы понять, какой формат используют ваши серверы и клиенты, загляните в файл /etc/login.conf. Если хост настроен на использование паролей, зашифрованных по алгоритму DES, то класс default будет содержать запись вроде следующей:

    default:\
    	:passwd_format=des:\
    	:copyright=/etc/COPYRIGHT:\
    	[Последующие строки опущены]

    Другими возможными значениями для passwd_format являются blf и md5 (для паролей, шифруемых по стандартам Blowfish и MD5 соответственно).

    Если вы внесли изменения в файл /etc/login.conf, то вам также нужно перестроить базу данных параметров входа в систему, что достигается запуском следующей команды пользователем root:

    # cap_mkdb /etc/login.conf

    Note: Формат паролей, которые уже находятся в файле /etc/master.passwd, не будет изменён до тех пор, пока пользователь не сменит свой пароль после перестроения базы данных параметров входа в систему.

    После этого, чтобы удостовериться в том, что пароли зашифрованы в том формате, который выбран вами, нужно проверить, что строка crypt_default в /etc/auth.conf указывает предпочтение выбранного вами формата паролей. Для этого поместите выбранный формат первым в списке. Например, при использовании DES-шифрования паролей строка будет выглядеть так:

    crypt_default	=	des blf md5

    Выполнив вышеперечисленные шаги на каждом из серверов и клиентов NIS, работающих на FreeBSD, вы можете обеспечить их согласованность относительно используемого в вашей сети формата паролей. Если у вас возникли проблемы с аутентификацией клиента NIS, начать её решать определённо стоит отсюда. Запомните: если вы хотите использовать сервер NIS в гетерогенной сети, вам, наверное, нужно будет использовать DES на всех системах в силу того, что это минимальный общий стандарт.

    Этот, и другие документы, могут быть скачаны с ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

    По вопросам связанными с FreeBSD, прочитайте документацию прежде чем писать в <questions@FreeBSD.org>.
    По вопросам связанным с этой документацией, пишите <doc@FreeBSD.org>.
    По вопросам связанным с русским переводом документации, пишите <frdp@FreeBSD.org.ua>.


    Руководство FreeBSDPrevChapter 19 Сложные вопросы работы в сетиNext

    19.12 NTP

    Текст предоставилTom Hukins.

    19.12.1 Обзор

    С течением времени часы компьютера имеют тенденцию отставать. Со временем они становятся все более неточными. NTP (Network Time Protocol - Сетевой Протокол Времени) является одним из способов вести точное время.

    Многие сервисы Интернет опираются или сильно зависят от точности часов компьютеров. К примеру, веб-сервер может получать запрос на посылку файла, который был недавно модифицирован. Такие службы, как cron(8), запускают команды в определенное время. Если часы идут неточно, то эти команды могут запуститься не тогда, когда это ожидается.

    FreeBSD поставляется с сервером NTP ntpd(8), который можно использовать для опроса других серверов NTP для установки часов на вашей машине или предоставления услуг точного времени.

    19.12.2 Выбор подходящих серверов NTP

    Для синхронизации ваших часов вам нужно найти для использования один или большее количество серверов NTP. Ваш сетевой администратор или провайдер могут иметь сервер NTP для этой цели--обратитесь к ним, так ли это в вашем случае. Существует список общедоступных серверов NTP, которым можно воспользоваться для поиска ближайшего к вам сервера NTP. Не забудьте выяснить политику выбранного вами сервера и спросить разрешения, если это требуется.

    Выбор нескольких несвязанных серверов NTP является хорошей идеей в том случае, если один из используемых вами серверов станет недоступным или его часы неточны. ntpd(8) использует ответы, которые он получает от других серверов с умом--он делает предпочтение надежным серверам.

    19.12.3 Настройка вашей машины

    19.12.3.1 Базовая конфигурация

    Если вам нужно только синхронизировать ваши часы при загрузке машины, вы можете воспользоваться утилитой ntpdate(8). Это может подойти для некоторых настольных машин, которые часто перезагружаются и только требуют изредка синхронизироваться, но на большинстве машин должен работать ntpd(8).

    Использование ntpdate(8) при загрузке также хорошо для машин, на которых запущен даемон ntpd(8). Программа ntpd(8) изменяет время постепенно, тогда как ntpdate(8) устанавливает время вне зависимости от того, насколько велика разница между текущим временем машины и точным временем.

    Для включения ntpdate(8) во время загрузки, добавьте строчку ntpdate_enable="YES" в файл /etc/rc.conf. Вам также потребуется указать все серверы, с которыми вы хотите синхронизироваться, и все параметры, которые передаются в ntpdate(8), в ntpdate_flags.

    19.12.3.2 Общие настройки

    NTP настраивается в файле /etc/ntp.conf, формат которого описан в ntp.conf(5). Вот простой пример:

    server ntplocal.example.com prefer
    server timeserver.example.org
    server ntp2a.example.net
    
    driftfile /var/db/ntp.drift

    Параметр server задает, какие серверы будут использоваться, по одному в каждой строке. Если сервер задан с аргументом prefer, как ntplocal.example.com, то этому серверу отдается предпочтение перед остальными. Ответ от предпочтительного сервера будет отброшен, если он значительно отличается от ответов других серверов, в противном случае он будет использоваться безотносительно к другим ответам. Аргумент prefer обычно используется для серверов NTP, о которых известно, что они очень точны, такими, на которых используется специальное оборудование точного времени.

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

    Параметр driftfile задает, какой файл используется для сохранения информации о предыдущих ответах от серверов NTP, которые вы используете. Этот файл содержит внутреннюю информацию для NTP. Он не должен изменяться никакими другими процессами.

    19.12.3.3 Управление доступом к вашему серверу

    По умолчанию ваш сервер NTP будет доступен всем хостам в Интернет. Параметр restrict в файле /etc/ntp.conf позволяет вам контролировать, какие машины могут обращаться к вашему серверу.

    Если вы хотите запретить всем машинам обращаться к вашему серверу NTP, добавьте следующую строку в файл /etc/ntp.conf:

    restrict default ignore

    Если вы хотите разрешить синхронизировать свои часы с вашим сервером только машинам в вашей сети, но запретить им настраивать сервер или быть равноправными участниками синхронизации времени, то вместо указанной добавьте строчку

    restrict 192.168.1.0 mask 255.255.255.0 notrust nomodify notrap

    где 192.168.1.0 является адресом IP вашей сети, а 255.255.255.0 её сетевой маской.

    /etc/ntp.conf может содержать несколько директив restrict. Для получения подробной информации обратитесь к подразделу Access Control Support (Поддержка Управления Доступом) в ntp.conf(5).

    19.12.4 Запуск сервера NTP

    Для того, чтобы сервер NTP запускался при загрузке, добавьте строку xntpd_enable="YES" в файл /etc/rc.conf. Если вы хотите передать дополнительные опции в ntpd(8), то отредактируйте параметр xntpd_flags в файле /etc/rc.conf.

    Для запуска сервера без перезагрузки вашей машины, выполните команду ntpd, не забыв задать дополнительные параметры из переменной xntpd_flags в файле /etc/rc.conf. К примеру:

    # ntpd -p /var/run/ntpd.pid

    Note: Во FreeBSD 5.X различные параметры из /etc/rc.conf были переименованы. В частности, в списке параметров вам необходимо заменить каждую строчку xntpd на ntpd.

    19.12.5 Использование ntpd с временным подключением к Интернет

    Для нормальной работы программе ntpd(8) не требуется постоянное подключение к Интернет. Однако если ваше временное подключение к Интернет настроено для дозвонки по требованию, хорошо бы запретить трафику NTP вызывать дозвонку или поддерживать соединение постоянно. Если вы используете пользовательский PPP, то можете воспользоваться директивами filter в файле /etc/ppp/ppp.conf. К примеру:

     set filter dial 0 deny udp src eq 123
     # Prevent NTP traffic from initiating dial out
     set filter dial 1 permit 0 0
     set filter alive 0 deny udp src eq 123
     # Prevent incoming NTP traffic from keeping the connection open
     set filter alive 1 deny udp dst eq 123
     # Prevent outgoing NTP traffic from keeping the connection open
     set filter alive 2 permit 0/0 0/0

    Более подробную информацию можно найти в разделе PACKET FILTERING (ФИЛЬТРАЦИЯ ПАКЕТОВ) в ppp(8), а примеры в /usr/share/examples/ppp/.

    Note: Некоторые провайдеры Интернет блокируют трафик по портам с маленькими номерами, что приводит к неработоспособности NTP, так как ответы никогда не достигают вашей машины.

    19.12.6 Дополнительная литература

    Документация по серверу NTP может быть найдена в каталоге /usr/share/doc/ntp/ в формате HTML.

    Этот, и другие документы, могут быть скачаны с ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

    По вопросам связанными с FreeBSD, прочитайте документацию прежде чем писать в <questions@FreeBSD.org>.
    По вопросам связанным с этой документацией, пишите <doc@FreeBSD.org>.
    По вопросам связанным с русским переводом документации, пишите <frdp@FreeBSD.org.ua>.


    Руководство FreeBSDPrevChapter 19 Сложные вопросы работы в сетиNext

    19.15 IP по параллельному порту (PLIP)

    PLIP позволяет нам работать с TCP/IP по параллельному порту. Это полезно для машин без сетевых адаптеров или для установки на лаптопы. В этом разделе мы обсудим:

    19.15.1 Создание параллельного кабеля

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

    Table 19-1. Распайка кабеля для параллельного порта для сетевой работы

    A-nameA-EndB-EndОписаниеPost/Bit

    DATA0
    -ERROR

    2
    15

    15
    2

    Data

    0/0x01
    1/0x08

    DATA1
    +SLCT

    3
    13

    13
    3

    Data

    0/0x02
    1/0x10

    DATA2
    +PE

    4
    12

    12
    4

    Data

    0/0x04
    1/0x20

    DATA3
    -ACK

    5
    10

    10
    5

    Strobe

    0/0x08
    1/0x40

    DATA4
    BUSY

    6
    11

    11
    6

    Data

    0/0x10
    1/0x80

    GND18-2518-25GND-

    19.15.2 Настройка PLIP

    Прежде всего вы должны найти laplink-кабель. Затем удостоверьтесь, что на обоих компьютерах в ядро включена поддержка драйвера lpt(4):

    # grep lp /var/run/dmesg.boot
    lpt0: <Printer> on ppbus0
    lpt0: Interrupt-driven port

    Управление параллельным портом должно выполняться по прерываниям. Во FreeBSD 4.X в файле конфигурации ядра должна присутствовать строка, подобная следующей:

    device ppc0 at isa? irq 7

    Во FreeBSD 5.X файл /boot/device.hints должен содержать следующие строки:

    hint.ppc.0.at="isa"
    hint.ppc.0.irq="7"

    Затем проверьте, что файл конфигурации ядра имеет строку device plip, или загружен ли модуль ядра plip.ko. В обоих случаях интерфейс работы с сетью по параллельному порту должен присутствовать на момент прямого использования команды ifconfig(8). Во FreeBSD 4.X это должно быть примерно так:

    # ifconfig lp0
    lp0: flags=8810<POINTOPOINT,SIMPLEX,MULTICAST> mtu 1500

    а для FreeBSD 5.X:

    # ifconfig plip0
    plip0: flags=8810<POINTOPOINT,SIMPLEX,MULTICAST> mtu 1500

    Note: Имя устройства, используемого для параллельного интерфейса, во FreeBSD 4.X (lpX) и FreeBSD 5.X (plipX).

    Подключите кабель laplink к параллельным интерфейсам на обоих компьютерах.

    Настройте параметры сетевого интерфейса с обеих сторон, работая как пользователь root. К примеру, если вы хотите соединить хост host1, на котором работает FreeBSD 4.X, с хостом host2 под управлением FreeBSD 5.X:

                     host1 <-----> host2
    IP Address    10.0.0.1      10.0.0.2

    Настройте интерфейс на машине host1, выполнив:

    # ifconfig plip0 10.0.0.1 10.0.0.2

    Настройте интерфейс на машине host2, выполнив:

    # ifconfig lp0 10.0.0.2 10.0.0.1

    Теперь вы должны получить работающее соединение. Пожалуйста, прочтите страницы руководства по lp(4) и lpt(4) для выяснения деталей.

    Вы должны также добавить оба хоста в /etc/hosts:

    127.0.0.1               localhost.my.domain localhost
    10.0.0.1                host1.my.domain host1
    10.0.0.2                host2.my.domain

    Чтобы проверить работу соединения, перейдите к каждому хосту и выполните тестирование соединения с другой машиной посредством команды ping. К примеру, на машине host1:

    # ifconfig lp0
    lp0: flags=8851<UP,POINTOPOINT,RUNNING,SIMPLEX,MULTICAST> mtu 1500
            inet 10.0.0.1 --> 10.0.0.2 netmask 0xff000000
    # netstat -r
    Routing tables
    
    Internet:
    Destination        Gateway          Flags     Refs     Use      Netif Expire
    host2              host1              UH          0       0       lp0
    # ping -c 4 host2
    PING host2 (10.0.0.2): 56 data bytes
    64 bytes from 10.0.0.2: icmp_seq=0 ttl=255 time=2.774 ms
    64 bytes from 10.0.0.2: icmp_seq=1 ttl=255 time=2.530 ms
    64 bytes from 10.0.0.2: icmp_seq=2 ttl=255 time=2.556 ms
    64 bytes from 10.0.0.2: icmp_seq=3 ttl=255 time=2.714 ms
    
    --- host2 ping statistics ---
    4 packets transmitted, 4 packets received, 0% packet loss
    round-trip min/avg/max/stddev = 2.530/2.643/2.774/0.103 ms

    Этот, и другие документы, могут быть скачаны с ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

    По вопросам связанными с FreeBSD, прочитайте документацию прежде чем писать в <questions@FreeBSD.org>.
    По вопросам связанным с этой документацией, пишите <doc@FreeBSD.org>.
    По вопросам связанным с русским переводом документации, пишите <frdp@FreeBSD.org.ua>.


    Руководство FreeBSDPrevChapter 19 Сложные вопросы работы в сетиNext

    19.2 Сетевые шлюзы и маршруты

    Текст предоставилCoranth Gryphon.

    Чтобы некоторая машина могла найти в сети другую, должен иметься механизм описания того, как добраться от одной машине к другой. Такой механизм называется маршрутизацией. ``Маршрут'' задаётся парой адресов: ``адресом назначения'' (destination) и ``сетевым шлюзом'' (gateway). Эта пара указывает на то, что если Вы пытаетесь соединиться с адресом назначения, то вам нужно устанавливать связь через ``сетевой шлюз''. Существует три типа адресов назначения: отдельные хосты, подсети и ``маршрут по умолчанию'' (default). ``Маршрут по умолчанию'' (default route) используется, если не подходит ни один из других маршрутов. Мы поговорим немного подробнее о маршрутах по умолчанию позже. Также имеется и три типа сетевых шлюзов: отдельные хосты, интерфейсы (также называемые ``подключениями'' (links)) и аппаратные адреса Ethernet (MAC-адреса).

    19.2.1 Пример

    Для иллюстрации различных аспектов маршрутизации мы будем использовать следующий пример использования команды netstat:

    % netstat -r
    Routing tables
    
    Destination      Gateway            Flags     Refs     Use     Netif Expire
    
    default 	 outside-gw	    UGSc       37      418	ppp0
    localhost	 localhost	    UH		0      181	 lo0
    test0		 0:e0:b5:36:cf:4f   UHLW	5    63288	 ed0	 77
    10.20.30.255	 link#1 	    UHLW	1     2421
    example.com	 link#1 	    UC		0	 0
    host1		 0:e0:a8:37:8:1e    UHLW	3     4601	 lo0
    host2		 0:e0:a8:37:8:1e    UHLW	0	 5	 lo0 =>
    host2.example.com link#1 	    UC		0	 0
    224		 link#1 	    UC		0	 0

    В первых двух строках задаются маршрут по умолчанию (который будет описан в следующем разделе) и маршрут на localhost.

    Интерфейс (колонка Netif), который указан в этой таблице маршрутов для использования с localhost и который назван lo0, имеет также второе название, устройство loopback. Это значит сохранение всего трафика для указанного адреса назначения внутри, без посылки его по сети, так как он все равно будет направлен туда, где был создан.

    Следующими выделяющимися адресами являются адреса, начинающиеся с 0:e0:.... Это аппаратные адреса Ethernet, или MAC-адреса. FreeBSD будет автоматически распознавать любой хост (в нашем примере это test0) в локальной сети Ethernet и добавит маршрут для этого хоста, указывающий непосредственно на интерфейс Ethernet, ed0. С этим типом маршрута также связан параметр таймаута (колонка Expire), используемый в случае неудачной попытки услышать этот хост в течении некоторого периода времени. Если такое происходит, то маршрут до этого хоста будет автоматически удалён. Такие хосты поддерживаются при помощи механизма, известного как RIP (Routing Information Protocol), который вычисляет маршруты к хостам локальной сети при помощи определения кратчайшего расстояния.

    FreeBSD добавит также все маршруты к подсетям для локальных подсетей (10.20.30.255 является широковещательным адресом для подсети 10.20.30, а имя example.com является именем домена, связанным с этой подсетью). Назначение link#1 соответствует первому адаптеру Ethernet в машине. Отметьте отсутствие дополнительного интерфейса для этих строк.

    В обеих этих группах (хосты и подсети локальной сети) маршруты конфигурируются автоматически даемоном, который называется routed. Если он не запущен, то будут существовать только статически заданные (то есть введенные явно) маршруты.

    Строка host1 относится к нашему хосту, который известен по адресу Ethernet. Так как мы являемся посылающим хостом, FreeBSD знает, что нужно использовать loopback-интерфейс (lo0) вместо того, чтобы осуществлять посылку в интерфейс Ethernet.

    Две строки host2 являются примером того, что происходит при использовании алиасов в команде ifconfig(8) (обратитесь к разделу об Ethernet для объяснения того, почему мы это делаем). Символ => после интерфейса lo0 указывает на то, что мы используем не просто интерфейс loopback (так как это адрес, обозначающий локальный хост), но к тому же это алиас. Такие маршруты появляются только на хосте, поддерживающем алиасы; для всех остальных хостов в локальной сети для таких маршрутов будут показаны просто строчки link#1.

    Последняя строчка (подсеть назначения 224) имеет отношение к многоадресной посылке, которая будет рассмотрена в другом разделе.

    И наконец, различные атрибуты каждого маршрута перечисляются в колонке Flags. Ниже приводится краткая таблица некоторых из этих флагов и их значений:

    UUp: Маршрут актуален.
    HHost: Адресом назначения является отдельный хост.
    GGateway: Посылать все для этого адреса назначения на указанную удаленную систему, которая будет сама определять дальнейший путь прохождения информации.
    SStatic: Маршрут был настроен вручную, а не автоматически сгенерирован системой.
    CClone: Новый маршрут сгенерирован на основе указанного для машин, к которым мы подключены. Такой тип маршрута обычно используется для локальных сетей.
    WWasCloned: Указывает на то, что маршрут был автоматически сконфигурирован на основе маршрута в локальной сети (Clone).
    LLink: Маршрут включает ссылку на аппаратный адрес Ethernet.

    19.2.2 Маршруты по умолчанию

    Когда локальной системе нужно установить соединение с удаленным хостом, она обращается к таблице маршрутов для того, чтобы определить, существует ли такой маршрут. Если удаленный хост попадает в подсеть, для которой известен способ ее достижения (маршруты типа Cloned), то система определяет возможность подключиться к ней по этому интерфейсу.

    Если все известные маршруты не подходят, у системы имеется последняя возможность: маршрут ``default''. Это маршрут с особым типом сетевого шлюза (обычно единственным, присутствующим в системе), и в поле флагов он всегда помечен как c. Для хостов в локальной сети этот сетевой шлюз указывает на машину, имеющую прямое подключение к внешнему миру (неважно, используется ли связь по протоколу PPP, канал DSL, кабельный модем, T1 или какой-то другой сетевой интерфейс).

    Если вы настраиваете маршрут по умолчанию на машине, которая сама является сетевым шлюзом во внешний мир, то маршрутом по умолчанию будет являться сетевой шлюз у Вашего провайдера Интернет (ISP).

    Давайте взглянем на примеры маршрутов по умолчанию. Вот типичная конфигурация:

    Хосты Local1 и Local2 находятся в нашей сети. Local1 подключён к ISP через коммутируемое соединение по протоколу PPP. Этот компьютер с сервером PPP подключён посредством локальной сети к другому шлюзовому компьютеру через внешний интерфейс самого ISP к Интернет.

    Маршруты по умолчанию для каждой из ваших машин будут следующими:

    ХостМаршрут по умолчаниюИнтерфейс
    Local2Local1Ethernet
    Local1T1-GWPPP

    Часто задаётся вопрос ``Почему (или каким образом) в качестве шлюза по умолчанию для машины Local1 мы указываем T1-GW, а не сервер провайдера, к которому подключаемся?''.

    Запомните, что из-за использования PPP-интерфейсом адреса в сети провайдера Интернет с вашей стороны соединения, маршруты для всех других машин в локальной сети провайдера будут сгенерированы автоматически. Таким образом, вы уже будете знать, как достичь машины T1-GW, так что нет нужды в промежуточной точке при посылке трафика к серверу ISP.

    В локальных сетях адрес X.X.X.1 часто используется в качестве адреса сетевого шлюза. Тогда (при использовании того же самого примера) если пространство адресов класса C вашей локальной сети было задано как 10.20.30, а ваш провайдер использует 10.9.9, то маршруты по умолчанию будут такие:

    ХостМаршрут по умолчанию
    Local2 (10.20.30.2)Local1 (10.20.30.1)
    Local1 (10.20.30.1, 10.9.9.30)T1-GW (10.9.9.1)

    Вы можете легко задать используемый по умолчанию маршрутизатор посредством файла /etc/rc.conf. В нашем примере на машине Local2 мы добавили такую строку в файл /etc/rc.conf:

    defaultrouter="10.20.30.1"

    Это также возможно сделать и непосредственно из командной строки при помощи команды route(8):

    # route add default 10.20.30.1

    Для получения дополнительной информации об управлении таблицами маршрутизации, обратитесь к справочной странице по команде route(8).

    19.2.3 Хосты с двойным подключением

    Есть еще один тип подключения, который мы должны рассмотреть, и это случай, когда хост находится в двух различных сетях. Технически, любая машина, работающая как сетевой шлюз (в примере выше использовалось PPP-соединение), считается хостом с двойным подключением. Однако этот термин реально используется для описания машины, находящейся в двух локальных сетях.

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

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

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

    19.2.4 Построение маршрутизатора

    Сетевой маршрутизатор является обычной системой, которая пересылает пакеты с одного интерфейса на другой. Стандарты Интернет и хорошая инженерная практика не позволяют Проекту FreeBSD включать эту функцию по умолчанию во FreeBSD. Вы можете включить эту возможность, изменив значение следующей переменной в YES в файле rc.conf(5):

    gateway_enable=YES          # Set to YES if this host will be a gateway

    Этот параметр изменит значение sysctl(8)-переменной net.inet.ip.forwarding в 1. Если вам временно нужно выключить маршрутизацию, вы можете на время сбросить это значение в 0.

    Вашему новому маршрутизатору нужна информация о маршрутах для того, чтобы знать, куда пересылать трафик. Если ваша сеть достаточно проста, то вы можете использовать статические маршруты. С FreeBSD также поставляется стандартный даемон BSD для маршрутизации routed(8), который умеет работать с RIP (как версии 1, так и версии 2) и IRDP. Поддержка BGP v4, OSPF v2 и других сложных протоколов маршрутизации имеется в пакете net/zebra. Также существуют и коммерческие продукты, применяемые как более комплексное решение проблемы маршрутизации в сети, такие как GateD®.

    Даже когда FreeBSD настроена таким образом, она не полностью соответствует стандартным требованиям Интернет для маршрутизаторов. Однако для обычного использования такое неполное соответствие достаточно.

    19.2.5 Распространение маршрутов

    Мы уже говорили о том, как мы задаем наши маршруты во внешний мир, но не упоминали о том, как внешний мир находит нас.

    Мы уже знаем, что таблицы маршрутизации могут быть настроены так, что весь трафик для некоторого диапазона адресов (в нашем примере это подсеть класса C) может быть направлен заданному хосту в той сети, которая будет перенаправлять входящие пакеты дальше.

    При получении адресного пространства, выделенного Вашей сети, Ваш провайдер настроит свои таблицы маршрутизации так, что весь трафик для Вашей подсети будет пересылаться по PPP-соединению к Вашей сети. Но как серверы по всей стране узнают, что Ваш трафик нужно посылать Вашему ISP?

    Существует система (подобная распределению информации DNS), которая отслеживает все назначенные пространства адресов и определяет точку подключения к магистрали Интернет. ``Магистралью'' называют главные каналы, по которым идет трафик Интернет внутри страны и по всему миру. Каждая магистральная машина имеет копию основного набора таблиц, согласно которой трафик для конкретной сети направляется по конкретному магистральному каналу, и затем, передаваясь по цепочке провайдеров, он достигает вашей сети.

    Задачей вашего провайдера является объявить на магистрали о том, что он отвечает за подключение (и поэтому на него указывает маршрут) вашей сети. Этот процесс называется распространением маршрута.

    19.2.6 Устранение неполадок

    Иногда с распространением маршрута возникают проблемы, и некоторые сайты не могут к вам подключиться. Наверное, самой полезной командой для определения точки неверной работы маршрутизации является traceroute(8). Она также полезна и когда вы сами не можете подключиться к удаленной машине (то есть команда ping(8) не срабатывает).

    Команда traceroute(8) запускается с именем удаленного хоста, с которым вы хотите установить соединение, в качестве параметра. Она показывает промежуточные сетевые шлюзы по пути следования, в конце концов достигая адрес назначения или прерывая свою работу из-за отсутствия соединения.

    За дополнительной информацией обратитесь к странице Справочника по traceroute(8).

    19.2.7 Маршрутизация многоадресного трафика

    FreeBSD изначально поддерживает как приложения, работающие с многоадресным трафиком, так и его маршрутизацию. Такие приложения не требуют особой настройки FreeBSD; обычно они работают сразу. Для маршрутизации многоадресного трафика требуется, чтобы поддержка этого была включена в ядро:

    options MROUTING

    Кроме того, даемон многоадресной маршрутизации, mrouted(8), должен быть настроен посредством файла /etc/mrouted.conf на использование туннелей и DVMRP. Дополнительную информацию о настройки многоадресного трафика можно найти на страницах справочной системы, посвящённых даемону mrouted(8).

    Этот, и другие документы, могут быть скачаны с ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

    По вопросам связанными с FreeBSD, прочитайте документацию прежде чем писать в <questions@FreeBSD.org>.
    По вопросам связанным с этой документацией, пишите <doc@FreeBSD.org>.
    По вопросам связанным с русским переводом документации, пишите <frdp@FreeBSD.org.ua>.


    Руководство FreeBSDPrevChapter 19 Сложные вопросы работы в сетиNext

    19.3 Беспроводные сети

    Текст предоставил Перевёл на русский языкEric Anderson and Андрей Захватов.

    19.3.1 Введение

    Было бы весьма полезным иметь возможность использовать компьютер без хлопот, связанных с постоянно подключенным сетевым кабелем. FreeBSD может использоваться как клиент беспроводной сети, и даже в качестве ``точки доступа'' к ней.

    19.3.2 Режимы работы беспроводной связи

    Существуют два варианта конфигурации устройств беспроводного доступа 802.11: BSS и IBSS.

    19.3.2.1 Режим BSS

    Режим BSS является наиболее часто используемым. Режим BSS также называют режимом инфраструктуры. В этом режиме несколько точек доступа беспроводной сети подключаются к проводной сети передачи данных. Каждое беспроводная сеть имеет собственное имя. Это имя является идентификатором SSID сети.

    Клиенты беспроводной сети подключаются к этим точкам доступа беспроводной сети. Стандарт IEEE 802.11 определяет протокол, используемый для связи в беспроводных сетях. Клиент сети беспроводного доступа может подключаться к некоторой сети, если задан её SSID. Клиент может также подключаться к любой сети, если SSID не задан.

    19.3.2.2 Режим IBSS

    Режим IBSS, также называемый ad-hoc, предназначен для соединений точка-точка. На самом деле существуют два типа режима ad-hoc. Один из них является режимом IBSS, называемый также режимом ad-hoc или IEEE ad-hoc. Этот режим определён стандартами IEEE 802.11. Второй режим называется демонстрационным режимом ad-hoc, или Lucent ad-hoc (или, иногда неправильно, режимом ad-hoc). Это старый, существовавший до появления 802.11, режим ad-hoc, и он должен использоваться только для старых сетей. В дальнейшем мы не будем рассматривать ни один из режимов ad-hoc.

    19.3.3 Режим инфраструктуры

    19.3.3.1 Точки доступа

    Точки доступа представляют собой беспроводные сетевые устройства, позволяющие одному или большему количеству клиентов беспроводной сети использовать эти устройства в качестве центрального сетевого концентратора. При использовании точки доступа все клиенты работают через неё. Зачастую используются несколько точек доступа для полного покрытия беспроводной сетью некоторой зоны, такой, как дом, офис или парк.

    Точки доступа обычно имеют несколько подключений к сети: адаптер беспроводной связи и один или большее количество сетевых ethernet-адаптеров для подключения к остальной части сети.

    Точки доступа могут быть либо приобретены уже настроенными, либо вы можете создать собственную при помощи FreeBSD и поддерживаемого адаптера беспроводной связи. Несколько производителей выпускают точки беспроводного доступа и адаптеры беспроводной связи с различными возможностями.

    19.3.3.2 Построение точки доступа с FreeBSD

    19.3.3.2.1 Требования

    Для того, чтобы создать беспроводную точку доступа на FreeBSD, вам нужно иметь совместимый адаптер беспроводной связи. На данный момент поддерживаются адаптеры только на основе набора микросхем Prism. Вам также потребуется поддерживаемый FreeBSD адаптер проводной сети (найти такой будет нетрудно, FreeBSD поддерживает множество различных устройств). В этом руководстве мы будем полагать, что вы будете строить сетевой мост (bridge(4)) для пропуска всего трафика между устройством беспроводной связи и сетью, подключенной к обычному Ethernet-адаптеру.

    Функциональность hostap, которая используется FreeBSD для организации точки доступа, работает лучше всего с некоторыми версиями микрокода. Адаптеры Prism 2 должны использовать микрокод версии 1.3.4 или более новый. Адаптеры Prism 2.5 и Prism 3 должны использовать микрокод версии 1.4.9. Более старые версии микрокода могут работать нормально, а могут и некорректно. В настоящее время единственным способом обновления адаптеров является использование утилит обновления для Windows®, которые можно получить у производителя ваших адаптеров.

    19.3.3.2.2 Настройка

    Первым делом убедитесь, что ваша система распознаёт адаптер беспроводной связи:

    # ifconfig -a
    wi0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
            inet6 fe80::202:2dff:fe2d:c938%wi0 prefixlen 64 scopeid 0x7 
            inet 0.0.0.0 netmask 0xff000000 broadcast 255.255.255.255
            ether 00:09:2d:2d:c9:50
            media: IEEE 802.11 Wireless Ethernet autoselect (DS/2Mbps)
            status: no carrier
            ssid ""
            stationname "FreeBSD Wireless node"
            channel 10 authmode OPEN powersavemode OFF powersavesleep 100
            wepmode OFF weptxkey 1

    На данном этапе не беспокойтесь о деталях, просто убедитесь, что выдаётся нечто, указывающее на установленный адаптер беспроводной связи. Если при этом у вас есть проблемы с недоступностью интерфейса беспроводной связи, и вы используете PC Card, то обратитесь к страницам справочной системы, описывающим pccardc(8) и pccardd(8) для получения более полной информации.

    Теперь вам нужно загрузить модуль для подготовки той части FreeBSD, что отвечает за организацию сетевых мостов, для работы с точкой доступа. Для загрузки модуля bridge(4) просто выполните следующую команду:

    # kldload bridge

    При загрузке модуля никаких сообщений об ошибках быть не должно. Если это всё же произошло, вам может потребоваться вкомпилировать код для модуля bridge(4) в ядро. В этом вам должен помочь раздел Руководства об организации сетевых мостов.

    Теперь, когда вы завершили с той частью, что касается организации сетевого моста, нам нужно указать ядру FreeBSD, какие интерфейсы должны объединяться в сетевом мосте. Это мы делаем при помощи sysctl(8):

    # sysctl net.link.ether.bridge=1
    # sysctl net.link.ether.bridge_cfg="wi0,xl0"
    # sysctl net.inet.ip.forwarding=1

    Во FreeBSD 5.2-RELEASE и последующих версиях нужно использовать вместо указанных следующие параметры:

    # sysctl net.link.ether.bridge.enable=1
    # sysctl net.link.ether.bridge.config="wi0,xl0"
    # sysctl net.inet.ip.forwarding=1

    Теперь необходимо настроить адаптер беспроводной сети.

    Следующая команда заставит адаптер работать в режиме точки доступа:

    # ifconfig wi0 ssid my_net channel 11 media DS/11Mbps mediaopt hostap up stationname "FreeBSD AP"

    Строчка ifconfig(8) активизирует интерфейс wi0, конфигурирует его SSID как my_net, а имя станции как FreeBSD AP. media DS/11Mbps переводит адаптер в режим 11Mbps и нужен только для того, чтобы сработал параметр mediaopt. Параметр mediaopt hostap переводит интерфейс в режим точки доступа. Параметр channel 11 задаёт использование канала 802.11b. Страница справки по команде wicontrol(8) перечисляет корректные значения каналов для ваших нужд.

    Теперь у вас должна получиться полнофункциональная работающая точка доступа. Настоятельно советуем прочесть страницы справочной по wicontrol(8), ifconfig(8), и wi(4) для получения дополнительной информации.

    Также полагаем, что вы прочтёте следующий раздел о шифровании.

    19.3.3.2.3 Информация о состоянии

    После того, как точка доступа сконфигурирована и начала свою работу, операторам может понадобиться видеть клиентов, связанных с этой точкой. В любой момент оператор может набрать:

    # wicontrol -l             
    1 station:
    00:09:b7:7b:9d:16  asid=04c0, flags=3<ASSOC,AUTH>, caps=1<ESS>, rates=f<1M,2M,5.5M,11M>, sig=38/15

    Это показывает, что имеется одна связанная станция с перечисленными характеристиками. Выдаваемое значение сигнала должно использоваться только как сравнительный индикатор его силы. Его перевод в dBm или другие единицы измерения различаются в разных версиях микрокода.

    19.3.3.3 Клиенты

    Клиент в беспроводной сети представляет собой систему, которая обращается к точке доступа или непосредственно к другому клиенту.

    Как правило, клиенты беспроводной сети имеют только один сетевой адаптер, а именно адаптер беспроводной сети.

    Существует несколько различных способов конфигурации клиента беспроводной сети. Они основаны на различных режимах работы в беспроводной сети, обычно BSS (режим инфраструктуры, который требует точки доступа) или IBSS (ad-hoc или режим одноранговой сети). В нашем примере мы будем использовать самый популярный их них, режим BSS, для связи с точкой доступа.

    19.3.3.3.1 Требования

    Существует только одно жёсткое условие для настройки FreeBSD в качестве клиента беспроводной сети. Вам нужен адаптер беспроводной связи, поддерживаемый FreeBSD.

    19.3.3.3.2 Конфигурация FreeBSD как клиента беспроводной сети

    Перед тем, как подключиться к беспроводной сети, вам нужно будет узнать о ней несколько вещей. В этом примере мы подключаемся к сети, которая называется my_net, и шифрование в ней отключено.

    Замечание: В этом примере мы не используем шифрование, но это небезопасно. В следующем разделе вы узнаете, как её включить, почему это так важно, и почему некоторые технологии шифрования всё же не могут полностью обеспечить вашу информационную безопасность.

    Удостоверьтесь, что ваш адаптер распознаётся во FreeBSD:

    # ifconfig -a
    wi0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
            inet6 fe80::202:2dff:fe2d:c938%wi0 prefixlen 64 scopeid 0x7 
            inet 0.0.0.0 netmask 0xff000000 broadcast 255.255.255.255
            ether 00:09:2d:2d:c9:50
            media: IEEE 802.11 Wireless Ethernet autoselect (DS/2Mbps)
            status: no carrier
            ssid ""
            stationname "FreeBSD Wireless node"
            channel 10 authmode OPEN powersavemode OFF powersavesleep 100
            wepmode OFF weptxkey 1

    Теперь мы изменим настройки адаптера на те, что соответствуют нашей сети:

    # ifconfig wi0 inet 192.168.0.20 netmask 255.255.255.0 ssid my_net

    Замените 192.168.0.20 и 255.255.255.0 на правильные IP-адрес и сетевую маску в вашей проводной сети. Запомните, что наша точка доступа выступает в роли моста для данных между беспроводной и проводной сетями, так что они будут доступны для других устройств, находящихся в сети, как будто они тоже находятся в проводной сети.

    Как только вы это выполнили, то сможете получить ping от хостов в проводной сети, как будто вы подключены посредством обычных проводов.

    Если вы столкнулись с проблемами при работе в беспроводной сети, удостоверьтесь, что вы ассоциированы (подключены) с точкой доступа:

    # ifconfig wi0

    должна выдать некоторую информацию, и вы должны увидеть:

    status: associated

    Если статус не будет соответствовать ассоциированному, то это может значить, что вы оказались вне зоны досягаемости точки доступа, не включили шифрование или, возможно, имеются проблемы с конфигурацией.

    19.3.3.4 Шифрование

    Шифрование в беспроводной сети имеет важное значение, потому что у вас нет больше возможности ограничить сеть хорошо защищённой областью. Данные вашей беспроводной сети вещаются по всей окрестности, так что любой заинтересовавшийся может их считать. Вот здесь используется шифрование. Шифруя данные, посылаемые в эфир, вы делаете их прямой перехват гораздо более сложным для всех любопытных.

    Двумя наиболее широко применяемыми способами шифрации данных между вашим клиентом и точкой доступа являются WEP и ipsec(4).

    19.3.3.4.1 WEP

    WEP является сокращением от Wired Equivalency Protocol (Протокол Соответствия Проводной сети). WEP является попыткой сделать беспроводные сети такими же надёжными и безопасными, как проводные. К сожалению, он был взломан и сравнительно легко поддаётся вскрытию. Это означает также, что он не тот протокол, на который следует опираться, когда речь идёт о шифровании критически важных данных.

    Он лучше, чем ничего, так что используйте следующую команду для включения WEP в вашей новой точке доступа FreeBSD:

    # ifconfig wi0 inet up ssid my_net wepmode on wepkey 0x1234567890 media DS/11Mbps mediaopt hostap

    Вы можете включить WEP на клиенте следующей командой:

    # ifconfig wi0 inet 192.168.0.20 netmask 255.255.255.0 ssid my_net wepmode on wepkey 0x1234567890

    Отметьте, что вы должны заменить 0x1234567890 на более уникальный ключ.

    19.3.3.4.2 IPsec

    ipsec(4) является гораздо более надёжным и мощным средством шифрования данных в сети. Этот метод определённо является предпочтительным для шифрования данных в беспроводной сети. Более детально ознакомиться с безопасностью и применением ipsec(4) вы можете в разделе об IPsec Руководства.

    19.3.3.5 Утилиты

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

    19.3.3.5.1 Пакет bsd-airtools

    Пакет bsd-airtools представляет собой полный набор инструментов, включая инструменты для проверки беспроводной сети на предмет взлома WEP-ключа, обнаружения точки доступа и тому подобное.

    Утилиты bsd-airtools можно установить из порта net/bsd-airtools. Информацию об установке портов можно найти в Главе Chapter 4 Руководства.

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

    Для тестирования информационной безопасности вашей беспроводной сети, вы можете воспользоваться набором ``dweputils'' (dwepcrack, dwepdump и dwepkeygen), который может помочь понять, является ли WEP подходящим решением для обеспечения ваших потребностей в информационной безопасности.

    19.3.3.5.2 Утилиты wicontrol, ancontrol и raycontrol

    Это инструменты, которые используются для управления поведением адаптера беспроводной связи в сети. В примере выше мы выбирали wicontrol(8), так как нашим адаптером беспроводной сети был интерфейс wi0. Если у вас установлено устройство беспроводного доступа от Cisco, этим интерфейсом будет an0, и тогда вы будете использовать ancontrol(8).

    19.3.3.5.3 Команда ifconfig

    Утилита ifconfig(8) может использоваться для установки многих из тех параметров, что задаёт wicontrol(8), однако работа с некоторыми параметрами в ней отсутствует. Обратитесь к ifconfig(8) для выяснения параметров и опций командной строки.

    19.3.3.6 Поддерживаемые адаптеры

    19.3.3.6.1 Точки доступа

    Единственными адаптерами, которые на данный момент поддерживаются в режиме BSS (как точка доступа), являются те устройства, что сделаны на основе набора микросхем Prism 2, 2.5 или 3). Полный список можно увидеть в wi(4).

    19.3.3.6.2 Клиенты

    Практически все адаптеры беспроводной связи 802.11b на данный момент во FreeBSD поддерживаются. Большинство адаптеров, построенных на основе Prism, Spectrum24, Hermes, Aironet и Raylink, будут работать в качестве адаптера беспроводной сети в режиме IBSS (ad-hoc, одноранговая сеть и BSS).

    Этот, и другие документы, могут быть скачаны с ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

    По вопросам связанными с FreeBSD, прочитайте документацию прежде чем писать в <questions@FreeBSD.org>.
    По вопросам связанным с этой документацией, пишите <doc@FreeBSD.org>.
    По вопросам связанным с русским переводом документации, пишите <frdp@FreeBSD.org.ua>.


    Руководство FreeBSDPrevChapter 10 БезопасностьNext

    10.5 Одноразовые пароли

    S/Key это схема с одноразовыми паролями, основанная на одностороннем хэше. FreeBSD использует хэш MD4 для совместимости, но другие системы используют MD5 и DES-MAC. S/Key была частью базовой системы FreeBSD начиная с версии 1.1.5 и используется также во все большем числе операционных систем. S/Key это зарегистрированная торговая марка Bell Communications Research, Inc.

    Начиная с FreeBSD версии 5.0, S/Key была замещена на функциональный эквивалент - OPIE (One-time Passwords In Everything). OPIE по умолчанию использует MD5.

    Есть три различных вида паролей, о которых мы поговорим ниже. Первый вид это ваш обычный пароль UNIX® или пароль Kerberos; мы будем называть его ``пароль UNIX''. Второй вид это одноразовый пароль, сгенерированный программой S/Key key или программой OPIE opiekey(1) и принимаемый командами keyinit или opiepasswd(1) и в приглашении login; мы будем называть их ``одноразовыми паролями''. Последний вид паролей это защищенные пароли, которые вы передаете программам key/opiekey (и иногда программам keyinit/opiepasswd), и которые эти программы используют для создания одноразовых паролей; мы будем называть его ``защищенными паролями'' или просто ``паролями''.

    Защищенный пароль не имеет никакого отношения к вашему паролю UNIX; они могут быть одинаковыми, но это не рекомендуется. Защищенные пароли S/Key и OPIE не ограничены 8-ю символами, как старые UNIX пароли[1], они могут быть настолько длинными, насколько вы захотите. Очень часто используются пароли длиной в шесть или семь символов. По большей части система S/Key или OPIE работает полностью независимо от системы паролей UNIX.

    Помимо паролей, есть два других вида данных, важных для S/Key и OPIE. Первый, известный как ``seed'' или ``ключ'', состоит из двух букв и пяти цифр. Другой, называемый ``счетчиком цикла'', это номер от 1 до 100. S/Key создает одноразовый пароль, соединяя ключ и защищенный пароль, а затем применяя MD4/MD5 столько раз, сколько указано счетчиком цикла и выдает результат в виде шести коротких слов на английском. Эти шесть слов на английском и есть ваш одноразовый пароль. Система аутентификации (как правило PAM) хранит последний использованный одноразовый пароль, и пользователь аутентифицитуется если хэш вводимого пользователем пароля совпадает с предыдущим паролем. Поскольку используется односторонний хэш, невозможно сгенерировать следующий одноразовый пароль если получен предыдущий; счетчик цикла уменьшается после каждого успешного входа для поддержки синхронизации пользователя с программой login. Когда счетчик цикла уменьшается до 1, S/Key и OPIE должны быть переинициализированы.

    В каждой из обсуждаемых ниже систем задействованы три программы. Программы key и opiekey получают счетчик цикла, ключ и защищенный пароль и создают одноразовый пароль или последовательный список одноразовых паролей. Программы keyinit и opiepasswd используются для инициализации S/Key и OPIE соответственно, и для смены паролей, счетчиков цикла, или ключей; они принимают защищенный пароль или счетчик цикла, ключ и одноразовый пароль. Программы keyinfo и opieinfo проверяют соответствующие файлы (/etc/skeykeys или /etc/opiekeys) и печатают текущий счетчик цикла и ключ вызывающего пользователя.

    Мы рассмотрим четыре вида операций. Первая это использование keyinit или opiepasswd через защищенное соединение для первоначальной настройки системы одноразовых паролей, или для изменения пароля или ключа. Вторая операция это использование в тех же целях keyinit или opiepasswd через незащищенное соединение, в сочетании с key или opiekey через защищенное соединение. Третья это использование key/opiekey для входа через незащищенное соединение. Четвертая это использование key или opiekey для генерации набора ключей, которые могут быть записаны или распечатаны для соединения из места, где защищенное соединение недоступно.

    10.5.1 Защищенная установка соединения

    Для первоначальной настройки S/Key, измените ваш пароль или ключ при входе через защищенное соединение (например, с консоли компьютера или через ssh), используйте команду keyinit без параметров при входе под своим именем:

    % keyinit
    Adding unfurl:
    Reminder - Only use this method if you are directly connected.
    If you are using telnet or rlogin exit with no password and use keyinit -s.
    Enter secret password: 
    Again secret password: 
    
    ID unfurl s/key is 99 to17757
    DEFY CLUB PRO NASH LACE SOFT

    Для OPIE, вместо этого используется opiepasswd:

    % opiepasswd -c
    [grimreaper] ~ $ opiepasswd -f -c
    Adding unfurl:
    Only use this method from the console; NEVER from remote. If you are using
    telnet, xterm, or a dial-in, type ^C now or exit with no password.
    Then run opiepasswd without the -c parameter.
    Using MD5 to compute responses.
    Enter new secret pass phrase:
    Again new secret pass phrase:
    ID unfurl OTP key is 499 to4268
    MOS MALL GOAT ARM AVID COED

    В приглашениях Enter new secret pass phrase: или Enter secret password:, введите пароль или фразу. Запомните, это не тот пароль, с которым вы будете входить, он используется для генерации одноразовых паролей. Строка ``ID'' содержит информацию для вашего конкретного случая: имя пользователя, счетчик цикла и ключ. При входе система запомнит эти параметры и отправит их вам, поэтому их не надо запоминать. В последней строке находится одноразовый пароль, соответствующий этим параметрам и секретному паролю; если вы войдете в систему сразу, используйте этот одноразовый пароль.

    10.5.2 Незащищенная установка соединения

    Для инициализации или изменения защищенного пароля через незащищенное соединение, вам потребуется существующее защищенное соединение куда-то, где вы сможете запустить key или opiekey; это может быть средство доступа Macintosh® или shell на компьютере, которому вы доверяете. Вам потребуется также установить значение счетчика цикла (100 возможно подойдет), и задать ключ или использовать сгенерированный. Через незащищенное соединение (к компьютеру, на котором производится настройка), используйте команду keyinit -s:

    % keyinit -s
    Updating unfurl:
    Old key: to17758
    Reminder you need the 6 English words from the key command.
    Enter sequence count from 1 to 9999: 100
    Enter new key [default to17759]: 
    s/key 100 to 17759
    s/key access password:
    s/key access password:CURE MIKE BANE HIM RACY GORE

    Для OPIE, используйте opiepasswd:

    % opiepasswd
    
    Updating unfurl:
    You need the response from an OTP generator.
    Old secret pass phrase:
            otp-md5 498 to4268 ext
            Response: GAME GAG WELT OUT DOWN CHAT
    New secret pass phrase:
            otp-md5 499 to4269
            Response: LINE PAP MILK NELL BUOY TROY
    
    ID mark OTP key is 499 gr4269
    LINE PAP MILK NELL BUOY TROY

    Чтобы принять ключ по умолчанию нажмите Enter. Затем, перед вводом пароля доступа введите те же параметры в вашем защищенном соединении или средстве доступа S/Key:

    % key 100 to17759
    Reminder - Do not use this program while logged in via telnet or rlogin.
    Enter secret password: <secret password>
    CURE MIKE BANE HIM RACY GORE

    Или для OPIE:

    % opiekey 498 to4268
    Using the MD5 algorithm to compute response.
    Reminder: Don't use opiekey from telnet or dial-in sessions.
    Enter secret pass phrase:
    GAME GAG WELT OUT DOWN CHAT

    Теперь переключитесь на незащищенное соединение и скопируйте одноразовый пароль, сгенерированный соответствующей программой.

    10.5.3 Создание одного одноразового пароля

    Как только вы настроите S/Key или OPIE, во время входа появится приглашение вроде этого:

    % telnet example.com
    Trying 10.0.0.1...
    Connected to example.com
    Escape character is '^]'.
    
    FreeBSD/i386 (example.com) (ttypa)
    
    login: <username>
    s/key 97 fw13894
    Password: 

    Или для OPIE:

    % telnet example.com
    Trying 10.0.0.1...
    Connected to example.com
    Escape character is '^]'.
    
    FreeBSD/i386 (example.com) (ttypa)
    
    login: <username>
    otp-md5 498 gr4269 ext
    Password: 

    Кроме того, у S/Key и OPIE есть полезная особенность (не показанная здесь): если вы нажмете Enter в приглашении на ввод пароля, включится эхо, и вы сможете увидеть то, что вводите. Это может быть очень полезно, если вы пытаетесь ввести пароль вручную, например с распечатки.

    В этот момент вам потребуется сгенерировать одноразовый пароль, чтобы ввести его в приглашение. Это должно быть выполнено на защищенной системе, в которой вы можете запустить key или opiekey (есть версии для DOS, Windows® и Mac OS®). Им требуются значения счетчика цикла и ключ в качестве параметров командной строки. Вы можете скопировать и вставить их прямо из приглашения login компьютера, на который входите.

    В защищенной системе:

    % key 97 fw13894
    Reminder - Do not use this program while logged in via telnet or rlogin.
    Enter secret password: 
    WELD LIP ACTS ENDS ME HAAG

    Для OPIE:

    % opiekey 498 to4268
    Using the MD5 algorithm to compute response.
    Reminder: Don't use opiekey from telnet or dial-in sessions.
    Enter secret pass phrase:
    GAME GAG WELT OUT DOWN CHAT

    Теперь, когда у вас есть одноразовый пароль, можете продолжить вход в систему:

    login: <username>
    s/key 97 fw13894
    Password: <return to enable echo>
    s/key 97 fw13894
    Password [echo on]: WELD LIP ACTS ENDS ME HAAG
    Last login: Tue Mar 21 11:56:41 from 10.0.0.2 ... 

    10.5.4 Создание нескольких одноразовых паролей

    Иногда вы отправляетесь туда, где нет доступа к защищенному компьютеру или защищенному соединению. В этом случае, можно использовать команды key и opiekey для создания нескольких одноразовых паролей, которые вы сможете распечатать и забрать с собой. Например:

    % key -n 5 30 zz99999
    Reminder - Do not use this program while logged in via telnet or rlogin.
    Enter secret password: <secret password>
    26: SODA RUDE LEA LIND BUDD SILT 
    27: JILT SPY DUTY GLOW COWL ROT  
    28: THEM OW COLA RUNT BONG SCOT  
    29: COT MASH BARR BRIM NAN FLAG  
    30: CAN KNEE CAST NAME FOLK BILK

    Или для OPIE:

    % opiekey -n 5 30 zz99999
    Using the MD5 algorithm to compute response.
    Reminder: Don't use opiekey from telnet or dial-in sessions.
    Enter secret pass phrase: <secret password>
    26: JOAN BORE FOSS DES NAY QUIT
    27: LATE BIAS SLAY FOLK MUCH TRIG
    28: SALT TIN ANTI LOON NEAL USE
    29: RIO ODIN GO BYE FURY TIC
    30: GREW JIVE SAN GIRD BOIL PHI

    Параметр -n 5 запрашивает пять паролей, 30 указывает значение последнего счетчика цикла. Обратите внимание, что пароли печатаются в обратном по сравнению с обычным использованием порядке. Если вы действительно параноик, перепишите результат вручную; иначе скопируйте и передайте его lpr. Обратите внимание, что каждая линия содержит как счетчик цикла, так и одноразовый пароль; вам может показаться удобным отрывать пароль после использования.

    10.5.5 Ограничение использования UNIX® паролей

    S/Key может наложить ограничения на использование UNIX паролей на основе имени хоста, имени пользователя, порта терминала или IP адреса сессии. Эти ограничения можно найти в файле настройки /etc/skey.access. Страница справочника skey.access(5) содержит дополнительную информацию о полном формате файла а также детали о некоторых предосторожностях, которые должны быть предприняты перед тем, как положиться в вопросах безопасности на этот файл.

    Если файла /etc/skey.access нет (это ситуация по умолчанию в системах FreeBSD 4.X), всем пользователям будет разрешено входить с паролями UNIX. Если файл существует, использование S/Key станет обязательно для всех, если только параметры настройки в файле skey.access не указывают иначе. В любом случае, пароли UNIX разрешены при входе с консоли.

    Вот пример файла настройки skey.access, иллюстрирующий три наиболее распространенных вида параметров настройки:

    permit internet 192.168.0.0 255.255.0.0
    permit user fnord
    permit port ttyd0

    Первая строка (permit internet) разрешает пользователям, чей IP адрес (который подвержен подделке) соответствует заданному значению и маске, входить с использованием паролей UNIX. Это должно рассматриваться не как механизм безопасности, а как напоминание пользователям, что они работают через небезопасное соединение и должны использовать для аутентификации S/Key.

    Вторая строка (permit user) позволяет определенным пользователям, в данном случае fnord, всегда использовать пароли UNIX. Вообще говоря, это должно использоваться только для тех, кто не может использовать программу key, например если они работают с простых терминалов или необучаемы.

    Третья строка (permit port) позволяет всем пользователям, вошедшим с определенного терминала использовать пароли UNIX; этот параметр должен использоваться для подключений по dial-up.

    OPIE может ограничивать использование паролей UNIX на основе IP адреса как и S/Key. Соответствующий файл называется /etc/opieaccess, он существует по умолчанию в FreeBSD 5.0 и более современных системах. Обратитесь к opieaccess(5) за более подробной информацией об этом файле и о предосторожностях, которые вы должны предпринять при использовании этого файла.

    Вот пример файла opieaccess:

    permit 192.168.0.0 255.255.0.0

    Эта строка позволяет пользователям, чей IP адрес (который подвержен подделке) соответствует указанному значению и маске, входить с паролем UNIX.

    Если ни одно из правил в opieaccess не сработало, поведением по умолчанию является запрет всех не-OPIE входов.

    Notes

    [1]

    В FreeBSD стандартный пароль может быть до 128 символов длиной.

    Этот, и другие документы, могут быть скачаны с ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

    По вопросам связанными с FreeBSD, прочитайте документацию прежде чем писать в <questions@FreeBSD.org>.
    По вопросам связанным с этой документацией, пишите <doc@FreeBSD.org>.
    По вопросам связанным с русским переводом документации, пишите <frdp@FreeBSD.org.ua>.


    Руководство FreeBSDPrevChapter 10 БезопасностьNext

    10.11 OpenSSH *

    Contributed by Chern Lee.

    Этот раздел еще не переведен.

    Этот, и другие документы, могут быть скачаны с ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

    По вопросам связанными с FreeBSD, прочитайте документацию прежде чем писать в <questions@FreeBSD.org>.
    По вопросам связанным с этой документацией, пишите <doc@FreeBSD.org>.
    По вопросам связанным с русским переводом документации, пишите <frdp@FreeBSD.org.ua>.


    Руководство FreeBSDPrevChapter 4 Установка приложений: порты и пакаджиNext

    4.4 Использование системы пакетов

    Текст предоставилChern Lee.

    4.4.1 Установка пакета

    Для установки пакетов программного обеспечения для FreeBSD из локальных файлов или с сервера в сети вы можете использовать утилиту pkg_add(1).

    Example 4-1. Сгрузка пакета вручную и его локальная установка

    # ftp -a ftp2.FreeBSD.org
    Connected to ftp2.FreeBSD.org.
    220 ftp2.FreeBSD.org FTP server (Version 6.00LS) ready.
    331 Guest login ok, send your email address as password.
    230-
    230-     This machine is in Vienna, VA, USA, hosted by Verio.
    230-         Questions? E-mail freebsd@vienna.verio.net.
    230-
    230-
    230 Guest login ok, access restrictions apply.
    Remote system type is UNIX.
    Using binary mode to transfer files.
    ftp> cd /pub/FreeBSD/ports/packages/sysutils/
    250 CWD command successful.
    ftp> get lsof-4.56.4.tgz
    local: lsof-4.56.4.tgz remote: lsof-4.56.4.tgz
    200 PORT command successful.
    150 Opening BINARY mode data connection for 'lsof-4.56.4.tgz' (92375 bytes).
    100% |**************************************************| 92375       00:00 ETA
    226 Transfer complete.
    92375 bytes received in 5.60 seconds (16.11 KB/s)
    ftp> exit
    # pkg_add lsof-4.56.4.tgz

    Если у вас нет исходных текстов локальных пакетов (например, набор CD-ROM с FreeBSD), то проще всего, наверное, воспользоваться опцией -r для pkg_add(1). Это приведёт к тому, что утилита автоматически определит правильный формат объектных файлов и релиз, а затем сгрузит и установит пакет с сервера FTP.

    # pkg_add -r lsof

    В примере выше нужный пакадж будет сгружен и установлен без всякого дополнительного взаимодействия с пользователем. Если вместо основного сайта вы хотите указать другое зеркало пакаджей FreeBSD, то для переопределения используемых по умолчанию значений вам необходимо задать соответствующим образом значение переменной PACKAGESITE. Для сгрузки файлов утилита pkg_add(1) использует функцию fetch(3), которая принимает во внимание различные переменные окружения, включая FTP_PASSIVE_MODE, FTP_PROXY и FTP_PASSWORD. Если вы находитесь за сетевым экраном или для работы с работы с FTP/HTTP вам необходимо использовать прокси, то определите соответствующие переменные. Обратитесь к справочной странице по fetch(3) для получения полного списка переменных. Заметьте, что в примере выше вместо lsof-4.56.4 используется lsof. При использовании функций сгрузки с сети номер версии в имени пакаджа должен быть опущен. Утилита pkg_add(1) автоматически сгрузит последнюю версию приложения.

    Файлы пакаджей распространяются в форматах .tgz и .tbz. Вы можете найти их по адресу ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/packages или взять с дистрибутива FreeBSD на CD-ROM. Каждый CD из комплекта FreeBSD на 4 дисках (а также PowerPak и тому подобное) содержит пакаджи в каталоге /packages. Расположение пакаджей похоже на то, как организовано дерево /usr/ports. Каждая категория имеет собственный каталог, и каждый пакет помещается в каталог All.

    Структура каталогов системы пакаджей соответствует структуре системы портов; они взаимодействуют друг с другом для формирования единой системы пакаджей/портов.

    4.4.2 Управление пакаджами

    pkg_info(1) является утилитой для вывода списка и описаний различных установленных пакетов.

    # pkg_info
    cvsup-16.1          A general network file distribution system optimized for CV
    docbook-1.2         Meta-port for the different versions of the DocBook DTD
    ...

    pkg_version(1) является утилитой для вывода отчёта о версиях всех установленных пакетов. Она сравнивает версию имеющегося пакета с текущей версией, находящейся в дереве портов.

    # pkg_version
    cvsup                       =
    docbook                     =
    ...

    Символы во второй колонке указывают сравнительную разницу в возрасте установленной версии и версии, находящейся в локальном дереве портов.

    СимволЗначение
    =Версия установленного пакаджа соответствует версии, находящейся в локальном дереве портов.
    <Установленная версия старее, чем та, что имеется в дереве портов.
    >Установленная версия новее чем та, что есть в дереве портов. (Скорее всего, локальное дерево портов устарело.)
    ?В индексном файле портов установленный пакет не может быть найден. (Это может случиться, например, если установленный порт был удалён из коллекции портов или переименован.)
    *Имеется несколько версий пакета.

    4.4.3 Удаление пакаджа

    Для удаления ранее установленных пакетов с программным обеспечением используйте утилиту pkg_delete(1).

    # pkg_delete xchat-1.7.1

    4.4.4 Разное

    Вся информация о пакете хранится в каталоге /var/db/pkg. Список установленных файлов и описания всех пакетов могут быть найдены среди файлов этого каталога.

    Этот, и другие документы, могут быть скачаны с ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

    По вопросам связанными с FreeBSD, прочитайте документацию прежде чем писать в <questions@FreeBSD.org>.
    По вопросам связанным с этой документацией, пишите <doc@FreeBSD.org>.
    По вопросам связанным с русским переводом документации, пишите <frdp@FreeBSD.org.ua>.


    Руководство FreeBSDPrevChapter 4 Установка приложений: порты и пакаджиNext

    4.7 Обработка нерабочих портов

    Если вы встретили порт, который у вас не работает, есть несколько вещей, которые вы можете сделать, а именно:

    1. Исправьте его! В Руководстве по созданию портов содержится подробная информация об инфраструктуре ``Портов'', так что вы сможете исправить иногда встречающиеся порты с ошибками или даже создать собственные!

    2. Надавите--только по электронной почте! Сначала пошлите письмо человеку, сопровождающему порт. Наберите команду make maintainer или прочтите Makefile, чтобы найти его адрес. Не забудьте указать имя и версию порта (скопировав строчку $FreeBSD: из файла Makefile) и включите в письмо весь вывод, предшествующий возникновению ошибки. Если вы не получили ответа от этого человека, то можете воспользоваться командой send-pr(1) для посылки сообщения об ошибке.

    3. Сгрузите пакадж с ближайшего к вам FTP-сервера. ``Основная'' коллекция пакетов находится на сервере ftp.FreeBSD.org в каталоге с пакаджами, но первым делом проверьте местное зеркало! Это, скорее всего, будет работать, и сделать это, кроме того, будет гораздо быстрее, чем пытаться компилировать порты из исходного кода. Воспользуйтесь программой pkg_add(1) для установки пакета в вашей системе.

    Этот, и другие документы, могут быть скачаны с ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

    По вопросам связанными с FreeBSD, прочитайте документацию прежде чем писать в <questions@FreeBSD.org>.
    По вопросам связанным с этой документацией, пишите <doc@FreeBSD.org>.
    По вопросам связанным с русским переводом документации, пишите <frdp@FreeBSD.org.ua>.


    Руководство FreeBSDPrevChapter 4 Установка приложений: порты и пакаджиNext

    4.3 Поиск нужного вам приложения

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

    Список имеющихся для FreeBSD приложений постоянно растёт. К счастью, есть несколько способов найти то, что вам нужно:

    Этот, и другие документы, могут быть скачаны с ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

    По вопросам связанными с FreeBSD, прочитайте документацию прежде чем писать в <questions@FreeBSD.org>.
    По вопросам связанным с этой документацией, пишите <doc@FreeBSD.org>.
    По вопросам связанным с русским переводом документации, пишите <frdp@FreeBSD.org.ua>.


    Руководство FreeBSDPrevChapter 4 Установка приложений: порты и пакаджиNext

    4.6 Действия после установки

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

    Очевидно, что в шаги, в точности требуемые для конфигурации каждого приложения, отличаются. Однако, если если вы только что установили новое приложение и вам интересно, ``Что же дальше?'', то вам могут помочь следующие советы:

    Этот, и другие документы, могут быть скачаны с ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

    По вопросам связанными с FreeBSD, прочитайте документацию прежде чем писать в <questions@FreeBSD.org>.
    По вопросам связанным с этой документацией, пишите <doc@FreeBSD.org>.
    По вопросам связанным с русским переводом документации, пишите <frdp@FreeBSD.org.ua>.


    Руководство FreeBSDPrevChapter 4 Установка приложений: порты и пакаджиNext

    4.2 Обзор установки программного обеспечения

    Если вы использовали UNIX®-системы ранее, то знаете, что стандартная процедура установки программного обеспечения сторонних разработчиков выглядит примерно так:

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

    2. Распаковка программного обеспечения из дистрибутивного формата (обычно tar-архива, сжатого при помощи compress(1), gzip(1) или bzip2(1)).

    3. Поиск документации (возможно, подойдут файлы INSTALL, README или несколько файлов из подкаталога doc/) и её чтение в поиске описания установки программного обеспечения.

    4. Если программное обеспечение распространялось в форме исходных текстов, его компиляция. Сюда может быть включено редактирования файла Makefile, запуск скрипта configure и другие работы.

    5. Тестирование и установка программного обеспечения.

    И это только всё проходит нормально. Если вы устанавливаете программный пакет, который был специально перенесён на FreeBSD, то вам может даже потребоваться редактировать код для того, чтобы он нормально заработал.

    Если вы хотите, то можете продолжать устанавливать программное обеспечение во FreeBSD ``традиционным'' способом. Однако FreeBSD предоставляет две технологии, которые могут сохранить вам много усилий: пакаджи и порты. На момент написания таким образом были доступны более 10,000 сторонних приложений.

    Для любого конкретно взятого приложения пакет FreeBSD для такого приложения является одним файлом, который вы должны сгрузить. Пакет содержит уже откомпилированные копии всех команд приложения, а также все конфигурационные файлы и документацию. Сгруженным файлом пакета можно управлять командами управления пакетами FreeBSD, такими, как pkg_add(1) pkg_delete(1), pkg_info(1) и так далее. Установка нового приложения может выполняться единственной командой.

    Порт FreeBSD для приложения является набором файлов, предназначенных для автоматизации процесса компиляции приложения из исходного кода.

    Вспомните, что обычно вы должны выполнить некоторое количество шагов, если компилируете программу самостоятельно (сгрузка. распаковка, изменение кода, компиляция, установка). Файлы, составляющие порт, содержат всю информацию, необходимую для того, чтобы система сделала это за вас. Вы задаёте пару простых команд, и исходный код приложения автоматически сгружается, распаковывается, модифицируется, компилируется и устанавливается.

    Действительно, система портов может также использоваться для генерации пакетов, которые позже могут управляться командой pkg_add и другими командами управления пакетами, о которых скоро будет рассказано.

    Как пакеты, так и порты принимают во внимание зависимости. Предположим, что вы хотите установить приложение, которое зависит от некоторой установленной библиотеки. И приложение, и библиотека доступны во FreeBSD в виде портов и пакетов. Если вы используете команду pkg_add или систему портов для добавления приложений, то в обоих случаях будет обнаружено, что библиотека не была установлена, и сначала будет автоматически выполнена установка библиотеки.

    Видя, что обе технологии весьма похожи, вы можете удивиться, почему во FreeBSD используются обе. И пакеты, и порты имеют свои преимущества, так что выбор используемой вами системы зависит от ваших собственных предпочтений.

    Преимущества пакетов

    Преимущества портов

    Чтобы отслеживать обновления портов, подпишитесь на списки рассылки Список рассылки, посвящённый Портам FreeBSD и Список рассылки, посвящённый ошибкам в портах FreeBSD.

    В оставшейся части главы будет рассказано, как использовать пакеты и порты для установки и управления программным обеспечением сторонних разработчиков во FreeBSD.

    Этот, и другие документы, могут быть скачаны с ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

    По вопросам связанными с FreeBSD, прочитайте документацию прежде чем писать в <questions@FreeBSD.org>.
    По вопросам связанным с этой документацией, пишите <doc@FreeBSD.org>.
    По вопросам связанным с русским переводом документации, пишите <frdp@FreeBSD.org.ua>.


    Руководство FreeBSDPrevNext

    Chapter 18 PPP and SLIP *

    Эта глава не переведена.

    Этот, и другие документы, могут быть скачаны с ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

    По вопросам связанными с FreeBSD, прочитайте документацию прежде чем писать в <questions@FreeBSD.org>.
    По вопросам связанным с этой документацией, пишите <doc@FreeBSD.org>.
    По вопросам связанным с русским переводом документации, пишите <frdp@FreeBSD.org.ua>.


    Руководство FreeBSDPrevNext

    Chapter 11 Printing *

    Эта глава не переведена.

    Этот, и другие документы, могут быть скачаны с ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

    По вопросам связанными с FreeBSD, прочитайте документацию прежде чем писать в <questions@FreeBSD.org>.
    По вопросам связанным с этой документацией, пишите <doc@FreeBSD.org>.
    По вопросам связанным с русским переводом документации, пишите <frdp@FreeBSD.org.ua>.


    Руководство FreeBSDPrevChapter 12 Устройства храненияNext

    12.4 RAID

    12.4.1 Программный RAID

    12.4.1.1 Конфигурация драйвера объединённого диска (CCD)

    Оригинальный текст предоставилChristopher Shumway. Изменения внёсJim Brown.

    При выборе решения для организации хранилища самыми важными характеристиками являются скорость, надежность и стоимость. Редко все эти характеристики наличествуют одновременно; обычно быстрое и надёжное устройство хранения стоит дорого, а при уменьшении стоимости в жертву приносятся скорость работы или надёжность.

    При проектировании описываемой далее системы в качестве самого важного фактора была выбрана её стоимость, затем быстродействие и надёжность. Скорость передачи данных для этой системы ограничивалась только пропускной способностью сети. И, хотя надёжность очень важна, CCD-диск, описываемый ниже, обслуживал работу с данными, полные копии которых уже хранились на дисках CD-R, так они могли быть с лёгкостью обновлены.

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

    12.4.1.1.1 Установка оборудования

    Кроме системного IDE-диска, основу описываемого далее CCD-диска общим объёмом примерно в 90 Гбайт составили три IDE-диска Western Digital 30GB, 5400 RPM. В идеальном случае каждый диск IDE имеет собственный контроллер и кабель, но для минимизации стоимости дополнительные контроллеры IDE не использовались. Вместо этого диски были настроены при помощи переключателей так, что на каждом IDE-контроллере находилось по одному ведущему и одному ведомому диску.

    До перезагрузки BIOS системы была настроена на автоматическое распознавание подключенных дисков. Более важно то, что при перезагрузке их распознала FreeBSD:

    ad0: 19574MB <WDC WD205BA> [39770/16/63] at ata0-master UDMA33
    ad1: 29333MB <WDC WD307AA> [59598/16/63] at ata0-slave UDMA33
    ad2: 29333MB <WDC WD307AA> [59598/16/63] at ata1-master UDMA33
    ad3: 29333MB <WDC WD307AA> [59598/16/63] at ata1-slave UDMA33

    Note: Если FreeBSD не распознала все диски, проверьте корректность положения переключателей на них. На большинстве IDE-дисков имеется также переключатель ``Cable Select''. Он не имеет отношения к выбору ведущего и ведомого устройств. Для получения помощи по правильному положению переключателей обратитесь к документации по устройствам.

    Затем определите, как сделать их частью файловой системы. Изучите справку по vinum(8) (Chapter 13) и ccd(4). В нашем конкретном случае была выбрана технология ccd(4).

    12.4.1.1.2 Настройка CCD

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

    pseudo-device   ccd     4

    В системах 5.X вместо этого вам нужно использовать такую строку:

    device   ccd

    Note: Во FreeBSD 5.X нет нужды указывать количество устройств ccd(4) так как драйвер устройства ccd(4) теперь клонируется сам -- новые экземпляры устройств будут создаваться автоматически по необходимости.

    Во FreeBSD 3.0 и последующих версиях поддержка ccd(4) также может быть обеспечена загрузкой подгружаемого модуля ядра.

    Для настройки ccd(4) сначала вам нужно воспользоваться утилитой disklabel(8) для разметки дисков:

    disklabel -r -w ad1 auto
    disklabel -r -w ad2 auto
    disklabel -r -w ad3 auto

    При этом создаются метки для ad1c, ad2c и ad3c, которые занимают диск полностью.

    Note: Начиная с FreeBSD 5.1-RELEASE, на смену старой программе disklabel(8) пришла утилита bsdlabel(8). У bsdlabel(8) отсутствуют некоторые устаревшие опции и параметры; в примере выше параметр -r не может использоваться с bsdlabel(8). Для получения дополнительной информации обратитесь к справочной странице п о bsdlabel(8).

    Следующим шагом является изменение типа метки диска. Для редактирования дисков можно использовать утилиту disklabel(8):

    disklabel -e ad1
    disklabel -e ad2
    disklabel -e ad3

    При этом в редакторе, задаваемом переменной окружения EDITOR (обычно это vi(1)), открывается текущая метка каждого диска.

    Немодифицированная метка диска будет выглядеть примерно следующим образом:

    8 partitions:
    #        size   offset    fstype   [fsize bsize bps/cpg]
      c: 60074784        0    unused        0     0     0   # (Cyl.    0 - 59597)

    Добавьте новый раздел e для использования драйвером ccd(4). Как правило, он может быть скопирован с раздела c, но поле fstype должно иметь значение 4.2BSD. Теперь метка диска должна выглядеть примерно так:

    8 partitions:
    #        size   offset    fstype   [fsize bsize bps/cpg]
      c: 60074784        0    unused        0     0     0   # (Cyl.    0 - 59597)
      e: 60074784        0    4.2BSD        0     0     0   # (Cyl.    0 - 59597)

    12.4.1.1.3 Построение файловой системы

    Файл устройства для ccd0c может ещё не существовать, так что для его создания предварительно выполните такие команды:

    cd /dev
    sh MAKEDEV ccd0

    Note: Во FreeBSD 5.0 devfs(5) будет управлять файлами устройств в каталоге /dev автоматически, так что в использовании MAKEDEV необходимости нет.

    Теперь, когда все диски размечены, вы должны построить ccd(4). Для этого используйте утилиту ccdconfig(8) с параметрами, подобными следующим:

    ccdconfig ccd0(1) 32(2) 0(3) /dev/ad1e(4) /dev/ad2e /dev/ad3e

    Использование и значение каждого параметра описывается ниже:

    (1)
    Первым аргументом является конфигурируемое устройство, в нашем случае /dev/ccd0c. Часть /dev/ является необязательной.
    (2)
    Чередование для файловой системы. Оно определяет размер единицы блока данных в количестве дисковых блоков, каждый из которых обычно имеет объём в 512 байт. Таким образом, при чередовании в 32 это будет составлять 16384 байт.
    (3)
    Опции для ccdconfig(8). Если вы хотите включить зеркалирование диска, то можете задать это здесь. В нашей конфигурации зеркалирование для ccd(4) не предусмотрено, поэтому здесь задан 0 (ноль).
    (4)
    Последним параметром для ccdconfig(8) является список устройств для объединения в массив. Для каждого устройства нужно задавать полное имя.

    После запуска ccdconfig(8) устройство ccd(4) будет отконфигурировано. Может будет построить файловую систему. Обратитесь к справке по команде newfs(8) для выяснения требуемых параметров, или просто запустите:

    newfs /dev/ccd0c

    12.4.1.1.4 Автоматическое выполнение

    Вообще говоря, вам потребуется монтировать ccd(4) при каждой перезагрузке. Для этого сначала вы должны отконфигурировать это устройство. Запишите вашу текущую конфигурацию в файл /etc/ccd.conf при помощи такой команды:

    ccdconfig -g > /etc/ccd.conf

    При перезагрузке скрипт /etc/rc запускает команду ccdconfig -C, если существует файл /etc/ccd.conf. При этом ccd(4) автоматически конфигурируется так, чтобы он мог быть смонтирован.

    Note: Если при загрузке вы входите в однопользовательский режим, то перед тем, как выполнять монтирование ccd(4) по команде mount(8), вам нужно для конфигурации массива запустить следующую команду:

    ccdconfig -C

    Для автоматического монтирования ccd(4) поместите запись о ccd(4) в файл /etc/fstab, чтобы он мог быть смонтирован во время загрузки системы:

    /dev/ccd0c              /media       ufs     rw      2       2

    12.4.1.2 Менеджер томов Vinum

    Менеджер томов Vinum является драйвером блочного устройства, который реализует виртуальные диски. Он отделяет дисковое оборудование от интерфейса блочного устройства и работает с данными таким образом, что в результате повышается гибкость, производительность и надёжность по сравнению с традиционным взглядом на дисковое хранилище как на кусок дискового пространства. vinum(8) реализует модели RAID-0, RAID-1 и RAID-5, как по отдельности, так и в комбинациях.

    Обратитесь к Chapter 13 для получения более полной информации о vinum(8).

    12.4.2 Аппаратный RAID

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

    При помощи встроенной в адаптер BIOS, он сам управляет большинством дисковых операций. Далее следует краткое описание установки при помощи контроллера Promise IDE RAID. После установки адаптера и запуска системы, выдаётся запрос на ввод. Следуйте указаниям для входа в настройку адаптера. Отсюда вы можете объединить все подключенные диски. После этого во FreeBSD диск(и) будут выглядеть как один диск. Аналогично могут быть настроены и другие уровни RAID.

    12.4.3 Перестроение массивов ATA RAID1

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

    Вероятно, в файле /var/log/messages или в выдаче команды dmesg(8) вы увидите примерно следующее:

    ad6 on monster1 suffered a hard error.
    ad6: READ command timeout tag=0 serv=0 - resetting
    ad6: trying fallback to PIO mode
    ata3: resetting devices .. done
    ad6: hard error reading fsbn 1116119 of 0-7 (ad6 bn 1116119; cn 1107 tn 4 sn 11) status=59 error=40
    ar0: WARNING - mirror lost

    При помощи atacontrol(8) получите дополнительную информацию:

    # atacontrol list
    ATA channel 0:
    	Master:      no device present
    	Slave:   acd0 <HL-DT-ST CD-ROM GCR-8520B/1.00> ATA/ATAPI rev 0
    
    ATA channel 1:
    	Master:      no device present
    	Slave:       no device present
    
    ATA channel 2:
    	Master:  ad4 <MAXTOR 6L080J4/A93.0500> ATA/ATAPI rev 5
    	Slave:       no device present
    
    ATA channel 3:
    	Master:  ad6 <MAXTOR 6L080J4/A93.0500> ATA/ATAPI rev 5
    	Slave:       no device present
    
    # atacontrol status ar0
    ar0: ATA RAID1 subdisks: ad4 ad6 status: DEGRADED
    1. Сначала вам нужно отключить диск от массива, чтобы его можно было без последствий извлечь:

      # atacontrol detach 3
    2. Замените диск.

    3. Повторно подключите диск в качестве резервного:

      # atacontrol attach 3
      Master:  ad6 <MAXTOR 6L080J4/A93.0500> ATA/ATAPI rev 5
      Slave:   no device present
    4. Перестройте массив:

      # atacontrol rebuild ar0
    5. Команда перестроения будет работать, пока не закончит. Однако имеется возможность открыть другой терминал (комбинацией клавиш Alt+Fn) и проверить состояние дел при помощи следующей команды:

      # dmesg | tail -10
      [выдача удалена]
      ad6: removed from configuration
      ad6: deleted from ar0 disk1
      ad6: inserted into ar0 disk1 as spare
      
      # atacontrol status ar0
      ar0: ATA RAID1 subdisks: ad4 ad6 status: REBUILDING 0% completed
    6. Дождитесь завершения этой операции.

    Этот, и другие документы, могут быть скачаны с ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

    По вопросам связанными с FreeBSD, прочитайте документацию прежде чем писать в <questions@FreeBSD.org>.
    По вопросам связанным с этой документацией, пишите <doc@FreeBSD.org>.
    По вопросам связанным с русским переводом документации, пишите <frdp@FreeBSD.org.ua>.


    Руководство FreeBSDPrevChapter 17 Последовательные соединенияNext

    17.2 Введение

    17.2.1 Терминология

    bps

    Бит в секунду (Bits per Second) -- скорость передачи данных

    DTE

    Терминальное оборудование (Data Terminal Equipment) -- например, ваш компьютер

    DCE

    Оборудование связи (Data Communications Equipment) -- ваш модем

    RS-232

    Стандарт EIA для аппаратных последовательных соединений

    При упоминании скорости передачи данных, в этой главе не используется термин ``бод'' (``baud''). Бод означает количество электрических импульсов, которые могут быть переданы за период времени, а ``bps'' это корректный термин для использования (он хотя бы не создает столько проблем как предыдущий).

    17.2.2 Кабели и порты

    Для подсоединения модема или терминала к системе FreeBSD потребуется последовательный порт и подходящий кабель для последовательного устройства. Если вы уже знаете о аппаратном обеспечении и требуемых кабелях, можете пропустить этот раздел.

    17.2.2.1 Кабели

    Есть несколько различных видов последовательных кабелей. Два наиболее часто используемых в нашей ситуации типа это нуль-модемный и стандартный (``прямой'') RS-232 кабель. Документация на оборудование должна описывать тип требуемого кабеля.

    17.2.2.1.1 Нуль-модемные кабели

    Нуль модемный кабель пропускает некоторые сигналы, такие как ``signal ground'', напрямую, а другие ``заворачивает''. Например, контакт ``send data'' на одном конце соединяется с контактом ``receive data'' на другом.

    Если вы изготавливаете собственный кабели, то можете сделать собственный кабель для использования с терминалами. Эта таблица показывает названия сигналов RS-232C и номера контактов на разъеме DB-25.

    СигналКонтакт КонтактСигнал
    SG7соединен с7SG
    TxD2соединен с3RxD
    RxD3соединен с2TxD
    RTS4соединен с5CTS
    CTS5соединен с4RTS
    DTR20соединен с6DSR
    DCD8 6DSR
    DSR6соединен с20DTR

    Note: Соедините ``Data Set Ready'' (DSR) и ``Data Carrier Detect'' (DCD) внутри корпуса коннектора, а затем подключите к ``Data Terminal Ready'' (DTR) на другой стороне.

    17.2.2.1.2 Стандартные кабели RS-232C

    Стандартный последовательный кабель пропускает все RS-232C сигналы напрямую. Так, ``send data'' на одном конце кабеля соединяется с контактом ``send data'' на другом конце. Этот тип кабеля предназначен для подсоединения модема, а также подходит для некоторых терминалов.

    17.2.2.2 Порты

    Последовательные порты это устройства, через которые данные передаются между компьютером с FreeBSD и терминалом. Этот раздел описывает типы существующих портов и их адресацию в FreeBSD.

    17.2.2.2.1 Типы портов

    Существует несколько типов последовательных портов. Перед изготовлением кабеля, вам потребуется убедиться, что он подходит к портам терминала и системы FreeBSD.

    Большинство терминалов используют порты DB25. Персональные компьютеры, включая PC под управлением FreeBSD, используют порты DB25 или DB9. Если у вас есть мультипортовая последовательная карта для PC, там могут быть RJ-12 или RJ-45 порты.

    Обратитесь к сопровождающей документации на оборудование за информацией об используемых портах. Можно также определить тип используемых портов по их внешнему виду.

    17.2.2.2.2 Имена портов

    В FreeBSD доступ к каждому последовательному порту может быть получен через файл в каталоге /dev. Есть два различных типа файлов:

    • Порты входящих соединений (dial-in) называются /dev/ttydN, где N это номер порта начиная с нуля. Обычно, порты входящих соединений используются для терминалов. Для корректной работы этим портам требуется, чтобы последовательный кабель передавал сигнал data carrier detect (DCD).

    • Порты исходящих соединений (call-out) называются /dev/cuaaN. Они обычно используются не для терминалов, а только для модемов. Вы можете использовать эти порты если последовательный кабель или терминал не поддерживает сигнал DCD.

    Если вы соединили терминал с первым последовательным портом (COM1 в MS-DOS®), используйте /dev/ttyd0 для доступа к терминалу. Если терминал соединен со вторым последовательным портом (известным также как COM2), используйте /dev/ttyd1, и так далее.

    17.2.3 Настройка ядра

    FreeBSD c настройками по умолчанию поддерживает последовательные порты. В мире MS-DOS они известны как COM1, COM2, COM3, и COM4. На данный момент в FreeBSD есть поддержка как ``простых'' мультипортовых карт с последовательными интерфейсами, таких как BocaBoard 1008 и 2016, так и более ``умных'' мультипортовых карт, например карт Digiboard и Stallion Technologies. Тем не менее, ядро по умолчанию определяет только стандартные COM порты.

    Чтобы увидеть, как ядро определяет последовательные порты, просмотрите сообщения, выводимые во время загрузки ядра, или используйте команду /sbin/dmesg для вывода сообщений ядра еще раз. В частности, обратите внимание на сообщения, начинающиеся с символов sio.

    Tip: Для просмотра только тех сообщений, которые содержат слово sio, используйте команду:

    # /sbin/dmesg | grep 'sio'

    Например, в системе с четырьмя последовательными портами, появятся такие специфичные для последовательных портов сообщения:

    sio0 at 0x3f8-0x3ff irq 4 on isa
    sio0: type 16550A
    sio1 at 0x2f8-0x2ff irq 3 on isa
    sio1: type 16550A
    sio2 at 0x3e8-0x3ef irq 5 on isa
    sio2: type 16550A
    sio3 at 0x2e8-0x2ef irq 9 on isa
    sio3: type 16550A

    Если ядро не распознает все последовательные порты, вам возможно потребуется настроить ядро FreeBSD. За детальной информацией по настройке ядра обращайтесь к главе Chapter 9.

    Строки соответствующих устройств в файле конфигурации ядра FreeBSD 4.X будут выглядеть примерно так:

    device		sio0	at isa? port IO_COM1 irq 4
    device		sio1	at isa? port IO_COM2 irq 3
    device		sio2	at isa? port IO_COM3 irq 5
    device		sio3	at isa? port IO_COM4 irq 9

    и примерно так для FreeBSD 5.X:

    device		sio

    Вы можете закомментировать или полностью удалить эти строки для отсутствующих устройств в FreeBSD 4.X; в FreeBSD 5.X вам потребуется отредактировать файл /boot/device.hints для настройки последовательных портов. Обратитесь к странице справочника sio(4) за дополнительной информацией о настройке последовательных портов и мультипортовых карт. Будьте осторожны при использовании настроек, которые работали в предыдущих версиях FreeBSD, поскольку флаги устройств и синтаксис изменились в новых версиях.

    Note: port IO_COM1 это синоним для port 0x3f8, IO_COM2 для 0x2f8, IO_COM3 для 0x3e8, и IO_COM4 для 0x2e8. Это наиболее часто используемые для соответствующих последовательных портов адреса. Наиболее часто используемые прерывания 4, 3, 5, и 9. Имейте ввиду, что обычные последовательные порты не могут совместно использовать прерывания на ISA PC (на мультипортовых картах есть электроника, позволяющая всем чипам 16550A на плате совместно использовать одно или два IRQ).

    17.2.4 Специальные файлы устройств

    К большинству устройств ядра можно получить доступ через ``специальные файлы устройств'', расположенные в каталоге /dev. К устройствам sio можно получить доступ через /dev/ttydN (устройства входящих вызовов, dial-in) и /dev/cuaaN (устройства исходящих вызовов, call-out). FreeBSD предоставляет также устройства инициализации (/dev/ttyidN и /dev/cuaiaN), устройства блокировки (/dev/ttyldN и /dev/cualaN). Первые используются для инициализации параметров порта при каждом его открытии (таких как crtscts для модемов, использующих сигналы RTS/CTS для управления потоком). Устройства блокировки используются для установки флага блокировки на порт и предотвращения изменения определенных параметров пользователями или программами; обратитесь к страницам справочника termios(4), sio(4) и stty(1) соответственно за информацией о параметрах терминала, блокировании и инициализации устройств и настройке терминала.

    17.2.4.1 Создание специальных файлов устройств

    Note: FreeBSD 5.0 включает файловую систему devfs(5), которая автоматически создает файлы устройств по мере необходимости. Если вы работаете с версией FreeBSD, поддерживающей devfs просто пропустите этот раздел.

    В каталоге /dev находится shell скрипт, называющийся MAKEDEV, который управляет специальными файлами устройств. Чтобы использовать MAKEDEV для создания специальных файлов устройств исходящих соединений для порта COM1 (порт 0), зайдите (cd) в каталог /dev и выполните команду MAKEDEV ttyd0. Точно так же, для создания специальных файлов устройств исходящих соединений для порта COM2 (порт 1), используйте MAKEDEV ttyd1.

    MAKEDEV создаст не только специальный файл устройства /dev/ttydN но также /dev/cuaaN, /dev/cuaiaN, /dev/cualaN, /dev/ttyldN, и /dev/ttyidN.

    После создания специальных файлов устройств, обязательно проверьте права на файлы (особенно на файлы /dev/cua*), чтобы убедиться, что только те пользователи, которым дан доступ на эти файлы, могут читать и писать в них -- возможно, вы не хотите, чтобы обычные пользователи использовали модемы для звонков. Права по умолчанию на /dev/cua* должны подойти:

    crw-rw----    1 uucp     dialer    28, 129 Feb 15 14:38 /dev/cuaa1
    crw-rw----    1 uucp     dialer    28, 161 Feb 15 14:38 /dev/cuaia1
    crw-rw----    1 uucp     dialer    28, 193 Feb 15 14:38 /dev/cuala1

    Эти права позволяют пользователю uucp и пользователям из группы dialer использовать устройства исходящих вызовов.

    17.2.5 Настройка последовательных портов

    Устройство ttydN (или cuaaN) это обычное устройство, которое потребуется открыть для приложений. Когда процесс открывает устройство применяются настройки ввода/вывода терминала по умолчанию. Вы можете посмотреть эти настройки с помощью команды

    # stty -a -f /dev/ttyd1

    Если вы измените настройки устройства, они будут действовать до его закрытия. После повторного открытия, оно вернется к настройкам по умолчанию. Для изменения настроек по умолчанию, вы можете открыть и изменить установки ``начального состояния'' устройства. Например, для включения по умолчанию режима CLOCAL, 8-битного соединения и контроля передачи XON/XOFF для ttyd5, выполните:

    # stty -f /dev/ttyid5 clocal cs8 ixon ixoff

    Инициализация последовательных устройств контролируется файлом /etc/rc.serial. Этот файл определяет настройки последовательных устройств по умолчанию.

    Для предотвращения изменения программами отдельных установок, настройте ``состояние блокировки'' устройства. Например, для установки значения скорости ttyd5 в 57600 bps, выполните:

    # stty -f /dev/ttyld5 57600

    Теперь приложение, открывающее ttyd5 и пытающееся изменить скорость порта, получит скорость 57600 bps.

    И конечно, сделайте запись начальных значений и состояния блокировки устройств доступной только учетной записи root.

    Этот, и другие документы, могут быть скачаны с ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

    По вопросам связанными с FreeBSD, прочитайте документацию прежде чем писать в <questions@FreeBSD.org>.
    По вопросам связанным с этой документацией, пишите <doc@FreeBSD.org>.
    По вопросам связанным с русским переводом документации, пишите <frdp@FreeBSD.org.ua>.


    Руководство FreeBSDPrevChapter 10 БезопасностьNext

    10.14 FreeBSD Security Advisories *

    Contributed by Tom Rhodes.

    Этот раздел еще не переведен.

    Этот, и другие документы, могут быть скачаны с ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

    По вопросам связанными с FreeBSD, прочитайте документацию прежде чем писать в <questions@FreeBSD.org>.
    По вопросам связанным с этой документацией, пишите <doc@FreeBSD.org>.
    По вопросам связанным с русским переводом документации, пишите <frdp@FreeBSD.org.ua>.


    Руководство FreeBSDPrevNext

    Chapter 17 Последовательные соединения

    Table of Contents
    17.1 Краткое описание
    17.2 Введение
    17.3 Терминалы
    17.4 Входящие соединения по модему
    17.5 Исходящие соединения по модему
    17.6 Настройка последовательной консоли

    17.1 Краткое описание

    В UNIX® всегда была поддержка последовательных соединений. Фактически, самые первые UNIX машины использовали последовательные линии для пользовательского ввода/вывода. Многое изменилось с тех пор, когда среднестатистический ``терминал'' состоял из 10-символов-в-секунду последовательного принтера и клавиатуры. Эта глава рассказывает о некоторых способах, которыми FreeBSD использует последовательные соединения.

    Прочитав эту главу, вы узнаете:

    Перед прочтением этой главы вам потребуется:

    Этот, и другие документы, могут быть скачаны с ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

    По вопросам связанными с FreeBSD, прочитайте документацию прежде чем писать в <questions@FreeBSD.org>.
    По вопросам связанным с этой документацией, пишите <doc@FreeBSD.org>.
    По вопросам связанным с русским переводом документации, пишите <frdp@FreeBSD.org.ua>.


    Руководство FreeBSDPrevChapter 17 Последовательные соединенияNext

    17.6 Настройка последовательной консоли

    Предоставил Kazutaka YOKOTA. Оригинальный документ написал Bill Paul.

    17.6.1 Введение

    FreeBSD может загружаться при использовании в качестве консоли текстового терминала на последовательном порту. Такая конфигурация может быть полезна в двух случаях: для системных администраторов, устанавливающих FreeBSD на компьютеры без подключенных клавиатуры или монитора, и для разработчиков, производящих отладку ядра или драйверов устройств.

    Как описано в Chapter 7, процесс загрузки FreeBSD состоит из трех стадий. Первые две стадии реализованы в блоке загрузки, находящемся в начале слайса FreeBSD на загрузочном диске. На третей стадии загрузочный блок запускает загрузчик (/boot/loader).

    Для настройки последовательной консоли вам потребуется настроить блок загрузки, загрузчик и ядро.

    17.6.2 Настройка последовательной консоли

    1. Подготовьте кабель.

      Вам потребуется нуль-модемный или стандартный последовательный кабель и нуль-модемный адаптер. Обратитесь к разделу Section 17.2.2, где рассматриваются последовательные кабели.

    2. Отключите клавиатуру.

      Большинство систем PC тестируют клавиатуру во время включения (POST) и выдают ошибку если клавиатура не обнаружена. Некоторые системы при отсутствии клавиатуры выдают звуковой сигнал и не загружаются пока клавиатура не будет подключена.

      Если компьютер сообщает об ошибке, но все же загружается, вам не потребуется делать что-то еще. (Некоторые компьютеры с Phoenix BIOS просто сообщают ``Keyboard failed'' и продолжают загрузку).

      Если компьютер не загружается без клавиатуры, вам потребуется настроить BIOS так, чтобы отсутствие клавиатуры игнорировалось (если это возможно). Обратитесь к руководству по материнской плате за деталями о том, как это сделать.

      Tip: Установка параметра клавиатуры ``Not installed'' в настройках BIOS не означает, что вы не сможете использовать клавиатуру. Все, что делает этот параметр -- указывает BIOS не тестировать клавиатуру во время загрузки, поэтому ее отсутствие не вызывает ошибки. Вы можете оставить клавиатуру подключенной, даже если с флагом ``Not installed'' и она все еще будет работать.

      Note: Если в к системе подключена PS/2® мышь, отключите ее, как и клавиатуру. Мышь PS/2 использует часть оборудования совместно с клавиатурой, поэтому если оставить ее подключенной, тестирование клавиатуры может ошибочно выдать наличие последней. Например, система Gateway 2000 Pentium 90 MHz ведет себя именно так. К тому же, это не проблема, поскольку мышь без клавиатуры как правило не нужна.

    3. Подключите текстовый терминал к COM1 (sio0).

      Если у вас нет текстового терминала, используйте старый PC/XT с модемной программой, или последовательный порт на другом компьютере UNIX®. Если порта COM1 (sio0) нет, подключите его. На данный момент нет способа использовать другой порт вместо COM1 без перекомпиляции загрузочных блоков. Если вы уже используете COM1 для подключения другого устройства, временно удалите это устройство установите новый загрузочный блок и ядро как только FreeBSD заработает. (Предполагается, что COM1 будет доступен на файловом/вычислительном/терминальном сервере в любом случае; если вам действительно требуется COM1 для чего-то другого (и вы не можете переключить это на COM2 (sio1)), возможно не стоит беспокоиться об этом сейчас.)

    4. Убедитесь, что в файле настройки ядра установлены соответствующие флаги для COM1 (sio0).

      Подходящие флаги такие:

      0x10

      Включает поддержку консоли для этого устройства. Если установлен этот флаг, другие игнорируются. На данный момент поддержка консоли может быть включена не более чем на одном устройстве; предпочтительно на первом (в соответствии с порядком в конфигурационном файле) с установкой этого флага. Эта опция сама по себе не сделает последовательный порт консолью. Установите следующий флаг или используйте опцию -h, описанную ниже, вместе с этим флагом.

      0x20

      Включает поддержку консоли на устройстве (если нет другой консоли с более высоким приоритетом), независимо от наличия описываемой ниже опции -h. Этот флаг заменил опцию COMCONSOLE в FreeBSD версий 2.X. Флаг 0x20 должен использоваться вместе с флагом 0x10.

      0x40

      Резервирует это устройство (совместно с флагом 0x10) и делает устройство недоступным для обычной работы. Вы не должны использовать этот флаг для устройства последовательного порта, которое будет использоваться в качестве последовательной консоли. Используйте этот флаг только если устройство предназначено для удаленной отладки ядра. Обратитесь к Руководству для разработчиков за дополнительной информацией по удаленной отладке.

      Note: В FreeBSD 4.0 или выше семантика флага 0x40 немного другая и для удаленной отладки используется другой флаг.

      Пример:

      device sio0 at isa? port IO_COM1 flags 0x10 irq 4

      Обратитесь к странице справочника sio(4) за подробностями.

      Если флаги не были установлены, вам потребуется запустить UserConfig (на другой консоли) или пересобрать ядро.

    5. Создайте boot.config в корневом каталоге раздела a на загрузочном диске.

      Этот файл сообщит загрузочному блоку способ загрузки системы. Для активации последовательной консоли вам потребуется одна или несколько следующих опций -- несколько опций могут быть указаны на одной строке:

      -h

      Переключает внутреннюю и последовательную консоль. Вы можете использовать ее для переключения устройств консоли. Например, при загрузке с внутренней (видео) консоли, вы можете использовать -h для запуска загрузчика и ядра с использованием последовательного порта в качестве устройства консоли. При загрузке с последовательной консоли, вы можете использовать опцию -h для указания загрузчику и ядру использовать в качестве консоли видео дисплей.

      -D

      Переключает одно- и двухконсольную конфигурации. В одноконсольной конфигурации консоль может быть либо внутренней (видео дисплей), либо последовательным портом, в зависимости от состояния опции -h. В двухконсольной конфигурации и видео дисплей и последовательный порт станут консолями одновременно, независимо от состояния опции -h. Имейте ввиду, что конфигурация с двумя консолями работает только во время работы загрузочного блока. Как только управление переходит к загрузчику, остается только одна консоль, указанная опцией -h.

      -P

      Указывает загрузочному блоку протестировать клавиатуру. Если клавиатура не найдена, автоматически устанавливаются параметры -D и -h.

      Note: По причине ограничений на размер в существующей версии загрузочного блока, опция -P может протестировать только расширенные клавиатуры. Клавиатуры с менее чем 101 клавишами (и без клавиш F11 и F12) могут быть не обнаружены. Клавиатуры некоторых лэптопов могут быть не найдены из-за этого ограничения. Если это случилось, вы не сможете использовать опцию -P. К сожалению, не существует обходного пути решения этой проблемы.

      Используйте или опцию -P для автоматического выбора консоли, или опцию -h для активации последовательной консоли.

      Вы можете включить также другие опции, описанные в boot(8).

      Опции, за исключением -P, будут переданы загрузчику (/boot/loader). Загрузчик определит будет ли консолью внутреннее видео устройство или последовательный порт, проверив только состояние опции -h. Это означает, что если вы включите в /boot.config опцию -D, но не -h, то сможете использовать консоль только во время работы загрузочного блока; загрузчик будет использовать внутреннее видео устройство в качестве консоли.

    6. Загрузите компьютер.

      Когда вы включите компьютер FreeBSD, загрузочный блок выведет содержимое /boot.config на консоль. Например:

      /boot.config: -P
      Keyboard: no

      Вторая строка появится только если вы поместите -P в /boot.config и отражает наличие/отсутствие клавиатуры. Эти сообщения выводятся либо на последовательную, либо на внутреннюю консоль, или на обе, в зависимости от параметров в /boot.config.

      ОпцииСообщения выводятся на
      нетвнутренняя консоль
      -hпоследовательная консоль
      -Dпоследовательная и внутренняя консоли
      -Dhпоследовательная и внутренняя консоли
      -P, клавиатура присутствуетвнутренняя консоль
      -P, клавиатура отсутствуетпоследовательная консоль

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

      Нажмите на консоли любую клавишу кроме Enter для прерывания процесса загрузки. Загрузочный блок выдаст приглашение к дальнейшим действиям. Оно выглядит примерно так:

      >> FreeBSD/i386 BOOT
      Default: 0:ad(0,a)/boot/loader
      boot:

      Убедитесь, что сообщение выше появилось на последовательной, внутренней консоли или на обеих, в зависимости от опций в /boot.config. Если сообщение появилось там, где должно было появиться, нажмите Enter для продолжения процесса загрузки.

      Если вам нужна последовательная консоль, но на терминале не видно приглашения, это означает проблемы с настройками. Введите -h и нажмите Enter/Return (если это возможно) для указания загрузочному блоку (а также загрузчику и ядру) выбрать последовательный порт в качестве консоли. Когда система загрузится, проверьте настройки еще раз и определите, что было сделано неправильно.

    После запуска загрузчика и перехода в третью стадию процесса загрузки вы все еще можете переключиться между внутренней консолью и последовательной консолью путем установки соответствующих переменных окружения в загрузчике. Обращайтесь к разделу Section 17.6.5.

    17.6.3 Итоги

    Здесь приведены краткие итоги по различным настройкам, рассмотренным в этом разделе и выбираемым в соответствии с ними консолям.

    17.6.3.1 Вариант 1: вы устанавливаете для sio0 флаги 0x10

    device sio0 at isa? port IO_COM1 flags 0x10 irq 4

    Параметры в /boot.configКонсоль для загрузочного блокаКонсоль для загрузчикаКонсоль для ядра
    нетвнутренняявнутренняявнутренняя
    -hпоследовательнаяпоследовательнаяпоследовательная
    -Dпоследовательная и внутренняявнутренняявнутренняя
    -Dhпоследовательная и внутренняяпоследовательнаяпоследовательная
    -P, клавиатура присутствуетвнутренняявнутренняявнутренняя
    -P, клавиатура отсутствуетпоследовательная и внутренняяпоследовательнаяпоследовательная

    17.6.3.2 Вариант 2: вы устанавливаете для sio0 флаги 0x30

    device sio0 at isa? port IO_COM1 flags 0x30 irq 4

    Параметры в /boot.configКонсоль для загрузочного блокаКонсоль для загрузчикаКонсоль для ядра
    нетвнутренняявнутренняяпоследовательная
    -hпоследовательнаяпоследовательнаяпоследовательная
    -Dпоследовательная и внутренняявнутренняяпоследовательная
    -Dhпоследовательная и внутренняяпоследовательнаяпоследовательная
    -P, клавиатура присутствуетвнутренняявнутренняяпоследовательная
    -P, клавиатура отсутствуетпоследовательная и внутренняяпоследовательнаяпоследовательная

    17.6.4 Приемы работы с последовательной консолью

    17.6.4.1 Установка более высокой скорости порта

    По умолчанию, последовательный порт настроен так: 9600 бит/с, 8 бит, без четности, 1 стоп бит. Если вам необходимо изменить скорость, потребуется перекомпиляция как минимум загрузочных блоков. Добавьте следующую строку к /etc/make.conf и скомпилируйте новый загрузочный блок:

    BOOT_COMCONSOLE_SPEED=19200

    Если последовательная консоль настраивается не путем установки параметра -h, или последовательная консоль, используемая ядром, отличается от той, что используется загрузочным блоком, потребуется добавить следующие опции к файлу настройки ядра и собрать новое ядро:

    options CONSPEED=19200

    17.6.4.2 Использование для консоли другого последовательного порта вместо sio0

    Использование другого последовательного порта вместо sio0 для консоли потребует кое-какой перекомпиляции. Если вы по каким-либо причинам хотите использовать другой последовательный порт, перекомпилируйте загрузочный блок, загрузчик и ядро согласно приведенной ниже инструкции.

    1. Получите исходные тексты ядра (глава Chapter 21)

    2. Отредактируйте /etc/make.conf и установите BOOT_COMCONSOLE_PORT в соответствии с адресом порта, который вы хотите использовать (0x3F8, 0x2F8, 0x3E8 или 0x2E8). Могут быть использованы только устройства от sio0 до sio3 (от COM1 до COM4); мультипортовые последовательные карты не будут работать. Установка прерываний не требуется.

    3. Создайте файл настройки ядра и добавьте соответствующие флаги для порта, который планируется использовать. Например, если вы хотите использовать для консоли sio1 (COM2):

      device sio1 at isa? port IO_COM2 flags 0x10 irq 3

      или

      device sio1 at isa? port IO_COM2 flags 0x30 irq 3

      Флаги для других последовательных устройств не устанавливайте.

    4. Соберите и установите загрузочный блок и загрузчик:

      # cd /sys/boot
      # make
      # make install
    5. Соберите и установите ядро.

    6. Запишите загрузочный блок на загрузочный диск с помощью disklabel(8) и загрузитесь с новым ядром.

    17.6.4.3 Вход в отладчик DDB с последовательной линии

    Если вы хотите войти в отладчик ядра с последовательной консоли (полезно для удаленной диагностики, но опасно если вы введете неправильный BREAK на последовательном порту!), потребуется собрать ядро со следующими параметрами:

    options BREAK_TO_DEBUGGER
    options DDB

    17.6.4.4 Получение приглашения на последовательной консоли

    Хотя это не обязательно, вам может потребоваться приглашение login по последовательной линии, в дополнение к уже доступным загрузочным сообщениям и отладочной сессии ядра. Здесь описано как сделать это.

    Откройте файл /etc/ttys с помощью редактора и найдите строки:

    ttyd0 "/usr/libexec/getty std.9600" unknown off secure
    ttyd1 "/usr/libexec/getty std.9600" unknown off secure
    ttyd2 "/usr/libexec/getty std.9600" unknown off secure
    ttyd3 "/usr/libexec/getty std.9600" unknown off secure

    Строки от ttyd0 до ttyd3 соответствуют портам от COM1 до COM4. Измените off на on для требуемого порта. Если вы изменили скорость последовательного порта, может потребоваться изменить std.9600 для соответствия текущим настройкам, например std.19200.

    Возможно, вы захотите заменить тип терминала unknown на тип реально используемого терминала.

    После редактирования файла потребуется выполнить kill -HUP 1 для включения новых настроек.

    17.6.5 Изменение консоли из загрузчика

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

    17.6.5.1 Настройка последовательной консоли

    Вы можете прямо указать загрузчику и ядру использовать последовательную консоль, записав одну строку в /boot/loader.rc:

    set console=comconsole

    Это сработает независимо от настроек загрузочного блока, рассмотренных в предыдущем разделе.

    Поместите эту строку в самое начало /boot/loader.rc, чтобы увидеть на последовательной консоли все загрузочные сообщения.

    Вы можете также указать внутреннюю консоль:

    set console=vidconsole

    Если вы не установите переменную загрузчика console, загрузчик, а затем и ядро будут использовать ту консоль, которая установлена параметром -h для загрузочного блока.

    В версиях 3.2 или выше, вы можете указать консоль в /boot/loader.conf.local или /boot/loader.conf вместо /boot/loader.rc. С этим методом /boot/loader.rc должен выглядеть примерно так:

    include /boot/loader.4th
    start

    Затем, создайте /boot/loader.conf.local и поместите туда следующую строку.

    console=comconsole

    или

    console=vidconsole

    Обращайтесь к loader.conf(5) за дополнительной информацией.

    Note: На данный момент у загрузчика нет параметра, эквивалентного параметру -P загрузочного блока и нет способа автоматического выбора внутренней и последовательной консоли в зависимости от наличия клавиатуры.

    17.6.5.2 Использование для консоли отличного от sio0 последовательного порта

    Вам потребуется перекомпилировать загрузчик для использования отличного от sio0 последовательного порта в качестве консоли. Следуйте процедуре, описанной в разделе Section 17.6.4.2.

    17.6.6 Предостережения

    Идея в том, чтобы настроить выделенный сервер, который не требует графического оборудования или подсоединенной клавиатуры. К сожалению, хотя многие системы способны загрузиться без клавиатуры, есть совсем немного систем, способных загрузиться без графического адаптера. Компьютеры с AMI BIOS могут быть настроены для загрузки без графического адаптера простой установкой параметра настройки CMOS ``graphics adapter'' в значение ``Not installed''.

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

    Этот, и другие документы, могут быть скачаны с ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

    По вопросам связанными с FreeBSD, прочитайте документацию прежде чем писать в <questions@FreeBSD.org>.
    По вопросам связанным с этой документацией, пишите <doc@FreeBSD.org>.
    По вопросам связанным с русским переводом документации, пишите <frdp@FreeBSD.org.ua>.


    Руководство FreeBSDPrevChapter 21 На переднем крае разработокNext

    21.5 Отслеживание исходных текстов для нескольких машин

    Текст предоставилMike Meyer.

    Если у вас множество машин, для которых вы хотите отслеживать одно и то же дерево исходных текстов, то сгрузка кода и перестроение системы полностью выглядит как ненужная трата ресурсов: дискового пространства, пропускной способности сети и процессорного времени. Так оно и есть, и решением является выделение одной машины, которая выполняет основной объём работы, в то время как остальные используют результаты работы посредством NFS. В этом разделе описывается именно этот метод.

    21.5.1 Подготовка

    Первым делом определите набор машин, на которых выполняется один и тот же набор бинарных программ, и мы будем называть его набором для построения. Каждая машина может иметь собственное уникальное ядро, но они будут работать с одними и теми же программами пользователя. Из этого набора выберите машину, которая будет являться машиной для построения. Она станет машиной, на которой будут строиться ядро и всё окружение. В идеальном случае с достаточно незагруженным CPU для выполнения команды make world. Вам также потребуется выбрать машину, которая будет тестовой для проверки обновлений программного обеспечения прежде, чем оно будет запущено в промышленную эксплуатацию. Это должна быть машина, которая может быть в нерабочем состоянии достаточно долго. Это может быть машина для построения, но не обязательно.

    Все машины в этом наборе для построения должны монтировать каталоги /usr/obj и /usr/src с одной и той же машины и в одну и ту же точку монтирования. В идеальном случае они располагаются на разных дисках машины построения, но они могут также монтироваться по NFS на этой машине. Если у вас имеется несколько наборов для построения, то каталог /usr/src должен быть на машине построения, а по NFS он должен быть смонтирован на остальных.

    Наконец, удостоверьтесь в том, что файл /etc/make.conf на всех машинах набора для построения соответствует машине построения. Это означает, что машина построения должна строить все части основного системного набора, которые будут устанавливаться на каждой машине из набора для построения. Кроме того, у каждой машины построения должно быть задано имя ядра посредством переменной KERNCONF в файле /etc/make.conf, а машина построения должна перечислить их все в переменной KERNCONF, причём первым должно быть имя её собственного ядра. Машина построения должна хранить конфигурационные файлы ядра каждой машины в каталоге /usr/src/sys/arch/conf, если на ней будут строиться соответствующие ядра..

    21.5.2 Основные системные компоненты

    Теперь, когда всё это сделано, вы готовы к построению. Постройте ядро и всё окружение так, как это описано в Section 21.4.7.2 на машине построения, но ничего не устанавливайте. После того, как процесс построения завершится, перейдите к тестовой машине и установите только что построенное ядро. Если эта машина монтирует каталоги /usr/src и /usr/obj посредством NFS, то при перезагрузке в однопользовательский режим вам потребуется задействовать сеть и смонтировать их. Самым простым способом сделать это является переход во многопользовательский режим и запуск команды shutdown now для перехода в однопользовательский режим. После этого вы можете установить новое ядро и всё окружение, а затем выполнить команду mergemaster обычным образом. После выполнения этих действий перезагрузитесь для возвращения к обычному режиму работы во многопользовательском режиме с этой машиной.

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

    21.5.3 Порты

    Те же самые идеи могут использоваться и для дерева портов. Первым критическим шагом является монтирование /usr/ports с одной и той же машины на всех компьютерах в наборе для построения. Затем вы можете корректно настроить /etc/make.conf для использования общего каталога с дистрибутивными файлами. Вы должны задать переменную DISTDIR так, чтобы она указывала на общедоступный каталог, доступный тому пользователю, который отображается в пользователя root для ваших точек монтирования NFS. Каждая машина должна задавать WRKDIRPREFIX так, чтобы она указывала на локальный каталог построения. Наконец, если вы собираетесь строить и распространять пакаджи, до должны задать переменную PACKAGES так, чтобы она указывала на каталог, соответствующий DISTDIR.

    Этот, и другие документы, могут быть скачаны с ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

    По вопросам связанными с FreeBSD, прочитайте документацию прежде чем писать в <questions@FreeBSD.org>.
    По вопросам связанным с этой документацией, пишите <doc@FreeBSD.org>.
    По вопросам связанным с русским переводом документации, пишите <frdp@FreeBSD.org.ua>.


    Руководство FreeBSDPrevChapter 12 Устройства храненияNext

    12.11 Мгновенные копии файловых систем

    Текст предоставилTom Rhodes.

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

    Мгновенные копии позволяют пользователю создавать образы заданных файловых систем и работать с ними как с файлами. Файлы мгновенных копий должны создаваться в той файловой системе, над которой производится действие, и пользователь может создавать не более 20 мгновенных копий для каждой файловой системы. Активные копии записываются в суперблок, так что они остаются в силе между операциями монтирования и размонтирования в процессе системных перезагрузок. Если мгновенная копия больше не нужна, она может быть удалена стандартной командой rm(1). Мгновенные копии могут удаляться в любом порядке, однако всё использованное пространство не может быть использовано, так как другая мгновенная копия может претендовать на некоторые блоки из освобождённых.

    В момент первоначального создания устанавливается флаг schg (обратитесь к страницам справочной системы по команде chflags(1)) для обеспечения того, что даже пользователь root не сможет произвести запись в мгновенную копию. Однако команда unlink(1) делает исключение для файлов мгновенных копий, позволяя их удалять при наличии установленного флага schg, так что нет необходимости снимать флаг schg перед удаление файла мгновенной копии.

    Мгновенные копии создаются при помощи утилиты mount(8). Чтобы создать мгновенную копию /var в файле /var/snapshot/snap, воспользуйтесь такой командой:

    # mount -u -o snapshot /var/snapshot/snap /var

    В качестве альтернативного средства создания мгновенных копий вы можете использовать утилиту mksnap_ffs(8):

    # mksnap_ffs /var /var/snapshot/snap

    После создания мгновенной копии есть несколько способов её использования:

    Теперь вы можете пройтись по иерархии вашей зафиксированной файловой системы /var, смонтированной в каталог /mnt. Всё будет в том же самом состоянии, в каком это было во время создания мгновенной копии. Единственным исключением будет то, что любые ранее сделанные мгновенные копии будут видны как файлы нулевой длины. Когда использование мгновенной копии закончено, она может быть удалена командой:

    # umount /mnt
    # mdconfig -d -u 4

    Для получения более полной информации о softupdates и мгновенных копиях файловых систем, включая технической описание, вы можете посетить сайт Маршалла Кёрка МакКузика (Marshall Kirk McKusick) по адресу http://www.mckusick.com.

    Этот, и другие документы, могут быть скачаны с ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

    По вопросам связанными с FreeBSD, прочитайте документацию прежде чем писать в <questions@FreeBSD.org>.
    По вопросам связанным с этой документацией, пишите <doc@FreeBSD.org>.
    По вопросам связанным с русским переводом документации, пишите <frdp@FreeBSD.org.ua>.


    Руководство FreeBSDPrevChapter 16 Музыка и ЗвукNext

    16.3 Звук MP3

    Предоставлено Chern Lee.

    MP3 (MPEG Layer 3 Audio) достигает качества звука, близкого к CD, и не оставляет причин не воспользоваться им на Вашей рабочей станции.

    16.3.1 Проигрыватели MP3

    На данный момент наиболее популярным MP3-проигрывателем для XFree86 является XMMS (X Multimedia System). Скины приложения WinAMP могут быть использованы для XMMS так как графический интерфейс пользователя практически идентичен тому, который имеет программа фирмы Nullsoft WinAMP. XMMS также имеет собственную поддержку расширений.

    XMMS может быть установлен из порта или пакета multimedia/xmms.

    Интерфейс XMMS интуитивно понятен и включает в себя список песен, графический эквалайзер и многое другое. Те, кто знаком с WinAMP найдут XMMS очень простым в использовании.

    Порт audio/mpg123 является альтернативой, это MP3-проигрыватель для командной строки.

    mpg123 может быть запущен с указанием звукового устройства и файла MP3 в командной строке как показано ниже:

    # mpg123 -a /dev/dsp1.0 Foobar-GreatestHits.mp3
    High Performance MPEG 1.0/2.0/2.5 Audio Player for Layer 1, 2 and 3.
    Version 0.59r (1999/Jun/15). Written and copyrights by Michael Hipp.
    Uses code from various people. See 'README' for more!
    THIS SOFTWARE COMES WITH ABSOLUTELY NO WARRANTY! USE AT YOUR OWN RISK!
    
    
    Playing MPEG stream from BT - Foobar-GreastHits.mp3 ...
    MPEG 1.0 layer III, 128 kbit/s, 44100 Hz joint-stereo

    /dev/dsp1.0 должно быть заменено соответствующим устройством dsp для Вашей системе.

    16.3.2 Копирование аудиодорожек с CD

    Перед тем как преобразовывать CD или дорожку CD в MP3, аудиоданные на CD должны быть скопированы на жёсткий диск. Это можно сделать путём копирования данных CDDA (CD Digital Audio) в файл WAV.

    Утилита cdda2wav, которая является частью пакета sysutils/cdrtools, может быть использования для копирования аудиоинформации с CD, а также различной связанной с ними.

    Когда музыкальный CD находится в приводе, следующая команда может быть использована (от пользователя root) для того, чтобы скопировать весь CD в отдельные (один на каждую дорожку) WAV файлы:

    # cdda2wav -D 0,1,0 -B

    cdda2wav поддерживает ATAPI (IDE) приводы CDROM. Для копирования с IDE привода, укажите имя устройства вместо SCSI LUN. Например, для того, чтобы скопировать 7-ую аудиодорожку с IDE-привода:

    # cdda2wav -D /dev/acd0a -t 7

    Параметр -D 0,1,0 указывает устройство SCSI 0,1,0, соответственно результату работы cdrecord -scanbus.

    Для того, чтобы копировать отдельные дорожки, используйте параметр -t как показано ниже:

    # cdda2wav -D 0,1,0 -t 7

    Этот пример показывает как скопировать 7-ю дорожку музыкального CD. Для того чтобы скопировать набор дорожек, например, с первой по седьмую, укажите диапазон:

    # cdda2wav -D 0,1,0 -t 1+7

    Утилита dd(1) также может быть использована для копирования аудиодорожек на приводах ATAPI, для того, чтобы узнать больше об этом, прочитайте Section 12.5.5.

    16.3.3 Создание (encoding) файлов MP3

    На сегодняшний день наилучшим выбором программы для создания mp3 является lame. Lame находится в дереве портов в подкаталоге audio/lame.

    Используя скопированные файлы WAV следующая команда преобразует audio01.wav в audio01.mp3:

    # lame -h -b 128 \
    --tt "Foo Song Title" \
    --ta "FooBar Artist" \
    --tl "FooBar Album" \
    --ty "2001" \
    --tc "Ripped and encoded by Foo" \
    --tg "Genre" \
    audio01.wav audio01.mp3

    Частота 128 килобит является стандартом "де факто" для MP3. Многие, однако, используют более высокие частоты для получения лучшего качества, 160 или 192 килобита. Чем выше частота, тем больше дискового пространства будет занимать получаемый MP3, но качество будет выше. Параметр -h включает режим ``лучшее качество, но меньше скорость''. Параметры, начинающиеся с --t указывают теги ID3, которые обычно содержат информацию о песне, включаемую в файл MP3. О дополнительных настройках преобразования можно узнать, прочитав страницу руководства lame.

    16.3.4 Декодирование MP3

    Для того, чтобы записать музыкальный CD из файлов MP3, они должны быть преобразованы в несжатый формат WAV. Как XMMS, так и mpg123 поддерживают вывод MP3 в распакованный формат файлов.

    Запись на диск в XMMS:

    1. Запустите XMMS:

    2. Нажмите правой кнопкой мыши в главном окне XMMS для того, чтобы показать меню.

    3. Выберите Preferences (либо Свойства, если у вас локализованная версия XMMS).

    4. Измените расширение вывода на ``Disk Writer Plugin'' (или ``Расширение записи на диск'', если у вас локализованная версия XMMS).

    5. Нажмите Configure (или ``Настройка'', если у вас локализованная версия XMMS).

    6. Введите (или выберите при помощи обзора) каталог, в который следует сохранять распакованные файлы.

    7. Загрузите файл MP3 в XMMS как вы это делаете обычно. Установите громкость на 100% и отключите эквалайзер.

    8. Нажмите Воспроизвести -- XMMS будет выглядеть так же как и при обычном воспроизведении MP3, но самой музыки слышно не будет. На самом деле MP3 воспроизводится в файл.

    9. Убедитесь, что Вы установили расширение вывода таким, как оно было до этого, для того, чтобы снова слушать MP3.

    Запись в stdout в mpg123:

    1. Запустите mpg123 -s audio01.mp3 > audio01.pcm

    XMMS записывает файл в формате WAV, в то время как mpg123 преобразовывает MP3 в простые аудиоданные PCM. Оба формата могут быть использованы cdrecord для создания музыкальных CD. Для использования burncd(8) вам потребуются простые аудиоданные PCM. Если же вы будете использовать файлы в формате WAV, то заметите небольшой щелчок в начале каждой аудиодорожки, этот щелчок - заголовок файла в формате WAV. Вы очень просто можете избавиться от него путём удаления заголовка WAV при помощи утилиты SoX (она может быть установлена из порта audio/sox или соответствующего пакета:

    % sox -t wav -r 44100 -s -w -c 2 track.wav track.raw

    Прочтите Section 12.5 для того, чтобы узнать больше о записи CD в FreeBSD.

    Этот, и другие документы, могут быть скачаны с ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

    По вопросам связанными с FreeBSD, прочитайте документацию прежде чем писать в <questions@FreeBSD.org>.
    По вопросам связанным с этой документацией, пишите <doc@FreeBSD.org>.
    По вопросам связанным с русским переводом документации, пишите <frdp@FreeBSD.org.ua>.


    Руководство FreeBSDPrevChapter 16 Музыка и ЗвукNext

    16.2 Настройка звуковой карты

    Предоставлено Moses Moore.

    16.2.1 Определение Вашего Устройства

    Перед тем как начать, Вы должны знать модель Вашей карты, процессор, который она использует, и интерфейс карты: PCI или ISA. FreeBSD поддерживает множество разных PCI и ISA карт. Если Вы не увидели Вашу карту в следующем списке, загляните в руководство pcm(4). Нижеследующий список неполон, но, всё-таки, в нём перечислено большинство наиболее часто используемых карт.

    Для того, чтобы использовать звуковую карту Вы должный загрузить соответствующий драйвер устройства. Этого можно достигнуть двумя путями. Простейший способ - это просто загрузить соответствующий Вашей карте модель ядра используя kldload(8). Другой способ подразумевает добавление статического драйвера в Ваше ядро. В последующих разделах дана более подробная информация о том, что Вам нужно сделать для добавления поддержки Вашего оборудования. Более подробно о конфигурации ядра смотрите секцию Chapter 9.

    16.2.1.1 Карты Creative, Advance, и ESS Sound

    Если у Вас одна из этих карт, Вы должны добавить:

    device pcm

    в конфигурационный файл вашего ядра. Если у Вас PnP ISA карта, Вы также должны добавить

    device sbc

    Для не-PnP ISA карт, добавьте:

    device pcm
    device sbc0 at isa? port0x220 irq 5 drq 1 flags 0x15

    в конфигурационный файл вашего ядра. Здесь указаны настройки по-умолчанию. Возможно Вам придётся изменить IRQ или другие параметры в соответствии с настройками Вашей карты. Смотрите руководство sbc(4) для получения более подробной информации.

    Note: Sound Blaster Live не поддерживается в FreeBSD 4.0 без заплатки, которую этот документ не включает. Рекомендуется обновить Вашу систему до последней версии -STABLE перед использованием этой карты.

    16.2.1.2 Карты Gravis UltraSound

    Для PnP ISA card, Вы должны добавить:

    device pcm
    device gusc

    в конфигурационный файл вашего ядра. Если у Вас не-PnP ISA карту, Вам следует добавить:

    device pcm
    device gus0 at isa? port 0x220 irq 5 drq 1 flags 0x13

    в конфигурационный файл вашего ядра. Возможно Вам придётся изменить IRQ или другие параметры в соответствии с настройками Вашей карты. Смотрите руководство gusc(4) для получения более подробной информации.

    16.2.1.3 Карты Crystal Sound

    Для карт от Crystal, Вы должны добавить:

    device pcm
    device csa

    в конфигурационный файл вашего ядра.

    16.2.1.4 Прочая поддержка

    Для PnP ISA или PCI карт, Вам следует добавить:

    device pcm

    в конфигурационный файл вашего ядра. Если у Вас не-PnP ISA карта, не имеющая bridge driver, добавьте:

    device pcm0 at isa? irq 10 drq 1 flags 0x0

    в конфигурационный файл вашего ядра. Возможно Вам придётся изменить IRQ, и прочие параметры, в соответствии с аппаратной конфигурацией.

    16.2.1.5 Поддержка интегрированных карт

    Некоторые системы с интегрированными в материнские платы звуковыми картами требуют включения дополнительной опции в конфигурацию ядра:

    options PNPBIOS

    16.2.2 Создание и Тестирование Устройства

    После перезагрузки, зарегистрируйтесь в системе и проверьте наличие устройства в файле /var/run/dmesg.boot при помощи команды:

    # grep pcm /var/run/dmesg.boot
    pcm0: <SB16 DSP 4.11> on sbc0

    Результат на Вашей системе может отличатся. Если упоминания об устройстве pcm отсутствует, то что-то перед этим было сделано неверно. Если это произошло, просмотрите Ваш файл конфигурации ядра еще раз и убедитесь что Вы выбрали правильное устройство. Наиболее часто встречающиеся проблемы описаны в разделе Section 16.2.2.1.

    Note: Если у Вас установлена FreeBSD 5.0 или более поздняя, Вы можете не читать всё, что описано далее в этом разделе. Эти версии FreeBSD используют devfs(5) для того, чтобы автоматически создавать файлы устройств.

    Если ошибок нет и в Вашей системе присутствует устройство pcm0, выполните su для получения прав пользователя root и сделайте следующее:

    # cd /dev
    # sh MAKEDEV snd0

    Если ошибок нет и в Вашей системе присутствует устройство pcm1, то повторите указанные выше действия, заменив snd0 на snd1.

    Пожалуйста помните, что эти команды не создают устройство /dev/snd!

    MAKEDEV создает группу устройств, включающую в себя:

    УстройствоОписание
    /dev/audioSPARC-совместимое звуковое устройство
    /dev/dspАналого-цифровой преобразователь голоса
    /dev/dspWТоже, что и /dev/dsp, но 16 бит на сэмпл
    /dev/midiУстройство доступа к MIDI
    /dev/mixerУстройство управления миксером
    /dev/musicИнтерфейс секвенсора второго уровня
    /dev/sequencerУстройство секвенсор
    /dev/pssПрограммируемый интерфейс

    Если всё пройдет удачно, Ваша звуковая карта заработает. Если Ваш CD-ROM или DVD-ROM привод правильно подключён к звуковой карте, Вы можете вставить CD в привод и воспроизвести его при помощи cdcontrol(1).

    % cdcontrol -f /dev/acd0c play 1

    Различные приложения, например audio/workman предлагают лучший пользовательский интерфейс. Вы можете также захотеть установить приложения для прослушивания звуковых файлов MP3, как например audio/mpg123.

    16.2.2.1 Общие проблемы

    ОшибкаРешение
    ``unsupported subdevice XX''

    One or more of the device nodes was not created correctly. Repeat the steps above.

    ``sb_dspwr(XX) timed out''

    The I/O port is not set correctly.

    ``bad irq XX''

    The IRQ is set incorrectly. Make sure that the set IRQ and the sound IRQ are the same.

    ``xxx: gus pcm not attached, out of memory''

    There is not enough available memory to use the device.

    16.2.3 Использование нескольких источников звука

    Предоставлено Munish Chopra.

    Достаточно часто встречается необходимость иметь несколько источников звука, которые должны воспроизводить одновременно, например когда esound или artsd не поддерживают совместное использование звукового устройства с некоторым приложением.

    FreeBSD позволяет Вам делать это при помощи виртуальных звуковых каналов, которые могут быть настроены с помощью sysctl(8). Виртуальные каналы позволяют вам мультиплексировать каналы воспроизведение Вашей звуковой карты, смешивая звук в ядре.

    Для установки количества виртуальных каналов вы можете использовать две sysctl, которые, если вы пользователь root, могут быть установлены таким образом:

    # sysctl hw.snd.pcm0.vchans=4
    # sysctl hw.snd.maxautovchans=4

    В этом примере выделяются четыре виртуальных канала, чего вполне достаточно для каждодневного использования. hw.snd.pcm0.vchans это количество виртуальных каналов устройства pcm0 и может быть установлено сразу же, как только устройство было подключено. hw.snd.maxautovchans это количество виртуальных каналов, которые выделяются новому аудиоустройству, когда оно подключается при помощи kldload(8). Так как модуль pcm может быть загружен независимо от аппаратных драйверов, hw.snd.maxautovchans может указывать, сколько виртуальных каналов для любых устройств, которые будут подключены позже.

    Если Вы не используете devfs(5), Вам будет необходимо указать Вашим приложениям /dev/dsp0.x, где x это число от 0 до 3, если hw.snd.pcm0.vchans установлено в значение 4. Для системы, использующей devfs(5), вышеуказанные настройки будут сделаны автоматически прозрачно для пользователя.

    Этот, и другие документы, могут быть скачаны с ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

    По вопросам связанными с FreeBSD, прочитайте документацию прежде чем писать в <questions@FreeBSD.org>.
    По вопросам связанным с этой документацией, пишите <doc@FreeBSD.org>.
    По вопросам связанным с русским переводом документации, пишите <frdp@FreeBSD.org.ua>.


    Руководство FreeBSDPrevChapter 21 На переднем крае разработокNext

    21.3 Синхронизация ваших исходных текстов

    Имеются различные способы использования Интернет (или почтового) подключения для того, чтобы иметь самые последние версии исходных текстов любого проекта FreeBSD, в зависимости от того, чем вы интересуетесь. Основной сервис, который мы предлагаем, это Анонимный CVS, CVSup и CTM.

    Warning: Хотя имеется возможностью обновлять только часть дерева исходных текстов, процедурой, которую мы настоятельно советуем, является обновление всего дерева и перекомпиляция пользовательских программ (то есть тех, которые работают в пространстве имен пользователя, например те, что находятся в каталогах /bin и /sbin) и ядра. Обновление только части дерева исходных текстов, только текстов ядра или только текстов пользовательских программ часто приводит к возникновению проблем. Эти проблемы могут варьироваться от ошибок компиляции до аварийных остановов системы или порчи данных.

    Анонимный CVS и CVSup используют модель pull обновления исходных текстов. В случае CVSup пользователь (или скрипт программы cron) вызывают cvsup, а она работает с каким-либо сервером cvsupd, чтобы выполнить обновление ваших файлов. Обновления, которые вы получаете, актуальны с точностью до минуты, и вы получаете их тогда и только тогда, когда сами захотите. Вы можете с легкостью ограничить обновления конкретными файлами или каталогами, которые представляют для вас интерес. Обновления создаются на лету сервером согласно тому, что у вас есть и что вы хотите иметь. Анонимный CVS гораздо проще, чем CVSup в том смысле, что он представляет собой всего лишь расширение CVS, позволяющее сгрузить изменения непосредственно с удаленного хранилища CVS. CVSup может делать это гораздо более эффективно, однако анонимным CVS легче пользоваться.

    CTM, с другой стороны, не сравнивает последовательно исходные тексты, имеющиеся у вас, с теми, что находятся в главном архиве и вообще ни коим образом не касается наших серверов. Вместо этого несколько раз в день на главной машине CTM запускается скрипт, находящий изменения в файлах с момента своего предыдущего запуска; все замеченные изменения сжимаются, помечаются последовательным номером и кодируются для передачи по электронной почте (в форме печатаемых символов ASCII). После получения эти ``дельта-файлы CTM'' могут быть переданы утилите ctm_rmail(1), которая осуществит автоматическое декодирование, проверку и применение изменений к пользовательской копии исходных текстов. Этот процесс гораздо более эффективен, чем CVSup, и требует меньше ресурсов нашего сервера, так как он сделан по модели push, а не pull.

    Несомненно, есть и минусы. Если вы случайно уничтожили часть вашего архива, то CVSup обнаружит и сгрузит поврежденную часть. CTM этого делать не будет, и если вы уничтожили какую-то часть вашего дерева исходных текстов (и у вас нет архивной копии), то вам нужно будет начать с самого начала (с последнего ``базового дельта-файла''), перестроив всё с помощью CTM, или, используя анонимный CVS, просто удалить повреждённую часть и пересинхронизироваться.

    Этот, и другие документы, могут быть скачаны с ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

    По вопросам связанными с FreeBSD, прочитайте документацию прежде чем писать в <questions@FreeBSD.org>.
    По вопросам связанным с этой документацией, пишите <doc@FreeBSD.org>.
    По вопросам связанным с русским переводом документации, пишите <frdp@FreeBSD.org.ua>.


    Руководство FreeBSDPrevNext

    II. Системное Администрирование

    Оставшиеся главы Руководства охватывают все аспекты администрирования FreeBSD системы. Каждая глава начинается с описания того, что Вы сможете изучить в результате прочтения этой главы.

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

    Этот, и другие документы, могут быть скачаны с ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

    По вопросам связанными с FreeBSD, прочитайте документацию прежде чем писать в <questions@FreeBSD.org>.
    По вопросам связанным с этой документацией, пишите <doc@FreeBSD.org>.
    По вопросам связанным с русским переводом документации, пишите <frdp@FreeBSD.org.ua>.


    Руководство FreeBSDPrevChapter 17 Последовательные соединенияNext

    17.3 Терминалы

    Предоставил Sean Kelly.

    Терминалы предоставляют удобный и дешевый способ доступа к системе FreeBSD, когда вы не сидите за консолью компьютера и не подключены к сети. Этот раздел описывает использование терминалов в FreeBSD.

    17.3.1 Пользователи и типы терминалов

    В первых системах UNIX® не было консолей. Вместо этого, пользователи входили и запускали программы через терминалы, которые были подключены к последовательным портам компьютеров. Это очень похоже на использование модема и программного обеспечения терминала для дозвона до удаленной системы и выполнения только-текстовой работы.

    Консоли современных PC поддерживают высококачественную графику, но возможность входа по последовательному порту на сегодняшний день все еще доступна почти в каждой UNIX подобной операционной системе; FreeBSD не исключение. Используя терминал, подключенный к неиспользуемому последовательному порту, вы можете войти и запустить текстовую программу, которую обычно запускаете в текстовой консоли или в окне xterm системы X Window.

    Для корпоративных пользователей, вы можете подсоединить множество терминалов к системе FreeBSD и поставить их на столы пользователей. Для домашнего пользователя, устаревший IBM PC или Macintosh® может быть подключен в качестве терминала к более мощному компьютеру под управлением FreeBSD. Вы можете превратить однопользовательский компьютер в мощную многопользовательскую систему.

    В FreeBSD три вида терминалов:

    В оставшейся части раздела описывается каждый вид.

    17.3.1.1 Простые терминалы

    Простые терминалы это специализированное оборудование, позволяющее соединять компьютеры через последовательные линии. Они называются ``простыми'', поскольку их вычислительных возможностей хватает только для отображения, отправки и получения текста. Вы не сможете запустить на них никаких программ. Компьютер, к которому подсоединяется терминал, предоставляет все возможности для запуска текстовых редакторов, компиляторов, почтовых программ, игр и так далее.

    Есть сотни видов простых терминалов, изготовленных различными производителями, включая DEC VT-100 и Wyse WY-75. Почти любой терминал может работать с FreeBSD. Некоторые high-end терминалы даже могут отображать графику, но только отдельные программные пакеты могут получить преимущество от этих расширенных возможностей.

    Простые терминалы популярны в рабочей среде, где не требуется доступ к графическим приложениям, например тем, которые предоставляет система X Window.

    17.3.1.2 PC, работающие в качестве терминалов

    Если простые терминалы могут только отображать, отправлять и получать текст, возможностей абсолютно любого персонального компьютера хватит для работы в роли простого терминала. Все, что вам потребуется, это подходящий кабель и какая-нибудь программа эмулятора терминала.

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

    17.3.1.3 X терминалы

    X терминалы это наиболее сложный тип существующих терминалов. Вместо подключения к последовательному порту, они обычно подключаются к сети, например Ethernet. Вместо работы только с текстовыми приложениями, они могут отображать любое X приложение.

    Мы представляем X терминалы только ради полноты описания. Тем не менее, эта глава не охватывает установку, настройку или использование X терминалов.

    17.3.2 Настройка

    Этот раздел описывает, что нужно сделать для настройки системы FreeBSD и включения входа в систему через терминал. Предполагается, что вы уже подключили терминал и настроили ядро для включения поддержки последовательного порта, к которому он подключен.

    Обратитесь к главе Chapter 7 за информацией о процессе init, отвечающем за контроль над всеми процессами и за инициализацию системы во время загрузки. Одна из задач, выполняемых init -- чтение файла /etc/ttys и запуск процесса getty на доступных терминалах. Процесс getty отвечает за чтение имени пользователя и запуск программы login.

    Таким образом, для настройки терминалов в системе FreeBSD необходимо выполнить следующие действия под root:

    1. Добавить строку к /etc/ttys для файла из каталога /dev, представляющего последовательный порт, если этой строки еще нет.

    2. Настроить запуск команды /usr/libexec/getty на этом порту и указать соответствующий тип getty в файле /etc/gettytab.

    3. Указать тип терминала по умолчанию.

    4. Переключить порт в состояние ``on'' (``включен'')

    5. Указать, должен ли порт быть ``secure'' (``безопасным'')

    6. Заставить init перечитать файл /etc/ttys.

    Опционально, вы можете настроить свой тип getty для использования на шаге 2, добавив описание в файл /etc/gettytab. За описанием обратитесь к страницам справочника gettytab(5) и getty(8).

    17.3.2.1 Добавление строки в /etc/ttys

    В файле /etc/ttys находится список всех портов системы FreeBSD, на которые возможен вход. Например, там находится первая виртуальная консоль ttyv0. Вы можете войти на консоль с помощью этой записи. Файл содержит записи и для других виртуальных консолей, последовательных портов, и псевдо-терминалов. Название файла последовательного порта из каталога /dev приводится без префикса /dev (например, устройство /dev/ttyv0 будет записано как ttyv0).

    Установка FreeBSD по умолчанию включает файл /etc/ttys с поддержкой первых четырех последовательных портов: от ttyd0 до ttyd3. Если вы подключаете терминал к одному из этих портов, добавлять записи терминалов не потребуется.

    Example 17-1. Добавление записей терминалов в /etc/ttys

    Предположим, вы хотите подключить два терминала к системе: Wyse-50 и старый 286 IBM PC с эмулятором терминала VT-100. Мы подключаем Wyse к второму последовательному порту и 286 к шестому последовательному порту (порт на мультипортовой карте). Соответствующие строки в /etc/ttys будут выглядеть так:

    ttyd1(1)  "/usr/libexec/getty std.38400"(2)  wy50(3)  on(4)  insecure(5)
    ttyd5   "/usr/libexec/getty std.19200"  vt100  on  insecure
    	  
    (1)
    Первое поле, как правило, указывает имя специального файла терминала, в соответствии с его именем в /dev.
    (2)
    Второе поле -- это команда, исполняемая для этого терминала, обычно getty(8). getty инициализирует и открывает линию, устанавливает ее скорость, приглашает пользователя к вводу имени пользователя, а затем выполняет программу login(1).

    Программа getty принимает один (опциональный) параметр в командной строке, тип getty. Тип getty определяет характеристики терминальной линии, такие как значение bps и четность. Программа getty считывает эти характеристики из файла /etc/gettytab.

    Файл /etc/gettytab содержит множество записей для терминалов, как для старых так и для новых. Почти во всех случаях запись, начинающаяся с текста std, предназначена для работы с аппаратными терминалами. Эти записи игнорируют четность. Запись std есть для каждого значения bps от 110 до 115200. Конечно, вы можете добавить собственные записи в этот файл. Страница справочника gettytab(5) содержит дополнительную информацию.

    При установке типа getty в файле /etc/ttys убедитесь в наличии соответствующей записи терминала.

    Например, Wyse-50 не использует четность и соединяется на 38400 bps. 286 PC не использует четность и соединяется на 19200 bps.

    (3)
    Третье поле определяет тип терминала, обычно подключаемого к этой линии tty. Для портов входящих соединений обычно используется значение unknown или dialup, поскольку пользователь может подключить практически любой тип терминала или программу. Для аппаратных терминалов тип не меняется, поэтому вы можете поместить в это поле определенный тип терминала из базы данных termcap(5).

    Например, Wyse-50 использует реальный тип терминала, а 286 PC, работающий с Procomm, настроен на эмуляцию VT-100.

    (4)
    Четвертое поле определяет должен ли порт быть включен. Размещение здесь on укажет процессу init запустить программу, указанную во втором поле, getty. Если вы поместите off в это поле, команда getty не будет запущена и вход на этот порт станет невозможен.
    (5)
    Последнее поле используется, чтобы указать, является ли порт безопасным. Пометка порта безопасным означает, что вы доверяете ему достаточно для того, чтобы разрешить учетной записи root (или любой учетной записи с UID 0) входить с этого порта. Небезопасные порты не разрешат вход root. На небезопасном порту пользователи должны войти с через непривилегированную учетную запись, а затем использовать su(1) или подобный механизм для получения привилегий суперпользователя.

    Настоятельно рекомендуется использовать ``insecure'' даже для терминалов, находящихся за закрытыми дверями. Довольно легко использовать su после входа, если вам потребуются привилегии суперпользователя.

    17.3.2.2 Заставьте init перечитать /etc/ttys

    После выполнения необходимых изменений в файле /etc/ttys, вам потребуется отправить сигнал SIGHUP (hangup) процессу init, чтобы заставить его перечитать его файл настройки. Например:

    # kill -HUP 1

    Note: init это всегда первый из запущенных в в системе процессов, поэтому его PID всегда 1.

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

    17.3.3 Решение проблем с соединением

    Даже при самом внимательном отношении к деталям, при настройке терминала все же могут возникнуть проблемы. В этом разделе приведен список симптомов и предлагается несколько решений.

    17.3.3.1 Не появляется приглашение ко входу

    Убедитесь, что терминал подключен и его питание включено. Убедитесь, что эмулятор терминала запущен на соответствующем порту.

    Убедитесь, что кабель хорошо подключен и к терминалу и к компьютеру с FreeBSD. Убедитесь, что правильно выбран тип кабеля.

    Убедитесь, что терминал и FreeBSD имеют одинаковые установки значения bps и четности. Если у вас видео терминал, убедитесь, что контраст и яркость включены. Если это принт-терминал, убедитесь, что бумага и чернила в порядке.

    Убедитесь, что процесс getty запущен и обслуживает терминал. Например, для получения списка запущенных процессов getty с помощью ps, выполните:

    # ps -axww|grep getty

    Вы должны увидеть строку для соответствующего терминала. Например, если getty запущена на втором последовательном порту ttyd1 и использует запись std.38400 из файла /etc/gettytab, отобразится следующее:

    22189  d1  Is+    0:00.03 /usr/libexec/getty std.38400 ttyd1

    Если процесс getty не запущен, убедитесь, что вы включили порт в /etc/ttys. Не забудьте также запустить kill -HUP 1 после изменения файла ttys.

    Если процесс getty запущен, но на терминале по-прежнему не отображается приглашение ко входу, или если приглашение отображается, но войти невозможно, терминал или кабель, возможно, не поддерживают квитирование связи. Попробуйте изменить поле в /etc/ttys с std.38400 на 3wire.38400. Запись 3wire похожа на std, но игнорирует квитирование связи. Вам может потребоваться уменьшить скорость соединения или включить программный контроль передачи при использовании 3wire для предотвращения переполнений буфера.

    17.3.3.2 Вместо приглашения ко входу на экране появляется ``мусор''

    Убедитесь, что терминал и FreeBSD имеют одинаковые установки значения bps и четности. Проверьте процесс getty, чтобы убедиться, что используется подходящий тип getty. Если это не так, отредактируйте /etc/ttys и запустите kill -HUP 1.

    17.3.3.3 Символы появляются дважды, пароль отображается при вводе

    Переключите терминал (или программу эмулятора терминала) с ``half duplex'' или ``local echo'' на ``full duplex''.

    Этот, и другие документы, могут быть скачаны с ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

    По вопросам связанными с FreeBSD, прочитайте документацию прежде чем писать в <questions@FreeBSD.org>.
    По вопросам связанным с этой документацией, пишите <doc@FreeBSD.org>.
    По вопросам связанным с русским переводом документации, пишите <frdp@FreeBSD.org.ua>.


    Руководство FreeBSDPrevNext

    Chapter 8 Users and Basic Account Management *

    Эта глава не переведена.

    Этот, и другие документы, могут быть скачаны с ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

    По вопросам связанными с FreeBSD, прочитайте документацию прежде чем писать в <questions@FreeBSD.org>.
    По вопросам связанным с этой документацией, пишите <doc@FreeBSD.org>.
    По вопросам связанным с русским переводом документации, пишите <frdp@FreeBSD.org.ua>.


    Руководство FreeBSDPrevChapter 14 Локализация - I18N/L10N использование и настройкаNext

    14.3 Использование локализации

    При всем своем величии, I18N не специфична для FreeBSD и является, по сути, соглашением. Следование этому соглашению помогает FreeBSD, и мы это приветствуем.

    Настройки локализации базируются на трех основных терминах: код языка, код страны и кодировка. Имена локализаций строятся из этих частей следующим образом:

    кодязыка_кодстраны.кодировка

    14.3.1 Язык и код страны

    Чтобы настроить FreeBSD (или любую другую UNIX®-систему, поддерживающую I18N) на использование специфического языка, пользователю нужно выяснить коды этого языка и страны (коды страны сообщают приложению какой именно диалект языка этой страны нужно использовать). К тому же, веб-браузеры, SMTP/POP серверы, веб-серверы и т.п. делают свой выбор в зависимости от этого. Далее показаны примеры кодов языка/страны:

    Код языка/страныОписание
    en_USАнглийский - Соединенные Штаты
    ru_RUРусский для России
    zh_TWТрадиционный китайский для Тайваня

    14.3.2 Кодировки

    Некоторые языки используют не соответствующие ASCII кодировки, которые используют для кодирования 8 бит, расширенное или многобайтовое представление символов (подробности см. в multibyte(3)). Старые приложения не распознают такие кодировки и ошибочно принимают их за управляющие символы. Новые приложения обычно распознают 8-битные символы. В зависимости от реализации, пользователю может потребоваться компиляция приложения с поддержкой расширенного или многобайтного представления символов, или же просто правильная его настройка. Чтобы иметь возможность вводить и обрабатывать символы с расширенным или многобайтным представлением, Коллекция портов FreeBSD предоставляет поддержку разных языков для различных приложений. Смотрите документацию по I18N в соответствующем порту FreeBSD.

    В частности, пользователю необходимо читать прилагаемую к приложению документацию чтобы решить, как правильно его настроить или указать правильные параметры configure/Makefile/компилятору.

    Следует помнить следующие вещи:

    Вы можете посмотреть актуальный список наборов символов на сайте IANA Registry.

    Note: Вместо этого, FreeBSD версий 4.5 и выше используют X11-совместимые кодировки для локализации.

    14.3.3 Приложения, использующие I18N

    В системе Портов и Пакетов FreeBSD в название приложений, поддерживающих I18N, включена аббревиатура I18N для легкой их идентификации. И, тем не менее, не все приложения поддерживают требуемый язык.

    14.3.4 Настройка локализации

    Обычно достаточно экспортировать значение имени локализации в переменной LANG Вашей оболочки. Это можно сделать в пользовательском ~/.login_conf файле или в инициализационном файле пользовательской оболочки (~/.profile, ~/.bashrc, ~/.cshrc). Нет надобности устанавливать отдельные параметры локализации такие как LC_CTYPE, LC_CTIME. За дополнительной информацией, пожалуйста, обращайтесь к документации FreeBSD по нужному вам языку.

    Вам следует установить следующие переменные окружения в ваших конфигурационных файлах:

    Эти настройки включают конфигурацию оболочки пользователя, конфигурацию конкретных приложений и конфигурацию X11.

    14.3.4.1 Методы настройки локализации

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

    14.3.4.1.1 Метод Login Classes

    Этот метод позволяет установить переменные окружения, необходимые для установки локализации и набора символов MIME, однократно для любых оболочек, вместо того, чтобы добавлять установку этих переменных в инициализационный файл каждой оболочки. Настройка на уровне пользователя может быть сделана самим пользователем, а Настройка на уровне администратора требует привилегий суперпользователя.

    14.3.4.1.1.1 Настройка на уровне пользователя

    Вот минимальный пример файла .login_conf в домашнем каталоге пользователя, в котором задаются обе переменные для кодировки Latin-1:

    me:\
    	:charset=ISO-8859-1:\
    	:lang=de_DE.ISO8859-1:

    Это пример .login_conf, который задает переменные для Традиционного Китайского языка в кодировке BIG-5. Обратите внимание, что задается намного больше переменных, потому что некоторое программы некорректно воспринимают переменные окружения локализации для Китая, Японии и Кореи.

    #Пользователи, которые не хотят использовать
    денежные единицы 
    #и форматы времени Тайваня, могут вручную изменить каждую переменную
    me:\
    	:lang=zh_TW.Big5:\
    	:lc_all=zh_TW.Big:\
    	:lc_collate=zh_TW.Big5:\ 
    	:lc_ctype=zh_TW.Big5:\
    	:lc_messages=zh_TW.Big5:\
    	:lc_monetary=zh_TW.Big5:\
    	:lc_numeric=zh_TW.Big5:\
    	:lc_time=zh_TW.Big5:\
    	:charset=big5:\
    	:xmodifiers="@im=xcin": #Setting the XIM Input Server

    За подробностями обращайтесь к разделу Настройка на уровне администратора и login.conf(5).

    14.3.4.1.1.2 Настройка на уровне администратора

    Проверьте, что класс логина пользователя в /etc/login.conf задает нужный язык. Убедитесь, что эти настройки присутствуют в /etc/login.conf:

    language_name:accounts_title:\
    	:charset=MIME_charset:\
    	:lang=locale_name:\
    	:tc=default:

    Используя наш предыдущий пример с Latin-1, это должно выглядеть так:

    german:German Users Accounts:\
    	:charset=ISO-8859-1:\
    	:lang=de_DE.ISO8859-1:\
    	:tc=default:

    Изменение класса логина с помощью vipw(8)

    Используйте vipw для добавления новых пользователей и отредактируйте запись о пользователе, чтобы она была похожа на эту:

    user:password:1111:11:language:0:0:User Name:/home/user:/bin/sh

    Изменение класса логина с помощью adduser(8)

    Используйте adduser для добавления новых пользователей и сделайте следующее:

    • Установите defaultclass = язык в /etc/adduser.conf. Помните, что в этом случае вы должны задать default класс для всех пользователей других языков.

    • Другой способ заключается в задании класса логина каждый раз, когда adduser(8) попросит об этом:

      Enter login class: default []: 

    • Еще один способ - использовать следующее для каждого пользователя другого языка, которого вы хотите добавить:

      # adduser -class язык

    Изменение класса логина с помощью pw(8)

    Если для добавления новых пользователей вы используете утилиту pw(8), запускайте ее с такими параметрами:

    # pw useradd
    	    имя_пользователя -L язык

    14.3.4.1.2 Метод инициализационных файлов оболочки

    Note: Этот метод не рекомендуется, потому что он требует разных настроек для каждой оболочки. Вместо этого используйте Метод класса логина.

    Чтобы добавить локализацию и набор символов MIME, просто установите две переменные окружения, приведенные ниже, в инициализационные файлы оболочек /etc/profile и/или /etc/csh.login. Для примера мы используем немецкий язык:

    В /etc/profile:

    LANG=de_DE.ISO8859-1; export LANG
    MM_CHARSET=ISO-8859-1; export MM_CHARSET

    Или в /etc/csh.login:

    setenv LANG de_DE.ISO8859-1
    setenv MM_CHARSET ISO-8859-1

    Как вариант, вы можете добавить установки, приведенные выше в /usr/share/skel/dot.profile (соответствует установкам в /etc/profile выше), или /usr/share/skel/dot.login (соответствует установкам в /etc/csh.login выше).

    Для X11:

    В $HOME/.xinitrc:

    LANG=de_DE.ISO8859-1; export LANG

    Или:

    setenv LANG de_DE.ISO8859-1

    В зависимости от вашей оболочки (см. выше).

    14.3.5 Настройка консоли

    Для всех однобайтовых кодовых таблиц, укажите подходящие консольные шрифты в /etc/rc.conf для требуемого языка:

    font8x16=имя_шрифта
    font8x14=имя_шрифта
    font8x8=имя_шрифта

    The имя_шрифта берется из каталога /usr/share/syscons/fonts, без указания расширения .fnt.

    Убедитесь также в установке правильных значений keymap и screenmap для вашей однобайтовой кодовой таблицы через /stand/sysinstall. В sysinstall выберите Configure, затем Console. Или добавьте следующие строки в /etc/rc.conf:

    scrnmap=screenmap_name
    keymap=keymap_name
    keychange="fkey_number sequence"

    screenmap_name берется из каталога /usr/share/syscons/scrnmaps, без суффикса .scm. Screenmap с соответствующим шрифтом обычно используется в качестве обходного пути для расширения 8 бит до 9 бит в псевдографическую область VGA адаптера, например для удаления букв из этой области если используется 8-битный шрифт.

    Если даемон мыши moused включен добавлением в /etc/rc.conf следующей строки:

    moused_enable="YES"

    прочтите информацию о курсоре мыши в следующем параграфе.

    По умолчанию драйвер syscons(4) выделяет для курсора мыши в таблице символов диапазон 0xd0-0xd3. Если в вашем языке используется этот диапазон, переместите этот диапазон. В FreeBSD версий до 5.0, добавьте следующую строку в файл конфигурации ядра:

    options		SC_MOUSE_CHAR=0x03

    Для FreeBSD версий 4.4 и выше включите следующую строку в /etc/rc.conf:

    mousechar_start=3

    keymap_name берется из каталога /usr/share/syscons/keymaps, без расширения .kbd. Если вы не знаете какую таблицу использовать, запустите kbdmap(1) для тестирования таблицы без перезагрузки.

    keychange обычно требуется для сопоставления функциональных клавиш выбранному типу терминала, поскольку последовательности функциональных клавиш не могут быть определены в раскладке клавиатуры.

    Убедитесь также, что для всех записей ttyv* в /etc/ttys установлен подходящий тип терминала. Имеющиеся типы соответствуют следующим кодировкам:

    Кодовая таблицаТип терминала
    ISO-8859-1 or ISO-8859-15cons25l1
    ISO-8859-2cons25l2
    ISO-8859-7cons25l7
    KOI8-Rcons25r
    KOI8-Ucons25u
    CP437 (VGA default)cons25
    US-ASCIIcons25w

    Для расширенных кодировок, а также для многобайтовых кодировок, используйте порт FreeBSD из каталога /usr/ports/language. Некоторые порты выводят информацию на консоль, хотя для системы выглядят как последовательные псевдотерминалы, следовательно вы должны зарезервировать достаточное количество псевдотерминалов и для X11 и для последовательных псевдоконсолей. Вот неполный список приложений для использования этих кодировок в консоли:

    ЯзыкПриложение
    Традиционный китайский (BIG-5)chinese/big5con
    Японскийjapanese/ja-kon2-* or japanese/Mule_Wnn
    Корейскийkorean/ko-han

    14.3.6 Настройка X11

    Хотя X11 не является частью проекта FreeBSD, мы включили сюда некоторую информацию для пользователей FreeBSD. За детальной информацией обращайтесь к Веб сайту XFree86 или к сайту того сервера X11, который вы используете.

    В ~/.Xresources, вы можете внести дополнительные I18N настройки приложений (настройки шрифтов, меню и т.п.).

    14.3.6.1 Отображение шрифтов

    Установите сервер X11 TrueType® Common (x11-servers/XttXF86srv-common) и TrueType шрифты для используемого языка. После установки корректного значения locale меню, сообщения и т.д. должны появиться на соответствующем языке.

    14.3.6.2 Ввод не-англоязычных символов

    Протокол X11 Input Method (XIM) это новый стандарт для всех клиентов X11. Все приложения X11 должны быть написаны как XIM клиенты, получающие ввод с серверов XIM Input. Существует несколько XIM серверов, доступных для различных языков.

    14.3.7 Настройка принтера

    Некоторые однобайтовые кодовые таблицы обычно поддерживаются принтерами на аппаратном уровне. Расширенные, или мультибайтовые кодовые таблицы требуют дополнительной настройки. Мы рекомендуем использование apsfilter. Кроме того, вы можете преобразовать документ в формат PostScript® или PDF с помощью поддерживающих соответствующий язык программ.

    14.3.8 Ядро и файловые системы

    Файловая система FreeBSD (fast filesystem, FFS) поддерживает 8-битные символы, ее можно использовать с любой односимвольной кодовой таблицей (см. multibyte(3)), но кодовые таблицы не хранятся в файловой системе; т.е. ей ничего не известно о порядке расположения символов в кодовой таблице. Официально FFS пока не поддерживает расширенные или много символьные кодовые таблицы. Однако, для некоторых расширенных или многобайтовых кодировок есть неофициальные патчи, включающие их поддержку в FFS. Это всего лишь временные не переносимые решения или исправления кода и мы решили не включать их в дерево исходных текстов. Обращайтесь к сайтам по соответствующим языкам за дальнейшей информацией и патчами.

    Файловая система MS-DOS® в FreeBSD может быть настроена для поддержки перекодировки между MS-DOS, кодовыми таблицами Unicode и выбранной кодовой таблицей FreeBSD. Обращайтесь к mount_msdos(8) за подробностями.

    Этот, и другие документы, могут быть скачаны с ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

    По вопросам связанными с FreeBSD, прочитайте документацию прежде чем писать в <questions@FreeBSD.org>.
    По вопросам связанным с этой документацией, пишите <doc@FreeBSD.org>.
    По вопросам связанным с русским переводом документации, пишите <frdp@FreeBSD.org.ua>.


    Руководство FreeBSDPrevChapter 2 Установка FreeBSDNext

    2.4 Введение в Sysinstall

    Утилита sysinstall это программа установки, предоставляемая проектом FreeBSD. Это консольное приложение, разделенное на несколько меню и экранов, которые вы можете использовать для настройки и управления процессом установки.

    Меню sysinstall управляется клавишами навигации, Enter, пробелом, и другими. Подробное описание клавиш и их функций содержится в информации по использованию sysinstall.

    Для просмотра этой информации убедитесь, что выбраны пункт Usage и кнопка [Select], как показано на Figure 2-8, затем нажмите Enter.

    Будут показаны инструкции по использованию меню. После просмотра инструкций, нажмите Enterдля возврата в главное меню.

    Figure 2-8. Выбор Usage в главном меню Sysinstall

    2.4.1 Выбор меню документации (Doc)

    Из главного меню выберите клавишами навигации Doc и нажмите Enter.

    Figure 2-9. Выбор меню документации

    Будет отображено меню документации.

    Figure 2-10. Меню документации Sysinstall

    Рекомендуется прочитать предоставляемую документацию.

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

    Для возврата в главное меню выберите Exit с помощью клавиш навигации и нажмите Enter.

    2.4.2 Выбор меню раскладки клавиатуры (Keymap)

    Для изменения раскладки клавиатуры выберите из меню с помощью клавиш навигации Keymap и нажмите Enter. Это потребуется только при использовании нестандартной или не-US клавиатуры.

    Figure 2-11. Выбор меню раскладки клавиатуры

    Различные раскладки клавиатуры могут быть выбраны из меню с использованием клавиш навигации, затем следует нажать Space. Нажатие Space еще раз приведет к отмене выбора. Когда необходимые раскладки будут выбраны, перейдите на [ OK ] с помощью клавиш навигации и нажмите Enter.

    На экран выведена только часть списка. Нажав Tab, можно выбрать [ Cancel ], вернуться к раскладке по умолчанию и перейти к главному меню.

    Figure 2-12. Меню раскладки клавиатуры

    2.4.3 Параметры установки (Options)

    Выберите пункт Options и нажмите Enter.

    Figure 2-13. Выбор параметров установки

    Figure 2-14. Параметры Sysinstall

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

    Описание выбранного пункта будет появляться внизу экрана с синей подсветкой. Обратите внимание, что один из параметров -- Use Defaults, означает сброс всех параметров к значениям по умолчанию.

    Нажатие F1 отобразит справку по различным параметрам.

    Нажатием Q можно перейти к главному меню.

    2.4.4 Начало стандартной установки (Standart)

    Пункт Standard рекомендуется для новых пользователей UNIX® или FreeBSD. Используйте клавиши навигации для выбора пункта Standard, а затем нажмите Enter для запуска установки.

    Figure 2-15. Начало стандартной установки

    Этот, и другие документы, могут быть скачаны с ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

    По вопросам связанными с FreeBSD, прочитайте документацию прежде чем писать в <questions@FreeBSD.org>.
    По вопросам связанным с этой документацией, пишите <doc@FreeBSD.org>.
    По вопросам связанным с русским переводом документации, пишите <frdp@FreeBSD.org.ua>.


    Руководство FreeBSDPrevChapter 16 Музыка и ЗвукNext

    16.4 Воспроизведение видео

    Предоставлено Ross Lippert.

    Воспроизведение видео является очень новой и быстро развивающейся областью применения. Будьте терпеливы. Не всё будет работать так безпроблемно, как это было со звуком.

    Прежде, чем Вы начнёте, вы должны знать модель Вашей видеокарты и чипсет, который она использует. Хотя XFree86 поддерживает множество различных видеокарт, только их малая часть показывает хорошую скорость воспроизведения видео. Для того, чтобы получить список расширений, поддерживаемых X-сервером, который используется Вашей видеокартой, используйте команду xdpyinfo(1) во время работы X11.

    Неплохо также иметь небольшой файл MPEG, который бы использовался как тестовый файл для проверки различных проигрывателей и настроек. Так как некоторые проигрыватели DVD будут искать носитель DVD как /dev/dvd по умолчанию или быть жёстко настроены на него, возможно будет полезно сделать символические ссылки на правильные устройства:

    # ln -sf /dev/acd0c /dev/dvd
    # ln -sf /dev/racd0c /dev/rdvd

    Для FreeBSD 5.X, которая использует devfs(5) рекомендуется немного отличный набор ссылок:

    # ln -sf /dev/acd0c /dev/dvd
    # ln -sf /dev/acd0c /dev/rdvd

    Дополнительно, раскодирование DVD требует доступ к специальным функциям DVD-ROM, поэтому должен быть доступ на запись для устройств DVD.

    Некоторые из обсуждаемых портов полагаются на наличие некоторых параметров ядра для правильной сборки. Перед тем, как собирать порты, добавьте эти параметры в файл конфигурации ядра, пересоберите ядро и перезагрузите систему:

    option CPU_ENABLE_SSE
    option USER_LDT

    Для того, чтобы улучшить работу разделяемой памяти X11, рекомендуется увеличить значения некоторых переменных sysctl(8):

    kern.ipc.shmmax=67108864
    kern.ipc.shmall=32768

    16.4.1 Определение возможностей видео

    Существует несколько возможных путей отображения видео под X11. Что именно будет действительно работать во многом зависит от аппаратного обеспечения. Каждый из описанных методов будет иметь различное качество на разном аппаратном обеспечении. Во-вторых, воспроизведение видео в X11 это тема, которой уделяется достаточно много внимания последнее время и с каждой новой версией XFree86 могут наблюдаться значительные улучшения.

    Список наиболее используемых видеоинтерфейсов:

    1. X11: обычный вывод X11 с использованием разделяемой памяти.

    2. XVideo: расширение интерфейса X11, которое поддерживает видео в любом объекте X11.

    3. SDL: the Simple Directmedia Layer.

    4. DGA: the Direct Graphics Access -- Прямой Доступ для Графики.

    5. SVGAlib: низкоуровневый доступ к графике на консоли.

    16.4.1.1 XVideo

    XFree86 4.X включает в себя расширение, называющееся XVideo (также известное как Xvideo, Xv и xv), которое позволяет отображать видео прямо на объектах при помощи специального ускорения. Это расширение предоставляет очень хорошее качество воспроизведения даже на low-end машинах (например на моём ноутбуке с процессором PIII 400МГц). К сожалению, список видеокарт, которые поддерживают эту возможность ``прямо из коробки'' на данный момент включает в себя только:

    1. 3DFX Voodoo 3

    2. Intel i810 и i815

    3. некоторые видеокарты на чипсете S3 (такие как Savage/IX и Savage/MX)

    Если Вашей видеокарты нет в этом списке, ещё не следует расстраиваться. В XFree86 4.X появляются всё новые и новые возможности xv с каждой новой версией [1] Для того< чтобы проверить, работает ли это расширение, используйте команду xvinfo:

    % xvinfo

    XVideo поддерживается вашей видеокартой, если результат выглядит приблизительно так:

    X-Video Extension version 2.2
    screen #0
      Adaptor #0: "Savage Streams Engine"
        number of ports: 1
        port base: 43
        operations supported: PutImage 
        supported visuals:
          depth 16, visualID 0x22
          depth 16, visualID 0x23
        number of attributes: 5
          "XV_COLORKEY" (range 0 to 16777215)
                  client settable attribute
                  client gettable attribute (current value is 2110)
          "XV_BRIGHTNESS" (range -128 to 127)
                  client settable attribute
                  client gettable attribute (current value is 0)
          "XV_CONTRAST" (range 0 to 255)
                  client settable attribute
                  client gettable attribute (current value is 128)
          "XV_SATURATION" (range 0 to 255)
                  client settable attribute
                  client gettable attribute (current value is 128)
          "XV_HUE" (range -180 to 180)
                  client settable attribute
                  client gettable attribute (current value is 0)
        maximum XvImage size: 1024 x 1024
        Number of image formats: 7
          id: 0x32595559 (YUY2)
            guid: 59555932-0000-0010-8000-00aa00389b71
            bits per pixel: 16
            number of planes: 1
            type: YUV (packed)
          id: 0x32315659 (YV12)
            guid: 59563132-0000-0010-8000-00aa00389b71
            bits per pixel: 12
            number of planes: 3
            type: YUV (planar)
          id: 0x30323449 (I420)
            guid: 49343230-0000-0010-8000-00aa00389b71
            bits per pixel: 12
            number of planes: 3
            type: YUV (planar)
          id: 0x36315652 (RV16)
            guid: 52563135-0000-0000-0000-000000000000
            bits per pixel: 16
            number of planes: 1
            type: RGB (packed)
            depth: 0
            red, green, blue masks: 0x1f, 0x3e0, 0x7c00
          id: 0x35315652 (RV15)
            guid: 52563136-0000-0000-0000-000000000000
            bits per pixel: 16
            number of planes: 1
            type: RGB (packed)
            depth: 0
            red, green, blue masks: 0x1f, 0x7e0, 0xf800
          id: 0x31313259 (Y211)
            guid: 59323131-0000-0010-8000-00aa00389b71
            bits per pixel: 6
            number of planes: 3
            type: YUV (packed)
          id: 0x0
            guid: 00000000-0000-0000-0000-000000000000
            bits per pixel: 0
            number of planes: 0
            type: RGB (packed)
            depth: 1
            red, green, blue masks: 0x0, 0x0, 0x0

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

    Если результат выглядит так:

    X-Video Extension version 2.2
    screen #0
    no adaptors present

    то, возможно, XVideo не поддерживается для Вашей видеокарты.

    Если XVideo не поддерживается Вашей видеокартой, то это всего лишь означает, что будет сложнее получить приемлемые для воспроизведения видео вычислительные мощности. В зависимости от Вашей видеокарты и процессора, возможно, вы сможете получить удовлетворительный результат. Возможно, Вы должны будете прочитать о путях улучшения производительности здесь: Section 16.4.3.

    16.4.1.2 Simple Directmedia Layer

    SDL был задуман как уровень абстракции для разработки кросплатформенных приложений под Microsoft Windows, BeOS и Unix, позволяя им эффективно использовать звук и графику. SDL предоставляет низкоуровневые абстракции для аппаратного обеспечения, что, зачастую, может быть более эффективным чем интерфейс X11.

    SDL есть в Коллекции портов FreeBSD: devel/sdl12

    16.4.1.3 Прямой Доступ для Графики (DGA)

    DGA это расширение XFree86 которое позволяет программам напрямую изменять кадровый буфер (framebuffer) без участия X-сервера. Поскольку DGA основывается на низкоуровневом доступе к памяти, программы, которые используют его должны исполняться от пользователя root.

    Расширение DGA может быть протестировано при помощи dga(1). Когда dga запущена, она изменяет цвета на экране при каждом нажатии клавиш. Для того, чтобы выйти из неё, используйте q.

    16.4.2 Порты и пакеты для работы с видео

    Этот раздел обсуждает программное обеспечение для работы с видео, которое есть в Коллекции Портов FreeBSD. Воспроизведение видео является очень активной сферой разработок программного обеспечения и возможности различных приложений могут несколько отличаться от описанных здесь.

    Во-первых, важно помнить, что большая часть приложений для работы с видео, которые работают на FreeBSD, были разработаны как приложения Linux. Поэтому они являются экспериментальными и изобилуют линуксизмами, которые могут помешать работать им полноценно на FreeBSD.

    Под ``экспериментальностью'' я понимаю то, что вы должны ожидать, что в рекодировщиках, проигрывателях и расшифровщиках DVD есть достаточно большие ошибки либо проблемы взаимодействия с другими программами. Далее приводится короткий список таких проблем:

    1. Приложение не может воспроизвести файл, который создало другое приложение.

    2. Приложение не может воспроизвести файл, который создало само.

    3. Одно и то же приложение на разных машинах, скомпилированное на каждой машине специально для неё, воспроизводит один и тот же файл различно.

    4. Кажущийся тривиальным фильтр, например фильтр изменения размеров изображения, приводит к очень плохим ``артефактам'' из-за неправильной функции изменения размера.

    5. Приложение никогда не работает (оставляет core-файл).

    6. Документация не устанавливается вместе с портом и может быть найдена лишь на сайте или в каталоге PORTPATH/work/.

    Под ``линуксизмами'' подразумевается то, что существуют некоторые проблемы, связанные со способом реализации некоторых стандартных библиотек в дистрибутивах Linux, или некоторыми дополнительными возможностями ядра Linux, которые авторы приложений посчитали существующими везде, поскольку Linux это основная для них платформа разработки. Эти проблемы могут остаться незамеченными людьми, поддерживающими порт (порты), вследствие чего могут возникнуть проблемы, сходные с нижеперечисленными:

    1. Использование /proc/cpuinfo для того, чтобы определить характеристики процессора.

    2. Неправильное использование нитей (threads), которое может привести к зависанию программы при завершении вместо нормального выхода.

    3. Программного обеспечения ещё нет в Коллекции Портов FreeBSD, хотя оно обычно используется совместно с данным приложением.

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

    16.4.2.1 MPlayer

    MPlayer это недавно разработанный и быстро развивающийся проигрыватель видео. Задачами команды разработчиков MPlayer являются скорость и гибкость при работе на Linux и других Unix-системах. Проект был начал, когда его основатель стал сыт по горло плохой производительностью и качеством проигрывателей того времени. Некоторые могут сказать, что интерфейс был принесён в жертву рационализированному дизайну, но как только Вы привыкните к опциям командной строки MPlayer и его управлению с клавиатуры, всё будет хорошо.

    16.4.2.1.1 Компиляция MPlayer

    MPlayer находится в multimedia/mplayer. MPlayer производит различные тесты аппаратного обеспечения во время процесса компиляции, в результате чего полученные исполняемые модули не могут быть перенесены с одной системы на другую. Поэтому важно собирать его из портов, а не использовать бинарный пакет. Также, при сборке Вы можете указать различные установки при помощи параметров команды make.

    # cd /usr/ports/multimedia/mplayer
    # make
    You can enable additional compilation optimizations
    by defining WITH_OPTIMIZED_CFLAGS
    You can enable GTK GUI by defining WITH_GUI.
    You can enable DVD support by defining WITH_DVD.
    You can enable SVGALIB support by defining WITH_SVGALIB.
    You can enable VORBIS sound support by defining WITH_VORBIS.
    You can enable XAnim DLL support by defining WITH_XANIM.

    Если в Вашей системе установлен x11-toolkits/gtk12, Вы также можете включить поддержку GUI (графического интерфейса пользователя). В противном же случае оно того стоить не будет. Если вы собираетесь воспроизводить (возможно закодированные CSS) DVD при помощи MPlayer, Вам будет необходимо будет включить поддержку DVD [2]:

    # make WITH_DVD=yes WITH_SVGALIB=yes

    На время написания данного документа порт MPlayer'а собирает и устанавливает свою документацию в формате HTML и один исполняемый файл, mplayer. Также его можно заставить собрать кодировщик, mencoder, который является инструментом для перекодировки и конвертирования видео. Это можно сделать при помощи модификации Makefile. Также это, возможно, будет включено по умолчанию в последующих версиях порта.

    Документация к MPlayer очень информативна. Если читатель найдет информацию о аппаратном обеспечении для поддержки видео и интерфейсам недостаточной, то документация MPlayer будет очень исчерпывающей альтернативой. Вам обязательно нужно уделить время прочтению документации MPlayer, если Вам нужна информация о поддержке видео под Unix.

    16.4.2.1.2 Использование MPlayer

    Каждый пользователь MPlayer должен создать подкаталог .mplayer в своем домашнем каталоге. Для того, чтобы его создать, Вы можете выполнить следующие действия:

    % cd /usr/ports/multimedia/mplayer
    % make install-user

    Параметры для mplayer перечислены в страничке руководства mplayer. Для более подробного объяснения Вы можете обратиться к документации в формате HTML. В этом разделе мы покажем несколько самых распространённых случаев использования mplayer.

    Для того, чтобы воспроизвести файл, например testfile.avi через один из многих видеоинтерфейсов, используйте параметр -vo:

    % mplayer -vo xv testfile.avi
    % mplayer -vo sdl testfile.avi
    % mplayer -vo x11 testfile.avi
    # mplayer -vo dga testfile.avi
    # mplayer -vo 'sdl:dga' testfile.avi

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

    Для того, чтобы воспроизвести DVD, замените testfile.avi на -dvd <N> DEVICE, где <N> является номером дорожки, с которой следует начать воспроизведение и DEVICE файл устройства привода DVD. Например, для того, чтобы воспроизвести дорожку 3 с /dev/dvd:

    # mplayer -vo dga -dvd 2 /dev/dvd

    Для того, чтобы остановить, приостановить или продолжить воспроизведение, обратитесь к привязке клавиш, информация о которой выводится посредством запуска mplayer -h, либо прочитав страничку документации.

    Дополнительные достаточно важные параметры воспроизведения: -fs -zoom, которые включают полноэкранный режим и -framedrop, который улучшает производительность на медленных системах.

    Для того, чтобы командная строка запуска mplayer не становилась слишком большой, пользователь может создать файл .mplayer/config и установить параметры по умолчанию там:

    vo=xv
    fs=yes
    zoom=yes

    Также mplayer может быть использован для копирования дорожек DVD в .vob файлы. Для того, чтобы скопировать вторую дорожку DVD необходимо выполнить следующую команду:

    # mplayer -dumpstream -dumpfile out.vob -dvd 2 /dev/dvd

    Полученный файл, out.vob, будет представлять собой MPEG, с которым можно производить различные действия при помощи программ, которые будут описаны далее в этом разделе.

    16.4.2.1.3 mencoder

    Если Вы установили mencoder, имейте в виду, что он всё ещё достаточно экспериментален.

    Для того, чтобы использовать mencoder, было бы неплохо ближе ознакомится с его параметрами используя документацию в формате HTML. Также существует страничка руководства mplayer, но она не очень полезна без HTML-документации. Существует бесчисленное множество способов улучшения качества, снижения битрейта и изменения формата; и некоторые из этих приёмов могут влиять на производительность. Ниже приведено несколько примеров использования mencoder. Во-первых, простое копирование:

    % mencoder input.avi -oac copy -ovc copy -o output.avi

    Легко привести примеры, в которых полученный файл невозможно будет воспроизвести даже mplayer. Поэтому, если вы хотите скопировать в файл, лучше использовать только параметр -dumpfile mplayer.

    Для того, чтобы преобразовать input.avi в MPEG4 со звуком в формате MPEG Audio Layer 3 (MP3) (требуется audio/lame):

    % mencoder input.avi -oac mp3lame -lameopts br=192 \
         -ovc lavc -lavcopts vcodec=mpeg4:vhq -o output.avi

    Эта команда создаст файл, воспроизводимый mplayer и xine.

    input.avi может быть заменён на -dvd 1 /dev/dvd и mplayer, запущенный от пользователя root, будет преобразовывать дорожку DVD напрямую. Так как первый раз, скорее всего, Вы будете недовольны полученными результатами, Всё же рекомендуется, чтобы Вы копировали дорожку в файл и работали потом с файлом.

    16.4.2.2 Проигрыватель хine

    xine - это большой проект, в задачи которого входит не только создание решения для видео все-в-одном, но и создание базовой библиотеки с возможностью расширения возможностей путем использования плагинов (расширений). Поставляется он как в виде порта, так и в виде пакета, multimedia/xine.

    И очень приятно, что то, что описано выше, очень близко к истине. xine все еще несовершенен, но, все-таки это хорошее начало. На практике xine требует либо быстрого процессора с быстрой видеокартой или поддержку расширения XVideo. Графический интерфейс можно использовать, но он все еще немного нескладен.

    На время написания этого документа в поставке xine не существовало модуля ввода, который бы мог воспроизводить DVD, закодированные по алгоритму CSS. Существуют сборки, в которых есть такой модуль, но ни одна из них не входи в Коллекцию Портов FreeBSD.

    По сравнению с MPlayer, xine является более дружелюбным к пользователю, но, в то же время, скрывает более тонкие настройки и управление от пользователя. Также xine может показывать худшую производительность на не-Xvideo интерфейсах, но имеет лучшие альтернативы. Документация xine'а настоятельно рекомендуют, чтобы Вы использовали видеокарту, которая поддерживает Xvideo.

    xine можно запустить при помощи следующей команды:

    % xine

    Для того, чтобы открыть файл, можно воспользоваться меню, либо указать имя файла в командной строке без запуска графического интерфейса:

    % xine -g -p mymovie.avi

    16.4.2.3 Утилиты transcode

    Приложение transcode не является проигрывателем. Это набор инструментов для преобразования .avi и .mpg файлов. При помощи transcode можно объединять видеофайлы, исправлять поврежденные файлы, использовать инструменты командной строки для работы с потоками ввода/вывода stdin/stdout.

    Так же, как и MPlayer, transcode является очень экспериментальным программным продуктом, который необходимо собирать из порта graphics/transcode. Этот порт имеет огромное количество параметров для команды make при сборке. Я бы рекомендовал:

    # make WITH_LIBMPEG2=yes

    Если Вы планируете установить multimedia/avifile, то добавьте параметр WITH_AVIFILE в строку запуска make как показано ниже:

    # make WITH_AVIFILE=yes WITH_LIBMPEG2=yes

    Ниже приводятся два примера использования transcode для преобразования видео, в результате которого изменяется размер изображения. Первый пример преобразовывает данные openDIVX AVI файла, в то время как второй использует более переносимый формат MPEG.

    % transcode -i input.vob -x vob -V -Z 320x240 \
    -y opendivx -N 0x55 -o output.avi
    % transcode -i input.vob -x vob -V -Z 320x240 \
    -y mpeg -N 0x55 -o output.tmp
    % tcmplex -o output.mpg -i output.tmp.m1v -p output.tmp.mpa -m 1

    Существует страничка руководства для transcode, но для различных утилит tc* (таких как tcmplex), которые тоже устанавливаются в систему вместе с transcode, есть только короткий вывод параметра -h.

    По сравнению с mencoder, transcode работает заметно медленнее, но имеет больше шансов создать более переносимый файл, который можно будет воспроизвести на большем количестве систем. Например я могу воспроизводить файлы MPEG, созданные при помощи transcode, на старых версиях Windows Media Player и QuickTime.

    16.4.3 Дальнейшее чтение

    Я не сомневаюсь, что в течение года многое из того, что описано в этом разделе устареет. Воспроизведение видео станет менее проблематичным и будет существовать порт в Коллекции Портов FreeBSD, который превратит FreeBSD в мультимедиа центр, воспроизводящий DVD, PVR и виртуальную аудио/видео студию. Но, до тех пор пока этот день настанет, те, кто желает получить максимум от аудио/видео возможностей FreeBSD, должны будут собирать необходимые знания из нескольких списков часто задаваемых вопросов и обучающих статей, а также использовать различные приложения.

    Этот раздел существует для того, чтобы читатель мог получить некоторое количество ссылок на различные ресурсы, в случае, если эта глава не содержала достаточное количество сведений.

    Документация MPlayer очень содержательна в техническом плане. Возможно, эти документы должны использоваться любым человеком, желающим получить высокий уровень знаний о видео на Unix системах. Список рассылки MPlayer враждебен для любого, кто не потрудился прочитать документацию, так что, если у вас есть желание сообщать о найденных ошибках, прочитайте вначале документацию.

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

    Наконец, существует несколько многообещающих приложений, которые читатель может испробовать:

    Notes

    [1]

    nVidia всё ещё не предоставила спецификации поддержки XVideo в их популярных видеокартах команде XFree86. Обычно эти видеокарты показывают хорошую производительность при работе с XFree86. Пройдет ещё некоторое время, пока XFree86 будет полностью поддерживать XVideo на этих картах.

    [2]

    Нелегальное воспроизведение DVD является серьёзным преступлением в некоторых странах. Проверьте местные законы перед тем как включать данную установку

    Этот, и другие документы, могут быть скачаны с ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

    По вопросам связанными с FreeBSD, прочитайте документацию прежде чем писать в <questions@FreeBSD.org>.
    По вопросам связанным с этой документацией, пишите <doc@FreeBSD.org>.
    По вопросам связанным с русским переводом документации, пишите <frdp@FreeBSD.org.ua>.


    Руководство FreeBSDPrevChapter 13 Менеджер дискового пространства VinumNext

    13.3 Ограниченная пропускная способность

    Современным системам часто необходим одновременный доступ ко многим данным. В частности, крупный FTP или HTTP-сервер может обслуживать тысячи одновременных соединений, поступающих по нескольким 100 Mbit/s каналам во внешний мир, что ощутимо превышает скорость передачи данных большинства дисков.

    Современные диски могут передавать данные со скоростями до 70 MB/s; однако, эти цифры труднодостижимы в случае, когда к диску обращается большое число независимых процессов, каждый из которых может получить лишь часть этого значения. Интересным будет взглянуть на проблему с точки зрения дисковой подсистемы: важным параметром в нашем случае будет загрузка подсистемы фактом передачи фрагмента данных, а именно время, в течение которого диски, участвующие в передаче, будут заняты.

    При любом запросе диск сначала должен спозиционировать головки, дождаться подхода к головкам первого сектора из необходимых, и лишь затем выполнить обращение. Данная операция может рассматриваться как атомарная: нет никакого смысла ее прерывать.

    Рассмотрим типичный запрос на передачу 10 kB информации. Современные высокопроизводительные диски подводят головки в нужную позицию в среднем за 3.5 миллисекунды. Самые быстрые диски вращаются со скоростью 15000 об/мин, так что среднее время на подход первого сектора к головке (rotational latency, половина времени одного оборота) составит еще 2 миллисекунды. При линейной скорости передачи данных в 70 MB/s собственно чтение/запись займет около 150 микросекунд -- исчезающе мало по сравнению с временем позиционирования. В нашем случае, эффективная скорость передачи данных падает почти до 1 MB/s и, очевидно, сильно зависит от размера передаваемого блока.

    Традиционным и очевидным решением этой проблемы является принцип ``больше шпинделей'': вместо использования одного большого диска можно применить несколько дисков меньшего размера. Диски позиционируют головки и передают данные независимо, так что эффективная пропускная способность возрастает примерно во столько раз, сколько дисков мы применяем.

    Точная цифра, разумеется, будет несколько ниже: диски могут передавать данные параллельно, но у нас нет средства обеспечить строго равномерное распределение нагрузки по всем дискам. Нагрузка на один диск неизбежно будет больше чем на другой.

    Равномерность распределения нагрузки на диски серьезно зависит от способа распределения по ним данных. В терминах дальнейшего обсуждения, будет удобно представить пространство хранения набором большого количества секторов с данными, которые адресуются по номеру, подобно страницам в книге. Наиболее очевидным методом будет поделить виртуальный диск на группы расположенных последовательно секторов размером с физический диск (которые будут подобны разделам книги). Этот метод называется конкатенацией или сцеплением (concatenation); его преимуществом является то, что он не налагает никаких ограничений на размеры применяемых дисков. Конкатенация эффективна, если нагрузка на дисковое пространство распределена равномерно. В случае концентрации нагрузки в малой области диска увеличение производительности не будет заметно. Организация секторов на сцепленных единицах хранения показана на Figure 13-1.

    Figure 13-1. Организация сцепленных дисков

    Альтернативным подходом будет разделение адресного пространства на компоненты одного, сравнительно небольшого размера, и расположение их последовательно на разных устройствах. Например, первая группа из 256 секторов будет расположены на первом физическом диске, вторая -- на следующем и т.д. n+1-я группа попадает на первый диск вслед за первой. Такое расположение называется перемежающимся (striping) или RAID-0. [1]. Перемежение требует дополнительных усилий для нахождения нужного блока данных и может приводить к дополнительным нагрузкам на подсистемы ввода-вывода, если передаваемый блок пересекает границу stripe (тем самым попадая на разные диски), зато обеспечивает более равномерное распределение нагрузки по физическим дискам. Распределение блоков по физическим дискам в случае striping иллюстрируется Figure 13-2.

    Figure 13-2. Организация с перемежением

    Notes

    [1]

    RAID -- сокращение от термина Redundant Array of Inexpensive Disks (массив недорогих дисков с резервированием); различные виды RAID предоставляют разные формы защиты от сбоев. RAID-0, вообще говоря, не является RAID, поскольку не обеспечивает резервирования.

    Этот, и другие документы, могут быть скачаны с ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

    По вопросам связанными с FreeBSD, прочитайте документацию прежде чем писать в <questions@FreeBSD.org>.
    По вопросам связанным с этой документацией, пишите <doc@FreeBSD.org>.
    По вопросам связанным с русским переводом документации, пишите <frdp@FreeBSD.org.ua>.


    Руководство FreeBSDPrevChapter 13 Менеджер дискового пространства VinumNext

    13.8 Создание конфигурации Vinum

    Стандартное (GENERIC) ядро FreeBSD не включает Vinum. Хотя и можно собрать специальное ядро с включенной поддержкой Vinum, этот вариант не рекомендуется. Обычный способ активизации Vinum -- загрузка модуля для ядра (kld). При этом, явно использовать команду kldload(8) нет необходимости: при старте утилита vinum(8) проверит наличие поддержки Vinum в ядре и при необходимости загрузит модуль автоматически.

    13.8.1 Активация

    Vinum хранит конфигурационную информацию на дисковых разделах в той же форме, что используется в файлах конфигурации при создании объектов. Впрочем, в них применяются некоторые ключевые слова, не разрешенные в файлах конфигурации. Например, хранимая на диске база может выглядеть так:

    volume myvol state up
    volume bigraid state down
    plex name myvol.p0 state up org concat vol myvol
    plex name myvol.p1 state up org concat vol myvol
    plex name myvol.p2 state init org striped 512b vol myvol
    plex name bigraid.p0 state initializing org raid5 512b vol bigraid
    sd name myvol.p0.s0 drive a plex myvol.p0 state up len 1048576b driveoffset 265b plexoffset 0b
    sd name myvol.p0.s1 drive b plex myvol.p0 state up len 1048576b driveoffset 265b plexoffset 1048576b
    sd name myvol.p1.s0 drive c plex myvol.p1 state up len 1048576b driveoffset 265b plexoffset 0b
    sd name myvol.p1.s1 drive d plex myvol.p1 state up len 1048576b driveoffset 265b plexoffset 1048576b
    sd name myvol.p2.s0 drive a plex myvol.p2 state init len 524288b driveoffset 1048841b plexoffset 0b
    sd name myvol.p2.s1 drive b plex myvol.p2 state init len 524288b driveoffset 1048841b plexoffset 524288b
    sd name myvol.p2.s2 drive c plex myvol.p2 state init len 524288b driveoffset 1048841b plexoffset 1048576b
    sd name myvol.p2.s3 drive d plex myvol.p2 state init len 524288b driveoffset 1048841b plexoffset 1572864b
    sd name bigraid.p0.s0 drive a plex bigraid.p0 state initializing len 4194304b driveoff set 1573129b plexoffset 0b
    sd name bigraid.p0.s1 drive b plex bigraid.p0 state initializing len 4194304b driveoff set 1573129b plexoffset 4194304b
    sd name bigraid.p0.s2 drive c plex bigraid.p0 state initializing len 4194304b driveoff set 1573129b plexoffset 8388608b
    sd name bigraid.p0.s3 drive d plex bigraid.p0 state initializing len 4194304b driveoff set 1573129b plexoffset 12582912b
    sd name bigraid.p0.s4 drive e plex bigraid.p0 state initializing len 4194304b driveoff set 1573129b plexoffset 16777216b

    Видно, что каждый объект имеет явно описанное имя, а поддиски еще и явное положение на приводе (и то и другое может, хотя это и не рекомендуется, устанавливаться пользователем). Помимо этого, для каждого объекта хранится его состояние (и установка состояния напрямую пользователю недоступна). Vinum не хранит в конфигурационных базах информацию о приводах: она создается при сканировании дисковых разделов, помеченных как Vinum. Это дает возможность Vinum правильно идентифицировать диски при смене имени устройства.

    13.8.1.1 Автоматическая активация

    Для автоматического старта Vinum при загрузке системы добавьте следующую строку в файл конфигурации системы /etc/rc.conf:

    start_vinum="YES"		# set to YES to start vinum

    Если в Вашей системе нет файла /etc/rc.conf, создайте его с таким содержимым. Данная строка вызовет активацию kld модуля Vinum при загрузке, а также старт всех объектов, упомянутых в конфигурации Vinum. Активация Vinum происходит до монтирования файловых систем, так что возможны автоматическая проверка (fsck(8)) и монтирование файловых систем на томах Vinum.

    При старте с помощью команды vinum start, Vinum читает базы конфигурации с одного из приводов. В нормальной ситуации все приводы содержат идентичную информацию о конфигурации, так что не имеет значения, какой именно диск будет читаться. В случае краха Vinum определяет, какая копия является наиболее свежей, в дальнейшем использует ее, а также обновляет ее на оставшихся приводах.

    Этот, и другие документы, могут быть скачаны с ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

    По вопросам связанными с FreeBSD, прочитайте документацию прежде чем писать в <questions@FreeBSD.org>.
    По вопросам связанным с этой документацией, пишите <doc@FreeBSD.org>.
    По вопросам связанным с русским переводом документации, пишите <frdp@FreeBSD.org.ua>.


    Руководство FreeBSDPrevChapter 13 Менеджер дискового пространства VinumNext

    13.4 Целостность данных

    Наконец, слабым местом современных дисков является их ограниченная надежность. Несмотря на то, что за последние несколько лет она ощутимо выросла, из всех компонентов сервера отказ дисков наиболее вероятен. Отказ может привести к катастрофическим результатам: замена отказавшего диска и восстановление данных может занять несколько дней.

    Традиционным путем решения проблемы надежности является зеркалирование (mirroring), обеспечивающее хранение всей информации в двух копиях на различных физических носителях. С момента изобретения аббревиатуры RAID эту технику также называют RAID уровня 1 или просто RAID-1. Любой запрос на запись в таком томе приводит к записи в оба подтома, чтение может производиться из любой половины, так что данные остаются доступны в случае отказа одного из дисков.

    Зеркалирование имеет два слабых места:

    Альтернативным решением является хранение контрольных сумм (четности), реализованное в RAID уровней 2, 3, 4 и 5. Наиболее интересен RAID-5. В реализации Vinum, это вариант организации тома с перемежением, при котором один из блоков в страйпе выделяется для хранения четности остальных n-1 блоков. Как требует спецификация RAID-5, положение блока четности меняется от страйпа к страйпу.

    Figure 13-3. Организация RAID-5

    По сравнению с зеркалированием преимуществом RAID-5 является гораздо меньшее требование к объему дисков. Скорость чтения сравнима с чтением в случае томов с перемежением, а вот запись происходит ощутимо медленнее (примерно вчетверо медленнее чтения). При отказе одного из дисков массив продолжает работать в "деградировавшем" режиме: запросы на чтение с оставшихся дисков производятся обычным образом, а блоки с отказавшего диска перевычисляются из данных остальных блоков страйпа.

    Этот, и другие документы, могут быть скачаны с ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

    По вопросам связанными с FreeBSD, прочитайте документацию прежде чем писать в <questions@FreeBSD.org>.
    По вопросам связанным с этой документацией, пишите <doc@FreeBSD.org>.
    По вопросам связанным с русским переводом документации, пишите <frdp@FreeBSD.org.ua>.


    Руководство FreeBSDPrevChapter 13 Менеджер дискового пространства VinumNext

    13.6 Несколько примеров

    Vinum ведет базу данных конфигурации, в которой описаны все объекты Vinum в отдельной системе. Начальная конфигурация создается пользователем при помощи системной утилиты vinum(8) из одного или нескольких конфигурационных файлов. Копия конфигурации хранится в начале каждого дискового раздела (привода) Vinum. Все копии обновляются при изменении состояния томов, поэтому после перезапуска состояние объектов Vinum восстанавливается.

    13.6.1 Конфигурационный файл

    Конфигурационный файл описывает объекты Vinum. Описание простого тома может быть таким:

        drive a device /dev/da3h
        volume myvol
          plex org concat
            sd length 512m drive a

    Здесь описываются четыре объекта Vinum:

    В результате обработки такого конфигурационного файла vinum(8) выдаст нам следующее:

          # vinum -> create config1
          Configuration summary
          Drives:         1 (4 configured)
          Volumes:        1 (4 configured)
          Plexes:         1 (8 configured)
          Subdisks:       1 (16 configured)
    
    	D a                     State: up       Device /dev/da3h        Avail: 2061/2573 MB (80%)
    
    	V myvol                 State: up       Plexes:       1 Size:        512 MB
    
    	P myvol.p0            C State: up       Subdisks:     1 Size:        512 MB
    
    	S myvol.p0.s0           State: up       PO:        0  B Size:        512 MB

    На этом кратком листинге показан формат вывода vinum(8). Графически созданный нами том представлен на Figure 13-4.

    Figure 13-4. Простой том Vinum

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

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

    13.6.2 Повышаем надежность: зеркалирование

    Надежность тома может быть повышена при помощи зеркалирования. Планируя зеркалированный том, важно не забыть о том, чтобы поддиски каждого набора располагались на разных физических дисках, чтобы отказ одного из них не привел к выходу из строя более чем одного набора. Вот конфигурация, определяющая зеркалированный том:

    	drive b device /dev/da4h
    	volume mirror
          plex org concat
            sd length 512m drive a
    	  plex org concat
    	    sd length 512m drive b

    Как мы видим, нет необходимости вновь описывать привод a, поскольку Vinum сохраняет состояние уже сконфигурированных объектов. После обработки этих определений конфигурация будет выглядеть так:

    	Drives:         2 (4 configured)
    	Volumes:        2 (4 configured)
    	Plexes:         3 (8 configured)
    	Subdisks:       3 (16 configured)
    
    	D a                     State: up       Device /dev/da3h        Avail: 1549/2573 MB (60%)
    	D b                     State: up       Device /dev/da4h        Avail: 2061/2573 MB (80%)
    
        V myvol                 State: up       Plexes:       1 Size:        512 MB
        V mirror                State: up       Plexes:       2 Size:        512 MB
    
        P myvol.p0            C State: up       Subdisks:     1 Size:        512 MB
        P mirror.p0           C State: up       Subdisks:     1 Size:        512 MB
        P mirror.p1           C State: initializing     Subdisks:     1 Size:        512 MB
    
        S myvol.p0.s0           State: up       PO:        0  B Size:        512 MB
    	S mirror.p0.s0          State: up       PO:        0  B Size:        512 MB
    	S mirror.p1.s0          State: empty    PO:        0  B Size:        512 MB

    Figure 13-5 иллюстрирует структуру полученного тома.

    Figure 13-5. Зеркалированный том Vinum

    В данном примере каждый набор содержит все 512 MB адресного пространства тома. Как и в предыдущем случае, каждый набор состоит из одного поддиска.

    13.6.3 Оптимизируем производительность

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

    	drive c device /dev/da5h
    	drive d device /dev/da6h
    	volume stripe
    	plex org striped 512k
    	  sd length 128m drive a
    	  sd length 128m drive b
    	  sd length 128m drive c
    	  sd length 128m drive d

    Как и ранее, нет необходимости переопределять уже сконфигурированные приводы. Общий вид базы конфигурации Vinum после создания нового тома будет таким:

    	Drives:         4 (4 configured)
    	Volumes:        3 (4 configured)
    	Plexes:         4 (8 configured)
    	Subdisks:       7 (16 configured)
    
        D a                     State: up       Device /dev/da3h        Avail: 1421/2573 MB (55%)
        D b                     State: up       Device /dev/da4h        Avail: 1933/2573 MB (75%)
        D c                     State: up       Device /dev/da5h        Avail: 2445/2573 MB (95%)
        D d                     State: up       Device /dev/da6h        Avail: 2445/2573 MB (95%)
    
        V myvol                 State: up       Plexes:       1 Size:        512 MB
        V mirror                State: up       Plexes:       2 Size:        512 MB
        V striped               State: up       Plexes:       1 Size:        512 MB
    
        P myvol.p0            C State: up       Subdisks:     1 Size:        512 MB
        P mirror.p0           C State: up       Subdisks:     1 Size:        512 MB
        P mirror.p1           C State: initializing     Subdisks:     1 Size:        512 MB
        P striped.p1            State: up       Subdisks:     1 Size:        512 MB
    
        S myvol.p0.s0           State: up       PO:        0  B Size:        512 MB
        S mirror.p0.s0          State: up       PO:        0  B Size:        512 MB
        S mirror.p1.s0          State: empty    PO:        0  B Size:        512 MB
        S striped.p0.s0         State: up       PO:        0  B Size:        128 MB
        S striped.p0.s1         State: up       PO:      512 kB Size:        128 MB
        S striped.p0.s2         State: up       PO:     1024 kB Size:        128 MB
        S striped.p0.s3         State: up       PO:     1536 kB Size:        128 MB

    Figure 13-6. Том с перемежением

    Новосозданный том представлен на Figure 13-6. Плотность заштрихованных участков показывает расположение страйпов в адресном пространстве набора (от светлых к темным).

    13.6.4 Отказоустойчивость и производительность одновременно

    При наличии достаточного количества дисков можно создать том, сочетающий повышенную отказоустойчивость и высокую производительность по сравнению со стандартными дисковыми разделами UNIX®. Типичная конфигурация может быть такой:

    	volume raid10
          plex org striped 512k
            sd length 102480k drive a
            sd length 102480k drive b
            sd length 102480k drive c
            sd length 102480k drive d
            sd length 102480k drive e
          plex org striped 512k
            sd length 102480k drive c
            sd length 102480k drive d
            sd length 102480k drive e
            sd length 102480k drive a
            sd length 102480k drive b

    Как Вы можете заметить, поддиски второго набора смещены на два привода относительно поддисков первого. В результате даже при запросе на запись, пересекающем границы страйпа, не возникнет двух обращений к одному физическому диску.

    Figure 13-7 отражает структуру нового тома.

    Figure 13-7. Зеркалированный том с перемежением

    Этот, и другие документы, могут быть скачаны с ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

    По вопросам связанными с FreeBSD, прочитайте документацию прежде чем писать в <questions@FreeBSD.org>.
    По вопросам связанным с этой документацией, пишите <doc@FreeBSD.org>.
    По вопросам связанным с русским переводом документации, пишите <frdp@FreeBSD.org.ua>.


    Руководство FreeBSDPrevChapter 13 Менеджер дискового пространства VinumNext

    13.2 Диски слишком малы

    Изначально написано Greg Lehey.

    Vinum (произносится Винум, с ударением на первом слоге) -- так называемый Менеджер дисковых томов -- представляет собой виртуальный дисковый драйвер, призванный решить три вышеописанные проблемы. Взглянем на них более подробно. Предлагаются (и реализованы) следующие пути:

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

    Этот, и другие документы, могут быть скачаны с ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

    По вопросам связанными с FreeBSD, прочитайте документацию прежде чем писать в <questions@FreeBSD.org>.
    По вопросам связанным с этой документацией, пишите <doc@FreeBSD.org>.
    По вопросам связанным с русским переводом документации, пишите <frdp@FreeBSD.org.ua>.


    Руководство FreeBSDPrevChapter 13 Менеджер дискового пространства VinumNext

    13.7 Правила именования объектов

    Как уже было описано, Vinum автоматически именует создаваемые наборы и поддиски, хотя эти имена и могут быть переопределены. На самом деле, мы не рекомендовали бы переопределять стандартные имена: опыт с дисковым менеджером VERITAS показал, что гибкость в именовании объектов не дает ощутимого преимущества, а запутать пользователя может.

    Имена объектов могут состоять из любых непробельных символов. Впрочем, рекомендуем ограничиться буквами, цифрами и подчеркиваниями. Имена томов, наборов и поддисков могут быть до 64 символов длиной; максимальная длина имени привода -- 32 символа.

    Для объектов Vinum в иерархии /dev/vinum создаются файлы устройств. Приведенный выше пример конфигурации создаст следующий набор устройств:

    Например, для конфигурации, описываемой как

    	drive drive1 device /dev/sd1h
    	drive drive2 device /dev/sd2h
    	drive drive3 device /dev/sd3h
    	drive drive4 device /dev/sd4h
        volume s64 setupstate
          plex org striped 64k
            sd length 100m drive drive1
            sd length 100m drive drive2
            sd length 100m drive drive3
            sd length 100m drive drive4

    после обработки vinum(8), созданный набор устройств в каталоге /dev/vinum будет таким:

    	brwx------  1 root  wheel   25, 0x40000001 Apr 13 16:46 Control
    	brwx------  1 root  wheel   25, 0x40000002 Apr 13 16:46 control
    	brwx------  1 root  wheel   25, 0x40000000 Apr 13 16:46 controld
    	drwxr-xr-x  2 root  wheel       512 Apr 13 16:46 drive
    	drwxr-xr-x  2 root  wheel       512 Apr 13 16:46 plex
    	crwxr-xr--  1 root  wheel   91,   2 Apr 13 16:46 rs64
    	drwxr-xr-x  2 root  wheel       512 Apr 13 16:46 rsd
    	drwxr-xr-x  2 root  wheel       512 Apr 13 16:46 rvol
    	brwxr-xr--  1 root  wheel   25,   2 Apr 13 16:46 s64
    	drwxr-xr-x  2 root  wheel       512 Apr 13 16:46 sd
    	drwxr-xr-x  3 root  wheel       512 Apr 13 16:46 vol
    
    	/dev/vinum/drive:
        total 0
        lrwxr-xr-x  1 root  wheel  9 Apr 13 16:46 drive1 -> /dev/sd1h
        lrwxr-xr-x  1 root  wheel  9 Apr 13 16:46 drive2 -> /dev/sd2h
        lrwxr-xr-x  1 root  wheel  9 Apr 13 16:46 drive3 -> /dev/sd3h
        lrwxr-xr-x  1 root  wheel  9 Apr 13 16:46 drive4 -> /dev/sd4h
    
        /dev/vinum/plex:
        total 0
        brwxr-xr--  1 root  wheel   25, 0x10000002 Apr 13 16:46 s64.p0
    
        /dev/vinum/rsd:
        total 0
        crwxr-xr--  1 root  wheel   91, 0x20000002 Apr 13 16:46 s64.p0.s0
        crwxr-xr--  1 root  wheel   91, 0x20100002 Apr 13 16:46 s64.p0.s1
        crwxr-xr--  1 root  wheel   91, 0x20200002 Apr 13 16:46 s64.p0.s2
        crwxr-xr--  1 root  wheel   91, 0x20300002 Apr 13 16:46 s64.p0.s3
    
        /dev/vinum/rvol:
        total 0
        crwxr-xr--  1 root  wheel   91,   2 Apr 13 16:46 s64
    
        /dev/vinum/sd:
        total 0
        brwxr-xr--  1 root  wheel   25, 0x20000002 Apr 13 16:46 s64.p0.s0
        brwxr-xr--  1 root  wheel   25, 0x20100002 Apr 13 16:46 s64.p0.s1
        brwxr-xr--  1 root  wheel   25, 0x20200002 Apr 13 16:46 s64.p0.s2
        brwxr-xr--  1 root  wheel   25, 0x20300002 Apr 13 16:46 s64.p0.s3
    
        /dev/vinum/vol:
        total 1
        brwxr-xr--  1 root  wheel   25,   2 Apr 13 16:46 s64
        drwxr-xr-x  3 root  wheel       512 Apr 13 16:46 s64.plex
    
        /dev/vinum/vol/s64.plex:
        total 1
        brwxr-xr--  1 root  wheel   25, 0x10000002 Apr 13 16:46 s64.p0
        drwxr-xr-x  2 root  wheel       512 Apr 13 16:46 s64.p0.sd
    
        /dev/vinum/vol/s64.plex/s64.p0.sd:
        total 0
        brwxr-xr--  1 root  wheel   25, 0x20000002 Apr 13 16:46 s64.p0.s0
        brwxr-xr--  1 root  wheel   25, 0x20100002 Apr 13 16:46 s64.p0.s1
        brwxr-xr--  1 root  wheel   25, 0x20200002 Apr 13 16:46 s64.p0.s2
        brwxr-xr--  1 root  wheel   25, 0x20300002 Apr 13 16:46 s64.p0.s3

    Заметим, что, несмотря на то что наборы и поддиски не рекомендуется называть каким-либо специальным образом, приводы Vinum должны быть поименованы. Именование позволяет отвязать приводы от физических устройств, и при этом обеспечить их автоматическое распознавание. Имена приводов могут достигать длины в 32 символа.

    13.7.1 Создание файловых систем

    Тома с точки зрения системы аналогичны дискам, за одним малым исключением: в отличие от дисков UNIX®, тома Vinum не содержат таблиц разделов. В результате потребовалось модифицировать некоторые утилиты работы с дисками, в первую очередь newfs(8), которая ранее использовала последний символ имени тома для определения идентификатора раздела. Например, дисковое устройство может именоваться /dev/ad0a -- первый раздел (a) первого (0) IDE-диска (ad) -- или /dev/da2h -- восьмой раздел (h) третьего (2) диска SCSI (da). Том Vinum может называться, например, /dev/vinum/concat -- как легко видеть, имя тома никак не связано с именем раздела.

    Обычно newfs(8) пытается интерпретировать имя раздела и сообщает об ошибке при невозможности такой интерпретации:

    # newfs /dev/vinum/concat
    newfs: /dev/vinum/concat: can't figure out file system partition

    Note: Дальнейшее относится к версиям FreeBSD до 5.0:

    Для создания файловых систем на томе Vinum следует использовать опцию newfs(8) -v:

    # newfs -v /dev/vinum/concat

    Этот, и другие документы, могут быть скачаны с ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

    По вопросам связанными с FreeBSD, прочитайте документацию прежде чем писать в <questions@FreeBSD.org>.
    По вопросам связанным с этой документацией, пишите <doc@FreeBSD.org>.
    По вопросам связанным с русским переводом документации, пишите <frdp@FreeBSD.org.ua>.


    Руководство FreeBSDPrevChapter 13 Менеджер дискового пространства VinumNext

    13.5 Объекты Vinum

    Для обеспечения необходимой функциональности Vinum использует четырехуровневую иерархию объектов:

    Сейчас мы опишем, как эта иерархия обеспечивает необходимую функциональность для Vinum.

    13.5.1 Размер тома

    Наборы могут состоять из большого количества поддисков, распределенных по разным приводам Vinum. Стало быть, размеры отдельных дисков не ограничивают размер набора, а следовательно, и тома.

    13.5.2 Избыточность

    Vinum реализует избыточность посредством связывания с томом нескольких наборов. Содержимое каждого набора является полной копией содержимого тома. Количество наборов в томе может быть от одного до восьми.

    Хотя набор представляет данные тома целиком, отдельные части содержимого тома могут быть представлены не всеми наборами. Во-первых, для некоторых частей набора поддиски могут быть не определены; во-вторых, часть набора может быть потеряна из-за отказа диска. До тех пор, пока хотя бы один набор может обеспечить данные для полного адресного пространства тома, том полностью функционален.

    13.5.3 Производительность

    Vinum поддерживает как конкатенацию, так и перемежение на уровне наборов:

    13.5.4 Организация наборов: что выбрать?

    Vinum, распространяемый с FreeBSD версии 5.2.1 поддерживает два вида организации наборов:

    Преимущества и недостатки различных методов организации наборов описаны в Table 13-1.

    Table 13-1. Методы организации наборов Vinum

    Тип набораПоддисков, мин.Расширяется "на лету"Поддиски строго одного размераПрименение
    сцепленный (concatenated)1данетКрупные системы хранения, требующие максимальной гибкости и умеренной производительности
    с перемежением (striped)2нетдаВысокая производительность, в том числе в случае параллельного доступа к данным

    Этот, и другие документы, могут быть скачаны с ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

    По вопросам связанными с FreeBSD, прочитайте документацию прежде чем писать в <questions@FreeBSD.org>.
    По вопросам связанным с этой документацией, пишите <doc@FreeBSD.org>.
    По вопросам связанным с русским переводом документации, пишите <frdp@FreeBSD.org.ua>.


    Руководство FreeBSDPrevChapter 13 Менеджер дискового пространства VinumNext

    13.9 Vinum для корневой файловой системы

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

    В данном разделе термин ``корневой том'' означает том Vinum, содержащий корневую файловую систему. Неплохой идеей является назвать такой том "root", хотя это, разумеется, и необязательно. Все наши примеры, впрочем, будут использовать именно это имя.

    13.9.1 Активизация Vinum на ранней стадии процесса загрузки

    Для обеспечения этого необходимо следующее:

    13.9.2 Загрузчик должен прочесть корневой том Vinum

    В настоящее время начальный загрузчик FreeBSD ограничен размером всего в 7.5 KB, и этот размер фактически исчерпан (загрузчик должен уметь прочесть файл /boot/loader с файловой системы формата UFS и передать ему управление). Невозможно разместить в загрузчике внутренние структуры Vinum, чтобы он мог считать настройку Vinum и самостоятельно определить элементы загрузочного тома. Поэтому, для создания у загрузчика иллюзии, что загрузка происходит со стандартного раздела "a" требуются некоторые дополнительные ухищрения.

    Для того, чтобы такая загрузка вообще была возможной, корневой том должен отвечать следующим требованиям:

    Заметим, что возможно (и является, вообще говоря, основной целью), чтобы корневой том содержал несколько наборов, каждый с копией корневой файловой системы. В процессе загрузки, впрочем, используется только одна из копий (на этапе поиска начального загрузчика и его конфигурационных файлов, ядра, модулей и т.п. до момента монтирования корневой файловой системы). Для обеспечения возможности загрузки поддиск каждого из наборов должен быть отображен в псевдо-раздел "a". Вообще говоря, эти псевдо-разделы не обязаны находиться на одних и тех же местах дисков; тем не менее, во избежание излишней путаницы, рекомендуется создавать тома с одинаково устроенными дисками для зеркалирования.

    Для создания псевдо-разделов "a" необходимо для каждого из дисков, содержащих копию корневого тома, проделать следующее:

    1. Определить положение (смещение от начала устройства) и размер поддиска, являющегося частью корневого тома:

      vinum l -rv root

      Отметим, что все размеры и смещения в терминах Vinum указаны в байтах. Для получения номеров блоков, используемых в утилите disklabel, все числа надо поделить на 512.

    2. Выполнить команду

      disklabel -e devname

      для каждого из дисков, на котором будет расположен корневой том. devname будет или именем диска (например, da0) для дисков без таблицы слайсов, или именем слайса (ad0s1).

      Если на устройстве уже есть раздел "a" (скорее всего, это предыдущая инкарнация корневой файловой системы), он должен быть переименован (чтобы быть доступным в будущем, на всякий случай; при этом стартовый загрузчик больше не должен выбирать его по умолчанию). Не забудьте, что активный (например, смонтированный) раздел не может быть переименован, так что переименование нужно производить или загрузившись с диска ``Fixit'', или в два шага (для конфигурации с зеркалированием сначала переименовать раздел на втором диске, затем, после перезагрузки, на первом).

      Затем, адрес начала нового раздела "a" вычисляется как сумма начального смещения раздела Vinum и подсчитанного выше адреса поддиска внутри привода. Совместно с вычисленным размером эти значения вносятся в поля "offset" и "size" строки "a" disklabel(8); Поле "fstype" должно быть 4.2BSD. Значения полей "fsize", "bsize" и "cpg" желательно заполнить в соответствии с имеющейся файловой системой, хотя в обсуждаемом контексте это и не строго обязательно.

      Как можно заметить, новосозданный раздел "a" располагается внутри раздела Vinum. Утилита disklabel разрешает разделам пересекаться только в случае, если один из них корректно описан как имеющий тип "vinum".

    3. Готово! Сконструированный псевдо-раздел "a" создан на каждом из устройств, содержащих реплики корневого тома. Крайне важно проверить результат еще раз, выполнив команду

      fsck -n /dev/devnamea

    Следует помнить, что все файлы, содержащие загрузочную конфигурацию, должны быть построены в соответствии с новой корневой файловой системой; скорее всего, эта информация не будет соответствовать текущему положению вещей. В особенности, следует обратить внимание на содержимое файлов /etc/fstab и /boot/loader.conf.

    После перезагрузки начальный загрузчик должен определить данные новой корневой файловой системы на основе Vinum и действовать в соответствии с ними. В завершение процесса инициализации ядра, после упоминания всех определившихся устройств, должно появиться сообщение вида:

    Mounting root from ufs:/dev/vinum/root

    13.9.3 Пример конфигурации корневой файловой системы на базе Vinum

    После создания корневого тома, вывод команды vinum l -rv root будет примерно таким:

    ...
    Subdisk root.p0.s0:
    		Size:        125829120 bytes (120 MB)
    		State: up
    		Plex root.p0 at offset 0 (0  B)
    		Drive disk0 (/dev/da0h) at offset 135680 (132 kB)
    
    Subdisk root.p1.s0:
    		Size:        125829120 bytes (120 MB)
    		State: up
    		Plex root.p1 at offset 0 (0  B)
    		Drive disk1 (/dev/da1h) at offset 135680 (132 kB)
    	

    Из этой информации нас более всего интересует смещение в 135680 байт относительно раздела /dev/da0h. После деления на 512 получим 265 дисковых блоков для утилиты disklabel. Аналогичным образом, размер тома составит 245760 512-байтных блоков. Так же устроена реплика тома на диске /dev/da1h.

    Разметка разделов (disklabel) будет выглядеть примерно так:

    ...
    8 partitions:
    #        size   offset    fstype   [fsize bsize bps/cpg]
      a:   245760      281    4.2BSD     2048 16384     0   # (Cyl.    0*- 15*)
      c: 71771688        0    unused        0     0         # (Cyl.    0 - 4467*)
      h: 71771672       16     vinum                        # (Cyl.    0*- 4467*)
    	

    Как уже отмечалось, размер ("size") псевдо-раздела "a" соответствует значению, вычисленному ранее; смещение ("offset") равно сумме смещения поддиска внутри раздела Vinum ("h") и смещения самого этого раздела относительно начала диска (слайса). Так мы избегаем проблем, описанных ниже (Section 13.9.4.3). Заметим также, что раздел "a" целиком размещен внутри раздела "h", описывающего все данные Vinum на этом диске.

    Заметим, что в описанном примере все дисковое пространство отдано Vinum. Корневого раздела, существовавшего до настройки Vinum, нет, поскольку это вновь установленный диск, предназначенный для использования исключительно в Vinum.

    13.9.4 Проблемы и их устранение

    Если что-то пошло не так, должен быть путь для восстановления доступа к информации. Далее описаны некоторые известные проблемные ситуации и способы их устранения.

    13.9.4.1 Загрузчик работает, но система не грузится

    Если по каким-то причинам система не может завершить загрузку, загрузчик может быть прерван нажатием пробела в течение первых 10 (по умолчанию) секунд. Вы можете посмотреть переменные загрузчика (такие как vinum.autostart) при помощи команды show и изменить их содержимое командами set и unset.

    Если единственной проблемой было отсутствие загруженного модуля ядра Vinum, поможет просто команда load vinum.

    Процесс загрузки должен быть продолжен командой boot -as. Параметры -as заставят ядро спросить о корневой файловой системе (параметр -a) и остановить процесс загрузки в однопользовательском (параметр -s) режиме. При этом корневая файловая система будет смонтирована в режиме "только для чтения" (read-only). В результате, даже если будет смонтирован лишь один набор из многонаборного тома, риска рассинхронизации наборов нет.

    Ответом на приглашение ввести адрес корневой файловой системы может быть имя любого устройства, указывающего на файловую систему, пригодную для загрузки. При корректно построенной карте файловых систем (/etc/fstab) значением по умолчанию должно быть что-то вроде ufs:/dev/vinum/root. Распространенной альтернативой будет, например, ufs:da0d (раздел, содержащий корневую файловую систему в эпоху "до Vinum"). Будьте осторожны, монтируя в качестве корневой файловой системы раздел "a", ссылающийся внутрь привода Vinum. В зеркалированном томе смонтируется только часть файловой системы. Если Вам потребуется изменить ее содержимое, необходимо будет также удалить и создать заново остальные наборы тома в конфигурации Vinum, иначе они будут содержать несинхронизированные данные.

    13.9.4.2 Работает только основной загрузчик

    Если /boot/loader не загружается, а основной загрузчик все еще пригоден к работе (в начале процесса загрузки появляется одиночный минус в первой колонке экрана), можно попытаться прервать основной загрузчик нажатием пробела в этот момент. При этом загрузка будет остановлена на второй стадии (см. Section 7.3.2). Можно попробовать загрузиться с другого раздела, например, содержащего предыдущую копию корневой файловой системы (бывший раздел "a", см. выше).

    13.9.4.3 Ничего не грузится, загрузчик падает

    Это происходит, когда загрузчик на диске затерт Vinum'ом. К сожалению, Vinum оставляет лишь 4 KB в начале своего раздела до записи своих управляющих блоков. Две стадии первоначального загрузчика в совокупности с меткой диска BSD (disklabel) требуют 8 KB. Так что попытка создать раздел Vinum по смещению 0 диска или слайса, который должен быть загруженным, затрет загрузчик.

    Что хуже, попытка разрешить описанную ситуацию посредством загрузки с диска ``Fixit'' и перезаписи начального загрузчика при помощи команды disklabel -B (как описано в Section 7.3.2) приведет к тому, что загрузчик затрет управляющий заголовок Vinum, и тот не сможет найти свой диск. Хотя собственно конфигурация Vinum при этом не потеряется, и все данные могут быть восстановлены посредством создания объектов на их предыдущих местах, очень сложно окончательно исправить ситуацию. Весь раздел Vinum должен быть смещен по крайней мере на 4 KB, так чтобы загрузчики и заголовок Vinum более не пересекались.

    13.9.5 Отличия для FreeBSD версий 4.x

    В системах под управлением FreeBSD 4.x отсутствуют некоторые функции ядра, необходимые для автоматического сканирования дисков Vinum'ом; кроме того, код, определяющий номера устройств корневой файловой системы, недостаточно продвинут для того, чтобы понимать конструкции вида /dev/vinum/root. Требуется приложение дополнительных усилий.

    Во-первых, в файле /boot/loader.conf должен быть явно указан список дисков, которые Vinum будет сканировать:

    vinum.drives="/dev/da0 /dev/da1"

    Важно, чтобы были описаны все приводы, на которых могут встретиться данные Vinum. Не произойдет ничего плохого, если будет описано больше дисков, чем необходимо. Также, нет нужды описывать все слайсы и/или разделы (Vinum сканирует их автоматически).

    Поскольку подпрограммы разбора имени корневой файловой системы и определения номеров устройств воспринимают только ``классические'' имена, такие как /dev/ad0s1a, для них не подходят имена типа /dev/vinum/root. Имя корневого тома должно быть сообщено Vinum отдельно. Для этого служит переменная загрузчика vinum.root. Соответствующая строка в файле /boot/loader.conf будет выглядеть так:

    vinum.root="root"

    Процедура инициализации ядра выглядит так: перед определением корневого устройства для загрузки проверяется, не установил ли какой-либо модуль соответствующий параметр ядра. В случае положительного ответа и при совпадении основного (major) номера устройства драйвера и установленной файловой системы автоопределение прекращается, что дает возможность передать продолжение процесса загрузки и монтирование корневого тома Vinum.

    Следует отметить, впрочем, что обработчик ответа на запрос имени корневой файловой системы (boot -a) не может разобрать имя тома Vinum. Можно ввести имя устройства, отличное от устройства Vinum (в этом случае произойдет стандартная процедура разбора, так что можно указать, например, ufs:da0d). Имена же, подобные ufs:vinum/root не могут быть распознаны. Единственным выходом из этой ситуации будет перезагрузка и введение имени устройства заново (префикс /dev/ в ответе на запрос ``askroot'' всегда можно опустить).

    Этот, и другие документы, могут быть скачаны с ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

    По вопросам связанными с FreeBSD, прочитайте документацию прежде чем писать в <questions@FreeBSD.org>.
    По вопросам связанным с этой документацией, пишите <doc@FreeBSD.org>.
    По вопросам связанным с русским переводом документации, пишите <frdp@FreeBSD.org.ua>.


    Руководство FreeBSDPrevNext

    Chapter 13 Менеджер дискового пространства Vinum

    Table of Contents
    13.1 Краткая аннотация
    13.2 Диски слишком малы
    13.3 Ограниченная пропускная способность
    13.4 Целостность данных
    13.5 Объекты Vinum
    13.6 Несколько примеров
    13.7 Правила именования объектов
    13.8 Создание конфигурации Vinum
    13.9 Vinum для корневой файловой системы

    13.1 Краткая аннотация

    Какие бы диски у Вас ни были, они всегда будут подвержены ограничениям:

    Этот, и другие документы, могут быть скачаны с ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

    По вопросам связанными с FreeBSD, прочитайте документацию прежде чем писать в <questions@FreeBSD.org>.
    По вопросам связанным с этой документацией, пишите <doc@FreeBSD.org>.
    По вопросам связанным с русским переводом документации, пишите <frdp@FreeBSD.org.ua>.


    Руководство FreeBSDPrevChapter 5 X Window SystemNext

    5.4 Конфигурация XFree86

    Текст предоставилChristopher Shumway.

    5.4.1 Перед тем, как начать

    Перед настройкой XFree86™ 4.X необходима следующая информация о конфигурируемой системе:

    Характеристики монитора используются в XFree86 для определения рабочего разрешения и частоты. Эти характеристики обычно могут быть получены из документации, которая прилагается к монитору или с сайта производителя. Тут нужны два диапазона значений, для частоты горизонтальной развёртки и для частоты вертикальной синхронизации.

    Набор микросхем графического адаптера определяет, модуль какого драйвера использует XFree86 для работы с графическим оборудованием. Для большинства типов микросхем это может быть определено автоматически, но все же его полезно знать на тот случай, когда автоматическое определение не работает правильно.

    Объём видеопамяти графического адаптера определяет разрешение и глубину цвета, с которым может работать система. Это важно, чтобы пользователь знал ограничения системы.

    5.4.2 Конфигурирование XFree86 4.X

    Процесс настройки XFree86 4.X является многошаговым. Первый шаг заключается в построении начального конфигурационного файла посредством запуска XFree86 с параметром -configure. Работая с правами суперпользователя, просто запустите:

    # XFree86 -configure

    При этом в каталоге /root будет создан скелет конфигурационного файла XFree86 под именем XF86Config.new (на самом деле в качестве каталога используется тот, что задан в переменной окружения $HOME, а она зависит от способа получения прав суперпользователя). Программа XFree86 сделает попытку распознать графическое оборудование системы и запишет конфигурационный файл, загружающий правильные драйверы для обнаруженного оборудования в системе.

    Следующим шагом является тестирование существующей конфигурации для проверки того, что XFree86 может работать с графическим оборудованием в настраиваемой системе. Для выполнения этой задачи пользователю нужно выполнить:

    # XFree86 -xf86config XF86Config.new

    Если появилась чёрно-белая сетка и курсор мыши в виде X, то настройка была выполнена успешно. Для завершения тестирования просто нажмите одновременно Ctrl+Alt+Backspace.

    Note: Если мышь не работает, удостоверьтесь, что соответствующее устройство было отконфигурировано. Обратитесь к Section 2.9.10 в главе об установке FreeBSD.

    Теперь выполните тонкую настройку в файле XF86Config.new по своему вкусу. Откройте файл в текстовом редакторе, таком, как emacs(1) или ee(1). Сначала задайте частоты для монитора. Они обычно обозначаются как частоты горизонтальной и вертикальной синхронизации. Эти значения добавляются в файл XF86Config.new в раздел "Monitor":

    Section "Monitor"
            Identifier   "Monitor0"
            VendorName   "Monitor Vendor"
            ModelName    "Monitor Model"
            HorizSync    30-107
            VertRefresh  48-120
    EndSection

    Ключевых слов HorizSync и VertRefresh может и не оказаться в файле конфигурации. Если их нет, то они должны быть добавлены, с указанием корректных значений горизонтальной частоты синхронизации после ключевого слова HorizSync и вертикальной частоты синхронизации после ключевого слова VertRefresh. В примере выше были введены частоты монитора настраиваемой системы.

    X позволяет использовать возможности технологии DPMS (Energy Star) с поддерживающими её мониторами. Программа xset(1) управляет временными задержками и может явно задавать режимы ожидания, останова и выключения. Если вы хотите включить использование возможностей DPMS вашего монитора, вы должны добавить следующую строку в раздел, описывающий монитор:

    Option       "DPMS"

    Пока файл конфигурации XF86Config.new открыт в редакторе, выберите желаемые разрешение и глубину цвета, которые будут использоваться по умолчанию. Они задаются в секции "Screen":

    Section "Screen"
            Identifier "Screen0"
            Device     "Card0"
            Monitor    "Monitor0"
            DefaultDepth 24
            SubSection "Display"
                    Depth     24
                    Modes     "1024x768"
            EndSubSection
    EndSection

    Ключевое слово DefaultDepth описывает глубину цвета, с которой будет работа по умолчанию. Это значение может быть переопределено при помощи параметра командной строки -bpp для XFree86(1). Ключевое слово Modes описывает разрешение, с которым нужно работать при данной глубине цвета. Заметьте, что поддерживаются только те стандартные режимы VESA, что определены графическим оборудованием настраиваемой системы. В примере выше глубина цвета по умолчанию равна двадцати четырём битам на пиксел. При такой глубине цвета принимается разрешение в одну тысячу двадцать четыре на семьсот шестьдесят восемь точек.

    Наконец, запишите конфигурационный файл и протестируйте его при помощи тестового режима, описанного выше. Если все в порядке, то конфигурационный файл нужно установить в общедоступное место, где его сможет найти XFree86(1). Обычно это /etc/X11/XF86Config или /usr/X11R6/etc/X11/XF86Config.

    # cp XF86Config.new /etc/X11/XF86Config

    После того, как конфигурационный файл будет помещён в общедоступное место, настройка завершена. Для запуска XFree86 посредством startx(1) установите порт x11/wrapper. XFree86 4.X можно также запустить через xdm(1).

    Note: Имеется также графический инструмент для настройки, xf86cfg(1), который включён в дистрибутив XFree86 4.X. Он позволяет выполнить настройку в интерактивном режиме посредством выбора соответствующих драйверов и настроек. Эту программу можно использовать и в консольном режиме, просто нужно запустить её как xf86cfg -textmode. Для получения более полной информации обратитесь к странице справочной системы xf86cfg(1).

    5.4.3 Тонкие вопросы настройки

    5.4.3.1 Конфигурирование при работе с графическими чипсетами Intel® i810

    Конфигурирование при работе с интегрированными наборами микросхем Intel® i810 требует наличия agpgart, программного интерфейса AGP, посредством которого XFree86 будет управлять адаптером. Драйвер agp(4) присутствует в ядре GENERIC с момента выпуска 4.8-RELEASE и 5.0-RELEASE. Для предшествующих релизов вам нужно добавлять такую строку:

    device agp

    в конфигурационный файл вашего ядра и перестраивать новое ядро. Однако вместо этого вы можете подгружать модуль ядра agp.ko автоматически во время загрузки системы при помощи loader(8). Для этого просто добавьте следующую строку в файл /boot/loader.conf:

    agp_load="YES"

    Затем, в случае использования FreeBSD 4.X или более ранних её версий, для программного интерфейса должен быть создан файл устройств. Для создания файла устройств для AGP запустите MAKEDEV(8) в каталоге /dev:

    # cd /dev
    # sh MAKEDEV agpgart

    Note: Во FreeBSD 5.X и более поздних версиях будет использоваться devfs(5) для выделения файлов устройств в прозрачном режиме, поэтому шаг с MAKEDEV(8) не нужен.

    Это позволит конфигурировать графическое оборудование точно так же, как и любой другой графический адаптер. Заметьте, что для систем, у которых драйвер agp(4) в ядро не вкомпилирован, попытка погрузить модуль с помощью kldload(8) окончится неудачно. Этот драйвер должен оказаться в ядре во время загрузки, либо вкомпилированным, либо подгруженным посредством /boot/loader.conf.

    Если вы используете XFree86 4.1.0 (или более позднюю версию), и выдаются сообщения о неразрешённых ссылках типа fbPictureInit, попробуйте добавить такую строчку после Driver "i810" в конфигурационном файле XFree86:

    Option "NoDDC"

    Этот, и другие документы, могут быть скачаны с ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

    По вопросам связанными с FreeBSD, прочитайте документацию прежде чем писать в <questions@FreeBSD.org>.
    По вопросам связанным с этой документацией, пишите <doc@FreeBSD.org>.
    По вопросам связанным с русским переводом документации, пишите <frdp@FreeBSD.org.ua>.


    Руководство FreeBSDPrevChapter 5 X Window SystemNext

    5.5 Использование шрифтов в XFree86

    Текст предоставилMurray Stokely.

    5.5.1 Шрифты Type1

    Шрифты, используемые по умолчанию и распространяемые вместе с XFree86, вряд ли можно назвать идеально подходящими для применения в обычных издательских приложениях. Большие презентационные шрифты выглядят рвано и непрофессионально, а мелкие шрифты в Netscape® вообще невозможно разобрать. Однако есть некоторое количество свободно распространяемых высококачественных шрифтов Type1 (PostScript®), которые можно без изменений использовать с XFree86 как версии 3.X, так и 4.X. К примеру, в наборе шрифтов URW (x11-fonts/urwfonts) имеются высококачественные версии стандартных шрифтов type1 (Times Roman®, Helvetica®, Palatino® и другие). В набор Freefonts (x11-fonts/freefonts) включено ещё больше шрифтов, однако большинство из них предназначено для использования в программном обеспечении для работы с графикой, например, Gimp, и они не вполне пригодны для использования в качестве экранных шрифтов. Кроме того, XFree86 с минимальными усилиями может быть настроена на использование шрифтов TrueType®: посмотрите раздел о шрифтах TrueType ниже.

    Для установки вышеупомянутых коллекций шрифтов Type1 из коллекции портов выполните следующие команды:

    # cd /usr/ports/x11-fonts/urwfonts
    # make install clean

    То же самое нужно будет сделать для коллекции freefont и других. Для указания X-серверу на существование этих шрифтов добавьте соответствующую строку в файл XF86Config (из каталога /etc/ для XFree86 для версии 3 или из каталога /etc/X11/ для версии 4), которая должна выглядеть так:

    FontPath "/usr/X11R6/lib/X11/fonts/URW/"

    Либо из командной строки при работе с X выполните:

    % xset fp+ /usr/X11R6/lib/X11/fonts/URW
    % xset fp rehash

    Это сработает, но будет потеряно, когда сеанс работы с X будет закрыт, если эта команда не будет добавлена в начальный файл (~/.xinitrc в случае обычного сеанса через startx или ~/.xsession при входе через графический менеджер типа XDM). Третий способ заключается в использовании нового файла XftConfig: посмотрите раздел об антиалиасинге.

    5.5.2 Шрифты TrueType®

    В XFree86 4.X имеется встроенная поддержка шрифтов TrueType. Имеются два модуля, которые могут обеспечить эту функциональность. В нашем примере используется модуль freetype, потому что он в большей степени похож на другие механизмы для работы с шрифтами. Для включения модуля freetype достаточно в раздел "Module" файла /etc/X11/XF86Config добавить следующую строчку.

    Load  "freetype"

    В случае XFree86 3.3.X требуется отдельный сервер шрифтов TrueType. Для этого обычно используется Xfstt. Для установки Xfstt просто установите порт x11-servers/Xfstt.

    Теперь создайте каталог для шрифтов TrueType (к примеру, /usr/X11R6/lib/X11/fonts/TrueType) и скопируйте все шрифты TrueType в этот каталог. Имейте в виду, что напрямую использовать шрифты TrueType с Macintosh® нельзя; для использования с XFree86 они должны быть в формате UNIX®/DOS/Windows®. После того, как файлы будут скопированы в этот каталог, воспользуйтесь утилитой ttmkfdir для создания файла fonts.dir, который укажет подсистеме вывода шрифтов X на местоположение этих новых файлов. ttmkfdir имеется в Коллекции Портов FreeBSD как x11-fonts/ttmkfdir.

    # cd /usr/X11R6/lib/X11/fonts/TrueType
    # ttmkfdir > fonts.dir

    После этого добавьте каталог со шрифтами TrueType к маршруту поиска шрифтов. Это делается точно также, как описано выше для шрифтов Type1, то есть выполните

    % xset fp+ /usr/X11R6/lib/X11/fonts/TrueType
    % xset fp rehash

    или добавьте строку FontPath в файл XF86Config.

    Это всё. Теперь Netscape, Gimp, StarOffice и все остальные X-приложения должны увидеть установленные шрифты TrueType. Очень маленькие (как текст веб-страницы на дисплее с высоким разрешением) и очень большие (в StarOffice) шрифты будут теперь выглядеть гораздо лучше.

    5.5.3 Антиалиасинг шрифтов

    Обновление для XFree86 4.3 выполнил Joe Marcus Clarke.

    Анлиалиасинг присутствует в XFree86, начиная с версии 4.0.2. Однако настройка шрифтов была довольно громоздка вплоть до появления XFree86 4.3.0. Начиная с версии 4.3.0, все шрифты, расположенные в каталогах /usr/X11R6/lib/X11/fonts/ и ~/.fonts/, автоматически становятся доступными для применения антиалиасинга в приложениях, использующих Xft. Ещё не все приложения могут использовать Xft, но во многих его поддержка присутствует. Примерами приложений, использующих Xft, является Qt версий 2.3 и более поздних (это инструментальный пакет для оболочки KDE), Gtk+ версий 2.0 и более поздних (это инструментальный пакет для оболочки GNOME), а также Mozilla версий 1.2 и более поздних.

    Для управления тем, к каким шрифтам применять антиалиасинг, а также для настройки параметров антиалиасинга, создайте (или отредактируйте, если он уже существует) файл /usr/X11R6/etc/fonts/local.conf. Некоторые мощные возможности системы шрифтов Xft могут быть настроены при помощи этого файла; в этом разделе описаны лишь некоторые простые возможности. Для выяснения всех деталей, пожалуйста, обратитесь к fonts-conf(5).

    Этот файл должен быть сформирован в формате XML. Обратите особое внимание на регистр символов, и удостоверьтесь, что все тэги корректно закрыты. Файл начинается обычным заголовком XML, за которым следуют задание DOCTYPE, а потом тэг <fontconfig>:

            <?xml version="1.0"?>
            <!DOCTYPE fontconfig SYSTEM "fonts.dtd">
            <fontconfig>
          

    Как и говорилось ранее, все шрифты из каталога /usr/X11R6/lib/X11/fonts/, а также ~/.fonts/ уже доступны для приложений, использующих Xft. Если вы хотите добавить каталог, отличный от этих двух, добавьте строчку, подобную следующей, в файл /usr/X11R6/etc/fonts/local.conf:

    <dir>/path/to/my/fonts</dir>

    После добавления новых шрифтов, и особенно новых каталогов со шрифтами, вы должны выполнить следующую команду для перестроения кэшей шрифтов:

    # fc-cache -f

    Антиалиасинг делает границы несколько размытыми, что делает очень мелкий текст более читабельным и удаляет ``лесенки'' из текста большого размера, но может вызвать нечёткость при применении к тексту обычного размера. Для исключения размеров, меньших 14, от антиалиасинга, добавьте такие строки:

            <match target="font">
                <test name="size" compare="less">
                    <double>14</double>
                </test>
                <edit name="antialias" mode="assign">
                    <bool>false</bool>
                </edit>
            </match>

    Для некоторых моноширинных шрифтов антиалиасинг может также оказаться неприменимым при определении межсимвольного интервала. В частности, эта проблема возникает с KDE. Одним из возможных решений для этого является жесткое задание межсимвольного интервала в 100. Добавьте следующие строки:

           <match target="pattern" name="family">
               <test qual="any" name="family">
                   <string>fixed</string>
               </test>
               <edit name="family" mode="assign">
                   <string>mono</string>
               </edit>
            </match>
            <match target="pattern" name="family">
                <test qual="any" name="family">
                    <string>console</string>
                </test>
                <edit name="family" mode="assign">
                    <string>mono</string>
                </edit>
            </match>

    (это создаст алиасы для других общеупотребительных имён для шрифтов фиксированного размера как "mono"), а затем добавьте:

             <match target="pattern" name="family">
                 <test qual="any" name="family">
                     <string>mono</string>
                 </test>
                 <edit name="spacing" mode="assign">
                     <int>100</int>
                 </edit>
             </match>      

    С некоторыми шрифтами, такими, как Helvetica, могут получиться проблемы при антиалиасинге. Обычно это проявляется в виде шрифта, который наполовину вертикально обрезан. Хуже того, это может привести к сбоям таких приложений, как Mozilla. Во избежание этого следует добавить следующее в файл local.conf:

             <match target="pattern" name="family">
                 <test qual="any" name="family">
                     <string>Helvetica</string>
                 </test>
                 <edit name="family" mode="assign">
                     <string>sans-serif</string>
                 </edit>
             </match>        

    После того, как вы закончите редактирование local.conf, удостоверьтесь, что вы завершили файл тэгом </fontconfig>. Если этого не сделать, то ваши изменения будут проигнорированы.

    Набор шрифтов по умолчанию, поставляемый с XFree86, не очень желателен, если включается антиалиасинг. Гораздо лучший набор шрифтов, используемых по умолчанию, можно найти в порте x11-fonts/bitstream-vera. Этот порт установит файл /usr/X11R6/etc/fonts/local.conf, если такого ещё не существует. Если файл существует, то порт создаст файл /usr/X11R6/etc/fonts/local.conf-vera. Перенесите содержимое этого файла в /usr/X11R6/etc/fonts/local.conf, и шрифты Bitstream автоматически заменят используемые по умолчанию в XFree86 шрифты Serif, Sans Serif и Monospaced.

    Наконец, пользователи могут добавлять собственные наборы посредством персональных файлов .fonts.conf. Для этого каждый пользователь должен просто создать файл ~/.fonts.conf. Этот файл также должен быть в формате XML.

    И последнее замечание: при использовании дисплея LCD может понадобиться включение разбиения точек. При этом компоненты красного, зелёного и голубого цветов (разделяемые по горизонтали), рассматриваются как отдельные точки для улучшения разрешения экрана по горизонтали; результат может оказаться потрясающим. Для включения этого механизма добавьте такую строчку где-нибудь в файл local.conf:

            <match target="font">
                <test qual="all" name="rgba">
                    <const>unknown</const>
                </test>
                <edit name="rgba" mode="assign">
                    <const>rgb</const>
                </edit>
            </match>
          

    Note: В зависимости от типа дисплея, rgb может потребоваться заменить на bgr, vrgb или vbgr: пробуйте и смотрите, что работает лучше.

    Антиалиасинг должен быть включен при следующем запуске X-сервера. Однако программы должны знать, как использовать его преимущества. В настоящее время инструментальный пакет Qt умеет ими пользоваться, так что вся оболочка KDE может использовать шрифты с антиалиасингом (обратитесь к Section 5.7.3.2 о KDE для выяснения всех подробностей). Gtk+ и GNOME также можно заставить использовать антиалиасинг посредством капплета ``Font'' (обратитесь к Section 5.7.1.3 для выяснения всех подробностей). По умолчанию Mozilla версий 1.2 и выше будет автоматически использовать антиалиасинг. Для отмены этого перестройте Mozilla с флагом -DWITHOUT_XFT.

    Этот, и другие документы, могут быть скачаны с ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

    По вопросам связанными с FreeBSD, прочитайте документацию прежде чем писать в <questions@FreeBSD.org>.
    По вопросам связанным с этой документацией, пишите <doc@FreeBSD.org>.
    По вопросам связанным с русским переводом документации, пишите <frdp@FreeBSD.org.ua>.


    Руководство FreeBSDPrevChapter 5 X Window SystemNext

    5.2 Основы X

    Первое знакомство с X может оказаться чем-то вроде шока для тех, кто работал с другими графическими системами, такими, как Microsoft® Windows® или Mac OS®.

    Нет необходимости вникать во все детали различных компонентов X и их взаимодействия; однако некоторые базовые знания делают возможным использование сильных сторон X.

    5.2.1 Почему именно X?

    X не является первой оконной системой для UNIX®, но она является самой популярной. До работы над X команда ее разработчиков трудилась над другой оконной системой. Та система называлась ``W'' (от ``Window''). X является просто следующей буквой в романском алфавите.

    X можно называть ``X'', ``X Window System'', ``X11'' и другими терминами. Факт использования названия ``X Windows'' для X11 может задеть интересы некоторых людей; дополнительную информацию по этому поводу можно найти на странице справочной системы X(7).

    5.2.2 Модель клиент/сервер в X

    X изначально разрабатывалась, чтобы быть системой, ориентированной на работу в сети с использованием модели ``клиент-сервер''. В модели работы X ``X-сервер'' работает на компьютере с клавиатурой, монитором и мышью. Сервер отвечает за управление дисплеем, обработку ввода с клавиатуры и мыши и так далее. Каждое X-приложение (например, XTerm или Netscape®) является ``клиентом''. Клиент посылает сообщения серверу, такие, как ``Пожалуйста, нарисуй окно со следующими координатами'', а сервер посылает в ответ сообщения типа ``Пользователь только что щёлкнул мышью на кнопке OK''.

    Если в этом участвует только один компьютер, например, в случае использования дома или в офисе, сервер и клиенты X будут работать на том же самом компьютере. Однако реально возможно запускать X-сервер на менее мощном настольном компьютере, а приложения X (клиенты) на, скажем, мощной и дорогой машине, обслуживающей целый офис. В этом сценарии X-клиент и сервер общаются через сеть.

    Некоторых это вводит в заблуждение, потому что терминология X в точности обратна тому, что они ожидают. Они полагают, что ``X-сервер'' будет большой мощной машиной, стоящей на полу, а ``X-клиентом'' является машина, стоящая на их столах.

    Запомните, что X-сервером является машина с монитором и клавиатурой, а X-клиенты являются программами, выводящими окна.

    В протоколе нет ничего, что заставляет машины клиента и сервера работать под управлением одной и той же операционной системы, или даже быть одним и тем же типом компьютера. Определённо возможно запускать X-сервер в Microsoft Windows или Mac OS от Apple, и есть множество свободно распространяемых и коммерческих приложений, которые это реализуют.

    X-сервер, поставляемый с FreeBSD, называется XFree86, и он распространяется свободно под лицензией, очень похожей на условия распространения FreeBSD. Имеются и коммерческие X-серверы для FreeBSD.

    5.2.3 Оконный менеджер

    Философия построения X очень похожа на философию построения UNIX, ``инструменты, не политика''. Это значит, что X не пытаются диктовать то, как должна быть выполнена работа. Вместо этого пользователю предоставляются инструменты, а за пользователем остается принятие решения о том, как использовать эти инструменты.

    Этот подход расширен в X тем, что не задается, как окна должны выглядеть на экране, как их двигать мышью, какие комбинации клавиш должны использоваться для переключения между окнами (то есть Alt+Tab, в случае использования Microsoft Windows), как должны выглядеть заголовки окон, должны ли в них быть кнопки для закрытия, и прочее.

    Вместо этого X делегирует ответственность за это приложению, которое называется ``Window Manager'' (Менеджер Окон). Есть десятки оконных менеджеров для X: AfterStep, Blackbox, ctwm, Enlightenment, fvwm, Sawfish, twm, WindowMaker и другие. Каждый из этих оконных менеджеров предоставляет различные внешние виды и удобства; некоторые из них поддерживают ``виртуальные рабочие столы''; некоторые из них позволяют изменять назначения комбинаций клавиш, используемых для управления рабочим столом; в некоторых есть кнопка ``Start'' или нечто подобное; некоторые поддерживают ``темы'', позволяя изменять внешний вид, поменяв тему. Эти оконные менеджеры, а также множество других, находятся в категории x11-wm коллекции Портов.

    Кроме того, оболочки KDE и GNOME обе имеют собственные оконные менеджеры, которые интегрированы с оболочкой.

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

    Политика фокусирования: Другой особенностью, за которую отвечает оконный менеджер, является ``политика фокусирования'' мыши. Каждая оконная система должна иметь некоторый способ выбора окна для активации получения нажатий клавиш, а также визуальную индикацию того, какое окно активно.

    Широкоизвестная политика фокусировки называется ``click-to-focus''. Эта модель используется в Microsoft Windows, когда окно становится активным после получения щелчка мыши.

    X не поддерживает никакой конкретной политики фокусирования. Вместо этого менеджер окон управляет тем, какое окно владеет фокусом в каждый конкретный момент времени. Различные оконные менеджеры поддерживают разные методы фокусирования. Все они поддерживают метод щелчка для фокусирования, и большинство из них поддерживают некоторые другие методы.

    Самыми популярными политики фокусирования являются:

    focus-follows-mouse (фокус следует за мышью)

    Фокусом владеет то окно, что находится под указателем мыши. Это не обязательно будет окно, которое находится поверх всех остальных. Фокус меняется при указании на другое окно, при этом также нет нужды щёлкать на нём.

    sloppy-focus (нечеткий фокус)

    С политикой focus-follows-mouse если мышь помещается поверх корневого окна (или заднего фона), то никакое окно фокус не получает, а нажатия клавиш просто пропадают. При использовании политики нечёткого фокуса он меняется только когда курсор попадает на новое окно, но не когда уходит с текущего окна.

    щелчок для выбора фокуса

    Активное окно выбирается щелчком мыши. Затем окно может быть ``поднято'' и появиться поверх всех других окон. Все нажатия клавиш теперь будут направляться в это окно, даже если курсор переместится к другому.

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

    5.2.4 Виджеты

    Подход X, заключающийся в предоставлении инструментов, а не политики, распространяется и на виджеты, которые располагаются на экране в каждом приложении.

    ``Виджет'' (widget) является термином для всего в пользовательском интерфейсе, на чём можно щёлкать или каким-то образом управлять; кнопки, зависимые (radio buttons) и независимые (check boxes) кнопки, иконки, списки и так далее. В Microsoft Windows это называется ``элементами управления'' (``controls'').

    Microsoft Windows и Mac OS от Apple обе имеют очень жёсткую политику относительно виджетов. Предполагается, что разрабатываемые приложения обязательно должны иметь похожий внешний вид. Что касается X, то было решено, что не нужно требовать обязательного использования какого-то определённого графического стиля или набора виджетов.

    В результате не стоит ожидать от X-приложений похожести во внешнем виде. Существует несколько популярных наборов виджетов и их разновидностей, включая оригинальный набор виджетов Athena от MIT, Motif® (по образу которого был разработан набор виджетов в Microsoft Windows, все эти скошенные углы и три разновидности серого цвета), OpenLook и другие.

    В большинстве появляющихся в настоящее время приложений для X будет использоваться современно выглядящий набор виджетов, либо Qt, используемый в KDE, либо GTK, используемый проектом GNOME. В этом отношении наблюдается унификация внешнего вида рабочего стола в UNIX, что определённо облегчает жизнь начинающему пользователю.

    Этот, и другие документы, могут быть скачаны с ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

    По вопросам связанными с FreeBSD, прочитайте документацию прежде чем писать в <questions@FreeBSD.org>.
    По вопросам связанным с этой документацией, пишите <doc@FreeBSD.org>.
    По вопросам связанным с русским переводом документации, пишите <frdp@FreeBSD.org.ua>.


    Руководство FreeBSDPrevChapter 5 X Window SystemNext

    5.6 Менеджеры Экранов (Display Managers) X

    Текст предоставилSeth Kingsley.

    5.6.1 Вступление

    Менеджер Экранов X (XDM) это необязательный компонент Системы Окон X, который используется для управления login сессиями. Это полезно в ряде ситуаций, например минимальные ``X Терминалы'', декстопы, большие сетевые сервера Экранов. Так как Система Окон X не зависит от сетей и протоколов, то существует множество различных конфигураций для X клиентов и серверов запущенных на различных компьютерах подключенных к сети. XDM предоставляет графический интерфейс для выбора сервера к которому Вы желаете подключится и введения информации авторизующей пользователя, например комбинацию логина и пароля.

    Представляйте себе, что XDM предоставляет такие же возможности для пользователей, как и программа getty(8) (смотрите Section 17.3.2 для подробной информации). И это именно так, XDM производит вход в систему для подключенного пользователя и запускает управляющую сессию для пользователя (обычно это менеджер окон X). После этого XDM ожидает завершения приложения, означающее завершение пользователем работы и отключает управляющую сессию. После этого XDM может снова вывести приглашение к входу в систему и ожидать входа другого пользователя.

    5.6.2 Использование XDM

    Программой даемона XDM является /usr/X11R6/bin/xdm. Эта программа может быть запущена от пользователя root в любой момент, и она начнёт управлять дисплеем X на локальной машине. Если XDM нужно запускать в фоновом режиме каждый раз при запуске компьютера, то наиболее правильный способ это добавить новую запись в /etc/ttys. Для более подробной информации о формате и использовании этого файла смотрите секцию Section 17.3.2.1. Это строка, которую необходимо добавить в файл /etc/ttys для того чтобы запустить даемон XDM на виртуальном терминале:

    ttyv8	"/usr/X11R6/bin/xdm -nodaemon"	xterm	off secure

    По умолчанию эта запись отключена; для её включения нужно заменить пятое поле с off на on и перезапустить init(8), используя метод, описанный в Section 17.3.2.2. Первое поле это название терминала, которым будет управлять программа, ttyv8. Это означает, что XDM будет запущен на 9ом виртуальном терминале.

    5.6.3 Конфигурирование XDM

    Конфигурационные файлы XDM находятся в каталоге /usr/X11R6/lib/X11/xdm. В нём размещаются насколько файлов, которые используются для изменения поведения и внешнего вида XDM. Обычно это следующие файлы:

    ФайлОписание
    XaccessПравила авторизации клиентов.
    XresourcesЗначения ресурсов X по умолчанию.
    XserversСписок локальных и удаленных экранов.
    XsessionСценарий сессии по умолчанию.
    Xsetup_*Скрипт для запуска приложений до появления приглашения к входу в систему.
    xdm-configГлобальный конфигурационный файл для всех экранов запущенных на локальной машине
    xdm-errorsОшибки сгенерированные серверной программой.
    xdm-pidID процесса запущенного XDM.

    В этом каталоге также находятся несколько командных сценариев и программ используемых для настройки рабочего стола (desktop), когда запускается XDM. Назначение каждого из этих файлов будет вкратце описано. Точный синтаксис и информацию по их использованию описаны в xdm(1).

    В конфигурации по умолчанию это просто прямоугольное окно приглашения ко входу в систему с именем компьютера большим шрифтом написанным сверху и строками ввода ``Login:'' и ``Password:'' внизу. Это хорошая отправная точка для изменения внешнего вида экранов XDM.

    5.6.3.1 Xaccess

    Протокол, по которому происходит подключение дисплеев, управляемых XDM, называется X Display Manager Connection Protocol (XDMCP). Этот файл представляет собой набор правил для управления XDMCP соединениями с удалёнными машинами. По умолчанию он позволяет подключаться любым клиентам, но это не имеет значения, пока стандартный файл xdm-config не содержит указаний по обслуживанию удалённых соединений.

    5.6.3.2 Xresources

    Это файл содержащий установки по умолчанию для приложений запущенных в экране выбора серверов и экране приглашения к входу в систему. Именно здесь может быть изменён вид программы входа в систему. Формат этого файла идентичен файлу app-defaults описанному в документации к XFree86.

    5.6.3.3 Xservers

    Это список удаленных экранов, которые XDM должен предоставить как варианты для входа в систему.

    5.6.3.4 Xsession

    Этот файл представляет себя командный сценарий по умолчанию для пользователей вошедших в систему с использованием XDM. Обычно каждый пользователь имеет собственный сценарий входа в файле ~/.xsession, который используется вместо этого сценария.

    5.6.3.5 Xsetup_*

    Они запускаются автоматически перед тем, как показывается экран выбора сервера или экран входа в систему. Для каждого экрана (display) есть свой сценарий с именем Xsetup_, за которым следует локальный номер экрана (например, Xsetup_0). Обычно эти сценарии запускают одну или две программы в фоновом режиме, например xconsole.

    5.6.3.6 xdm-config

    Здесь содержатся настройки в формате app-defaults, которые применимы ко всем экранам данного компьютера.

    5.6.3.7 xdm-errors

    Здесь находится выдача X серверов, которые XDM пытается запустить. Если экран, который XDM пытается открыть отключается по некоторым причинам, то это хорошее место для поиска сообщений об ошибках. Эти сообщения также записываются в пользовательский файл ~/.xsession-errors для каждого сеанса.

    5.6.4 Использование сетевого сервера дисплеев

    Для того, чтобы позволить другим клиентам подключаться к серверу дисплеев, отредактируйте правила контроля доступа и включите обслуживание сетевых соединений. По умолчанию они выключены, что является хорошим решением с точки зрения обеспечения безопасности. Для того, чтобы позволить XDM принимать сетевые соединения, в первую очередь закомментируйте строку в файле xdm-config:

    ! SECURITY: do not listen for XDMCP or Chooser requests
    ! Comment out this line if you want to manage X terminals with xdm
    DisplayManager.requestPort:     0

    и потом перезапустите XDM. Помните, что комментарии в файлах app-defaults начинаются с символа ``!'', а не как обычно, ``#''. Может потребоваться более жёсткий контроль доступа. Взгляните на примеры из Xaccess и почитайте Справочник о xdm(1).

    5.6.5 Замены для XDM

    Существует несколько программ, заменяющих XDM. Одна из них, KDM (поставляемая вместе с KDE), описана далее в этой главе. В KDM имеется много визуальных и косметических улучшений, а также функциональность, позволяющая пользователям выбирать собственные оконные менеджеры во время входа в систему.

    Этот, и другие документы, могут быть скачаны с ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

    По вопросам связанными с FreeBSD, прочитайте документацию прежде чем писать в <questions@FreeBSD.org>.
    По вопросам связанным с этой документацией, пишите <doc@FreeBSD.org>.
    По вопросам связанным с русским переводом документации, пишите <frdp@FreeBSD.org.ua>.


    Руководство FreeBSDPrevChapter 5 X Window SystemNext

    5.7 Графические оболочки

    Текст предоставилValentino Vaschetto.

    В этом разделе описываются различные графические оболочки, доступные в X для FreeBSD. Термин ``графическая оболочка'' может использоваться для чего угодно, от простого менеджера окон до полнофункционального набора приложений для рабочего стола типа KDE или GNOME.

    5.7.1 GNOME

    5.7.1.1 О GNOME

    GNOME является дружественной к пользователю графической оболочкой, позволяющей пользователям легко использовать и настраивать свои компьютеры. В GNOME имеется панель (для запуска приложений и отображения их состояния), рабочий стол (где могут быть размещены данные и приложения), набор стандартных инструментов и приложений для рабочего стола, а также набор соглашений, облегчающих совместную работу и согласованность приложений. Пользователи других операционных систем или оболочек при использовании такой мощной графической оболочки, какую обеспечивает GNOME, должны чувствовать себя в родной среде. Дополнительную информацию относительно GNOME во FreeBSD можно найти на сайте FreeBSD GNOME Project.

    5.7.1.2 Установка GNOME

    Легче всего установить GNOME через меню ``Desktop Configuration'' в ходе процесса установки FreeBSD, как описано в разделе Section 2.9.13 Главы 2. Её также легко установить из пакаджа или Коллекции Портов:

    Для установки пакаджа GNOME из сети, просто наберите:

    # pkg_add -r gnome2

    Для построения GNOME из исходных текстов используйте дерево портов:

    # cd /usr/ports/x11/gnome2
    # make install clean

    После установки GNOME нужно указать X-серверу на запуск GNOME вместо стандартного оконного менеджера. Если файл .xinitrc уже откорректирован, то просто замените строку, в которой запускается используемый менеджер окон, на ту, что вызовет /usr/X11R6/bin/gnome-session. Если в конфигурационном файле нет ничего особенного, то будет достаточно просто набрать:

    % echo "/usr/X11R6/bin/gnome-session" > ~/.xinitrc

    Теперь наберите startx, и будет запущена графическая оболочка GNOME.

    Note: Если используется менеджер дисплеев типа XDM, то это не сработает. Вместо этого создайте выполнимый файл .xsession с той же самой командой в нём. Для этого отредактируйте файл, заменив существующую команду запуска оконного менеджера на /usr/X11R6/bin/gnome-session:

    % echo "#!/bin/sh" > ~/.xsession
    % echo "/usr/X11R6/bin/gnome-session" >> ~/.xsession
    % chmod +x ~/.xsession

    Ещё одним вариантом является настройка менеджера дисплеев таким образом, чтобы он позволял выбирать оконный менеджер во время входа в систему; в разделе о KDE2 в подробностях описывается, как сделать это для kdm, менеджера дисплеев из KDE.

    5.7.1.3 Шрифты с антиалиасингом и GNOME

    Начиная с версии 4.0.2, XFree86 поддерживает антиалиасинг посредством своего расширения ``RENDER''. Gtk+ 2.0 и более поздние версии (это инструментальный пакет, используемый GNOME) могут использовать такую функциональность. настройка антиалиасинга описана в Section 5.5.3. Таким образом, при наличии современного GNOME. Просто перейдите в Applications->Desktop Preferences->Font и выберите либо Best shapes, Best contrast, либо Subpixel smoothing (LCDs). Для приложений Gtk+, которые не являются частью оболочки GNOME, задайте в качестве значения переменной окружения GDK_USE_XFT 1 перед запуском программы.

    5.7.2 KDE

    5.7.2.1 О KDE

    KDE является простой в использовании современной графической оболочкой. Вот лишь некоторое из того, что даёт пользователю KDE:

    • Прекрасный современный рабочий стол

    • Рабочий стол, полностью прозрачный для работы в сети

    • Интегрированная система помощи, обеспечивающая удобный и согласованный доступ к системе помощи по использованию рабочего стола KDE и его приложений

    • Единообразный внешний вид и управление во всех приложениях KDE

    • Стандартизированные меню и панели инструментов, комбинации клавиш, цветовые схемы и так далее.

    • Интернационализация: в KDE поддерживается более 40 языков

    • Централизованное единообразное конфигурирование рабочего стола в диалоговом режиме

    • Большое количество полезных приложений для KDE

    Для KDE существует пакет офисных приложений, который выполнен по технологии ``KParts'' из KDE, состоящий из программы для работы с электронными таблицами, презентационной программы, органайзера, клиента для чтения телеконференций и других программ. С KDE также поставляется веб-браузер под названием Konqueror, который является серьезным соперником другим браузерам для UNIX®-систем. Дополнительную информацию о KDE можно найти на веб-сайте KDE. Для получения информации и информационных ресурсов, специфичных для KDE во FreeBSD, обратитесь к сайту команды FreeBSD-KDE team.

    5.7.2.2 Установка KDE

    Как и в случае с GNOME или любой другой графической оболочкой, легче всего установить KDE через меню ``Desktop Configuration'' во время установки FreeBSD, как это описано в разделе Section 2.9.13 Главы 2. Повторимся ещё раз, что программное обеспечение можно легко установить из пакаджа или из Коллекции Портов:

    Для установки пакаджа KDE из сети, просто наберите:

    # pkg_add -r kde

    pkg_add(1) автоматически сгрузит самую последнюю версию приложения.

    Для построения KDE из исходных текстов воспользуйтесь деревом портов:

    # cd /usr/ports/x11/kde3
    # make install clean

    После установки KDE нужно указать X-серверу на запуск этого приложения вместо оконного менеджера, используемого по умолчанию. Это достигается редактированием файла .xinitrc:

    % echo "exec startkde" > ~/.xinitrc

    Теперь при вызове X Window System по команде startx в качестве оболочки будет использоваться KDE.

    При использовании менеджера дисплеев типа xdm настройка несколько отличается. Вместо этого нужно отредактировать файл .xsession. Указания для kdm описаны далее в этой главе.

    5.7.3 Более подробно о KDE

    Теперь, когда KDE установлена в системе, можно узнать много нового из её справочных страниц или просто указанием и щелканием по различным меню. Пользователи Windows® или Mac® будут чувствовать себя как дома.

    Лучшим справочником по KDE является онлайновая документация. KDE поставляется с собственным веб-браузером, который называется Konqueror, десятками полезных приложений и подробной документацией. В оставшейся части этого раздела обсуждаются технические вопросы, трудные для понимания при случайном исследовании.

    5.7.3.1 Менеджер дисплеев KDE

    Администратору многопользовательской системы может потребоваться графический экран входа в систему для приглашения пользователей. Вы можете использовать xdm, как это описано ранее. Однако в KDE имеется альтернативный менеджер kdm, который был разработан для того, чтобы выглядеть более привлекательно и иметь большее количество настраиваемых опций для входа в систему. В частности, пользователи могут легко выбирать (посредством меню), какую оболочку (KDE, GNOME или что-то ещё) запускать после входа в систему.

    Чтобы начать, запустите панель управления KDE, kcontrol, из-под пользователя root. Вообще говоря, считается небезопасным работать в X пользователем root. Вместо этого запустите менеджер окон как обычный пользователь, откройте окно терминала (такого, как xterm или konsole) из KDE, станьте пользователем root по команде su (для этого нужно быть членом группы wheel из /etc/group), а затем наберите kcontrol.

    Щёлкните на иконке слева с надписью System, затем на Login manager. Справа имеется много различных параметров настройки, которые более детально описаны в руководстве по KDE. Щёлкните на sessions справа. Щёлкните на кнопку New type для того, чтобы добавить различные оконные менеджеры и графические оболочки. Это просто названия, так что они могут именоваться KDE или GNOME, а не startkde или gnome-session.) Включите название failsafe.

    Поэкспериментируйте также и с другими меню, они в основном носят косметический характер и самоописательны. Когда закончите, щёлкните на Apply внизу и завершите работу панели управления.

    Чтобы kdm понимал, что значат эти названия (KDE, GNOME и так далее), отредактируйте файлы, которые использует xdm.

    Note: В KDE 2.2 это изменилось: в kdm теперь используются собственные конфигурационные файлы. Пожалуйста, обратитесь к документации по KDE 2.2 для получения подробной информации.

    В окне терминала, работая как пользователь root, отредактируйте файл /usr/X11R6/lib/X11/xdm/Xsession. В середине есть раздел, выглядящий вот так:

    case $# in
    1)
            case $1 in
    	failsafe)
                    exec xterm -geometry 80x24-0-0
                    ;;
            esac
    esac

    Нужно добавить к этому разделу несколько строк. Полагая, что ранее использовались названия ``KDE'' и ``GNOME'', сделаем следующее:

    case $# in
    1)
            case $1 in
            kde)
                    exec /usr/local/bin/startkde
                    ;;
            GNOME)
                    exec /usr/X11R6/bin/gnome-session
                    ;;
            failsafe)
                    exec xterm -geometry 80x24-0-0
                    ;;
    esac
    esac

    Чтобы выбор KDE в качестве оболочки на момент входа в систему был принят, нужно добавить такую строку в /usr/X11R6/lib/X11/xdm/Xsetup_0:

    /usr/local/bin/kdmdesktop

    Теперь проверьте, что kdm перечислена в файле /etc/ttys для запуска при следующей загрузке. Для этого просто следуйте инструкциям из предыдущего раздела о xdm, заменив отсылки к программе /usr/X11R6/bin/xdm на /usr/local/bin/kdm.

    5.7.3.2 Шрифты с антиалиасингом

    Начиная с версии 4.0.2, XFree86 поддерживает антиалиасинг через своё расширение ``RENDER'', а начиная с версии 2.3, Qt (инструментарий, используемый в KDE) поддерживает это расширение. Настройка этого описана в Section 5.5.3 по антиалиасингу с шрифтами X11. Таким образом, при работе с современным программным обеспечением в оболочке KDE возможно использование антиалиасинга. Просто перейдите в меню KDE, затем к Preferences->Look and Feel->Fonts и поставьте галочку рядом с Use Anti-Aliasing for Fonts and Icons. Для работы с приложением Qt, которое не является частью KDE, перед его запуском нужно устанавливать переменную окружения QT_XFT в значение true.

    5.7.4 XFce

    5.7.4.1 О XFce

    XFce является графической оболочкой, построенной на основе инструментального пакета GTK, используемого в GNOME, но гораздо легче и предназначен для тех, кому нужен простой, эффективно работающий рабочий стол, который легко использовать и настраивать. Визуально он выглядит очень похоже на CDE, который есть в коммерческих UNIX-системах. Вот некоторые из достоинств XFce:

    • Простой, лёгкий в обращении рабочий стол

    • Полностью настраиваемый при помощи мыши, с интерфейсом drag and drop и так далее

    • Главная панель похожа на CDE, с меню, апплетами и возможностями по быстрому запуску приложений

    • Интегрированный оконный менеджер, менеджер файлов, управление звуком, модуль совместимости с GNOME и прочее

    • Возможность использования тем (так как использует GTK)

    • Быстрый, легкий и эффективный: идеален для устаревших/слабых машин или для машин с ограниченной памятью

    Дополнительную информацию о XFce можно найти на сайте XFce.

    5.7.4.2 Установка XFce

    Для XFce имеется (на момент написания этого текста) бинарный пакадж. Для его установки просто наберите:

    # pkg_add -r xfce4

    Либо в случае построения из исходных текстов используйте Коллекцию Портов:

    # cd /usr/ports/x11-wm/xfce4
    # make install clean

    Теперь укажите X-серверу на запуск XFce при следующем запуске X. Просто наберите вот что:

    % echo "/usr/X11R6/bin/startxfce" > ~/.xinitrc

    При следующем запуске X в качестве рабочего стола будет использоваться XFce. Как это сказано выше, если используется менеджер дисплеев, такой, как xdm, создайте файл .xsession так, как это описано в разделе о GNOME, но с командой /usr/X11R6/bin/startxfce, либо настройте менеджер дисплеев так, чтобы он разрешил выбор рабочего стола во время входа в систему, как это описано в разделе о kdm.

    Этот, и другие документы, могут быть скачаны с ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

    По вопросам связанными с FreeBSD, прочитайте документацию прежде чем писать в <questions@FreeBSD.org>.
    По вопросам связанным с этой документацией, пишите <doc@FreeBSD.org>.
    По вопросам связанным с русским переводом документации, пишите <frdp@FreeBSD.org.ua>.


    Руководство FreeBSDPrevChapter 22 Работа с приложениями, написанными для LinuxNext

    22.5 Дополнительные сведения

    Если Вы интересуетесь, как работает Linux эмуляция, эта секция для Вас. Большинство материала взято из электронного письма, адресованного Список рассылки, посвящённый неформальным беседам о FreeBSD by Terry Lambert (ID письма: <199906020108.SAA07001@usr09.primenet.com>).

    22.5.1 Как все это устроено?

    FreeBSD поддерживает абстракцию, называемую ``загрузчик исполнимых классов'', который фактически является первой стадией системного вызова execve(2).

    На самом деле, FreeBSD имеет несколько загрузчиков вместо одного, который, в случае неудачи, выполняет программу как сценарий (скрипт).

    Исторически сложилось, что единственный загрузчик в UNIX системах проверял ``магическое число'' (чаще всего первые 4 или 8 байт файла), чтобы определить, известен ли формат исполняемого файла системе, и если да, то вызвал соответствующий загрузчик.

    Если файл не опознавался системой как исполнимый, execve(2) возвращал ошибку, и текущий командный интерпретатор начинал выполнять файл как скрипт.

    Позднее, sh(1) был модифицирован, так, чтобы проверять первые два символа в файле, и если они оказывались :\n, то файл выполнялся как сценарий для csh(1) (утверждается, что SCO были первыми, кто сделал эту модификацию).

    FreeBSD ведет себя по-другому: пробегает по списку загрузчиков, включая специальный #! загрузчик, который вызывает нужный интерпретатор или /bin/sh, если не нашел подходящего.

    Формат исполняемого файла FreeBSD определяет по ``магическому числу''. На этой стадии пока не различается, для какой операционной системы предназначен файл (Linux, Solaris, или любой другой, использующей ELF-формат исполняемых файлов).

    Далее, ELF-загрузчик определяет ``марку'' (специальный комментарий; отсутствует в исполняемых файлах SVR4/Solaris) исполняемого файла, то есть для какой операционной системы он предназначен.

    Соответственно, Linux программы должны быть ``маркированы'' для Linux (например, с помощью утилиты brandelf(1)):

    # brandelf -t Linux file

    Когда ELF-загрузчик находит ``марку'' Linux, он заменяет соответствующий указатель в структуре proc. Все системные вызовы индексируются через этот указатель (в традиционной UNIX системе, это массив sysent[], содержащий системные вызовы). Некоторые особые ситуации и системные вызовы обрабатываются специальным модулем ядра поддержки Linux.

    Плюс ко всему, Linux эмулятор динамически ``изменяет корень'' файловой системы при поиске файлов (фактически делая то же самое, что и опция union при монтировании файловых систем (не путать с unionfs!)). Сперва, файл ищется в директории /compat/linux/original-path и только затем, в случае неудачи, в /original-path. Это дает возможность Linux программам выполнять FreeBSD команды, если не найдется соответствующих Linux команд. Например, скопировав FreeBSD uname(1) в каталог /compat/linux/bin/, можно ``заставить'' Linux программы сообщать, что они запускаются под FreeBSD.

    На самом деле, ядра FreeBSD и Linux во многом похожи: системные операции, виртуальная память, система сигналов и сообщений, межпроцессное взаимодействие и прочее. Разница в том, что FreeBSD программы обращаются к системным вызовам FreeBSD, Linux программы соответственно к системным вызовам Linux. Во многих операционных системах прошлого адреса системных вызовов были зашиты в статический глобальный массив sysent[], вместо обращения по указателю в структуре proc, который инициализируется динамически, позволяя таким образом запускать программы, написанные для разных операционных систем.

    В чем же разница между системными вызовами Linux и FreeBSD? Фактически никакой. Единственное различие (на данный момент, в будущем все может и, вероятно, изменится), пожалуй, в том, что функции системных вызовов FreeBSD зашиты в ядро, а для Linux они могут быть либо в ядре, либо в динамически загружаемом модуле.

    Можно ли назвать это эмуляцией? Нет. Как таковой, эмулятор (или симулятор) отсутствует. В таком случае, почему же тогда говорят ``Linux эмуляция''? Чтобы ``насолить'' FreeBSD?! 8-). На самом деле, это вопрос терминологии: не существовало слова, которое бы точнее описывало этот процесс. Нельзя сказать, что FreeBSD запускает приложения Linux (без перекомпиляции или загрузки соответствующего модуля ядра). Тогда и придумали термин ``Linux эмуляция''.

    Этот, и другие документы, могут быть скачаны с ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

    По вопросам связанными с FreeBSD, прочитайте документацию прежде чем писать в <questions@FreeBSD.org>.
    По вопросам связанным с этой документацией, пишите <doc@FreeBSD.org>.
    По вопросам связанным с русским переводом документации, пишите <frdp@FreeBSD.org.ua>.