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

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

Copyright © 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006 The FreeBSD Documentation Project

Copyright © 2000, 2001, 2002, 2003, 2004, 2005, 2006 Проект Русской Документации FreeBSD

Добро пожаловать в FreeBSD! Это Руководство охватывает процесс установки и ежедневного использования FreeBSD 7.3-RELEASE и FreeBSD 8.1-RELEASE. Оно находится в процессе разработки и являет собой результат работы множества людей. Многие из разделов до сих пор не существуют, а некоторые из существующих требуют обновления. Если вы заинтересованы в помощи этому проекту, отправьте письмо в Список рассылки Проекта Русской Документации FreeBSD `<frdp@FreeBSD.org.ua>`. Обновленная версия этого документа постоянно доступна с Основного Web сервера Проекта Русской Документации FreeBSD и Основного Web сервера FreeBSD. Он также может быть загружен из интернет в одном из наиболее распространенных форматов с FTP сервера Проекта FreeBSD или с одного из многочисленных зеркал. Если вы предпочитаете иметь напечатанный (английский) вариант Руководства, то можете приобрести его на FreeBSD Mall. Вы также можете воспользоваться Поиском в Руководстве FreeBSD.

Распространение и использование исходных (SGML DocBook) и ''скомпилированных'' форм (SGML, HTML, PDF, PostScript, RTF и прочих) с модификацией или без оной, разрешены при соблюдении следующих соглашений:

1. Распространяемые копии исходного кода (SGML DocBook) должны сохранять вышеупомянутые объявления copyright, этот список положений и следующий отказ от ответственности в первых строках этого файла в неизменном виде.

2. Распространяемые копии скомпилированных форм (преобразованные в другие DTD, конвертированные в PDF, PostScript, RTF и другие форматы) должны повторять вышеупомянутые объявления copyright, этот список положений и следующий отказ от ответственности в документации и/или других материалах, поставляемых с дистрибьюцией.

> Важно: ЭТА ДОКУМЕНТАЦИЯ ПОСТАВЛЯЕТСЯ ПРОЕКТОМ ДОКУМЕНТАЦИИ FREEBSD "КАК ЕСТЬ" И ЛЮБЫЕ ЯВНЫЕ ИЛИ НЕЯВНЫЕ ГАРАНТИИ, ВКЛЮЧАЯ, НО НЕ ОГРАНИЧИВАЯСЬ НЕЯВНЫМИ ГАРАНТИЯМИ, КОММЕРЧЕСКОЙ ЦЕННОСТИ И ПРИГОДНОСТИ ДЛЯ КОНКРЕТНОЙ ЦЕЛИ ОТРИЦАЮТСЯ. НИ ПРИ КАКИХ УСЛОВИЯХ ПРОЕКТ ДОКУМЕНТИРОВАНИЯ FREEBSD НЕ НЕСЕТ ОТВЕТСТВЕННОСТИ ЗА ЛЮБОЙ ПРЯМОЙ, КОСВЕННЫЙ, СЛУЧАЙНЫЙ, СПЕЦИАЛЬНЫЙ, ОБРАЗЦОВЫЙ ИЛИ ПОСЛЕДУЮЩИЙ УЩЕРБЫ (ВКЛЮЧАЯ, НО НЕ ОГРАНИЧИВАЯСЬ ПОСТАВКОЙ ТОВАРОВ ЗАМЕНЫ ИЛИ УСЛУГ; ПОТЕРЮ ДАННЫХ ИЛИ ИХ НЕПРАВИЛЬНУЮ ПЕРЕДАЧУ ИЛИ ПОТЕРИ; ПРИОСТАНОВЛЕНИЕ БИЗНЕСА), И ТЕМ НЕ МЕНЕЕ ВЫЗВАННЫЕ И В ЛЮБОЙ ТЕОРИИ ОТВЕТСТВЕННОСТИ, НЕЗАВИСИМО ОТ КОНТРАКТНОЙ, СТРОГОЙ ОТВЕТСТВЕННОСТИ, ИЛИ ПРАВОНАРУШЕНИИ (ВКЛЮЧАЯ ХАЛАТНОСТЬ ИЛИ ИНЫМ СПОСОБОМ), ВОЗНИКШЕМ ЛЮБЫМ ПУТЕМ ПРИ ИСПОЛЬЗОВАНИИ ЭТОЙ ДОКУМЕНТАЦИИ, ДАЖЕ ЕСЛИ БЫ БЫЛО СООБЩЕНО О ВОЗМОЖНОСТИ ТАКОГО УЩЕРБА.

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

3Com и HomeConnect это зарегистрированные торговые марки 3Com Corporation.

3ware и Escalade это зарегистрированные торговые марки 3ware Inc.

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

Adaptec это зарегистрированная торговая марка Adaptec, Inc.

Adobe, Acrobat, Acrobat Reader и PostScript это или зарегистрированные торговые марки или торговые марки Adobe Systems Incorporated в Соединенных Штатах и/или других странах.

Apple, AirPort, FireWire, Mac, Macintosh, Mac OS, Quicktime и TrueType это торговые марки Apple Computer, Inc., зарегистрированные в Соединенных Штатах и других странах.

Corel и WordPerfect это торговые марки или зарегистрированные торговые марки Corel Corporation и/или ее дочерних компаний в Канаде, Соединенных Штатах и/или других странах.

Sound Blaster это торговая марка Creative Technology Ltd. в Соединенных Штатах и/или других странах.

CVSup это зарегистрированная торговая марка John D. Polstra.

Heidelberg, Helvetica, Palatino и Times Roman это или зарегистрированные торговые марки или торговые марки Heidelberger Druckmaschinen AG в США и других странах.

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

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

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

Intuit и Quicken это зарегистрированные торговые марки и/или зарегистрированные сервис марки Intuit Inc., или одной из ее дочерних компаний в Соединенных Штатах и других странах.

Linux это зарегистрированная торговая марка Linus Torvalds.

LSI Logic, AcceleRAID, eXtremeRAID, MegaRAID и Mylex это торговые марки или зарегистрированные торговые марки LSI Logic Corp.

M-Systems и DiskOnChip это торговые марки или зарегистрированные торговые марки M-Systems Flash Disk Pioneers, Ltd.

Macromedia, Flash и Shockwave это торговые марки или зарегистрированные торговые марки Macromedia, Inc. в Соединенных Штатах и/или других странах.

Microsoft, FrontPage, IntelliMouse, MS-DOS, Outlook, Windows, Windows Media и Windows NT это или зарегистрированные торговые марки или торговые марки Microsoft Corporation в Соединенных Штатах и/или других странах.

Netscape и Netscape Navigator это зарегистрированные торговые марки Netscape Communications Corporation в США и других странах.

GateD и NextHop это зарегистрированные и незарегистрированные торговые марки NextHop в США и других странах.

Motif, OSF/1 и UNIX это зарегистрированные торговые марки, а IT DialTone и The Open Group это торговые марки Open Group в Соединенных Штатах и других странах.

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

PowerQuest и PartitionMagic это зарегистрированные торговые марки PowerQuest Corporation в Соединенных Штатах и/или других странах.

RealNetworks, RealPlayer и RealAudio это зарегистрированные торговые марки RealNetworks, Inc.

Red Hat и RPM это торговые марки или зарегистрированные торговые марки Red Hat, Inc. в Соединенных Штатах и других странах.

SAP, R/3 и mySAP это торговые марки или зарегистрированные торговые марки SAP AG в Германии и нескольких других странах по всему миру.

Sun, Sun Microsystems, Java, Java Virtual Machine, JavaServer Pages, JDK, JRE, JSP, JVM, Netra, Solaris, StarOffice, Sun Blade, Sun Enterprise, Sun Fire, SunOS и Ultra это торговые марки или зарегистрированные торговые марки Sun Microsystems, Inc. в Соединенных Штатах и других странах.

Symantec и Ghost это зарегистрированные торговые марки Symantec Corporation в Соединенных Штатах и других странах.

MATLAB это зарегистрированная торговая марки MathWorks, Inc.

SpeedTouch это торговая марка Thomson.

U.S. Robotics и Sportster это зарегистрированные торговые марки U.S. Robotics Corporation.

VMware это торговая марка VMware, Inc.

Waterloo Maple и Maple это торговые марки или зарегистрированные торговые марки Waterloo Maple Inc.

Mathematica это зарегистрированная торговая марки Wolfram Research, Inc.

XFree86 это торговая марка XFree86 Project, Inc.

Ogg Vorbis и Xiph.Org это торговые марки Xiph.Org.

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

[ По разделам / Одним файлом ]

Список таблиц
2-1. Пример сведений об оборудовании
2-2. Планирование разделов для первого диска
2-3. Разметка разделов для остальных дисков
2-4. Названия ISO-образов дисков FreeBSD 7.`X` и 8.`X` и их значения
3-1. Коды дисковых устройств
17-1. Соглашения по именованию физических дисков
20-1. Методы организации наборов Vinum
23-1. Нуль-модемный кабель DB-25 - DB-25
23-2. Нуль-модемный кабель DB-9 - DB-9
23-3. Нуль-модемный кабель DB-9 - DB-25
23-4. Наименования сигналов
28-1. Распайка кабеля для параллельного порта для сетевой работы
28-2. Зарезервированные адреса IPv6

Список иллюстраций
2-1. FreeBSD Boot Loader Menu
2-2. Типичный вывод Device Probe
2-3. Меню выбора страны
2-4. Меню выбора раскладки клавиатуры
2-5. Выбор Sysinstall Exit
2-6. Выбор Usage в главном меню Sysinstall
2-7. Выбор меню документации
2-8. Меню документации Sysinstall
2-9. Выбор меню раскладки клавиатуры
2-10. Меню раскладки клавиатуры
2-11. Выбор параметров установки
2-12. Параметры Sysinstall
2-13. Начало стандартной установки
2-14. Выберите диск для FDisk
2-15. Типичные разделы fdisk перед редактированием
2-16. Разбиение в Fdisk с использованием всего диска
2-17. Меню менеджера загрузки Sysinstall
2-18. Выход из выбора диска
2-19. Редактор Sysinstall Disklabel
2-20. Редактор Sysinstall Disklabel с установками по умолчанию
2-21. Свободное место для корневого раздела
2-22. Редактирование размера корневого раздела
2-23. Выбор типа корневого раздела
2-24. Выбор точки монтирования корневой файловой системы
2-25. Редактор Sysinstall Disklabel
2-26. Выбор дистрибутивных наборов
2-27. Подтверждение выбора дистрибутивного набора
2-28. Выбор источника установки
2-29. Выбор Ethernet устройства
2-30. Настройка сети для ed0
2-31. Редактирование `inetd.conf`
2-32. Настройка по анонимного FTP по умолчанию
2-33. Редактирование FTP Welcome Message
2-34. Редактирование `exports`
2-35. Параметры настройки системной консоли
2-36. Параметры хранителя экрана
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. Подтверждение установки пакетов
2-52. Выбор User (пользователь)
2-53. Вод информации о пользователе
2-54. Выход из меню управления пользователями и группами
2-55. Выход из установки
2-56. Верхняя часть меню настройки сети (Network Configuration)
2-57. Выбор MTA по умолчанию
2-58. Настройка Ntpdate
2-59. Нижняя часть меню настройки сети
20-1. Организация сцепленных дисков
20-2. Организация с перемежением
20-3. Организация RAID-5
20-4. Простой том Vinum
20-5. Зеркалированный том Vinum
20-6. Том с перемежением
20-7. Зеркалированный том с перемежением

Список примеров
2-1. Использование существующего раздела без изменения
2-2. Сжатие существующих разделов
3-1. Пример имен диска, слайса, и раздела
3-2. Концептуальная модель диска
4-1. Загрузка пакета вручную и его локальная установка
11-1. Создание файла подкачки в FreeBSD
12-1. Образец экрана `boot0`
12-2. Образец экрана `boot2`
12-3. Незащищённая консоль в `/etc/ttys`
13-1. Добавление пользователя в FreeBSD
13-2. Интерактивное удаление учетной записи с помощью `rmuser`
13-3. Интерактивная работа с `chpass` суперпользователя
13-4. Интерактивная работа с `chpass` обычного пользователя
13-5. Изменение пароля
13-6. Изменение пароля другого пользователя суперпользователем
13-7. Добавление группы с использованием pw(8)
13-8. Составление списка членов группы с использованием pw(8)
13-9. Добавление нового члена группы с использованием pw(8)
13-10. Использование id(1) для определения принадлежности к группам
14-1. Использование SSH для создания защищенного туннеля на SMTP
17-1. Использование `dump` через ssh
17-2. Использование `dump` при работе через ssh с заданием `RSH`
17-3. Использование vnconfig для монтирования имеющегося образа файловой системы во FreeBSD 4.X
17-4. Создание нового диска в файле с помощью `vnconfig`
17-5. Использование `mdconfig` для монтирования файла с образом существующей файловой системы
17-6. Создание нового диска, отображаемого в файл, при помощи `mdconfig`
17-7. Настройка и монтирование диска, отображаемого в файл, при помощи команды `mdmfs`
17-8. Диск md в памяти во FreeBSD 4.X
17-9. Создание нового диска с отображением в память при помощи `mdconfig`
17-10. Создание нового диска с отображением в память при помощи `mdmfs`
18-1. Установка меток на разделы загрузочного диска
23-1. Добавление записей терминалов в `/etc/ttys`
25-1. Настройка базы данных доступа sendmail
25-2. Mail Aliases
25-3. Пример таблицы виртуального домена
26-1. Перезагрузка конфигурационного файла inetd
26-2. Монтирование ресурса при помощи amd
28-1. Офис подразделения или домашняя сеть
28-2. Центральный офис или другая локальная сеть
A-1. Извлечение кода из -CURRENT (ls(1)):
A-2. Использование SSH для извлечения дерева `src/`:
A-3. Извлечение ls(1) из ветви для 6-STABLE:
A-4. Создание списка изменений ls(1) (в виде unified diff)
A-5. Поиск доступных имен модулей:

# Предисловие

## Целевая аудитория

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

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

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

## Изменения по сравнению со второй редакцией

Третья редакция является кульминацией более чем двух лет работы отдельных членов проекта документации FreeBSD. Вот основные изменения в новой редакции:

- Гл. 11, Настройка и оптимизация, была расширена новой информацией о ACPI управлении питанием и ресурсами, системной утилите cron и дополнительных параметрах оптимизации ядра.

- Гл. 14, Безопасность, была расширена новой информацией о виртуальных частных сетях (VPN), списках контроля доступа файловой системы (ACL), и сообщениях безопасности.

- Гл. 15, Принудительный контроль доступа (MAC), новая глава этой редакции. Она описывает, что такое MAC и как этот механизм может быть использован для защиты системы FreeBSD.

- Гл. 17, Устройства хранения, была расширена новой информацией о устройствах хранения USB, образах файловой системы, квотах файловой системы, файловых системах в файлах и в сети, зашифрованных дисковых разделах.

- Гл. 20, Менеджер дискового пространства Vinum, новая глава этой редакции. В ней описано как использовать Vinum, менеджер логических томов, который предоставляет независимые от устройств логические диски и программные уровни RAID-0, RAID-1 и RAID-5.

- К Гл. 24, PPP и SLIP, был добавлен раздел о решении проблем.

- Гл. 25, Электронная почта, была расширена новой информацией об использовании альтернативных транспортных агентов, SMTP аутентификации, UUCP, fetchmail, procmail, и другими разделами повышенной сложности.

- Гл. 26, Сетевые серверы, появилась в этой редакции. Эта главы включает информацию о установке Apache HTTP Server, FTPd, и настройке Samba сервера для клиентов Microsoft Windows. Некоторые разделы были перемещены сюда из Гл. 28, Сложные вопросы работы в сети.

- Гл. 28, Сложные вопросы работы в сети, была расширена новой информацией об использовании устройств Bluetooth в FreeBSD, настройке беспроводных сетей, и сетях Asynchronous Transfer Mode (ATM).

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

- Множество эстетических улучшений были внесены в таблицы и иллюстрации этой книги.

## Изменения во второй редакции

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

- Был добавлен полный указатель тем.

- Все ASCII-иллюстрации были заменены на графические.

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

- Содержимое было логически реорганизовано на три части: ''В Начале'', ''Системное администрирование'' и ''Приложения''.

- Гл. 2 (''Установка FreeBSD'') была полностью переписана, добавлено большое количество снимков экрана, чтобы облегчить понимание текста для новых пользователей.

- Гл. 3 (''Основы UNIX'') была расширена и содержит дополнительную информацию о процессах, даемонах и сигналах.

- Гл. 4 (''Установка приложений: порты и пакеты'') была расширена и содержит дополнительную информации об управлении бинарными пакетами.

- Гл. 5 (''X Window System'') была полностью переписана и обращает больше внимания на современные технологии для рабочего стола, такие, как KDE и GNOME на XFree86™ 4.X.

- Гл. 12 (''Процесс загрузки FreeBSD'') была расширена.

- Гл. 17 (''Устройства хранения'') была составлена из того, что раньше было двумя различными главами: ''Диски'' и ''Резервное копирование''. Мы считаем, что данные темы будут проще и более полно описаны как одна глава. Был добавлен раздел о программном и аппаратном RAID.

- Гл. 23 (''Последовательные коммуникации'') была полностью реорганизована и обновлена для FreeBSD 4.X/5.X.

- Гл. 24 (''PPP и SLIP'') была существенно обновлена.

- Было добавлено множество новых разделов в Гл. 28 (''Сложные вопросы работы в сети'').

- Гл. 25 (''Электронная почта'') была расширена, теперь она включает больше информации о настройке sendmail.

- Гл. 10 (''Работа с приложениями, написанными для Linux®'') была дополнена включением информации об установке Oracle® и SAP® R/3®.

- Следующие новые темы были рассмотрены в этой, второй, редакции:

  - Настройка и оптимизация (Гл. 11).

  - Мультимедиа (Гл. 7)

## Структура этой книги

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

Гл. 1, Введение

  Знакомит пользователя с FreeBSD. Рассказывает об истории проекта FreeBSD, его задачах и модели разработки.

Гл. 2, Установка

  Проводит пользователя через весь процесс установки. Обсуждаются также некоторые более сложные вопросы установки, такие как установка по последовательной консоли.

Гл. 3, Основы UNIX

  Рассказывает об основных командах и функциональности операционной системы FreeBSD. Если вы знакомы с Linux или другой UNIX-подобной операционной системой, возможно, вы пропустите эту главу.

Гл. 4, Установка приложений: порты и пакеты

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

Гл. 5, X Window System

  Описывает X Window System вообще и использование X11 под управлением FreeBSD в частности. Также описывает популярные окружения рабочего стола, такие как KDE и GNOME.

Гл. 6, Приложения для настольного компьютера

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

Гл. 7, Мультимедиа

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

Гл. 8, Настройка ядра FreeBSD

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

Гл. 9, Печать

  Рассказывает об управлении принтерами в FreeBSD, включая информацию об титульных страницах, учёте использования принтеров и первоначальной настройке.

Гл. 10, Двоичная совместимость с Linux

  Описывает возможности Linux-совместимости в FreeBSD. Также предоставляет детальные инструкции по установке многих популярных приложений для Linux, таких как: Oracle, SAP R/3 и Mathematica®.

Гл. 11, Настройка и оптимизация

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

Гл. 12, Процесс загрузки FreeBSD

  Рассказывает о процессе загрузки FreeBSD и объясняет, как управлять этим процессом при помощи различных настроек.

Гл. 13, Пользователи и основы управления учётными записями

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

Гл. 14, Безопасность

  Описывает множество различных утилит, которые помогут вам поддерживать FreeBSD в безопасном, надёжном состоянии, включая Kerberos, IPsec и OpenSSH.

Гл. 15, Принудительный контроль доступа (MAC)

  Описывает что такое принудительный контроль доступа (Mandatory Access Control, MAC) и как этот механизм может быть использован для защиты системы FreeBSD.

Гл. 17, Устройства хранения

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

Гл. 18, GEOM

  Рассказывает о подсистеме GEOM в FreeBSD и описывает различные поддерживаемые уровни RAID.

Гл. 19, Поддержка файловых систем

  Исследует поддержку неосновных файловых систем во FreeBSD, таких как, например, Sun™ Z File System.

Гл. 20, Менеджер дискового пространства Vinum

  Рассказывает как использовать Vinum, менеджер логических разделов, при помощи которого можно создавать и использовать независимые от устройств хранения логические диски и программно реализовывать RAID-0, RAID-1 и RAID-5.

Гл. 21, Локализация -- I18N/L10N использование и настройка

  Описывает использование FreeBSD с языками, отличными от английского. Рассказывает о локализации на уровне системы и отдельных приложений.

Гл. 22, На переднем крае разработок

  Объясняет различия между FreeBSD-STABLE, FreeBSD-CURRENT и FreeBSD-RELEASE. Рассказывает, кому из пользователей будет полезно отслеживать версию системы в разработке и вкратце описывает этот процесс.

Гл. 23, Последовательные соединения

  Объясняет, как подключать терминалы и модемы к вашей системе FreeBSD, как в серверном, так и в клиентском режиме.

Гл. 24, PPP и SLIP

  Описывает использование PPP, SLIP или PPP через Ethernet для соединения с удалёнными системами при помощи FreeBSD.

Гл. 25, Электронная почта

  Описывает использование различных компонентов почтового сервера и более углублённо рассматривает простые вопросы конфигурации для наиболее популярного программного обеспечения почтовых серверов: sendmail.

Гл. 26, Сетевые серверы

  Предоставляет детальные инструкции и примеры файлов настройки для использования компьютера с FreeBSD в качестве файлового сервера (NFS), сервера доменных имен (DNS), сервера сетевой информационной системы (NIS), или сервера точного времени (ntpd).

Гл. 27, Брандмауэры

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

Гл. 28, Сложные вопросы работы в сети

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

Прил. A, Получение FreeBSD

  Перечисляет различные источники, из которых можно получить FreeBSD на CDROM или DVD, равно как и различные сайты в интернет, с которых можно скачать и установить FreeBSD.

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

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

Прил. C, Ресурсы в интернет

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

Прил. D, Ключи PGP

  Содержит ключи PGP некоторых разработчиков FreeBSD.

## Договоренности, используемые в этой книге

Для того чтобы обеспечить целостность и простоту чтения текста в данной книге, мы применяем некоторые договорённости.

### Типографические договорённости

Наклонный шрифт

  Наклонный шрифт используется для имен файлов, адресов в интернет (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). В 2003-2004 годах FreeBSD Mall, Inc заплатила нескольким контрибьюторам за улучшение Handbook при подготовке к третьей редакции.

# I. В начале

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

- Введут вас в FreeBSD.

- Проведут вас по процессу установки FreeBSD.

- Обучат вас некоторым основам UNIX.

- Покажут вам как устанавливать программные пакеты не входящие в стандартную поставку FreeBSD.

- Введут вас в X Window, оконную систему для UNIX, и опишут как настроить графическое окружение и сделать вашу работу более продуктивной.

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

# Глава 1. Введение

Исправил, реорганизовал и частично переписал Jim Mock. Перевод на русский язык: Алексей Зелькин, Денис Пеплин.

## 1.1. Краткий обзор

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

Из этой главы вы узнаете:

- Какое отношение имеет FreeBSD к другим операционным системам.

- Историю проекта FreeBSD.

- Цели проекта FreeBSD.

- Основы модели разработки FreeBSD с открытыми исходными текстами.

- И, конечно, откуда появилось имя ''FreeBSD''.

## 1.2. Добро пожаловать во FreeBSD!

FreeBSD -- это основанная на 4.4BSD-Lite операционная система для компьютеров Intel (x86 и Itanium®), AMD64, Alpha™ и Sun UltraSPARC®. Ведется работа по портированию и на другие архитектуры. Вы можете также прочесть об истории FreeBSD, или о текущем релизе. Если вы заинтересованы в помощи проекту (кодом, аппаратным обеспечением, деньгами), прочтите статью Помощь FreeBSD.

### 1.2.1. Что может FreeBSD?

FreeBSD имеет заслуживающие внимания возможности. Некоторые из них:

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

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

- Мощный TCP/IP-стек с поддержкой промышленных стандартов, таких как SLIP, PPP, NFS, DHCP и NIS. Это означает, что FreeBSD может легко взаимодействовать с другими системами, а также работать сервером масштаба предприятия, предоставляя жизненно важные функции, такие как NFS (удалённый доступ к файлам) и услуги электронной почты, или представить вашу организацию в Интернете, обеспечивая работу служб WWW, FTP, маршрутизацию и функции межсетевого экрана (брандмауэра).

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

- FreeBSD 32-разрядная операционная система (64-разрядная на Alpha, Itanium, AMD64, и UltraSPARC) и изначально создавалась именно такой.

- Промышленный стандарт X Window System (X11R6) предоставляет графический интерфейс пользователя (GUI) для большинства VGA карт и мониторов, и поставляется с полными исходными текстами.

- Двоичная совместимость с большинством программ, созданных для Linux, SCO, SVR4, BSDI и NetBSD.

- Тысячи готовых к использованию приложений доступны из коллекций портов и пакетов FreeBSD. Зачем искать что-то в сети, когда вы можете найти всё прямо здесь?

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

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

- Поддержка симметричной многопроцессорности (SMP) для машин с несколькими процессорами.

- Полный комплект инструментов для разработчика: C, C++ и Fortran. Множество дополнительных языков программирования для исследований и разработки также доступны из коллекций портов и пакетов.

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

- Обширная online-документация.

- И многое-многое другое!

FreeBSD основана на 4.4BSD-Lite от Computer Systems Research Group (CSRG) Калифорнийского Университета, Беркли, и продолжает славную традицию разработки BSD-систем. В дополнении к прекрасной работе, предоставленной CSRG, Проект FreeBSD тратит многие тысячи часов для тонкой настройки системы для максимальной производительности и надёжности в условиях максимально приближенным к ''боевым''. Когда большинство коммерческих гигантов только пытаются достичь такого уровня возможностей, производительности и надежности операционных систем для ПК, FreeBSD может предложить все это прямо сейчас!

Применение FreeBSD в действительности ограничено только вашим воображением. От разработки программного обеспечения до автоматизации производства, от складского учета до дистанционной коррекции азимутов спутниковых антенн; если задачи можно решить с помощью коммерческих UNIX-систем, скорее всего, они решаемы и с помощью FreeBSD! FreeBSD также существенно выигрывает за счет буквально тысяч высококачественных приложений, разработанных исследовательскими центрами и университетами во всём мире, и доступных за минимальную цену или даже бесплатно. Коммерческие приложения также доступны, и их с каждым днем становится всё больше.

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

- Интернет-службы: мощнейший TCP/IP стек делает FreeBSD идеальной платформой для большинства Интернет-приложений, таких как:

  - FTP-серверы

  - Серверы World Wide Web (как стандартные, так и защищённые [SSL])

  - Межсетевые экраны (firewalls) и шлюзы NAT (''IP-маскарадинг'')

  - Серверы электронной почты

  - Серверы новостей или дискуссионных групп USENET

  - и многое другое...

  Вы можете начать своё знакомство с FreeBSD, используя недорогой ПК класса 386, а впоследствии увеличить её мощь до сервера масштаба предприятия с четырьмя процессорами Xeon и RAID контроллером.

- Образование: Вы студент и ваше образование связано с компьютерами или другими инженерными дисциплинами? Нет лучшего пути начать изучение операционных систем, архитектуры компьютера и работы в сети, чем освоить FreeBSD. Количество свободно доступных пакетов САПР, математических и графических пакетов также делают её чрезвычайно полезной для тех, кто использует компьютер как инструмент для выполнения другой работы!

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

- Работа в сети: Нужен новый маршрутизатор? Сервер имён (DNS)? Межсетевой экран, защищающий от проникновения извне в вашу сеть? FreeBSD может превратить давно списанный и пылящийся в углу 386-й или 486-й ПК в мощный маршрутизатор с возможностью фильтрации пакетов.

- Рабочая станция X Window: FreeBSD прекрасный выбор, если вам нужен недорогой X-терминал, использующий свободно распространяемый сервер X11. В отличие от X-терминала, на FreeBSD можно запускать множество приложений локально, если требуется, таким образом перенеся часть нагрузки с центрального сервера. FreeBSD может быть загружена ''на бездисковой станции'', что делает рабочую станцию ещё дешевле и проще в администрировании.

- Разработка программного обеспечения: Базовая поставка FreeBSD распространяется с полным набором инструментов для разработки, включая знаменитые компилятор GNU C/C++ и отладчик.

FreeBSD доступна как в исходных текстах, так и в двоичном виде на CDROM, DVD и через анонимный доступ к FTP. Подробнее о том, как получить FreeBSD, см. в Прил. A.

### 1.2.2. Кто использует FreeBSD?

FreeBSD используется в качестве платформы на некоторых крупнейших сайтах в интернет, включая:

- Yahoo!

- Apache

- Blue Mountain Arts

- Pair Networks

- Sony Japan

- Netcraft

- Weathernews

- Supervalu

- TELEHOUSE America

- Sophos Anti-Virus

- JMA Wired

и на многих других.

## 1.3. О Проекте FreeBSD

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

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

Предоставил Jordan 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, но ещё и предоставила проекту компьютер для работы и быстрый доступ к Интернету. Без почти беспрецедентной веры 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 появлялись летом и в конце 1997 года, а последняя версия (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. Из этой ветви было выпущено несколько релизов: 4.0-RELEASE был представлен в марте 2000 года, а последний 4.11-RELEASE был выпущен в январе 2005 года.

Долгожданный 5.0-RELEASE был анонсирован 19 января 2003 года. Он стал кульминацией приблизительно трех лет работы, с этого релиза начался курс FreeBSD на расширенную поддержку мультипроцессорности и потоков в приложениях, а также появилась поддержка платформ UltraSPARC и `ia64`. За этим релизом последовал релиз 5.1 в июне 2003 года. Последним релизом 5.X из ветви -CURRENT стал 5.2.1-RELEASE, представленный в феврале 2004.

Ветвь RELENG_5 была создана в августе 2004, затем последовал выпуск релиза 5.3-RELEASE, который открыл серию релизов из ветви 5-STABLE. Самый последний релиз 7.3-RELEASE был выпущен March 2010. Из ветви RELENG_5 релизы больше выпускаться не будут.

Очередная ветвь, RELENG_6, была создана в июле 2005 года. 6.0-RELEASE, первый релиз из этой ветви, был выпущен в ноябре 2005 года. Последний из релизов ветви RELENG_6, 8.1-RELEASE, был выпущен Jul 2010. Из ветви RELENG_6 будут выпускаться еще релизы.

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

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

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

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

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

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

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

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

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

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

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

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

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

Core-группа FreeBSD

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

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

  > Замечание: Большинство членов Core-группы -- волонтёры, и не получают никакой финансовой выгоды от участия в проекте, поэтому вы не должны рассматривать возложенную на них ''ответственность'' как ''гарантированную поддержку''. Аналогия с ''советом директоров'' не очень точна и, вероятно, гораздо правильнее будет сказать, что это люди, которые посвятили себя FreeBSD, хотя и достойны лучшей участи!

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

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

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

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

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

Всё, что мы просим от желающих присоединится к нам как разработчики, -- хотя бы часть той преданности постоянному успеху FreeBSD, которой отличаются нынешние разработчики!

### 1.3.4. Текущая версия FreeBSD

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

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

В дополнение к базовой системе, FreeBSD предоставляет коллекцию портированого ПО, включающую тысячи популярных программ. На момент подготовки этого документа в ней было более 20,000 портов! В коллекцию входят множество программ от http-серверов до игр, языков программирования, текстовых редакторов и всего прочего. Полная Коллекция Портов требует приблизительно 417 MB дискового пространства, потому что порт представляет собой ''изменения'' оригинальных исходных текстов. Это сильно упрощает нам процесс обновления портов и существенно уменьшает объём занимаемого дискового пространства по сравнению со старой (1.0) Коллекцией Портов. Для того, чтобы скомпилировать и установить программу, необходимо всего лишь перейти в каталог порта программы, набрать `make install` и дать системе сделать все остальное. Полные исходные тексты для каждого порта, который вы устанавливаете, загружаются автоматически с CDROM или локального FTP-сервера, поэтому вам нужно только дисковое пространство для сборки необходимых портов. Почти каждый порт предоставляется также как скомпилированный ''пакет'', который может быть установлен с помощью простой команды (`pkg_add`) теми, кто предпочитает не компилировать порты из исходных текстов. Дополнительная информация о пакетах и портах находится в Гл. 4.

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

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

  `/usr/share/doc/ru_RU.KOI8-R/books/handbook/index.html`

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

  `/usr/share/doc/ru_RU.KOI8-R/books/faq/index.html`

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

# Глава 2. Установка FreeBSD

Реструктурировал, исправил и частично переписал Jim Mock. Обзор sysinstall, скриншоты и общее руководство Randy Pratt. Перевод на русский язык: Денис Пеплин.

## 2.1. Краткий обзор

FreeBSD поставляется простой в использовании текстовой программой установки sysinstall. Это основная программа установки FreeBSD, хотя поставщики могут предлагать свои программы. В этой главе описывается использование sysinstall для установки FreeBSD.

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

- Как создать дискеты для установки FreeBSD.

- Как FreeBSD видит и делит на разделы жесткие диски.

- Как запустить sysinstall.

- Вопросы, которые sysinstall задаст вам, что имеется ввиду, и как ответить на эти вопросы.

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

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

> Замечание: Как правило, эти инструкции по установке написаны для i386 (''PC совместимых'') компьютеров. Когда это возможно, приводятся инструкции, специфичные для других платформ. Хотя это руководство поддерживается в актуальном состоянии настолько, насколько это возможно, вы можете обнаружить небольшие различия между программой установки и тем, что показано здесь. Предполагается, что вы будете использовать эту главу в качестве общего руководства, а не как пошаговую инструкцию по установке.

## 2.2. Аппаратные требования

### 2.2.1. Минимальная конфигурация

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

Сведения о минимальной конфигурации доступны в заметках по установке со страницы Информации о релизе веб сайта FreeBSD. Обобщение этой информации дается в последующих разделах. В зависимости от метода, выбранного для установки FreeBSD, вам может потребоваться поддерживаемый дисковод или привод CDROM, а в некоторых случаях и сетевой адаптер. Эта ситуация будет описана в Разд. 2.3.7.

#### 2.2.1.1. Архитектуры FreeBSD/i386 и FreeBSD/pc98

Для версий FreeBSD/i386 и FreeBSD/pc98 требуется 486 процессор или выше, а также как минимум 24 MB памяти. Вам потребуется как минимум 150 MB свободного места на диске для самой минимальной установки.

> Замечание: Для старых конфигураций, как правило, больший объем памяти и больший объем диска более важен, чем более быстрый процессор.

#### 2.2.1.2. FreeBSD/alpha

Начиная с версии FreeBSD 7.0 поддержка архитектуры Alpha была удалена. Релизы FreeBSD 6.X -- последние, поддерживающие данную архитектуру. За более детальной информацией обратитесь к странице Release Information сайта FreeBSD.

#### 2.2.1.3. FreeBSD/amd64

Существует два класса процессоров, на которых может работать FreeBSD/amd64. К первому принадлежат процессоры AMD64, включая AMD Athlon™64, AMD Athlon64-FX, AMD Opteron™ и более новые.

Ко второму классу принадлежат процессоры архитектуры Intel® EM64T. Среди них можно назвать семейства Intel Core™ 2 Duo, Quad и Extreme, а также Intel Xeon 3000, 5000 и 7000 серии.

Если ваша система основана на nVidia nForce3 Pro-150, необходимо отключить IO APIC в BIOS. Если для этого нет необходимой опции, отключите APIC в операционной системе. В чипсете Pro-150 содержатся ошибки, для которых пока не существует исправлений.

#### 2.2.1.4. FreeBSD/sparc64

Для установки FreeBSD/sparc64, вам потребуется поддерживаемая платформа (обратитесь к Разд. 2.2.2).

Для FreeBSD/sparc64 потребуется отдельный диск. В настоящее время диск невозможно совместно использовать с другой операционной системой.

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

Список поддерживаемого оборудования поставляется с каждым релизом в FreeBSD в информации о релизе. Этот документ обычно находится в файле `HARDWARE.TXT`, в корневом каталоге CDROM или FTP дистрибутива, или меню документации sysinstall. Для данной архитектуры в нем перечислены аппаратные устройства, поддерживаемые данным релизом FreeBSD. Копии списков поддерживаемого оборудования для различных релизов и архитектур также можно просмотреть на странице Информации о релизе веб сайта FreeBSD.

## 2.3. Перед установкой

### 2.3.1. Соберите информацию о компьютере

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

Если у вас уже есть установленная операционная система, например Windows или Linux, неплохо будет использовать ее возможности для просмотра настроек оборудования. Если вы не уверены, какие настройки карты расширения использовать, можете найти их на самой карте. Часто используемые номера прерываний 3, 5 и 7, порты ввода- вывода обычно пишутся в шестнадцатеричном виде, например 0x330.

Мы рекомендуем распечатать эту информацию перед установкой FreeBSD. Вам может помочь использование таблицы вроде этой:

Таблица 2-1. Пример сведений об оборудовании

Название устройства | IRQ | Порт ввода-вывода | Примечания
--- | --- | --- | ---
Первый жесткий диск | нет | нет | 40 GB, Seagate, первый IDE master
CDROM | нет | нет | Первый IDE slave
Второй жесткий диск | нет | нет | 20 GB, IBM, второй IDE master
Первый IDE контроллер | 14 | 0x1f0 |
Сетевая карта | нет | нет | Intel 10/100
Модем | нет | нет | 3Com® 56K факс-модем, COM1
... |  |  |

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

### 2.3.2. Сделайте резервное копирование данных

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

### 2.3.3. Решите куда установить FreeBSD

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

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

#### 2.3.3.1. Разделы диска для FreeBSD/i386

Диск PC может быть поделен на отдельные части. Эти части называют разделами. Поскольку в FreeBSD также есть разделы, терминология становится запутанной, и поэтому эти части дисков называются дисковыми слайсами, или просто слайсами в FreeBSD. Например, утилита FreeBSD `fdisk`, имеющая дело с дисковыми разделами 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®, или свободно распространяемые, такие как GParted, для изменения размера разделов и освобождения места под FreeBSD. Как PartitionMagic, так и GParted способны работать с NTFS. Утилита GParted доступна на некоторых Live CD дистрибутивах Linux, например: SystemRescueCD.

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

> Внимание: Неправильное использование этих утилит может привести к уничтожению данных на диске. Удостоверьтесь в наличии свежих и исправных резервных копий данных перед их использованием.

Пример 2-1. Использование существующего раздела без изменения

Представьте что в компьютере один 4 GB диск, на котором уже установлена Windows, и диск разбит на два логических диска `C:` и `D:`, каждый по 2 GB. 1 GB данных на `C:`, и 0.5 GB данных на `D:`.

Это означает, что диск состоит из двух разделов, по одному на каждую букву. Вы можете скопировать все данные с `D:` на `C:`, это освободит второй раздел для FreeBSD.

Пример 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.3.4. Соберите информацию о конфигурации сети

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

#### 2.3.4.1. Подключение к сети Ethernet, или через кабельный/DSL модем

Если вы подключаетесь к сети Ethernet, или соединение с интернет подключено к Ethernet через кабельный или DSL модем, понадобится следующая информация:

1. IP адрес

2. IP адрес шлюза по умолчанию

3. Имя хоста

4. IP адрес DNS сервера

5. Маска подсети

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

#### 2.3.4.2. Подсоединение с помощью модема

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

Вам нужно знать:

1. Номер телефона провайдера

2. COM порт, к которому подключен модем

3. Имя пользователя и пароль учетной записи для доступа в интернет

### 2.3.5. Проверьте сведения об обнаруженных ошибках FreeBSD

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

Информация о релизах, включая сообщения об ошибках каждого релиза, находится странице информации о релизах сайта FreeBSD.

### 2.3.6. Получение установочных файлов FreeBSD

Программа установки FreeBSD может установить FreeBSD из файлов, расположенных в одном из следующих мест:

Локальный диск

- CDROM или DVD

- USB-накопитель

- Раздел DOS на вашем компьютере

- Лента SCSI или QIC

- Гибкие диски

Сеть

- FTP сервер (через файрволл или HTTP прокси, если потребуется)

- NFS сервер

- Соединение через параллельный или последовательный порт

Если вы купили FreeBSD на CD или DVD, у вас уже есть все, что нужно, переходите к следующему разделу (Разд. 2.3.7).

Если у вас нет установочных файлов FreeBSD, перейдите к Разд. 2.13, который описывает, как подготовиться к установке FreeBSD любым указанным выше способом. После прочтения этого раздела, вернитесь сюда и прочтите Разд. 2.3.7.

### 2.3.7. Подготовка загрузочных дисков

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

> Подсказка: Если у вас есть FreeBSD на CDROM или DVD (купленный или записанный самостоятельно), и компьютер позволяет загрузку с CDROM или DVD (обычно этот пункт в BIOS называется ''Boot Order'' или что-то вроде), можете пропустить этот раздел. Образы FreeBSD CDROM и DVD являются загрузочными и могут быть использованы для установки FreeBSD без какой-либо специальной подготовки.

Для создания загрузочного USB-диска выполните следующие шаги:

1. Получение образов для USB-накопителя

   Загрузочный образ для USB-накопителя можно найти в каталоге `ISO-IMAGES/` по адресу `ftp://ftp.FreeBSD.org/pub/FreeBSD/releases/`arch`/ISO-IMAGES/`version`/FreeBSD-8.1-RELEASE-`arch`-memstick.img`. Замените `arch` и `version` именем архитектуры и номером версии операционной системы, которую вы планируете установить. Например, образы USB-накопителя для FreeBSD/i386 8.1-RELEASE находятся в ftp://ftp.FreeBSD.org/pub/FreeBSD/releases/i386/ISO-IMAGES/8.1/FreeBSD-8.1-RELEASE-i386-memstick.img.

   Название файла образа заканчивается на `.img`. Каталог `ISO-IMAGES/` содержит набор образов, среди которых вам необходимо выбрать один. Выбор зависит от версии устанавливаемой FreeBSD и, в некоторых случаях, от архитектуры оборудования, на которое будет выполняться установка.

   > Важно: Перед продолжением сделайте резервную копию данных, находящихся на вашем USB-накопителе, так как последующие действия сотрут все старые данные.

2. Подготовка USB-накопителя

   > Внимание: В данном примере подразумевается, что устройство `/dev/da0` является нашим целевым устройством, с которого мы будем производить загрузку. Будьте предельно внимательны, так как, указав неверное устройство, вы уничтожите существующие на нём данные.

   Измените значение переменной sysctl `kern.geom.debugflags` так, чтобы стала возможной запись MBR на целевой накопитель.

       # sysctl kern.geom.debugflags=16

3. Запись файла-образа на USB-накопитель

   Файл `.img` не является обыкновенным файлом, копируемым на накопитель. Это образ содержимого диска. Это значит, что вы не можете просто скопировать файлы с диска на диск. Вместо копирования вы должны использовать dd(1) для записи образа непосредственно на накопитель:

       # dd if=FreeBSD-8.1-RELEASE-i386-memstick.img of=/dev/da0 bs=64k

Для создания загрузочных дискет сделайте следующее:

1. Получение образов загрузочных дискет

   > Важно: Пожалуйста, отметьте, что начиная с версии FreeBSD 8.0 образов загрузочных дискет более не существует. Вместо этого следует воспользоваться процедурами установки FreeBSD с USB-накопителя или с CDROM, или с DVD.

   Загрузочные дискеты есть на установочном диске в каталоге `floppies/`, и могут быть также закачаны из каталога floppies, `ftp://ftp.FreeBSD.org/pub/FreeBSD/releases/`arch`/`version`-RELEASE/floppies/`. Замените `arch` и `version` архитектурой компьютера и номером версии, которую вы хотите установить, соответственно. Например, загрузочные дискеты FreeBSD/i386 7.3-RELEASE для i386 находятся в ftp://ftp.FreeBSD.org/pub/FreeBSD/releases/i386/7.3-RELEASE/floppies/.

   Расширение файла образа дискеты -- `.flp`. Каталог `floppies/` содержит множество разных образов, ваш выбор будет зависеть от устанавливаемой версии FreeBSD и, в некоторых случаях, от конфигурации компьютера. В большинстве случаев потребуются четыре дискеты: `boot.flp`, `kern1.flp`, `kern2.flp` и `kern3.flp`. Обратитесь к файлу `README.TXT` в том же каталоге за свежей информацией об этих образах дискет.

   > Важно: FTP клиент должен использовать бинарный режим для загрузки образов дискет. Некоторые Web-браузеры используют текстовый (ASCII) режим, который точно не позволит загрузиться с этих дискет.

2. Подготовка дискет

   Необходимо подготовить по одной дискете на каждый загруженный образ. Эти дискеты должны быть без дефектов. Лучший способ проверить это -- отформатировать дискеты самостоятельно. Не доверяйте заводскому форматированию дискет. Утилита форматирования в Windows не сообщит о наличии плохих секторов, она просто пометит их как ''плохие'' и проигнорирует. Советуем использовать новые дискеты если вы выбрали этот способ установки.

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

3. Запись образов на дискеты

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

   Если вы записываете дискеты на компьютере под MS-DOS/Windows, используйте утилиту `fdimage`.

   Если вы используете образы с CDROM, и буква вашего CDROM `E:`, запустите ее так:

       E:\> tools\fdimage floppies\boot.flp A:

   Повторите эту команду для каждого файла `.flp`, вставляя новую дискету каждый раз, пометьте каждую дискету именем файла, который вы скопировали на него. Измените команду если потребуется, в зависимости от места, куда вы поместили файлы `.flp`. Если у вас нет CDROM, `fdimage` может быть загружена из каталога `tools` FTP сервера FreeBSD.

   Если вы записываете дискеты под UNIX (например, под другой системой FreeBSD), используйте утилиту dd(1) для записи образов непосредственно на дискеты. Под FreeBSD запустите:

       # dd if=boot.flp of=/dev/fd0

   Под FreeBSD, `/dev/fd0` означает первый гибкий диск (диск `A:`). `/dev/fd1` будет диском `B:`, и так далее. Другие UNIX системы могут по-другому именовать устройства гибких дисков, вам возможно понадобится прочитать документацию по соответствующей системе.

Теперь вы готовы к установке FreeBSD.

## 2.4. Начало установки

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

>     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.4.1. Загрузка

#### 2.4.1.1. Загрузка i386™

1. Компьютер выключен.

2. Включите компьютер. После включения он должен показать способ входа в меню установки BIOS, как правило это клавиши F2, F10, Del, или Alt+S. Используете те клавиши, которые показаны на экране. В некоторых случаях компьютер может показывать картинку после запуска. Как правило, нажатие Esc уберет картинку и позволит вам увидеть необходимую информацию.

3. Найдите установки системы, указывающие ей с какого устройства загружаться. Обычно они обозначаются как ''Boot Order'', и там как правило отображен список устройств, таких как `Floppy`, `CDROM`, `First Hard Disk`, и так далее.

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

   Сделайте изменения, затем сохраните их и выйдите. Компьютер должен перезагрузиться.

4. Если вы подготовили ''загрузочный'' USB-носитель, как описано в Разд. 2.3.7, вставьте его в USB порт перед включением компьютера.

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

   > Замечание: Для FreeBSD версий 7.3 и более ранних существуют образы загрузочных дискет. Подготовка и использование дискет описаны в Разд. 2.3.7. Для загрузки компьютера первой в дисковод необходимо вставить дискету, содержащую образ `boot.flp`.

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

   1. Диск был вставлен недостаточно рано в процессе загрузки. Оставьте его внутри и перегрузите компьютер.

   2. Установки BIOS, измененные ранее, действуют неправильно. Надо изменять их, пока они не заработают.

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

5. FreeBSD начнет загрузку. Если загрузка происходит с CDROM, вы увидите что-то вроде этого (информация о версии удалена):

       Booting from CD-Rom...
       645MB medium detected
       CD Loader 1.2

       Building the boot loader arguments
       Looking up /BOOT/LOADER... Found
       Relocating the loader and the BTX
       Starting the BTX loader

       BTX loader 1.00 BTX version is 1.02
       Consoles: internal video/keyboard
       BIOS CD is cd0
       BIOS drive C: is disk0
       BIOS drive D: is disk1
       BIOS 636kB/261056kB available memory

       FreeBSD/i386 bootstrap loader, Revision 1.1

       Loading /boot/defaults/loader.conf
       /boot/kernel/kernel text=0x64daa0 data=0xa4e80+0xa9e40 syms=[0x4+0x6cac0+0x4+0x88e9d]
       \

   Если происходит загрузка с дискеты, вы увидите что-то вроде этого (информация о версии удалена):

       Booting from Floppy...
       Uncompressing ... done

       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 1.1

       Loading /boot/defaults/loader.conf
       /kernel text=0x277391 data=0x3268c+0x332a8 |

       Insert disk labelled "Kernel floppy 1" and press any key...

   Следуя инструкциям, уберите дискету с `boot.flp`, вставьте дискету с `kern1.flp` и нажмите Enter. Загрузитесь с первой дискеты; последовательно вставляйте остальные диски при появлении соответствующего приглашения.

6. Идет ли загрузка с CDROM, или с USB-носителя, или с дискеты в процессе загрузки появится меню загрузчика FreeBSD:

   Рисунок 2-1. FreeBSD Boot Loader Menu

   Подождите десять секунд или нажмите Enter.

#### 2.4.1.2. Загрузка Sparc64®

Большинство систем Sparc64® настроены на автоматическую загрузку с жесткого диска. Для того, чтобы установить FreeBSD, вам потребуется выполнить загрузку по сети или с компакт-диска, что в свою очередь требует получения доступа к PROM (OpenFirmware).

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

    Sun Blade 100 (UltraSPARC-IIe), Keyboard Present
    Copyright 1998-2001 Sun Microsystems, Inc.  All rights reserved.
    OpenBoot 4.2, 128 MB memory installed, Serial #51090132.
    Ethernet address 0:3:ba:b:92:d4, Host ID: 830b92d4.

Если на данном этапе ваша система продолжает загружаться с диска, то для доступа к PROM вам потребуется нажать на клавиатуре сочетания клавиш L1+A или Stop+A, или же -- послать `BREAK` на последовательной консоли (например, набрав `~#` в tip(1) или cu(1)). Приглашение PROM выглядит подобно следующему:

    ok
    ok {0}

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

На этой стадии необходимо вставить CDROM в привод и набрать `boot cdrom` в приглашении PROM.

### 2.4.2. Просмотр результатов тестирования устройств

Последние несколько сотен линий, отображенные на экране, сохраняются и могут быть просмотрены.

Для просмотра буфера нажмите Scroll Lock. Это включит прокрутку экрана. Вы можете использовать клавиши навигации или PageUp и PageDown для просмотра результатов. Нажмите Scroll Lock еще раз для отключения прокрутки.

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

Рисунок 2-2. Типичный вывод 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 обнаружила все устройства, какие нужно. Если устройство не найдено, его не будет в списке. Собственное ядро позволяет добавлять поддержку устройств, отсутствующих в ядре `GENERIC`, например звуковых карт.

В FreeBSD 6.2 и более поздних, после проверки аппаратных устройств, появится Рис. 2-3. Используйте клавиши навигации для выбора страны, региона или группы. Затем нажмите Enter, произойдет выбор страны. Вы также можете выйти из программы sysinstall и начать все сначала.

Рисунок 2-3. Меню выбора страны

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

Рисунок 2-4. Меню выбора раскладки клавиатуры

Рисунок 2-5. Выбор Sysinstall Exit

Используйте клавиши навигации для выбора Exit Install из главного меню. Отобразится сообщение:

                          User Confirmation Requested
             Are you sure you wish to exit? The system will reboot

                                [ Yes ]    No

Программа установки запустится опять, если было выбрано [ Yes ] и компакт-диск остался в устройстве.

Если вы загружаетесь с дискет, необходимо будет извлечь дискету с `boot.flp` перед перезагрузкой.

## 2.5. Введение в Sysinstall

Утилита sysinstall это программа установки, предоставляемая проектом FreeBSD. Это консольное приложение, разделенное на несколько меню и экранов, которые вы можете использовать для настройки и управления процессом установки.

Меню sysinstall управляется клавишами навигации, Enter, Tab, пробелом, и другими. Подробное описание клавиш и их функций содержится в информации по использованию sysinstall.

Для просмотра этой информации убедитесь, что выбраны пункт Usage и кнопка [Select], как показано на Рис. 2-6, затем нажмите Enter.

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

Рисунок 2-6. Выбор Usage в главном меню Sysinstall

### 2.5.1. Выбор меню документации (Doc)

Из главного меню выберите клавишами навигации Doc и нажмите Enter.

Рисунок 2-7. Выбор меню документации

Будет отображено меню документации.

Рисунок 2-8. Меню документации Sysinstall

Рекомендуется прочитать предоставляемую документацию.

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

Для возврата в главное меню выберите Exit с помощью клавиш навигации и нажмите Enter.

### 2.5.2. Выбор меню раскладки клавиатуры (Keymap)

Для изменения раскладки клавиатуры выберите из меню с помощью клавиш навигации Keymap и нажмите Enter. Это потребуется только при использовании нестандартной или не-US клавиатуры.

Рисунок 2-9. Выбор меню раскладки клавиатуры

Различные раскладки клавиатуры могут быть выбраны из меню с использованием клавиш навигации, затем следует нажать Space. Нажатие Space еще раз приведет к отмене выбора. Когда необходимые раскладки будут выбраны, перейдите на [ OK ] с помощью клавиш навигации и нажмите Enter.

На экран выведена только часть списка. Нажав Tab, можно выбрать [ Cancel ], вернуться к раскладке по умолчанию и перейти к главному меню.

Рисунок 2-10. Меню раскладки клавиатуры

### 2.5.3. Параметры установки (Options)

Выберите пункт Options и нажмите Enter.

Рисунок 2-11. Выбор параметров установки

Рисунок 2-12. Параметры Sysinstall

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

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

Нажатие F1 отобразит справку по различным параметрам.

Нажатием Q можно перейти к главному меню.

### 2.5.4. Начало стандартной установки (Standart)

Пункт Standard рекомендуется для новых пользователей UNIX или FreeBSD. Используйте клавиши навигации для выбора пункта Standard, а затем нажмите Enter для запуска установки.

Рисунок 2-13. Начало стандартной установки

## 2.6. Выделение дискового пространства

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

### 2.6.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.6.2. Создание слайсов с использованием FDisk

> Замечание: Внесенные вами изменения не будут записываться на диск сразу. Если вы думаете, что сделали ошибку, и хотите начать сначала, можете использовать меню для выхода из 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 как предлагается. Будет показан список всех жестких дисков, обнаруженных ядром во время тестирования устройств. Рис. 2-14 показывает пример системы с двумя IDE дисками. Они были названы `ad0` и `ad2`.

Рисунок 2-14. Выберите диск для 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 будет выглядеть примерно как Рис. 2-15.

Экран FDisk разбит на три раздела.

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

Второй раздел показывает имеющиеся в данный момент на диске слайсы, где они начинаются и заканчиваются, их размер, имя, которое им дала FreeBSD, описание и подтип. На этом примере показаны два маленьких неиспользованных слайса, которые являются артефактами схемы разметки диска на PC. Также показан один большой FAT слайс, который почти всегда является диском `C:` в MS-DOS / Windows, и дополнительный слайс, который может содержать диски с другими буквами для MS-DOS / Windows.

Третий раздел показывает команды, доступные в FDisk.

Рисунок 2-15. Типичные разделы fdisk перед редактированием

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

Если вы хотите использовать для FreeBSD весь диск (это приведет к удалению всех других данных на этом диске когда вы подтвердите sysinstall продолжение процесса установки), нажмите A, что соответствует опции Использовать весь диск (Use Entire Disk). Существующие слайсы будут удалены, и заменены на небольшую область, помеченную как `неиспользуемая (unused)` (это опять же артефакт разметки диска PC), и один большой слайс для FreeBSD. Когда вы сделаете это, нужно выбрать вновь созданный слайс FreeBSD используя клавиши навигации, а затем нажать S, чтобы сделать слайс загрузочным. Экран будет похож на Рис. 2-16. Обратите внимание, что `A` в колонке `Flags` означает, что слайс активен и с него будет происходить загрузка.

Если вы будете удалять существующий слайс для освобождения места под FreeBSD, выберите слайс, используя клавиши навигации, и нажмите D. Затем можете нажать C, и получить приглашение на ввод размера слайса, который вы хотите создать. Введите соответствующее значение и нажмите Enter. Значение по умолчанию в этом поле означает наибольший размер слайса, который может быть выбран; это может быть наибольший непрерывный блок неразмеченного пространства или размер всего жесткого диска.

Если вы уже освободили место для FreeBSD (возможно, используя утилиту вроде PartitionMagic), можете нажать C для создания нового слайса. Будет также предложено ввести размер слайса, который вы хотите создать.

Рисунок 2-16. Разбиение в Fdisk с использованием всего диска

Когда закончите, нажмите Q. Изменения будут сохранены в sysinstall, но еще не записаны на диск.

### 2.6.3. Установка менеджера загрузки (Boot Manager)

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

- У вас больше чем один диск и вы устанавливаете FreeBSD не на первый диск.

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

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

Сделайте выбор и нажмите Enter.

Рисунок 2-17. Меню менеджера загрузки Sysinstall

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

### 2.6.4. Создание слайсов на другом диске

Если дисков больше чем один, вернитесь к экрану выбора дисков (Select Drives) после выбора менеджера загрузки. Если вы собираетесь устанавливать FreeBSD более чем на один диск, можете выбрать другой диск и повторить процесс разбиения на слайсы с использованием FDisk.

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

Рисунок 2-18. Выход из выбора диска

Клавиша Tab переключает между последним выбранным диском, [ OK ], и [ Cancel ].

Нажмите Tab один раз для выбора [ OK ], затем нажмите Enter для продолжения установки.

### 2.6.5. Создание разделов с помощью Disklabel

Теперь вы должны создать несколько разделов внутри каждого только что созданного слайса. Запомните, что у каждого раздела есть буква с `a` до `h`, а разделы `b`, `c`, и `d` имеют соглашения, которых вы должны придерживаться.

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

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

Таблица 2-2. Планирование разделов для первого диска

Раздел | Файловая система | Размер | Описание
--- | --- | --- | ---
`a` | `/` | 1 GB | Корневая файловая система. Любая другая файловая система будет смонтирована на эту. 1 GB это подходящий размер для этой файловой системы. Вы не будете хранить на ней слишком много данных, а обычная установка FreeBSD разместит здесь около 128 MB данных. Оставшееся пространство используется для временных файлов, а также оставляет возможность расширения для будущих версий FreeBSD, которым может понадобится больше места в `/`.
`b` | N/A | 2-3 x RAM | Раздел подкачки находится на разделе `b`. Выбор правильного размера раздела подкачки это немного искусство. Хороший практический способ выбрать размер подкачки это установить его равным двум или трем размерам доступной физической памяти (RAM). Должно быть хотя бы 64 MB подкачки; если в компьютере меньше чем 32 MB памяти -- установите размер подкачки равным 64 MB. Если у вас больше одного диска, можно расположить подкачку на каждом диске. FreeBSD будет использовать каждый диск, что серьезно увеличит скорость подкачки. В этом случае, определите общий размер подкачки, который вам нужен (например, 128 MB), и поделите его на число имеющихся дисков (например, два) для определения размера разделов подкачки, которые нужно разместить на каждом вашем диске, в этом примере 64 MB на диск.
`e` | `/var` | 512 MB | Каталог `/var` содержит файлы, которые постоянно меняются; логи и другие административные файлы. Многие из этих файлов интенсивно читаются и записываются в процессе ежедневной работы FreeBSD. Размещение их на отдельной файловой системе позволяет FreeBSD оптимизировать доступ к этим файлам без затрагивания других каталогов, не имеющих такой же модели доступа.
`f` | `/usr` | Остальная часть диска (по крайней мере -- 8 GB) | Все другие файлы как правило хранятся в каталоге `/usr` и его подкаталогах.

> Внимание: Значения, приведённые выше, являются примерными и уместны к использованию лишь опытными пользователями. Остальным -- рекомендуется применять опцию автоматического разбиения, называемую `Auto Defaults` в редакторе разделов FreeBSD.

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

Таблица 2-3. Разметка разделов для остальных дисков

Раздел | Файловая система | Размер | Описание
--- | --- | --- | ---
`b` | N/A | Смотрите описание | Как уже обсуждалось, вы можете распространить подкачку на каждый диск. Даже если раздел `a` свободен, соглашение говорит о том, что подкачка находится на разделе `b`.
`e` | /disk`n` | Остальная часть диска | Остальная часть диска занята одним большим разделом. Он легко может быть помещен на раздел `a` вместо раздела `e`. Однако, соглашение говорит, что раздел `a` зарезервирован на слайсе для корневой (`/`) файловой системы. вы можете не следовать этому соглашению, но программа sysinstall будет ему следовать, поэтому приняв его, вы сделаете установку несколько проще. Вы можете монтировать эти файловые системы к любой точке; в этом примере предлагается смонтировать их как каталоги `/disk`n``, где `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 (1 GB 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.

Рис. 2-19 показывает экран только что запущенного Disklabel. Экран поделен на три раздела.

Первые несколько линий показывают имя диска, с которым вы сейчас работаете и слайс, содержащий раздел, который вы создаете (здесь Disklabel называет это `именем раздела (Partition name)` вместо имени слайса). Этот экран также показывает объем свободного пространства на слайсе, т.е. пространство, выделенное под слайс, но еще не отданное под раздел.

В центре экрана показаны уже созданные разделы, имена файловых систем, содержащихся в разделах, их размер и некоторые опции, применяемые при создания файловых систем.

Нижняя треть экрана показывает управляющие клавиши, работающие в Disklabel.

Рисунок 2-19. Редактор Sysinstall Disklabel

Disklabel может автоматически создать разделы и присвоить им размеры по умолчанию. Значения размеров по умолчанию вычисляются с помощью внутреннего алгоритма, исходя из емкости диска. Попробуйте это, нажав A. Вы увидите экран как на Рис. 2-20. В зависимости от размера диска, значения по умолчанию могут подходить или не подходить вам. Это не имеет значения, если вы не принимаете их.

> Замечание: По умолчанию под каталог `/tmp` выделяется собственный раздел вместо использования части раздела `/`. Это помогает избежать заполнения раздела `/` временными файлами.

Рисунок 2-20. Редактор Sysinstall Disklabel с установками по умолчанию

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

Для создания первого раздела (`a`, монтируемого как `/` -- root), убедитесь, что выбран соответствующий слайс вверху экрана и нажмите C. Появится диалог, предлагающий выбрать размер нового раздела (как показано на Рис. 2-21). Вы можете ввести количество блоков диска, или количество мегабайт с `M` после номера, или гигабайт с `G`, или цилиндров с `C`.

Рисунок 2-21. Свободное место для корневого раздела

Размер по умолчанию задан для создания корневого раздела на весь слайс. Если вы используете размеры разделов, описанные ранее в примере, удалите это значение используя Backspace, а затем введите `512M`, как показано на Рис. 2-22. Затем нажмите [ OK ].

Рисунок 2-22. Редактирование размера корневого раздела

После указания размера раздела вам будет задан вопрос, должен ли этот раздел содержать файловую систему или раздел подкачки. Диалог показан на Рис. 2-23. Первый раздел будет содержать файловую систему, поэтому проверьте, что выбрана FS и нажмите Enter.

Рисунок 2-23. Выбор типа корневого раздела

Наконец, поскольку вы создаете файловую систему, нужно сказать Disklabel где файловая система будет смонтирована. Диалог показан на Рис. 2-24. Точка монтирования корневой файловой системы `/`, поэтому введите `/`, и нажмите Enter.

Рисунок 2-24. Выбор точки монтирования корневой файловой системы

На экране будет показан вновь созданный раздел. Вам нужно повторить эту процедуру для других разделов. При создании раздела подкачки вопроса про точку монтирования не будет, поскольку раздел подкачки никогда не монтируется. Когда будете создавать последний раздел, `/usr`, можете оставить предложенный размер как есть, чтобы использовать весь остаток слайса.

Последний экран FreeBSD редактора DiskLabel будет похож на Рис. 2-25, хотя ваш выбор значений может быть другим. Нажмите Q, чтобы выйти.

Рисунок 2-25. Редактор Sysinstall Disklabel

## 2.7. Выбор устанавливаемых компонентов

### 2.7.1. Выбор дистрибутивного набора (Distribution Set)

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

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

Если желательно наличие графического интерфейса пользователя, то задачи настройки X сервера и выбора десктопа по умолчанию должны быть выполнены после установки FreeBSD. Более подробная информация по установке и настройке X сервера находится в Гл. 5.

Если планируется пересборка ядра, выберите опцию, включающую исходные тексты. Информация о том, зачем пересобирать ядро и как это сделать, находится на Гл. 8.

Ясно, что наиболее универсальная система включает все. Если места на диске достаточно, выберите All, как показано на Рис. 2-26 и нажмите Enter. Если есть сомнения относительно того, хватит ли диска, используйте наиболее подходящую опцию. Не беспокойтесь о том, какой выбор будет наилучшим, другие части дистрибутива могут быть добавлены после установки.

Рисунок 2-26. Выбор дистрибутивных наборов

### 2.7.2. Установка Коллекции Портов

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

Программа установки не проверяет, есть ли достаточно места. Выберите эту опцию только в том случае, если его достаточно. В FreeBSD 8.1, Коллекция Портов занимает около 417 MB. В более современных релизах это значение всегда больше.

                             User Confirmation Requested
     Would you like to install the FreeBSD ports collection?

     This will give you ready access to over 20,000 ported software packages,
     at a cost of around 417 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, чтобы продолжить. Меню выбора дистрибутивных наборов появится опять.

Рисунок 2-27. Подтверждение выбора дистрибутивного набора

Если вы согласны с выбранными опциями, переместитесь на Exit, убедитесь, что выбран [ OK ] и нажмите Enter, чтобы продолжить.

## 2.8. Выбор источника для установки

При установке с CDROM или DVD используйте клавиши навигации, для перехода к пункту Install from a FreeBSD CD/DVD. Убедитесь, что выбран [ OK ], и нажмите Enter для запуска установки.

При других методах установки выберите соответствующую опцию и следуйте инструкциям.

Нажмите F1 для просмотра справки по источникам установки. Нажмите Enter для возврата к меню выбора источника установки.

Рисунок 2-28. Выбор источника установки

> Режимы установки с 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 протокол (как Web-браузер) для работы с FTP через прокси. Прокси будет транслировать все запросы и посылать их на FTP сервер. Это позволяет проходить через файрволл, на котором FTP запрещен, но есть HTTP прокси. В этом случае потребуется указать прокси и FTP сервер.

> Для работы с FTP через прокси, необходимо поместить имя сервера как часть имени пользователя после знака ''@''. Прокси сервер ''обманет'' настоящий сервер. Например, предположим что вы хотите провести установку с `ftp.FreeBSD.org`, используя FTP через прокси `foo.example.com`, прослушивающем порт 1234.

> В этом случае, войдите в меню параметров, установите имя пользователя 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` как требуется для установки).

## 2.9. Подтверждение установки

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

                           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: /usr/sbin/sysinstall.

                                     [ OK ]

                          [  Press enter or space  ]

Нажмите 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 вернет вас в главное меню установки, чтобы выйти из нее.

## 2.10. После установки

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

### 2.10.1. Настройка сетевых устройств (Network Device Configuration)

Если вы настраивали PPP для установки через FTP, этот экран не появится, и настройку можно будет произвести позже как описано выше.

Чтобы лучше узнать о локальных сетях и настройке FreeBSD в качестве шлюза/маршрутизатора, обратитесь к главе Сложные вопросы работы в сети.

                          User Confirmation Requested
       Would you like to configure any Ethernet or PPP network devices?

                                 [ Yes ]   No

Для настройки сетевого устройства выберите [ Yes ] и нажмите Enter. Или нажмите [ No ], чтобы продолжить.

Рисунок 2-29. Выбор 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, и, если все пройдет нормально, заполнит информацию о конфигурации сети автоматически. Обратитесь к Разд. 26.5 за более подробными сведениями.

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

Рисунок 2-30. Настройка сети для 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

  Адрес блока, использованного для этой локальной сети, это `192.168.0.0` - `192.168.0.255`. с маской сети `255.255.255.0`.

Дополнительные параметры для ifconfig

  Любые специфичные для интерфейса опции к `ifconfig`, которые вы хотите добавить. В данном случае ничего.

Используйте Tab для выбора [ OK ] после окончания настройки и нажмите Enter.

                          User Confirmation Requested
        Would you like to bring the ed0 interface up right now?

                                 [ Yes ]   No

Выбор [ Yes ] и нажатие Enter введет компьютер в сеть. Тем не менее, компьютеру все еще требуется перезагрузка.

### 2.10.2. Настройка шлюза (Configure Gateway)

                           User Confirmation Requested
           Do you want this machine to function as a network gateway?

                                  [ Yes ]    No

Если компьютер будет шлюзом для локальной сети, пересылая пакеты между другими компьютерами, выберите [ Yes ] и нажмите Enter. Если это обычный компьютер, выберите [ No ] и нажмите Enter для продолжения.

### 2.10.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` с помощью вашего любимого текстового редактора. Обращайтесь к Разд. 26.2.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 ] позволит добавить сервисы путем удаления `#` перед началом строки.

Рисунок 2-31. Редактирование `inetd.conf`

После добавления нужных сервисов нажатие Esc отобразит меню, позволяющее выйти с сохранением изменений.

### 2.10.4. Настройка входа по SSH

                          User Confirmation Requested
                      Would you like to enable SSH login?
                               Yes        [  No  ]

Выбор [ Yes ] активирует запуск sshd(8) -- демона для приложения OpenSSH, что в свою очередь позволит создавать безопасные удалённые соединения c вашей машиной. За более детальной информацией о OpenSSH обратитесь к Разд. 14.11.

### 2.10.5. Анонимный (Anonymous) FTP

                          User Confirmation Requested
     Do you want to have anonymous FTP access to this machine?

                                  Yes    [ No ]

#### 2.10.5.1. Запрещение анонимного FTP

Выбор кнопки по умолчанию [ No ] и нажатие Enter все же позволит пользователям, имеющим учетные записи с паролями, использовать FTP для доступа к компьютеру.

#### 2.10.5.2. Разрешение анонимного FTP

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

Чтобы разрешить анонимный FTP, выберите [ Yes ], используя клавиши навигации, и нажмите Enter. От вас потребуется дополнительное подтверждение:

                           User Confirmation Requested
     Anonymous FTP permits un-authenticated users to connect to the system
     FTP server, if FTP service is enabled.  Anonymous users are
     restricted to a specific subset of the file system, and the default
     configuration provides a drop-box incoming directory to which uploads
     are permitted.  You must separately enable both inetd(8), and enable
     ftpd(8) in inetd.conf(5) for FTP services to be available.  If you
     did not do so earlier, you will have the opportunity to enable inetd(8)
     again later.

     If you want the server to be read-only you should leave the upload
     directory option empty and add the -r command-line option to ftpd(8)
     in inetd.conf(5)

     Do you wish to continue configuring anonymous FTP?

                              [ Yes ]         No

В этом сообщении сказано: если вы хотите разрешить анонимный FTP доступ, то вам также придется активировать (см. Разд. 2.10.3) сам сервис FTP в `/etc/inetd.conf`. Выберите [ Yes ], нажмите Enter, далее отобразится следующий экран:

Рисунок 2-32. Настройка по анонимного FTP по умолчанию

Используя Tab для выбора полей ввода, заполните соответствующую информацию:

UID

  Идентификатор, который вы намереваетесь присвоить анонимному пользователю FTP. Файлам, загруженным на FTP, будет присвоен этот идентификатор.

Group

  В эту группу будет входить анонимный пользователь FTP.

Comment

  Строка с описанием анонимного пользователя; она будет внесена в `/etc/passwd`.

FTP Root Directory

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

Upload Subdirectory

  Подкаталог, доступный на запись анонимному пользователю FTP.

Корневой каталог 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.

Рисунок 2-33. Редактирование FTP Welcome Message

Этот текстовый редактор называется `ee`. Используйте инструкции, чтобы изменить сообщение, или измените сообщение позже, используя выбранный вами редактор. Обратите внимание, что имя/расположение файла показаны внизу окна редактора.

Нажмите Esc и появится меню с пунктом по умолчанию a) leave editor (выйти из редактора). Нажмите Enter, чтобы выйти и продолжить. Нажмите Enter еще раз, чтобы сохранить изменения, если они были сделаны.

### 2.10.6. Настройка сетевой файловой системы (Configure Network File System)

Сетевая файловая система (Network File System, NFS) позволяет совместно использовать файлы в сети. Компьютер может быть настроен как сервер, клиент, или как то и другое. Обратитесь к Разд. 26.3 за более подробной информацией.

#### 2.10.6.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`.

Рисунок 2-34. Редактирование `exports`

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

Нажмите Esc и появится меню с пунктом по умолчанию a) leave editor. Нажмите Enter, чтобы выйти и продолжить.

#### 2.10.6.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.10.7. Настройки системной консоли (System Console Settings)

Есть несколько параметров для настройки системной консоли.

                          User Confirmation Requested
           Would you like to customize your system console settings?

                                  [ Yes ]  No

Для просмотра и настройки параметров выберите [ Yes ] и нажмите Enter.

Рисунок 2-35. Параметры настройки системной консоли

Часто используемая опция это хранитель экрана (screen saver). Используйте клавиши навигации для выбора Saver и нажмите Enter.

Рисунок 2-36. Параметры хранителя экрана

Выберите подходящий хранитель экрана с помощью клавиш навигации и нажмите Enter. Опять появится меню настройки системной консоли.

Время по умолчанию 300 секунд. Для изменения временного интервала выберите Saver еще раз. В меню настроек хранителя экрана выберите Timeout с помощью клавиш навигации и нажмите Enter. Появится меню:

Рисунок 2-37. Временной интервал хранителя экрана

Значение может быть изменено, затем выберите [ OK ] и нажмите Enter для возврата в меню настройки системной консоли.

Рисунок 2-38. Выход из меню конфигурации консоли

Выбор Exit и нажатие Enter вернет вас к послеустановочной настройке.

### 2.10.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.

Рисунок 2-39. Выбор региона

Соответствующий регион выбран с помощью клавиш навигации и нажат Enter.

Рисунок 2-40. Выбор страны

Выберите соответствующую страну с помощью клавиш навигации и нажмите Enter.

Рисунок 2-41. Выбор часового пояса

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

                                Confirmation
                Does the abbreviation 'EDT' look reasonable?

                                [ Yes ]   No

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

### 2.10.9. Совместимость с Linux (Linux Compatibility)

> Замечание: Эта информация применима к установке FreeBSD 7.X. Если вы устанавливаете FreeBSD 8.X, нижеследующее меню предложено не будет.

                          User Confirmation Requested
              Would you like to enable Linux binary compatibility?

                                [ Yes ]   No

Выбор [ Yes ] и нажатие Enter позволит запускать программы Linux под FreeBSD. Программа установки добавит соответствующие пакеты для совместимости с Linux.

При установке по FTP, компьютеру потребуется соединиться с интернет. Иногда на сервере ftp нет всех необходимых компонент, например для бинарной совместимости с Linux. Эти компоненты могут быть установлены позже, если потребуется.

### 2.10.10. Настройка мыши (Mouse Settings)

Эти настройки позволят вырезать и вставлять текст в консоли и пользовательских программах с помощью трехкнопочной мыши. Если используется двухкнопочная мышь, обратитесь к странице справочника moused(8) после установки, чтобы узнать подробности об эмуляции трехкнопочной мыши. Этот пример приведен для настройки не-USB мыши (например мыши для порта PS/2 или COM):

                          User Confirmation Requested
             Does this system have a PS/2, serial, or bus mouse?

                                [ Yes ]    No

Выберите [ Yes ] для PS/2 мыши, последовательной мыши или мыши типа bus mouse. Выберите [ No ] для USB мыши и нажмите Enter.

Рисунок 2-42. Выбор протокола мыши

Используйте клавиши навигации для выбора Type и нажмите Enter.

Рисунок 2-43. Установка протокола мыши

В этом примере использована PS/2 мышь, поэтому подойдет протокол по умолчанию Auto. Чтобы изменить протокол, используйте клавиши навигации для выбора другого пункта. Убедитесь, что выбран [ OK ], и нажмите Enter для выхода из меню.

Рисунок 2-44. Настройка порта мыши

Используйте клавиши навигации для выбора Port и нажмите Enter.

Рисунок 2-45. Установка порта мыши

К этой системе подключена мышь PS/2, поэтому подходит значение по умолчанию PS/2. Чтобы изменить порт, используйте клавиши навигации и нажмите Enter.

Рисунок 2-46. Запуск даемона мыши

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

Рисунок 2-47. Проверка даемона мыши

Подвигайте курсор по экрану и убедитесь, что он движется правильно. Если это так, выберите [ Yes ] и нажмите Enter. Если нет, мышь не была правильно настроена -- выберите [ No ] и попробуйте использовать другие опции настройки.

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

### 2.10.11. Установка пакетов (Install Packages)

Пакеты -- это прекомпилированные бинарные файлы и это удобный способ установки программ.

В качестве примера показана установка одного пакета. Если потребуется, можно установить дополнительные пакеты. После установки для добавления пакетов может быть использована команда `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 приведет к появлению экрана выбора пакетов:

Рисунок 2-48. Выбор категории пакетов

Только пакеты с текущего носителя доступны для установки в любое время.

Все доступные пакеты будут показаны если выбрать категорию All, можно также выбирать отдельные категории. Перейдите к выбранной категории с помощью клавиш навигации и нажмите Enter.

Появится меню, содержащее доступные в данной категории пакеты.

Рисунок 2-49. Выбор пакетов

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

Нажатие Tab переключает между последним выбранным пакетом, [ OK ], и [ Cancel ].

После того, как будет закончена отметка пакетов для установки, нажмите Tab один раз для переключения на [ OK ] и нажмите Enter для переключения на меню выбора пакетов.

Нажимая клавиши навигации влево или вправо, можно переключаться между [ OK ] и [ Cancel ]. Этот метод может быть применен также для выбора [ OK ] и возврата к меню выбора пакетов нажатием Enter.

Рисунок 2-50. Установка пакетов

Используйте Tab и клавиши навигации для выбора [ Install ] и нажмите Enter. вам потребуется подтвердить установку пакетов:

Рисунок 2-51. Подтверждение установки пакетов

Выбор [ OK ] и нажатие Enter запустит установку пакетов. Во время установки будут выдаваться сообщения. Обратите внимание на возможные сообщения об ошибках.

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

### 2.10.12. Добавление пользователей/групп (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, чтобы продолжить добавление пользователя.

Рисунок 2-52. Выбор User (пользователь)

Выберите User с помощью клавиш навигации и нажмите Enter.

Рисунок 2-53. Вод информации о пользователе

При выборе полей с помощью 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) появится снова:

Рисунок 2-54. Выход из меню управления пользователями и группами

Сейчас также можно добавить группы, если известно, для чего они потребуются. Иначе в это меню можно войти, запустив `sysinstall` после окончания установки.

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

### 2.10.13. Установка пароля `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 or space ]

Нажмите Enter для установки пароля `root`.

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

    New password:
    Retype new password :

Установка продолжится после успешного ввода пароля.

### 2.10.14. Выход из установки (Exiting Install)

Если нужно настроить дополнительные сетевые устройства, или произвести другие настройки, вы можете сделать это сейчас или после установки с помощью `sysinstall`.

                         User Confirmation Requested
     Visit the general configuration menu for a chance to set any last
     options?

                                  Yes   [ No ]

Выберите [ No ] с помощью клавиш навигации и нажмите Enter для возврата к главному меню установки.

Рисунок 2-55. Выход из установки

Выберите [X Exit Install] с помощью клавиш навигации и нажмите Enter. Будет задан вопрос о подтверждении выхода из установки:

                         User Confirmation Requested
     Are you sure you wish to exit? The system will reboot.

                                [ Yes ]   No

Выберите [ Yes ]. Если вы загружались с привода CDROM, следующее сообщение напомнит вам о необходимости извлечь диск:

                        Message
     Be sure to remove the media from the drive.

                        [ OK ]
               [ Press enter or space ]

CDROM заблокирован, пока компьютер не начнет перегружаться. CDROM будет разблокирован и диск нужно будет извлечь из привода (быстро). Выберите [ OK ].

Система начнет перезагрузку, смотрите за сообщениями об ошибках, которые могут появиться. За подробностями по процессу загрузки обратитесь к Разд. 2.10.16.

### 2.10.15. Настройка дополнительных сетевых сервисов

Текст предоставил Том Родес.

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

Сетевые сервисы -- это программы, принимающие данные из любой точки сети. Чтобы убедиться, что эти программы не делают ничего ''вредного'', требуется особое внимание. К сожалению, программисты не совершенны и время от времени допускают ошибки в сетевых сервисах; эти ошибки позволяют атакующим взломать их и использовать в собственных целях. Важно, чтобы вы включали сетевые сервисы только в том случае, если знаете, какие сервисы нужны. В случае сомнений лучше не включать сервис, пока он не понадобится. Вы всегда можете включить его позже, запустив sysinstall еще раз, или используя возможности, предоставляемые файлом `/etc/rc.conf`.

Выбор опции Networking отобразит меню, похожее на это:

Рисунок 2-56. Верхняя часть меню настройки сети (Network Configuration)

Первая опция, Interfaces (интерфейсы), была ранее описана в Разд. 2.10.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, агент передачи почты). Выбор этой опции приведет к появлению следующего меню:

Рисунок 2-57. Выбор MTA по умолчанию

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

Выбор Sendmail приведет к установке популярного сервера sendmail, MTA по умолчанию для FreeBSD. Опция Sendmail local настроит sendmail в качестве MTA по умолчанию, но отключит возможность получения входящей почты из интернет. Другие MTA, представленные здесь, Postfix и Exim, действуют подобно Sendmail. Оба они доставляют почту; тем не менее, некоторые пользователи предпочитают эти альтернативы sendmail.

После выбора MTA или пропуска этого пункта появится меню настройки сети со следующей опцией, клиент NFS.

Клиент NFS позволяет настроить систему для соединения с сервером через NFS. Сервер NFS дает другим машинам доступ к файловой системе через протокол NFS. Если это отдельно стоящий компьютер, опцию можно не выбирать. NFS может потребовать дополнительной настройки позже; обращайтесь к Разд. 26.3 за более подробной информацией о настройке сервера и клиента.

Ниже находится опция NFS сервер, позволяющая вам настроить систему для работы в качестве NFS сервера. Она добавляет требуемую информацию для запуска процедуры вызова удаленных сервисов RPC (remote procedure call services). RPC используется для организации соединения между хостами и программами.

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

Рисунок 2-58. Настройка Ntpdate

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

Следующая опция это выбор PCNFSD. Эта опция устанавливает пакет `net/pcnfsd` из Коллекции Портов. Это полезная утилита, предоставляющая сервисы авторизации NFS для систем, в которых собственная отсутствует, таких как Microsoft MS-DOS.

Теперь вы можете прокрутить меню немного вниз, чтобы увидеть другие опции:

Рисунок 2-59. Нижняя часть меню настройки сети

Утилиты 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) управляет сетевыми таблицами маршрутизации, обнаруживает широковещательные маршрутизаторы, и предоставляет копию таблиц маршрутизации любому физически подключенному к сети хосту по запросу. Это обычно используется компьютерами, являющимися шлюзом для локальной сети. Когда эта опция выбрана, появится меню выбора местоположения утилиты по умолчанию. Значение по умолчанию уже выбрано, чтобы подтвердить его нажмите 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. Хотя для многих хостов они могут повысить скорость соединения, с другими соединение может быть оборвано. Для серверов эти расширения не рекомендуются, но клиентским компьютерам могут дать некоторые преимущества.

Теперь, после настройки сетевых сервисов, вы можете прокрутить меню к верхнему пункту, X Exit, и перейти к следующему шагу, или же просто покинуть sysinstall, дважды нажав X Exit, а после -- [X Exit Install].

### 2.10.16. Загрузочный процесс FreeBSD (FreeBSD Bootup)

#### 2.10.16.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.10.17. Завершение работы 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 для перезагрузки системы, хотя это не рекомендуется в обычной ситуации.

## 2.11. Решение проблем

Следующий раздел описывает основные проблемы при установке, о которых обычно сообщают пользователи. Здесь также несколько вопросов и ответов от тех, кто хочет настроить двойную загрузку FreeBSD и MS-DOS или Windows.

### 2.11.1. Что делать, если что-то идет не так

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

Сверьтесь с Информацией об оборудовании для вашей версии FreeBSD, чтобы убедиться, что ваше оборудование поддерживается.

Если оборудование поддерживается, но все же происходят зависания или вы встретились с другими проблемами, потребуется собрать собственное ядро. Это позволит вам добавить поддержку аппаратных устройств, отсутствующих в ядре `GENERIC`. Ядро на загрузочном диске настроено в предположении, что у большинства аппаратных устройств IRQ, адреса ввода-вывода и каналы DMA установлены производителем к значениям по умолчанию. Если оборудование было перенастроено, вам скорее всего потребуется отредактировать конфигурацию ядра и перекомпилировать его, чтобы сообщить FreeBSD, где что искать.

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

> Замечание: Некоторые проблемы установки можно обойти или уменьшить, обновив встроенное программное обеспечение различных компонент оборудования, особенно материнской платы. Встроенное программное обеспечение также называют BIOS и у большинства производителей компьютеров или материнских плат есть Web-сайты, где можно найти обновления и информацию об обновлениях.

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

### 2.11.2. Использование файловых систем MS-DOS® и Windows®

В настоящее время, FreeBSD не поддерживает файловые системы, сжатые с помощью программы Double Space™. Поэтому файловая система должна быть разжата, чтобы FreeBSD смогла получить доступ к данным. Это может быть сделано с помощью приложения Compression Agent, находящегося в меню Пуск> Программы > Системные.

FreeBSD поддерживает файловые системы MS-DOS (иногда называемые файловыми системами FAT). Команда mount_msdosfs(8) включает такие файловые системы в существующую иерархию, тем самым обеспечивая доступ к их содержимому. Как правило, утилита mount_msdosfs(8) непосредственно не вызывается; вместо этого она выполняется системой при наличии соответствующей записи в `/etc/fstab` или же вызывается утилитой mount(8), запущенной с соответствующими параметрами.

Ниже приведен пример записи в `/etc/fstab` для файловой системы MS-DOS:

    /dev/ad0sN  /dos  msdosfs rw  0  0

> Замечание: Каталог `/dos` должен быть создан заранее. Формат файла `/etc/fstab` подробно описан в fstab(5).

Также приведем пример монтирования файловой системы MS-DOS посредством mount(8):

    # mount -t msdosfs /dev/ad0s1 /mnt

В этом примере файловая система MS-DOS расположена на первом разделе первого жесткого диска. Ваша конфигурация может быть другой, проверьте вывод команд `dmesg` и `mount`. Они должны предоставить достаточно информации для определения названий разделов.

> Замечание: Способ нумерации дисковых слайсов (то есть, ''разделов'' в терминах MS-DOS) может отличаться от способа, принятого в других операционных системах. В частности, расширенным разделам MS-DOS присваиваются номера, следующие за первичными разделами MS-DOS. Утилита fdisk(8) поможет определить, какие слайсы принадлежат FreeBSD, а какие -- другим операционным системам.

Разделы NTFS также можно смонтировать похожим способом, используя команду mount_ntfs(8).

### 2.11.3. Решение проблем: вопросы и ответы

2.11.3.1. Моя система зависает на этапе определения оборудования во время загрузки, или система ведет себя странно во время установки, или же не определяется привод гибкого диска.
2.11.3.2. Выполняется первая загрузка после установки FreeBSD, ядро загружается и определяет аппаратное обеспечение, но загрузка останавливается с сообщением типа:
2.11.3.3. Я перехожу к загрузке с жесткого диска впервые после установки FreeBSD, но приглашение Boot Manager всякий раз выводит только `F?` в меню загрузчика, и на этом загрузка прерывается.
2.11.3.4. Система определяет мою сетевую карту ed(4), но я постоянно получаю сообщения device timeout.
2.11.3.5. Когда sysinstall запущен в терминале X11, то желтый шрифт на светло сером фоне практически не различим. Есть ли способ обеспечить лучший контраст для этого приложения?

2.11.3.1. Моя система зависает на этапе определения оборудования во время загрузки, или система ведет себя странно во время установки, или же не определяется привод гибкого диска.

На архитектурах i386, amd64 и ia64 при конфигурировании оборудования, обнаруженного во время загрузки, FreeBSD повсеместно использует систему ACPI. К сожалению, до сих пор находятся неполадки как в драйвере ACPI, так и в материнских платах, так и в их BIOS. Использование ACPI можно отключить установив переменную `hint.acpi.0.disabled` на третьем этапе загрузки:

    set hint.acpi.0.disabled="1"

Эта настройка сбрасывается каждый раз при перезагрузке системы, поэтому необходимо добавить строку `hint.acpi.0.disabled="1"` в файл `/boot/loader.conf`. Информация о загрузчике приведена в Разд. 12.1.

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

    changing root device to ad1s1a panic: cannot mount root

Что это значит? Что можно сделать?

И что это за строка вида `bios_drive:interface(unit,partition)kernel_name`, отображаемая в приглашении загрузчика?

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

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

Первый случай: у вас имеется два IDE диска, каждый из них сконфигурирован как мастер на соответствующей шине IDE, и вы намереваетесь загрузить FreeBSD с второго диска. BIOS определяет эти диски как `disk 0` и `disk 1`, в то время как FreeBSD определяет их как `ad0` и `ad2`.

FreeBSD находится на `disk 1` (BIOS-нумерация), его тип -- `ad` и номер -- 2 (по данным FreeBSD), следовательно, необходимо указать:

    1:ad(2,a)kernel

Заметьте, если второй диск настроен как подчиненный (slave) на первой шине IDE, то указание вышеприведённого необязательно (а по существу, еще и неверно).

Второй случай подразумевает загрузку с диска SCSI при существующих в системе дисках IDE. В этом случае, согласно определениям FreeBSD номер диска меньше, чем номер по представлениям BIOS. Если у вас есть два диска IDE и диск SCSI, то, согласно BIOS, номер SCSI диска -- 2, а согласно FreeBSD, тип -- `da` и номер -- 0, следовательно, вам необходимо указать следующее:

    2:da(0,a)kernel

чтобы сообщить FreeBSD, что вы намереваетесь загрузить систему с диска 2 по нумерации BIOS, который является первым диском в системе. Если бы у вас был один диск IDE, вам бы пришлось использовать `1:` (по нумерации BIOS).

Определив верные параметры, внесите их в том виде, как вы их набирали, в файл `/boot.config`. Если не указывается иначе, то FreeBSD будет использовать содержимое этого файла как значение по умолчанию в приглашении `boot:`.

2.11.3.3. Я перехожу к загрузке с жесткого диска впервые после установки FreeBSD, но приглашение Boot Manager всякий раз выводит только `F?` в меню загрузчика, и на этом загрузка прерывается.

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

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

Следующий способ не рекомендуется, он оставлен здесь для справки:

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

2.11.3.4. Система определяет мою сетевую карту ed(4), но я постоянно получаю сообщения device timeout.

Возможно ваша сетевая карта находится не на том IRQ, которое указано в файле `/boot/device.hints`. Драйвер ed(4) по умолчанию не использует ''программную'' конфигурацию (значения, вводимые утилитой EZSETUP в DOS), но ситуация изменится, если вы укажете `-1` в значении хинт-переменной для этого интерфейса.

Либо осуществите ручное конфигурирование устройства переключением джамперов на карте (также может потребоваться изменение конфигурации ядра), либо же смените значение IRQ на `-1`, установив переменную `hint.ed.0.irq="-1"`. Это укажет ядру использовать программное конфигурирование.

Также вероятно, что ваша карта находится на IRQ номер 9, которое используется совместно с IRQ номер 2, и которое часто является причиной проблем (особенно, если ваш VGA адаптер занимает IRQ номер 2!). Постарайтесь избежать использования IRQ номер 2 или 9 вообще.

2.11.3.5. Когда sysinstall запущен в терминале X11, то желтый шрифт на светло сером фоне практически не различим. Есть ли способ обеспечить лучший контраст для этого приложения?

Если вы уже установили X11, а цвета, выбираемые по умолчанию утилитой sysinstall, делают текст неразборчивым в xterm(1) или rxvt(1), то добавьте следующую строку `XTerm*color7: #c0c0c0` в ваш `~/.Xdefaults` и вы получите более тёмный фоновый серый цвет.

## 2.12. Расширенное руководство по установке

Предоставлено Valentino Vaschetto. Обновил Marc Fonvieille.

Этот раздел описывает особые случаи установки FreeBSD.

### 2.12.1. Установка FreeBSD на систему без монитора или клавиатуры

Этот тип установки называется ''установка без монитора'', потому что на компьютере, на который вы пробуете установить FreeBSD или не подсоединен монитор, или даже нет VGA выхода. Вы спросите, как это возможно? Используя последовательную консоль. Последовательная консоль в своей основе имеет другой компьютер, который служит дисплеем и клавиатурой для системы. Чтобы сделать это, создайте инсталляционный USB-накопитель, как описано в Разд. 2.3.7, или скачайте надлежащий установочный образ ISO (описано в Разд. 2.13.1).

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

1. Загрузка с USB-накопителя с выводом на последовательную консоль

   Если вы произведете загрузку с только что созданного USB-накопителя, FreeBSD загрузится в нормальный режим установки. Мы хотим, чтобы FreeBSD загрузилась на последовательную консоль для нашей установки. Чтобы сделать это, смонтируйте USB-накопитель на вашу систему FreeBSD используя команду mount(8).

       # mount /dev/da0a /mnt

   > Замечание: Измените названия файла устройства и точки монтирования в соответствии со значениями для вашей конфигурации.

   Теперь необходимо настроить USB-накопитель для загрузки на последовательную консоль. В файл `loader.conf`, находящийся на файловой системе USB-накопителя, добавьте запись, устанавливающую в качестве системной консоли последовательную консоль.

       # echo 'console="comconsole"' >> /mnt/boot/loader.conf

   Далее, когда ваш USB-накопитель правильно настроен, размонтируйте его с помощью команды umount(8):

       # umount /mnt

   Теперь извлеките USB-накопитель и перейдите к третьему пункту этой инструкции.

2. Загрузка с CD с выводом на последовательную консоль

   Если вы произведете загрузку с только что записанного установочного CD диска (подробности создания которого описаны в Разд. 2.13.1), FreeBSD загрузится в нормальный режим установки. Однако, вам необходимо, чтобы FreeBSD загрузилась на последовательную консоль. Для этого придется исправить ISO образ заранее, до его записи на диск CD-R.

   В приведённом далее примере подразумевается, что подготовку образа вы выполняете на вашем втором компьютере, работающем под управлением FreeBSD. Также подразумевается, что на нём есть файл загрузочного ISO образа, например `FreeBSD-`8.1`-RELEASE-`i386`-disc1.iso`. Извлеките из образа все файлы утилитой tar(1):

       # mkdir /path/to/headless-iso
       # tar -C /path/to/headless-iso -pxvf FreeBSD-8.1-RELEASE-i386-disc1.iso

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

       # echo 'console="comconsole"' >> /path/to/headless-iso/boot/loader.conf

   Далее необходимо создать новый образ ISO из извлеченного и исправленного старого образа. Для этого воспользуйтесь утилитой mkisofs(8) (порт `sysutils/cdrtools`):

       # mkisofs -v -b boot/cdboot -no-emul-boot -r -J -V "Headless_install" \
               -o Headless-FreeBSD-8.1-RELEASE-i386-disc1.iso /path/to/headless-iso

   А теперь, имея в распоряжении модифицированный новый образ ISO, самое время записать его на диск CD-R при помощи вашей любимой программы для записи дисков.

3. Подсоединение нуль-модемного кабеля

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

4. Загрузка для установки

   Настало время начать установку. Вставьте USB-накопитель в компьютер, на который вы будете производить установку без монитора и включите его. Если же вы используете загрузочный CD диск, вставьте его в привод после того, как включите машину.

5. Подключение к компьютеру без монитора

   Теперь вы можете подключиться к этому компьютеру с помощью cu(1):

       # cu -l /dev/cuau0

   В FreeBSD 7.X следует использовать иное имя файла устройства:

       # cu -l /dev/cuad0

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

## 2.13. Подготовка собственного источника установки

> Замечание: Чтобы не повторяться, ''диск FreeBSD'' в данном случае означает FreeBSD CDROM или DVD, который вы купили или подготовили самостоятельно.

Может быть несколько ситуаций, в которых вам потребуется подготовить собственный диск и/или источник для установки FreeBSD. Это может быть физический носитель, такой как лента, или источник, с которого sysinstall сможет взять файлы, такой как локальный сервер FTP, или раздел MS-DOS.

Например:

- У вас есть много компьютеров, подсоединенных к локальной сети, и один диск с FreeBSD. Вы хотите создать локальный сервер FTP, используя содержимое диска FreeBSD, а затем использовать с ваших компьютеров этот локальный сервер FTP вместо подсоединения к интернет.

- У вас есть диск с FreeBSD, и FreeBSD не распознает ваш CD/DVD привод, а MS-DOS/Windows распознает. Вы хотите скопировать файлы установки FreeBSD на раздел DOS этого же компьютера и установить FreeBSD, используя эти файлы.

- На компьютере, на который вы хотите провести установку, нет ни привода CD/DVD, ни сетевой карты, но вы можете подсоединиться в ''Laplink-стиле'' последовательным или параллельным кабелем к другому компьютеру, на котором они есть.

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

### 2.13.1. Создание установочного CDROM

В составе каждого релиза проект FreeBSD предоставляет доступ как минимум к двум образам CDROM (''ISO images'') для каждой поддерживаемой архитектуры. Эти образы могут быть записаны (''прожжены'') на CD если у вас есть CD-рекордер, а затем использованы для установки FreeBSD. Если у вас есть CD-рекордер и дешевый канал интернет, это простейший путь установить FreeBSD.

1. Скачайте соответствующие ISO образы

   ISO образы для каждого релиза могут быть загружены с `ftp://ftp.FreeBSD.org/pub/FreeBSD/ISO-IMAGES-`архитектура`/`версия`` или с ближайшего зеркала. Замените `архитектура` и `версия` в соответствии архитектурой и номером релиза соответственно.

   Этот каталог обычно содержит следующие образы:

   Таблица 2-4. Названия ISO-образов дисков FreeBSD 7.`X` и 8.`X` и их значения

   Имя файла | Содержимое
   --- | ---
   `FreeBSD-`version`-RELEASE-`arch`-bootonly.iso` | Этот образ CD предоставляет возможность начать процесс установки, загрузившись с диска в приводе CD-ROM. Однако, в нём отсутствуют архивы, необходимые для установки FreeBSD с этого же диска. Подразумевается, что необходимые файлы будут скачаны из доступных в сети источников (например, c сервера FTP).
   `FreeBSD-`version`-RELEASE-`arch`-dvd1.iso.gz` | Этот образ DVD содержит всё необходимое для установки базовой системы FreeBSD, а также -- документацию и набор прекомпилированных пакетов. Также образ поддерживает возможность загрузки в режим ''livefs''.
   `FreeBSD-`version`-RELEASE-`arch`-memstick.img` | Этот образ предназначен для создания загрузочных USB-накопителей. Такой накопитель может использоваться для установки операционной системы на машины, поддерживающие загрузку с USB дисков. USB-накопитель также может использоваться для аварийного восстановления системы (содержит ''livefs''). В образе также имеются пакеты с документацией. Для FreeBSD версии 7.3 и более ранних подобных образов не создавалось.
   `FreeBSD-`version`-RELEASE-`arch`-disc1.iso` | Этот образ CD содержит базовую систему FreeBSD и набор пакетов с документацией.
   `FreeBSD-`version`-RELEASE-`arch`-disc2.iso` | Этот образ CD содержит пакеты сторонних разработчиков, которые смогли поместиться на диск. Подобные образы не создавались для FreeBSD 8.0 и более поздних. |
   `FreeBSD-`version`-RELEASE-`arch`-disc3.iso` | Еще один образ CD, заполненный пакетами сторонних разработчиков. Подобные образы не создавались для FreeBSD 8.0 и более поздних.
   ``version`-RELEASE-`arch`-docs.iso` | Документация FreeBSD.
   `FreeBSD-`version`-RELEASE-`arch`-livefs.iso` | Данный образ CD поддерживает загрузку в режим аварийного восстановления системы (содержит ''livefs'') и не предназначен для выполнения установки операционной системы с самого диска.

   > Замечание: Релизы FreeBSD 7.X до FreeBSD 7.3 и FreeBSD 8.X до FreeBSD 8.1 использовали иную систему именования образов. В именах их образов ISO отсутствовал префикс `FreeBSD-`.

   Вы должны загрузить либо ISO-образ `bootonly` (если он доступен), либо образ `disc1`. Не загружайте их оба, так как образ `disc1` содержит всё, что есть на ISO-образе bootonly.

   Используйте ISO-образ `bootonly`, если доступ в Internet для вас обходится недорого. Он позволит вам установить FreeBSD, и вы сможете установить впоследствии программы сторонних производителей используя систему портов/пакетов (смотрите Гл. 4) если необходимо.

   Используйте образ `dvd1`, если вы хотите установить релиз FreeBSD и получить достаточный набор программ сторонних производителей, расположенных на этом диске.

   Дополнительные образы дисков полезны, но не необходимы, особенно если у вас есть высокоскоростной доступ к интернет.

2. Запись CD

   Затем вам нужно записать образы CD на диски. Если вы делаете это из другой системы FreeBSD, обратитесь к Разд. 17.6 за более подробной информацией (в частности, Разд. 17.6.3 и Разд. 17.6.4).

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

> Замечание: Если вы интересуетесь созданием собственных вариантов релизов FreeBSD, пожалуйста, прочтите статью о Процессе подготовки релизов.

### 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 во время установки.

> Замечание: Если загрузочный носитель (обычно это дискеты) для ваших FTP-клиентов в точности не соответствует версии, находящейся на локальном сервере FTP, то sysinstall не позволит вам завершить установку. Если версии похожи и вы хотите это явно указать, то перейдите в меню Options и замените название дистрибутива на any.

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

### 2.13.3. Создание дискет для установки

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

Как минимум, вам потребуется столько 1.44 MB дискет, сколько нужно, чтобы вместить все файлы из каталога `base` (base distribution). Если вы подготавливаете эти дискеты из DOS, они должны быть отформатированы с помощью команды MS-DOS `FORMAT`. Если вы используете Windows, используйте Explorer для форматирования дисков (кликните правой кнопкой мыши на диске `A:` и выберите ''Format'').

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

Если вы создаете образы на другом компьютере FreeBSD, форматирование все еще не лишне, хотя вам не потребуется создавать файловую систему DOS на каждой дискете. Вы можете использовать `bsdlabel` и `newfs` для создания на них файловых систем UFS, в следующей последовательности (для 3.5" 1.44 MB дискет):

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

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

После форматирования дискет вам потребуется скопировать на них файлы. Файлы дистрибутива разделены на части, размер которых позволяет легко разместить пять частей на обычной 1.44 MB дискете. Заполните все дискеты файлами, помещая столько файлов на одну дискету, сколько уместится, пока у вас не будет всех необходимых компонент дистрибутива. Каждый компонент должен располагаться в подкаталоге на дискете, например `a:\base\base.aa`, `a:\base\base.ab`, и так далее.

> Важно: Файл `base.inf` также необходимо поместить на первую дискету набора `base`. Прочитав этот файл, установочная программа определяет, сколько частей необходимо скопировать и соединить для сборки дистрибутива.

Как только в процессе установки появится экран 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 можно найти в каталоге 8.1/base/.

Все компоненты, которые вы будете устанавливать с раздела MS-DOS (и для которых у вас есть место), нужно расположить в `c:\freebsd` -- для минимальной установки нужна только компонента `BIN`.

### 2.13.5. Создание ленты для установки

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

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

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

> Замечание: При начале установки лента должна быть в приводе до загрузки с дискеты. В ином случае она может быть не найдена при тестировании устройств.

### 2.13.6. Перед установкой по сети

Есть три возможных типа установки по сети. Ethernet (стандартный Ethernet контроллер), последовательный порт (PPP), или параллельный порт (PLIP (laplink кабель)).

Для самой быстрой установки по сети хорошим выбором будет Ethernet адаптер! FreeBSD поддерживает большинство PC Ethernet карт; список поддерживаемых карт (и требуемых для них установок) предоставляется в информации об оборудовании для каждого релиза FreeBSD. Если вы используете одну из поддерживаемых PCMCIA Ethernet карт, убедитесь также, что она подключена перед тем, как ноутбук будет включен! К сожалению, FreeBSD в настоящее время не поддерживает горячее подключение PCMCIA карт во время установки.

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

Если вы используете модем, PPP это конечно почти единственный выбор. Убедитесь что у вас есть информация о провайдере, так как она понадобится на довольно ранней стадии процесса установки.

Если вы используете PAP или CHAP для соединения с провайдером (другими словами, вы можете соединяться с провайдером из Windows без использования скрипта), все что вам понадобится это ввести `dial` в приглашении ppp. Иначе вам нужно знать, как дозвониться до провайдера с помощью ''AT команд'', специфичных для вашего модема, так как программа дозвона PPP предоставляет только очень простой эмулятор терминала. Обратитесь к руководству user-ppp и FAQ для получения более подробных сведений. Если у вас проблемы, логи могут быть выведены на экран с помощью команды `set log local ...`.

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

#### 2.13.6.1. Перед установкой через NFS

Установка через NFS очень проста. Просто скопируйте компоненты FreeBSD, которые вам нужны, на NFS сервер, а затем укажите на него при выборе источника установки NFS.

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

Если у вас Ethernet карта плохого качества с низкой скоростью передачи данных, вы возможно захотите переключить флаг `NFS Slow` в Options.

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

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

# Глава 3. Основы UNIX

Переписал Chris Shumway. Перевод на русский язык: Алексей Зелькин, Алексей Докучаев, Денис Пеплин.

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

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

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

- Как использовать ''виртуальные консоли'' FreeBSD.

- Как работают права доступа на файлы в UNIX и как следует интерпретировать флаги файлов в ОС FreeBSD.

- Иерархия каталогов FreeBSD.

- Организация дисков FreeBSD.

- Как монтировать и размонтировать файловые системы.

- Что такое процессы, даемоны и сигналы.

- Что такое командная оболочка (или интерпретатор команд) и как настроить личное рабочее окружение.

- Как пользоваться стандартными текстовыми редакторами.

- Что такое устройства и файлы устройств.

- Какие бинарные форматы используются в FreeBSD.

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

## 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. Консоль в однопользовательском режиме

Детальное описание ''однопользовательского режима'' можно найти в Разд. 12.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

> Замечание: Как сказано в комментариях выше строки `console`, можно отредактировать эту строку и изменить `secure` на `insecure`. Если вы сделаете это, FreeBSD даже при загрузке в однопользовательском режиме будет запрашивать пароль `root`.

> Будьте осторожны при изменении этого значения на `insecure`. Если вы забудете пароль `root`, загрузка в однопользовательский режим сильно усложнится. Это все еще возможно, но несколько более сложно для тех, кто еще не очень освоился с процессом загрузки FreeBSD и вызова программ.

## 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)
(права) | t | Sticky бит
(права) | s | SUID или SGID

Эти значения используются командой chmod(1) так же как и раньше, но с буквами. Например, вы можете использовать следующую команду для запрета доступа других пользователей к `FILE`:

    % chmod go= FILE

Для изменения более чем одного набора прав можно применить список, разделенный запятыми. Например, следующая команда удалит права группы и ''всех остальных'' на запись в `FILE`, а затем добавит права на выполнение для всех:

    % chmod go-w,a+x FILE

### 3.3.2. Флаги файлов в FreeBSD

Текст предоставил Tom Rhodes.

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

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

Файловые флаги изменяются при помощи утилиты chflags(1) посредством простого интерфейса. К примеру, чтобы установить системный признак неудаляемости на файл `file1`, выполните следующую команду:

    # chflags sunlink file1

Чтобы отключить флаг неудаляемости, просто выполните предыдущую команду с ключом ''no'' перед параметром `sunlink`. Вот так:

    # chflags nosunlink file1

Чтобы просмотреть флаги этого файла, воспользуйтесь командой ls(1) с параметрами `-lo`:

    # ls -lo file1

Результат выполнения команды должен выглядеть примерно так:

    -rw-r--r--  1 trhodes  trhodes  sunlnk 0 Mar  1 05:54 file1

Некоторые флаги могут быть установлены или сняты с файлов только пользователем `root`. В остальных случаях эти флаги может установить владелец файла. Для получения дополнительной информации мы рекомендуем изучить содержимое справки по командам chflags(1) и chflags(2).

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

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

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

Полное описание иерархии файловой системы есть в 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/` | Виртуальная файловая система, отображающая текущие процессы (см. procfs(5), mount_procfs(8)).
`/rescue/` | Статически собранные программы для восстановления после сбоев. Обратитесь к rescue(8).
`/root/` | Домашний каталог пользователя `root`.
`/sbin/` | Системные утилиты и утилиты администрирования, необходимые для работы как в однопользовательском, так и в многопользовательском режимах.
`/tmp/` | Временные файлы. Содержимое `/tmp` обычно теряется во время перезагрузки системы. Файловая система в памяти часто монтируется в `/tmp`. Это может быть автоматизированно с помощью переменных относительно tmpmfs из rc.conf(5) (или же с помощью записи в `/etc/fstab`; обращайтесь к mdmfs(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`. Это может быть автоматизированно с помощью переменных относительно varmfs из rc.conf(5) (или же с помощью записи в `/etc/fstab`; обращайтесь к mdmfs(8)).
`/var/log/` | Различные файлы системных журналов.
`/var/mail/` | Почтовые ящики пользователей.
`/var/spool/` | Файлы очередей печати, почты, и пр.
`/var/tmp/` | Временные файлы, которые обычно сохраняются во время перезагрузки системы, если только `/var` не является файловой системой в памяти.
`/var/yp/` | Карты (maps) NIS.

## 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, решаете куда их монтировать, и ничего не меняете, пока не понадобится добавить новый диск.

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

Преимущества нескольких файловых систем

- Различные файловые системы могут иметь различные опции монтирования. Например, в целях безопасности корневая файловая система может быть смонтирована только для чтения, что делает невозможным случайное удаление или редактирование критически важного файла. Отделение файловых систем, используемых пользователями для записи, таких как `/home`, от других файловых систем позволяет также монтировать их с параметром nosuid; этот параметр отменяет действие битов suid/ guid на исполняемых файлах, в этой файловой системе, что потенциально повышает безопасность.

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

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

Преимущество одной файловой системы

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

  > Важно: В FreeBSD представлена команда growfs(8), которая позволяет увеличивать размер файловой системы на лету, устраняя это ограничение.

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

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

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

Раздел | Соглашение
--- | ---
`a` | Как правило, содержит корневую файловую систему
`b` | Как правило, содержит раздел подкачки
`c` | Как правило, такого же размера, что и весь слайс (slice). Это позволяет утилитам, которым нужно работать над всем слайсом (например, сканер плохих блоков), работать с разделом `c`. В обычной ситуации не нужно создавать файловую систему на этом разделе.
`d` | Раздел `d` создавался для специальных целей, хотя сейчас они не актуальны и `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. Основные коды, которые вам могут встретиться, есть в Табл. 3-1.

В то время, как ссылка на раздел FreeBSD требует также указания слайса и диска, содержащего раздел, ссылка на слайс требует также указания имени диска. Делайте это указанием имени диска, `s`, номера слайса, и затем буквы раздела. Примеры показаны в Прим. 3-1.

Прим. 3-2 показывает концептуальную модель диска, которая должна помочь прояснить ситуацию.

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

Таблица 3-1. Коды дисковых устройств

Код | Значение
--- | ---
`ad` | ATAPI (IDE) диск
`da` | SCSI direct access диск
`acd` | ATAPI (IDE) CDROM
`cd` | SCSI CDROM
`fd` | Floppy disk

Пример 3-1. Пример имен диска, слайса, и раздела

Имя | Значение
--- | ---
`ad0s1a` | Первый раздел (`a`) на первом слайсе (`s1`) первого IDE диска (`ad0`).
`da1s2e` | Пятый раздел (`e`) на втором слайсе (`s2`) второго SCSI диска (`da1`).

Пример 3-2. Концептуальная модель диска

Эта диаграмма показывает первый подключенный к системе IDE диск с точки зрения FreeBSD. Предположим, что размер диска 4 GB, и он содержит два 2 GB слайса (MS-DOS разделы). Первый слайс содержит MS-DOS диск, `C:`, а второй слайс содержит установленную FreeBSD. В этом примере в установленной FreeBSD три раздела и раздел подкачки.

В каждом из трех разделов есть файловая система. Раздел `a` используется для корневой файловой системы, `e` для иерархии каталогов `/var`, а `f` для иерархии каталогов `/usr`.

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

Файловая система лучше всего представима в виде дерева, с корнем в `/`. Каталоги, `/dev`, `/usr` и прочие - это ветви дерева, которые, в свою очередь, являются корнями для поддеревьев, также имеющих ветви (`/usr/local`), и т.д.

Хорошей практикой является разнесение некоторых особо важных каталогов на разные файловые системы. Например, `/var`, содержит `log/`, `spool/`, а также всевозможные временные файлы и нередко может занять все свободное место на диске. Поэтому лучше смонтировать `/var` отдельно, чтобы избежать переполнения `/`.

Часто бывает так, что некоторые разделы файловой системы расположены на разных физических носителях (дисках, CDROM), виртуальных или сетевых (например, сетевая файловая система (Network File System, NFS)). В этом случае узлы файловой иерархии будут расположены на разных файловых системах.

### 3.6.1. Файл `fstab`

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

Формат файла `/etc/fstab` следующий (файловые системы перечисляются построчно):

       устройство   /точка-монтирования   тип файловой системы   опции   частота дампов   порядок проверки

`устройство`

  Имя устройства (которое должно присутствовать), как описано в Разд. 17.2.

`точка монтирования`

  Каталог (существующий), куда следует смонтировать файловую систему.

`тип файловой системы`

  Тип файловой системы, который передается программе mount(8). По умолчанию FreeBSD использует `ufs`.

`опции`

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

`частота дампов`

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

`порядок проверки`

  Определяет порядок, в котором следует проверять файловые системы (чаще всего, в случае некорректного размонтирования или внезапной перезагрузки системы). Если файловую системы не нужно проверять, этот параметр должен быть установлен в ноль. Для корневой файловой системы (которая должна быть проверена в первую очередь) установите его в 1. Для всех остальных - 2 или больше. Если две или более файловые системы имеют одинаковое значение `passno`, fsck(8) попытается проверять их параллельно (если, конечно, это возможно физически).

Обратитесь к fstab(5) за дополнительной информацией о формате файла `/etc/fstab` и различных опциях монтирования.

### 3.6.2. Команда `mount`

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

Пример использования (простейший случай):

    # mount устройство точка-монтирования

Перечислим основные опции, которые может принимать команда mount(8) (полный список смотрите на странице справочника):

Опции монтирования

`-a`

  Смонтировать все файловые системы, перечисленные в файле `/etc/fstab`. Исключение составляют помеченные как ''noauto'', перечисленные после опции `-t` и уже смонтированные.

`-d`

  Сделать все, кроме самого системного вызова mount. Эта опция полезна вместе с флагом `-v` для определения того, что на самом деле пытается сделать mount(8).

`-f`

  Монтировать поврежденный раздел (опасно!), или форсировать отмену всех запросов на запись при изменении режима монтирования с ''чтение-запись'' на ''только чтение''.

`-r`

  Монтировать файловую систему в режиме ''только для чтения''. То же самое, что и указание аргумента `ro` (`rdonly` для FreeBSD версий старше, чем 5.2) для опции `-o`.

`-t` `fstype`

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

  По умолчанию, тип файловой системы - ''ufs''.

`-u`

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

`-v`

  Выдавать более подробную информацию.

`-w`

  Монтировать файловую систему в режиме ''чтение-запись''.

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

nodev

  Не обращать внимание на специальные файлы устройств на файловой системе (то есть не считать их файлами устройств). Весьма полезная опция для повышения безопасности системы.

noexec

  Запрет на исполнение бинарных файлов на файловой системе (тоже полезная опция для повышения безопасности системы).

nosuid

  Игнорировать setuid и setgid биты на файловой системе (еще одна полезная опция для повышения безопасности системы).

### 3.6.3. Команда `umount`

Команда umount(8) принимает в качестве параметра точку монтирования какой-либо файловой системы, имя устройства, опцию `-a` или `-A`.

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

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

## 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`.

## 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 сразу же остановит этот процесс[4].

Другие сигналы, которые возможно вам понадобятся, `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` в командной строке на имя другого сигнала.

> Важно: Уничтожение процессов наугад может быть плохой идеей. В частности, init(8), чей PID 1, имеет особое значение. Выполнение `/bin/kill -s KILL 1` -- быстрый способ перегрузить систему. Всегда дважды проверяйте параметры запуска kill(1) перед тем, как нажать Enter.

## 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

> Замечание: Интерпретатор, который вы будете использовать, обязательно должен быть в файле `/etc/shells`. Обычно, при установке интерпретаторов из коллекции портов, это делается автоматически. Если же это не так, вам нужно будет самостоятельно добавить соответствующую строчку в этот файл.

> Например, если вы установили `bash` вручную и поместили его в каталог `/usr/local/bin`, нужно набрать:

>     # echo "/usr/local/bin/bash" >> /etc/shells

> Теперь можно смело использовать команду `chsh`.

## 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 можно найти в коллекции портов (`editors/emacs` и `editors/vim`). Эти редакторы более сложны в изучении, но их возможности порой превосходят всякие ожидания! Если в будущем вам потребуется часто редактировать большие объемы текстов, то потраченное на изучение этих редакторов время окупится с лихвой.

## 3.11. Устройства и файлы устройств

Термин ''устройство'' используется в основном по отношению к аппаратному обеспечению системы, такому как диски, принтеры, графические адаптеры, устройства ввода текста. При загрузке FreeBSD главным образом выводит на экран информацию об обнаруженных устройствах. Вы можете найти эти сообщения в файле `/var/run/dmesg.boot`.

Например, `acd0` это первый диск IDE CDROM, а `kbd0` -- клавиатура.

В UNIX доступ к большинству этих устройств можно получить через специальные файлы устройств, расположенные в каталоге `/dev`.

### 3.11.1. Создание файлов устройств

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

#### 3.11.1.1. `DEVFS` (DEVice File System)

Device filesystem, или `DEVFS`, предоставляет доступ к пространству устройств ядра через общую файловую систему. Вместо создания и модификации файлов устройств, `DEVFS` создает специальную файловую систему.

Обращайтесь к devfs(5) за дополнительной информацией.

## 3.12. Бинарные форматы

Для понимания того, почему FreeBSD использует формат elf(5), вам потребуется сначала немного узнать о трех ''доминирующих'' исполняемых форматах для UNIX:

- a.out(5)

  Старейший и ''классический'' объектный формат UNIX. Он использует короткий и компактный заголовок с магическим числом в начале, которое часто используется для описания формата (смотрите a.out(5) с более подробной информацией). Он содержит три загружаемых сегмента: .text, .data и .bss плюс таблицу символов и таблицу строк.

- COFF

  Объектный формат SVR3. Заголовок включает таблицу разделов, так что могут быть сегменты кроме .text, .data и .bss.

- elf(5)

  Наследник формата COFF, поддерживающий множественные сегменты и 32-битные или 64-битные значения. Одно важное замечание: ELF был разработан в предположении что есть только по одному ABI на одну архитектуру. Это предположение совершенно неверно, и не только в мире коммерческих SYSV (в котором есть как минимум три ABI: SVR4, Solaris, SCO).

  FreeBSD пытается обойти эту проблему, в частности предоставляя утилиту для оглавления известного исполняемого файла ELF информацией об ABI с которым он совместим. Обратитесь к странице справочника brandelf(1) за более подробной информацией.

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` останется в прошлом.

## 3.13. Дополнительная информация

### 3.13.1. Системный справочник (man)

Пожалуй, самым полным руководством по FreeBSD является системный справочник (man). Практически каждое приложение или утилита имеют соответствующую страницу (часто не одну), описывающую тот или иной аспект работы программы, всевозможные опции и настройки. Для просмотра этих страниц существует команда `man`:

    % man command

Здесь `command` - это команда, о которой вы хотите получить информацию. Например, чтобы узнать побольше о команде `ls`, наберите:

    % man ls

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

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

2. Системные вызовы и коды ошибок.

3. Функции стандартных библиотек.

4. Драйверы устройств.

5. Форматы файлов.

6. Развлечения и игры.

7. Дополнительная информация.

8. Команды системного администрирования.

9. Для разработчиков ядра.

В некоторых случаях (не так уж редко), страницы, относящиеся к одной и той же команде, находятся в различных разделах справочника. Например, есть команда `chmod` и системный вызов `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`. Краткий список команд можно получить набрав `?`.

# Глава 4. Установка приложений: порты и пакеты

Перевод на русский язык: Андрей Захватов.

## 4.1. Обзор

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

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

- Как устанавливать бинарные пакеты с программным обеспечением сторонних разработчиков.

- Как собирать программное обеспечение сторонних разработчиков при помощи Коллекции Портов.

- Как удалять ранее установленные пакеты или порты.

- Как переопределить значения, используемые по умолчанию в Коллекции Портов.

- Как обновить ваши порты.

## 4.2. Обзор установки программного обеспечения

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

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

2. Распаковка программного обеспечения из дистрибутивного формата (обычно tar-архива, сжатого при помощи compress(1), gzip(1) или bzip2(1)).

3. Поиск документации (возможно, подойдут файлы `INSTALL`, `README` или несколько файлов из подкаталога `doc/`) и её чтение в поиске описания установки программного обеспечения.

4. Если программное обеспечение распространялось в форме исходных текстов, его компиляция. Сюда может быть включено редактирования файла `Makefile`, запуск скрипта `configure` и другие работы.

5. Тестирование и установка программного обеспечения.

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

Если вы хотите, то можете продолжать устанавливать программное обеспечение во FreeBSD ''традиционным'' способом. Однако FreeBSD предоставляет две технологии, которые могут сохранить вам много усилий: пакеты и порты. На момент написания таким образом были доступны более 20,000 сторонних приложений.

Для любого конкретно взятого приложения пакет FreeBSD является одним файлом, который вы должны загрузить. Пакет содержит уже откомпилированные копии всех команд приложения, а также все конфигурационные файлы и документацию. Загруженным файлом пакета можно управлять такими командами FreeBSD, как pkg_add(1) pkg_delete(1), pkg_info(1) и так далее. Установка нового приложения может выполняться единственной командой.

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

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

Действительно, система портов может также использоваться для генерации пакетов, которые позже могут управляться командой `pkg_add` и другими командами управления пакетами, о которых скоро будет рассказано.

Как пакеты, так и порты принимают во внимание зависимости. Предположим, что вы хотите установить приложение, которое зависит от некоторой установленной библиотеки. И приложение, и библиотека доступны во FreeBSD в виде портов и пакетов. Если вы используете команду `pkg_add` или систему портов для добавления приложений, то в обоих случаях будет обнаружено, что библиотека не была установлена, и сначала будет автоматически выполнена установка библиотеки.

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

Преимущества пакетов

- Сжатый tar-архив обычно меньше, чем сжатый tar-архив, содержащий исходный код приложения.

- Пакеты не требуют никакой дополнительной компиляции. Для таких больших приложений, как Mozilla, KDE или GNOME, это может быть важно, в частности, если вы работаете на медленной системе.

- Пакеты не требуют понимания процесса компиляции программного обеспечения во FreeBSD.

Преимущества портов

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

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

  В некоторых случаях для одного и того же приложения будут иметься несколько пакетов для указания конкретных настроек. Например, Ghostscript имеется как пакет `ghostscript` и как пакет `ghostscript-nox11`, в зависимости от того, установили вы сервер X11 или нет. Такой тип грубой настройки возможен при использовании пакетов, но быстро становится недостижим, если приложение имеет более одного или двух параметров компиляции.

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

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

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

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

Чтобы отслеживать обновления портов, подпишитесь на Список рассылки, посвящённый Портам FreeBSD и Список рассылки, посвящённый ошибкам в портах FreeBSD.

> Внимание: Перед установкой любого приложения необходимо зайти на http://vuxml.freebsd.org/, где находится информация по вопросам безопасности приложений.

> Вы можете также установить `security/portaudit`, который автоматически проверит все установленные приложения на наличие известных уязвимостей, проверка также будет выполняться перед сборкой какого-либо порта. Вы можете использовать `portaudit -F -a` и после установки пакетов.

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

## 4.3. Поиск нужного вам приложения

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

Список имеющихся для FreeBSD приложений постоянно растёт. К счастью, есть несколько способов найти то, что вам нужно:

- На сайте FreeBSD поддерживается обновляемый список имеющихся приложений для FreeBSD, в котором можно выполнять поиск, по адресу http://www.FreeBSD.org/ports/. Порты разбиты на категории, и вы можете либо выполнить поиск приложения по имени (если его знаете), либо просмотреть список всех приложений, относящихся к определённой категории.

- Dan Langille поддерживает сайт FreshPorts по адресу http://www.FreshPorts.org/. На нём отслеживаются изменения в приложениях из дерева портов, как только они происходят, он позволяет вам ''отслеживать'' один или несколько портов, и может высылать оповещение по электронной почте при их обновлении.

- Если вы не знаете названия нужного вам приложения, попытайтесь воспользоваться сайтом типа FreshMeat (http://www.freshmeat.net/) для поиска приложения, а затем возвратитесь на сайт 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''.

## 4.4. Использование системы пакетов

Текст предоставил Chern Lee.

### 4.4.1. Установка пакета

Для установки пакетов программного обеспечения для FreeBSD из локальных файлов или с сервера в сети вы можете использовать утилиту pkg_add(1).

Пример 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`. Список установленных файлов и описания всех пакетов могут быть найдены среди файлов этого каталога.

## 4.5. Использование Коллекции Портов

В этих разделах описаны основные приемы использования Коллекции Портов для установки и удаления программ из вашей системы.

### 4.5.1. Получение Коллекции Портов

Перед тем, как вы сможете устанавливать порты, установите Коллекцию Портов -- она представляет собой в основном набор файлов `Makefile`, патчей, файлов описаний, и размещается в каталоге `/usr/ports`.

При установке системы FreeBSD утилита sysinstall запрашивает, требуется ли вам установка Коллекции Портов. Если вы ответили отрицательно, для установки Коллекции Портов следуйте нижеприведенной инструкции:

Метод с использованием Sysinstall

В этом методе повторно используется sysinstall (`/stand/sysinstall` в FreeBSD версий ниже, чем 5.2) для ручной установки Коллекции Портов.

1. Работая как пользователь root, запустите `sysinstall` так, как это показано ниже:

       # 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 (Разд. A.5) для получения более полной информации об использовании CVSup и этого файла.

Метод с использованием CVSup

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

1. Установите порт `net/cvsup`. Обратитесь к разделу Установка CVSup (Разд. A.5.2) для получения более подробной информации.

2. Работая как пользователь `root`, скопируйте `/usr/share/examples/cvsup/ports-supfile` в новое место, например, в каталог `/root` или в ваш домашний каталог.

3. Отредактируйте `ports-supfile`.

4. Измените `CHANGE_THIS.FreeBSD.org` на близкий к вам сервер CVSup. Посмотрите Зеркала CVSup (Разд. A.5.7) для получения полного списка зеркалирующих сайтов.

5. Запустите `cvsup`

       # cvsup -g -L 2 /root/ports-supfile

6. При повторных запусках этой команды все последние изменения (кроме реального перестроения портов для вашей системы) будут загружаться и переноситься в вашу Коллекцию Портов.

### 4.5.2. Установка портов

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

- `Makefile`. `Makefile` содержит различные директивы, которые определяют, как приложение должно быть откомпилировано и куда в вашей системе оно должно быть установлено.

- Файл `distinfo`. Этот файл содержит информацию о файлах, которые должны существовать на вашей системе для успешной сборки порта, и их контрольные суммы, для проверки при помощи md5(1) того, что файлы в процессе загрузки не были повреждены.

- Каталог `files`. Этот каталог содержит патчи, использование которых необходимо для компиляции и установки программы в вашей системе FreeBSD. Патчи - это, как правило, маленькие файлы, в которых содержатся изменения, которые нужно внести в какой-то конкретный файл. Они имеют обычный текстовый формат и в основном содержат указания типа ''Удалить строку 10'' или ''Заменить строку 26 на такую ...''. Патчи также называются ''diff-файлами'' или просто ''диффами'', потому что они генерируются программой diff(1).

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

- `pkg-descr`. Это более подробное, зачастую многострочное описание программы.

- `pkg-plist`. Это список всех файлов, которые будут установлены портом. В нем также содержатся указания системе портов на удаление определенных файлов во время удаления порта.

В некоторых портах присутствуют и другие файлы, такие, как `pkg-message`. Система портов использует эти файлы для обработки особых ситуаций. Если вы хотите узнать более подробно об этих файлах и о портах вообще, то обратитесь к Руководству по созданию портов для FreeBSD.

В порт включаются инструкции относительно того, как выполнять построение из исходного кода, но не сам код. Вы можете получить исходный код с CD-ROM или из Интернет. Исходный код распространяется в том виде, какой предпочёл выбрать разработчик. Зачастую это tar-файл, обработанный утилитой gzip, но он может также быть упакован каким-то другим инструментом или быть не сжатым. Исходный код программы, в каком бы то виде он ни был, называется ''дистрибутивным'' (distfile). Два метода установки портов FreeBSD описаны ниже.

> Замечание: Для установки портов вы должны войти в систему как пользователь `root`.

> Внимание: Перед установкой любого порта необходимо убедиться в наличии свежей Коллекции Портов и заглянуть на http://vuxml.freebsd.org/, где могут освещаться вопросы безопасности, связанные с этим портом.

> Проверка на наличие уязвимостей может быть автоматически выполнена portaudit перед установкой нового приложения. Эту программу можно найти в Коллекции Портов (`security/portaudit`). Запустите `portaudit -F` перед установкой нового порта для загрузки свежей базы данных уязвимостей. Проверка безопасности и обновление базы данных должны выполняться при повседневной проверке безопасности системы. За дальнейшей информацией обращайтесь к страницам справочника portaudit(1) и periodic(8).

#### 4.5.2.1. Установка портов с CD-ROM

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

Вставьте ваш CD-ROM с FreeBSD в привод. Смонтируйте его в каталог `/cdrom`. (Если вы используете другую точку монтирования, то задайте make-переменную `CD_MOUNTPTS`.) Чтобы начать установку, перейдите в каталог с нужным вам портом:

    # 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` является программой, которая запускается с повышенными правами, выдаётся предупреждение о безопасности. Во время построения и установки портов вы должны принимать во внимание все выдаваемые предупреждения.

> Замечание: Вы можете сэкономить лишний шаг, просто выдав команду `make install` вместо `make` и последующей `make install` в двух отдельных шагах.

> Замечание: Некоторые командные процессоры для ускорения поиска выполнимых файлов и команд кэшируют имена программ, доступных для вызова из каталогов, перечисленных в переменной окружения `PATH`. Если вы используете один из таких командных процессоров, то перед использованием только что добавленных программ вам может понадобиться вызвать команду `rehash` после установки порта. Эта команда будет работать с такими оболочками, как, например, `tcsh`. При работе с такими командными процессорами, как `sh` или `shells/bash`, воспользуйтесь командой `hash -r`. Дополнительную информацию можно найти в документации к вашему командному процессору.

> Замечание: Пожалуйста, будьте готовы к тому, что лицензии некоторых портов не позволяют помещать их на 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`, если вы хотите выполнить загрузку также и всех этих зависимостей порта.

> Замечание: Вы можете построить все порты в категории за раз, запустив команду `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/`.

> Замечание: Некоторые порты позволяют (или даже требуют) задавать параметры, которые включают или выключают построение отдельных частей приложения, которые не нужны, некоторые параметры безопасности, а также прочие настройки. К некоторым из них, часто упоминаемым, относятся пакеты `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`. После смены каталога вы готовы к удалению `lsof`. Это делается командой `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. Порты и дисковое пространство

Использование Коллекции Портов со временем требует всё большего дискового пространства. Из-за тенденции к постоянному росту дерева портов, после построения и установки программного обеспечения из портов вы не должны забывать об очистке каталогов `work` командой `make `clean``. При этом будет удаляться каталог `work`, возникающий после построения и установки порта. Вы можете также удалить исходные файлы программы из каталога `distfiles`, а позже удалить установленные порты, если они более не используются.

Некоторые пользователи ограничивают набор доступных категорий портов, помещая в файл `refuse` соответствующую запись. В этом случае, при запуске программы CVSup она не будет загружать файлы из указанных категорий. Дополнительную информацию, относящуюся к файлу `refuse`, можно найти в Разд. A.5.3.1.

### 4.5.5. Обновление портов

> Замечание: После обновления Коллекции Портов, и перед тем, как обновить приложение из порта, сверьтесь с файлом `/usr/ports/UPDATING`. В нем дана информация по различным вопросам и дополнительным шагам, которые могут быть необходимы для обновления порта.

Поддержание ваших портов в актуальном состоянии может оказаться нудным занятием. К примеру, чтобы обновить порт, вам нужно перейти в каталог с портами, построить порт, удалить старый порт, установить новый, а затем вычистить его после построения. Представьте, сколько действий (пять) нужно сделать! Скучно, да? Это было большой проблемой для системных администраторов, но теперь есть утилиты, выполняющие эти действия за нас. Например, утилита `sysutils/portupgrade` сделает всё за вас сама! Просто установите её, как обычный порт, при помощи команды `make `install clean``.

Теперь создайте базу данных командой `pkgdb -F`. Она выяснит перечень установленных портов и создаст файл базы данных в каталоге `/var/db/pkg`. Теперь при вызове команды `portupgrade -a`, она будет использовать эту базу данных и файл портов `INDEX`. Наконец, portupgrade загрузит, построит, сделает резервную копию, установит и очистит порты, которые были обновлены. portupgrade имеет массу параметров для использования в разных ситуациях, из которых наибольшего внимания заслуживают описываемые далее.

Если вы хотите обновить только определённое приложение, но не полностью базу данных, используйте `portupgrade `pkgname``, с флагом `-r`, если portupgrade должен отработать все пакеты, которые зависят от указанного, и использовать флаг `-R` для отработки всех пакетов, которые требуют указанные пакеты.

Для использования при установке пакетов, а не портов, укажите флаг `-P`. С этим параметром portupgrade будет искать пакеты в локальных каталогах, указанных в переменной окружения `PKG_PATH`, или, если не найдет их, загрузит с удаленного сайта. Если пакеты не могут быть найдены локально или загружены удаленно, portupgrade использует порты. Чтобы запретить использование портов, укажите `-PP`.

Для простой загрузки дистрибутивных файлов без построения или установки чего бы то ни было, задайте флаг `-F`. Дополнительную информацию можно получить на странице справки по утилите portupgrade(1).

> Замечание: Важно регулярно обновлять базу данных пакетов при помощи команды `pkgdb -F` для восстановления целостности, особенно когда portupgrade запрашивает вас это сделать. Не прерывайте работы portupgrade при обновлении базы данных пакетов, это может привести к рассогласованию данных.

Существуют и другие утилиты, которые делают подобные вещи, посмотрите в каталоге `ports/sysutils` и выберите то, что вам подходит.

## 4.6. Действия после установки

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

Очевидно, что шаги, в точности требуемые для конфигурации каждого приложения, отличаются. Однако, если если вы только что установили новое приложение и вам интересно, ''Что же дальше?'', то вам могут помочь следующие советы:

- Воспользуйтесь командой pkg_info(1) для определения того, куда и какие файлы были установлены. К примеру, если вы только что установили FooPackage версии 1.0.0, то по команде

      # pkg_info -L foopackage-1.0.0 | less

  будет выведен список всех файлов, установленных пакетом. Обратите особое внимание на файлы в каталогах `man/`, которые являются справочными страницами, `etc/`, которые являются конфигурационными файлами, и `doc/`, которые являются более подробной документацией.

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

      # pkg_info | grep -i foopackage

  будет выведен список всех установленных пакетов, в названии которых присутствует `foopackage`. Замените `foopackage` в командной строке на то, что вам нужно.

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

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

      # pkg_info foopackage-1.0.0

  Строка `WWW:`, если она есть, должна содержать URL Web-сайта приложения.

- Порты, которые должны запускаться при загрузке системы (такие, как сервисы интернет), как правило, устанавливают скрипт в каталог `/usr/local/etc/rc.d`. Вы должны просмотреть скрипт на предмет его корректности и отредактировать или переименовать его, если это нужно. Обратитесь к разделу о Запуске сервисов для получения более полной информации.

## 4.7. Обработка нерабочих портов

Если вы встретили порт, который у вас не работает, есть несколько вещей, которые вы можете сделать, а именно:

1. Исправьте его! В Руководстве по созданию портов содержится подробная информация об инфраструктуре ''Портов'', так что вы сможете исправить иногда встречающиеся порты с ошибками или даже создать собственные!

2. Надавите -- только по электронной почте! Сначала пошлите письмо человеку, сопровождающему порт. Наберите команду `make maintainer` или прочтите `Makefile`, чтобы найти его адрес. Не забудьте указать имя и версию порта (скопировав строчку `$FreeBSD:` из файла `Makefile`) и включите в письмо весь вывод, предшествующий возникновению ошибки. Если вы не получили ответа от этого человека, то можете воспользоваться командой send-pr(1) для посылки сообщения об ошибке.

3. Загрузите пакет с ближайшего к вам FTP-сервера. ''Основная'' Коллекция Пакетов находится на сервере `ftp.FreeBSD.org` в каталоге с пакетами, но первым делом проверьте местное зеркало! Скорее всего, это будет работать. Кроме того, сделать это будет гораздо быстрее, чем пытаться компилировать порты из исходного кода. Воспользуйтесь программой pkg_add(1) для установки пакета в вашу систему.

# Глава 5. X Window System

Обновили для сервера X.Org X11 Ken Tom, Marc Fonvieille. Перевод на русский язык: Андрей Захватов.

## 5.1. Обзор

FreeBSD использует X11 для того, чтобы дать пользователям мощный графический интерфейс. X11 является свободно доступной версией X Window System, реализованной в Xorg и XFree86 (а также других программных пакетах, здесь не рассматриваемых). В версиях FreeBSD до и включая FreeBSD 5.2.1-RELEASE сервером X11 по умолчанию был XFree86, выпускаемый The XFree86 Project, Inc. Начиная с FreeBSD 5.3-RELEASE, официальной версией X11 по умолчанию стал Xorg, разработанный X.Org Foundation под лицензией, очень похожей на ту, которая используется FreeBSD. Под FreeBSD существуют также коммерческие X серверы.

Эта глава посвящена установке и настройке X11 в системе FreeBSD, с акцентом на релиз Xorg 7.5. За информацией о настройке XFree86 (в более старых релизах FreeBSD XFree86 был реализацией X11 по умолчанию), или более старых релизов Xorg, всегда можно обратиться к старым версиям Руководства FreeBSD по адресу http://docs.FreeBSD.org/doc/.

За дополнительной информацией по видео оборудованию, поддерживаемому X11, обратитесь к веб сайту Xorg.

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

- Как установить и настроить X11.

- О различных компонентах X Window System и их взаимодействии.

- Как установить и использовать различные оконные менеджеры.

- Как использовать шрифты TrueType® в X11.

- Как настроить вашу систему на графический интерфейс входа (XDM).

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

- Узнать, как устанавливать дополнительное программное обеспечение сторонних разработчиков (Гл. 4).

## 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, и есть множество свободно распространяемых и коммерческих приложений, которые это реализуют.

### 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 если мышь помещается поверх корневого окна (или заднего фона), то никакое окно фокус не получает, а нажатия клавиш просто пропадают. При использовании политики нечёткого фокуса он меняется только когда курсор попадает на новое окно, но не когда уходит с текущего окна.

> щелчок для выбора фокуса (click-to-focus)

>   Активное окно выбирается щелчком мыши. Затем окно может быть ''поднято'' и появится поверх всех других окон. Все нажатия клавиш теперь будут направляться в это окно, даже если курсор переместится к другому.

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

### 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, что определённо облегчает жизнь начинающему пользователю.

## 5.3. Установка X11

Версией X11 по умолчанию для FreeBSD является Xorg. Xorg это сервер X дистрибутива открытой реализации X Window System, выпущенной X.Org Foundation. Xorg основан на коде XFree86 4.4RC2 и X11R6.6. Версия Xorg, доступная на данный момент из коллекции портов FreeBSD: 7.5.

Для сборки и установки Xorg из Коллекции портов, выполните:

    # cd /usr/ports/x11/xorg
    # make install clean

> Замечание: Перед сборкой полной версии Xorg удостоверьтесь в наличии хотя бы 4 GB свободного места.

Кроме того, X11 может быть установлен непосредственно из пакетов. Бинарные пакеты, устанавливаемые pkg_add(1), доступны и для X11. Когда pkg_add(1) используется для удаленной загрузки пакетов, номер версии пакета необходимо удалить. pkg_add(1) автоматически установит последнюю версию приложения.

Таким образом, для загрузки и установки пакета Xorg, просто наберите:

    # pkg_add -r xorg

> Замечание: В примерах выше будет установлен полный дистрибутив X11, включая серверы, клиенты, шрифты и так далее. Также доступны и отдельные пакеты и порты для различных частей X11.

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

## 5.4. Конфигурация X11

Текст предоставил Christopher Shumway.

### 5.4.1. Перед тем, как начать

Перед настройкой X11 необходима следующая информация о конфигурируемой системе:

- Характеристики монитора

- Набор микросхем, используемый в видеоадаптере

- Объём видеопамяти

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

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

Объём видеопамяти графического адаптера определяет разрешение и глубину цвета, с которым может работать система. Это важно, чтобы пользователь знал ограничения системы.

### 5.4.2. Конфигурирование X11

Начиная с версии 7.3, Xorg зачастую может работать без какого-либо файла настройки, для его запуска достаточно просто набрать:

    % startx

Начиная с версии 7.4, Xorg может использовать HAL для автоматического поиска клавиатуры и мыши. Порты `sysutils/hal` и `devel/dbus` будут инсталлированы как зависимости `x11/xorg`, но для их включения необходимо иметь следующие записи в `/etc/rc.conf` file:

    hald_enable="YES"
    dbus_enable="YES"

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

Автоматическая конфигурация не всегда может сработать на некотором оборудовании, либо создать не совсем ту настройку, которая желаема. В этих случаях, необходима ручная настройка конфигурации.

> Замечание: Такие оконные менеджеры, как GNOME, KDE или Xfce имеют собственные утилиты, позволяющие пользователю легко устанавливать такие параметры, как разрешение экрана. Поэтому, если конфигурация по-умолчанию не подходящая и вы планируете инсталлировать эти оконные менеджеры, просто можете продолжить настройку рабочей среды, используя их собственные утилиты для установок параметров экрана.

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

    # Xorg -configure

При этом в каталоге `/root` будет создан скелет конфигурационного файла X11 под именем `xorg.conf.new` (там, куда после su(1) или непосредственного входа будет указывать переменная `$HOME`). Программа X11 сделает попытку распознать графическое оборудование системы и запишет конфигурационный файл, загружающий правильные драйверы для обнаруженного оборудования в системе.

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

    # Xorg -config xorg.conf.new

Начиная с Xorg 7.4 и выше, это тестирование покажет лишь черный экран, что делает диагностику не совсем полноценным. Старое поведение будет доступно при использовании опции `retro`

    # Xorg -config xorg.conf.new -retro

Если появилась чёрно-белая сетка и курсор мыши в виде X, то настройка была выполнена успешно. Для завершения тестирования просто нажмите одновременно Ctrl+Alt+Backspace.

> Замечание: Данная комбинация включена по-умолчанию до Xorg версии 7.3. Для включения этого в версии 7.4 и выше, вы должны ввести следующую команду в любом эмуляторе X терминала:

>     % setxkbmap -option terminate:ctrl_alt_bksp

> или создать конфигурационный файл клавиатуры для hald называемый `x11-input.fdi` и сохранить его в `/usr/local/etc/hal/fdi/policy` директории. Данный файл должен содержать следующие строчки:

>     <?xml version="1.0" encoding="ISO-8859-1"?>
>     <deviceinfo version="0.2">
>       <device>
>         <match key="info.capabilities" contains="input.keyboard">
>           <merge key="input.x11_options.XkbOptions" type="string">terminate:ctrl_alt_bksp</merge>
>         </match>
>       </device>
>     </deviceinfo>

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

Если мышь не работает, ее необходимо настроить. Обратитесь к Разд. 2.10.10 в главе об установке FreeBSD. Дополнительно, начиная с версии 7.4, секция `InputDevice` в `xorg.conf` игнорируется в пользу автоматического поиска устройств. Для возвращения старого поведения, добавьте следующие строчки в секции `ServerLayout` или `ServerFlags`:

    Option "AutoAddDevices" "false"

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

> Замечание: Как ранее уже сообщалось, начиная с версии 7.4, по-умолчанию, hald демон будет пытаться распознать вашу клавиатуру автоматически. Есть возможность, что раскладка вашей клавиатуры или ее модель будут определены некорректно. Такие оконные менеджеры как GNOME, KDE или Xfce содержат свои инструменты для конфигурирования клавиатур. Тем не менее, можно установить параметры клавиатуры непосредственно с помощью утилиты setxkbmap(1) или через haldконфигурационные правила.

> Например, если вы хотите использовать клавиши PC 102 клавиатуры, идущая с французской раскладкой, мы должны создать конфигурационный файл клавиатуры для hald называемый `x11-input.fdi` и сохранить в `/usr/local/etc/hal/fdi/policy` директории. Этот файл должен содержать следующие строчки:

>     <?xml version="1.0" encoding="ISO-8859-1"?>
>     <deviceinfo version="0.2">
>       <device>
>         <match key="info.capabilities" contains="input.keyboard">
>           <merge key="input.x11_options.XkbModel" type="string">pc102</merge>
>           <merge key="input.x11_options.XkbLayout" type="string">fr</merge>
>         </match>
>       </device>
>     </deviceinfo>

> Если этот файл уже существует, просто скопируйте и добавьте эти строчки в файл данный файл.

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

> Есть возможность проделать ту же конфигурацию из X терминала или скрипт следующей командой:

>     % setxkbmap -model pc102 -layout fr

> Файл `/usr/local/share/X11/xkb/rules/base.lst` содержит список различных клавиатур, доступные опции и раскладки.

Теперь выполните тонкую настройку в файле `xorg.conf.new` по своему вкусу. Откройте файл в текстовом редакторе, таком, как emacs(1) или ee(1). Сначала задайте частоты для монитора. Они обычно обозначаются как частоты горизонтальной и вертикальной синхронизации. Эти значения добавляются в файл `xorg.conf.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"

Пока файл конфигурации `xorg.conf.new` открыт в редакторе, выберите желаемые разрешение и глубину цвета, которые будут использоваться по умолчанию. Они задаются в разделе `"Screen"`:

    Section "Screen"
            Identifier "Screen0"
            Device     "Card0"
            Monitor    "Monitor0"
            DefaultDepth 24
            SubSection "Display"
                    Viewport  0 0
                    Depth     24
                    Modes     "1024x768"
            EndSubSection
    EndSection

Ключевое слово `DefaultDepth` описывает глубину цвета, с которой будет работа по умолчанию. Это значение может быть переопределено при помощи параметра командной строки `-depth` для Xorg(1). Ключевое слово `Modes` описывает разрешение, с которым нужно работать при данной глубине цвета. Заметьте, что поддерживаются только те стандартные режимы VESA, что определены графическим оборудованием настраиваемой системы. В примере выше глубина цвета по умолчанию равна двадцати четырём битам на пиксел. При такой глубине цвета принимается разрешение в 1024 на 768 точек.

Наконец, запишите конфигурационный файл и протестируйте его при помощи тестового режима, описанного выше.

> Замечание: При решении проблем могут помочь лог файлы X11, в которых находится информация по каждому устройству, к которому подключен сервер X11. Лог файлам Xorg названия даются в формате `/var/log/Xorg.0.log`. Имена лог файлам могут даваться от `Xorg.0.log` до `Xorg.8.log` и так далее.

Если все в порядке, то конфигурационный файл нужно установить в общедоступное место, где его сможет найти Xorg(1). Обычно это `/etc/X11/xorg.conf` или `/usr/local/etc/X11/xorg.conf`.

    # cp xorg.conf.new /etc/X11/xorg.conf

Теперь процесс настройки X11 завершен. Xorg теперь можно запустить с помощью startx(1). X11 можно также запустить через xdm(1).

### 5.4.3. Тонкие вопросы настройки

#### 5.4.3.1. Конфигурирование при работе с графическими чипсетами Intel® i810

Конфигурирование при работе с интегрированными наборами микросхем Intel i810 требует наличия `agpgart`, программного интерфейса AGP, посредством которого X11 будет управлять адаптером. Подробности смотрите на странице справочника agp(4).

Это позволит конфигурировать графическое оборудование точно так же, как и любой другой графический адаптер. Заметьте, что для систем, у которых драйвер agp(4) в ядро не вкомпилирован, попытка погрузить модуль с помощью kldload(8) окончится неудачно. Этот драйвер должен оказаться в ядре во время загрузки, либо вкомпилированным, либо подгруженным посредством `/boot/loader.conf`.

#### 5.4.3.2. Настройка широкоэкранного режима

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

Существующие широкоэкранные стандарты (WSXGA, WSXGA+, WUXGA, WXGA, WXGA+, и т.д.) поддерживают форматы изображения 16:10 и 10:9, которые могут быть проблемными. Для формата 16:10, например, возможны следующие разрешения экрана:

- 2560x1600

- 1920x1200

- 1680x1050

- 1440x900

- 1280x800

Иногда достаточно добавить одно из этих разрешений в качестве параметра `Mode` в раздел `Section "Screen"` вот так:

    Section "Screen"
    Identifier "Screen0"
    Device     "Card0"
    Monitor    "Monitor0"
    DefaultDepth 24
    SubSection "Display"
        Viewport  0 0
        Depth     24
        Modes     "1680x1050"
    EndSubSection
    EndSection

Xorg может извлечь информацию о разрешении из монитора посредством I2C/DDC, так что у него есть данные, какие частоты и разрешения может поддерживать монитор.

Если эти `ModeLines` не определены в драйверах, может потребоваться дополнительная настройка Xorg. Используя `/var/log/Xorg.0.log`, можно извлечь достаточно информации для создания рабочей строки `ModeLine` вручную. Просто обратитесь к следующей информации:

    (II) MGA(0): Supported additional Video Mode:
    (II) MGA(0): clock: 146.2 MHz   Image Size:  433 x 271 mm
    (II) MGA(0): h_active: 1680  h_sync: 1784  h_sync_end 1960 h_blank_end 2240 h_border: 0
    (II) MGA(0): v_active: 1050  v_sync: 1053  v_sync_end 1059 v_blanking: 1089 v_border: 0
    (II) MGA(0): Ranges: V min: 48  V max: 85 Hz, H min: 30  H max: 94 kHz, PixClock max 170 MHz

Эта информация называется EDID. Создание `ModeLine` из сводится к расположению номеров в правильном порядке:

    ModeLine <name> <clock> <4 horiz. timings> <4 vert. timings>

Для нашего примера `ModeLine` в `Section "Monitor"` будет выглядеть так:

    Section "Monitor"
    Identifier      "Monitor1"
    VendorName      "Bigname"
    ModelName       "BestModel"
    ModeLine        "1680x1050" 146.2 1680 1784 1960 2240 1050 1053 1059 1089
    Option          "DPMS"
    EndSection

После завершения редактирования конфигурации, X должен запуститься в новом широкоэкранном разрешении.

## 5.5. Использование шрифтов в X11

Текст предоставил Murray Stokely.

### 5.5.1. Шрифты Type1

Шрифты, используемые по умолчанию и распространяемые вместе с X11, вряд ли можно назвать идеально подходящими для применения в обычных издательских приложениях. Большие презентационные шрифты выглядят рвано и непрофессионально, а мелкие шрифты в Netscape вообще невозможно разобрать. Однако есть некоторое количество свободно распространяемых высококачественных шрифтов Type1 (PostScript®), которые можно без изменений использовать с X11. К примеру, в наборе шрифтов URW (`x11-fonts/urwfonts`) имеются высококачественные версии стандартных шрифтов type1 (Times Roman®, Helvetica®, Palatino® и другие). В набор Freefonts (`x11-fonts/freefonts`) включено ещё больше шрифтов, однако большинство из них предназначено для использования в программном обеспечении для работы с графикой, например, Gimp, и они не вполне пригодны для использования в качестве экранных шрифтов. Кроме того, X11 с минимальными усилиями может быть настроена на использование шрифтов TrueType. Более детальная информация находится на странице справочной системы X(7) и в разделе о шрифтах TrueType ниже.

Для установки вышеупомянутых коллекций шрифтов Type1 из коллекции портов выполните следующие команды:

    # cd /usr/ports/x11-fonts/urwfonts
    # make install clean

То же самое нужно будет сделать для коллекции freefont и других. Чтобы X-сервер обнаруживал этих шрифты, добавьте соответствующую строку в файл настройки X сервера (`/etc/X11/xorg.conf`), которая должна выглядеть так:

    FontPath "/usr/local/lib/X11/fonts/URW/"

Либо из командной строки при работе с X выполните:

    % xset fp+ /usr/local/lib/X11/fonts/URW
    % xset fp rehash

Это сработает, но будет потеряно, когда сеанс работы с X будет закрыт, если эта команда не будет добавлена в начальный файл (`~/.xinitrc` в случае обычного сеанса через `startx` или `~/.xsession` при входе через графический менеджер типа XDM). Третий способ заключается в использовании нового файла `/usr/local/etc/fonts/local.conf`: посмотрите раздел об антиалиасинге.

### 5.5.2. Шрифты TrueType®

В Xorg имеется встроенная поддержка шрифтов TrueType. Имеются два модуля, которые могут обеспечить эту функциональность. В нашем примере используется модуль freetype, потому что он в большей степени похож на другие механизмы для работы с шрифтами. Для включения модуля freetype достаточно в раздел `"Module"` файла `/etc/X11/xorg.conf` добавить следующую строчку.

    Load  "freetype"

Теперь создайте каталог для шрифтов TrueType (к примеру, `/usr/local/lib/X11/fonts/TrueType`) и скопируйте все шрифты TrueType в этот каталог. Имейте в виду, что напрямую использовать шрифты TrueType с Macintosh® нельзя; для использования с X11 они должны быть в формате UNIX/MS-DOS/Windows. После того, как файлы будут скопированы в этот каталог, воспользуйтесь утилитой ttmkfdir для создания файла `fonts.dir`, который укажет подсистеме вывода шрифтов X на местоположение этих новых файлов. `ttmkfdir` имеется в Коллекции Портов FreeBSD: `x11-fonts/ttmkfdir`.

    # cd /usr/local/lib/X11/fonts/TrueType
    # ttmkfdir -o fonts.dir

После этого добавьте каталог со шрифтами TrueType к маршруту поиска шрифтов. Это делается точно также, как описано выше для шрифтов Type1, то есть выполните

    % xset fp+ /usr/local/lib/X11/fonts/TrueType
    % xset fp rehash

или добавьте строку `FontPath` в файл `xorg.conf`.

Это всё. Теперь Netscape, Gimp, StarOffice™ и все остальные X-приложения должны увидеть установленные шрифты TrueType. Очень маленькие (как текст веб-страницы на дисплее с высоким разрешением) и очень большие (в StarOffice) шрифты будут теперь выглядеть гораздо лучше.

### 5.5.3. Антиалиасинг шрифтов

Обновление выполнил Joe Marcus Clarke.

Антиалиасинг присутствует в X11 начиная с XFree86, версии 4.0.2. Однако настройка шрифтов была довольно громоздка вплоть до появления XFree86 4.3.0. Начиная с версии XFree86 4.3.0, все шрифты, расположенные в каталогах `/usr/local/lib/X11/fonts/` и `~/.fonts/`, автоматически становятся доступными для применения антиалиасинга в приложениях, использующих Xft. Не все приложения могут использовать Xft, но во многих его поддержка присутствует. Примерами приложений, использующих Xft, является Qt версий 2.3 и более поздних (это инструментальный пакет для оболочки KDE), GTK+ версий 2.0 и более поздних (это инструментальный пакет для оболочки GNOME), а также Mozilla версий 1.2 и более поздних.

Для применения к шрифтам антиалиасинга, а также для настройки параметров антиалиасинга, создайте (или отредактируйте, если он уже существует) файл `/usr/local/etc/fonts/local.conf`. Некоторые мощные возможности системы шрифтов Xft могут быть настроены при помощи этого файла; в этом разделе описаны лишь некоторые простые возможности. Для выяснения всех деталей, пожалуйста, обратитесь к fonts-conf(5).

Этот файл должен быть сформирован в формате XML. Обратите особое внимание на регистр символов, и удостоверьтесь, что все тэги корректно закрыты. Файл начинается обычным заголовком XML, за которым следуют DOCTYPE и тэг `<fontconfig>`:

            <?xml version="1.0"?>
            <!DOCTYPE fontconfig SYSTEM "fonts.dtd">
            <fontconfig>

Как и говорилось ранее, все шрифты из каталога `/usr/local/lib/X11/fonts/`, а также `~/.fonts/` уже доступны для приложений, использующих Xft. Если вы хотите добавить каталог, отличный от этих двух, добавьте строчку, подобную следующей, в файл `/usr/local/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>
            <match target="font">
                <test name="pixelsize" compare="less" qual="any">
                    <double>14</double>
                </test>
                <edit mode="assign" name="antialias">
                    <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>`. Если этого не сделать, ваши изменения будут проигнорированы.

Набор шрифтов по умолчанию, поставляемый с X11, не очень подходит, если включается антиалиасинг. Гораздо лучший набор шрифтов, используемых по умолчанию, можно найти в порте `x11-fonts/bitstream-vera`. Этот порт установит файл `/usr/local/etc/fonts/local.conf`, если такого ещё не существует. Если файл существует, то порт создаст файл `/usr/local/etc/fonts/local.conf-vera`. Перенесите содержимое этого файла в `/usr/local/etc/fonts/local.conf`, и шрифты Bitstream автоматически заменят используемые по умолчанию в X11 шрифты 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>

> Замечание: В зависимости от типа дисплея, `rgb` может потребоваться заменить на `bgr`, `vrgb` или `vbgr`: пробуйте и смотрите, что работает лучше.

Антиалиасинг должен быть включен при следующем запуске X-сервера. Однако программы должны знать, как использовать его преимущества. В настоящее время инструментальный пакет Qt умеет ими пользоваться, так что вся оболочка KDE может использовать шрифты с антиалиасингом. GTK+ и GNOME также можно заставить использовать антиалиасинг посредством капплета ''Font'' (обратитесь к Разд. 5.7.1.3 для выяснения всех подробностей). По умолчанию Mozilla версий 1.2 и выше будет автоматически использовать антиалиасинг. Для отмены использования антиалиасинга перестройте Mozilla с флагом `-DWITHOUT_XFT`.

## 5.6. Менеджеры экранов (Display Managers) X

Текст предоставил Seth Kingsley.

### 5.6.1. Вступление

Менеджер Экранов X (XDM) это необязательный компонент X Window System, который используется для управления входом пользователей в систему. Это полезно в ряде ситуаций, например для минимальных ''X Терминалов'', десктопов, больших сетевых серверов экранов. Так как X Window System не зависит от сетей и протоколов, то существует множество различных конфигураций для X клиентов и серверов, запущенных на различных компьютерах, подключенных к сети. XDM предоставляет графический интерфейс для выбора сервера, к которому вы желаете подключится, и введения информации, авторизующей пользователя, например комбинации логина и пароля.

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

### 5.6.2. Использование XDM

Программой даемона XDM является `/usr/local/bin/xdm`. Эта программа может быть запущена от пользователя `root` в любой момент, и она начнёт управлять дисплеем X на локальной машине. Если XDM нужно запускать в фоновом режиме каждый раз при запуске компьютера, то наиболее правильный способ -- это добавить новую запись в `/etc/ttys`. Для более подробной информации о формате и использовании этого файла смотрите Разд. 23.3.2.1. Вот строка, которую необходимо добавить в файл `/etc/ttys` для того, чтобы запустить даемон XDM на виртуальном терминале:

    ttyv8  "/usr/local/bin/xdm -nodaemon"  xterm   off secure

По умолчанию эта запись отключена; для её включения нужно заменить пятое поле с `off` на `on` и перезапустить init(8), используя метод, описанный в Разд. 23.3.2.2. Первое поле это название терминала, которым будет управлять программа, `ttyv8`. Это означает, что XDM будет запущен на 9ом виртуальном терминале.

### 5.6.3. Конфигурирование XDM

Конфигурационные файлы XDM находятся в каталоге `/usr/local/lib/X11/xdm`. В нём размещаются насколько файлов, которые используются для изменения поведения и внешнего вида XDM. Обычно это следующие файлы:

Файл | Описание
--- | ---
`Xaccess` | Правила авторизации клиентов.
`Xresources` | Значения ресурсов X по умолчанию.
`Xservers` | Список локальных и удаленных экранов.
`Xsession` | Сценарий сессии по умолчанию.
`Xsetup_`* | Скрипт для запуска приложений до появления приглашения к входу в систему.
`xdm-config` | Глобальный конфигурационный файл для всех экранов запущенных на локальной машине
`xdm-errors` | Ошибки сгенерированные серверной программой.
`xdm-pid` | ID процесса запущенного 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, описанному в документации к X11.

#### 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`:

    ! БЕЗОПАСНОСТЬ: do not listen for XDMCP or Chooser requests
    ! Закомментируйте эти линии, если вы хотите управлять X терминалами с xdm
    DisplayManager.requestPort:     0

и потом перезапустите XDM. Помните, что комментарии в файлах app-defaults начинаются с символа ''!'', а не как обычно, ''#''. Может потребоваться более жёсткий контроль доступа -- взгляните на примеры из `Xaccess` и обратитесь к странице справочника xdm(1) за дальнейшей информацией.

### 5.6.5. Замены для XDM

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

## 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. Web сайт также содержит достаточно исчерпывающие FAQ'и, касающиеся установки, конфигурирования и управления GNOME.

#### 5.7.1.2. Установка GNOME

Программу проще всего установить из пакета или коллекции портов:

Для установки пакета GNOME из сети, просто наберите:

    # pkg_add -r gnome2

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

    # cd /usr/ports/x11/gnome2
    # make install clean

После установки GNOME нужно указать X-серверу на запуск GNOME вместо стандартного оконного менеджера.

Самый простой путь запустить GNOME - это использовать GDM (GNOME Display Manager). GDM, который устанавливается, как часть GNOME (но отключен по умолчанию), может быть включён путём добавления `gdm_enable="YES"` в `/etc/rc.conf`. После перезагрузки, GNOME запустится автоматически после того, как вы зарегистрируйтесь в системе. Никакой дополнительной конфигурации не требуется.

GNOME может также быть запущен из командной строки с помощью конфигурирования файла `.xinitrc`. Если файл `.xinitrc` уже откорректирован, то просто замените строку, в которой запускается используемый менеджер окон, на ту, что вызовет /usr/local/bin/gnome-session. Если в конфигурационном файле нет ничего особенного, то будет достаточно просто набрать:

    % echo "/usr/local/bin/gnome-session" > ~/.xinitrc

Теперь наберите `startx`, и будет запущена графическая оболочка GNOME.

> Замечание: Если используется более старый менеджер дисплеев типа XDM, то это не сработает. Вместо этого создайте выполнимый файл `.xsession` с той же самой командой в нём. Для этого отредактируйте файл, заменив существующую команду запуска оконного менеджера на /usr/local/bin/gnome-session:

    % echo "#!/bin/sh" > ~/.xsession
    % echo "/usr/local/bin/gnome-session" >> ~/.xsession
    % chmod +x ~/.xsession

Ещё одним вариантом является настройка менеджера дисплеев таким образом, чтобы он позволял выбирать оконный менеджер во время входа в систему; в разделе о KDE в подробностях описывается, как сделать это для kdm, менеджера дисплеев из KDE.

#### 5.7.1.3. Шрифты с антиалиасингом и GNOME

X11 поддерживает антиалиасинг посредством своего расширения ''RENDER''. GTK+ 2.0 и более поздние версии (это инструментальный пакет, используемый GNOME) могут использовать такую функциональность. Настройка антиалиасинга описана в Разд. 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 поставляется веб-браузер под названием Konqueror, который является серьезным соперником другим браузерам для UNIX-систем. Дополнительную информацию о KDE можно найти на веб-сайте KDE в FreeBSD. Для получения информации и информационных ресурсов, специфичных для KDE во FreeBSD, обратитесь к сайту команды FreeBSD-KDE team.

Имеется две версии KDE доступные на FreeBSD. Версия 3 была доступна очень долгое время и она является очень зрелой. Версия 4 - это следующее поколение, также доступное через Коллекцию Портов. Обе версии могут быть инсталлированы одновременно.

#### 5.7.2.2. Установка KDE

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

Для установки пакета KDE3 из сети, просто наберите:

    # pkg_add -r kde

Для установки пакета KDE4 из сети, просто наберите:

    # pkg_add -r kde4

pkg_add(1) автоматически загрузит самую последнюю версию приложения.

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

    # cd /usr/ports/x11/kde3
    # make install clean

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

    # cd /usr/ports/x11/kde4
    # make install clean

После установки KDE нужно указать X-серверу на запуск этого приложения вместо оконного менеджера, используемого по умолчанию. Это достигается редактированием файла `.xinitrc`:

Для KDE3:

    % echo "exec startkde" > ~/.xinitrc

Для KDE4:

    % echo "exec /usr/local/kde4/bin/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 или что-то ещё) запускать после входа в систему.

Для того, чтобы разрешить запуск kdm, измените в файле `/etc/ttys` строку, относящуюся к консоли `ttyv8`:

Для KDE3:

    ttyv8 "/usr/local/bin/kdm -nodaemon" xterm on secure

Для KDE4:

    ttyv8 "/usr/local/kde4/bin/kdm -nodaemon" xterm on secure

### 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/local/bin/startxfce4" > ~/.xinitrc

При следующем запуске X в качестве рабочего стола будет использоваться XFce. Как сказано выше, если используется менеджер дисплеев, такой, как `XDM`, создайте файл `.xsession` так, как это описано в разделе о GNOME, но с командой `/usr/local/bin/startxfce4`, либо настройте менеджер дисплеев так, чтобы он разрешил выбор рабочего стола во время входа в систему, как это описано в разделе о kdm.

# II. Общие задачи

Теперь, когда основы были пройдены, в данной части Руководства FreeBSD будут обсуждаться некоторые часто используемые возможности FreeBSD. В этих главах:

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

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

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

- Система печати разобрана в деталях, как для непосредственно подключенных принтеров, так и для принтеров, подключенных через сеть.

- Показано, как запускать приложения Linux в системе FreeBSD.

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

# Глава 6. Приложения для настольного компьютера

Предоставил Christophe Juniet. Перевод на русский язык: Денис Пеплин.

## 6.1. Краткий обзор

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

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

Поскольку FreeBSD обеспечивает двоичную совместимость с Linux, многие приложения, первоначально разработанные для Linux, доступны и на вашем компьютере. Настоятельно рекомендуется прочитать Гл. 10 перед установкой любого из приложений Linux. Названия многих портов, использующих двоичную совместимость с Linux, начинаются с ''linux-''. Помните это при поиске отдельного порта, например с помощью whereis(1). Далее в статье подразумевается, что вы включили бинарную совместимость с Linux перед установкой какого-либо приложения Linux.

Вот несколько категорий, о которых пойдет речь в этой главе:

- Браузеры (такие как Mozilla, Opera, Firefox, Konqueror)

- Бизнес приложения (такие как KOffice, AbiWord, GIMP, OpenOffice.org)

- Программы просмотра документов (такие как Acrobat Reader®, gv, Xpdf, GQview)

- Финансовые программы (такие как GnuCash, Gnumeric, Abacus)

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

- Узнать, как устанавливать дополнительные программы сторонних производителей (Гл. 4).

- Узнать, как устанавливать программы Linux (Гл. 10).

Чтобы получить дополнительную информацию о настройке мультимедиа среды, прочтите Гл. 7. Если вам нужна электронная почта, обратитесь к Гл. 25.

## 6.2. Браузеры

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

В KDE и GNOME уже есть HTML браузеры. Обратитесь к Разд. 5.7 за подробной информацией об установке этих полноценных десктопов.

Если вы ищете облегченный браузер, попробуйте `www/dillo`, `www/links`, или `www/w3m` из коллекции портов.

Этот раздел рассказывает о следующих приложениях:

Название приложения | Потребность в ресурсах | Установка из портов | Основные зависимости
--- | --- | --- | ---
Mozilla | большая | тяжелая | Gtk+
Opera | малая | легкая | Доступны версии для FreeBSD и Linux. Для Linux версии необходимо наличие Linux Binary Compatibility и linux-openmotif
Firefox | средняя | тяжелая | Gtk+
Konqueror | средняя | тяжелая | Библиотеки KDE

### 6.2.1. Mozilla

Mozilla это наиболее современный и стабильный браузер; он полностью портирован на 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

### 6.2.2. Mozilla и Java™

Предоставил Tom Rhodes.

Установка Mozilla проста, но к сожалению, установка Mozilla с поддержкой дополнений, таких как Java™ и Macromedia® Flash™ отнимает и время и место на диске.

Первое, что нужно сделать -- загрузить файлы, которые будут использоваться с Mozilla. Зайдите с помощью имеющегося веб браузера на http://www.sun.com/software/java2/download.html и создайте учетную запись на этом веб-сайте. Сохраните имя пользователя и пароль, они могут понадобиться в будущем. Загрузите копию файлов `jdk-1_5_0-bin-scsl.zip` (JDK 5.0 SCSL Binaries) и `jdk-1_5_0-src-scsl.zip` (JDK 5.0 SCSL Source) и поместите их в каталог `/usr/ports/distfiles`, поскольку порт не может загрузить их автоматически в связи с лицензионными ограничениями. Загрузите с этого же сайта ''java environment'', http://javashoplm.sun.com/ECom/docs/Welcome.jsp?StoreId=22&PartDetailId=j2sdk-1.4.2_08-oth-JPR&SiteId=JSC&TransactionId=noreg, файл `j2sdk-1_4_2_08-linux-i586.bin`. Как и предыдущий, этот файл должен находиться в каталоге `/usr/ports/distfiles/`. Загрузите копию ''java patchkit'' с http://www.eyesbeyond.com/freebsddom/java/jdk15.html и поместите ее в `/usr/ports/distfiles/`. Наконец, установите порт `java/jdk15` при помощи стандартной команды `make install clean`.

Запустите Mozilla и выберите пункт About Plug-ins в меню Help. В списке установленных плагинов должен присутствовать плагин Java.

### 6.2.3. Mozilla и Macromedia® Flash™ plugin

Плагина Macromedia Flash для FreeBSD не существует. Тем не менее, есть решение (обертка, wrapper) для запуска плагина для Linux. Это решение также поддерживает плагины для Adobe® Acrobat®, RealPlayer и других.

Установите порт `www/linuxpluginwrapper`. Он требует для работы достаточно большого порта `emulators/linux_base`. Следуя инструкциям, исправьте файл `/etc/libmap.conf`! Примеры конфигураций вы можете найти в каталоге `/usr/local/share/examples/linuxpluginwrapper/`.

Установите порт `www/mozilla`, если Mozilla еще не установлена.

Теперь просто запустите Mozilla:

    % mozilla &

И войдите в пункт About Plug-ins меню Help. Должен появиться список со всеми доступными плагинами.

> Замечание: Плагин linuxpluginwrapper работает только на архитектуре i386.

### 6.2.4. Opera

Opera это очень быстрый, полноценный и совместимый со стандартами браузер. Он также идет в комплекте с почтовой и новостной программами, клиентом IRC, модулем чтения RSS/Atom и другими. Несмотря на все это, браузер Opera относительно легок и быстр. Он поставляется в двух вариантах: ''родная'' для FreeBSD версия и версия, запускаемая в режиме эмуляции Linux.

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

### 6.2.5. Firefox

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

Установите пакет, выполнив:

    # pkg_add -r firefox

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

    # cd /usr/ports/www/firefox
    # make install clean

### 6.2.6. Konqueror

Konqueror это часть KDE, но может быть использован и отдельно от KDE, путем установки `x11/kdebase3`. Konqueror это гораздо больше чем просто браузер, это также менеджер файлов и программа просмотра мультимедиа.

Konqueror поставляется с набором плагинов, доступных из `misc/konq-plugins`.

Konqueror поддерживает также Flash, документация How To для него доступна по адресу http://freebsd.kde.org/howto.php.

## 6.3. Бизнес приложения

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

Этот раздел описывает следующие приложения:

Название приложения | Потребность в ресурсах | Установка из портов | Основные зависимости
--- | --- | --- | ---
KOffice | малая | тяжелая | KDE
AbiWord | малая | легкая | Gtk+ или GNOME
The Gimp | малая | тяжелая | Gtk+
OpenOffice.org | большая | очень тяжелая | JDK™ 1.4, Mozilla

### 6.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

### 6.3.2. AbiWord

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

AbiWord может импортировать и экспортировать множество файловых форматов, включая патентованный Microsoft `.doc`.

AbiWord доступен в виде пакета. Вы можете установить его так:

    # pkg_add -r abiword

Если пакет недоступен, он может быть собран из коллекции портов, которая должна быть свежей. Это можно сделать командой:

    # cd /usr/ports/editors/abiword
    # make install clean

### 6.3.3. GIMP

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

Вы можете установить пакет, выполнив эту команду:

    # pkg_add -r gimp

Если на вашем сервере FTP нет этого пакета, вы можете использовать коллекцию портов. Категория graphics коллекции портов содержит также раздел Руководство Gimp. Здесь показано, как его установить:

    # cd /usr/ports/graphics/gimp
    # make install clean
    # cd /usr/ports/graphics/gimp-manual-pdf
    # make install clean

> Замечание: Категория graphics коллекции портов содержит версию GIMP для разработчиков в `graphics/gimp-devel`. HTML версия Руководства Gimp находятся в `graphics/gimp-manual-html`.

### 6.3.4. OpenOffice.org

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

Текстовый процессор OpenOffice.org использует чистый XML формат файлов для увеличения переносимости и гибкости. Программа для работы с текстовыми таблицами предоставляет макроязык и может работать с внешними базами данных. OpenOffice.org уже стабильна и существует в версиях для Windows, Solaris™, Linux, FreeBSD, и Mac OS X. Дополнительную информацию об OpenOffice.org можно найти на веб сайте OpenOffice.org. Получить специфичную для FreeBSD информацию и загрузить пакеты можно с веб сайта команды портирования OpenOffice на FreeBSD (FreeBSD OpenOffice.org Porting Team).

Для установки OpenOffice.org, выполните:

    # pkg_add -r openoffice

> Замечание: Эта операция должна работать для любого релиза (-RELEASE) FreeBSD. Если вы используете иные версии (-STABLE, -CURRENT), нужный пакет может быть загружен с сайта группы поддержки OpenOffice.org и затем установлен при помощи pkg_add(1). На сайте вы найдете как последний стабильный релиз, так и текущую версию, находящуюся в разработке.

После установки пакета просто наберите следующую команду для запуска OpenOffice.org:

    % openoffice.org

> Замечание: Во время первого запуска, вам будут заданы несколько вопросов и в вашей домашней директории будет создан каталог `.openoffice.org2`.

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

    # cd /usr/ports/editors/openoffice.org-2.0
    # make install clean

> Замечание: Если вы хотите собрать локализованную версию, то вместо предыдущей командной строки используйте следующее:

>     # make LOCALIZED_LANG=your_language install clean

> Вам следует изменить `your_language` на корректный ISO код языка. Список поддерживаемых языковых кодов доступен в файле `files/Makefile.localized`, расположенный в директории порта.

После того, как это было сделано OpenOffice.org может быть запущен командой:

    % openoffice.org

## 6.4. Программы просмотра документов

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

В разделе говорится о следующих приложениях:

Название приложения | Потребность в ресурсах | Установка из портов | Основные зависимости
--- | --- | --- | ---
Acrobat Reader | малая | легкая | Linux Binary Compatibility
gv | малая | легкая | Xaw3d
Xpdf | малая | легкая | FreeType
GQview | малая | легкая | Gtk+ или GNOME

### 6.4.1. Acrobat Reader®

Сейчас многие документы распространяются в формате PDF, аббревиатура для ''Portable Document Format''. Одна из рекомендованных программ для просмотра этого типа документов, это Acrobat Reader, выпущенный Adobe для Linux. Поскольку FreeBSD может запускать исполняемые файлы Linux, он доступен также и для FreeBSD.

Для установки Acrobat Reader 7 из Коллекции портов выполните:

    # cd /usr/ports/print/acroread7
    # make install clean

Пакет acroread7 недоступен из-за лицензионных ограничений.

### 6.4.2. gv

gv это программа просмотра PostScript и PDF. Она разработана на основе ghostview, но выглядит лучше благодаря библиотеке Xaw3d. Она быстра, а ее интерфейс несложен. У gv есть множество функций, таких как выбор ориентации, размера бумаги, масштаба и сглаживание. Почти любая операция может быть выполнена как с клавиатуры, так и мышью.

Для установки gv из пакета, выполните:

    # pkg_add -r gv

Если вы не можете получить пакет, используйте коллекцию портов:

    # cd /usr/ports/print/gv
    # make install clean

### 6.4.3. Xpdf

Если вам нужна небольшая программа просмотра PDF под FreeBSD, Xpdf это легкая и эффективная программа. Она требует очень небольшого количества ресурсов и очень стабильна. Используются стандартные шрифты X, Motif или другие пакеты для X не нужны.

Для установки пакета Xpdf, выполните эту команду:

    # pkg_add -r xpdf

Если пакет недоступен, или вы предпочитаете коллекцию портов, выполните:

    # cd /usr/ports/graphics/xpdf
    # make install clean

После завершения установки вы можете запустить Xpdf и использовать правую кнопку мыши для активации меню.

### 6.4.4. GQview

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

Если вы хотите установить пакет GQview, выполните:

    # pkg_add -r gqview

Если пакет недоступен, или вы предпочитаете использовать коллекцию портов, выполните:

    # cd /usr/ports/graphics/gqview
    # make install clean

## 6.5. Финансовые программы

Если по каким-то причинам вам нужно управлять своими финансами на десктопе FreeBSD, есть несколько мощных и простых в использовании приложений. Некоторые из них совместимы с широко распространенными форматами файлов, такими как документы Quicken® или Excel.

В этом разделе говорится о следующих приложениях:

Название приложения | Потребность в ресурсах | Установка из портов | Основные зависимости
--- | --- | --- | ---
GnuCash | малая | тяжелая | GNOME
Gnumeric | малая | тяжелая | GNOME
Abacus | малая | легкая | Tcl/Tk

### 6.5.1. GnuCash

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

GnuCash предоставляет интеллектуальный журнал записей, иерархическую систему учетных записей, множество клавиатурных сокращений и метод автозавершения. Он может разбивать одну транзакцию на несколько частей, детализируя ее. GnuCash может импортировать и присоединять файлы Quicken QIF. Он также работает с основными международными форматами дат и валютами.

Для установки GnuCash в вашу систему, выполните:

    # pkg_add -r gnucash

Если пакет недоступен, вы можете использовать коллекцию портов:

    # cd /usr/ports/finance/gnucash
    # make install clean

### 6.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

### 6.5.3. Abacus

Abacus это небольшая и простая в использовании программа электронных таблиц. В ней много встроенных функций из нескольких областей, таких как статистика, финансы и математика. Она может импортировать и экспортировать файлы Excel. Abacus также может печатать PostScript.

Для установки Abacus из пакета, выполните:

    # pkg_add -r abacus

Если пакет недоступен, вы можете использовать коллекцию портов, выполнив:

    # cd /usr/ports/deskutils/abacus
    # make install clean

## 6.6. Итоги

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

После первой установки десктопа, вы можете попробовать сделать шаг вперед с `misc/instant-workstation`. Этот ''мета-порт'' позволяет вам собрать типичный набор портов для рабочей станции. Вы можете настроить его, редактируя `/usr/ports/misc/instant-workstation/Makefile`. Следуйте синтаксису существующего файла при добавлении и удалении портов, соберите порт как обычно. В конечном итоге, вы можете создать большой пакет, соответствующий вашему собственному десктопу, и установить его на другие рабочие станции!

Вот небольшой обзор всех графических приложений, о которых говорилось в этой главе:

Имя приложения | Имя пакета | Имя порта
--- | --- | ---
Mozilla | `mozilla` | `www/mozilla`
Opera | `linux-opera` | `www/linux-opera`
Firefox | `firefox` | `www/firefox`
KOffice | `koffice-kde3` | `editors/koffice-kde3`
AbiWord | `abiword` | `editors/abiword`
The GIMP | `gimp` | `graphics/gimp1`
OpenOffice.org | `openoffice` | `editors/openoffice`
Acrobat Reader | `acroread` | `print/acroread7`
gv | `gv` | `print/gv`
Xpdf | `xpdf` | `graphics/xpdf`
GQview | `gqview` | `graphics/gqview`
GnuCash | `gnucash` | `finance/gnucash`
Gnumeric | `gnumeric` | `math/gnumeric`
Abacus | `abacus` | `deskutils/abacus`

# Глава 7. Мультимедиа

Предоставил Moses Moore. Перевод на русский язык: Александр Коваленко, Денис Пеплин.

## 7.1. Краткий обзор

FreeBSD поддерживает большое количество различных звуковых карт, что позволяет вам насладится высококачественным звуком. Это также дает возможность записывать и воспроизводить звуковые файлы в формате MPEG Audio Layer 3 (MP3), WAV, Ogg Vorbis, а также во множестве других форматов. Коллекция Портов FreeBSD также содержит ряд приложений, позволяющих редактировать записанные звуковые файлы, добавлять звуковые эффекты, управлять подключенными MIDI устройствами.

FreeBSD может поддерживать воспроизведение видеофайлов и DVD. Количество приложений, позволяющих кодировать, преобразовывать и воспроизводить различные форматы видео, существенно меньше количества приложений для работы со звуком. Например, на время написания этого документа в Коллекции Портов FreeBSD не существовало хорошего приложения для преобразования видео, которое могло бы быть использовано для преобразований между разными форматами, как, например, `audio/sox`. Впрочем, ситуация в этой области меняется быстро.

Эта глава описывает необходимые шаги для настройки вашей звуковой карты. Настройка и установка X11 (Гл. 5) уже охватывает вопросы, связанные с аппаратными установками вашей видеокарты, хотя могут быть возможности дополнительной настройки для улучшения воспроизведения.

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

- Как настроить систему так, чтобы звуковая карта была опознана.

- Методы проверки работы звуковой карты при помощи тестовых приложений.

- Как исправить проблемы, возникающие при работе со звуковыми картами.

- Как прослушать и создать MP3 и другие форматы.

- Как X сервер поддерживает видео.

- Некоторые проигрыватели и кодировщики видео, которые показывают хорошие результаты.

- Как воспроизвести DVD, `.mpg` и `.avi` файлы.

- Как скопировать информацию с CD и DVD в файлы.

- Как настроить ТВ тюнер.

- Как настроить сканер.

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

- Узнать, как конфигурировать и устанавливать новое ядро (Гл. 8).

> Внимание: Попытка смонтировать аудио CD при помощи команды mount(8) как минимум, сообщит об ошибке и, как максимум, может привести к панике ядра. Эти носители имеют специальные форматы, которые отличны от обычной файловой системы ISO.

## 7.2. Настройка звуковой карты

Предоставил Moses Moore. Расширил для FreeBSD 5.X Marc Fonvieille.

### 7.2.1. Настройка системы

Перед тем как начать, определите модель вашей карты, процессор, который она использует, и интерфейс карты: PCI или ISA. FreeBSD поддерживает множество разных PCI и ISA карт. Сверьтесь со списком поддерживаемых аудио устройств в Информации об оборудовании, чтобы проверить, поддерживается ли ваша карта. Этот документ также содержит информацию о том, какой драйвер поддерживает вашу карту.

Для того, чтобы использовать звуковую карту, вы должный загрузить соответствующий драйвер устройства. Этого можно достигнуть двумя путями. Простейший способ - это просто загрузить соответствующий вашей карте модуль ядра используя kldload(8), что можно сделать или из командной строки:

    # kldload snd_emu10k1

или добавлением соответствующей строки к файлу `/boot/loader.conf`:

    snd_emu10k1_load="YES"

Эти примеры приведены для звуковой карты Creative SoundBlaster® Live!. Другие имеющиеся модули драйверов звуковых карты приведены в `/boot/defaults/loader.conf` Если вы не уверены, какой драйвер использовать, попробуйте загрузить `snd_driver`:

    # kldload snd_driver

Это мета-драйвер, загружающий сразу все наиболее распространенные драйверы сразу. Это повышает скорость поиска правильного драйвера. Возможна также загрузка всех звуковых драйверов через `/boot/loader.conf`.

Для того чтобы узнать, какой именно драйвер требуется для вашей звуковой карты, вы можете проверить содержимое файла `/dev/sndstat` при помощи команды `cat /dev/sndstat`.

Другой способ заключается в добавлении статического драйвера в ядро. В разделе ниже дана более подробная информация о том, что вам нужно сделать для добавления поддержки оборудования. Более подробно о конфигурация ядра описана в Гл. 8.

#### 7.2.1.1. Настройка собственного ядра с поддержкой звука

Первое, что необходимо сделать, это добавить в ядро общий звуковой драйвер sound(4). Добавьте в файл конфигурации ядра следующую строку:

    device sound

Затем необходимо добавить поддержку имеющейся звуковой карты. Следовательно, нужно знать какой драйвер поддерживает карту. Для этого сверьтесь со списком поддерживаемых устройств из Информации об оборудовании. Например, звуковая карта Creative SoundBlaster Live! поддерживается драйвером snd_emu10k1(4). Для добавления поддержки этой карты, используйте:

    device snd_emu10k1

Прочтите страницу справочника драйвера, чтобы узнать, какой синтаксис использовать. Информация, относящаяся к синтаксису включения звуковых драйверов в файл конфигурации ядра, может быть также найдена в файле `/usr/src/sys/conf/NOTES`.

Не-PnP ISA карты могут потребовать включения в ядро информации о настройках звуковой карты (IRQ, I/O port, и т.д.). Эта информация добавляется редактированием файла `/boot/device.hints`. Во время загрузки системы loader(8) прочтет этот файл и передаст настройки ядру. Например, старая ISA не-PnP карта Creative SoundBlaster 16 использует драйвер snd_sbc(4) совместно с snd_sb16(4). Для этой карты к файлу настройки ядра необходимо добавить следующие строки:

    device snd_sbc
    device snd_sb16

и со следующей информацией в `/boot/device.hints`:

    hint.sbc.0.at="isa"
    hint.sbc.0.port="0x220"
    hint.sbc.0.irq="5"
    hint.sbc.0.drq="1"
    hint.sbc.0.flags="0x15"

В данном случае, карта использует порт ввода-вывода `0x220` и IRQ `5`.

Синтаксис, используемый в файле `/boot/device.hints`, описан в справочной странице драйвера.

Установки, приведенные выше, используются по умолчанию. В некоторых случаях вам может потребоваться изменить IRQ или другие настройки в соответствии с настройками карты. За более подробной информацией обратитесь к странице справочника snd_sbc(4).

### 7.2.2. Тестирование звуковой карты

После перезагрузки модифицированного ядра, или после загрузки необходимого модуля, звуковая карта должна появиться в буфере системных сообщений (dmesg(8)) примерно так:

    pcm0: <Intel ICH3 (82801CA)> port 0xdc80-0xdcbf,0xd800-0xd8ff irq 5 at device 31.5 on pci0
    pcm0: [GIANT-LOCKED]
    pcm0: <Cirrus Logic CS4205 AC97 Codec>

Статус звуковой карты может быт проверен через файл `/dev/sndstat`:

    # cat /dev/sndstat
    FreeBSD Audio Driver (newpcm)
    Installed devices:
    pcm0: <Intel ICH3 (82801CA)> at io 0xd800, 0xdc80 irq 5 bufsz 16384
    kld snd_ich (1p/2r/0v channels duplex default)

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

Если всё пройдет удачно, звуковая карта заработает. Если CD-ROM или DVD-ROM привод правильно подключён к звуковой карте, вы можете вставить CD в привод и воспроизвести его при помощи cdcontrol(1).

    % cdcontrol -f /dev/acd0 play 1

Различные приложения, например `audio/workman` могут предоставить более дружественный пользователю интерфейс. Вы можете также установить приложения для прослушивания звуковых файлов MP3, как например `audio/mpg123`. Быстрым способом тестирования звуковой карты является отправка данных в файл `/dev/dsp`, как показано здесь:

    % cat filename > /dev/dsp

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

Уровни громкости звука могут быть изменены командой mixer(8). Более подробная информация находится на странице справочной системы mixer(8).

#### 7.2.2.1. Часто встречающиеся проблемы

Ошибка | Решение
--- | ---
“`unsupported subdevice XX`” | Одно или более устройств не были правильно созданы. Повторите приведенные выше шаги.
“`sb_dspwr(XX) timed out`” | Порт ввода-вывода указан неправильно.
“`bad irq XX`” | IRQ установлен неправильно. Убедитесь, что настройки в системе и на карте одинаковы.
“`xxx: gus pcm not attached, out of memory`” | Для использования устройства недостаточно памяти.
“`xxx: can't open /dev/dsp!`” | Проверьте с помощью `fstat | grep dsp`, не занято ли устройство другим приложением. Создать проблемы могут esound и поддержка звука в KDE.

### 7.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), вышеуказанные настройки будут сделаны автоматически прозрачно для пользователя.

### 7.2.4. Установка значений по умолчанию для каналов mixer

Предоставил Josef El-Rayes.

Значения по умолчанию для различных каналов mixer жестко прописаны в исходных текстах драйвера pcm(4). Существует множество различных приложений и даемонов, которые позволяют устанавливать значения для mixer, которые они запоминают и выставляют каждый раз при запуске, но это не совсем правильное решение, нам нужны значения по умолчанию на уровне драйвера. Они могут быть установлены путем указания в `/boot/device.hints`. Например:

    hint.pcm.0.vol="100"

Установит значение для канала volume в значение по умолчанию 100, как только будет загружен модуль pcm(4).

## 7.3. Звук MP3

Предоставил Chern Lee.

MP3 (MPEG Layer 3 Audio) достигает качества звука, близкого к CD, и нет причин не воспользоваться им на вашей рабочей станции.

### 7.3.1. Проигрыватели MP3

На данный момент наиболее популярным MP3-проигрывателем для X11 является XMMS (X Multimedia System). Скины приложения WinAMP могут быть использованы для XMMS так как графический интерфейс пользователя практически идентичен интерфейсу программы WinAMP от Nullsoft. 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 Foobar-GreatestHits.mp3 ...
    MPEG 1.0 layer III, 128 kbit/s, 44100 Hz joint-stereo

`/dev/dsp1.0` должно быть заменено соответствующим устройством `dsp` для вашей системы.

### 7.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. Например, для того, чтобы скопировать 7-ую аудио дорожку с IDE-привода:

    # cdda2wav -D /dev/acd0 -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, для того, чтобы узнать больше об этом, прочитайте Разд. 17.6.5.

### 7.3.3. Создание файлов 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.

### 7.3.4. Декодирование MP3

Для того, чтобы записать музыкальный CD из файлов MP3, они должны быть преобразованы в несжатый формат WAV. Как XMMS, так и mpg123 поддерживают вывод MP3 в распакованный формат файлов.

Запись на диск в XMMS:

1. Запустите XMMS:

2. Нажмите правой кнопкой мыши в главном окне XMMS для того, чтобы показать меню.

3. Выберите `Preferences` (либо `Свойства`, если у вас локализованная версия XMMS) в `Options`.

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

Прочтите Разд. 17.6 для того, чтобы узнать больше о записи CD в FreeBSD.

## 7.4. Воспроизведение видео

Предоставил Ross Lippert.

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

Прежде, чем вы начнёте, определите модель видеокарты и чипсет, который она использует. Хотя Xorg и XFree86 поддерживают множество различных видеокарт, только их малая часть показывает хорошую скорость воспроизведения видео. Для того, чтобы получить список расширений, поддерживаемых X-сервером, который используется вашей видеокартой, используйте команду xdpyinfo(1) во время работы X11.

Неплохо также иметь небольшой файл MPEG, который бы использовался как тестовый файл для проверки различных проигрывателей и настроек. Так как некоторые проигрыватели DVD будут искать носитель DVD как `/dev/dvd` по умолчанию или быть жёстко настроены на него, возможно будет полезно сделать символические ссылки на правильные устройства:

    # ln -sf /dev/acd0 /dev/dvd
    # ln -sf /dev/acd0 /dev/rdvd

Обратите внимание, природа devfs(5) такова, что такие созданные вручную ссылки не сохраняются при перезагрузке системы. Для автоматического создания символических ссылок при каждой загрузке системы добавьте в `/etc/devfs.conf` следующие строки:

    link acd0 dvd
    link acd0 rdvd

Кроме того, декодирование DVD требует доступа к специальным функциям DVD-ROM, поэтому должен быть доступ на запись для устройств DVD.

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

    kern.ipc.shmmax=67108864
    kern.ipc.shmall=32768

### 7.4.1. Определение возможностей видео

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

Список наиболее часто используемых видеоинтерфейсов:

1. X11: обычный вывод X11 с использованием разделяемой памяти.

2. XVideo: расширение интерфейса X11, которое поддерживает видео в любом объекте X11.

3. SDL: the Simple Directmedia Layer.

4. DGA: the Direct Graphics Access -- прямой доступ для графики.

5. SVGAlib: низкоуровневый доступ к графике на консоли.

#### 7.4.1.1. XVideo

Xorg и XFree86 4.X включают в себя расширение, называющееся XVideo (также известное как Xvideo, Xv и xv), которое позволяет отображать видео прямо на объектах при помощи специального ускорения. Это расширение предоставляет очень хорошее качество воспроизведения даже на low-end машинах.

Для того чтобы проверить, работает ли это расширение, используйте команду `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 не поддерживается вашей видеокартой, то это всего лишь означает, что будет сложнее получить приемлемые для воспроизведения видео вычислительные мощности. В зависимости от вашей видеокарты и процессора, возможно, вы сможете получить удовлетворительный результат. Возможно, вы должны будете прочитать о путях улучшения производительности в Разд. 7.4.3.

#### 7.4.1.2. Simple Directmedia Layer

SDL был задуман как уровень абстракции для разработки кросплатформенных приложений под Microsoft Windows, BeOS и UNIX, позволяя им эффективно использовать звук и графику. SDL предоставляет низкоуровневые абстракции для аппаратного обеспечения, и может быть более эффективным чем интерфейс X11.

SDL есть в Коллекции портов FreeBSD: `devel/sdl12`.

#### 7.4.1.3. Прямой доступ для графики (DGA)

DGA это расширение X11, которое позволяет программам напрямую изменять кадровый буфер (framebuffer) без участия X-сервера. Поскольку DGA основывается на низкоуровневом доступе к памяти, программы, которые используют его должны исполняться от пользователя `root`.

Расширение DGA может быть протестировано при помощи dga(1). Когда `dga` запущена, она изменяет цвета на экране при каждом нажатии клавиш. Для того, чтобы выйти из неё, используйте q.

### 7.4.2. Порты и пакеты для работы с видео

Этот раздел обсуждает программное обеспечение для работы с видео из Коллекции Портов FreeBSD. Воспроизведение видео является очень активной сферой разработок программного обеспечения и возможности различных приложений могут несколько отличаться от описанных здесь.

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

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

2. Приложение не может воспроизвести файл, который создало само.

3. Одно и то же приложение на разных машинах, скомпилированное на каждой машине специально для неё, воспроизводит один и тот же файл различно.

4. Кажущийся тривиальным фильтр, например фильтр изменения размеров изображения, приводит к очень плохим ''артефактам'' из-за неправильной функции изменения размера.

5. Приложение часто не работает (оставляет core-файл).

6. Документация не устанавливается вместе с портом и может быть найдена лишь на сайте или в каталоге порта `work`.

Многие из этих приложений могут также проявлять ''линуксизмы''. Так, это могут быть некоторые проблемы, связанные со способом реализации некоторых стандартных библиотек в дистрибутивах Linux, или некоторыми дополнительными возможностями ядра Linux, которые авторы приложений посчитали существующими везде. Эти проблемы не всегда могут быть обнаружены людьми, поддерживающими порт (порты), вследствие чего могут возникнуть проблемы, сходные с нижеперечисленными:

1. Использование `/proc/cpuinfo` для того, чтобы определить характеристики процессора.

2. Неправильное использование нитей (threads), которое может привести к зависанию программы при завершении вместо нормального выхода.

3. Программного обеспечения, которое обычно используется совместно с данным приложением, ещё нет в Коллекции Портов FreeBSD.

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

#### 7.4.2.1. MPlayer

MPlayer это недавно разработанный и быстро развивающийся проигрыватель видео. Задачами команды разработчиков MPlayer являются скорость и гибкость при работе на Linux и других Unix-системах. Проект был начат, когда его основатель стал сыт по горло плохой производительностью и качеством проигрывателей того времени. Некоторые могут сказать, что графический интерфейс был принесён в жертву рационализированному дизайну. Однако, как только вы привыкнете к опциям командной строки MPlayer и его управлению с клавиатуры, всё будет хорошо.

##### 7.4.2.1.1. Компиляция MPlayer

MPlayer находится в `multimedia/mplayer`. MPlayer производит различные тесты аппаратного обеспечения во время процесса компиляции, в результате чего полученные исполняемые модули не могут быть перенесены с одной системы на другую. Поэтому важно собирать его из портов, а не использовать бинарный пакет. Также, при сборке вы можете указать различные установки при помощи параметров командной строки `make`, как описывается в `Makefile` в начале сборки:

    # cd /usr/ports/multimedia/mplayer
    # make
    N - O - T - E

    Take a careful look into the Makefile in order
    to learn how to tune mplayer towards you personal preferences!
    For example,
    make WITH_GTK1
    builds MPlayer with GTK1-GUI support.
    If you want to use the GUI, you can either install
    /usr/ports/multimedia/mplayer-skins
    or download official skin collections from
    http://www.mplayerhq.hu/homepage/dload.html

Параметры порта по умолчанию должны подходить большинству пользователей. Однако, если вам необходим кодек XviD, необходимо указать в командной строке параметр `WITH_XVID`. Устройство DVD по умолчанию также может быть указано в командной строке параметром `WITH_DVD_DEVICE`, по умолчанию используется `/dev/acd0`.

На время написания данного документа порт MPlayer'а собирает и устанавливает свою документацию в формате HTML и два исполняемых файла, `mplayer` и `mencoder`, который является утилитой для перекодировки видео.

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

##### 7.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` -dvd-device `DEVICE``, где `N` является номером дорожки, с которой следует начать воспроизведение и ``DEVICE`` файл устройства привода DVD. Например, для того, чтобы воспроизвести дорожку 3 с `/dev/dvd`:

    # mplayer -vo xv dvd://3 -dvd-device /dev/dvd

> Замечание: Устройство DVD по умолчанию может быть определено во время сборки порта MPlayer параметром `WITH_DVD_DEVICE`. По умолчанию, это устройство `/dev/acd0`. Дополнительную информацию можно найти в `Makefile` порта.

Для того, чтобы остановить, приостановить или продолжить воспроизведение, воспользуйтесь привязкой клавиш, информация о которой может быть получена посредством запуска `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 -dvd-device /dev/dvd

Полученный файл, `out.vob`, будет представлять собой MPEG, с которым можно производить различные действия при помощи программ, которые будут описаны далее в этом разделе.

##### 7.4.2.1.3. mencoder

Перед использованием `mencoder`, было бы неплохо ближе ознакомится с его параметрами, используя документацию в формате HTML. Также существует страничка справочника mplayer, но она не очень полезна без HTML документации. Существует бесчисленное множество способов улучшения качества, снижения битрейта и изменения формата; и некоторые из этих приёмов могут влиять на производительность. Ниже приведено несколько примеров использования `mencoder`. Во-первых, простое копирование:

    % mencoder input.avi -oac copy -ovc copy -o output.avi

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

Для того, чтобы преобразовать `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 -dvd-device /dev/dvd` и `mplayer`, запущенный от пользователя `root`, будет преобразовывать дорожку DVD напрямую. Так как первый раз, скорее всего, вы будете недовольны полученными результатами, всё же рекомендуется копировать дорожку в файл и работать затем с файлом.

#### 7.4.2.2. Проигрыватель хine

xine - это большой проект, в задачи которого входит не только создание решения для видео все-в-одном, но и создание базовой библиотеки с возможностью расширения путем использования плагинов. Поставляется он как в виде порта, так и в виде пакета, `multimedia/xine`.

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

На время написания этого документа в поставке xine не существовало модуля ввода, который бы мог воспроизводить DVD, закодированные по алгоритму CSS. Существуют сборки, в которых есть такой модуль, но ни одна из них не входит в Коллекцию Портов FreeBSD.

По сравнению с MPlayer, xine является более дружелюбным к пользователю, но, в то же время, скрывает более тонкие настройки и управление от пользователя. Также xine лучше работает на XVideo интерфейсах.

По умолчанию, xine запускается с графическим интерфейсом. Для открытия файлов используются меню.

    % xine

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

    % xine -g -p mymovie.avi

#### 7.4.2.3. Утилиты transcode

Приложение transcode не является проигрывателем. Это набор инструментов для преобразования видео и звуковых файлов. При помощи transcode можно объединять видеофайлы, исправлять поврежденные файлы, использовать инструменты командной строки для работы с потоками ввода/вывода `stdin/stdout`.

Большое количество опций может быть указано во время сборки порта `multimedia/transcode`. Для сборки transcode мы рекомендуем использовать следующую командную строку:

    # make WITH_OPTIMIZED_CFLAGS=yes WITH_LIBA52=yes WITH_LAME=yes WITH_OGG=yes \
    WITH_MJPEG=yes -DWITH_XVID=yes

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

Для иллюстрации возможностей `transcode` приводится пример, показывающий как сконвертировать файл DivX формата в PAL MPEG-1 файл (PAL VCD):

    % transcode -i input.avi -V --export_prof vcd-pal -o output_vcd
    % mplex -f 1 -o output_vcd.mpg output_vcd.m1v output_vcd.mpa

Итоговый MPEG файл `output_vcd.mpg` может быть проигран с помощью MPlayer. Вы можете даже записать файл на CD-R носитель для создания Video CD. В этом случае, вам нужно будет установить и использовать программы `multimedia/vcdimager` и `sysutils/cdrdao`.

Существует страничка справочника для `transcode`, но вы также должны проконсультироваться с transcode wiki для получения более детальной информации и примеров.

### 7.4.3. Дальнейшее чтение

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

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

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

Наконец, существует несколько многообещающих приложений, которые читатель может испробовать:

- Avifile, для которого также существует порт `multimedia/avifile`.

- Ogle, для которого также существует порт `multimedia/ogle`.

- Xtheater

- `multimedia/dvdauthor`, пакет с открытыми текстами для распространения DVD контента.

## 7.5. Настройка ТВ тюнеров

Первоначально предоставил Josef El-Rayes. Улучшил и адаптировал Marc Fonvieille.

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

ТВ тюнеры предназначены для просмотра широковещательного или кабельного телевидения на компьютере. Большинство тюнеров поддерживают композитный видео вход RCA или S-video, а некоторые из них поставляются с FM радио тюнером.

FreeBSD поддерживает PCI ТВ тюнеры, использующие Brooktree Bt848/849/878/879 или Conexant CN-878/Fusion 878a Video Capture Chip через драйвер bktr(4). Вы должны также убедиться, что тюнер поддерживается; обратитесь к странице справочника bktr(4) за списком поддерживаемых тюнеров.

### 7.5.2. Добавление драйвера

Для использования карты потребуется загрузить драйвер bktr(4), что можно сделать, добавив в `/boot/loader.conf` следующую строку:

    bktr_load="YES"

В качестве альтернативы, вы можете статически скомпилировать ядро с поддержкой ТВ тюнера; добавьте следующие строки в файл конфигурации ядра:

    device  bktr
    device  iicbus
    device  iicbb
    device  smbus

Эти дополнительные драйвера устройств необходимы, поскольку компоненты карты соединены через шину I2C. Затем соберите и установите новое ядро.

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

    bktr0: <BrookTree 848A> mem 0xd7000000-0xd7000fff irq 10 at device 10.0 on pci0
    iicbb0: <I2C bit-banging driver> on bti2c0
    iicbus0: <Philips I2C bus> on iicbb0 master-only
    iicbus1: <Philips I2C bus> on iicbb0 master-only
    smbus0: <System Management Bus> on bti2c0
    bktr0: Pinnacle/Miro TV, Philips SECAM tuner.

Конечно, эти сообщения будут различаться на разном оборудовании. Тем не менее, проверьте, что тюнер определяется правильно; возможна перезапись параметров, определенных ядром, с помощью sysctl(8) MIB и параметров в файле настройки ядра. Например, если вы хотите указать, что это Philips SECAM тюнер, добавьте следующую строку к файлу настройки ядра:

    options OVERRIDE_TUNER=6

или прямо задайте переменную sysctl(8):

    # sysctl hw.bt848.tuner=6

Обратитесь к странице bktr(4) и файлу `/usr/src/sys/conf/NOTES` за более детальной информацией о доступных параметрах.

### 7.5.3. Полезные приложения

Для использования ТВ тюнера вам потребуется установить одно из следующих приложений:

- `multimedia/fxtv` предоставляет возможности ТВ-в-окне и захвата изображений/аудио/видео.

- `multimedia/xawtv` это также приложение для ТВ тюнера, с теми же, что и у fxtv возможностями.

- `misc/alevt` раскодирует и отображает видеотекст/телетекст.

- `audio/xmradio`, приложение для использования с FM радио тюнером, поставляемым с некоторыми ТВ тюнерами.

- `audio/wmtune`, это удобное приложение для радио тюнеров.

В коллекции портов FreeBSD можно найти и другие приложения.

### 7.5.4. Решение проблем

Если вы столкнулись с какой-либо проблемой, связанной с ТВ тюнером, проверьте в первую очередь поддержку микросхемы захвата видео и тюнера драйвером bktr(4), а также правильность установки параметров. За дальнейшей поддержкой и с вопросами о ТВ тюнере вы можете обращаться в freebsd-multimedia и использовать его архивы.

## 7.6. Сканеры

Написана Marc Fonvieille. Перевод на русский язык: Дмитрий Морозовский.

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

В FreeBSD доступ к сканерам обеспечивается программой SANE (Scanner Access Now Easy), обеспечивающей универсальный интерфейс (API) и доступной в коллекции портов FreeBSD. Для общения со сканерами SANE использует некоторые драйвера устройств FreeBSD.

FreeBSD поддерживает сканеры с интерфейсом как SCSI, так и USB. Убедитесь, что ваш сканер поддерживается SANE перед тем, как приступить к конфигурации. Для SANE существует список поддерживаемых устройств где находится информация о поддержке сканера и статусе этой поддержки. Кроме того, страница справочника uscanner(4) также перечисляет поддерживаемые устройства.

### 7.6.2. Конфигурация ядра

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

#### 7.6.2.1. USB

Стандартное ядро `GENERIC` включает в себя драйвера, необходимые для поддержки USB сканеров. Если вы компилируете собственное ядро, убедитесь, что в его конфигурации присутствуют строки

    device usb
    device uhci
    device ohci
    device uscanner

В зависимости от чипсета USB, встроенного в вашу материнскую плату, потребуется лишь один из драйверов `device uhci` или `device ohci`, однако, наличие обеих строк в конфигурации ядра никому не повредит.

Если вы не хотите перестраивать ядро, и при этом ваше ядро не является стандартным (`GENERIC`), вы можете загрузить модуль драйвера поддержки сканеров uscanner(4) при помощи команды kldload(8):

    # kldload uscanner

Для автоматической загрузки модуля при старте системы добавьте в файл `/boot/loader.conf` строку

    uscanner_load="YES"

После перезагрузки с новым ядром или загрузки модуля подключите ваш USB сканер. В буфере системных сообщений (dmesg(8)) должна появиться строка об обнаружении сканера:

    uscanner0: EPSON EPSON Scanner, rev 1.10/3.02, addr 2

В данном случае сканер будет использовать устройство `/dev/uscanner0`.

#### 7.6.2.2. SCSI

Если ваш сканер имеет интерфейс SCSI, важно знать, к какому контроллеру он подключен. В зависимости от контроллера потребуются различные драйвера в файле конфигурации ядра. Стандартное ядро `GENERIC` поддерживает большинство распространенных SCSI-контроллеров. Внимательно прочитайте файл `NOTES` и добавьте необходимые строки в файл конфигурации вашего ядра. Помимо строки для драйвера адаптера, вам потребуются следующие строки:

    device scbus
    device pass

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

    pass2 at aic0 bus 0 target 2 lun 0
    pass2: <AGFA SNAPSCAN 600 1.10> Fixed Scanner SCSI-2 device
    pass2: 3.300MB/s transfers

Если сканер не был включен в момент загрузки, его можно принудительно опознать, выполнив сканирование SCSI шины при помощи команды camcontrol(8):

    # camcontrol rescan all
    Re-scan of bus 0 was successful
    Re-scan of bus 1 was successful
    Re-scan of bus 2 was successful
    Re-scan of bus 3 was successful

После этого сканер должен появиться в списке устройств:

    # camcontrol devlist
    <IBM DDRS-34560 S97B>              at scbus0 target 5 lun 0 (pass0,da0)
    <IBM DDRS-34560 S97B>              at scbus0 target 6 lun 0 (pass1,da1)
    <AGFA SNAPSCAN 600 1.10>           at scbus1 target 2 lun 0 (pass3)
    <PHILIPS CDD3610 CD-R/RW 1.00>     at scbus2 target 0 lun 0 (pass2,cd0)

Более подробная информация о устройствах SCSI доступна на страницах справочника scsi(4) и camcontrol(8).

### 7.6.3. Конфигурация SANE

Система SANE состоит из двух частей: аппаратной поддержки (backend, `graphics/sane-backends`) и программной поддержки (frontend, `graphics/sane-frontends`). Первая часть обеспечивает собственно доступ к сканеру. Список поддерживаемых устройств SANE содержит информацию о необходимом вам аппаратном модуле. Вторая часть обеспечивает графический интерфейс для сканирования (xscanimage).

В первую очередь следует установить порт или пакет `graphics/sane-backends`, после чего при помощи команды `sane-find-scanner` проверить поддержку сканера системой SANE:

    # sane-find-scanner -q
    found SCSI scanner "AGFA SNAPSCAN 600 1.10" at /dev/pass3

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

> Замечание: Некоторым USB сканерам может потребоваться загрузка прошивки. Подробности смотрите в страницах справочника драйвера сканера, sane-find-scanner(1) и sane(7).

Теперь необходимо убедиться, что сканер опознан программой графического интерфейса. В состав системы SANE входит утилита scanimage(1), позволяющая работать со сканером из командной строки. Опция `-L` используется для показа информации о сканере:

    # scanimage -L
    device `snapscan:/dev/pass3' is a AGFA SNAPSCAN 600 flatbed scanner

Отсутствие сообщений или сообщение об отсутствии устройств означает, что утилита scanimage(1) не смогла идентифицировать сканер. В этом случае вам потребуется отредактировать файл конфигурации аппаратного модуля и указать устройство, используемое сканером. Все файлы настройки находятся в каталоге `/usr/local/etc/sane.d/`. Такие проблемы присущи некоторым моделям USB сканеров.

Например, в случае USB сканера, описанного в Разд. 7.6.2.1, утилита `sane-find-scanner` выдаст следующую информацию:

    # sane-find-scanner -q
    found USB scanner (UNKNOWN vendor and product) at device /dev/uscanner0

Сканер обнаружен корректно, он использует интерфейс USB и доступен через устройство `/dev/uscanner0`. Теперь попробуем идентифицировать его:

    # scanimage -L

    No scanners were identified. If you were expecting something different,
    check that the scanner is plugged in, turned on and detected by the
    sane-find-scanner tool (if appropriate). Please read the documentation
    which came with this software (README, FAQ, manpages).

Поскольку сканер не идентифицирован, нам потребуется изменить файл конфигурации `/usr/local/etc/sane.d/epson.conf`. В нашем примере использован сканер EPSON Perfection® 1650, так что мы знаем, что будет использоваться драйвер `epson`. Не забудьте прочитать комментарии в файле конфигурации. Требуемые изменения весьма просты: закомментируйте все строки, описывающие интерфейсы, не соответствующие интерфейсу вашего сканера (в нашем случае, все строки, начинающиеся со `scsi`: наш сканер использует интерфейс USB), и добавьте в конец файла строку, содержащую интерфейс и имя использованного устройства. Мы добавим строку

    usb /dev/uscanner0

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

    # scanimage -L
    device `epson:/dev/uscanner0' is a Epson GT-8200 flatbed scanner

Наш USB сканер опознан. Не столь важно, что имя и номер модели не совпадают, главное, что используются правильные имя устройства и драйвер: ``epson:/dev/uscanner0'`.

После того как команда `scanimage -L` опознала сканер, конфигурация завершена. Все готово к сканированию.

Хотя утилита scanimage(1) позволяет производить сканирование из командной строки, как правило, для сканирования предпочтительнее использовать графический интерфейс. Для этого в состав SANE входит простая, но эффективная утилита xscanimage (`graphics/sane-frontends`).

Другой популярной программой графического интерфейса к сканеру является Xsane (`graphics/xsane`). Эта программа поддерживает такие расширенные возможности, как разные режимы сканирования (фотокопия, факс и т.п.), цветокоррекцию, потоковое сканирование и другие. Оба приложения пригодны для использования в качестве плагинов сканирования для GIMP.

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

Все описанные операции выполнялись нами с привилегиями суперпользователя (`root`). Вам может потребоваться дать доступ к сканеру другим пользователям. Для этого необходимо разрешить доступ на чтение и запись к файлу устройства, обслуживающему сканер. В нашем примере USB сканер использует устройство `/dev/uscanner0`, принадлежащее группе `operator`. Добавление пользователя `joe` в группу `operator` разрешит ему использовать сканер:

    # pw groupmod operator -m joe

За подробностями обращайтесь к странице справочника pw(8). Вам также потребуется установить нужные права доступа (0660 или 0664) к устройству `/dev/uscanner0`, поскольку по умолчанию группа `operator` может лишь читать из него. Это достигается добавлением следующей строки в файл `/etc/devfs.rules`:

    [system=5]
    add path uscanner0 mode 660

Затем добавьте в файл конфигурации системы `/etc/rc.conf` такую строку (после чего перезагрузите систему):

    devfs_system_ruleset="system"

Подробную информацию о правах на файлы устройств вы найдете на странице справочника devfs(8).

> Замечание: Разумеется, по соображениям безопасности, вы должны как следует подумать, прежде чем добавлять пользователя в другие группы, в особенности в группу `operator`.

# Глава 8. Настройка ядра FreeBSD

Обновил и реструктуризовал Jim Mock. Предоставил Jake Hamby. Переведено Александром Коваленко.

## 8.1. Краткий обзор

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

После прочтения этой главы вы узнаете:

- Почему вам может понадобиться сборка собственного ядра.

- Как написать файл конфигурации ядра или изменить существующий.

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

- Как установить новое ядро.

- Что делать, если что-то не работает или работает не так, как должно.

Все команды, приводимые в этой главе в качестве примера, должны выполняться от пользователя `root`.

## 8.2. Зачем собирать собственное ядро?

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

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

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

Сборка собственного ядра -- один из наиболее важных ритуалов, совершаемых опытными пользователями BSD. Несмотря на длительность этого процесса, ваша FreeBSD останется только в выигрыше. В отличие от ядра `GENERIC`, которое должно поддерживать широкий спектр аппаратного обеспечения, собственное ядро содержит поддержку аппаратного обеспечения только вашего компьютера. Это может давать следующие преимущества:

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

- Уменьшение использования памяти. Собственное ядро часто использует меньше памяти, чем ядро `GENERIC`, так как из него исключены лишние драйвера и неиспользуемые функциональные возможности. Это важно тем, что часть оперативной памяти постоянно занята кодом ядра и поэтому не может быть выделена приложениям. Именно по этой причине собственное ядро особенно полезно при использовании систем с малым объемом оперативной памяти.

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

## 8.3. Определение аппаратного обеспечения

Написал Tom Rhodes.

Перед тем, как углубиться в конфигурирование ядра, было бы разумно составить перечень установленного в компьютер аппаратного обеспечения. Если FreeBSD не является основной операционной системой, то перечень оборудования может быть легко составлен на основании анализа конфигурации текущей операционной системы. Например, Диспетчер устройств (Device Manager) от Microsoft обычно содержит необходимую информацию об установленных устройствах. Диспетчер устройств находится на панели управления (control panel).

> Замечание: У некоторых версий Microsoft Windows есть значок Система (System), вызов которого отобразит экран, содержащий среди прочих и Диспетчер устройств.

Если других операционных систем на машине не установлено, системному администратору придется искать эту информацию самостоятельно. Один из методов подразумевает использование утилиты dmesg(8) и команды man(1). У большинства драйверов во FreeBSD есть страницы справочника, содержащие список поддерживаемого оборудования, а найденные во время начальной загрузки устройства будут перечислены в dmesg(8). К примеру, следующие строки информируют о том, что драйвер `psm` обнаружил мышь:

    psm0: <PS/2 Mouse> irq 12 on atkbdc0
    psm0: [GIANT-LOCKED]
    psm0: [ITHREAD]
    psm0: model Generic PS/2 mouse, device ID 0

Этот драйвер необходимо будет включить в конфигурацию собственного ядра или загрузить посредством loader.conf(5).

В некоторых случаях `dmesg` отображает только системные сообщения вместо сообщений начальной загрузки. В таких случаях необходимо обращаться к файлу `/var/run/dmesg.boot`.

Еще один метод нахождения аппаратного обеспечения подразумевает использование достаточно информативной утилиты pciconf(8). Например:

    ath0@pci0:3:0:0:        class=0x020000 card=0x058a1014 chip=0x1014168c rev=0x01 hdr=0x00
        vendor     = 'Atheros Communications Inc.'
        device     = 'AR5212 Atheros AR5212 802.11abg wireless'
        class      = network
        subclass   = ethernet

Эта часть вывода, полученная в результате запуска команды `pciconf `-lv``, показывает, что драйвер `ath` обнаружил беспроводное Ethernet устройство. Набрав `man `ath``, вы получите страницу справочника ath(4).

Также, для извлечения необходимой информации, можно воспользоваться ключом `-k` к команде man(1). В вышеприведенном случае можно набрать:

    # man -k Atheros

чтобы получить страницы справочника, содержащие определенное слово:

    ath(4)                   - Atheros IEEE 802.11 wireless network driver
    ath_hal(4)               - Atheros Hardware Access Layer (HAL)

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

## 8.4. Драйвера, подсистемы и модули ядра

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

Модули ядра находятся в каталоге `/boot/kernel`, и они могут быть динамически включены в работающее ядро при помощи kldload(8). Если не все, то большинство драйверов существуют в виде модулей, и у них есть соответствующая страница справочника. К примеру, в предыдущем разделе упоминался драйвер `ath` беспроводного Ethernet устройства. Соответствующая ему страница справочника гласит:

    Alternatively, to load the driver as a module at boot time, place the
    following line in loader.conf(5):

        if_ath_load="YES"

Как уже выше сказано, добавление строки `if_ath_load="YES"` в файл `/boot/loader.conf` позволит динамически загружать этот модуль во время загрузки системы.

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

> Внимание: Довольно легко удалить встроенную поддержку устройства или опцию, получив тем самым неработоспособное ядро. Например, если драйвер ata(4) изъят из конфигурации ядра, то система, использующая диски ATA, может не загрузиться без записи, добавленной в `loader.conf`. Если есть сомнения, проверьте модуль, и только потом оставьте поддержку в ядре.

## 8.5. Сборка и установка собственного ядра

Во-первых, давайте сделаем краткий обзор каталога, в котором будет происходить сборка ядра. Все каталоги, которые будут упоминаться, будут относительными по отношению к основному каталогу `/usr/src/sys`, который также доступен как каталог `/sys`. Этот каталог содержит множество подкаталогов, представляющих собой различные части ядра, но наиболее важным для нас будет каталог ``arch`/conf`, в котором вы будете редактировать конфигурационный файл ядра и в котором находится каталог `compile`, где будет собираться ваше ядро. `arch` может быть `i386`, `alpha`, `amd64`, `ia64`, `powerpc`, `sparc64` или `pc98` (альтернативная ветвь аппаратного обеспечения, популярная в Японии). Все, что находится внутри каталога определенной архитектуры, относится только к этой архитектуре; остальной код является машинно независимым и общим для всех платформ, на которые FreeBSD может быть потенциально портирована. Обратите внимание на логическую структуру каталогов, в которой каждое поддерживаемое устройство, каждая файловая система и каждая опция размещается в своём собственном каталоге.

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

> Замечание: Если в вашей системе отсутствует каталог `/usr/src/sys`, это означает, что исходные тексты ядра не были установлены. Наиболее простой способ установить их - запустить `sysinstall` как `root`, выбрать Configure, потом Distributions, потом src, потом base и sys. Если вы испытываете отвращение к sysinstall и у вас есть доступ к ''официальному'' FreeBSD CDROM, вы также можете установить исходные тексты при помощи командной строки:

>     # mount /cdrom
>     # mkdir -p /usr/src/sys
>     # ln -s /usr/src/sys /sys
>     # cat /cdrom/src/ssys.[a-d]* | tar -xzvf -
>     # cat /cdrom/src/sbase.[a-d]* | tar -xzvf -

Затем, перейдите в каталог ``arch`/conf` и скопируйте файл конфигурации `GENERIC` в файл с выбранным вами именем. Например:

    # cd /usr/src/sys/i386/conf
    # cp GENERIC MYKERNEL

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

> Подсказка: Помещение файла конфигурации ядра в `/usr/src` может быть плохой идеей. Если вы испытываете проблемы, их можно решить удалив `/usr/src` и начав все с начала. После этого обычно требуется несколько секунд, чтобы понять, что вы удалили собственный файл настройки ядра. Не редактируйте непосредственно `GENERIC`, он может быть также перезаписан и при следующем обновлении дерева исходных текстов, и изменения ядра будут потеряны.

> Вы можете сохранить файл конфигурации ядра в другом месте, а затем создать символическую ссылку на этот файл в каталоге ``i386``.

> Например:

>     # cd /usr/src/sys/i386/conf
>     # mkdir /root/kernels
>     # cp GENERIC /root/kernels/MYKERNEL
>     # ln -s /root/kernels/MYKERNEL

Теперь отредактируйте файл ``MYKERNEL`` в своём любимом текстовом редакторе. Если вы только начинаете, единственным доступным редактором скорее всего будет vi, который слишком сложен для того, чтобы описать его здесь, но в библиографии перечислено множество книг, в которых его использование хорошо освещено. Однако FreeBSD предоставляет более простой редактор ee, который, если вы -- новичок, подойдёт вам больше всего. Не стесняйтесь изменять строки комментариев в начале файла, с тем, чтобы отобразить вашу конфигурацию или изменения, которые вы сделали по сравнению с `GENERIC`.

Если вам приходилось собирать ядро для SunOS или какой-либо другой операционной системы типа BSD, многое из того, что содержится в этом файле будет очень знакомо вам. Если же вы, напротив, использовали другую операционную систему, такую как DOS, файл конфигурации `GENERIC` может показаться вам крайне сложным, поэтому следуйте инструкциям в разделе Конфигурационный файл медленно и внимательно.

> Замечание: Если вы синхронизируете дерево исходных текстов с деревом проекта FreeBSD, не забудьте свериться с файлом `/usr/src/UPDATING` перед обновлением. В этом файле описаны все важные вопросы и области исходного кода, требующие особого внимания. `/usr/src/UPDATING` всегда соответствует версии ваших исходных текстов FreeBSD, поэтому является более актуальным источником информации, чем это руководство.

Теперь вы должны скомпилировать ядро.

Сборка ядра

1. Перейдите в каталог `/usr/src`:

       # cd /usr/src

2. Соберите ядро:

       # make buildkernel KERNCONF=MYKERNEL

3. Установите новое ядро:

       # make installkernel KERNCONF=MYKERNEL

> Замечание: Для сборки ядра необходимо наличие всех исходных файлов FreeBSD.

> Подсказка: По умолчанию, при построении ядра, все модули ядра так же будут пересобраны. Если вы хотите обновить ядро быстрее или построить только определённые модули, то вам нужно отредактировать файл `/etc/make.conf` перед началом процесса сборки ядра:

>     MODULES_OVERRIDE = linux acpi sound/sound sound/driver/ds1 ntfs

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

>     WITHOUT_MODULES = linux acpi sound ntfs

> В этой переменной перечисляются основные модули, которые необходимо исключить из процесса сборки. За другими переменными, которые вы можете посчитать полезными в процессе сборки ядра, обращайтесь к странице справочника make.conf(5).

Новое ядро будет скопировано в каталог `/boot/kernel` как `/boot/kernel/kernel`, а старое ядро будет перемещено в `/boot/kernel.old/kernel`. Теперь перезагрузите систему для того, чтобы использовать новое ядро. Если что-то пойдёт не так, вы можете обратиться к разделу Решение проблем в конце этой главы, который может оказаться полезен. Не забудьте прочитать раздел, который объясняет как исправить ситуацию, когда ядро не загружается.

> Замечание: Другие файлы, относящиеся к процессу загрузки, такие как загрузчик (loader(8)) и его конфигурационные файлы, размещаются в `/boot`. Модули сторонних производителей могут быть помещены в `/boot/kernel`, хотя пользователи должны знать, что очень важно, чтобы модули были синхронизированы с собранным ядром. Модули, не рассчитанные на работу с собранным ядром, могут вызвать нестабильность и некорректность работы.

## 8.6. Конфигурационный файл

Обновил для FreeBSD 6.X Joel Dahl.

Формат конфигурационного файла достаточно прост. Каждая строка представляет собой ключевое слово и один или более аргументов. Для простоты большинство строк содержат только один аргумент. Всё, что следует за символом `#` является комментарием и игнорируется. Следующие разделы описывают каждый параметр, в порядке, в котором они появляются в `GENERIC`. За полным списком архитектурно-зависимых параметров и устройств обратитесь к файлу `NOTES` в том же каталоге, что и `GENERIC`. Архитектурно независимые параметры находятся в `/usr/src/sys/conf/NOTES`.

Начиная с FreeBSD 5.0 появилась новая, допустимая в конфигурационном файле директива `include`. Она позволяет включать в текущий конфигурационный файл содержимое другого файла, тем самым упрощая процесс внесения небольших изменений в существующий файл. Например, если вам необходимо добавить всего несколько дополнительных опций или драйверов в ядро `GENERIC`, то вам придется поддерживать только разницу к файлу GENERIC:

    include GENERIC
    ident MYKERNEL

    options         IPFIREWALL
    options         DUMMYNET
    options         IPFIREWALL_DEFAULT_TO_ACCEPT
    options         IPDIVERT

Большинство администраторов оценят значительные преимущества перед старым способом -- написанием конфигурационного файла ''с нуля'': ваш конфигурационный файл будет отображать только изменения относительно `GENERIC`. А после обновлений исходного кода, новые функциональные возможности, появившиеся в GENERIC, будут добавлены и в вашу конфигурацию, если только не препятствовать этому директивами `nooptions` или `nodevice`. Далее в этом разделе описывается типовой конфигурационный файл, его опции и устройства, а также их роли.

> Замечание: Для сборки ядра со всеми возможными опциями (обычно используется для тестирования), выполните от имени суперпользователя (`root`) следующую команду:

>     # cd /usr/src/sys/i386/conf >> make LINT

Это пример конфигурационного файла ядра `GENERIC` с различными дополнительными комментариями, которые могут понадобиться для ясности. Этот пример должен совпадать с вашей копией в `/usr/src/sys/`i386`/conf/GENERIC` практически полностью.

    machine        i386

Это архитектура машины. Она должна быть одной из следующих: `alpha`, `amd64`, `i386`, `ia64`, `pc98`, `powerpc`, или `sparc64`.

    cpu          I486_CPU
    cpu          I586_CPU
    cpu          I686_CPU

Эта опция указывает тип процессора, который используется в вашей системе. В конфигурационном файле может быть несколько вхождений этой опции (например, если вы не уверены, какой из типов процессора необходимо использовать -- `I586_CPU` или `I686_CPU`), но для собственного ядра лучше указывать только тот тип процессора, который установлен в вашей системе. Если вы не уверены, какой тип необходимо использовать вам, вы можете воспользоваться файлом `/var/run/dmesg.boot`, чтобы увидеть протокол загрузки системы.

    ident          GENERIC

Этот параметр определяет ''метку'' ядра. Необходимо, чтобы она соответствовала названию файла конфигурации ядра, например ``MYKERNEL``, если вы следовали инструкциям в предыдущих примерах. Значение, которое вы присвоите параметру `ident` будет выводиться в процессе загрузки, поэтому полезно давать новым ядрам другие имена для того, чтобы отличать их от обычного ядра (например, если вы хотите собрать экспериментальное ядро).

    #To statically compile in device wiring instead of /boot/device.hints
    #hints          "GENERIC.hints"         # Default places to look for devices.

device.hints(5) используются для настройки параметров драйверов устройств. Путь по умолчанию, который loader(8) будет проверять при загрузке - `/boot/device.hints`. Используя опцию `hints` вы можете вкомпилировать эти параметры статически в ваше ядро. В этом случае не требуется создавать файл `device.hints` в каталоге `/boot`.

    makeoptions     DEBUG=-g          # Build kernel with gdb(1) debug symbols

При обычном построении ядра в сборку включается отладочная информация: опция `-g` передается компилятору gcc(1).

    options          SCHED_ULE         # ULE scheduler

Планировщик по умолчанию во FreeBSD. Оставьте эту опцию.

    options          PREEMPTION         # Enable kernel thread preemption

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

    options          INET              # InterNETworking

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

    options          INET6             # IPv6 communications protocols

Включает поддержку коммуникационных протоколов IPv6.

    options          FFS               # Berkeley Fast Filesystem

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

    options          SOFTUPDATES       # Enable FFS Soft Updates support

Этот параметр включает в ядре технологию Soft Updates, которая повышает скорость записи на диски. Несмотря на то, что эта технология включена в ядре, она должна быть включена для отдельных дисков. Просмотрите вывод команды mount(8) чтобы определить, включены ли Soft Updates для дисков вашей системы. Если вы не увидите параметр `soft-updates`, вам будет необходимо активировать его при помощи команды tunefs(8) (для существующих файловых систем) или команды newfs(8) (для новых файловых систем).

    options          UFS_ACL           # Support for access control lists

Этот параметр включает в ядре поддержку списков управления доступом (ACL). Основывается на использовании расширенных атрибутов и UFS2, детальное описание вы сможете найти в Разд. 14.12. ACL включены по умолчанию и не должны выключаться в случае, если они ранее использовались на файловой системе, так как это удалит списки управления доступом и изменит то, как защищены файлы, непредсказуемым образом.

    options          UFS_DIRHASH       # Improve performance on big directories

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

    options          MD_ROOT           # MD is a potential root device

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

    options          NFSCLIENT         # Network Filesystem Client
    options          NFSSERVER         # Network Filesystem Server
    options          NFS_ROOT          # NFS usable as /, requires NFSCLIENT

Сетевая файловая система. Если вы не планируете монтировать разделы с файлового сервера UNIX через TCP/IP, вы можете исключить этот параметр из конфигурационного файла ядра.

    options          MSDOSFS           # MSDOS Filesystem

Файловая система MS-DOS. Если вы не собираетесь монтировать форматированный в DOS раздел жесткого диска в момент загрузки, вы можете безопасно закомментировать этот параметр. Необходимый модуль будет автоматически загружен, когда вы в первый раз смонтируете раздел DOS, так, как это описано ниже. Кроме того, замечательный пакет `emulators/mtools` позволяет получить доступ к DOS дискетам без необходимости монтировать и размонтировать их (и не требует наличия `MSDOSFS`).

    options          CD9660            # ISO 9660 Filesystem

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

    options          PROCFS            # Process filesystem (requires PSEUDOFS)

Файловая система процессов. Это ''виртуальная'' файловая система монтируемая в `/proc`, которая позволяет таким приложениям, как ps(1) выдавать вам больше информации о запущенных процессах. Использование `PROCFS` не требуется, так как большинство мониторинговых и отладочных инструментов было адаптировано для работы без `PROCFS`: система по умолчанию не монтирует файловую систему процессов.

    options          PSEUDOFS          # Pseudo-filesystem framework

Ядра 6.X, которые используют `PROCFS`, должны также включать поддержку `PSEUDOFS`,

    options          GEOM_GPT          # GUID Partition Tables.

Этот параметр делает возможным наличие большого количества разделов на одном диске.

    options          COMPAT_43         # Compatible with BSD 4.3 [KEEP THIS!]

Совместимость с 4.3BSD. Не выключайте эту опцию; некоторые приложения будут вести себя странно, если этой опции не будет в ядре.

    options          COMPAT_FREEBSD4   # Compatible with FreeBSD4

Эта опция требуется в FreeBSD 5.X для платформ i386 и Alpha для поддержки приложений, собранных на более старых версиях FreeBSD, которые используют старые интерфейсы вызовов. Рекомендуется использовать данную опцию на всех системах на платформах i386 и Alpha, на которых могут запускаться старые приложения; платформы, поддержка которых появилась только в FreeBSD 5.X, например ia64 и Sparc64, не требуют этой опции.

    options          COMPAT_FREEBSD5   # Compatible with FreeBSD5

Эта опция необходима в FreeBSD 6.X и выше для поддержки приложений, скомпилированных на FreeBSD 5.X и использующих интерфейс системных вызовов FreeBSD 5.X.

    options          SCSI_DELAY=5000  # Delay (in ms) before probing SCSI

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

    options          KTRACE            # ktrace(1) support

Включает поддержку трассировки процессов, что удобно при отладке.

    options          SYSVSHM           # SYSV-style shared memory

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

    options          SYSVMSG           # SYSV-style message queues

Поддержка сообщений System V. Этот параметр добавляет в ядро всего лишь несколько сотен байт.

    options          SYSVSEM           # SYSV-style semaphores

Поддержка семафоров System V. Не настолько часто используемая возможность, но в ядро добавляет всего несколько сотен байт.

> Замечание: Команда ipcs(1) с параметром `-p` покажет все процессы, которые используют любую из этих возможностей System V.

    options         _KPOSIX_PRIORITY_SCHEDULING # POSIX P1003_1B real-time extensions

Расширения реального времени, добавленные 1993 POSIX®. Определенные приложения из коллекции используют их, например StarOffice.

    options          KBD_INSTALL_CDEV  # install a CDEV entry in /dev

Этот параметр разрешает формирование файлов устройств в `/dev` для клавиатур.

    options          ADAPTIVE_GIANT    # Giant mutex is adaptive.

Giant -- имя механизма защиты (''спящего'' мьютекса) для крупных наборов ресурсов ядра. На нынешний момент Giant представляется фактически непригодным для использования в связи с серьезными потерями в производительности, и активно заменяется на механизмы, защищающие отдельные ресурсы ядра. Параметр `ADAPTIVE_GIANT` включает Giant в число адаптивных мьютексов: в случае, когда нить ядра нуждается в Giant, а он уже захвачен нитью, выполняющейся на другом процессоре, первая нить будет продолжать выполнение и ждать освобождения Giant. В норме нить должна была бы уснуть, пока не настанет очередной момент ее выполнения. Если вы не уверены, оставьте этот параметр в покое.

> Замечание: Для FreeBSD 8.0-CURRENT и более поздних версий, все мьютексы являются адаптивными по умолчанию, если обратное не указано специально опцией `NO_ADAPTIVE_MUTEXES`. Следовательно, Giant также адаптивен по умолчанию, и поэтому опция `ADAPTIVE_GIANT` была удалена из файла конфигурации ядра.

    device          apic               # I/O APIC

Устройство apic разрешает использование набора I/O APIC для распределения прерываний. Оно может быть использовано как с однопроцессорными, так и с многопроцессорными ядрами (для последних наличие apic является обязательным). Для поддержки многопроцессорности добавьте строку `options SMP`.

> Замечание: Устройство apic существует только на архитектурах i386. На других архитектурах этот конфигурационный параметр использовать не следует.

    device          eisa

Включите эту опцию если у вас материнская плата EISA. Это включает автоопределение и конфигурирование поддержки всех устройств на шине EISA.

    device          pci

Включите этот параметр, если у вас материнская плата с поддержкой PCI. Это включит автоопределение карт PCI и проксирование из шины PCI в шину ISA.

    # Floppy drives
    device          fdc

Контроллер флоппи-диска.

    # ATA and ATAPI devices
    device          ata

Этот драйвер поддерживает все устройства ATA и ATAPI. Вам необходима только одна строка `device ata` в ядре для того, чтобы обнаружить все PCI устройства ATA/ATAPI в современных машинах.

    device          atadisk                 # ATA disk drives

Эта строка необходима вместе с `device ata` для поддержки дисков ATA.

    device          ataraid                 # ATA RAID drives

Эта строка необходима вместе с `device ata` для поддержки дисков ATA RAID.

    device          atapicd                 # ATAPI CDROM drives

Поддержка приводов ATAPI CDROM. Используется вместе с `device ata`.

    device          atapifd                 # ATAPI floppy drives

Поддержка флоппи-приводов ATAPI. Используется вместе с `device ata`.

    device          atapist                 # ATAPI tape drives

Поддержка ленточных приводов ATAPI (стримеров). Используется вместе с `device ata`.

    options         ATA_STATIC_ID           # Static device numbering

Заставляет драйвер нумеровать устройства статически; в противном случае происходит динамическая нумерация.

    # SCSI Controllers
    device          ahb        # EISA AHA1742 family
    device          ahc        # AHA2940 and onboard AIC7xxx devices
    options         AHC_REG_PRETTY_PRINT    # Print register bitfields in debug
                                            # output.  Adds ~128k to driver.
    device          ahd        # AHA39320/29320 and onboard AIC79xx devices
    options         AHD_REG_PRETTY_PRINT    # Print register bitfields in debug
                                            # output.  Adds ~215k to driver.
    device          amd        # AMD 53C974 (Teckram DC-390(T))
    device          isp        # Qlogic family
    #device         ispfw      # Firmware for QLogic HBAs- normally a module
    device          mpt        # LSI-Logic MPT-Fusion
    #device         ncr        # NCR/Symbios Logic
    device          sym        # NCR/Symbios Logic (newer chipsets + those of `ncr')
    device          trm        # Tekram DC395U/UW/F DC315U adapters

    device          adv        # Advansys SCSI adapters
    device          adw        # Advansys wide SCSI adapters
    device          aha        # Adaptec 154x SCSI adapters
    device          aic        # Adaptec 15[012]x SCSI adapters, AIC-6[23]60.
    device          bt         # Buslogic/Mylex MultiMaster SCSI adapters

    device          ncv        # NCR 53C500
    device          nsp        # Workbit Ninja SCSI-3
    device          stg        # TMC 18C30/18C50

Контроллеры SCSI. Закомментируйте те, которых у вас в системе нет. Если у вас в системе исключительно IDE устройства, вы можете удалить все эти строки. Строки вида `*_REG_PRETTY_PRINT` включают режим отладки для соответствующих драйверов.

    # SCSI peripherals
    device          scbus      # SCSI bus (required for SCSI)
    device          ch         # SCSI media changers
    device          da         # Direct Access (disks)
    device          sa         # Sequential Access (tape etc)
    device          cd         # CD
    device          pass       # Passthrough device (direct SCSI access)
    device          ses        # SCSI Environmental Services (and SAF-TE)

Периферийные устройства SCSI. Опять-таки, закомментируйте те, которых у вас в системе нет, или, если у вас в наличии исключительно IDE, можете удалить все.

> Замечание: USB umass(4) драйвер (и некоторые другие драйверы) используют подсистему SCSI, хотя и не являются настоящими SCSI устройствами. Следовательно, вам необходимо сохранить поддержку SCSI, если какой-либо из этих драйверов включен в конфигурацию ядра.

    # RAID controllers interfaced to the SCSI subsystem
    device          amr        # AMI MegaRAID
    device      arcmsr     # Areca SATA II RAID
    device          asr        # DPT SmartRAID V, VI and Adaptec SCSI RAID
    device          ciss       # Compaq Smart RAID 5*
    device          dpt        # DPT Smartcache III, IV - See NOTES for options
    device          hptmv      # Highpoint RocketRAID 182x
    device          rr232x     # Highpoint RocketRAID 232x
    device          iir        # Intel Integrated RAID
    device          ips        # IBM (Adaptec) ServeRAID
    device          mly        # Mylex AcceleRAID/eXtremeRAID
    device          twa        # 3ware 9000 series PATA/SATA RAID

    # RAID controllers
    device          aac        # Adaptec FSA RAID
    device          aacp       # SCSI passthrough for aac (requires CAM)
    device          ida        # Compaq Smart RAID
    device          mfi        # LSI MegaRAID SAS
    device          mlx        # Mylex DAC960 family
    device          pst        # Promise Supertrak SX6000
    device          twe        # 3ware ATA RAID

Поддерживаемые RAID-контроллеры. Если у вас нет таковых, можете их закомментировать или удалить эти строки.

    # atkbdc0 controls both the keyboard and the PS/2 mouse
    device          atkbdc     # AT keyboard controller

Контроллер клавиатуры (`atkbdc`) предоставляет средства ввода/вывода для клавиатуры AT и PS/2 устройств. Этот контроллер необходим драйверу клавиатуры (`atkbd`) и PS/2 устройств (`psm`).

    device          atkbd      # AT keyboard

Драйвер `atkbd` вместе с контроллером `atkbdc` предоставляет доступ к клавиатуре AT 84 или улучшенной клавиатуре AT, которая подключена к контроллеру AT клавиатуры.

    device          psm        # PS/2 mouse

Используйте это устройство, если ваша мышь включается в порт PS/2.

    device          kbdmux        # keyboard multiplexer

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

    device          vga        # VGA video card driver

Драйвер видеокарты.

    device          splash     # Splash screen and screen saver support

Заставка при загрузке. Хранители экрана также требуют этого устройства.

    # syscons is the default console driver, resembling an SCO console
    device          sc

`sc` -- это драйвер консоли по умолчанию, который имитирует консоль SCO. Так как большая часть консольных полноэкранных приложений обращаются к консоли через терминальную библиотеку `termcap`, вас не должно волновать, будете ли вы использовать этот драйвер, либо драйвер `vt`, который является `VT220`-совместимым драйвером консоли. Если у вас возникнут какие-либо проблемы с приложениями, работающими с этим драйвером консоли, установите переменную окружения `TERM` в значение `scoansi`.

    # Enable this for the pcvt (VT220 compatible) console driver
    #device          vt
    #options         XSERVER          # support for X server on a vt console
    #options         FAT_CURSOR       # start with block cursor

VT220-совместимый драйвер консоли, обратно совместимый с VT100/102. Он работает лучше на некоторых лэптопах, у которых возникают проблемы несовместимости с `sc`. Также, установите переменную окружения `TERM` в значение `vt100` или `vt220`. Этот драйвер также может быть полезен в случаях подключения к большому количеству различных машин через сеть, на которых параметры для устройства `sc` для `termcap` или `terminfo` могут отсутствовать -- `vt100` присутствует практически на любой платформе.

    device          agp

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

    # Power management support (see NOTES for more options)
    #device          apm

Поддержка Advanced Power Management. Чаще всего используется в лэптопах, хотя и отключена по умолчанию.

    # Add suspend/resume support for the i8254.
    device           pmtimer

Устройство таймера для управления энергопотреблением, APM и ACPI.

    # PCCARD (PCMCIA) support
    # PCMCIA and cardbus bridge support
    device          cbb               # cardbus (yenta) bridge
    device          pccard            # PC Card (16-bit) bus
    device          cardbus           # CardBus (32-bit) bus

Поддержка PCMCIA. Включите ее, если вы используете лэптоп.

    # Serial (COM) ports
    device          sio               # 8250, 16[45]50 based serial ports

Четыре последовательных порта, которые известны как `COM` порты в мире MS-DOS/Windows

> Замечание: Если у вас есть внутренний модем на `COM4` и последовательный порт `COM2`, вам понадобится поменять IRQ модема на 2 (по непонятным техническим причинам IRQ2 = IRQ9) для того, чтобы получить к нему доступ из FreeBSD. Если у вас есть многопортовая карта с последовательными портами, ознакомьтесь с sio(4) чтобы узнать корректные значения для добавления в `/boot/device.hints`. Некоторые видеокарты (в частности те, что используют чипы S3) используют адреса ввода/вывода в форме `0x*2e8` и, так как многие дешевые последовательные карты не полностью раскодируют шестнадцатибитное пространство адресов ввода/вывода, они конфликтуют с этими картами, в итоге `COM4` оказывается практически недоступным.

> Каждый последовательный порт требует уникального IRQ (кроме тех случаев, когда вы используете мультипортовую карту, которая поддерживает совместное использование прерываний), поэтому значения IRQ по умолчанию для `COM3` и `COM4` не могут быть использованы.

    # Parallel port
    device          ppc

Интерфейс параллельного порта на шине ISA.

    device          ppbus      # Parallel port bus (required)

Поддержка шины параллельного порта.

    device          lpt        # Printer

Поддержка принтеров на параллельном порту.

> Замечание: Все три последних устройства необходимы для поддержка принтеров на параллельном порту.

    device          plip       # TCP/IP over parallel

Драйвер TCP/IP через параллельный порт.

    device          ppi        # Parallel port interface device

Поддержка ввода/вывода общего назначения (''geek port'') + IEEE1284 ввода/вывода.

    #device         vpo        # Requires scbus and da

Драйвер привода Iomega Zip. Требует наличия `scbus` и `da`. Наилучшая производительность достигается с портами в режиме EPP 1.9.

    #device         puc

Раскомментируйте это устройство, если у вас есть ''простая'' последовательная или параллельная PCI карта, поддерживаемая драйвером puc(4).

    # PCI Ethernet NICs.
    device          de         # DEC/Intel DC21x4x (''Tulip'')
    device          em         # Intel PRO/1000 adapter Gigabit Ethernet Card
    device          ixgb       # Intel PRO/10GbE Ethernet Card
    device          txp        # 3Com 3cR990 (''Typhoon'')
    device          vx         # 3Com 3c590, 3c595 (''Vortex'')

Драйвера сетевых карт PCI. Закомментируйте или удалите драйвера тех карт, которые отсутствуют в вашей системе.

    # PCI Ethernet NICs that use the common MII bus controller code.
    # NOTE: Be sure to keep the 'device miibus' line in order to use these NICs!
    device          miibus     # MII bus support

Поддержка шины MII требуется для некоторых PCI 10/100 Ethernet карт, которые используют MII-совместимые передатчики или реализуют интерфейс управления передатчиком, который имитирует MII. Добавление `device miibus` в конфигурационный файл ядра включает поддержку стандартного API miibus и всех драйверов PHY, включая стандартный для тех PHY, которые не обрабатываются специфическим образом конкретным драйвером.

    device          bfe        # Broadcom BCM440x 10/100 Ethernet
    device          bge        # Broadcom BCM570xx Gigabit Ethernet
    device          dc         # DEC/Intel 21143 and various workalikes
    device          fxp        # Intel EtherExpress PRO/100B (82557, 82558)
    device      lge    # Level 1 LXT1001 gigabit ethernet
    device          msk        # Marvell/SysKonnect Yukon II Gigabit Ethernet
    device      nge    # NatSemi DP83820 gigabit ethernet
    device          pcn        # AMD Am79C97x PCI 10/100 (precedence over 'lnc')
    device          re         # RealTek 8139C+/8169/8169S/8110S
    device          rl         # RealTek 8129/8139
    device          sf         # Adaptec AIC-6915 (''Starfire'')
    device          sis        # Silicon Integrated Systems SiS 900/SiS 7016
    device          sk         # SysKonnect SK-984x > SK-982x gigabit Ethernet
    device          ste        # Sundance ST201 (D-Link DFE-550TX)
    device          stge       # Sundance/Tamarack TC9021 gigabit Ethernet
    device          ti         # Alteon Networks Tigon I/II gigabit Ethernet
    device          tl         # Texas Instruments ThunderLAN
    device          tx         # SMC EtherPower II (83c170 ''EPIC'')
    device      vge    # VIA VT612x gigabit ethernet
    device          vr         # VIA Rhine, Rhine II
    device          wb         # Winbond W89C840F
    device          xl         # 3Com 3c90x (''Boomerang'', ''Cyclone'')

Драйвера, которые используют контроллер шины MII.

    # ISA Ethernet NICs.  pccard NICs included.
    device          cs         # Crystal Semiconductor CS89x0 NIC
    # 'device ed' requires 'device miibus'
    device          ed         # NE[12]000, SMC Ultra, 3c503, DS8390 cards
    device          ex         # Intel EtherExpress Pro/10 and Pro/10+
    device          ep         # Etherlink III based cards
    device          fe         # Fujitsu MB8696x based cards
    device          ie         # EtherExpress 8/16, 3C507, StarLAN 10 etc.
    device          lnc        # NE2100, NE32-VL Lance Ethernet cards
    device          sn         # SMC's 9000 series of Ethernet chips
    device          xe         # Xircom pccard Ethernet

    # ISA devices that use the old ISA shims
    #device         le

Драйвера сетевых карт ISA. Ознакомьтесь с файлом `/usr/src/sys/`i386`/conf/NOTES`, чтобы узнать, какие сетевые карты каким драйвером поддерживаются.

    # Wireless NIC cards
    device          wlan            # 802.11 support

Generic 802.11 support. This line is required for wireless networking.

    device          wlan_wep        # 802.11 WEP support
    device          wlan_ccmp       # 802.11 CCMP support
    device          wlan_tkip       # 802.11 TKIP support

Crypto support for 802.11 devices. These lines are needed if you intend to use encryption and 802.11i security protocols.

    device          an         # Aironet 4500/4800 802.11 wireless NICs.
    device          ath             # Atheros pci/cardbus NIC's
    device          ath_hal         # Atheros HAL (Hardware Access Layer)
    device          ath_rate_sample # SampleRate tx rate control for ath
    device          awi        # BayStack 660 and others
    device          wi         # WaveLAN/Intersil/Symbol 802.11 wireless NICs.
    #device         wl         # Older non 802.11 Wavelan wireless NIC.

Поддержка различных беспроводных карт.

    # Pseudo devices
    device   loop          # Network loopback

Стандартное устройство обратной связи для TCP/IP. Если вы запускаете telnet или FTP по отношению `localhost` (он же `127.0.0.1`), то соединение пройдёт через это устройство. Этот параметр обязателен.

    device   random        # Entropy device

Генератор случайных чисел для криптографической защиты.

    device   ether         # Ethernet support

`ether` необходим лишь в случае, если у вас есть сетевая карта. Он включает поддержку стандартного кода протокола Ethernet.

    device   sl            # Kernel SLIP

`sl` -- это поддержка SLIP. SLIP был практически вытеснен PPP, который легче настраивается, лучше подходит для соединений модем-модем и имеет больше возможностей.

    device   ppp           # Kernel PPP

Поддержка PPP в ядре для соединений dial-up. Также существует версия PPP, реализованного как приложение, использующее `tun`, и предлагающее большую гибкость и большее количество возможностей, как, например, соединение при необходимости (наличии обращения к сети).

    device   tun           # Packet tunnel.

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

    device   pty           # Pseudo-ttys (telnet etc)

''псевдо-терминал'' или имитированный порт для входа. Используется входящими `telnet` и `rlogin`-сессиями, приложением xterm и некоторыми другими приложениями, такими как Emacs.

    device   md            # Memory ''disks''

Псевдо-устройства дисков в памяти.

    device   gif           # IPv6 and IPv4 tunneling

Поддержка туннелирования IPv6 через IPv4, IPv4 через IPv6, IPv4 через IPv4 и IPv6 через IPv6. Устройство `gif` является ''автоклонируемым'', и будет срздавать файлы устройств по мере необходимости.

    device   faith         # IPv6-to-IPv4 relaying (translation)

Это псевдо-устройство захватывает пакеты, которые были посланы ему и перенаправляет их даемону трансляции IPv4/IPv6.

    # The `bpf' device enables the Berkeley Packet Filter.
    # Be aware of the administrative consequences of enabling this!
    # Note that 'bpf' is required for DHCP.
    device   bpf           # Berkeley packet filter

Фильтр пакетов Berkeley. Это псевдо-устройство позволяет переводить сетевые интерфейсы в ''неразборчивый'' (promiscuous) режим, в котором перехватывается любой пакет в широковещательной сети (например ethernet). Эти пакеты могут быть сохранены на диск и/или исследованы при помощи tcpdump(1).

> Замечание: Устройство bpf(4) также используется программой dhclient(8) для того, чтобы получить адрес шлюза по умолчанию и т.п. Если вы используете DCHP, не удаляйте эту опцию.

    # USB support
    device          uhci          # UHCI PCI->USB interface
    device          ohci          # OHCI PCI->USB interface
    device      ehci          # EHCI PCI->USB interface (USB 2.0)
    device          usb           # USB Bus (required)
    #device         udbp          # USB Double Bulk Pipe devices
    device          ugen          # Generic
    device          uhid          # ''Human Interface Devices''
    device          ukbd          # Keyboard
    device          ulpt          # Printer
    device          umass         # Disks/Mass storage - Requires scbus and da
    device          ums           # Mouse
    device          ural          # Ralink Technology RT2500USB wireless NICs
    device          urio          # Diamond Rio 500 MP3 player
    device          uscanner      # Scanners
    # USB Ethernet, requires mii
    device          aue           # ADMtek USB Ethernet
    device          axe           # ASIX Electronics USB Ethernet
    device      cdce          # Generic USB over Ethernet
    device          cue           # CATC USB Ethernet
    device          kue           # Kawasaki LSI USB Ethernet
    device          rue           # RealTek RTL8150 USB Ethernet

Поддержка различных USB устройств.

    # FireWire support
    device          firewire      # FireWire bus code
    device          sbp           # SCSI over FireWire (Requires scbus and da)
    device          fwe           # Ethernet over FireWire (non-standard!)

Поддержка различных устройств Firewire.

За дальнейшей информацией о дополнительных устройствах, поддерживаемых FreeBSD, обратитесь к файлу `/usr/src/sys/`i386`/conf/NOTES`.

### 8.6.1. Конфигурации с большим количеством оперативной памяти (PAE)

Машины с большим количеством оперативной памяти, в которых требуется более 4 гигабайт в пользовательском адресном пространстве и адресном пространстве ядра (User+Kernel Virtual Address, KVA) в обычном случае не смогут использовать более 4 гигабайт. Для решения этой проблемы Intel добавили поддержку 36-битной адресации в Pentium Pro и более поздних моделях процессоров.

Расширение физического адресного пространства (PAE) в процессорах Intel Pentium Pro и более поздних позволяет использовать до 64 гигабайт оперативной памяти. FreeBSD имеет поддержку этой возможности посредством опции ядра `PAE`, доступной во всех текущих версиях FreeBSD. В связи с ограничениями архитектуры Intel, не делается никакого различия между памятью ниже или выше 4 гигабайт. Память, размещенная выше 4 гигабайт, просто добавляется к доступной памяти.

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

    options            PAE

> Замечание: Поддержка PAE в FreeBSD существует только для процессоров Intel IA-32. Также следует заметить, что PAE в FreeBSD не было полностью протестировано и должно считаться находящимся в состоянии бета-тестирования по сравнению с другими, стабильными возможностями FreeBSD.

Поддержка PAE в FreeBSD имеет следующие ограничения:

- Процесс не может получить доступ к более, чем 4 гигабайтам пространства VM.

- Драйверы устройств, которые не используют интерфейс bus_dma(9), приведут к повреждению информации в ядре с включенным PAE. Не рекомендуется использовать такие драйверы. По этой причине в FreeBSD включен конфигурационный файл ядра `PAE`, из которого удалены все драйверы, о которых известно, что они не работают при включенной поддержке PAE.

- Некоторые системные переменные определяют использование ресурсов памяти по количеству доступной физической памяти. Такие переменные могут привести к ненужному чрезмерному выделению памяти из-за особенностей работы системы PAE. Один из таких примеров -- переменная `kern.maxvnodes`, которая управляет максимальным количеством vnode, разрешенных в ядре. Рекомендуется установить эту и подобные ей переменные вручную в адекватные значения.

- Возможно, понадобится увеличить пространство виртуальных адресов ядра (KVA) или уменьшить какую-либо переменную (см. выше), значение которой было неоправданно велико и могло привести к исчерпанию KVA. Для этого может быть использована опция ядра `KVA_PAGES`.

В случае сомнений относительно производительности и стабильности рекомендуется обратиться к странице руководства tuning(7). Страница руководства pae(4) содержит свежую информацию о поддержке PAE в FreeBSD.

## 8.7. Решение проблем

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

Не удаётся отработать команде `config`:

  Если команда config(8) не может отработать, то, скорее всего, вы допустили где-нибудь маленькую ошибку. К счастью, config(8) выведет номер проблемной строки, поэтому вы можете быстро найти строку, содержащую ошибку. Например, если вы видите:

      config: line 17: syntax error

  Убедитесь, что опция введена верно путём сравнения с файлом `GENERIC` или другим источником.

Не удаётся отработать команде `make`:

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

Ядро не загружается:

  Если ваше новое ядро не загружается или ему не удаётся обнаружить ваши устройства -- не паникуйте! К счастью, в FreeBSD существует отличный механизм для восстановления после установки несовместимого ядра. Просто выберите ядро, которое хотите загрузить, в загрузчике FreeBSD. Доступ к нему вы можете получить, когда система находится в стартовом меню. Выберите шестой пункт (''Escape to a loader prompt''), введите команду `unload kernel` и наберите `boot /boot/`kernel.old`/kernel`, или используйте любое другое ядро, которое загрузится без проблем. Во время переконфигурирования ядра всегда полезно оставлять копию ядра, о котором известно, что оно рабочее.

  После загрузки с рабочим ядром вы можете проверить ваш файл конфигурации и попробовать собрать ядро опять. Очень полезным в данном случае окажется файл `/var/log/messages`, в котором, среди других записей, имеются сообщения ядра от каждой успешной загрузки. Также, команда dmesg(8) выведет сообщения ядра от текущей загрузки.

  > Замечание: Если у вас возникли проблемы со сборкой ядра, убедитесь, что вы сохранили ядро `GENERIC` или другое рабочее ядро под другим именем, чтобы оно не было удалено при следующей сборке. Вы не можете использовать `kernel.old`, потому что при установке нового ядра `kernel.old` перезаписывается последним установленным ядром, которое может оказаться нерабочим. Также, как можно скорее переместите рабочее ядро в `/boot/kernel`, так как некоторые команды, такие как ps(1) будут работать некорректно. Для этого просто переместите каталог, содержащий работоспособное ядро:

  >     # mv /boot/kernel /boot/kernel.bad
  >     # mv /boot/kernel.good /boot/kernel

Ядро работает, но ps(1) больше не работает:

  Если вы установили версию ядра отличную от той, с которой были собраны ваши системные утилиты, например, ядро от -CURRENT на системе -RELEASE, большая часть системных команд, таких как ps(1) и vmstat(8) не будут больше работать. Вам потребуется перекомпилировать и установить систему той же версии исходных текстов, что и ядро. Это одна из причин, по которой не следует использовать версию ядра, отличную от версии всей остальной системы.

# Глава 9. Печать

Написал Sean Kelly. Реструктурировал и обновил Jim Mock. Перевод на русский язык: Валерий Кравчук.

## 9.1. Краткий обзор

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

FreeBSD можно также сконфигурировать для работы в качестве сервера печати в сети; в этом качестве FreeBSD может получать задания печати от множества других компьютеров, включая другие компьютеры под управлением ОС FreeBSD, хосты Windows и Mac OS. FreeBSD будет гарантировать печать заданий по одному и может сохранять информацию о том, какие пользователи и машины выполняют основную часть печати, выдавать страницы-''баннеры'', показывающие, кому принадлежит распечатка, и многое другое.

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

- Как конфигурировать спулер печати FreeBSD.

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

- Как включить при печати колонтитулы или выдачу страниц-баннеров.

- Как печатать на принтеры, подключенные к другим компьютерам.

- Как печатать на принтеры, подключенные непосредственно к сети.

- Как задавать ограничения для принтера, включая ограничение размера заданий печати и запрет печати для отдельных пользователей.

- Как сохранять статистическую информацию о печати и учитывать использование принтера.

- Как решать проблемы печати.

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

- Знать, как сконфигурировать и установить новое ядро (Гл. 8).

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

Для использования принтеров в ОС FreeBSD вы можете настроить их для работы с системой спулинга печати Беркли (Berkeley line printer spooling system), также известной как система спулинга LPD. Это -- стандартная система управления принтером во FreeBSD. В этой главе представлена система спулинга LPD и описано ее конфигурирование.

Если вы уже знакомы с LPD или другой системой спулинга печати, вы можете сразу перейти к разделу Базовая настройка.

LPD управляет всеми аспектами работы принтеров хоста. Она отвечает за несколько вещей:

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

- Она позволяет пользователям посылать файлы на печать; эти данные называют заданиями.

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

- Она позволяет печатать страницы заголовка (их также называют баннерными или начальными страницами), чтобы пользователи могли легко находить распечатанные задания в пачке распечаток.

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

- Она может отправлять задания по сети спулеру LPD на другом хосте.

- Она может применять специальные фильтры для форматирования заданий для печати на разных языках описания страниц или задействования специфических возможностей принтера.

- Она учитывает использование принтера.

С помощью файла конфигурации (`/etc/printcap`) и за счет предоставления специальных программ фильтрования, можно потребовать от системы LPD выполнять все или некоторые из перечисленных выше функций на широком спектре принтерного оборудования.

### 9.2.1. Зачем использовать спулер

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

- LPD печатает задания в фоновом режиме; вам не придется ждать, пока данные будут скопированы на принтер.

- LPD позволяет легко пропустить задание печати через фильтры для добавления заголовков с датой/временем или преобразования специального формата файлов (такого как TeX DVI) в формат, который понимает принтер. Вам не придется выполнять эти шаги вручную.

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

## 9.3. Основная настройка

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

- См. раздел Простая настройка принтера, чтобы узнать, как подключить принтер, объяснить LPD, как с ним взаимодействовать, и отправлять на принтер простые текстовые файлы.

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

### 9.3.1. Простая настройка принтера

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

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

- В разделе Настройка программного обеспечения показано, как настроить файл конфигурации спулера LPD (`/etc/printcap`).

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

Хотя этот раздел и назван ''Простая настройка принтера'', это, на самом деле, достаточно сложно. Заставить принтер работать с компьютером и спулером LPD -- самая сложная часть. Расширенные опции, вроде выдачи страниц заголовков и учета использования, установить несложно, как только принтер заработает.

#### 9.3.1.1. Настройка оборудования

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

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

##### 9.3.1.1.1. Порты и кабели

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

- Последовательные интерфейсы, также известные как RS-232, или COM-порты, используют для посылки данных на принтер последовательный порт компьютера. Последовательные интерфейсы широко распространены в компьютерной индустрии, кабели для них легко найти и просто сделать. Для последовательных интерфейсов иногда нужны специальные кабели, и для их использования может потребоваться настраивать достаточно сложные опции взаимодействия. Большинство последовательных портов ПК имеют максимальную скорость передачи 115200 бит/сек, поэтому печатать через них большие графические задания неудобно.

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

  Параллельные интерфейсы иногда называют интерфейсами ''Centronics'', по названию типа разъема на принтере.

- Интерфейсы USB (сокращение от Universal Serial Bus -- универсальная последовательная шина), могут работать на еще больших скоростях, чем параллельные или последовательные интерфейсы RS-232. Кабели для них -- простые и дешевые. USB превосходит последовательный RS-232 и параллельный интерфейсы для печати, но не слишком хорошо поддерживается в UNIX-системах. Обойти эту проблему можно, купив принтер с двумя интерфейсами, USB и параллельным, как у многих принтеров.

В общем случае, параллельные интерфейсы обычно обеспечивают только одностороннюю передачу (с компьютера на принтер), тогда как последовательные и USB поддерживают двустороннюю. Более новые параллельные порты (EPP и ECP) и принтеры могут взаимодействовать в обоих направлениях под FreeBSD, если используется кабель, соответствующий стандарту IEEE-1284.

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

Фактически, задания PostScript являются программами, посылаемыми для выполнения принтеру; они вообще могут не выдавать результат на бумагу и возвращать его непосредственно компьютеру. PostScript также использует двустороннее взаимодействие для сообщения компьютеру о проблемах, таких как ошибки в PostScript-программе или замятие бумаги. Такая информация может пригодиться пользователям. Более того, лучший способ эффективного учета использования PostScript-принтера требует двустороннего взаимодействия: вы запрашиваете у принтера значение счетчика страниц (сколько страниц напечатал принтер за все время существования), затем посылаете задание пользователя, затем снова запрашиваете значение его счетчика страниц. Вычитаем одно значение из другого, и узнаем, сколько бумаги потратил пользователь.

##### 9.3.1.1.2. Параллельные порты

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

Помните, какой параллельный порт компьютера вы использовали. Первый параллельный порт в ОС FreeBSD -- `ppc0`; второй -- `ppc1`, и так далее. Имена устройств для принтеров используют ту же схему: `/dev/lpt0` для принтера на первом параллельном порту и т.д.

##### 9.3.1.1.3. Последовательные порты

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

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

- Модемный кабель соединяет каждый штырёк на одном конце кабеля напрямую с соответствующим штырьком на другом конце. Кабель такого типа также называют кабелем ''DTE-to-DCE''.

- Нуль-модемный кабель соединяет часть штырьков напрямую, другие -- меняет (пересылку данных на приём данных, например), а некоторые -- закорачивает на каждом разъеме. Кабель такого типа также называют кабелем ''DTE-to-DTE'' cable.

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

Вам надо также настроить эти параметры взаимодействия с принтером, обычно -- через элементы управления на лицевой панели или переключатели (DIP switches) на принтере. Выберите максимальную скорость передачи `bps` (бит в секунду, иногда -- baud rate), которую могут поддерживать как компьютер, так и принтер. Выберите 7 или 8 битов данных; четность none, even или odd; и 1 или 2 стоп-бита. Также надо выбрать протокол управления передачей: none или XON/XOFF (также известный как ''внутриполосный'' или ''программный''). Запомните выбранные установки для последующего конфигурирования программного обеспечения.

#### 9.3.1.2. Настройка программного обеспечения

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

Вот план действий, которые необходимо выполнить:

1. При необходимости, сконфигурировать в ядре поддержку порта, к которому подключен принтер; в разделе Конфигурирование ядра описано, что надо сделать.

2. Установить режим взаимодействия для параллельного порта, если используется параллельный порт; детали представлены в разделе Настройка режима взаимодействия для параллельного порта.

3. Проверить, может ли операционная система посылать данные на принтер. В разделе Проверка взаимодействия с принтером даны советы, как это сделать.

4. Настроить LPD для принтера, изменяя файл `/etc/printcap`. Как это сделать описано далее в этой главе.

##### 9.3.1.2.1. Конфигурирование ядра

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

Чтобы узнать, поддерживает ли используемое в настоящий момент ядро последовательный интерфейс, наберите:

    # grep sioN /var/run/dmesg.boot

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

    sio2 at port 0x3e8-0x3ef irq 5 on isa
    sio2: type 16550A

значит, ядро поддерживает порт.

Чтобы узнать, поддерживает ли ядро параллельный интерфейс, наберите:

    # grep ppcN /var/run/dmesg.boot

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

    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/8 bytes threshold

значит, ядро поддерживает порт.

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

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

#### 9.3.1.3. Настройка режима взаимодействия для параллельного порта

При использовании параллельного интерфейса можно выбрать, должна ли ОС FreeBSD взаимодействовать с принтером на основе прерываний или путем опроса. Универсальный драйвер принтера (lpt(4)) во FreeBSD использует систему ppbus(4), которая управляет чипсетом порта с помощью драйвера ppc(4).

- Метод взаимодействия на основе прерываний является стандартным для ядра GENERIC. По этому методу, операционная система использует линию запроса прерывания (IRQ line) для определения готовности принтера к приему данных.

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

Метод взаимодействия на основе прерываний обычно работает несколько быстрее, но использует ценную линию запроса прерывания. Про некоторые новые принтеры HP утверждают, что они работают некорректно в режиме взаимодействия на основе прерываний, вероятно, из-за некоторой (еще не вполне понятной) проблемы синхронизации. Для этих принтеров необходимо устанавливать режим опроса. Используйте тот режим, который работает. Некоторые принтеры будут работать в обоих режимах, но оказываются крайне медленными в режиме на основе прерываний.

Режим взаимодействия можно установить двумя способами: конфигурируя ядро или с помощью программы lptcontrol(8).

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

1. Отредактируйте файл конфигурации ядра. Найдите запись `ppc0`. Если вы настраиваете второй параллельный порт, ищите запись `ppc1`. Используйте запись `ppc2` для третьего порта, и так далее.

   - Если необходимо установить режим на основе прерываний, отредактируйте следующую строку:

         hint.ppc.0.irq="N"

     в файле `/boot/device.hints`, заменив `N` соответствующим номером IRQ. Файл конфигурации ядра также должен содержать драйвер ppc(4):

         device ppc

   - Если необходимо установить режим опроса, удалите из файла `/boot/device.hints` следующую строку:

         hint.ppc.0.irq="N"

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

2. Сохраните файл. Затем сконфигурируйте, соберите и установите ядро и перезагрузите систему. Подробнее см. в разделе конфигурирование ядра.

Для настройки режима взаимодействия с помощью утилиты lptcontrol(8):

1. Введите команду:

       # lptcontrol -i -d /dev/lptN

   для установки режима взаимодействия на основе прерываний для `lpt`N``.

2. Введите команду:

       # lptcontrol -p -d /dev/lptN

   для установки режима взаимодействия по опросу для `lpt`N``.

Вы можете поместить эти команды в файл `/etc/rc.local` для установки требуемого режима при каждой загрузке системы. Дополнительную информацию об этом ищите на странице справочного руководства lptcontrol(8).

#### 9.3.1.4. Проверка взаимодействия с принтером

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

Для тестирования принтера мы пошлем на него текст. Для принтеров, которые могут непосредственно печатать посланные на них символы, идеально подходит программа lptest(1): она генерирует все 96 печатных символов ASCII в 96 строках.

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

    %!PS
    100 100 moveto 300 300 lineto stroke
    310 310 moveto /Helvetica findfont 12 scalefont setfont
    (Is this thing working?) show
    showpage

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

> Замечание: Когда в этом документе речь идет о языке принтера, подразумевается язык типа PostScript, а не PCL компании Hewlett Packard. Хотя PCL имеет прекрасные функциональные возможности, в нем можно смешивать обычный текст с его управляющими последовательностями. PostScript не позволяет непосредственно печатать обычный текст, и это язык принтера именно того рода, для которого надо выполнять специальные настройки.

##### 9.3.1.4.1. Проверка параллельного принтера

В этом разделе описано, как проверить, может ли ОС FreeBSD взаимодействовать с принтером, подключенным к параллельному порту.

Для тестирования принтера на параллельном порту:

1. Станьте пользователем `root` с помощью команды su(1).

2. Пошлите данные на принтер.

   - Если принтер может печатать обычный текст, используйте утилиту lptest(1). Введите команду:

         # lptest > /dev/lptN

     Где `N` -- номер параллельного порта, начиная с нуля.

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

         # cat > /dev/lptN

     Затем, построчно, внимательно введите программу, поскольку вы не сможете отредактировать строку после нажатия клавиши `RETURN` или `ENTER`. По окончании ввода программы, нажмите `CONTROL+D` или другую комбинацию клавиш, используемую для ввода символа конца файла.

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

         # cat file > /dev/lptN

     Где `file` -- имя файла, содержащего программу, которую вы хотите послать принтеру.

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

##### 9.3.1.4.2. Проверка последовательного принтера

В этом разделе описано, как проверить, может ли ОС FreeBSD взаимодействовать с принтером, подключенным к последовательному порту.

Для тестирования принтера на последовательном порту:

1. Станьте пользователем `root` с помощью команды su(1).

2. Отредактируйте файл `/etc/remote`. Добавьте следующую запись:

       printer:dv=/dev/port:br#bps-rate:pa=parity

   Где `port` -- специальный файл устройства для последовательного порта (`ttyd0`, `ttyd1` и т.д.), `bps-rate` -- скорость обработки данных принтером, в битах в секунду, а `parity` -- требуемая принтером четность (значение `even`, `odd`, `none` или `zero`).

   Вот пример записи для принтера, подключенного к третьему последовательному порту на скорости 19200 bps без четности:

       printer:dv=/dev/ttyd2:br#19200:pa=none

3. Подключитесь к принтеру с помощью tip(1). Введите команду:

       # tip printer

   Если этот шаг не срабатывает, снова отредактируйте файл `/etc/remote` и попробуйте использовать устройство `/dev/cuaa`N`` вместо `/dev/ttyd`N``.

4. Пошлите данные на принтер.

   - Если принтер может печатать обычный текст, используйте утилиту lptest(1). Введите команду:

         % $lptest

   - Если принтер понимает PostScript или другой язык принтера, пошлите на принтер небольшую программу. Вводите программу, построчно, очень внимательно, поскольку нажатие клавиши Backspacе или других клавиш редактирования может иметь значение для принтера. Может также понадобиться нажать специальную комбинацию клавиш, обозначающую конец файла, чтобы принтер понял, что получена вся программа. Для PostScript-принтеров нажмите `CONTROL+D`.

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

         % >file

     Где `file` -- имя файла, содержащего программу. После того, как утилита tip(1) пошлет файл, нажмите требуемую для ввода признака конца файла комбинацию клавиш.

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

#### 9.3.1.5. Включение спулера: файл `/etc/printcap`

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

Система LPD конфигурируется путем редактирования файла `/etc/printcap`. Система спулинга LPD читает этот файл при каждом использовании спулера, так что, изменения в файле сразу же учитываются.

Формат файла printcap(5) прост. Используйте свой любимый текстовый редактор для изменения файла `/etc/printcap`. Формат файла идентичен формату других файлов, описывающих характеристики, например, `/usr/share/misc/termcap` и `/etc/remote`. Полная информация о формате представлена на странице справочного руководства cgetent(3).

Простое конфигурирование спулера включает следующие шаги:

1. Выберите имя (и несколько удобных псевдонимов) для принтера и поместите их в файл `/etc/printcap`; подробнее об именовании см. в разделе Именование принтера.

2. Отключите выдачу начальных страниц (которые по умолчанию выдаются), вставив характеристику `sh`; подробнее об этом см. в разделе Подавление выдачи начальных страниц.

3. Создайте каталог для спулинга и укажите его местонахождение с помощью характеристики `sd`; подробнее об этом см. в разделе Создание каталога спулинга.

4. Выберите специальный файл устройства `/dev` для использования с принтером и укажите его в файле `/etc/printcap` с помощью характеристики `lp`; подробнее об этом см. в разделе Выбор устройства для принтера. Кроме того, если принтер подключен к последовательному порту, настройте параметры взаимодействия с помощью характеристики `ms#`, которая обсуждается в разделе Конфигурирование параметров взаимодействия для спулера.

5. Установите фильтр для обычного текста; подробнее об этом см. в разделе Установка текстового фильтра.

6. Проверьте настройку, напечатав что-нибудь с помощью команды lpr(1). Подробнее об этом см. в разделах Проверка и Выявление проблем.

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

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

##### 9.3.1.5.1. Именование принтера

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

По крайней мере, один из принтеров, указанных в файле `/etc/printcap`, должен иметь псевдоним `lp`. Это -- стандартное имя принтера. Если пользователи не установят переменную среды `PRINTER` и не укажут имя принтера в командной сроке при вводе любой команды системы LPD, по умолчанию для ее выполнения будет использован принтер `lp`.

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

После выбора имени и нескольких популярных псевдонимов поместите их в файл `/etc/printcap`. Имя принтера должно начинаться с крайнего левого столбца. Каждый псевдоним отделяйте вертикальной чертой, а после последнего псевдонима поместите двоеточие.

В следующем примере мы начнем со скелетного файла `/etc/printcap`, определяющего два принтера (построчный принтер Diablo 630 и лазерный PostScript-принтер Panasonic KX-P4455):

    #
    #  /etc/printcap для хоста rose
    #
    rattan|line|diablo|lp|Diablo 630 Line Printer:

    bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:

В этом примере первый принтер назван `rattan` и ему заданы псевдонимы `line`, `diablo`, `lp` и `Diablo 630 Line Printer`. Поскольку у него есть псевдоним `lp`, он является стандартным принтером. Второму принтеру дано имя `bamboo` и ему заданы псевдонимы `ps`, `PS`, `S`, `panasonic` и `Panasonic KX-P4455 PostScript v51.4`.

##### 9.3.1.5.2. Подавление выдачи начальных страниц

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

Для подавления выдачи начальных страниц добавьте характеристику `sh` к записи принтера в файле `/etc/printcap`. Вот пример файла `/etc/printcap` с добавлением `sh`:

    #
    #  /etc/printcap для хоста rose - никаких начальных страниц
    #
    rattan|line|diablo|lp|Diablo 630 Line Printer:\
            :sh:

    bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\
            :sh:

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

##### 9.3.1.5.3. Создание каталога для спулинга

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

Из-за присущих каталогам спулинга постоянных изменений, принято помещать эти каталоги в каталог `/var/spool`. Кроме того, не нужно создавать резервные копии содержимого каталогов спулинга. Пересоздать их можно с помощью простой команды mkdir(1).

Принято также задавать для каталога имя, совпадающее с именем принтера, как показано ниже:

    # mkdir /var/spool/имя-принтера

Однако при наличии большого количества принтеров в сети может иметь смысл поместить все каталоги спулинга в один каталог, который просто резервируется для печати с помощью LPD. Мы сделаем это для наших двух принтеров, `rattan` и `bamboo`:

    # mkdir /var/spool/lpd
    # mkdir /var/spool/lpd/rattan
    # mkdir /var/spool/lpd/bamboo

> Замечание: Если вас интересует конфиденциальность заданий, отправляемых пользователями на печать, можно защитить каталог спулинга, чтобы он не был общедоступным. Каталоги спулинга должны принадлежать и быть доступны на чтение, запись и просмотр содержимого пользователю daemon и группе daemon, и никому больше. Мы установим это для каталогов спулинга принтеров из нашего примера:

>     # chown daemon:daemon /var/spool/lpd/rattan
>     # chown daemon:daemon /var/spool/lpd/bamboo
>     # chmod 770 /var/spool/lpd/rattan
>     # chmod 770 /var/spool/lpd/bamboo

Наконец, надо сообщить системе LPD об этих каталогах с помощью файла `/etc/printcap`. Полное имя каталога спулинга задается с помощью характеристики `sd`:

    #
    #  /etc/printcap для хоста rose - добавлены каталоги спулинга
    #
    rattan|line|diablo|lp|Diablo 630 Line Printer:\
            :sh:sd=/var/spool/lpd/rattan:

    bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\
            :sh:sd=/var/spool/lpd/bamboo:

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

Если вы не зададите каталог спулинга с помощью характеристики `sd`, система спулинга будет использовать по умолчанию каталог `/var/spool/lpd`.

##### 9.3.1.5.4. Выбор устройства для принтера

Мы выяснили, какой специальный файл устройства в каталоге `/dev` FreeBSD будет использовать для взаимодействия с принтером. Теперь мы сообщаем эту информацию системе LPD. Когда у системы спулинга есть задание для печати, она будет открывать указанное устройство от имени программы-фильтра (которая отвечает за передачу данных на принтер).

Задайте полное имя устройства `/dev` в файле `/etc/printcap` с помощью характеристики `lp`.

В нашем текущем примере давайте предположим, что принтер `rattan` подключен к первому параллельному порту, а принтер `bamboo` -- к шестому последовательному порту; вот что нужно добавить в файл `/etc/printcap`:

    #
    #  /etc/printcap для хоста rose - указано, какие устройства использовать
    #
    rattan|line|diablo|lp|Diablo 630 Line Printer:\
            :sh:sd=/var/spool/lpd/rattan:\
            :lp=/dev/lpt0:

    bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\
            :sh:sd=/var/spool/lpd/bamboo:\
            :lp=/dev/ttyd5:

Если вы не укажете характеристику `lp` для принтера в файле `/etc/printcap`, система LPD использует по умолчанию устройство `/dev/lp`. Устройство `/dev/lp` сейчас в ОС FreeBSD не существует.

Если устанавливаемый принтер подключен к параллельному порту, перейдите к разделу Установка текстового фильтра. Иначе выполните сначала инструкции, представленные в следующем разделе.

##### 9.3.1.5.5. Конфигурирование параметров взаимодействия спулера

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

- Позволяет опробовать различные параметры взаимодействия, просто редактируя файл `/etc/printcap`; программу-фильтр перекомпилировать не нужно.

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

Следующие характеристики в файле `/etc/printcap` задают параметры взаимодействия через последовательный порт для устройства, указанного в качестве значения характеристики `lp`:

`br#`bps-rate``

  Устанавливает скорость взаимодействия для устройства в `bps-rate`, где `bps-rate` может иметь значение 50, 75, 110, 134, 150, 200, 300, 600, 1200, 1800, 2400, 4800, 9600, 19200, 38400, 57600 или 115200 бит в секунду.

`ms#`stty-mode``

  Устанавливает опции для терминального устройства после открытия устройства. Поддерживаемые опции описаны на странице справочного руководства stty(1).

Когда система LPD открывает устройство, заданное характеристикой `lp`, она устанавливает опции устройства в соответствии со значением характеристики `ms#`. Наибольший интерес представляют режимы `parenb`, `parodd`, `cs5`, `cs6`, `cs7`, `cs8`, `cstopb`, `crtscts` и `ixon`, которые описаны на странице справочного руководства stty(1).

Давайте зададим опции для нашего принтера на шестом последовательном порту. Мы установим скорость передачи 38400. В качестве режима установим режим без четности с помощью `-parenb`, 8-битовые символы с помощью `cs8`, отсутствие модемного управления с помощью `clocal` и аппаратное управление потоком с помощью опции `crtscts`:

    bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\
            :sh:sd=/var/spool/lpd/bamboo:\
            :lp=/dev/ttyd5:ms#-parenb cs8 clocal crtscts:

##### 9.3.1.5.6. Установка текстового фильтра

Теперь мы готовы задать системе LPD, какой текстовый фильтр использовать для посылки заданий на принтер. Текстовый фильтр, известный также как входной фильтр, -- это программа, которую система LPD запускает при получении задания на печать. Когда система LPD запускает текстовый фильтр для принтера, она направляет на стандартный входной поток фильтра задание печати, а его стандартный выходной поток -- на устройство принтера, заданное характеристикой `lp`. Предполагается, что фильтр прочитает задание из стандартного входного потока, выполнит все необходимые для принтера преобразования и выдаст результат в стандартный выходной поток, который и будет напечатан. Подробнее о текстовом фильтре см. в разделе Фильтры.

Для простой настройки принтера в качестве текстового фильтра можно задать небольшой скрипт командного интерпретатора, который просто выполняет `/bin/cat` для посылки задания на принтер. В составе FreeBSD поставляется другой фильтр, `lpf`, обрабатывающий забой и подчеркивание для принтеров, которые не слишком хорошо справляются с потоком данных, содержащих такие символы. И, конечно же, вы можете использовать любую другую необходимую программу-фильтр. Фильтр `lpf` детально описан в разделе lpf: текстовый фильтр.

Сначала давайте создадим скрипт командного интерпретатора `/usr/local/libexec/if-simple` для простого тестового фильтра. Поместите в этот файл следующий текст с помощью любимого текстового редактора:

    #!/bin/sh
    #
    # if-simple - Простой фильтр входного текста для lpd
    # Установлен в /usr/local/libexec/if-simple
    #
    # Просто копирует stdin в stdout. Игнорирует все аргументы фильтра.

    /bin/cat && exit 0
    exit 2

Сделайте этот файл выполняемым:

    # chmod 555 /usr/local/libexec/if-simple

А теперь потребуйте от системы LPD его использовать, указав его в качестве значения характеристики `if` в файле `/etc/printcap`. Мы добавим его для двух принтеров, имеющихся пока в примере файла `/etc/printcap`:

    #
    #  /etc/printcap для хоста rose - добавлен текстовый фильтр
    #
    rattan|line|diablo|lp|Diablo 630 Line Printer:\
            :sh:sd=/var/spool/lpd/rattan:\ :lp=/dev/lpt0:\
            :if=/usr/local/libexec/if-simple:

    bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\
            :sh:sd=/var/spool/lpd/bamboo:\
            :lp=/dev/ttyd5:ms#-parenb cs8 clocal crtscts:\
            :if=/usr/local/libexec/if-simple:

> Замечание: Копию скрипта `if-simple` можно найти в каталоге `/usr/share/examples/printing`.

##### 9.3.1.5.7. Запуск системы LPD

Даемон lpd(8) запускается из `/etc/rc`, а необходимость запуска задается переменной `lpd_enable`. Эта переменная по умолчанию имеет значение `NO`. Если вы еще этого не сделали, добавьте строку:

    lpd_enable="YES"

в файл `/etc/rc.conf`, а затем либо перезапустите машину, либо просто выполните команду lpd(8).

    # lpd

##### 9.3.1.5.8. Проверка

Вы добрались до конца простой настройки системы LPD. К сожалению, поздравлять вас еще рано, поскольку надо еще проверить настройку и устранить все выявленные проблемы. Для проверки настройки, попытайтесь что-то распечатать. Для печати с помощью системы LPD используется команда lpr(1), которая посылает задание на печать.

Можно скомбинировать lpr(1) с программой lptest(1), представленной в разделе Проверка взаимодействия с принтером, генерирующей тестовый текст.

Для тестирования простой настройки LPD:

Введите команду:

    # lptest 20 5 | lpr -Pprinter-name

Где `printer-name` -- имя (или псевдоним) принтера, заданное в файле `/etc/printcap`. Для проверки стандартного принтера, введите команду lpr(1) без аргумента `-P`. Как уже отмечалось, если тестируется принтер, предполагающий использование PostScript, пошлите ему PostScript-программу вместо использования утилиты lptest(1). Это можно сделать, поместив программу в файл и выполнив команду `lpr `file``.

Для PostScript-принтера вы должны получить результаты выполнения программы. Если вы используете lptest(1), ваши результаты должны иметь такой вид:

    !"#$%&'()*+,-./01234
    "#$%&'()*+,-./012345
    #$%&'()*+,-./0123456
    $%&'()*+,-./01234567
    %&'()*+,-./012345678

Для дальнейшего тестирования принтера, попытайтесь загрузить программы побольше (для принтеров, поддерживающих определенный язык) или выполните команду lptest(1) с другими аргументами. Например, команда `lptest 80 60` выдаст 60 строк по 80 символов в каждой.

Если принтер не работает, см. раздел Выявление проблем.

## 9.4. Расширенная настройка принтера

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

### 9.4.1. Фильтры

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

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

Кроме того, в составе ОС FreeBSD поставляется один фильтр, `/usr/libexec/lpr/lpf`, работающий со многими принтерами, которые могут печатать обычный текст. (Он обрабатывает символы забоя и табуляции в файле, выполняет учет использования, но и не более того.) Есть также ряд фильтров и компонентов фильтров в наборе портов FreeBSD.

Вот что вы найдете в этом разделе:

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

- Система LPD предполагает, что каждый принтер, по умолчанию, может печатать обычный текст. Это проблематично для PostScript-принтеров (или принтеров на базе другого языка), поскольку они не могут печатать обычный текст непосредственно. В разделе Прием заданий с обычным текстом на PostScript-принтеры описано, что нужно сделать, чтобы решить эту проблему. Прочтите этот раздел, если используете PostScript-принтер.

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

- В разделе Фильтры преобразования описан способ автоматизации преобразования определенных форматов файлов, например, графики или данных для печатного станка, в форматы, которые может обработать ваш принтер. После чтения этого раздела вы сможете настроить свои принтеры так, что пользователи смогут выполнять команду `lpr -t` для печати данных troff, или `lpr -d` для печати данных TeX DVI, или `lpr -v` -- для печати растровых изображений, и так далее. Я рекомендую прочитать этот раздел.

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

- В разделе lpf: текстовый фильтр описана команда `lpf`, -- достаточно полный, хотя и простой текстовый фильтр для строчных принтеров (и лазерных принтеров, работающих как строчные), поставляемый в составе ОС FreeBSD. Если надо быстро настроить учет использования принтера для обычного текста или если используется принтер, из которого при получении символов забоя идет дым, несомненно, стоит подумать об использовании `lpf`.

> Замечание: Различные скрипты, описанные далее, можно найти в каталоге `/usr/share/examples/printing`.

#### 9.4.1.1. Как работают фильтры

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

Когда системе LPD надо напечатать входящий в задание файл, она запускает программу-фильтр. Стандартный входной поток фильтра связывается с файлом, который надо распечатать, его стандартный выходной поток -- с принтером, а стандартный поток ошибок перенаправляется в файл регистрации ошибок (задается характеристикой `lf` в файле `/etc/printcap`, или используется стандартное устройство `/dev/console`).

Запускаемый системой LPD фильтр и его аргументы зависят от того, что указано в файле `/etc/printcap`, и какие аргументы указал пользователь для задания в команде lpr(1). Например, если пользователь ввел команду `lpr -t`, система LPD должна запустить фильтр troff, заданный характеристикой `tf` для соответствующего принтера. Если пользователь хочет печатать обычный текст, система должна запустить фильтр `if` (это верно в большинстве случаев: подробнее см. в разделе Выходные фильтры).

В файле `/etc/printcap` можно задавать три вида фильтров:

- Текстовый фильтр, который в документации LPD двусмысленно называют входным фильтром, обеспечивает печать обычного текста. Рассматривайте его как стандартный фильтр. Система LPD предполагает, что любой принтер может по умолчанию печатать обычный текст, а на текстовый фильтр возлагается задача обеспечить, чтобы символы забоя, табуляции или другие специальные символы не сбивали принтер с толку. Если вы работаете в среде, где надо учитывать использование принтера, текстовый фильтр должен также учитывать количество напечатанных страниц, обычно, подсчитывая количество напечатанных строк и сравнивая их с количеством строк на страницу, поддерживаемых принтером. Текстовый фильтр запускается со следующим списком аргументов:

  `имя-фильтра` [-c] -w`ширина` -l`длина` -i`сдвиг` -n `имя-пользователя` -h `хост` `учетный-файл`

  где
  `-c`

    указывается, если задание послано командой `lpr -l`

  `ширина`

    значение из характеристики `pw` (page width -- ширина страницы), указанной в файле `/etc/printcap`, по умолчанию -- 132

  `длина`

    значение из характеристики `pl` (page length -- длина страницы), по умолчанию -- 66

  `сдвиг`

    сдвиг, заданный командой `lpr -i`, по умолчанию -- 0

  `имя-пользователя`

    регистрационное имя пользователя, печатающего файл

  `хост`

    имя хоста, с которого было послано задание

  `учетный-файл`

    имя учетного файла, задаваемое характеристикой `af`.

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

  `имя-фильтра` -x`ширина-пиксела` -y`высота-пиксела` -n `имя-пользователя` -h `хост` `учетный-файл`

  где `ширина-пиксела` -- значение характеристики `px` (по умолчанию -- 0), а `высота-пиксела` -- значение характеристики `py` (по умолчанию -- 0).

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

  `имя-фильтра` -w`ширина` -l`длина`

  которые идентичны аргументам `-w` и `-l` текстового фильтра.

Фильтры также должны завершать работу со следующим статусом выхода:

exit 0

  Если фильтр успешно напечатал файл.

exit 1

  Если фильтр не смог напечатать файл, но хочет, чтобы система LPD попыталась распечатать файл ещё раз. Система LPD перезапустит фильтр, если его работа завершена с этим статусом.

exit 2

  Если фильтр не смог напечатать файл и не хочет, чтобы система LPD пыталась его печатать еще раз. Система LPD удалит файл.

Поставляемый в составе FreeBSD текстовый фильтр `/usr/libexec/lpr/lpf` использует аргументы, задающие ширину и длину страницы для определения того, когда посылать символ прогона страницы (form feed) и как учитывать использование принтера. Он использует переданные в качестве аргументов имя пользователя, хост и учетный файл для внесения учетных записей.

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

#### 9.4.1.2. Прием заданий с обычным текстом на PostScript®-принтеры

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

Но, если вы хотите посылать на принтер как задания PostScript, так и обычный текст, рекомендуется дополнить настройку принтера. Для этого надо, чтобы текстовый фильтр определял, является ли поступающее задание обычным текстом или программой на языке PostScript. Все PostScript-задания должны начинаться с `%!` (для других языков принтеров обратитесь к соответствующей документации). Если первые два символа в задании -- именно эти, речь идет о PostScript, и мы можем остальную часть задания передавать непосредственно. Если же первые два символа в файле -- другие, фильтр будет преобразовывать текст в PostScript и печатать результат.

Как нам это сделать?

Если вы используете последовательный принтер, хороший способ достичь поставленной цели состоит в установке `lprps`. `lprps` -- это фильтр для PostScript-принтера, выполняющий двустороннее взаимодействие с принтером. Он обновляет файл состояния принтера, помещая в него подробную информацию, выданную принтером, так что пользователи и администраторы могут узнать, в каком именно состоянии (например, “`toner low`” или “`paper jam`”) находится принтер. Но еще важнее, что он включает программу `psif`, которая определяет, является ли входящее задание обычным текстом, и вызывает `textps` (еще одну программу, поставляемую вместе с `lprps`) для преобразования его в PostScript. Затем `lprps` посылает преобразованное задание на принтер.

`lprps` входит в набор портов FreeBSD (см. Набор портов). Вы, конечно, можете загрузить, собрать и установить его самостоятельно. После установки `lprps` просто укажите путь к программе `psif`, входящей в состав пакета `lprps`. Если вы установили `lprps` из Коллекции Портов, используйте следующий текст в записи для последовательного PostScript-принтера в файле `/etc/printcap`:

    :if=/usr/local/libexec/psif:

Надо также задать характеристику `rw`; она требует от системы LPD открывать принтер в режиме чтения и записи.

При использовании параллельного PostScript-принтера (что не позволяет обеспечить двустороннее взаимодействие с принтером, необходимое для системы `lprps`), можно использовать в качестве текстового фильтра следующий скрипт командного интерпретатора:

    #!/bin/sh
    #
    #  psif - Печать PostScript или обычного текста на PostScript-принтере
    #  Скрипт, а НЕ версия, входящая в состав lprps
    #  Установлен в /usr/local/libexec/psif
    #

    IFS="" read -r first_line
    first_two_chars=`expr "$first_line" : '\(..\)'`

    if [ "$first_two_chars" = "%!" ]; then
        #
        #  Задание PostScript, печатать его.
        #
        echo "$first_line" && cat && printf "\004" && exit 0
        exit 2
    else
        #
        #  Обычный текст, преобразовать его, а затем напечатать.
        #
        ( echo "$first_line"; cat ) | /usr/local/bin/textps && printf "\004" && exit 0
        exit 2
    fi

В представленном выше скрипте, `textps` -- отдельно установленная программа для преобразования обычного текста в PostScript. Можно использовать любую программу преобразования текста в PostScript. Коллекция Портов FreeBSD (см. материал о Коллекции Портов) включает полнофункциональную программу преобразования текста в PostScript под названием `a2ps`, которую тоже можно попробовать использовать.

#### 9.4.1.3. Имитация PostScript на не-PostScript принтерах

PostScript является фактическим стандартом для высококачественного набора и печати. PostScript, однако, -- дорогой стандарт. К счастью, благодаря компании Aladdin Enterprises есть свободный аналог PostScript под названием Ghostscript, который работает с FreeBSD. Ghostscript может читать большинство PostScript-файлов и выдавать соответствующие страницы на множество устройств, включая многие моделей не-PostScript принтеров. Установив Ghostscript и используя специальный текстовый фильтр для принтера, можно заставить ваш не-PostScript принтер работать фактически как PostScript-принтер.

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

Для имитации PostScript надо, чтобы текстовый фильтр определял, печатается ли PostScript-файл. Если нет, фильтр будет передавать файл на принтер непосредственно; в противном случае, он будет использовать Ghostscript, чтобы сначала преобразовать файл в формат, который поймет принтер.

Рассмотрим пример: следующий сценарий представляет собой текстовый фильтр для принтеров Hewlett Packard DeskJet 500. Для других принтеров замените аргумент `-sDEVICE` в команде `gs` (Ghostscript). (Введите команду `gs -h` для получения списка устройств, поддерживаемых установленной версией Ghostscript.)

    #!/bin/sh
    #
    #  ifhp - Печать Ghostscript-эмулированного PostScript на DeskJet 500
    #  Установлен в /usr/local/libexec/ifhp

    #
    #  Обрабатывать LF как CR+LF (чтобы избежать "эффекта ступенек"
    #  на принтерах HP/PCL:
    #
    printf "\033&k2G" || exit 2

    #
    #  Прочитать первые два символа файла
    #
    IFS="" read -r first_line
    first_two_chars=`expr "$first_line" : '\(..\)'`

    if [ "$first_two_chars" = "%!" ]; then
        #
        #  Это PostScript; используем Ghostscript для чтения, преобразования и печати.
        #
        /usr/local/bin/gs -dSAFER -dNOPAUSE -q -sDEVICE=djet500 \
            -sOutputFile=- - && exit 0
    else
        #
        #  Обычный текст или HP/PCL, поэтому просто печатаем его напрямую; печатаем в
        #  конце символ прогона страницы, чтобы была выдана последняя страница.
        #
        echo "$first_line" && cat && printf "\033&l0H" &&
    exit 0
    fi

    exit 2

Наконец, надо указать системе LPD, какой фильтр использовать, задав характеристику `if`:

    :if=/usr/local/libexec/ifhp:

Вот и все. Теперь можно выполнять `lpr plain.text` и `lpr whatever.ps`, и обе команды должны успешно печатать.

#### 9.4.1.4. Фильтры преобразования

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

##### 9.4.1.4.1. Зачем устанавливать фильтры преобразования?

Фильтры преобразования упрощают печать различного рода файлов. В качестве примера, предположим, что активно используется издательская система TeX и имеется PostScript-принтер. При каждой генерации DVI-файла из TeX, мы не можем печатать его непосредственно, пока не преобразуем в PostScript. Для этого используется такая последовательность команд:

    % dvips seaweed-analysis.dvi
    % lpr seaweed-analysis.ps

Установив фильтр преобразования для файлов DVI, мы можем не конвертировать файл каждый раз вручную, возложив эту задачу на систему LPD. Теперь при каждом получении DVI-файла нас от его распечатки отделяет только один шаг:

    % lpr -d seaweed-analysis.dvi

Мы заставили систему LPD автоматически преобразовывать DVI-файл, указав опцию `-d`. Все опции преобразования представлены в разделе Опции форматирования и преобразования.

Для каждой из опций преобразования, которая должна поддерживаться принтером, установите фильтр преобразования и укажите его полное имя в файле `/etc/printcap`. Фильтр преобразования аналогичен текстовому фильтру для простой настройки принтера (см. раздел Установка текстового фильтра), но вместо печати обычного текста он преобразует файл в формат, который может понять принтер.

##### 9.4.1.4.2. Какие фильтры преобразования следует устанавливать?

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

В следующей таблице представлены фильтры, с которыми работает система LPD, их соответствующие характеристики для файла `/etc/printcap`, а также способ их вызова в команде `lpr`:

Тип файла | Характеристика `/etc/printcap` | Опция `lpr`
--- | --- | ---
cifplot | `cf` | `-c`
DVI | `df` | `-d`
plot | `gf` | `-g`
ditroff | `nf` | `-n`
Текст на языке FORTRAN | `rf` | `-f`
troff | `tf` | `-f`
растровое изображение | `vf` | `-v`
обычный текст | `if` | никакой, `-p` или `-l`

В нашем примере использование `lpr -d` означает, что для принтера должна быть задана характеристика `df` в записи в файле `/etc/printcap`.

Вопреки мнению многих, форматы вроде текста на языке FORTRAN и plot, вероятно, устарели. У себя на машине вы можете дать новые значения этим или любым другим опциям форматирования, установив соответствующие специализированные фильтры. Например, пусть необходимо напрямую печатать файлы Printerleaf (файлы настольной издательской системы Interleaf), но вообще вы не собираетесь печатать файлы типа plot. Можно установить фильтр преобразования Printerleaf в качестве значения характеристики `gf` и научить своих пользователей, что команда `lpr -g` означает ''печатать файлы Printerleaf''.

##### 9.4.1.4.3. Установка фильтров преобразования

Поскольку фильтры преобразования представляют собой программы, не входящие в базовую поставку FreeBSD, их, видимо, надо помещать в каталоге `/usr/local`. Популярное местонахождение -- каталог `/usr/local/libexec`, поскольку эти фильтры являются специализированными программами для выполнения системой LPD; обычным пользователям никогда не понадобится их выполнять.

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

В качестве примера, давайте добавим фильтр преобразования DVI в запись для принтера `bamboo`. Вот опять пример файла `/etc/printcap`, с новой характеристикой `df` для принтера `bamboo`.

    #
    #  /etc/printcap для хоста rose - добавлен фильтр df для bamboo
    #
    rattan|line|diablo|lp|Diablo 630 Line Printer:\
            :sh:sd=/var/spool/lpd/rattan:\
            :lp=/dev/lpt0:\
            :if=/usr/local/libexec/if-simple:

    bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\
            :sh:sd=/var/spool/lpd/bamboo:\
            :lp=/dev/ttyd5:ms#-parenb cs8 clocal crtscts:rw:\
            :if=/usr/local/libexec/psif:\
            :df=/usr/local/libexec/psdf:

Фильтр DVI -- скрипт командного интерпретатора по имени `/usr/local/libexec/psdf`. Вот его текст:

    #!/bin/sh
    #
    #  psdf - фильтр принтера, преобразующий DVI в PostScript
    #  Установлен в /usr/local/libexec/psdf
    #
    # Вызывается системой lpd при выполнении пользователем команды lpr -d
    #
    exec /usr/local/bin/dvips -f | /usr/local/libexec/lprps "$@"

Это скрипт выполняет команду `dvips` в режиме фильтрования (аргумент `-f`) входного потока, представляющего собой задание для печати. Затем запускается фильтр PostScript-принтера `lprps` (см. раздел Прием заданий с обычным текстом на PostScript-принтеры) с аргументами, переданными системой LPD этому скрипту. Команда `lprps` будет использовать эти аргументы для учета распечатанных страниц.

##### 9.4.1.4.4. Дополнительные примеры фильтров преобразования

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

Следующий пример фильтра преобразует растровый файл (точнее, GIF-файл) для печати на принтере Hewlett Packard LaserJet III-Si:

    #!/bin/sh
    #
    #  hpvf - Преобразовать GIF-файлы в HP/PCL и напечатать
    #  Установлен в /usr/local/libexec/hpvf

    PATH=/usr/X11R6/bin:$PATH; export PATH
    giftopnm | ppmtopgm | pgmtopbm | pbmtolj -resolution 300 \
        && exit 0 \
        || exit 2

Он работает путем преобразования GIF-файла в переносимый формат anymap, его -- в переносимый формат graymap, затем -- в переносимый bitmap, а уже его -- в данные, подходящие для LaserJet/PCL.

Вот файл `/etc/printcap` с записью для принтера, в которой используется представленный выше фильтр:

    #
    #  /etc/printcap для хоста orchid
    #
    teak|hp|laserjet|Hewlett Packard LaserJet 3Si:\
            :lp=/dev/lpt0:sh:sd=/var/spool/lpd/teak:mx#0:\
            :if=/usr/local/libexec/hpif:\
            :vf=/usr/local/libexec/hpvf:

Следующий скрипт является фильтром преобразования для печати данных troff, получаемых из системы набора groff, на PostScript-принтере `bamboo`:

    #!/bin/sh
    #
    #  pstf - Преобразует выдаваемые groff данные troff в PS и печатает.
    #  Установлен в /usr/local/libexec/pstf
    #
    exec grops | /usr/local/libexec/lprps "$@"

Представленный выше скрипт снова использует команду `lprps` для взаимодействия с принтером. Если принтер подключен к параллельному порту, придется использовать следующий скрипт:

    #!/bin/sh
    #
    #  pstf - Преобразует выдаваемые groff данные troff в PS и печатает.
    #  Установлен в /usr/local/libexec/pstf
    #
    exec grops

Вот и все. Вот какую запись надо добавить в файл `/etc/printcap`, чтобы включить этот фильтр:

    :tf=/usr/local/libexec/pstf:

Вот пример, который пригодится старым специалистам по языку FORTRAN. Это фильтр для печати текста программы на языке FORTRAN на любом принтере, который может непосредственно печатать обычный текст. Мы установим его для принтера `teak`:

    #!/bin/sh
    #
    # hprf - Фильтр текста на языке FORTRAN для LaserJet 3si:
    # Установлен в /usr/local/libexec/hprf
    #

    printf "\033&k2G" && fpr && printf "\033&l0H" &&
     exit 0
    exit 2

Надо добавить следующую строку к записи в файле `/etc/printcap` для принтера `teak`, чтобы включить этот фильтр:

    :rf=/usr/local/libexec/hprf:

Перейдем к последнему, более сложному примеру. Мы добавим фильтр DVI для уже использовавшегося принтера LaserJet по имени `teak`. Сначала простая часть: изменить файл `/etc/printcap`, указав местонахождение фильтра DVI:

    :df=/usr/local/libexec/hpdf:

А теперь -- часть посложнее: создать фильтр. Для этого нам понадобится программа преобразования DVI в LaserJet/PCL. Набор портов FreeBSD (см. Набор портов) содержит одну: соответствующий пакет называется `dvi2xx`. Установка этого пакета дает нам необходимую программу, `dvilj2p`, которая преобразует DVI в коды, подходящие для LaserJet IIp, LaserJet III и LaserJet 2000.

Команда `dvilj2p` требует создания достаточно сложного фильтра `hpdf`, поскольку она не может читать стандартный входной поток. Она хочет работать с именем файла. Что еще хуже, имя файла должно завершаться расширением `.dvi`, так что использование стандартного входного потока `/dev/fd/0` тоже проблематично. Мы можем обойти эту проблему, создав (символическую) связь (с именем, завершающимся суффиксом `.dvi`) с устройством `/dev/fd/0`, тем самым, заставив команду `dvilj2p` читать из стандартного входного потока.

Единственная оставшаяся проблема состоит в том, что мы не можем создавать временную связь в каталоге `/tmp`. Символьные связи принадлежат пользователю и группе `bin`. Фильтр же работает от имени пользователя `daemon`. А у каталога `/tmp` установлен sticky bit. Фильтр сможет создать связь, но не сможет почистить за собой и удалить ее, поскольку связь будет принадлежать другому пользователю.

Вместо этого, фильтр будет создавать символическую связь в текущем рабочем каталоге, которым является каталог спулинга (задаваемый характеристикой `sd` в файле `/etc/printcap`). Это отличное место для выполнения фильтрами своих действий, особенно потому, что (иногда) в каталоге спулинга места больше, чем в `/tmp`.

Вот, наконец, и сам фильтр:

    #!/bin/sh
    #
    #  hpdf - Печать данных DVI на принтере HP/PCL
    #  Установлен в /usr/local/libexec/hpdf

    PATH=/usr/local/bin:$PATH; export PATH

    #
    #  Определяем функцию для удаления временных файлов. Они существуют
    #  в текущем каталоге - в каталоге спулинга для принтера.
    #
    cleanup() {
       rm -f hpdf$$.dvi
    }

    #
    #  Определяем функцию для обработки критических ошибок: напечатать заданное
    #  сообщение и выйти с кодом 2. Код выхода 2 сообщает системе LPD, что не
    #  надо повторно пытаться печатать задание.
    #
    fatal() {
        echo "$@" 1>&2
        cleanup
        exit 2
    }

    #
    #  Если пользователь удаляет задание, система LPD будет посылать сигнал SIGINT,
    #  поэтому перехватываем SIGINT (и пару других сигналов), чтобы убрать за собой.
    #
    trap cleanup 1 2 15

    #
    #  Гарантируем, что не конфликтуем с существующими файлами.
    #
    cleanup

    #
    #  Связываем входной файл DVI со стандартным входным потоком (файлом для печати).
    #
    ln -s /dev/fd/0 hpdf$$.dvi || fatal "Cannot symlink /dev/fd/0"

    #
    #  Заменяем LF = CR+LF
    #
    printf "\033&k2G" || fatal "Cannot initialize printer"

    #
    #  Преобразуем и печатаем. Значение, возвращаемое программой dvilj2p, не надежно,
    #  так что мы его игнорируем.
    #
    dvilj2p -M1 -q -e- dfhp$$.dvi

    #
    #  Убираем за собой и завершаем работу
    #
    cleanup
    exit 0

##### 9.4.1.4.5. Автоматизированное преобразование: альтернатива фильтрам преобразования

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

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

В наборе портов FreeBSD есть текстовый фильтр, выполняющий автоматическое преобразование; это `apsfilter`. Он может выявлять обычный текст, PostScript и файлы DVI, выполнять соответствующие преобразования и печатать результат.

#### 9.4.1.5. Выходные фильтры

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

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

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

- Система LPD не передает выходному фильтру имя пользователя или хоста, так что этот фильтр не предназначен для учета использования принтера. Фактически, он получает всего два аргумента:

  `имя-фильтра` -w`ширина` -l`длина`

  Где `ширина` берется из характеристики `pw`, а `длина` -- из характеристики `pl` для соответствующего принтера.

Не соблазняйтесь простотой выходного фильтра. Если вы хотите, чтобы каждый файл в задании начинал печататься с новой страницы, выходной фильтр не поможет. Используйте текстовый фильтр (также известный как входной); см. раздел Установка текстового фильтра. Более того, выходной фильтр, фактически, -- более сложный, поскольку он должен проверять посылаемый ему поток байтов в поисках специальных символов-флагов и посылать себе сигналы от имени системы LPD.

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

На одном принтере система LPD позволяет совместно с выходным использовать текстовый или другие фильтры. В таких случаях, система LPD будет запускать выходной фильтр только для печати начальной страницы (см. раздел Начальные страницы). Система LPD затем предполагает, что выходной фильтр остановится, посылая ему два байта: ASCII 031 и ASCII 001. Когда выходной фильтр видит эти два байта (031, 001), он должен остановиться, посылая себе сигнал `SIGSTOP`. Когда система LPD закончит выполнение остальных фильтров, она перезапускает выходной фильтр, посылая ему сигнал `SIGCONT`.

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

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

#### 9.4.1.6. `lpf`: текстовый фильтр

Программа `/usr/libexec/lpr/lpf`, поставляемая в составе двоичного дистрибутива FreeBSD, представляет собой текстовый (входной) фильтр, который может печатать с отступом (если задание послано командой `lpr -i`), пропускать все символы на печать (если задание послано командой `lpr -l`), настраивать позицию печати при получении в задании символов забоя и табуляции, а также учитывать количество напечатанных страниц. Она может также использоваться как выходной фильтр.

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

Чтобы программа `lpf` корректно выполняла учет страниц, ей необходимо указать корректные значения характеристик `pw` и `pl` в файле `/etc/printcap`. Она использует эти значения для определения того, сколько текста может поместиться на странице и сколько страниц было в задании пользователя. Подробнее об учете использования принтера см. в разделе Учет использования принтера.

### 9.4.2. Начальные страницы

При наличии множества пользователей, использующих различные принтеры, вероятно, можно считать начальные страницы неизбежным злом.

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

Система LPD может выдавать заголовочные страницы для ваших распечаток автоматически, если ваш принтер может непосредственно печатать обычный текст. Если используется PostScript-принтер, потребуется внешняя программа для генерации начальной страницы; см. Начальные страницы на PostScript-принтерах.

#### 9.4.2.1. Включение выдачи начальных страниц

В разделе Простая настройка принтера мы отключили выдачу начальных страниц, задав характеристику `sh` (что означает ''suppress header'') в файле `/etc/printcap`. Для включения выдачи начальных страниц на принтер, просто удалите характеристику `sh`.

Кажется слишком просто, правда?

Вы правы. Может потребоваться задать выходной фильтр для посылки строк инициализации на принтер. Вот пример выходного фильтра для Hewlett Packard PCL-совместимых принтеров:

    #!/bin/sh
    #
    #  hpof - Выходной фильтр для Hewlett Packard PCL-совместимых принтеров
    #  Установлен в /usr/local/libexec/hpof

    printf "\033&k2G" || exit 2
    exec /usr/libexec/lpr/lpf

Задайте полное имя выходного фильтра в качестве значения характеристики `of`. Подробнее об этом см. в разделе Выходные фильтры.

Вот пример файла `/etc/printcap` для принтера `teak`, который мы представили ранее; мы включили выдачу начальных страниц и добавили показанный выше выходной фильтр:

    #
    #  /etc/printcap для хоста orchid
    #
    teak|hp|laserjet|Hewlett Packard LaserJet 3Si:\
            :lp=/dev/lpt0:sd=/var/spool/lpd/teak:mx#0:\
            :if=/usr/local/libexec/hpif:\
            :vf=/usr/local/libexec/hpvf:\
            :of=/usr/local/libexec/hpof:

Теперь, когда пользователи выдают задания на принтер `teak`, они получают начальную страницу с каждым заданием. Если пользователи хотят тратить время на поиск своих распечаток, они могут подавить вывод начальных страниц, посылая задание с опцией `lpr -h`; другие опции lpr(1) см. в разделе Опции начальных страниц.

> Замечание: Система LPD выдает символ прогона страницы (form feed) после начальной страницы. Если ваш принтер использует другой символ или последовательность символов для выброса напечатанной страницы, укажите их в качестве значения характеристики `ff` в файле `/etc/printcap`.

#### 9.4.2.2. Управление начальными страницами

Включая выдачу начальных страниц, система LPD будет выдавать длинный длинный заголовок, целую страницу с большими буквами, идентифицирующими пользователя, хост и задание. Ниже представлен пример (kelly напечатала задание по имени outline с хоста `rose`):

          k                   ll       ll
          k                    l        l
          k                    l        l
          k   k     eeee       l        l     y    y
          k  k     e    e      l        l     y    y
          k k      eeeeee      l        l     y    y
          kk k     e           l        l     y    y
          k   k    e    e      l        l     y   yy
          k    k    eeee      lll      lll     yyy y
                                                   y
                                              y    y
                                               yyyy

                                       ll
                              t         l        i
                              t         l
           oooo    u    u   ttttt       l       ii     n nnn     eeee
          o    o   u    u     t         l        i     nn   n   e    e
          o    o   u    u     t         l        i     n    n   eeeeee
          o    o   u    u     t         l        i     n    n   e
          o    o   u   uu     t  t      l        i     n    n   e    e
           oooo     uuu u      tt      lll      iii    n    n    eeee

          r rrr     oooo     ssss     eeee
          rr   r   o    o   s    s   e    e
          r        o    o    ss      eeeeee
          r        o    o      ss    e
          r        o    o   s    s   e    e
          r         oooo     ssss     eeee

                                                  Job:  outline
                                                  Date: Sun Sep 17 11:04:58 1995

Система LPD добавляет прогон страницы после этого текста, чтобы задание начиналось с новой страницы (если только вы не указали характеристику `sf` (suppress form feeds) в записи соответствующего принтера в файле `/etc/printcap`).

Если вы предпочитаете, чтобы система LPD создавала короткий заголовок, укажите характеристику `sb` (short banner) в файле `/etc/printcap`. Начальная страница будет иметь следующий вид:

    rose:kelly  Job: outline  Date: Sun Sep 17 11:07:51 1995

Также по умолчанию система LPD печатает начальную страницу перед заданием. Для изменения порядка на обратный, укажите характеристику `hl` (header last) в файле `/etc/printcap`.

#### 9.4.2.3. Учет начальных страниц

Использование встроенных начальных страниц системы LPD порождает определенную парадигму учета использования принтера: начальные страницы пользователи не должны оплачивать.

Почему?

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

Также недостаточно, чтобы каждый из фильтров генерировал собственные начальные страницы (и, тем самым, мог их учитывать). Если пользователи захотят отказаться от выдачи начальных страниц и укажут опцию `lpr -h`, они все равно их получат, и будут вынуждены оплатить, поскольку система LPD не передает информации о наличии опции `-h` ни одному из этих фильтров.

Итак, что же вы можете сделать?

Вы можете:

- Принять парадигму системы LPD и сделать начальные страницы бесплатными.

- Установить альтернативную систему вместо LPD, такую как LPRng. В разделе Альтернативы стандартному спулеру представлена дополнительная информация о других системах спулинга, которые можно использовать вместо LPD.

- Написать умный выходной фильтр. Обычно выходной фильтр не предназначен для выполнения чего-то кроме инициализации принтера и простых преобразований символов. Он подходит для начальных страниц и заданий с обычным текстом (когда нет текстового (входного) фильтра). Но, если есть текстовый фильтр для заданий с обычным текстом, то система LPD будет запускать выходной фильтр только для начальных страниц. И выходной фильтр может анализировать текст начальной страницы, которую генерирует система LPD, чтобы определить, на счет какого пользователя и хоста отнести начальную страницу. Единственная проблема этого метода в том, что выходной фильтр все равно не знает, какой учетный файл использовать (ему не передают имя файла, заданное в качестве значения характеристики `af`), но при наличии хорошо известного учетного файла, его имя можно явно указать в выходном фильтре. Для упрощения этапа анализа задайте характеристику `sh` (short header) в файле `/etc/printcap`. Повторимся, что это может оказаться слишком сложным, и пользователи, несомненно, больше оценят великодушного системного администратора, который сделает начальные страницы бесплатными.

#### 9.4.2.4. Начальные страницы на PostScript-принтерах

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

Один очевидный способ получить начальные страницы -- заставить каждый фильтр преобразования и текстовый фильтр генерировать начальную страницу. Эти фильтры должны использовать аргументы имя пользователя и хост для генерации соответствующей начальной страницы. Недостаток этого метода состоит в том, что пользователи будут всегда получать начальные страницы, даже если будут посылать задания с помощью команды `lpr -h`.

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

    #!/bin/sh
    #
    #  make-ps-header - выдать начальную страницу на языке PostScript в stdout
    #  Установлен в /usr/local/libexec/make-ps-header
    #

    #
    #  Это единицы измерения PostScript (72 на дюйм). Измените значения для A4 или
    #  другого используемого формата бумаги:
    #
    page_width=612
    page_height=792
    border=72

    #
    #  Проверяем аргументы
    #
    if [ $# -ne 3 ]; then
        echo "Usage: `basename $0` <user> <host> <job>" 1>&2
        exit 1
    fi

    #
    #  Сохраняем значения в переменных, в основном, для упрощения понимания
    #  последующего PostScript-кода.
    #
    user=$1
    host=$2
    job=$3
    date=`date`

    #
    #  Посылаем PostScript-код в stdout.
    #
    exec cat <<EOF
    %!PS

    %
    %  Гарантируем, что не будем влиять на следующее далее задание пользователя
    %
    save

    %
    %  Делаем тонкую некрасивую рамку по краям бумаги.
    %
    $border $border moveto
    $page_width $border 2 mul sub 0 rlineto
    0 $page_height $border 2 mul sub rlineto
    currentscreen 3 -1 roll pop 100 3 1 roll setscreen
    $border 2 mul $page_width sub 0 rlineto closepath
    0.8 setgray 10 setlinewidth stroke 0 setgray

    %
    %  Выдаем регистрационное имя пользователя, красивыми, большими и рельефными буквами
    %
    /Helvetica-Bold findfont 64 scalefont setfont
    $page_width ($user) stringwidth pop sub 2 div $page_height 200 sub moveto
    ($user) show

    %
    %  Теперь выдаем всякие детали
    %
    /Helvetica findfont 14 scalefont setfont
    /y 200 def
    [ (Job:) (Host:) (Date:) ] {
    200 y moveto show /y y 18 sub def }
    forall

    /Helvetica-Bold findfont 14 scalefont setfont
    /y 200 def
    [ ($job) ($host) ($date) ] {
            270 y moveto show /y y 18 sub def
    } forall

    %
    % Вот и все
    %
    restore
    showpage
    EOF

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

    #!/bin/sh
    #
    #  psdf - фильтр преобразования DVI в PostScript
    #  Установлен в /usr/local/libexec/psdf
    #
    #  Вызывается системой lpd при выполнении пользователем команды lpr -d
    #

    orig_args="$@"

    fail() {
        echo "$@" 1>&2
        exit 2
    }

    while getopts "x:y:n:h:" option; do
        case $option in
            x|y)  ;; # Ignore
            n)    login=$OPTARG ;;
            h)    host=$OPTARG ;;
            *)    echo "LPD started `basename $0` wrong." 1>&2
                  exit 2
                  ;;
        esac
    done

    [ "$login" ] || fail "No login name"
    [ "$host" ] || fail "No host name"

    ( /usr/local/libexec/make-ps-header $login $host "DVI File"
      /usr/local/bin/dvips -f ) | eval /usr/local/libexec/lprps $orig_args

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

Как уже упоминалось, представленная выше схема хотя и достаточно проста, но не позволяет учесть опцию ''подавить вывод начальной страницы'' (опция `-h`) команды `lpr`. Если пользователи хотят сберечь деревья (или несколько копеек, если вы берете деньги и за начальные страницы), они не смогут этого сделать, поскольку каждый фильтр будет выдавать начальную страницу для каждого задания.

Чтобы позволить пользователям отключать выдачу начальной страницы для отдельного задания, надо будет использовать прием, представленный в разделе Учет начальных страниц: написать выходной фильтр, который анализирует сгенерированную системой LPD начальную страницу и выдает ее PostScript-версию. Если пользователь посылает задание командой `lpr -h`, система LPD не будет генерировать начальную страницу, как и ваш выходной фильтр. В противном случае, ваш выходной фильтр будет читать текст, полученный от системы LPD, и посылать на принтер соответствующий PostScript-код для начальной страницы.

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

### 9.4.3. Печать по сети

FreeBSD поддерживает печать по сети: посылку заданий на удаленные принтеры. Печатью по сети обычно называют две разные ситуации:

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

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

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

  - Он может поддерживать получение потока данных по сети. В этом случае, вы ''подключаете'' принтер к одному из хостов в сети, делая этот хост ответственным за поддержку очередей заданий и их посылку на принтер. В разделе Принтеры с сетевыми интерфейсами представлен ряд советов по установке таких принтеров.

#### 9.4.3.1. Принтеры, установленные на удаленных хостах

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

Для обеспечения такого рода удаленной печати, сначала установите принтер на одном хосте, хосте принтера, с помощью процедуры, описанной в разделе Простая настройка принтера. Выполните любые необходимые дополнительные настройки, как описано в разделе Расширенная настройка принтера. Не забудьте протестировать принтер и убедиться, обеспечивает ли он заданные возможности системы LPD. Также проверьте, что локальный хост имеет право использовать службу LPD на удаленном хосте (см. раздел Ограничение приема заданий с удаленных хостов).

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

> Подсказка: Если вы используете Hewlett Packard Laserjet, то при задании принтеру имени `text` будет автоматически выполняться преобразование символа LF в последовательность CRLF, так что, сценарий `hpif` не понадобится.

Затем, на других хостах, для которых вы хотите обеспечить доступ к принтеру, создайте запись в их файлах `/etc/printcap` со следующими компонентами:

1. Дайте записи любое подходящее имя. Для простоты, однако, имеет смысл задавать такое же имя и псевдонимы, как и на хосте принтера.

2. Характеристику `lp` оставьте пустой, указав это явно (`:lp=:`).

3. Создайте каталог спулинга и укажите его местонахождение в характеристике `sd`. Система LPD будет сохранять задания в нем, прежде чем они будут посланы на хост принтера.

4. Укажите имя хоста принтера в качестве значения характеристики `rm`.

5. Укажите имя принтера на хосте принтера в качестве значения характеристики `rp`.

Вот и все. Не нужно перечислять фильтры преобразования, размеры страницы и вообще ничего больше в файле `/etc/printcap`.

Рассмотрим пример. На хосте `rose` есть два принтера, `bamboo` и `rattan`. Мы позволим пользователям хоста `orchid` печатать на эти принтеры. Вот файл `/etc/printcap` для хоста `orchid` (из раздела Включение выдачи начальных страниц). В нем уже есть запись для принтера `teak`; мы добавили две записи для принтеров на хосте `rose`:

    #
    #  /etc/printcap для хоста orchid - добавлены (удаленные) принтеры на rose
    #

    #
    #  teak - локальный принтер; он подключен непосредственно к orchid:
    #
    teak|hp|laserjet|Hewlett Packard LaserJet 3Si:\
            :lp=/dev/lpt0:sd=/var/spool/lpd/teak:mx#0:\
            :if=/usr/local/libexec/ifhp:\
            :vf=/usr/local/libexec/vfhp:\
            :of=/usr/local/libexec/ofhp:

    #
    #  rattan подключен к rose; посылать задания для rattan на хост rose:
    #
    rattan|line|diablo|lp|Diablo 630 Line Printer:\
            :lp=:rm=rose:rp=rattan:sd=/var/spool/lpd/rattan:

    #
    #  bamboo тоже подключен к rose:
    #
    bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\
            :lp=:rm=rose:rp=bamboo:sd=/var/spool/lpd/bamboo:

Затем достаточно только создать каталоги спулинга на `orchid`:

    # mkdir -p /var/spool/lpd/rattan /var/spool/lpd/bamboo
    # chmod 770 /var/spool/lpd/rattan /var/spool/lpd/bamboo
    # chown daemon:daemon /var/spool/lpd/rattan /var/spool/lpd/bamboo

Теперь пользователи хоста `orchid` могут печатать на принтеры `rattan` и `bamboo`. Если, например, пользователь на `orchid` выполнит команду

    % lpr -P bamboo -d sushi-review.dvi

система LPD на `orchid` будет копировать задание в каталог спулинга `/var/spool/lpd/bamboo` и учтет, что печатается задание DVI. Как только на хосте `rose` появится место в каталоге спулинга принтера `bamboo`, две системы LPD передадут файл на хост `rose`. Файл будет ждать в очереди на `rose` пока, наконец, не будет напечатан. Он будет преобразован из формата DVI в PostScript (поскольку `bamboo` является PostScript-принтером) на хосте `rose`.

#### 9.4.3.2. Принтеры с сетевыми интерфейсами

Часто при покупке сетевой карты для принтера можно приобрести две версии: эмулирующую спулер (более дорогая версия) или просто позволяющую принимать на принтер данные так, как если бы использовался последовательный или параллельный порт (более дешевая версия). В этом разделе описано, как использовать более дешёвую версию. Использование более дорогой версии описано в предыдущем разделе Принтеры, установленные на удаленных хостах.

Формат файла `/etc/printcap` позволяет указывать, какой последовательный или параллельный интерфейс использовать, и (при использовании последовательного интерфейса), какую установить скорость, использовать ли управление потоком, размер отступов для табуляций, преобразование символов новой строки и другие параметры. Но нет способа указать подключение к принтеру, прослушивающему TCP/IP или другой сетевой порт.

Для посылки данных на подключенный к сети принтер, надо разработать программу взаимодействия, которую могут вызывать текстовый фильтр и фильтры преобразований. Вот один из примеров: скрипт `netprint` принимает все данные со стандартного входного потока и посылает их на принтер, подключенный к сети. Мы указываем имя хоста принтера в качестве первого аргумента, а номер порта, к которому надо подключаться -- в качестве второго аргумента команды `netprint`. Учтите, что поддерживается только одностороннее взаимодействие (с ОС FreeBSD на принтер); многие сетевые принтеры поддерживают двустороннее взаимодействие, и вы можете захотеть его использовать (для получения состояния принтера, учета и т.п.).

    #!/usr/bin/perl
    #
    #  netprint - Текстовый фильтр для принтера, подключенного к сети
    #  Установлен в /usr/local/libexec/netprint
    #
    $#ARGV eq 1 || die "Usage: $0 <printer-hostname> <port-number>";

    $printer_host = $ARGV[0];
    $printer_port = $ARGV[1];

    require 'sys/socket.ph';

    ($ignore, $ignore, $protocol) = getprotobyname('tcp');
    ($ignore, $ignore, $ignore, $ignore, $address)
        = gethostbyname($printer_host);

    $sockaddr = pack('S n a4 x8', &AF_INET, $printer_port, $address);

    socket(PRINTER, &PF_INET, &SOCK_STREAM, $protocol)
        || die "Can't create TCP/IP stream socket: $!";
    connect(PRINTER, $sockaddr) || die "Can't contact $printer_host: $!";
    while (<STDIN>) { print PRINTER; }
    exit 0;

Затем можно использовать этот сценарий в различных фильтрах. Пусть у нас есть строчный принтер Diablo 750-N, подключенный к сети. Принтер принимает данные на печать через порт 5100. Имя хоста для принтера -- scrivener. Вот текстовый фильтр для этого принтера:

    #!/bin/sh
    #
    #  diablo-if-net - Текстовый фильтр для принтера Diablo `scrivener',
    #  прослушивающего порт 5100. Установлен в /usr/local/libexec/diablo-if-net
    #
    exec /usr/libexec/lpr/lpf "$@" | /usr/local/libexec/netprint scrivener 5100

### 9.4.4. Ограничение использования принтера

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

#### 9.4.4.1. Ограничение количества копий

Система LPD позволяет пользователям легко печатать несколько копий файла. Пользователи могут печатать задания с помощью команды `lpr -#5` (например) и получать пять копий каждого файла в задании. Хорошо это или нет -- решать вам.

Если вы считаете, что многочисленные копии только изнашивают ваши принтеры, можете отключить опцию `-#` команды lpr(1), добавив характеристику `sc` в файл `/etc/printcap`. Когда пользователи пошлют задания с опцией `-#`, они увидят:

    lpr: multiple copies are not allowed

Учтите, что если вы настроили удаленный доступ к принтеру (см. раздел Принтеры, установленные на удаленных хостах), необходимо задать характеристику `sc` также и в файлах `/etc/printcap` удаленных хостов, иначе пользователи все равно смогут посылать задания с несколькими копиями с других хостов.

Рассмотрим пример. Вот файл `/etc/printcap` для хоста `rose`. Принтер `rattan` вполне надежен, поэтому мы разрешим печатать на него несколько копий, но лазерный принтер `bamboo` несколько более изношен, поэтому мы отключим для него печать нескольких копий, добавив характеристику `sc`:

    #
    #  /etc/printcap для хоста rose - запрещает печать нескольких копий на bamboo
    #
    rattan|line|diablo|lp|Diablo 630 Line Printer:\
            :sh:sd=/var/spool/lpd/rattan:\
            :lp=/dev/lpt0:\
            :if=/usr/local/libexec/if-simple:

    bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\
            :sh:sd=/var/spool/lpd/bamboo:sc:\
            :lp=/dev/ttyd5:ms#-parenb cs8 clocal crtscts:rw:\
            :if=/usr/local/libexec/psif:\
            :df=/usr/local/libexec/psdf:

Теперь нам также нужно добавить характеристику `sc` в файле `/etc/printcap` на хосте `orchid` (и раз уж мы его меняем, давайте отключим печать нескольких копий для принтера `teak`):

    #
    #  /etc/printcap для хоста orchid - отключена печать нескольких копий на
    #  локальном принтере teak и на удаленном принтере bamboo
    teak|hp|laserjet|Hewlett Packard LaserJet 3Si:\
            :lp=/dev/lpt0:sd=/var/spool/lpd/teak:mx#0:sc:\
            :if=/usr/local/libexec/ifhp:\
            :vf=/usr/local/libexec/vfhp:\
            :of=/usr/local/libexec/ofhp:

    rattan|line|diablo|lp|Diablo 630 Line Printer:\
            :lp=:rm=rose:rp=rattan:sd=/var/spool/lpd/rattan:

    bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\
            :lp=:rm=rose:rp=bamboo:sd=/var/spool/lpd/bamboo:sc:

С помощью характеристики `sc` мы предотвращаем использование команды `lpr -#`, но это не мешает пользователям просто выполнить команду lpr(1) несколько раз или просто послать один и тот же файл несколько раз в одном задании следующим образом:

    % lpr forsale.sign forsale.sign forsale.sign forsale.sign forsale.sign

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

#### 9.4.4.2. Ограничение доступа к принтерам

Вы можете управлять тем, кто и на какие принтеры может печатать, с помощью механизма групп UNIX и характеристики `rg` в файле `/etc/printcap`. Просто поместите пользователей, которым необходимо предоставить доступ к принтеру, в определенную группу, a затем укажите эту группу в качестве значения характеристики `rg`.

Пользователи, не входящие в эту группу (включая `root`) будут получать уведомление “`lpr: Not a member of the restricted group`” при попытке печатать на контролируемый принтер.

Как и в случае с характеристикой `sc` (подавить выдачу нескольких копий), при необходимости, надо указывать характеристику `rg` и на удаленных хостах, имеющих доступ к вашим принтерам (см. раздел Принтеры, установленные на удаленных хостах).

Например, давайте разрешим всем обращаться к принтеру `rattan`, но только пользователи группы `artists` смогут использовать принтер `bamboo`. Вот знакомый уже файл `/etc/printcap` для хоста `rose`:

    #
    #  /etc/printcap для хоста rose - ограничение группы для bamboo
    #
    rattan|line|diablo|lp|Diablo 630 Line Printer:\
            :sh:sd=/var/spool/lpd/rattan:\
            :lp=/dev/lpt0:\
            :if=/usr/local/libexec/if-simple:

    bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\
            :sh:sd=/var/spool/lpd/bamboo:sc:rg=artists:\
            :lp=/dev/ttyd5:ms#-parenb cs8 clocal crtscts:rw:\
            :if=/usr/local/libexec/psif:\
            :df=/usr/local/libexec/psdf:

Давайте не будем менять другой рассматриваемый файл `/etc/printcap` (для хоста `orchid`). Конечно, в результате, любой пользователь `orchid` может печатать на `bamboo`. Возможно, на хосте `orchid` учетных записей и так немного, и вы хотите, чтобы все они имели доступ к принтеру. Или нет.

> Замечание: Для принтера может быть только одна ограниченная группа.

#### 9.4.4.3. Контроль размеров посылаемых заданий

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

Система LPD ограничить максимально допустимый размер файла в задании с помощью характеристики `mx`. Размер задается в блоках, размер которых, `BUFSIZ`, составляет 1024 байта. Если задать этой характеристике значение ноль, размер файла ограничиваться не будет; однако, если характеристика `mx` вообще не задана, то будет использоваться стандартное ограничение -- 1000 блоков.

> Замечание: Ограничение применяется к файлам в задании, а не к общему размеру задания.

Система LPD не откажется печатать файл больше максимально допустимого для принтера размера. Вместо этого, она поставит в очередь часть файла до заданного предела, и она будет напечатана. Остальное не будет напечатано. Правильность такого поведения не бесспорна.

Давайте установим ограничения для принтеров из наших примеров, `rattan` и `bamboo`. Поскольку PostScript-файлы этих художников обычно бывают весьма большими, мы ограничим их размер пятью мегабайтами. Мы не будем ограничивать использование обычного текстового строчного принтера:

    #
    #  /etc/printcap для хоста rose
    #

    #
    #  Без ограничения на размер задания:
    #
    rattan|line|diablo|lp|Diablo 630 Line Printer:\
            :sh:mx#0:sd=/var/spool/lpd/rattan:\
            :lp=/dev/lpt0:\
            :if=/usr/local/libexec/if-simple:

    #
    #  Размер файла - не более пяти мегабайт:
    #
    bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\
            :sh:sd=/var/spool/lpd/bamboo:sc:rg=artists:mx#5000:\
            :lp=/dev/ttyd5:ms#-parenb cs8 clocal crtscts:rw:\
            :if=/usr/local/libexec/psif:\
            :df=/usr/local/libexec/psdf:

Опять таки, ограничения применяются только для локальных пользователей. Если вы настроили удаленный доступ к принтерам, для удаленных пользователей эти ограничения не действуют. Надо задать характеристику `mx` и в файлах `/etc/printcap` удаленных хостов. Более детальную информацию по удаленной печати см. в разделе Принтеры, установленные на удаленных хостах.

Есть еще один специализированный способ ограничить размер заданий печати с удаленных принтеров; см. раздел Ограничение печати заданий с удаленных хостов.

#### 9.4.4.4. Ограничение печати заданий с удаленных хостов

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

Ограничения хостов

  Вы можете управлять тем, с каких удаленных хостов локальная система LPD принимает запросы, с помощью файлов `/etc/hosts.equiv` и `/etc/hosts.lpd`. Система LPD проверяет, поступает ли входящий запрос с хоста, указанного в одном из этих файлов. Если нет, система LPD отвергает запрос.

  Формат этих файлов простой: по одному имени хоста в строке. Учтите, что файл `/etc/hosts.equiv` также используется протоколом ruserok(3) и влияет на программы rsh(1) и rcp(1), так что, будьте внимательны.

  Например, вот файл `/etc/hosts.lpd` для хоста `rose`:

      orchid
      violet
      madrigal.fishbaum.de

  Это означает, что хост `rose` будет принимать запросы с хостов `orchid`, `violet` и `madrigal.fishbaum.de`. Если любой другой хост попытается обратиться к системе LPD хоста `rose`, его задание будет отвергнуто.

Ограничения размера

  Вы можете управлять тем, сколько свободного места должно оставаться в файловой системе, в которой находится каталог спулинга. Создайте файл с именем `minfree` в каталоге спулинга для локального принтера. Вставьте в этот файл число, задающее, сколько блоков диска (по 512 байтов) должно быть свободными, чтобы удаленное задание было принято.

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

  Например, давайте добавим файл `minfree` для принтера `bamboo`. Найдем в файле `/etc/printcap` каталог спулинга для этого принтера; вот запись для принтера `bamboo`:

      bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\
              :sh:sd=/var/spool/lpd/bamboo:sc:rg=artists:mx#5000:\
              :lp=/dev/ttyd5:ms#-parenb cs8 clocal crtscts:rw:mx#5000:\
              :if=/usr/local/libexec/psif:\
              :df=/usr/local/libexec/psdf:

  Каталог спулинга задается характеристикой `sd`. Укажем, что в файловой системе должно быть три мегабайта (что составляет 6144 блоков диска) свободного места, чтобы система LPD принимала удаленные задания:

      # echo 6144 > /var/spool/lpd/bamboo/minfree

Ограничения пользователей

  Вы можете управлять тем, какие удаленные пользователи смогут печатать на локальные принтеры, задавая характеристику `rs` в файле `/etc/printcap`. Когда характеристика `rs` указана в записи для локально подключенного принтера, система LPD будет принимать задания с удаленных хостов, если пользователь, посылающий задание, также имеет учетную запись с тем же именем на локальном хосте. В противном случае, система LPD отвергает задание.

  Эта возможность особенно полезна в среде, где есть, например, несколько отделов, совместно использующих сеть, и некоторые пользователи могут переходить из отдела в отдел. Если дать им учетные записи в системах, они смогут использовать принтеры из систем в своих отделах. Если вы хотели бы позволить им использовать только принтеры, но не остальные ресурсы вашего компьютера, можно дать им ''формальные'' учетные записи, без начального каталога и с бесполезным начальным командным интерпретатором вроде `/usr/bin/false`.

### 9.4.5. Учет использования принтера

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

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

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

Обычно есть два способа выполнения учета:

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

- Постоянный учет используется реже, вероятно, потому, что сложнее в реализации. Этот метод требует от фильтров выставлять пользователям суммы за распечатки сразу после использования принтеров. Как и проверка дисковых квот, этот учет выполняется немедленно. Вы можете не давать пользователям печатать, если баланс на их счету стал отрицательным, а также предоставить им способ проверить и изменить свои ''квоты печати''. Но этот метод требует поддержки базы данных для отслеживания пользователей и квот.

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

#### 9.4.5.1. Простая система учета использования принтера

В составе FreeBSD поставляется две программы, которые можно сразу использовать для организации простой системы периодического учета. Речь идет о текстовом фильтре `lpf`, описанном в разделе lpf: текстовый фильтр, и о программе pac(8), обеспечивающей сбор и суммирование записей из учетных файлов принтеров.

Как уже упоминалось в разделе, посвященном фильтрам (Фильтры), система LPD при запуске текстового фильтра и фильтров преобразований передает им имя учетного файла в командной строке. Фильтры могут использовать соответствующий аргумент, чтобы определить, куда записывать учетную информацию. Имя этого файла берется из значения характеристики `af` в файле `/etc/printcap` и, если не заданно как абсолютное, интерпретируется относительно каталога спулинга.

Система LPD запускает `lpf` с аргументами ширины и длины страницы (которые берутся из характеристик `pw` и `pl`). Программа `lpf` использует эти аргументы для определения количества бумаги, которая будет использована. После посылки файла на принтер она вносит запись в учетный файл. Эти записи имеют следующий вид:

    2.00 rose:andy
    3.00 rose:kelly
    3.00 orchid:mary
    5.00 orchid:mary
    2.00 orchid:zhang

Следует использовать отдельный учетный файл для каждого принтера, поскольку программа `lpf` не реализует механизм блокирования файлов, и два экземпляра `lpf` могут повредить записи друг друга, если записывают одновременно в один и тот же файл. Простой способ выделить отдельный учетный файл для каждого принтера -- использовать характеристику `af=acct` в файле `/etc/printcap`. Тогда каждый учетный файл окажется в каталоге спулинга соответствующего принтера и будет назван `acct`.

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

      Login           pages/feet   runs    price
    orchid:kelly                5.00    1   $  0.10
    orchid:mary                31.00    3   $  0.62
    orchid:zhang                9.00    1   $  0.18
    rose:andy                   2.00    1   $  0.04
    rose:kelly                177.00  104   $  3.54
    rose:mary                  87.00   32   $  1.74
    rose:root                  26.00   12   $  0.52

    total                     337.00  154   $  6.74

Команда pac(8) принимает следующие аргументы:

`-P`принтер``

  По какому `принтеру` подсчитывать итоговые суммы. Эта опция работает, только если в качестве значения характеристики `af` в файле `/etc/printcap` указано абсолютное имя.

`-c`

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

`-m`

  Игнорировать имя хоста в учетных файлах. При указании этой опции, пользователь `smith` на хосте `alpha` считается тем же, что и пользователь `smith` на хосте `gamma`. Обычно эти пользователи считаются разными.

`-p`стоимость``

  Вычислять суммы из расчета `стоимость` долларов за страницу или за фут, вместо использования значения характеристики `pc` в файле `/etc/printcap`, или двух центов (как принято по умолчанию). Можно задавать `стоимость` как число с плавающей запятой.

`-r`

  Изменить порядок сортировки.

`-s`

  Создать итоговый учетный файл и очистить учетный файл.

`имя` `...`

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

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

      Login           pages/feet   runs    price
    andy                        2.00    1   $  0.04
    kelly                     182.00  105   $  3.64
    mary                      118.00   35   $  2.36
    root                       26.00   12   $  0.52
    zhang                       9.00    1   $  0.18

    total                     337.00  154   $  6.74

Для получения сумм в долларах программа pac(8) использует значение характеристики `pc` в файле `/etc/printcap` (по умолчанию -- 200, или 2 цента за страницу). Укажите в качестве значения этой характеристики, в сотых долях цента, стоимость страницы или фута, исходя из которой вы хотите брать деньги за распечатки. Это значение можно переопределить при вызове команды pac(8) с помощью опции `-p`. Но при использовании опции `-p` стоимость надо указывать в долларах, а не в сотых долях цента. Например, команда

    # pac -p1.50

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

Наконец, при выполнении команды `pac -s` итоговая информация будет сохранена в итоговом учетном файле, имя которого строится как имя учетного файла принтера с суффиксом `_sum`. Затем учетный файл принтера очищается. Когда команда pac(8) выполняется повторно, она перечитывает итоговый файл для получения начальных сумм, а затем добавляет информацию из обычного учетного файла.

#### 9.4.5.2. Как можно подсчитать количество напечатанных страниц?

Для выполнения хоть отдаленно точного учета надо уметь определять, сколько бумаги использовано для печати задания. Это -- основная проблема учета использования принтеров.

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

Текстовый фильтр `lpf` (представленный в разделе lpf: текстовый фильтр) учитывает эти вещи при выполнении учета. Если вы пишете текстовый фильтр, который должен осуществлять учет, может иметь смысл просмотреть исходный код программы `lpf`.

Но как обрабатывать файлы других форматов?

Ну, для преобразования из DVI в формат LaserJet или из DVI в PostScript, можно в фильтре анализировать диагностические результаты команды `dvilj` или `dvips`, чтобы определить, сколько страниц было преобразовано. Может оказаться возможным применить этот прием и для других форматов файлов и программ преобразования.

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

Так что же делать?

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

Конечно, всегда можно поступить великодушно и не брать денег за распечатки.

## 9.5. Использование принтеров

В этом разделе описано, как использовать настроенные принтеры в ОС FreeBSD. Вот сводка команд пользовательского уровня:

lpr(1)

  Печать заданий

lpq(1)

  Проверка очередей принтеров

lprm(1)

  Удаление заданий из очередей принтеров

Есть также административная команда, lpc(8), описанная в разделе Администрирование принтеров, используемая для управления принтерами и их очередями.

Все три команды, lpr(1), lprm(1) и lpq(1), поддерживают опцию `-P `имя-принтера``, позволяющую указать, с каким принтером/очередью из указанных в файле `/etc/printcap` работать. Это позволяет посылать, удалять и проверять задания на разных принтерах. Если вы не используете опцию `-P`, эти команды используют принтер, указанный в качестве значения переменной среды `PRINTER`. Наконец, если переменная среды `PRINTER` не задана, эти команды по умолчанию направляются на принтер по имени `lp`.

Далее термин стандартный принтер означает принтер, указанный переменной среды `PRINTER` или принтер по имени `lp`, если переменная среды `PRINTER` не задана.

### 9.5.1. Задания печати

Для печати файлов, выполните команду:

    % lpr имя-файла ...

Эта команда печатает каждый из перечисленных файлов на стандартный принтер. Если файлы не указаны, команда lpr(1) читает данные для печати со стандартного входного потока. Например, следующая команда печатает некоторые важные системные файлы:

    % lpr /etc/host.conf /etc/hosts.equiv

Для выбора конкретного принтера, введите:

    % lpr -P имя-принтера имя-файла ...

Следующая команда печатает подробный листинг текущего каталога на принтере `rattan`:

    % ls -l | lpr -P rattan

Поскольку для команды lpr(1) файлы не указаны, команда `lpr` читает данные для печати из стандартного входного потока, который содержит результат выполнения команды `ls -l`.

Команда lpr(1) может также принимать множество опций для управления форматированием, применения преобразований, печати нескольких копий и т.д. Дополнительную информацию см. в разделе Опции печати.

### 9.5.2. Проверка заданий

При печати с помощью команды lpr(1), данные, которые надо напечатать, помещаются вместе в пакет, который называют ''заданием печати'', и посылаются системе спулинга LPD. Каждый принтер имеет очередь заданий, и ваше задание ждет в этой очереди вместе с другими вашими заданиями и заданиями других пользователей. Принтер печатает эти задания по принципу первым пришло, первым выполнено.

Для получения очереди стандартного принтера, введите команду lpq(1). Чтобы указать конкретный принтер, используйте опцию `-P`. Например, команда

    % lpq -P bamboo

показывает очередь для принтера по имени `bamboo`. Вот пример результатов выполнения команды `lpq`:

    bamboo is ready and printing
    Rank   Owner    Job  Files                              Total Size
    active kelly    9    /etc/host.conf, /etc/hosts.equiv   88 bytes
    2nd    kelly    10   (standard input)                   1635 bytes
    3rd    mary     11   ...                                78519 bytes

Показано, что в очереди `bamboo` есть три задания. Первое задание, посланное пользователем kelly, получило ''номер задания'' 9. Каждое задание для принтера получает уникальный номер задания. В большинстве случаев номер задания можно игнорировать, но он потребуется, если надо будет отменить задание; подробнее об этом см. в разделе Удаление заданий.

Задание номер 9 состоит из двух файлов; несколько файлов, указанных в командной строке lpr(1), считаются частью одного задания. Это задание является текущим активным (обратите внимание на слово `active` в столбце ''Rank''), т.е. принтер должен сейчас печатать это задание. Второе задание состоит из данных, передаваемых в качестве стандартного входного потока команде lpr(1). Третье задание послано пользователем `mary`; оно намного больше по объему. Полное имя файла, который печатается, слишком длинное и не помещается, поэтому команда lpq(1) просто выдает три точки.

Самая первая строка результатов команды lpq(1) тоже полезна: она говорит о том, что сейчас делает принтер (или, по крайней мере, что он делает по мнению системы LPD).

Команда lpq(1) также поддерживает опцию `-l` для генерации подробного длинного листинга. Вот пример результатов выполнения команды `lpq -l`:

    waiting for bamboo to become ready (offline ?)
    kelly: 1st                 [job 009rose]
           /etc/host.conf                    73 bytes
           /etc/hosts.equiv                  15 bytes

    kelly: 2nd                 [job 010rose]
           (standard input)                  1635 bytes

    mary: 3rd                                [job 011rose]
          /home/orchid/mary/research/venus/alpha-regio/mapping 78519 bytes

### 9.5.3. Удаление заданий

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

Для удаления задания со стандартного принтера сначала используйте команду lpq(1) для поиска номера задания. Затем введите команду:

    % lprm номер-задания

Для удаления задания с указанного принтера, задайте опцию `-P` option. Следующая команда удаляет задание номер 10 из очереди заданий принтера `bamboo`:

    % lprm -P bamboo 10

Для команды lprm(1) есть ряд сокращений:

lprm -

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

lprm `пользователь`

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

lprm

  Если в командной строке не указаны номер задания, имя пользователя, или указана опция `-`, команда lprm(1) удаляет текущее активное задание на стандартном принтере, если оно принадлежит вам. Суперпользователь может удалять любое активное задание.

Добавьте опцию `-P` для любого из перечисленных выше сокращений, чтобы работать с любым необходимым принтером вместо стандартного. Например, следующая команда удаляет все задания текущего пользователя из очереди принтера по имени `rattan`:

    % lprm -P rattan -

> Замечание: Если вы работаете в сетевой среде, команда lprm(1) позволит вам удалять задания только с хоста, с которого они были посланы, даже если тот же принтер доступен и с других хостов. Следующая последовательность команд демонстрирует это:

>     % lpr -P rattan myfile
>     % rlogin orchid
>     % lpq -P rattan
>     Rank   Owner      Job  Files                          Total Size
>     active seeyan      12    ...                           49123 bytes
>     2nd    kelly      13   myfile                         12 bytes
>     % lprm -P rattan 13
>     rose: Permission denied
>     % logout
>     % lprm -P rattan 13
>     dfA013rose dequeued
>     cfA013rose dequeued

### 9.5.4. Не только обычный текст: опции печати

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

#### 9.5.4.1. Опции форматирования и преобразования

Следующие опции команды lpr(1) управляют форматированием файлов в задании. Используйте эти опции, если задание содержит не простой текст или если вы хотите сформатировать простой текст с помощью утилиты pr(1).

Например, следующая команда печатает файл DVI (из системы верстки TeX) по имени `fish-report.dvi` на принтере `bamboo`:

    % lpr -P bamboo -d fish-report.dvi

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

> Замечание: Все эти опции, кроме `-p` и `-T`, требуют наличия установленных для целевого принтера фильтров преобразования. Например, опция `-d` требует фильтра преобразования DVI. Подробнее см. в разделе Фильтры преобразования.

`-c`

  Печать файлов cifplot.

`-d`

  Печать файлов DVI.

`-f`

  Печать текстовых файлов на языке FORTRAN.

`-g`

  Печать графиков.

`-i`число``

  Сдвинуть результат вправо на `число` столбцов; если `число` не указано, сдвиг выполняется на 8 столбцов. Эта опция работает только с определенными фильтрами преобразования.

  > Замечание: Не помещайте пробелы между `-i` и числом.

`-l`

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

`-n`

  Печать данных ditroff (device independent troff).

-p

  Форматировать обычный текст перед печатью утилитой pr(1). Подробнее см. pr(1).

`-T `заголовок``

  Использовать указанный `заголовок` в колонтитуле pr(1) вместо имени файла. Эта опция учитывается только при использовании вместе с опцией `-p`.

`-t`

  Печать данных troff.

`-v`

  Печать растровых данных.

Вот пример: следующая команда печатает красиво сформатированную версию справочного руководства по команде ls(1) на стандартный принтер:

    % zcat /usr/share/man/man1/ls.1.gz | troff -t -man | lpr -t

Команда zcat(1) распаковывает исходный код страницы справочного руководства ls(1) и передает его команде troff(1), которая форматирует его и выдает результат в формате GNU troff, передаваемый команде lpr(1), посылающей задание спулеру LPD. Поскольку мы использовали опцию `-t` команды lpr(1), спулер при печати задания будет преобразовывать результат GNU troff в формат, понятный стандартному принтеру.

#### 9.5.4.2. Опции обработки заданий

Следующие опции команды lpr(1) требуют от системы LPD специальной обработки задания:

-# `копий`

  Выдавать указанное количество `копий` каждого файла в задании вместо одной. Администратор может отключить эту опцию для уменьшения износа принтера и поощрения использования ксерокса. См. раздел Ограничение количества копий.

  В следующем примере на стандартный принтер печатается три копии файла `parser.c`, а затем -- три копии `parser.h`:

      % lpr -#3 parser.c parser.h

-m

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

-s

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

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

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

  > Замечание: Если вы печатаете на удаленный принтер, система LPD будет вынуждена, так или иначе, скопировать файлы с локального хоста на удаленный, поэтому опция `-s`сэкономит место только в локальном каталоге спулинга, но не в удаленном. Но, она все равно полезна.

-r

  Удалять файлы в задании после копирования в каталог спулинга или после печати, если указана опция `-s`. Будьте внимательны при использовании этой опции!

#### 9.5.4.3. Опции начальных страниц

Эти опции команды lpr(1) изменяют текст, который обычно выдается на начальной странице задания. Если выдача начальных страниц для целевого принтера отключена, эти опции не действуют. Информацию по настройке начальных страниц см. в разделе Начальные страницы.

-C `текст`

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

-J `текст`

  Заменить имя задания на начальной странице `текстом`. Имя задания обычно совпадает с именем первого файла в задании или имеет значение `stdin`, если печатается стандартный входной поток.

-h

  Не выдавать начальной страницы.

  > Замечание: В некоторых организациях эта опция может не действовать, что определяется способом генерации начальных страниц. Подробнее см. в разделе Начальные страницы.

### 9.5.5. Администрирование принтеров

Как администратор принтеров, вы должны их установить, настроить и протестировать. С помощью команды lpc(8) вы можете взаимодействовать с принтерами и другими способами. С помощью lpc(8) вы можете:

- Запускать и останавливать принтеры

- Включать и отключать их очереди

- Изменять порядок заданий в каждой очереди.

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

Если очередь отключена, ни один пользователь (кроме `root`) не может посылать задания на принтер. Во включенную очередь можно посылать задания. Принтер для отключенной очереди может быть запущен; при этом он будет продолжать печатать находящиеся в очереди задания, пока очередь не станет пустой.

В общем случае, для использования команды lpc(8) необходимо иметь привилегии `root`. Обычные пользователи могут использовать команду lpc(8) только для получения состояния принтера и перезапуска зависшего принтера.

Далее представлена сводка команд lpc(8). Большинство команд принимает аргумент `имя-принтера`, задающий, с каким принтером работать. Можно использовать значение `all` вместо `имени-принтера`, означающее все принтеры, перечисленные в файле `/etc/printcap`.

`abort `имя-принтера``

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

`clean `имя-принтера``

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

`disable `имя-принтера``

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

  Эта команда полезна при тестировании вновь установленного принтера или фильтра: отключаем очередь и посылаем задания как `root`. Другие пользователи не смогут посылать задания, пока вы не закончите тестирование и не включите очередь повторно командой `enable`.

`down `имя-принтера` `сообщение``

  Отключить принтер. Аналогична последовательности команд `disable` и `stop`. Указанное `сообщение` выдается как состояние принтера при проверке пользователем очереди принтера с помощью lpq(1) или запросе его состояния командой `lpc status`.

`enable `имя-принтера``

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

`help `имя-команды``

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

`restart `имя-принтера``

  Перезапустить принтер. Обычные пользователи могут использовать эту команду, если в результате неких чрезвычайных обстоятельств система LPD зависла, но они не могут запустить принтер, остановленный командами `stop` или `down`. Команда `restart` эквивалентна последовательности команд `abort` и `start`.

`start `имя-принтера``

  Запустить принтер. Принтер будет печатать задания, находящиеся в его очереди.

`stop `имя-принтера``

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

`topq `имя-принтера` `задание-или-имя-пользователя``

  Переупорядочить очередь для указанного принтера, помещая указанные по номеру `задания` или задания указанного по имени `пользователя` в начало очереди. Для этой команды нельзя использовать `all` в качестве `имени-принтера`.

`up `имя-принтера``

  Включить принтер; команда по действию противоположна команде `down`. Эквивалентна последовательности команд `start` и `enable`.

Утилита lpc(8) принимает перечисленные выше команды в командной строке. Если команда не указана, утилита lpc(8) входит в интерактивный режим, в котором можно вводить команды, пока не будет введена команда `exit`, `quit` или символ конца файла.

## 9.6. Альтернативы стандартному спулеру

Если вы прочитали все это руководство, к этому моменту вы знаете практически все, что надо знать о системе спулинга LPD, входящей в состав ОС FreeBSD. Вы, возможно, уже осознали многие из ее недостатков, что, естественно, приводит к вопросу: ''Какие еще системы спулинга существуют (и работают с ОС FreeBSD)''?

LPRng

  Система LPRng, имя которой означает ''LPR: the Next Generation'' (LPR: следующее поколение) -- это полностью переписанная система PLP. Патрик Пауэл (Patrick Powell) и Джастин Мейсон (Justin Mason) (основной специалист, занимающийся поддержкой PLP) объединили усилия для создания системы LPRng. Основной сайт по системе LPRng -- http://www.lprng.org/.

CUPS

  Система CUPS (сокращение от Common UNIX Printing System) предоставляет переносимый механизм печати для операционных систем, основанных на UNIX. Она была разработана компанией Easy Software Products в качестве стандартного механизма печати для всех производителей и пользователей UNIX.

  Система CUPS использует протокол Internet Printing Protocol (IPP) для управления заданиями и очередями. Протоколы Line Printer Daemon (LPD), Server Message Block (SMB) и AppSocket (известный также как JetDirect) также поддерживаются, но с меньшими возможностями. Система CUPS добавляет поиск сетевых принтеров и опции печати на основе PostScript Printer Description (PPD), для поддержки практической печати в UNIX.

  Основной сайт по системе CUPS -- http://www.cups.org/.

## 9.7. Выявление проблем

После выполнения простого тестирования с помощью команды lptest(1) вы можете получить один из следующих результатов вместо корректной распечатки:

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

  Принтер напечатал все, что нужно, но он на некоторое время задумывался и ничего не делал. Фактически, могло потребоваться нажать кнопку PRINT REMAINING или FORM FEED на принтере, чтобы результаты были выданы.

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

  Следующий измененный скрипт командного интерпретатора `/usr/local/libexec/if-simple` выдает символ прогона страницы после посылки задания на принтер:

      #!/bin/sh
      #
      # if-simple - Простой текстовый входной фильтр для lpd
      # Установлен в /usr/local/libexec/if-simple
      #
      # Просто копирует stdin в stdout. Игнорирует все аргументы фильтра.
      # Выдает символ прогона страницы (\f) после печати задания.

      /bin/cat && printf "\f" && exit 0
      exit 2

Принтер печатает ''лесенкой''.

  Вы получаете на бумаге следующее:

      !"#$%&'()*+,-./01234
                      "#$%&'()*+,-./012345
                                       #$%&'()*+,-./0123456

  Вы стали очередной жертвой эффекта лесенки, вызванного различными интерпретациями того, какие символы должны обозначать новую строку. Операционные системы UNIX-стиля используют один символ: ASCII-код 10, перевод строки (line feed -- LF). MS-DOS, OS/2® и другие используют пару символов, ASCII-код 10 и ASCII-код 13 (возврат каретки, carriage return или CR). Многие принтеры используют соглашение MS-DOS для представления новых строк.

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

  Вот что ОС FreeBSD хочет от принтера:

  Принтер получает CR | Принтер печатает CR
  Принтер получает LF | Принтер печатает CR + LF

  Вот несколько способов этого добиться:

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

    > Замечание: Если вы загружаете другие операционные системы, кроме FreeBSD, может иметь смысл переконфигурировать принтер для использования такой интерпретации символов CR и LF, которая принята в этих операционных системах. Затем можно использовать одно из представленных далее решений.

  - Заставить драйвер последовательного порта FreeBSD автоматически преобразовывать LF в CR+LF. Конечно, это подойдет только для принтеров, подключенных к последовательным портам. Для включения этой возможности используйте характеристику `ms#` и установите режим `onlcr` для принтера в файле `/etc/printcap`.

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

    Вот пример текстового фильтра для принтеров, понимающих управляющие последовательности языка Hewlett-Packard PCL. Этот фильтр заставляет принтер обрабатывать символы LF как LF и CR; затем он посылает задание; наконец, он посылает символ прогона страницы для выдачи последней страницы задания. Он должен работать практически со всеми принтерами Hewlett Packard.

        #!/bin/sh
        #
        # hpif - Простой текстовый входной фильтр для lpd для принтеров на базе HP-PCL
        # Установлен в /usr/local/libexec/hpif
        #
        # Просто копирует stdin в stdout. Игнорирует все аргументы фильтра.
        # Требует от принтера обрабатывать LF как CR+LF. Выдает страницу по окончании.

        printf "\033&k2G" && cat && printf "\033&l0H" && exit 0
        exit 2

    Вот пример файла `/etc/printcap` с хоста `orchid`. К нему через первый параллельный порт подключен один принтер, Hewlett Packard LaserJet 3Si, по имени `teak`. Для него в качестве текстового фильтра используется представленный выше скрипт:

        #
        #  /etc/printcap для хоста orchid
        #
        teak|hp|laserjet|Hewlett Packard LaserJet 3Si:\
                :lp=/dev/lpt0:sh:sd=/var/spool/lpd/teak:mx#0:\
                :if=/usr/local/libexec/hpif:

Строки напечатаны одна поверх другой.

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

  Эта проблема ''обратна'' эффекту лесенки, описанному выше, и встречается намного реже. Каким-то образом, символы LF, которые ОС FreeBSD использует для завершения строк, обрабатывались как символы CR и вызывали перевод позиции печати на левый край бумаги, но не переход на следующую строку.

  Используйте переключатели конфигурации принтера или панель управления для обеспечения следующей интерпретации символов LF и CR:

  Принтер получает | Принтер печатает
  --- | ---
  CR | CR
  LF | CR + LF

Принтер теряет символы.

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

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

  - Если принтер поддерживает управление потоком XON/XOFF, заставить FreeBSD использовать его, указав режим `ixon` в характеристике `ms#`.

  - Если принтер поддерживает управление несущим потоком (carrier flow control), укажите режим `crtscts` в характеристике `ms#`. Убедитесь, что кабель, соединяющий принтер с компьютером, правильно распаян для управления несущим потоком.

Напечатан мусор.

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

  Это, обычно, -- еще один симптом неправильных параметров взаимодействия с последовательным принтером. Перепроверьте скорость взаимодействия в характеристике `br` и установку четности в характеристике `ms#`; проверьте, что принтер использует те же установки, которые заданы в файле `/etc/printcap`.

Ничего не произошло.

  Если ничего не произошло, проблема, вероятно, связана с FreeBSD, а не с оборудованием. Добавьте характеристику журнального файла (`lf`) в файл `/etc/printcap` для принтера, работу с которым отлаживаете. Например, вот запись для принтера `rattan` с характеристикой `lf`:

      rattan|line|diablo|lp|Diablo 630 Line Printer:\
              :sh:sd=/var/spool/lpd/rattan:\
              :lp=/dev/lpt0:\
              :if=/usr/local/libexec/if-simple:\
              :lf=/var/log/rattan.log

  Затем попытайтесь напечатать снова. Поищите в журнальном файле (в нашем примере -- `/var/log/rattan.log`) возможные сообщения об ошибках. На основе полученных сообщений попытайтесь решить проблему.

  Если вы не зададите характеристику `lf`, система LPD использует по умолчанию `/dev/console`.

# Глава 10. Двоичная совместимость с Linux

Реструктурировал и частично обновил Jim Mock. Первоначально предоставил Brian N. Handy, Rich Murphey. Перевод на русский язык: Алексей Докучаев. Перевод на русский язык и редактирование: Валерий Кравчук.

## 10.1. Краткий обзор

FreeBSD предоставляет двоичную совместимость с несколькими другими UNIX-подобными операционными системами, включая Linux. Возможно, вы спрашиваете себя, зачем FreeBSD нужно уметь работать с приложениями, написанными для Linux? Ответ на этот вопрос достаточно прост: многие компании и разработчики производят программное обеспечение только для Linux, так как эта операционная система очень быстро завоевала огромную популярность в компьютерном мире. Пользователям же FreeBSD приходится обращаться к этим компаниям и разработчикам с просьбами выпустить версии своих программ специально для FreeBSD. Проблема в том, что большинство производителей программного обеспечения не осознают, насколько бы увеличился их рынок сбыта, выпускай они также FreeBSD-версии, и продолжают разрабатывать только под Linux. Что же делать пользователям FreeBSD? В этой ситуации на помощь приходит двоичная совместимость FreeBSD с Linux.

Вкратце, эта совместимость позволяет пользователям FreeBSD работать с 90% приложений для Linux без каких-либо модификаций последних. Среди этих приложений: StarOffice, Linux-версия Netscape, Adobe Acrobat, RealPlayer®, VMware™, Oracle, WordPerfect®, Doom, Quake, и многие другие. Есть сведения, что в некоторых ситуациях эти Linux-программы показывали более высокую производительность при работе под FreeBSD, чем под Linux.

Конечно, существуют некоторые особенности Linux, которые не поддерживаются в полной мере под FreeBSD. Например, не будут работать приложения Linux, использующие специфичные вызовы i386, такие как переключение в виртуальный режим 8086.

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

- Как включить двоичную совместимость с Linux в вашей системе.

- Как установить дополнительные совместно используемые (shared) библиотеки Linux.

- Как установить приложения Linux в систему FreeBSD.

- Детали реализации совместимости с Linux в ОС FreeBSD.

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

- Узнать как устанавливать дополнительное программное обеспечение сторонних разработчиков (Гл. 4).

## 10.2. Установка

Двоичная совместимость с Linux не включена по умолчанию. Простейший способ включения этой функциональности заключается в загрузке KLD-объекта `linux` (''Kernel LoaDable object''). Вы можете загрузить этот модуль, набрав следующее, как пользователь `root`:

    # kldload linux

Если вы хотите, чтобы совместимость с Linux была включена постоянно, необходимо добавить в `/etc/rc.conf` следующую строку:

    linux_enable="YES"

Для проверки того, загружен ли модуль, может быть использована команда kldstat(8):

    % kldstat
    Id Refs Address    Size     Name
     1    2 0xc0100000 16bdb8   kernel
     7    1 0xc24db000 d000     linux.ko

Если по какой-либо причине вы не хотите или не можете загрузить KLD, вы можете статически включить поддержку Linux в ядро, добавив опцию `options COMPAT_LINUX` в файл конфигурации ядра. Затем соберите и установите новое ядро, следуя описанию в Гл. 8.

### 10.2.1. Установка необходимых библиотек Linux

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

#### 10.2.1.1. Установка с помощью порта linux_base

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

    # cd /usr/ports/emulators/linux_base-fc4
    # make install distclean

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

> Замечание: Возможно наличие нескольких версий порта `emulators/linux_base`, соответствующих различным версиям разных дистрибутивов Linux. Вы должны установить порт, наиболее близко соответствующий требованиям приложений Linux, которые будут установлены.

#### 10.2.1.2. Установка библиотек вручную

Если у вас не установлена коллекция портов, можно установить требуемые библиотеки вручную. Вам понадобятся совместно используемые библиотеки для Linux, которые нужны программам, и runtime-компоновщик. Вам также потребуется создать ''теневой корневой каталог'', `/compat/linux`, где будут расположены Linux-библиотеки. Если Linux-программе нужно загрузить какую-либо совместно используемую библиотеку, FreeBSD сперва будет пытаться найти ее в этом дереве. Так, если программа загружает, например, `/lib/libc.so`, FreeBSD попытается открыть `/compat/linux/lib/libc.so`, и если такого файла не существует, будет пытаться открыть `/lib/libc.so`. Разделяемые библиотеки должны находиться в теневом дереве, а не в каталогах, выдаваемых загрузчиком Linux `ld.so`.

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

#### 10.2.1.3. Как установить дополнительные совместно используемые библиотеки

Что, если при установленном `linux_base` порте ваше приложение все равно сообщает об отсутствии необходимой библиотеки? Как узнать, какая именно нужна библиотека и где ее взять? В принципе, есть два способа. Вам необходимо иметь привилегии пользователя `root` для их осуществления.

Если у вас есть доступ к машине, на которой установлен 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` на вашей системе, а также создайте символические ссылки на эти файлы с именами из первого столбца, соответственно. В итоге, у вас в системе FreeBSD должны быть следующие файлы:

    /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

> > Замечание: Учтите, что если у вас уже есть совместно используемая библиотека Linux с соответствующим первому столбцу результатов `ldd` основным номером версии, вам не обязательно копировать файл, указанный в последнем столбце, в вашу систему. Уже существующий файл должен подойти. Рекомендуется, однако, все равно скопировать совместно используемую библиотеку, если ее версия новее. Предыдущую версию библиотеки можно удалить, если вы создали символическую ссылку на новую. Итак, если у вас в системе есть следующие библиотеки:

> >     /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

> > Замечание: Символические ссылки важны только для Linux-программ. Runtime-компоновщик FreeBSD самостоятельно подберет правильные номера версий библиотек, и вам не нужно об этом беспокоиться.

### 10.2.2. Установка двоичных файлов Linux ELF

Для ELF-файлов иногда требуется сделать так называемый ''branding'' (маркировать его). Если попытаться запустить не маркированный ELF-файл, вы получите следующее сообщение об ошибке:

    % ./моя-linux-elf-программа
    ELF binary type not known
    Abort

Чтобы помочь ядру FreeBSD отличить ELF-файл FreeBSD от двоичного файла Linux, используется утилита brandelf(1):

    % brandelf -t Linux моя-linux-elf-программа

В настоящее время набор инструментальных средств GNU (GNU toolchain) помещает необходимую маркировочную информацию в двоичные ELF-файлы автоматически, поэтому необходимость в этом действии возникает всё реже.

### 10.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`.

## 10.3. Установка Mathematica®

Обновил для Mathematica 5.X Boris Hollas.

Ниже описано, как установить Linux-версию пакета Mathematica 5.X на систему FreeBSD.

Linux версия Mathematica или Mathematica for Students можно заказать непосредственно в компании Wolfram по адресу http://www.wolfram.com/.

### 10.3.1. Использование установщика Mathematica

Сначала вы должны указать FreeBSD, что Linux бинарники от Mathematica используют Linux ABI. Самый простой путь сделать это--установить марку ELF Linux по умолчанию для всех немаркированных двоичных файлов с помощью команды:

    # sysctl kern.fallback_elf_brand=3

FreeBSD будет считать, что все немаркированные двоичные ELF-файлы используют Linux ABI, и вы сможете запустить MathInstaller прямо с CDROM.

Теперь, скопируйте файл `MathInstaller` на ваш жёсткий диск:

    # mount /cdrom
    # cp /cdrom/Unix/Installers/Linux/MathInstaller /localdir/

и в этом файле замените `/bin/sh` в в первой строке на `/compat/linux/bin/sh`. Этим мы убедимся, что установщик будет выполняться Linux версией sh(1). Дальше, замените все вхождения `Linux)` на `FreeBSD)` с помощью текстового редактора или с помощью скрипта, представленного ниже, в следующей главе. Это укажет установщику Mathematica, вызывающему `uname -s` для определения операционной системы, относиться к FreeBSD, как к Linux подобной операционной системе. Теперь, запуск `MathInstaller` установит Mathematica.

### 10.3.2. Modifying the Mathematica Executables

Скрипты командной оболочки, которые Mathematica создала во время установки, должны быть изменены перед тем, как вы сможете использовать их. Если вы выбрали `/usr/local/bin` в качестве директории для помещения исполняемых файлов Mathematica, то вы обнаружите в этом каталоге ссылки на файлы `math`, `mathematica`, `Mathematica`, и `MathKernel`. В каждом из них замените `Linux)` на `FreeBSD)` с помощью текстового редактора или с помощью следующего скрипта командной оболочки:

    #!/bin/sh
    cd /usr/local/bin
    for i in math mathematica Mathematica MathKernel
      do sed 's/Linux)/FreeBSD)/g' $i > $i.tmp
      sed 's/\/bin\/sh/\/compat\/linux\/bin\/sh/g' $i.tmp > $i
      rm $i.tmp
      chmod a+x $i
    done

### 10.3.3. Получение пароля к пакету Mathematica

Когда вы запустите Mathematica в первый раз, у вас будет запрошен пароль. Если вы еще не получили пароль от Wolfram, запустите программу `mathinfo` в директории установки для получения вашего ''machine ID''. Этот machine ID основан исключительно на MAC адресе вашей первичной Ethernet карты, так что, вы не сможете использовать вашу копию Mathematica на разных машинах.

При регистрации по электронной почте, по телефону или по факсу вы сообщаете ''machine ID'', а в ответ получаете пароль, состоящий из нескольких групп чисел.

### 10.3.4. Использование интерфейса Mathematica по сети

Mathematica использует специальные шрифты для отображения некоторых символов, которые отсутствуют в стандартных шрифтах (символы интегралов, сумм, греческий алфавит и другие). Протокол X требует, чтобы эти шрифты были установлены локально. Это означает, что вы должны скопировать эти шрифты с компакт-диска или хоста, на котором установлена Mathematica, на вашу машину. Обычно эти шрифты находятся в каталоге `/cdrom/Unix/Files/SystemFiles/Fonts` компакт-диска или в каталоге `/usr/local/mathematica/SystemFiles/Fonts` на диске. Собственно файлы со шрифтами находятся в подкаталогах `Type1` и `X`. О том, как их использовать, читайте ниже.

Можно просто скопировать их в один из существующих каталогов шрифтов в каталоге `/usr/X11R6/lib/X11/fonts`. В этом случае придётся отредактировать файл `fonts.dir`, добавив в него названия шрифтов и изменив число шрифтов в первой строке. Можно также запустить программу mkfontdir(1), находясь в том каталоге, куда вы скопировали шрифты.

Есть альтернативный способ: скопировать каталоги в `/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

Если вы используете сервер Xorg, то можно просто прописать эти каталоги в файле `xorg.conf`.

> Замечание: Для сервера XFree86, файл конфигурации `XF86Config`.

Если на вашем компьютере нет каталога `/usr/X11R6/lib/X11/fonts/Type1`, замените `MathType1` на `Type1` в предыдущем примере.

## 10.4. Установка Maple™

Предоставил Aaron Kaplan. Благодарности: Robert Getschmann.

Maple™ -- коммерческая математическая программа, аналогичная Mathematica. Это программное обеспечение надо купить у http://www.maplesoft.com/, а потом зарегистрироваться там для получения файла лицензии. Для установки этого программного обеспечения в ОС FreeBSD используется следующая последовательность простых шагов.

1. Выполните скрипт командного интерпретатора `INSTALL` из дистрибутива. Выберите опцию ''RedHat'', когда будет предложено программой установки. Обычно установка выполняется в каталог `/usr/local/maple`.

2. Если вы этого ещё не сделали, купите лицензию на Maple в компании Maple Waterloo Software (http://register.maplesoft.com/) и скопируйте ее в файл `/usr/local/maple/license/license.dat`.

3. Установите диспетчер лицензий FLEXlm, выполнив скрипт установки `INSTALL_LIC`, входящий в состав Maple. Укажите основное имя хоста вашей машины для сервера лицензий.

4. Исправьте файл `/usr/local/maple/bin/maple.system.type` с помощью следующего патча:

          ----- snip ------------------
       *** maple.system.type.orig      Sun Jul  8 16:35:33 2001
       --- maple.system.type   Sun Jul  8 16:35:51 2001
       ***************
       *** 72,77 ****
       --- 72,78 ----
                 # the IBM RS/6000 AIX case
                 MAPLE_BIN="bin.IBM_RISC_UNIX"
                 ;;
       +     "FreeBSD"|\
             "Linux")
                 # the Linux/x86 case
               # We have two Linux implementations, one for Red Hat and
          ----- snip end of patch -----

   Учтите, что после `"FreeBSD"|\` не должно быть никаких пробелов.

   Этот патч заставляет Maple распознавать ''FreeBSD'' как тип Linux-системы. Скрипт командного интерпретатора `bin/maple` вызывает скрипт `bin/maple.system.type`, который, в свою очередь, вызывает `uname -a` для получения имени операционной системы. В зависимости от имени ОС он определяет, какие двоичные модули использовать.

5. Запустите сервер лицензий.

   Следующий скрипт, установленный в файл `/usr/local/etc/rc.d/lmgrd.sh`, обеспечивает удобный способ запуска `lmgrd`:

          ----- snip ------------

       #! /bin/sh
       PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/X11R6/bin
       PATH=${PATH}:/usr/local/maple/bin:/usr/local/maple/FLEXlm/UNIX/LINUX
       export PATH

       LICENSE_FILE=/usr/local/maple/license/license.dat
       LOG=/var/log/lmgrd.log

       case "$1" in
       start)
               lmgrd -c ${LICENSE_FILE} 2>> ${LOG} 1>&2
               echo -n " lmgrd"
               ;;
       stop)
               lmgrd -c ${LICENSE_FILE} -x lmdown 2>> ${LOG} 1>&2
               ;;
       *)
               echo "Usage: `basename $0` {start|stop}" 1>&2
               exit 64
               ;;
       esac

       exit 0
          ----- snip ------------

6. Выполните тестовый запуск Maple:

       % cd /usr/local/maple/bin
       % ./xmaple

   Программа должна запуститься и работать. Не забудьте написать в Maplesoft и сообщить, что хотели бы видеть версию специально для FreeBSD!

### 10.4.1. Типичные проблемы

- Работать с диспетчером лицензий FLEXlm может быть непросто. Дополнительную документацию по нему можно найти на сайте http://www.globetrotter.com/.

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

      # =======================================================
      # License File for UNIX Installations ("Pointer File")
      # =======================================================
      SERVER chillig ANY
      #USE_SERVER
      VENDOR maplelmg

      FEATURE Maple maplelmg 2000.0831 permanent 1 XXXXXXXXXXXX \
               PLATFORMS=i86_r ISSUER="Waterloo Maple Inc." \
               ISSUED=11-may-2000 NOTICE=" Technische Universitat Wien" \
               SN=XXXXXXXXX

  > Замечание: Серийный номер и ключ забиты символами 'X'. `chillig` - имя хоста.

  Редактирование файла лицензий возможно, если только не трогать строку ''FEATURE'' (которая защищена лицензионным ключом).

## 10.5. Установка MATLAB®

Этот документ описывает процесс установки Linux-версии MATLAB® версии 6.5 на систему FreeBSD. Эта программа работает вполне нормально, за исключением Java Virtual Machine™ (см. Разд. 10.5.3).

Linux-версию MATLAB можно приобрести непосредственно в компании The MathWorks на сайте http://www.mathworks.com. Не забудьте получить файл лицензии или инструкции по его созданию. По ходу дела дайте знать производителю, что хотели бы увидеть версию их ПО специально для FreeBSD.

### 10.5.1. Процесс установки MATLAB

Для установки MATLAB выполните следующие шаги:

1. Вставьте инсталляционный CD и смонтируйте его. Станьте пользователем `root`, как рекомендует скрипт установки. Для запуска скрипта установки наберите:

       # /compat/linux/bin/sh /cdrom/install

   > Подсказка: Запускается графический инсталлятор. Если вы получаете сообщения о невозможности открыть дисплей, наберите `setenv HOME ~`USER``, где `USER` - пользователь, от имени которого выполнена команда su(1).

2. При запросе корневого каталога MATLAB, наберите: `/compat/linux/usr/local/matlab`.

   > Подсказка: Чтобы упростить набор остальных команд в ходе установки, выполните в командном интерпретаторе следующую команду: `set MATLAB=/compat/linux/usr/local/matlab`

3. Отредактируйте файл лицензии в соответствии с инструкциями в полученной лицензии MATLAB.

   > Подсказка: Этот файл можно подготовить заранее с помощью любого текстового редактора и скопировать его в `$MATLAB/license.dat` до того, как инсталлятор попросит его отредактировать.

4. Завершите процесс установки.

В этот момент ваша установка MATLAB завершена. Следующие шаги позволяют ''связать'' эту программу с вашей системой FreeBSD.

### 10.5.2. Запуск диспетчера лицензий

1. Создайте символические ссылки для скриптов диспетчера лицензий:

       # ln -s $MATLAB/etc/lmboot /usr/local/etc/lmboot_TMW
       # ln -s $MATLAB/etc/lmdown /usr/local/etc/lmdown_TMW

2. Создайте файл запуска `/usr/local/etc/rc.d/flexlm.sh`. Представленный ниже пример - измененная версия входящего в дистрибутив файла `$MATLAB/etc/rc.lm.glnx86`. Изменены местонахождения файлов и диспетчер лицензий запускается под эмулятором Linux.

       #!/bin/sh
       case "$1" in
         start)
               if [ -f /usr/local/etc/lmboot_TMW ]; then
                     /compat/linux/bin/sh /usr/local/etc/lmboot_TMW -u username && echo 'MATLAB_lmgrd'
               fi
               ;;
         stop)
               if [ -f /usr/local/etc/lmdown_TMW ]; then
                   /compat/linux/bin/sh /usr/local/etc/lmdown_TMW  > /dev/null 2>&1
               fi
               ;;
         *)
               echo "Usage: $0 {start|stop}"
               exit 1
               ;;
       esac

       exit 0

   > Важно: Этот файл надо сделать выполняемым:

   >     # chmod +x /usr/local/etc/rc.d/flexlm.sh

   > Вы также должны заменить `username` именем пользователя в вашей системе (но не `root`).

3. Запустите диспетчер лицензий с помощью команды:

       # /usr/local/etc/rc.d/flexlm.sh start

### 10.5.3. Связь с Java Runtime Environment

Измените ссылку Java Runtime Environment (JRE) так, чтобы он ссылалась на версию, работающую в FreeBSD:

    # cd $MATLAB/sys/java/jre/glnx86/
    # unlink jre; ln -s ./jre1.1.8 ./jre

### 10.5.4. Создание скрипта запуска MATLAB

1. Поместите следующий скрипт запуска в файл `/usr/local/bin/matlab`:

       #!/bin/sh
       /compat/linux/bin/sh /compat/linux/usr/local/matlab/bin/matlab "$@"

2. Затем выполните команду `chmod +x /usr/local/bin/matlab`.

> Подсказка: В зависимости от версии `emulators/linux_base`, при выполнении этого скрипта могут быть выданы сообщения об ошибках. Чтобы избежать этого, отредактируйте файл `/compat/linux/usr/local/matlab/bin/matlab` и измените строку вида:

>     if [ `expr "$lscmd" : '.*->.*'` -ne 0 ]; then

> (в версии 13.0.1 это строка 410) на следующую строку:

>     if test -L $newbase; then

### 10.5.5. Создание скрипта остановки MATLAB

Следующие действия необходимы для решения проблемы с некорректным завершением работы MATLAB.

1. Создайте файл `$MATLAB/toolbox/local/finish.m` и поместите в него одну строку:

       ! $MATLAB/bin/finish.sh

   > Замечание: `$MATLAB` -- литерал.

   > Подсказка: В том же каталоге находятся файлы `finishsav.m` и `finishdlg.m`, которые позволяют сохранять рабочее пространство перед выходом. Если вы используете любой из них, вставьте представленную выше строку сразу после команды `save`.

2. Создайте файл `$MATLAB/bin/finish.sh`, который будет содержать следующий скрипт:

       #!/usr/compat/linux/bin/sh
       (sleep 5; killall -1 matlab_helper) &
       exit 0

3. Сделайте этот файл выполняемым:

       # chmod +x $MATLAB/bin/finish.sh

### 10.5.6. Использование MATLAB

В этот момент все готово для выполнения команды `matlab` и начала использования этой программы.

## 10.6. Установка Oracle®

Предоставил Marcel Moolenaar.

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

Ниже описан процесс установки Oracle 8.0.5 и Oracle 8.0.5.1 Enterprise Edition для Linux на систему FreeBSD.

### 10.6.2. Установка Linux-среды

Удостоверьтесь, что порты `emulators/linux_base` и `devel/linux_devtools` установлены на вашей системе. Если у вас возникнут трудности с этими портами, воспользуйтесь пакетами или более ранними их версиями из Коллекции Портов.

Если вы хотите использовать интеллектуальный агент (intelligent agent), придется также установить пакет TCL от Red Hat: `tcl-8.0.3-20.i386.rpm`. Универсальная команда для установки пакетов с помощью официального порта RPM (`archivers/rpm`):

    # rpm -i --ignoreos --root /compat/linux --dbpath /var/lib/rpm пакет

Установка этого `пакета` должна пройти без каких-либо ошибок.

### 10.6.3. Создание среды Oracle

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

#### 10.6.3.1. Настройка ядра

Как описано в руководстве по установке Oracle, необходимо установить максимальный размер совместно используемой (shared) памяти. Не используйте `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

#### 10.6.3.2. Учетная запись Oracle

Создайте специальную учетную запись `oracle`, как и любую другую учетную запись. Единственное отличие в том, что для `oracle` необходимо указать командный интерпретатор Linux. Добавьте `/compat/linux/bin/bash` в `/etc/shells` и установите для `oracle` командный интерпретатор `/compat/linux/bin/bash`.

#### 10.6.3.3. Переменные среды

Кроме стандартных переменных среды Oracle, таких как `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
    PATH=$PATH:/compat/linux/usr/sbin:/bin:/sbin:/usr/bin:/usr/sbin
    PATH=$PATH:/usr/local/bin:$ORACLE_HOME/bin
    export PATH

### 10.6.4. Установка Oracle

Из-за небольшой несовместимости с Linux-эмулятором, вам нужно будет создать подкаталог `.oracle` в каталоге `/var/tmp` прежде, чем можно будет начать установку. Сделайте ее владельцем пользователя `oracle`. Если вы все сделали правильно, то установка Oracle должна пройти без проблем. Если какие-либо трудности все же возникли, проверьте еще раз все конфигурационные файлы и/или целостность дистрибутива Oracle. После окончания установки 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`!

#### 10.6.4.1. Изменение root.sh

При установке Oracle необходимо выполнить некоторые действия от имени пользователя `root`. Они записаны в скрипте командного интерпретатора `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 не с компакт-диска, можно изменить исходный файл `root.sh`. Он называется `rthd.sh` и находится в каталоге `orainst`.

#### 10.6.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

### 10.6.5. Запуск Oracle

Теперь, если вы все сделали правильно, то можете использовать Oracle так же, как и в системе Linux.

## 10.7. Установка SAP® R/3®

Предоставил Holger Kipp. Исходную версию преобразовал в SGML Valentino Vaschetto.

Инсталляции систем SAP на базе FreeBSD не будут поддерживаться службой поддержки SAP -- они предоставляют поддержку только на сертифицированных платформах.

### 10.7.1. Предисловие

Этот документ описывает возможный способ установки системы SAP R/3 с СУБД Oracle Database на машине с ОС FreeBSD, включая установку FreeBSD и Oracle. Будут описаны две разные конфигурации:

- SAP R/3 4.6B (IDES) с Oracle 8.0.5 на FreeBSD 4.3-STABLE

- SAP R/3 4.6C с Oracle 8.1.7 на FreeBSD 4.5-STABLE

Хотя в этом документе мы пытаемся подробно описать все важные шаги, он не заменяет руководства по установке Oracle и SAP R/3.

По специфическим вопросам SAP и Oracle обратитесь к документации, поставляемой в составе SAP R/3 Linux edition, а также к другим источникам информации об Oracle и SAP OSS.

### 10.7.2. Программное обеспечение

Для установки SAP были использованы следующие диски CD-ROM:

#### 10.7.2.1. SAP R/3 4.6B, Oracle 8.0.5

Имя | Номер | Описание
--- | --- | ---
KERNEL | 51009113 | SAP Kernel Oracle / Installation / AIX, Linux, Solaris
RDBMS | 51007558 | Oracle / RDBMS 8.0.5.X / Linux
EXPORT1 | 51010208 | IDES / DB-Export / Диск 1 из 6
EXPORT2 | 51010209 | IDES / DB-Export / Диск 2 из 6
EXPORT3 | 51010210 | IDES / DB-Export / Диск 3 из 6
EXPORT4 | 51010211 | IDES / DB-Export / Диск 4 из 6
EXPORT5 | 51010212 | IDES / DB-Export / Диск 5 из 6
EXPORT6 | 51010213 | IDES / DB-Export / Диск 6 из 6

Кроме того, мы использовали CD Oracle 8 Server (Опытная версия 8.0.5 для Linux, ядро версии 2.0.33), который не обязательно понадобится, и FreeBSD 4.3-STABLE (она вышла всего через несколько дней после 4.3 RELEASE).

#### 10.7.2.2. SAP R/3 4.6C SR2, Oracle 8.1.7

Имя | Номер | Описание
--- | --- | ---
KERNEL | 51014004 | SAP Kernel Oracle / SAP Kernel Version 4.6D / DEC, Linux
RDBMS | 51012930 | Oracle 8.1.7/ RDBMS / Linux
EXPORT1 | 51013953 | Release 4.6C SR2 / Export / Диск 1 из 4
EXPORT1 | 51013953 | Release 4.6C SR2 / Export / Диск 2 из 4
EXPORT1 | 51013953 | Release 4.6C SR2 / Export / Диск 3 bp 4
EXPORT1 | 51013953 | Release 4.6C SR2 / Export / Диск 4 из 4
LANG1 | 51013954 | Release 4.6C SR2 / Language / DE, EN, FR / Диск 1 из 3

В зависимости от языков, которые необходимо установить, могут потребоваться дополнительные CD. Здесь мы использовали только немецкий и английский языки, поэтому потребовался только первый языковой CD. Обратите внимание, что номера всех EXPORT CD идентичны. Все три языковых CD тоже имеют один номер (это отличается от нумерации CD в версии 4.6B IDES). На момент написания этого раздела (20.03.2002) установленное ПО работало на FreeBSD 4.5-STABLE.

### 10.7.3. Примечания по SAP

Прочитайте следующие документы перед установкой SAP R/3 -- они пригодятся в ходе установки:

#### 10.7.3.1. SAP R/3 4.6B, Oracle 8.0.5

Номер | Название
--- | ---
0171356 | SAP Software on Linux: Essential Comments
0201147 | INST: 4.6C R/3 Inst. on UNIX - Oracle
0373203 | Update / Migration Oracle 8.0.5 --> 8.0.6/8.1.6 LINUX
0072984 | Release of Digital UNIX 4.0B for Oracle
0130581 | R3SETUP step DIPGNTAB terminates
0144978 | Your system has not been installed correctly
0162266 | Questions and tips for R3SETUP on Windows NT / W2K

#### 10.7.3.2. SAP R/3 4.6C, Oracle 8.1.7

Номер | Название
--- | ---
0015023 | Initializing table TCPDB (RSXP0004) (EBCDIC)
0045619 | R/3 with several languages or typefaces
0171356 | SAP Software on Linux: Essential Comments
0195603 | RedHat 6.1 Enterprise version: Known problems
0212876 | The new archiving tool SAPCAR
0300900 | Linux: Released DELL Hardware
0377187 | RedHat 6.2: important remarks
0387074 | INST: R/3 4.6C SR2 Installation on UNIX
0387077 | INST: R/3 4.6C SR2 Inst. on UNIX - Oracle
0387078 | SAP Software on UNIX: OS Dependencies 4.6C SR2

### 10.7.4. Требования к аппаратному обеспечению

Следующего оборудования достаточно для установки SAP R/3 System. Для производственного использования необходима более точная оценка параметров:

Компонент | 4.6B | 4.6C
--- | --- | ---
Процессор | 2 x 800MHz Pentium III | 2 x 800MHz Pentium III
Память | 1GB ECC | 2GB ECC
Объем дисков | 50-60GB (IDES) | 50-60GB (IDES)

Для производственного использования рекомендуются процессоры Xeon с большим кешем, высокоскоростной доступ к дискам (SCSI, аппаратный RAID-контроллер), USV и ECC-RAM. Большой объем дискового пространства связан с заранее сконфигурированной системой IDES, которая создает 27 Гбайт файлов базы данных по ходу установки. Этого пространства также достаточно для исходных производственных систем и прикладных данных.

#### 10.7.4.1. SAP R/3 4.6B, Oracle 8.0.5

Было использовано следующее стандартное оборудование: двухпроцессорная материнская плата с двумя процессорами Pentium III 800 MHz, SCSI-контроллером Adaptec® 29160 Ultra160 (для работы с 40/80 Гбайт стримером DLT и приводом CDROM), Mylex® AcceleRAID™ (2 канала, firmware 6.00-1-00 с 32 Мбайт RAM). К RAID-контроллеру Mylex подключены два диска по 17 Гбайт (зеркалированы) и четыре диска по 36 Гбайт (RAID уровня 5).

#### 10.7.4.2. SAP R/3 4.6C, Oracle 8.1.7

Для этой установки был использован Dell™ PowerEdge™ 2500: двухпроцессорная плата с двумя процессорами Pentium III 1000 MHz (256 Кбайт кэш), 2 Гбайта PC133 ECC SDRAM, PERC/3 DC PCI RAID-контроллер со 128 Мбайтами и приводом EIDE DVD-ROM. К RAID-контроллеру подключены два диска по 18 Гбайт (зеркалированы) и четыре диска по 36 Гбайт (RAID уровня 5).

### 10.7.5. Установка FreeBSD

Сначала надо установить FreeBSD. Есть несколько способов сделать это; подробнее см. Разд. 2.13.

#### 10.7.5.1. Компоновка дисков

Для простоты диски при установке SAP R/3 46B и SAP R/3 46C SR2 использовались одинаково. Изменились только имена устройств, поскольку установка выполнялась на разное оборудование (`/dev/da` и `/dev/amr`, соответственно, так что при использовании AMI MegaRAID® будут задействованы устройства `/dev/amr0s1a` вместо `/dev/da0s1a`):

Файловая система | Размер (в блока по 1 Кбайту) | Размер (Гбайт) | Смонтирована в
--- | --- | --- | ---
`/dev/da0s1a` | 1.016.303 | 1 | `/`
`/dev/da0s1b` |  | 6 | swap
`/dev/da0s1e` | 2.032.623 | 2 | `/var`
`/dev/da0s1f` | 8.205.339 | 8 | `/usr`
`/dev/da1s1e` | 45.734.361 | 45 | `/compat/linux/oracle`
`/dev/da1s1f` | 2.032.623 | 2 | `/compat/linux/sapmnt`
`/dev/da1s1g` | 2.032.623 | 2 | `/compat/linux/usr/sap`

Конфигурируем и инициализируем заранее два логических диска с помощью ПО RAID Mylex или PERC/3. Программы конфигурирования можно запустить в ходе загрузки BIOS.

Обратите внимание, что использованная компоновка дисков немного отличается от рекомендованной SAP, поскольку SAP рекомендует монтировать подкаталоги Oracle (и некоторые другие) отдельно -- мы решили просто создать подкаталоги.

#### 10.7.5.2. `make world` и новое ядро

Загрузите последние исходные коды ветки -STABLE. Пересоздайте систему и ваше специализированное ядро после необходимых изменений в файле конфигурации ядра. В него надо включить параметры ядра, требуемые для SAP R/3 и Oracle.

### 10.7.6. Установка среды Linux

#### 10.7.6.1. Установка базовой системы Linux

Сначала необходимо установить порт linux_base (от имени пользователя `root`):

    # cd /usr/ports/emulators/linux_base
    # make install distclean

#### 10.7.6.2. Установка среды разработки Linux

Среда разработки Linux необходима, если вы хотите установить Oracle в ОС FreeBSD, как описано в Разд. 10.6:

    # cd /usr/ports/devel/linux_devtools
    # make install distclean

Среда разработки Linux была установлена только для SAP R/3 46B IDES. Она не нужна, если сервер Oracle не перекомпоновывается в системе FreeBSD. Именно так и происходит, если вы используете tar-архив (tarball) Oracle с Linux-системы.

#### 10.7.6.3. Установка необходимых пакетов RPM

Для запуска программы `R3SETUP` необходима поддержка модулей PAM. В ходе первой установки SAP на ОС FreeBSD 4.3-STABLE мы попытались установить PAM со всеми необходимыми пакетами и, в конце концов, принудительно установили пакет PAM, что и сработало. Для SAP R/3 4.6C SR2 мы сразу принудительно установили PAM RPM, что тоже сработало, так что похоже, что пакеты, от которых декларирована зависимость, не нужны:

    # rpm -i --ignoreos --nodeps --root /compat/linux --dbpath /var/lib/rpm \
    pam-0.68-7.i386.rpm

Чтобы Oracle 8.0.5 мог запустить интеллектуального агента, нам также пришлось установить пакет RedHat Tcl `tcl-8.0.5-30.i386.rpm` (иначе перекомпоновка в ходе установки Oracle не выполнится). Есть и другие проблемы с перекомпоновкой Oracle, но это проблема Oracle на Linux, не связанная с особенностями FreeBSD.

#### 10.7.6.4. Дополнительные советы

Может также иметь смысл добавить `linprocfs` в `/etc/fstab`; подробнее об этом см. на странице справочника linprocfs(5). Еще можно установить параметр `kern.fallback_elf_brand=3` в файле `/etc/sysctl.conf`.

### 10.7.7. Создание среды SAP R/3

#### 10.7.7.1. Создание необходимых файловых систем и точек монтирования

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

точка монтирования | размер в Гбайтах
--- | ---
`/compat/linux/oracle` | 45 GB
`/compat/linux/sapmnt` | 2 GB
`/compat/linux/usr/sap` | 2 GB

Также необходимо создать несколько ссылок. В противном случае, инсталлятор SAP будет выдавать сообщения об ошибках, поскольку он проверяет созданные ссылки:

    # ln -s /compat/linux/oracle /oracle
    # ln -s /compat/linux/sapmnt /sapmnt
    # ln -s /compat/linux/usr/sap /usr/sap

Возможные сообщения об ошибках в ходе установки (в данном случае, для установки System PRD и SAP R/3 4.6C SR2):

    INFO 2002-03-19 16:45:36 R3LINKS_IND_IND SyLinkCreate:200
        Checking existence of symbolic link /usr/sap/PRD/SYS/exe/dbg to
        /sapmnt/PRD/exe. Creating if it does not exist...

    WARNING 2002-03-19 16:45:36 R3LINKS_IND_IND SyLinkCreate:400
        Link /usr/sap/PRD/SYS/exe/dbg exists but it points to file
        /compat/linux/sapmnt/PRD/exe instead of /sapmnt/PRD/exe. The
        program cannot go on as long as this link exists at this
        location. Move the link to another location.

    ERROR 2002-03-19 16:45:36 R3LINKS_IND_IND Ins_SetupLinks:0
        can not setup link '/usr/sap/PRD/SYS/exe/dbg' with content
        '/sapmnt/PRD/exe'

#### 10.7.7.2. Создание пользователей и каталогов

Для системы SAP R/3 необходимы два пользователя и три группы. Имена пользователей зависят от идентификатора системы SAP (SID), который состоит из трех букв. Некоторые из этих идентификаторов зарезервированы SAP (например, `SAP` и `NIX`. Полный список см. в документации SAP). Для установки IDES мы использовали `IDS`, а для установки 4.6C SR2 -- `PRD`, поскольку эта система предназначалась для промышленного использования. Поэтому нам понадобились следующие группы (идентификаторы групп могут отличаться, мы просто указали наши значения, использованные при установке):

идентификатор группы | имя группы | описание
--- | --- | ---
100 | dba | Администратор базы данных
101 | sapsys | Система SAP
102 | oper | Оператор базы данных

Для стандартной установки Oracle используется только группа `dba`. В качестве группы `oper` используется та же группа `dba` (подробнее об этом см. в документации Oracle и SAP).

Нам также нужны следующие пользователи:

идентификатор пользователя | имя пользователя | общий вид имени | группа | дополнительные группы | описание
--- | --- | --- | --- | --- | ---
1000 | idsadm/prdadm | `sid`adm | sapsys | oper | Администратор SAP
1002 | oraids/oraprd | ora`sid` | dba | oper | Администратор Oracle

Добавление пользователей с помощью adduser(8) требует следующих параметров для ''Администратора SAP'' (обратите внимание на командный интерпретатор и начальный каталог):

    Name: sidadm
    Password: ******
    Fullname: SAP Administrator SID
    Uid: 1000
    Gid: 101 (sapsys)
    Class:
    Groups: sapsys dba
    HOME: /home/sidadm
    Shell: bash  (/compat/linux/bin/bash)

а для ''Администратора Oracle'':

    Name: orasid
    Password: ******
    Fullname: Oracle Administrator SID
    Uid: 1002
    Gid: 100 (dba)
    Class:
    Groups: dba
    HOME: /oracle/sid
    Shell: bash  (/compat/linux/bin/bash)

Для него также надо указать группу `oper`, если вы используете обе группы, `dba` и `oper`.

#### 10.7.7.3. Создание каталогов

Эти каталоги обычно создаются в отдельных файловых системах. Впрочем, все зависит от ваших требований. Мы решили создавать их как обычные каталоги, поскольку в любом случае они находятся на одном массиве RAID 5:

Сначала мы установим владельцев и права для ряда каталогов (от имени пользователя `root`):

    # chmod 775 /oracle
    # chmod 777 /sapmnt
    # chown root:dba /oracle
    # chown sidadm:sapsys /compat/linux/usr/sap
    # chmod 775 /compat/linux/usr/sap

Затем, мы создадим каталоги от имени пользователя `ora`sid``. Все они будут размещены в каталоге `/oracle/`SID``:

    # su - orasid
    # cd /oracle/SID
    # mkdir mirrlogA mirrlogB origlogA origlogB
    # mkdir sapdata1 sapdata2 sapdata3 sapdata4 sapdata5 sapdata6
    # mkdir saparch sapreorg
    # exit

Для установки Oracle 8.1.7 потребуется несколько дополнительных каталогов:

    # su - orasid
    # cd /oracle
    # mkdir 805_32
    # mkdir client stage
    # mkdir client/80x_32
    # mkdir stage/817_32
    # cd /oracle/SID
    # mkdir 817_32

> Замечание: Каталог `client/80x_32` должен иметь точно такое имя. Не заменяйте x числом или другим символом.

На третьем шаге мы создаем каталоги от имени пользователя ``sid`adm`:

    # su - sidadm
    # cd /usr/sap
    # mkdir SID
    # mkdir trans
    # exit

#### 10.7.7.4. Записи в файле `/etc/services`

Для системы SAP R/3 необходим ряд записей в файле `/etc/services`, которые не будут правильно созданы при установке под FreeBSD. Пожалуйста, добавьте следующие записи (потребуются, по крайней мере, записи, соответствующие номеру экземпляра -- в данном случае, `00`. Не повредит добавить все записи, от `00` до `99`, для `dp`, `gw`, `sp` и `ms`). Если вы собираетесь использовать SAProuter или вам необходим доступ к SAP OSS, потребуется также запись для `99`, поскольку порт 3299 обычно используется для процесса SAProuter в целевой системе:

    sapdp00  3200/tcp # SAP Dispatcher.      3200 + Instance-Number
    sapgw00  3300/tcp # SAP Gateway.         3300 + Instance-Number
    sapsp00  3400/tcp #                      3400 + Instance-Number
    sapms00  3500/tcp #                      3500 + Instance-Number
    sapmsSID 3600/tcp # SAP Message Server.  3600 + Instance-Number
    sapgw00s   4800/tcp # SAP Secure Gateway   4800 + Instance-Number

#### 10.7.7.5. Необходимые локали

Системе SAP нужны, по крайней мере, две локали, не входящие в стандартную установку RedHat. SAP предлагает необходимые пакеты RPM для загрузки со своего FTP-сервера (который доступен только для клиентов с доступом к OSS). См. список необходимых пакетов RPM в заметке 0171356.

Можно также просто создать соответствующие ссылки (например, с de_DE и en_US), но мы не рекомендуем это для производственной системы (хотя это и сработало для системы IDES безо всяких проблем). Необходимы следующие локали:

    de_DE.ISO-8859-1
    en_US.ISO-8859-1

Создайте ссылки следующим образом:

    # cd /compat/linux/usr/share/locale
    # ln -s de_DE de_DE.ISO-8859-1
    # ln -s en_US en_US.ISO-8859-1

Если их не будет, в ходе установки возникнет ряд проблем. Если их просто проигнорировать (установив `STATUS` для соответствующих шагов равным `OK` в файле `CENTRDB.R3S`), нельзя будет зарегистрироваться в системе SAP без дополнительных усилий.

#### 10.7.7.6. Настройка ядра

Системам SAP R/3 надо много ресурсов. Поэтому мы добавили следующие параметры в файл конфигурации ядра:

    # Для пожирателей памяти (SAP и Oracle):
    options MAXDSIZ="(1024*1024*1024)"
    options DFLDSIZ="(1024*1024*1024)"
    # Необходимые опции System V.
    options SYSVSHM #совместно используемая память в стиле SYSV
    options SHMMAXPGS=262144 #макс. количество страниц совместно используемой
    #options SHMMAXPGS=393216 #use this for the 46C inst.parameters
    options SHMMNI=256 #макс. количество идентификаторов совместно используемой
    options SHMSEG=100 #макс. количество сегментов разд. памяти на процесс
    options SYSVMSG #очереди сообщений в стиле SYSV
    options MSGSEG=32767 #макс. количество сегментов сообщений в системе
    options MSGSSZ=32 #размер сегмента сообщений. ДОЛЖЕН быть степенью 2
    options MSGMNB=65535 #макс. символов на очередь сообщений
    options MSGTQL=2046 #макс. количество сообщений в системе
    options SYSVSEM #семафоры в стиле SYSV
    options SEMMNU=256 #количество структур UNDO семафоров
    options SEMMNS=1024 #количество семафоров в системе
    options SEMMNI=520 #количество идентификаторов семафоров
    options SEMUME=100       #количество ключей UNDO

Минимальные значения указаны в документации, поставляемой вместе с SAP. Поскольку описания для Linux нет, дополнительную информацию см. в разделе HP-UX (32-bit). Поскольку в системе, на которую устанавливалась версия 4.6C SR2, оперативной памяти больше, сегменты совместно используемой можно сделать больше как для SAP, так и для Oracle, поэтому задайте большее количество страниц совместно используемой памяти.

> Замечание: При стандартной установке FreeBSD на i386, задайте значения `MAXDSIZ` и `DFLDSIZ` не более 1 Гбайта. В противном случае могут выдаваться странные ошибки вроде “`ORA-27102: out of memory`” и “`Linux Error: 12: Cannot allocate memory`”.

### 10.7.8. Установка SAP R/3

#### 10.7.8.1. Подготовка дисков CDROM SAP

В ходе установки придется монтировать и демонтировать много дисков CDROM. При наличии достаточного количества приводов CDROM, можно смонтировать их все. Мы же решили скопировать содержимое дисков CDROM в соответствующие каталоги:

    /oracle/SID/sapreorg/имя_cd

где `имя_cd` -- одно из следующих `KERNEL`, `RDBMS`, `EXPORT1`, `EXPORT2`, `EXPORT3`, `EXPORT4`, `EXPORT5` и `EXPORT6` для установки 4.6B/IDES, и `KERNEL`, `RDBMS`, `DISK1`, `DISK2`, `DISK3`, `DISK4` и `LANG` для установки 4.6C SR2. Все имена файлов на смонтированных дисках должны быть в верхнем регистре, в противном случае, используйте при монтировании опцию `-g`. Поэтому используйте следующие команды:

    # mount_cd9660 -g /dev/cd0a /mnt
    # cp -R /mnt/* /oracle/SID/sapreorg/имя_cd
    # umount /mnt

#### 10.7.8.2. Запуск скрипта установки

Сначала надо подготовить каталог `install`:

    # cd /oracle/SID/sapreorg
    # mkdir install
    # cd install

Затем запускается скрипт установки, который скопирует почти все необходимые файлы в каталог `install`:

    # /oracle/SID/sapreorg/KERNEL/UNIX/INSTTOOL.SH

Дистрибутив IDES (4.6B) включает полностью настроенную демонстрационную систему SAP R/3, поэтому он включает шесть дисков EXPORT CD, а не три. В этот момент шаблон установки `CENTRDB.R3S` предназначен для установки стандартного центрального экземпляра (R/3 и базы данных), а не для установки центрального экземпляра IDES, поэтому необходимо скопировать соответствующий файл `CENTRDB.R3S` из каталога `EXPORT1`, иначе команда `R3SETUP` запросит только три диска EXPORT CDs.

Более новый релиз SAP 4.6C SR2 включает четыре диска EXPORT CD. Шаги установки определяет файл параметров `CENTRAL.R3S`. В отличие от прежних релизов, больше нет отдельных шаблонов установки для центрального экземпляра с базой данных или без нее. SAP использует отдельный шаблон для установки базы данных. Для перезапуска установки в дальнейшем, однако, достаточно перезапустить исходный файл.

В ходе установки и после нее SAP требует, чтобы команда `hostname` возвращала только имя компьютера, не уточнённое именем домена. Поэтому либо задайте имя хоста в соответствии с этим требованием, либо настройте псевдоним с помощью команды `alias hostname='hostname -s'` для пользователей `ora`sid`` и ``sid`adm` (и для пользователя `root`, про крайней мере, в ходе шагов по установке, выполняемых от имени `root`). Можно также изменить файлы `.profile` и `.login` для обоих пользователей, которые создаются в ходе установки SAP.

#### 10.7.8.3. Запуск `R3SETUP` 4.6B

Проверьте, что переменная среды `LD_LIBRARY_PATH` установлена правильно:

    # export LD_LIBRARY_PATH=/oracle/IDS/lib:/sapmnt/IDS/exe:/oracle/805_32/lib

Выполните команду `R3SETUP` от имени пользователя `root` из каталога установки:

    # cd /oracle/IDS/sapreorg/install
    # ./R3SETUP -f CENTRDB.R3S

Скрипт затем задает ряд вопросов (стандартные ответы даны в скобках, а затем представлены реальные ответы):

Вопрос | Стандартное значение | Ответ
--- | --- | ---
Enter SAP System ID | [C11] | IDSEnter
Enter SAP Instance Number | [00] | Enter
Enter SAPMOUNT Directory | [/sapmnt] | Enter
Enter name of SAP central host | [troubadix.domain.de] | Enter
Enter name of SAP db host | [troubadix] | Enter
Select character set | [1] (WE8DEC) | Enter
Enter Oracle server version (1) Oracle 8.0.5, (2) Oracle 8.0.6, (3) Oracle 8.1.5, (4) Oracle 8.1.6 |  | 1Enter
Extract Oracle Client archive | [1] (Yes, extract) | Enter
Enter path to KERNEL CD | [/sapcd] | /oracle/IDS/sapreorg/KERNEL
Enter path to RDBMS CD | [/sapcd] | /oracle/IDS/sapreorg/RDBMS
Enter path to EXPORT1 CD | [/sapcd] | /oracle/IDS/sapreorg/EXPORT1
Directory to copy EXPORT1 CD | [/oracle/IDS/sapreorg/CD4_DIR] | Enter
Enter path to EXPORT2 CD | [/sapcd] | /oracle/IDS/sapreorg/EXPORT2
Directory to copy EXPORT2 CD | [/oracle/IDS/sapreorg/CD5_DIR] | Enter
Enter path to EXPORT3 CD | [/sapcd] | /oracle/IDS/sapreorg/EXPORT3
Directory to copy EXPORT3 CD | [/oracle/IDS/sapreorg/CD6_DIR] | Enter
Enter path to EXPORT4 CD | [/sapcd] | /oracle/IDS/sapreorg/EXPORT4
Directory to copy EXPORT4 CD | [/oracle/IDS/sapreorg/CD7_DIR] | Enter
Enter path to EXPORT5 CD | [/sapcd] | /oracle/IDS/sapreorg/EXPORT5
Directory to copy EXPORT5 CD | [/oracle/IDS/sapreorg/CD8_DIR] | Enter
Enter path to EXPORT6 CD | [/sapcd] | /oracle/IDS/sapreorg/EXPORT6
Directory to copy EXPORT6 CD | [/oracle/IDS/sapreorg/CD9_DIR] | Enter
Enter amount of RAM for SAP + DB |  | 850Enter (in Megabytes)
Service Entry Message Server | [3600] | Enter
Enter Group-ID of sapsys | [101] | Enter
Enter Group-ID of oper | [102] | Enter
Enter Group-ID of dba | [100] | Enter
Enter User-ID of `sid`adm | [1000] | Enter
Enter User-ID of ora`sid` | [1002] | Enter
Number of parallel procs | [2] | Enter

Если вы не скопировали диски в разные каталоги, инсталлятор SAP не сможет найти необходимые CD (идентифицируемые файлом `LABEL.ASC` на диске) и попросит затем вставить и смонтировать CD, и подтвердить или ввести точку его монтирования.

Файл `CENTRDB.R3S` может содержать ошибки. В нашем случае, он снова запросил EXPORT4 CD, но указал корректный ключ (6_LOCATION, затем 7_LOCATION и т.д.), так что, можно просто продолжать вводить корректные значения.

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

#### 10.7.8.4. Запуск `R3SETUP` 4.6C SR2

Проверьте, что переменная среды `LD_LIBRARY_PATH` установлена правильно. Это значение отличается от использованного при установке версии 4.6B с Oracle 8.0.5:

    # export LD_LIBRARY_PATH=/sapmnt/PRD/exe:/oracle/PRD/817_32/lib

Выполните команду `R3SETUP` от имени пользователя `root` из каталога установки:

    # cd /oracle/PRD/sapreorg/install
    # ./R3SETUP -f CENTRAL.R3S

Скрипт затем задаст ряд вопросов (стандартные значения даны в скобках, а затем идут реальные ответы):

Вопрос | Стандартное значение | Ответ
--- | --- | ---
Enter SAP System ID | [C11] | PRDEnter
Enter SAP Instance Number | [00] | Enter
Enter SAPMOUNT Directory | [/sapmnt] | Enter
Enter name of SAP central host | [majestix] | Enter
Enter Database System ID | [PRD] | PRDEnter
Enter name of SAP db host | [majestix] | Enter
Select character set | [1] (WE8DEC) | Enter
Enter Oracle server version (2) Oracle 8.1.7 |  | 2Enter
Extract Oracle Client archive | [1] (Yes, extract) | Enter
Enter path to KERNEL CD | [/sapcd] | /oracle/PRD/sapreorg/KERNEL
Enter amount of RAM for SAP + DB | 2044 | 1800Enter (in Megabytes)
Service Entry Message Server | [3600] | Enter
Enter Group-ID of sapsys | [100] | Enter
Enter Group-ID of oper | [101] | Enter
Enter Group-ID of dba | [102] | Enter
Enter User-ID of `oraprd` | [1002] | Enter
Enter User-ID of `prdadm` | [1000] | Enter
LDAP support |  | 3Enter (no support)
Installation step completed | [1] (continue) | Enter
Choose installation service | [1] (DB inst,file) | Enter

Пока создание пользователей дает сообщение об ошибке при установке на стадиях OSUSERDBSID_IND_ORA (создание пользователя `ora`sid``) и OSUSERSIDADM_IND_ORA (создание пользователя ``sid`adm`).

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

### 10.7.9. Установка Oracle 8.0.5

Описания возможных проблем с Linux и Сервером Oracle см. в соответствующих файлах SAP Notes и Oracle `Readme`. Большинство, если не все проблемы, связаны с несовместимыми библиотеками.

Подробнее об установке Oracle см. в разделе Установка Oracle.

#### 10.7.9.1. Установка Oracle 8.0.5 с помощью `orainst`

Если надо использовать Oracle 8.0.5, для успешной перекомпоновки понадобится несколько дополнительных библиотек, поскольку Oracle 8.0.5 был скомпонован со старой версией glibc (RedHat 6.0), но уже RedHat 6.1 использует новую библиотеку glibc. Так что, для успешной перекомпоновки нужно установить следующие дополнительные пакеты:

`compat-libs-5.2-2.i386.rpm`

`compat-glibc-5.2-2.0.7.2.i386.rpm`

`compat-egcs-5.2-1.0.3a.1.i386.rpm`

`compat-egcs-c++-5.2-1.0.3a.1.i386.rpm`

`compat-binutils-5.2-2.9.1.0.23.1.i386.rpm`

Дополнительную информацию см. в файлах SAP Notes или Oracle `Readme`. Если установить эти пакеты не представляется возможным (на момент установки у нас не было времени, чтобы это проверить), можно использовать исходные двоичные модули или перекомпонованные двоичные модули с исходной системы RedHat.

Для компиляции интеллектуального агента должен быть установлен пакет RedHat Tcl. Если вы не можете найти пакет `tcl-8.0.3-20.i386.rpm`, подойдет и более новый, вроде `tcl-8.0.5-30.i386.rpm` для RedHat 6.1.

За исключением перекомпоновки, установка выполняется просто:

    # su - oraids
    # export TERM=xterm
    # export ORACLE_TERM=xterm
    # export ORACLE_HOME=/oracle/IDS
    # cd $ORACLE_HOME/orainst_sap
    # ./orainst

Нажимайте на всех экранах клавишу Enter, пока программное обеспечение не будет установлено, убрав только пометку выбора с Oracle On-Line Text Viewer, поскольку этого компонента для Linux сейчас нет. Oracle затем захочет перекомпоновать модули с помощью `i386-glibc20-linux-gcc` вместо имеющихся `gcc`, `egcs` или `i386-redhat-linux-gcc`.

Из-за нехватки времени мы решили использовать двоичные модули из версии Oracle 8.0.5 PreProduction после того, как первая попытка заставить работать версию с RDBMS CD провалилась, -- попытки найти и загрузить требуемые пакеты RPM нам показались настоящим кошмаром.

#### 10.7.9.2. Установка Oracle 8.0.5 Pre-production Release для Linux (ядро 2.0.33)

Эту установку выполнить очень легко. Монтируем CD, запускаем инсталлятор. Затем он запрашивает местонахождение начального каталога Oracle и копирует туда двоичные модули. Мы, однако, не удаляли остатки прежних попыток установить RDBMS.

В конечном итоге, базу данных Oracle удалось запустить без проблем.

### 10.7.10. Установка tar-архива Oracle 8.1.7 для Linux

Создайте tar-архив `oracle81732.tgz` каталога установки на Linux-системе и разархивируйте его в каталог `/oracle/`SID`/817_32/`.

### 10.7.11. Продолжение установки SAP R/3

Сначала проверьте настройку среды для пользователей `idsamd` (`sid`adm) и `oraids` (ora`sid`). У них обоих должны теперь быть файлы `.profile`, `.login` и `.cshrc`, использующие `hostname`. Если имя хоста в системе полностью уточнено, надо заменить `hostname` командой `hostname -s` во всех трех файлах.

#### 10.7.11.1. Загрузка базы данных

Потом команду `R3SETUP` можно либо перезапустить, либо продолжить (в зависимости от того, была ли завершена ее работа). `R3SETUP` затем создает табличные пространства и загружает данные (для 46B IDES -- с дисков от EXPORT1 до EXPORT6, для 46C -- с дисков от DISK1 до DISK4) в базу данных с помощью утилиты `R3load`.

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

Вопрос | Ответ
--- | ---
Enter Password for sapr3 | sapEnter
Confirum Password for sapr3 | sapEnter
Enter Password for sys | change_on_installEnter
Confirm Password for sys | change_on_installEnter
Enter Password for system | managerEnter
Confirm Password for system | managerEnter

Мы столкнулись с несколькими проблемами с `dipgntab` при установке 4.6B.

#### 10.7.11.2. Процесс прослушивания

Запустите процесс прослушивания (Oracle Listener) от имени пользователя `ora`sid`` следующим образом:

    % umask 0; lsnrctl start

В противном случае, вы можете получить сообщение об ошибке ORA-12546, поскольку у сокетов будут неправильные права доступа. См. SAP Note 072984.

#### 10.7.11.3. Обновление таблиц MNLS

Если вы планируете использовать в системе SAP языки, для которых не подходит кодировка Latin-1, придется изменить таблицы Multi National Language Support. Эта процедура описана в SAP OSS Notes 15023 и 45619. Если же нет, можете пропустить этот вопрос в ходе установки SAP.

> Замечание: Если вам не нужна поддержка MNLS, все равно необходимо проверить таблицу TCPDB и инициализировать ее, если это еще не было сделано. Дополнительную информацию см. в SAP Note 0015023 и 0045619.

### 10.7.12. Шаги после установки

#### 10.7.12.1. Запрос лицензионного ключа SAP R/3

Вы должны запросить ваш лицензионный ключ SAP R/3. Это необходимо, поскольку временная лицензия, использованная в ходе установки, действительна только четыре недели. Сначала получите ключ оборудования. Зарегистрируйтесь как пользователь `idsadm` и вызовите команду `saplicense`:

    # /sapmnt/IDS/exe/saplicense -get

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

    # /sapmnt/IDS/exe/saplicense -install

Затем вас попросят ввести следующие значения:

    SAP SYSTEM ID   = SID, 3 символа
    CUSTOMER KEY    = ключ оборудования, 11 символов
    INSTALLATION NO = установка, 10 цифр
    EXPIRATION DATE = yyyymmdd, обычно - "99991231"
    LICENSE KEY     = лицензионный ключ, 24 символа

#### 10.7.12.2. Создание пользователей

Создайте пользователя в клиенте 000 (некоторые задачи обязательно надо выполнять из клиента 000, от имени пользователя, отличающегося от `sap*` и `ddic`). В качестве имени пользователя мы обычно выбираем `wartung` (или `service`, по английски). Требуются профили `sap_new` и `sap_all`. Для дополнительной защиты надо изменить пароли стандартных пользователей на всех клиентах (в том числе, пользователей `sap*` и `ddic`).

#### 10.7.12.3. Конфигурирование системы передачи, профиля, режимов работы и т.п.

В клиенте 000, от имени пользователя, отличающегося от `ddic` и `sap*`, выполните, как минимум, следующее:

Задача | Транзакция
--- | ---
Сконфигурируйте систему передачи, например, как Stand-Alone Transport Domain Entity | STMS
Создайте/Отредактируйте профиль для системы | RZ10
Сконфигурируйте режимы работы и экземпляры | RZ04

Эти и другие шаги, которые надо выполнить после установки, подробно описаны в руководствах по установке SAP.

#### 10.7.12.4. Редактирование `init`sid`.sap` (`initIDS.sap`)

Файл `/oracle/IDS/dbs/initIDS.sap` содержит профиль резервного копирования SAP. Здесь надо задать размер используемой ленты, тип сжатия и т.д. Чтобы можно было использовать `sapdba` / `brbackup`, мы изменили следующие значения:

    compress = hardware
    archive_function = copy_delete_save
    cpio_flags = "-ov --format=newc --block-size=128 --quiet"
    cpio_in_flags = "-iuv --block-size=128 --quiet"
    tape_size = 38000M
    tape_address = /dev/nsa0
    tape_address_rew = /dev/sa0

Объяснения:

`compress`: мы использовали ленту HP DLT1, которая поддерживает аппаратное сжатие.

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

`cpio_flags`: по умолчанию используется `-B`, что устанавливает размер блока 5120 байт. Для лент DLT компания HP рекомендует размер блока не меньше 32 Кбайт, поэтому мы использовали значение `--block-size=128` для задания размера блока 64 Кбайта. Опция `--format=newc` необходима, поскольку у нас есть индексные дескрипторы (inodes) с номерами больше 65535. Последняя опция, `--quiet` необходима потому, что иначе команда `brbackup` выдает сообщение об ошибке, как только команда `cpio` выдаст количество сохраненных блоков.

`cpio_in_flags`: флаги, необходимые для загрузки данных с ленты. Формат распознается автоматически.

`tape_size`: обычно этот параметр задает реальную ёмкость ленты. Из соображений надежности (мы используем аппаратное сжатие), задано значение несколько меньше фактического.

`tape_address`: устройство без перемотки для использования в команде `cpio`.

`tape_address_rew`: устройство с перемоткой для использования в команде `cpio`.

#### 10.7.12.5. Проблемы конфигурирования после установки

Следующие параметры SAP надо настроить после установки (примеры для IDES 46B, 1 Гбайт памяти):

Имя | Значение
--- | ---
ztta/roll_extension | 250000000
abap/heap_area_dia | 300000000
abap/heap_area_nondia | 400000000
em/initial_size_MB | 256
em/blocksize_kB | 1024
ipc/shm_psize_40 | 70000000

SAP Note 0013026:

Имя | Значение
--- | ---
ztta/dynpro_area | 2500000

SAP Note 0157246:

Имя | Значение
--- | ---
rdisp/ROLL_MAXFS | 16000
rdisp/PG_MAXFS | 30000

> Замечание: При указанных выше параметрах в системе с 1 Гбайт памяти можно обнаружить примерно следующее использование памяти:

>     Mem: 547M Active, 305M Inact, 109M Wired, 40M Cache, 112M Buf, 3492K Free

### 10.7.13. Проблемы в ходе установки

#### 10.7.13.1. Перезапуск `R3SETUP` после устранения проблемы

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

Для перезапуска команды `R3SETUP` просто запустите её с соответствующим файлом `R3S`:

    # ./R3SETUP -f CENTRDB.R3S

для 4.6B или с файлом

    # ./R3SETUP -f CENTRAL.R3S

для 4.6C, независимо от того, произошла ли ошибка при работе с файлом `CENTRAL.R3S` или `DATABASE.R3S`.

> Замечание: На некоторых стадиях команда `R3SETUP` предполагает, что запущены и работают процессы как сервера базы данных, так и SAP (поскольку эти шаги уже выполнены). Если возникнут ошибки и, например, запустить сервер базы данных не получится, придется вручную запускать сервер базы данных и SAP после исправления ошибок и до повторного запуска `R3SETUP`.

> Не забудьте также снова запустить процесс прослушивания Oracle (как пользователь `ora`sid`` с помощью команды `umask 0; lsnrctl start`), если он тоже был остановлен (например, из-за необходимой перезагрузки системы).

#### 10.7.13.2. OSUSERSIDADM_IND_ORA в ходе `R3SETUP`

Если `R3SETUP` выдает сообщения об ошибках на этом этапе, отредактируйте используемый при этом файл шаблона `R3SETUP` (`CENTRDB.R3S` (4.6B), либо `CENTRAL.R3S` или `DATABASE.R3S` (4.6C)). Найдите раздел `[OSUSERSIDADM_IND_ORA]` или поищите единственную запись `STATUS=ERROR` и отредактируйте следующие значения:

    HOME=/home/sidadm (было пусто)
    STATUS=OK (был статус ERROR)

Затем надо снова перезапустить `R3SETUP`.

#### 10.7.13.3. OSUSERDBSID_IND_ORA в ходе `R3SETUP`

Возможно, команда `R3SETUP` также выдаст сообщения об ошибке на этой стадии. Ошибка здесь аналогична возникающей на стадии OSUSERSIDADM_IND_ORA. Просто отредактируйте используемый файл шаблона `R3SETUP` (`CENTRDB.R3S` (4.6B), либо `CENTRAL.R3S` или `DATABASE.R3S` (4.6C)). Найдите раздел `[OSUSERDBSID_IND_ORA]` или поищите единственную запись `STATUS=ERROR` и отредактируйте следующее значение в этом разделе:

    STATUS=OK

Затем перезапустите `R3SETUP`.

#### 10.7.13.4. “`oraview.vrf FILE NOT FOUND`” в ходе установки Oracle

Вы не сняли выбор с Oracle On-Line Text Viewer перед началом установки. Он помечен для установки, хотя этот продукт и не доступен сейчас для Linux. Снимите пометку с этого продукта в меню установки Oracle и перезапустите установку.

#### 10.7.13.5. “`TEXTENV_INVALID`” в ходе `R3SETUP`, RFC или запуска SAPgui

Если возникает эта ошибка, не найдена нужная локаль. SAP Note 0171356 перечисляет необходимые пакеты RPM, которые надо установить (например, `saplocales-1.0-3`, `saposcheck-1.0-1` для RedHat 6.1). Если игнорировать все ошибки и менять `STATUS` соответствующих шагов с `ERROR` на `OK` (в файле `CENTRDB.R3S`) каждый раз, когда `R3SETUP` сообщает об ошибке и просто перезапуск ать `R3SETUP`, система SAP не будет правильно сконфигурирована, и вы затем не сможете подключиться к системе с помощью SAPgui, хотя запустить систему и получится. Попытка подключения с помощью старой Linux-версии SAPgui приведет к выдаче следующих сообщений:

    Sat May 5 14:23:14 2001
    *** ERROR => no valid userarea given [trgmsgo. 0401]
    Sat May 5 14:23:22 2001
    *** ERROR => ERROR NR 24 occured [trgmsgi. 0410]
    *** ERROR => Error when generating text environment. [trgmsgi. 0435]
    *** ERROR => function failed [trgmsgi. 0447]
    *** ERROR => no socket operation allowed [trxio.c 3363]
    Speicherzugriffsfehler

Это связано с тем, что система SAP R/3 не может корректно назначить локаль и сама не была надлежащим образом сконфигурирована (не хватает записей в некоторых таблицах базы данных). Чтобы можно было подключиться к SAP, добавьте следующие записи в файл `DEFAULT.PFL` (см. Note 0043288):

    abap/set_etct_env_at_new_mode = 0
    install/collate/active = 0
    rscp/TCP0B = TCP0B

Перезапустите систему SAP. Теперь вы можете подключиться к системе, хотя специфические для страны языковые установки могут работать не так, как предполагалось. После исправления настроек страны (и добавления соответствующих локалей) эти записи можно удалить из файла `DEFAULT.PFL` и перезапустить систему SAP.

#### 10.7.13.6. ORA-00001

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

Найдите оставшиеся семафоры и сегменты памяти с помощью команды `ipcs -a` и удалите с помощью `ipcrm`.

#### 10.7.13.7. ORA-00445 (фоновый процесс PMON не запущен)

Эта ошибка произошла с Oracle 8.1.7. Она выдается, если сервер был запущен с помощью обычного скрипта `startsap` (например, `startsap_majestix_00`) от имени пользователя `prdadm`.

Возможный способ обхода - запускать сервер базы данных от имени пользователя `oraprd` с помощью `svrmgrl`:

    % svrmgrl
    SVRMGR> connect internal;
    SVRMGR> startup;
    SVRMGR> exit

#### 10.7.13.8. ORA-12546 (запускайте процесс прослушивания с правильными правами)

Запускайте процесс прослушивания Oracle от имени пользователя `oraids` следующими командами:

    # umask 0; lsnrctl start

В противном случае, вы можете получить сообщение об ошибке ORA-12546, поскольку сокеты не будут иметь нужных прав доступа. См. SAP Note 0072984.

#### 10.7.13.9. ORA-27102 (не хватает памяти)

Эта ошибка произошла при попытке использовать значения `MAXDSIZ` и `DFLDSIZ` больше 1 Гбайта (1024x1024x1024). Кроме того, мы получили “`Linux Error 12: Cannot allocate memory`”.

#### 10.7.13.10. [DIPGNTAB_IND_IND] в ходе `R3SETUP`

В общем случае, см. SAP Note 0130581 (прекращается работа `R3SETUP` на шаге `DIPGNTAB`). В ходе установки IDES-версии по каким-то причинам процесс установки использовал вместо правильного имени системы SAP, ''IDS'', пустую строку, `""`. Это приводит к небольшим проблемам при доступе к каталогам, поскольку пути генерируются динамически на базе `SID` (в данном случае, IDS). Поэтому вместо обращения к:

    /usr/sap/IDS/SYS/...
    /usr/sap/IDS/DVMGS00

используются следующие пути:

    /usr/sap//SYS/...
    /usr/sap/D00

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

    # pwd
    /compat/linux/usr/sap
    # ls -l
    total 4
    drwxr-xr-x 3  idsadm sapsys 512 May 5 11:20 D00
    drwxr-x--x 5  idsadm sapsys 512 May 5 11:35 IDS
    lrwxr-xr-x 1  root   sapsys 7 May 5 11:35 SYS -> IDS/SYS
    drwxrwxr-x 2  idsadm sapsys 512 May 5 13:00 tmp
    drwxrwxr-x 11 idsadm sapsys 512 May 4 14:20 trans

Мы также нашли документы SAP Notes (0029227 и 0008401), описывающие это поведение. Мы не столкнулись с подобными проблемами при установке SAP 4.6C.

#### 10.7.13.11. [RFCRSWBOINI_IND_IND] в ходе `R3SETUP`

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

Если после просмотра журнальных файлов выявлена только эта ошибка (проверьте SAP Notes), можно поменять `STATUS` соответствующего шага с `ERROR` на `OK` (в файле `CENTRDB.R3S`) и перезапустить `R3SETUP`. После установки надо выполнить отчет `RSWBOINS` из транзакции SE38. Дополнительную информацию о стадиях `RFCRSWBOINI` и `RFCRADDBDIF` см. в SAP Note 0162266.

#### 10.7.13.12. [RFCRADDBDIF_IND_IND] в ходе `R3SETUP`

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

Если подтверждается, что применим документ SAP Note 0162266, просто поменяйте `STATUS` соответствующего шага с `ERROR` на `OK` (в файле `CENTRDB.R3S`) и перезапустите `R3SETUP`. После установки надо выполнить отчет `RADDBDIF` из транзакции SE38.

#### 10.7.13.13. sigaction sig31: File size limit exceeded

Это сообщение об ошибке выдается в ходе запуска процессов SAP disp+work. Если SAP запускается скриптом `startsap`, запускаются отдельные подпроцессы, выполняющие грязную работу по запуску всех остальных процессов SAP. В результате, сам скрипт не получит уведомления, если что-то пойдет не так.

Чтобы проверить, нормально ли запустились процессы SAP, посмотрите на состояние процессов с помощью команды `ps ax | grep `SID``, которая выдаст список всех процессов Oracle и SAP. Если похоже, что некоторых процессов не хватает или вы не можете подключиться к системе SAP, просмотрите соответствующие журнальные файлы, которые можно найти в каталоге `/usr/sap/`SID`/DVEBMGS`nr`/work/`. Надо просматривать файлы `dev_ms` и `dev_disp`.

Сигнал 31 выдается, если объем памяти, совместно используемой Oracle и SAP, превосходит заданный в файле конфигурации ядра, и от него можно избавиться, указав большее значение:

    # большее значение для производственных систем 46C:
    options SHMMAXPGS=393216
    # меньшее значение, достаточное для 46B:
    #options SHMMAXPGS=262144

#### 10.7.13.14. Сбой при запуске `saposcol`

Есть ряд проблем с программой `saposcol` (версии 4.6D). Система SAP использует `saposcol` для сбора данных о производительности системы. Эта программа не нужна для использования системы SAP, так что проблему можно отнести к несерьезным. Более старые версии (4.6B) работают, но собирают не все данные (многие вызовы просто возвращают 0, например, для использования процессора).

## 10.8. Дополнительные сведения

Если вы интересуетесь, как обеспечивается двоичная совместимость с Linux, этот раздел для вас. Большинство материала взято из электронного письма, адресованного Terry Lambert `<tlambert@primenet.com>` в Список рассылки, посвящённый неформальным беседам о FreeBSD (ID письма: `<199906020108.SAA07001@usr09.primenet.com>`).

### 10.8.1. Как все это устроено?

FreeBSD поддерживает абстракцию, называемую ''загрузчик выполняемых классов''. Фактически, он является первой стадией системного вызова execve(2).

На самом деле, FreeBSD имеет список загрузчиков вместо одного, завершающийся загрузчиком `#!` для запуска любых командных интерпретаторов и скриптов.

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

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

По умолчанию скрипт выполнялся ''текущим командным интерпретатором''.

Позднее, sh(1) был модифицирован, так, чтобы проверять первые два символа в файле, и если они оказывались `:\n`, то файл выполнялся как сценарий для csh(1) (утверждается, что SCO были первыми, кто сделал эту модификацию).

FreeBSD сейчас ведет себя по-другому: пробегает по списку загрузчиков,включающему специальный загрузчик `#!`, который вызывает нужный интерпретатор, указанный после этих символов до следующего пробела, или `/bin/sh`, если не нашел подходящего.

Для поддержки Linux ABI FreeBSD ищет магическое число, соответствующее двоичному файлу ELF (на этой стадии не различаются FreeBSD, Solaris, Linux или любая другая ОС поддерживающая формат ELF).

Далее, ELF-загрузчик определяет ''марку'' (brand) двоичного файла ELF (специальный комментарий в ELF-файле, отсутствующий в двоичных файлах ELF SVR4/Solaris).

Соответственно, Linux программы должны быть ''маркированы'' для `Linux` (например, с помощью утилиты brandelf(1)):

    # brandelf -t Linux file

Когда это сделано, загрузчик ELF выявит марку `Linux` в файле.

Когда ELF-загрузчик находит ''марку'' `Linux`, он заменяет соответствующий указатель в структуре `proc`. Все системные вызовы индексируются через этот указатель (в традиционной UNIX системе это массив структур `sysent[]`, содержащий системные вызовы). Кроме того, процесс помечается для специальной обработки вектора обработчиков сигналов, а также ряда других (небольших) исправлений, которые осуществляются специальным модулем ядра для поддержки Linux.

Вектор системных вызовов Linux содержит, среди прочего, список записей `sysent[]`, адреса которых находятся в модуле ядра.

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

Плюс ко всему, в Linux-режиме динамически ''изменяется корень'' файловой системы при поиске файлов; фактически так же, как и параметр `union` при монтировании файловых систем (не путать с `unionfs`!). Сперва, файл ищется в каталоге `/compat/linux/`исходное_полное_имя`` и только затем, в случае неудачи, в `/`исходное_полное_имя``. Это гарантирует, что программы, которым требуются другие программы, смогут работать (например, весь набор инструментальных средств Linux сможет работать в среде поддержки Linux ABI). Это также дает возможность Linux программам выполнять FreeBSD команды, если не найдется соответствующих Linux команд. Например, можно скопировать FreeBSD uname(1) в дерево каталогов `/compat/linux`, и Linux-программы не смогут разобраться, что они работают не в Linux.

Фактически, имеется ядро Linux в ядре FreeBSD; различные базовые функции, реализующие все услуги ядра, идентичны как в записях таблицы системных вызовов FreeBSD, так и в записях таблицы системных вызовов Linux: операции с файловой системой, виртуальная память, средства доставки сигналов, System V IPC ... Единственное отличие в том, что FreeBSD-программы получают интерфейсные функции FreeBSD, а Linux-программы получают интерфейсные функции Linux (в большинстве более старых ОС есть только их собственные интерфейсные функции: функции берутся из статического глобального массива структур `sysent[]`, а не из массива, полученного разыменованием динамически проинициализированного указателя в структуре `proc` процесса, выполняющего вызов).

Какая же реализация ABI для FreeBSD ''родная''? Это не имеет значения. Единственное различие (на данный момент, в будущем все может и, вероятно, изменится), пожалуй, в том, что функции системных вызовов FreeBSD зашиты в ядро, а для Linux они могут быть либо статически скомпонованы в ядро, либо получаться через модуль ядра.

Да, но можно ли назвать это эмуляцией? Нет. Это реализация ABI, а не эмуляция. Как таковой, эмулятор (или симулятор) отсутствует.

В таком случае, почему же иногда говорят об ''эмуляции Linux''? Чтобы ''насолить'' FreeBSD! Фактически, причина в том, что на момент первой реализации не существовало слова, которое бы точнее описывало этот процесс. Нельзя было сказать, что FreeBSD запускает приложения Linux (без перекомпиляции или загрузки соответствующего модуля ядра это невозможно). Но надо было как-то описать, что загружается -- отсюда и ''эмулятор Linux''.

# III. Системное администрирование

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

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

# Глава 11. Настройка и оптимизация

Написал Chern Lee. Основывается на учебнике, написанном Mike Smith. и на tuning(7), написанном Matt Dillon. Перевод на русский язык: Андрей Мельник, Денис Пеплин, Валерий Кравчук.

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

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

После прочтения этой главы вы узнаете:

- Как эффективно работать с файловыми системами и разделами подкачки.

- Основы настройки `rc.conf` и системы запуска приложений `/usr/local/etc/rc.d`.

- Как настроить и протестировать сетевую карту.

- Как настроить виртуальные хосты на сетевых устройствах.

- Как использовать различные файлы конфигурации в `/etc`.

- Как оптимизировать FreeBSD, используя переменные `sysctl`.

- Как увеличить скорость работы дисков и изменить ограничения, накладываемые ядром.

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

- Понять основы UNIX и FreeBSD (Гл. 3).

- Ознакомиться с основами конфигурации/компиляции ядра (Гл. 8).

## 11.2. Начальное конфигурирование

### 11.2.1. Разделы диска

#### 11.2.1.1. Основы построения разделов

Во время разметки жёсткого диска с помощью bsdlabel(8) или sysinstall(8), важно помнить, что скорость чтения и записи данных уменьшается от внешних к внутренним трекам диска. Самые маленькие и самые часто используемые файловые системы (корневая и раздел подкачки) должны быть расположены в начале диска, в то время как самые большие, такие, как `/usr`, в конце. Самым оптимальным считается следующий порядок расположения файловых систем: root, swap, `/var`, `/usr`.

Размер файловой системы `/var` определяется предназначением машины. `/var` используется для хранения почтовых ящиков, очередей печати и лог файлов. Размер почтовых ящиков и лог файлов может расти неограниченно в зависимости от количества пользователей системы и от того, как долго хранятся лог-файлы. Большинству пользователей никогда не потребуется гигабайт, но помните, что `/var/tmp` должен быть достаточно большим для пакетов.

В разделе `/usr` содержит большинство файлов, необходимых для поддержки системы, порты (ports(7), рекомендуется) и исходные тексты (опционально). Оба эти каталога опциональны при установке. Для этого раздела рекомендуется как минимум 2 гигабайта.

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

> Замечание: Многие пользователи обнаружили, что размер разделов, предлагаемый sysinstall(8)'ом по умолчанию, иногда меньше подходящего для разделов `/var` и `/`. Тщательно планируйте размер разделов и не жалейте места.

#### 11.2.1.2. Раздел подкачки

Как правило, размер раздела подкачки должен быть равен удвоенному размеру оперативной памяти. Например, если на машине установлено 128 мегабайт памяти, раздел подкачки должен быть 256 мегабайт. Системы с меньшим количеством памяти могут работать лучше с большим объёмом раздела подкачки. Не рекомендуется устанавливать размер раздела подкачки меньше 256 мегабайт, необходимо также принять во внимание возможное наращивание объема установленной на машине памяти. Алгоритмы кэширования VM настроены на максимальное быстродействие, когда размер раздела подкачки равен как минимум удвоенному размеру памяти. Заниженный размер раздела подкачки может привести к неэффективной работе постраничного сканирования VM и вызвать проблемы при увеличении объёма памяти.

На больших системах с несколькими SCSI дисками (или несколькими IDE дисками, находящимися на разных контроллерах), рекомендуется создавать раздел подкачки на каждом диске (до четырёх дисков). Разделы подкачки должны быть примерно одного размера. Ядро не накладывает ограничений на размер раздела подкачки, но внутренние структуры позволяют иметь общий размер разделов подкачки, равный наибольшему, умноженному на четыре. Выделение под разделы подкачки примерно одинакового места позволить ядру оптимально расположить разделы подкачки. Установка размера подкачки больше требуемого нормальна, даже если этот объем не используется. В этих условиях может быть проще восстановиться после зависания программы перед тем, как возникнет необходимость перезагрузки.

#### 11.2.1.3. Зачем нужны разделы?

Некоторые пользователи считают, что лучше использовать один большой раздел, но есть несколько причин, по которым этого лучше не делать. Во-первых, у каждого раздела свои характеристики, и отделяя их, можно выполнить соответствующие настройки. Например, корневая и файловая система и `/usr` в основном предназначены для чтения, без большого объема записи. В то же время множество операций чтения и записи выполняется в `/var` и `/var/tmp`.

При правильном размещении и выборе размера разделов системы, фрагментация в более маленьких разделах, куда часто записываются данные, не перенесётся на остальные разделы. Размещение самых часто используемых разделов ближе к началу диска увеличит скорость ввода/вывода там, где она нужна больше всего. Хотя производительность важна и для больших дисков, передвижение их ближе к концу диска не повлечёт значительного уменьшения быстродействия по сравнению с перемещением ближе к концу диска `/var`. И, наконец, разделы существуют и из соображений безопасности. Наличие маленького аккуратного корневого раздела, доступного только для чтения даёт значительные шансы на "выживание" после краха системы.

## 11.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:

         . /etc/rc.conf.site
          hostname="node15.example.com"
          network_interfaces="fxp0 lo0"
          ifconfig_fxp0="inet 10.1.1.1"

- rc.conf.site:

         defaultrouter="10.1.1.254"
          saver="daemon"
          blanktime="100"

Файл `rc.conf.site` может быть распространён на все системы, используя `rsync` или подобную ей программу, в то время, как `rc.conf` должен остаться только на одной машине.

Обновление системы с помощью sysinstall(8) или `make world` не повлекут за собой перезапись `rc.conf`. Вся информация в этом файле сохранится.

## 11.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 этот файл уже не будет перезаписан.

## 11.5. Запуск сервисов

Предоставил Tom Rhodes.

Многие пользователи предпочитают устанавливать программы сторонних производителей в FreeBSD из набора портов. В подобных случаях может потребоваться сконфигурировать программы так, чтобы они запускались при инициализации системы. Сервисы, такие как `mail/postfix` или `www/apache13`, -- это лишь два примера множества программных пакетов, которые можно запускать при инициализации системы. В этом разделе описывается процедура, предназначенная для запуска программ сторонних разработчиков.

Большинство входящих в FreeBSD сервисов, таких как cron(8), запускается с помощью стартовых скриптов системы. Эти скрипты могут различаться в зависимости от версии FreeBSD или ее производителя; однако важнее всего учитывать, что их начальную конфигурацию можно задать с помощью простых стартовых скриптов.

До появления `rc.d` приложения должны были помещать простой стартовый скрипт в каталог `/usr/local/etc/rc.d`, который затем читался скриптами инициализации системы. Эти скрипты затем выполнялись в ходе последующих стадий запуска системы.

Хотя много разработчиков потратили часы на попытки внедрить старый стиль конфигурирования в новую систему, остаётся фактом, что для некоторых утилит сторонних производителей по-прежнему необходим скрипт, помещённый в указанный выше каталог. Незначительные различия в скриптах зависят от того, используется ли `rc.d`. До версии FreeBSD 5.1 использовались скрипты в старом стиле, и почти во всех случаях скрипты в новом стиле должны подойти так же хорошо.

Хотя каждый скрипт должен соответствовать некоторым минимальным требованиям, в большинстве случаев эти требования не зависят от версии FreeBSD. Каждый скрипт должен иметь в конце расширение `.sh` и каждый скрипт должен быть выполняемым. Последнее требование может быть выполнено путем установки командой `chmod` уникальных прав доступа `755`. Также, как минимум, должна быть опция `start` для запуска приложения и опция `stop` для его остановки.

Простейший стартовый скрипт, пожалуй, будет похож на следующий:

    #!/bin/sh
    echo -n ' utility'

    case "$1" in
    start)
            /usr/local/bin/utility
            ;;
    stop)
            kill -9 `cat /var/run/utility.pid`
            ;;
    *)
            echo "Usage: `basename $0` {start|stop}" >&2
            exit 64
            ;;
    esac

    exit 0

Этот скрипт поддерживает опции `stop` и `start` для приложения, которое мы здесь называем просто -- `utility`.

А можно запускать его и вручную, с помощью команды:

    # /usr/local/etc/rc.d/utility.sh start

Хотя и не все программы сторонних производителей требуют добавления строки в файл `rc.conf`, практически каждый день очередной новый порт меняется так, чтобы поддерживать подобную конфигурацию. Поищите в результатах, выдаваемых после установки более детальную информацию по конкретному приложению. Некоторые программы сторонних производителей будут включать стартовые скрипты, позволяющие использовать приложение с `rc.d`; но это мы еще обсудим в следующем разделе.

### 11.5.1. Расширенное конфигурирование приложения

Теперь, когда FreeBSD включает `rc.d`, конфигурирование запуска приложений стало более оптимальным; фактически, оно стало более тщательным. С помощью ключевых слов, рассмотренных в разделе rc.d, приложения теперь можно настроить для запуска после других заданных сервисов, например, DNS; можно разрешить передачу дополнительных флагов через `rc.conf` вместо жесткого задания флагов в стартовых скриптах, и т.д. Простой скрипт может иметь следующий вид:

    #!/bin/sh
    #
    # PROVIDE: utility
    # REQUIRE: DAEMON
    # KEYWORD: shutdown

    #
    # НЕ МЕНЯЙТЕ ЗДЕСЬ ЭТИ СТАНДАРТНЫЕ ЗНАЧЕНИЯ
    # ЗАДАВАЙТЕ ИХ В ФАЙЛЕ /etc/rc.conf

    #

    utility_enable=${utility_enable-"NO"}
    utility_flags=${utility_flags-""}
    utility_pidfile=${utility_pidfile-"/var/run/utility.pid"}

    . /etc/rc.subr

    name="utility"
    rcvar=`set_rcvar`
    command="/usr/local/sbin/utility"

    load_rc_config $name

    pidfile="${utility_pidfile}"

    start_cmd="echo \"Starting ${name}.\"; /usr/bin/nice -5 ${command} ${utility_flags} ${command_args}"

    run_rc_command "$1"

Этот скрипт будет гарантировать, что указанное приложение utility будет запущено после сервиса `daemon`. Он также предоставляет метод для создания и отслеживания файла идентификатора процесса, PID.

Для этого приложения затем можно поместить следующую строку в файл `/etc/rc.conf`:

    utility_enable="YES"

Этот новый метод также позволяет легко работать с аргументами командной строки, включать стандартные функции из файла `/etc/rc.subr`, обеспечивает совместимость с утилитой rcorder(8) и упрощает конфигурирование с помощью файла `rc.conf`.

### 11.5.2. Использование сервисов для запуска сервисов

Другие сервисы, такие как даемоны сервера POP3, IMAP, и т.п. могут быть запущены с помощью inetd(8). Для этого необходимо установить сервисную утилиту из набора портов и добавить соответствующую строчку конфигурации в файл `/etc/inetd.conf` или раскомментировать подходящую строку конфигурации из уже имеющихся. Работа с даемоном inetd и его конфигурирование подробно описаны в разделе inetd.

В некоторых случаях использование для запуска системных служб даемона cron(8) может оказаться более приемлемым. Этот подход имеет несколько преимуществ, поскольку даемон `cron` запускает эти процессы от имени владельца файла `crontab`. Это позволяет обычным пользователям запускать и поддерживать некоторые приложения.

Утилита `cron` поддерживает уникальную возможность, `@reboot`, -- это значение можно использовать вместо спецификации времени. В результате, задание будет выполнено при запуске cron(8), обычно -- в ходе инициализации системы.

## 11.6. Настройка утилиты `cron`

Предоставил Tom Rhodes.

Одна из наиболее полезных утилит FreeBSD это cron(8). Утилита `cron` работает в фоновом режиме и постоянно проверяет файл `/etc/crontab`. Утилита `cron` проверяет также каталог `/var/cron/tabs` в поиске новых файлов `crontab`. Файлы `crontab` содержат информацию об определенных функциях, которые `cron` выполняет в указанное время.

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

> Замечание: Пользовательские crontab позволяют индивидуальным пользователям планировать задачи без привилегий суперпользователя (`root`). Команды из crontab пользователя запускаются с привилегиями этого пользователя.

> Пользователь `root` может использовать собственный crontab, как и любой другой пользователь. Он будет отличаться от системного crontab `/etc/crontab`. Поскольку существует системный crontab, обычно не требуется создавать пользовательский crontab для `root`.

Давайте заглянем в файл `/etc/crontab` (системный crontab):

    # /etc/crontab - root's crontab for FreeBSD
    #
    # $FreeBSD: src/etc/crontab,v 1.32 2002/11/22 16:13:39 tom Exp $
    #
    #
    SHELL=/bin/sh
    PATH=/etc:/bin:/sbin:/usr/bin:/usr/sbin
    HOME=/var/log
    #
    #
    #minute hour    mday    month   wday    who command
    #
    #
    */5 *   *   *   *   root    /usr/libexec/atrun

  Как и в большинстве файлов настройки FreeBSD, символы ''#'' означают комментарии. Комментарии нужны для напоминания о том, что означает строка и зачем она добавлена. Комментарии не могут находиться на той же строке, что и команда, или они будут восприняты как часть команды; располагайте их на новой строке. Пустые строки игнорируются.
  Сначала должны быть заданы переменные окружения. Знак равно (`=`) используется для задания переменных окружения, в этом примере `SHELL`, `PATH`, и `HOME`. Если переменная для оболочки не задана, `cron` использует оболочку по умолчанию, `sh`. Если не задана переменная `PATH`, значение по умолчанию не устанавливается и пути к файлам должны быть полными. Если не задана переменная `HOME`, `cron` будет использовать домашний каталог соответствующего пользователя.
  В строке всего семь полей. Их значения `minute`, `hour`, `mday`, `month`, `wday`, `who` (кто), и `command`. Значение полей почти очевидно. `minute` это время в минутах, когда будет запущена команда. `hour` означает то же самое для часов. `mday` означает день месяца. `month`, это то же самое, что час и минута, но для месяцев. Параметр `wday` это день недели. Все эти поля должны быть в числовом формате, время в двадцатичетырехчасовом исчислении. Поле `who` имеет специальное значение, и присутствует только в файле `/etc/crontab`. Это поле определяет пользователя, с правами которого должна быть запущена команда. Когда пользователь устанавливает собственный файл `crontab`, он не указывает этот параметр. Последний параметр `command`. Он указывает команду, которая должна быть запущена.
  Последняя строка определяет параметры, описанные выше. Здесь задано значение `*/5`, и несколько символов `*`. Эти символы `*` означают ''первый-последний'', и могут быть интерпретированы как каждый. Таким образом, для этой строки соответствующая команда `atrun` вызывается под пользователем `root` каждые пять минут независимо от дня или месяца. За дополнительной информацией по команде `atrun` обращайтесь к странице справочника atrun(8).

  Команды могут принимать любое количество параметров; однако команды, состоящие из нескольких строк, должны быть объединены символом ''\''.

Этот формат одинаков для каждого файла `crontab`, за исключением одной детали. Шестое поле, где указано имя пользователя, присутствует только в файле `/etc/crontab`. Это поле должно быть исключено из `crontab` файлов пользователей.

### 11.6.1. Установка crontab

> Важно: Вы не должны использовать процедуру, описанную здесь, для установки системного crontab. Просто используйте свой любимый текстовый редактор: утилита `cron` узнает о том, что файл изменился и сразу начнет использовать обновленную версию. Обратитесь к этой части FAQ за дальнейшей информацией.

Для установки готового `crontab` пользователя, сначала создайте в вашем любимом редакторе файл соответствующего формата, а затем воспользуйтесь утилитой `crontab`. Обычно она запускается так:

    % crontab crontab-file

В этом примере, `crontab-file` это имя файла crontab, который только что был создан.

Существует также параметр для просмотра установленных файлов `crontab`: задайте `crontab` параметр `-l`.

Для пользователей, составляющих crontab вручную, без временного файла, существует параметр `crontab -e`. Она вызовет редактор с пустым файлом. Когда файл будет сохранен, `crontab` автоматически установит его.

Если позднее вы захотите полностью удалить свой `crontab`, используйте `crontab` с параметром `-r`.

## 11.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

> Замечание: Вторая строка (`# sshd`) это вывод команды `sshd`, а не консоль `root`.

Чтобы определить, запущен ли сервис, существует параметр `status`. Например для проверки того, запущен ли `sshd`, выполните:

    # /etc/rc.d/sshd status
    sshd is running as pid 433.

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

Система `rc.d` используется не только для сетевых серверов, она отвечает также за большую часть инициализации системы. Рассмотрим, к примеру, файл `bgfsck`. Во время выполнения этот скрипт выводит следующее сообщение:

    Starting background file system checks in 60 seconds.

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

Функционирование многих сервисов системы зависит от корректной работы других сервисов. Например, NIS и другие основанные на RPC сервисы могут не запуститься, пока не загрузится `rpcbind` (portmapper). Для разрешения этой проблемы, в начале каждого скрипта в комментарии включаются информация о зависимостях и другие метаданные. Программа rcorder(8) используется для разбора этих комментариев во время старта системы для определения порядка, в котором должны вызываться системные сервисы в соответствии с зависимостями. В начало каждого стартового файла должны быть включены следующие строки:

- `PROVIDE`: Задает имя сервиса, предоставляемого этим файлом.

- `REQUIRE`: Список сервисов, необходимых этому сервису. Этот файл будет запущен после указанных сервисов.

- `BEFORE`: Список сервисов, зависящих от этого сервиса. Этот файл будет запущен до указанных сервисов.

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

Дополнительную информацию о системе `rc.d` можно найти на страницах справочника rc(8) и rc.subr(8).

## 11.8. Настройка карт сетевых интерфейсов

Предоставил Marc Fonvieille.

В наши дни мы не представляем себе компьютера без сетевого подключения. Добавление и настройка сетевой карты это обычная задача любого администратора FreeBSD.

### 11.8.1. Поиск подходящего драйвера

В первую очередь определите тип используемой карты (PCI или ISA), модель карты и используемый в ней чип. FreeBSD поддерживает многие PCI и ISA карты. Обратитесь к Списку поддерживаемого оборудования вашего релиза чтобы узнать, поддерживается ли карта.

Как только вы убедились, что карта поддерживается, потребуется определить подходящий драйвер. В файлах `/usr/src/sys/conf/NOTES` и `/usr/src/sys/`arch`/conf/NOTES` находится список драйверов сетевых интерфейсов с информацией о поддерживаемых чипсетах/картах. Если вы сомневаетесь в том, какой драйвер подойдет, прочтите страницу справочника к драйверу. Страница справочника содержит больше информации о поддерживаемом оборудовании и даже о проблемах, которые могут возникнуть.

Если ваша карта широко распространена, вам скорее всего не потребуется долго искать драйвер. Драйверы для широко распространенных карт представлены в ядре `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).

Если драйвер вашей сетевой карты отсутствует в `GENERIC`, для ее использования потребуется загрузить подходящий драйвер. Это может быть сделано одним из двух способов:

- Простейший способ -- просто загрузить модуль ядра сетевой карты с помощью kldload(8). Не все драйверы доступны в виде модулей; например, модули отсутствуют для ISA карт.

- Вместо этого, вы можете статически включить поддержку карты, скомпилировав собственное ядро. Информацию о том, какие параметры нужно включать в ядро, можно получить из `/usr/src/sys/conf/NOTES`, `/usr/src/sys/`arch`/conf/NOTES` и страницы справочника драйвера сетевой карты. За более подробной информацией о сборке собственного ядра обращайтесь к Гл. 8. Если карта была обнаружена вашим ядром (`GENERIC`) во время загрузки, собирать ядро не потребуется.

### 11.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

> Замечание: Старые версии FreeBSD могут потребовать запуска ifconfig(8) с параметром `-a`, за более подробным описанием синтаксиса ifconfig(8) обращайтесь к странице справочника. Учтите также, что строки, относящиеся к IPv6 (`inet6` и т.п.) убраны из этого примера.

В этом примере были показаны следующие устройства:

- `dc0`: первый Ethernet интерфейс

- `dc1`: второй Ethernet интерфейс

- `lp0`: интерфейс параллельного порта

- `lo0`: устройство loopback

- `tun0`: туннельное устройство, используемое ppp

Для присвоения имени сетевой карте 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`.

### 11.8.3. Тестирование и решение проблем

Как только вы внесете необходимые изменения в `/etc/rc.conf`, перегрузите компьютер. Изменения настроек интерфейсов будут применены, кроме того будет проверена правильность настроек.

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

#### 11.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`.

#### 11.8.3.2. Решение проблем

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

Если карта работает, но производительность низка, может помочь чтение страницы справочника tuning(7). Проверьте также настройки сети, поскольку неправильные настройки могут стать причиной низкой скорости соединения.

Некоторые пользователи встречаются с несколькими “`device timeouts`”, что нормально для некоторых сетевых карт. Если это продолжается и надоедает, убедитесь, что устройство не конфликтует с другим устройством. Внимательно проверьте подключение кабеля. Возможно также, что вам просто надо установить другую карту.

Время от времени, пользователи видят несколько ошибок “`watchdog timeout`”. Первое, что требуется сделать, это проверить сетевой кабель. Многие карты требуют поддержки Bus Mastering слотом PCI. На некоторых старых материнских платах, только один PCI слот имеет такую поддержку (обычно слот 0). Сверьтесь с документацией на сетевую карту и материнскую плату, чтобы определить, может ли это быть проблемой.

Сообщение “`No route to host`” появляются, если система не в состоянии доставить пакеты к хосту назначения. Это может случиться, если не определен маршрут по умолчанию, или кабель не подключен. Проверьте вывод команды `netstat -rn` и убедитесь, что к соответствующему хосту есть работающий маршрут. Если это не так, прочтите Гл. 28.

Сообщения “`ping: sendto: Permission denied`” зачастую появляются при неправильно настроенном брандмауэре. Если `ipfw` включен в ядре, но правила не определены, правило по умолчанию блокирует весь трафик, даже запросы ping! Прочтите Гл. 27 с более подробной информацией.

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

## 11.9. Настройка виртуальных серверов

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

У сетевого интерфейса всегда есть один ''настоящий'' адрес, хотя он может иметь любое количество ''синонимов'' (alias). Эти синонимы обычно добавляются путём помещения соответствующих записей в `/etc/rc.conf`.

Синоним для интерфейса `fxp0` выглядит следующим образом:

    ifconfig_fxp0_alias0="inet xxx.xxx.xxx.xxx netmask xxx.xxx.xxx.xxx"

Заметьте, что записи синонимов должны начинаться с `alias0` и идти далее в определенном порядке (например, `_alias1`, `_alias2`, и т.д.). Конфигурационный процесс остановится на первом по порядку отсутствующем числе.

Определение маски подсети для синонима очень важно, но к счастью, так же просто. Для каждого интерфейса должен быть один адрес с истинной маской подсети. Любой другой адрес в сети должен иметь маску подсети, состоящую из всех единичек (что выражается как `255.255.255.255` или как `0xffffffff`).

Например, рассмотрим случай, когда интерфейс `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`. Как было сказано выше, только первый адрес в заданном диапазоне (в данном случае, `10.0.1.1` и `202.0.75.17`) должен иметь реальную маску сети; все остальные (с `10.1.1.2` по `10.1.1.5` и с `202.0.75.18` по `202.0.75.20`) должны быть сконфигурированы с маской сети `255.255.255.255`.

Для этого в файл `/etc/rc.conf` должны быть внесены следующие записи:

    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"

## 11.10. Файлы настройки

### 11.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` | Автоматически генерируемые системно-специфичные файлы баз данных, такие как база данных пакетов, и так далее

### 11.10.2. Имена хостов

#### 11.10.2.1. `/etc/resolv.conf`

`/etc/resolv.conf` определяет, как резолвер (resolver) FreeBSD получает доступ к Системе Доменных Имён (DNS).

Основные записи `resolv.conf`:

`nameserver` | IP адрес сервера имён. Сервера опрашиваются в порядке описания. Максимальное количество адресов -- три.
`search` | Список доменов для поиска с помощью hostname lookup. Обычно определяется доменом, в котором находится компьютер.
`domain` | Домен, в котором находится компьютер.

Типичный вид `resolv.conf`:

    search example.com
    nameserver 147.11.1.11
    nameserver 147.11.100.30

> Замечание: Опции `search` и `domain` нельзя использовать совместно.

Если вы используете DHCP, dhclient(8) обычно перезаписывает `resolv.conf` информацией, полученной от серверов DHCP.

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

### 11.10.3. Настройка лог файлов

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

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

### 11.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

## 11.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` (ложь)).

Если вы хотите устанавливать некоторые переменные автоматически при каждой загрузке компьютера, добавьте их в файл `/etc/sysctl.conf`. За дополнительной информацией обращайтесь к странице справочника sysctl.conf(5) и к Разд. 11.10.4.

### 11.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`. Значения по умолчанию хранятся в файле `/boot/defaults/loader.conf`.

Решение проблемы, приведенной выше, потребует помещения строки `hw.pci.allow_unsupported_io_range=1` в вышеупомянутый файл. Теперь cardbus(4) будет работать нормально.

## 11.12. Оптимизация дисков

### 11.12.1. Переменные Sysctl

#### 11.12.1.1. `vfs.vmiodirenable`

Значением переменной `vfs.vmiodirenable` может быть установлено в 0 (выключено) или 1 (включено); по умолчанию 1. Эта переменная отвечает за метод кэширования каталогов. Размер большинства каталогов невелик. Они могут поместиться в одном фрагменте (обычно 1K), и могут занимать ещё меньше места (обычно 512 байт) в кэше буфера. При отключении этой переменной (при установке значения 0) буфер прокэширует только заданное число каталогов даже если у вас много памяти. При включении (при установке значения 1) эта переменная sysctl позволит использовать страничное кэширование VM, делая доступным для кэширования каталогов весь объём памяти. Однако, минимальный объём памяти, используемой для кэширования каталогов стал равен объёму страницы (обычно 4 K) вместо 512 байт. Мы рекомендуем оставлять эту опцию включенной, если ваш компьютер исполняет программы, манипулирующие значительным количеством файлов. Примером таких программ могут быть кэширующие прокси-серверы, большие почтовые серверы и серверы новостей. Обычно включение этой опции не понижает производительности, однако лучше поэкспериментировать, чтобы узнать оптимальное значение для вашей машины.

#### 11.12.1.2. `vfs.write_behind`

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

#### 11.12.1.3. `vfs.hirunningspace`

Переменная sysctl `vfs.hirunningspace` определяет число запросов записи на диск, которые могут быть поставлены в очередь. Значение по умолчанию обычно подходит, но на компьютерах с большим количеством дисков вы можете увеличить его до четырех или пяти мегабайт. Учтите, что установка слишком большого значения (превышающего размер буфера записи) может привести к очень значительному падению общей производительности. Не делайте это значение произвольно большим! Большие значения могут привести к задержкам чтения, выполняемого в то же время

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

#### 11.12.1.4. `vm.swap_idle_enabled`

Переменная sysctl `vm.swap_idle_enabled` полезна в больших многопользовательских системах, где есть много пользователей, входящих и выходящих из системы, и множество ожидающих процессов. Такие системы обычно генерируют большое количество запросов на выделение памяти. Включение этой переменной и настройка задержки выгрузки (swapout hysteresis, в секундах) установкой переменных `vm.swap_idle_threshold1` и `vm.swap_idle_threshold2` позволит освобождать страницы памяти, занятые ожидающими процессами, более быстро, чем при нормальном алгоритме выгрузки. Это помогает даемону выгрузки страниц. Не включайте этот параметр, пока он на самом деле вам не понадобится, поскольку его действие в сущности заключается в более ранней выгрузке страниц из памяти; это повышает нагрузку на подкачку и диск. В малых системах эффект от включения этого параметра предсказуем, но в больших системах нагруженной на подкачкой этот параметр позволяет системе VM проще загружать и выгружать процессы из памяти.

#### 11.12.1.5. `hw.ata.wc`

Во FreeBSD 4.3 кэширование записи на IDE диски было отключено. Это понижало производительность IDE дисков в тестах, но было необходимо для лучшей сохранности данных. Проблема состоит в том, что IDE диски неправильно указывают время завершения записи на диск. При включенном кэшировании IDE диски могут не только записать данные в неправильном порядке -- при большой нагрузке на диск некоторые блоки могут задержаться до бесконечности. Сбой, или отключение питания могут могут стать причиной серьёзных повреждений в файловой системе. Поэтому для безопасности системы значение по умолчанию этого параметра было изменено. К сожалению, результатом этого стало столь значительная потеря производительности, что после выхода релиза значение этого параметра было возвращено в первоначальное состояние. Вам следует проверить значение переменной sysctl `hw.ata.wc` на вашей машине. Если кэширование выключено -- вы можете включить его, установив значение переменной ядра, равное 1. Это должно быть сделано при помощи загрузчика при загрузке. Если вы сделаете это позже -- изменения не будут иметь силы.

За более подробной информацией обращайтесь к ata(4).

#### 11.12.1.6. `SCSI_DELAY` (`kern.cam.scsi_delay`)

Параметр настройки ядра `SCSI_DELAY` может использоваться для уменьшения времени загрузки системы. Значение по умолчанию велико и может составлять более `15` секунд в процессе загрузки. Уменьшение его до `5` секунд обычно работает (особенно с современными дисками). В новых версиях FreeBSD (5.0 и выше) должен использоваться параметр `kern.cam.scsi_delay`, настраиваемый во время загрузки. Этот параметр и параметр настройки ядра принимают значения в миллисекундах, а не в секундах.

### 11.12.2. Soft Updates

Программа tunefs(8) используется для настройки файловой системы. Эта программа может принимать большое количество параметров, но мы рассмотрим лишь один из них -- включение и выключение Soft Updates, что может быть достигнуто следующим образом:

    # tunefs -n enable /filesystem
    # tunefs -n disable /filesystem

Нельзя изменять файловую систему с помощью tunefs(8) когда она смонтирована. Самое подходящее время для включения "Soft Updates" - перед монтированием разделов, в однопользовательском режиме.

Soft Updates существенно увеличивают скорость создания и удаления файлов путём использования кэширования. Мы рекомендуем использовать Soft Updates на всех ваших файловых системах. Однако у Soft Updates есть и обратные стороны: во-первых, Soft Updates гарантирует целостность файловой системы в случае сбоя, но может наблюдаться задержка в несколько секунд (или даже минуту!) перед записью на жесткий диск. Если система зависнет -- вы можете потерять больше, чем, если бы вы не включили Soft Updates. Во-вторых, Soft Updates задерживает освобождение блоков файловой системы. Если ваша файловая система заполнена, выполнение значительного обновления, например, `make installworld`, может вызвать переполнение.

#### 11.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`. Это может повлечь проблемы при установке большого количества файлов на файловую систему, где не хватает места для помещения всех файлов дважды.

## 11.13. Изменение ограничений, накладываемых ядром

### 11.13.1. Ограничения на Файлы/Процессы

#### 11.13.1.1. `kern.maxfiles`

Значение `kern.maxfiles` может быть увеличено или уменьшено в зависимости от потребностей вашей системы. Эта переменная определяет максимальное число дескрипторов файлов. Когда таблица дескрипторов файлов полна, в очереди системных сообщений появится сообщение “`file: table is full`”. Это сообщение может быть прочитано с помощью команды `dmesg`.

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

Стандартное значение `kern.maxfile` определяется переменной `maxusers` в вашем файле конфигурации ядра. Значение `kern.maxfiles` увеличивается пропорционально значению `maxusers`. При компилировании ядра, нужно установить эту переменную согласно потребностям вашей системы. Исходя из значения этой переменной, ядро устанавливает значения большинства предопределённых переменных. Даже если предполагается, что к компьютеру не будут одновременно подсоединяться 256 пользователей, требуемые ресурсы могут быть такими же, как у крупномасштабного сервера.

Система автоматически настроит `maxusers`, если вы явно установите его в `0`[5]. Если вы желаете выставить значение самостоятельно, то задайте `maxusers` по меньшей мере равным 4, особенно если вы используйте X Window System или компилируйте программное обеспечение. Причина в том, что самая значимая таблица, устанавливаемая `maxusers` - это максимальное количество процессов, которая устанавливается равным `20 + 16 * maxusers`, и поэтому, если вы установите `maxusers` в 1, то вы сможете иметь только 36 одновременных процессов, включая 18 или около того, что система запустит во время загрузки и 15 или около того, что вы создадите при запуске X Window System. Даже простая задача, как чтение страницы справочника породит 9 процессов для фильтрации, декомпрессии и её просмотра. Установка `maxusers` в 64 позволит иметь вам до 1044 одновременных процессов, чего должно быть достаточно примерно для всех использований. Если, тем не менее, вы увидите пугающую ошибку proc table full при попытке запуска другой программы, или вы используйте сервер с большим количеством одновременных пользователей (как `ftp.FreeBSD.org`), то вы всегда можете увеличить значение и пересобрать систему.

> Замечание: `maxusers` не ограничивает количество пользователей, которые могут заходить на вашу машину. Оно просто устанавливает различные размеры таблиц в разумные значения, учитывая максимальное количество пользователей, вы вероятно будете иметь на вашей системе и как много процессов каждый из них сможет запускать. Ключевое слово, которое ограничивает количество одновременных удаленных входов и терминальных X окон - это `pseudo-device pty 16`. С FreeBSD 5.X вам не надо беспокоиться об этом значении, так как pty(4) драйвер является ''автоматически клонирующим''; вы просто используйте `device pty` в вашем конфигурационном файле.

#### 11.13.1.2. `kern.ipc.somaxconn`

Переменная sysctl `kern.ipc.somaxconn` ограничивает размер очереди для приема новых TCP соединений. Значение по умолчанию `128` слишком мало для надежной обработки новых соединений для нагруженного web сервера. Для такого сервера рекомендуется увеличить это значение до `1024` или выше. Даемон сервиса может сам ограничивать очередь приема новых соединений (например, sendmail(8), или Apache), но обычно в файле настройки даемона есть директива для настройки длины очереди. Более длинная очередь также помогает избежать атак Denial of Service (DoS).

### 11.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`, хотя может потребоваться увеличить его отдельно.

> Важно: Даже если сокет помечен как неблокирующий, вызов sendfile(2) на неблокирующем сокете может вызвать блокирование sendfile(2), пока не станет доступным достаточное количество `struct sf_buf`.

#### 11.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`.

#### 11.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) для получения желаемого эффекта. Уменьшение значений этих параметров может использоваться только как крайняя мера.

### 11.13.3. Виртуальная память

#### 11.13.3.1. `kern.maxvnodes`

Файлы и каталоги в ядре представлены при помощи vnode (виртуальных узлов). Увеличение их числа может помочь уменьшить нагрузку на дисковую подсистему. Как правило, специальной настройки это значение не требует, однако, в некоторых случаях дисковая активность является узким местом, и система исчерпывает таблицу vnode, значение этой переменной следует увеличить. При этом необходимо оценить объем неактивной и свободной памяти.

Текущее количество использованных vnode можно посмотреть при помощи команды:

    # sysctl vfs.numvnodes
    vfs.numvnodes: 91349

Максимальное количество vnode, доступных системе:

    # sysctl kern.maxvnodes
    kern.maxvnodes: 100000

Если количество использованных vnode близко к максимуму, значение переменной `kern.maxvnodes` следует увеличить на 1000. Следите за динамикой изменения `vfs.numvnodes`. Если оно увеличивается, приближаясь к вновь установленному максимуму, процесс следует повторить. Изменение в распределении памяти должно быть видно в выводе утилиты top(1): больше памяти перейдет в разряд активной.

## 11.14. Увеличение объема подкачки

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

За информацией о криптовании раздела подкачки обращайтесь к Разд. 17.17 данного Руководства.

### 11.14.1. Подкачка на новом жестком диске

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

### 11.14.2. Подкачка через NFS

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

### 11.14.3. Файлы подкачки

Вы можете создать файл определенного размера и использовать его как файл подкачки. В нашем примере будет использован файл `/usr/swap0` размером 64MB. Конечно, вы можете использовать любое имя.

Пример 11-1. Создание файла подкачки в FreeBSD

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

## 11.15. Управление питанием и ресурсами

Написал Hiten Pandya, Tom Rhodes.

Очень важно использовать аппаратные ресурсы эффективно. До того, как появился ACPI, управление потреблением питания и температурными характеристиками системы было очень сложной для операционной системы задачей. Аппаратное обеспечение контролировалось одним из видов встроенного интерфейса BIOS, таким как: Plug and Play BIOS (PNPBIOS), Advanced Power Management (APM) и так далее. Управление питанием и ресурсами это один из ключевых компонентов современной операционной системы. Например, вам может потребоваться, чтобы операционная система следила за температурными ограничениями и возможно, предупреждала при неожиданном росте температуры.

В этом разделе Руководства FreeBSD, мы предоставим исчерпывающую информацию о ACPI. В конце раздела есть ссылки для дальнейшего чтения.

### 11.15.1. Что такое ACPI?

Advanced Configuration and Power Interface (ACPI) это стандарт, написанный объединением поставщиков в целях предоставления стандартного интерфейса для аппаратных ресурсов и управления питанием (отсюда и название). Это ключевой элемент Operating System-directed configuration and Power Management, т.е.: он предоставляет операционной системе (OS) больше контроля и более универсален. Современные системы вышли за пределы ограничений существующих Plug and Play интерфейсов до появления ACPI. ACPI это прямой наследник APM (Advanced Power Management).

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

### 11.15.3. Настройка ACPI

loader(8) загружает драйвер `acpi.ko` по умолчанию, его не надо встраивать в ядро. Причина в том, что с модулями проще работать, например переключиться на другой `acpi.ko` без пересборки ядра. Преимущество в упрощении тестирования. Другая причина в том, что запуск ACPI после старта системы не очень полезен и при некоторых условиях может приводить к краху. Если вы сомневаетесь, отключите ACPI совсем. Драйвер не должен и не может быть выгружен, поскольку системная шина используется для различных взаимодействий оборудования. ACPI может быть выключен с помощью утилиты acpiconf(8). Фактически большинство взаимодействий с ACPI может быть выполнено через acpiconf(8). В основном это означает, что если в выводе dmesg(8) есть что-то об ACPI, он скорее всего работает.

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

В простейшей форме, ACPI может использоваться для перевода системы в спящий режим с помощью acpiconf(8), с флагом `-s` и параметром `1-5`. Большинству пользователей нужен только параметр `1`. Параметр `5` сделает ''мягкое'' завершение работы, так же как и:

    # halt -p

Доступны и другие параметры. Обратитесь к странице справочника acpiconf(8) за дополнительной информацией.

## 11.16. Использование и отладка FreeBSD ACPI

Написал Nate Lawson. При помощи Peter Schultz, Tom Rhodes.

ACPI это фундаментально новый способ обнаружения устройств, управления энергопотреблением и предоставления стандартизированного доступа к различному оборудованию, ранее управлявшемуся BIOS. Был достигнут определенный прогресс в приспособлении ACPI к работе со всеми системами, но все еще встречаются ошибки в байткоде ACPI Machine Language (AML) некоторых материнских плат, незавершенные участки кода в подсистемах ядра FreeBSD и ошибки в интерпретаторе Intel ACPI-CA.

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

### 11.16.1. Отправка отладочной информации

> Замечание: Перед отправкой сообщения об ошибке убедитесь, что у вас последняя версия BIOS, и, если доступна, последняя версия firmware встроенного контроллера.

Те из вас, кто желает составить сообщение о проблеме прямо сейчас, могут воспользоваться адресом freebsd-acpi@FreeBSD.org, отправив на него следующую информацию:

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

- Вывод dmesg(8) после ''boot `-v`'', включая все сообщения, появившиеся при изучении ошибки.

- Вывод dmesg(8) после ''boot `-v`'' с выключенным ACPI, если его отключение помогает решить проблему.

- Вывод `sysctl hw.acpi`. Это также хороший способ получения списка возможностей системы.

- URL где можно найти ваш ACPI Source Language (ASL). Не отправляйте ASL непосредственно в список рассылки, поскольку он может быть очень большим. Копия ASL может быть создана командой:

      # acpidump -t -d > name-system.asl

  (Замените вашим логином `name` и производителем/моделью `system`. Пример: `njl-FooCo6000.asl`)

Большинство разработчиков читают Список рассылки, посвящённый обсуждению FreeBSD-CURRENT, но для уверенности, что проблему увидят, отправьте ее в freebsd-acpi. Будьте терпеливы, все мы заняты полный рабочий день где-то еще. Если ваше сообщение не заметили сразу, мы возможно попросим вас отправить PR (сообщение о проблеме) через send-pr(1). При вводе PR, включайте ту же информацию, что запрошена выше. Это поможет нам отследить проблему и решить ее. Не отправляйте PR без предварительной отправки письма в freebsd-acpi, поскольку мы используем PR в качестве напоминаний о существующих проблемах, а не как механизм сообщений об ошибках. Вероятно, о вашей проблеме кто-то уже сообщал ранее.

### 11.16.2. Общие сведения

ACPI представлен во всех современных компьютерах, соответствующих архитектурам ia32 (x86), ia64 (Itanium) и amd64 (AMD). Полный стандарт включает множество возможностей, в том числе управление производительностью CPU, уровнем питания, температурой, различными системами аккумуляторов, встроенными контроллерами и опросом шины. В большинстве систем стандарт реализован не полностью. Например, настольные системы обычно реализуют только опрос шины, а портативные компьютеры кроме того могут поддерживать управление охлаждением и энергопотреблением. Они также поддерживают приостановку и последующий запуск системы различного уровня сложности.

ACPI-совместимые системы состоят из различных компонентов. Производители BIOS и чипсетов предоставляют различные жестко заданные таблицы, (например, FADT), которые определяют функции вроде карты APIC (используется для SMP), регистры настройки и простые значения параметров. Кроме того, предоставляется таблица байткода (Differentiated System Description Table, DSDT), определяющая древоподобное пространство имен устройств и методов.

Драйвер ACPI должен прочесть заданные таблицы, реализовать интерпретатор для байткода, модифицировать драйвера устройств и ядро для приема информации от подсистемы ACPI. Для FreeBSD Intel предоставила интерпретатор (ACPI-CA), тот же что для Linux и NetBSD. Исходный код ACPI-CA находится в каталоге `src/sys/contrib/dev/acpica`. Код для приспособления ACPI-CA к работе в FreeBSD, находится в `src/sys/dev/acpica/Osd`. Наконец, драйвера, реализующие различные ACPI устройства, находятся в `src/sys/dev/acpica`.

### 11.16.3. Часто встречающиеся проблемы

Для правильной работы ACPI все ее части должны работать правильно. Вот некоторые часто встречающиеся проблемы, в порядке частоты появления, и некоторые обходные пути или исправления.

#### 11.16.3.1. Проблемы с мышью

В некоторых случаях при возобновлении работы после приостановки перестает работать мышь. Известным решением проблемы является добавление строки `hint.psm.0.flags="0x3000"` в файл `/boot/loader.conf`. Если это не помогло, стоит сообщить о проблеме, как описано выше.

#### 11.16.3.2. Приостановка/возобновление работы

ACPI поддерживает три состояния приостановки в RAM (STR), `S1`-`S3`, и одно состояние приостановки на диск (`STD`), называемое `S4`. `S5` это ''мягкое выключение'' и это нормальное состояние системы, когда она подключена к сети, но не включена. `S4` может быть реализован двумя различными путями. `S4` BIOS это BIOS-поддерживаемая приостановка на диск. `S4` OS реализуется полностью операционной системой.

Начните с проверки переменных `sysctl hw.acpi`, относящихся к приостановке (suspend). Вот результат для Thinkpad:

    hw.acpi.supported_sleep_state: S3 S4 S5
    hw.acpi.s4bios: 0

Это означает, что мы можем использовать `acpiconf -s` для тестирования `S3`, `S4` OS, и `S5`. Если `s4bios` был единицей (`1`), это означает поддержку `S4` BIOS вместо `S4` OS.

При тестировании приостановки/возобновления работы, начните с `S1`, если этот режим поддерживается. Это состояние скорее всего поддерживается, поскольку не требует слишком серьезной поддержки со стороны драйвера. Никто не реализовал `S2`, который похож на `S1`. Следующий режим для тестирования это `S3`. Это наиболее глубокое STR состояние, оно требует существенной поддержки со стороны драйвера, чтобы правильно реинициализировать оборудование. Если у вас возникли проблемы при выходе из этого состояния, отправьте письмо в рассылку freebsd-acpi, но не ждите, что проблема будет обязательно решена, поскольку существует множество драйверов/оборудования, нуждающихся в дальнейшем тестировании и разработке.

Для изоляции проблемы удалите из ядра столько драйверов, сколько возможно. Если это работает, вы можете выяснить, какой драйвер вызывает проблему путем загрузки драйверов до тех пор, пока опять не произойдет сбой. Обычно бинарные драйвера, такие как `nvidia.ko`, драйвера дисплея X11 и USB вызывают большинство проблем, а драйвера Ethernet интерфейсов как правило работают отлично. Если вы можете нормально загрузить/выгрузить драйвера, автоматизируйте этот процесс, поместив соответствующие команды в `/etc/rc.suspend` и `/etc/rc.resume`. Это закомментированные примеры выгрузки и загрузки драйверов. Попробуйте установить параметр `hw.acpi.reset_video` в нуль (`0`), если ваш дисплей не включается после возобновления работы. Попробуйте установить большие или меньшие значения для `hw.acpi.sleep_delay`, чтобы проверить, поможет ли это.

Другой способ, который можно попробовать, это запуск последнего дистрибутива Linux с поддержкой ACPI и тестирование поддержки остановки/возобновления работы на том же оборудовании. Если она работает на Linux, проблема скорее всего в драйверах FreeBSD и поиск драйвера, вызывающего проблему, поможет разрешить ситуацию. Имейте ввиду, что разработчики ACPI обычно не поддерживают другие драйверы (звук, ATA, и т.п.), так что все результаты работы по поиску проблемы возможно необходимо отправить в список рассылки freebsd-current и человеку, поддерживающему драйвер. Если вы решитесь заняться отладкой, поместите соответствующий код (printf(3)) в вызывающий проблему драйвер для обнаружения места, где прерывается функция восстановления.

Наконец, попробуйте отключить ACPI и включить APM. Если приостановка/возобновление работает с APM, вам возможно лучше подойдет APM, особенно на старом оборудовании (до 2000). Включение корректной поддержки ACPI поставщиками оборудования требует времени и вероятно в старом оборудовании поддержка ACPI в BIOS была некорректна.

#### 11.16.3.3. Система останавливается (временно или постоянно)

Большинство систем останавливаются в результате потери прерываний или ''шторма'' прерываний. В чипсетах существует много проблем, связанных с тем, как BIOS настраивает прерывания перед загрузкой, правильностью таблицы APIC (MADT), и маршрутизации System Control Interrupt (SCI).

''Шторм'' прерываний может быть обнаружен по потерянным прерываниям путем проверки вывода строки с `acpi0` команды `vmstat -i`. Если счетчик увеличивается более, чем несколько раз в секунду, это ''шторм'' прерываний. Если система останавливается, попробуйте войти в DDB (CTRL+ALT+ESC на консоли) и ввести `show interrupts`.

Наиболее надежный способ избавиться от проблемы с прерываниями, это отключение поддержки APIC с помощью параметра `loader.conf` `hint.apic.0.disabled="1"`.

#### 11.16.3.4. Паника

Паника, связанная с ACPI, случается довольно редко и имеет наибольший приоритет исправления. Первый шаг это изоляция действий, приводящих к панике (если это возможно) и получение отладки. Следуйте инструкции по включению `options DDB` и настройке последовательной консоли (смотрите Разд. 23.6.5.3) или настройке раздела dump(8). Вы можете получить отладочную информацию DDB с помощью `tr`. Если вы записываете отладку вручную, убедитесь, что переписали как минимум пять (5) строк снизу и пять (5) строк сверху.

Затем попробуйте изолировать проблему, загрузившись с выключенным ACPI. Если это работает, вы можете изолировать подсистему ACPI, используя различные параметры `debug.acpi.disable`. Обратитесь к странице справочника acpi(4) за примерами.

#### 11.16.3.5. Система включается после приостановки или завершения работы

Во-первых, попробуйте установить в loader.conf(5) параметр `hw.acpi.disable_on_poweroff="0"`. Это предотвращает отключение различных событий в ACPI во время завершения работы. В некоторых системах этот параметр необходимо установить в `1` (по умолчанию) по тем же причинам. Обычно это решает проблему, если система неожиданно включается после приостановки или отключения питания.

#### 11.16.3.6. Другие проблемы

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

### 11.16.4. ASL, `acpidump`, и IASL

Наиболее часто встречается проблема, связанная с предоставлением поставщиками BIOS некорректного (или полностью ошибочного!) байткода. Это обычно проявляется появлением консольных сообщений ядра, подобных этому:

    ACPI-1287: *** Error: Method execution failed [\\_SB_.PCI0.LPC0.FIGD._STA] \\
           (Node 0xc3f6d160), AE_NOT_FOUND

Зачастую вы можете разрешить эти проблемы путем обновления BIOS до последней ревизии. Большинство консольных сообщений безвредны, но если существуют другие проблемы, такие как не работающий статус батареи, возможно существуют проблемы в AML. Байткод, известный как AML, компилируется из исходного текста на языке ASL. AML находится в таблице, известной как DSDT. Для получения копии ASL, используйте acpidump(8). Вы можете использовать оба параметра `-t` (показывать содержимое постоянных таблиц) и `-d` (дизассемблировать AML в ASL). Обратитесь к разделу Отправка отладочной информации за примером синтаксиса.

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

    # iasl your.asl

### 11.16.5. Исправление ASL

В дальней перспективе, наша задача состоит в том, чтобы обеспечить поддержку ACPI практически для каждой системы без вмешательства пользователя. Однако, на данный момент мы все еще разрабатываем обходные пути для ошибок, которые часто делают поставщики BIOS. Интерпретатор Microsoft (`acpi.sys` и `acpiec.sys`) не занимается проверкой четкости соблюдения стандартов, поэтому многие поставщики BIOS, проверяющие ACPI только под Windows, никогда не исправляют ASL. Мы надеемся продолжать обнаружение и документацию нестандартных поведений, позволяемых интерпретатором Microsoft, и воспроизводить их, чтобы FreeBSD могла работать без необходимости исправления ASL пользователями. В качестве обходного пути для обнаружения неправильного поведения, вы можете исправить ASL вручную. Если исправления будут работать, пожалуйста отправьте diff(1) между старым и новым ASL, чтобы мы могли реализовать обходной путь для неправильного поведения ACPI-CA, чтобы исправление вручную больше не требовалось.

Вот список наиболее часто встречающихся проблем, их причин и способы исправления:

#### 11.16.5.1. OS зависимости

Некоторые AML предполагают, что мир состоит из различных версий Windows. Вы можете настроить FreeBSD, чтобы она сообщала любое другое имя OS и посмотреть, исправит ли это имеющуюся проблему. Простой способ указания другого имени системы это установка переменной `/boot/loader.conf` `hw.acpi.osname="Windows 2001"` или в другое подобное значение, имеющееся в ASL.

#### 11.16.5.2. Отсутствие возврата значения

Некоторые методы не возвращают значение явно, как того требует стандарт. Хотя ACPI-CA не обрабатывает эту ситуацию, в FreeBSD существует обходной путь, позволяющей ей явно возвращать значение. Вы можете также добавить явные операторы Return (возврат) там, где требуется, если знаете, что значение должно быть возвращено. Для принудительного компилирования ASL командой `iasl`, используйте флаг `-f`.

#### 11.16.5.3. Перезапись AML по умолчанию

После настройки `your.asl` для компиляции запустите:

    # iasl your.asl

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

Файл `DSDT.aml` используется `iasl` по умолчанию. Вы можете загрузить его вместо ошибочной копии BIOS (которая остается в постоянной памяти) путем редактирования `/boot/loader.conf`:

    acpi_dsdt_load="YES"
    acpi_dsdt_name="/boot/DSDT.aml"

Убедитесь, что скопировали `DSDT.aml` в каталог `/boot`.

### 11.16.6. Получение отладочной информации ACPI

Возможности отладки драйвера ACPI очень гибкие. Они позволяют вам указывать набор подсистем, а также уровень отладки. Подсистемы, которые вы хотите отлаживать, указываются как ''слои'', и подразделяются на компоненты ACPI-CA (ACPI_ALL_COMPONENTS) и поддержку оборудования ACPI (ACPI_ALL_DRIVERS). Уровень отладки варьируется от ACPI_LV_ERROR (только сообщать об ошибках) до ACPI_LV_VERBOSE (все сообщения). Уровень отладки представляет собой битовую маску, поэтому возможна одновременная установка нескольких параметров, разделенных пробелами. На практике, при использовании для получения отладочной информации последовательной консоли, слишком большое количество информации может переполнить буфер консоли. Полный список отдельных слоев и уровней можно найти на странице справочника acpi(4).

Вывод отладочной информации по умолчанию не включен. Для его включения добавьте параметр `options ACPI_DEBUG` к файлу настройки ядра, если ACPI встроен в ядро. Вы можете добавить параметр `ACPI_DEBUG=1` в файл `/etc/make.conf` для глобального включения этого параметра. Если вы используете модуль `acpi.ko` , его можно пересобрать индивидуально:

    # cd /sys/modules/acpi/acpi
    && make clean && make
    ACPI_DEBUG=1

Установите `acpi.ko` в `/boot/kernel` и добавьте предпочитаемый уровень и слой к `loader.conf`. Этот пример включает отладочные сообщения для всех компонентов ACPI-CA и всех драйверов оборудования ACPI (CPU, LID и т.д.). Будут выводиться только сообщения об ошибках, наименьший уровень отладки.

    debug.acpi.layer="ACPI_ALL_COMPONENTS ACPI_ALL_DRIVERS"
    debug.acpi.level="ACPI_LV_ERROR"

Если требуемая информация получается в результате определенного события (скажем, приостановка и восстановление), вы можете не изменять `loader.conf` и использовать для указания слоя и уровня `sysctl` после загрузки и подготовки системы к определенному событию. Имена переменных `sysctl` те же, что и имена параметров настройки в `loader.conf`.

### 11.16.7. Ссылки

Дальнейшую информацию о ACPI можно найти по следующим ссылкам:

- Список рассылки FreeBSD ACPI

- Архивы списка рассылки ACPI http://lists.freebsd.org/pipermail/freebsd-acpi/

- Старые архивы списка рассылки ACPI http://home.jp.FreeBSD.org/mail-list/acpi-jp/

- Спецификация ACPI 2.0 http://acpi.info/spec.htm

- Страницы справочника FreeBSD: acpi(4), acpi_thermal(4), acpidump(8), iasl(8), acpidb(8)

- Ресурс по отладке DSDT. (Использует в качестве примера Compaq, но обычно полезен.)

# Глава 12. Процесс загрузки FreeBSD

Перевод на русский язык: Андрей Захватов.

## 12.1. Описание

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

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

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

- Из каких частей состоит система начальной загрузки FreeBSD, и как эти части взаимодействуют.

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

- Основы работы device.hints(5)

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

## 12.2. Проблема загрузки

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

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

На оборудовании архитектуры x86 за загрузку операционной системы отвечает BIOS (Basic Input/Output System). Для этого BIOS ищет на жестком диске MBR (Master Boot Record), которая должна располагаться в определенном месте на диске. BIOS может загрузить и запустить MBR, и предполагается, что MBR может взять на себя остальную работу, связанную с загрузкой операционной системы.

Выполняемую часть MBR обычно называют менеджером загрузки (boot manager), в особенности если она взаимодействует с пользователем. В этом случае менеджер загрузки, как правило, занимает большее пространство на первом треке диска или внутри файловой системы ОС. (Менеджер загрузки иногда называют загрузчиком (boot loader), но во FreeBSD этот термин используется для описания более поздней фазы загрузки). Среди популярных менеджеров загрузки стоит отметить boot0 (он же Boot Easy, стандартный менеджер загрузки FreeBSD), Grub, GAG и LILO. Из перечисленных менеджеров загрузки в MBR помещается только boot0.

Если на вашем диске установлена только одна операционная система, то стандартной MBR будет достаточно. Такая MBR выполняет поиск на диске первого загрузочного (активного) слайса, после чего запускает с этого слайса код загрузки оставшейся части операционной системы. Утилита fdisk(8) по умолчанию устанавливает именно такую MBR, на основе файла `/boot/mbr`.

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

Оставшаяся часть системы начальной загрузки FreeBSD разделяется на три этапа. Первый этап запускается из MBR, и он знает достаточно для перевода компьютера в особое состояние и загрузки второго этапа. Второй этап может делать несколько больше до запуска третьего этапа. Третий этап заканчивает работу по загрузке операционной системы. Работа разделена на эти три этапа, потому что стандарты ПК ограничивают размеры программ, которые могут быть запущены на первом и втором этапах. Последовательное выполнение работ позволяет FreeBSD получить более гибкий загрузчик.

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

## 12.3. Менеджер загрузки и этапы загрузки

### 12.3.1. Менеджер загрузки

Код MBR или менеджера загрузки время от времени называют нулевой стадией процесса загрузки. В этом разделе мы обсудим два из упомянутых ранее менеджеров загрузки: boot0 и LILO.

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

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

Менеджер загрузки boot0: MBR, устанавливаемый программой установки FreeBSD или утилитой boot0cfg(8), основан на `/boot/boot0`. (`boot0` очень прост, так как программа в MBR может иметь размер, не превышающий 446 байт, так как часть первого сектора диска занята таблицей слайсов и сигнатурой `0x55AA`). Если вы установили boot0 и несколько операционных систем на ваш жесткий диск, то во время загрузки вы увидите нечто похожее на следующее:

Пример 12-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 и так далее. Если вы используете MBR нестандартного вида, воспользуйтесь boot0cfg(8).

Менеджер загрузки LILO: Для того, чтобы этот менеджер загрузки мог загружать FreeBSD, загрузите Linux и добавьте к существующему файлу конфигурации `/etc/lilo.conf` такие строки:

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

Укажите диск с основным разделом FreeBSD в терминах Linux, заменив `X` буквой диска, используемой в Linux, а `Y` -- номером основного раздела. Если вы используете диски SCSI, замените `/dev/hd` на `/dev/sd`. Строка `loader=/boot/chain.b` может быть опущена, если обе операционные системы находятся на одном диске. Теперь запустите `/sbin/lilo -v` для того, чтобы ваши изменения были восприняты системой, что должно быть подтверждено сообщениями на экране.

### 12.3.2. Этап первый, `/boot/boot1`, и этап второй, `/boot/boot2`

Концептуально первый и второй этапы загрузки являются частями одной и той же программы, в одной области диска. Из-за ограничений на объем дискового пространства они были разделены на две, но вы всегда должны устанавливать их вместе. Они копируются инсталлятором или утилитой bsdlabel (см. ниже) из общего файла `/boot/boot`.

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

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

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

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

Пример 12-2. Образец экрана `boot2`

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

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

    # bsdlabel -B diskslice

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

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

### 12.3.3. Третий этап, `/boot/loader`

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

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

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

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

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

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

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

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

autoboot `секунды`

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

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

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

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

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

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

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

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

      boot -s

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

      unload
      load kernel.old

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

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

  >     unload
  >     set kernel="kernel.old"
  >     boot-conf

- Для загрузки скрипта конфигурации ядра (автоматизированный скрипт, который выполняет то, что вы обычно делаете в конфигураторе ядра во время загрузки):

      load -t userconfig_script /boot/kernel.conf

#### 12.3.3.4. Загрузочные экранные заставки

Предоставил Joseph J. Barbish.

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

Есть два базовых окружения во FreeBSD. Первое -- это окружение командной строки текстовой виртуальной консоли. По завершении загрузки системы вам предоставляется консольное приглашение ввода логина. Второе окружение -- это графическое окружение рабочего стола X11. После установки X11 и одной из графических оболочек, таких как GNOME, KDE или XFce, становится возможным запуск рабочего стола Х11 командой `startx`.

Некоторые пользователи предпочитают графический интерфейс входа традиционному текстовому приглашению ввода логина. Менеджеры экранов, наподобие XDM для Xorg, gdm для GNOME, kdm для KDE (а также другие, доступные из коллекции портов), изначально предоставляют графический интерфейс входа. После успешного входа в систему они запускают соответствующий оконный менеджер.

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

##### 12.3.3.4.1. Экранная заставка в действии

В качестве заставки можно использовать лишь содержащие 256 цветов изображения формата BMP (`.bmp`) или изображения формата PCX (`.pcx`) от ZSoft. К тому же, для вывода на стандартный VGA адаптер, файл изображения заставки должен иметь разрешение не более 320 на 200 пикселей.

Чтобы можно было использовать изображения большего размера, вплоть до максимального 1024 на 768, активируйте поддержку VESA. Активация может быть осуществлена либо подключением модуля VESA во время загрузки системы, либо сборкой специализированного ядра с добавленной опцией `VESA` (смотрите Гл. 8). Поддержка режима VESA дает пользователям возможность отображать заставку, перекрывающую всю видимую область экрана.

Отображаемая во время загрузки заставка может быть убрана нажатием любой клавиши на клавиатуре.

С настройками по умолчанию заставка также становится хранителем экрана в консольном окружении. После некоторого бездействия экран сменится заставкой, яркость которой будет периодически изменяться от её максимального значения к минимальному и обратно. Подобное поведение заставки может быть переопределено добавлением строки `saver=` в `/etc/rc.conf`. В качестве значения опции `saver=` можно выбрать одно из встроенных имен хранителей экранов, а с полным перечнем можно ознакомиться на странице справочника splash(4). Хранитель экрана, используемый по умолчанию, называется ''warp''. Заметьте, что установка опции `saver=` в `/etc/rc.conf` воздействует исключительно на текстовые виртуальные консоли. Она не влияет на менеджеры экранов X11.

Несколько сообщений загрузчика, включая меню загрузки и счетчик, отображаются во время загрузки, даже если экран-заставка активирован.

Файлы-примеры с изображениями для заставок могут быть скачаны из галереи по адресу http://artwork.freebsdgr.org. Установив порт `sysutils/bsd-splash-changer`, между загрузками вы получите автоматическую смену случайно выбираемых изображений заставок.

##### 12.3.3.4.2. Активация экранной заставки

Файл изображения для заставки (`.bmp` или `.pcx`) следует разместить в корневой файловой системе, например в каталоге `/boot`.

Для работы заставки с разрешением, доступным при загрузке (256 цветов и не более 320х200 точек), отредактируйте `/boot/loader.conf`, добавив в него следующие строки:

    splash_bmp_load="YES"
    bitmap_load="YES"
    bitmap_name="/boot/splash.bmp"

Для получения больших разрешений видео режима (вплоть до максимального 1024x768), внесите в `/boot/loader.conf` следующие записи:

    vesa_load="YES"
    splash_bmp_load="YES"
    bitmap_load="YES"
    bitmap_name="/boot/splash.bmp"

Вышеприведённый пример подразумевает, что файл ``/boot/splash.bmp`` содержит изображение заставки. Если же требуется выводить файл формата PCX, то используйте следующие строки (в зависимости от необходимого разрешения может также потребоваться строка `vesa_load="YES"`):

    splash_pcx_load="YES"
    bitmap_load="YES"
    bitmap_name="/boot/splash.pcx"

Возможное имя файла не ограничено одним лишь словом ''splash''. Оно может выбираться произвольно, например: ``splash_640x400`.bmp` или ``blue_wave`.pcx`. Важен лишь тип файла: он должен быть либо BMP, либо PCX.

Далее приведены еще две полезные опции `loader.conf`:

`beastie_disable="YES"`

  Эта опция отключит меню загрузчика, но приглашение с обратным отсчетом останется. Даже при не отображаемом меню во время отсчета возможен выбор номера варианта загрузки.

`loader_logo="beastie"`

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

За более детальной информацией обратитесь к следующим страницам справочника: splash(4), loader.conf(5) и vga(4).

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

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

### 12.4.1. Флаги загрузки ядра

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

`-a`

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

`-C`

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

`-c`

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

`-s`

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

`-v`

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

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

## 12.5. Хинты устройств

Текст предоставил Tom Rhodes.

> Замечание: Эта функция присутствует только во 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` является ключевым словом хинта. В качестве ключевых слов могут применяться следующие опции:

- `at`: задаёт шину, к которой подключено устройство.

- `port`: задаёт начальный адрес используемого диапазона ввода/вывода (I/O).

- `irq`: задаёт используемый номер запроса на прерывание.

- `drq`: задаёт номер канала DMA.

- `maddr`: задаёт физический адрес памяти, занимаемый устройством.

- `flags`: устанавливает различные битовые флаги для устройства.

- `disabled`: если установлено в значение ''1'', то устройство не используется.

Драйверы устройств могут поддерживать (и даже требовать) другие хинты, здесь не перечисленные, поэтому рекомендуется просматривать справочные страницы по этим драйверам. Для получения дополнительной информации обратитесь к страницам справки по device.hints(5), kenv(1), loader.conf(5) и loader(8).

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

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

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

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

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

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

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

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

Пример 12-3. Незащищённая консоль в `/etc/ttys`

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

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

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

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

#### 12.6.3.1. Настройка ресурсов (rc)

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

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

## 12.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) для получения дополнительной информации.

> Замечание: Для управления электропитанием требуется наличие поддержки acpi(4) в ядре или в виде загруженного модуля.

# Глава 13. Пользователи и основы управления учетными записями

Предоставил Neil Blakey-Milner. Перевод на русский язык: Денис Пеплин.

## 13.1. Краткий обзор

FreeBSD позволяет одновременную работу множества пользователей на одном компьютере. Разумеется, только один пользователь может сидеть за клавиатурой и перед экраном в один момент времени [6], но любое количество пользователей может выполнять работу через сеть. Для использования системы у каждого пользователя должна быть учетная запись.

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

- Различия между разнообразными учетными записями в системе FreeBSD.

- Как добавлять учетные записи пользователей.

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

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

- Как устанавливать ограничения на использование ресурсов, например на использование памяти и времени CPU для учетных записей или групп учетных записей.

- Как использовать группы для упрощения управлением учетными записями.

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

- Понимание основ UNIX и FreeBSD (Гл. 3).

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

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

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

Имя пользователя

  Имя пользователя в том виде, в каком оно вводится в приглашение `login:`. Имена пользователей должны быть уникальны в пределах одного компьютера; не может быть двух пользователей с одинаковым именем пользователя. Существует множество правил для создания правильных имен пользователей, документированных в passwd(5); вы как правило будете использовать имена пользователей, состоящие из восьми или меньшего количества символов, все символы в нижнем регистре.

Пароль

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

ID пользователя (User ID, UID)

  The UID это номер, традиционно от 0 до 65535[7], используемый для однозначной идентификации пользователя в системе. Сама система FreeBSD для идентификации пользователей использует UID -- любая команда FreeBSD, позволяющая вам указывать имя пользователя, первым делом преобразует его к UID. Это означает, что вы можете создать несколько учетных записей с различными именами пользователей, но с одним UID. FreeBSD будет воспринимать эти учетные записи как одного пользователя. Маловероятно, что вам когда-либо это понадобится.

ID группы (Group ID, GID)

  GID это номер, традиционно от 0 до 65535[7], используемый для однозначной идентификации главной группы, к которой принадлежит пользователь. Группы это механизм для контроля доступа к ресурсам на основе GID пользователя вместо его UID. Это может значительно уменьшить размер некоторых файлов настройки. Кроме того, пользователь может быть включен более чем в одну группу.

Класс логина

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

Время изменения пароля

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

Время истечения действия учетной записи

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

Полное имя пользователя

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

Домашний каталог

  Домашний каталог это полный путь к каталогу в системе, в котором пользователь начнет работать после входа в систему. По общепринятому соглашению все домашние каталоги пользователей помещаются в `/home/`username`` или `/usr/home/`username``. Пользователи хранят личные файлы в домашнем каталоге и в любых подкаталогах, создаваемых внутри домашнего каталога.

Оболочка пользователя

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

Существует три основных типа учетных записей: суперпользователь, системные пользователи, и учетные записи пользователей. Учетная запись суперпользователя, обычно называемая `root`, используется для управления системой без ограничения привилегий. Системные пользователи запускают сервисы. Наконец, учетные записи пользователей необходимы обычным людям для входа в систему, чтения почты, и так далее.

## 13.3. Учетная запись суперпользователя

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

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

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

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

## 13.4. Системные учетные записи

Системные пользователи предназначены для запуска сервисов, таких как DNS, почта, веб серверы и так далее. Это необходимо по соображениям безопасности; если все сервисы работают от суперпользователя, они могут действовать без ограничений.

Примеры системных пользователей это `daemon`, `operator`, `bind` (для Domain Name Service, DNS), `news` и `www`.

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

## 13.5. Учетные записи пользователей

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

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

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

## 13.6. Изменение учетных записей

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

Команда | Краткое описание
--- | ---
adduser(8) | Рекомендуемое приложение командной строки для добавления новых пользователей.
rmuser(8) | Рекомендуемое приложение командной строки для удаления пользователей.
chpass(1) | Гибкий инструмент для изменения информации в базе данных пользователей.
passwd(1) | Простой инструмент командной строки для изменения паролей пользователей.
pw(8) | Мощный и гибкий инструмент для изменения любой информации, связанной с учетными записями пользователей.

### 13.6.1. `adduser`

adduser(8) это простая программа для добавления новых пользователей. Она создает записи в системных файлах `passwd` и `group`. Она также создает домашний каталог для нового пользователя, копируя файлы настройки по умолчанию (''dotfiles'', файлы имя который начинается с символа `.`) из `/usr/share/skel` и опционально может отправлять новому пользователю приветственное сообщение.

Пример 13-1. Добавление пользователя в FreeBSD

    # adduser
    Username: jru
    Full name: J. Random User
    Uid (Leave empty for default):
    Login group [jru]:
    Login group is jru. Invite jru into other groups? []: wheel
    Login class [default]:
    Shell (sh csh tcsh zsh nologin) [sh]: zsh
    Home directory [/home/jru]:
    Use password-based authentication? [yes]:
    Use an empty password? (yes/no) [no]:
    Use a random password? (yes/no) [no]:
    Enter password:
    Enter password again:
    Lock out the account after creation? [no]:
    Username   : jru
    Password   : ****
    Full Name  : J. Random User
    Uid        : 1001
    Class      :
    Groups     : jru wheel
    Home       : /home/jru
    Shell      : /usr/local/bin/zsh
    Locked     : no
    OK? (yes/no): yes
    adduser: INFO: Successfully added (jru) to the user database.
    Add another user? (yes/no): no
    Goodbye!
    #

> Замечание: Пароль, который вы вводите, не отображается, ''звездочки'' при вводе пароля также не отображаются. Убедитесь, что вы не ошиблись при вводе пароля.

### 13.6.2. `rmuser`

Для полного удаления пользователя из системы вы можете использовать rmuser(8). Эта программа выполняет следующие действия:

1. Удаление записи пользователя из crontab(1) (если она присутствует).

2. Удаляет задачи at(1), принадлежащие пользователю.

3. Уничтожает все процессы, принадлежащие пользователю.

4. Удаляет пользователя из локального файла паролей.

5. Удаляет домашний каталог пользователя (если он принадлежит пользователю).

6. Удаляет принадлежащую пользователю входящую почту из `/var/mail`.

7. Удаляет все файлы, принадлежащие пользователю, из каталогов с временными файлами, например `/tmp`.

8. Наконец, удаляет имя пользователя из всех групп, которым оно принадлежит, в `/etc/group`.

   > Замечание: Если после этого удаления группа остается пустой и имя группы совпадает с именем пользователя, она удаляется; Это необходимо для удаления пользовательских уникальных групп, создаваемых adduser(8).

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

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

Пример 13-2. Интерактивное удаление учетной записи с помощью `rmuser`

    # rmuser jru
    Matching password entry:
    jru:*:1001:1001::0:0:J. Random User:/home/jru:/usr/local/bin/zsh
    Is this the entry you wish to remove? y
    Remove user's home directory (/home/jru)? y
    Updating password file, updating databases, done.
    Updating group file: trusted (removing group jru -- personal group is empty) done.
    Removing user's incoming mail file /var/mail/jru: done.
    Removing files belonging to jru from /tmp: done.
    Removing files belonging to jru from /var/tmp: done.
    Removing files belonging to jru from /var/tmp/vi.recover: done.
    #

### 13.6.3. `chpass`

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

Только системные администраторы с правами суперпользователя могут изменять информацию и пароли других пользователей с помощью chpass(1).

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

> Замечание: После выхода из редактора будет запрошен пароль (если вы не суперпользователь).

Пример 13-3. Интерактивная работа с `chpass` суперпользователя

    #Changing user database information for jru.
    Login: jru
    Password: *
    Uid [#]: 1001
    Gid [# or name]: 1001
    Change [month day year]:
    Expire [month day year]:
    Class:
    Home directory: /home/jru
    Shell: /usr/local/bin/zsh
    Full Name: J. Random User
    Office Location:
    Office Phone:
    Home Phone:
    Other information:

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

Пример 13-4. Интерактивная работа с `chpass` обычного пользователя

    #Changing user database information for jru.
    Shell: /usr/local/bin/zsh
    Full Name: J. Random User
    Office Location:
    Office Phone:
    Home Phone:
    Other information:

> Замечание: chfn(1) и chsh(1) это всего лишь ссылки на chpass(1), как и ypchpass(1), ypchfn(1) и ypchsh(1). NIS поддерживается автоматически, так что указание `yp` перед командой не обязательно. Если это непонятно, не беспокойтесь, NIS будет рассмотрен в Гл. 26.

### 13.6.4. `passwd`

passwd(1) это обычный способ изменения собственного пароля пользователя, или пароля другого пользователя суперпользователем.

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

Пример 13-5. Изменение пароля

    % passwd
    Changing local password for jru.
    Old password:
    New password:
    Retype new password:
    passwd: updating the database...
    passwd: done

Пример 13-6. Изменение пароля другого пользователя суперпользователем

    # passwd jru
    Changing local password for jru.
    New password:
    Retype new password:
    passwd: updating the database...
    passwd: done

> Замечание: Как и с chpass(1), yppasswd(1) это всего лишь ссылка на passwd(1), так что NIS работает с обеими командами.

### 13.6.5. `pw`

pw(8) это утилита командной строки для создания, удаления, модифицирования и отображения пользователей и групп. Она функционирует как внешний интерфейс к системным файлам пользователей и групп. У pw(8) очень мощный набор параметров командной строки, что делает это программу подходящей для использования в shell скриптах, но новым пользователям она может показаться более сложной, чем другие представленные здесь команды.

## 13.7. Ограничение пользователей

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

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

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

Классы учетных записей определяются в `/etc/login.conf`. Описание полной семантики выходит за пределы обсуждаемого здесь материала, она детально описана в странице справочника login.conf(5). Достаточно сказать, что каждому пользователю присвоен класс (`default` по умолчанию), и каждому классу присвоен набор характеристик. Характеристика определяется в виде пары ``имя`=`значение``, где `имя` это определенный идентификатор, а `значение` это произвольная строка, обрабатываемая в зависимости от имени. Настройка классов и характеристик довольно проста и также описана в login.conf(5).

> Замечание: Система, как правило, не читает настройки в `/etc/login.conf` непосредственно, она обращается к файлу базы данных `/etc/login.conf.db` для ускорения доступа к данным. Для создания `/etc/login.conf.db` из `/etc/login.conf`, выполните следующую команду:

>     # cap_mkdb /etc/login.conf

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

Ниже приведен список наиболее часто используемых ограничений на ресурсы (остальные, вместе с другими характеристиками можно найти в login.conf(5)).

`coredumpsize`

  Ограничение на размер файла core, генерируемого программой, по очевидным причинам подчиняющееся другим ограничениям на используемое дисковое пространство (например, `filesize`, или дисковые квоты). Тем не менее, оно часто используется как менее строгий метод контролирования потребления дискового пространства: поскольку пользователь не создает файлы core самостоятельно, и зачастую не удаляет их, установка этого параметра может предохранить его от выхода за пределы дисковых квот, если большая программа (например, emacs) создаст core файл.

`cputime`

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

  > Замечание: Это ограничение потребляемого времени CPU, а не процентов использования CPU, которые отображаются в некоторых полях top(1) и ps(1). Ограничения на них на время написания этого материала невозможны и такие ограничения практически бесполезны: компилятор -- вполне законное приложение -- иногда может легко использовать почти 100% CPU.

`filesize`

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

`maxproc`

  Это максимальное число процессов, которые могут быть запущены пользователем. В это число включаются и консольные и фоновые процессы. По очевидным причинам, они не могут быть больше, чем системное ограничение, указываемое через переменную sysctl(8) `kern.maxproc`. Имейте ввиду, что установка слишком жестких ограничений может стать помехой работе пользователя: зачастую полезно входить в систему с нескольких консолей или использовать каналы. Некоторые задачи, такие как компиляция большой программы, также порождают множество процессов (например, make(1), cc(1) и другие препроцессоры).

`memorylocked`

  Это максимальный объем памяти, блокировка которого может быть запрошена процессом (см. например mlock(2)). Некоторые критически важные для системы программы, такие как amd(8), блокируют память так, что при выгрузке они не создают системе дополнительных проблем.

`memoryuse`

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

`openfiles`

  Это максимальное количество файлов, которые могут быть открыты процессами. В FreeBSD, файлы также используются для представления сокетов и каналов IPC; не устанавливайте слишком маленькое значение. Ограничение этого параметра, устанавливаемое для всей системы, определяется переменной sysctl(8) `kern.maxfiles`.

`sbsize`

  Это ограничение потребляемого пользователем объема сетевой памяти, т.е. mbufs. Оно было введено как ответ на старые DoS атаки, при которых создавалось множество сокетов, но обычно может быть использовано и для ограничения сетевых соединений.

`stacksize`

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

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

- Процессам, загружаемым при старте системы скриптами `/etc/rc` присваивается класс `daemon`.

- Хотя `/etc/login.conf`, поставляемый с системой, это хороший источник подходящих значений для большинства ограничений, только вы, администратор, можете знать подходящие значения для вашей системы. Установка слишком слабых ограничений может повлечь злоупотребления системой, а установка слишком сильных ограничений может стать помехой производительности.

- Пользователи X Window System (X11) возможно должны получить больше ресурсов, чем другие пользователи. X11 сама по себе потребляет много ресурсов, а также провоцирует пользователей на одновременный запуск большего количества программ.

- Помните, что многие ограничения применяются к отдельным процессам, а не к пользователю вообще. Например, установка `openfiles` в 50 означает, что каждый процесс, запущенный пользователем, может открывать до 50 файлов. Таким образом, общее количество файлов, которые могут быть открыты пользователем, вычисляется как `openfiles`, помноженное на `maxproc`. Это также применимо к потребляемой памяти.

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

## 13.8. Группы

Группа это просто список пользователей. Группа идентифицируется по имени и GID (Group ID, идентификатор группы). В FreeBSD (и большинстве других UNIX-подобных системах) ядро для определения прав процесса использует два фактора: его ID пользователя и список групп, которым он принадлежит. Когда вы слышите что-то о ''group ID'' пользователя или процесса, это обычно означает только первую группу из списка.

Имена групп связываются с ID групп в файле `/etc/group`. Это текстовый файл с четырьмя разделенными двоеточием полями. Первое поле это имя группы, второе это зашифрованный пароль, третье это ID группы, а четвертое это разделенный запятыми список членов группы. Этот файл может быть безопасно отредактирован вручную (предполагается, конечно, что вы не сделаете синтаксических ошибок!). За более полным описанием синтаксиса обратитесь к странице справочника group(5).

Если вы не хотите редактировать `/etc/group` вручную, используйте команду pw(8) для добавления и редактирования групп. Например, для добавления группы, называемой `teamtwo`, и проверки ее существования вы можете использовать:

Пример 13-7. Добавление группы с использованием pw(8)

    # pw groupadd teamtwo
    # pw groupshow teamtwo
    teamtwo:*:1100:

Число `1100` это ID группы `teamtwo`. На данный момент в, `teamtwo` нет членов, и поэтому она практически бесполезна. Давайте изменим эту ситуацию, добавив `jru` в группу `teamtwo`.

Пример 13-8. Составление списка членов группы с использованием pw(8)

    # pw groupmod teamtwo -M jru
    # pw groupshow teamtwo
    teamtwo:*:1100:jru

Аргумент к параметру `-M` это разделенный запятыми список пользователей, являющихся членами группы. Из предыдущих разделов мы знаем, что файл паролей также указывает группу для каждого пользователя. Пользователь автоматически добавляется системой к списку групп; пользователь не будет показан как член группы при использовании pw(8) `groupshow`, но эта информация будет показана при использовании id(1) или похожего инструмента. Другими словами, с этим параметром программа pw(8) работает только с файлом `/etc/group`; она никогда не будет пытаться получить дополнительную информацию из файла `/etc/passwd`.

Пример 13-9. Добавление нового члена группы с использованием pw(8)

    # pw groupmod teamtwo -m db
    # pw groupshow teamtwo
    teamtwo:*:1100:jru,db

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

Пример 13-10. Использование id(1) для определения принадлежности к группам

    % id jru
    uid=1001(jru) gid=1001(jru) groups=1001(jru), 1100(teamtwo)

Как вы можете видеть, `jru` является членом групп `jru` и `teamtwo`.

За дальнейшей информацией о pw(8), обратитесь к ее странице справочника, а за дополнительной информацией о формате файла `/etc/group` к странице справочника group(5).

# Глава 14. Безопасность

Большая часть этой главы была взята из страницы справочника security(7) которую написал Matthew Dillon. Перевод на русский язык: Денис Пеплин.

## 14.1. Краткое описание

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

FreeBSD предоставляет массу утилит и механизмов для обеспечения целостности и безопасности системы и сети.

После прочтения этой главы вы узнаете:

- Основные концепции безопасности системы, специфику FreeBSD.

- О различных механизмах шифрования в FreeBSD, таких как DES и MD5.

- Как настроить аутентификацию с использованием одноразовых паролей.

- Как настроить TCP Wrappers для использования с `inetd`.

- Как настроить KerberosIV в релизах FreeBSD до 5.0.

- Как настроить Kerberos5 в FreeBSD.

- Как настроить IPsec и создать VPN между компьютерами на FreeBSD/Windows.

- Как настроить и использовать OpenSSH, реализацию SSH в FreeBSD.

- Что такое ACL и как их использовать.

- Как использовать утилиту Portaudit для проверки пакетов сторонних разработчиков, установленных из Коллекции Портов.

- Как работать с сообщениями безопасности FreeBSD.

- Что такое Process Accounting и как активировать его во FreeBSD.

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

- Понимание основных концепций FreeBSD и интернет.

В этой книге рассмотрены и другие вопросы безопасности. Например, принудительный контроль доступа (Mandatory Access Control) рассматривается в Гл. 15, а брандмауэры в Гл. 27.

## 14.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` сервисов и suid/sgid исполняемых файлов.

3. Защита учётных записей пользователей.

4. Защита файла паролей.

5. Защита ядра, raw устройств и файловых систем.

6. Быстрое обнаружение несанкционированных изменений в системе.

7. Паранойя.

В следующем разделе этой главы эти темы изложены более подробно.

## 14.3. Защита FreeBSD

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

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

### 14.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, но и добавить требование смены пароля пользователем после определенного периода времени (скажем, раз в месяц).

### 14.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` может сделать вывод почти на любой пользовательский терминал. Если пользователь работает с терминальной программой или эмулятором с возможностью эмуляции клавиатуры, взломщик может потенциально сгенерировать поток данных, который заставит терминал пользователя ввести команду, и она будет запущена с правами этого пользователя.

### 14.3.3. Защита учётных записей пользователей

Учетные записи пользователей обычно сложнее всего защитить. Вы можете ввести драконовские ограничения доступа к служебным учётным записям, заменив их пароли на символ ''`*`'', но возможно не сможете сделать то же с обычными учётными записями пользователей. Если есть такая возможность, вы возможно сможете защитить учётные записи пользователей соответствующим образом. Если нет, просто более бдительно отслеживайте эти учётные записи. Использование ssh и Kerberos для учётных записей пользователей более проблематично, поскольку требует дополнительной административной работы и технической поддержки, но все же это решение лучше, чем файл с шифрованными паролями.

### 14.3.4. Защита файла паролей

Единственный абсолютно надежный способ это замена на `*` максимально возможного количества паролей и использование ssh или Kerberos для доступа к таким учётным записям. Хотя файл с шифрованными паролями (`/etc/spwd.db`) доступен для чтения только `root`, возможно, что нарушитель сможет получить доступ на чтение к этому файлу, даже если не получит права `root` на запись.

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

### 14.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` только для чтения. Необходимо заметить, что такие правила слишком жесткие и могут помешать обнаружению вторжения.

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

### 14.3.7. Паранойя

Немного паранойи никогда не повредит. Как правило, системный администратор может добавлять элементы безопасности в любом количестве, пока это не влияет на удобство, а также некоторое количество элементов безопасности, влияющих на удобство. Что даже более важно, системный администратор должен немного изменить их -- если вы используете рекомендации, например те, что даны в этом документе, они становятся известны атакующему, который также имеет доступ к этому документу. prospective attacker who also has access to this document.

### 14.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` в остальных случаях.

Вы также должны быть очень осторожны с сервисами, совершающими обратное подключение, например, с TCP Wrapper и его обратным identd-запросом, который может быть атакован напрямую. По этой причине возможность TCP Wrapper генерировать обратный 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, когда они генерируются слишком быстро. Используйте переменную sysctl `net.inet.icmp.icmplim`. Последний основной класс 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 секунды должна предотвратить таблицу маршрутизации от атак.

### 14.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`, который позволяет использовать ключи только с определенных компьютеров.

## 14.4. DES, MD5, и шифрование

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

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

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

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

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

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

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

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

## 14.5. Одноразовые пароли

FreeBSD использует для одноразовых паролей OPIE (One-time Passwords In Everything). OPIE по умолчанию использует MD5.

Есть три различных вида паролей, о которых мы поговорим ниже. Первый вид это ваш обычный пароль UNIX или пароль Kerberos; мы будем называть его ''пароль UNIX''. Второй вид это одноразовый пароль, сгенерированный программой OPIE opiekey(1) и принимаемый командой opiepasswd(1) и в приглашении login; мы будем называть их ''одноразовыми паролями''. Последний вид паролей это защищенные пароли, которые вы передаете программам `opiekey` (и иногда `opiepasswd`), и которые эти программы используют для создания одноразовых паролей; мы будем называть его ''защищенными паролями'' или просто ''паролями''.

Защищенный пароль не имеет никакого отношения к вашему паролю UNIX; они могут быть одинаковыми, но это не рекомендуется. Защищенные пароли OPIE не ограничены 8-ю символами, как старые UNIX пароли[8], они могут быть настолько длинными, насколько вы захотите. Очень часто используются пароли длиной в шесть или семь символов. По большей части система OPIE работает полностью независимо от системы паролей UNIX.

Помимо паролей, есть два других вида данных, важных для OPIE. Первый, известный как ''seed'' или ''ключ'', состоит из двух букв и пяти цифр. Другой, называемый ''счетчиком цикла'', это номер от 1 до 100. OPIE создает одноразовый пароль, соединяя ключ и защищенный пароль, а затем применяя MD4 столько раз, сколько указано счетчиком цикла и выдает результат в виде шести коротких слов на английском. Эти шесть слов на английском и есть ваш одноразовый пароль. Система аутентификации (как правило PAM) хранит последний использованный одноразовый пароль, и пользователь аутентифицируется если хэш вводимого пользователем пароля совпадает с предыдущим паролем. Поскольку используется односторонний хэш, невозможно сгенерировать следующий одноразовый пароль если получен предыдущий; счетчик цикла уменьшается после каждого успешного входа для поддержки синхронизации пользователя с программой login. Когда счетчик цикла уменьшается до 1, набор OPIE должен быть переинициализирован.

В каждой из обсуждаемых ниже систем задействованы три программы. Программа `opiekey` получает счетчик цикла, ключ и защищенный пароль и создает одноразовый пароль или последовательный список одноразовых паролей. Программа `opiepasswd` используется для инициализации OPIE соответственно, и для смены паролей, счетчиков цикла, или ключей; она принимает защищенный пароль или счетчик цикла, ключ и одноразовый пароль. Программа `opieinfo` проверяет соответствующий файл (`/etc/opiekeys`) и печатает текущий счетчик цикла и ключ вызывающего пользователя.

Мы рассмотрим четыре вида операций. Первая это использование `opiepasswd` через защищенное соединение для первоначальной настройки системы одноразовых паролей, или для изменения пароля или ключа. Вторая операция это использование в тех же целях `opiepasswd` через незащищенное соединение, в сочетании с `opiekey` через защищенное соединение. Третья это использование `opiekey` для входа через незащищенное соединение. Четвертая это использование `opiekey` для генерации набора ключей, которые могут быть записаны или распечатаны для соединения из места, где защищенное соединение недоступно.

### 14.5.1. Защищенная установка соединения

Для первоначальной настройки 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'' содержит информацию для вашего конкретного случая: имя пользователя, счетчик цикла и ключ. При входе система запомнит эти параметры и отправит их вам, поэтому их не надо запоминать. В последней строке находится одноразовый пароль, соответствующий этим параметрам и секретному паролю; если вы войдете в систему сразу, используйте этот одноразовый пароль.

### 14.5.2. Незащищенная установка соединения

Для инициализации или изменения защищенного пароля через незащищенное соединение, вам потребуется существующее защищенное соединение куда-то, где вы сможете запустить `opiekey`; это может быть shell на компьютере, которому вы доверяете. Вам потребуется также установить значение счетчика цикла (100 возможно подойдет), и задать ключ или использовать сгенерированный. Через незащищенное соединение (к компьютеру, на котором производится настройка), используйте команду `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. Затем, перед вводом пароля доступа введите те же параметры в вашем защищенном соединении или средстве доступа 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

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

### 14.5.3. Создание одного одноразового пароля

Как только вы настроите 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:

Кроме того, у OPIE есть полезная особенность (не показанная здесь): если вы нажмете Enter в приглашении на ввод пароля, включится эхо, и вы сможете увидеть то, что вводите. Это может быть очень полезно, если вы пытаетесь ввести пароль вручную, например с распечатки.

В этот момент вам потребуется сгенерировать одноразовый пароль, чтобы ввести его в приглашение. Это должно быть выполнено на защищенной системе, в которой вы можете запустить `opiekey` (есть версии для DOS, Windows и Mac OS). Им требуются значения счетчика цикла и ключ в качестве параметров командной строки. Вы можете скопировать и вставить их прямо из приглашения login компьютера, на который входите.

В защищенной системе:

    % 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

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

### 14.5.4. Создание нескольких одноразовых паролей

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

    % 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`. Обратите внимание, что каждая линия содержит как счетчик цикла, так и одноразовый пароль; вам может показаться удобным отрывать пароль после использования.

### 14.5.5. Ограничение использования UNIX® паролей

OPIE может ограничивать использование паролей UNIX на основе IP адреса. Соответствующий файл называется `/etc/opieaccess`, он существует по умолчанию. Обратитесь к opieaccess(5) за более подробной информацией об этом файле и о предосторожностях, которые вы должны предпринять при использовании этого файла.

Вот пример файла `opieaccess`:

    permit 192.168.0.0 255.255.0.0

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

Если ни одно из правил в `opieaccess` не сработало, поведением по умолчанию является запрет всех не-OPIE входов.

## 14.6. TCP Wrappers

Написал: Tom Rhodes.

Каждый, кто знаком с inetd(8), возможно когда-то слышал о TCP Wrappers. Но немногие полностью понимают их полезность в сетевой среде: большинство используют брандмауэр. Хотя его применимость очень широка, есть вещи, с которыми брандмауэр не может работать, такие как отправка текста обратно вызывающей стороне. Программное обеспечение уровня TCP может делать это и многое другое. В следующих нескольких разделах обсуждаются многие возможности TCP Wrappers, и, когда это необходимо, даются примеры настроек.

Программное обеспечение TCP Wrappers расширяет возможность `inetd` по поддержке каждого даемона. С ним становится возможным протоколирование, возврат сообщений вызывающей стороне, ограничение подключений внутренней сетью и т.п. Хотя некоторые из этих возможностей могут быть реализованы брандмауэром, TCP Wrappers не только предоставляют дополнительный уровень защиты, но и дают больше контроля над системой, чем это возможно с брандмауэром.

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

Поскольку рассматривается расширение к настройкам `inetd`, предполагается, что читатель ознакомился с разделом о настройке inetd.

> Замечание: Хотя программы, запускаемые из inetd(8), на самом деле не соответствуют термину ''даемоны'', существует традиция называть их именно так. Этот термин и используется в данном разделе.

### 14.6.1. Начальная настройка

Единственное требование для использования TCP Wrappers в FreeBSD это наличие в `rc.conf` параметров запуска `inetd` `-Ww`; это настройки по умолчанию. Конечно, ожидается также наличие правильной настройки `/etc/hosts.allow`, но syslogd(8) отправит сообщения в системный протокол если что-то не так.

> Замечание: В отличие от других реализаций TCP Wrappers, использование `hosts.deny` не поддерживается. Все параметры настройки должны быть помещены в `/etc/hosts.allow`.

В простейшей конфигурации, политика подключения сводится к разрешению или блокированию в зависимости от параметров в `/etc/hosts.allow`. Настройка в FreeBSD по умолчанию заключается в разрешении подключения к любому даемону, запущенному из `inetd`. Изменение этого поведения будет обсуждаться только после рассмотрения базовой настройки.

Базовая настройка обычно принимает форму `daemon : address : action`, где `daemon` это имя даемона, который запускается `inetd`. В поле `address` может находиться имя хоста, IP адрес, или IPv6 адрес, заключенный в квадратные скобки ([ ]). Поле action может принимать значения allow или deny, чтобы соответственно разрешать или запрещать доступ. Помните, что поиск правил производится до первого совпадения. При обнаружении совпадения применяется соответствующее правило и поиск прерывается.

Существуют и другие параметры, но они будут описаны в следующих разделах. Простая конфигурация может быть, например, такой: для разрешения соединений по протоколу POP3 к даемону `mail/qpopper`, в `hosts.allow` необходимо добавить следующие строки:

    # This line is required for POP3 connections:
    qpopper : ALL : allow

После добавления этой строки, `inetd` необходимо перезапустить. Это можно выполнить командой kill(1) или скриптом `/etc/rc.d/inetd` с параметром `restart`.

### 14.6.2. Расширенная конфигурация

У TCP Wrappers имеются дополнительные параметры; они дают дополнительные возможности контроля над соединениями. Иногда бывает полезно возвращать комментарий определенным хостам или при подключении к определенным даемонам. В других случаях может быть необходимо добавить запись в лог файл, или отправить письмо администратору. В определенных ситуациях сервис должен использоваться только для локальных соединений. Все это возможно с использованием параметров c шаблонами, символами подстановки и путем выполнения внешних команд. Следующие два раздела посвящены этим типам настроек.

#### 14.6.2.1. Внешние команды

Предположим ситуацию, в которой соединение должно быть запрещено, а о причине необходимо сообщить вызывающей стороне. Как это можно сделать? Соответствующую возможность предоставляет параметр `twist`. При попытке подключения выполняется команда или скрипт, заданный этим параметром. Пример дан в файле `hosts.allow`:

    # The rest of the daemons are protected.
    ALL : ALL \
            : severity auth.info \
            : twist /bin/echo "You are not welcome to use %d from %h."

В этом примере сообщение, ''You are not allowed to use `daemon` from `hostname`.'' будет возвращено от всех даемонов, которые не были предварительно настроены в файле доступа. Обратите внимание, что возвращаемое сообщение должно быть заключено в кавычки; из этого правила нет исключений.

> Внимание: Возможна реализация DoS атаки, когда группа атакующих производит множество запросов на подключение.

Возможно также использование параметра `spawn`. Как и параметр `twist`, параметр `spawn` подразумевает запрет соединения и может использоваться для запуска команд или скриптов. В отличие от `twist`, `spawn` не отправляет ответ вызывающей стороне. Например, следующая конфигурация:

    # We do not allow connections from example.com:
    ALL : .example.com \
            : spawn (/bin/echo %a from %h attempted to access %d >> \
              /var/log/connections.log) \
            : deny

отклонит все попытки соединения из домена `*.example.com`; имя хоста, IP адрес и даемон протоколируются в файл `/var/log/connections.log`.

Помимо приведенных выше символов подстановки, например %a, существует еще несколько символов. Обратитесь к странице hosts_access(5) справочной системы за полным списком.

#### 14.6.2.2. Параметры - шаблоны

До этого момента в примерах использовался шаблон `ALL`. Существуют и другие параметры, функциональность которых в дальнейшем может быть расширена. `ALL` соответствует любому даемону, домену или IP адресу. Другой доступный шаблон это `PARANOID`, который соответствует хосту, IP адрес которого может быть подделан. Другими словами, `paranoid` может быть использован для определения действия с хостами, IP адрес которых не соответствует имени хоста. Вот пример применения этого параметра:

    # Block possibly spoofed requests to sendmail:
    sendmail : PARANOID : deny

В этом примере все запросы на подключения к `sendmail` от хостов, IP адрес которых не соответствует имени хоста, будут отклонены.

> Предостережение: Использование `PARANOID` невозможно, если у клиента или сервера неправильно настроен DNS. В таких случаях необходимо вмешательство администратора.

Более подробная информация о шаблонах и их возможностях дана на странице hosts_access(5) справочной системы.

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

## 14.7. KerberosIV

Предоставил Mark Murray. Оригинальный текст предоставил Mark Dapoz.

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

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

### 14.7.1. Установка KerberosIV

Kerberos это опциональный компонент FreeBSD. Простейший способ установки этой программы это выбор `krb4` или `krb5` из sysinstall во время первой установки FreeBSD. Будет установлен ''eBones'' (KerberosIV) или ''Heimdal'' (Kerberos5) вариант Kerberos. Включение этих реализаций объясняется тем, что они разработаны вне США/Канады и доступны вне этих стран, поскольку на них не влияют ограничения на экспорт криптографического кода из США.

Кроме того, реализация MIT Kerberos доступна из Коллекции Портов в виде пакета `security/krb5`.

### 14.7.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`.

### 14.7.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

### 14.7.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

### 14.7.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

### 14.7.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.

### 14.7.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

### 14.7.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

## 14.8. 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, будут применены следующие обозначения:

- DNS домен (''зона'') example.org.

- Уникальный идентификатор Kerberos EXAMPLE.ORG.

> Замечание: Используйте действующие имена доменов при настройке Kerberos даже если вы будете использовать его во внутренней сети. Это позволит избежать проблем с DNS и гарантирует возможность связи с Kerberos под другими идентификаторами.

### 14.8.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.

### 14.8.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, `/etc/krb5.conf`:

    [libdefaults]
        default_realm = EXAMPLE.ORG
    [realms]
        EXAMPLE.ORG = {
            kdc = kerberos.example.org
            admin_server = kerberos.example.org
        }
    [domain_realm]
        .example.org = EXAMPLE.ORG

Обратите внимание что в файле `/etc/krb5.conf` подразумевается наличие у KDC полного имени `kerberos.example.org`. Вам потребуется добавить CNAME (синоним) к файлу зоны, если у KDC другое имя.

> Замечание: Для больших сетей с правильно настроенным сервером 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, необходимо наличие или полностью настроенного `/etc/krb5.conf` или минимально настроенного `/etc/krb5.conf` и правильно настроенного DNS сервера.

Создадим теперь базу данных 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

### 14.8.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) за подробной информацией.

### 14.8.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.

### 14.8.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`.

### 14.8.6. Подсказки, советы и решение проблем с Kerberos

- При использовании портов как Heimdal так и MIT Kerberos убедитесь, что в `PATH` версии Kerberos клиентов указаны перед их версиями в базовой системе.

- Все ли компьютеры в пределах данного realm синхронизированы по времени? Если нет, аутентификация может завершиться неудачно. Разд. 26.10 описывает как синхронизировать часы с использованием NTP.

- MIT и Heimdal успешно взаимодействуют. За исключением `kadmin`, протокол для которого не стандартизован.

- Если вы изменяете hostname, потребуется также изменить учётную запись `host/` и обновить keytab. Это также необходимо для специальных записей в keytab, таких как `www/` запись модуля Apache `www/mod_auth_kerb`.

- Все хосты под общим идентификатором должны разрешаться DNS (прямое и обратное разрешение), или как минимум через `/etc/hosts`. Записи CNAME будут работать, но записи A и PTR должны быть корректны и находиться на своем месте. Сообщение об ошибке не всегда интуитивно понятно: “`Kerberos5 refuses authentication because Read req failed: Key table entry not found`”.

- Некоторые операционные системы, способные работать в качестве клиентов KDC не устанавливают права для `ksu` в setuid `root`. Это означает, что `ksu` не работает, что хорошо является хорошей идеей для безопасности, но неудобно. Это не ошибка KDC.

- С MIT Kerberos, если вы хотите продлить действие доступа до значения большего, чем десять часов по умолчанию, используйте команду `modify_principal` в `kadmin` для изменения maxlife доступа к самой учётной записи и к учётной записи `krbtgt`. Затем возможно использование `kinit` с параметром `-l` для запроса доступа с большим временем действия.

- > Замечание: Если вы запускаете перехватчик пакетов на KDC для разрешения проблем, а затем запускаете `kinit` с рабочей станции, то увидите, что TGT посылается непосредственно при запуске `kinit` -- даже до того, как вы введете пароль! Объяснение в том, что сервер Kerberos свободно распространяет TGT (Ticket Granting Ticket) на каждый неавторизованный запрос; однако, каждый TGT зашифрован ключом, полученным из пароля пользователя. Следовательно, когда пользователь вводит свой пароль, он не отправляется на KDC, а используется для расшифровка TGT, который уже получен `kinit`. Если в процессе расшифровки получается правильный билет с правильным значением времени, у пользователя есть действующее ''удостоверение''. Это удостоверение содержит ключ сессии для установления безопасного соединения с сервером Kerberos, как и действующий TGT, зашифрованный ключом сервера Kerberos. Второй уровень шифрования недоступен пользователю, но позволяет серверу Kerberos проверять правильность каждого TGT.

- Если вы хотите установить большое время жизни доступа (например, неделю), и используете OpenSSH для соединения с компьютером, где хранится ''билет'', убедитесь, что параметр Kerberos `TicketCleanup` установлен в `no` в файле `sshd_config`, или билеты будут уничтожены при выходе из сеанса.

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

- При настройке файла `krb5.dict` на предотвращение использования определенных плохих паролей (страница справочника для `kadmind` кратко рассказывает об этом), запомните, что это применимо только к учётным записям, для которых действует политика паролей. Формат файла `krb5.dict` прост: одно слово на строку. Может помочь создание символической ссылки на `/usr/share/dict/words`.

### 14.8.7. Отличия от порта MIT

Основное различие между установками MIT и Heimdal относится к программе `kadmin`, которая имеет другой (но эквивалентный) набор команд и использует другой протокол. Если ваш KDC работает на MIT, вы не сможете использовать `kadmin` для удаленного администрирования KDC (и наоборот, по этой же причине).

Опции командной строки клиентов также могут немного отличаться для одинаковых задач. Рекомендуется следование инструкциям на MIT Kerberos Web-сайте (http://web.mit.edu/Kerberos/www/). Будьте внимательны при определении `PATH`: порт MIT устанавливается по умолчанию в `/usr/local/`, и если в `PATH` вначале указаны системные каталоги, вместо приложений MIT могут быть запущены системные приложения.

> Замечание: С портом MIT `security/krb5`, предоставляемым FreeBSD, убедитесь что файл `/usr/local/share/doc/krb5/README.FreeBSD` установлен портом, если вы хотите понять почему вход через `telnetd` и `klogind` иногда происходит так странно. Наиболее важно, исправление ''incorrect permissions on cache file'' требует использования бинарного файла `login.krb5` для аутентификации, чтобы права на переданное удостоверение передавались правильно.

### 14.8.8. Преодоление ограничений, обнаруженных в Kerberos

#### 14.8.8.1. Kerberos это все или ничего

Каждый сервис, работающий в сети, должен быть модифицирован для работы с Kerberos (или другим способом защищен от атак по сети) или удостоверения пользователей могут быть украдены или использованы повторно. В качестве примера может быть приведено использование Kerberos версий оболочек для удаленной работы (например через `rsh` и `telnet`), при наличии POP3 сервера, получающего пароли в незашифрованном виде.

#### 14.8.8.2. Kerberos предназначен для однопользовательских рабочих станций

В многопользовательской среде Kerberos менее безопасен. Это потому, что он хранит билеты в каталоге `/tmp`, которая доступна для чтения всем. Если пользователь работает с несколькими другими пользователями одновременно на одном компьютере (т.е. в многопользовательской среде), возможна кража (копирование) билета другим пользователем.

Решить проблему можно с помощью параметра командной строки `-c` или (предпочтительно) с помощью переменной окружения `KRB5CCNAME`, но это делается редко. Для преодоления ограничения достаточно сохранять билет в домашнем каталоге пользователя и использовать простые ограничения на доступ к файлам.

#### 14.8.8.3. От KDC зависит вся система

Архитектура системы такова, что KDC должен быть максимально защищен, поскольку главный пароль базы данных содержится в нем. На KDC не должно быть запущено никаких других сервисов и он должен быть защищен физически. Опасность велика, поскольку Kerberos хранит все пароли зашифрованными одним ключом (''главным'' ключом), который хранится в файле на KDC.

Хорошей новостью является то, что кража главного ключа не станет такой проблемой, как может показаться. Главный ключ используется только для шифрования базы данных Kerberos и в качестве seed для генератора случайных чисел. Поскольку доступ к KDC защищен, атакующий мало что сможет сделать с главным ключом.

Кроме того, если KDC станет недоступен (возможно по причине атак DoS или проблем в сети) сетевые сервисы будет невозможно использовать, поскольку аутентификация не может быть выполнена. Уменьшить последствия можно при наличии нескольких KDC (один главный и один или несколько резервных) и с аккуратно реализованной резервной аутентификацией (отлично подойдет PAM).

#### 14.8.8.4. Недостатки Kerberos

Kerberos позволяет пользователям, хостам и сервисам производить аутентификацию друг друга. В нем нет механизма аутентификации KDC для пользователей, хостов или сервисов. Это означает, что поддельный `kinit` (например) может записывать все имена пользователей и паролей. Помочь решить проблему может `security/tripwire` или другой инструмент проверки целостности файловой системы.

### 14.8.9. Ресурсы и информация для дальнейшего изучения

- Kerberos FAQ

- Разработка системы аутентификации: диалог в четырех сценах

- RFC 1510, Kerberos Network Authentication Service (V5)

- Домашняя страница MIT Kerberos

- Домашняя страница Heimdal Kerberos

## 14.9. OpenSSL

Написал: Tom Rhodes.

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

OpenSSL может использоваться для шифрования соединений почтовых клиентов, транзакций через интернет, например для кредитных карт, и многого другого. Многие порты, такие как `www/apache13-ssl` и `mail/sylpheed-claws` собираются с OpenSSL.

> Замечание: В большинстве случаев в Коллекции Портов будет сделана попытка построения порта `security/openssl`, если только переменная `WITH_OPENSSL_BASE` не установлена явно в ''yes''.

Версия OpenSSL, включаемая в FreeBSD, поддерживает сетевые протоколы безопасности Secure Sockets Layer v2/v3 (SSLv2/SSLv3), Transport Layer Security v1 (TLSv1) и может быть использована в качестве основной криптографической библиотеки.

> Замечание: Хотя OpenSSL поддерживает алгоритм IDEA, по умолчанию он отключен из-за патентных ограничений Соединенных Штатов. Для его использования необходимо ознакомиться с лицензией, и, если ограничения приемлемы, установить в `make.conf` переменную `MAKE_IDEA`.

Наиболее часто OpenSSL используется для создания сертификатов, используемых программными пакетами. Эти сертификаты подтверждают, что данные компании или частного лица верны и не подделаны. Если рассматриваемый сертификат не был проверен одним из нескольких сертификационных центров (''Certificate Authorities'' - CA), обычно выводится предупреждение. Центр сертификации представляет собой компанию, такую, как VeriSign, которая подписывает сертификаты для подтверждения данных частных лиц или компаний. Эта процедура не бесплатна и не является абсолютно необходимой для использования сертификатов; однако может успокоить некоторых особо осторожных пользователей.

### 14.9.1. Генерирование сертификатов

Для генерирования сертификатов доступна следующая команда:

    # openssl req -new -nodes -out req.pem -keyout cert.pem
    Generating a 1024 bit RSA private key
    ................++++++
    .......................................++++++
    writing new private key to 'cert.pem'
    -----
    You are about to be asked to enter information that will be incorporated
    into your certificate request.
    What you are about to enter is what is called a Distinguished Name or a DN.
    There are quite a few fields but you can leave some blank
    For some fields there will be a default value,
    If you enter '.', the field will be left blank.
    -----
    Country Name (2 letter code) [AU]:US
    State or Province Name (full name) [Some-State]:PA
    Locality Name (eg, city) []:Pittsburgh
    Organization Name (eg, company) [Internet Widgits Pty Ltd]:My Company
    Organizational Unit Name (eg, section) []:Systems Administrator
    Common Name (eg, YOUR name) []:localhost.example.org
    Email Address []:trhodes@FreeBSD.org

    Please enter the following 'extra' attributes
    to be sent with your certificate request
    A challenge password []:SOME PASSWORD
    An optional company name []:Another Name

Ввод после приглашения ''Common Name'' содержит имя домена. Здесь вводится имя сервера для верификации; помещение в это поле чего-либо кроме этого имени приведет к созданию бесполезного сертификата. Доступны и другие параметры, например срок действия, альтернативные алгоритмы шифрования и т.д. Полный список находится на странице справочного руководства openssl(1).

В текущем каталоге, из которого была вызвана вышеуказанная команда, должны появиться два файла. Файл `req.pem` с запросом на сертификацию может быть послан в центр выдачи сертификатов, который проверит введённые вами подтверждающие данные, подпишет запрос и возвратит сертификат вам. Второй созданный файл будет иметь название `cert.pem` и содержать приватный сертификационный ключ, который необходимо тщательно защищать; если он попадёт в руки посторонних лиц, то может быть использован для имитации лично вас (или вашего сервера).

Когда подпись CA не требуется, может быть создан самоподписанный сертификат. Сначала создайте ключ RSA:

    # openssl dsaparam -rand -genkey -out myRSA.key 1024

Теперь создайте ключ CA:

    # openssl gendsa -des3 -out myca.key myRSA.key

Используйте этот ключ при создании сертификата:

    # openssl req -new -x509 -days 365 -key myca.key -out new.crt

В каталоге должно появиться два новых файла: подпись сертификата, `myca.key` и сам сертификат, `new.crt`. Они должны быть помещены в каталог, доступный для чтения только `root`, желательно внутри `/etc`. Права на каталог можно изменить `chmod` с параметрами 0700.

### 14.9.2. Использование сертификатов, пример

Итак, что могут сделать эти файлы? Хорошим применением может стать шифрование соединений для Sendmail MTA. Это сделает ненужным использование простой текстовой аутентификации для тех, кто отправляет почту через локальный MTA.

> Замечание: Это не лучшее из возможных использований, поскольку некоторые MUA выдадут ошибку, если сертификат не установлен локально. Обратитесь к поставляемой с программой документации за информацией по установке сертификата.

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

    dnl SSL Options
    define(`confCACERT_PATH',`/etc/certs')dnl
    define(`confCACERT',`/etc/certs/new.crt')dnl
    define(`confSERVER_CERT',`/etc/certs/new.crt')dnl
    define(`confSERVER_KEY',`/etc/certs/myca.key')dnl
    define(`confTLS_SRV_OPTIONS', `V')dnl

Где `/etc/certs/` это каталог для локального хранения сертификата и ключей. После настройки необходимо собрать локальный файл `.cf`. Это легко сделать, набрав `make` `install` в каталоге `/etc/mail`. Затем выполните команду `make` `restart`, которая должна запустить даемон Sendmail.

Если все пройдет нормально, в файле `/var/log/maillog` не появятся сообщения об ошибках и запустится процесс Sendmail.

Для проведения простого теста подключитесь к почтовому серверу программой telnet(1):

    # telnet example.com 25
    Trying 192.0.34.166...
    Connected to example.com.
    Escape character is '^]'.
    220 example.com ESMTP Sendmail 8.12.10/8.12.10; Tue, 31 Aug 2004 03:41:22 -0400 (EDT)
    ehlo example.com
    250-example.com Hello example.com [192.0.34.166], pleased to meet you
    250-ENHANCEDSTATUSCODES
    250-PIPELINING
    250-8BITMIME
    250-SIZE
    250-DSN
    250-ETRN
    250-AUTH LOGIN PLAIN
    250-STARTTLS
    250-DELIVERBY
    250 HELP
    quit
    221 2.0.0 example.com closing connection
    Connection closed by foreign host.

Если в выводе появилась строка ''STARTTLS'', все работает правильно.

## 14.10. VPN через IPsec

Написал Nik Clayton.

Создание VPN между двумя сетями, соединенными через интернет, с использованием шлюзов FreeBSD.

### 14.10.1. Принципы работы IPsec

Написал Hiten M. Pandya.

Этот раздел послужит вам руководством по настройке IPsec и его использованию в среде FreeBSD и Microsoft Windows 2000/XP, соединяемых безопасным способом. Для настройки IPsec необходимо ознакомиться с процессом сборки ядра (Гл. 8).

IPsec это протокол, расположенный поверх слоя Internet Protocol (IP). Он позволяет двум или более хостам связываться защищенным способом (отсюда и название протокола). ''Сетевой стек'' FreeBSD IPsec основан на реализации KAME, поддерживающей оба семейства протоколов, IPv4 и IPv6.

> Замечание: FreeBSD содержит ''аппаратно поддерживаемый'' стек IPsec, известный как ''Fast IPsec'', заимствованный из OpenBSD. Для оптимизации производительности IPsec он задействует криптографическое оборудование (когда оно доступно) через подсистему crypto(4). Это новая подсистема и она не поддерживает всех возможностей, доступных в KAME версии IPsec. Для включения IPsec с аппаратной поддержкой необходимо добавить в файл настройки ядра следующий параметр:

>     options      FAST_IPSEC  # new IPsec (cannot define w/ IPSEC)

> Обратите внимание, что на данный момент невозможно использовать подсистему ''Fast IPsec'' вместе с KAME реализацией IPsec. Обратитесь к странице справочника fast_ipsec(4) за дальнейшей информацией.

> Замечание: Для того, чтобы применять к туннелям gif(4) межсетевые экраны, вам потребуется включить в ядро опцию `IPSEC_FILTERGIF`:

>     options   IPSEC_FILTERGIF  #filter ipsec packets from a tunnel

IPsec состоит из двух подпротоколов:

- Encapsulated Security Payload (ESP), защищающей данные IP пакета от вмешательства третьей стороны путем шифрования содержимого с помощью симметричных криптографических алгоритмов (таких как Blowfish,3DES).

- Authentication Header (AH), защищающий заголовок IP пакета от вмешательства третьей стороны и подделки путем вычисления криптографической контрольной суммы и хеширования полей заголовка IP пакета защищенной функцией хеширования. К пакету добавляется дополнительный заголовок с хэшем, позволяющий аутентификацию информации пакета.

ESP и AH могут быть использованы вместе или по отдельности, в зависимости от обстоятельств.

IPsec может быть использован или для непосредственного шифрования трафика между двумя хостами (транспортный режим); или для построения ''виртуальных туннелей'' между двумя подсетями, которые могут быть использованы для защиты соединений между двумя корпоративными сетями (туннельный режим). Последний обычно называют виртуальной частной сетью (Virtual Private Network, VPN). За детальной информацией о подсистеме IPsec в FreeBSD обратитесь к странице справочника ipsec(4).

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

    options   IPSEC        #IP security
    options   IPSEC_ESP    #IP security (crypto; define w/ IPSEC)

Если желательна поддержка отладки IPsec, должна быть также добавлена следующая строка:

    options   IPSEC_DEBUG  #debug for IP security

### 14.10.2. Проблема

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

### 14.10.3. Сценарий: Две сети, подключенных к интернет, работающие как одна

Исходные условия таковы:

- Существует как минимум две сети

- Внутри обеих сетей используется IP

- Обе сети соединены через интернет через шлюз, работающий на FreeBSD.

- У шлюза каждой из сетей есть как минимум один публичный IP адрес.

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

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

Если две сети, которые вы пытаетесь соединить, используют один и тот же диапазон приватных адресов (например, обе используют `192.168.1.x`), номера в одной из сетей необходимо изменить.

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

Заметьте, что здесь присутствуют два публичных IP-адреса. В дальнейшем для их обозначения будут использоваться буквы. Если вы увидите эти буквы, замените их на свои публичные IP адреса. Также обратите внимание, что у обеих шлюзов внутренний адрес заканчивается на .1 и диапазоны приватных адресов двух сетей различны (`192.168.1.x` и `192.168.2.x` соответственно). Все компьютеры локальных сетей настроены на использование в качестве шлюза по умолчанию компьютера с адресом, оканчивающимся на `.1`.

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

Это означает, что (например) компьютер `192.168.1.20` может запустить

    ping 192.168.2.34

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

И все это безопасным способом. Это означает, что трафик между сетями зашифрован.

Создание VPN между этими двумя сетями это многошаговый процесс. Этапы создания VPN таковы:

1. Создание ''виртуального'' сетевого подключения между двумя сетями через интернет. Тестирование подключения с помощью таких инструментов как ping(8), чтобы убедиться, что оно работает.

2. Применение политики безопасности чтобы убедиться, что трафик между двумя сетями прозрачно шифруется и расшифровывается если необходимо. Тестирование с помощью таких инструментов как tcpdump(1), чтобы убедиться, что трафик шифруется.

3. Настройка дополнительных программ на шлюзах FreeBSD, чтобы компьютеры Windows из одной сети видели компьютеры в другой через VPN.

#### 14.10.3.1. Шаг 1: Создание и тестирование ''виртуального'' сетевого подключения

Предположим, что вы работаете на шлюзе сети #1 (с публичным адресом `A.B.C.D`, приватным адресом `192.168.1.1`) и запускаете `ping 192.168.2.1`, т.е. на приватный адрес машины с IP адресом `W.X.Y.Z`. Что должно произойти, чтобы это сработало?

1. Шлюз должен знать, как достичь `192.168.2.1`. Другими словами, у него должен быть маршрут к `192.168.2.1`.

2. Приватные IP адреса, такие как диапазон `192.168.x` не адресуются в интернет. Каждый пакет, отправляемый на `192.168.2.1` должен быть ''завернут'' в другой пакет. Исходным адресом пакета должен быть `A.B.C.D`, а адресом назначения `W.X.Y.Z`. Этот процесс называется инкапсуляцией.

3. Как только этот пакет достигнет `W.X.Y.Z`, необходимо будет ''декапсулировать'' его и доставить к `192.168.2.1`.

Как вы можете увидеть, это требует ''туннеля'' между двумя сетями. Два конца ''туннеля'' это IP адреса `A.B.C.D` и `W.X.Y.Z`. Туннель используется для передачи трафика с приватными IP адресами через интернет.

В FreeBSD этот туннель создается с помощью устройства generic interface, или `gif`. Как вы можете догадаться, интерфейс `gif` на каждом хосте должен быть настроен с четырьмя IP адресами; два для публичных IP адресов и два для приватных IP адресов.

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

    device gif

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

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

На шлюзе сети #1 для настройки туннеля вам потребуется запустить следующие две команды.

    ifconfig gif0 A.B.C.D W.X.Y.Z
    ifconfig gif0 inet 192.168.1.1 192.168.2.1 netmask 0xffffffff

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

    ifconfig gif0 W.X.Y.Z A.B.C.D
    ifconfig gif0 inet 192.168.2.1 192.168.1.1 netmask 0xffffffff

Затем вы можете запустить:

    ifconfig gif0

для просмотра настройки. Например, на шлюзе сети #1 вы увидите:

    # ifconfig gif0
    gif0: flags=8011<UP,POINTTOPOINT,MULTICAST> mtu 1280
    inet 192.168.1.1 --> 192.168.2.1 netmask 0xffffffff
    physical address inet A.B.C.D --> W.X.Y.Z

Как вы можете видеть, был создан туннель между физическими адресами `A.B.C.D` и `W.X.Y.Z`, для туннелирования разрешен трафик между `192.168.1.1` и `192.168.2.1`.

Это также добавляет запись к таблице маршрутизации на обеих машинах, вы можете проверить запись командой `netstat -rn`. Вот вывод этой команды на шлюзе сети #1.

    # netstat -rn
    Routing tables

    Internet:
    Destination      Gateway       Flags    Refs    Use    Netif  Expire
    ...
    192.168.2.1      192.168.1.1   UH        0        0    gif0
    ...

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

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

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

    ipfw add 1 allow ip from any to any via gif0

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

Этого достаточно для включения ping с одного шлюза на другой. На `192.168.1.1`, вы сможете запустить

    ping 192.168.2.1

и получить ответ, и аналогично на другом шлюзе.

Однако, машины в другой сети пока недоступны. Это из-за маршрутизации -- хотя шлюзы знают, как связаться друг с другом, они не знают, как связаться с сетью за другим шлюзом.

Для решения этой проблемы вы должны добавить статический маршрут на каждом шлюзе. Команда на первом шлюзе будет выглядеть так:

    route add 192.168.2.0 192.168.2.1 netmask 0xffffff00

Она говорит ''Для достижения хостов в сети `192.168.2.0`, отправляйте пакеты хосту `192.168.2.1`''. Вам потребуется запустить похожую команду на другом шлюзе, но с адресами `192.168.1.x`.

IP трафик с хостов в одной сети теперь может достичь хосты в другой сети.

Теперь создано две трети VPN между двумя сетями, поскольку это ''виртуальная (virtual)'' ''сеть (network)''. Она еще не приватная (private). Вы можете протестировать ее с помощью ping(8) и tcpdump(1). Войдите на шлюз и запустите

    tcpdump dst host 192.168.2.1

В другой сессии на этом же хосте запустите

    ping 192.168.2.1

Вы увидите примерно такие строки:

    16:10:24.018080 192.168.1.1 > 192.168.2.1: icmp: echo request
    16:10:24.018109 192.168.1.1 > 192.168.2.1: icmp: echo reply
    16:10:25.018814 192.168.1.1 > 192.168.2.1: icmp: echo request
    16:10:25.018847 192.168.1.1 > 192.168.2.1: icmp: echo reply
    16:10:26.028896 192.168.1.1 > 192.168.2.1: icmp: echo request
    16:10:26.029112 192.168.1.1 > 192.168.2.1: icmp: echo reply

Как вы видите, ICMP сообщения пересылаются вперед и назад незашифрованными. Если вы использовали с tcpdump(1) параметр `-s` для получения большего объема данных пакета, то увидите больше информации.

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

Резюме:

- Настройте оба ядра с ''device gif''.

- Отредактируйте `/etc/rc.conf` на шлюзе #1 и добавьте следующие строки (подставляя IP адреса где необходимо).

      gifconfig_gif0="A.B.C.D W.X.Y.Z"
      ifconfig_gif0="inet 192.168.1.1 192.168.2.1 netmask 0xffffffff"
      static_routes="vpn"
      route_vpn="192.168.2.0 192.168.2.1 netmask 0xffffff00"

- Отредактируйте скрипт брандмауэра (`/etc/rc.firewall`, или подобный) на обеих хостах и добавьте

      ipfw add 1 allow ip from any to any via gif0

- Выполните соответствующие изменения в `/etc/rc.conf` на шлюзе #2, меняя порядок IP адресов.

#### 14.10.3.2. Шаг 2: Защита соединения

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

Здесь будут рассмотрены два аспекта настройки.

1. У хостов должен быть способ согласования используемого алгоритма шифрования. Как только хосты договорятся об этом, можно говорить об установленном между ними ''безопасном соединении''.

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

Безопасное соединение и политика безопасности поддерживаются ядром, и могут быть изменены программами пользователя. Однако перед тем, как вы сможете сделать это, необходимо настроить поддержку протоколов IPsec и Encapsulated Security Payload (ESP) в ядре. Это делается добавлением в настройку ядра параметров:

    options IPSEC
    options IPSEC_ESP

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

При настройке параметров безопасности (security associations) у вас есть два варианта. Вы можете настроить их вручную для обеих хостов, задав алгоритм шифрования, ключи для шифрования и так далее, или использовать даемоны, реализующие Internet Key Exchange protocol (IKE), который сделает это за вас.

Рекомендуется последнее. Помимо прочего, этот способ более прост.

Редактирование и отображение политики безопасности выполняется с помощью setkey(8). По аналогии, `setkey` используется для настройки таблиц политики безопасности ядра так же, как route(8) используется для настройки таблиц маршрутизации ядра. `setkey` также может отображать текущие параметры безопасности, и продолжая аналогию дальше, это соответствует `netstat -r`.

Существует множество даемонов для управления параметрами безопасности в FreeBSD. Здесь будет описано использование одного из них, racoon -- он доступен в составе порта `security/ipsec-tools` в Коллекции Портов FreeBSD.

Даемон racoon должен работать на обеих шлюзах. На каждом из хостов он настраивается с IP адресом другого конца VPN, и секретным ключом (по вашему выбору, должен быть одним и тем же на обеих шлюзах).

Эти два даемона подключаются друг к другу, подтверждают, что они именно те, за кого себя выдают (используя секретный ключ, заданный вами). Затем даемоны генерируют новый секретный ключ и используют его для шифрования трафика через VPN. Они периодически изменяют этот ключ, так что даже если атакующий сломает один из ключей (что теоретически почти невозможно) это не даст ему слишком много -- он сломал ключ, который два даемона уже сменили на другой.

Настройки racoon сохраняются в файле `${PREFIX}/etc/racoon`. Этот файл не требует слишком больших изменений. Другим компонентом настройки racoon, который потребуется изменить, является ''предварительный ключ''.

В настройке по умолчанию racoon ищет его в файле `${PREFIX}/etc/racoon/psk.txt`. Необходимо отметить, что предварительный ключ не используется для шифрования трафика через VPN соединение это просто маркер, позволяющий управляющим ключами даемонам доверять друг другу.

`psk.txt` содержит строку для каждого удаленного сервера, с которым происходит соединение. В этом примере два сервера, каждый файл `psk.txt` будет содержать одну строку (каждый конец VPN общается только с другим концом.

На шлюзе #1 эта строка будет выглядеть примерно так:

    W.X.Y.Z            secret

То есть публичный IP-адрес противоположной стороны, пробел и текстовая строка c секретной фразой. Конечно, вам не стоит использовать в качестве ключевой фразы слово ''secret'' -- здесь применяются обычные правила выбора паролей.

На шлюзе #2 строка будет выглядеть примерно так:

    A.B.C.D            secret

То есть публичный IP адрес удаленной стороны и та же секретная фраза. Перед запуском racoon режим доступа к файлу `psk.txt` должен быть установлен в `0600` (т.е. запись и чтение только для `root`).

Вы должны запустить racoon на обоих шлюзах. Вам также потребуется добавить правила для включения IKE трафика, передающегося по UDP через порт ISAKMP (Internet Security Association Key Management Protocol). Опять же, они должны быть расположены насколько возможно ближе к началу набора правил.

    ipfw add 1 allow udp from A.B.C.D to W.X.Y.Z isakmp
    ipfw add 1 allow udp from W.X.Y.Z to A.B.C.D isakmp

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

Как только параметры безопасности установлены, вы можете просмотреть их используя setkey(8). Запустите

    setkey -D

на любом из хостов для просмотра информации о параметрах безопасности.

Это одна сторона проблемы. Другая сторона это настройка политики безопасности.

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

Каждый отправляемый IP пакет имеет заголовок, содержащий информацию о пакете. Заголовок включает IP адреса источника и назначения. Как мы уже знаем, приватные IP адреса, такие как `192.168.x.y`, не могут появиться в интернет. Они должны быть сначала включены внутрь другого пакета. В этом пакете приватные IP адреса источника и назначения заменяются публичными IP адресами.

То есть исходящий пакет, который выглядит примерно так:

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

Этой инкапсуляцией занимается устройство `gif`. Как вы можете видеть, теперь у пакета есть реальный IP адрес, исходный пакет был включен в этот пакет в виде данных, которые передаются через интернет.

Конечно, мы хотим зашифровать весь трафик между VPN. Вы можете сформулировать это на словах так:

''Если пакет отправляется с `A.B.C.D`, и предназначен для `W.X.Y.Z`, расшифровать его, используя необходимые параметры безопасности.''

''Если пакет отправляется с `W.X.Y.Z`, и предназначен для `A.B.C.D`, расшифровать его, используя необходимые параметры безопасности.''

Это похоже на желаемое, но не совсем то. Если вы сделаете это, весь трафик от и к `W.X.Y.Z`, даже если он не является частью VPN, будет зашифрован. Правильная политика такова:

''Если пакет отправляется с `A.B.C.D`, в нем инкапсулирован другой пакет и адрес назначения `W.X.Y.Z`, зашифровать его, используя необходимые параметры безопасности.''

''Если пакет отправляется с `W.X.Y.Z`, в нем инкапсулирован другой пакет и адрес назначения `A.B.C.D`, зашифровать его, используя необходимые параметры безопасности.''

Тонкое, но необходимое различие.

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

Настройка на шлюзе #1 (где есть публичный IP адрес `A.B.C.D`) для включения шифрования всего предназначенного `W.X.Y.Z` трафика:

    spdadd A.B.C.D/32 W.X.Y.Z/32 ipencap -P out ipsec esp/tunnel/A.B.C.D-W.X.Y.Z/require;

Поместите эти команды в файл (например, `/etc/ipsec.conf`) и запустите

    # setkey -f /etc/ipsec.conf

`spdadd` указывает setkey(8) добавить правило к базе данных политики безопасности. Остальная часть строки указывает какие пакеты будут соответствовать политике. `A.B.C.D/32` и `W.X.Y.Z/32` это IP адреса и сетевые маски, определяющие сети или хосты, к которым будет применяться данная политика. В данном случае мы хотим применить их к трафику между этими двумя хостами. Параметр `ipencap` сообщает ядру, что эта политика должна применяться только к пакетам, инкапсулирующим другие пакеты. Параметр `-P out` сообщает, что эта политика применяется к исходящим пакетам, и `ipsec` -- то, что пакеты будут зашифрованы.

Оставшаяся часть строки определяет, как эти пакеты будут зашифрованы. Будет использоваться протокол `esp`, а параметр `tunnel` показывает, что пакет в дальнейшем будет инкапсулирован в IPsec пакет. Повторное использование `A.B.C.D` и `W.X.Y.Z` предназначено для выбора используемых параметров безопасности, и наконец параметр `require` разрешает шифрование пакетов, попадающих под это правило.

Это правило соответствует только исходящим пакетам. Вам потребуется похожее правило, соответствующее входящим пакетам.

    spdadd W.X.Y.Z/32 A.B.C.D/32 ipencap -P in ipsec esp/tunnel/W.X.Y.Z-A.B.C.D/require;

Обратите внимание, что вместо `in` используется `out` и IP адреса переставлены.

Другому шлюзу (с публичным IP адресом `W.X.Y.Z`) потребуются похожие правила.

    spdadd W.X.Y.Z/32 A.B.C.D/32 ipencap -P out ipsec esp/tunnel/W.X.Y.Z-A.B.C.D/require;
    spdadd A.B.C.D/32 W.X.Y.Z/32 ipencap -P in ipsec esp/tunnel/A.B.C.D-W.X.Y.Z/require;

Наконец, вам потребуется добавить правила к брандмауэру для включения прохождения пакетов ESP и IPENCAP в обе стороны. На обеих хостах потребуется добавить следующие правила:

    ipfw add 1 allow esp from A.B.C.D to W.X.Y.Z
    ipfw add 1 allow esp from W.X.Y.Z to A.B.C.D
    ipfw add 1 allow ipencap from A.B.C.D to W.X.Y.Z
    ipfw add 1 allow ipencap from W.X.Y.Z to A.B.C.D

Поскольку правила симметричны, можно использовать их без изменения на обеих хостах

Исходящие пакеты теперь будут выглядеть примерно так:

Когда эти пакеты будут получены на удаленном конце VPN соединения, они будут расшифрованы (используя параметры безопасности, о которых договорился racoon). Затем они будут переданы интерфейсу `gif`, который ''развернет'' второй слой, оставив пакет с внутренними адресами, который сможет попасть во внутреннюю сеть.

Вы можете проверить безопасность тем же ping(8), который использовался ранее. Сначала войдите на шлюз `A.B.C.D` и запустите:

    tcpdump dst host 192.168.2.1

В другой сессии на том же хосте запустите

    ping 192.168.2.1

В этот момент вы должны увидеть примерно это:

    XXX tcpdump output

Теперь, как видите, tcpdump(1) показывает ESP пакеты. Если вы попытаетесь просмотреть их с параметром `-s`, то вероятно увидите нечто непонятное, поскольку применяется шифрование.

Поздравляем. Вы только что настроили VPN между двумя удаленными сетями.

Резюме

- Настройте оба ядра с:

      options IPSEC
      options IPSEC_ESP

- Установите `security/ipsec-tools`. Отредактируйте `${PREFIX}/etc/racoon/psk.txt` на обеих шлюзах, добавив запись для каждого IP адреса удаленного хоста и секретный ключ, который будет известен им обеим. Убедитесь, что режим доступа к файлу 0600.

- Добавьте к `/etc/rc.conf` на каждом хосте следующие строки:

      ipsec_enable="YES"
      ipsec_file="/etc/ipsec.conf"

- Создайте `/etc/ipsec.conf` на каждом хосте с необходимыми строками spdadd. На шлюзе #1 он будет таким:

      spdadd A.B.C.D/32 W.X.Y.Z/32 ipencap -P out ipsec
        esp/tunnel/A.B.C.D-W.X.Y.Z/require;
      spdadd W.X.Y.Z/32 A.B.C.D/32 ipencap -P in ipsec
        esp/tunnel/W.X.Y.Z-A.B.C.D/require;

  А на шлюзе #2 таким:

      spdadd W.X.Y.Z/32 A.B.C.D/32 ipencap -P out ipsec
        esp/tunnel/W.X.Y.Z-A.B.C.D/require;
      spdadd A.B.C.D/32 W.X.Y.Z/32 ipencap -P in ipsec
        esp/tunnel/A.B.C.D-W.X.Y.Z/require;

- Добавьте правила к брандмауэрам обеих хостов для включения IKE, ESP и IPENCAP трафика:

      ipfw add 1 allow udp from A.B.C.D to W.X.Y.Z isakmp
      ipfw add 1 allow udp from W.X.Y.Z to A.B.C.D isakmp
      ipfw add 1 allow esp from A.B.C.D to W.X.Y.Z
      ipfw add 1 allow esp from W.X.Y.Z to A.B.C.D
      ipfw add 1 allow ipencap from A.B.C.D to W.X.Y.Z
      ipfw add 1 allow ipencap from W.X.Y.Z to A.B.C.D

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

## 14.11. OpenSSH

Предоставил Chern Lee.

OpenSSH это набор сетевых инструментов, используемых для защищенного доступа к удаленным компьютерам. Он может быть использован в качестве непосредственной замены `rlogin`, `rsh`, `rcp` и `telnet`. Кроме того, через SSH могут быть безопасно туннелированы и/или перенаправлены произвольные TCP/IP соединения. OpenSSH шифрует весь трафик, эффективно предотвращая кражу данных, перехват соединения и другие сетевые атаки.

OpenSSH поддерживается проектом OpenBSD, он основан на SSH v1.2.12 со всеми последними исправлениями и обновлениями, совместим с протоколами SSH версий 1 и 2.

### 14.11.1. Преимущества использования OpenSSH

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

### 14.11.2. Включение sshd

В FreeBSD даемон sshd должен быть разрешен в процессе инсталляции. За запуск ответственна следующая строка в файле `rc.conf`:

    sshd_enable="YES"

При следующей загрузке системы будет запущен sshd(8), даемон для OpenSSH. Вы можете также воспользоваться скриптом `/etc/rc.d/sshd` системы rc(8) для запуска OpenSSH:

    /etc/rc.d/sshd start

### 14.11.3. SSH клиент

Утилита ssh(1) работает подобно rlogin(1).

    # ssh user@example.com
    Host key not found from the list of known hosts.
    Are you sure you want to continue connecting (yes/no)? yes
    Host 'example.com' added to the list of known hosts.
    user@example.com's password: *******

Вход продолжится так же, как если бы сессия была инициирована с использованием `rlogin` или `telnet`. SSH использует систему опознавательных ключей для проверки подлинности сервера при подключении клиента. Пользователю предлагается `yes` только при первом подключении. Дальнейшие попытки входа предваряются проверкой сохраненного ключа сервера. SSH клиент сообщит вам, если сохраненный ключ будет отличаться от только что полученного. Ключи серверов сохраняются в `~/.ssh/known_hosts`, или в `~/.ssh/known_hosts2` для SSH v2.

По умолчанию современные серверы OpenSSH настроены на приём только соединений SSH v2. Клиент будет использовать версию 2 там, где это возможно, а затем версию 1. Также, клиент можно заставить использовать конкретную версию при помощи опций `-1` и `-2` для указания соответствующей версии протокола. Версия 1 поддерживается ради совместимости со старыми серверами.

### 14.11.4. Безопасное копирование

Команда scp(1) работает подобно rcp(1); она копирует файл с удаленного компьютера, но делает это безопасным способом.

    # scp user@example.com:/COPYRIGHT COPYRIGHT
    user@example.com's password: *******
    COPYRIGHT            100% |*****************************|  4735       00:00
    #

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

Параметры, передаваемые scp(1), похожи на параметры cp(1), с файлом или файлами в качестве первого аргумента и приемником копирования во втором. Поскольку файлы файлы передаются по сети через SSH, один или более аргументов принимают форму `user@host:<path_to_remote_file>`.

### 14.11.5. Настройка

Системные файлы настройки для даемона и клиента OpenSSH расположены в каталоге `/etc/ssh`.

Файл `ssh_config` используется для настройки клиента, а `sshd_config` для даемона.

Кроме того, параметры `sshd_program` (по умолчанию `/usr/sbin/sshd`), и `sshd_flags` `rc.conf` дают дополнительные возможности настройки.

### 14.11.6. ssh-keygen

Вместо использования паролей, с помощью ssh-keygen(1) можно создать ключи DSA или RSA, которыми пользователи могут аутентифицироваться:

    % ssh-keygen -t dsa
    Generating public/private dsa key pair.
    Enter file in which to save the key (/home/user/.ssh/id_dsa):
    Created directory '/home/user/.ssh'.
    Enter passphrase (empty for no passphrase):
    Enter same passphrase again:
    Your identification has been saved in /home/user/.ssh/id_dsa.
    Your public key has been saved in /home/user/.ssh/id_dsa.pub.
    The key fingerprint is:
    bb:48:db:f2:93:57:80:b6:aa:bc:f5:d5:ba:8f:79:17 user@host.example.com

ssh-keygen(1) создаст пару публичного и приватного ключей, используемых для аутентификации. Приватный ключ сохраняется в `~/.ssh/id_dsa` или `~/.ssh/id_rsa`, а публичный в `~/.ssh/id_dsa.pub` или `~/.ssh/id_rsa.pub` (для ключей DSA и RSA соответственно). Для включения аутентификации по ключам публичный ключ должен быть помещен в файл `~/.ssh/authorized_keys` на удаленном компьютере.

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

Если при генерации ключей был использован пароль, каждый раз для при использовании приватного ключа он будет запрашиваться у пользователя. Для того, чтобы избежать непрерывного набора кодовой фразы, можно использовать утилиту ssh-agent(1), как описано в разделе Разд. 14.11.7 ниже.

> Внимание: Параметры и имена файлов могут различаться для разных версий OpenSSH, установленных в системе, для решения проблем обратитесь к странице справочника ssh-keygen(1).

### 14.11.7. Утилиты ssh-agent и ssh-add

Утилиты ssh-agent(1) и ssh-add(1) позволяют сохранять ключи SSH в памяти, чтобы не набирать кодовые фразы при каждом использовании ключа.

Утилита ssh-agent(1) обеспечивает процесс аутентификации загруженными в нее секретными ключами; для этого утилита ssh-agent(1) должна запустить внешний процесс. В самом простом случае это может быть шелл-процесс; в чуть более продвинутом -- оконный менеджер.

Для использования ssh-agent(1) совместно с шеллом, ssh-agent(1) должен быть запущен с именем этого шелла в качестве аргумента. После этого в его память при помощи утилиты ssh-add(1) могут быть добавлены необходимые ключи; при этом будут запрошены соответствующие кодовые фразы. Добавленные ключи могут затем использоваться для ssh(1) на машины, на которых установлены соответствующие публичные ключи:

    % ssh-agent csh
    % ssh-add
    Enter passphrase for /home/user/.ssh/id_dsa:
    Identity added: /home/user/.ssh/id_dsa (/home/user/.ssh/id_dsa)
    %

Для того чтобы использовать ssh-agent(1) в X11, вызов ssh-agent(1)должен быть помещен в файл `~/.xinitrc`. Это обеспечит поддержкой ssh-agent(1) все программы, запущенные в X11. Файл `~/.xinitrc` может выглядеть, например, так:

    exec ssh-agent startxfce4

При этом будет запущен ssh-agent(1), который, в свою очередь, вызовет запуск XFCE, при каждом старте X11. После запуска X11, выполните команду ssh-add(1) для добавления ваших SSH-ключей.

### 14.11.8. Туннелирование SSH

OpenSSH поддерживает возможность создания туннеля для пропуска соединения по другому протоколу через защищенную сессию.

Следующая команда указывает ssh(1) создать туннель для telnet:

    % ssh -2 -N -f -L 5023:localhost:23 user@foo.example.com
    %

Команда `ssh` используется со следующими параметрами:

`-2`

  Указывает `ssh` использовать версию 2 протокола (не используйте этот параметр, если работаете со старыми SSH серверами).

`-N`

  Означает использование в не-командном режиме, только для туннелирования. Если этот параметр опущен, `ssh` запустит обычную сессию.

`-f`

  Указывает `ssh` запускаться в фоновом режиме.

`-L`

  Означает локальный туннель в стиле `localport:remotehost:remoteport`.

`user@foo.example.com`

  Удаленный сервер SSH.

Туннель SSH создается путем создания прослушивающего сокета на определенном порту `localhost`. Затем все принятые на локальном хосту/порту соединения переправляются на через SSH на определенный удаленный хост и порт.

В этом примере, порт `5023` на `localhost` перенаправляется на порт `23` на `localhost` удаленного компьютера. Поскольку `23` это порт telnet, будет создано защищенное соединение telnet через туннель SSH.

Этот метод можно использовать для любого числа небезопасных протоколов, таких как SMTP, POP3, FTP, и так далее.

Пример 14-1. Использование SSH для создания защищенного туннеля на SMTP

    % ssh -2 -N -f -L 5025:localhost:25 user@mailserver.example.com
    user@mailserver.example.com's password: *****
    % telnet localhost 5025
    Trying 127.0.0.1...
    Connected to localhost.
    Escape character is '^]'.
    220 mailserver.example.com ESMTP

Этот метод можно использовать вместе с ssh-keygen(1) и дополнительными пользовательскими учётными записями для создания более удобного автоматического SSH туннелирования. Ключи могут быть использованы вместо паролей, и туннели могут запускаться от отдельных пользователей.

#### 14.11.8.1. Практические примеры SSH туннелирования

##### 14.11.8.1.1. Защищенный доступ к серверу POP3

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

    % ssh -2 -N -f -L 2110:mail.example.com:110 user@ssh-server.example.com
    user@ssh-server.example.com's password: ******

Когда туннель включен и работает, вы можете настроить почтовый клиент для отправки запросов POP3 на `localhost`, порт 2110. Соединение будет безопасно переправлено через туннель на `mail.example.com`.

##### 14.11.8.1.2. Прохождение через Драконовский Брандмауэр

Некоторые сетевые администраторы устанавливают на брандмауэрах драконовские правила, фильтруя не только входящие соединения, но и исходящие. Вам может быть разрешен доступ к удаленным компьютерам только по портам 22 и 80, для SSH и просмотра сайтов.

Вам может потребоваться доступ к другому (возможно, не относящемуся к работе) сервису, такому как Ogg Vorbis для прослушивания музыки. Если этот сервер Ogg Vorbis выдает поток не с портов 22 или 80, вы не сможете получить к нему доступ.

Решение состоит в создании SSH соединения с компьютером вне брандмауэра и использование его для туннелирования сервера Ogg Vorbis.

    % ssh -2 -N -f -L 8888:music.example.com:8000 user@unfirewalled-system.example.org
    user@unfirewalled-system.example.org's password: *******

Клиентскую программу теперь можно настроить на `localhost` порт 8888, который будет перенаправлен на `music.example.com` порт 8000, успешно обойдя брандмауэр.

### 14.11.9. Параметр ограничения пользователей `AllowUsers`

Зачастую хорошие результаты даёт ограничение того, какие именно пользователи и откуда могут регистрироваться в системе. Задание параметра `AllowUsers` является хорошим способом добиться этого. К примеру, для разрешения регистрации только пользователю `root` с машины `192.168.1.32`, в файле `/etc/ssh/sshd_config` нужно указать нечто вроде следующего:

    AllowUsers root@192.168.1.32

Для разрешения регистрации пользователя `admin` из любой точки, просто укажите имя пользователя:

    AllowUsers admin

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

    AllowUsers root@192.168.1.32 admin

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

После внесения изменений в `/etc/ssh/sshd_config` вы должны указать sshd(8) на повторную загрузку конфигурационных файлов, выполнив следующую команду:

    # /etc/rc.d/sshd reload

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

OpenSSH

ssh(1) scp(1) ssh-keygen(1) ssh-agent(1) ssh-add(1) ssh_config(5)

sshd(8) sftp-server(8) sshd_config(5)

## 14.12. Списки контроля доступа файловой системы (ACL)

Предоставил Tom Rhodes.

В дополнение к другим расширениям файловой системы, таким как снимки (snapshots), FreeBSD 5.0 и более поздние версии системы предлагают защиту с помощью списков контроля доступа файловой системы (File System Access Control Lists, ACLs).

Списки контроля доступа расширяют стандартную модель прав UNIX высоко совместимым (POSIX.1e) способом. Эта возможность позволяет администратору получить преимущество от использования более интеллектуальной модели безопасности.

Для включения поддержки ACL в файловой системе UFS, следующая строка:

    options UFS_ACL

должна быть добавлена в файл настройки ядра. Если параметр не добавлен, при попытке монтирования систем, поддерживающих ACL, появится предупреждающее сообщение. Этот параметр включен в ядро `GENERIC`. ACL основывается на дополнительных атрибутах, встроенных в файловую систему. Дополнительные атрибуты поддерживаются по умолчанию следующим поколением файловых систем UNIX, UFS2.

> Замечание: Для включения дополнительных атрибутов в UFS1 требуется больше усилий по сравнению с UFS2. Производительность дополнительных атрибутов в UFS2 также существенно выше. По этим причинам для работы с списками контроля доступа предпочтительно использование UFS2

ACL включаются во время монтирования флагом `acls`, который добавляется к `/etc/fstab`. Этот флаг также можно сделать постоянным с помощью tunefs(8), изменив флаг ACL в заголовке файловой системы. Вообще говоря, использование флага в суперблоке предпочтительно по нескольким причинам:

- Постоянный ACL флаг не может быть изменен путем перемонтирования системы (mount(8) `-u`), а только через umount(8) и mount(8). Это означает, что ACL нельзя включить на корневой файловой системе после загрузки. Это также означает, что вы не можете изменить флаг на используемой файловой системе.

- Установка флага в суперблоке приводит к постоянному монтированию файловой системы с включенным ACL, даже если нет записи в `fstab` или при смене порядка устройств. Это предотвращает случайное монтирование файловой системы без ACL, которое может повлечь за собой проблемы с безопасностью.

> Замечание: Мы можем изменить поведение ACL для включения флага без полного перемонтирования, но считаем, что желательно исключить случайное монтирование без ACL, поскольку вы можете попасть в неприятную ситуацию, если включите ACL, затем выключите их, затем опять включите без сброса расширенных атрибутов. Обычно, как только вы включили ACL в файловой системе, они не должны быть выключены, поскольку получающаяся защита файлов может быть не совместима с той, что применяется пользователями системы, и повторное включение ACL может подключить предыдущие списки контроля доступа к файлам, права на которые изменены, что приведет к непредсказуемому поведению.

Файловые системы с включенными ACLs показывают знак `+` при просмотре прав на файлы. Например:

    drwx------  2 robert  robert  512 Dec 27 11:54 private
    drwxrwx---+ 2 robert  robert  512 Dec 23 10:57 directory1
    drwxrwx---+ 2 robert  robert  512 Dec 22 10:20 directory2
    drwxrwx---+ 2 robert  robert  512 Dec 27 11:57 directory3
    drwxr-xr-x  2 robert  robert  512 Nov 10 11:54 public_html

Здесь мы видим, что каталоги `directory1`, `directory2`, и `directory3` используют преимущества ACL. Каталог `public_html` их не использует.

### 14.12.1. Использование ACL

ACL файловой системы можно просмотреть с помощью утилиты getfacl(1). Например, для просмотра настроек ACL файла `test`, может использоваться команда:

    % getfacl test
            #file:test
            #owner:1001
            #group:1001
            user::rw-
            group::r--
            other::r--

Для изменения ACL этого файла, вызовите утилиту setfacl(1). Выполните:

    % setfacl -k test

Параметр `-k` удалит все установленные на данный момент ACL из файла или файловой системы. Более предпочтительный метод это использование параметра `-b`, который оставит необходимые для работы ACL поля.

    % setfacl -m u:trhodes:rwx,group:web:r--,o::--- test

В вышеприведенной команде параметр `-m` использован для изменения записей ACL по умолчанию. Поскольку предустановленных записей не было (они были удалены предыдущей командой), эта команда восстановит параметры по умолчанию и задаст приведенные параметры. Имейте ввиду, при добавлении пользователя или группы, которых нет в системе, на `stdout` будет выведена ошибка “`Invalid argument`”.

## 14.13. Мониторинг вопросов безопасности в ПО сторонних разработчиков

Текст предоставил Том Родес.

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

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

Порт `security/portaudit` обращается к базе данных, обновляемой и поддерживаемой Группой информационной безопасности FreeBSD и разработчиками портов, для получения информации об известных проблемах с защитой.

Для того, чтобы приступить к использованию Portaudit, необходимо установить его из Коллекции Портов:

    # cd /usr/ports/security/portaudit && make install clean

В процессе установки будут обновлены конфигурационные файлы для periodic(8), в которые будет добавлена выдача Portaudit при ежедневном её запуске. Проверьте, что ежедневные сообщения электронной почты, касающиеся безопасности, которые посылаются на адрес `root`, прочитываются. Другой дополнительной настройки больше не понадобится.

После установки администратор может обновить базу данных и посмотреть список известных уязвимостей в установленных пакетах при помощи команды

    # portaudit -Fda

> Замечание: База данных будет автоматически обновлена при запуске periodic(8); таким образом, предыдущая команду можно полностью опустить. Она требуется только для следующих примеров.

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

    # portaudit -a

Утилита portaudit выдаст примерно следующее:

    Affected package: cups-base-1.1.22.0_1
    Type of problem: cups-base -- HPGL buffer overflow vulnerability.
    Reference: <http://www.FreeBSD.org/ports/portaudit/40a3bca2-6809-11d9-a9e7-0001020eed82.html>

    1 problem(s) in your installed packages found.

    You are advised to update or deinstall the affected package(s) immediately.

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

Если описывать вкратце, то Portaudit является мощной и, при использовании вместе с портом Portupgrade, чрезвычайно полезной утилитой.

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

Предоставил Tom Rhodes.

Как многие и высококачественные операционные системы, FreeBSD публикует ''Сообщения безопасности'' (''Security Advisories''). Эти сообщения обычно отправляются по почте в списки рассылки, посвященные безопасности и публикуются в списке проблем только после выхода исправлений к соответствующим релизам. В этом разделе разъясняется, что такое сообщения безопасности, как их читать и какие меры принимать для исправления системы.

### 14.14.1. Как выглядит сообщение?

Сообщение безопасности FreeBSD выглядит подобно сообщению ниже, взятому из списка рассылки freebsd-security-notifications.

    =============================================================================
    FreeBSD-SA-XX:XX.UTIL                                     Security Advisory
                                                              The FreeBSD Project

    Topic:          denial of service due to some problem

    Category:       core
    Module:         sys
    Announced:      2003-09-23
    Credits:        Person@EMAIL-ADDRESS
    Affects:        All releases of FreeBSD
                    FreeBSD 4-STABLE prior to the correction date
    Corrected:      2003-09-23 16:42:59 UTC (RELENG_4, 4.9-PRERELEASE)
                    2003-09-23 20:08:42 UTC (RELENG_5_1, 5.1-RELEASE-p6)
                    2003-09-23 20:07:06 UTC (RELENG_5_0, 5.0-RELEASE-p15)
                    2003-09-23 16:44:58 UTC (RELENG_4_8, 4.8-RELEASE-p8)
                    2003-09-23 16:47:34 UTC (RELENG_4_7, 4.7-RELEASE-p18)
                    2003-09-23 16:49:46 UTC (RELENG_4_6, 4.6-RELEASE-p21)
                    2003-09-23 16:51:24 UTC (RELENG_4_5, 4.5-RELEASE-p33)
                    2003-09-23 16:52:45 UTC (RELENG_4_4, 4.4-RELEASE-p43)
                    2003-09-23 16:54:39 UTC (RELENG_4_3, 4.3-RELEASE-p39)
    CVE Name:   CVE-XXXX-XXXX

    For general information regarding FreeBSD Security Advisories,
    including descriptions of the fields above, security branches, and the
    following sections, please visit
    http://www.FreeBSD.org/security/.

    I.   Background

    II.  Problem Description

    III. Impact

    IV.  Workaround

    V.   Solution

    VI.  Correction details

    VII. References

  Поле `Topic` показывает в чем именно заключается проблема. Это обычно введение в сообщение безопасности, упоминающее утилиту, в которой возникла ошибка.
  Поле `Category` относится к затронутой части системы и может быть выбрана из `core`, `contrib`, или `ports`. Категория `core` означает, что уязвимость затрагивает основной компонент операционной системы FreeBSD. Категория `contrib` означает, что уязвимость затрагивает программы, предоставленные проекту FreeBSD, например sendmail. Наконец, категория `ports` означает, что уязвимость затрагивает программное обеспечение, доступное из Коллекции Портов.
  Поле `Module` указывает на местоположение компонента, например `sys`. В этом примере мы видим, что затронут модуль `sys`, следовательно, эта уязвимость относится к компоненту, используемому в ядре.
  Поле `Announced` отражает дату публикации сообщения безопасности, или его анонсирования. Это означает, что команда обеспечения безопасности убедилась, что проблема существует и что патч помещён в хранилище исходных текстов FreeBSD.
  Поле `Credits` упоминает частное лицо или организацию, обнаружившую уязвимость и сообщившую о ней.
  Поле `Affects` дает информацию о релизах FreeBSD, к которым относится данная уязвимость. Для базовой системы, просмотр вывода команды `ident` для файлов, затронутых уязвимостью, поможет определить ревизию. Номер версии портов приведен после имени порта в каталоге `/var/db/pkg`. Если система не синхронизируется с CVS-хранилищем FreeBSD и не пересобирается ежедневно, высок шанс, что она затронута уязвимостью.
  Поле `Corrected` показывает дату, время, смещение во времени и релиз, в котором исправлена ошибка.
  Зарезервировано для идентификации уязвимости в общей базе данных CVD (Common Vulnerabilities Database).
  Поле `Background` дает информацию именно о той утилите, для которой выпущено сообщение. Как правило информация о том, зачем утилита присутствует в FreeBSD, для чего она используется, и немного информации о том, как появилась эта утилита.
  Поле `Problem Description` дает более глубокие разъяснения возникшей проблемы. Оно может включать информацию об ошибочном коде, или даже о том, как утилита может быть использована для создания бреши в системе безопасности.
  Поле `Impact` описывает тип воздействия, который проблема может оказать на систему. Это может быть все, что угодно, от атаки на отказ в обслуживании до получения пользователями дополнительных привилегий, или даже получения атакующим прав суперпользователя.
  Поле `Workaround` предлагает тем, системным администраторам, которые не могут обновить систему, обходной путь решения проблемы. Он может пригодиться при недостатке времени, отсутствии подключения к сети или по массе других причин. В любом случае, к безопасности нельзя относиться несерьезно, и необходимо либо применить указанный обходной путь, либо исправить систему.
  Поле `Solution` предлагает инструкции по исправлению затронутой системы. Это пошаговое руководство, протестированный метод восстановления безопасности системы.
  Поле `Correction Details` показывает ветвь CVS (имя релиза с точками, замененными на символы подчеркивания). Здесь также показан номер ревизии каждого файла из каждой ветви.
  Поле `References` обычно упоминает другие источники информации. Это могут быть Web-страницы, книги, списки рассылки и группы новостей.

## 14.15. Учёт используемых ресурсов

Текст предоставил Том Родес.

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

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

### 14.15.1. Активация и использование учёта ресурсов

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

    # touch /var/account/acct

    # accton /var/account/acct

    # echo 'accounting_enable="YES"' >> /etc/rc.conf

После активации система учёта ресурсов начнёт отслеживать статистику CPU, команд и так далее. Все протоколы учёта ведутся в формате, недоступном для чтения человеком, и могут просматриваться при помощи утилиты sa(8). Запущенная без параметров, `sa` выдаст информацию, относящуюся к количеству вызовов в расчёте на каждого пользователя, общее затраченное время в минутах, общее время CPU и пользователя в минутах, среднее количество операций ввода/вывода и так далее.

Для просмотра информации о запущенных командах, необходимо воспользоваться утилитой lastcomm(1). Команду `lastcomm` можно использовать, например, для выдачи списка директив, выданных пользователями определённого терминала ttys(5):

    # lastcomm ls trhodes ttyp1

Эта команда выдаст все зафиксированные использования команды `ls` пользователем `trhodes` на терминале ttyp1.

Существует многие другие полезные параметры, которые описаны на соответствующих справочных страницах lastcomm(1), acct(5) и sa(8).

# Глава 15. Принудительный контроль доступа (MAC)

Написал Tom Rhodes. Перевод на русский язык: Денис Пеплин.

## 15.1. Краткий обзор

FreeBSD 5.X представляет новые расширения системы безопасности от проекта TrustedBSD, основанные на документах POSIX.1e. Два из наиболее важных нововведений в механизмах безопасности это списки контроля доступа файловой системы (Access Control Lists, ACLs) и принудительный контроль доступа Mandatory Access Control, MAC). Инфраструктура позволяет загружать новые модули контроля доступа, реализуя новые политики безопасности. Некоторые из них предоставляют защиту ключевых подсистем, защищая определенный сервис, в то время как другие предоставляют исчерпывающую систему безопасности с метками на всех субъектах и объектах. Контроль называется принудительным, поскольку применение контроля производится администраторами и системой, и не зависит от решения пользователей, как это происходит при обычном контроле доступа (Discretionary Access Control, DAC, стандартные файловые и System V IPC права в FreeBSD).

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

После прочтения этой главы вы узнаете:

- Какие модули MAC включены в настоящее время в FreeBSD, какие политики с ними связаны.

- Что способны реализовать политики MAC, различие между политиками с метками (label) и без меток.

- Как эффективно настроить систему для использования инфраструктуры MAC.

- Как настроить различные политики, используемые модулями MAC.

- Как реализовать более защищенную среду, используя инфраструктуру MAC и приведенные примеры.

- Как протестировать настройку MAC, чтобы убедиться, что инфраструктура была реализована правильно.

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

- Понимание основ UNIX и FreeBSD (Гл. 3).

- Ознакомиться с основами настройки/компилирования ядра (Гл. 8).

- Иметь некоторые понятия о безопасности и как она относится к FreeBSD (Гл. 14).

> Внимание: Неправильное использование информации этой главы может вызвать потерю доступа к системе, проблемы у пользователей, или невозможность запуска XFree86. Что более важно, MAC не должен восприниматься как полная защита системы. Инфраструктура MAC лишь усиливает имеющуюся систему безопасности: без применения методов защиты и регулярных проверок, система никогда не станет полностью защищенной.

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

### 15.1.1. Что не будет затронуто

В этой главе охвачен широкий спектр вопросов безопасности, относящихся к инфраструктуре MAC. однако разработка политик MAC не будет затронута. Несколько модулей, включенных в инфраструктуру MAC, имеют особые характеристики, которые предназначены для тестирования и разработки новых модулей. Это относится к модулям/политикам mac_test(4), mac_stub(4) и mac_none(4). За дальнейшей информацией по этим модулям и различным предоставляемым ими механизмам, обратитесь к соответствующим страницам справочника.

## 15.2. Ключевые термины этой главы

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

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

- целостность (integrity): Целостность, как ключевая концепция, это уровень доверия, который может быть присвоен данным. Поскольку целостность данных повышается, это дает возможность доверять данным.

- метка (label): Метка является инструментом безопасности, она может быть применена к файлам, каталогам и другим сущностям системы. Ее можно представить как штамп конфиденциальности; метка, помещенная на файл, описывает уровень секретности данного файла и разрешит доступ только файлам, пользователям, ресурсам и т.д. с теми же или меньшими установками безопасности. Некоторые из политик могут обрабатывать метки различными способами; это будет обсуждаться в разделе политик ниже.

- multilabel (множественные метки): свойство `multilabel` это параметр файловой системы, который может быть установлен в однопользовательском режиме с помощью утилиты tunefs(8), во время загрузки через файл fstab(5), или при создании новой файловой системы. Этот параметр позволяет администратору помещать различные метки MAC на различные объекты. разрешает помещение множественных MAC меток на файлы и каталоги файловой системы. Этот параметр применим только к политикам с метками.

- объект (object): Объект или системный объект это сущность, через которую информация проходит к субъекту. Это могут быть каталоги, файлы, поля, экраны, клавиатуры, память, магнитные накопители, принтеры или любые другие устройства хранения/перемещения данных. В сущности это контейнер данных или ресурс системы; доступ к объекту фактически означает доступ к данным.

- политика (policy): Набор правил, определяющих как достичь объекта. Политика обычно документирует обращение с определенными элементами. В этой главе политика будет означать политику безопасности; т.е. коллекцию правил, которые будут контролировать поток данных и определять кто будет иметь доступ к этим данным.

- чувствительность (sensitivity): Обычно используется при обсуждении MLS. Уровень чувствительности это термин, используемый для описания того, насколько важны или секретны данные. Увеличение уровня чувствительности означает важность данных.

- одиночная метка (single label): означает, что вся файловая система использует одну метку для определения доступа всего потока данных. Когда файловая система использует эту установку, что происходит всегда, если не установлен параметр `multilabel`, ко всем файлам будет применяться одна и та же установка метки.

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

## 15.3. Описание MAC

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

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

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

Право выбора правильных политик безопасности принадлежит только системному администратору. В некоторых случаях может потребоваться ограничение доступа через сеть; для этого могут пригодиться mac_portacl(4), mac_ifoff(4) и даже mac_biba(4). В других случаях может быть необходима строгая конфиденциальность объектов в файловой системе. Для этого существуют политики mac_bsdextended(4) и mac_mls(4).

Выбор политики может быть сделан на основе конфигурации сети. Возможно только определенным пользователям можно разрешить доступ через ssh(1) к сети или интернет. В таких ситуациях подойдет политика mac_portacl(4). Но что необходимо сделать для файловых систем? Должен ли доступ к определенным каталогам быть запрещен для других групп или определенных пользователей? Или мы должны ограничить доступ пользователей или утилит к определенным файлам путем классификации определенных объектов?

В случае файловой системы, доступ может считаться конфиденциальным для отдельных пользователей, но не для всех. Например, большая команда разработчиков может быть разбита на небольшие группы. Разработчикам проекта A может быть не разрешен доступ к объектам, написанным разработчиками из проекта B. Хотя им может понадобиться доступ к объектам, созданным разработчиками проекта C; это реально встречающаяся ситуация. С помощью различных политик, предоставляемых инфраструктурой MAC, пользователи могут быть разделены на эти три группы и затем получить доступ к соответствующим областям без опасности утечки информации.

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

Стандартное ядро FreeBSD не включает параметр MAC; необходимо добавить следующий параметр ядра перед тем, как пробовать какие-либо из примеров или применять информацию этой главы:

    options    MAC

Затем необходимо пересобрать и переустановить ядро.

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

## 15.4. Метки MAC

Метка MAC это атрибут безопасности, который может быть применен к субъектам и объектам всей системы.

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

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

Например, установка метки в `biba/low` на файле присвоит этому файлу метку, обрабатываемую политикой Biba со значением ''low''.

Несколько политик, поддерживающих метки в FreeBSD, предоставляют три определенные предустановленные метки. Это низкая, высокая и равная метки. Хотя они устанавливают контроль различными способами для каждой политики, вы можете быть уверены, что низкая метка задаст минимальные установки, равная метка означает отмену или недействительность, а высокая метка установит максимально возможные настройки в политиках Biba и MLS.

При применении в файловой системе одиночной метки, только одна метка может быть использована для объектов. Это вызовет установку одних и тех же прав доступа для всей системы, и во многих случаях это все, что необходимо. Тем не менее, существует несколько ситуаций, в которых на объекты и субъекты файловой системы могут быть установлены множественные метки. В этих ситуациях необходимо с помощью tunefs(8) установить параметр `multilabel`.

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

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

Постойте, но это же похоже на DAC! Я думал, что MAC дает контроль только администратору. Это утверждение все еще верно, только `root` контролирует и настраивает политики, так что пользователи помещаются в соответствующие категории/уровни доступа. Многие политики могут ограничить также и пользователя `root`. Базовый контроль над объектами затем передается группе, но пользователь `root` может отменить или изменить эти настройки в любое время. Данная иерархическая модель соответствует таким политикам как Biba и MLS.

### 15.4.1. Настройка меток

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

Все настройки могут быть выполнены с использованием утилит setfmac(8) и setpmac(8). Команда `setfmac` используется для установки меток MAC на системные объекты, а команда `setpmac` используется для установки меток на системные субъекты. Выполните:

    # setfmac biba/high test

Если не произойдет ошибок, будет возвращено приглашение командной строки, как и после команд chmod(1) и chown(8). В некоторых случаях может появиться ошибка “`Permission denied`”, и она обычно появляется при установке или изменении метки на объект с ограничениями. [9] Системный администратор для обхода этой проблемы может использовать следующие команды:

    # setfmac biba/high test
    “Permission denied”
    # setpmac biba/low setfmac biba/high test
    # getfmac test
    test: biba/high

Как видно из примера выше, команда `setpmac` может быть использована для изменения установок политики путем присвоения иной метки вызывающему процессу. Утилита `getpmac` обычно используется с существующим на данный момент процессом, таким как sendmail, хотя она принимает PID вместо команды, ее действие аналогично. Если пользователи попытаются манипулировать файлами, к которым у них нет доступа в соответствии с правилами загруженных политик, функцией `mac_set_link` будет выдано сообщение об ошибке “`Operation not permitted`”.

#### 15.4.1.1. Пользователи и установки меток

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

Пример записи, содержащей все политики, приведенные ниже:

    default:\
        :copyright=/etc/COPYRIGHT:\
        :welcome=/etc/motd:\
        :setenv=MAIL=/var/mail/$,BLOCKSIZE=K:\
        :path=~/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin:\
        :manpath=/usr/share/man /usr/local/man:\
        :nologin=/usr/sbin/nologin:\
        :cputime=1h30m:\
        :datasize=8M:\
        :vmemoryuse=100M:\
        :stacksize=2M:\
        :memorylocked=4M:\
        :memoryuse=8M:\
        :filesize=8M:\
        :coredumpsize=8M:\
        :openfiles=24:\
        :maxproc=32:\
        :priority=0:\
        :requirehome:\
        :passwordtime=91d:\
        :umask=022:\
        :ignoretime@:\
        :label=partition/13,mls/5,biba/10(5-15),lomac10[2]:

Параметр `label` используется для установки метки MAC по умолчанию для класса пользователя. Пользователи не смогут изменять это значение, поэтому его можно признать не опциональным. В реальной ситуации администратору никогда не потребуется включать каждую политику. Рекомендуется прочесть главу полностью перед реализацией любой из этих настроек.

> Замечание: Пользователи могут изменить свою метку после входа; однако политика накладывает ограничение на это изменение. В примере выше политике Biba указано, что минимальная целостность процесса 5, максимальная 15, а эффективная целостность по умолчанию 10. Процесс будет работать на уровне 10, пока метка не будет изменена, например если пользователь использует команду setpmac, которую Biba ограничит диапазоном, установленным при входе.

Во всех случаях после изменения `login.conf`, база данных ''login class capability'' должна быть пересобрана с использованием команды `cap_mkdb` и это будет отражено в каждом последующем примере главы.

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

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

#### 15.4.1.2. Сетевые интерфейсы и установка меток

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

Для установки MAC меток на сетевых интерфейсах параметр `maclabel` может быть передан `ifconfig`. Например:

    # ifconfig bge0 maclabel biba/equal

установит MAC метку `biba/equal` на интерфейс bge(4). При использовании метки, подобной `biba/high(low-high)` вся метка должна быть взята в кавычки, иначе будет выдано сообщение об ошибке.

Каждая политика, использующая метки, снабжена переменной `sysctl`, которая может быть использована для отключения MAC меток на сетевых интерфейсах. Установка метки в `equal` будет иметь подобный эффект. Просмотрите вывод команды `sysctl`, страницы справочника для политик, или дальнейшую информацию из этой главы по этим переменным.

### 15.4.2. Одиночные или множественные метки?

По умолчанию система будет использовать параметр `singlelabel`. Но что это означает для администратора? Существуют несколько различий между политиками, каждая из которых правильна сама по себе, но имеет свои доводы за и против относительно гибкости модели безопасности системы.

`singlelabel` (одиночная метка) разрешает использование только одной метки, например `biba/high`, для каждого объекта или субъекта. Ее преимущество в меньшей нагрузке на системного администратора, а недостаток в малой гибкости политик, поддерживающих метки. Многие администраторы в своих политиках безопасности могут предпочесть использование параметра `multilabel`.

С параметром `multilabel` каждый субъект или объект может иметь собственную метку MAC, в то время как со стандартным параметром `singlelabel` возможна только одна метка на весь раздел. Параметры `multilabel` и `singlelabel` требуются только для политик, реализующих метки, включая Biba, Lomac, MLS и SEBSD.

Во многих случаях `multilabel` может вообще не потребоваться. Предположим следующую ситуацию и модель безопасности:

- FreeBSD веб-сервер, использующий инфраструктуру MAC и набор различных политик.

- Этому компьютеру потребуется лишь одна метка, `biba/high`, для всей системы. Файловой системе не нужен параметр `multilabel`, поскольку по умолчанию работает одиночная метка.

- Но поскольку этот компьютер будет веб сервером, процесс веб сервера должен быть запущен с `biba/low` для предотвращения записи. Политика Biba и то, как она работает, будет обсуждаться позже, поэтому предыдущий комментарий сложно интерпретировать; просто продолжайте чтение. Сервер может использовать дисковый раздел с установленной меткой `biba/low` для большинства, если не для всех своих операций. В этом примере отсутствуют многие детали, такие как ограничения на данные, конфигурация системы и установки пользователей; однако, это лишь предварительный пример.

Если используется любая из политик, не поддерживающих метки, параметр `multilabel` не требуется. Сюда включаются политики `seeotheruids`, `portacl` и `partition`.

Необходимо также отметить, что использование параметра `multilabel` на разделе и установление модели безопасности, основанной на функциональности `multilabel`, может повлечь за собой множество дополнительной административной работы, поскольку всему в файловой системе должны быть присвоены метки. Это включает каталоги, файлы, и даже файлы устройств.

Следующая команда установит параметр `multilabel` на файловых системах. Это может быть сделано только в однопользовательском режиме:

    # tunefs -l enable /

Это не требуется для файловой системы подкачки.

> Замечание: Некоторые пользователи сталкиваются с проблемами при установке флага `multilabel` на корневой раздел. В данном случае обратитесь к Разд. 15.16.

### 15.4.3. Настройка MAC переменными sysctl

Независимо от загрузки модулей, существует несколько частей MAC, которые могут быть настроены с использованием интерфейса `sysctl`. Эти переменные описаны ниже и во всех случаях значение 1 означает включение, а 0 -- отключение:

- `security.mac.enforce_fs` по умолчанию установлена в 1 и включает политики MAC на файловых системах.

- `security.mac.enforce_kld` по умолчанию 1 и включает линкование политик MAC в ядре (см. kld(4)).

- `security.mac.enforce_network` по умолчанию 1 и включает сетевые политики MAC.

- `security.mac.enforce_pipe` по умолчанию 1 и включает политики MAC для каналов (pipe).

- `security.mac.enforce_process` по умолчанию 1 и включает политики MAC для процессов, использующих средства межпроцессного взаимодействия.

- `security.mac.enforce_socket` по умолчанию 1 и включает политики MAC на сокетах (см. страницу справочника socket(2)).

- `security.mac.enforce_system` по умолчанию 1 и включает политики MAC для действий системы, таких как учет (accounting) и перезагрузка.

- `security.mac.enforce_vm` по умолчанию 1 и включает политики MAC для системы виртуальной памяти.

> Замечание: Каждая политика MAC поддерживает переменные `sysctl`. Они обычно попадают в дерево `security.mac.<policyname>`. Для просмотра всех переменных MAC, используйте следующую команду:

>     # sysctl -da | grep mac

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

## 15.5. Настройка модулей

Каждый модуль, включенный в инфраструктуру MAC, может быть или встроен в ядро, как упоминалось выше, или загружен в виде модуля ядра. Рекомендуется добавление имени модуля в файл `/boot/loader.conf`, этот модуль будет активирован в самом начале загрузки.

В последующих разделах будут обсуждаться различные модули MAC и их возможности. Реализация этих возможностей в определенных ситуациях также будет обсуждаться в этой главе. Некоторые модули поддерживают использование меток, которые контролируют доступ путем применения правил вида ''это разрешено, а это нет''. Настройка меток может контролировать доступ к файлам, сетевым коммуникациям и т.д. В предыдущем разделе было показано как флаг `multilabel` может быть установлен на файловые системы для включения контроля доступа по файлам или по разделам.

Конфигурация с одной меткой не допускает применение нескольких меток в системе, поэтому параметр `tunefs` называется `multilabel`.

### 15.5.1. Модуль MAC seeotheruids

Имя модуля: `mac_seeotheruids.ko`

Строка в конфигурации ядра: `options MAC_SEEOTHERUIDS`

Параметр загрузки: `mac_seeotheruids_load="YES"`

Модуль mac_seeotheruids(4) копирует и расширяет переменные `sysctl` `security.bsd.see_other_uids` и `security.bsd.see_other_gids`. Он не требует установки меток и может прозрачно работать с другими модулями.

После загрузки модуля, для управления им могут быть использованы следующие переменные `sysctl`:

- `security.mac.seeotheruids.enabled` включит модуль с настройками по умолчанию. Эти настройки запрещают пользователям просмотр процессов и сокетов, принадлежащих другим пользователям.

- `security.mac.seeotheruids.specificgid_enabled` позволит исключить определенные группы из этой политики. Для исключения определенной группы, используйте переменную `sysctl` `security.mac.seeotheruids.specificgid=`XXX``. В примере выше необходимо заменить `XXX` на числовой ID группы.

- `security.mac.seeotheruids.primarygroup_enabled` используется для исключения определенной основной группы из этой политики. При использовании этой переменной `security.mac.seeotheruids.specificgid_enabled` может быть не установлена.

Необходимо отметить, что пользователь `root` не является исключением из этой политики. Это одно из самых существенных различий между MAC версией и обычными переменными, существующими по умолчанию: `security.bsd.seeotheruids`.

## 15.6. Модуль MAC bsdextended

Имя модуля: `mac_bsdextended.ko`

Строка конфигурации ядра: `options MAC_BSDEXTENDED`

Параметр загрузки: `mac_bsdextended_load="YES"`

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

Политика может быть создана с помощью утилиты, ugidfw(8), синтаксис которой похож на синтаксис ipfw(8). Другие инструменты могут быть написаны с использованием функций библиотеки libugidfw(3).

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

### 15.6.1. Примеры

После загрузки модуля mac_bsdextended(4) для просмотра текущей настройки правил может быть использована следующая команда:

    # ugidfw list
    0 slots, 0 rules

Как и можно было ожидать, правила не определены. Это означает, что доступ полностью открыт. Для создания правила, которое заблокирует доступ всех пользователей, но не повлияет на `root`, просто запустите следующую команду:

    # ugidfw add subject not uid root new object not uid root mode n

> Замечание: В релизах FreeBSD до 5.3, параметр `add` не существует. Вместо него необходимо использовать `set`. Пример дан ниже.

Это очень плохая идея, поскольку такое правило запретит пользователям использовать даже самые простые команды, такие как `ls`. Более патриотический список правил может быть таким:

    # ugidfw set 2 subject uid user1 object uid user2 mode n
    # ugidfw set 3 subject uid user1 object gid user2 mode n

Эти команды запретят весь и любой доступ пользователя `user1`, включая просмотр подкаталогов, к домашнему каталогу пользователя ``user2``.

Вместо `user1` может быть задано `not uid `user2``. Это включит те ограничения, о которых говорилось выше, для всех пользователей кроме одного.

> Замечание: На пользователя `root` эти изменения не повлияют.

Материал выше должен дать общую идею как модуль mac_bsdextended(4) может быть использован в качестве средства защиты файловой системы. За дальнейшей информацией обращайтесь к страницам справочника mac_bsdextended(4) и ugidfw(8).

## 15.7. Модуль MAC ifoff

Имя модуля: `mac_ifoff.ko`

Строка конфигурации ядра: `options MAC_IFOFF`

Параметр загрузки: `mac_ifoff_load="YES"`

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

Большая часть управления может быть выполнена через переменные `sysctl`.

- `security.mac.ifoff.lo_enabled` включает/выключает весь трафик на loopback (lo(4)) интерфейсе.

- `security.mac.ifoff.bpfrecv_enabled` включает/выключает весь трафик на интерфейсе Berkeley Packet Filter (bpf(4)).

- `security.mac.ifoff.other_enabled` включает/выключает весь трафик на всех других интерфейсах.

Одно из наиболее частых использований mac_ifoff(4) это сетевой мониторинг в среде, где сетевой трафик не должен быть разрешен во время загрузки. Другое предлагаемое применение это написание скрипта, использующего `security/aide` для автоматического блокирования сетевого трафика, если будут обнаружены новые или измененные файлы в защищаемых каталогах.

## 15.8. Модуль MAC portacl

Имя модуля: `mac_portacl.ko`

Строка конфигурации ядра: `MAC_PORTACL`

Параметр загрузки: `mac_portacl_load="YES"`

Модуль mac_portacl(4) используется для ограничения привязки (binding) к локальным портам TCP и UDP, используя различные переменные `sysctl`. По сути mac_portacl(4) делает возможной привязку к привилегированным портам, т.е. к портам с номерами меньше 1024 для не-`root` пользователей.

После загрузки этот модуль включит политику MAC на всех сокетах. Доступны следующие переменные `sysctl`:

- `security.mac.portacl.enabled` включает/отключает политику целиком. [10]

- `security.mac.portacl.port_high` установит наибольший номер порта, для которого mac_portacl(4) включает защиту.

- `security.mac.portacl.suser_exempt`, если установлена в ненулевое значение, исключает пользователя `root` из этой политики.

- `security.mac.portacl.rules` задает действующую политику mac_portacl: см. ниже.

Действующая политика `mac_portacl`, указанная в `security.mac.portacl.rules`, это текстовая строка в форме `rule[,rule,...]` с таким количеством правил, которое требуется. Каждое правило задается в формате: `idtype:id:protocol:port`. Параметр `idtype` может принимать значения `uid` или `gid` и используется для интерпретации параметра `id`, в качестве id пользователя или группы соответственно. Параметр `protocol` используется для определения применимости этого правила к протоколу TCP или UDP, он может принимать значения `tcp` или `udp`. Последний параметр, `port`, задает номер порта, к которому разрешается привязка указанного пользователя или группы.

> Замечание: Поскольку набор правил интерпретируется непосредственно ядром, для ID пользователя, группы и номера порта могут быть использованы только числовые значения. Т.е. имена пользователей, групп и сервисов портов не могут быть использованы.

По умолчанию в UNIX-подобных системах порты с номерами менее чем 1024 могут быть использованы только привилегированными процессами, т.е. теми, что запущены от `root`. С mac_portacl(4) для разрешения привязки непривилегированных процессов к портам с номерами ниже 1024 эти стандартные ограничения UNIX должны быть отменены. Это может быть выполнено путем установки переменных sysctl(8) `net.inet.ip.portrange.reservedlow` и `net.inet.ip.portrange.reservedhigh` в ноль.

Обратитесь к примерам ниже или к странице справочника mac_portacl(4) за дальнейшей информацией.

### 15.8.1. Примеры

Следующие примеры должны осветить обсуждение выше чуть лучше:

    # sysctl security.mac.portacl.port_high=1023
    # sysctl net.inet.ip.portrange.reservedlow=0 net.inet.ip.portrange.reservedhigh=0

Сначала мы настраиваем mac_portacl(4) для работы со стандартными привилегированными портами и отмены обычных ограничений UNIX на привязку.

    # sysctl security.mac.portacl.suser_exempt=1

Пользователь `root` должен быть исключен из этой политики, для этого переменная `security.mac.portacl.suser_exempt` установлена в ненулевое значение. Модуль mac_portacl(4) теперь настроен на то поведение UNIX-подобных систем по умолчанию.

    # sysctl security.mac.portacl.rules=uid:80:tcp:80

Разрешает пользователю с UID 80 (обычно это пользователь `www`) привязку к порту 80. Теперь пользователь `www` сможет запустить веб сервер даже без привилегии `root`.

    # sysctl security.mac.portacl.rules=uid:1001:tcp:110,uid:1001:tcp:995

Разрешит пользователю с UID 1001 привязку к TCP портам 110 (''pop3'') и 995 (''pop3s''). Это позволит данному пользователю запустить сервер, принимающий соединения на портах 110 и 995.

## 15.9. Политики MAC, использующие метки

В следующих нескольких разделах будут обсуждаться политики MAC, использующие метки.

С этого момента обсуждение будет сфокусировано на возможностях mac_biba(4), mac_lomac(4), mac_partition(4), и mac_mls(4).

> Замечание: Это лишь примерные настройки, они не должны использоваться непосредственно в реальных задачах. Цель изложения в том, чтобы документировать и показать синтаксис, а также примеры реализации и тестирования.

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

### 15.9.1. Приготовления к использованию политик с метками

В файл `login.conf` необходимо внести следующие изменения:

- Должен быть добавлен класс `insecure`, или другой подобный класс. Наличие класса `insecure` не обязательно, он приводится здесь в качестве примера; другие конфигурации могут использовать другое имя класса.

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

      insecure:\
          :copyright=/etc/COPYRIGHT:\
          :welcome=/etc/motd:\
          :setenv=MAIL=/var/mail/$,BLOCKSIZE=K:\
          :path=~/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin:\
          :manpath=/usr/share/man /usr/local/man:\
          :nologin=/usr/sbin/nologin:\
          :cputime=1h30m:\
          :datasize=8M:\
          :vmemoryuse=100M:\
          :stacksize=2M:\
          :memorylocked=4M:\
          :memoryuse=8M:\
          :filesize=8M:\
          :coredumpsize=8M:\
          :openfiles=24:\
          :maxproc=32:\
          :priority=0:\
          :requirehome:\
          :passwordtime=91d:\
          :umask=022:\
          :ignoretime@:\
          :label=partition/13,mls/5,biba/low:

  Перед тем, как переключать пользователей на новый класс, необходимо запустить команду cap_mkdb(1) на login.conf(5).

  Пользователю `root` также необходимо присвоить класс; иначе, почти любой команде, выполняемой от `root`, потребуется использование `setpmac`.

- Убедитесь, что все разделы, на которых будут установлены метки MAC, поддерживают параметр `multilabel`. Нам необходимо сделать это, поскольку многие из примеров здесь содержат различные метки в целях тестирования. Просмотрите вывод команды `mount` в качестве необходимой предосторожности.

- Переключите всех пользователей, которые будут использовать новые механизмы безопасности, на этот класс. Информация по этой процедуре находится в pw(8) или vipw(8).

## 15.10. Модуль MAC partition

Имя модуля: `mac_partition.ko`

Строка настройки ядра: `options MAC_PARTITION`

Параметр загрузки: `mac_partition_load="YES"`

Политика mac_partition(4) распределяет процессы по ''разделам'' на основе их MAC меток. Это может быть представлено как особый тип jail(8), хотя такое сравнение едва ли подходит.

Этот модуль должен быть добавлен в loader.conf(5), чтобы политика была загружена и включена при загрузке системы.

Большая часть настройки этой политики выполняется с помощью утилиты setpmac(8), которая будет описана ниже. Для данной политики имеется также следующая переменная `sysctl`:

- `security.mac.partition.enabled` включит MAC разделение процессов.

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

Для присвоения утилитам меток partition используйте утилиту `setpmac`:

    # setpmac partition/13 top

Команда `top` будет добавлена к метке, установленной для пользователей класса `insecure`. Обратите внимание, что все процессы, порожденные пользователями класса `insecure`, останутся с меткой `partition/13`.

### 15.10.1. Примеры

Следующая команда покажет вашу метку раздела и список процессов:

    # ps Zax

Следующей командой можно просмотреть метку раздела процессов других пользователей и их запущенные процессы:

    # ps -ZU trhodes

> Замечание: Пользователи могут могут увидеть процессы `root`, если не загружена политика mac_seeotheruids(4).

Действительно ''продвинутая'' реализация должна отключать все сервисы через `/etc/rc.conf` и запускать их через скрипт, который установит правильный набор меток.

> Замечание: Следующие политики поддерживают целочисленные установки вместо трех меток по умолчанию. Эти опции, включая их ограничения, описываются более подробно в страницах справочника модулей.

## 15.11. Модуль многоуровневой безопасности MAC (MLS)

Имя модуля: `mac_mls.ko`

Строка конфигурации ядра: `options MAC_MLS`

Параметр загрузки: `mac_mls_load="YES"`

Политика mac_mls(4) контролирует взаимодействие субъектов и объектов системы путем применения строгой политики к потоку информации.

В среде MLS, для каждого субъекта или объекта внутри отдела (compartment) устанавливается ''уровень допуска''. Поскольку количество уровней допуска может превышать шесть тысяч, для любого системного администратора задача настройки каждого субъекта или объекта может быть слишком сложной. К счастью, существуют ''постоянные'' метки, которые уже включены в эту политику.

Эти метки `mls/low`, `mls/equal` и `mls/high`. Поскольку эти метки подробно описываются в справочнике, здесь мы дадим только краткое описание:

- Метка `mls/low` содержит минимальную настройку, что позволяет доминирование над ней всех других объектов. Все, что помечено с `mls/low`, находится на низком уровне доступа и доступ к более высоким уровням будет запрещен. Кроме того, эта метка предотвратит запись или передачу информации объектам с более высоким уровнем доступа.

- Метка `mls/equal` должна быть помещена на объекты, являющиеся исключением из политики.

- Метка `mls/high` это наибольший возможный уровень доступа. Объекты с этой меткой будут доминировать над всеми другими объектами системы; однако, утечка информации от них к объектам более низкого класса невозможна.

MLS представляет собой:

- Иерархические уровни безопасности с набором не иерархических категорий;

- Фиксированные правила: нет чтения сверху, нет записи вниз (субъект может иметь доступ на чтение объектов собственного уровня или ниже, но не выше. Аналогично, субъект может иметь доступ на запись в объекты своего уровня или выше, но не наоборот.);

- Секретность (предотвращение неавторизованного раскрытия данных);

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

Для настройки специальных сервисов и интерфейсов доступны следующие переменные `sysctl`:

- `security.mac.mls.enabled` используется для включения/отключения политики MLS.

- `security.mac.mls.ptys_equal` пометит все устройства pty(4) как `mls/equal` во время создания.

- `security.mac.mls.revocation_enabled` используется для запрета доступа к объектам после того, как их метка изменится в меньшую сторону.

- `security.mac.mls.max_compartments` используется для установки максимального количества уровней отделов на объекты; обычно это максимальное количество отделов, разрешенных в системе.

Для управления метками MLS существует команда setfmac(8). Для присвоения метки объекту, выполните следующую команду:

    # setfmac mls/5 test

Для получения метки MLS файла `test`, выполните следующую команду:

    # getfmac test

Выше представлен краткий обзор возможностей политики MLS. Существует метод, связанный с созданием основного файла политики в каталоге `/etc`, где будет определена необходимая для политики MLS информация, которая будет передана команде `setfmac`. Этот метод будет описан после рассмотрения всех политик.

Итоги: объект с низким уровнем доступа не может прочесть данные объекта с высоким уровнем доступа. Базовая политика должна устанавливать `mls/high` на всем, что не должно быть прочитано, даже если туда необходимо записывать. На всем, куда нельзя писать, должна быть установлена метка `mls/low`, даже если это необходимо читать. Наконец, на всем остальном установите `mls/equal`. Все пользователи, помеченные как `insecure`, должны иметь метку `mls/low`.

## 15.12. Модуль MAC Biba

Имя модуля: `mac_biba.ko`

Строка конфигурации ядра: `options MAC_BIBA`

Параметр загрузки: `mac_biba_load="YES"`

Модуль mac_biba(4) загружает MAC политику Biba. Эта политика работает в основном так же, как и MLS, за исключением того, что правила потока информации изменены на противоположные. Они предназначены для предотвращения передачи потока секретной информации вверх, в то время как политика MLS предотвращает передачу потока секретной информации вниз; таким образом, большая часть этого раздела применима к обеим политикам.

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

Поддерживаемые метки `biba/low`, `biba/equal`, и `biba/high`; описаны ниже:

- Метка `biba/low` обеспечивает наименьшую целостность объекта или субъекта. Установка ее на объект или субъект заблокирует их доступ к объектам или субъектам, имеющим более высокую метку. Тем не менее, у них остается доступ на чтение.

- Метка `biba/equal` должна помещаться только на объекты, исключающиеся из политики.

- Метка `biba/high` разрешит запись в объекты с более низкой меткой, но не разрешит чтение из этих объектов. Рекомендуется помещать такую метку на объекты, влияющие на целостность всей системы.

Biba представляет собой:

- Иерархические уровни целостности с набором не иерархических категорий;

- Фиксированные правила: нет записи наверх, нет чтения снизу (обратно MLS). Субъект может иметь доступ на запись к объектам своего уровня или ниже, но не выше. Аналогично, субъект может иметь доступ на чтение к объектам своего уровня или выше, но не ниже;

- Целостность (предотвращение неавторизованного изменения данных);

- Уровни целостности (вместо уровней секретности MLS).

Для управления политикой Biba могут быть использованы следующие переменные `sysctl`:

- `security.mac.biba.enabled` может использоваться для включения/выключения политики Biba.

- `security.mac.biba.ptys_equal` может использоваться для отключения политики Biba на устройствах pty(4).

- `security.mac.biba.revocation_enabled` включит отмену доступа к объектам, если метка изменена на более высокую, чем у субъекта.

Для выполнения настроек политики Biba на системных объектах, применяются команды `setfmac` и `getfmac`:

    # setfmac biba/low test
    # getfmac test
    test: biba/low

Итоги: субъект с низким уровнем целостности не может писать в субъект с высоким уровнем целостности; субъект с высоким уровнем целостности не может читать из субъекта с низким уровнем целостности.

## 15.13. Модуль MAC LOMAC

Имя модуля: `mac_lomac.ko`

Строка конфигурации ядра: `options MAC_LOMAC`

Параметр загрузки: `mac_lomac_load="YES"`

В отличие от политики MAC Biba, политика mac_lomac(4) разрешает доступ к объектам с более низким уровнем целостности только после уменьшения уровня целостности, чтобы не нарушать каких-либо правил целостности.

MAC версия политики целостности Low-watermark, чтобы не пересекаться со старой реализацией lomac(4), работает почти так же, как и Biba, за исключением использования плавающих меток для поддержки понижения метки субъекта через отдел для вспомогательной градации (auxiliary grade compartment). Этот вспомогательный отдел принимает вид `[auxgrade]`. При включении политики lomac с вспомогательной градацией метка должна выглядеть приблизительно так: `lomac/10[2]`, где номер 2 это вспомогательная градация.

Политика MAC LOMAC основана на тотальной пометке всех системных объектов метками целостности, разрешая субъектам читать из объектов с более низкой степенью целостности и с уменьшением метки субъекта для предотвращения последующей записи в объекты с более высокой степенью целостности. Параметр `[auxgrade]` обсуждался выше, таким образом политика может быть более совместимой и требовать меньшей первоначальной настройки, чем Biba.

### 15.13.1. Примеры

Как и для политик Biba и MLS, для установки меток на системные объекты и субъекты могут быть использованы утилиты `setfmac` и `setpmac`:

    # setfmac /usr/home/trhodes lomac/high[low]
    # getfmac /usr/home/trhodes lomac/high[low]

Обратите внимание, что вспомогательная градация здесь `low`, эта возможность предоставляется только политикой MAC LOMAC policy.

## 15.14. Реализация защищенной среды с MAC

Нижеследующая демонстрация реализует защищенную среду с использованием различных MAC модулей с соответственно настроенными политиками. Используйте этот пример только для тестирования, он не предназначен для удовлетворения всех требований к защите. Реализация этих политик без понимания принципа их работы неприменима в реальных задачах.

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

### 15.14.1. Создание insecure класса пользователя

Начните процедуру добавлением следующего класса пользователя к файлу `/etc/login.conf`:

    insecure:\
    :copyright=/etc/COPYRIGHT:\
    :welcome=/etc/motd:\
    :setenv=MAIL=/var/mail/$,BLOCKSIZE=K:\
    :path=~/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin
    :manpath=/usr/share/man /usr/local/man:\
    :nologin=/usr/sbin/nologin:\
    :cputime=1h30m:\
    :datasize=8M:\
    :vmemoryuse=100M:\
    :stacksize=2M:\
    :memorylocked=4M:\
    :memoryuse=8M:\
    :filesize=8M:\
    :coredumpsize=8M:\
    :openfiles=24:\
    :maxproc=32:\
    :priority=0:\
    :requirehome:\
    :passwordtime=91d:\
    :umask=022:\
    :ignoretime@:\
    :label=partition/13,mls/5:

и добавлением следующей строки к default классу пользователя:

    :label=mls/equal,biba/equal,partition/equal:

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

    # cap_mkdb /etc/login.conf

### 15.14.2. Загрузка с необходимыми модулями

Добавьте к `/boot/loader.conf` следующие строки, чтобы необходимые модули были загружены при старте системы:

    mac_biba_load="YES"
    mac_mls_load="YES"
    mac_seeotheruids_load="YES"
    mac_partition_load="YES"

### 15.14.3. Установка всех пользователей в insecure

Всем учетным записям, кроме `root` или системных пользователей теперь потребуется присвоить класс (login class). При отсутствии класса пользователи не смогут получить доступа к обычным командам, таким как vi(1). Следующий скрипт `sh` сделает все необходимое:

    # for x in `awk -F: '($3 >= 1001) && ($3 != 65534) { print $1 }' \
        /etc/passwd`; do pw usermod $x -L insecure; done;

После этого изменения необходимо запустить команду `cap_mkdb` на файле `/etc/master.passwd`.

### 15.14.4. Завершение настройки

Должен быть создан файл контекста; следующий пример взят из примера политики от Robert Watson, он может быть помещен в `/etc/policy.contexts`:

    # This is the default BIBA/MLS policy for this system.

    .*                              biba/high,mls/high
    /sbin/dhclient                  biba/high(low),mls/high(low)
    /dev(/.*)?                      biba/equal,mls/equal
    # This is not an exhaustive list of all "privileged" devices.
    /dev/mdctl                      biba/high,mls/high
    /dev/pci                        biba/high,mls/high
    /dev/k?mem                      biba/high,mls/high
    /dev/io                         biba/high,mls/high
    /dev/agp.*                      biba/high,mls/high
    (/var)?/tmp(/.*)?               biba/equal,mls/equal
    /tmp/\.X11-unix                 biba/high(equal),mls/high(equal)
    /tmp/\.X11-unix/.*              biba/equal,mls/equal
    /proc(/.*)?                     biba/equal,mls/equal
    /mnt.*                          biba/low,mls/low
    (/usr)?/home                    biba/high(low),mls/high(low)
    (/usr)?/home/.*                 biba/low,mls/low
    /var/mail(/.*)?                 biba/low,mls/low
    /var/spool/mqueue(/.*)?         biba/low,mls/low
    (/mnt)?/cdrom(/.*)?             biba/high,mls/high
    (/usr)?/home/(ftp|samba)(/.*)?  biba/high,mls/high
    /var/log/sendmail\.st           biba/low,mls/low
    /var/run/utmp                   biba/equal,mls/equal
    /var/log/(lastlog|wtmp)         biba/equal,mls/equal

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

Он может быть внесен в систему следующими командами:

    # setfsmac -ef /etc/policy.contexts /
    # setfsmac -ef /etc/policy.contexts /usr

> Замечание: Раскладка вышеприведенной файловой системы может быть различной для разных систем.

Файл `/etc/mac.conf` требует следующих изменений в основном разделе:

    default_labels file ?biba,?mls
    default_labels ifnet ?biba,?mls
    default_labels process ?biba,?mls,?partition
    default_labels socket ?biba,?mls

### 15.14.5. Тестирование настройки

Добавьте пользователя с помощью команды `adduser` и поместите его в класс `insecure` для этих тестов.

В примерах ниже тестирование `root` и обычных пользователей будет смешиваться; форма приглашения поможет различить этих пользователей.

#### 15.14.5.1. Основное тестирование меток

    % getpmac
    biba/15(15-15),mls/15(15-15),partition/15
    # setpmac partition/15,mls/equal top

> Замечание: Процесс top будет уничтожен перед тем, как мы запустим другой процесс top.

#### 15.14.5.2. Тестирование MAC seeotheruids

    % ps Zax
    biba/15(15-15),mls/15(15-15),partition/15  1096 #C:  S      0:00.03 -su (bash)
    biba/15(15-15),mls/15(15-15),partition/15  1101 #C:  R+     0:00.01 ps Zax

Просмотр процессов всех других пользователей должен быть запрещен.

#### 15.14.5.3. Тестирование MAC partition

Отключите политику MAC `seeotheruids` для остальных тестов:

    # sysctl security.mac.seeotheruids.enabled=0
    % ps Zax
    LABEL                                                   PID  TT  STAT      TIME COMMAND
      biba/equal(low-high),mls/equal(low-high),partition/15  1122 #C:  S+     0:00.02 top
      biba/15(15-15),mls/15(15-15),partition/15              1096 #C:  S      0:00.05 -su (bash)
      biba/15(15-15),mls/15(15-15),partition/15              1123 #C:  R+     0:00.01 ps Zax

Все пользователи должны видеть каждый процесс в своем разделе (partition).

#### 15.14.5.4. Тестирование меток Biba и MLS

    # setpmac partition/15,mls/equal,biba/high\(high-high\) top
    % ps Zax
    LABEL                                                   PID  TT  STAT    TIME   COMMAND
      biba/high(high-high),mls/equal(low-high),partition/15   1251 #C:  S+     0:00.02 top
      biba/15(15-15),mls/15(15-15),partition/15               1096 #C:  S      0:00.06 -su (bash)
      biba/15(15-15),mls/15(15-15),partition/15               1157 #C:  R+     0:00.00 ps Zax

Политика Biba позволяет чтение объектов с более высокими метками.

    # setpmac partition/15,mls/equal,biba/low top
    % ps Zax
    LABEL                                       PID  TT  STAT      TIME COMMAND
      biba/15(15-15),mls/15(15-15),partition/15  1096 #C:  S      0:00.07 -su (bash)
      biba/15(15-15),mls/15(15-15),partition/15  1226 #C:  R+     0:00.01 ps Zax

Политика Biba не позволяет чтение объектов с более низкими метками; тем не менее, MLS разрешает это.

    % ifconfig bge0 | grep maclabel
    maclabel biba/low(low-low),mls/low(low-low)
    % ping -c 1 192.0.34.166
    PING 192.0.34.166 (192.0.34.166): 56 data bytes
    ping: sendto: Permission denied

Пользователи не могут выполнить ping на `example.com`, или на любой домен по этой причине.

Для устранения этой ошибки, запустите следующую команду:

    # sysctl security.mac.biba.trust_all_interfaces=1

Она устанавливает метку интерфейса по умолчанию в незащищенный режим, так что политика Biba по умолчанию не будет применена.

    # ifconfig bge0 maclabel biba/equal\(low-high\),mls/equal\(low-high\)
    % ping -c 1 192.0.34.166
    PING 192.0.34.166 (192.0.34.166): 56 data bytes
    64 bytes from 192.0.34.166: icmp_seq=0 ttl=50 time=204.455 ms
    --- 192.0.34.166 ping statistics ---
    1 packets transmitted, 1 packets received, 0% packet loss
    round-trip min/avg/max/stddev = 204.455/204.455/204.455/0.000 ms

Установив более корректную метку, мы можем использовать `ping`.

Теперь создадим файлы для процедуры тестирования чтения и записи:

    # touch test1 test2 test3 test4 test5
    # getfmac test1
    test1: biba/equal,mls/equal
    # setfmac biba/low test1 test2; setfmac biba/high test4 test5; \
      setfmac mls/low test1 test3; setfmac mls/high test2 test4
    # setfmac mls/equal,biba/equal test3 && getfmac test?
    test1: biba/low,mls/low
    test2: biba/low,mls/high
    test3: biba/equal,mls/equal
    test4: biba/high,mls/high
    test5: biba/high,mls/equal
    # chown testuser:testuser test?

Все эти файлы должны принадлежать пользователю `testuser`. Тесты на чтение:

    % ls
    test1   test2   test3   test4   test5
    % ls test?
    ls: test1: Permission denied
    ls: test2: Permission denied
    ls: test4: Permission denied
    test3   test5

Доступ на чтение не должен быть разрешен для пар: `(biba/low,mls/low)`, `(biba/low,mls/high)` и `(biba/high,mls/high)`. Теперь несколько тестов на запись:

    % for i in `echo test*`; do echo 1 > $i; done
    -su: test1: Permission denied
    -su: test4: Permission denied
    -su: test5: Permission denied

Подобно тестам на чтение, доступ на запись должен быть запрещен для пар: `(biba/low,mls/high)` и `(biba/equal,mls/equal)`.

    % cat test?
    cat: test1: Permission denied
    cat: test2: Permission denied
    1
    cat: test4: Permission denied

А теперь от `root`:

    # cat test2
    1

## 15.15. Другой пример: Использование MAC для защиты веб сервера

Будет создано отдельное хранилище для веб данных, к которому пользователи должны иметь доступ. Это позволит `biba/high` управлять доступом к веб данным.

Начните с создания каталога для хранения веб данных:

    # mkdir /usr/home/cvs

Теперь инициализируйте его командой `cvs`:

    # cvs -d /usr/home/cvs init

Для начала необходимо включить политику `biba`, добавив `mac_biba_enable="YES"` в `/boot/loader.conf`. Предполагается, что ядро скомпилировано с поддержкой MAC.

Далее установите метку `biba/high` для всей системы по умолчанию.

В файл `login.conf`, класс default, необходимо внести следующие изменения:

    :ignoretime@:\
        :umask=022:\
        :label=biba/high:

Каждого пользователя необходимо поместить в класс по умолчанию; такая команда:

    # for x in `awk -F: '($3 >= 1001) && ($3 != 65534) { print $1 }' \
        /etc/passwd`; do pw usermod $x -L default; done;

быстро решит эту задачу.

Теперь создадим другой класс, web, копию класса default с меткой, установленной в `biba/low`.

Создайте пользователя для работы с основными веб данными, хранящимися в репозитории cvs. Этого пользователя необходимо поместить в новый класс, `web`.

Поскольку метка по умолчанию `biba/high`, на репозитории она будет той же. Веб данные должны иметь ту же метку, чтобы у пользователей был доступ к ним на чтение/запись. Веб сервер должен иметь доступ к тем же данным, к которым есть доступ у пользователей с меткой `biba/high`, для этого необходимо понизить метку данных.

Все, что потребуется, это следующий sh(1) скрипт, который может быть запущен из cron(8):

    PATH=/bin:/usr/bin:/usr/local/bin; export PATH;
    CVSROOT=/home/repo; export CVSROOT;
    cd /home/web;
    cvs -qR checkout -P htdocs;
    exit;

> Замечание: Во многих случаях в веб файлы `cvs` необходимо поместить теги Id.

Этот скрипт теперь может быть помещен в домашний каталог каталог пользователя `web`, необходимо также добавить следующую запись crontab(1):

    # Выполнять checkout web данных под меткой biba/low каждые 12 часов:
    0       */12       *       *       *       web    /home/web/checkout.sh

Эта запись будет извлекать HTML страницы каждые двенадцать часов.

Метод запуска веб сервера по умолчанию также должен быть изменен для запуска процесса с меткой `biba/low`. Это может быть сделано путем следующего изменения в скрипте `/usr/local/etc/rc.d/apache.sh`:

    command="setpmac biba/low /usr/local/sbin/httpd"

Настройки Apache должны быть изменены для работы с политикой `biba/low`. В этом случае необходимо указать для хранения лог файлов каталог с меткой `biba/low`, иначе будут возвращены ошибки “`access denied`”.

> Замечание: В этом примере необходимо указать в директиве `docroot` каталог `/home/web/htdocs`; или, Apache не сможет найти каталог с документами.

Необходимо также изменить другие параметры конфигурации, включая PID файл, `Scoreboardfile`, `DocumentRoot`, или любые другие настройки для каталогов, где необходим доступ на запись. При использовании `biba` будет запрещен доступ на запись во все каталоги сервера, на которых нет метки `biba/low`.

## 15.16. Решение проблем с инфраструктурой MAC

На стадии разработки несколько пользователей сообщали о проблемах при обычных настройках. Некоторые из этих проблем приведены ниже:

### 15.16.1. Параметр `multilabel` не может быть включен на `/`

Параметр `multilabel` не включается на моем корневом (`/`) разделе!

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

1. Отредактируйте `/etc/fstab` и установите для корневого раздела параметр только для чтения (`ro`).

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

3. Запустите команду `tunefs` `-l enable` на `/`.

4. Перегрузите систему в нормальный режим.

5. Запустите `mount` `-urw` `/` и измените параметр `ro` обратно на `rw` в `/etc/fstab`; перегрузите систему опять.

6. Дважды проверьте вывод `mount`, чтобы убедиться, что параметр `multilabel` был установлен на корневой файловой системе.

### 15.16.2. Не могу запустить XFree86™ после MAC

После настройки системы безопасности MAC, я больше не могу запускать XFree86!

Это может быть вызвано политикой MAC `partition` или путем неправильной установки меток одной из политик MAC. Для отладки попробуйте следующее:

1. Просмотрите сообщение об ошибке; если пользователь находится в классе `insecure`, проблема может быть в политике `partition`. Попробуйте установить класс пользователя обратно в `default` и пересобрать базу данных командой `cap_mkdb`. Если это не решит проблемы, попробуйте шаг два.

2. Дважды проверьте политики с метками. Убедитесь, что политики настроены правильно для рассматриваемого пользователя, приложения XFree86, и устройств в `/dev`.

3. Если проблема не решена, отправьте сообщение об ошибке и описание вашей системы в список рассылки TrustedBSD, находящийся на веб сайте TrustedBSD или в Список рассылки, посвящённый вопросам и ответам пользователей FreeBSD.

### 15.16.3. Error: _secure_path(3) cannot stat `.login_conf`

При попытке переключения от `root` на другого пользователя системы, появляется сообщение об ошибке “`_secure_path: unable to state .login_conf`”.

Это сообщение обычно показывается, когда у пользователя более высокая метка, чем у пользователя, которым он пытается стать. Например, у пользователя системы `joe` метка по умолчанию `biba/low`. Пользователь `root`, метка которого `biba/high`, не может просматривать домашний каталог пользователя `joe`. Это не зависит от того, использует ли пользователь `root` команду `su` `joe` или нет. В этом сценарии модель целостности Biba не позволит `root` просматривать объекты с низким уровнем целостности.

### 15.16.4. Пользователя `root` нет!

В нормальном или даже однопользовательском режиме `root` не обнаруживается. Команда `whoami` возвращает 0 (нуль) и `su` возвращает “`who are you?`”. Что можно сделать?

Это может произойти, если политика с метками была отключена, или через sysctl(8), или путем выгрузки модуля политики. Если политика была постоянно или временно отключена, базу данных login необходимо перенастроить. Дважды проверьте `login.conf`, чтобы убедиться, что все параметры `label` были удалены и пересоберите базу данных командой `cap_mkdb`.

# Глава 16. Аудит событий безопасности

Автор Tom Rhodes. Перевод на русский язык: Денис Баров.

## 16.1. Краткий обзор

FreeBSD 6.2-RELEASE и более поздние версии FreeBSD включают в себя поддержку аудита событий безопасности. Аудит событий дает надежный и точный способ для протоколирования различных событий, связанных с безопасностью, включая входы в систему, изменения конфигурации, доступ к файлам и сети. Эти записи могут быть незаменимы для мониторинга функционирующей системы, обнаружения вторжений и для анализа событий, приведших к краху системы. В FreeBSD реализован опубликованный Sun BSM API и формат файла, который совместим с реализациями аудита в Sun Solaris и Apple® Mac OS X.

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

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

- Что такое система аудита и как она работает.

- Как настроить аудит во FreeBSD для мониторинга пользователей и процессов.

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

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

- Понимать основы UNIX и FreeBSD (Гл. 3).

- Уметь конфигурировать и компилировать ядро (Гл. 8).

- Понимать основные принципы безопасности в применении к операционной системе FreeBSD (Гл. 14).

> Внимание: Реализация аудита в FreeBSD 6.2 - экспериментальная, использование ее в реальных задачах должно производиться только после внимательного ознакомления со всеми рисками, к которым приводит использование экспериментального программного обеспечения. К известным ограничениям относится и тот факт, что не все события в настоящий момент протоколируемы. Например, некоторые механизмы входа в систему (X11-основанные оконные менеджеры, многое программное обеспечение от сторонних производителей) не сконфигурированы для протоколирования событий входа в систему через подсистему аудита.

> Внимание: Использование системы в аудита может привести к генерированию огромных журнальных файлов: их размер на сильно загруженных серверах в некоторых конфигурациях может достигать нескольких гигабайт в неделю. Администраторы должны внимательно следить за дисковым пространством в разделе системы аудита. Например, рекомендуется выделить отдельный раздел для файловой системы аудита `/var/audit`, чтобы переполнение раздела аудита не влияло на работоспособность всей остальной системы.

## 16.2. Ключевые понятия - краткий словарь.

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

- событие (event): Событие, которое может быть занесено в журнал. Администратор может выбирать, какие именно события будут журналироваться подсистемой аудита. Список важных для безопасности системы событий включает: создание файла, инициализацию сетевого соединения, вход пользователя в систему. События разделяются на ''приписываемые'' (attributable) - те, которые могут быть отнесены к конкретному пользователю - и ''не-приписываемые'' (non-attributable). Пример не-приписываемого события - любое событие, произошедшее до авторизации пользователя, такое, как неудачный вход пользователя в систему.

- Класс (class): События могут быть отнесены к одному или более классам, обычно основываясь на категории события: ''создание файла'' (fc), ''доступ к файлу'' (fo), ''выполнение файла'' (ex), события входа в систему и выхода из нее (lo). Использование классов позволяет администратору создавать высокоуровневые правила аудита без указания конкретных операций, отчет о которых должен добавляться в журнал.

- Запись (record): ''Запись'' - это единичная запись в журнале, описывающая то или иное событие. Запись обычно содержит информацию о типе события, информацию о субъекте события (пользователе), время события, информацию об объектах события (например, файлах) и информацию об успешности выполнения операции, породившей событие.

- Журнал (trail): ''журнал'' аудита, или лог-файл - содержит серию ''записей'' о системных событиях. Как правило, журнал содержит записи в строгом хронологическом порядке по времени завершения события. Только авторизованные процессы (например, `auditd`) имеют доступ к журналу.

- выражение выделения (selection expression): Строка, содержащая список префиксов и имен классов, используемая для выделения группы событий.

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

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

## 16.3. Установка системы аудита

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

    options    AUDIT

Процесс сборки и установки ядра подробно описан в главе Гл. 8.

После этого, необходимо разрешить запуск демона аудита, добавив следующую строку в rc.conf(5):

    auditd_enable="YES"

Для запуска демона со специфическими параметрами нужно указать эти параметры в опции `auditd_flags` файла rc.conf(5).

## 16.4. Настройка системы аудита

Все конфигурационные файлы системы аудита находятся в каталоге `/etc/security`. Перед запуском демона аудита там должны находиться следующие файлы:

- `audit_class` - Содержит определения классов аудита.

- `audit_control` - Параметры системы аудита: классы по умолчанию, минимальное дисковое пространство, которое должно оставаться на разделе журнала аудита, и другие.

- `audit_event` - Определяет основные события аудита. Это, в основном, системные вызовы.

- `audit_user` - События аудита для для отдельных пользователей. Пользователи, не упоминаемые в этом файле, будут рассматриваться как субъекты конфигурации по-умолчанию в файле `audit_control`.

- `audit_warn` - Скрипт командного интерпретатора Bourne Shell, который используется, чтобы сгенерировать предупреждающие сообщения об исключительных ситуациях, например, когда заканчивается свободное дисковое пространство для записей журналов аудита.

### 16.4.1. Формат конфигурационного файла

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

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

Следующий список содержит все классы по умолчанию, присутствующие в файле `audit_class`:

- `all` - `all` - Соответствует всем классам событий.

- `ad` - `administrative` - Аудит административных действий, произошедших в системе.

- `ap` - `application` - Аудит события, вызванного каким-либо приложением.

- `cl` - `file_close` - Аудит вызовов системной функции `close`.

- `ex` - `exec` - Аудит запуска приложения. Аудит аргументов командной строки и переменных окружения контролируется через audit_control(5) используя параметры `argv` и `envv` в опции `policy`.

- `fa` - `file_attr_acc` - Аудит доступа к атрибутам объектов и их изменению, например через stat(1), pathconf(2), а также подобных этим событий.

- `fc` - `file_creation` - Аудит событий, в результате которых создаются файлы.

- `fd` - `file_deletion` - Аудит событий, в результате которых удаляются файлы.

- `fm` - `file_attr_mod` - Аудит событий, в результате которых изменяются атрибуты файлов, например, chown(8), chflags(1), flock(2).

- `fr` - `file_read` - Аудит событий, в результате которых происходит чтение данных, открываются файлы на чтение и т.п.

- `fw` - `file_write` - - Аудит событий, в результате которых происходит запись данных, изменение файлов и так далее.

- `io` - `ioctl` - Аудит вызовов системной функции ioctl(2).

- `ip` - `ipc` - Аудит различных видов взаимодействия процессов, включая создание не-именованных каналов (pipe) и взаимодействие процессов в стиле System V IPC.

- `lo` - `login_logout` - Аудит событий login(1) и logout(1).

- `na` - `non_attrib` - Аудит не-приписываемых событий.

- `no` - `no_class` - Пустой класс, используется для отключения аудита.

- `nt` - `network` - Аудит событий, связанных с сетевыми подключениями, например connect(2) и accept(2).

- `ot` - `other` - Аудит событий, не вошедших в другие классы.

- `pc` - `process` - Аудит действий процессов, таких как exec(3) и exit(3).

Эти классы событий могут быть настроены изменением конфигурационных файлов `audit_class` и `audit_event`.

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

- `[пустой префикс]` - Аудит проводится как для успешного, так и для ошибочного события. Например, просто указание класса без префикса приведет к занесению события в журнал при любом результате операции.

- `+` - Аудит только успешных событий.

- `-` - Аудит только ошибочных событий.

- `^` - Отключение аудита как успешных, так и ошибочных событий.

- `^-` - Отключение аудита ошибочных событий.

- `^+` - Включение аудита успешных событий.

Следующий пример выбирает успешные и не-успешные события входа в систему и выхода из нее, и только успешные события исполнения файла:

    lo,+ex

### 16.4.2. Конфигурационные файлы

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

#### 16.4.2.1. Файл `audit_control`

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

    dir:/var/audit
    flags:lo
    minfree:20
    naflags:lo
    policy:cnt
    filesz:0

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

Параметр `flags` используется для установки глобальных опций. Значение этого параметра `lo` настраивает аудит для всех событий login(1) и logout(1). Более подробный пример:

    dir:/var/audit
    flags:lo,ad,-all,^-fa,^-fc,^-cl
    minfree:20
    naflags:lo

Такое значение параметра `flags` приведет к аудиту всех событий login(1) и logout(1), всех административных событий, всех ошибочных системных событий и, наконец, отключает аудит всех ошибочных событий классов `fa`, `fc` и `cl`. Несмотря на то, что параметр `-all` указывает на необходимость аудита всех системных событий, префикс `^-` отменяет это поведение для всех последующих опций.

Заметьте, что значения считываются слева направо. Поэтому находящиеся справа значения переопределяют значения, находящиеся слева.

Параметр `minfree` определяет минимальное значение свободного дискового пространства на разделе, в который сохраняются файлы журналов аудита. Например, если значение параметра `dir` установлено в `/var/audit`, а параметр `minfree` равен двадцати (20), то предупреждающее сообщение будет выдано, когда раздел `/var` будет заполнен на восемьдесят (80%) процентов.

Параметр `naflags` определяет классы аудита для не-приписываемых событий, то есть событий, для которых не определён конкретный пользователь.

#### 16.4.2.2. Файл `audit_user`

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

По умолчанию файл `audit_user` содержит:

    root:lo:no
    audit:fc:no

Обратите внимание: по умолчанию производится аудит всех `login`/`logout` событий и отключается аудит всех других событий для пользователя `root`. Эта конфигурация также включает аудит всех событий, связанных с созданием файлов и отключает аудит всех других событий для пользователя `audit`. Хотя использование системы аудита не требует наличия в системе специального пользователя, в некоторых конфигурациях, особенно использующих MAC (Mandatory Access Control), это может быть необходимо.

## 16.5. Администрирование системы аудита

### 16.5.1. Просмотр журнала аудита

Журнал аудита хранится в бинарном формате BSM, поэтому для его изменения и конвертации в текстовый формат понадобятся специальные утилиты. Команда `praudit` преобразует журнал аудита в текстовый формат; команда `auditreduce` может быть использована для ротации и фильтрации журнала в целях анализа, архивирования или распечатки. Команда `auditreduce` поддерживает множество параметров выборки, включая типы событий, классы событий, пользовательские события, дату и время событий и пути файлов, к которым относятся события.

Например, утилита `praudit` выведет все содержимое журнала аудита в текстовом формате:

    # praudit /var/audit/AUDITFILE

В данном примере `AUDITFILE` - журнал, который будет выведен в текстовом формате.

Журнал аудита состоит из серии записей, которые, в свою очередь состоят из элементов. Эти элементы команда `praudit` выводит последовательно - по одному на строку. Каждый элемент имеет специфический тип, например `заголовок` (header) содержит заголовок pfgbcb, a `путь` (path) - путь к файлу, к которому относится запись. lookup. Следующий пример показывает запись для события выполнения (execve):

    header,133,10,execve(2),0,Mon Sep 25 15:58:03 2006, + 384 msec
    exec arg,finger,doug
    path,/usr/bin/finger
    attribute,555,root,wheel,90,24918,104944
    subject,robert,root,wheel,root,wheel,38439,38032,42086,128.232.9.100
    return,success,0
    trailer,133

Эта запись является результатом успешного выполнения системного вызова `execve`, который стал результатом выполнения команды `finger doug`. Элемент `exec` содержит и команду, которую оболочка передала ядру, и ее аргументы. Элемент `путь` (path) содержит путь к исполняемому файлу в представлении ядра. Элемент `атрибут` (attribute) описывает исполняемый файл, и, в частности, права доступа к файлу. Элемент `субъект` (subject) описывает процесс, вызвавший выполнение и сохраняет его в виде ряда значений, представляющих собой UID аудируемого пользователя, исполняющие (effective) UID и GID, реальные (real) UID и GID, идентификатор процесса, идентификатор сессии, порт и адрес, с которого был осуществлен вход в систему. Обратите внимание - идентификатор аудируемого пользователя и реальный идентификатор пользователя отличаются: это значит, что пользователь `robert` повысил привилегии до пользователя `root` перед выполнением команды, но система аудита занесла его действия в журнал используя изначальный идентификатор. Наконец, элемент `возврат` (return) описывает успешное завершение операции с кодом завершения 0, а элемент `trailer` завершает запись.

### 16.5.2. Фильтрация журналов аудита

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

    # auditreduce -u trhodes /var/audit/AUDITFILE | praudit

Эта команда выделит все записи, относящиеся к пользователю `trhodes`, которые хранятся в файле ``AUDITFILE``.

### 16.5.3. Делегирование прав просмотра журнала

Члены группы `audit` имеют доступ на чтение к журналу аудита, находящемуся в `/var/audit`; по умолчанию эта группа пуста, и только `root` имеет к ним доступ. Для того, что бы передать пользователю права на чтение журнала, его необходимо добавить в группу `audit`. Право на чтение журнала аудита позволяет получить множество информации о поведении пользователей и процессов, что может привести к раскрытию конфиденциальных данных. Поэтому, рекомендуется делегировать права на чтение журнала аудита с большой осторожностью.

### 16.5.4. Мониторинг системы в реальном времени

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

    # praudit /dev/auditpipe

По умолчанию, потоки доступны только пользователю `root`. Чтобы сделать их доступными членам группы `audit` добавьте правило `devfs` в файл `devfs.rules`:

    add path 'auditpipe*' mode 0440 group audit

Смотрите страницу справочника devfs.rules(5) для более полной информации о настройке файловой системы devfs.

> Внимание: При неосторожном использовании возможно возникновение бесконечных циклов событий. Например, если аудиту подвергаются все операции сетевого ввода-вывода, и команда `praudit` запущена во время SSH-сессии, то любое событие породит вывод сообщения, которое в свою очередь тоже будет событием и так до бесконечности. Разумнее будет не запускать `praudit` на потоке событий из сессии, которая детально журналируется.

### 16.5.5. Ротация журнальных файлов аудита

Журнал аудита пишется только ядром и управляется только демоном аудита auditd. Администраторы не должны пытаться использовать newsyslog.conf(5) или другие инструменты для прямой ротации логов. Вместо этого, для прекращения аудита, реконфигурации и ротации журнальных файлов должна использоваться команда `audit`. Следующая команда приведет к созданию нового журнального файла и даст команду ядру переключиться на запись в этот файл. Протоколирование в старый файл будет прекращено, а сам файл - переименован. Это рекомендованный способ ротации журнальных файлов.

    # audit -n

> Внимание: Если демон auditd не запущен, то эта команда окончится неудачей и будет выведено сообщение об ошибке.

Добавление следующей строки в файл `/etc/crontab` приведет к принудительной ротации каждые двенадцать часов через cron(8):

    0     */12       *       *       *       root    /usr/sbin/audit -n

Изменения вступят в силу после сохранения файла `/etc/crontab`.

Автоматическая ротация журнальных файлов возможна при использовании опции `filesz` в файле audit_control(5), и описан в секции "Формат конфигурационного файла".

### 16.5.6. Сжатие журнальных файлов

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

    #
    # Compress audit trail files on close.
    #
    if [ "$1" = closefile ]; then
        gzip -9 $2
    fi

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

# Глава 17. Устройства хранения

Перевод на русский язык: Андрей Захватов.

## 17.1. Краткий обзор

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

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

- Терминологию, используемую во FreeBSD для описания организации данных на физическом диске (разделы и слайсы).

- Как добавить дополнительные винчестеры к вашей системе.

- Как настроить FreeBSD для использования дисковых устройств USB.

- Как настроить виртуальные файловые системы, такие, как диски в оперативной памяти.

- Как использовать квоты для ограничения использования дискового пространства.

- Как зашифровать диски, чтобы защитить их от взлома.

- Как создавать и записывать CD и DVD во FreeBSD.

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

- Как использовать программы резервного копирования, имеющиеся для FreeBSD.

- Как выполнять резервное копирование на дискеты.

- Что такое мгновенные копии файловых систем и как их эффективно использовать

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

- Узнать как настраивать и устанавливать новое ядро FreeBSD (Гл. 8).

## 17.2. Имена устройств

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

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

Тип диска | Имя дискового устройства
--- | ---
Винчестеры IDE | `ad`
Приводы IDE CDROM | `acd`
Винчестеры SCSI и дисковые устройства USB | `da`
Приводы SCSI CDROM | `cd`
Различные нестандартные приводы CDROM | `mcd` для Mitsumi CD-ROM, `scd` для Sony CD-ROM
Дискеты | `fd`
Ленточные приводы SCSI | `sa`
Ленточные приводы IDE | `ast`
Флэш-диски | `fla` для флэш-устройств DiskOnChip®
Диски RAID | `aacd` для Adaptec AdvancedRAID, `mlxd` и `mlyd` для Mylex, `amrd` для AMI MegaRAID, `idad` для Compaq Smart RAID, `twed` для 3ware® RAID.

## 17.3. Добавление дисков

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

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

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

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

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

Вследствие использования 32-разрядных целых чисел для адресации секторов, bsdlabel(8) ограничен 2^32-1 секторами на диск, или 2TB в большинстве случаев. Формат fdisk(8) позволяет наличие первого сектора со смещением не более 2^32-1 и длину не более 2^32-1, что ограничивает размер раздела до 2TB, а размер диска до 4TB в большинстве случаев. Формат sunlabel(8) ограничен 2^32-1 секторами на раздел и 8 разделами, что составляет 16TB. Для дисков большего раздела могут быть использованы разделы gpt(8).

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

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

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

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

   При работе с утилитой fdisk нажатие A используется для выделения под FreeBSD полностью всего диска. Когда будет задан вопрос о том, хотите ли вы ''сохранить совместимость с другими возможными операционными системами в будущем'', ответьте `YES`. Запишите изменения на диск при помощи команды W. А теперь выйдите из редактора FDISK, нажав Q. В этот момент вам будет задан вопрос о ''Master Boot Record'' (главной загрузочной записи). Так как вы добавляете диск к уже работающей системе, выберите `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` и добавлении записи для вашего нового диска.

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

#### 17.3.2.1. Работа со слайсами

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

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

Если у вас установлен диск IDE, подставьте `ad` вместо `da`.

#### 17.3.2.2. Эксклюзивный режим

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

    # dd if=/dev/zero of=/dev/da1 bs=1k count=1
    # bsdlabel -Bw da1 auto
    # bsdlabel -e da1                           # create the `e' partition
    # newfs /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
    # bsdlabel /dev/da1 | bsdlabel -BR da1 /dev/stdin
    # newfs /dev/da1e
    # mkdir -p /1
    # vi /etc/fstab                              # add an entry for /dev/da1e
    # mount /1

## 17.4. RAID

### 17.4.1. Программный RAID

#### 17.4.1.1. Конфигурация драйвера объединённого диска (CCD)

Оригинальный текст предоставил Christopher Shumway. Изменения внёс Jim Brown.

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

При проектировании описываемой далее системы в качестве самого важного фактора была выбрана её стоимость, затем быстродействие и надёжность. Скорость передачи данных для этой системы ограничивалась только пропускной способностью сети. И, хотя надёжность очень важна, CCD-диск, описываемый ниже, обслуживал работу с данными, полные копии которых уже хранились на дисках CD-R, так они могли быть с лёгкостью обновлены.

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

##### 17.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

> Замечание: Если FreeBSD не распознала все диски, проверьте корректность положения переключателей на них. На большинстве IDE-дисков имеется также переключатель ''Cable Select''. Он не имеет отношения к выбору ведущего и ведомого устройств. Для получения помощи по правильному положению переключателей обратитесь к документации по устройствам.

Затем определите, как сделать их частью файловой системы. Изучите справку по vinum(8) (Гл. 20) и ccd(4). В нашем конкретном случае была выбрана технология ccd(4).

##### 17.4.1.1.2. Настройка CCD

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

    device   ccd

Поддержка ccd(4) также может быть обеспечена загрузкой подгружаемого модуля ядра.

Для настройки ccd(4) сначала вам нужно воспользоваться утилитой bsdlabel(8) для разметки дисков:

    bsdlabel -w ad1 auto
    bsdlabel -w ad2 auto
    bsdlabel -w ad3 auto

При этом создаются метки для `ad1c`, `ad2c` и `ad3c`, которые занимают диск полностью.

Следующим шагом является изменение типа метки диска. Для редактирования дисков можно использовать утилиту bsdlabel(8):

    bsdlabel -e ad1
    bsdlabel -e ad2
    bsdlabel -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)

##### 17.4.1.1.3. Построение файловой системы

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

    ccdconfig ccd0 32 0 /dev/ad1e /dev/ad2e /dev/ad3e

Использование и значение каждого параметра описывается ниже:

  Первым аргументом является конфигурируемое устройство, в нашем случае `/dev/ccd0c`. Часть `/dev/` является необязательной.
  Чередование для файловой системы. Оно определяет размер единицы блока данных в количестве дисковых блоков, каждый из которых обычно имеет объём в 512 байт. Таким образом, при чередовании в 32 это будет составлять 16384 байт.
  Опции для ccdconfig(8). Если вы хотите включить зеркалирование диска, то можете задать это здесь. В нашей конфигурации зеркалирование для ccd(4) не предусмотрено, поэтому здесь задан 0 (ноль).
  Последним параметром для ccdconfig(8) является список устройств для объединения в массив. Для каждого устройства нужно задавать полное имя.

После запуска ccdconfig(8) устройство ccd(4) будет отконфигурировано. Может будет построить файловую систему. Обратитесь к справке по команде newfs(8) для выяснения требуемых параметров, или просто запустите:

    newfs /dev/ccd0c

##### 17.4.1.1.4. Автоматическое выполнение

Вообще говоря, вам потребуется монтировать ccd(4) при каждой перезагрузке. Для этого сначала вы должны отконфигурировать это устройство. Запишите вашу текущую конфигурацию в файл `/etc/ccd.conf` при помощи такой команды:

    ccdconfig -g > /etc/ccd.conf

При перезагрузке скрипт `/etc/rc` запускает команду `ccdconfig -C`, если существует файл `/etc/ccd.conf`. При этом ccd(4) автоматически конфигурируется так, чтобы он мог быть смонтирован.

> Замечание: Если при загрузке вы входите в однопользовательский режим, то перед тем, как выполнять монтирование ccd(4) по команде mount(8), вам нужно для конфигурации массива запустить следующую команду:

>     ccdconfig -C

Для автоматического монтирования ccd(4) поместите запись о ccd(4) в файл `/etc/fstab`, чтобы он мог быть смонтирован во время загрузки системы:

    /dev/ccd0c              /media       ufs     rw      2       2

#### 17.4.1.2. Менеджер томов Vinum

Менеджер томов Vinum является драйвером блочного устройства, который реализует виртуальные диски. Он отделяет дисковое оборудование от интерфейса блочного устройства и работает с данными таким образом, что в результате повышается гибкость, производительность и надёжность по сравнению с традиционным взглядом на дисковое хранилище как на кусок дискового пространства. vinum(8) реализует модели RAID-0, RAID-1 и RAID-5, как по отдельности, так и в комбинациях.

Обратитесь к Гл. 20 для получения более полной информации о vinum(8).

### 17.4.2. Аппаратный RAID

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

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

### 17.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. Сначала вам нужно отключить канал контроллера ATA, содержащий отказавший диск, чтобы его можно было без последствий извлечь:

       # atacontrol detach ata3

2. Замените диск.

3. Повторно подключите канал дискового контроллера:

       # atacontrol attach ata3
       Master:  ad6 <MAXTOR 6L080J4/A93.0500> ATA/ATAPI rev 5
       Slave:   no device present

4. Добавьте новый диск к массиву в качестве резервного:

       # atacontrol addspare ar0 ad6

5. Перестройте массив:

       # atacontrol rebuild ar0

6. Проверить состояние дел можно при помощи следующей команды:

       # 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

7. Дождитесь завершения этой операции.

## 17.5. USB устройства хранения

Предоставил Marc Fonvieille.

Множество современных устройств хранения используют Universal Serial Bus (USB): жесткие диски, брелоки USB, CD-R приводы, и т.д. FreeBSD предоставляет поддержку этих устройств.

### 17.5.1. Настройка

Драйвер umass(4) предоставляет поддержку устройств хранения USB. Если вы используете `GENERIC` ядро, изменять что-либо в настройках не потребуется. Если вы используете настроенное ядро, убедитесь, что в файле настройки присутствуют следующие строки:

    device scbus
    device da
    device pass
    device uhci
    device ohci
    device ehci
    device usb
    device umass

Для доступа к устройствам хранения USB драйвер umass(4) использует подсистему SCSI, ваши устройства USB будут видны системе как SCSI устройства. В зависимости от чипсета USB на материнской плате, для включения поддержки USB 1.X вам потребуется только один из параметров `device uhci` или `device ohci`. Однако, наличие обоих этих параметров не помешает. Поддержка контроллеров USB 2.0 предоставляется драйвером ehci(4) (строка `device ehci`). Не забудьте скомпилировать и установить новое ядро после добавления каких-либо строк.

> Замечание: Если ваше USB устройство это пишущий привод CD-R или DVD, необходимо добавить в ядро SCSI CD-ROM драйвер, cd(4), следующей строкой:

>     device cd

> Поскольку устройство записи видно как SCSI диск, драйвер atapicam(4) не должен использоваться в файле настройки.

### 17.5.2. Тестирование конфигурации

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

    umass0: USB Solid state disk, rev 1.10/1.00, addr 2
    GEOM: create disk da0 dp=0xc2d74850
    da0 at umass-sim0 bus 0 target 0 lun 0
    da0: <Generic Traveling Disk 1.11> Removable Direct Access SCSI-2 device
    da0: 1.000MB/s transfers
    da0: 126MB (258048 512 byte sectors: 64H 32S/T 126C)

Конечно, производитель, имя устройства (`da0`) и другие детали могут отличаться в зависимости от конфигурации.

Поскольку устройство USB видится как SCSI, команда `camcontrol` может быть использована для вывода списка устройств хранения USB, подключенных к системе:

    # camcontrol devlist
    <Generic Traveling Disk 1.11>      at scbus0 target 0 lun 0 (da0,pass0)

Если на диске есть файловая система, у вас должна быть возможность смонтировать ее. Разд. 17.3 поможет вам создать и отформатировать разделы на диске USB если потребуется.

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

Чтобы это устройство мог смонтировать обычный пользователь, необходимо выполнить определенные действия. Для начала, необходимо дать обычным пользователям доступ к устройствам, создаваемым при подключении USB устройства. Решение состоит во включении всех пользователей данных устройств в группу `operator`. Это делается утилитой pw(8). Затем, когда устройства созданы, у группы `operator` должен быть доступ на чтение и запись для этих устройств. Это выполняется путем добавления следующих строк в `/etc/devfs.rules`:

    [localrules=5]
    add path 'da*' mode 0660 group operator

> Замечание: Если к системе подключены SCSI диски, это должно быть сделано немного иначе. Так, если в системе уже есть диски с `da0` по `da2`, вторая строка должна выглядеть так:

>     add path 'da[3-9]*' mode 0660 group operator

> Это исключит уже существующие диски из группы `operator`.

Вам также потребуется включить набор правил devfs.rules(5) в файл `/etc/rc.conf`:

    devfs_system_ruleset="localrules"

Затем, ядро необходимо настроить так, чтобы оно позволяло обычным пользователям монтировать файловые системы. Простейший способ сделать это - добавить в файл `/etc/sysctl.conf` следующую строку:

    vfs.usermount=1

Этот параметр установится только после последующей перезагрузки. Для установки этой переменной можно также использовать sysctl(8).

Последний шаг - создание каталога, куда будет монтироваться файловая система. Каталог должен принадлежать пользователю, монтирующему файловую систему. Один из способов сделать это под пользователем `root` - создать каталог `/mnt/`username`` (замените `username` именем пользователя, а `usergroup` -- именем главной группы пользователя):

    # mkdir /mnt/username
    # chown username:usergroup /mnt/username

Предположим, что USB брелок подключен, и появилось устройство `/dev/da0s1`. Поскольку эти устройства обычно поставляются форматированными с файловой системой FAT, их можно смонтировать так:

    % mount -t msdosfs -o -m=644,-M=755 /dev/da0s1 /mnt/username

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

    umass0: at uhub0 port 1 (addr 2) disconnected
    (da0:umass-sim0:0:0:0): lost device
    (da0:umass-sim0:0:0:0): removing device entry
    GEOM: destroy disk da0 dp=0xc2d74850
    umass0: detached

### 17.5.3. Дополнительная информация

Помимо разделов Добавление дисков и Монтирование и размонтирование файловых систем, также может быть полезно чтение различных страниц справочника: umass(4), camcontrol(8), и usbconfig(8) для FreeBSD 8.X или usbdevs(8) для более ранних версий FreeBSD.

## 17.6. Запись и использование оптических носителей (CD)

Текст предоставил Mike Meyer.

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

Компакт-диски (CD) имеют несколько особенностей, отличающих их от обычных дисков. Во-первых, на них невозможно производить запись. Они спроектированы с расчетом на то, что их можно читать последовательно без задержек на перемещение головки между дорожками. К тому же их гораздо проще переносить от системы к системе, чем носители близкого объема.

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

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

Для создания файла данных, содержащего файловую систему ISO 9660, используется программа mkisofs(8), которая включена в порт `sysutils/cdrtools`. Она имеет опции, поддерживающие различные расширения, и описана ниже.

Какой инструмент использовать для записи CD, зависит от того, является ли ваше устройство для записи CD устройством ATAPI или каким-либо другим. С устройствами для записи стандарта ATAPI используется программа `burncd`, которая является частью комплекта поставки системы. С устройствами SCSI и USB нужно использовать `cdrecord` из порта `sysutils/cdrtools`. Утилиту `cdrecord` и другие инструменты для SCSI-приводов также можно использовать при работе с ATAPI-оборудованием через модуль ATAPI/CAM.

Если для записи CD вам нужна программа с графическим интерфейсом пользователя, взгляните на X-CD-Roast или K3b. Они доступны в виде пакетов или из портов `sysutils/xcdroast` и `sysutils/k3b`. Программам X-CD-Roast и K3b для работы с оборудованием ATAPI требуется модуль ATAPI/CAM.

### 17.6.2. mkisofs

Программа mkisofs(8), поставляемая с портом `sysutils/cdrtools` создаёт файловую систему 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. По умолчанию, mkisofs(8) создает образ ISO в так называемом режиме ''эмуляции флоппи-диска'', и потому ожидает загрузочный образ размера строго 1200, 1440 или 2880 KB. Некоторые загрузчики, в том числе и тот, что используется на дистрибутивных дисках FreeBSD, не используют режим эмуляции; в этом случае должна использоваться опция `-no-emul-boot`. Так что, если `/tmp/myboot` содержит загрузочную систему FreeBSD с загрузочным образом в `/tmp/myboot/boot/cdboot`, вы можете создать образ файловой системы ISO 9660 в `/tmp/bootable.iso` следующим образом:

    # mkisofs -R -no-emul-boot -b boot/cdboot -o /tmp/bootable.iso /tmp/myboot

Сделав это, и имея в ядре отконфигурированное устройство `md`, вы можете смонтировать файловую систему, выполнив:

    # mdconfig -a -t vnode -f /tmp/bootable.iso -u 0
    # mount -t cd9660 /dev/md0 /mnt

В этот момент вы можете проверить, что `/mnt` и `/tmp/myboot` идентичны.

Имеется много других опций, которые можно использовать с программой mkisofs(8) для тонкой настройки её поведения. В частности: модификации в размещении ISO 9660 и создание дисков в форматах Joliet и HFS. Обратитесь к справочным страницам по mkisofs(8) для получения более подробной информации.

### 17.6.3. burncd

Если ваше устройство для записи CD соответствует стандарту ATAPI, то для записи ISO-образа на компакт-диск вы можете воспользоваться командой `burncd`. `burncd` входит в базовый комплект операционной системы и установлена как `/usr/sbin/burncd`. Использовать её очень просто, так как параметров у ней немного:

    # burncd -f cddevice data imagefile.iso fixate

По этой команде файл `imagefile.iso` будет скопирован на `cddevice`. По умолчанию используется устройство `/dev/acd0`. Для получения информации о параметрах, задающих скорость записи, выброс диска после записи и запись звуковых данных, обратитесь к burncd(8).

### 17.6.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-Clone 2.01 (i386-unknown-freebsd7.0) Copyright (C) 1995-2004 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) для выяснения подробностей. Там же находится информация о записи звуковых дорожек, управлении скоростью и другим вещам.

### 17.6.5. Копирование аудио CD

Вы можете копировать музыкальные CD, извлекая данные аудио с CD в набор файлов, а затем записывая эти файлы на чистый CD. Процесс несколько различен в случаях использования устройств ATAPI и SCSI.

Устройства SCSI

1. Используйте `cdda2wav` для извлечения данных аудио.

       % cdda2wav -vall -D2,0 -B -Owav

2. Воспользуйтесь `cdrecord` для записи файлов `.wav`.

       % cdrecord -v dev=2,0 -dao -useinfo  *.wav

   Значение, соответствующее `2,0`, должно быть установлено правильно, как это описано в Разд. 17.6.4.

Устройства ATAPI

> Замечание: На приводах ATAPI также можно использовать утилиту `cdda2wav`. Для её функционирования потребуется драйвер ATAPI/CAM. Следует отметить, что данная утилита предназначена для корректного извлечения и обработки аудио данных, в отличие от утилиты, приведенной в нижеследующем примере.

1. Драйвер устройств ATAPI CD делает каждую дорожку доступной как `/dev/acd`d`t`nn``, где `d` является номером привода, а `nn` соответствует номеру дорожки, который записывается двумя десятичными цифрами с нулём в начале, если это нужно. Таким образом, первая дорожка на первом диске будет носить имя `/dev/acd0t01`, вторая будет именоваться `/dev/acd0t02`, третья будет носить имя `/dev/acd0t03` и так далее.

   Удостоверьтесь, что соответствующий файл имеется в каталоге `/dev`. При его отсутствии следует принудительно перечитать оглавление диска:

       # dd if=/dev/acd0 of=/dev/null count=1

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/acd0 audio track1.cdr track2.cdr ... fixate

### 17.6.6. Копирование компакт-дисков с данными

Вы можете скопировать CD с данными в файл образа, который функционально эквивалентен файлу образа, созданному командой mkisofs(8), и вы можете использовать его для копирования любого CD с данными. В приводимом здесь примере предполагается, что ваш привод CDROM называется `acd0`. Подставьте название вашего привода CDROM.

    # dd if=/dev/acd0 of=file.iso bs=2048

Теперь, когда вы имеете образ, вы можете записать его на CD так, как это описано выше.

### 17.6.7. Использование компакт-диски с данными

Теперь, после того, как вы создали стандартный CDROM с данными, вы, наверное, захотите смонтировать его и считать с него данные. По умолчанию mount(8) предполагает, что файловая система имеет тип `ufs`. Если вы попытаетесь выполнить что-то вроде:

    # mount /dev/cd0 /mnt

вы получите сообщение “`Incorrect super block`”, и диск не смонтируется. CDROM не является файловой системой `UFS`, поэтому попытки смонтировать его таким образом будут терпеть неудачу. Вам просто нужно указать команде mount(8), что файловая система имеет тип `ISO9660`, и всё должно заработать. Сделайте это, задав параметр `-t cd9660` при вызове mount(8). К примеру, если вы хотите смонтировать устройство CDROM, `/dev/cd0`, в каталог `/mnt`, вы должны выполнить:

    # mount -t cd9660 /dev/cd0 /mnt

Заметьте, что имя вашего устройства (`/dev/cd0` в этом примере) может быть другим, в зависимости от интерфейса, используемого в CDROM. Кроме того, параметр `-t cd9660` всего лишь задаёт выполнение утилиты mount_cd9660(8). Пример выше может быть упрощён до:

    # mount_cd9660 /dev/cd0c /mnt

Таким способом, вообще говоря, вы можете использовать компакт-диски любого производителя. Диски с некоторыми расширениями ISO 9660 могут, однако, работать со странностями. К примеру диски Joliet хранят все имена файлов в виде последовательностей двухбайтовых символов Unicode. Ядро FreeBSD не может работать с Unicode, но CD9660 драйвер способен преобразовывать Unicode символы на лету. Если некоторые символы не английского алфавита выглядят, как знаки вопроса, то вам нужно указать используемую вами кодировку с помощью опции `-C`. За дополнительной информацией, обращайтесь к странице справочника mount_cd9660(8).

> Замечание: Чтобы смочь произвести преобразование символов посредством опции `-C`, ядру понадобится загрузить модуль `cd9660_iconv.ko`. Это может быть сделано либо добавлением ниже представленной строчки в `loader.conf`:

>     cd9660_iconv_load="YES"

> с последующей перезагрузкой машины, либо загрузкой модуля вручную с помощью kldload(8).

Время от времени вы можете получать сообщения “`Device not configured`” при попытке смонтировать CDROM. Это обычно означает, что привод CDROM полагает, что в нём нет диска, или что привод не виден на шине. Приводу CDROM может понадобиться несколько секунд, чтобы понять, что он был закрыт, так что будьте терпеливы.

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

    options SCSI_DELAY=15000

Это укажет вашей шине SCSI выдерживать 15-секундную паузу во время загрузки, чтобы дать вашему приводу CDROM шанс ответить на сброс шины.

### 17.6.8. Запись необработанных данных на компакт-диски

Вы можете предпочесть запись файла непосредственно на CD без создания файловой системы ISO 9660. Некоторые поступают так при создании резервных копий. Это выполняется гораздо быстрее. чем запись стандартного компакт-диска:

    # burncd -f /dev/acd1 -s 12 data archive.tar.gz fixate

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

    # tar xzvf /dev/acd1

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

### 17.6.9. Использование драйвера ATAPI/CAM

Предоставил Marc Fonvieille.

Этот драйвер позволяет работать с ATAPI-устройствами (приводы CD-ROM, CD-RW, DVD и так далее) через подсистему SCSI, таким образом расширяя использование таких приложений, как `sysutils/cdrdao` или cdrecord(1).

Для использования этого драйвера вам необходимо добавить в файл `/boot/loader.conf` следующую строку:

    atapicam_load="YES"

с последующей перезагрузкой машины.

> Замечание: Если для вас предпочтительнее статически скомпилировать поддержку atapicam(4) в ядро, то добавьте эту строчку в файл конфигурации ядра:

>     device atapicam

> Кроме того, в файле конфигурации ядра должны быть следующие строки:

>     device ata
>     device scbus
>     device cd
>     device pass

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

В процессе загрузки ваш пишущий привод должен появиться примерно следующим образом:

    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/cd0 /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).

## 17.7. Создание и использование оптических носителей (DVD)

Предоставил Marc Fonvieille. Дополнения предоставил Andy Polyakov.

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

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

Для записываемых DVD существует пять физических форматов записи:

- DVD-R: Был первым форматом записываемых DVD. Стандарт DVD-R был создан DVD Forum. Это формат для однократной записи.

- DVD-RW: Это перезаписываемая версия стандарта DVD-R. Носители DVD-RW могут быть перезаписаны около 1000 раз.

- DVD-RAM: Это также перезаписываемый формат, поддерживаемый DVD Forum. DVD-RAM может быть виден как съемный жесткий диск. Однако, этот носитель не совместим с большинством приводов DVD-ROM и проигрывателями DVD-Video; лишь некоторые пишущие DVD поддерживают формат DVD-RAM. Более подробно о работе с DVD-RAM можно прочитать в разделе Разд. 17.7.9.

- DVD+RW: Это перезаписываемый формат, созданный DVD+RW Alliance. Носитель DVD+RW может быть перезаписан около 1000 раз.

- DVD+R: Этот формат -- однократно записываемая версия формата DVD+RW.

Однослойный записываемый DVD может хранить до 4,700,000,000 байт, что равно 4.38 Гбайт, или 4485 Мбайт (1 килобайт это 1024 байт).

> Замечание: Необходимо различать физический носитель и приложение. Например, DVD-Video это определенная файловая раскладка, которая может быть помещена на записываемый DVD любого физического формата: DVD-R, DVD+R, DVD-RW и т.д. Перед выбором типа носителя вы должны убедиться, что и устройство записи и DVD-Video проигрыватель (отдельный или DVD-ROM привод компьютера) совместимы с данным носителем.

### 17.7.2. Настройка

Для записи DVD будет использоваться программа growisofs(1). Эта команда входит в набор утилит dvd+rw-tools (`sysutils/dvd+rw-tools`), который поддерживает все типы носителей DVD.

Эти утилиты используют подсистему SCSI для доступа к устройствам, следовательно необходимо добавить в ядро поддержку ATAPI/CAM. Если пишущий привод использует USB интерфейс, это добавление бесполезно и необходимо прочесть более подробную информацию по настройке устройств USB в Разд. 17.5

Вам также потребуется включить DMA доступ для устройств ATAPI, это можно сделать добавив в `/boot/loader.conf` следующую строку:

    hw.ata.atapi_dma="1"

Перед использованием dvd+rw-tools вы должны свериться со списком совместимого оборудования dvd+rw-tools с информацией по устройствам для записи DVD.

> Замечание: Если вам нужен графический интерфейс пользователя, взгляните на K3b (`sysutils/k3b`), который предоставляет дружественный пользователю интерфейс к growisofs(1) и многим другим программам записи.

### 17.7.3. Запись DVD с данными

Команда growisofs(1) является оболочкой для mkisofs, она вызовет mkisofs(8) для создания файловой системы и запишет DVD. Это означает, что вам не потребуется создавать образ с данными перед началом процесса записи.

Для записи данных из каталога `/path/to/data` на DVD+R или DVD-R, используйте следующую команду:

    # growisofs -dvd-compat -Z /dev/cd0 -J -R /path/to/data

Параметры `-J -R` передаются mkisofs(8) для создания файловой системы (в данном случае: файловая система ISO 9660 с расширениями Joliet и Rock Ridge), обратитесь к странице справочника mkisofs(8) за более подробной информацией.

Параметр `-Z` используется для первой сессии записи в любом случае: для одной или нескольких сессий. Устройство DVD, `/dev/cd0`, должно быть изменено в соответствии с имеющимися настройками. Параметр `-dvd-compat` закроет диск и дозапись станет невозможна. Это должно улучшить совместимость с приводами DVD-ROM.

Возможна также запись предварительного (pre-mastered) образа, например, для записи `imagefile.iso` запустим:

    # growisofs -dvd-compat -Z /dev/cd0=imagefile.iso

Скорость записи должна быть определена и автоматически установлена в соответствии с носителем и приводом. Если вы хотите явно указать скорость записи, используйте параметр `-speed=`. За дальнейшей информацией обратитесь к странице справочника growisofs(1).

> Замечание: Если размер файлов внутри набора превышает 4.38Гб, то необходимо будет создать гибридную файловую систему UDF/ISO-9660, для чего потребуется передать параметры `-udf -iso-level 3` в mkisofs(8) и в остальные соответствующие программы (например, growisofs(1)). Указание параметров обязательно лишь во время создания файла образа или во время непосредственной записи на диск. Созданный таким способом диск должен монтироваться утилитой mount_udf(8). Диск будет доступен лишь тем операционным системам, которые поддерживают UDF; в противном случае носитель будет отображаться как поврежденный.

> Для того, чтобы создать такой образ, выполните:

>     % mkisofs -R -J -udf -iso-level 3 -o imagefile.iso /path/to/data

> Для того, чтобы записать файлы прямо на диск, наберите:

>     # growisofs -dvd-compat -udf -iso-level 3 -Z /dev/cd0 -J -R /path/to/data

> Если у вас в распоряжении уже имеется образ, содержащий в себе файлы большого размера, то для записи образа на диск никаких дополнительных опций для growisofs(1) не потребуется.

> Также удостоверьтесь, что у вас установлена последняя версия `sysutils/cdrtools` ( mkisofs(8) принадлежит к этому порту), поскольку предыдущие версии утилит не поддерживают работу с большими файлами. Если с этим портом возникают проблемы, то установите `sysutils/cdrtools-devel` и прочитайте страницу справочника mkisofs(8).

### 17.7.4. Запись DVD-Video

DVD-Video это особая файловая система, базирующаяся на ISO 9660 и спецификациях micro-UDF (M-UDF). DVD-Video также представляет определенную иерархию структуры данных, поэтому для создания DVD потребуется особая программа, такая как `multimedia/dvdauthor`.

Если у вас уже есть образ файловой системы DVD-Video, просто запишите его как любой другой образ, примеры находятся в предыдущем разделе. Если вы создали DVD и результат находится в каталоге `/path/to/video`, для записи DVD-Video должна быть использована следующая команда:

    # growisofs -Z /dev/cd0 -dvd-video /path/to/video

Параметр `-dvd-video` будет передан mkisofs(8) и укажет создать файловую систему DVD-Video. Помимо этого, параметр `-dvd-video` подразумевает параметр growisofs(1) `-dvd-compat`.

### 17.7.5. Использование DVD+RW

В отличие от CD-RW, новый DVD+RW необходимо отформатировать перед первым использованием. Программа growisofs(1) позаботится об этом сама при необходимости, и это рекомендованный способ. Тем не менее, для форматирования DVD+RW вы можете использовать команду `dvd+rw-format`:

    # dvd+rw-format /dev/cd0

Эту операцию необходимо выполнить лишь однажды, помните, что только новые носители DVD+RW необходимо форматировать. Затем запишите DVD+RW тем способом, который описан в предыдущем разделе.

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

    # growisofs -Z /dev/cd0 -J -R /path/to/newdata

Формат DVD+RW делает возможным легко дописать данные к предыдущей записи. Операция состоит в присоединении предыдущей сессии к существующей, это не мультисессионная запись, growisofs(1) расширит (grow) файловую систему ISO 9660, существующую на носителе.

Например, для дозаписи данных к предыдущей сессии на DVD+RW, используется следующая команда:

    # growisofs -M /dev/cd0 -J -R /path/to/nextdata

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

> Замечание: Вы можете использовать параметр `-dvd-compat` для улучшения совместимости с приводами DVD-ROM. В случае DVD+RW это не помешает добавлению данных.

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

    # growisofs -Z /dev/cd0=/dev/zero

### 17.7.6. Использование DVD-RW

Существует два формата дисков DVD-RW: последовательно дополняемый и с ограниченной перезаписью. По умолчанию формат дисков DVD-RW последовательный.

Новый DVD-RW может быть записан непосредственно без необходимости форматирования, однако DVD-RW с данными в последовательном формате необходимо очистить перед созданием новой начальной сессии.

Для очистки DVD-RW в последовательном формате, запустите:

    # dvd+rw-format -blank=full /dev/cd0

> Замечание: Полная очистка (`-blank=full`) займет около одного часа на скорости 1x. Быструю очистку можно выполнить с параметром `-blank`, если DVD-RW будет записан в режиме Disk-At-Once (DAO). Для записи DVD-RW в режиме DAO, используйте команду:

>     # growisofs -use-the-force-luke=dao -Z /dev/cd0=imagefile.iso

> Параметр `-use-the-force-luke=dao` не должен потребоваться, поскольку growisofs(1) попытается определить был ли носитель быстро очищен и включить DAO запись.

> Фактически, лучше использовать режим с ограниченной перезаписью с любым DVD-RW, этот формат более гибкий, чем формат по умолчанию с последовательной записью.

Для записи данных на последовательный DVD-RW, используйте ту же команду, что и для других форматов DVD:

    # growisofs -Z /dev/cd0 -J -R /path/to/data

Если вы хотите добавить данные к предыдущей записи, используйте параметр growisofs(1) `-M`. Однако при добавлении данных на DVD-RW в последовательном режиме, на диске будет создана новая сессия и в результате получится мультисессионный диск.

В формате DVD-RW с ограниченной перезаписью не требуется очищать носитель перед созданием новой начальной сессии, вам всего лишь нужно переписать диск с параметром `-Z`, подобно DVD+RW. Возможно также увеличение существующей файловой системы ISO 9660, записанной на диск тем же способом, как для DVD+RW с параметром `-M`. В результате получится односессионный DVD.

Для перевода DVD-RW в формат с ограниченной перезаписью, необходимо использовать следующую команду:

    # dvd+rw-format /dev/cd0

Для перевода обратно в последовательный формат, выполните:

    # dvd+rw-format -blank=full /dev/cd0

### 17.7.7. Мультисессия

Лишь несколько DVD-ROM и проигрывателей поддерживают мультисессионные DVD, в основном они в лучшем случае прочтут только первую сессию. DVD+R, DVD-R и DVD-RW в последовательном формате могут работать с несколькими сессиями, и это не относится к форматам DVD+RW и DVD-RW в формате ограниченной перезаписи.

Использование следующей команды после первой (не закрытой) сессии для DVD+R, DVD-R, или DVD-RW в последовательном формате, добавит на диск новую сессию:

    # growisofs -M /dev/cd0 -J -R /path/to/nextdata

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

> Замечание: Некоторый объем носителя используется между сессиями для завершения и начала сессии. Следовательно, для оптимизации объема хранения сессии должны быть большими. Количество сессий ограничено 154 для DVD+R, около 2000 для DVD-R и 127 для DVD+R Double Layer.

### 17.7.8. Дополнительная информация

Для получения дополнительной информации о DVD, можно запустить команду `dvd+rw-mediainfo `/dev/cd0``, диск должен находиться в приводе.

Дополнительная информация о dvd+rw-tools может быть найдена на странице справочника growisofs(1), на Web-сайте dvd+rw-tools и в архивах списка рассылки cdwrite.

> Замечание: Вывод `dvd+rw-mediainfo` при записи или проблемный носитель необходимы для любого сообщения о проблеме. Без этого вывода будет совершенно невозможно помочь вам.

### 17.7.9. Использование DVD-RAM

#### 17.7.9.1. Конфигурация

Записывающие устройства DVD-RAM поставляются с интерфейсами SCSI и ATAPI. В последнем случае вы должны убедиться, что для них включен режим DMA, добавив в файл `/boot/loader.conf` строку

    hw.ata.atapi_dma="1"

#### 17.7.9.2. Подготовка носителя

Как указывалось ранее, DVD-RAM представляется съемным жестким диском. Как и другие дисковые устройства, DVD-RAM должен быть ''подготовлен'' к первому использованию. В нашем примере мы займём все пространство диска одной файловой системой UFS2:

    # dd if=/dev/zero of=/dev/acd0 bs=2k count=1
    # bsdlabel -Bw acd0
    # newfs /dev/acd0

Имя устройства DVD device, `acd0`, должно соответствовать вашей конфигурации.

#### 17.7.9.3. Использование носителя

После выполнения указанных выше команд, DVD-RAM может быть смонтирован как обычный жесткий диск:

    # mount /dev/acd0 /mnt

После этого вы можете читать и писать на DVD-RAM.

## 17.8. Дискеты

Первоначальный текст предоставил Julio Merino. Переписал Martin Karlsson.

Хранение данных на дискетах иногда бывает полезным, например, когда нет других съёмных носителей или когда необходимо перенести небольшой объём данных на другой компьютер.

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

### 17.8.1. Форматирование дискет

#### 17.8.1.1. Устройство

Доступ к гибким дискам, как, впрочем, и к остальным устройствам, осуществляется через соответствующие файлы в каталога `/dev`. Чтобы обратиться к дискете, просто используйте `/dev/fd`N``.

#### 17.8.1.2. Форматирование

Перед тем, как дискетой можно будет воспользоваться, её необходимо отформатировать на низком уровне. Обычно это выполняется производителем, однако форматирование является хорошим способом проверить целостность носителя. Большинство гибких дисков предназначены для использования с размером 1440kB, однако возможно задать меньший или больший размер.

Для низкоуровневого форматирования дискет вам нужно использовать fdformat(1). В качестве параметра этой утилите передаётся имя устройства.

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

##### 17.8.1.2.1. Форматирование гибких дисков

Для форматирования гибких дисков используйте устройства `/dev/fd`N``. Вставьте новую 3.5-дюймовую дискету в дисковод и введите команду:

    # /usr/sbin/fdformat -f 1440 /dev/fd0

### 17.8.2. Метка диска

После низкоуровневого форматирования диска вам нужно поместить на него метку диска. Эта метка будет потом разрушена, но она будет нужна системе для определения размера диска и его характеристик.

Новая метка диска будет касаться диска в целом, и будет содержать полную информацию о параметрах дискеты. Значения геометрии для метки диска перечислены в файле `/etc/disktab`.

Теперь вы можете запустить bsdlabel(8) примерно так:

    # /sbin/bsdlabel -B -w /dev/fd0 fd1440

### 17.8.3. Файловая система

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

Файловой системой для дискеты может служить UFS или FAT. Вообще говоря, FAT для дискет походит лучше.

Для размещения на дискете новой файловой системы, выполните:

    # /sbin/newfs_msdos /dev/fd0

Теперь диск готов к работе.

### 17.8.4. Использование дискет

Для работы с гибким диском смонтируйте его при помощи утилит mount_msdosfs(8). Можно также использовать пакет `emulators/mtools` из коллекции портов.

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

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

### 17.9.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 Гбайт.

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

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

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

### 17.9.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 градусов вокруг шпульки, которая держит головки. Во время скольжения ленты вокруг шпульки последняя вращается. В результате достигается высокая плотность записи данных с очень близко лежащими дорожками, расположенными под наклоном по всей ленте.

### 17.9.3. QIC

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

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

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

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

### 17.9.4. 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). Одновременно записываются две дорожки. Срок жизни головок чтения/записи сравнительно велик; как только лента перестает двигаться, одновременно прекращается трение между головками и лентой.

### 17.9.5. AIT

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

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

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

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

    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). Здесь имеется два решения:

- По команде `mt fsf 1` ленточный накопитель записывает идентификационный блок на ленту.

- Воспользуйтесь кнопкой на передней панели для выброса ленты.

  Вставьте ленту повторно и по команде `dump` сбросьте данные на ленту.

  Программа `dump` выдаст “`DUMP: End of tape detected`”, а на консоли будет выведено: “`HARDWARE FAILURE info:280 asc:80,96`”.

  перемотайте ленту такой командой: `mt rewind`.

  Последующие операции с лентой будут успешными.

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

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

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

- Носитель ненадёжен, особенно если речь идет о больших сроках хранения.

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

- Дискеты имеют весьма ограниченную емкость (дни, когда весь винчестер копировался на десяток или около того дискет, давно прошли).

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

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

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

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

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

    # tar Mcvf /dev/fd0 *

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

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

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

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

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

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

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

    # tar Mxvf /dev/fd0

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

    # tar Mxvf /dev/fd0 filename

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

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

## 17.11. Стратегии резервного копирования

Первоначально написаноLowell Gilbert.

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

- Отказ жесткого диска

- Случайное удаление файлов

- Повреждение содержимого файлов

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

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

Вот несколько наиболее распространенных технологий, применяемых для резервного копирования:

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

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

- Полные копии файловых систем или дисков (например, периодический запуск программы rsync(1) для машины целиком). Для защиты от отказа жестких дисков этот способ обычно несколько уступает RAID; для восстановления случайно удаленных файлов может быть сравним по удобству со снэпшотами UFS, в зависимости от вашей ситуации.

- RAID. Минимизирует или исключает вовсе простои при отказе жестких дисков. При этом средняя частота таких отказов увеличивается (поскольку количество дисков больше), но разбираться с ними становится много спокойнее.

- Проверка отпечатков файлов (fingerprints). Для этого весьма полезна утилита mtree(8). Не являясь собственно технологией резервного копирования, этот метод помогает выяснять, когда вам пока обращаться к резервным копиям. В особенности это важно для "оффлайновых" резервных копий.

Довольно легко придумать и другие стратегии резервного копирования; многие из них будут композициями уже упомянутых. Наличие специальных требований, как правило, приводит к специализированным же технологиям (например, резервное копирование базы данных, как правило, требует использования методов, специфичных для соответствующей СУБД). Главным остается знание опасностей потери данных, от которых вы хотите себя оградить, и методов защиты от них.

## 17.12. Основы технологии резервного копирования

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

### 17.12.1. Dump и Restore

Для UNIX традиционными программами резервного копирования являются `dump` и `restore`. Они работают с приводом как с набором дисковых блоков, которые расположены ниже понятий файлов, связей и каталогов, создаваемых файловыми системами. В отличие от других программ для резервного копирования, программа `dump` выполняет резервное копирование всей файловой системы, располагающейся на устройстве. Невозможно выполнить резервное копирование части файловой системы или дерева каталогов, которые располагаются более чем в одной файловой системе. Утилита `dump` не записывает на ленту файлы и каталоги, она записывает блоки данных, из которых строятся файлы и каталоги. Утилита `restore` по умолчанию настроена так, что в процессе своей работы она сохраняет временные файлы в каталог `/tmp/`. В некоторых ситуациях доступного в `/tmp/` места бывает недостаточно: например, если вы работаете с диска восстановления (recovery disk). В таких случаях для успешной работы утилиты необходимо указать в переменной окружения `TMPDIR` путь к каталогу на менее заполненной файловой системе.

> Замечание: Если вы используете программу `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`.

Пример 17-1. Использование `dump` через ssh

    # /sbin/dump -0uan -f - /usr | gzip -2 | ssh -c blowfish \
    targetuser@targetmachine.example.com dd of=/mybigfiles/dump-usr-l0.gz

Либо воспользуйтесь встроенной в `dump` возможностью, задав переменную окружения `RSH`:

Пример 17-2. Использование `dump` при работе через ssh с заданием `RSH`

    # RSH=/usr/bin/ssh /sbin/dump -0uan -f targetuser@targetmachine.example.com:/dev/sa0 /usr

### 17.12.2. `tar`

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

FreeBSD начиная с версии 5.3 содержит как GNU `tar`, так и используемую по умолчанию утилиту `bsdtar`. Версия GNU вызывается командой `gtar`, и поддерживает удалённые устройства в том же самом синтаксисе, что и `rdump`. Чтобы скопировать данные на накопитель Exabyte, подключенный к машине Sun по имени `komodo`, используйте такую команду:

    # /usr/bin/gtar cf komodo:/dev/nsa8 . 2>&1

Тот же результат вы можете получить, используя `bsdtar`, воспользовавшись перенаправлением вывода и командой `rsh` для посылки данных на удалённый ленточный накопитель.

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

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

### 17.12.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`).

### 17.12.4. `pax`

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

### 17.12.5. Amanda

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

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

### 17.12.6. Не делать ничего

''Не делать ничего'' - это не программа для компьютера, и в то же время это наиболее широко используемая стратегия резервного копирования. Здесь нет никаких первоначальных затрат. Здесь нет расписания, которому нужно следовать. Просто скажите нет. Если что-то случится с вашими данными, улыбнитесь и забудьте о них!

Если ваше время и данные практически ничего не стоят, то ''не делать ничего'' является самой подходящей программой для вашего компьютера. Но будьте осторожны, POSIX является весьма полезным инструментом, и через полгода вы можете обнаружить, что у вас есть набор файлов, представляющих для вас определенную ценность.

''Ничего не делать'' является правильным методом резервного копирования для `/usr/obj` и других деревьев каталогов, которые могут быть в точности перегенерированы вашим компьютером. Примером являются файлы, представляющие страницы этого Руководства в форматах HTML или PostScript. Они генерируются из входных файлов в формате SGML. Создавать резервные копии файлов в форматах HTML и PostScript не нужно. Исходные файлы в формате SGML копируются регулярно.

### 17.12.7. Какая программа резервного копирования самая лучшая?

dump(8) Точка. Elizabeth D. Zwicky протестировала все программы резервного копирования, обсуждаемые здесь. Беспроигрышным вариантом для сохранения всех ваших данных и особенностей файловых систем UNIX является `dump`. Элизабет создала файловые системы, содержащие большое количество необычных элементов (и некоторых не так уж необычных) и тестировала каждую из программ, выполняя резервное копирование и последующее восстановление этих файловых систем. В число необычных элементов входили: файлы с дырами, файлы с дырами и блоком пустого места, файлы с необычными символами в их именах, нечитаемые и незаписываемые файлы, устройства, меняющие свой размер во время резервного копирования, файлы, создаваемые и удаляемые во время копирования и тому подобное. Она представила результаты на конференции LISA V в октябре 1991 года. Посмотрите ссылку на сайте torture-testing Backup and Archive Programs.

### 17.12.8. Процедура восстановления при сбое

#### 17.12.8.1. До того, как случится катастрофа

Вам нужно выполнить всего лишь четыре шага для того, чтобы быть готовым к любому сбою.

Во-первых, распечатайте разметку диска для всех ваших дисков (к примеру, `bsdlabel da0 | lpr`), таблицу файловых систем (`/etc/fstab`) и все сообщения, выводимые при загрузке, каждого по два экземпляра.

Во-вторых, запишите CD диск с ''livefs''. Этот диск позволяет загружаться в режим аварийного восстановления FreeBSD, давая возможность пользователю выполнять ряд утилит, среди которых dump(8), restore(8), fdisk(8), bsdlabel(8), newfs(8), mount(8) и т.д. Образ CD с ''livefs'' для FreeBSD/i386 8.1-RELEASE находится по адресу ftp://ftp.FreeBSD.org/pub/FreeBSD/releases/i386/ISO-IMAGES/8.1/FreeBSD-8.1-RELEASE-i386-livefs.iso.

В-третьих, регулярно создавайте резервные копии на ленте. Любые изменения, которые вы делали после последнего резервного копирования, могут быть безвозвратно потеряны. На лентах включайте защиту от записи.

В-четвертых, проверяйте работу CD диска (который вы сделали при выполнении второго шага) и лент с резервными копиями. Ведите журнал выполняемых действий. Храните эти записи вместе с загрузочным CD диском, распечатками и лентами. Вы просто обезумеете при восстановлении данных, если окажется, что записи помогли бы избежать разрушения ваших резервных копий (Каким образом? Вместо команды `tar xvf /dev/sa0` вы могли случайно набрать `tar cvf /dev/sa0` и тем самым перезаписать вашу резервную копию).

Для дополнительной страховки, каждый раз создавайте загрузочный CD диск с ''livefs'' и две резервные копии на ленте. Храните одну из копий в каком-то удаленном месте и НЕ в том же здании, где находится ваш офис. Достаточно большое количество компаний во Всемирном Торговом Центре изучило это на своей шкуре. Это удаленное хранилище должно быть физически отделено на большое расстояние от ваших компьютеров и дисковых устройств.

#### 17.12.8.2. После сбоя

Главный вопрос: выжило ли ваше оборудование? Вы регулярно делали резервные копии, так что нет нужды беспокоиться о программном обеспечении.

Если оборудование было повреждено, должны быть заменены неисправные компоненты.

Если с оборудованием всё в порядке, вставьте CD диск с ''livefs'' в привод и загрузите компьютер. На экран будет выведено оригинальное меню установки. Выберите требуемую страну, потом -- пункт меню Fixit -- Repair mode with CDROM/DVD/floppy or start a shell., а в нём выберите пункт CDROM/DVD -- Use the live filesystem CDROM/DVD. Утилита `restore` и другие нужные вам программы находятся в каталоге `/mnt2/rescue`.

Восстановите по отдельности каждую файловую систему.

Попробуйте выполнить команду `mount` (например, `mount /dev/da0a /mnt`) по отношению к корневому разделу вашего первого диска. Если метка диска была испорчена, то воспользуйтесь командой `bsdlabel` для переразбиения на разделы и разметки диска так, чтобы получившаяся метка совпала с той, которая вами была распечатана и сохранена. Для повторного создания файловых систем используйте утилиту `newfs`. Повторно смонтируйте корневой раздел диска в режиме чтения-записи (`mount -u -o rw /mnt`). Воспользуйтесь вашей программой резервного копирования и резервными копиями на лентах для восстановления данных для этой файловой системы (например. `restore vrf /dev/sa0`). Размонтируйте файловую систему (например, `umount /mnt`). Повторите эту процедуру для каждой файловой системы, которая была повреждена.

Как только ваша система заработает, сделайте резервную копию на новые ленты. Что бы ни вызвало сбой или потерю данных, это может случиться снова. Ещё один час, потраченный в этот момент, может спасти вас от неприятностей в будущем.

## 17.13. Сетевые файловые системы, файловые системы в памяти и с отображением в файл

Реорганизацию и улучшения выполнил Marc Fonvieille.

Кроме дисков, которые вы физически устанавливаете в ваш компьютер; дискеты, компакт-диски, винчестеры и так далее, FreeBSD воспринимает и другие типы дисков - виртуальные диски.

Сюда могут быть отнесены сетевые файловые системы, такие, как Network File System и Coda, а также файловые системы с организацией в памяти и создаваемые в файлах.

В зависимости от версии FreeBSD, которую вы используете, для создания и работы с файловыми системами, отображаемыми в оперативную память или файлы, вам нужно будет пользоваться разными инструментами.

> Замечание: Пользователи FreeBSD 4.X для создания требуемых устройств должны использовать MAKEDEV(8). Во FreeBSD 5.0 и более поздних версиях для создания файлов устройств используется devfs(5), которая выполняет это прозрачно для пользователей.

### 17.13.1. Файловая система в файле во FreeBSD 4.X

Утилита vnconfig(8) конфигурирует и позволяет использовать дисковые устройства на основе псевдо-устройств vnode. vnode представляет собой файл и отвечает за работу с файлом. Это означает, что vnconfig(8) использует файлы для создания и работы с файловой системой. Одним из возможных способов использования является монтирование образов дискет или образов компакт-дисков, сброшенных в файлы.

Для использования vnconfig(8) в конфигурационном файле ядра вам нужно включить поддержку vn(4):

    pseudo-device vn

Чтобы смонтировать имеющийся образ файловой системы:

Пример 17-3. Использование vnconfig для монтирования имеющегося образа файловой системы во FreeBSD 4.X

    # vnconfig vn0 diskimage
    # mount /dev/vn0c /mnt

Для создания нового образа файловой системы с помощью vnconfig(8):

Пример 17-4. Создание нового диска в файле с помощью `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
    # bsdlabel -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

### 17.13.2. Файловые системы, отображаемые в файлы

Во FreeBSD 5.X и более поздних для конфигурации и подключения дисков md(4), отображаемых в оперативную память, используется утилита mdconfig(8). Для работы с mdconfig(8) вам нужно подгрузить модуль md(4) или добавить поддержку этих устройств в файл конфигурации ядра:

    device md

Утилита mdconfig(8) поддерживает три типа виртуальных дисков, отображаемых в память: диски в памяти, которая выделяется запросами malloc(9) и диски в памяти, использующие в качестве устройств хранения файлы или раздел подкачки. Одним из возможных использований таких дисков является монтирование файлов с образами дискет или CD.

Для монтирования образа существующей файловой системы:

Пример 17-5. Использование `mdconfig` для монтирования файла с образом существующей файловой системы

    # mdconfig -a -t vnode -f diskimage -u 0
    # mount /dev/md0 /mnt

Для создания образа новой файловой системы при помощи mdconfig(8):

Пример 17-6. Создание нового диска, отображаемого в файл, при помощи `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
    # bsdlabel -w md0 auto
    # newfs md0a
    /dev/md0c: 5.0MB (10224 sectors) block size 16384, fragment size 2048
        using 4 cylinder groups of 1.25MB, 80 blks, 192 inodes.
    super-block backups (for fsck -b #) at:
     160, 2720, 5280, 7840
    # mount /dev/md0a /mnt
    # df /mnt
    Filesystem 1K-blocks Used Avail Capacity  Mounted on
    /dev/md0a       4710    4  4330     0%    /mnt

Если в параметре `-u` вы не задали номер устройства, то mdconfig(8) для выбора неиспользуемого устройства будет использовать функцию автоматическое выделения в md(4). Имя выделенного устройства будет выдано на стандартное устройство выводы в виде, например, `md4`. Для получения более полной информации о mdconfig(8), пожалуйста, обратитесь к соответствующей странице справочной системы.

Утилита mdconfig(8) весьма полезна, однако для создания файла с файловой системой требуется произвести много действий. Вместе с FreeBSD 5.0 поставляется утилита под названием mdmfs(8), которая создаёт диск md(4) при помощи mdconfig(8), размещает на нём файловую систему UFS при помощи newfs(8) и монтирует её командой mount(8). Например, если вы хотите создать и смонтировать такой же образ файловой системе, как выше, просто наберите такую команду:

Пример 17-7. Настройка и монтирование диска, отображаемого в файл, при помощи команды `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        4718    4  4338     0%    /mnt

Если вы используете параметр `md` без номера устройства, то mdmfs(8) будет использовать автоматическую нумерацию md(4) для автоматического выбора неиспользуемого устройства. Более полную информацию о mdmfs(8) можно найти на страницах справочной системы.

### 17.13.3. Файловая система в памяти во FreeBSD 4.X

Драйвер md(4) является простым и эффективным способом создания файловых систем в памяти во FreeBSD 4.X. Для выделения памяти используется malloc(9).

Просто возьмите файловую систему, которую вы приготовили при помощи, скажем, vnconfig(8) и:

Пример 17-8. Диск 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).

### 17.13.4. Файловые системы с отображением в память

При работе с файловыми системами, отображаемыми в файл или память, используются одни и те же утилиты: mdconfig(8) или mdmfs(8). Обычно для отображаемых в память файловых систем следует использовать опцию ''хранение на области подкачки''. Это не означает, что такая файловая система будет сразу сброшена на диск: место под нее будет выделено из общего пула памяти, и при необходимости может перемещаться в область подкачки. Также, возможно выделение места под файловую систему в основной памяти (через malloc(9)); однако, следует помнить, что использование таких файловых систем, в особенности большого размера, может привести к панике системы от исчерпания ядерной памяти.

Пример 17-9. Создание нового диска с отображением в память при помощи `mdconfig`

    # mdconfig -a -t swap -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, 192 inodes.
        with soft updates
    super-block backups (for fsck -b #) at:
     160, 2752, 5344, 7936
    # mount /dev/md1 /mnt
    # df /mnt
    Filesystem 1K-blocks Used Avail Capacity  Mounted on
    /dev/md1        4718    4  4338     0%    /mnt

Пример 17-10. Создание нового диска с отображением в память при помощи `mdmfs`

    # mdmfs -s 5m md2 /mnt
    # df /mnt
    Filesystem 1K-blocks Used Avail Capacity  Mounted on
    /dev/md2        4846    2  4458     0%    /mnt

### 17.13.5. Отключение диска, отображаемого в память, от системы

Если файловые системы, отображаемые в память или файл, больше не используются, вам нужно высвободить все ресурсы для системы. Первым делом нужно размонтировать файловую систему, затем воспользоваться mdconfig(8) для отключения диска от системы и освободить ресурсы.

К примеру, чтобы отключить и освободить все ресурсы, используемые `/dev/md4`:

    # mdconfig -d -u 4

Для выдачи информации об отконфигурированных устройствах md(4) используется команда `mdconfig -l`.

Во FreeBSD 4.X для отключения устройства используется команда vnconfig(8). Например, для отключения и освобождения всех ресурсов, используемых `/dev/vn4`:

    # vnconfig -u vn4

## 17.14. Мгновенные копии файловых систем

Текст предоставил Tom Rhodes.

Во FreeBSD 5.0 вместе с технологией Отложенных обновлений представлена новая возможность: генерация мгновенных копий файловых систем.

Мгновенные копии позволяют пользователю создавать образы заданных файловых систем и работать с ними как с файлами. Файлы мгновенных копий должны создаваться в той файловой системе, над которой производится действие, и пользователь может создавать не более 20 мгновенных копий для каждой файловой системы. Активные копии записываются в суперблок, так что они остаются в силе между операциями монтирования и размонтирования в процессе системных перезагрузок. Если мгновенная копия больше не нужна, она может быть удалена стандартной командой rm(1). Мгновенные копии могут удаляться в любом порядке, однако всё использованное пространство не может быть использовано, так как другая мгновенная копия может претендовать на некоторые блоки из освобождённых.

Неизменяемый флаг `snapshot` устанавливается на файл при помощи mksnap_ffs(8) после первоначального создания файла мгновенной копии. Команда unlink(1) делает исключение для файлов мгновенных копий, позволяя их удалять.

Мгновенные копии создаются при помощи утилиты mount(8). Чтобы создать мгновенную копию `/var` в файле `/var/snapshot/snap`, воспользуйтесь такой командой:

    # mount -u -o snapshot /var/snapshot/snap /var

В качестве альтернативного средства создания мгновенных копий вы можете использовать утилиту mksnap_ffs(8):

    # mksnap_ffs /var /var/snapshot/snap

Файлы мгновенных копий файловых систем (к примеру, `/var`) можно найти при помощи команды find(1):

    # find /var -flags snapshot

После создания мгновенной копии есть несколько способов её использования:

- Некоторые администраторы будут использовать файл мгновенной копии для целей создания резервной копии, так как мгновенная копия может быть перенесена на CD или магнитную ленту.

- Утилита проверка целостности файловой системы, fsck(8), может быть запущена над мгновенной копией. Полагая, что файловая система была в порядке, когда она была смонтирована, вы всегда должны получать нормальный (и неизменный) результат. Это именно то, что выполняет фоновый процесс fsck(8).

- Запустить утилиту dump(8) с мгновенной копией. Будет создаваться дамп, соответствующий файловой системе на момент создания мгновенной копии. Утилита dump(8) при использовании опции `-L` тоже может работать с мгновенными копиями, создавать их дампы, а затем удалять за один проход.

- Смонтировать командой mount(8) мгновенную копию как замороженный образ файловой системы. Чтобы смонтировать командой mount(8) мгновенную копию `/var/snapshot/snap`, запустите:

      # mdconfig -a -t vnode -f /var/snapshot/snap -u 4
      # mount -r /dev/md4 /mnt

Теперь вы можете пройтись по иерархии вашей зафиксированной файловой системы `/var`, смонтированной в каталог `/mnt`. Первоначально всё будет в том же самом состоянии, в каком это было во время создания мгновенной копии. Единственным исключением будет то, что любые ранее сделанные мгновенные копии будут видны как файлы нулевой длины. Когда использование мгновенной копии закончено, она может быть удалена командой:

    # umount /mnt
    # mdconfig -d -u 4

Для получения более полной информации о `softupdates` и мгновенных копиях файловых систем, включая технической описание, вы можете посетить сайт Маршалла Кёрка МакКузика (Marshall Kirk McKusick) по адресу http://www.mckusick.com/.

## 17.15. Квотирование файловых систем

Квоты - это опциональная возможность операционной системы, которая позволяет ограничивать объем дискового пространства и/или количество файлов для конкретного пользователя или членов определенной группы в рамках одной файловой системы. Чаще всего эта возможность используется в системах разделения времени, когда желательно ограничить количество ресурсов, которые может использовать один пользователь или группа пользователей. Это позволит не допустить ситуации, когда один пользователь или группа пользователей заполняют всё доступное дисковое пространство.

### 17.15.1. Настройка вашей системы на использование дисковых квот

Перед тем, как попытаться использовать дисковые квоты, необходимо убедиться, что квоты включены в вашем ядре. Это делается добавлением следующей строки в конфигурационный файл вашего ядра:

    options QUOTA

В стандартном ядре `GENERIC` это по умолчанию не включено, так что для использования дисковых квот вам нужно будет настроить, откомпилировать и установить собственное ядро. Пожалуйста, обратитесь к Гл. 8 за дополнительной информацией о настройке ядра.

Затем вам потребуется включить квотирование дисков в файле `/etc/rc.conf`. Это делается добавление такой строчки:

    enable_quotas="YES"

Для более полного контроля над запуском квотирования имеется дополнительная переменная для настройки. Как правило, при загрузке целостность квот каждой файловой системы проверяется программой quotacheck(8). При работе программы quotacheck(8) проверяется точное соответствие данных в базе данных квот данным в файловой системе. Это весьма долгий процесс, что отражается на времени загрузки системы. Если вам захочется пропустить этот шаг, то для этого предназначена специальная переменная в файле `/etc/rc.conf`:

    check_quotas="NO"

Наконец, вам потребуется отредактировать файл `/etc/fstab` для включения дисковых квот на уровне файловых систем. Это то место, где вы можете включить квоты для пользователей, для групп или для обеих этих категорий для всех ваших файловых систем.

Для включения пользовательских квот для файловой системы, добавьте параметр `userquota` в поле параметров файловой системы, на которой вы хотите включить квотирование, в файле `/etc/fstab`. Например:

    /dev/da1s2g   /home    ufs rw,userquota 1 2

Подобным же образом для включения квотирования на уровне групп, воспользуйтесь параметром `groupquota` вместо `userquota`. Чтобы включить квотирование как для пользователей, так и для групп, измените строчку следующим образом:

    /dev/da1s2g   /home    ufs rw,userquota,groupquota 2 2

По умолчанию файлы квот хранятся в корневом каталоге файловой системы в файлах с именами `quota.user` и `quota.group` соответственно для пользовательских и групповых квот. Для получения подробной информации обратитесь к команде fstab(5). Хотя справочная страница по fstab(5) утверждает, что вы можете указать другое местоположение файлов с квотами, этого делать не рекомендуется, потому что различные утилиты для работы с квотами не могут нормально работать в такой ситуации.

На этом этапе вы должны перезагрузить вашу систему с новым ядром. Скрипт `/etc/rc` автоматически запустит соответствующие команды для создания начальных файлов для всех квот, которые вы создали в файле `/etc/fstab`, так что нет нужды вручную создавать никаких файлов квот нулевой длины.

При нормальной работе вам не потребуется вручную запускать программы quotacheck(8), quotaon(8) или quotaoff(8). Однако вам нужно хотя бы прочесть страницы справочника по этим командам, просто чтобы ознакомиться с их функциями.

### 17.15.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: kbytes in use: 65, limits (soft = 50, hard = 75)
        inodes in use: 7, limits (soft = 50, hard = 60)
    /usr/var: kbytes in use: 0, limits (soft = 50, hard = 75)
        inodes in use: 0, limits (soft = 50, hard = 60)

Для каждой файловой системы, на которой включено квотирование, вы должны увидеть две строки. В одной строке приведены ограничения на блоки, а в другой на количество inode. Например, чтобы увеличить ограничения на количество блоков для пользователя с мягкого ограничения в 50 и жёсткого ограничения в 75, на мягкое ограничение в 500 и жёсткое ограничение в 600, измените:

    /usr: kbytes in use: 65, limits (soft = 50, hard = 75)

на:

    /usr: kbytes 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).

### 17.15.3. Проверка ограничений и использования диска

Для проверки квот и использования дисков вы можете использовать команды quota(1) или repquota(8). Команда quota(1) может быть использована для проверки квот отдельных пользователей, групп, а также использования дисков. Пользователь может только проверить собственную квоту и квоту той группы, к которой он принадлежит. Только администратор системы может проверить квоты всех пользователей и групп. Команду repquota(8) можно использовать для получения суммарной статистики всех квот и использования дисков для файловых систем с включенными квотами.

Далее приведен пример вывода команды `quota -v` для пользователя, который имеет ограничения на двух файловых системах.

    Disk quotas for user test (uid 1002):
         Filesystem  usage    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` в примере выше.

### 17.15.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`:

    # /etc/rc.d/inetd restart

## 17.16. Шифрование дисковых разделов

Текст предоставил Lucky Green.

FreeBSD предоставляет прекрасную возможность по защите от несанкционированного доступа к данным. Права на доступ к файлам и технология принудительного контроля доступа MAC (Mandatory Access Control) (смотрите see Гл. 15) помогают предотвратить несанкционированный доступ посторонних лиц к данным, при условии работы операционной системы и компьютера. Однако права доступа, контролируемые операционной системой, не имеют значения, если нападающий получает физический доступ к компьютеру и может просто перенести жёсткий диск на другую машину для копирования и дальнейшего анализа важных данных.

Вне зависимости от того, как атакующий завладел жёстким диском или выключенным компьютером, технологии gbde (GEOM Based Disk Encryption - шифрование диска на уровне GEOM) и криптографическая подсистема `geli` FreeBSD могут защитить данные файловой системы компьютера даже против очень заинтересованной атакующей стороны с достаточными ресурсами. В отличие от громоздких систем шифрования, которые шифруют отдельные файлы, `gbde` и `geli` шифруют в прозрачном режиме файловую систему в целом, при этом данные в открытом виде на диск никогда не записываются.

### 17.16.1. Шифрование диска при помощи gbde

1. Получите права пользователя `root`

   Настройка gbde требует права доступа администратора системы.

       % su -
       Password:

2. Включите поддержку gbde(4) в конфигурационный файл ядра

   Добавьте следующую строку в файл конфигурации вашего ядра:

   `options GEOM_BDE`

   Перестройте ядро FreeBSD. Этот процесс описан в Гл. 8.

   Перезагрузитесь, запустив новое ядро.

3. Альтернативой пересборке ядра является использование `kldload` для загрузки модуля gbde(4):

       # kldload geom_bde

#### 17.16.1.1. Подготовка зашифрованного жёсткого диска

В следующем примере предполагается, что в вашу систему вы добавляете новый винчестер, на котором будет располагаться единственный раздел с зашифрованными данными. Этот раздел будет монтироваться в каталог `/private`. gbde может также использоваться для шифрования `/home` и `/var/mail`, но это требует более сложной последовательности действий, что выходит за рамки этого вводного материала.

1. Подключите новый жёсткий диск

   Установите новый диск в систему, как это описано в Разд. 17.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.lock

   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 по защите ваших данных полностью зависят от качества выбранной вами ключевой фразы. [11]

   По команде `gbde init` создаётся файл блокировок для вашего раздела gbde, который в нашем случае будет иметь имя `/etc/gbde/ad4s1c.lock`. Для того, чтобы файлы блокировок корректно распознавались стартовым скриптом `/etc/rc.d/gbde`, их имена должны заканчиваться на ''.lock''.

   > Предостережение: Резервные копии файлов блокировок gbde должны храниться вместе с содержимым шифруемых разделов. Хотя удаление только блокировочного файла не сможет противостоять дешифрации атакующим раздела gbde, без этого файла даже легитимный пользователь не сможет получить доступ к данным без определённых и значительных усилий, что не поддерживается gbde(8) и его разработчиком.

4. Подключите зашифрованный раздел к системе

       # gbde attach /dev/ad4s1c -l /etc/gbde/ad4s1c.lock

   Будет выдан запрос на ввод ключевой фразы, которую вы выбирали во время инициализации зашифрованного раздела. Новое защищённое устройство будет видно в каталоге `/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`.

       # newfs -U -O2 /dev/ad4s1c.bde

   > Замечание: Запуск команды 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

#### 17.16.1.2. Монтирование имеющихся зашифрованных файловых систем

После каждой загрузки для каждой защищённой файловой системы перед их использованием должны выполняться повторное подключение к системе, проверка на наличие ошибок и монтирование. Требуемые для этого команды должны выполняться пользователем `root`.

1. Подключение gbde-раздела к системе

       # gbde attach /dev/ad4s1c -l /etc/gbde/ad4s1c.lock

   Будет выдан запрос на ввод ключевой фразы, выбранной на этапе инициализации зашифрованного раздела gbde.

2. Проверка файловой системы на наличие ошибок

   Так как защищаемая файловая система не может пока быть указана в файле `/etc/fstab` для автоматического монтирования, то она должны проверяться на наличие ошибок посредством ручного запуска fsck(8) до её монтирования.

       # fsck -p -t ffs /dev/ad4s1c.bde

3. Монтирование зашифрованной файловой системы

       # mount /dev/ad4s1c.bde /private

   Теперь защищённая файловая система доступна для работы.

##### 17.16.1.2.1. Автоматическое монтирование зашифрованных разделов

Для автоматического подключения, проверки и монтирования зашифрованного раздела можно создать скрипт, но по соображениям безопасности в этом скрипте пароля для gbde(8) быть не должно. Поэтому рекомендуется запускать такие скрипты вручную, а пароль задавать с консоли или сеанса ssh(1).

Кроме того, базовая система содержит скрипт `rc.d` для автоматического монтирования шифрованных разделов. Его аргументы могут быть указаны в файле rc.conf(5):

    gbde_autoattach_all="YES"
    gbde_devices="ad4s1c"
    gbde_lockdir="/etc/gbde"

При этом ключевая фраза для gbde должна быть введена на этапе загрузки. После введения ключевой фразы зашифрованный раздел будет смонтирован автоматически. Такой подход может быть очень удобным для использования gbde на ноутбуках.

#### 17.16.1.3. Криптографическая защита, применяемая в gbde

gbde(8) шифрует содержимое секторов при помощи 128-битного AES в режиме CBC. Каждый сектор диска шифруется различным ключом AES. Более полная информацию о системе шифрования gbde, включая алгоритм генерации ключей для секторов из ключевой фразы, вводимой пользователем, можно найти на страницах справочной системы о gbde(4).

#### 17.16.1.4. Вопросы совместимости

sysinstall(8) несовместим с устройствами, зашифрованными gbde. Все устройства ``*`.bde` перед запуском sysinstall(8) должны быть отключены от системы, или эта утилита аварийно завершит работу на этапе обнаружения устройств. Для отключения защищённого устройства, используемого в нашем примере, воспользуйтесь такой командой:

    # gbde detach /dev/ad4s1c

Также заметьте, что, так как vinum(4) работает не через подсистему geom(4), то вы не можете использовать тома vinum с gbde.

### 17.16.2. Шифрование дисков при помощи `geli`

Предоставлено Daniel Gerzo.

Начиная с версии 6.0 FreeBSD поддерживается новый класс GEOM -- `geli`. В настоящий момент он поддерживается Pawel Jakub Dawidek `<pjd@FreeBSD.org>`. Утилита `geli` отличается от `gbde`; она предоставляет другой комплекс возможностей и использует иную схему криптования.

Наиболее значимыми особенностями geli(8) являются:

- Использование инфраструктуры crypto(9): при наличии аппаратной криптографической поддержки, `geli` автоматически использует ее.

- Поддержка разнообразных криптоалгоритмов (в настоящее время AES, Blowfish и 3DES).

- Поддержка шифрованного корневого раздела. Для загрузки в такой ситуации потребуется ввести ключевую фразу.

- Поддержка двух независимых ключей шифрования (например, ''основного ключа'' и ''ключа компании'').

- Высокая скорость работы `geli` за счет простого криптования сектор-сектор.

- Поддержка архивирования основных ключей. При необходимости текущие ключи могут быть уничтожены, а в дальнейшем доступ к данным восстановлен при помощи архивированных ключей.

- Поддержка криптования файловых систем случайным одноразовым ключом -- например, для разделов подкачки или временных файловых систем.

Другие возможности класса `geli` описаны в его странице справочника: geli(8).

Несколько следующих страниц будут посвящены описанию процесса конфигурации `geli` в ядре FreeBSD, а также объяснят, как создавать и использовать криптографический провайдер `geli`.

Для того чтобы использовать `geli`, вам потребуется FreeBSD версии 6.0-RELEASE или более поздней. Поскольку необходимо внести изменения в конфигурацию ядра, потребуются также привилегии суперпользователя.

1. Добавление поддержки `geli` в ядро

   Добавьте в конфигурационный файл ядра следующие строки:

       options GEOM_ELI
       device crypto

   Перестройте ядро, как описано в разделе Гл. 8.

   Помимо этого, поддержка `geli` может быть активирована модулем ядра на этапе загрузки. Для этого добавьте в файл `/boot/loader.conf` строку:

       geom_eli_load="YES"

   Теперь ядро должно поддерживать geli(8).

2. Генерация главного ключа

   Предлагаемый пример описывает процесс генерации ключевого файла, который послужит частью главного ключа для шифрованного провайдера, монтируемого в каталог `/private`. При помощи содержимого ключевого файла создается набор случайных данных, которым зашифровывается главный ключ. Кроме того, он будет защищен кодовой фразой. Размер сектора провайдера будет составлять 4kB. Наконец, мы обсудим, как присоединиться к провайдеру `geli`, создать на базе его файловую систему, как ее смонтировать и работать с ней, и, в заключение, как корректно завершить работу.

   Больший чем обычно размер сектора (как в нашем примере, 4 кБ) рекомендуется для увеличения производительности.

   Главный ключ будет защищен кодовой фразой; данные для ключевого файла берутся из `/dev/random`. Размер сектора создаваемого нами шифрованного провайдера `/dev/da2.eli` -- 4кБ.

       # dd if=/dev/random of=/root/da2.key bs=64 count=1
       # geli init -s 4096 -K /root/da2.key /dev/da2
       Enter new passphrase:
       Reenter new passphrase:

   Использование одновременно кодовой фразы и ключевого файла не обязательно: любой из этих методов защиты главного ключа может применяться независимо.

   Если в качестве имени ключевого файла указан ''-'', используется стандартный ввод. Это позволяет использовать более одного ключевого файла:

       # cat keyfile1 keyfile2 keyfile3 | geli init -K - /dev/da2

3. Свяжите сгенерированный ключ с провайдером

       # geli attach -k /root/da2.key /dev/da2
       Enter passphrase:

   Созданный при этом файл дискового устройства будет называться `/dev/`da2`.eli`.

       # ls /dev/da2*
       /dev/da2  /dev/da2.eli

4. Создайте новую файловую систему

       # dd if=/dev/random of=/dev/da2.eli bs=1m
       # newfs /dev/da2.eli
       # mount /dev/da2.eli /private

   Зашифрованная файловая система будет видна в выводе утилиты df(1) и готова к использованию:

       # df -H
       Filesystem     Size   Used  Avail Capacity  Mounted on
       /dev/ad0s1a    248M    89M   139M    38%    /
       /devfs         1.0K   1.0K     0B   100%    /dev
       /dev/ad0s1f    7.7G   2.3G   4.9G    32%    /usr
       /dev/ad0s1d    989M   1.5M   909M     0%    /tmp
       /dev/ad0s1e    3.9G   1.3G   2.3G    35%    /var
       /dev/da2.eli   150G   4.1K   138G     0%    /private

5. Размонтирование и деактивация провайдера

   После завершения работы с шифрованным разделом, когда содержимое каталога `/private` больше не нужно, будет разумным отключить раздел от системы.

       # umount /private
       # geli detach da2.eli

Дополнительную информацию о geli(8) можно найти на соответствующей странице справочника.

#### 17.16.2.1. Использование стартового скрипта `rc.d` `geli`

Для удобства использования подсистемы `geli` в комплект базовой системы FreeBSD входит стартовый скрипт, работой которого можно управлять из rc.conf(5):

    geli_devices="da2"
    geli_da2_flags="-p -k /root/da2.key"

При этом дисковый раздел `/dev/da2` будет сконфигурирован как провайдер `geli`, связан с ключевым файлом `/root/da2.key`, а кодовая фраза не будет использоваться (отметим, что это возможно только в том случае, если при инициализации `geli init` был указан ключ `-P`). Шифрованный провайдер `geli` будет отсоединен перед выключением системы.

Дополнительную информацию о конфигурации скриптов `rc.d` можно найти в соответствующей главе Руководства.

## 17.17. Шифрование области подкачки

Написано Christian Brüffer.

Шифрование области подкачки в FreeBSD доступно начиная с версии 5.3-RELEASE и достаточно легко конфигурируется. Варианты конфигурации слегка различаются в зависимости от версии системы. Начиная с версии 6.0-RELEASE, для шифрования разделов подкачки можно использовать утилиты gbde(8) или geli(8); в более ранних версиях доступно только решение при помощи gbde(8). В обоих случаях используется скрипт rc.d `encswap`.

Предыдущий раздел, Шифрование дисковых разделов, кратко описывает различные методы криптования.

### 17.17.1. Зачем шифровать область подкачки?

Как и в случае дисковых разделов, шифрование области подкачки применяется для защиты важной информации. Возьмем, к примеру, приложение, которому требуется работать с паролями. До тех пор, пока пароли хранятся в физической памяти, все в порядке. Если же операционная система начинает выгружать отдельные участки памяти в область подкачки, чтобы освободить память для других приложений, пароли могут быть записаны на диск в открытом виде и тем самым оказаться легко доступными злоумышленнику (имеющему физический доступ к диску -- прим. пер.). В таких ситуациях решением может стать шифрование раздела подкачки.

### 17.17.2. Подготовка

> Замечание: В данном разделе мы будем считать, что разделом подкачки является `ad0s1b`.

До настоящего момента раздел подкачки не был зашифрован. Таким образом, на нем могут содержаться пароли или какая-либо иная важная информация в открытом виде. Чтобы избавиться от этого, заполним раздел подкачки случайными данными:

    # dd if=/dev/random of=/dev/ad0s1b bs=1m

### 17.17.3. Шифрование раздела подкачки при помощи gbde(8)

В версиях FreeBSD начиная с 6.0-RELEASE в строку файла `/etc/fstab`, описывающую раздел подкачки, необходимо добавить суффикс `.bde`:

    # Device                Mountpoint      FStype  Options         Dump    Pass#
    /dev/ad0s1b.bde         none            swap    sw              0       0

В системах версий до FreeBSD 6.0-RELEASE, кроме того, потребуется следующая строка в файле конфигурации системы `/etc/rc.conf`:

    gbde_swap_enable="YES"

### 17.17.4. Шифрование раздела подкачки при помощи geli(8)

Процедура при использовании geli(8) для шифрования раздела подкачки сходна с использованием gbde(8). В строку файла `/etc/fstab`, описывающую раздел подкачки, нужно добавить суффикс `.eli`:

    # Device                Mountpoint      FStype  Options         Dump    Pass#
    /dev/ad0s1b.eli         none            swap    sw              0       0

По умолчанию, geli(8) использует алгоритм криптования AES с длиной ключа 256 бит.

При необходимости эти параметры могут быть изменены в опции `geli_swap_flags` файла конфигурации `/etc/rc.conf`. Приведенная ниже строка указывает, что скрипт rc.d `encswap` должен использовать для криптования алгоритм Blowfish с ключом длиной 128 бит, размером сектора 4 килобайта и включенной опцией ''отсоединиться при последнем закрытии'':

    geli_swap_flags="-e blowfish -l 128 -s 4096 -d"

Следующая строка требуется в случае использования систем с версиями, предшествующими FreeBSD 6.2-RELEASE:

    geli_swap_flags="-a blowfish -l 128 -s 4096 -d"

За списком возможных опций обращайтесь к описанию команды `onetime` в странице справочника geli(8).

### 17.17.5. Окончательная проверка

После перезагрузки системы правильность работы шифрованного раздела подкачки может быть проверена при помощи команды `swapinfo`.

В случае использования gbde(8):

    % swapinfo
    Device          1K-blocks     Used    Avail Capacity
    /dev/ad0s1b.bde    542720        0   542720     0%

При использовании geli(8):

    % swapinfo
    Device          1K-blocks     Used    Avail Capacity
    /dev/ad0s1b.eli    542720        0   542720     0%

# Глава 18. GEOM: Модульная инфраструктура преобразования дисковых запросов

Написал Tom Rhodes. Перевод на русский язык: Денис Баров.

## 18.1. Краткий обзор

Эта глава описывает использование дисков, управляемых инфраструктурой GEOM во FreeBSD. Среди прочего, здесь описывается большая часть утилит управления RAID, использующих GEOM для настройки. В этой главе мы не будем вдаваться в подробности взаимодействия GEOM с подсистемой ввода/вывода или с программным кодом, эту информацию вы можете получить на странице справочника geom(4). Эта глава также не является подробным руководством по настройке RAID. Мы обсудим только типы RAID, поддерживаемые GEOM.

После прочтения этой главы вы будете знать:

- Какие типы RAID поддерживает GEOM.

- Как использовать стандартные утилиты для настройки, обслуживания и управления различными уровнями RAID.

- Как с помощью GEOM создавать зеркальные, последовательные и шифрованные дисковые последовательности, а так же последовательности из дисков, присоединённых удалённо.

- Как решать проблемы с дисками, присоединёнными к инфраструктуре GEOM.

Перед чтением этой главы вы должны:

- Понимать, как FreeBSD работает с дисками (Гл. 17).

- Уметь сконфигурировать и установить новое ядро FreeBSD (Гл. 8).

## 18.2. Введение в GEOM

GEOM позволяет классам -- MBR, BSD labels, и так далее -- получить доступ к устройству и управлять им, используя поставщиков GEOM (providers) или специальные файлы устройств, расположенные в каталоге `/dev`. GEOM поддерживает различные программные конфигурации RAID, и прозрачно предоставляет доступ к дискам системе и системным приложениям.

## 18.3. RAID0 - Создание дисковой последовательности (Striping)

Написали Tom Rhodes, Murray Stokely.

Создание дисковой последовательности (Striping) -- метод, применяемый, чтобы скомбинировать несколько физических дисков в один логический. Во многих случаях это делается с использованием аппаратных контроллеров. Дисковая подсистема GEOM предоставляет программную поддержку RAID0, иногда называемую дисковой последовательностью (Stripe).

В RAID уровня 0 данные разбиваются на блоки, которые параллельно записываются на все диски массива. Вместо того, чтобы ждать записи 256k на один диск, RAID0 может параллельно записывать по 64k на каждый из четырёх дисков, обеспечивая более высокую производительность ввода/вывода. Производительность также может быть увеличена за счет использования большего числа дисков.

Все диски последовательности RAID0 должны быть одного размера, так как запись и считывание с дисков происходят параллельно.

Создание дисковой последовательности из неформатированных ATA дисков

1. Загрузите модуль `geom_stripe.ko`:

       # kldload geom_stripe

2. Убедитесь, что существует подходящая точка монтирования. Если вы планируете сделать логический диск корневым разделом, используйте временную точку монтирования, например `/mnt`:

       # mkdir /mnt

3. Определите имена устройств, которые будут объединены в последовательность, и создайте новое устройство для последовательности. Например, чтобы создать дисковую последовательность из двух неиспользуемых и неразмеченных ATA дисков, например `/dev/ad2` и `/dev/ad3`:

       # gstripe label -v st0 /dev/ad2 /dev/ad3
       Metadata value stored on /dev/ad2.
       Metadata value stored on /dev/ad3.
       Done.

4. Запишите стандартную метку, также известную как таблица разделов, в новый том, и установите стандартный загрузчик:

       # bsdlabel -wB /dev/stripe/st0

5. Теперь в `/dev/stripe` кроме `st0` появились ещё два устройства -- `st0a` и `st0c`. Теперь создайте файловую систему на устройстве `st0a`, используя утилиту `newfs`:

       # newfs -U /dev/stripe/st0a

   На экране промелькнет множество цифр, и через несколько секунд процесс будет завершен. Логический диск создан и готов к монтированию.

Смонтируйте его вручную:

    # mount /dev/stripe/st0a /mnt

Чтобы монтировать созданную дисковую последовательность автоматически во время загрузки, добавьте информацию о ней в файл `/etc/fstab`. Создайте постоянную точку монтирования и назовите её, к примеру, `stripe`:

    # mkdir /stripe
    # echo "/dev/stripe/st0a /stripe ufs rw 2 2" \
        >> /etc/fstab

Чтобы модуль `geom_stripe.ko` автоматически загружался во время инициализации системы, добавьте строку в `/boot/loader.conf`:

    # echo 'geom_stripe_load="YES"' >> /boot/loader.conf

## 18.4. RAID1 - Зеркалирование (Mirroring)

Зеркалирование (Mirroring) -- технология, применяемая как в корпоративной среде, так и на домашних компьютерах. Она позволяет создавать резервные копии ''на лету''. Зеркалирование, по сути, означает, что диск A является копией диска B. Или, возможно, диск C+D является копией диска A+B. Вне зависимости от конфигурации, основной аспект -- дублирование информации. Позже, эта информация может быть с легкостью восстановлена или сохранена как резервная копия без остановки системы, или даже физически помещена в хранилище данных.

Перед началом, убедитесь, что у вас есть два физических диска равной емкости. Далее в этом примере подразумевается, что это диски прямого доступа (direct access, da(4)) с интерфейсом SCSI.

### 18.4.1. Зеркалирование первичных дисков

В статье предполагается, что FreeBSD установлена на первый жесткий диск, определяемый системой как `da0`. Это устройство будет целевым для утилиты gmirror(8).

Перед построением зеркала включите дополнительную отладочную информацию и откройте доступ к устройству. Это достигается установкой следующего значения переменной sysctl(8) `kern.geom.debugflags`:

    # sysctl kern.geom.debugflags=17

Теперь создайте зеркало. Начните процесс с сохранения метаданных на первом диске. В результате выполнения следующей команды будет создано устройство вида `/dev/mirror/gm`:

> Внимание: Создание зеркала на диске, с которого произведена загрузка, может повлечь за собой потерю данных в том случае, если данными занят последний сектор диска. Риск повреждения данных меньше, если создание зеркала немедленно следует за свежей установкой FreeBSD.

    # gmirror label -vb round-robin gm0 /dev/da0

Система должна выдать следующее сообщение:

    Metadata value stored on /dev/da0.
    Done.

Инициализируйте GEOM, это повлечет за собой загрузку модуля ядра `/boot/kernel/geom_mirror.ko`:

    # gmirror load

> Замечание: После успешного завершения команды будет создано устройство `gm0` в каталоге `/dev/mirror`.

Включите автоматическую загрузку модуля `geom_mirror.ko` во время старта операционной системы:

    # echo 'geom_mirror_load="YES"' >> /boot/loader.conf

Отредактируйте файл `/etc/fstab`, заменив в нём упоминания старого имени устройства `da0` новым именем устройства зеркала `gm0`.

> Замечание: Если vi(1) -- ваш любимый текстовый редактор, то эта задача решается просто:

>     # vi /etc/fstab

> Сделайте резервную копию файла `fstab`, набрав в vi(1) `:w /etc/fstab.bak`. Затем замените все части строк, содержащие имя устройства `da0`, на имя `gm0`, набрав `:%s/da/mirror\/gm/g`.

Независимо от аппаратного интерфейса дисков (SCSI или ATA), устройство RAID будет именоваться всегда одинаково -- `gm`. Содержимое файла `fstab` должно выглядеть подобно следующему:

    # Device                Mountpoint      FStype  Options         Dump    Pass#
    /dev/mirror/gm0s1b      none            swap    sw              0       0
    /dev/mirror/gm0s1a      /               ufs     rw              1       1
    /dev/mirror/gm0s1d      /usr            ufs     rw              0       0
    /dev/mirror/gm0s1f      /home           ufs     rw              2       2
    #/dev/mirror/gm0s2d     /store          ufs     rw              2       2
    /dev/mirror/gm0s1e      /var            ufs     rw              2       2
    /dev/acd0               /cdrom          cd9660  ro,noauto       0       0

Перезагрузите систему:

    # shutdown -r now

С этого момента во время каждой загрузки система должна использовать устройство `gm0` вместо устройства `da0`. Удостовериться в этом можно так: дождитесь загрузки системы, наберите команду `mount` и просмотрите её вывод:

    # mount
    Filesystem         1K-blocks    Used    Avail Capacity  Mounted on
    /dev/mirror/gm0s1a   1012974  224604   707334    24%    /
    devfs                      1       1        0   100%    /dev
    /dev/mirror/gm0s1f  45970182   28596 42263972     0%    /home
    /dev/mirror/gm0s1d   6090094 1348356  4254532    24%    /usr
    /dev/mirror/gm0s1e   3045006 2241420   559986    80%    /var
    devfs                      1       1        0   100%    /var/named/dev

Как и ожидалось, вывод выглядит корректно. И в заключение, чтобы начать синхронизацию данных, включите в зеркало диск `da1` при помощи следующей команды:

    # gmirror insert gm0 /dev/da1

Во время построения зеркала статус процесса построения может быть проверен следующей командой:

    # gmirror status

Вывод вышеприведённой команды для построенного и синхронизированного зеркала выглядит подобно следующему:

          Name    Status  Components
    mirror/gm0  COMPLETE  da0
                          da1

Если есть какие-либо неполадки или зеркало находится в процессе построения, в выводе команды будет обозначен статус `DEGRADED` вместо статуса `COMPLETE`.

### 18.4.2. Решение проблем

#### 18.4.2.1. Система не загружается

Если система прекращает загрузку и выдает строку:

    ffs_mountroot: can't find rootvp
    Root mount failed: 6
    mountroot>

Перезагрузите компьютер кнопкой питания или кнопкой ''Reset''. В загрузочном меню выберите опцию (6). Это приведет к тому, что система выдаст приглашение loader(8). Загрузите модуль ядра вручную:

    OK? load geom_mirror
    OK? boot

Если это сработало, модуль ядра по какой-либо причине не загрузился правильно. Проверьте корректность соответствующей записи в `/boot/loader.conf`. Если проблема осталась, добавьте строку:

    options    GEOM_MIRROR

в файл конфигурации ядра, пересоберите и переустановите ядро. Это должно устранить проблему.

### 18.4.3. Восстановление после дисковых сбоев

Примечательной особенностью зеркалирования является то, что если диск вышел из строя, то он, пожалуй, может быть заменён вообще без ущерба для данных.

Принимая во внимание предыдущую конфигурацию RAID1, предположим, что устройство `da1` вышло из строя, и ему требуется замена. Перед заменой определите, какой именно диск вышел из строя, а потом выключите систему. Теперь дефектный диск может быть заменён новым, после чего необходимо снова загрузить систему. После загрузки системы для замещения диска в зеркале могут быть использованы следующие команды:

    # gmirror forget gm0

    # gmirror insert gm0 /dev/da1

Для наблюдения за статусом построения используйте команду `gmirror` `status`. Вывод этой команды достаточно прост и понятен.

## 18.5. Сетевые устройства GEOM Gate

GEOM включает в себя поддержку работы с удаленными устройствами по сети, например с дисками, CD-ROM и т.д. путем использования gate утилит. Это подобно работе с NFS.

Для начала необходимо создать файл экспорта. В этом файле указывается, кому разрешен доступ к экспортируемым ресурсам и какой уровень доступа предоставляется. Например для того, чтобы экспортировать четвертый слайс первого SCSI диска, достаточно следующей записи в файле `/etc/gg.exports`:

    192.168.1.0/24 RW /dev/da0s4d

Это позволит всем компьютерам внутри частной сети получить доступ к разделу `da0s4d`.

Чтобы экспортировать устройство, убедитесь, что оно не смонтировано, и запустите сервер ggated(8):

    # ggated

Теперь, чтобы смонтировать устройство на клиентском компьютере выполните следующие команды:

    # ggatec create -o rw 192.168.1.1 /dev/da0s4d
    ggate0
    # mount /dev/ggate0 /mnt

С этого момента устройство доступно в точке монтирования `/mnt`.

> Замечание: Необходимо заметить, что попытка смонтировать устройство, уже смонтированное как сетевой или локальный диск, закончится неудачей.

Когда устройство больше не нужно, оно может быть размонтировано командой umount(8), как любое другое дисковое устройство.

## 18.6. Метки дисковых устройств

Перевод на русский язык Денис Пеплин.

Во время загрузки системы, ядро FreeBSD создает файлы для обнаруженных устройств. Этот метод обнаружения устройств создает некоторые проблемы, например если новое дисковое устройство подключается через USB. Может получиться так, что этому диску будет присвоено имя устройства `da0`, а устройство с прежним именем `da0` получит следующее имя, `da1`. Это приведет к проблемам монтирования файловых систем, записанных в `/etc/fstab`. На самом деле, это может даже помешать загрузке системы.

Одно из решений состоит в расположении SCSI устройств в таком порядке, чтобы новые устройства, добавляемые к SCSI контроллеру, занимали свободные номера устройств. Но что делать с USB устройствами, которые могут занять место основного SCSI диска? Это случается потому, что USB устройства обычно тестируются до SCSI контроллера. Решение может состоять в подключении этих устройств после загрузки системы. Другое решение - использование ATA диска и исключение SCSI устройств из `/etc/fstab`.

Есть и лучшее решение. С помощью утилиты `glabel`, администратор или пользователь могут пометить дисковые устройства и использовать эти метки в `/etc/fstab`. Поскольку `glabel` сохраняет метки в последнем секторе заданного устройства, они сохраняются и после перезагрузки. Используя эти метки вместо имени устройств, можно всегда смонтировать файловую систему независимо от назначенного имени устройства.

> Замечание: Очевидно, что метки должны быть постоянными. Утилита `glabel` может использоваться для создания как временных, так и постоянных меток. Только постоянные метки сохраняются после перезагрузок. Прочтите glabel(8) для получения более подробной информации о различии между метками.

### 18.6.1. Типы меток и примеры

Существует два типа меток, основной (generic) тип и метки файловой системы. Метки могут быть постоянными или временными. Постоянные метки создаются командой tunefs(8) или newfs(8). В дальнейшем они будут автоматически создаваться в подкаталоге каталога `/dev`, имя которого определяется в соответствии с типом файловой системы. Например, метки файловых систем UFS2 будут расположены в каталоге `/dev/ufs`. Постоянные метки также можно создать при помощи команды `glabel label`. Эти метки не зависят от типа файловой системы, поэтому они будут перечисляться в каталоге `/dev/label`.

Временные метки не сохраняются после перезагрузки. Эти метки создаются в каталоге `/dev/label`, они хорошо подходят для экспериментов. Временную метку можно создать командой `glabel create`. За более детальной информацией обратитесь к странице справочника glabel(8).

Чтобы создать постоянную метку для файловой системы UFS2 не нарушая самих данных, выполните следующую команду:

    # tunefs -L home /dev/da3

> Внимание: Если файловая система заполнена, это может привести к повреждению данных; в случае заполненной файловой системы надо или удалить ненужные файлы, или не добавлять метки.

Метка должна появиться в `/dev/ufs` и может быть добавлена в `/etc/fstab`:

    /dev/ufs/home      /home            ufs     rw              2      2

> Замечание: Во время запуска `tunefs` файловая система не должна быть смонтирована.

Теперь файловую систему можно смонтировать как обычно:

    # mount /home

Если модуль ядра `geom_label.ko` указан в `/boot/loader.conf` и загружается вместе с системой, или в ядре указана опция `GEOM_LABEL`, метку устройства можно изменять без какого-либо негативного для системы эффекта.

Файловая система может быть создана с меткой по умолчанию путем использования флага `-L` команды `newfs`. Обратитесь к странице справочника newfs(8) за более подробной информацией.

Для удаления метки можно использовать следующую команду:

    # glabel destroy home

В следующем примере показано, как устанавливаются метки на разделы загрузочного диска.

Пример 18-1. Установка меток на разделы загрузочного диска

Установка и задействование постоянных меток на разделах загрузочного диска предоставит возможность операционной системе загружаться нормально в том случае, если диск был переключен на другой контроллер, или даже переставлен на другую машину. В этом примере был задействован один диск ATA, определяемый системой как `ad0`. Также в примере подразумевается, что система использует типичную для FreeBSD схему разделения дискового пространства на слайсы и размещения на них файловых систем `/`, `/var`, `/usr`, `/tmp` и раздела подкачки.

Перезагрузите систему, дождитесь меню загрузчика. Нажатием клавиши 4 выберите однопользовательский режим. Далее, введите следующие команды:

    # glabel label rootfs /dev/ad0s1a
    GEOM_LABEL: Label for provider /dev/ad0s1a is label/rootfs
    # glabel label var /dev/ad0s1d
    GEOM_LABEL: Label for provider /dev/ad0s1d is label/var
    # glabel label usr /dev/ad0s1f
    GEOM_LABEL: Label for provider /dev/ad0s1f is label/usr
    # glabel label tmp /dev/ad0s1e
    GEOM_LABEL: Label for provider /dev/ad0s1e is label/tmp
    # glabel label swap /dev/ad0s1b
    GEOM_LABEL: Label for provider /dev/ad0s1b is label/swap
    # exit

Система продолжит загрузку в многопользовательский режим. По завершении загрузки откройте файл `/etc/fstab` и замените в нём традиционные имена файлов устройств на соответствующие устройствам метки. Результат будет выглядеть подобно следующему:

    # Device                Mountpoint      FStype  Options         Dump    Pass#
    /dev/label/swap         none            swap    sw              0       0
    /dev/label/rootfs       /               ufs     rw              1       1
    /dev/label/tmp          /tmp            ufs     rw              2       2
    /dev/label/usr          /usr            ufs     rw              2       2
    /dev/label/var          /var            ufs     rw              2       2

Перезагрузите еще раз систему. Если всё прошло успешно, система загрузится как обычно, а вывод команды `mount` отобразит следующее:

    # mount
    /dev/label/rootfs on / (ufs, local)
    devfs on /dev (devfs, local)
    /dev/label/tmp on /tmp (ufs, local, soft-updates)
    /dev/label/usr on /usr (ufs, local, soft-updates)
    /dev/label/var on /var (ufs, local, soft-updates)

Начиная с FreeBSD 7.2, GEOM класс glabel(8) поддерживает новый тип меток для файловых систем UFS. Новый тип меток базируется на уникальных идентификаторах файловых систем, называемых `ufsid`. Во время загрузки системы они автоматически создаются и помещаются в каталог `/dev/ufsid`. Перечисление меток должным образом в файле `/etc/fstab` делает возможным монтирование разделов по значениям `ufsid`. Чтобы получить перечень файловых систем и соответствующих им меток `ufsid`, выполните команду `glabel status`:

    % glabel status
                      Name  Status  Components
    ufsid/486b6fc38d330916     N/A  ad4s1d
    ufsid/486b6fc16926168e     N/A  ad4s1f

В данном примере `ad4s1d` содержит файловую систему `/var`, а `ad4s1f` соответствует файловой системе `/usr`. Эти файловые системы можно также монтировать, указав значения их `ufsid` в файле `/etc/fstab`:

    /dev/ufsid/486b6fc38d330916        /var        ufs        rw        2      2
    /dev/ufsid/486b6fc16926168e        /usr        ufs        rw        2      2

Таким способом могут быть смонтированы любые разделы с метками `ufsid`, что исключает необходимость создания постоянных меток вручную и в то же время позволяет воспользоваться преимуществами монтирования по меткам.

## 18.7. Журналирование UFS средствами GEOM

С выходом FreeBSD 7.0 был реализован долгожданный механизм ведения журналов для файловых систем. Сама реализация этого механизма осуществляется средствами системы GEOM, а конфигурирование выполняется утилитой gjournal(8).

Что такое журналирование? Журналирование сохраняет протокол транзакций файловой системы, то есть: изменения, составляющие логически завершенную операцию записи, сперва вносятся в журнал, а модификация метаданных и данных самого файла выполняется позже. В дальнейшем журнал может быть задействован для повторного выполнения транзакций на файловой системе с целью предотвращения нарушения целостности файловой системы.

Журналирование -- это еще одним механизм предотвращения утери данных и нарушения целостности файловой системы. В отличие от механизма Soft Updates, который отслеживает и периодически сохраняет обновления метаданных, и механизма снэпшотов, который создает образ файловой системы, сам журнал хранится в специально отведенном для этой задачи пространстве диска, и, в некоторых случаях, может содержаться целиком на отдельном диске.

В отличие от других реализаций журналирования файловых систем, метод `gjournal` работает на блочном уровне, он не встроен в файловую систему; это лишь надстройка над системой GEOM.

Чтобы включить поддержку `gjournal`, в файле конфигурации ядра FreeBSD должна присутствовать следующая опция (включено по умолчанию для FreeBSD 7.0 и более поздних версий систем):

    options    UFS_GJOURNAL

Журналируемым устройствам, монтируемым во время загрузки системы, также потребуется модуль ядра `geom_journal.ko`. Внесите следующую запись в файл `/boot/loader.conf`:

    geom_journal_load="YES"

В качестве альтернативы, функции вышеупомянутого модуля можно встроить в специализированное ядро. Для этого добавьте следующую опцию в файл конфигурации ядра:

    options    GEOM_JOURNAL

Для создания журнала на новой файловой системе выполните следующие шаги (здесь и далее подразумевается, что `da4` есть новый SCSI диск):

    # gjournal load
    # gjournal label /dev/da4

На этом этапе в каталоге `/dev` должны присутствовать файлы устройств `/dev/da4` и `/dev/da4.journal`. Теперь необходимо создать файловую систему:

    # newfs -O 2 -J /dev/da4.journal

Предыдущая команда создаст файловую систему UFS2 на журналируемом устройстве.

Смонтируйте устройство в требуемый каталог файловой системы:

    # mount /dev/da4.journal /mnt

> Замечание: В случае наличия нескольких слайсов, журнал создается для каждого из них. Например, если есть два слайса, и они называются `ad4s1` и `ad4s2`, то утилитой `gjournal` создаются файлы устройств `ad4s1.journal` и `ad4s2.journal`.

Для увеличения производительности может потребоваться хранение журнала на отдельном диске. В таких случаях необходимо указать имя поставщика журнала или устройства хранения после имени устройства, на котором планируется включение журналирования. Журналирование также может быть активировано утилитой `tunefs` на действующих файловых системах; однако, всегда создавайте резервную копию перед попытками изменить настройки файловой системы. В большинстве случаев, выполнение команды `gjournal` завершится ошибкой, если создание журнала невозможно, в то время как некорректное использование команды `tunefs` не защитит против потери данных.

Также возможно журналирование загрузочного диска системы FreeBSD. За детальными инструкциями по этой возможности обратитесь к статье Настройка журналирования UFS для настольного компьютера.

# Глава 19. Поддержка файловых систем

Написал Tom Rhodes.

## 19.1. Краткий обзор

Файловые системы -- неотъемлемая часть любой операционной системы. Они позволяют пользователям записывать и хранить файлы, получать доступ к данным, и, конечно-же, пользоваться жесткими дисками. У разных операционных систем есть одна общая черта -- их основная файловая система (native filesystem). Для FreeBSD это Fast File System (или FFS), которая произошла от Unix™ File System (сокращенно UFS).

FreeBSD также поддерживает ряд других файловых систем, тем самым предоставляя возможность получать доступ к данным от других операционных систем локально, например: к данным, находящимся на подключенных USB устройствах хранения, флэш-накопителях и жестких дисках. В списке поддерживаемых есть файловые системы, разработанные для других операционных систем, например Linux Extended File System (EXT) и Sun Z File System (ZFS).

FreeBSD имеет разные уровни поддержки для разных файловых систем. Для некоторых будет достаточно загрузки модуля ядра, другим может потребоваться установка набора утилит (toolset). Цель этого раздела -- дать представления пользователям FreeBSD о возможностях использования других файловых систем на их операционных системах. Начнем с Sun Z file system.

После прочтения этого раздела вы будете знать:

- Разницу между основной и поддерживаемой файловой системой.

- Какие файловые системы поддерживаются FreeBSD.

- Как подключить, сконфигурировать, получить доступ и использовать поддерживаемые файловые системы.

Перед прочтением этого раздела вам необходимо:

- Понимать основы UNIX и FreeBSD (Гл. 3).

- Знать азы конфигурирования и компиляции ядра (Гл. 8).

- Уметь устанавливать приложения сторонних разработчиков в FreeBSD (Гл. 4).

- Быть знакомым с именованием дисков и устройств хранения в FreeBSD (Гл. 17).

## 19.2. Файловая система ZFS

Файловая система ZFS, разработанная компанией Sun, основана на использовании метода пулов устройств хранения данных. Это значит, что емкость носителя занимается только тогда, когда она становится необходимой для сохранения данных. ZFS также была разработана с упором на максимальную целостность данных, поддерживая снимки (snapshot), множество копий и контрольные суммы данных. Новая модель репликации данных, известная как RAID-Z, подобна RAID-5, но специально разработана для предотвращения повреждений данных при записи.

### 19.2.1. Настройка ZFS

Подсистема ZFS занимает значительную часть ресурсов системы. Чтобы получить от нее максимум эффективности в повседневном использовании, потребуется выполнить некоторые настройки. ZFS является экспериментальной функциональной возможностью в FreeBSD, но ситуация может измениться в ближайшем будущем; однако на данный момент рекомендуется выполнить следующие шаги.

#### 19.2.1.1. Память

Общий размер ОЗУ должен быть как минимум равен одному гигабайту, хотя рекомендуется два гигабайта или более. Во всех нижеследующих примерах используется система с 1ГБ памяти совместно с другими специальными настройками.

Известно, что некоторые пользователи преуспели в использовании ZFS на системах, имеющих менее одного гигабайта памяти, но с таким ограниченным объемом ОЗУ и при серьезной загрузке машины очень вероятны паники FreeBSD из-за нехватки памяти.

#### 19.2.1.2. Настройка ядра

Рекомендуется исключить из файла конфигурации ядра неиспользуемые драйвера и опции. Так как большинство драйверов устройств доступно в виде модулей, то они просто могут быть загружены с помощью соответствующих записей в файле `/boot/loader.conf`.

Пользователям архитектуры i386 необходимо добавить следующую опцию в их файл конфигурации ядра, перестроить ядро и перезагрузиться:

    options         KVA_PAGES=512

Эта опция расширит адресное пространство ядра, тем самым позволяя переменной `vm.kvm_size` быть установленной за текущий предел в 1 ГБ (2 ГБ для PAE). Чтобы найти наиболее подходящее значение для этой опции, разделите имеющийся объем ОЗУ, выраженный в мегабайтах, на 4. Приведенное выше значение `512` рекомендуется для систем с 2 ГБ оперативной памяти.

#### 19.2.1.3. Параметры loader.conf

Адресное пространство `kmem` должно быть увеличено на всех FreeBSD архитектурах. На тестовой системе с одним гигабайтом физической памяти стабильная работа была получена со следующими параметрами, которые необходимо внести в файл `/boot/loader.conf` и перезагрузить систему.

    vm.kmem_size="330M"
    vm.kmem_size_max="330M"
    vfs.zfs.arc_max="40M"
    vfs.zfs.vdev.cache.size="5M"

За более детальными рекомендациями по тонкой настройке системы под ZFS, обратитесь к странице: http://wiki.freebsd.org/ZFSTuningGuide.

### 19.2.2. Использование ZFS

Существует стартовый механизм, позволяющий монтировать ZFS пулы во время инициализации системы. Чтобы его задействовать, выполните следующие команды:

    # echo 'zfs_enable="YES"' >> /etc/rc.conf
    # /etc/rc.d/zfs start

Здесь и далее в статье подразумевается, что в системе установлено три SCSI диска с именами устройств ``da0``, ``da1`` и ``da2``. Использующим IDE диски необходимо подставить имена устройств ``ad`` вместо имен устройств SCSI.

#### 19.2.2.1. Простой дисковый пул

Для создания простого пула ZFS без избыточности, задействовав при этом один жесткий диск, воспользуйтесь командой `zpool`:

    # zpool create example /dev/da0

Чтобы увидеть новый пул, просмотрите вывод команды `df`:

    # df
    Filesystem  1K-blocks    Used    Avail Capacity  Mounted on
    /dev/ad0s1a   2026030  235230  1628718    13%    /
    devfs               1       1        0   100%    /dev
    /dev/ad0s1d  54098308 1032846 48737598     2%    /usr
    example      17547136       0 17547136     0%    /example

Этот вывод четко показывает, что пул `example` был не только создан, но также и примонтирован. Он также доступен, как и обычная файловая система, в нем можно создавать файлы, а пользователи могут просматривать его содержимое, например:

    # cd /example
    # ls
    # touch testfile
    # ls -al
    total 4
    drwxr-xr-x   2 root  wheel    3 Aug 29 23:15 .
    drwxr-xr-x  21 root  wheel  512 Aug 29 23:12 ..
    -rw-r--r--   1 root  wheel    0 Aug 29 23:15 testfile

Однако в этом примере простого пула не задействованы никакие функциональные возможности ZFS. Создайте файловую систему в этом пуле и активируйте сжатие данных на ней:

    # zfs create example/compressed
    # zfs set compression=gzip example/compressed

С этого момента для файловой системы ZFS `example/compressed` активировано сжатие данных. Попробуйте поместить на нее несколько больших файлов копируя их в `/example/compressed`.

А вот как можно отключить сжатие данных:

    # zfs set compression=off example/compressed

Для того чтобы размонтировать файловую систему, выполните следующую команду и проверьте результат утилитой `df`:

    # zfs umount example/compressed
    # df
    Filesystem  1K-blocks    Used    Avail Capacity  Mounted on
    /dev/ad0s1a   2026030  235232  1628716    13%    /
    devfs               1       1        0   100%    /dev
    /dev/ad0s1d  54098308 1032864 48737580     2%    /usr
    example      17547008       0 17547008     0%    /example

Снова смонтируйте файловую систему и проверьте результат при помощи `df`:

    # zfs mount example/compressed
    # df
    Filesystem         1K-blocks    Used    Avail Capacity  Mounted on
    /dev/ad0s1a          2026030  235234  1628714    13%    /
    devfs                      1       1        0   100%    /dev
    /dev/ad0s1d         54098308 1032864 48737580     2%    /usr
    example             17547008       0 17547008     0%    /example
    example/compressed  17547008       0 17547008     0%    /example/compressed

Пул и файловая система также отображается в выводе команды `mount`:

    # mount
    /dev/ad0s1a on / (ufs, local)
    devfs on /dev (devfs, local)
    /dev/ad0s1d on /usr (ufs, local, soft-updates)
    example on /example (zfs, local)
    example/data on /example/data (zfs, local)
    example/compressed on /example/compressed (zfs, local)

Как вы уже убедились, файловые системы ZFS после создания могут использоваться как и обычные файловые системы; однако доступно множество других возможностей. В следующем примере мы создадим новую файловую систему `data`. На ней мы будем содержать важные данные, поэтому файловая система сконфигурирована хранить две копии каждого блока:

    # zfs create example/data
    # zfs set copies=2 example/data

Снова проверьте свободное и использованное место выполнив команду `df`:

    # df
    Filesystem         1K-blocks    Used    Avail Capacity  Mounted on
    /dev/ad0s1a          2026030  235234  1628714    13%    /
    devfs                      1       1        0   100%    /dev
    /dev/ad0s1d         54098308 1032864 48737580     2%    /usr
    example             17547008       0 17547008     0%    /example
    example/compressed  17547008       0 17547008     0%    /example/compressed
    example/data        17547008       0 17547008     0%    /example/data

Заметьте, что каждая файловая система в пуле имеет тот же объем свободного места. Мы использовали команду `df` на протяжении этих примеров, чтобы показать, что файловые системы занимают только необходимое им пространство, используя ресурс одного и того же пула. ZFS уходит от привычных понятий "том (volume)" и "раздел (partition)", позволяя файловым системам занимать один и тот же пул. Уничтожьте файловые системы, потом уничтожьте пул, так как в них уже нет нужды:

    # zfs destroy example/compressed
    # zfs destroy example/data
    # zpool destroy example

Жесткие диски со временем выходят из строя, это неизбежно. Когда этот диск выйдет из строя, данные будут утеряны. Одним из способов избежать потери данных из-за вышедшего из строя жесткого диска является построение RAID массивов. ZFS поддерживает эту функциональную возможность в своем дизайне, и это описано в следующем разделе.

#### 19.2.2.2. ZFS RAID-Z

Как уже было сказано выше, в этой статье подразумевается, что в нашей системе в распоряжении есть три SCSI диска: `da0`, `da1` и `da2` (или `ad0` и далее в случае IDE дисков). Для того, чтобы создать RAID-Z пул, выполните следующую команду:

    # zpool create storage raidz da0 da1 da2

> Замечание: Sun рекомендует использовать от трех до девяти жестких дисков в конфигурации RAID-Z. Если есть необходимость в использовании 10 или более дисков, подумайте над тем, чтобы разбить их на меньшие группы RAID-Z. Если у вас есть только два диска и вам всё-таки требуется избыточность, возможно лучшим вариантом будет создание ZFS зеркала. Смотрите страницу справочника zpool(8) для получения более подробных сведений.

По завершении команды должен создаться пул `storage`. Как и прежде, это может быть проверено при помощи команд mount(8) и df(1). Больше дисковых устройств может быть задействовано путем добавления их в конец списка параметров команды, приведенной выше. Создайте в пуле новую файловую систему, называемую `home`, в которой будут размещаться пользовательские файлы:

    # zfs create storage/home

На данном этапе возможно активировать сжатие данных и организовать автоматическое создание копий пользовательских домашних каталогов и файлов. Это может быть достигнуто так же, как и ранее, при помощи следующих команд:

    # zfs set copies=2 storage/home
    # zfs set compression=gzip storage/home

Чтобы организовать в этой файловой системе хранение домашних каталогов пользователей, скопируйте сюда их содержимое и создайте соответствующие символические ссылки:

    # cp -rp /home/* /storage/home
    # rm -rf /home /usr/home
    # ln -s /storage/home /home
    # ln -s /storage/home /usr/home

С этого момента пользовательские данные сохраняются на новой файловой системе `/storage/home`. Для проверки создайте учетную запись нового пользователя и войдите ею в систему.

Попробуйте создать снимок (snapshot), к которому можно будет откатиться при необходимости:

    # zfs snapshot storage/home@08-30-08

Заметьте, что снимок (snapshot) захватит реальную файловую систему, а не домашний каталог или файл. Символ `@` отделяет имя файловой системы или имя тома от имени снимка. Когда возникнет необходимость восстановить пользовательские домашние каталоги, выполните следующую команду:

    # zfs rollback storage/home@08-30-08

Чтобы получить список имеющихся в наличии снимков, выполните команду `ls` в каталоге `.zfs/snapshot`. Например, чтобы увидеть сделанный ранее снимок, выполните следующую команду:

    # ls /storage/home/.zfs/snapshot

Можно написать скрипт, выполняющий снимки пользовательских данных ежемесячно; однако, со временем, они могут занять значительную часть дискового пространства. Предыдущий снимок может быть удален используя следующую команду:

    # zfs destroy storage/home@08-30-08

Нет причины после наших экспериментов далее держать в текущем состоянии `/storage/home`. Сделаем ее реальной файловой системой `/home`:

    # zfs set mountpoint=/home storage/home

Выполнение команд `df` и `mount` покажет, что с этого момента операционная система воспринимает нашу файловую систему как обычную `/home`:

    # mount
    /dev/ad0s1a on / (ufs, local)
    devfs on /dev (devfs, local)
    /dev/ad0s1d on /usr (ufs, local, soft-updates)
    storage on /storage (zfs, local)
    storage/home on /home (zfs, local)
    # df
    Filesystem   1K-blocks    Used    Avail Capacity  Mounted on
    /dev/ad0s1a    2026030  235240  1628708    13%    /
    devfs                1       1        0   100%    /dev
    /dev/ad0s1d   54098308 1032826 48737618     2%    /usr
    storage       26320512       0 26320512     0%    /storage
    storage/home  26320512       0 26320512     0%    /home

На этом завершим конфигурацию RAID-Z. Чтобы во время ночных запусков periodic(8) получать информацию о статусе созданных файловых систем, выполните следующую команду:

    # echo 'daily_status_zfs_enable="YES"' >> /etc/periodic.conf

#### 19.2.2.3. Восстановление RAID-Z

Каждая система программных RAID массивов предоставляет возможность отображать информацию о своем `состоянии`. ZFS -- не исключение. Статус устройств RAID-Z может быть просмотрен при помощи следующей команды:

    # zpool status -x

Если пулы исправны и всё нормально, возвратится следующее сообщение:

    all pools are healthy

А если есть какие-то неполадки, например диск выведен из массива, возвращенное состояние пула будет подобным следующему:

      pool: storage
     state: DEGRADED
    status: One or more devices has been taken offline by the administrator.
        Sufficient replicas exist for the pool to continue functioning in a
        degraded state.
    action: Online the device using 'zpool online' or replace the device with
        'zpool replace'.
     scrub: none requested
    config:

        NAME        STATE     READ WRITE CKSUM
        storage     DEGRADED     0     0     0
          raidz1    DEGRADED     0     0     0
            da0     ONLINE       0     0     0
            da1     OFFLINE      0     0     0
            da2     ONLINE       0     0     0

    errors: No known data errors

Вывод показывает, что устройство было переведено в автономный режим администратором. Это верно для данного отдельного примера. Чтобы перевести диск в автономный режим, была выполнена команда:

    # zpool offline storage da1

Теперь после останова системы возможно заменить `da1`. Когда система загрузится снова, выполните следующую команду чтобы заменить диск в массиве:

    # zpool replace storage da1

С этого момента статус может быть проверен опять и на этот раз без флага `-x`:

    # zpool status storage
     pool: storage
     state: ONLINE
     scrub: resilver completed with 0 errors on Sat Aug 30 19:44:11 2008
    config:

        NAME        STATE     READ WRITE CKSUM
        storage     ONLINE       0     0     0
          raidz1    ONLINE       0     0     0
            da0     ONLINE       0     0     0
            da1     ONLINE       0     0     0
            da2     ONLINE       0     0     0

    errors: No known data errors

В выводе сообщается, что при перестроении массива ошибок обнаружено не было.

#### 19.2.2.4. Проверка данных

Как уже было сказано ранее, ZFS использует `контрольные суммы` для проверки целостности сохраненных данных. Подсчет и сохранение контрольных сумм включается автоматически во время создания файловых систем и может быть отключен при помощи команды:

    # zfs set checksum=off storage/home

Отключение подсчета контрольных сумм -- не очень хорошая идея; особенно ввиду того, что они занимают мало места, а также при их использовании нет существенных расходов ресурсов системы. Пока подсчет включен, возможно выполнять проверки целостности данных ZFS, используя контрольные суммы. Этот процесс известен как ''очистка (scrubbing)''. Чтобы проверить целостность данных пула `storage`, выполните следующую команду:

    # zpool scrub storage

Этот процесс может занять значительное время в зависимости от количества сохранённых данных. Очистка (scrubbing) порождает интенсивный ввод/вывод, поэтому только один экземпляр этой операции может выполняться в один момент времени. После завершения очистки (scrubbing) статус обновится, его можно просмотреть выполнив следующий запрос:

    # zpool status storage
     pool: storage
     state: ONLINE
     scrub: scrub completed with 0 errors on Sat Aug 30 19:57:37 2008
    config:

        NAME        STATE     READ WRITE CKSUM
        storage     ONLINE       0     0     0
          raidz1    ONLINE       0     0     0
            da0     ONLINE       0     0     0
            da1     ONLINE       0     0     0
            da2     ONLINE       0     0     0

    errors: No known data errors

Время завершения отображается в простом виде в этом примере. Очистка помогает удостовериться в целостности данных на протяжении длительного времени.

В этом разделе была освещена лишь малая часть возможностей ZFS. За более подробной информацией обратитесь к страницам справочника zfs(8) и zpool(8).

# Глава 20. Менеджер дискового пространства Vinum

Изначально написано Greg Lehey. Перевод на русский язык: Дмитрий Морозовский.

## 20.1. Краткая аннотация

Какие бы диски у вас ни были, они всегда будут подвержены ограничениям:

- Слишком маленькие

- Слишком медленные

- Недостаточно надежные

Для того, чтобы обойти эти ограничения, можно использовать несколько (и, возможно, избыточное число) дисков.

В дополнение к поддержке разнообразных контроллеров RAID, базовая система FreeBSD включает Менеджер дискового пространства Vinum -- драйвер, реализующий поддержку виртуальных дисков.

Vinum позволяет более гибко оперировать дисковым пространством, повысить производительность и надежность дисковой подсистемы за счет реализации моделей RAID-0, RAID-1 и RAID-5, а также их комбинаций.

В данной главе кратко рассматриваются потенциальные проблемы традиционной системы хранения данных и методы их решения при помощи Vinum.

> Замечание: Начиная с версии 5 FreeBSD, подсистема Vinum была переписана для того, чтобы стать совместимой с архитектурой GEOM (см. Гл. 18), при сохранении исходных идей, терминологии и формата хранимых на диске метаданных. Новая подсистема называется gvinum (сокращение от GEOM vinum). Дальнейший текст обычно использует термин Vinum как абстрактное название, вне зависимости от варианта реализации. Все реальные команды должны использовать `gvinum`, а имя модуля ядра сменено с `vinum.ko` на `geom_vinum.ko`; файлы устройств располагаются в каталоге `/dev/gvinum`, а не `/dev/vinum`. Начиная с FreeBSD 6, старая реализация Vinum удалена из дерева исходных текстов.

## 20.2. Диски слишком малы

Vinum (произносится Винум, с ударением на первом слоге) -- так называемый Менеджер дисковых томов -- представляет собой виртуальный дисковый драйвер, призванный решить три вышеописанные проблемы. Взглянем на них более подробно. Предлагаются (и реализованы) следующие пути:

Объемы дисков растут, тем не менее, растут и требования к объемам систем хранения данных. Вы запросто можете оказаться в ситуации, когда требуемый объем файловой системы превышает размеры доступных дисков. Надо признать, что в настоящее время данная проблема стоит не так остро, как 10 лет назад, но тем не менее она существует. Некоторые системы выходят из этого тупика посредством создания мета-устройств, распределяющих хранящиеся данные по нескольким дискам.

## 20.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); его преимуществом является то, что он не налагает никаких ограничений на размеры применяемых дисков. Конкатенация эффективна, если нагрузка на дисковое пространство распределена равномерно. В случае концентрации нагрузки в малой области диска увеличение производительности не будет заметно. Организация секторов на сцепленных единицах хранения показана на Рис. 20-1.

Рисунок 20-1. Организация сцепленных дисков

Альтернативным подходом будет разделение адресного пространства на компоненты одного, сравнительно небольшого размера, и расположение их последовательно на разных устройствах. Например, первая группа из 256 секторов будет расположены на первом физическом диске, вторая -- на следующем и т.д. n+1-я группа попадает на первый диск вслед за первой. Такое расположение называется перемежающимся (striping) или RAID-0. [12]. Перемежение требует дополнительных усилий для нахождения нужного блока данных и может приводить к дополнительным нагрузкам на подсистемы ввода-вывода, если передаваемый блок пересекает границу stripe (тем самым попадая на разные диски), зато обеспечивает более равномерное распределение нагрузки по физическим дискам. Распределение блоков по физическим дискам в случае striping иллюстрируется Рис. 20-2.

Рисунок 20-2. Организация с перемежением

## 20.4. Целостность данных

Наконец, слабым местом современных дисков является их ограниченная надежность. Несмотря на то, что за последние несколько лет она ощутимо выросла, из всех компонентов сервера отказ дисков наиболее вероятен. Отказ может привести к катастрофическим результатам: замена отказавшего диска и восстановление данных может занять несколько дней.

Традиционным путем решения проблемы надежности является зеркалирование (mirroring), обеспечивающее хранение всей информации в двух копиях на различных физических носителях. С момента изобретения аббревиатуры RAID эту технику также называют RAID уровня 1 или просто RAID-1. Любой запрос на запись в таком томе приводит к записи в оба подтома, чтение может производиться из любой половины, так что данные остаются доступны в случае отказа одного из дисков.

Зеркалирование имеет два слабых места:

- Цена: требуется вдвое больше дисков.

- Проблемы с производительностью: запись производится на оба диска, требуя вдвое большей пропускной способности шины. Производительность чтения не уменьшается, более того, часто увеличивается.

Альтернативным решением является хранение контрольных сумм (четности), реализованное в RAID уровней 2, 3, 4 и 5. Наиболее интересен RAID-5. В реализации Vinum, это вариант организации тома с перемежением, при котором один из блоков в страйпе выделяется для хранения четности остальных n-1 блоков. Как требует спецификация RAID-5, положение блока четности меняется от страйпа к страйпу.

Рисунок 20-3. Организация RAID-5

По сравнению с зеркалированием преимуществом RAID-5 является гораздо меньшее требование к объему дисков. Скорость чтения сравнима с чтением в случае томов с перемежением, а вот запись происходит ощутимо медленнее (примерно вчетверо медленнее чтения). При отказе одного из дисков массив продолжает работать в "деградировавшем" режиме: запросы на чтение с оставшихся дисков производятся обычным образом, а блоки с отказавшего диска перевычисляются из данных остальных блоков страйпа.

## 20.5. Объекты Vinum

Для обеспечения необходимой функциональности Vinum использует четырехуровневую иерархию объектов:

- "Видимая снаружи" сущность -- виртуальный диск, называемый томом (volume). Тома в основном аналогичны дискам UNIX, хотя имеются и мелкие различия. На тома нет ограничений по размеру.

- Тома образуются из наборов (plex), каждый из которых представляет полное адресное пространство тома. Данный уровень иерархии, таким образом, реализует избыточность. Наборы являются аналогами отдельных дисков в зеркалированном массиве; содержимое наборов идентично.

- Поскольку Vinum работает в среде подсистемы хранения данных UNIX, многодисковые наборы можно было бы реализовать на базе дисковых разделов UNIX. На практике, подобная реализация недостаточно гибка (диски UNIX могут иметь весьма ограниченное число разделов). Вместо этого Vinum вводит еще один уровень абстракции: единый дисковый раздел UNIX (drive в терминах Vinum) делится на непрерывные области, называемые поддисками (subdisk), которые и будут "строительным материалом" для наборов.

- Поддиски, как уже упоминалось, располагаются внутри приводов (drive) Vinum, существующих дисковых разделов UNIX. Привод может содержать неограниченное количество поддисков. Небольшая область в начале привода зарезервирована под хранение информации о конфигурации и состоянии Vinum; все остальное пространство пригодно для хранения данных.

Сейчас мы опишем, как эта иерархия обеспечивает необходимую функциональность для Vinum.

### 20.5.1. Размер тома

Наборы могут состоять из большого количества поддисков, распределенных по разным приводам Vinum. Стало быть, размеры отдельных дисков не ограничивают размер набора, а следовательно, и тома.

### 20.5.2. Избыточность

Vinum реализует избыточность посредством связывания с томом нескольких наборов. Содержимое каждого набора является полной копией содержимого тома. Количество наборов в томе может быть от одного до восьми.

Хотя набор представляет данные тома целиком, отдельные части содержимого тома могут быть представлены не всеми наборами. Во-первых, для некоторых частей набора поддиски могут быть не определены; во-вторых, часть набора может быть потеряна из-за отказа диска. До тех пор, пока хотя бы один набор может обеспечить данные для полного адресного пространства тома, том полностью функционален.

### 20.5.3. Производительность

Vinum поддерживает как конкатенацию, так и перемежение на уровне наборов:

- Сцепленный набор использует пространство поддисков последовательно, склеивая их "встык".

- Набор с перемежением разбивает данные по поддискам в соответствии с размером страйпа. Поддисков должно быть по меньшей мере два (чтобы отличить набор от сцепленного), и все они должны быть одинакового размера.

### 20.5.4. Организация наборов: что выбрать?

Vinum, распространяемый с FreeBSD версии 8.1 поддерживает два вида организации наборов:

- Сцепленные наборы наиболее гибки в использовании: они могут содержать любое количество поддисков произвольного размера. Такой набор может быть расширен "на лету" путем добавления дополнительных поддисков. Поддержка сцепленных наборов требует меньших затрат процессорного времени, чем поддержка наборов с перемежением (хотя различие вряд ли поддается измерению). С другой стороны, они наиболее чувствительны к концентрации нагрузки в одной области тома, при которой один из дисков принимает на себя всю нагрузку, а остальные бездействуют.

- Основным преимуществом наборов с перемежением (RAID-0) является распределение "горячих точек" нагрузки; вы можете даже полностью уравнять ее, выбрав оптимальный размер страйпа (около 256 kB). Недостатки такой организации -- более сложный код и ограничения на поддиски: все они должны быть строго одного размера. Кроме того, процесс добавления поддиска в набор с перемежением "на ходу" является настолько нетривиальной задачей, что в настоящее время Vinum не поддерживает эту операцию. Дополнительное (тривиальное) ограничение состоит в том, что набор с перемежением должен содержать как минимум два поддиска, иначе он будет неотличим от сцепленного.

Преимущества и недостатки различных методов организации наборов описаны в Табл. 20-1.

Таблица 20-1. Методы организации наборов Vinum

Тип набора | Поддисков, мин. | Расширяется "на лету" | Поддиски строго одного размера | Применение
--- | --- | --- | --- | ---
сцепленный (concatenated) | 1 | да | нет | Крупные системы хранения, требующие максимальной гибкости и умеренной производительности
с перемежением (striped) | 2 | нет | да | Высокая производительность, в том числе в случае параллельного доступа к данным

## 20.6. Несколько примеров

Vinum ведет базу данных конфигурации, в которой описаны все объекты Vinum в отдельной системе. Начальная конфигурация создается пользователем при помощи системной утилиты gvinum(8) из одного или нескольких конфигурационных файлов. Копия конфигурации хранится в начале каждого дискового раздела (привода) Vinum. Все копии обновляются при изменении состояния томов, поэтому после перезапуска состояние объектов Vinum восстанавливается.

### 20.6.1. Конфигурационный файл

Конфигурационный файл описывает объекты Vinum. Описание простого тома может быть таким:

        drive a device /dev/da3h
        volume myvol
          plex org concat
            sd length 512m drive a

Здесь описываются четыре объекта Vinum:

- Строка drive объявляет дисковый раздел (привод) и его местоположение на физическом диске. Приводу дано символьное имя a. Разделение символьных имен и имен устройств дает возможность перемещать физические диски (например, по разным контроллерам, или менять их местами) без изменения конфигурации.

- Строка volume описывает том. Единственным требуемым параметром является имя тома myvol.

- Строка plex определяет набор. Единственный обязательный параметр -- метод организации набора, в нашем случае concat (сцепленный). Давать набору имя в явном виде не обязательно: Vinum автоматически сгенерирует имя набора из имени тома и суффикса .p x, где x -- номер набора в томе. В нашем случае набор будет называться myvol.p0.

- Наконец, строка sd описывает поддиск. Минимальными требованиями к его описанию являются имя привода, на котором он будет располагаться, и его размер. Как и в случае набора, имя указывать не обязательно: имя поддиска будет построено добавлением .s x к имени набора, где x будет номером поддиска в наборе. Наш поддиск получит имя myvol.p0.s0.

В результате обработки такого конфигурационного файла gvinum(8) выдаст нам следующее:

          # gvinum -> 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

На этом кратком листинге показан формат вывода gvinum(8). Графически созданный нами том представлен на Рис. 20-4.

Рисунок 20-4. Простой том Vinum

Этот и последующие рисунки изображают том, содержащий один или несколько наборов, каждый из которых, в свою очередь, состоит из одного или нескольких поддисков. В первом тривиальном примере том состоит из одного набора, представленного одним поддиском.

Построенный нами только что том не имеет никаких преимуществ перед обычным дисковым разделом. Он содержит единственный набор, так что не обеспечивает избыточность; набор состоит из одного поддиска, поэтому методика распределения дисковых блоков ничем не отличается от дискового раздела. В последующих параграфах мы рассмотрим более интересные конфигурации.

### 20.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

Рис. 20-5 иллюстрирует структуру полученного тома.

Рисунок 20-5. Зеркалированный том Vinum

В данном примере каждый набор содержит все 512 MB адресного пространства тома. Как и в предыдущем случае, каждый набор состоит из одного поддиска.

### 20.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

Рисунок 20-6. Том с перемежением

Новосозданный том представлен на Рис. 20-6. Плотность заштрихованных участков показывает расположение страйпов в адресном пространстве набора (от светлых к темным).

### 20.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

Как вы можете заметить, поддиски второго набора смещены на два привода относительно поддисков первого. В результате даже при запросе на запись, пересекающем границы страйпа, не возникнет двух обращений к одному физическому диску.

Рис. 20-7 отражает структуру нового тома.

Рисунок 20-7. Зеркалированный том с перемежением

## 20.7. Правила именования объектов

Как уже было описано, Vinum автоматически именует создаваемые наборы и поддиски, хотя эти имена и могут быть переопределены. На самом деле, мы не рекомендовали бы переопределять стандартные имена: опыт с дисковым менеджером VERITAS показал, что гибкость в именовании объектов не дает ощутимого преимущества, а запутать пользователя может.

Имена объектов могут состоять из любых непробельных символов. Впрочем, рекомендуем ограничиться буквами, цифрами и подчеркиваниями. Имена томов, наборов и поддисков могут быть до 64 символов длиной; максимальная длина имени привода -- 32 символа.

Для объектов Vinum в иерархии `/dev/gvinum` создаются файлы устройств. Приведенный выше пример конфигурации создаст следующий набор устройств:

- > Замечание: Данный список относится только к ранней реализации Vinum.

  Управляющие устройства `/dev/vinum/control` и `/dev/vinum/controld`, используемые системной утилитой gvinum(8) и даемоном Vinum соответственно.

- Устройства для каждого из томов. Основные устройства, используемые Vinum'ом. Таким образом, вышеописанная конфигурация будет включать блоковые устройства `/dev/gvinum/myvol`, `/dev/gvinum/mirror`, `/dev/gvinum/striped`, `/dev/gvinum/raid5` и `/dev/gvinum/raid10`.

- > Замечание: Данный список относится только к ранней реализации Vinum.

  Каталог `/dev/vinum/drive` с записями для каждого привода. В реальности, каждая запись является символьной ссылкой на соответствующий файл дискового устройства.

- Записи для томов располагаются в каталоге `/dev/gvinum`.

- Каталоги `/dev/gvinum/plex` и `/dev/gvinum/sd` содержащие устройства для наборов и для каждого из поддисков.

Например, для конфигурации, описываемой как

       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

после обработки gvinum(8), созданный набор устройств в каталоге `/dev/gvinum` будет таким:

       drwxr-xr-x  2 root  wheel       512 Apr 13 16:46 plex
        crwxr-xr--  1 root  wheel   91,   2 Apr 13 16:46 s64
        drwxr-xr-x  2 root  wheel       512 Apr 13 16:46 sd

        /dev/vinum/plex:
        total 0
        crwxr-xr--  1 root  wheel   25, 0x10000002 Apr 13 16:46 s64.p0

        /dev/vinum/sd:
        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

Заметим, что, несмотря на то что наборы и поддиски не рекомендуется называть каким-либо специальным образом, приводы Vinum должны быть поименованы. Именование позволяет отвязать приводы от физических устройств, и при этом обеспечить их автоматическое распознавание. Имена приводов могут достигать длины в 32 символа.

### 20.7.1. Создание файловых систем

Тома с точки зрения системы аналогичны дискам, за одним малым исключением: в отличие от дисков UNIX, тома Vinum не содержат таблиц разделов. В результате потребовалось модифицировать некоторые утилиты работы с дисками, в первую очередь newfs(8), которая ранее использовала последний символ имени тома для определения идентификатора раздела. Например, дисковое устройство может именоваться `/dev/ad0a` -- первый раздел (`a`) первого (0) IDE-диска (`ad`) -- или `/dev/da2h` -- восьмой раздел (`h`) третьего (2) диска SCSI (`da`). Том Vinum может называться, например, `/dev/gvinum/concat` -- как легко видеть, имя тома никак не связано с именем раздела.

Обычно newfs(8) пытается интерпретировать имя раздела и сообщает об ошибке при невозможности такой интерпретации:

    # newfs /dev/gvinum/concat
    newfs: /dev/gvinum/concat: can't figure out file system partition

Для создания файловых систем на томе Vinum следует использовать команду newfs(8):

    # newfs /dev/gvinum/concat

> Замечание: Для FreeBSD версий до 5.0 необходимо использовать флаг `-v` и старую схему именования устройств:

    # newfs -v /dev/vinum/concat

## 20.8. Создание конфигурации Vinum

Стандартное (`GENERIC`) ядро FreeBSD не включает Vinum. Хотя и можно собрать специальное ядро с включенной поддержкой Vinum, этот вариант не рекомендуется. Обычный способ активизации Vinum -- загрузка модуля для ядра (kld). При этом, явно использовать команду kldload(8) нет необходимости: при старте утилита gvinum(8) проверит наличие поддержки Vinum в ядре и при необходимости загрузит модуль автоматически.

### 20.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 правильно идентифицировать диски при смене имени устройства.

#### 20.8.1.1. Автоматическая активация

> Замечание: Данная информация относится к исторической реализации. Gvinum обеспечивает автоматическую активацию при условии загрузки модуля ядра.

Для автоматического старта 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 определяет, какая копия является наиболее свежей, в дальнейшем использует ее, а также обновляет ее на оставшихся приводах.

## 20.9. Vinum для корневой файловой системы

Сервер, все информационные файловые системы которого дублированы, хотелось бы оснастить и зеркалированной корневой файловой системой. Создание такой конфигурации не вполне тривиально по сравнению с зеркалированием прочих файловых систем:

- Корневая файловая система должна быть доступна для чтения в самом начале процесса загрузки, так что инфраструктура Vinum должна к этому моменту уже работать.

- Том с корневой файловой системой содержит, помимо прочего, системный загрузчик и ядро, которые должны читаться "родными" (native) утилитами компьютера (BIOS для машин архитектуры PC); обеспечить поддержку ими тонкостей Vinum зачастую невозможно.

В данном разделе термин ''корневой том'' означает том Vinum, содержащий корневую файловую систему. Неплохой идеей является назвать такой том `"root"`, хотя это, разумеется, и необязательно. Все наши примеры, впрочем, будут использовать именно это имя.

### 20.9.1. Активизация Vinum на ранней стадии процесса загрузки

Для обеспечения этого необходимо следующее:

- Vinum должен быть доступен ядру еще на этапе загрузки. Метод, описанный в Разд. 20.8.1.1, неприменим; на самом деле, параметр `start_vinum` не должен быть установлен. Одним из вариантов является сборка ядра с поддержкой Vinum, что возможно, но, как правило, нежелательно. Более удобный вариант -- загрузка модуля ядра Vinum при помощи `/boot/loader` (Разд. 12.3.3), для чего в файл `/boot/loader.conf` следует добавить строку

      geom_vinum_load="YES"

- > Замечание: В случае Gvinum, все стартовые процедуры производятся автоматически, при загрузке модуля ядра. Дальнейший текст описывает поведение исторической реализации Vinum для старых систем.

  Vinum должен быть активирован достаточно рано, поскольку требуется предоставить том для корневой файловой системы. По умолчанию Vinum в ядре не начинает поиск приводов, содержащих информацию о томах Vinum, до команды администратора (или одного из стартовых скриптов) `vinum start`.

  > Замечание: Данный раздел описывает необходимые действия для FreeBSD версии 5.X и старше. Шаги, необходимые в случае FreeBSD версии 4.X, описаны ниже: Разд. 20.9.5.

  Строка

      vinum.autostart="YES"

  в файле `/boot/loader.conf`, указывает Vinum автоматически просканировать все диски для сбора информации о томах в процессе загрузки ядра.

  Обращаем ваше внимание, что нет необходимости как-либо специально сообщать ядру, где находится корневая файловая система. Загрузчик (`/boot/loader`) найдет необходимое имя устройства в `/etc/fstab` и передаст его ядру. В момент монтирования корневой файловой системы ядро передаст имя устройства соответствующему драйверу для декодирования (трансляции в пару идентификаторов устройств -- major/minor device number).

### 20.9.2. Загрузчик должен прочесть корневой том Vinum

В настоящее время начальный загрузчик FreeBSD ограничен размером всего в 7.5 KB, и этот размер фактически исчерпан (загрузчик должен уметь прочесть файл `/boot/loader` с файловой системы формата UFS и передать ему управление). Невозможно разместить в загрузчике внутренние структуры Vinum, чтобы он мог считать настройку Vinum и самостоятельно определить элементы загрузочного тома. Поэтому, для создания у загрузчика иллюзии, что загрузка происходит со стандартного раздела `"a"` требуются некоторые дополнительные ухищрения.

Для того, чтобы такая загрузка вообще была возможной, корневой том должен отвечать следующим требованиям:

- быть только зеркалированным (ни перемежение, ни RAID5 невозможны);

- содержать ровно один поддиск на каждом из наборов.

Заметим, что возможно (и является, вообще говоря, основной целью), чтобы корневой том содержал несколько наборов, каждый с копией корневой файловой системы. В процессе загрузки, впрочем, используется только одна из копий (на этапе поиска начального загрузчика и его конфигурационных файлов, ядра, модулей и т.п. до момента монтирования корневой файловой системы). Для обеспечения возможности загрузки поддиск каждого из наборов должен быть отображен в псевдо-раздел `"a"`. Вообще говоря, эти псевдо-разделы не обязаны находиться на одних и тех же местах дисков; тем не менее, во избежание излишней путаницы, рекомендуется создавать тома с одинаково устроенными дисками для зеркалирования.

Для создания псевдо-разделов `"a"` необходимо для каждого из дисков, содержащих копию корневого тома, проделать следующее:

1. Определить положение (смещение от начала устройства) и размер поддиска, являющегося частью корневого тома:

       # gvinum l -rv root

   Отметим, что все размеры и смещения в терминах Vinum указаны в байтах. Для получения номеров блоков, используемых в утилите `bsdlabel`, все числа надо поделить на 512.

2. Выполнить команду

       # bsdlabel -e devname

   для каждого из дисков, на котором будет расположен корневой том. `devname` будет или именем диска (например, `da0`) для дисков без таблицы слайсов, или именем слайса (`ad0s1`).

   Если на устройстве уже есть раздел `"a"` (скорее всего, это предыдущая инкарнация корневой файловой системы), он должен быть переименован (чтобы быть доступным в будущем, на всякий случай; при этом стартовый загрузчик больше не должен выбирать его по умолчанию). Не забудьте, что активный (например, смонтированный) раздел не может быть переименован, так что переименование нужно производить или загрузившись с диска ''Fixit'', или в два шага (для конфигурации с зеркалированием сначала переименовать раздел на втором диске, затем, после перезагрузки, на первом).

   Затем, адрес начала нового раздела `"a"` вычисляется как сумма начального смещения раздела Vinum и подсчитанного выше адреса поддиска внутри привода. Совместно с вычисленным размером эти значения вносятся в поля `"offset"` и `"size"` строки `"a"` bsdlabel(8); Поле `"fstype"` должно быть `4.2BSD`. Значения полей `"fsize"`, `"bsize"` и `"cpg"` желательно заполнить в соответствии с имеющейся файловой системой, хотя в обсуждаемом контексте это и не строго обязательно.

   Как можно заметить, новосозданный раздел `"a"` располагается внутри раздела Vinum. Утилита `bsdlabel` разрешает разделам пересекаться только в случае, если один из них корректно описан как имеющий тип `"vinum"`.

3. Готово! Сконструированный псевдо-раздел `"a"` создан на каждом из устройств, содержащих реплики корневого тома. Крайне важно проверить результат еще раз, выполнив команду

       # fsck -n /dev/devnamea

Следует помнить, что все файлы, содержащие загрузочную конфигурацию, должны быть построены в соответствии с новой корневой файловой системой; скорее всего, эта информация не будет соответствовать текущему положению вещей. В особенности, следует обратить внимание на содержимое файлов `/etc/fstab` и `/boot/loader.conf`.

После перезагрузки начальный загрузчик должен определить данные новой корневой файловой системы на основе Vinum и действовать в соответствии с ними. В завершение процесса инициализации ядра, после упоминания всех определившихся устройств, должно появиться сообщение вида:

    Mounting root from ufs:/dev/gvinum/root

### 20.9.3. Пример конфигурации корневой файловой системы на базе Vinum

После создания корневого тома, вывод команды `gvinum 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 дисковых блоков для утилиты `bsdlabel`. Аналогичным образом, размер тома составит 245760 512-байтных блоков. Так же устроена реплика тома на диске `/dev/da1h`.

Разметка разделов (bsdlabel) будет выглядеть примерно так:

    ...
    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"`) и смещения самого этого раздела относительно начала диска (слайса). Так мы избегаем проблем, описанных ниже (Разд. 20.9.4.3). Заметим также, что раздел `"a"` целиком размещен внутри раздела `"h"`, описывающего все данные Vinum на этом диске.

Заметим, что в описанном примере все дисковое пространство отдано Vinum. Корневого раздела, существовавшего до настройки Vinum, нет, поскольку это вновь установленный диск, предназначенный для использования исключительно в Vinum.

### 20.9.4. Проблемы и их устранение

Если что-то пошло не так, должен быть путь для восстановления доступа к информации. Далее описаны некоторые известные проблемные ситуации и способы их устранения.

#### 20.9.4.1. Загрузчик работает, но система не грузится

Если по каким-то причинам система не может завершить загрузку, загрузчик может быть прерван нажатием пробела в течение первых 10 (по умолчанию) секунд. Вы можете посмотреть переменные загрузчика (такие как `vinum.autostart`) при помощи команды `show` и изменить их содержимое командами `set` и `unset`.

Если единственной проблемой было отсутствие загруженного модуля ядра Vinum, поможет просто команда `load geom_vinum`.

Процесс загрузки должен быть продолжен командой `boot -as`. Параметры `-as` заставят ядро спросить о корневой файловой системе (параметр `-a`) и остановить процесс загрузки в однопользовательском (параметр `-s`) режиме. При этом корневая файловая система будет смонтирована в режиме "только для чтения" (read-only). В результате, даже если будет смонтирован лишь один набор из многонаборного тома, риска рассинхронизации наборов нет.

Ответом на приглашение ввести адрес корневой файловой системы может быть имя любого устройства, указывающего на файловую систему, пригодную для загрузки. При корректно построенной карте файловых систем (`/etc/fstab`) значением по умолчанию должно быть что-то вроде `ufs:/dev/gvinum/root`. Распространенной альтернативой будет, например, `ufs:da0d` (раздел, содержащий корневую файловую систему в эпоху "до Vinum"). Будьте осторожны, монтируя в качестве корневой файловой системы раздел `"a"`, ссылающийся внутрь привода Vinum. В зеркалированном томе смонтируется только часть файловой системы. Если вам потребуется изменить ее содержимое, необходимо будет также удалить и создать заново остальные наборы тома в конфигурации Vinum, иначе они будут содержать несинхронизированные данные.

#### 20.9.4.2. Работает только основной загрузчик

Если `/boot/loader` не загружается, а основной загрузчик все еще пригоден к работе (в начале процесса загрузки появляется одиночный минус в первой колонке экрана), можно попытаться прервать основной загрузчик нажатием пробела в этот момент. При этом загрузка будет остановлена на второй стадии (см. Разд. 12.3.2). Можно попробовать загрузиться с другого раздела, например, содержащего предыдущую копию корневой файловой системы (бывший раздел `"a"`, см. выше).

#### 20.9.4.3. Ничего не грузится, загрузчик падает

Это происходит, когда загрузчик на диске затерт Vinum'ом. К сожалению, Vinum оставляет лишь 4 KB в начале своего раздела до записи своих управляющих блоков. Две стадии первоначального загрузчика в совокупности с меткой диска BSD (bsdlabel) требуют 8 KB. Так что попытка создать раздел Vinum по смещению 0 диска или слайса, который должен быть загруженным, затрет загрузчик.

Что хуже, попытка разрешить описанную ситуацию посредством загрузки с диска ''Fixit'' и перезаписи начального загрузчика при помощи команды `bsdlabel -B` (как описано в Разд. 12.3.2) приведет к тому, что загрузчик затрет управляющий заголовок Vinum, и тот не сможет найти свой диск. Хотя собственно конфигурация Vinum при этом не потеряется, и все данные могут быть восстановлены посредством создания объектов на их предыдущих местах, очень сложно окончательно исправить ситуацию. Весь раздел Vinum должен быть смещен по крайней мере на 4 KB, так чтобы загрузчики и заголовок Vinum более не пересекались.

### 20.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'' всегда можно опустить).

# Глава 21. Локализация - I18N/L10N использование и настройка

Предоставил Andrey Chernov. Переписал Michael C. Wu. Перевод на русский язык: Александр Пересунко, Денис Пеплин.

## 21.1. Краткий обзор

FreeBSD - это очень распределенный проект, пользователи и контрибьюторы которого находятся в самых разных частях света. В этой главе рассказывается о возможностях интернационализации и локализации FreeBSD, которые позволяют не-англоговорящим пользователям делать свою работу. Существует много подходов в i18n реализации - как на системном уровне, так и на уровне приложений, так что, где это возможно, мы будем давать читателю ссылки на более углубленные источники документации.

После прочтения этой главы, вы будете знать:

- Как разные языки и региональные настройки кодируются в современных операционных системах.

- Как установить региональные настройки для вашей оболочки.

- Как настроить вашу консоль для отличных от английского языков.

- Как эффективно использовать X Window System с разными языками.

- Где найти дополнительную документацию по созданию i18n-совместимых приложений.

Перед чтением этой главы вам следует::

- Знать как установить дополнительные приложения сторонних разработчиков (Гл. 4).

## 21.2. Основы

### 21.2.1. Что такое I18N/L10N?

Разработчики сократили интернационализацию в термин I18N, по числу символов между первым и последним символом интернационализации. В названии L10N используется тот же принцип от ''локализации''. Совместно используемые I18N/L10N методы, протоколы и приложения позволяют пользователям использовать языки по своему выбору.

I18N приложения написаны с применением набора I18N посредством библиотек. Это позволяет разработчикам писать простые файлы и переводить отображаемые меню и надписи на разные языки. Мы настоятельно рекомендуем программистам следовать этому соглашению.

### 21.2.2. Почему я должен использовать I18N/L10N?

I18N/L10N используется всегда, когда вы хотите просмотреть, ввести или обработать данные на отличных от английского языках.

### 21.2.3. Какие языки поддерживаются в проекте I18N?

I18N и L10N не являются специфичными для FreeBSD. На текущий момент у вас есть выбор между самыми распространенными языками мира, включая, но не ограничиваясь: китайский, немецкий, японский, корейский, французский, русский, вьетнамский и др.

## 21.3. Использование локализации

При всем своем величии, I18N не специфична для FreeBSD и является, по сути, соглашением. Следование этому соглашению помогает FreeBSD, и мы это приветствуем.

Настройки локализации базируются на трех основных терминах: код языка, код страны и кодировка. Имена локализаций строятся из этих частей следующим образом:

    кодязыка_кодстраны.кодировка

### 21.3.1. Язык и код страны

Чтобы настроить FreeBSD (или любую другую UNIX-систему, поддерживающую I18N) на использование специфического языка, пользователю нужно выяснить коды этого языка и страны (коды страны сообщают приложению какой именно диалект языка этой страны нужно использовать). К тому же, веб-браузеры, SMTP/POP серверы, веб-серверы и т.п. делают свой выбор в зависимости от этого. Далее показаны примеры кодов языка/страны:

Код языка/страны | Описание
--- | ---
en_US | Английский - Соединенные Штаты
ru_RU | Русский для России
zh_TW | Традиционный китайский для Тайваня

### 21.3.2. Кодировки

Некоторые языки используют не соответствующие ASCII кодировки, которые используют для кодирования 8 бит, расширенное или многобайтовое представление символов (подробности см. в multibyte(3)). Старые приложения не распознают такие кодировки и ошибочно принимают их за управляющие символы. Новые приложения обычно распознают 8-битные символы. В зависимости от реализации, пользователю может потребоваться компиляция приложения с поддержкой расширенного или многобайтного представления символов, или же просто правильная его настройка. Чтобы иметь возможность вводить и обрабатывать символы с расширенным или многобайтным представлением, Коллекция портов FreeBSD предоставляет поддержку разных языков для различных приложений. Смотрите документацию по I18N в соответствующем порту FreeBSD.

В частности, пользователю необходимо читать прилагаемую к приложению документацию чтобы решить, как правильно его настроить или указать правильные параметры configure/Makefile/компилятору.

Следует помнить следующие вещи:

- Наборы символов, использующие один байт для кодирования символа (см. multibyte(3)), например, ISO8859-1, ISO8859-15, KOI8-R, CP437.

- Расширенные или многобайтные кодировки, например, EUC, Big5.

Вы можете посмотреть актуальный список наборов символов на сайте IANA Registry.

> Замечание: Вместо этого, FreeBSD используют X11-совместимые кодировки для локализации.

### 21.3.3. Приложения, использующие I18N

В системе Портов и Пакетов FreeBSD в название приложений, поддерживающих I18N, включена аббревиатура `I18N` для легкой их идентификации. И, тем не менее, не все приложения поддерживают требуемый язык.

### 21.3.4. Настройка локализации

Обычно достаточно экспортировать значение имени локализации в переменной `LANG` Вашей оболочки. Это можно сделать в пользовательском `~/.login_conf` файле или в инициализационном файле пользовательской оболочки (`~/.profile`, `~/.bashrc`, `~/.cshrc`). Нет надобности устанавливать отдельные параметры локализации такие как `LC_CTYPE`, `LC_CTIME`. За дополнительной информацией, пожалуйста, обращайтесь к документации FreeBSD по нужному вам языку.

Вам следует установить следующие переменные окружения в ваших конфигурационных файлах:

- `LANG` для семейства функций POSIX setlocale(3)

- `MM_CHARSET`набор символов MIME для приложений

Эти настройки включают конфигурацию оболочки пользователя, конфигурацию конкретных приложений и конфигурацию X11.

#### 21.3.4.1. Методы настройки локализации

Существует два метода настройки локализации и оба описаны ниже. Первый (рекомендуемый) заключается в задании переменных в классе логина, другой метод заключается в задании переменных окружения в инициализационном файле системной оболочки.

##### 21.3.4.1.1. Метод Login Classes

Этот метод позволяет установить переменные окружения, необходимые для установки локализации и набора символов MIME, однократно для любых оболочек, вместо того, чтобы добавлять установку этих переменных в инициализационный файл каждой оболочки. Настройка на уровне пользователя может быть сделана самим пользователем, а Настройка на уровне администратора требует привилегий суперпользователя.

###### 21.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:\
        :setenv=LC_ALL=zh_TW.Big:\
        :setenv=LC_COLLATE=zh_TW.Big5:\
        :setenv=LC_CTYPE=zh_TW.Big5:\
        :setenv=LC_MESSAGES=zh_TW.Big5:\
        :setenv=LC_MONETARY=zh_TW.Big5:\
        :setenv=LC_NUMERIC=zh_TW.Big5:\
        :setenv=LC_TIME=zh_TW.Big5:\
        :charset=big5:\
        :xmodifiers="@im=gcin": #Set gcin as the XIM Input Server

За подробностями обращайтесь к разделу Настройка на уровне администратора и login.conf(5).

###### 21.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:

После изменения описания классов логинов выполните команду:

    # cap_mkdb /etc/login.conf

для того, чтобы изменения в файле `/etc/login.conf` стали использоваться системой.

##### Изменение класса логина с помощью 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 язык

##### 21.3.4.1.2. Метод инициализационных файлов оболочки

> Замечание: Этот метод не рекомендуется, потому что он требует разных настроек для каждой оболочки. Вместо этого используйте Метод класса логина.

Чтобы добавить локализацию и набор символов 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

В зависимости от вашей оболочки (см. выше).

### 21.3.5. Настройка консоли

Для всех однобайтовых кодовых таблиц, укажите подходящие консольные шрифты в `/etc/rc.conf` для требуемого языка:

    font8x16=имя_шрифта
    font8x14=имя_шрифта
    font8x8=имя_шрифта

The `имя_шрифта` берется из каталога `/usr/share/syscons/fonts`, без указания расширения `.fnt`.

Убедитесь также в установке правильных значений keymap и screenmap для вашей однобайтовой кодовой таблицы через `sysinstall` (`/stand/sysinstall` в FreeBSD версий более ранних, чем 5.2). В 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. Если в вашем языке используется этот диапазон, переместите этот диапазон, включив следующую строку в `/etc/rc.conf`:

    mousechar_start=3

`keymap_name` берется из каталога `/usr/share/syscons/keymaps`, без расширения `.kbd`. Если вы не знаете какую таблицу использовать, запустите kbdmap(1) для тестирования таблицы без перезагрузки.

`keychange` обычно требуется для сопоставления функциональных клавиш выбранному типу терминала, поскольку последовательности функциональных клавиш не могут быть определены в раскладке клавиатуры.

Убедитесь также, что для всех записей `ttyv*` в `/etc/ttys` установлен подходящий тип терминала. Имеющиеся типы соответствуют следующим кодировкам:

Кодовая таблица | Тип терминала
--- | ---
ISO8859-1 or ISO8859-15 | `cons25l1`
ISO8859-2 | `cons25l2`
ISO8859-7 | `cons25l7`
KOI8-R | `cons25r`
KOI8-U | `cons25u`
CP437 (VGA default) | `cons25`
US-ASCII | `cons25w`

Для расширенных кодировок, а также для многобайтовых кодировок, используйте порт FreeBSD из каталога `/usr/ports/`language``. Некоторые порты выводят информацию на консоль, хотя для системы выглядят как последовательные псевдотерминалы, следовательно вы должны зарезервировать достаточное количество псевдотерминалов и для X11 и для последовательных псевдоконсолей. Вот неполный список приложений для использования этих кодировок в консоли:

Язык | Приложение
--- | ---
Традиционный китайский (BIG-5) | `chinese/big5con`
Японский | `japanese/kon2-16dot` или `japanese/mule-freewnn`
Корейский | `korean/han`

### 21.3.6. Настройка X11

Хотя X11 не является частью проекта FreeBSD, мы включили сюда некоторую информацию для пользователей FreeBSD. За детальной информацией обращайтесь к Веб сайту Xorg или к сайту того сервера X11, который вы используете.

В `~/.Xresources`, вы можете внести дополнительные I18N настройки приложений (настройки шрифтов, меню и т.п.).

#### 21.3.6.1. Отображение шрифтов

Установите сервер Xorg (`x11-servers/xorg-server`) или XFree86 (`x11-servers/XFree86-4-Server`), затем TrueType шрифты для используемого языка. После установки корректного значения locale меню, сообщения и т.д. должны появиться на соответствующем языке.

#### 21.3.6.2. Ввод не-англоязычных символов

Протокол X11 Input Method (XIM) это новый стандарт для всех клиентов X11. Все приложения X11 должны быть написаны как XIM клиенты, получающие ввод с серверов XIM Input. Существует несколько XIM серверов, доступных для различных языков.

### 21.3.7. Настройка принтера

Некоторые однобайтовые кодовые таблицы обычно поддерживаются принтерами на аппаратном уровне. Расширенные, или мультибайтовые кодовые таблицы требуют дополнительной настройки. Мы рекомендуем использование apsfilter. Кроме того, вы можете преобразовать документ в формат PostScript или PDF с помощью поддерживающих соответствующий язык программ.

### 21.3.8. Ядро и файловые системы

Файловая система FreeBSD (fast filesystem, FFS) поддерживает 8-битные символы, ее можно использовать с любой односимвольной кодовой таблицей (см. multibyte(3)), но кодовые таблицы не хранятся в файловой системе; т.е. ей ничего не известно о порядке расположения символов в кодовой таблице. Официально FFS пока не поддерживает расширенные или много символьные кодовые таблицы. Однако, для некоторых расширенных или многобайтовых кодировок есть неофициальные патчи, включающие их поддержку в FFS. Это всего лишь временные не переносимые решения или исправления кода и мы решили не включать их в дерево исходных текстов. Обращайтесь к сайтам по соответствующим языкам за дальнейшей информацией и патчами.

Файловая система MS-DOS в FreeBSD может быть настроена для поддержки перекодировки между MS-DOS, кодовыми таблицами Unicode и выбранной кодовой таблицей FreeBSD. Обращайтесь к mount_msdosfs(8) за подробностями.

## 21.4. Компиляция I18N программ

Многие порты FreeBSD были созданы с поддержкой I18N. Некоторые из них помечены символами -I18N в имени порта. Эти и многие другие программы имеют встроенную поддержку I18N и не нуждаются в специальной настройке.

Однако, некоторые приложения, такие как MySQL, требуют указания кодировки в `Makefile`. Это обычно делается правкой `Makefile` или передачей параметров configure при сборке из исходных текстов.

## 21.5. Локализация FreeBSD для поддержки определенных языков

### 21.5.1. Русский язык (кодировка KOI8-R)

Первоначально предоставил Andrey Chernov.

За дополнительной информацией о кодировке KOI8-R, обращайтесь к странице KOI8-R References (Russian Net Character Set).

#### 21.5.1.1. Настройка локализации

Поместите в `~/.login_conf` следующие строки:

    me:My Account:\
        :charset=KOI8-R:\
        :lang=ru_RU.KOI8-R:

Обратитесь к вышеизложенному материалу этой главы за соответствующей информацией.

#### 21.5.1.2. Настройка консоли

- Добавьте следующую строку в `/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` в качестве типа терминала.

Обратитесь к вышеизложенному материалу этой главы за примерами настройки консоли.

#### 21.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) за подробным описанием.

#### 21.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_msdosfs(8).

#### 21.5.1.5. Настройка X11

1. Выполните сначала не-X настройку локализации.

2. Если вы используете Xorg, установите пакет `x11-fonts/xorg-fonts-cyrillic`.

   Проверьте раздел `"Files"` в файле `/etc/X11/xorg.conf`. Следующие строки должны быть добавлены перед всеми записями `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"` файла `xorg.conf`:

       Option "XkbLayout"   "us,ru"
       Option "XkbOptions"  "grp:toggle"

   Убедитесь, что `XkbDisable` отключен (закомментирован) в этом разделе.

   Для `grp:caps_toggle` переключателем RUS/LAT служит Right Alt, а для `grp:ctrl_shift_toggle` Ctrl+Shift. Прежняя функция CapsLock все еще доступна в комбинации Shift+CapsLock (только в режиме LAT). При установке `grp:toggle` переключателем RUS/LAT будет правая клавиша Alt. Режим `grp:caps_toggle` по неустановленным причинам не работает в Xorg.

   Если на вашей клавиатуре есть клавиши ''Windows'', и некоторые не-алфавитные клавиши работают неправильно в режиме RUS, добавьте следующую строку в файл `xorg.conf`:

       Option "XkbVariant" ",winkeys"

   > Замечание: Ввод на русском языке может может не работать с нелокализованными приложениями.

> Замечание: Минимально локализованные приложения должны вызывать функцию `XtSetLanguageProc (NULL, NULL, NULL);` в начале программы.

> Обратитесь к KOI8-R for X Window за дальнейшими инструкциями по локализации приложений X11.

### 21.5.2. Локализация на традиционном китайском для Тайваня

У проекта FreeBSD-Taiwan есть Chinese HOWTO для FreeBSD по адресу http://netlab.cse.yzu.edu.tw/~statue/freebsd/zh-tut/, в котором используются многие порты на китайском. На данный момент редактором `FreeBSD Chinese HOWTO` является Shen Chuan-Hsing `<statue@freebsd.sinica.edu.tw>`.

Chuan-Hsing Shen `<statue@freebsd.sinica.edu.tw>` создал Chinese FreeBSD Collection (CFC), используя FreeBSD-Taiwan `zh-L10N-tut`. Пакеты и скрипты доступны по адресу ftp://freebsd.csie.nctu.edu.tw/pub/taiwan/CFC/.

### 21.5.3. Локализация на немецкий язык (для всех ISO 8859-1 языков)

Slaven Rezic `<eserte@cs.tu-berlin.de>` написал учебник по использованию umlauts в FreeBSD. Учебник написан на немецком и доступен по адресу http://user.cs.tu-berlin.de/~eserte/FreeBSD/doc/umlaute/umlaute.html.

### 21.5.4. Локализация на японский и корейский языки

За информацией по японской локализации, обратитесь к http://www.jp.FreeBSD.org/, а за информацией о корейской локализацией к http://www.kr.FreeBSD.org/.

### 21.5.5. Не-англоязычная документация FreeBSD

Отдельные контрибьюторы FreeBSD перевели части документации FreeBSD на другие языки. Эти переводы доступны на основном сайте или из каталога `/usr/share/doc`.

# Глава 22. На переднем крае разработок

Реструктурирование, реорганизацию и частичное обновление выполнил Jim Mock. Оригинальный текст написал Jordan Hubbard, Poul-Henning Kamp, John Polstra, Nik Clayton. Перевод на русский язык: Андрей Захватов.

## 22.1. Краткий обзор

Между релизами над FreeBSD ведется постоянная работа. Для тех, кто хочет быть на переднем крае, есть несколько простых методов для поддержания своей системы в соответствии с последними разработками. Будьте осторожны -- передний край не для всех! Эта глава поможет вам решить, хотите ли вы отслеживать систему в процессе работы над ней или останетесь верным одному из выпущенных релизов.

После чтения этой главы вы будете знать:

- Разницу между двумя ветвями разработки: FreeBSD-STABLE и FreeBSD-CURRENT.

- Как поддерживать вашу систему в актуальном состоянии при помощи CVSup, CVS или CTM.

- Как перестраивать и переустанавливать базовую систему полностью при помощи `make buildworld` (и других).

Перед чтением этой главы вы должны:

- Полностью настроить своё подключение к сети (Гл. 28).

- Знать, как устанавливать дополнительное программное обеспечение других разработчиков (Гл. 4).

## 22.2. FreeBSD-CURRENT против FreeBSD-STABLE

Во FreeBSD имеется две ветки разработки: FreeBSD-CURRENT и FreeBSD-STABLE. Этот раздел описывает каждую из них и объясняет, как синхронизировать вашу систему с любой из веток. Сначала будет обсуждаться ветка FreeBSD-CURRENT, затем FreeBSD-STABLE.

### 22.2.1. Как следовать текущим разработкам во FreeBSD

Пока вы читаете этот текст, помните, что FreeBSD-CURRENT является ''передовым краем'' работ над FreeBSD. Предполагается, что пользователи FreeBSD-CURRENT технически более грамотны и могут решать проблемы с системой самостоятельно. Если вы являетесь во FreeBSD новичком, вам лучше сначала дважды подумать, прежде чем её устанавливать.

#### 22.2.1.1. Что такое FreeBSD-CURRENT?

FreeBSD-CURRENT является последними рабочими версиями исходных текстов FreeBSD. Сюда включаются неоконченные работы, экспериментальные изменения и промежуточные механизмы, которые могут присутствовать, а могут и отсутствовать в следующем официальном релизе программного обеспечения. Хотя многие из разработчиков FreeBSD выполняют компиляцию из исходных текстов FreeBSD-CURRENT ежедневно, случаются периоды, когда исходные тексты заведомо не могут быть откомпилированы. Такие проблемы обычно решаются так быстро, как это возможно, но всё-таки момент, когда вы загрузили исходные тексты FreeBSD-CURRENT, может повлиять на то, содержат они мину замедленного действия или очень нужную функциональность!

#### 22.2.1.2. Кому нужна FreeBSD-CURRENT?

FreeBSD-CURRENT предназначается трём основным заинтересованным группам:

1. Участники проекта FreeBSD, активно работающие над некоторой частью дерева исходных текстов и для кого работа в ''current'' является абсолютной необходимостью.

2. Участники проект FreeBSD, которые являются активными тестерами. Они тратят свое время на исправление проблем для того, чтобы FreeBSD-CURRENT оставалась, насколько это возможно, нормально работающей системой. Есть также люди, которые вносят важные предложения по изменениям и общему направлению развития FreeBSD и присылают свои патчи, реализующие эти изменения.

3. Те, кто просто хотят быть в курсе всех изменений или используют текущие исходные тексты для ознакомительных целей (к примеру, для чтения, но не для использования). Такие люди также иногда высказывают замечания или предоставляют код.

#### 22.2.1.3. Чем FreeBSD-CURRENT не является?

1. Быстрым способом получить предварительную версию, в случае, если вы услышали, что здесь появилась некая крутая возможность, и вы хотите быть первым в вашем микрорайоне, у кого она есть. Здесь быть первым из тех, кто имеет это программное обеспечение означает также быть первым из тех, кто столкнулся с ошибками в нём.

2. Быстрым способом получения исправлений. Любая версия FreeBSD-CURRENT является в равной мере как источником исправлений существующих ошибок, так и источником появления новых.

3. ''Официально поддерживаемой'' каким бы то ни было способом. Мы прилагаем все усилия, чтобы помочь тем, кто изначально принадлежит одной из трех ''признанных'' групп пользователей FreeBSD-CURRENT, но у нас просто нет времени на техническую поддержку. Это не потому, что мы гадкие и злые люди, которые ни за что не будут помогать другим (если бы это было так, мы бы не создали FreeBSD). Мы просто не в силах отвечать на сотни сообщений в день и работать над FreeBSD! Если бы стоял выбор между тем, отвечать ли на множество вопросов об экспериментально коде или продолжать работу над совершенствованием FreeBSD, большинство разработчиков проголосовало бы за последнее.

#### 22.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, мы хотим знать, что вы думаете о ней, особенно если у вас есть соображения по ее улучшению или исправлению ошибок. Пожелания, к которым прилагается код, всегда принимаются с большим энтузиазмом!

### 22.2.2. Работа с веткой stable во FreeBSD

#### 22.2.2.1. Что такое FreeBSD-STABLE?

FreeBSD-STABLE является нашей веткой разработки, из которой делаются основные релизы. Изменения в этой ветке происходят с разной скоростью, и при этом предполагается, что сначала они были выполнены для FreeBSD-CURRENT в целях тестирования. Однако эта ветка остаётся веткой для разработки, а это значит, что в любой момент времени исходные тексты FreeBSD-STABLE могут оказаться неприменимы для некоторой задачи. Это просто ещё одна ветка при разработке, а не ресурс для конечных пользователей.

#### 22.2.2.2. Кому нужна FreeBSD-STABLE?

Если вы заинтересованы в отслеживании процесса разработки FreeBSD или хотите принять в нём участие, особенно в той мере, насколько это касается выпуска следующего релиза FreeBSD с ''точкой'', то вам необходимо отслеживать FreeBSD-STABLE.

Хотя правда то, что исправления, касающиеся безопасности, также делаются и в ветке FreeBSD-STABLE, вам не нужно для этого отслеживать FreeBSD-STABLE. Каждый бюллетень по безопасности FreeBSD описывает, как решить проблему для тех релизов, которых он касается [13] , а отслеживание ветки разработки в полном объёме только ради исправлений пробелов в безопасности приводит к появлению большого количества дополнительных ненужных изменений.

Хотя мы прилагаем все усилия, чтобы ветка FreeBSD-STABLE всегда компилировалась и работала, этого нельзя гарантировать. Кроме того, несмотря на то, что перед включением в FreeBSD-STABLE, код разрабатывается в FreeBSD-CURRENT, гораздо большее количество людей работают с FreeBSD-STABLE, чем с FreeBSD-CURRENT. Поэтому неудивительно, что в FreeBSD-STABLE иногда обнаруживаются ошибки и всплывают непредвиденные ситуации, которые не проявляли себя в FreeBSD-CURRENT.

По этим причинам мы не рекомендуем слепо отслеживать FreeBSD-STABLE, и, что особенно важно, вы не должны обновлять какие-либо сервера, находящиеся в активной эксплуатации, до FreeBSD-STABLE без предварительного тщательного тестирования кода в вашей среде разработки.

Если у вас нет возможности сделать это, то мы рекомендуем работать с самой последним релизом FreeBSD и использовать механизм обновления бинарных файлов для перехода от релиза к релизу.

#### 22.2.2.3. Использование FreeBSD-STABLE

1. Подпишитесь на список рассылки freebsd-stable. Это позволит вам узнавать о зависимостях процесса компиляции, которые могут появиться в ветке FreeBSD-STABLE или любых других проблемах, требующих особого внимания. В этом списке рассылки разработчики также делают объявления о спорных исправлениях или добавлениях, давая пользователям возможность высказать свое мнение о возможных тонких моментах.

   Список рассылки cvs-all позволит вам для каждого изменения увидеть соответствующую запись в журнале коммитов, а они порой содержат относящуюся к делу информацию о возможных побочных эффектах.

   Чтобы подключиться к этим и другим доступным спискам рассылки, перейдите по ссылке http://lists.FreeBSD.org/mailman/listinfo и щёлкните на списке, к которому вы хотите подключиться. Инструкции по дальнейшим действиям размещены там же.

2. Если вы собираетесь установить новую систему, и хотите, чтобы она соответствовала ежемесячным стандартным сборкам ветви FreeBSD-STABLE, обратитесь к странице снэпшотов . Либо вы можете установить самый последний релиз 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` позволит вам быть в курсе всех процедур, которые иногда бывают необходимы при переходе к следующему релизу.

## 22.3. Синхронизация ваших исходных текстов

Имеются различные способы использования Интернет (или почтового) подключения для того, чтобы иметь самые последние версии исходных текстов любого проекта FreeBSD, в зависимости от того, чем вы интересуетесь. Основной сервис, который мы предлагаем, это Анонимный CVS, CVSup и CTM.

> Внимание: Хотя имеется возможностью обновлять только часть дерева исходных текстов, процедурой, которую мы настоятельно советуем, является обновление всего дерева и перекомпиляция пользовательских программ (то есть тех, которые работают в пространстве имен пользователя, например те, что находятся в каталогах `/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, просто удалить повреждённую часть и пересинхронизироваться.

## 22.4. Пересборка ''world''

После того, как вы синхронизировали ваше локальное дерево исходных текстов с некоторой версией FreeBSD (FreeBSD-STABLE, FreeBSD-CURRENT и так далее), то можете использовать эти исходные тексты для перестроения системы.

> Создайте резервную копию: Невозможно переоценить важность создания резервной копии вашей системы до того, как вы будете это делать. Хотя перестроение системы (пока вы следуете этим инструкциям) является простой задачей, вы всегда можете допустить ошибку, или ошибка может оказаться в исходных текстах, что может привести к тому, что система перестанет загружаться.

> Обязательно сделайте резервную копию. И держите под рукой аварийную (fixit) дискету или загрузочный компакт диск. Может быть, вам никогда не приходилось ими пользоваться, но, постучав по дереву, всегда лучше подготовиться, чем потом сожалеть.

> Подпишитесь на соответствующий список рассылки: Ветки FreeBSD-STABLE и FreeBSD-CURRENT кода по природе своей являются изменяющимися. В разработке FreeBSD участвуют люди, и время от времени случаются ошибки.

> Иногда эти ошибки достаточно безобидны и приводят к выводу нового диагностического сообщения. Бывает, что изменение оказывается катастрофическим, и система не может загрузиться или разрушаются файловые системы (или что-нибудь ещё хуже).

> Если возникают подобные проблемы, в соответствующем списке рассылки публикуется сообщение ''heads up'', в котором описывается природа проблемы и затрагиваемые системы. Когда проблема решается, публикуется сообщение ''all clear''.

> Если вы пытаетесь отслеживать FreeBSD-STABLE или FreeBSD-CURRENT и не читаете Список рассылки, посвящённый обсуждению FreeBSD-STABLE или Список рассылки, посвящённый обсуждению FreeBSD-CURRENT соответственно, то вы напрашиваетесь на неприятности.

> Не используйте `make world`: Множество старой документации рекомендует использование `make world`. При этом пропускаются многие важные шаги, и использование этой команды возможно лишь в том случае, если вы точно знаете, что делаете. Почти во всех обстоятельствах `make world` это неправильный способ, вместо него необходимо использовать описанную здесь процедуру.

### 22.4.1. Канонический способ обновления вашей системы

Для обновления вашей системы вы должны прочесть `/usr/src/UPDATING` для выяснения шагов, которые нужно предпринять перед построением системы из вашей версии исходных текстов, а затем выполнить следующую последовательность действий:

    # make buildworld
    # make buildkernel
    # make installkernel
    # reboot

> Замечание: Есть несколько редких случаев, когда перед выполнением `buildworld` необходимо дополнительно запустить `mergemaster -p`. Они описаны в файле `UPDATING`. В общем случае вы можете без ущерба пропустить этот шаг, если не выполняете обновление с одной большой версии FreeBSD на другую.

После успешного выполнения `installkernel` вам необходимо загрузить систему в однопользовательском режиме (то есть посредством команды `boot -s`, заданной в приглашении загрузчика). После этого выполните:

    # mergemaster -p
    # make installworld
    # mergemaster
    # reboot

> Прочтите более полное описание: Описанная выше последовательность является только краткой выжимкой для того, чтобы помочь вам начать. Вы должны всё же прочесть последующие разделы для полного понимания каждого шага, особенно если собираетесь использовать собственную конфигурацию ядра.

### 22.4.2. Прочтите `/usr/src/UPDATING`

Перед тем, как делать что-либо, прочтите `/usr/src/UPDATING` (или соответствующий файл в вашей копии исходных текстов). В этом файле содержится важная информация о проблемах, с которыми вы можете столкнуться, или указан порядок, в котором вы должны запускать определенные команды. Если в файле `UPDATING` написано нечто, противоречащее тому, что вы здесь читаете, то нужно следовать указаниям в `UPDATING`.

> Важно: Чтение `UPDATING` не заменит подписки на соответствующий список рассылки, как это и описано выше. Эти два условия являются дополняющими, а не взаимоисключающими друг друга.

### 22.4.3. Проверьте содержимое `/etc/make.conf`

Просмотрите файлы `/usr/share/examples/etc/make.conf` и `/etc/make.conf`. Первый содержит некоторые предопределенные по умолчанию значения - большинство из них закомментировано. Чтобы воспользоваться ими при перестроении системы из исходных текстов, добавьте их в файл `/etc/make.conf`. Имейте в виду, что все, добавляемое вами в `/etc/make.conf`, используется также каждый раз при запуске команды `make`, так что полезно задать здесь значения, подходящие вашей системе.

Вероятно стоит скопировать строки `CFLAGS` и `NO_PROFILE`, расположенные в `/usr/share/examples/etc/make.conf`, в файл `/etc/make.conf` и раскомментировать их.

Посмотрите на другие определения (`COPTFLAGS`, `NOPORTDOCS` и так далее) и решите, нужны ли они вам.

### 22.4.4. Обновите файлы в каталоге `/etc`

Каталог `/etc` содержит значительную часть информации о конфигурации вашей системы, а также скрипты, работающие в начале работы системы. Некоторые из этих скриптов меняются от версии к версии FreeBSD.

Некоторые конфигурационные файлы также используются в ежедневной работе системы. В частности, файл `/etc/group`.

Случалось, что установочная часть `make installworld` ожидала существования определённых имен пользователей или групп. При обновлении существует вероятность, что эти пользователи или группы не существуют. Это вызывает проблемы при обновлении. В некоторых случаях `make buildworld` проверяет наличие этих пользователей или групп.

Примером этого является добавление пользователя `smmsp`. Пользователи столкнулись с прерыванием процесса установки, когда mtree(8) пыталась создать `/var/spool/clientmqueue`.

Выходом является запуск утилиты mergemaster(8) в режиме, предваряющем построение системы, задаваемым опцией `-p`. Она будет сравнивать только те файлы, которые необходимы для успешного выполнения целей `buildworld` или `installworld`. Если ваша старая версия утилиты `mergemaster` не поддерживает опцию `-p`, воспользуйтесь новой версией из дерева исходных текстов при первом запуске:

    # cd /usr/src/usr.sbin/mergemaster
    # ./mergemaster.sh -p

> Подсказка: Если вы параноик, можете поискать файлы, владельцем которых является та группа, которую вы переименовываете или удаляете:

>     # find / -group GID -print

> выдаст список всех файлов, владельцем которых является группа `GID` (задаваемая именем или численным значением ID).

### 22.4.5. Перейдите в однопользовательский режим

Вам может понадобиться откомпилировать систему в однопользовательском режиме. Кроме обычного выигрыша в скорости процесса, переустановка системы затрагивает много важных системных файлов, все стандартные выполнимые файлы системы, библиотеки, include-файлы и так далее. Изменение их на работающей системе (в частности, в которой активно работают пользователи) может привести к неприятностям.

Другим способом является компиляция системы в многопользовательском режиме с последующим переходом в однопользовательский режим для выполнения установки. Если вы хотите поступить именно так, просто следуйте инструкциям до момента окончания построения. Вы можете отложить переход в однопользовательский режим до завершения целей `installkernel` или `installworld`.

Как администратор, вы можете выполнить:

    # shutdown now

на работающей системе, что переведет ее в однопользовательский режим.

Либо вы можете выполнить перезагрузку и в приглашении загрузчика выбрать пункт ''single user''. После этого система загрузится в однопользовательском режиме. В приглашении командного процессора вы должны запустить:

    # fsck -p
    # mount -u /
    # mount -a -t ufs
    # swapon -a

Эти команды выполняют проверку файловых систем, повторно монтируют `/` в режиме чтения/записи, монтируют все остальные файловые системы UFS, перечисленные в файле `/etc/fstab` и включат подкачку.

> Замечание: Если часы в вашей CMOS настроены на местное время, а не на GMT (это имеет место, если команда date(1) выдаёт неправильные время и зону), то вам может понадобиться запустить следующую команду:

>     # adjkerntz -i

> Это обеспечит корректную настройку местного часового пояса -- без этого впоследствии вы можете столкнуться с некоторыми проблемами.

### 22.4.6. Удалите `/usr/obj`

При перестроении частей системы они помещаются в каталоги, которые (по умолчанию) находятся в `/usr/obj`. Структура повторяет структуру `/usr/src`.

Вы можете ускорить выполнение процесса `make buildworld` и, возможно, избавить себя от некоторой головной боли, связанной с зависимостями, удалив этот каталог.

На некоторых файлах из `/usr/obj` могут быть установлены специальные флаги (обратитесь к chflags(1) за дополнительной информацией), которые сначала должны быть сняты.

    # cd /usr/obj
    # chflags -R noschg *
    # rm -rf *

### 22.4.7. Перекомпилируйте исходные тексты базовой системы

#### 22.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`.

#### 22.4.7.2. Компиляция базовых компонентов системы

Вы должны находиться в каталоге `/usr/src`:

    # cd /usr/src

(если, конечно, ваш исходный код не находится в другом месте, в случае чего вам нужно перейти в соответствующий каталог).

Для полного перестроения системы используется команда make(1). Эта команда читает инструкции из файла `Makefile`, описывающего, как должны быть перестроены программы, которые составляют систему FreeBSD, в каком порядке они должны быть построены и так далее.

Общий формат командной строки, которую вы будет набирать, таков:

    # make -x -DVARIABLE target

В этом примере `-`x`` является параметром, который вы передаете в make(1). Обратитесь к справочной странице программы make(1), которая содержит список возможных параметров.

`-D`VARIABLE`` передает переменную в `Makefile`. Поведение `Makefile` определяется этими переменными. Это те же самые переменные, которые задаются в `/etc/make.conf`, и это -- еще один способ их задания.

    # make -DNO_PROFILE=true target

является другим способом указания того, что библиотеки для профилирования строить не нужно, и соответствует строке

    NO_PROFILE=    true    # Обход построения библиотек для профилирования

в файле `/etc/make.conf`.

`target` указывает программе make(1) на то, что вы хотите сделать. Каждый файл `Makefile` определяет некоторое количество различных ''целей'', и ваш выбор цели определяет то, что будет делаться.

Некоторые цели, перечисленные в файле `Makefile`, не предназначены для вызова. Просто они используются в процессе построения для разбиения его на этапы.

В большинстве случаев вам не нужно передавать никаких параметров в make(1), так что ваша команда будет выглядеть примерно так:

    # make target

Замените `target` на одну или более из опций сборки. Первой из них всегда должна быть опция `buildworld`.

Как указывают на это названия, `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 и посмотрите, как это отразится на скорости работы.

#### 22.4.7.3. Время на построение

На время компиляции влияет множество факторов, но на данный момент современные машины справляются с построением дерева FreeBSD-STABLE примерно за 1-2 часа без дополнительных хитростей и убыстряющих процесс уловок. Дерево FreeBSD-CURRENT строится несколько дольше.

### 22.4.8. Откомпилируйте и установите новое ядро

Чтобы получить полную отдачу от вашей новой системы, вы должны перекомпилировать ядро. Это практически необходимость, так как отдельные структуры в памяти могут меняться, и программы типа ps(1) и top(1) не будут работать, пока версии ядра и исходных текстов системы не будут совпадать.

Самым простым и надежным способом сделать это является компиляция и установка ядра на основе `GENERIC`. Хотя в `GENERIC` могут оказаться не все необходимые для работы вашей системы устройства, в нем имеется все необходимое для перезагрузки вашей системы обратно в однопользовательский режим. Это является хорошей проверкой на правильность работы новой системы. После загрузки с ядром `GENERIC` и проверки работоспособности системы вы можете построить новое ядро на основе вашего обычного конфигурационного файла ядра.

В FreeBSD важно выполнить buildworld перед сборкой нового ядра.

> Замечание: Если вы хотите построить собственное ядро и уже подготовили файл конфигурации, просто используйте `KERNCONF=`MYKERNEL`` следующим образом:

>     # cd /usr/src
>     # make buildkernel KERNCONF=MYKERNEL
>     # make installkernel KERNCONF=MYKERNEL

Заметьте, что, если вы установили `kern.securelevel` в значение, превышающее 1, и установили флаг `noschg` или подобный на бинарный файл ядра, то вы будете вынуждены перейти в однопользовательский режим для того, чтобы воспользоваться `installkernel`. В противном случае вы должны выполнять эти команды без проблем. Обратитесь к справочным страницам об init(8) для получения подробной информации о `kern.securelevel` и chflags(1) для получения информации о различных флагах файлов.

### 22.4.9. Перезагрузитесь в однопользовательский режим

Для проверки работоспособности ядра вы должны перезагрузить систему и перейти в однопользовательский режим. Сделайте это, следуя указаниям в Разд. 22.4.5.

### 22.4.10. Установите новые версии системных программ

Если вы компилировали достаточно свежую версию FreeBSD, в которой имеется команда `make buildworld`, то для установки новых версий программ вы должны теперь выполнить команду `installworld`.

Запустите

    # cd /usr/src
    # make installworld

> Замечание: Если при выполнении команды `make buildworld` вы задавали значения каких-либо переменных, то при выполнении `make installworld` вы должны задать те же самые переменные. Это не всегда так для остальных параметров; например, при выполнении `installworld` никогда не должен использоваться параметр `-j`.

> Например, если вы выполняли команду:

>     # make -DNO_PROFILE buildworld

> то результат её выполнения должен устанавливаться командой

>     # make -DNO_PROFILE installworld

> В противном случае будет делаться попытка установить библиотеки для профилирования, которые не компилировались на этапе выполнения команды `make buildworld`.

### 22.4.11. Обновите файлы, не обновленные по команде `make installworld`

При перестроении системы не будут обновляться некоторые каталоги (в частности, `/etc`, `/var` и `/usr`) с конфигурационными файлами.

Самым простым способом обновить такие файлы является запуск утилиты mergemaster(8), хотя можно сделать это и вручную, если вам так больше нравится. Вне зависимости от выбранного вами способа обязательно сделайте резервную копию каталога `/etc` на случай, если произойдёт что-то непредвиденное.

#### 22.4.11.1. `mergemaster`

Текст предоставил Tom Rhodes.

Утилита mergemaster(8) является скриптом для оболочки Боурна, которая поможет вам в определении разницы между вашими конфигурационными файлами в каталоге `/etc` и конфигурационными файлами из дерева исходных текстов `/usr/src/etc`. Это является рекомендуемым способом синхронизации системных конфигурационных файлов с теми, что размещены в дереве исходных текстов.

Для начала просто наберите `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) может запросить вас относительно перестроения файла паролей и завершит запросом на удаление оставшихся временных файлов.

#### 22.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"`

### 22.4.12. Перезагрузка

Теперь вы сделали всё. После того, как вы проверили, что всё на месте, можете перегрузить систему. Простая команда shutdown(8) должна это сделать:

    # shutdown -r now

### 22.4.13. Завершение

Теперь у вас имеется успешно обновлённая система FreeBSD. Поздравляем!

Если что-то работает неправильно, можно с лёгкостью перестроить конкретную часть системы. Например, если вы случайно удалили файл `/etc/magic` в процессе обновления или переноса `/etc`, то команда file(1) перестанет работать. В таком случае это можно исправить вот так:

    # cd /usr/src/usr.bin/file
    # make all install

### 22.4.14. Вопросы?

22.4.14.1. Нужно ли полностью перестраивать систему при каждом изменении?
22.4.14.2. Компиляция прерывается с большим количеством ошибок по сигналу 11 (или с другим номером сигнала). Что случилось?
22.4.14.3. Могу ли я удалить каталог `/usr/obj` после окончания?
22.4.14.4. Могут ли быть продолжены прерванные процессы построения?
22.4.14.5. Как ускорить процесс построения системы?
22.4.14.6. Что мне делать, если что-то пошло не так?

22.4.14.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.

22.4.14.2. Компиляция прерывается с большим количеством ошибок по сигналу 11 (или с другим номером сигнала). Что случилось?

Как правило, это говорит о проблемах с оборудованием. (Пере)построение системы является эффективным стресс-тестом для вашего оборудования и частенько выявляет проблемы с памятью. Обычно это проявляется в виде неожиданных сбоев компилятора или получения странных программных сигналов.

Явным указателем на это является то, что при перезапуске процедуры построения она прекращается в различные моменты времени.

В этом случае вы мало что можете сделать, разве что попробовать заменить комплектующие вашей машины для определения сбоящей компоненты.

22.4.14.3. Могу ли я удалить каталог `/usr/obj` после окончания?

Если отвечать коротко, то да.

Каталог `/usr/obj` содержит все объектные файлы, которые создаются во время фазы компиляции. Обычно одним из первых шагов в процессе `make buildworld` является удаление этого каталога. В этом случае сохранение `/usr/obj` после окончания имеет мало смысла; вдобавок, он будет занимать большой объём дискового пространства (на данный момент около 340 МБ).

Однако если вы точно знаете, что делаете, то можете заставить процедуру `make buildworld` пропустить этот шаг. Это позволит последующие построения выполняться гораздо быстрее, так как большинство исходных текстов не нужно будет перекомпилировать. Оборотной стороной медали этого подхода является вероятность появления некоторых проблем с зависимостями, что может привести к прерыванию построения по странным причинам. Это частенько вызывает шум в списках рассылки FreeBSD, когда кто-либо жалуется на прерывание процесса построения, не обращая внимания на то, что он пытается срезать углы на повороте.

22.4.14.4. Могут ли быть продолжены прерванные процессы построения?

Это зависит от того, насколько далеко зашел процесс построения перед тем, как вы обнаружили проблему.

В общем случае (и это несложное и быстрое правило) процесс `make buildworld` строит новые копии необходимых инструментальных средств (таких, как gcc(1) и make(1)) и системные библиотеки. Затем эти средства и библиотеки устанавливаются. Новые инструментальные средства и библиотеки затем используются для перестроения самих себя, и повторно устанавливаются. Система в целом (теперь включая обычные пользовательские программы, такие, как ls(1) или grep(1)) теперь перестраивается с новыми системными файлами.

Если вы на последнем шаге, и вы знаете это (потому что просматривали вывод, который сохраняете), то вы можете (достаточно безболезненно) выполнить команду:

    ... исправление проблемы ...
    # cd /usr/src
    # make -DNO_CLEAN all

При этом результат предыдущего запуска `make buildworld` откатываться не будет.

Если вы видите сообщение:

    --------------------------------------------------------------
    Building everything..
    --------------------------------------------------------------

в выводе команды `make buildworld`, то делать так достаточно безопасно.

Если этого сообщения не было, или вы в этом не уверены, то всегда лучше обезопасить себя, и начать построение с самого начала.

22.4.14.5. Как ускорить процесс построения системы?

- Работайте в однопользовательском режиме.

- Разместите каталоги `/usr/src` и `/usr/obj` в отдельных файловых системах, располагающихся на разных дисках. Если это возможно, то разместите эти диски на разных дисковых контроллерах.

- Ещё лучше разместить эти файловые системы на нескольких дисках при помощи устройства ccd(4) (драйвер объединённых дисков).

- Выключите генерацию профилирующего кода (установив ''NO_PROFILE=true'' в файле `/etc/make.conf`). Вам это скорее всего никогда не понадобится.

- Также в `/etc/make.conf` установите значение `CFLAGS` во что-то типа `-O -pipe`. Оптимизация `-O2` выполняется гораздо медленнее, а разница между `-O` и `-O2` обычно несущественна. `-pipe` позволяет компилятору использовать для связи вместо временных файлов программные каналы, что уменьшает обращение к диску (за счет оперативной памяти).

- Передайте утилите make(1) параметр `-j`n`` для запуска параллельно нескольких процессов. Обычно это помогает вне зависимости от того, сколько процессоров установлено в вашей машине.

- Файловая система, на которой располагается каталог `/usr/src`, может быть смонтирована (или перемонтирована) с опцией `noatime`. При этом запись на диск информации о времени последнего доступа к файлам будет отключена. Скорее всего, вам эта информация и не нужна.

      # mount -u -o noatime /usr/src

  > Внимание: В примере предполагается, что `/usr/src` располагается на собственной файловой системе. Если это не так (то есть он является частью, скажем, `/usr`), то вам нужно использовать точку монтирования той файловой системы, а не `/usr/src`.

- Файловая система, на которой располагается `/usr/obj`, может быть смонтирована (или перемонтирована) с параметром `async`. Это приведёт к тому, что операции записи на диск будут выполняться асинхронно. Другими словами, запись будет завершаться немедленно, но данные записываться на диск несколькими секундами позже. Это позволит объединять операции записи и приведёт к значительному приросту производительности.

  > Внимание: Имейте в виду, что эта опция делает вашу файловую систему менее устойчивой. С этой опцией имеется больше шансов, что при перезагрузке машины после неожиданного сбоя при пропадании напряжения файловая система окажется в невосстановимом состоянии.

  > Если каталог `/usr/obj` -- это все, что есть в этой файловой системе, то это не проблема. Если на той же самой файловой системе имеются какие-то важные данные, то проверьте давность ваших резервных копий перед включением этой опции.

      # mount -u -o async /usr/obj

  > Внимание: Как и раньше, если каталог `/usr/obj` располагается не на собственной файловой системе, то в примере замените его на имя соответствующей точки монтирования.

22.4.14.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-questions. Будьте готовы ответить на другие вопросы о конфигурации вашей системы!

## 22.5. Отслеживание исходных текстов для нескольких машин

Текст предоставил Mike Meyer.

Если у вас множество машин, для которых вы хотите отслеживать одно и то же дерево исходных текстов, то загрузка кода и перестроение системы полностью выглядит как ненужная трата ресурсов: дискового пространства, пропускной способности сети и процессорного времени. Так оно и есть, и решением является выделение одной машины, которая выполняет основной объём работы, в то время как остальные используют результаты работы посредством NFS. В этом разделе описывается именно этот метод.

### 22.5.1. Подготовка

Первым делом определите набор машин, на которых выполняется один и тот же набор бинарных программ, и мы будем называть его набором для построения. Каждая машина может иметь собственное уникальное ядро, но они будут работать с одними и теми же программами пользователя. Из этого набора выберите машину, которая будет являться машиной для построения. Она станет машиной, на которой будут строиться ядро и всё окружение. В идеальном случае с достаточно незагруженным CPU для выполнения команд `make buildworld` и `make buildkernel`. Вам также потребуется выбрать машину, которая будет тестовой для проверки обновлений программного обеспечения прежде, чем оно будет запущено в промышленную эксплуатацию. Это должна быть машина, которая может быть в нерабочем состоянии достаточно долго. Это может быть машина для построения, но не обязательно.

Все машины в этом наборе для построения должны монтировать каталоги `/usr/obj` и `/usr/src` с одной и той же машины и в одну и ту же точку монтирования. В идеальном случае они располагаются на разных дисках машины построения, но они могут также монтироваться по NFS на этой машине. Если у вас имеется несколько наборов для построения, то каталог `/usr/src` должен быть на машине построения, а по NFS он должен быть смонтирован на остальных.

Наконец, удостоверьтесь в том, что файл `/etc/make.conf` на всех машинах набора для построения соответствует машине построения. Это означает, что машина построения должна строить все части основного системного набора, которые будут устанавливаться на каждой машине из набора для построения. Кроме того, у каждой машины построения должно быть задано имя ядра посредством переменной `KERNCONF` в файле `/etc/make.conf`, а машина построения должна перечислить их все в переменной `KERNCONF`, причём первым должно быть имя её собственного ядра. Машина построения должна хранить конфигурационные файлы ядра каждой машины в каталоге `/usr/src/sys/`arch`/conf`, если на ней будут строиться соответствующие ядра..

### 22.5.2. Основные системные компоненты

Теперь, когда всё это сделано, вы готовы к построению. Постройте ядро и всё окружение так, как это описано в Разд. 22.4.7.2 на машине построения, но ничего не устанавливайте. После того, как процесс построения завершится, перейдите к тестовой машине и установите только что построенное ядро. Если эта машина монтирует каталоги `/usr/src` и `/usr/obj` посредством NFS, то при перезагрузке в однопользовательский режим вам потребуется задействовать сеть и смонтировать их. Самым простым способом сделать это является переход во многопользовательский режим и запуск команды `shutdown now` для перехода в однопользовательский режим. После этого вы можете установить новое ядро и всё окружение, а затем выполнить команду `mergemaster` обычным образом. После выполнения этих действий перезагрузитесь для возвращения к обычному режиму работы во многопользовательском режиме с этой машиной.

После того, как вы убедитесь в нормальной работе всего на тестовой машине, проведите ту же самую процедуру для установки нового программного обеспечения на каждой из оставшихся машин из набора для построения.

### 22.5.3. Порты

Те же самые идеи могут использоваться и для дерева портов. Первым критическим шагом является монтирование `/usr/ports` с одной и той же машины на всех компьютерах в наборе для построения. Затем вы можете корректно настроить `/etc/make.conf` для использования общего каталога с дистрибутивными файлами. Вы должны задать переменную `DISTDIR` так, чтобы она указывала на общедоступный каталог, доступный тому пользователю, который отображается в пользователя `root` для ваших точек монтирования NFS. Каждая машина должна задавать `WRKDIRPREFIX` так, чтобы она указывала на локальный каталог построения. Наконец, если вы собираетесь строить и распространять пакеты, то должны задать переменную `PACKAGES` так, чтобы она указывала на каталог, соответствующий `DISTDIR`.

# IV. Сетевые коммуникации

FreeBSD это одна из наиболее широко используемых в высокопроизводительных сетевых серверах операционных систем. Главы этой части книги охватывают:

- Последовательные соединения

- PPP и PPP через Ethernet

- Электронную почту

- Запуск сетевых серверов

- Брандмауэры

- Другую сетевую тематику повышенной сложности

Эти главы предназначены для получения дополнительной информации. Нет необходимости читать их в определенной последовательности, или читать их все перед тем, как начать использовать FreeBSD в сети.

# Глава 23. Последовательные соединения

Перевод на русский язык: Денис Пеплин.

## 23.1. Краткое описание

В UNIX всегда была поддержка последовательных соединений. Фактически, самые первые UNIX машины использовали последовательные линии для пользовательского ввода/вывода. Многое изменилось с тех пор, когда среднестатистический ''терминал'' состоял из 10-символов-в-секунду последовательного принтера и клавиатуры. Эта глава рассказывает о некоторых способах, которыми FreeBSD использует последовательные соединения.

Прочитав эту главу, вы узнаете:

- Как подсоединить терминалы к системе FreeBSD.

- Как использовать модем для дозвона на удаленные хосты.

- Как разрешить удаленным пользователям входить в вашу систему с помощью модема.

- Как загрузить систему с последовательной консоли.

Перед прочтением этой главы вам потребуется:

- Узнать как настраивать и устанавливать новое ядро (Гл. 8).

- Понять, что такое права доступа и процессы UNIX (Гл. 3).

- Кроме этого вам потребуется техническое руководство на последовательное оборудование (модем или мультипортовую карту), которую вы хотите использовать с FreeBSD.

## 23.2. Введение

### 23.2.1. Терминология

bps

  Бит в секунду (Bits per Second) -- скорость передачи данных

DTE

  Терминальное оборудование (Data Terminal Equipment) -- например, ваш компьютер

DCE

  Оборудование связи (Data Communications Equipment) -- ваш модем

RS-232

  Стандарт EIA для аппаратных последовательных соединений

При упоминании скорости передачи данных, в этой главе не используется термин ''бод'' (''baud''). Бод означает количество электрических импульсов, которые могут быть переданы за период времени, а ''bps'' это корректный термин для использования (он хотя бы не создает столько проблем как предыдущий).

### 23.2.2. Кабели и порты

Для подсоединения модема или терминала к системе FreeBSD потребуется последовательный порт и подходящий кабель для последовательного устройства. Если вы уже знаете о аппаратном обеспечении и требуемых кабелях, можете пропустить этот раздел.

#### 23.2.2.1. Кабели

Есть несколько различных видов последовательных кабелей. Два наиболее часто используемых в нашей ситуации типа это нуль-модемный и стандартный (''прямой'') RS-232 кабель. Документация на оборудование должна описывать тип требуемого кабеля.

##### 23.2.2.1.1. Нуль-модемные кабели

Нуль модемный кабель пропускает некоторые сигналы, такие как ''Signal Ground'', напрямую, а другие ''заворачивает''. Например, контакт ''Transmitted Data'' на одном конце соединяется с контактом ''Received Data'' на другом.

Вы можете сделать собственный кабель для использования с терминалами. Эта таблица показывает названия сигналов RS-232C и номера контактов на разъеме DB-25. Заметим, что стандарт описывает соединение контактов номер 1 как сигнал Protective Ground, но его часто не делают. Некоторым терминалам достаточно сигналов на контактах 2, 3 и 7; другим требуется большее число сигналов, как показано на примерах ниже:

Таблица 23-1. Нуль-модемный кабель DB-25 - DB-25

Сигнал | Контакт |  | Контакт | Сигнал
--- | --- | --- | --- | ---
SG | 7 | соединен с | 7 | SG
TD | 2 | соединен с | 3 | RD
RD | 3 | соединен с | 2 | TD
RTS | 4 | соединен с | 5 | CTS
CTS | 5 | соединен с | 4 | RTS
DTR | 20 | соединен с | 6 | DSR
DTR | 20 | соединен с | 8 | DCD
DSR | 6 | соединен с | 20 | DTR
DCD | 8 | соединен с | 20 | DTR

Вот еще две распространенные в настоящее время схемы.

Таблица 23-2. Нуль-модемный кабель DB-9 - DB-9

Сигнал | Контакт |  | Контакт | Сигнал
--- | --- | --- | --- | ---
RD | 2 | соединен с | 3 | TD
TD | 3 | соединен с | 2 | RD
DTR | 4 | соединен с | 6 | DSR
DTR | 4 | соединен с | 1 | DCD
SG | 5 | соединен с | 5 | SG
DSR | 6 | соединен с | 4 | DTR
DCD | 1 | соединен с | 4 | DTR
RTS | 7 | соединен с | 8 | CTS
CTS | 8 | соединен с | 7 | RTS

Таблица 23-3. Нуль-модемный кабель DB-9 - DB-25

Сигнал | Контакт |  | Контакт | Сигнал
--- | --- | --- | --- | ---
RD | 2 | соединен с | 2 | TD
TD | 3 | соединен с | 3 | RD
DTR | 4 | соединен с | 6 | DSR
DTR | 4 | соединен с | 8 | DCD
SG | 5 | соединен с | 7 | SG
DSR | 6 | соединен с | 20 | DTR
DCD | 1 | соединен с | 20 | DTR
RTS | 7 | соединен с | 5 | CTS
CTS | 8 | соединен с | 4 | RTS

> Замечание: Для соединения одного контакта с одной стороны с двумя контактами на другой обычно пару контактов на одной стороне соединяют коротким проводом, а затем один из них -- длинным с единственным контактом на дальней стороне.

Приведенные диаграммы описывают наиболее популярные схемы распайки. В других вариантах (описанных в книге RS-232 Made Easy) SG соединяется с SG, TD соединяется с RD, RTS и CTS соединяются с DCD, DTR соединяется с DSR, и наоборот.

##### 23.2.2.1.2. Стандартные кабели RS-232C

Стандартный последовательный кабель пропускает все RS-232C сигналы напрямую. Так, ''send data'' на одном конце кабеля соединяется с контактом ''send data'' на другом конце. Этот тип кабеля предназначен для подсоединения модема, а также подходит для некоторых терминалов.

#### 23.2.2.2. Порты

Последовательные порты это устройства, через которые данные передаются между компьютером с FreeBSD и терминалом. Этот раздел описывает типы существующих портов и их адресацию в FreeBSD.

##### 23.2.2.2.1. Типы портов

Существует несколько типов последовательных портов. Перед изготовлением кабеля, вам потребуется убедиться, что он подходит к портам терминала и системы FreeBSD.

Большинство терминалов используют порты DB25. Персональные компьютеры, включая PC под управлением FreeBSD, используют порты DB25 или DB9. Если у вас есть мультипортовая последовательная карта для PC, там могут быть RJ-12 или RJ-45 порты.

Обратитесь к сопровождающей документации на оборудование за информацией об используемых портах. Можно также определить тип используемых портов по их внешнему виду.

##### 23.2.2.2.2. Имена портов

В FreeBSD доступ к каждому последовательному порту может быть получен через файл в каталоге `/dev`. Есть два различных типа файлов:

- Порты входящих соединений (dial-in) называются `/dev/ttyd`N``, где `N` это номер порта начиная с нуля. Обычно, порты входящих соединений используются для терминалов. Для корректной работы этим портам требуется, чтобы последовательный кабель передавал сигнал data carrier detect (DCD).

- Порты исходящих соединений (call-out) называются `/dev/cuad`N``. Они обычно используются не для терминалов, а только для модемов. Вы можете использовать эти порты если последовательный кабель или терминал не поддерживает сигнал DCD.

  > Замечание: Call-out порты в FreeBSD 5.X и ранее именуются `/dev/cuaa`N``.

Если вы соединили терминал с первым последовательным портом (`COM1` в MS-DOS), используйте `/dev/ttyd0` для доступа к терминалу. Если терминал соединен со вторым последовательным портом (известным также как `COM2`), используйте `/dev/ttyd1`, и так далее.

### 23.2.3. Настройка ядра

FreeBSD c настройками по умолчанию поддерживает последовательные порты. В мире MS-DOS они известны как `COM1`, `COM2`, `COM3`, и `COM4`. На данный момент в FreeBSD есть поддержка как ''простых'' мультипортовых карт с последовательными интерфейсами, таких как BocaBoard 1008 и 2016, так и более ''умных'' мультипортовых карт, например карт Digiboard и Stallion Technologies. Тем не менее, ядро по умолчанию определяет только стандартные COM порты.

Чтобы увидеть, как ядро определяет последовательные порты, просмотрите сообщения, выводимые во время загрузки ядра, или используйте команду `/sbin/dmesg` для вывода сообщений ядра еще раз. В частности, обратите внимание на сообщения, начинающиеся с символов `sio`.

> Подсказка: Для просмотра только тех сообщений, которые содержат слово `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, изменив файл `/boot/device.hints`. Вы можете также закомментировать или вовсе удалить строки, относящиеся к отсутствующим у вас устройствам.

Обратитесь к странице справочника sio(4) за дополнительной информацией о настройке последовательных портов и мультипортовых карт. Будьте осторожны при использовании настроек, которые работали в предыдущих версиях FreeBSD, поскольку флаги устройств и синтаксис изменились в новых версиях.

> Замечание: `port IO_COM1` это синоним для `port 0x3f8`, `IO_COM2` для `0x2f8`, `IO_COM3` для `0x3e8`, и `IO_COM4` для `0x2e8`. Это наиболее часто используемые для соответствующих последовательных портов адреса. Наиболее часто используемые прерывания 4, 3, 5, и 9. Имейте ввиду, что обычные последовательные порты не могут совместно использовать прерывания на ISA PC (на мультипортовых картах есть электроника, позволяющая всем чипам 16550A на плате совместно использовать одно или два IRQ).

### 23.2.4. Специальные файлы устройств

К большинству устройств ядра можно получить доступ через ''специальные файлы устройств'', расположенные в каталоге `/dev`. К устройствам `sio` можно получить доступ через `/dev/ttyd`N`` (устройства входящих вызовов, dial-in) и `/dev/cuad`N`` (устройства исходящих вызовов, call-out). FreeBSD предоставляет также устройства инициализации (`/dev/ttyd`N`.init` и `/dev/cuad`N`.init` в случае FreeBSD 6.X, `/dev/ttyid`N`` и `/dev/cuaia`N`` для FreeBSD 5.X), устройства блокировки (`/dev/ttyd`N`.lock` и `/dev/cuad`N`.lock` в случае FreeBSD 6.X, `/dev/ttyld`N`` и `/dev/cuala`N`` для FreeBSD 5.X). Первые используются для инициализации параметров порта при каждом его открытии (таких как `crtscts` для модемов, использующих сигналы `RTS/CTS` для управления потоком). Устройства блокировки используются для установки флага блокировки на порт и предотвращения изменения определенных параметров пользователями или программами; обратитесь к страницам справочника termios(4), sio(4) и stty(1) соответственно за информацией о параметрах терминала, блокировании и инициализации устройств и настройке терминала.

### 23.2.5. Настройка последовательных портов

Устройство `ttyd`N`` (или `cuad`N``) это обычное устройство, которое потребуется открыть для приложений. Когда процесс открывает устройство применяются настройки ввода/вывода терминала по умолчанию. Вы можете посмотреть эти настройки с помощью команды

    # stty -a -f /dev/ttyd1

Если вы измените настройки устройства, они будут действовать до его закрытия. После повторного открытия, оно вернется к настройкам по умолчанию. Для изменения настроек по умолчанию, вы можете открыть и изменить установки ''начального состояния'' устройства. Например, для включения по умолчанию режима `CLOCAL`, 8-битного соединения и контроля передачи `XON/XOFF` для `ttyd5`, выполните:

    # stty -f /dev/ttyd5.init clocal cs8 ixon ixoff

Инициализация последовательных устройств контролируется файлом `/etc/rc.d/serial`. Этот файл определяет настройки последовательных устройств по умолчанию.

Для предотвращения изменения программами отдельных установок, настройте ''состояние блокировки'' устройства. Например, для установки значения скорости `ttyd5` в 57600 bps, выполните:

    # stty -f /dev/ttyd5.lock 57600

Теперь приложение, открывающее `ttyd5` и пытающееся изменить скорость порта, получит скорость 57600 bps.

И конечно, сделайте запись начальных значений и состояния блокировки устройств доступной только учетной записи `root`.

## 23.3. Терминалы

Предоставил Sean Kelly.

Терминалы предоставляют удобный и дешевый способ доступа к системе FreeBSD, когда вы не сидите за консолью компьютера и не подключены к сети. Этот раздел описывает использование терминалов в FreeBSD.

### 23.3.1. Пользователи и типы терминалов

В первых системах UNIX не было консолей. Вместо этого, пользователи входили и запускали программы через терминалы, которые были подключены к последовательным портам компьютеров. Это очень похоже на использование модема и программного обеспечения терминала для дозвона до удаленной системы и выполнения только-текстовой работы.

Консоли современных PC поддерживают высококачественную графику, но возможность входа по последовательному порту на сегодняшний день все еще доступна почти в каждой UNIX подобной операционной системе; FreeBSD не исключение. Используя терминал, подключенный к неиспользуемому последовательному порту, вы можете войти и запустить текстовую программу, которую обычно запускаете в текстовой консоли или в окне `xterm` системы X Window.

Для корпоративных пользователей, вы можете подсоединить множество терминалов к системе FreeBSD и поставить их на столы пользователей. Для домашнего пользователя, устаревший IBM PC или Macintosh может быть подключен в качестве терминала к более мощному компьютеру под управлением FreeBSD. Вы можете превратить однопользовательский компьютер в мощную многопользовательскую систему.

В FreeBSD три вида терминалов:

- Простые (dumb) терминалы

- PC, работающие в качестве терминалов

- X терминалы

В оставшейся части раздела описывается каждый вид.

#### 23.3.1.1. Простые терминалы

Простые терминалы это специализированное оборудование, позволяющее соединять компьютеры через последовательные линии. Они называются ''простыми'', поскольку их вычислительных возможностей хватает только для отображения, отправки и получения текста. Вы не сможете запустить на них никаких программ. Компьютер, к которому подсоединяется терминал, предоставляет все возможности для запуска текстовых редакторов, компиляторов, почтовых программ, игр и так далее.

Есть сотни видов простых терминалов, изготовленных различными производителями, включая DEC VT-100 и Wyse WY-75. Почти любой терминал может работать с FreeBSD. Некоторые high-end терминалы даже могут отображать графику, но только отдельные программные пакеты могут получить преимущество от этих расширенных возможностей.

Простые терминалы популярны в рабочей среде, где не требуется доступ к графическим приложениям, например тем, которые предоставляет система X Window.

#### 23.3.1.2. PC, работающие в качестве терминалов

Если простые терминалы могут только отображать, отправлять и получать текст, возможностей абсолютно любого персонального компьютера хватит для работы в роли простого терминала. Все, что вам потребуется, это подходящий кабель и какая-нибудь программа эмулятора терминала.

Это популярная домашняя конфигурация. Например, когда ваша вторая половина занята работой на системной консоли FreeBSD, вы можете одновременно выполнять только-текстовую работу с менее мощного персонального компьютера, подключенного к системе FreeBSD.

#### 23.3.1.3. X терминалы

X терминалы это наиболее сложный тип существующих терминалов. Вместо подключения к последовательному порту, они обычно подключаются к сети, например Ethernet. Вместо работы только с текстовыми приложениями, они могут отображать любое X приложение.

Мы представляем X терминалы только ради полноты описания. Тем не менее, эта глава не охватывает установку, настройку или использование X терминалов.

### 23.3.2. Настройка

Этот раздел описывает, что нужно сделать для настройки системы FreeBSD и включения входа в систему через терминал. Предполагается, что вы уже подключили терминал и настроили ядро для включения поддержки последовательного порта, к которому он подключен.

Обратитесь к главе Гл. 12 за информацией о процессе `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).

#### 23.3.2.1. Добавление строки в `/etc/ttys`

В файле `/etc/ttys` находится список всех портов системы FreeBSD, на которые возможен вход. Например, там находится первая виртуальная консоль `ttyv0`. Вы можете войти на консоль с помощью этой записи. Файл содержит записи и для других виртуальных консолей, последовательных портов, и псевдо-терминалов. Название файла последовательного порта из каталога `/dev` приводится без префикса `/dev` (например, устройство `/dev/ttyv0` будет записано как `ttyv0`).

Установка FreeBSD по умолчанию включает файл `/etc/ttys` с поддержкой первых четырех последовательных портов: от `ttyd0` до `ttyd3`. Если вы подключаете терминал к одному из этих портов, добавлять записи терминалов не потребуется.

Пример 23-1. Добавление записей терминалов в `/etc/ttys`

Предположим, вы хотите подключить два терминала к системе: Wyse-50 и старый 286 IBM PC с эмулятором терминала VT-100. Мы подключаем Wyse к второму последовательному порту и 286 к шестому последовательному порту (порт на мультипортовой карте). Соответствующие строки в `/etc/ttys` будут выглядеть так:

    ttyd1  "/usr/libexec/getty std.38400"  wy50  on  insecure
    ttyd5   "/usr/libexec/getty std.19200"  vt100  on  insecure

  Первое поле, как правило, указывает имя специального файла терминала, в соответствии с его именем в `/dev`.
  Второе поле -- это команда, исполняемая для этого терминала, обычно 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.

  Третье поле определяет тип терминала, обычно подключаемого к этой линии tty. Для портов входящих соединений обычно используется значение `unknown` или `dialup`, поскольку пользователь может подключить практически любой тип терминала или программу. Для аппаратных терминалов тип не меняется, поэтому вы можете поместить в это поле определенный тип терминала из базы данных termcap(5).

  Например, Wyse-50 использует реальный тип терминала, а 286 PC, работающий с Procomm, настроен на эмуляцию VT-100.

  Четвертое поле определяет должен ли порт быть включен. Размещение здесь `on` укажет процессу `init` запустить программу, указанную во втором поле, `getty`. Если вы поместите `off` в это поле, команда `getty` не будет запущена и вход на этот порт станет невозможен.
  Последнее поле используется, чтобы указать, является ли порт безопасным. Пометка порта безопасным означает, что вы доверяете ему достаточно для того, чтобы разрешить учетной записи `root` (или любой учетной записи с UID 0) входить с этого порта. Небезопасные порты не разрешат вход `root`. На небезопасном порту пользователи должны войти с через непривилегированную учетную запись, а затем использовать su(1) или подобный механизм для получения привилегий суперпользователя.

  Настоятельно рекомендуется использовать ''insecure'' даже для терминалов, находящихся за закрытыми дверями. Довольно легко использовать `su` после входа, если вам потребуются привилегии суперпользователя.

#### 23.3.2.2. Заставьте `init` перечитать `/etc/ttys`

После выполнения необходимых изменений в файле `/etc/ttys`, вам потребуется отправить сигнал SIGHUP (hangup) процессу `init`, чтобы заставить его перечитать его файл настройки. Например:

    # kill -HUP 1

> Замечание: `init` это всегда первый из запущенных в в системе процессов, поэтому его PID всегда 1.

Если все установлено правильно, все кабели на месте и терминалы включены, процесс `getty` должен быть запущен на каждом терминале и вы увидите приглашение ко входу на каждом терминале.

### 23.3.3. Решение проблем с соединением

Даже при самом внимательном отношении к деталям, при настройке терминала все же могут возникнуть проблемы. В этом разделе приведен список симптомов и предлагается несколько решений.

#### 23.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` для предотвращения переполнений буфера.

#### 23.3.3.2. Вместо приглашения ко входу на экране появляется ''мусор''

Убедитесь, что терминал и FreeBSD имеют одинаковые установки значения bps и четности. Проверьте процесс `getty`, чтобы убедиться, что используется подходящий тип `getty`. Если это не так, отредактируйте `/etc/ttys` и запустите `kill -HUP 1`.

#### 23.3.3.3. Символы появляются дважды, пароль отображается при вводе

Переключите терминал (или программу эмулятора терминала) с ''half duplex'' или ''local echo'' на ''full duplex''.

## 23.4. Входящие соединения по модему

Предоставил Guy Helmer. Дополнил Sean Kelly.

Настройка системы FreeBSD для поддержки входящих соединений очень похожа на подсоединение терминалов за исключением того, что вы работаете с модемами вместо терминалов.

### 23.4.1. Внешние и внутренние модемы

Внешние модемы более удобны для дозвона, поскольку легко могут быть настроены с помощью параметров, сохраняемых в энергонезависимой памяти. На них обычно есть индикаторы, отображающие состояние основных RS-232 сигналов. Мигающие индикаторы впечатляют, но кроме того они также очень полезны для индикации правильной работы модема.

Внутренние модемы обычно не снабжаются энергонезависимой памятью, поэтому их настройка может ограничиваться установкой DIP переключателей. Если на внутреннем модеме есть индикаторы, их обычно сложно увидеть при закрытой крышке корпуса.

#### 23.4.1.1. Модемы и кабели

Если вы используете внешний модем, несомненно потребуется подходящий кабель. Стандартный RS-232C кабель должен подойти, если подключены все обычные сигналы:

Таблица 23-4. Наименования сигналов

Сокращение | Наименование | Назначение
--- | --- | ---
RD | Received Data | Принимаемые данные
TD | Transmitted Data | Передаваемые данные
DTR | Data Terminal Ready | Готовность терминала
DSR | Data Set Ready | Готовность данных
DCD | Data Carrier Detect | Наличие несущей
SG | Signal Ground | Сигнальная земля
RTS | Request to Send | Запрос на посылку
CTS | Clear to Send | Готовность к приему

FreeBSD требуются сигналы RTS и CTS для контроля передачи на скоростях выше 2400 bps, сигнал CD для определения, был ли ответ на сигнал или произошло отключение линии, и сигнал DTR для сброса модема после завершения сессии. Некоторые кабели не поддерживают все необходимые сигналы, поэтому, если вы столкнулись с проблемами, например, если сессия не завершается после отсоединения линии, причиной возможно являются проблемы с кабелем.

Как и другие UNIX подобные операционные системы, FreeBSD использует аппаратные сигналы для определения того, был ли ответ на звонок или линия была отключена и требуется завершить работу модема и сбросить его в начальное состояние. FreeBSD избегает отправлять команды модему или просматривать отчеты о статусе от модема. Если вы знакомы с настройкой BBS, это может показаться неудобным.

### 23.4.2. Рекомендации по последовательным интерфейсам

FreeBSD поддерживает интерфейсы, основанные на NS8250, NS16450, NS16550, и NS16550A EIA RS-232C (CCITT V.24). Устройства 8250 и 16450 снабжены односимвольным буфером. Устройство 16550 снабжено 16-ти символьным буфером, который повышает производительность системы. (Ошибки в 16550 делают невозможным использование 16-символьного буфера, поэтому используйте 16550A если возможно). Поскольку устройства с односимвольным буфером предъявляют большие требования к операционной системе, чем с 16-ти символьным буфером, предпочтительны устройства на 16550A. Если в системе много активных последовательных портов или нагрузка велика, устройства на 16550A лучше подходят для поддержки соединений с малым количеством ошибок.

### 23.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`, которая завершает вход, запрашивая пароль пользователя и запуская оболочку.

### 23.4.4. Файлы настройки

Есть три файла настройки системы в каталоге `/etc`, которые возможно потребуется отредактировать для включения удаленного доступа по модему в FreeBSD. Первый, `/etc/gettytab`, содержит информацию по настройке даемона `/usr/libexec/getty`. Второй, `/etc/ttys`, содержит информацию, указывающую `/sbin/init` на каких устройствах `tty` должны быть запущены процессы `getty`. Наконец, вы можете поместить команды инициализации портов в скрипт /etc/rc.d/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:` опять. Эта процедура может продолжаться до отвращения, но обычно требуется одно или два нажатия клавиши перед появлением нормально выглядящего приглашения. Очевидно, эта последовательность входа не так хороша, как метод с фиксированной скоростью, но при низкой скорости соединения работать с полноэкранными программами станет проще.

В этом разделе делается попытка дать сбалансированную информацию для настройки, но предпочтение будет отдано установке скорости соединения с модемом в соответствие скорости подключения.

#### 23.4.4.1. `/etc/gettytab`

`/etc/gettytab` это файл в стиле termcap(5), содержащей информацию по настройке getty(8). Пожалуйста, обратитесь к странице справочника gettytab(5) за полной информацией о формате файла и за списком возможностей `getty`.

##### 23.4.4.1.1. Настройка фиксированной скорости

Если вы зафиксировали скорость соединения модема на определенной скорости, редактировать файл `/etc/gettytab` скорее всего не потребуется.

##### 23.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''.

#### 23.4.4.2. `/etc/ttys`

Настройка файла `/etc/ttys` была описана в Прим. 23-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`.

##### 23.4.4.2.1. Настройка фиксированной скорости

Для настройки соединения с фиксированной скоростью, в файле `ttys` должна быть запись с фиксированной скоростью для `getty`. Для модема, скорость порта которого фиксирована на значении 19.2 Кбит/с, строка в `ttys` может выглядеть так:

    ttyd0   "/usr/libexec/getty std.19200"   dialup on

Если скорость модема фиксирована на другом значении, подставьте соответствующее значение в `std.`speed`` вместо `std.19200`. Убедитесь, что вы используете тип, описанный в `/etc/gettytab`.

##### 23.4.4.2.2. Настройка переменной скорости

В настройке с переменной скоростью, запись в `ttys` должна обращаться к соответствующей ''auto-baud'' (sic) записи в `/etc/gettytab`. Например, если вы добавите предложенную выше запись для подключения модема с переменной скоростью, которая начинается с 19.2 Кбит/с (запись в `gettytab` начинается с `V19200`), запись в `ttys` может выглядеть так:

    ttyd0   "/usr/libexec/getty V19200"   dialup on

#### 23.4.4.3. `/etc/rc.d/serial`

Для высокоскоростных модемов, таких как V.32, V.32bis и V.34, требуется использование аппаратного контроля передачи (`RTS/CTS`). Вы можете добавить команды `stty` к файлу `/etc/rc.d/serial` для установки флага аппаратного контроля передачи в ядре FreeBSD для модемных портов.

Например, для установки флага `termios` `crtscts` на последовательном порту номер 1 (`COM2`) при инициализации устройств для входящей и исходящей связи, в `/etc/rc.d/serial`должны быть добавлены следующие строки:

    # Serial port initial configuration
    stty -f /dev/ttyd1.init crtscts
    stty -f /dev/cuad1.init crtscts

### 23.4.5. Настройка модема

Если параметры вашего модема могут быть сохранены в энергонезависимой памяти, потребуется использовать терминальную программу (например, Telix под MS-DOS или `tip` под FreeBSD) для установки параметров. Подсоединитесь к модему, используя ту же скорость соединения, которую использует `getty` в качестве начальной скорости, и настройте модем для соответствия следующим требованиям:

- CD включен после соединения

- DTR включен во время работы; сброс DTR отключает линию и переводит модем в начальное состояние

- CTS контроль переданных данных

- Контроль потока XON/XOFF отключен

- RTS контроль принятых данных

- ''Тихий'' режим (без кодов возврата)

- Эхо команд отключено

Прочтите документацию на модем для определения какие команды и/или 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 переключателями, которые требуется установить; для других модемов эти настройки могут быть использованы в качестве примера:

- Переключатель 1: вверх -- нормальный DTR

- Переключатель 2: N/A (визуальные коды возврата/числовые коды возврата)

- Переключатель 3: вверх -- подавление кодов возврата

- Переключатель 4: вниз -- без эхо, offline команды

- Переключатель 5: вверх -- авто ответ

- Переключатель 6: вверх -- нормальный контроль несущей

- Переключатель 7: вверх -- загрузить установки по умолчанию из NVRAM

- Переключатель 8: N/A (Smart/Dumb режимы)

Коды возврата должны быть отключены/подавлены для устранения проблем, которые могут возникнуть, если `getty` ошибочно выдаст приглашение `login:` модему в командном режиме и модем вернет (echo) эту команду или код возврата. Эта последовательность может привести к дополнительному и бессмысленному обмену командами между `getty` и модемом.

#### 23.4.5.1. Настройка фиксированной скорости

Для настройки фиксированной скорости вам потребуется настроить модем с поддержкой постоянной скорости обмена данными модем-компьютер независимо от скорости соединения. На внешнем модеме U.S. Robotics Sportster 14,400 эти команды зафиксируют скорость передачи модем-компьютер на скорости, которая установлена при выполнении команды:

    ATZ
    AT&B1&W

#### 23.4.5.2. Настройка переменной скорости

Для настройки переменной скорости вам потребуется настроить модем с поддержкой изменения скорости передачи данных через последовательный порт в соответствии через скоростью соединения. Следующие команды зафиксируют скорость передачи данных с коррекцией ошибок внешнего модема U.S. Robotics Sportster 14,400 на значении, которое установлено при выполнении команды, но сделают возможным изменение скорости последовательного порта для соединений без коррекции ошибок:

    ATZ
    AT&B2&W

#### 23.4.5.3. Проверка настроек модема

Большинство высокоскоростных модемов предоставляют команды для просмотра текущих параметров модема в виде, отчасти приспособленном для чтения. Для внешних модемов U.S. Robotics Sportster 14,400 команда `ATI5` отображает установки, сохраненные в энергонезависимой памяти. Для просмотра действующих параметров модема (с учетом положения DIP переключателей), используйте команду `ATZ`, а затем `ATI4`.

Если ваш модем другого производителя, проверьте руководство к модему для аккуратной проверки параметров настройки модема.

### 23.4.6. Решение проблем

Вот несколько шагов, которые нужно выполнить для проверки настроек.

#### 23.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`, ожидающих открытия соответствующего порта `ttyd`N``, внимательно проверьте записи в `/etc/ttys` и попробуйте найти ошибки, если они есть. Проверьте также лог файл `/var/log/messages`, нет ли там сообщений от `init` или `getty`, имеющих отношение к проблеме. Если сообщения есть, проверьте еще раз файлы настройки `/etc/ttys` и `/etc/gettytab`, как и соответствующие специальные файлы устройств `/dev/ttydN`, чтобы обнаружить ошибки, отсутствующие записи или отсутствующие специальные файлы устройств.

#### 23.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, описав модем и возникшую проблему, участники рассылки попробуют помочь вам.

## 23.5. Исходящие соединения по модему

Текст, приведенный ниже, это советы, позволяющие настроить ваш хост для доступа к другому компьютеру через модем. Они подходят для установления терминальной сессии с удаленным хостом.

Это подходит для входа на BBS.

Этот вид соединения может очень выручить, если требуется получить файл из интернет и есть проблемы с PPP. Если вам требуется зайти куда-то по FTP, а PPP не работает, используйте терминальную сессию для получения файла по FTP. Затем используйте zmodem для сброса его на свой компьютер.

### 23.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`.

> Замечание: Оригинальная `tip` не полностью поддерживает модемы Hayes. Решить это проблему можно отредактировав файл `tipconf.h` в каталоге `/usr/src/usr.bin/tip/tip`. Конечно, для этого вам потребуются исходные тексты.

> Замените строку `#define HAYES 0` на `#define HAYES 1`. Затем выполните `make` и `make install`. После этого все должно работать отлично.

### 23.5.2. Как нужно выполнять команды AT?

Сделайте то, что называется ''прямой'' записью в файле `/etc/remote`. Например, если модем подключен к первому последовательному порту, `/dev/cuad0`, добавьте следующую строку:

    cuad0:dv=/dev/cuad0:br#19200:pa=none

Используйте для br наибольшее значение bps, поддерживаемое модемом. Для подключения к модему выполните `tip cuad0`.

Или используйте `cu` под `root` так:

    # cu -lline -sspeed

`line` это последовательный порт (например `/dev/cuad0`), а `speed` это скорость (например `57600`). После ввода команд AT наберите ~. для выхода.

### 23.5.3. Знак `@` не работает для pn!

Знак `@` в телефонном номере указывает `tip` взять телефонный номер из `/etc/phones`. Но знак `@` это также специальный символ в таких файлах как `/etc/remote`. Экранируйте его с помощью обратной косой черты:

    pn=\@

### 23.5.4. Как я могу позвонить по телефонному номеру из командной строки?

Поместите так называемую ''generic'' запись в файл `/etc/remote`. Например:

    tip115200|Dial any phone number at 115200 bps:\
            :dv=/dev/cuad0:br#115200:at=hayes:pa=none:du:
    tip57600|Dial any phone number at 57600 bps:\
            :dv=/dev/cuad0: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/cuad1:br#57600:at=hayes:pa=none:du:

и выполните:

    # cu 5551234 -s 115200

### 23.5.5. Должен ли я вводить значение bps каждый раз?

Создайте запись `tip1200` или `cu1200`, но используйте то значение bps, которое записано в поле br. `tip` считает, что хорошее значение по умолчанию это 1200 bps, поэтому обращается к записи `tip1200`. Тем не менее, значение bps будет другим.

### 23.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/cuad2:br#38400:at=hayes:du:pa=none:pn=5551234:

Она позволит вам вводить `tip pain` или `tip muffin` для соединения с хостами pain или muffin, и `tip deep13` для доступа к терминальному серверу.

### 23.5.7. Может ли tip соединяться более через одну линию для каждого сайта?

Эта проблема часто возникает в университете, где несколько модемных линий и несколько тысяч студентов, пытающихся их использовать.

Создайте запись для университета в `/etc/remote` и используйте `@` для `pn`:

    big-university:\
            :pn=\@:tc=dialout
    dialout:\
            :dv=/dev/cuad3:br#9600:at=courier:du:pa=none:

Затем, создайте список телефонов для университета в `/etc/phones`:

    big-university 5551111
    big-university 5551112
    big-university 5551113
    big-university 5551114

`tip` попробует связаться с каждым в указанном порядке, затем прекратит попытки. Если вы хотите продолжать соединяться, запустите `tip` в цикле.

### 23.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>

### 23.5.9. Почему все, что я ввожу, вдруг стало отображаться в верхнем регистре??

Вы нажали Ctrl+A, ''повышающий символ'' `tip`, который был специально введен для тех, у кого не работает клавиша caps-lock. Используйте `~s` как в примере выше для установки переменной `raisechar` в подходящее значение. Фактически, вы можете установить ее в то же значение, что и управляющий символ, если не собираетесь использовать ни один из них.

Вот пример .tiprc, отлично подходящий для пользователей Emacs, которым часто требуется вводить Ctrl+2 и Ctrl+A:

    force=^^
    raisechar=^^

Символ ^^ это Shift+Ctrl+6.

### 23.5.10. Могу ли я передавать файлы с помощью `tip`?

Если вы соединяетесь с другой системой UNIX, возможны передача и прием файлов с помощью команды `~p` (put) и `~t` (take). Эти команды запускают `cat` и `echo` в удаленной системе для приема и передачи файлов. Синтаксис следующий:

`~p` local-file [remote-file]

`~t` remote-file [local-file]

Коррекции ошибок нет, поэтому возможно лучше использовать другой протокол, например zmodem.

### 23.5.11. Как мне запустить zmodem с `tip`?

Для получения файла запустите отправляющую программу на удаленной стороне. Затем, наберите `~C rz` для начала локального приема файла.

Для отправки файлов запустите принимающую программу на удаленной стороне. Затем, наберите `~C sz `файлы`` для отправки их на удаленную систему.

## 23.6. Настройка последовательной консоли

Предоставил Kazutaka YOKOTA. Оригинальный документ написал Bill Paul.

### 23.6.1. Введение

FreeBSD может загружаться при использовании в качестве консоли текстового терминала на последовательном порту. Такая конфигурация может быть полезна в двух случаях: для системных администраторов, устанавливающих FreeBSD на компьютеры без подключенных клавиатуры или монитора, и для разработчиков, производящих отладку ядра или драйверов устройств.

Как описано в Гл. 12, процесс загрузки FreeBSD состоит из трех стадий. Первые две стадии реализованы в блоке загрузки, находящемся в начале слайса FreeBSD на загрузочном диске. На третей стадии загрузочный блок запускает загрузчик (`/boot/loader`).

Для настройки последовательной консоли вам потребуется настроить блок загрузки, загрузчик и ядро.

### 23.6.2. Настройка последовательной консоли, краткая версия

В этом разделе предполагается, что вы используете настройки по умолчанию и просто хотите увидеть краткий обзор настройки последовательной консоли.

1. Соедините кабелем последовательный порт COM1 и управляющий терминал.

2. Для того, чтобы сообщения в процессе загрузки выводились в последовательную консоль, выполните от имени суперпользователя команду

       # echo 'console="comconsole"' >> /boot/loader.conf

3. Отредактируйте `/etc/ttys` и измените `off` на `on` и `dialup` на `vt100` для записи `ttyd0`. В противном случае для входа с последовательной консоли не будет требоваться пароль, что может являться проблемой с точки зрения безопасности.

4. Перезагрузите систему и убедитесь, что последовательная консоль активировалась.

Если вам требуется иная конфигурация, обратитесь к более подробному описанию в разделе Разд. 23.6.3.

### 23.6.3. Настройка последовательной консоли

1. Подготовьте кабель.

   Вам потребуется нуль-модемный или стандартный последовательный кабель и нуль-модемный адаптер. Обратитесь к Разд. 23.2.2, где рассматриваются последовательные кабели.

2. Отключите клавиатуру.

   Большинство систем PC тестируют клавиатуру во время включения (POST) и выдают ошибку если клавиатура не обнаружена. Некоторые системы при отсутствии клавиатуры выдают звуковой сигнал и не загружаются пока клавиатура не будет подключена.

   Если компьютер сообщает об ошибке, но все же загружается, вам не потребуется делать что-то еще. (Некоторые компьютеры с Phoenix BIOS просто сообщают “`Keyboard failed`” и продолжают загрузку).

   Если компьютер не загружается без клавиатуры, вам потребуется настроить BIOS так, чтобы отсутствие клавиатуры игнорировалось (если это возможно). Обратитесь к руководству по материнской плате за деталями о том, как это сделать.

   > Подсказка: Установите параметр клавиатуры в настройках BIOS в значение ''Not installed''. При этом вы сможете продолжать использовать клавиатуру. Все, что делает этот параметр -- указывает BIOS не тестировать клавиатуру во время загрузки, поэтому ее отсутствие не вызывает ошибки. Вы можете оставить клавиатуру подключенной, даже если с флагом ''Not installed'', и она все еще будет работать.

   > Замечание: Если в к системе подключена 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`. Флаг `0x20` должен использоваться вместе с флагом `0x10`.

   `0x40`

     Резервирует это устройство (совместно с флагом `0x10`) и делает устройство недоступным для обычной работы. Вы не должны использовать этот флаг для устройства последовательного порта, которое будет использоваться в качестве последовательной консоли. Используйте этот флаг только если устройство предназначено для удаленной отладки ядра. Обратитесь к Руководству для разработчиков за дополнительной информацией по удаленной отладке.

   Пример:

       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`.

     > Замечание: По причине ограничений на размер в существующей версии загрузочного блока, опция `-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 (если это возможно) для указания загрузочному блоку (а также загрузчику и ядру) выбрать последовательный порт в качестве консоли. Когда система загрузится, проверьте настройки еще раз и определите, что было сделано неправильно.

После запуска загрузчика и перехода в третью стадию процесса загрузки вы все еще можете переключиться между внутренней консолью и последовательной консолью путем установки соответствующих переменных окружения в загрузчике. Обращайтесь к разделу Разд. 23.6.6.

### 23.6.4. Итоги

Здесь приведены краткие итоги по различным настройкам, рассмотренным в этом разделе и выбираемым в соответствии с ними консолям.

#### 23.6.4.1. Вариант 1: вы устанавливаете для `sio0` флаги 0x10

    device sio0 at isa? port IO_COM1 flags 0x10 irq 4

Параметры в /boot.config | Консоль для загрузочного блока | Консоль для загрузчика | Консоль для ядра
--- | --- | --- | ---
нет | внутренняя | внутренняя | внутренняя
`-h` | последовательная | последовательная | последовательная
`-D` | последовательная и внутренняя | внутренняя | внутренняя
`-Dh` | последовательная и внутренняя | последовательная | последовательная
`-P`, клавиатура присутствует | внутренняя | внутренняя | внутренняя
`-P`, клавиатура отсутствует | последовательная и внутренняя | последовательная | последовательная

#### 23.6.4.2. Вариант 2: вы устанавливаете для `sio0` флаги 0x30

    device sio0 at isa? port IO_COM1 flags 0x30 irq 4

Параметры в /boot.config | Консоль для загрузочного блока | Консоль для загрузчика | Консоль для ядра
--- | --- | --- | ---
нет | внутренняя | внутренняя | последовательная
`-h` | последовательная | последовательная | последовательная
`-D` | последовательная и внутренняя | внутренняя | последовательная
`-Dh` | последовательная и внутренняя | последовательная | последовательная
`-P`, клавиатура присутствует | внутренняя | внутренняя | последовательная
`-P`, клавиатура отсутствует | последовательная и внутренняя | последовательная | последовательная

### 23.6.5. Приемы работы с последовательной консолью

#### 23.6.5.1. Установка более высокой скорости порта

По умолчанию, последовательный порт настроен так: 9600 бит/с, 8 бит, без четности, 1 стоп бит. Если вам необходимо изменить скорость, потребуется перекомпиляция как минимум загрузочных блоков. Добавьте следующую строку к `/etc/make.conf` и скомпилируйте новый загрузочный блок:

    BOOT_COMCONSOLE_SPEED=19200

Обратитесь к Разд. 23.6.5.2 за подробными инструкциями по сборке и установке новых загрузочных блоков.

Если последовательная консоль настраивается не путем установки параметра `-h`, или последовательная консоль, используемая ядром, отличается от той, что используется загрузочным блоком, потребуется добавить следующие опции к файлу настройки ядра и собрать новое ядро:

    options CONSPEED=19200

#### 23.6.5.2. Использование для консоли другого последовательного порта вместо `sio0`

Использование другого последовательного порта вместо `sio0` для консоли потребует кое-какой перекомпиляции. Если вы по каким-либо причинам хотите использовать другой последовательный порт, перекомпилируйте загрузочный блок, загрузчик и ядро согласно приведенной ниже инструкции.

1. Получите исходные тексты ядра (глава Гл. 22)

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 clean
       # make
       # make install

5. Соберите и установите ядро.

6. Запишите загрузочный блок на загрузочный диск с помощью bsdlabel(8) и загрузитесь с новым ядром.

#### 23.6.5.3. Вход в отладчик DDB с последовательной линии

Если вы хотите войти в отладчик ядра с последовательной консоли (полезно для удаленной диагностики, но опасно если вы введете неправильный BREAK на последовательном порту!), потребуется собрать ядро со следующими параметрами:

    options BREAK_TO_DEBUGGER
    options DDB

#### 23.6.5.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` для включения новых настроек.

### 23.6.6. Изменение консоли из загрузчика

Предыдущий раздел описывает настройку последовательной консоли изменением параметров загрузочного блока. Этот раздел показывает, как указать консоль, вводя команды и переменные окружения для загрузчика. Поскольку загрузчик загружается после загрузочного блока, на третьей стадии загрузочного процесса, настройки загрузчика превалируют над настройками загрузочного блока.

#### 23.6.6.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) за дополнительной информацией.

> Замечание: На данный момент у загрузчика нет параметра, эквивалентного параметру `-P` загрузочного блока и нет способа автоматического выбора внутренней и последовательной консоли в зависимости от наличия клавиатуры.

#### 23.6.6.2. Использование для консоли отличного от `sio0` последовательного порта

Вам потребуется перекомпилировать загрузчик для использования отличного от `sio0` последовательного порта в качестве консоли. Следуйте процедуре, описанной в разделе Разд. 23.6.5.2.

### 23.6.7. Предостережения

Идея в том, чтобы настроить выделенный сервер, который не требует графического оборудования или подсоединенной клавиатуры. К сожалению, хотя многие системы способны загрузиться без клавиатуры, есть совсем немного систем, способных загрузиться без графического адаптера. Компьютеры с AMI BIOS могут быть настроены для загрузки без графического адаптера простой установкой параметра настройки CMOS ''graphics adapter'' в значение ''Not installed''.

Однако, многие компьютеры не поддерживают этот параметр и не смогут загрузиться без графического оборудования. Для этих компьютеров вам потребуется оставить подключенной любую графическую карту (даже если это просто старая моно карта), хотя монитор и не подключен.

# Глава 24. PPP и SLIP

Реструктурировал, реорганизовал и обновил Jim Mock. Перевод на русский язык: Денис Пеплин.

## 24.1. Краткий обзор

В FreeBSD существует множество способов соединения одного компьютера с другим. Для установления соединения с отдельной сетью или интернет через обычный модем, или для открытия доступа к собственному компьютеру необходимо использование PPP или SLIP. В этой главе детально описана настройка таких модемных сервисов.

После прочтения этой главы вы будете знать:

- Как настроить PPP уровня пользователя (user PPP).

- Как настроить PPP уровня ядра (kernel PPP).

- Как настроить PPPoE (PPP over Ethernet).

- Как настроить PPPoA (PPP over ATM).

- Как настроить SLIP клиента и сервер.

Перед прочтением этой главы вам потребуется:

- Ознакомиться с основными сетевыми технологиями.

- Понимать основы и назначение модемного соединения и PPP и/или SLIP.

Вы возможно захотите узнать, в чем главное различие между PPP уровня пользователя и ядра. Ответ прост: PPP уровня пользователя обрабатывает входящие и исходящие данные в пространстве пользователя, а не в ядре. В терминах копирования данных между ядром и пространством пользователя это дорогостоящий путь, который однако позволяет значительно расширить возможности реализации PPP. PPP уровня пользователя для связи с внешним миром использует устройство `tun`, а PPP уровня ядра -- устройство `ppp`.

> Замечание: В дальнейшем в этой главе PPP уровня пользователя будет обозначаться просто как ppp, пока не потребуется различать его и любое другое программное обеспечение PPP, такое как pppd. Если не указано иначе, все команды, приведенные в этой главе, должны выполняться под `root`.

## 24.2. PPP уровня пользователя

Обновил и расширил Tom Rhodes. Первоначально предоставил Brian Somers. Дополнительную информацию предоставили Nik Clayton, Dirk Frömberg, Peter Childs.

### 24.2.1. Настройка PPP уровня пользователя

#### 24.2.1.1. Предположения

В этом документе предполагается, что у вас есть следующее:

- Учетная запись у провайдера интернет (Internet Service Provider, ISP), к которому вы подсоединяетесь, используя PPP.

- Модем или другое подключенное к системе и правильно настроенное устройство, позволяющее подключиться к провайдеру.

- Номер модемного пула провайдера.

- Имя пользователя (логин) и пароль (обычная UNIX пара логин/пароль, или PAP/CHAP пара логин/пароль).

- IP адреса одного или нескольких серверов имен. Обычно провайдер дает для этих целей два IP адреса. Если нет ни одного, вы можете использовать команду `enable dns` в `ppp.conf` и ppp настроит список серверов имен. Эта возможность зависит от наличия поддержки согласования DNS в реализации PPP провайдера.

Следующая информация может поставляться провайдером, но не является совершенно необходимой:

- IP адрес шлюза провайдера. Шлюз это компьютер, к которому вы подключитесь и который будет настроен в качестве маршрута по умолчанию (default route). Если у вас нет этой информации, она может быть получена от PPP сервера после подключения.

  Программой ppp этот IP адрес обозначается как `HISADDR`.

- Сетевая маска, которую вы должны использовать. Если провайдер не предоставил ее значение, вы можете использовать `255.255.255.255`.

- Если провайдер предоставил статический IP и имя хоста, используйте их. Иначе позвольте удаленной стороне назначить свободный IP адрес.

Если у вас нет всей необходимой информации, свяжитесь с провайдером.

> Замечание: В этом разделе строки файлов настройки из многих примеров пронумерованы. Эти номера приведены только для обсуждения настроек, они не должны помещаться в действующую настройку. Правильные отступы с табуляцией и пробелами также важны.

#### 24.2.1.2. Создание файлов устройств PPP

В обычной ситуации, большинству пользователей нужно только одно устройство `tun` (`/dev/tun0`). Ссылки на `tun0` ниже могут быть заменены на `tun`N``, где `N` это любой номер устройства, соответствующий вашей системе.

Для систем FreeBSD без devfs(5) (FreeBSD 4.X более ранние), необходимо проверить устройство `tun0` (это не требуется, если включена devfs(5), поскольку файлы устройств будут создаваться автоматически).

Простейший способ убедиться, что устройство `tun0` настроено правильно, это пересоздать устройство. Для пересоздания устройства выполните следующее:

    # cd /dev
    # sh MAKEDEV tun0

Если вам необходимы 16 туннельных устройств, потребуется их создать. Это можно сделать, выполнив следующие команды:

    # cd /dev
    # sh MAKEDEV tun15

#### 24.2.1.3. Автоматическая настройка PPP

И `ppp` и `pppd` (реализация PPP уровня ядра) используют файлы настройки, расположенные в каталоге `/etc/ppp`. Примеры для ppp уровня пользователя можно найти в `/usr/share/examples/ppp/`.

Настройка `ppp` требует редактирования нескольких файлов, в зависимости от ваших потребностей. То, что вы поместите в эти файлы, зависит в некоторой степени от того, предоставит ли провайдер статический IP адрес (т.е. вы получите один определенный IP адрес и будете использовать его постоянно) или динамический (т.е. ваш IP адрес будет изменяться при каждом подключении к провайдеру).

##### 24.2.1.3.1. PPP и статические IP адреса

Вам потребуется отредактировать файл настройки `/etc/ppp/ppp.conf`. Он похож на приведенный ниже пример.

> Замечание: Строки, оканчивающиеся на `:`, вводятся без отступа в начале строки, остальные строки должны быть введены с отступом, как показано в примере.

    1     default:
    2       set log Phase Chat LCP IPCP CCP tun command
    3       ident user-ppp VERSION (built COMPILATIONDATE)
    4       set device /dev/cuaa0
    5       set speed 115200
    6       set dial "ABORT BUSY ABORT NO\\sCARRIER TIMEOUT 5 \
    7                 \"\" AT OK-AT-OK ATE1Q0 OK \\dATDT\\T TIMEOUT 40 CONNECT"
    8       set timeout 180
    9       enable dns
    10
    11    provider:
    12      set phone "(123) 456 7890"
    13      set authname foo
    14      set authkey bar
    15      set login "TIMEOUT 10 \"\" \"\" gin:--gin: \\U word: \\P col: ppp"
    16      set timeout 300
    17      set ifaddr x.x.x.x y.y.y.y 255.255.255.255 0.0.0.0
    18      add default HISADDR

Строка 1:

  Начинает настройку по умолчанию (default). Команды этой настройки выполняются автоматически при запуске ppp.

Строка 2:

  Включает параметры протоколирования. Когда настройка работает удовлетворительно, эта строка должна быть сокращена до следующей формы

      set log phase tun

  для предотвращения появления слишком больших лог файлов.
Строка 3:

  Указывает PPP как идентифицировать себя на удаленной стороне. PPP идентифицирует себя на удаленной стороне если возникают проблемы согласования и установки соединения, предоставляя информацию, по которой администратор на удаленной стороне может воспользоваться для решения таких проблем.

Строка 4:

  Указывает устройство, к которому подключен модем. `COM1` это `/dev/cuaa0`, а `COM2` это `/dev/cuaa1`.

Строка 5:

  Устанавливает желаемую скорость подключения к модему. Если 115200 не работает (хотя должна работать для любого относительно нового модема) попробуйте 38400.

Строки 6 и 7:

  Строка дозвона. PPP уровня пользователя применяет expect-send синтаксис, похожий на синтаксис chat(8). Обратитесь к странице справочника за информацией о возможностях этого языка.

  Обратите внимание, что эта команда продолжается на следующей строке для улучшения читаемости. Любая команда в `ppp.conf` может быть продолжена на следующей строке, если последний символ предыдущей строки ''`\`''.

Строка 8:

  Устанавливает предельное время ожидания для соединения. Значение 180 секунд используется по умолчанию, так что строка с этим значением чисто косметическая.

Строка 9:

  Указывает PPP запросить у удаленной стороны сервера имен. Если вы работаете с локальным сервером имен, эта строка должна быть закомментирована или удалена.

Строка 10:

  Пустая строка для улучшения читаемости. Пустые строки игнорируются PPP.

Строка 11:

  Определяет настройки для провайдера, называемого ''provider''. Это имя может быть изменено на имя вашего провайдера, чтобы в дальнейшем вы могли использовать `load `provider`` для начала соединения.

Строка 12:

  Определяет телефонный номер для этого провайдера. Несколько телефонных номеров могут быть указаны с помощью двоеточия (`:`) или символа канала (`|`) в качестве разделителя. Различия между двумя разделителями описаны в ppp(8). Главным образом они заключаются в том, что если вы хотите перебирать номера, используйте двоеточие. Если вы хотите дозваниваться по первому номеру в первую очередь, и использовать другие номера только если дозвон по первому завершится неудачно, используйте символ канала. Всегда заключайте список номеров в кавычки, как показано в примере.

  Вы должны включить телефонный номер в кавычки (`"`) если в нем используются пробелы. Отсутствие кавычек может вызвать простую, но трудно обнаруживаемую ошибку.

Строки 13 и 14:

  Задают имя пользователя и пароль. При использовании приглашения login в стиле UNIX, эти значения используются командой `set login` через переменные \U и \P. При соединении с использованием PAP или CHAP, эти значения используются во время аутентификации.

Строка 15:

  Если вы используете PAP или CHAP, приглашение на вход не появится, и эта строка должна быть закомментирована или удалена. Обратитесь к странице аутентификация PAP и CHAP за дальнейшей информацией.

  Строка для входа записана в том же chat-подобном синтаксисе, что и строка для дозвона. В этом примере строка работает для сервиса, сессия входа которого выглядит примерно так:

      J. Random Provider
      login: foo
      password: bar
      protocol: ppp

  Вам потребуется изменить эту строку для использования с другим сервисом. При первом составлении скрипта убедитесь, что вы включили ''chat'' протоколирование, чтобы убедиться, что соединение происходит как ожидалось.

Строка 16:

  Установка максимального времени ожидания по умолчанию для соединения. В данном случае соединение будет разорвано автоматически после 300 секунд неактивности. Если вы не хотите, чтобы соединение разрывалось, установите эту переменную в нуль, или используйте параметр командной строки`-ddial`.

Строка 17:

  Устанавливает адрес интерфейса. Строка `x.x.x.x` должна быть заменена на IP адрес, который выделил вам провайдер. Строка `y.y.y.y` должна быть заменена на IP адрес шлюза провайдера (компьютер, к которому вы подключаетесь). Если провайдер не сообщил адрес шлюза, используйте `10.0.0.2/0`. Если вам требуется использовать ''вычисленные'' адреса, убедитесь, что создана запись в `/etc/ppp/ppp.linkup` в соответствии с инструкциями для PPP и динамических IP адресов. Если эта строка опущена, `ppp` не может быть запущен в режиме `-auto`.

Строка 18:

  Добавляет маршрут по умолчанию к шлюзу провайдера. Специальное слово `HISADDR` заменяется адресом шлюза, указанном в строке 17. Важно, чтобы эта строка появилась после строки 17, до нее переменная `HISADDR` еще не инициализирована.

  Если вы не будете запускать ppp с параметром `-auto`, эта строка должна быть перемещена в файл `ppp.linkup`.

Нет необходимости добавлять запись в `ppp.linkup`, если у вас статический IP адрес и ppp работает в режиме `-auto`, поскольку таблица маршрутизации настроена правильно еще до подключения. Однако, вы возможно захотите создать запись для запуска программ после соединения. Эта ситуация описана далее в примере по sendmail.

Примерные файлы настройки находятся в каталоге `/usr/share/examples/ppp/`.

##### 24.2.1.3.2. PPP и динамические IP адреса

Если провайдер не выделил статический IP адрес, `ppp` может быть настроен для определения локального и удаленного адреса. Это делается путем ''вычисления'' IP адреса и настройки его программой `ppp` с использованием IP Configuration Protocol (IPCP) после установления соединения. Файл настройки `ppp.conf` тот же, что и в примере PPP и статические IP адреса, со следующим изменением:

    17      set ifaddr 10.0.0.1/0 10.0.0.2/0 255.255.255.255

Как и раньше, не включайте номер строки, он используется только для ссылки на строку в этом примере. Требуется отступ хотя бы в один пробел.

Строка 17:

  Номер после символа `/` это число бит в адресе, которые будут запрошены ppp. Вы можете использовать более подходящие вам IP адреса, но пример выше всегда будет работать.

Если вы не используете режим `-auto`, потребуется создать запись в `/etc/ppp/ppp.linkup`. Этот файл используется после установки соединения. На этот момент `ppp` уже настроит адреса интерфейсов и станет возможным добавление записей в таблицу маршрутизации:

    1     provider:
    2      add default HISADDR

Строка 1:

  При установке соединения, `ppp` ищет запись в `ppp.linkup` по следующим правилам: сначала в соответствии с меткой, используемой в `ppp.conf`. Если это не сработает, ведется поиск записи для IP адреса шлюза. Это метка в IP записывается в виде IP адреса. Если запись все еще не найдена, используется запись `MYADDR`.

Строка 2:

  Эта строка сообщает `ppp` добавить маршрут по умолчанию, указывающий на `HISADDR`. `HISADDR` будет заменен на IP адрес шлюза, определенного IPCP.

Детальный пример находится в записи `pmdemand` файлов `/usr/share/examples/ppp/ppp.conf.sample` и `/usr/share/examples/ppp/ppp.linkup.sample`.

##### 24.2.1.3.3. Прием входящих звонков

При настройке ppp для приема входящих звонков на компьютере, подключенном к локальной сети, вам необходимо решить, перенаправлять ли пакеты в локальную сеть. Если вы будете делать это, выделите удаленной стороне IP адрес из диапазона адресов локальной сети, и используйте команду `enable proxy` в файле `/etc/ppp/ppp.conf`. Вам потребуется также убедиться, что в файле `/etc/rc.conf` присутствует строка:

    gateway_enable="YES"

##### 24.2.1.3.4. Какой getty?

Раздел Настройка FreeBSD для входящих соединений дает хорошее описание включения входящих соединений с использованием getty(8).

Альтернатива `getty` это mgetty, более интеллектуальная версия `getty`, разработанная специально для приема входящих звонков..

Преимущество использование `mgetty` в том, что она активно общается с модемами, то есть если порт будет выключен в `/etc/ttys`, модем не будет отвечать на звонок.

Последние версии `mgetty` (от 0.99beta и выше) поддерживают также автоматическое определение потоков PPP, позволяя клиентам безскриптовое подключение к серверу.

Обратитесь к разделу Mgetty и AutoPPP за дальнейшей информацией по `mgetty`.

##### 24.2.1.3.5. Права PPP

Программа `ppp` обычно запускается с правами пользователя `root`. Если вы хотите разрешить запуск `ppp` в режиме сервера с правами обычного пользователя путем запуска `ppp` как описано ниже, этого пользователя необходимо добавить в группу `network` в файле `/etc/group`.

Вам также потребуется дать ему доступ к одному или более разделов конфигурации, используя команду `allow`:

    allow users fred mary

Если эта команда используется в разделе `default`, она дает пользователю полный доступ.

##### 24.2.1.3.6. Оболочки PPP для пользователей с динамическими IP

Создайте файл, называющийся `/etc/ppp/ppp-shell` и содержащий следующее:

    #!/bin/sh
    IDENT=`echo $0 | sed -e 's/^.*-\(.*\)$/\1/'`
    CALLEDAS="$IDENT"
    TTY=`tty`

    if [ x$IDENT = xdialup ]; then
            IDENT=`basename $TTY`
    fi

    echo "PPP for $CALLEDAS on $TTY"
    echo "Starting PPP for $IDENT"

    exec /usr/sbin/ppp -direct $IDENT

Этот скрипт должен быть исполняемым. Теперь создайте на этот скрипт символическую ссылку с именем `ppp-dialup` с помощью следующей команды:

    # ln -s ppp-shell /etc/ppp/ppp-dialup

Используйте этот скрипт в качестве оболочки для удаленных пользователей. Ниже приведен пример записи в `/etc/password` для удаленных пользователей PPP с именем пользователя `pchilds` (не забывайте использовать `vipw` для редактирования файла паролей).

    pchilds:*:1011:300:Peter Childs PPP:/home/ppp:/etc/ppp/ppp-dialup

Создайте каталог `/home/ppp`, который доступен для чтения и содержит следующие файлы нулевой длины:

    -r--r--r--   1 root     wheel     0 May 27 02:23 .hushlogin
    -r--r--r--   1 root     wheel           0 May 27 02:22 .rhosts

Это предотвратит отображение `/etc/motd`.

##### 24.2.1.3.7. Оболочки PPP для пользователей со статическими IP

Создайте файл `ppp-shell` как в примере выше, и для каждой учетной записи со статически назначаемым IP создайте символическую ссылку на `ppp-shell`.

Например, если у вас три пользователя удаленного доступа, `fred`, `sam` и `mary`, которые подключаются к вашей сети класса C, выполните следующее:

    # ln -s /etc/ppp/ppp-shell /etc/ppp/ppp-fred
    # ln -s /etc/ppp/ppp-shell /etc/ppp/ppp-sam
    # ln -s /etc/ppp/ppp-shell /etc/ppp/ppp-mary

Оболочка каждого из этих пользователей удаленного доступа должна быть символической ссылкой, созданной выше (например, оболочка пользователя `mary` должна быть `/etc/ppp/ppp-mary`).

##### 24.2.1.3.8. Настройка `ppp.conf` для пользователей с динамическими IP

Файл `/etc/ppp/ppp.conf` должен содержать примерно такие строки:

    default:
      set debug phase lcp chat
      set timeout 0

    ttyd0:
      set ifaddr 203.14.100.1 203.14.100.20 255.255.255.255
      enable proxy

    ttyd1:
      set ifaddr 203.14.100.1 203.14.100.21 255.255.255.255
      enable proxy

> Замечание: Необходимо соблюдать отступы.

Раздел `default:` загружается для каждого соединения. Для каждой строки, включенной в `/etc/ttys`, создайте запись, подобную `ttyd0:` выше. Каждая строка должна содержать уникальные IP адреса из вашего пула IP адресов, выделенных пользователям с динамическими IP.

##### 24.2.1.3.9. Настройка `ppp.conf` для пользователей со статическими IP

Помимо содержимого, описанного в примере файла `/usr/share/examples/ppp/ppp.conf` выше, вам потребуется добавить раздел для каждого из пользователей со статическими IP. Мы продолжим использовать имена `fred`, `sam` и `mary` в качестве примера.

    fred:
      set ifaddr 203.14.100.1 203.14.101.1 255.255.255.255

    sam:
      set ifaddr 203.14.100.1 203.14.102.1 255.255.255.255

    mary:
      set ifaddr 203.14.100.1 203.14.103.1 255.255.255.255

Если требуется, файл `/etc/ppp/ppp.linkup` должен также содержать информацию о маршрутизации для каждого пользователя со статическим IP. В строке ниже через клиентское соединение добавляется маршрут к сети класса C`203.14.101.0`.

    fred:
      add 203.14.101.0 netmask 255.255.255.0 HISADDR

    sam:
      add 203.14.102.0 netmask 255.255.255.0 HISADDR

    mary:
      add 203.14.103.0 netmask 255.255.255.0 HISADDR

##### 24.2.1.3.10. `mgetty` и AutoPPP

Настройка и компиляция `mgetty` с параметром `AUTO_PPP` позволяет `mgetty` определять LCP фазу PPP соединений и автоматически порождать оболочку ppp. Однако, поскольку стандартный метод логин/пароль не используется, необходима аутентификация пользователей через PAP или CHAP.

В этом разделе предполагается, что пользователь успешно настроил, скомпилировал и установил версию `mgetty` с параметром `AUTO_PPP` (v0.99beta или более поздняя).

Убедитесь, что в файле `/usr/local/etc/mgetty+sendfax/login.config` имеется следующая строка:

    /AutoPPP/ -     -            /etc/ppp/ppp-pap-dialup

Это укажет `mgetty` запускать скрипт `ppp-pap-dialup` для обнаруженных соединений PPP.

Создайте файл `/etc/ppp/ppp-pap-dialup`, содержащий следующее (этот файл должен быть выполняемым):

    #!/bin/sh
    exec /usr/sbin/ppp -direct pap$IDENT

Для каждой линии, включенной в `/etc/ttys`, создайте соответствующую запись в `/etc/ppp/ppp.conf`. Она будет отлично сочетаться с тем, что было создано выше.

    pap:
      enable pap
      set ifaddr 203.14.100.1 203.14.100.20-203.14.100.40
      enable proxy

Для каждого пользователя, входящего по этому методу, в файле `/etc/ppp/ppp.secret` должна присутствовать запись с логином/паролем, или, в качестве альтернативы, для аутентификации пользователей по PAP через `/etc/password`, необходимо использовать следующий параметр.

    enable passwdauth

Если вы хотите присвоить некоторым пользователям статический IP, задайте его в качестве третьего аргумента в `/etc/ppp/ppp.secret`. Обратитесь к к `/usr/share/examples/ppp/ppp.secret.sample` за примерами.

##### 24.2.1.3.11. MS расширения

Возможна настройка PPP для выдачи адресов DNS и NetBIOS по запросу.

Для включения этих расширений с PPP версии 1.x, необходимо добавить к соответствующему разделу `/etc/ppp/ppp.conf`следующие строки.

    enable msext
    set ns 203.14.100.1 203.14.100.2
    set nbns 203.14.100.5

Для PPP версии 2 и выше:

    accept dns
    set dns 203.14.100.1 203.14.100.2
    set nbns 203.14.100.5

Клиентам будут выдаваться адреса первичного и вторичного серверов имен, и адрес хоста NetBIOS.

Если в версии 2 и выше строка `set dns` будет опущена, PPP использует значения из `/etc/resolv.conf`.

##### 24.2.1.3.12. Аутентификация PAP и CHAP

Некоторые провайдеры настраивают систему так, что аутентификация производится с использованием либо PAP либо CHAP. В этом случае, приглашение `login:` при соединении не выдается и соединение PPP начинается сразу.

PAP менее безопасен, чем CHAP, но безопасность в данном случае не страдает, поскольку хотя пароли и передаются открытым текстом, они передаются только по модемной линии. У кракеров не так много возможностей для кражи паролей.

В примерах выше PPP и статические IP адреса или PPP и динамические IP адреса должны быть сделаны следующие изменения:

    13      set authname MyUserName
    14      set authkey MyPassword
    15      set login

Строка 13:

  Эта строка указывает имя пользователя PAP/CHAP. Вам потребуется заменить `MyUserName` на правильное значение.

Строка 14:

  Эта строка указывает пароль PAP/CHAP. Вам потребуется заменить `MyPassword` на правильное значение. Вы можете также добавить дополнительную строку, такую как:

      16      accept PAP

  или

      16      accept CHAP

  для явного указания протокола, но и PAP и CHAP поддерживаются по умолчанию.

Строка 15:

  Ваш провайдер обычно не потребует входа на сервер при использовании PAP или CHAP. Следовательно, вы должны отключить строку ''set login''.

##### 24.2.1.3.13. Изменение настроек `ppp` ''на лету''

Возможно изменение настроек `ppp` программы во время ее работы в фоновом режиме, но только если открыт соответствующий диагностический порт. Для его открытия добавьте в настройку следующую строку:

    set server /var/run/ppp-tun%d DiagnosticPassword 0177

С этой директивой ppp будет прослушивать заданный UNIX сокет, запрашивая у клиентов пароль перед выдачей доступа. Символы`%d` заменяются на номер используемого устройства `tun`.

Как только сокет открыт, в скриптах, выполняющих настройку работающей программы, можно использовать pppctl(8).

#### 24.2.1.4. Использование NAT

PPP имеет возможность использовать встроенный NAT без преобразования пакетов в ядре. Эта возможность может быть включена следующей строкой в `/etc/ppp/ppp.conf`:

    nat enable yes

Альтернативно, PPP NAT может быть включен параметром командной строки `-nat`. Существует также переменная `/etc/rc.conf` `ppp_nat`, которая включена по умолчанию.

Если вы используете эту возможность, вы также можете найти полезными параметры `/etc/ppp/ppp.conf` для включения пересылки входящих соединений:

    nat port tcp 10.0.0.2:ftp ftp
    nat port tcp 10.0.0.2:http http

или отключить все входящие соединения

    nat deny_incoming yes

#### 24.2.1.5. Завершающая настройка системы

Теперь, когда программа `ppp` настроена, осталось выполнить еще несколько действий прежде, чем все это заработает. Они выполняются путем редактирования файла `/etc/rc.conf`.

Просматривая этот файл, убедитесь, что добавлена строка `hostname=`, например:

    hostname="foo.example.com"

Если провайдер предоставил вам статический IP адрес и имя, возможно лучше всего использовать это имя в качестве имени хоста.

Проверьте переменную `network_interfaces`. Если вы хотите настроить систему для дозвона по требованию, убедитесь, что устройство `tun0` добавлено в список, иначе удалите его.

    network_interfaces="lo0 tun0"
    ifconfig_tun0=

> Замечание: Переменная `ifconfig_tun0` должна быть пуста, необходимо также создать файл `/etc/start_if.tun0`. В этом файле должна находиться строка:

>     ppp -auto mysystem

> Этот скрипт выполняется во время настройки сети, запуская даемона ppp в автоматическом режиме. Если эта машина является шлюзом для локальной сети, вы можете также использовать переключатель `-alias`. Обратитесь к странице справочника за дальнейшей информацией.

Убедитесь, что программа маршрутизации отключена переменной в файле `/etc/rc.conf`:

    router_enable="NO"

Важно, чтобы даемон `routed` не был запущен, поскольку он может удалить запись маршрута по умолчанию, создаваемую `ppp`.

Возможно, стоит обратить внимание на переменную `sendmail_flags` и убедиться, что она не включает параметр `-q`, иначе `sendmail` попытается сразу же обратиться к сети, и компьютер может начать дозвон. Вы можете попробовать:

    sendmail_flags="-bd"

Обратная сторона этого решения в том, что необходим запуск очереди `sendmail` после поднятия соединения ppp:

    # /usr/sbin/sendmail -q

Вы можете использовать команду `!bg` в файле `ppp.linkup` для автоматического выполнения этой задачи:

    1     provider:
    2       delete ALL
    3       add 0 0 HISADDR
    4       !bg sendmail -bd -q30m

Если вам это не нужно, возможна настройка ''dfilter'' для блокирования SMTP трафика. Обратитесь файлам примеров за дальнейшей информацией.

Все, что осталось, это перегрузить компьютер. После перезагрузки вы можете либо выполнить:

    # ppp

и затем набрать `dial provider` для запуска сессии PPP, либо, если вы хотите, чтобы программа `ppp` начинала соединение автоматически при появлении исходящего трафика (и файл `start_if.tun0` не создан), выполните:

    # ppp -auto provider

#### 24.2.1.6. Итоги

Для первоначальной настройки ppp необходимо пройти следующие шаги:

Сторона клиента:

1. Убедитесь, что устройство `tun` встроено в ядро.

2. Убедитесь, что устройства `tun`N`` находятся в каталоге `/dev`.

3. Создайте запись в `/etc/ppp/ppp.conf`. Пример `pmdemand` должен подойти для большинства провайдеров.

4. Если у вас динамический IP адрес, создайте запись в `/etc/ppp/ppp.linkup`.

5. Обновите файл `/etc/rc.conf`.

6. Создайте скрипт `start_if.tun0`, если необходим дозвон по требованию.

Сторона сервера:

1. Убедитесь, что устройство `tun` встроено в ядро.

2. Убедитесь, что устройства `tun`N`` находятся в каталоге `/dev`.

3. Создайте запись в `/etc/passwd` (используя программу vipw(8)).

4. Создайте профиль в домашнем каталоге пользователя, запускающий `ppp -direct direct-server` или подобную команду.

5. Создайте запись в `/etc/ppp/ppp.conf`. Пример `direct-server` должен подойти.

6. Создайте запись в `/etc/ppp/ppp.linkup`.

7. Обновите файл `/etc/rc.conf`.

## 24.3. PPP уровня ядра

Части документа первоначально предоставили Gennady B. Sorokopud, Robert Huff.

### 24.3.1. Настройка PPP уровня ядра

Перед началом настройки PPP на вашем компьютере, убедитесь, что `pppd` находится в `/usr/sbin` и каталог `/etc/ppp` существует.

`pppd` может работать в двух режимах:

1. В качестве ''клиента'' -- когда вы хотите подключить компьютер к внешнему миру через последовательное соединение PPP или модемную линию.

2. В качестве ''сервера'' -- когда компьютер подключен к сети и используется для подключения других компьютеров через PPP.

В обеих случаях вам потребуется настроить файл параметров (`/etc/ppp/options` или `~/.ppprc` если на вашем компьютере более одного пользователя работают с PPP).

Вам потребуется также программа для модемных/последовательных линий (предпочтительно `comms/kermit`) для дозвона и установки соединения с удаленным хостом.

### 24.3.2. Использование `pppd` в качестве клиента

Основано на информации, предоставленной Trev Roydhouse.

Для подключения к линии PPP терминального сервера Cisco может использоваться следующий файл `/etc/ppp/options`.

    crtscts     # enable hardware flow control
    modem           # modem control line
    noipdefault     # remote PPP server must supply your IP address
                    # if the remote host does not send your IP during IPCP
                    # negotiation, remove this option
    passive         # wait for LCP packets
    domain ppp.foo.com      # put your domain name here

    :<remote_ip>    # put the IP of remote PPP host here
                    # it will be used to route packets via PPP link
                    # if you didn't specified the noipdefault option
                    # change this line to <local_ip>:<remote_ip>

    defaultroute    # put this if you want that PPP server will be your
                    # default router

Для подключения:

1. Дозвонитесь на удаленный хост, используя kermit (или любую другую модемную программу), и введите ваше имя пользователя и пароль (или те данные, которые требуются для установления PPP соединения с удаленным хостом).

2. Выйдите из kermit (без обрыва соединения).

3. Введите следующее:

       # /usr/src/usr.sbin/pppd.new/pppd /dev/tty01 19200

   Убедитесь, что выбраны подходящая скорость и правильное имя устройства.

Теперь ваш компьютер подключен по PPP. Если соединение не состоялось, вы можете добавить параметр `debug` к файлу `/etc/ppp/options`, и отследить проблему по сообщениям на консоли.

Следующий скрипт `/etc/ppp/pppup` проведет все 3 стадии в автоматическом режиме:

    #!/bin/sh
    ps ax |grep pppd |grep -v grep
    pid=`ps ax |grep pppd |grep -v grep|awk '{print $1;}'`
    if [ "X${pid}" != "X" ] ; then
            echo 'killing pppd, PID=' ${pid}
            kill ${pid}
    fi
    ps ax |grep kermit |grep -v grep
    pid=`ps ax |grep kermit |grep -v grep|awk '{print $1;}'`
    if [ "X${pid}" != "X" ] ; then
            echo 'killing kermit, PID=' ${pid}
            kill -9 ${pid}
    fi

    ifconfig ppp0 down
    ifconfig ppp0 delete

    kermit -y /etc/ppp/kermit.dial
    pppd /dev/tty01 19200

`/etc/ppp/kermit.dial` это скрипт kermit, который дозванивается до удаленного хоста и проходит необходимую авторизацию (пример такого скрипта находится в конце этого раздела).

Используйте следующий скрипт `/etc/ppp/pppdown` для отключения от PPP линии:

    #!/bin/sh
    pid=`ps ax |grep pppd |grep -v grep|awk '{print $1;}'`
    if [ X${pid} != "X" ] ; then
            echo 'killing pppd, PID=' ${pid}
            kill -TERM ${pid}
    fi

    ps ax |grep kermit |grep -v grep
    pid=`ps ax |grep kermit |grep -v grep|awk '{print $1;}'`
    if [ "X${pid}" != "X" ] ; then
            echo 'killing kermit, PID=' ${pid}
            kill -9 ${pid}
    fi

    /sbin/ifconfig ppp0 down
    /sbin/ifconfig ppp0 delete
    kermit -y /etc/ppp/kermit.hup
    /etc/ppp/ppptest

Проверьте, запущен ли еще `pppd`, выполнив `/usr/etc/ppp/ppptest`, который выглядит примерно так:

    #!/bin/sh
    pid=`ps ax| grep pppd |grep -v grep|awk '{print $1;}'`
    if [ X${pid} != "X" ] ; then
            echo 'pppd running: PID=' ${pid-NONE}
    else
            echo 'No pppd running.'
    fi
    set -x
    netstat -n -I ppp0
    ifconfig ppp0

Для обрыва соединения, выполните `/etc/ppp/kermit.hup`, который должен содержать:

    set line /dev/tty01    ; put your modem device here
    set speed 19200
    set file type binary
    set file names literal
    set win 8
    set rec pack 1024
    set send pack 1024
    set block 3
    set term bytesize 8
    set command bytesize 8
    set flow none

    pau 1
    out +++
    inp 5 OK
    out ATH0\13
    echo \13
    exit

Существует альтернативный метод, использующий `chat` вместо `kermit`:

Для установления соединения `pppd`достаточно двух файлов.

`/etc/ppp/options`:

    /dev/cuaa1 115200

    crtscts     # enable hardware flow control
    modem       # modem control line
    connect "/usr/bin/chat -f /etc/ppp/login.chat.script"
    noipdefault # remote PPP serve must supply your IP address
                # if the remote host doesn't send your IP during
                    # IPCP negotiation, remove this option
    passive         # wait for LCP packets
    domain <your.domain>  # put your domain name here

    :       # put the IP of remote PPP host here
                # it will be used to route packets via PPP link
                    # if you didn't specified the noipdefault option
                    # change this line to <local_ip>:<remote_ip>

    defaultroute    # put this if you want that PPP server will be
                # your default router

`/etc/ppp/login.chat.script`:

> Замечание: Все это может быть расположено на одной строке.

    ABORT BUSY ABORT 'NO CARRIER' "" AT OK ATDT<phone.number>
      CONNECT "" TIMEOUT 10 ogin:-\\r-ogin: <login-id>
      TIMEOUT 5 sword: <password>

Как только эти файлы будут созданы и отредактированы, необходимо только запустить `pppd`, вот так:

    # pppd

### 24.3.3. Использование `pppd` в качестве сервера

`/etc/ppp/options` должен содержать примерно следующее:

    crtscts                         # Hardware flow control
    netmask 255.255.255.0           # netmask (not required)
    192.114.208.20:192.114.208.165  # IP's of local and remote hosts
                                    # local ip must be different from one
                                    # you assigned to the Ethernet (or other)
                                    # interface on your machine.
                                    # remote IP is IP address that will be
                                    # assigned to the remote machine
    domain ppp.foo.com              # your domain
    passive                         # wait for LCP
    modem                           # modem line

Следующий скрипт `/etc/ppp/pppserv` укажет pppd работать в качестве сервера:

    #!/bin/sh
    ps ax |grep pppd |grep -v grep
    pid=`ps ax |grep pppd |grep -v grep|awk '{print $1;}'`
    if [ "X${pid}" != "X" ] ; then
            echo 'killing pppd, PID=' ${pid}
            kill ${pid}
    fi
    ps ax |grep kermit |grep -v grep
    pid=`ps ax |grep kermit |grep -v grep|awk '{print $1;}'`
    if [ "X${pid}" != "X" ] ; then
            echo 'killing kermit, PID=' ${pid}
            kill -9 ${pid}
    fi

    # reset ppp interface
    ifconfig ppp0 down
    ifconfig ppp0 delete

    # enable autoanswer mode
    kermit -y /etc/ppp/kermit.ans

    # run ppp
    pppd /dev/tty01 19200

Используйте этот скрипт `/etc/ppp/pppservdown` для остановки сервера:

    #!/bin/sh
    ps ax |grep pppd |grep -v grep
    pid=`ps ax |grep pppd |grep -v grep|awk '{print $1;}'`
    if [ "X${pid}" != "X" ] ; then
            echo 'killing pppd, PID=' ${pid}
            kill ${pid}
    fi
    ps ax |grep kermit |grep -v grep
    pid=`ps ax |grep kermit |grep -v grep|awk '{print $1;}'`
    if [ "X${pid}" != "X" ] ; then
            echo 'killing kermit, PID=' ${pid}
            kill -9 ${pid}
    fi
    ifconfig ppp0 down
    ifconfig ppp0 delete

    kermit -y /etc/ppp/kermit.noans

Следующий kermit скрипт (`/etc/ppp/kermit.ans`) включит/отключит режим ответа модема на входящие звонки. Он должен выглядеть примерно так:

    set line /dev/tty01
    set speed 19200
    set file type binary
    set file names literal
    set win 8
    set rec pack 1024
    set send pack 1024
    set block 3
    set term bytesize 8
    set command bytesize 8
    set flow none

    pau 1
    out +++
    inp 5 OK
    out ATH0\13
    inp 5 OK
    echo \13
    out ATS0=1\13   ; change this to out ATS0=0\13 if you want to disable
                    ; autoanswer mode
    inp 5 OK
    echo \13
    exit

Скрипт, называющийся `/etc/ppp/kermit.dial`, используется для дозвона и аутентификации на удаленном хосте. Вам потребуется приспособить его под собственные нужды. Поместите ваш логин и пароль в этот скрипт; вам также потребуется изменить операторы input в зависимости от ответов от модема и удаленного хоста.

    ;
    ; put the com line attached to the modem here:
    ;
    set line /dev/tty01
    ;
    ; put the modem speed here:
    ;
    set speed 19200
    set file type binary            ; full 8 bit file xfer
    set file names literal
    set win 8
    set rec pack 1024
    set send pack 1024
    set block 3
    set term bytesize 8
    set command bytesize 8
    set flow none
    set modem hayes
    set dial hangup off
    set carrier auto                ; Then SET CARRIER if necessary,
    set dial display on             ; Then SET DIAL if necessary,
    set input echo on
    set input timeout proceed
    set input case ignore
    def \%x 0                       ; login prompt counter
    goto slhup

    :slcmd                          ; put the modem in command mode
    echo Put the modem in command mode.
    clear                           ; Clear unread characters from input buffer
    pause 1
    output +++                      ; hayes escape sequence
    input 1 OK\13\10                ; wait for OK
    if success goto slhup
    output \13
    pause 1
    output at\13
    input 1 OK\13\10
    if fail goto slcmd              ; if modem doesn't answer OK, try again

    :slhup                          ; hang up the phone
    clear                           ; Clear unread characters from input buffer
    pause 1
    echo Hanging up the phone.
    output ath0\13                  ; hayes command for on hook
    input 2 OK\13\10
    if fail goto slcmd              ; if no OK answer, put modem in command mode

    :sldial                         ; dial the number
    pause 1
    echo Dialing.
    output atdt9,550311\13\10               ; put phone number here
    assign \%x 0                    ; zero the time counter

    :look
    clear                           ; Clear unread characters from input buffer
    increment \%x                   ; Count the seconds
    input 1 {CONNECT }
    if success goto sllogin
    reinput 1 {NO CARRIER\13\10}
    if success goto sldial
    reinput 1 {NO DIALTONE\13\10}
    if success goto slnodial
    reinput 1 {\255}
    if success goto slhup
    reinput 1 {\127}
    if success goto slhup
    if < \%x 60 goto look
    else goto slhup

    :sllogin                        ; login
    assign \%x 0                    ; zero the time counter
    pause 1
    echo Looking for login prompt.

    :slloop
    increment \%x                   ; Count the seconds
    clear                           ; Clear unread characters from input buffer
    output \13
    ;
    ; put your expected login prompt here:
    ;
    input 1 {Username: }
    if success goto sluid
    reinput 1 {\255}
    if success goto slhup
    reinput 1 {\127}
    if success goto slhup
    if < \%x 10 goto slloop         ; try 10 times to get a login prompt
    else goto slhup                 ; hang up and start again if 10 failures

    :sluid
    ;
    ; put your userid here:
    ;
    output ppp-login\13
    input 1 {Password: }
    ;
    ; put your password here:
    ;
    output ppp-password\13
    input 1 {Entering SLIP mode.}
    echo
    quit

    :slnodial
    echo \7No dialtone.  Check the telephone line!\7
    exit 1

    ; local variables:
    ; mode: csh
    ; comment-start: "; "
    ; comment-start-skip: "; "
    ; end:

## 24.4. Решение проблем с соединениями PPP

Предоставил Tom Rhodes.

Этот раздел охватывает несколько вопросов, которые могут возникнуть при использовании PPP через модемные соединения. Например, предположим, что вам потребовалось узнать, какое именно приглашение отображает система, до которой вы дозваниваетесь. Некоторые провайдеры выдают приглашение `ssword`, другие `password`; если `ppp` скрипт не обрабатывает такие приглашения, попытка входа завершится неудачно. Наиболее общий способ отладки соединений `ppp` это подключение вручную. Ниже дана пошаговая информация по подключению вручную.

### 24.4.1. Проверьте файлы устройств

Если вы пересобирали ядро, проверьте устройство `sio`. Если вы не перенастраивали ядро, нет причин для беспокойства. Просто проверьте вывод `dmesg` для модемного устройства следующей командой:

    #dmesg | grep sio

Вы должны получить информацию о устройствах `sio`. Это COM порты, которые нам необходимы. Если ваш модем работает как стандартный последовательный порт, вы увидите его на `sio1`, или `COM2`. Если это так, вам не требуется пересобирать ядро, необходимо лишь создать последовательное устройство. Вы можете сделать это, зайдя в `/dev` и запустив скрипт `MAKEDEV`. Создайте последовательные устройства:

    # sh MAKEDEV cuaa0 cuaa1 cuaa2 cuaa3

Если модем находится на `sio1`, или `COM2` в DOS, модемным устройством будет `/dev/cuaa1`.

### 24.4.2. Подключение вручную

Подключение к интернет с контролированием `ppp` вручную это быстрый, легкий и действенный способ отладки соединения или получения информации о обслуживании провайдером клиентского соединения `ppp`. Запустите PPP из командной строки. В примерах в качестве имени хоста мы будем использовать example. Запустите `ppp`, введя команду `ppp`:

    # ppp

Теперь программа `ppp` запущена.

    ppp ON example> set device /dev/cuaa1

Мы указали модемное устройство, в данном случае `cuaa1`.

    ppp ON example> set speed 115200

Мы установили скорость подключения к модему, в данном случае 115,200 кбит/с.

    ppp ON example> enable dns

Сообщает `ppp` настроить разрешение имен, добавив строки в `/etc/resolv.conf`. Если `ppp` не может определить имя хоста, его можно настроить позже вручную.

    ppp ON example> term

Переключение в ''терминальный'' режим для контроля модема вручную.

    deflink: Entering terminal mode on /dev/cuaa1
    type '~h' for help

    at
    OK
    atdt123456789

Использование команды `at` для инициализации модема, а затем `atdt` и номера провайдера для начала дозвона.

    CONNECT

Подтверждение соединения, если есть проблемы с соединением, не вызванные проблемами в оборудовании, здесь мы попытаемся решить их.

    ISP Login:myusername

Здесь вам предлагается ввести имя пользователя в приглашение, выводимое сервером провайдера.

    ISP Pass:mypassword

Здесь предлагается ввести пароль, предоставленный провайдером. Как и при входе в FreeBSD, пароль не отображается.

    Shell or PPP:ppp

В зависимости от вашего провайдера, это приглашение может не появиться. Здесь задается вопрос, хотите ли вы использовать оболочку на компьютере провайдера или запустить `ppp`. В этом примере мы выбрали `ppp`, поскольку хотим соединиться с интернет.

    Ppp ON example>

Обратите внимание, что в этом примере первая буква `p` появилась в верхнем регистре. Это означает, что мы успешно подключились к провайдеру.

    PPp ON example>

Мы успешно аутентифицировались у провайдера и ожидаем присвоения IP адреса.

    PPP ON example>

Мы завершили согласование IP адресов, соединение успешно установлено.

    PPP ON example>add default HISADDR

Это маршрут по умолчанию, его необходимо настроить, чтобы сделать возможной связь с внешним миром, поскольку на этот момент установлена связь только с удаленной стороной. Если маршрут не устанавливается из-за уже существующего маршрута, добавьте символ `!` перед `add`. Альтернативно вы можете сделать настройку перед установкой соединения.

Если все прошло удачно, на данный момент должно работать соединение с интернет, которое можно поместить в фоновый режим клавишами CTRL+z. Переход строки `PPP` в приглашении в нижний регистр (`ppp`) означает, что соединение было разорвано. Таким образом, символы P в верхнем регистре означают наличие соединения, а в нижнем -- потерю соединения.

#### 24.4.2.1. Отладка

Если у вас выделенная линия и нет необходимости устанавливать соединение, выключите контроль передачи данных CTS/RTS командой `set ctsrts off`. Это обычно необходимо при подключении к поддерживающим PPP терминальным серверам, когда PPP прерывается при попытке записать данные в ваше соединение, и ожидает сигнала CTS, или Clear To Send, который не появляется. Если вы используете этот параметр, используйте также параметр `set accmap`, который может быть необходим для устранения зависимости от оборудования путем пропускания определенных символов через соединение, обычно XON/XOFF. Обратитесь к странице справочника ppp(8) за более подробной информацией по этому параметру и его использованию.

Если у вас старый модем, может потребоваться использование `set parity even`. Проверка четности по умолчанию отключена, но она используется для для устранения ошибок (с серьезным увеличением объема трафика) на старых модемах и у некоторых провайдеров.

PPP может не вернуться в командный режим, что обычно вызвано ошибкой согласования, когда провайдер ждет от вас начала процесса согласования. В этот момент использование команды `~p` заставит ppp начать отправку настроечной информации.

Если вы не получаете приглашения на вход, скорее всего вам требуется использование аутентификации PAP или CHAP вместо UNIX стиля как в примерах выше. Для использования PAP или CHAP просто добавьте следующие параметры PPP перед переходом в терминальный режим:

    ppp ON example> set authname myusername

Необходимо заменить `myusername` на имя пользователя, выданное провайдером.

    ppp ON example> set authkey mypassword

Где `mypassword` должен быть заменен на пароль, выданный провайдером.

Если вы подключаетесь, не можете определить ни одно доменное имя, попробуйте использовать ping(8) с каким-либо IP адресом и просмотрите выводимую информацию. Если 100 процентов (100%) пакетов теряются, скорее всего не назначен маршрут по умолчанию. Дважды проверьте, что параметр `add default HISADDR` установлен во время соединения. Если вы можете подключиться к удаленному IP адресу, возможно, что адрес сервера имен не был добавлен в `/etc/resolv.conf`. Этот файл должен выглядеть примерно так:

    domain example.com
    nameserver x.x.x.x
    nameserver y.y.y.y

Где `x.x.x.x` и `y.y.y.y` должны быть заменены на IP адреса DNS серверов провайдера. Эта информация может предоставляться провайдером, вы можете выяснить это в службе поддержки.

Вы можете также настроить syslog(3) для протоколирования PPP соединения. Просто добавьте:

    !ppp
    *.*     /var/log/ppp.log

в файл `/etc/syslog.conf`. В большинстве случаев эти строки уже присутствуют.

## 24.5. Использование PPP через Ethernet (PPPoE)

Предоставил (с http://node.to/freebsd/how-tos/how-to-freebsd-pppoe.html) Jim Mock.

Этот раздел описывает настройку PPP через Ethernet (PPP over Ethernet, PPPoE).

### 24.5.1. Настройка ядра

Для PPPoE более не требуется настройка ядра. Если необходимая поддержка netgraph не встроена в ядро, она будет динамически загружена ppp.

### 24.5.2. Настройка `ppp.conf`

Вот пример работающего `ppp.conf`:

    default:
      set log Phase tun command # you can add more detailed logging if you wish
      set ifaddr 10.0.0.1/0 10.0.0.2/0

    name_of_service_provider:
      set device PPPoE:xl1 # replace xl1 with your Ethernet device
      set authname YOURLOGINNAME
      set authkey YOURPASSWORD
      set dial
      set login
      add default HISADDR

### 24.5.3. Запуск ppp

Под пользователем `root` вы можете запустить:

    # ppp -ddial name_of_service_provider

### 24.5.4. Запуск ppp при загрузке

Добавьте к `/etc/rc.conf` следующее:

    ppp_enable="YES"
    ppp_mode="ddial"
    ppp_nat="YES"   # if you want to enable nat for your local network, otherwise NO
    ppp_profile="name_of_service_provider"

### 24.5.5. Использование тега сервиса PPPoE

Иногда для установки соединения необходимо использовать тег сервиса. Теги сервисов используются для различения PPPoE серверов, подключенных к одной сети.

В документации, предоставляемой провайдером, должна находиться необходимая информация о теге сервиса. Если вы не можете ее обнаружить, обратитесь в службу поддержки.

В крайнем случае, вы можете попробовать метод, предложенный в программе Roaring Penguin PPPoE, которая находится в коллекции портов. Учтите, что этот метод может сделать ваш модем неработоспособным, так что дважды подумайте перед тем, как воспользоваться им. Просто установите программу, поставляемую с модемом вашим провайдером. Затем, войдите в меню System программы. Имя вашего профиля должно находиться здесь. Обычно это ISP.

Имя профиля (тег сервиса) будет использоваться в записи настройки PPPoE в файле `ppp.conf` (часть команды `set device`, относящаяся к провайдеру). Обратитесь к странице справочника ppp(8) за более подробной информацией. Эта команда должна выглядеть примерно так:

    set device PPPoE:xl1:ISP

Не забудьте изменить `xl1` на имя устройства вашей Ethernet карты.

Не забудьте изменить `ISP` на профиль, определенный вами ранее.

Дополнительная информация:

- Cheaper Broadband with FreeBSD on DSL, опубликовал Renaud Waldura.

- Nutzung von T-DSL und T-Online mit FreeBSD by Udo Erdelhoff (на немецком).

### 24.5.6. PPPoE c 3Com® HomeConnect® ADSL Modem Dual Link

Этот модем не поддерживает RFC 2516 (Метод соединения PPP через Ethernet (PPPoE), написанный L. Mamakos, K. Lidl, J. Evarts, D. Carrel, D. Simone, и R. Wheeler). Вместо этого, для фреймов Ethernet используются различные коды типов пакетов. Сообщите 3Com если считаете, что они должны соблюдать спецификации PPPoE.

Для включения поддержки этого нестандартного устройства, в FreeBSD необходимо установить переменную sysctl. Это может быть сделано автоматически, поместите в `/etc/sysctl.conf` следующую переменную:

    net.graph.nonstandard_pppoe=1

или, для непосредственного включения, выполните команду `sysctl net.graph.nonstandard_pppoe=1`.

К сожалению, поскольку эта настройка влияет на всю систему, невозможно одновременно взаимодействовать с нормальным PPPoE клиентом или сервером и 3Com HomeConnect® ADSL Modem.

## 24.6. Использование PPP через ATM (PPPoA)

Далее описано как настроить PPP через ATM (PPP over ATM, PPPoA). PPPoA популярен у европейских провайдеров DSL.

### 24.6.1. Использование PPPoA с Alcatel SpeedTouch™ USB

Поддержка PPPoA для этого устройства в FreeBSD поставляется в виде порта, поскольку встроенное программное обеспечение поставляется под лицензионным соглашением Alcatel и не может свободно распространяться с основной системой FreeBSD.

Для установки этой программы, просто используйте коллекцию портов. Установите порт `net/pppoa` и следуйте инструкциям.

Как и многие устройства USB, Alcatel SpeedTouch™ USB должен загрузить встроенное программное обеспечение с компьютера. Возможна автоматизация этого процесса в FreeBSD, чтобы эта передача происходила при подключении устройства к порту USB. Для включения этой автоматической передачи необходимо добавить в `/etc/usbd.conf` нижеприведенную информацию. Этот файл необходимо отредактировать под пользователем `root`.

    device "Alcatel SpeedTouch USB"
        devname "ugen[0-9]+"
        vendor 0x06b9
        product 0x4061
        attach "/usr/local/sbin/modem_run -f /usr/local/libdata/mgmt.o"

Для включения даемона USB, usbd, поместите в `/etc/rc.conf` следующую строку:

    usbd_enable="YES"

Возможна также настройка ppp для дозвона при запуске. Для этого добавьте в `/etc/rc.conf` нижеприведенные строки. Опять же, для этого вам необходимо войти под пользователем `root`.

    ppp_enable="YES"
    ppp_mode="ddial"
    ppp_profile="adsl"

Необходимо также использовать пример файла `ppp.conf`, поставляемый с портом `net/pppoa`.

### 24.6.2. Использование mpd

Вы можете использовать mpd для подключения к различным сервисам, в частности к сервисам PPTP. Вы можете найти mpd в коллекции портов, `net/mpd`. Многие ADSL модемы требуют, чтобы PPTP туннель был создан между модемом и компьютером, один из таких модемов это Alcatel SpeedTouch Home.

Сначала установите порт, затем настройте mpd под собственные нужды и настройки провайдера. Порт помещает набор примеров настройки в каталог ``PREFIX`/etc/mpd/`. `PREFIX` означает каталог, в который устанавливаются порты, по умолчанию это `/usr/local/`. Полное руководство по настройке mpd доступно в HTML формате после установки порта. Оно находится в ``PREFIX`/share/doc/mpd/`. Ниже находится пример настройки mpd для соединения с ADSL сервисом. Настройка разделена на два файла, первый это `mpd.conf`:

    default:
        load adsl

    adsl:
        new -i ng0 adsl adsl
        set bundle authname username
        set bundle password password
        set bundle disable multilink

        set link no pap acfcomp protocomp
        set link disable chap
        set link accept chap
        set link keep-alive 30 10

        set ipcp no vjcomp
        set ipcp ranges 0.0.0.0/0 0.0.0.0/0

        set iface route default
        set iface disable on-demand
        set iface enable proxy-arp
        set iface idle 0

        open

  Имя пользователя, используемое для аутентификации у провайдера.
  Пароль, используемый для аутентификации у провайдера.

Файл `mpd.links` содержит информацию о соединении или соединениях, которые вы планируете установить. Пример `mpd.links`, соответствующий приведенному выше примеру:

    adsl:
        set link type pptp
        set pptp mode active
        set pptp enable originate outcall
        set pptp self 10.0.0.1
        set pptp peer 10.0.0.138

  IP адрес компьютера FreeBSD, с которого вы будете использовать mpd.
  IP адрес модема ADSL. Для Alcatel SpeedTouch Home этот адрес по умолчанию `10.0.0.138`.

Инициализация соединения возможно простым выполнением следующей команды под `root`:

    # mpd -b adsl

Вы можете просмотреть статус соединения с помощью следующей команды:

    % ifconfig ng0
    ng0: flags=88d1<UP,POINTOPOINT,RUNNING,NOARP,SIMPLEX,MULTICAST> mtu 1500
         inet 216.136.204.117 --> 204.152.186.171 netmask 0xffffffff

Использование mpd это рекомендуемый способ подключения к сервису ADSL из FreeBSD.

### 24.6.3. Использование pptpclient

Возможно также использование FreeBSD для подключения к сервисам PPPoA с помощью `net/pptpclient`.

Для подключения к сервису DSL с использованием `net/pptpclient`, установите порт или пакет и отредактируйте `/etc/ppp/ppp.conf`. Вам потребуется работать под `root`. Пример настройки `ppp.conf` дан ниже. За дальнейшей информацией по параметрам `ppp.conf` обратитесь к странице справочника ppp, ppp(8).

    adsl:
     set log phase chat lcp ipcp ccp tun command
     set timeout 0
     enable dns
     set authname username
     set authkey password
     set ifaddr 0 0
     add default HISADDR

  Имя пользователя вашей учетной записи у провайдера DSL.
  Пароль для вашей учетной записи.

> Внимание: Поскольку вам необходимо поместить пароль в незашифрованном виде в файл `ppp.conf`, убедитесь что никто другой не сможет прочесть содержимое этого файла. Следующая последовательность команд сделает этот файл доступным для чтения только пользователю `root`. Обратитесь к страницам справочника chmod(1) и chown(8) за дальнейшей информацией.

>     # chown root:wheel /etc/ppp/ppp.conf
>     # chmod 600 /etc/ppp/ppp.conf

Следующая команда откроет туннель для PPP сессии к вашему DSL маршрутизатору. Модемы Ethernet DSL поставляются с настроенным IP адресом локальной сети, к которому вы подключаетесь. У Alcatel SpeedTouch Home этот адрес `10.0.0.138`. В документации на ваш маршрутизатор должно быть указано, какой адрес используется. Для открытия туннеля и начала PPP сессии выполните:

    # pptp address adsl

> Подсказка: Чтобы вернуться в приглашение командной строки после выполнения этой команды, добавьте символ ''&'' в конец строки.

Устройство виртуального туннеля `tun` будет создано для взаимодействия между процессами pptp и ppp. Как только вы вернетесь в приглашение, или процесс pptp выполнит соединение, вы можете проверить туннель примерно такой командой:

    % ifconfig tun0
    tun0: flags=8051<UP,POINTOPOINT,RUNNING,MULTICAST> mtu 1500
            inet 216.136.204.21 --> 204.152.186.171 netmask 0xffffff00
            Opened by PID 918

Если вы не сможете соединиться, проверьте настройку маршрутизатора, которая обычно доступна через telnet или через веб браузер. Если вы все еще не можете подключиться, проверьте вывод команды `pptp` и содержимое лог файла ppp, `/var/log/ppp.log`.

## 24.7. Использование SLIP

Первоначально предоставил Satoshi Asami. Дополнительный материал предоставили Guy Helmer, Piero Serini.

### 24.7.1. Настройка SLIP клиента

Ниже дан один из способов настройки FreeBSD для подключения к SLIP сети со статическим адресом. Для динамического подключения (адрес изменяется при каждом дозвоне) возможно потребуется более сложная настройка.

Сначала определите, к какому последовательному порту подключен модем. Многие создают символическую ссылку, такую как `/dev/modem`, на настоящий файл устройства, `/dev/cuaaN`. Это позволяет абстрагироваться от имени файла устройства, например если вы переносите модем на другой порт. Довольно сложно править множество файлов в `/etc` и `.kermrc` во всей системе!

> Замечание: `/dev/cuaa0` это `COM1`, `cuaa1` это `COM2`, и т.д.

Убедитесь, что в вашем файле настройки ядра присутствует строка:

    pseudo-device   sl      1

В FreeBSD 5.X, используйте вместо этой строки следующую:

    device   sl

Эта строка включена в ядро `GENERIC`, так что если вы ее не удаляли, проблем быть не должно.

#### 24.7.1.1. То, что необходимо сделать только один раз

1. Добавьте ваш компьютер, шлюз и сервера имен в файл `/etc/hosts`. Вот пример такого файла:

       127.0.0.1         localhost loghost
       136.152.64.181          water.CS.Example.EDU water.CS water
       136.152.64.1            inr-3.CS.Example.EDU inr-3 slip-gateway
       128.32.136.9            ns1.Example.EDU ns1
       128.32.136.12           ns2.Example.EDU ns2

2. Убедитесь, что в файле `/etc/host.conf` `hosts` находится перед `bind` (для FreeBSD версий до 5.0). Начиная с FreeBSD 5.0, система использует файл `/etc/nsswitch.conf`, убедитесь, что параметр `files` находится перед `dns` в строке `hosts` этого файла. Без этого параметра могут происходить странные вещи.

3. Отредактируйте файл `/etc/rc.conf`.

   1. Установите имя хоста, настроив переменную hostname:

          hostname="myname.my.domain"

      Здесь необходимо использовать полное доменное имя вашего компьютера в интернет.

   2. Добавьте `sl0` к списку сетевых интерфейсов, изменив переменную:

          network_interfaces="lo0"

      на:

          network_interfaces="lo0 sl0"

   3. Измените параметры `sl0`, добавив строку:

          ifconfig_sl0="inet ${hostname} slip-gateway netmask 0xffffff00 up"

   4. Назначьте маршрутизатор по умолчанию, изменив строку:

          defaultrouter="NO"

      на:

          defaultrouter="slip-gateway"

4. Создайте файл `/etc/resolv.conf`, содержащий:

       domain CS.Example.EDU
       nameserver 128.32.136.9
       nameserver 128.32.136.12

   Как вы видите, здесь указаны адреса серверов имен. Конечно, реальные имена доменов и адреса для вас будут другими.

5. Перегрузите компьютер и убедитесь, что его имя хоста настроено правильно.

#### 24.7.1.2. Создание SLIP соединения

1. Дозвонитесь на удаленный сервер, введите `slip` в приглашение, имя своего компьютера и пароль. Все, что требуется ввести в вашем случае. Если вы используете kermit, попробуйте такой скрипт:

       # kermit setup
       set modem hayes
       set line /dev/modem
       set speed 115200
       set parity none
       set flow rts/cts
       set terminal bytesize 8
       set file type binary
       # The next macro will dial up and login
       define slip dial 643-9600, input 10 =>, if failure stop, -
       output slip\x0d, input 10 Username:, if failure stop, -
       output silvia\x0d, input 10 Password:, if failure stop, -
       output ***\x0d, echo \x0aCONNECTED\x0a

   Конечно, вам потребуется заменить имя хоста и пароль на ваши собственные. После этого, для подключения просто введите `slip` из приглашения kermit.

   > Замечание: Хранение пароля в любом месте файловой системы в незашифрованном виде это обычно плохая идея. Вы делаете это на свой риск.

2. Выйдите из kermit (вы можете приостановить его, нажав Ctrl-z) и введите под `root`:

       # slattach -h -c -s 115200 /dev/modem

   Если вы сможете выполнить `ping` для хостов по другую сторону маршрутизатора, вы подключились! Если это не работает, попробуйте параметр `slattach` `-a` вместо `-c`.

#### 24.7.1.3. Как прервать соединение:

Сделайте следующее:

    # kill -INT `cat /var/run/slattach.modem.pid`

для остановки `slattach`. Помните, что вы должны работать под `root` для выполнения этой команды. Затем вернитесь в kermit (запустив `fg`, если он приостановлен) и выйдите из него (`q`).

Страница справочника `slattach` сообщает, что для отключения интерфейса необходимо использовать `ifconfig sl0 down`, но это похоже не играет никакой роли. (`ifconfig sl0` сообщает о том же.)

Иногда модем может не сбросить соединение (это бывает довольно часто). В этом случае просто запустите kermit и выйдите из него еще раз. При второй попытке соединение обычно разрывается.

#### 24.7.1.4. Решение проблем

Вот наиболее часто встречающиеся ситуации:

- Не используются параметры `slattach` `-c` или `-a` (это может быть не фатально, но иногда вызывает проблемы.)

- Используется `s10` вместо `sl0` (с некоторыми шрифтами сложно увидеть разницу).

- Попробуйте использовать `ifconfig sl0` для просмотра статуса интерфейса. Например, вы можете получить такую информацию:

      # ifconfig sl0
      sl0: flags=10<POINTOPOINT>
              inet 136.152.64.181 --> 136.152.64.1 netmask ffffff00

- Если вы получите сообщение “`no route to host`” от команды ping, возможно это проблема с таблицей маршрутизации. Используйте команду `netstat -r` для отображения существующих маршрутов:

      # netstat -r
      Routing tables
      Destination      Gateway            Flags     Refs     Use  IfaceMTU    Rtt    Netmasks:

      (root node)
      (root node)

      Route Tree for Protocol Family inet:
      (root node) =>
      default          inr-3.Example.EDU  UG          8   224515  sl0 -      -
      localhost.Exampl localhost.Example. UH          5    42127  lo0 -       0.438
      inr-3.Example.ED water.CS.Example.E UH          1        0  sl0 -      -
      water.CS.Example localhost.Example. UGH        34 47641234  lo0 -       0.438
      (root node)

  Предыдущий пример получен на относительно загруженной системе. Числа в вашей системе будут сильно зависеть от загрузки сети.

### 24.7.2. Настройка SLIP сервера

Этот документ предоставляет решение для настройки SLIP сервера в системе FreeBSD, что обычно означает настройку системы для автоматического запуска соединений при удаленном входе SLIP клиентов.

#### 24.7.2.1. Предварительные требования

Информация в этом разделе чисто техническая, поэтому требуются некоторые предварительные знания. Предполагается, что вы знакомы с сетевым протоколом TCP/IP, и в частности, с адресацией сетей и хостов, сетевыми масками, делением на подсети, маршрутизацией и протоколами маршрутизации, такими как RIP. Настройка SLIP сервисов на сервере удаленного доступа требует знания этих концепций, и если вы не знакомы с ними, прочтите или книгу TCP/IP Network Administration от Craig Hunt, опубликованную O'Reilly & Associates, Inc. (ISBN Number 0-937175-82-X), или книги Douglas Comer по протоколу TCP/IP.

В дальнейшем предполагается, что вы уже настроили ваш модем (модемы) и настроили соответствующие системные файлы для разрешения входа через них. Если вы еще не подготовили систему соответствующим образом, обратитесь к руководству по настройке сервисов удаленного входа; просмотрите список руководств на http://www.FreeBSD.org/ru/docs.html. Вы можете также обратиться к странице справочника sio(4) за информацией о драйвере последовательного порта и к страницам gettytab(5), getty(8) и init(8) за информацией по настройке системы для удаленного входа в систему через модемы, и возможно stty(1) за информацией о настройке параметров последовательных портов (таких как `clocal` для подключаемых непосредственно последовательных интерфейсов).

#### 24.7.2.2. Краткий обзор

В типичной конфигурации FreeBSD работает в качестве SLIP сервера так: пользователь SLIP дозванивается на FreeBSD SLIP сервер и входит в систему со специальным SLIP логином, использующим `/usr/sbin/sliplogin` в качестве оболочки. Программа `sliplogin` просматривает файл `/etc/sliphome/slip.hosts` на предмет строки, соответствующей специальному пользователю, и если находит совпадение, подключает последовательную линию к доступному SLIP интерфейсу, а затем запускает shell скрипт `/etc/sliphome/slip.login` для настройки SLIP интерфейса.

##### 24.7.2.2.1. Пример входа на SLIP сервер

Например, идентификатор пользователя на SLIP сервере `Shelmerg`. Соответствующая запись в `/etc/master.passwd` будет выглядеть примерно так:

    Shelmerg:password:1964:89::0:0:Guy Helmer - SLIP:/usr/users/Shelmerg:/usr/sbin/sliplogin

Когда `Shelmerg` входит в систему, `sliplogin` ищет строку в `/etc/sliphome/slip.hosts`, в которой находится соответствующий идентификатор пользователя; например, строка может быть такой:

    Shelmerg   dc-slip sl-helmer       0xfffffc00        autocomp

После обнаружения этой строки `sliplogin` подключает последовательную линию к следующему доступному SLIP интерфейсу, а затем выполняет `/etc/sliphome/slip.login` примерно так:

    /etc/sliphome/slip.login 0 19200 Shelmerg dc-slip sl-helmer 0xfffffc00 autocomp

Если все проходит нормально, `/etc/sliphome/slip.login` вызовет `ifconfig` для SLIP интерфейса, к которому подключилась программа `sliplogin` (slip интерфейс 0 в примере выше, первый параметр в списке, задаваемом `slip.login`) для установки локального IP адреса ((`dc-slip`), удаленного IP адреса (`sl-helmer`), сетевой маски для SLIP интерфейса (`0xfffffc00`), и любых дополнительных флагов (`autocomp`). Если что-то идет не так, `sliplogin` обычно протоколирует соответствующие сообщения в через уровень `daemon` syslog; эти сообщения как правило попадают в `/var/log/messages` (обратитесь к страницам справочника syslogd(8) и syslog.conf(5), а также проверьте файл `/etc/syslog.conf`, чтобы выяснить, что протоколирует `syslogd` и куда помещается информация).

Достаточно примеров -- давайте начнем настройку системы.

#### 24.7.2.3. Настройка ядра

Стандартное ядро FreeBSD обычно поставляется с двумя SLIP интерфейсами ((`sl0` и `sl1`); вы можете использовать команду `netstat -i`, чтобы выяснить, определены ли эти интерфейсы в вашем ядре.

Пример вывода `netstat -i`:

    Name  Mtu   Network     Address            Ipkts Ierrs    Opkts Oerrs  Coll
    ed0   1500  <Link>0.0.c0.2c.5f.4a         291311     0   174209     0   133
    ed0   1500  138.247.224 ivory             291311     0   174209     0   133
    lo0   65535 <Link>                            79     0       79     0     0
    lo0   65535 loop        localhost             79     0       79     0     0
    sl0*  296   <Link>                             0     0        0     0     0
    sl1*  296   <Link>                             0     0        0     0     0

Наличие в выводе `netstat -i` интерфейсов `sl0` и `sl1` означает, что SLIP интерфейсы встроены в ядро (символ `*` показывает неактивность интерфейсов).

Ядро FreeBSD по умолчанию не пересылает пакеты между интерфейсами (компьютер FreeBSD не работает как маршрутизатор), вследствие требований RFC (см. RFCs 1009 [Requirements for Internet Gateways], 1122 [Requirements for Internet Hosts -- Communication Layers], и возможно 1127 [A Perspective on the Host Requirements RFCs]). Если вы хотите, чтобы FreeBSD SLIP работал в качестве маршрутизатора, отредактируйте файл `/etc/rc.conf` и присвойте переменной `gateway_enable` значение `YES`.

Для вступления изменений в силу потребуется перезагрузка.

В файле настройки стандартного ядра (`/sys/i386/conf/GENERIC`) находится строка:

    pseudo-device sl 2

Она определяет число доступных устройств SLIP в ядре; Число в конце строки определяет максимально возможное количество одновременных SLIP соединений.

Обратитесь к Гл. 8 за информацией по настройке ядра FreeBSD.

#### 24.7.2.4. Настройка sliplogin

Как упоминалось ранее, в каталоге `/etc/sliphome` находятся три файла, являющиеся частью настройки для `/usr/sbin/sliplogin` (для `sliplogin` существует страница справочника, sliplogin(8)): `slip.hosts`, определяющий список пользователей SLIP и связанные с ними IP адреса; `slip.login`, который обычно всего лишь настраивает SLIP интерфейс; `slip.logout`, который восстанавливает состояние системы до запуска `slip.login` после завершения последовательного соединения.

##### 24.7.2.4.1. Настройка `slip.hosts`

`/etc/sliphome/slip.hosts` содержит строки, в которых находится как минимум четыре параметра, разделенных пробелами:

- ID пользователя SLIP

- Локальный адрес (локальный для SLIP сервера) SLIP соединения

- Удаленный адрес SLIP соединения

- Сетевая маска

Локальные и удаленные адреса могут быть именами хостов (разрешаемыми в IP адреса через файл `/etc/hosts` или через службу доменных имен, в зависимости от настроек в файле `/etc/nsswitch.conf` для FreeBSD 5.X, или `/etc/host.conf` для FreeBSD 4.X), а сетевая маска может быть именем, разрешаемым через файл `/etc/networks`. В системе, используемой в качестве примера, файл `/etc/sliphome/slip.hosts` выглядит так:

    #
    # login local-addr      remote-addr     mask            opt1    opt2
    #                                               (normal,compress,noicmp)
    #
    Shelmerg  dc-slip       sl-helmerg      0xfffffc00      autocomp

В конце строки находятся один или более параметров.

- `normal` -- нет сжатия заголовков

- `compress` -- сжимать заголовки

- `autocomp` -- сжимать заголовки, если удаленная сторона это позволяет

- `noicmp` -- запретить ICMP пакеты (любые ''ping'' пакеты будут отброшены и не станут помехой для другого трафика)

Выбор локального и удаленного адреса для SLIP соединений зависит от того, используете ли вы выделенную TCP/IP сеть, или используете на SLIP сервере ''ARP прокси''. (это не ''настоящий'' ARP прокси, но данная терминология используется в этом разделе). Если вы не уверены, какой метод выбрать, или как присвоить IP адреса, обратитесь к книгам по TCP/IP, упомянутым выше (Разд. 24.7.2.1).

Если вы собираетесь использовать отдельную подсеть для SLIP клиентов, потребуется выделить адреса за пределом адресов вашей сети и присвоить каждому SLIP клиенту IP адрес из данной подсети. Затем вам возможно потребуется настроить статический маршрут в используемую для SLIP подсеть через SLIP сервер на ближайшем IP маршрутизаторе.

Иначе, если вы будете использовать метод ''proxy ARP'', потребуется присвоить SLIP клиентам IP адреса, не входящие в Ethernet подсеть сервера SLIP, а также настроить скрипты `/etc/sliphome/slip.login` и `/etc/sliphome/slip.logout`, чтобы использовать arp(8) для управления записями ARP прокси в таблице ARP сервера SLIP.

##### 24.7.2.4.2. Настройка `slip.login`

Типичный файл `/etc/sliphome/slip.login` выглядит примерно так:

    #!/bin/sh -
    #
    #       @(#)slip.login  5.1 (Berkeley) 7/1/90

    #
    # generic login file for a slip line.  sliplogin invokes this with
    # the parameters:
    #      1        2         3        4          5         6     7-n
    #   slipunit ttyspeed loginname local-addr remote-addr mask opt-args
    #
    /sbin/ifconfig sl$1 inet $4 $5 netmask $6

Этот файл `slip.login` всего лишь запускает `ifconfig` для соответствующего SLIP интерфейса с заданными локальным и удаленным адресом и сетевой маской.

Если вы решили использовать метод ''ARP прокси'' (вместо использования отдельной подсети для SLIP клиентов), ваш файл `/etc/sliphome/slip.login` должен выглядеть примерно так:

    #!/bin/sh -
    #
    #       @(#)slip.login  5.1 (Berkeley) 7/1/90

    #
    # generic login file for a slip line.  sliplogin invokes this with
    # the parameters:
    #      1        2         3        4          5         6     7-n
    #   slipunit ttyspeed loginname local-addr remote-addr mask opt-args
    #
    /sbin/ifconfig sl$1 inet $4 $5 netmask $6
    # Answer ARP requests for the SLIP client with our Ethernet addr
    /usr/sbin/arp -s $5 00:11:22:33:44:55 pub

Дополнительная строка в этом `slip.login`, `arp -s $5 00:11:22:33:44:55 pub`, создает ARP запись в ARP таблице SLIP сервера. При соединении другого узла в Ethernet с IP адресом SLIP клиента, SLIP сервер выдает ответ с собственным Ethernet MAC адресом.

При использовании примера выше убедитесь, что заменили Ethernet MAC адрес (`00:11:22:33:44:55`) на MAC адрес Ethernet карты вашей системы, или ваш ''ARP прокси'' точно не будет работать! Вы можете определить Ethernet MAC адрес SLIP сервера, просмотрев вывод команды `netstat -i` выше; информация об адресе находится второй строке:

    ed0   1500  <Link>0.2.c1.28.5f.4a         191923 0   129457     0   116

Это означает, что в данной системе Ethernet MAC адрес `00:02:c1:28:5f:4a` -- точки в MAC адресе, выдаваемые `netstat -i`, должны быть заменены на двоеточия, необходимо также добавить нуль в начало каждого односимвольного шестнадцатеричного номера для преобразования этого адреса в форму, пригодную для arp(8); обратитесь к странице справочника arp(8) за полной информацией по использованию.

> Замечание: При создании `/etc/sliphome/slip.login` и `/etc/sliphome/slip.logout`, должен быть установлен бит ''выполнения'' (`chmod 755 /etc/sliphome/slip.login /etc/sliphome/slip.logout`), или `sliplogin` не сможет их выполнить.

##### 24.7.2.4.3. Настройка `slip.logout`

`/etc/sliphome/slip.logout` не является совершенно необходимым (если только вы не реализуете ''ARP прокси''), но если вы решили создать его, воспользуйтесь следующим примером:

    #!/bin/sh -
    #
    #       slip.logout

    #
    # logout file for a slip line.  sliplogin invokes this with
    # the parameters:
    #      1        2         3        4          5         6     7-n
    #   slipunit ttyspeed loginname local-addr remote-addr mask opt-args
    #
    /sbin/ifconfig sl$1 down

Если вы используете ''ARP прокси'', потребуется удаление записи ARP для SLIP клиента через `/etc/sliphome/slip.logout`:

    #!/bin/sh -
    #
    #       @(#)slip.logout

    #
    # logout file for a slip line.  sliplogin invokes this with
    # the parameters:
    #      1        2         3        4          5         6     7-n
    #   slipunit ttyspeed loginname local-addr remote-addr mask opt-args
    #
    /sbin/ifconfig sl$1 down
    # Quit answering ARP requests for the SLIP client
    /usr/sbin/arp -d $5

Команда `arp -d $5` удаляет запись ARP, добавленную `slip.login` при входе SLIP клиента.

Повторяем: убедитесь, что на файл `/etc/sliphome/slip.logout` установлен бит выполнения (`chmod 755 /etc/sliphome/slip.logout`).

#### 24.7.2.5. Соглашения о маршрутизации

Если вы не используете ''ARP прокси'' метод для маршрутизации пакетов между SLIP клиентами и остальной сетью (и возможно интернет), вам возможно потребуется статический маршрут (маршруты) до ближайшего шлюза (шлюзов) для маршрутизации подсети SLIP клиентов через SLIP сервер.

##### 24.7.2.5.1. Статические маршруты

Добавление статических маршрутов может стать для кого-то проблемой (это даже невозможно, если у вас нет соответствующих прав). Если в вашей организации сеть с несколькими маршрутизаторами, некоторые маршрутизаторы, например Cisco и Proteon, требуют не только настройки статического маршрута в подсеть SLIP, но и указания, о каких статических маршрутах сообщать другим маршрутизаторам, так что для наладки работоспособности статической маршрутизации может потребоваться некоторое исследование и отладка.

##### 24.7.2.5.2. Запуск GateD®

> Замечание: GateD® это закрытое программно обеспечение, более недоступное в исходных текстах (дополнительная информация находится на вебсайте GateD). Этот раздел существует лишь в целях обратной совместимости для тех, кто все еще использует старую версию.

Альтернатива головной боли со статическими маршрутами это установка GateD на FreeBSD SLIP сервере и настройка его для использования соответствующих протоколов маршрутизации (RIP/OSPF/BGP/EGP) для сообщения другим маршрутизаторам о вашей SLIP подсети. Вам потребуется создать `/etc/gated.conf` для настройки gated. Ниже дан пример:

    #
    # gated configuration file for dc.dsu.edu; for gated version 3.5alpha5
    # Only broadcast RIP information for xxx.xxx.yy out the ed Ethernet interface
    #
    #
    # tracing options
    #
    traceoptions "/var/tmp/gated.output" replace size 100k files 2 general ;

    rip yes {
      interface sl noripout noripin ;
      interface ed ripin ripout version 1 ;
      traceoptions route ;
    } ;

    #
    # Turn on a bunch of tracing info for the interface to the kernel:
    kernel {
      traceoptions remnants request routes info interface ;
    } ;

    #
    # Propagate the route to xxx.xxx.yy out the Ethernet interface via RIP
    #

    export proto rip interface ed {
      proto direct {
          xxx.xxx.yy mask 255.255.252.0 metric 1; # SLIP connections
      } ;
    } ;

    #
    # Accept routes from RIP via ed Ethernet interfaces

    import proto rip interface ed {
      all ;
    } ;

В примере выше используется широковещательная рассылка информации о маршрутизации для подсети SLIP `xxx.xxx.yy` протоколом RIP на сеть Ethernet; если вы используете другой драйвер Ethernet вместо `ed`, потребуется соответственно изменить запись для `ed`. В этом примере отладочная информация переправляется в `/var/tmp/gated.output`; вы можете выключить отладку, если GateD работает. Вам потребуется заменить `xxx.xxx.yy` в сетевом адресе на вашу подсеть SLIP (убедитесь, что изменение сетевой маски в `proto direct` работает нормально).

Как только вы установили и настроили GateD, потребуется сообщить стартовым скриптам FreeBSD запускать его вместо routed. Простейший способ сделать это -- установить переменные `router` и `router_flags` в `/etc/rc.conf`. Обратитесь к странице справочника GateD за информацией о параметрах командной строки.

# Глава 25. Электронная почта

Оригинальную версию предоставил Bill Lloyd. Переписал Jim Mock. Перевод на русский язык: Алексей Докучаев, Денис Пеплин.

## 25.1. Краткий обзор

''Электронная почта'' называемая также email, является на сегодняшний день одним из самых популярных средств связи. Эта глава описывает основы работы с почтовым сервером в FreeBSD, а также введение в процесс отправки и получения почты в FreeBSD; однако, это не полноценный справочник и фактически в главу не вошло много важной информации. Более подробно эта тема рассмотрена во множестве прекрасных книг, список которых приведен в Прил. B.

После прочтения этой главы вы узнаете:

- Какие программные компоненты задействованы в отправке и получении электронной почты.

- Какие основные файлы настройки sendmail имеются в FreeBSD.

- Разницу между удаленными и локальными почтовыми ящиками.

- Как запретить спамерам использовать ваш почтовый сервер для пересылки почты.

- Как установить и настроить альтернативный агент передачи почты (Mail Transfer Agent, MTA), заменив им sendmail.

- Как разрешить наиболее часто встречающиеся проблемы с почтовым сервером.

- Как использовать SMTP с UUCP.

- Как настроить систему только для отправки почты.

- Как использовать почту с коммутируемым подключением к сети.

- Как настроить SMTP аутентификацию для дополнительной защиты.

- Как установить и настроить почтовый агент пользователя (Mail User Agent, MUA), например mutt, для отправки и получения почты.

- Как загрузить почту с удаленного POP или IMAP сервера.

- Как автоматически применять фильтры и правила к входящей почте.

Перед прочтением этой главы вам потребуется:

- Правильно настроить сетевое подключение (Гл. 28).

- Правильно настроить DNS для почтового сервера (Гл. 26).

- Знать как устанавливать дополнительное программное обеспечение сторонних разработчиков (Гл. 4).

## 25.2. Использование электронной почты

В работе почтовой системы задействованы пять основных частей: пользовательский почтовый клиент (Mail User Agent, MUA), почтовый сервис (даемон) (Mail Transfer Agent, MTA), сервер DNS, удаленный или локальный почтовый ящик, и конечно сам почтовый сервер.

### 25.2.1. Пользовательский почтовый клиент

Обычно, это программа типа mutt, pine, elm, mail, а также программы с графическим интерфейсом, такие, как balsa или xfmail, или интегрированные приложения (например, какой-либо WWW браузер типа Netscape). Все эти программы общаются с локальным почтовым сервером, вызывая какой-либо даемон, или напрямую по протоколу TCP.

### 25.2.2. Почтовый даемон

FreeBSD по умолчанию поставляется с sendmail, но помимо того поддерживает множество других даемонов почтового сервера, вот лишь некоторые из них:

- exim;

- postfix;

- qmail.

Почтовый даемон выполняет только две функции: он отвечает за прием входящей почты и отправку исходящей. Он не отвечает за выдачу почты по протоколам POP или IMAP, и не обеспечивает подключения к локальным почтовым ящикам `mbox` или Maildir. Для этих целей вам может потребоваться дополнительный даемон.

> Внимание: Старые версии sendmail содержат некоторые серьезные ошибки безопасности, которые могут привести к получению атакующим локального и/или удаленного доступа к вашему компьютеру. Убедитесь, что вы работаете с современной версией, свободной от таких ошибок. Или установите альтернативный MTA из Коллекции Портов FreeBSD.

### 25.2.3. Email и DNS

Служба имен доменов (Domain Name System, DNS) и соответствующий ей даемон `named` играют важную роль в доставке почты. Для доставки почты с вашего сайта другому, даемон почтового сервера обратится к DNS для определения удаленного хоста, отвечающего за доставку почты по назначению. Тот же процесс происходит при доставке почты с удаленного хоста на ваш почтовый сервер.

DNS отвечает за сопоставления имен хостов IP адресам, как и за хранение информации, предназначенной для доставки почты, известной как MX записи. Запись MX (Mail eXchanger) определяет хост или хосты, которые будут получать почту для определенного домена. Если для вашего имени хоста или домена нет записи MX, почта будет доставлена непосредственно на ваш хост, IP адрес которого определен в записи A.

Вы можете просмотреть MX записи для любого домена с помощью команды host(1), как показано в примере ниже:

    % host -t mx FreeBSD.org
    FreeBSD.org mail is handled (pri=10) by mx1.FreeBSD.org

### 25.2.4. Получение почты

Получение почты для вашего домена выполняет почтовый сервер. Он сохраняет отправленную в ваш домен почту в формате либо `mbox` (это метод по умолчанию), либо Maildir, в зависимости от настроек. После сохранения почты ее можно либо прочитать локально, используя такие приложения как mail(1), mutt, или удаленно, по таким протоколам как POP или IMAP. Это означает, что для локального чтения почты вам не потребуется устанавливать сервер POP или IMAP.

#### 25.2.4.1. Доступ к удаленным почтовым ящикам по протоколам POP и IMAP

Для удаленного доступа к почтовым ящикам вам потребуется доступ к POP или IMAP серверу. Хотя удаленный доступ обеспечивают оба протокола POP и IMAP, последний предоставляет множество дополнительных возможностей, вот некоторые из них:

- IMAP может как хранить сообщения на удаленном сервере, так и забирать их.

- IMAP поддерживает одновременные обновления.

- IMAP может быть очень полезен для низкоскоростных соединений, поскольку позволяет пользователям получить структуру сообщений без их загрузки; он также может использоваться для выполнения таких задач как поиск на сервере, для минимизации объема передаваемых между клиентом и сервером данных.

Для установки POP или IMAP сервера необходимо выполнить следующие действия:

1. Выберите IMAP или POP сервер, который подходит вам наилучшим образом. Следующие POP и IMAP серверы хорошо известны и могут быть приведены в качестве примера:

   - qpopper;

   - teapop;

   - imap-uw;

   - courier-imap;

2. Установите POP или IMAP даемон, выбранный из Коллекции Портов.

3. Если потребуется, настройте `/etc/inetd.conf` для запуска POP или IMAP сервера.

> Внимание: Необходимо отметить, что и POP и IMAP серверы передают информацию, включая имя пользователя и пароль, в незашифрованном виде. Это означает, что если вы хотите защитить передачу информации по этим протоколам, потребуется использовать туннелирование сессий через ssh(1). Туннелирование соединений описано в Разд. 14.11.8.

#### 25.2.4.2. Доступ к локальным почтовым ящикам

Доступ к почтовым ящикам может быть осуществлен непосредственно путем использования MUA на сервере, где эти ящики расположены. Это можно сделать используя приложения вроде mutt или mail(1).

### 25.2.5. Почтовый хост

Почтовый хост это сервер, который отвечает за отправку и получение почты для вашего компьютера, и возможно, для всей вашей сети.

## 25.3. Настройка sendmail

Предоставил Christopher Shumway.

В FreeBSD по умолчанию программой передачи почты (Mail Transfer Agent, MTA) является sendmail(8). Работа sendmail заключается в приеме почты от почтовых программ пользователей (Mail User Agents, MUA) и отправке ее на соответствующий адрес, в соответствии с имеющимися настройками. sendmail может также принимать входящие соединения по сети и доставлять почту в локальные почтовые ящики или перенаправлять их другой программе.

sendmail использует следующие файлы настройки:

Имя файла | Назначение
--- | ---
`/etc/mail/access` | Файл базы данных доступа sendmail
`/etc/mail/aliases` | Синонимы почтовых ящиков
`/etc/mail/local-host-names` | Список хостов, для которых sendmail принимает почту
`/etc/mail/mailer.conf` | Настройки почтовой программы
`/etc/mail/mailertable` | Таблица доставки почтовой программы
`/etc/mail/sendmail.cf` | Основной файл настройки sendmail
`/etc/mail/virtusertable` | Таблицы виртуальных пользователей и доменов

### 25.3.1. `/etc/mail/access`

База данных доступа определяет список хостов или IP адресов, имеющих доступ к локальному почтовому серверу, а также тип предоставляемого доступа. Хосты могут быть перечислены как `OK`, `REJECT`, `RELAY` или просто переданы процедуре обработки ошибок sendmail с заданным сообщением об ошибке. Хостам, перечисленным с параметром по умолчанию `OK`, разрешено отправлять почты на этот хост, если адрес назначения почты принадлежит локальной машине. Все почтовые соединения от хостов, перечисленных с параметром `REJECT`, отбрасываются. Для хостов, перечисленных с параметром `RELAY`, разрешена передача через этот сервер почты с любым адресом назначения.

Пример 25-1. Настройка базы данных доступа sendmail

    cyberspammer.com       550 We do not accept mail from spammers
    FREE.STEALTH.MAILER@        550 We do not accept mail from spammers
    another.source.of.spam          REJECT
    okay.cyberspammer.com           OK
    128.32                          RELAY

В этом примере приведены пять записей. К отправителям, чей адрес соответствует записи в левой части таблицы, применяется правило записанное в правой части таблицы. В первых двух примерах код ошибки будет передан процедуре обработке ошибок sendmail. В этом случае на удаленном хосте будет получено соответствующее сообщение. В следующем примере почта отбрасывается почта от определенного хоста, `another.source.of.spam`. В четвертом примере разрешается прием почты от хоста `okay.cyberspammer.com`, имя которого более точно совпадает с этой записью, чем с `cyberspammer.com` в примере выше. При более точном совпадении правила перезаписываются. В последнем примере разрешается пересылка почты от хостов с IP адресами, начинающимися с `128.32`. Эти хосты смогут отправлять почту через этот почтовый сервер для других почтовых серверов.

После изменения этого файла для обновления базы данных вам потребуется запустить `make` в каталоге `/etc/mail/`.

### 25.3.2. `/etc/mail/aliases`

База данных синонимов содержит список виртуальных почтовых ящиков, принадлежащих другим пользователям, файлам, программам, или другим синонимам. Вот несколько примеров, которые могут быть использованы для `/etc/mail/aliases`:

Пример 25-2. Mail Aliases

    root: localuser
    ftp-bugs: joe,eric,paul
    bit.bucket:  /dev/null
    procmail: "|/usr/local/bin/procmail"

Формат файла прост; имя почтового ящика слева от двоеточия сопоставляется назначению(ям) справа. В первом примере производится простое сопоставление почтового ящика `root` почтовому ящику `localuser`, для которого затем опять будет произведен поиск в базе данных синонимов. Если совпадений не обнаружится, сообщение будет доставлено локальному пользователю `localuser`. В следующем примере приведен список рассылки. Почта на адрес `ftp-bugs` рассылается на три локальных почтовых ящика: `joe`, `eric` и `paul`. Обратите внимание, что удалённый почтовый ящик может быть задан в виде `<user@example.com>`. В следующем примере показана запись почты в файл, в данном случае `/dev/null`. И в последнем примере показано отправление почты программе, в данном случае почтовое сообщение переправляется через канал UNIX на стандартный вход `/usr/local/bin/procmail`.

После обновления этого файла вам потребуется запустить `make` в каталоге `/etc/mail/` для обновления базы данных.

### 25.3.3. `/etc/mail/local-host-names`

В этом файле находится список имен хостов, принимаемых программой sendmail(8) в качестве локальных. Поместите в этот файл любые домены или хосты, для которых sendmail должен принимать почту. Например, если этот почтовый сервер должен принимать почту для домена `example.com` и хоста `mail.example.com`, его файл `local-host-names` может выглядеть примерно так:

    example.com
    mail.example.com

После обновления этого файла необходимо перезапустить sendmail(8), чтобы он смог перечитать изменения.

### 25.3.4. `/etc/mail/sendmail.cf`

Основной файл настройки sendmail, `sendmail.cf` управляет общим поведением sendmail, включая все, от перезаписи почтовых адресов до отправки удаленным серверам сообщений об отказе от пересылки почты. Конечно, файл настройки с таким многообразием возможностей очень сложен и подробное его описание выходит за рамки данного раздела. К счастью, для стандартных почтовых серверов изменять этот файл придется не часто.

Основной файл настройки sendmail может быть собран из макроса m4(1), определяющего возможности и поведение sendmail. Подробнее этот процесс описан в файле `/usr/src/contrib/sendmail/cf/README`.

Для применения изменений после правки файла необходимо перезапустить sendmail.

### 25.3.5. `/etc/mail/virtusertable`

Файл `virtusertable` сопоставляет виртуальные почтовые домены и почтовые ящики реальным почтовым ящикам. Эти почтовые ящики могут быть локальными, удаленными, синонимами, определенными в `/etc/mail/aliases`, или файлами.

Пример 25-3. Пример таблицы виртуального домена

    root@example.com                root
    postmaster@example.com          postmaster@noc.example.net
    @example.com                    joe

В примере выше мы видим сопоставление адресов для домена `example.com`. Почта обрабатывается по первому совпадению с записью в этом файле. Первая запись сопоставляет адрес `<root@example.com>` локальному почтовому ящику `root`. Вторая запись сопоставляет `<postmaster@example.com>` локальному почтовому ящику `postmaster` на хосте `noc.example.net`. Наконец, до этого момента адрес в домене `example.com` не совпал ни с одним из предыдущих, будет применено последнее сопоставление, в которому соответствует всякое другое почтовое сообщение, отправленное на любой адрес в `example.com`. Это сообщение будет доставлено в локальный почтовый ящик `joe`.

## 25.4. Установка другой почтовой программы

Написал Andrew Boothman. Информация получена из писем, написанных Gregory Neil Shapiro.

Как уже упоминалось, FreeBSD поставляется с MTA (Mail Transfer Agent) sendmail. Следовательно, по умолчанию именно эта программа отвечает за вашу исходящую и входящую почту.

Однако, по различным причинам некоторые системные администраторы заменяют системный MTA. Эти причины варьируются от простого желания попробовать другой MTA до потребности в определенных возможностях пакета, основанного на другой почтовой программе. К счастью, вне зависимости от причины, в FreeBSD такая замена выполняется просто.

### 25.4.1. Установка нового MTA

Вам предоставлен широкий выбор MTA. Начните с поиска в Коллекции Портов FreeBSD, где их немало. Конечно, вы можете использовать любой MTA по желанию, взятый откуда угодно, если только сможете запустить его под FreeBSD.

Начните с установки нового MTA. После установки у вас будет возможность решить, действительно ли он подходит вашем нуждам, а также настроить новое программное обеспечение перед тем, как заменить им sendmail. При установке новой программы убедитесь, что она не пытается перезаписать системные файлы, такие как `/usr/bin/sendmail`. Иначе ваша новая почтовая программа фактически начнет работать до того, как вы ее настроите.

Обратитесь к документации на выбранный MTA за информацией по его настройке.

### 25.4.2. Отключение sendmail

> Внимание: Если вы отключите сервис исходящей почты sendmail, необходимо заменить его альтернативной системой доставки почты. Если вы не сделаете этого, системные программы, такие как periodic(8), не смогут отправлять сообщения по электронной почте как обычно. Многие программы в вашей системе могут требовать наличия функционирующей sendmail-совместимой системы. Если приложения будут продолжать использовать программу sendmail для отправки почты после того, как вы её отключили, почта может попасть в неактивную очередь sendmail и никогда не будет доставлена.

Для полного отключения sendmail, включая сервис исходящей почты, используйте

    sendmail_enable="NO"
    sendmail_submit_enable="NO"
    sendmail_outbound_enable="NO"
    sendmail_msp_queue_enable="NO"

в `/etc/rc.conf.`

Если вы хотите отключить только сервис входящей почты sendmail, установите

    sendmail_enable="NO"

в `/etc/rc.conf`. Дополнительная информация о параметрах запуска sendmail доступна на странице справочника rc.sendmail(8).

### 25.4.3. Запуск нового MTA при загрузке

Новый МТА можно запускать автоматически при загрузке системы добавив соответствующую строку в `/etc/rc.conf`. Ниже приведен пример для postfix:

    # echo 'postfix_enable=''YES''' >> /etc/rc.conf

С этого момента МТА будет запускаться автоматически во время загрузки системы.

### 25.4.4. Замещение sendmail как почтовой программы по умолчанию

Программа sendmail настолько распространена в качестве стандартной программы для систем UNIX, что многие программы считают, что она уже установлена и настроена. По этой причине многие альтернативные MTA предоставляют собственные совместимые реализации интерфейса командной строки sendmail; это облегчает их использование в качестве ''прозрачной'' замены sendmail.

Поэтому если вы используете альтернативную почтовую программу, потребуется убедиться, что когда программное обеспечение пытается выполнить стандартные исполняемые файлы sendmail, такие как `/usr/bin/sendmail`, на самом деле выполняются программы вновь установленной почтовой системы. К счастью, FreeBSD предоставляет систему, называемую mailwrapper(8), которая выполняет эту работу за вас.

Когда установлен sendmail, файл `/etc/mail/mailer.conf` выглядит примерно так:

    sendmail    /usr/libexec/sendmail/sendmail
    send-mail   /usr/libexec/sendmail/sendmail
    mailq       /usr/libexec/sendmail/sendmail
    newaliases  /usr/libexec/sendmail/sendmail
    hoststat    /usr/libexec/sendmail/sendmail
    purgestat   /usr/libexec/sendmail/sendmail

Это означает, что когда выполняется какая-то из этих стандартных программ (например сам `sendmail`), система на самом деле вызывает копию mailwrapper, называемую `sendmail`, которая обращается к `mailer.conf` и выполняет вместо этого `/usr/libexec/sendmail/sendmail`. Такая схема делает простой замену программ, которые на самом деле выполняются, когда вызываются стандартные функции `sendmail`.

Поэтому если вы хотите выполнять `/usr/local/supermailer/bin/sendmail-compat` вместо sendmail, отредактируйте `/etc/mail/mailer.conf` так:

    sendmail    /usr/local/supermailer/bin/sendmail-compat
    send-mail   /usr/local/supermailer/bin/sendmail-compat
    mailq       /usr/local/supermailer/bin/mailq-compat
    newaliases  /usr/local/supermailer/bin/newaliases-compat
    hoststat    /usr/local/supermailer/bin/hoststat-compat
    purgestat   /usr/local/supermailer/bin/purgestat-compat

### 25.4.5. Запуск новой почтовой программы

Как только вы все настроили, потребуется или уничтожить процесс sendmail, который уже не нужен и запустить новую почтовую программу, или просто перегрузить систему. Перезагрузка также даст вам возможность проверить, правильно ли настроена система для автоматического запуска MTA при загрузке.

## 25.5. Поиск и устранение неисправностей

25.5.1. Почему я должен использовать FQDN для хостов вне моей подсети?
25.5.2. sendmail выдает ошибку “`mail loops back to myself`”
25.5.3. Как организовать работу почтового сервера при коммутируемом соединении с Интернет?
25.5.4. Почему я продолжаю получать ошибки “`Relaying Denied`” при отправки почты через другие хосты?

25.5.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.

25.5.2. sendmail выдает ошибку “`mail loops back to myself`”

В FAQ по sendmail дан следующий ответ:

    Я получаю такие сообщения об ошибке:

    553 MX list for domain.net points back to relay.domain.net
    554 <user@domain.net>... Local configuration error

    Как можно решить эту проблему?

    Согласно записям MX, почта для домена domain.net перенаправляется на хост
    relay.domain.net, однако последний не распознается как
    domain.net.  Добавьте domain.net в файл
    /etc/mail/local-host-names
    [известный как /etc/sendmail.cw до версии 8.10]
    (если вы используете
    FETURE(use_cw_file)) или добавьте ''Cw domain.net'' в файл
    /etc/mail/sendmail.cf.

FAQ по sendmail можно найти на http://www.sendmail.org/faq/ и рекомендуется прочесть его при желании произвести некоторые ''усовершенствования'' настроек почтовой системы.

25.5.3. Как организовать работу почтового сервера при коммутируемом соединении с Интернет?

Вы хотите подключить к интернет компьютер с FreeBSD, работающий в локальной сети. Компьютер с FreeBSD будет почтовым шлюзом для локальной сети. PPP соединение не выделенное.

Существует как минимум два пути, чтобы сделать это. Один способ это использование UUCP.

Другой способ это использование постоянно работающего интернет сервера для обеспечения вторичного MX сервиса вашего домена. Например, домен вашей компании `example.com`, и провайдер интернет настроил `example.net` для обеспечения вторичного MX сервиса:

    example.com.          MX        10      example.com.
                          MX        20      example.net.

Только один хост должен быть указан в качестве последнего получателя (добавьте запись `Cw example.com` в файл `/etc/mail/sendmail.cf` на машине `example.com`).

Когда программа `sendmail` (со стороны отправителя) ''захочет'' доставить почту, она попытается соединиться с вашим хостом (`example.com`) через модемное подключение. Скорее всего, ей это не удастся (вы, вероятнее всего, не будете подключены к интернет). Программа sendmail автоматически перейдет ко вторичному MX серверу, т.е. вашему провайдеру (`example.net`). Вторичный MX сервер будет периодически пытаться соединиться с вашим хостом и доставить почту на основной сервер MX (`example.com`).

Вы можете воспользоваться следующим сценарием, чтобы забирать почту каждый раз, когда вы входите в систему:

    #!/bin/sh
    # Put me in /usr/local/bin/pppmyisp
    ( sleep 60 ; /usr/sbin/sendmail -q ) &
    /usr/sbin/ppp -direct pppmyisp

Если же вы хотите написать отдельный пользовательский скрипт, лучше воспользоваться командой `sendmail -qRexample.com` вместо вышеприведенного сценария, так как в этом случае вся почта в очереди для хоста `example.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''.

25.5.4. Почему я продолжаю получать ошибки “`Relaying Denied`” при отправки почты через другие хосты?

В установке FreeBSD по умолчанию, sendmail настроен для отправки почты только от хоста, на котором он работает. Например, если доступен POP сервер, пользователи смогут проверять почту из школы, с работы или других удаленных точек, но не смогут отправлять письма. Обычно, через некоторое время после попытки будет отправлено письмо от MAILER-DAEMON с сообщением об ошибке “`5.7 Relaying Denied`”.

Есть несколько путей разрешения этой ситуации. Самый прямой путь это использование адреса вашего провайдера в файле relay-domains, расположенном в `/etc/mail/relay-domains`. Быстрый способ сделать это:

    # echo "your.isp.example.com" > /etc/mail/relay-domains

После создания или редактирования этого файла вы должны перезапустить sendmail. Это отлично работает, если вы администратор сервера и не хотите отправлять почту локально, или хотите воспользоваться почтовым клиентом/системой на другом компьютере или даже через другого провайдера. Это также очень полезно, если у вас настроены одна или две почтовые записи. Если необходимо добавить несколько адресов, вы можете просто открыть этот файл в текстовом редакторе и добавить домены, по одному на строку:

    your.isp.example.com
    other.isp.example.net
    users-isp.example.org
    www.example.org

Теперь будет отправляться любая почта, посылаемая через вашу систему любым хостом из этого списка (предоставляемого пользователем, имеющим учетную запись в вашей системе). Это отличный способ разрешить пользователям отправлять почту через вашу систему удаленно, одновременно он блокирует отправку спама.

## 25.6. Расширенное руководство

В следующем разделе рассматриваются более сложные темы, такие как настройка почты и включение почтовой системы для всего домена.

### 25.6.1. Базовая конфигурация

Изначально, вы можете отправлять почту ''во внешний мир'' если правильно составлен файл `/etc/resolv.conf` или запущен свой сервер имен. Если вы хотите, чтобы почта, предназначенная для хоста в вашем домене, доставлялась MTA (например, sendmail) на вашем хосте FreeBSD, есть два пути:

- Запустите свой собственный сервер DNS, тем самым организовав собственный домен, например, `FreeBSD.org`

- Получайте почту для вашего хоста непосредственно. Это работает при доставке почты непосредственно на DNS имя вашей машины. Например, `example.FreeBSD.org`.

Независимо от выбранного из предложенных выше вариантов, для доставки почты непосредственно на ваш хост у него должен быть постоянный IP адрес (а не динамический, как у большинства PPP соединений). Если вы находитесь за брандмауэром, то последний должен пропускать SMTP-пакеты. Если вы хотите, чтобы почта приходила непосредственно на ваш хост, необходимо убедиться в одном из двух:

- Убедитесь, что запись (с наименьшим номером) MX в DNS соответствует IP адресу вашего хоста.

- Убедитесь, что в DNS для вашего хоста вообще отсутствует MX-запись.

Выполнение любого из перечисленных условий обеспечит доставку почты для вашего хоста.

Попробуйте это:

    # hostname
    example.FreeBSD.org
    # host example.FreeBSD.org
    example.FreeBSD.org has address 204.216.27.XX

Если вы это видите, то можно без проблем посылать почту на `<yourlogin@example.FreeBSD.org>` (предполагается, что sendmail на `example.FreeBSD.org` работает правильно).

Однако, если вы видите это:

    # 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-записей. Запись с наименьшим номером соответствует хосту, получающему почту непосредственно, если он доступен; если он недоступен по каким-то причинам, другие сервера (иногда называемые (''резервными MX'') временно получают почту, и хранят ее пока не станут доступны хосты с меньшими номерами, в конечном итоге отправляя почту на эти хосты.

Чтобы альтернативные MX-хосты использовались наиболее эффективно, они должны быть независимо подключены к Интернет. Ваш провайдер (или дружественный сайт) скорее всего без проблем сможет оказать подобные услуги.

### 25.6.2. Почта для вашего домена

Для настройки ''почтового хоста'' (почтовый сервер) вам потребуется, чтобы почта, направляемая различным рабочим станциям, пересылалась этому хосту. Обычно вам необходима доставка всей почты для любого хоста вашего домена (в данном случае `*.FreeBSD.org`) на почтовый сервер, чтобы пользователи могли получать свою почту на с этого сервера.

Чтобы облегчить себе (и другим) жизнь, создайте на обеих машинах учетные записи с одинаковыми именами пользователей, например, с помощью команды adduser(8).

Сервер, который вы будете использовать в качестве почтового, должен быть объявлен таковым для каждой машины в домене. Вот фрагмент примерной конфигурации:

    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-запись не нужна.

> Замечание: Помните, что если вы попытаетесь каким-либо образом обратиться к хосту `customer1.org`, у вас вряд ли что-либо получится, если нет A-записи для этого хоста.

Последнее, что вы должны сделать - это сказать программе sendmail, для каких доменов и/или хостов она должна принимать почту. Это можно сделать несколькими способами:

- Добавьте названия этих хостов в файл `/etc/mail/local-host-names`, если вы используете `FEATURE(use_cw_file)`. Если у вас sendmail версии ниже 8.10, необходимо отредактировать файл `/etc/sendmail.cw`.

- Добавьте строку `Cwyour.host.com` в файл `/etc/sendmail.cf` или `/etc/mail/sendmail.cf` (если у вас sendmail версии 8.10 или более поздней).

## 25.7. SMTP через UUCP

Настройка поставляемого с FreeBSD sendmail предназначена для сайтов, подключенных к интернет непосредственно. Сайты, осуществляющие обмен почтой через UUCP, должны использовать другой файл настройки sendmail.

Редактирование `/etc/mail/sendmail.cf` вручную это сложная задача. sendmail версии 8 генерирует файлы настройки через препроцессор m4(1), реально настройка выполняется на более высоком уровне абстракции. Файлы настройки m4(1) можно найти в `/usr/share/sendmail/cf`. Файл `README` в каталоге `cf` содержит введение в основы настройки m4(1).

Лучшим способом настройки поддержки передачи по UUCP является использование возможности `mailertable`. При этом создается база данных, которая помогает sendmail решать вопросы маршрутизации.

Во-первых, создайте файл `.mc`. В каталоге `/usr/share/sendmail/cf/cf` находятся несколько примеров. Возьмем для примера имя файла `foo.mc`. Все, что потребуется для преобразования его в `sendmail.cf`, это:

    # cd /etc/mail
    # make foo.cf
    # cp foo.cf /etc/mail/sendmail.cf

Типичный `.mc` файл может выглядеть примерно так:

    VERSIONID(`Your version number') OSTYPE(bsd4.4)

    FEATURE(accept_unresolvable_domains)
    FEATURE(nocanonify)
    FEATURE(mailertable, `hash -o /etc/mail/mailertable')

    define(`UUCP_RELAY', your.uucp.relay)
    define(`UUCP_MAX_SIZE', 200000)
    define(`confDONT_PROBE_INTERFACES')

    MAILER(local)
    MAILER(smtp)
    MAILER(uucp)

    Cw    your.alias.host.name
    Cw    youruucpnodename.UUCP

Строки, содержащие `accept_unresolvable_domains`, `nocanonify`, и `confDONT_PROBE_INTERFACES`, предотвратят использование DNS для доставки почты. Пункт `UUCP_RELAY` необходим для поддержки доставки по UUCP. Просто поместите сюда имя хоста в интернет, способного работать с .UUCP адресами псевдо-доменов; скорее всего, вы введете сюда основной сервер пересылки почты провайдера.

Как только вы сделаете это, потребуется файл `/etc/mail/mailertable`. Если вы используете для всей почты только одно внешнее соединение, подойдет следующий файл:

    #
    # makemap hash /etc/mail/mailertable.db < /etc/mail/mailertable
    .                             uucp-dom:your.uucp.relay

Более сложный пример может выглядеть так:

    #
    # makemap hash /etc/mail/mailertable.db < /etc/mail/mailertable
    #
    horus.interface-business.de   uucp-dom:horus
    .interface-business.de        uucp-dom:if-bus
    interface-business.de         uucp-dom:if-bus
    .heep.sax.de                  smtp8:%1
    horus.UUCP                    uucp-dom:horus
    if-bus.UUCP                   uucp-dom:if-bus
    .                             uucp-dom:

В первых трех строках обрабатываются специальные случаи, когда почта для домена должна отправляться не на маршрут по умолчанию, а на ближайшее соединение UUCP для сокращения пути доставки. Следующая строка обрабатывает почту, которая может быть доставлена по SMTP для локального Ethernet домена. Наконец, определены маршруты UUCP в нотации псевдо-доменов .UUCP, для включения перезаписи правил по умолчанию правилом ``uucp-neighbor` !`recipient``. Последняя строка всегда содержит одиночную точку, означающую ''все остальное'', с отправкой через UUCP, являющимся универсальным почтовым шлюзом. Все имена узлов после ключевого слова `uucp-dom:` должны представлять существующие маршруты UUCP, проверить их можно с помощью команды `uuname`.

Напоминаем, что этот файл должен быть преобразован в базу данных DBM перед использованием. Командную строку для этой задачи лучше всего поместить в качестве комментария в верхней части файла `mailertable`. Всегда выполняйте эту команду после правки файла `mailertable`.

И наконец: если вы не уверены, что некоторые отдельные почтовые маршруты будут работать, запомните параметр sendmail `-bt`. С этим параметром sendmail запускается в режиме тестирования адреса; просто введите `3,0` и адрес, который вы хотите протестировать. В последней строке появится сообщение об используемом внутреннем почтовом агенте, хосте назначения, с которым вызывается этот агент, и (возможно транслированный) адрес. Выход из этого режима происходит при нажатии Ctrl+D.

    % sendmail -bt
    ADDRESS TEST MODE (ruleset 3 NOT automatically invoked)
    Enter <ruleset> <address>
    > 3,0 foo@example.com
    canonify           input: foo @ example . com
    ...
    parse            returns: $# uucp-dom $@ your.uucp.relay $: foo < @ example . com . >
    > ^D

## 25.8. Настройка почты только для отправки

Предоставил Bill Moran.

Существует множество случаев, когда может потребоваться только отправка почты через почтовый сервер. Вот отдельные примеры:

- У вас настольный компьютер, но вы хотите использовать такие программы как send-pr(1). Для пересылки почты вам потребуется использовать почтовый сервер провайдера.

- Ваш компьютер является сервером, где почта не хранится локально, необходима только переправка всей почты через внешний почтовый сервер.

Практически любой MTA способен работать и в этих условиях. К сожалению, может быть очень сложно правильно настроить полноценный MTA для работы только с исходящей почтой. Такие программы, как sendmail и postfix слишком избыточны для этих целей.

К тому же, если вы используете обычные средства доступа в интернет, условий для запуска ''почтового сервера'' может быть недостаточно.

Простейшим способом удовлетворить имеющиеся потребности может быть установка порта `mail/ssmtp`. Выполните под `root` следующие команды:

    # cd /usr/ports/mail/ssmtp
    # make install replace clean

После установки потребуется настроить `mail/ssmtp` с помощью файла из четырех строк, расположенного в `/usr/local/etc/ssmtp/ssmtp.conf`:

    root=yourrealemail@example.com
    mailhub=mail.example.com
    rewriteDomain=example.com
    hostname=_HOSTNAME_

Убедитесь, что используете существующий почтовый адрес для `root`. Введите сервер вашего провайдера для пересылки исходящей почты вместо `mail.example.com` (некоторые провайдеры называют его ''сервером исходящей почты'' или ''SMTP сервером'').

Убедитесь, что вы выключили sendmail, включая сервис исходящей почты. За подробностями обращайтесь к Разд. 25.4.2.

У пакета `mail/ssmtp` имеются и другие параметры. Обратитесь к файлу с примером настройки в `/usr/local/etc/ssmtp` или к странице справочника ssmtp за примерами и дополнительной информацией.

Установка ssmtp таким способом позволит правильно работать любым программам на вашем компьютере, которым требуется отправка почты, но не нарушит политику вашего провайдера и не позволит вашему компьютеру быть использованным спамерами.

## 25.9. Использование почты с коммутируемым соединением

Если у вас есть статический IP, настройки по умолчанию менять не потребуется. Установите имя хоста в соответствии с присвоенным именем интернет и sendmail будет делать свою работу.

Если у вас динамический IP адрес и используется коммутируемое PPP соединение с интернет, у вас возможно уже есть почтовый ящик на сервере провайдера. Предположим, что домен провайдера называется `example.net`, и что ваше имя пользователя `user`, ваш компьютер называется `bsd.home`, и провайдер сообщил вам, что возможно использование `relay.example.net` в качестве сервера для пересылки почты.

Для получения почты из почтового ящика необходима установка соответствующей программы. Хорошим выбором является утилита fetchmail, она поддерживает множество различных протоколов. Эта программа доступна в виде пакета или из Коллекции Портов (`mail/fetchmail`). Обычно провайдер предоставляет доступ по протоколу POP. Если вы работаете с пользовательским PPP, то можете автоматически забирать почту после установления соединения с интернет с помощью следующей записи в `/etc/ppp/ppp.linkup`:

    MYADDR:
    !bg su user -c fetchmail

Если вы используете sendmail (как показано ниже) для доставки почты к не-локальным учетным записям, вам возможно потребуется обработка почтовой очереди sendmail сразу после установки соединения с интернет. Для выполнения этой работы поместите в `/etc/ppp/ppp.linkup` следующую команду сразу после `fetchmail`:

      !bg su user -c "sendmail -q"

Предполагается, что учетная запись для `user` существует на `bsd.home`. В домашнем каталоге `user` на `bsd.home`, создайте файл `.fetchmailrc`:

    poll example.net protocol pop3 fetchall pass MySecret

Этот файл не должен быть доступен на чтение никому, кроме `user`, поскольку в нем находится пароль `MySecret`.

Для отправки почты с правильным заголовком `from:`, вам потребуется сообщить sendmail использовать `<user@example.net>` вместо `<user@bsd.home>`. Вы можете также указать sendmail отправлять почту через `relay.example.net`, для более быстрой пересылки почты.

Должен подойти следующий файл `.mc`:

    VERSIONID(`bsd.home.mc version 1.0')
    OSTYPE(bsd4.4)dnl
    FEATURE(nouucp)dnl
    MAILER(local)dnl
    MAILER(smtp)dnl
    Cwlocalhost
    Cwbsd.home
    MASQUERADE_AS(`example.net')dnl
    FEATURE(allmasquerade)dnl
    FEATURE(masquerade_envelope)dnl
    FEATURE(nocanonify)dnl
    FEATURE(nodns)dnl
    define(`SMART_HOST', `relay.example.net')
    Dmbsd.home
    define(`confDOMAIN_NAME',`bsd.home')dnl
    define(`confDELIVERY_MODE',`deferred')dnl

Обратитесь к предыдущему разделу за информацией о том, как преобразовать этот файл `.mc` в файл `sendmail.cf`. Не забудьте также перезапустить sendmail после обновления `sendmail.cf`.

## 25.10. SMTP аутентификация

Написал James Gorham.

Наличие SMTP аутентификации на почтовом сервере дает множество преимуществ. SMTP аутентификация может добавить дополнительный уровень безопасности к sendmail, и позволяет мобильным пользователям, подключающимся к разным хостам, возможность использовать тот же почтовый сервер без необходимости перенастройки почтового клиента при каждом подключении.

1. Установите `security/cyrus-sasl2` из портов. Вы можете найти этот порт в `security/cyrus-sasl2`. В пакете `security/cyrus-sasl2` есть множество параметров компиляции. Для используемого здесь метода SMTP аутентификации убедитесь, что параметр `LOGIN` не отключен.

2. После установки `security/cyrus-sasl2`, отредактируйте `/usr/local/lib/sasl2/Sendmail.conf` (или создайте его если он не существует) и добавьте следующую строку:

       pwcheck_method: saslauthd

3. Затем установите `security/cyrus-sasl2-saslauthd` и добавьте в `/etc/rc.conf` следующую строку:

       saslauthd_enable="YES"

   а затем запустите saslauthd:

       # /usr/local/etc/rc.d/saslauthd start

   Этот даемон является посредником для аутентификации sendmail через базу данных `passwd` FreeBSD. Это позволяет избежать проблем, связанных с созданием нового набора имен пользователей и паролей для каждого пользователя, которому необходима SMTP аутентификация, пароль для входа в систему и для отправки почты будет одним и тем же.

4. Теперь отредактируйте `/etc/make.conf` и добавьте следующие строки:

       SENDMAIL_CFLAGS=-I/usr/local/include/sasl -DSASL
       SENDMAIL_LDFLAGS=-L/usr/local/lib
       SENDMAIL_LDADD=-lsasl2

   Эти параметры необходимы sendmail для подключения `cyrus-sasl2` во время компиляции. Убедитесь, что `cyrus-sasl2` был установлен до перекомпиляции sendmail.

5. Перекомпилируйте sendmail, выполнив следующие команды:

       # cd /usr/src/lib/libsmutil
       # make cleandir && make obj && make
       # cd /usr/src/lib/libsm
       # make cleandir && make obj && make
       # cd /usr/src/usr.sbin/sendmail
       # make cleandir && make obj && make && make install

   Компиляция sendmail должна пройти без проблем, если `/usr/src` не был сильно изменен и доступны необходимые разделяемые библиотеки.

6. После компилирования и переустановки sendmail, отредактируйте файл `/etc/mail/freebsd.mc` (или тот файл, который используется в качестве `.mc`; многие администраторы используют в качестве имени этого файла вывод hostname(1) для обеспечения уникальности). Добавьте к нему следующие строки:

       dnl set SASL options
       TRUST_AUTH_MECH(`GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN')dnl
       define(`confAUTH_MECHANISMS', `GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN')dnl

   Эти параметры настраивают различные методы, доступные sendmail для аутентификации пользователей. Если вы хотите использовать вместо pwcheck другой метод, обратитесь к прилагаемой документации.

7. Наконец, запустите make(1) в каталоге `/etc/mail`. Из файла `.mc` будет создан файл `.cf`, называющийся `freebsd.cf` (или с тем именем, которое было использовано для файла `.mc`). Затем используйте команду `make install restart`, которая скопирует файл в `sendmail.cf`, и правильно перезапустит sendmail. Дополнительная информация об этом процессе находится в `/etc/mail/Makefile`.

Если все шаги пройдены успешно, введите информацию для аутентификации в настройки почтового клиента и отправьте тестовое сообщение. Для определения причин возможных ошибок установите параметр sendmail `LogLevel` в 13 и просмотрите `/var/log/maillog`.

За дальнейшей информацией обратитесь к странице sendmail, посвященной SMTP аутентификации.

## 25.11. Почтовые программы пользователей

Предоставил Marc Silver.

Почтовая программа пользователя (Mail User Agent, MUA) это приложение, используемое для отправки и получения почты. Кроме того, поскольку почта ''эволюционирует'' и становится более сложной, MUA совершенствуют свои функции по обработке почты, становятся более удобны в использовании. FreeBSD поддерживает множество различных пользовательских почтовых программ, каждая из которых может быть легко установлена из Коллекции Портов FreeBSD. Пользователи могут выбирать между графическими почтовыми клиентами, такими как evolution или balsa, консольными клиентами, такими как mutt, pine или `mail`, или Web-интерфейсами, используемыми в некоторых больших организациях.

### 25.11.1. mail

В FreeBSD в качестве MUA по умолчанию используется mail(1). Это консольный MUA, предоставляющий все основные функции, необходимые для отправки и получения текстовых сообщений, хотя его возможности по работе с вложениями ограничены и он может работать только с локальными почтовыми ящиками.

Хотя `mail` не поддерживает работу с серверами POP или IMAP, эти почтовые ящики могут быть загружены в локальный файл `mbox` с помощью fetchmail, который будет обсуждаться далее в этой главе (Разд. 25.12).

Для отправки и получения почты просто выполните команду `mail`, как в этом примере:

    % mail

Содержимое почтового ящика в каталоге `/var/mail` будет автоматически прочитано утилитой `mail`. Если почтовый ящик пуст, утилита завершит работу с сообщением о том, что почта не была обнаружена. После чтения почтового ящика запустится интерфейс программы и будет отображен список сообщений. Сообщения нумеруются автоматически и будут выглядеть как в этом примере:

    Mail version 8.1 6/6/93.  Type ? for help.
    "/var/mail/marcs": 3 messages 3 new
    >N  1 root@localhost        Mon Mar  8 14:05  14/510   "test"
     N  2 root@localhost        Mon Mar  8 14:05  14/509   "user account"
     N  3 root@localhost        Mon Mar  8 14:05  14/509   "sample"

Теперь сообщения могут быть прочитаны с помощью команды t, завершаемой номером сообщения, которое должно быть отображено. В этом примере мы прочтем первое сообщение:

    & t 1
    Message 1:
    From root@localhost  Mon Mar  8 14:05:52 2004
    X-Original-To: marcs@localhost
    Delivered-To: marcs@localhost
    To: marcs@localhost
    Subject: test
    Date: Mon,  8 Mar 2004 14:05:52 +0200 (SAST)
    From: root@localhost (Charlie Root)

    This is a test message, please reply if you receive it.

Как видно в примере выше, клавиша t выводит сообщение со всеми заголовками. Для повторного вывода списка сообщений необходимо использовать клавишу h.

Если требуется ответить на сообщение, используйте для ответа `mail`, нажав клавишу R или r. Клавиша R используется в `mail` для ответа только отправителю, а r для ответа и отправителю, и другим получателям сообщения. Вы можете также завершить эти команды номером письма, на которое хотите составить ответ. После этого необходимо ввести ответ, конец сообщения должен быть завершен символом . на новой строке. Пример можно увидеть ниже:

    & R 1
    To: root@localhost
    Subject: Re: test

    Thank you, I did get your email.
    .
    EOT

Для отправки нового сообщения используйте клавишу m и введите адрес получателя. Несколько получателей могут быть указаны через запятую. Введите тему сообщения и его содержимое. Конец сообщения отмечается помещением символа . на новой строке.

    & mail root@localhost
    Subject: I mastered mail

    Now I can send and receive email using mail ... :)
    .
    EOT

В утилите `mail` для вызова справки в любой момент может быть использована команда ?, для получения помощи по `mail` необходимо также обратиться к странице справочника mail(1).

> Замечание: Как упоминалось выше, команда mail(1) не была первоначально предназначена для работы с вложениями, и поэтому их поддержка довольно слабая. Современные MUA, такие как mutt, работают с вложениями гораздо более уверенно. Но если вы все же предпочитаете использовать `mail`, установите порт `converters/mpack`.

### 25.11.2. mutt

mutt это небольшая но очень мощная почтовая программа с отличными возможностями, в числе которых:

- Возможность сортировки сообщений по дискуссиям;

- Поддержка PGP для подписи и шифрования сообщений;

- Поддержка MIME;

- Поддержка Maildir;

- Широкие возможности настройки.

Все эти возможности делают mutt одним из самых лучших почтовых клиентов. Обратитесь к http://www.mutt.org за дополнительной информацией по mutt.

Стабильная версия mutt может быть установлена из порта `mail/mutt`. После установки порта, mutt может быть запущен следующей командой:

    % mutt

mutt автоматически прочтет содержимое пользовательского почтового ящика в каталоге `/var/mail` и отобразит почту, если она имеется в наличии. Если почты в ящике пользователя нет, mutt будет ожидать команд от пользователя. В примере ниже показан mutt со списком сообщений:

Для чтения почты просто выберите сообщение с помощью клавиш навигации и нажмите Enter. Пример mutt, отображающего сообщение, показан ниже:

Как и команда mail(1), mutt позволяет пользователям отвечать как только отправителю, так и всем получателям. Для ответа только отправителю почты, используйте клавишу r. Для группового ответа и отправителю сообщения и всем получателям используйте клавишу g.

> Замечание: mutt использует vi(1) в качестве редактора для создания писем и ответа на них. Редактор можно заменить путем создания или редактирования собственного `.muttrc` в своем домашнем каталоге и установки переменной `editor`, или установкой переменной окружения `EDITOR`. Обратитесь к http://www.mutt.org/ за более подробной информацией о настройке mutt.

Для создания нового почтового сообщения нажмите m. После введения темы mutt запустит vi(1) для создания письма. Как только письмо будет завершено, сохраните его и закройте `vi`, mutt продолжит работу, отобразив окно с сообщением, которое должно быть отправлено. Для отправки сообщения нажмите y. Пример окна с сообщением показан ниже:

mutt также содержит исчерпывающий справочник, к которому можно обратиться из большинства меню, нажав клавишу ?. Верхняя строка также показывает клавиатурные сокращения, которые могут быть использованы.

### 25.11.3. pine

pine предназначен для начинающих пользователей, но включает некоторые дополнительные возможности.

> Внимание: В программе pine ранее были обнаружены некоторые уязвимости, позволяющие удаленному взломщику выполнять произвольный код с правами пользователя локальной системы путем отправки специально подготовленного письма. Все эти известные проблемы были исправлены, но код pine написан в очень небезопасном стиле и офицеры безопасности FreeBSD считают, что возможно наличие других не обнаруженных уязвимостей. Имейте это ввиду при установке pine.

Текущая версия pine может быть установлена из порта `mail/pine4`. Как только порт установлен, pine можно запустить командой:

    % pine

При первом запуске pine отображает страницу приветствия с кратким введением, а также просьбу команды разработчиков pine отправить анонимное почтовое сообщение, позволяющее им определить количество пользователей, работающих с их почтовым клиентом. Для отправки анонимного сообщения нажмите Enter, или E для выхода из из приветствия без отправки анонимного сообщения. Пример приветствия показан ниже:

Затем отображается главное меню, перемещение по которому осуществляется с помощью клавиш навигации. В главном меню находятся ссылки для составления новых писем, просмотра почтовых каталогов, и даже управления адресной книгой. Ниже главного меню показаны клавиатурные сокращения, выполняющие соответствующие задачи.

По умолчанию pine открывает каталог `inbox`. Для просмотра списка сообщений нажмите I, или выберите MESSAGE INDEX, как показано ниже:

В списке показаны сообщения в текущем каталоге, они могут быть просмотрены с помощью клавиш навигации. Подсвеченные сообщения можно прочесть нажав Enter.

На снимке экрана ниже показан пример письма, отображаемого pine. Внизу экрана даны клавиатурные сокращения. Например, r используется для указания MUA ответить на отображаемое в данный момент сообщение.

Ответ на письмо в pine осуществляется с помощью редактора pico, который устанавливается по умолчанию вместе с pine. pico упрощает навигацию в сообщении гораздо проще для новых пользователей, чем vi(1) или mail(1). Как только ответ будет готов, сообщение можно отправить нажав Ctrl+X. pine запросит подтверждение.

Программа pine может быть настроена через пункт SETUP главного меню. Обратитесь к странице http://www.washington.edu/pine/ за дальнейшей информацией.

## 25.12. Использование fetchmail

Предоставил Marc Silver.

fetchmail это полноценный IMAP и POP клиент, позволяющий пользователям автоматически загружать почту с удаленных серверов IMAP и POP в локальные почтовые ящики; так доступ к почтовым ящикам упрощается. fetchmail может быть установлен из порта `mail/fetchmail` и предоставляет различные возможности, в том числе:

- Поддержка протоколов POP3, APOP, KPOP, IMAP, ETRN и ODMR.

- Возможность пересылки почты через SMTP, что позволяет использовать функции фильтрации, перенаправления и синонимов.

- Может быт запущен в режиме даемона для периодической проверки поступающих сообщений.

- Может забирать почту с нескольких почтовых ящиков и рассылать ее различным локальным пользователям в зависимости от настроек.

Описание всех возможностей fetchmail выходит за пределы этой главы, за дополнительной информацией обратитесь к документации по fetchmail. Утилита fetchmail требует наличия файла настройки `.fetchmailrc`. Этот файл включает информацию о сервере, а также информацию для аутентификации. Поскольку этот файл содержит важную информацию, правильно будет сделать его доступным для чтения только владельцем с помощью следующей команды:

    % chmod 600 .fetchmailrc

В следующем примере файл `.fetchmailrc` предназначен для загрузки одного почтового ящика по протоколу POP. Этот файл указывает fetchmail соединиться с `example.com` с именем пользователя `joesoap` и паролем `XXX`. В примере подразумевается, что пользователь `joesoap` существует также и в локальной системе.

    poll example.com protocol pop3 username "joesoap" password "XXX"

В следующем примере производится подключение к нескольким POP и IMAP серверам, при необходимости почта перенаправляется другим локальным пользователям:

    poll example.com proto pop3:
    user "joesoap", with password "XXX", is "jsoap" here;
    user "andrea", with password "XXXX";
    poll example2.net proto imap:
    user "john", with password "XXXXX", is "myth" here;

Утилита fetchmail может работать в режиме даемона с флагом `-d`, заданным с интервалом (в секундах), через который fetchmail должен опрашивать серверы, перечисленные в `.fetchmailrc`. В следующем примере fetchmail будет забирать почту каждые 600 секунд:

    % fetchmail -d 600

Дополнительную информацию о fetchmail можно найти на сайте http://fetchmail.berlios.de/.

## 25.13. Использование procmail

Предоставил Marc Silver.

Утилита procmail это невероятно мощное приложение, используемое для фильтрации входящей почты. Она позволяет пользователям определять ''правила'', которые могут быть сопоставлены входящим письмам для выполнения определенных действий или для перенаправления почты в альтернативные почтовые ящики и/или на почтовые адреса. procmail может быть установлен с помощью порта `mail/procmail`. После установки он может быть непосредственно интегрирован в большинство MTA; сверьтесь с документацией на ваш MTA. Другой способ интеграции procmail - добавление в файл `.forward`, находящийся в домашнем каталоге пользователя, следующей строки:

    "|exec /usr/local/bin/procmail || exit 75"

В этом разделе будут показаны основы настройки правил procmail, а также краткое описание их действия. Эти и другие правила должны быть помещены в файл `.procmailrc`, который должен находиться в домашнем каталоге пользователя.

Большую часть этих правил также можно найти на странице справочника procmailex(5).

Перенаправление всей почты от `<user@example.com>` на внешний адрес `<goodmail@example2.com>`:

    :0
    * ^From.*user@example.com
    ! goodmail@example2.com

Перенаправление всей почты объемом меньше 1000 байт на внешний адрес `<goodmail@example2.com>`:

    :0
    * < 1000
    ! goodmail@example2.com

Перенаправление всей почты, отправляемой на `<alternate@example.com>`, в почтовый ящик `alternate`:

    :0
    * ^TOalternate@example.com
    alternate

Перенаправление всей почты с ''Spam'' в `/dev/null`:

    :0
    ^Subject:.*Spam
    /dev/null

Полезный пример, обрабатывающий входящую почту со списков рассылки `FreeBSD.org` и помещающий каждый список в отдельный почтовый ящик.

    :0
    * ^Sender:.owner-freebsd-\/[^@]+@FreeBSD.ORG
    {
        LISTNAME=${MATCH}
        :0
        * LISTNAME??^\/[^@]+
        FreeBSD-${MATCH}
    }

# Глава 26. Сетевые серверы

Реорганизовал Murray Stokely. Перевод на русский язык: Андрей Захватов.

## 26.1. Краткий обзор

Эта глава посвящена некоторым наиболее часто используемым сетевым службам систем UNIX. Мы опишем, как установить, настроить, протестировать и поддерживать многие различные типы сетевых сервисов. Для облегчения вашей работы в главу включены примеры конфигурационных файлов.

После чтения этой главы вы будете знать:

- Как управлять даемоном inetd.

- Как настроить сетевую файловую систему.

- Как настроить сетевой сервер информации для совместного использования учётных записей пользователей.

- Как настроить автоматическое конфигурирование сетевых параметров при помощи DHCP.

- Как настроить сервер имён.

- Как настроить Apache HTTP сервер.

- Как настроить файловый и сервер печати для Windows клиентов с использованием Samba.

- Как синхронизировать дату и время, а также настроить сервер времени с протоколом NTP.

Перед чтением этой главы вы должны:

- Понимать основы работы скриптов `/etc/rc`.

- Свободно владеть основными сетевыми терминами.

- Знать как устанавливать дополнительные программы сторонних разработчиков (Гл. 4).

## 26.2. ''Супер-сервер'' inetd

Текст предоставил Chern Lee. Обновлено для FreeBSD 6.1-RELEASEПроект документации FreeBSD.

### 26.2.1. Обзор

inetd(8) иногда называют также ''супер-сервером Интернет'', потому что он управляет соединениями к многим сервисам. Когда inetd принимает соединение, он определяет, для какой программы предназначено соединение, запускает соответствующий процесс и предоставляет ему сокет, ссылка на который передается процессу в качестве стандартных устройств ввода, вывода и сообщения об ошибках. Для не слишком нагруженных серверов запуск через inetd может уменьшить общую нагрузку на систему по сравнению с запуском каждого даемона индивидуально в выделенном режиме.

В первую очередь inetd используется для вызова других даемонов, но несколько простых протоколов, таких, как chargen, auth и daytime, обслуживаются непосредственно.

Этот раздел посвящен основам настройки inetd посредством его параметров командной строки и его конфигурационного файла, `/etc/inetd.conf`.

### 26.2.2. Настройки

inetd инициализируется посредством системы rc(8). Параметр `inetd_enable` по умолчанию установлен в `NO`, однако может быть включен утилитой sysinstall в процессе установки. Указание

    inetd_enable="YES"

или

    inetd_enable="NO"

в файле `/etc/rc.conf` разрешит или запретит запуск inetd во время загрузки. Команда

    /etc/rc.d/inetd rcvar

покажет текущие установки переменных, относящихся к inetd.

Кроме того, через `inetd_flags` даемону inetd могут быть переданы различные параметры командной строки.

### 26.2.3. Параметры командной строки

Как и большинство даемонов, для inetd существует большое количество разнообразных опций, изменяющих его поведение. Полный из список таков;

`inetd` `[-d] [-l] [-w] [-W] [-c maximum] [-C rate] [-a address | hostname] [-p filename] [-R rate] [-s maximum] [configuration file]`

Опции могут передаваться inetd при помощи переменной `inetd_flags` файла `/etc/rc.conf`. По умолчанию переменная `inetd_flags` установлена в `-wW -C 60`, то есть включает обработку TCP wrapping и запрещает обращаться с одного IP-адреса к сервису более чем 60 раз в минуту.

Начинающих пользователей порадует отсутствие необходимости менять эти параметры в стандартных случаях. Тем не менее, мы остановимся на опциях, ограничивающих количество и частоту соединений, поскольку они могут быть полезны для исключения массированных атак. Полный список опций можно найти на странице справочника inetd(8).

-c maximum

  Определение максимального числа одновременных запусков каждой службы; по умолчание не ограничено. Может быть переопределено индивидуально для каждой службы при помощи параметра `max-child`.

-C rate

  Определение по умолчанию максимального количества раз, которое служба может быть вызвана с одного IP-адреса в минуту; по умолчанию не ограничено. Может быть переопределено для каждой службы параметром `max-connections-per-ip-per-minute`.

-R rate

  Определяет максимальное количество раз, которое служба может быть вызвана в минуту; по умолчанию 256. Частота, равная 0, не ограничивает число вызовов.

-s maximum

  Задает максимальное количество процессов, одновременно обслуживающих один сервис для одного IP-адреса; по умолчанию не ограничено. Может переопределяться для каждой службы параметром `max-child-per-ip`.

### 26.2.4. `inetd.conf`

Настройка inetd производится через файл `/etc/inetd.conf`.

Если в файле `/etc/inetd.conf` делались изменения, то inetd можно заставить считать его конфигурационный файл повторно посредством команды

Пример 26-1. Перезагрузка конфигурационного файла inetd

    # /etc/rc.d/inetd reload

В каждой строке конфигурационного файла описывается отдельный даемон. Комментариям в файле предшествует знак ''#''. Строки в файле `/etc/inetd.conf` имеют такой формат:

    service-name
    socket-type
    protocol
    {wait|nowait}[/max-child[/max-connections-per-ip-per-minute[/max-child-per-ip]]]
    user[:group][/login-class]
    server-program
    server-program-arguments

Пример записи для даемона ftpd(8), использующего 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, tcp4 | TCP IPv4
  udp, udp4 | UDP IPv4
  tcp6 | TCP IPv6
  udp6 | UDP IPv6
  tcp46 | TCP как для IPv4, так и для v6
  udp46 | UDP как для IPv4, так и для v6

{wait|nowait}[/max-child[/max-connections-per-ip-per-minute[/max-child-per-ip]]]

  `wait|nowait` определяет, может ли даемон, вызванный из inetd, работать с собственным сокетом, или нет. Сокеты типа `dgram` должны использовать параметр `wait`, когда как даемоны с потоковыми сокетами, которые обычно многопоточны, должны использовать `nowait`. `wait` обычно передает много сокетов одному даемону, когда как `nowait` порождает даемон для каждого нового сокета.

  Максимальное число порожденных даемонов, которых может создать inetd, может быть задано параметром `max-child`. Если нужно ограничение в десять экземпляров некоторого даемона, то после параметра `nowait` нужно задать `/10`. При задании `/0` ограничения на количество экземпляров снимаются.

  Кроме `max-child`, могут быть задействованы два других параметра, ограничивающих максимальное число соединений от одного источника. `max-connections-per-ip-per-minute` ограничивает количество соединений от одного IP-адреса в течение минуты, так что значение, равное десяти, будет ограничивать любой заданный IP-адрес на выполнение десяти попыток подключения к некоторому сервису в минуту. Параметр `max-child-per-ip` ограничивает количество дочерних процессов, которые могут быть одновременно задействованы на обслуживание одного IP-адреса. Эти опции полезны для предотвращения намеренного или ненамеренного расходования ресурсов и атак типа Denial of Service (DoS) на машину.

  В этом поле одно из значений `wait` или `nowait` обязательны. `max-child`, `max-connections-per-ip-per-minute` и `max-child-per-ip` опциональны.

  Многопоточный даемон типа stream без ограничений `max-child`, `max-connections-per-ip-per-minute` или `max-child-per-ip` будет определен просто как `nowait`.

  Тот же самый даемон с ограничением в максимум десять даемонов будет определен так: `nowait/10`.

  Та же конфигурация с ограничением в двадцать соединений на IP-адрес в минуту и общим ограничением в максимум десять порожденных даемонов выглядит так: `nowait/10/20`.

  Эти параметры, используемые все со значениями по умолчанию даемоном fingerd(8), имеют такой вид:

      finger stream  tcp     nowait/3/10 nobody /usr/libexec/fingerd fingerd -s

  Наконец, пример, описывающий ограничение на 100 даемонов в целом, при этом не более чем по 5 на один IP-адрес, будет выглядеть так: `nowait/100/0/5`.

user

  Это имя пользователя, под которым должен работать соответствующий даемон. Чаще всего даемоны работают как пользователь `root`. Для обеспечения безопасности некоторые серверы запускаются как пользователь `daemon` или как пользователь с минимальными правами `nobody`.

server-program

  Полный маршрут к даемону, который будет выполняться при установлении соединения. Если даемон является сервисом, предоставляемым самим inetd, то нужно задать ключевое слово `internal`.

server-program-arguments

  Этот параметр работает вместе с параметром `server-program`, задавая параметры, начиная с `argv[0]`, передаваемые даемону при запуске. Если в командной строке задано `mydaemon -d`, то `mydaemon -d` будет являться значением для `server-program-arguments`. И снова, если даемон является внутренней службой, то здесь нужно использовать `internal`.

### 26.2.5. Безопасность

В зависимости от выбранных при установке параметров, многие из служб inetd могут оказаться по умолчанию включенными. Если нет особой нужды в некотором даемоне, подумайте, не стоит ли его выключить? Поместите знак ''#'' перед ненужным даемоном в `/etc/inetd.conf` и пошлите сигнал для inetd. Некоторые даемоны, такие, как fingerd, вообще нежелательны, потому что они дают информацию, которая может оказаться полезной атакующему.

Некоторые даемоны не заботятся о безопасности и имеют большие тайм-ауты для соединений или вообще их не имеют. Это позволяет атакующему неспешно устанавливать соединения к конкретному даемону, истощая имеющиеся ресурсы. Может оказаться полезным задать для некоторых даемонов ограничения `max-connections-per-ip-per-minute`, `max-child` и `max-child-per-ip`, особенно если вы обнаружите слишком большое число соединений.

По умолчанию механизм TCP wrapping включен. Обратитесь к справочной странице по hosts_access(5) для получения более подробной информации о задании ограничений TCP для различных даемонов, запускаемых посредством inetd.

### 26.2.6. Разное

daytime, time, echo, discard, chargen и auth все являются услугами, предоставляемыми самим inetd.

Сервис auth предоставляет идентификационные сетевые услуги и поддается настройке; прочие сервисы ненастраиваемы.

Обратитесь к справочной странице по inetd(8) для получения более подробной информации.

## 26.3. Network File System (NFS)

Реорганизация и улучшения Tom Rhodes. Текст создал Bill Swingle.

Кроме поддержки многих прочих типов файловых систем, во FreeBSD встроена поддержка сетевой файловой системы (Network File System), известной как NFS. NFS позволяет системе использовать каталоги и файлы совместно с другими машинами, посредством сети. Посредством NFS пользователи и программы могут получать доступ к файлам на удалённых системах точно так же, как если бы это были файлы на собственных дисках.

Вот некоторые из наиболее заметных преимуществ, которые даёт использование NFS:

- Отдельно взятые рабочие станции используют меньше собственного дискового пространства, так как совместно используемые данные могут храниться на одной отдельной машине и быть доступными для других машин в сети.

- Пользователям не нужно иметь домашние каталоги, отдельные для каждой машины в вашей сети. Домашние каталоги могут располагаться на сервере NFS и их можно сделать доступными отовсюду в сети.

- Устройства хранения информации, такие, как дискеты, приводы CD-ROM и устройства Zip®, могут использоваться другими машинами в сети. Это может привести к уменьшению переносимых устройств хранения информации в сети.

### 26.3.1. Как работает NFS

NFS строится по крайней мере из двух основных частей: сервера и одного или большего количества клиентов. Клиент обращается к данным, находящимся на сервере, в режиме удалённого доступа. Для того, чтобы это нормально функционировало, нужно настроить и запустить несколько процессов.

На сервере работают следующие даемоны:

Даемон | Описание
--- | ---
nfsd | Даемон NFS, обслуживающий запросы от клиентов NFS.
mountd | Даемон монтирования NFS, который выполняет запросы, передаваемые ему от nfsd(8).
rpcbind | Этот даемон позволяет клиентам NFS определить порт, используемый сервером NFS.

Клиент может запустить также даемон, называемый nfsiod. nfsiod обслуживает запросы, поступающие от сервера от сервера NFS. Он необязателен, увеличивает производительность, однако для нормальной и правильной работы не требуется. Для получения дополнительной информации обратитесь к разделу справочной системы о nfsiod(8).

### 26.3.2. Настройка NFS

Настройка NFS является достаточно незамысловатым процессом. Все процессы, которые должны быть запущены, могут быть запущены во время загрузки посредством нескольких модификаций в вашем файле `/etc/rc.conf`.

Проверьте, что на NFS-сервере в файле `/etc/rc.conf` имеются такие строки:

    rpcbind_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` будет некорректен:

    # Invalid when /usr is one file system
    /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`

или вызовом скрипта `mountd` подсистемы rc(8) с соответствующим параметром:

    # /etc/rc.d/mountd reload

За подробной информацией о работе скриптов rc.d обращайтесь к Разд. 11.7.

Как вариант, при перезагрузке FreeBSD всё настроится правильно. Хотя выполнять перезагрузку вовсе не обязательно. Выполнение следующих команд пользователем `root` запустит всё, что нужно.

На сервере NFS:

    # rpcbind
    # 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) перечислены все доступные параметры.

### 26.3.3. Практическое использование

У NFS есть много вариантов практического применения. Ниже приводится несколько наиболее широко распространённых способов её использования:

- Настройка несколько машин для совместного использования CDROM или других носителей. Это более дешёвый и зачастую более удобный способ установки программного обеспечения на несколько машин.

- В больших сетях может оказаться более удобным настроить центральный сервер NFS, на котором размещаются все домашние каталоги пользователей. Эти домашние каталоги могут затем экспортироваться в сеть так, что пользователи всегда будут иметь один и тот же домашний каталог вне зависимости от того, на какой рабочей станции они работают.

- Несколько машин могут иметь общий каталог `/usr/ports/distfiles`. Таким образом, когда вам нужно будет установить порт на несколько машин, вы сможете быстро получить доступ к исходным текстам без их загрузки на каждой машине.

### 26.3.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`.

Пример 26-2. Монтирование ресурса при помощи 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) для получения более полной информации.

### 26.3.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(8) при монтировании вручную.

Нужно отметить, что имеется также другая проблема, ошибочно принимаемая за приведенную выше, когда серверы и клиенты 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. Когда происходит наложение, затронутые блоки будут переданы снова, и скорее всего, они будут получены, собраны и подтверждены.

## 26.4. Network Information System (NIS/YP)

Текст создал Bill Swingle. Внёс добавления Eric Ogren, Udo Erdelhoff.

### 26.4.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®; хотя их внутренние реализации не так уж и похожи, основные функции сравнимы.

### 26.4.2. Термины/программы, о которых вы должны знать

Существует несколько терминов и некоторое количество пользовательских программ, которые будут нужны, когда вы будете пытаться сделать NIS во FreeBSD, и в случае создания сервера, и в случае работы в качестве клиента NIS:

Термин | Описание
--- | ---
Имя домена NIS | Главный сервер NIS и все его клиенты (включая вторичные серверы), имеют доменное имя NIS. Как и в случае с именем домена Windows NT, имя домена NIS не имеет ничего общего с DNS.
rpcbind | Для обеспечения работы RPC (Remote Procedure Call, Удалённого Вызова Процедур, сетевого протокола, используемого NIS), должен быть запущен даемон rpcbind. Если даемон rpcbind не запущен, невозможно будет запустить сервер 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 и там менять свои пароли.

### 26.4.3. Как это работает?

В системе NIS существует три типа хостов: основные (master) серверы, вторичные (slave) серверы и клиентские машины. Серверы выполняют роль централизованного хранилища информации о конфигурации хостов. Основные серверы хранят оригиналы этой информации, когда как вторичные серверы хранят ее копию для обеспечения избыточности. Клиенты связываются с серверами, чтобы предоставить им эту информацию.

Информация во многих файлах может совместно использоваться следующим образом. Файлы `master.passwd`, `group` и `hosts` используются совместно через NIS. Когда процессу, работающему на клиентской машине, требуется информация, как правило, находящаяся в этих файлах локально, то он делает запрос к серверу NIS, с которым связан.

#### 26.4.3.1. Типы машин

- Основной сервер NIS. Такой сервер, по аналогии с первичным контроллером домена Windows NT, хранит файлы, используемые всеми клиентами NIS. Файлы `passwd`, `group` и различные другие файлы, используемые клиентами NIS, находятся на основном сервере.

  > Замечание: Возможно использование одной машины в качестве сервера для более чем одного домена NIS. Однако, в этом введении такая ситуация не рассматривается, и предполагается менее масштабное использование NIS.

- Вторичные серверы NIS. Похожие на вторичные контроллеры доменов Windows NT, вторичные серверы NIS содержат копии оригинальных файлов данных NIS. Вторичные серверы NIS обеспечивают избыточность, что нужно в критичных приложениях. Они также помогают распределять нагрузку на основной сервер: клиенты NIS всегда подключаются к тому серверу NIS, который ответил первым, в том числе и к вторичным серверам.

- Клиенты NIS. Клиенты NIS, как и большинство рабочих станций Windows NT, аутентифицируются на сервере NIS (или на контроллере домена Windows NT для рабочих станций Windows NT) во время входа в систему.

### 26.4.4. Использование NIS/YP

В этом разделе приводится пример настройки NIS.

> Замечание: В этом разделе предполагается, что вы работаете с FreeBSD 3.3 или выше. Указания, приводимые здесь, скорее всего, будут работать с любой версией FreeBSD, выше, чем 3.0, однако нет гарантий, что это на самом деле так.

#### 26.4.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 первый раз, ее нужно хорошо обдумать. Вне зависимости от размеров вашей сети, есть несколько ключевых моментов, которые требуют принятия решений.

##### 26.4.4.1.1. Выбор имени домена NIS

Это имя не должно быть ''именем домена'', которое вы использовали. Более точно это имя называется ''именем домена NIS''. Когда клиент рассылает запросы на получение информации, он включает в них имя домена NIS, частью которого является. Таким способом многие сервера в сети могут указать, какой сервер на какой запрос должен отвечать. Думайте о домене NIS как об имени группы хостов, которые каким-то образом связаны.

Некоторые организации в качестве имени домена NIS используют свой домен Интернет. Это не рекомендуется, так как может вызвать проблемы в процессе решения сетевых проблем. Имя домена NIS должно быть уникальным в пределах вашей сети и хорошо, если оно будет описывать группу машин, которые представляет. Например, художественный отдел в компании Acme Inc. может находиться в домене NIS с именем ''acme-art''. В нашем примере положим, что мы выбрали имя `test-domain`.

Несмотря на это, некоторые операционные системы (в частности, SunOS) используют свое имя домена NIS в качестве имени домена Интернет. Если одна или более машин в вашей сети имеют такие ограничения, вы обязаны использовать имя домена Интернет в качестве имени домена NIS.

##### 26.4.4.1.2. Требования к серверу

Есть несколько вещей, которые нужно иметь в виду при выборе машины для использования в качестве сервера NIS. Одной из обескураживающей вещью, касающейся NIS, является уровень зависимости клиентов от серверов. Если клиент не может подключиться к серверу своего домена NIS, зачастую машину просто становится нельзя использовать. Отсутствие информации о пользователях и группах приводит к временной остановке работы большинства систем. Зная это, вы должны выбрать машину, которая не должна подвергаться частым перезагрузкам и не используется для разработки. Сервер NIS в идеале должен быть отдельно стоящей машиной, единственным целью в жизни которой является быть сервером NIS. Если вы работаете в сети, которая не так уж сильно загружена, то можно поместить сервер NIS на машине, на которой запущены и другие сервисы, просто имейте в виду, что если сервер NIS становится недоступным, то это негативно отражается на всех клиентах NIS.

#### 26.4.4.2. Серверы NIS

Оригинальные копии всей информации NIS хранится на единственной машине, которая называется главным сервером NIS. Базы данных, которые используются для хранения информации, называются картами NIS. Во FreeBSD эти карты хранятся в `/var/yp/[domainname]`, где `[domainname]` является именем обслуживаемого домена NIS. Один сервер NIS может поддерживать одновременно несколько доменов, так что есть возможность иметь несколько таких каталогов, по одному на каждый обслуживаемый домен. Каждый домен будет иметь свой собственный независимый от других набор карт.

Основной и вторичный серверы обслуживают все запросы NIS с помощью даемона `ypserv`. `ypserv` отвечает за получение входящих запросов от клиентов NIS, распознавание запрашиваемого домена и отображение имени в путь к соответствующему файлы базы данных, а также передаче информации из базы данных обратно клиенту.

##### 26.4.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 с клиентской машины.

> Замечание: В зависимости от ваших настроек NIS, вам могут понадобиться дополнительные строки. Обратитесь к разделу о серверах NIS, которые являются и клиентами NIS ниже для получения подробной информации.

А теперь всё, что вам нужно сделать, это запустить команду `/etc/netstart`, работая как администратор. По ней произойдет настройка всего, при этом будут использоваться значения, заданные в файле `/etc/rc.conf`.

##### 26.4.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 (администраторы)).

> Замечание: Проверьте, чтобы файл `/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"

(она уже не раскомментирована).

##### 26.4.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.

#### 26.4.4.3. Клиенты NIS

Клиент NIS выполняет так называемую привязку к конкретному серверу NIS при помощи даемона `ypbind`. `ypbind` определяет домен, используемый в системе по умолчанию (тот, который устанавливается по команде `domainname`), и начинает широковещательную рассылку запросов RPC в локальной сети. В этих запросах указано имя домена, к серверу которого `ypbind` пытается осуществить привязку. Если сервер, который был настроен для обслуживания запрашиваемого домена, получит широковещательный запрос, он ответит `ypbind`, который, в свою очередь запомнит адрес сервера. Если имеется несколько серверов (например, главный и несколько вторичных), то `ypbind` будет использовать адрес первого ответившего. С этого момента клиентская система будет направлять все свои запросы NIS на этот сервер. Время от времени `ypbind` будет ''пинать'' сервер для проверки его работоспособности. Если на один из тестовых пакетов не удастся получить ответа за разумное время, то `ypbind` пометит этот домен как домен, с которым связка разорвана, и снова начнет процесс посылки широковещательных запросов в надежде найти другой сервер.

##### 26.4.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` для добавления следующей строки в конец файла:

       +:::::::::

   > Замечание: Эта строчка даст всем пользователям с корректной учетной записью в картах учетных баз пользователей доступ к этой системе. Есть множество способов настроить ваш клиент NIS, изменив эту строку. Посмотрите ниже текст, касающийся сетевых групп, чтобы получить более подробную информацию. Дополнительная информация для изучения находится в книге издательства O'Reilly под названием `Managing NFS and NIS`.

   > Замечание: Вы должны оставить хотя бы одну локальную запись (то есть не импортировать ее через NIS) в вашем `/etc/master.passwd` и эта запись должна быть также членом группы `wheel`. Если с NIS что-то случится, эта запись может использоваться для удаленного входа в систему, перехода в режим администратора и исправления неисправностей.

3. Для импортирования всех возможных записей о группах с сервера NIS, добавьте в ваш файл `/etc/group` такую строчку:

       +:*::

После завершения выполнения этих шагов у вас должно получиться запустить команду `ypcat passwd` и увидеть карту учетных записей сервера NIS.

### 26.4.5. Безопасность NIS

В общем-то любой пользователь, зная имя вашего домена, может выполнить запрос RPC к ypserv(8) и получить содержимое ваших карт NIS. Для предотвращения такого неавторизованного обмена ypserv(8) поддерживает так называемую систему ''securenets'', которая может использоваться для ограничения доступа к некоторой группе хостов. При запуске ypserv(8) будет пытаться загрузить информацию, касающуюся securenets, из файла `/var/yp/securenets`.

> Замечание: Имя каталога зависит от параметра, указанного вместе с опцией `-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` также поддерживает пакет программ TCP Wrapper от Wietse Venema. Это позволяет администратору для ограничения доступа вместо `/var/yp/securenets` использовать конфигурационные файлы TCP Wrapper.

> Замечание: Хотя оба этих метода управления доступом обеспечивают некоторую безопасность, они, как основанные на проверке привилегированного порта, оба подвержены атакам типа ''IP spoofing''. Весь сетевой трафик, связанный с работой NIS, должен блокироваться вашим брандмауэром.

> Серверы, использующие файл `/var/yp/securenets`, могут быть не в состоянии обслуживать старых клиентов NIS с древней реализацией протокола TCP/IP. Некоторые из этих реализаций при рассылке широковещательных запросов устанавливают все биты машинной части адреса в ноль и/или не в состоянии определить маску подсети при вычислении адреса широковещательной рассылки. Хотя некоторые из этих проблем могут быть решены изменением конфигурации клиента, другие могут привести к отказу от использования `/var/yp/securenets`.

> Использование `/var/yp/securenets` на сервере с такой архаичной реализацией TCP/IP является весьма плохой идеей, и приведёт к потере работоспособности NIS в большой части вашей сети.

> Использование пакета TCP Wrapper увеличит время отклика вашего сервера NIS. Дополнительной задержки может оказаться достаточно для возникновения тайм-аутов в клиентских программах, особенно в загруженных сетях или с медленными серверами NIS. Если одна или более ваших клиентских систем страдают от таких проблем, вы должны преобразовать такие клиентские системы во вторичные серверы NIS и сделать принудительную их привязку к самим себе.

### 26.4.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#

### 26.4.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).

> Замечание: Не нужно использовать имена сетевых групп длиннее 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`.

> Внимание: Проверьте, что строка `+:::::::::/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 оставались в разумных пределах.

### 26.4.8. Важные замечания

Есть некоторые действия, которые нужно будет выполнять по-другому, если вы работаете с NIS.

- Каждый раз, когда вы собираетесь добавить пользователя в лаборатории, вы должны добавить его только на главном сервере NIS и обязательно перестроить карты NIS. Если вы забудете сделать это, то новый пользователь не сможет нигде войти, кроме как на главном сервере NIS. Например, если в лаборатории нам нужно добавить нового пользователя `jsmith`, мы делаем вот что:

      # pw useradd jsmith
      # cd /var/yp
      # make test-domain

  Вместо `pw useradd jsmith` вы можете также запустить команду `adduser jsmith`.

- Не помещайте административные учетные записи в карты NIS. Вам не нужно распространять административных пользователей и их пароли на машины, которые не должны иметь доступ к таким учётным записям.

- Сделайте главный и вторичные серверы NIS безопасными и минимизируйте их время простоя. Если кто-то либо взломает, либо просто отключит эти машины, то люди без права входа в лабораторию с легкостью получат доступ.

  Это основное уязвимое место в любой централизованно администрируемой системе. Если вы не защищаете ваши серверы NIS, вы будете иметь дело с толпой разозлённых пользователей!

### 26.4.9. Совместимость с NIS v1

ypserv из поставки FreeBSD имеет встроенную поддержку для обслуживания клиентов NIS v1. Реализация NIS во FreeBSD использует только протокол NIS v2, хотя другие реализации имеют поддержку протокола v1 для совместимости со старыми системами. Даемоны ypbind, поставляемые с такими системами, будут пытаться осуществить привязку к серверу NIS v1, даже если это им не нужно (и они будут постоянно рассылать широковещательные запросы в поиске такого сервера даже после получения ответа от сервера v2). Отметьте, что хотя имеется поддержка обычных клиентских вызовов, эта версия ypserv не отрабатывает запросы на передачу карт v1; следовательно, она не может использоваться в качестве главного или вторичного серверов вместе с другими серверами NIS, поддерживающими только протокол v1. К счастью, скорее всего, в настоящий момент такие серверы практически не используются.

### 26.4.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).

### 26.4.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

> Замечание: Формат паролей, которые уже находятся в файле `/etc/master.passwd`, не будет изменён до тех пор, пока пользователь не сменит свой пароль после перестроения базы данных параметров входа в систему.

После этого, чтобы удостовериться в том, что пароли зашифрованы в том формате, который выбран вами, нужно проверить, что строка `crypt_default` в `/etc/auth.conf` указывает предпочтение выбранного вами формата паролей. Для этого поместите выбранный формат первым в списке. Например, при использовании DES-шифрования паролей строка будет выглядеть так:

    crypt_default  =   des blf md5

Выполнив вышеперечисленные шаги на каждом из серверов и клиентов NIS, работающих на FreeBSD, вы можете обеспечить их согласованность относительно используемого в вашей сети формата паролей. Если у вас возникли проблемы с аутентификацией клиента NIS, начать её решать определённо стоит отсюда. Запомните: если вы хотите использовать сервер NIS в гетерогенной сети, вам, наверное, нужно будет использовать DES на всех системах в силу того, что это минимальный общий стандарт.

## 26.5. Автоматическая настройка сети (DHCP)

Текст написал Greg Sutter.

### 26.5.1. Что такое DHCP?

DHCP, или Dynamic Host Configuration Protocol (Протокол Динамической Конфигурации Хостов), описывает порядок, по которому система может подключиться к сети и получить необходимую информацию для работы в ней. Во FreeBSD версиях младше 6.0 используется реализация DHCP клиента (dhclient(8)) от ISC (Internet Software Consortium). Более поздние версии используют `dhclient`, импортированный из OpenBSD 3.7. Вся информация здесь, относительно `dhclient` относится либо к ISC, либо к DHCP клиентам. DHCP сервер включён в ISC дистрибутив.

### 26.5.2. Что описывается в этом разделе

В этом разделе описываются, как компоненты клиентской части ISC или OpenBSD DHCP клиента, так и компоненты ISC DHCP системы со стороны сервера. Программа, работающая на клиентской стороне, `dhclient`, интегрирована в поставку FreeBSD, а серверная часть доступна в виде порта `net/isc-dhcp3-server`. Кроме ссылок ниже, много полезной информации находится на страницах справочной системы, описывающих dhclient(8), dhcp-options(5) и dhclient.conf(5).

### 26.5.3. Как это работает

Когда на клиентской машине выполняется программа `dhclient`, являющаяся клиентом DHCP, она начинает широковещательную рассылку запросов на получение настроечной информации. По умолчанию эти запросы делаются на 68 порт UDP. Сервер отвечает на UDP 67, выдавая клиенту адрес IP и другую необходимую информацию, такую, как сетевую маску, маршрутизатор и серверы DNS. Вся эта информация даётся в форме ''аренды'' DHCP и верна только определенное время (что настраивается администратором сервера DHCP). При таком подходе устаревшие адреса IP тех клиентов, которые больше не подключены к сети, могут автоматически использоваться повторно.

Клиенты DHCP могут получить от сервера очень много информации. Подробный список находится в странице Справочника dhcp-options(5).

### 26.5.4. Интеграция с FreeBSD

DHCP клиент от ISC или от OpenBSD, `dhclient`, полностью интегрирован во FreeBSD (относительно, используемой вами версии FreeBSD). Поддержка клиента DHCP есть как в программе установки, так и в самой системе, что исключает необходимость в знании подробностей конфигурации сети в любой сети, имеющей сервер DHCP. Утилита `dhclient` включена во все версии FreeBSD, начиная с 3.2.

DHCP поддерживается утилитой sysinstall. При настройке сетевого интерфейса из программы sysinstall второй вопрос, который вам задается: ''Do you want to try DHCP configuration of the interface?'' (''Хотите ли вы попробовать настроить этот интерфейс через DHCP?''). Утвердительный ответ приведёт к запуску программы `dhclient`, и при удачном его выполнении к автоматическому заданию информации для настройки интерфейса.

Есть две вещи, которые вы должны сделать для того, чтобы ваша система использовала DHCP при загрузке:

- Убедитесь, что устройство `bpf` включено в компиляцию вашего ядра. Чтобы это сделать, добавьте строчку `device bpf` в конфигурационный файл ядра и перестройте ядро. Более подробная информация о построении ядер имеется в Гл. 8.

  Устройство `bpf` уже является частью ядра `GENERIC`, которое поставляется вместе с FreeBSD, так что, если вы не используете другое ядро, то вам и не нужно его делать для того, чтобы работал DHCP.

  > Замечание: Те, кто беспокоится о безопасности, должны иметь в виду, что устройство `bpf` является также тем самым устройством, которое позволяет работать программам-снифферам пакетов (хотя для этого они должны быть запущены пользователем `root`). Наличие устройства `bpf` необходимо для использования DHCP, но если вы чересчур беспокоитесь о безопасности, то вам нельзя добавлять устройство `bpf` в ядро только для того, чтобы в неопределённом будущем использовать DHCP.

- Отредактируйте ваш файл `/etc/rc.conf`, включив в него следующее:

      ifconfig_fxp0="DHCP"

> Замечание: Обязательно замените `fxp0` на имя интерфейса, который вы хотите настраивать динамически, как это описано в Разд. 11.8.

Если `dhclient` в вашей системе находится в другом месте или если вы хотите задать дополнительные параметры для `dhclient`, то также укажите следующее (изменив так, как вам нужно):

    dhcp_program="/sbin/dhclient"
    dhcp_flags=""

Сервер DHCP, dhcpd, включён как часть порта `net/isc-dhcp3-server` в коллекцию портов. Этот порт содержит DHCP-сервер от ISC и документацию.

### 26.5.5. Файлы

- `/etc/dhclient.conf`

  `dhclient` требует наличия конфигурационного файла, `/etc/dhclient.conf`. Как правило, файл содержит только комментарии, а настройки по умолчанию достаточно хороши. Этот настроечный файл описан на страницах справочной системы по dhclient.conf(5).

- `/sbin/dhclient`

  `dhclient` скомпонован статически и находится в каталоге `/sbin`. На страница Справочника dhclient(8) дается более подробная информация о `dhclient`.

- `/sbin/dhclient-script`

  `dhclient-script` является специфичным для FreeBSD скриптом настройки клиента DHCP. Он описан в dhclient-script(8), но для нормального функционирования никаких модификаций со стороны пользователя не требуется.

- `/var/db/dhclient.leases`

  В этом файле клиент DHCP хранит базу данных выданных к использованию адресов в виде журнала. На странице dhclient.leases(5) дается гораздо более подробное описание.

### 26.5.6. Дополнительная литература

Полное описание протокола DHCP дается в RFC 2131. Кроме того, дополнительная информация есть на сервере http://www.dhcp.org/.

### 26.5.7. Установка и настройка сервера DHCP

#### 26.5.7.1. Чему посвящён этот раздел

Этот раздел даёт информацию о том, как настроить систему FreeBSD для работы в качестве сервера DHCP на основе реализации пакета DHCP от ISC (Internet Software Consortium).

Серверная часть пакета не поставляется как часть FreeBSD, так что вам потребуется установить порт `net/isc-dhcp3-relay` для получения этого сервиса. Обратитесь к Гл. 4 для получения более полной информации об использовании коллекции портов.

#### 26.5.7.2. Установка сервера DHCP

Для того, чтобы настроить систему FreeBSD на работу в качестве сервера DHCP, вам необходимо обеспечить присутствие устройства bpf(4), вкомпилированного в ядро. Для этого добавьте строку `device bpf` в файл конфигурации вашего ядра. Для получения более полной информации о построении ядер, обратитесь к Гл. 8.

Устройство `bpf` уже входит в состав ядра `GENERIC`, поставляемого с FreeBSD, так что вам не нужно создавать собственное ядро для обеспечения работы DHCP.

> Замечание: Те, кто обращает особое внимание на вопросы безопасности, должны заметить, что `bpf` является тем устройством, что позволяет нормально работать снифферам пакетов (хотя таким программам требуются привилегированный доступ). Наличие устройства `bpf` обязательно для использования DHCP, но если вы очень обеспокоены безопасностью, наверное, вам не нужно включать `bpf` в ваше ядро только потому, что в отдалённом будущем вы собираетесь использовать DHCP.

Следующим действием, которое вам нужно выполнить, является редактирование примерного `dhcpd.conf`, который устанавливается в составе порта `net/isc-dhcp3-server`. По умолчанию это файл `/usr/local/etc/dhcpd.conf.sample`, и вы должны скопировать его в файл `/usr/local/etc/dhcpd.conf` перед тем, как его редактировать.

#### 26.5.7.3. Настройка сервера DHCP

`dhcpd.conf` состоит из деклараций относительно подсетей и хостов, и проще всего описывается на примере:

    option domain-name "example.com";
    option domain-name-servers 192.168.4.100;
    option subnet-mask 255.255.255.0;

    default-lease-time 3600;
    max-lease-time 86400;
    ddns-update-style none;

    subnet 192.168.4.0 netmask 255.255.255.0 {
      range 192.168.4.129 192.168.4.254;
      option routers 192.168.4.1;
    }

    host mailhost {
      hardware ethernet 02:03:04:05:06:07;
      fixed-address mailhost.example.com;
    }

  Этот параметр задаёт домен, который будет выдаваться клиентам в качестве домена, используемого по умолчанию при поиске. Обратитесь к страницам справочной системы по resolv.conf(5) для получения дополнительной информации о том, что это значит.
  Этот параметр задаёт список разделённых запятыми серверов DNS, которые должен использовать клиент.
  Маска сети, которая будет выдаваться клиентам.
  Клиент может запросить определённое время, которое будет действовать выданная информация. В противном случае сервер выдаст настройки с этим сроком (в секундах).
  Это максимальное время, на которое сервер будет выдавать конфигурацию. Если клиент запросит больший срок, он будет подтверждён, но будет действовать только `max-lease-time` секунд.
  Этот параметр задаёт, будет ли сервер DHCP пытаться обновить DNS при выдаче или освобождении конфигурационной информации. В реализации ISC этот параметр является обязательным.
  Это определение того, какие IP-адреса должны использоваться в качестве резерва для выдачи клиентам. IP-адреса между и включая границы, будут выдаваться клиентам.
  Объявление маршрутизатора, используемого по умолчанию, который будет выдаваться клиентам.
  Аппаратный MAC-адрес хоста (чтобы сервер DHCP мог распознать хост, когда тот делает запрос).
  Определение того, что хосту всегда будет выдаваться один и тот же IP-адрес. Заметьте, что указание здесь имени хоста корректно, так как сервер DHCP будет разрешать имя хоста самостоятельно до того, как выдать конфигурационную информацию.

Когда вы закончите составлять свой `dhcpd.conf`, нужно разрешить запуск сервера DHCP в файле `/etc/rc.conf`, добавив в него строки

    dhcpd_enable="YES"
    dhcpd_ifaces="dc0"

Замените `dc0` именем интерфейса (или именами интерфейсов, разделяя их пробелами), на котором(ых) сервер DHCP должен принимать запросы от клиентов.

Затем вы можете стартовать сервер DHCP при помощи команды

    # /usr/local/etc/rc.d/isc-dhcpd.sh start

Если в будущем вам понадобится сделать изменения в настройке вашего сервера, то важно заметить, что посылка сигнала `SIGHUP` приложению dhcpd не приведёт к перезагрузке настроек, как это бывает для большинства даемонов. Вам нужно послать сигнал `SIGTERM` для остановки процесса, а затем перезапустить его при помощи вышеприведённой команды.

#### 26.5.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), которые устанавливаются портом, даётся более полное описание.

## 26.6. Domain Name System (DNS)

Текст предоставил Chern Lee, Tom Rhodes, Daniel Gerzo.

### 26.6.1. Обзор

По умолчанию во FreeBSD используется одна из версий программы BIND (Berkeley Internet Name Domain), являющейся самой распространенной реализацией протокола DNS. DNS - это протокол, при помощи которого имена преобразуются в IP-адреса и наоборот. Например, в ответ на запрос о `www.FreeBSD.org` будет получен IP-адрес веб-сервера Проекта FreeBSD, а запрос о `ftp.FreeBSD.org` возвратит IP-адрес соответствующей машины с FTP-сервером. Точно также происходит и обратный процесс. Запрос, содержащий IP-адрес машины, возвратит имя хоста. Для выполнения запросов к DNS вовсе не обязательно иметь в системе работающий сервер имён.

FreeBSD в настоящее время поставляется с сервером DNS BIND9, предоставляющим расширенные настройки безопасности, новую схему расположения файлов конфигурации и автоматические настройки для chroot(8).

В сети Интернет DNS управляется через достаточно сложную систему авторизированных корневых серверов имён, серверов доменов первого уровня (Top Level Domain, TLD) и других менее крупных серверов имён, которые содержат и кэшируют информацию о конкретных доменах.

На данный момент пакет BIND поддерживается Internet Software Consortium http://www.isc.org/.

### 26.6.2. Используемая терминология

Для понимания этого документа нужно понимать значения некоторых терминов, связанных с работой DNS.

Термин | Определение
--- | ---
Прямой запрос к DNS (forward DNS) | Преобразование имён хостов в адреса IP
Ориджин (origin) | Обозначает домен, покрываемый конкретным файлом зоны
named, bind, сервер имён | Общеупотребительные названия для обозначения пакета BIND, обеспечивающего работу сервера имён во FreeBSD.
Резолвер | Системный процесс, посредством которого машина обращается к серверу имён для получения информации о зоне
Обратный DNS (reverse DNS) | Операция, обратная прямому запросу к DNS; преобразование адресов IP в имена хостов
Корневая зона | Начало иерархии зон Интернет. Все зоны находятся под корневой зоной, подобно тому, как все файлы располагаются ниже корневого каталога.
Зона | Отдельный домен, поддомен или часть DNS, управляемая одним сервером.

Примеры зон:

- `.` является корневой зоной

- `org.` -- домен верхнего уровня (TLD) в корневой зоне.

- `example.org.` является зоной в домене верхнего уровня (TLD) `org.`.

- `1.168.192.in-addr.arpa` является зоной, в которую включены все IP-адреса, формирующие пространство адресов `192.168.1.*`.

Как можно видеть, уточняющая часть имени хоста появляется слева. Например, `example.org.` более точен, чем `org.`, также, как `org.` более точен, чем корневая зона. Расположение каждой части имени хоста сильно похоже на файловую систему: каталог `/dev` расположен в корневой файловой системе, и так далее.

### 26.6.3. Причины, по которым вам может понадобиться сервер имён

Сервера имён обычно используются в двух видах: авторитетный сервер имён и кэширующий сервер имён.

Авторитетный сервер имён нужен, когда:

- нужно предоставлять информацию о DNS остальному миру, отвечая на запросы авторизированно.

- зарегистрирован домен, такой, как `example.org` и в этом домене требуется поставить имена машин в соответствие с их адресами IP.

- блоку адресов IP требуется обратные записи DNS (IP в имена хостов).

- резервный (slave) сервер имён должен отвечать на запросы.

Кэширующий сервер имён нужен, когда:

- локальный сервер DNS может кэшировать информацию и отвечать на запросы быстрее, чем это происходит при прямом опросе внешнего сервера имён.

Например, когда кто-нибудь запрашивает информацию о `www.FreeBSD.org`, то обычно резолвер обращается к серверу имён вашего провайдера, посылает запрос и ожидает ответа. С локальным кэширующим сервером DNS запрос во внешний мир будет делаться всего один раз. Каждый дополнительный запрос не будет посылаться за пределы локальной сети, потому что информация уже имеется в кэше.

### 26.6.4. Как это работает

Во FreeBSD даемон BIND, по очевидным причинам, называется named.

Файл | Описание
--- | ---
named(8) | Даемон BIND
rndc(8) | Программа управления даемоном сервера имён
`/etc/namedb` | Каталог, в котором располагается вся информация о зонах BIND
`/etc/namedb/named.conf` | Конфигурационный файл для даемона

Файлы зон обычно располагаются в каталоге `/etc/namedb` и содержат информацию о зоне DNS, за которую отвечает сервер имён.

В зависимости от способа конфигурации зоны на сервере файлы зон могут располагаться в подкаталогах `master`, `slave` или `dynamic` иерархии `/etc/namedb`. Эти файлы содержат DNS информацию, которую и будет сообщать в ответ на запросы сервер имен.

### 26.6.5. Запуск BIND

Так как сервер имён BIND устанавливается по умолчанию, его настройка сравнительно проста.

Стандартная конфигурация named запускает простой кэширующий сервер в ограниченной среде chroot(8). Для одноразового запуска даемона в этой конфигурации используйте команду

    # /etc/rc.d/named forcestart

Чтобы даемон named запускался во время загрузки, поместите в `/etc/rc.conf` следующую строку:

    named_enable="YES"

Разумеется, существует множество различных конфигураций `/etc/namedb/named.conf`, лежащих за рамками данного документа. Разнообразные опции запуска named во FreeBSD описаны в переменных `named_`*`` файла `/etc/defaults/rc.conf` и странице справочника rc.conf(5). Кроме того, полезной может оказаться Разд. 11.7.

### 26.6.6. Конфигурационные файлы

Файлы конфигурации даемона named расположены в каталоге `/etc/namedb` и, за исключением случая, когда вам требуется просто резолвер, требуют модификации.

#### 26.6.6.1. Использование `make-localhost`

Для создания основной зоны для локального хоста перейдите в каталог `/etc/namedb` и выполните команду

    # sh make-localhost

В каталоге `master` должны появиться файлы `localhost.rev` для локальной адресной зоны и `localhost-v6.rev` для для конфигурации IPv6. Ссылки на эти файлы уже содержатся в файле конфигурации `named.conf`.

#### 26.6.6.2. `/etc/namedb/named.conf`

    // $FreeBSD$
    //
    // If you are going to set up an authoritative server, make sure you
    // understand the hairy details of how DNS works.  Even with
    // simple mistakes, you can break connectivity for affected parties,
    // or cause huge amounts of useless Internet traffic.

    options {
        directory   "/etc/namedb";
        pid-file    "/var/run/named/pid";
        dump-file   "/var/dump/named_dump.db";
        statistics-file "/var/stats/named.stats";

    // If named is being used only as a local resolver, this is a safe default.
    // For named to be accessible to the network, comment this option, specify
    // the proper IP address, or delete this option.
        listen-on   { 127.0.0.1; };

    // If you have IPv6 enabled on this system, uncomment this option for
    // use as a local resolver.  To give access to the network, specify
    // an IPv6 address, or the keyword "any".
    //  listen-on-v6    { ::1; };

    // 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`. В обычном случае сервер имён будет рекурсивно опрашивать определённые серверы имён Интернет до тех пор, пока не получит ответ на свой запрос. При включении этого раздела он будет автоматически опрашивать сервер имён вашего провайдера (или тот, который здесь указан), используя преимущества его кэша. наличия нужной информации. Если соответствующий сервер имён провайдера работает быстро и имеет хороший канал связи, то в результате такой настройки вы можете получить хороший результат.

> Внимание: `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 you enable a local name server, don't forget to enter 127.0.0.1
    // first in your /etc/resolv.conf so this server will be queried.
    // 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 "master/localhost.rev";
    };

    // RFC 3152
    zone "1.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.ARPA" {
        type master;
        file "master/localhost-v6.rev";
    };

    // NB: Do not use the IP addresses below, they are faked, and only
    // serve demonstration/documentation purposes!
    //
    // Example slave zone config entries.  It can be convenient to become
    // a slave at least for the zone 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 named after the first bytes of the IP address, in reverse
    // order, with ".IN-ADDR.ARPA" appended.)
    //
    // Before starting to set up a primary zone, make sure you fully
    // understand how DNS and BIND works.  There are sometimes
    // non-obvious pitfalls.  Setting up a slave zone is simpler.
    //
    // NB: Don't blindly enable the examples below. :-)  Use actual names
    // and addresses instead.

    /* An example master zone
    zone "example.net" {
        type master;
        file "master/example.net";
    };
    */

    /* An example dynamic zone
    key "exampleorgkey" {
        algorithm hmac-md5;
        secret "sf87HJqjkqh8ac87a02lla==";
    };
    zone "example.org" {
        type master;
        allow-update {
            key "exampleorgkey";
        };
        file "dynamic/example.org";
    };
    */

    /* Examples of forward and reverse slave zones
    zone "example.com" {
        type slave;
        file "slave/example.com";
        masters {
            192.168.1.1;
        };
    };
    zone "1.168.192.in-addr.arpa" {
        type slave;
        file "slave/1.168.192.in-addr.arpa";
        masters {
            192.168.1.1;
        };
    };
    */

Это примеры описаний прямой и обратной зон из файла `named.conf` для вторичных серверов.

Для каждого новой зоны, которую будет обслуживать сервер имён, в файл `named.conf` должна быть добавлена запись.

К примеру, самая простая запись для домена `example.org` может выглядеть вот так:

    zone "example.org" {
        type master;
        file "master/example.org";
    };

Зона является первичной, что отражается в поле `type`, и информация о зоне хранится в файле `/etc/namedb/master/example.org`, что указывается в поле `file`.

    zone "example.org" {
        type slave;
        file "slave/example.org";
    };

В случае вторичной зоны информация о ней передается с основного сервера имён для заданной зоны и сохраняется в указанном файле. Если и когда основной сервер имён выходит и строя или недосягаем, то скачанная информация о зоне будет находиться на вторичных серверах, и они смогут обслуживать эту зону.

#### 26.6.6.3. Файлы зон

Пример файла зоны `example.org` для основного сервера (располагающийся в файле `/etc/namedb/master/example.org`) имеет такой вид:

    $TTL 3600        ; 1 hour
    example.org.    IN      SOA      ns1.example.org. admin.example.org. (
                                    2006051501      ; Serial
                                    10800           ; Refresh
                                    3600            ; Retry
                                    604800          ; Expire
                                    86400           ; Minimum TTL
                            )

    ; DNS Servers
                    IN      NS      ns1.example.org.
                    IN      NS      ns2.example.org.

    ; MX Records
                    IN      MX 10   mx.example.org.
                    IN      MX 20   mail.example.org.

                    IN      A       192.168.1.1

    ; Machine Names
    localhost       IN      A       127.0.0.1
    ns1             IN      A       192.168.1.2
    ns2             IN      A       192.168.1.3
    mx              IN      A       192.168.1.4
    mail            IN      A       192.168.1.5

    ; Aliases
    www             IN      CNAME   @

Заметьте, что все имена хостов, оканчивающиеся на ''.'', задают полное имя, тогда как все имена без символа ''.'' на конце считаются заданными относительно origin. Например, `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. (
                            2006051501      ; 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>` становится `admin.example.org`)

`2006051501`

  последовательный номер файла. При каждом изменении файла зоны это число должно увеличиваться. В настоящее время для нумерации многие администраторы предпочитают формат `ггггммддвв`. `2006051501` будет означать, что файл последний раз изменялся 15.05.2006, а последнее число `01` означает, что это была первая модификация файла за день. Последовательный номер важен, так как он служит для того, чтобы вторичные серверы узнавали об обновлении зоны.

                    IN      NS      ns1.example.org.

Это NS-запись. Такие записи должны иметься для всех серверов имён, которые будут отвечать за зону.

    localhost       IN      A       127.0.0.1
    ns1             IN      A       192.168.1.2
    ns2             IN      A       192.168.1.3
    mx              IN      A       192.168.1.4
    mail            IN      A       192.168.1.5

Записи типа A служат для обозначения имён машин. Как это видно выше, имя `ns1.example.org` будет преобразовано в `192.168.1.2`.

                    IN      A       192.168.1.1

Эта строка присваивает IP адрес `192.168.1.1` текущему ориджину, в данном случае домену `example.org`.

    www         IN CNAME   @

Записи с каноническими именами обычно используются для присвоения машинам псевдонимов. В этом примере `www` является псевдонимом для ''главной'' машины, соответствующей ориджину, то есть `example.org` (`192.168.1.1`). Записи CNAME могут использоваться для присвоения псевдонимов именам хостов или для использования одного имени несколькими машинами по очереди.

              IN MX   10      mail.example.org.

MX-запись указывает, какие почтовые серверы отвечают за обработку входящей электронной почты для зоны. `mail.example.org` является именем почтового сервера, а 10 обозначает приоритет этого почтового сервера.

Можно иметь несколько почтовых серверов с приоритетами, например, 10, 20 и так далее. Почтовый сервер, пытающийся доставить почту для `example.org`, сначала попробует связаться с машиной, имеющий MX-запись с самым большим приоритетом (наименьшим числовым значением в поле MX), затем с приоритетом поменьше и так далее, до тех пор, пока почта не будет отправлена.

Для файлов зон in-addr.arpa (обратные записи DNS) используется тот же самый формат, отличающийся только использованием записей PTR вместо A или CNAME.

    $TTL 3600

    1.168.192.in-addr.arpa. IN SOA ns1.example.org. admin.example.org. (
                            2006051501      ; Serial
                            10800           ; Refresh
                            3600            ; Retry
                            604800          ; Expire
                            3600 )          ; Minimum

            IN      NS      ns1.example.org.
            IN      NS      ns2.example.org.

    1       IN      PTR     example.org.
    2       IN      PTR     ns1.example.org.
    3       IN      PTR     ns2.example.org.
    4       IN      PTR     mx.example.org.
    5       IN      PTR     mail.example.org.

В этом файле дается полное соответствие имён хостов IP-адресам в нашем описанном ранее вымышленном домене.

### 26.6.7. Кэширующий сервер имён

Кэширующий сервер имён - это сервер имён, не отвечающий ни за какую зону. Он просто выполняет запросы от своего имени и сохраняет результаты для последующего использования. Для настройки такого сервера достаточно исключить все описания зон из стандартной конфигурации сервера имён.

### 26.6.8. Безопасность

Хотя BIND является самой распространенной реализацией DNS, всегда стоит вопрос об обеспечении безопасности. Время от времени обнаруживаются возможные и реальные бреши в безопасности.

FreeBSD автоматически запускает named в ограниченном окружении (chroot(8)); помимо этого, есть еще несколько механизмов, помогающих защититься от возможных атак на сервис DNS.

Весьма полезно прочесть сообщения безопасности CERT и подписаться на Список рассылки FreeBSD, посвящённый срочным сообщениям, связанным с безопасностью для того, чтобы быть в курсе текущих проблем с обеспечением безопасности Internet и FreeBSD.

> Подсказка: Если возникают проблемы, то наличие последних исходных текстов и свежеоткомпилированного named не помешает.

### 26.6.9. Дополнительная литература

Справочная информация по BIND/named: rndc(8), named(8) и named.conf(5)

- Официальная страница ISC BIND

- Официальный форум ISC BIND

- FAQ по BIND

- Книга издательства O'Reilly DNS and BIND 5th Edition

- RFC1034 - Domain Names - Concepts and Facilities

- RFC1035 - Domain Names - Implementation and Specification

## 26.7. Apache HTTP сервер

Предоставил Murray Stokely.

### 26.7.1. Обзор

FreeBSD используется в качестве платформы для многих из самых нагруженных серверов в мире. Большинство серверов в интернет используют Apache HTTP сервер. Пакеты Apache должны быть включены в поставку FreeBSD. Если вы не установили их во вместе с системой, воспользуйтесь портами `www/apache13` или `www/apache20`.

Как только Apache был успешно установлен, его необходимо настроить.

> Замечание: В этом разделе рассказывается о версии 1.3.X Apache HTTP сервера, поскольку эта версия наиболее широко используется в FreeBSD. Apache 2.X содержит много новых технологий, но здесь они не обсуждаются. За дополнительной информацией о Apache 2.X, обращайтесь к http://httpd.apache.org/.

### 26.7.2. Настройка

В FreeBSD основной файл настройки Apache HTTP сервера устанавливается в `/usr/local/etc/apache/httpd.conf`. Это обычный текстовый UNIX файл настройки с строками комментариев, начинающимися с символа `#`. Исчерпывающее описание всех возможных параметров настройки находится за пределом рассмотрения этой книги, поэтому здесь будут описаны только наиболее часто модифицируемые директивы.

`ServerRoot "/usr/local"`

  Указывает верхний каталог установки Apache по умолчанию. Бинарные файлы находятся в `bin` и `sbin`, подкаталоги расположены относительно корневого каталога сервера, файлы настройки находятся в `etc/apache`.

`ServerAdmin you@your.address`

  Адрес, на который должны будут отправляться сообщения о проблемах с сервером. Этот адрес выводится на некоторые генерируемые сервером страницы, например с сообщениями об ошибках.

`ServerName www.example.com`

  `ServerName` позволяет вам устанавливать имя хоста, которое отправляется обратно клиентам, если оно отличается от того, с которым настроен хост (например, использование `www` вместо реального имени хоста).

`DocumentRoot "/usr/local/www/data"`

  `DocumentRoot`: Каталог, внутри которого будут храниться документы. По умолчанию, все запросы обрабатываются внутри этого каталога, но символические ссылки и синонимы могут использоваться для указания на другие каталоги.

Хорошей идеей будет сделать резервные копии настроек Apache перед внесением изменений. Как только вы будете удовлетворены первоначальной настройкой, можно запускать Apache.

### 26.7.3. Запуск Apache

Apache не запускается из inetd, как это делают многие другие сетевые серверы. Он настроен для автономного запуска, чтобы обеспечивать большую производительность при обработке HTTP запросов от браузеров клиентов. Для упрощения запуска, остановки и перезапуска сервера существует shell скрипт. Для запуска Apache в первый раз просто выполните:

    # /usr/local/sbin/apachectl start

Вы можете остановить сервер в любой момент, выполнив:

    # /usr/local/sbin/apachectl stop

После внесения любых изменений в файл настроек, вам потребуется перезапустить сервер:

    # /usr/local/sbin/apachectl restart

Для перезапуска Apache без прерывания имеющихся соединений, выполните:

    # /usr/local/sbin/apachectl graceful

Дополнительная информация находится на странице справочного руководства apachectl(8).

Для запуска Apache при старте системы, добавьте в `/etc/rc.conf` следующую строку:

    apache_enable="YES"

Если вы хотите передать программе Apache `httpd` дополнительные параметры командной при загрузке системы, они могут быть помещены в дополнительную строку `rc.conf`:

    apache_flags=""

Теперь, когда веб сервер запущен, вы можете просмотреть свой веб сайт, задав в строке браузера адрес `http://localhost/`. По умолчанию отображается веб страница `/usr/local/www/data/index.html`.

### 26.7.4. Виртуальный хостинг

Apache поддерживает два различных типа виртуального хостинга (Virtual Hosting). Первый метод основан на именах (Name-based Virtual Hosting). Он использует полученные от клиента заголовки HTTP/1.1 для определения имени хоста. Это позволяет многим различным доменам использовать один и тот же IP адрес.

Для настройки Apache на использование этого типа хостинга добавьте в `httpd.conf` запись подобную следующей:

    NameVirtualHost *

Если веб сервер назывался `www.domain.tld` и вы хотите настроить виртуальный домен для `www.someotherdomain.tld`, необходимо добавить в `httpd.conf` следующие записи:

    <VirtualHost *>
    ServerName www.domain.tld
    DocumentRoot /www/domain.tld
    </VirtualHost>

    <VirtualHost *>
    ServerName www.someotherdomain.tld
    DocumentRoot /www/someotherdomain.tld
    </VirtualHost>

Замените адреса и пути к документам на те, что вы будете использовать.

За дополнительной информацией по настройке виртуальных хостов обращайтесь к официальной документации Apache: http://httpd.apache.org/docs/vhosts/.

### 26.7.5. Модули Apache

Существуют множество различных модулей Apache, которые добавляют функциональность к основному серверу. Коллекция портов FreeBSD предоставляет простой способ установки Apache с некоторыми наиболее популярными дополнительными модулями.

#### 26.7.5.1. mod_ssl

Модуль mod_ssl использует библиотеку OpenSSL для сильной криптографии через протоколы Secure Sockets Layer (SSL v2/v3) и Transport Layer Security (TLS v1). Этот модуль содержит все необходимое для запроса подписанного сертификата из центра сертификации для защищенного веб сервера на FreeBSD.

Если вы еще не установили Apache, версия Apache 1.3.X с mod_ssl может быть установлена через порт `www/apache13-modssl`. Поддержка SSL также доступна для Apache 2.X через порт `www/apache20`, где она включена по умолчанию.

#### 26.7.5.2. Построение динамических сайтов при помощи Perl и PHP

В последние годы все большее число компаний обращает внимание на Интернет как площадку для ведения и расширения бизнеса. Среди прочего, этот процесс подчеркивает потребность в интерактивном содержимом сайтов. Некоторые компании, такие как Microsoft, представляют свои закрытые решения; сообщество разработчиков открытых программ отвечает на вызов. Два возможных пути решения проблемы динамического контента -- mod_perl и mod_php.

##### 26.7.5.2.1. mod_perl

Проект интеграции Apache/Perl объединяет мощь языка программирования Perl и HTTP сервера Apache. С модулем mod_perl возможно написание модулей Apache полностью на Perl. Кроме того, постоянно запущенный встроенный в сервер интерпретатор позволяет не тратить ресурсы на запуск внешнего интерпретатора и время на запуск Perl.

mod_perl можно использовать различными способами. Помните, что mod_perl 1.0 работает только с Apache 1.3, тогда как mod_perl 2.0 совместим только с Apache 2. mod_perl 1.0 доступен как порт `www/mod_perl`, а также в виде статически скомпилированной версии в `www/apache13-modperl`. mod_perl 2.0 доступен как `www/mod_perl2`.

##### 26.7.5.2.2. mod_php

Написал Tom Rhodes.

PHP, также известный как ''Препроцессор гипертекста'' (''Hypertext Preprocessor''), -- это скриптовый язык общего назначения, в основном предназначенный для веб разработки. Этот язык может быть встроен в HTML, его синтаксис заимствован из C, Java и Perl, и он позволяет веб разработчикам быстро писать динамически генерируемые страницы.

Добавление поддержки PHP5 к веб серверу Apache производится путем установки порта `www/mod_php5`.

Этот порт устанавливает и настраивает модули, необходимые для поддержки динамических PHP веб страниц. Убедитесь, что в файл `/usr/local/etc/apache/httpd.conf` были добавлены следующие секции:

    LoadModule php5_module        libexec/apache/libphp5.so

    AddModule mod_php5.c
        <IfModule mod_php5.c>
            DirectoryIndex index.php index.html
        </IfModule>
        <IfModule mod_php5.c>
            AddType application/x-httpd-php .php
            AddType application/x-httpd-php-source .phps
        </IfModule>

Для загрузки модуля PHP после этого просто вызовите команду `apachectl` с параметром graceful:

    # apachectl graceful

Поддержка PHP в FreeBSD построена по модульному принципу, поэтому базовая установка обладает очень ограниченной функциональностью. Дополнительная функциональность может быть легко добавлена при помощи порта `lang/php5-extensions`, управляющего набором расширений PHP через меню, либо просто путем установки дополнительных портов.

Например, для добавления поддержки MySQL к PHP5, просто установите порт `databases/php5-mysql`.

После установки новых расширений сервер Apache должен быть рестартован, чтобы изменения в конфигурации вступили в силу:

    # apachectl graceful

## 26.8. Файл сервер и печать для Microsoft® Windows клиентов (Samba)

Предоставил Murray Stokely.

### 26.8.1. Обзор

Samba это популярный пакет программ с открытыми исходными текстами, которая предоставляет файловые и принт-сервисы Microsoft Windows клиентам. Эти клиенты могут подключаться и использовать файловое пространство FreeBSD, как если бы это был локальный диск, или принтеры FreeBSD, как если бы это были локальные принтеры.

Пакет Samba должен быть включен в поставку FreeBSD. Если вы не установили Samba при первой установке системы, ее можно установить из порта или пакета `net/samba3`.

### 26.8.2. Настройка

Файл настройки Samba по умолчанию устанавливается в `/usr/local/etc/smb.conf.default`. Этот файл необходимо скопировать в `/usr/local/etc/smb.conf` и отредактировать перед использованием Samba.

В файле `smb.conf` находится информация, необходимая для работы Samba, например определение принтеров и ''общих каталогов'', которые будут использоваться совместно с Windows клиентами. В пакет Samba входит программа с веб интерфейсом, называемая swat, которая дает простой способ редактирования файла `smb.conf`.

#### 26.8.2.1. Использование Samba Web Administration Tool (SWAT)

Программа веб администрирования Samba (Samba Web Administration Tool, SWAT) запускается как даемон из inetd. Следовательно, в `/etc/inetd.conf` необходимо снять комментарий перед тем, как использовать swat для настройки Samba:

    swat   stream  tcp     nowait/400      root    /usr/local/sbin/swat

Как описано в Прим. 26-1, после изменения настроек inetd необходимо перечитать конфигурацию.

Как только swat был включен `inetd.conf`, вы можете использовать браузер для подключения к http://localhost:901. Сначала необходимо зарегистрироваться с системной учетной записью `root`.

После успешного входа на основную страницу настройки Samba, вы можете просмотреть документацию или начать настройку, нажав на кнопку Globals. Раздел Globals соответствует переменным, установленным в разделе `[global]` файла `/usr/local/etc/smb.conf`.

#### 26.8.2.2. Глобальные настройки

Независимо от того, используете ли вы swat, или редактируете `/usr/local/etc/smb.conf` непосредственно, первые директивы, которые вы скорее всего встретите при настройке Samba, будут следующими:

`workgroup`

  Имя домена или рабочей группы NT для компьютеров, которые будут получать доступ к этому серверу.

`netbios name`

  Устанавливает имя NetBIOS, под которым будет работать Samba сервер. По умолчанию оно устанавливается равным первому компоненту DNS имени хоста.

`server string`

  Устанавливает строку, которая будет показана командой `net view` и некоторыми другими сетевыми инструментами, которые отображают строку описания сервера.

#### 26.8.2.3. Настройки безопасности

Две из наиболее важных настроек в `/usr/local/etc/smb.conf` отвечают за выбор модели безопасности и за формат паролей для клиентов. Эти параметры контролируются следующими директивами:

`security`

  Два наиболее часто используемых параметра это `security = share` и `security = user`. Если имена пользователей для клиентов совпадают с их именами на компьютере FreeBSD, вы возможно захотите включить безопасность уровня пользователя (user). Это политика безопасности по умолчанию, она требует, чтобы клиент авторизовался перед доступом к совместно используемым ресурсам.

  На уровне безопасности share клиенту не требуется входить на сервер перед подключением к ресурсу. Эта модель безопасности использовалась по умолчанию в старых версиях Samba.

`passdb backend`

  Samba поддерживает несколько различных подсистем аутентификации. Вы можете аутентифицировать клиентов с помощью LDAP, NIS+, базы данных SQL, или через модифицированный файл паролей. Метод аутентификации по умолчанию `smbpasswd`, и здесь рассматривается только он.

Предполагая, что используется подсистема по умолчанию `smbpasswd`, необходимо создать файл `/usr/local/private/smbpasswd`, чтобы Samba могла аутентифицировать клиентов. Если вы хотите разрешить всем учетным записям UNIX доступ с Windows клиентов, используйте следующую команду:

    # grep -v "^#" /etc/passwd | make_smbpasswd > /usr/local/private/smbpasswd
    # chmod 600 /usr/local/private/smbpasswd

Обратитесь к документации на Samba за дополнительной информацией о параметрах настройки. Основные настройки, рассмотренные здесь, достаточны для первого запуска Samba.

### 26.8.3. Запуск Samba

Для запуска Samba при загрузке системы, добавьте в `/etc/rc.conf` следующую строку:

    samba_enable="YES"

Затем вы можете запустить Samba в любой момент, набрав:

    # /usr/local/etc/rc.d/samba.sh start
    Starting SAMBA: removing stale tdbs :
    Starting nmbd.
    Starting smbd.

Samba состоит из трех отдельных даемонов. Вы можете видеть, что nmbd и smbd запускаются скриптом `samba.sh`. Если вы включили сервис разрешения имен winbind в `smb.conf`, то увидите также запуск даемона winbindd.

Вы можете остановить Samba в любой момент, набрав:

    # /usr/local/etc/rc.d/samba.sh stop

Samba это сложный программный набор с функциональностью, позволяющей полную интеграцию в сети Microsoft Windows. За дальнейшей информацией о функциях, выходящих за рамки описанной здесь базовой установки, обращайтесь к http://www.samba.org.

## 26.9. Протокол передачи файлов (FTP)

Предоставил Murray Stokely.

### 26.9.1. Обзор

Протокол передачи файлов (File Transfer Protocol, FTP) дает пользователям простой путь передачи файлов на и с FTP сервера. В FreeBSD серверная программа FTP, ftpd, включена в базовую систему. Это упрощает настройку и администрирование FTP сервера в FreeBSD.

### 26.9.2. Настройка

Наиболее важный шаг заключается в определении того, каким учетным записям будет позволено получать доступ к FTP серверу. В обычной системе FreeBSD есть множество системных учетных записей, используемых различными даемонами, но пользователям должно быть запрещен вход с использованием этих учетных записей. В файле `/etc/ftpusers` находится список пользователей, которым запрещен доступ по FTP. По умолчанию он включает упомянутые системные учетные записи, но в него можно добавить и определенных пользователей, которым будет запрещен доступ по FTP.

Вам может понадобиться ограничить доступ определенных пользователей без полного запрета использования FTP. Это можно сделать через файл `/etc/ftpchroot`. В нем находится список пользователей и групп, к которым применяется ограничение доступа. На странице справочника ftpchroot(5) дана подробная информация, и она не будет дублироваться здесь.

Если вы захотите разрешить анонимный FTP доступ на сервер, в системе FreeBSD необходимо создать пользователя `ftp`. Этот пользователь сможет входить на FTP сервер с именем пользователя `ftp` или `anonymous`, с любым паролем (существует соглашение об использовании почтового адреса пользователя в качестве пароля). FTP сервер выполнит chroot(2) при входе пользователя anonymous для ограничения доступа только домашним каталогом пользователя `ftp`.

Существуют два текстовых файла, определяющих сообщение, отправляемое FTP клиентам. Содержимое файла `/etc/ftpwelcome` будет выведено пользователям перед приглашением на вход. После успешного входа будет выведено содержимое файла `/etc/ftpmotd`. Обратите внимание, что путь к этому файлу задается относительно домашнего каталога пользователя, так что анонимным пользователям будет отправляться `~ftp/etc/ftpmotd`.

Как только FTP сервер был правильно настроен, он должен быть включен в `/etc/inetd.conf`. Все, что необходимо, это удалить символ комментария ''#'' из начала существующей строки ftpd:

    ftp    stream  tcp nowait  root    /usr/libexec/ftpd   ftpd -l

Как описано в Прим. 26-1, inetd должен перечитать конфигурацию после того, как этот файл настройки был изменен.

Теперь вы можете войти на FTP сервер, введя:

    % ftp localhost

### 26.9.3. Поддержка

Для протоколирования даемон ftpd использует сообщения syslog(3). По умолчанию, syslog(3) поместит сообщения, относящиеся к FTP, в файл `/var/log/xferlog`. Местоположение лог файла FTP может быть изменено путем изменения следующей строки в файле `/etc/syslog.conf`:

    ftp.info      /var/log/xferlog

Учитывайте потенциальные проблемы, возникающие с анонимным FTP сервером. В частности, вы должны дважды подумать, прежде чем позволить анонимным пользователям загружать файлы на сервер. Вы можете обнаружить, что FTP сайт стал форумом, на котором происходит обмен нелицензионным коммерческим программным обеспечением или чем-то еще хуже. Если вам необходимо разрешить анонимную выгрузку файлов на FTP, права должны быть настроены таким образом, чтобы эти файлы не могли прочитать другие анонимные пользователи до их рассмотрения администратором.

## 26.10. Синхронизация часов через NTP

Текст предоставил Tom Hukins.

### 26.10.1. Обзор

С течением времени часы компьютера имеют тенденцию отставать. Network Time Protocol - Сетевой Протокол Времени (NTP) является одним из способов вести точное время.

Многие сервисы Интернет опираются или сильно зависят от точности часов компьютеров. К примеру, веб-сервер может получать запрос на посылку файла, который был недавно модифицирован. В локальной сети необходимо, чтобы часы компьютеров, совместно использующих файлы, были синхронизированы, чтобы время модификации файлов устанавливалось правильно. Такие службы, как cron(8), также зависят от правильности установки системных часов, поскольку запускают команды в определенное время.

FreeBSD поставляется с сервером NTP ntpd(8), который можно использовать для опроса других серверов NTP для установки часов на вашей машине или предоставления услуг точного времени.

### 26.10.2. Выбор подходящих серверов NTP

Для синхронизации ваших часов вам нужно найти для использования один или большее количество серверов NTP. Ваш сетевой администратор или провайдер могут иметь сервер NTP для этой цели--обратитесь к ним, так ли это в вашем случае. Существует онлайн список общедоступных серверов NTP, которым можно воспользоваться для поиска ближайшего к вам сервера NTP. Не забудьте выяснить политику выбранного вами сервера и спросить разрешения, если это требуется.

Выбор нескольких несвязанных серверов NTP является хорошей идеей в том случае, если один из используемых вами серверов станет недоступным или его часы неточны. ntpd(8) использует ответы, которые он получает от других серверов с умом--он делает предпочтение надежным серверам.

### 26.10.3. Настройка вашей машины

#### 26.10.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`.

#### 26.10.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. Он не должен изменяться никакими другими процессами.

#### 26.10.3.3. Управление доступом к вашему серверу

По умолчанию ваш сервер NTP будет доступен всем хостам в Интернет. Параметр `restrict` в файле `/etc/ntp.conf` позволяет вам контролировать, какие машины могут обращаться к вашему серверу.

Если вы хотите запретить всем машинам обращаться к вашему серверу NTP, добавьте следующую строку в файл `/etc/ntp.conf`:

    restrict default ignore

Если вы хотите разрешить синхронизировать свои часы с вашим сервером только машинам в вашей сети, но запретить им настраивать сервер или быть равноправными участниками синхронизации времени, то вместо указанной добавьте строчку

    restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap

где `192.168.1.0` является адресом IP вашей сети, а `255.255.255.0` её сетевой маской.

`/etc/ntp.conf` может содержать несколько директив `restrict`. Для получения подробной информации обратитесь к подразделу `Access Control Support` (Поддержка Управления Доступом) в ntp.conf(5).

### 26.10.4. Запуск сервера NTP

Для того, чтобы сервер NTP запускался при загрузке, добавьте строку `ntpd_enable="YES"` в файл `/etc/rc.conf`. Если вы хотите передать дополнительные опции в ntpd(8), то отредактируйте параметр `ntpd_flags` в файле `/etc/rc.conf`.

Для запуска сервера без перезагрузки вашей машины, выполните команду `ntpd`, не забыв задать дополнительные параметры из переменной `ntpd_flags` в файле `/etc/rc.conf`. К примеру:

    # ntpd -p /var/run/ntpd.pid

### 26.10.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/`.

> Замечание: Некоторые провайдеры Интернет блокируют трафик по портам с маленькими номерами, что приводит к неработоспособности NTP, так как ответы никогда не достигают вашей машины.

### 26.10.6. Дополнительная литература

Документация по серверу NTP может быть найдена в каталоге `/usr/share/doc/ntp/` в формате HTML.

# Глава 27. Межсетевые экраны

Предоставил Joseph J. Barbish. Преобразовал в SGML и обновил Brad Davis.

## 27.1. Введение

Межсетевые экраны (firewall, брандмауэр) делают возможной фильтрацию входящего и исходящего трафика, идущего через вашу систему. Межсетевой экран использует один или более наборов ''правил'' для проверки сетевых пакетов при их входе или выходе через сетевое соединение, он или позволяет прохождение трафика или блокирует его. Правила межсетевого экрана могут проверять одну или более характеристик пакетов, включая но не ограничиваясь типом протокола, адресом хоста источника или назначения и портом источника или назначения.

Межсетевые экраны могут серьезно повысить уровень безопасности хоста или сети. Они могут быть использованы для выполнения одной или более нижеперечисленных задач:

- Для защиты и изоляции приложений, сервисов и машин во внутренней сети от нежелательного трафика, приходящего из внешней сети интернет.

- Для ограничения или запрещения доступа хостов внутренней сети к сервисам внешней сети интернет.

- Для поддержки преобразования сетевых адресов (network address translation, NAT), что дает возможность задействовать во внутренней сети приватные IP адреса и совместно использовать одно подключение к сети Интернет (либо через один выделенный IP адрес, либо через адрес из пула автоматически присваиваемых публичных адресов).

После прочтения этой главы вы узнаете:

- Как правильно задать правила фильтрации пакетов.

- Разницу между межсетевыми экранами, встроенными в FreeBSD

- Как использовать и настраивать межсетевой экран OpenBSD PF.

- Как использовать и настраивать IPFILTER.

- Как использовать и настраивать IPFW.

Перед прочтением этой главы вам потребуется:

- Ознакомиться с основами FreeBSD и интернет.

## 27.2. Принципы работы межсетевых экранов

Существует два основных способа создания наборов правил межсетевого экрана: ''включающий'' и ''исключающий''. Исключающий межсетевой экран позволяет прохождение всего трафика, за исключением трафика, соответствующего набору правил. Включающий межсетевой экран действует прямо противоположным образом. Он пропускает только трафик, соответствующий правилам и блокирует все остальное.

Включающий межсетевой экран обеспечивает гораздо большую степень контроля исходящего трафика. Поэтому включающий межсетевой экран является лучшим выбором для систем, предоставляющих сервисы в сети Интернет. Он также контролирует тип трафика, порождаемого вне и направляющегося в вашу приватную сеть. Трафик, не попавший в правила, блокируется, а в файл протокола вносятся соответствующие записи. Включающие межсетевые экраны обычно более безопасны, чем исключающие, поскольку они существенно уменьшают риск пропуска межсетевым экраном нежелательного трафика.

> Замечание: Если не указано иначе, то все приведенные в этом разделе примеры наборов правил и конфигураций относятся к типу включающего межсетевого экрана.

Безопасность может быть дополнительно повышена с использованием ''межсетевого экрана с сохранением состояния''. Такой межсетевой экран сохраняет информацию об открытых соединениях и разрешает только трафик через открытые соединения или открытие новых соединений. Недостаток межсетевого экрана с сохранением состояния в том, что он может быть уязвим для атак DoS (Denial of Service, отказ в обслуживании), если множество новых соединений открывается очень быстро. Большинство межсетевых экранов позволяют комбинировать поведение с сохранением состояния и без сохранения состояния, что позволяет создавать оптимальную конфигурацию для каждой конкретной системы.

## 27.3. Пакеты межсетевых экранов

В базовую систему FreeBSD встроено три программных межсетевых экрана. Это IPFILTER (известный также как IPF), IPFIREWALL (известный также как IPFW) и OpenBSD PacketFilter (также известный как PF). Помимо этого, FreeBSD содержит два пакета ограничения трафика (по существу, предназначенных для контроля пропускной способности сетевого соединения): altq(4) и dummynet(4). Dummynet традиционно сильно связан с IPFW, а ALTQ с PF. В настоящее время IPFILTER не поддерживает ограничение пропускной способности сетевого соединения. Для реализации этой функции предлагается использовать IPFILTER совместно с одним из двух существующих пакетов ограничения трафика. Конфигурация следующая: IPFILTER задействуется для фильтрации и трансляции трафика, а IPFW с dummynet(4) или PF с ALTQ -- для контроля пропускной способности сетевого соединения. IPFW и PF для контроля исходящих и входящих пакетов используют наборы правил, хотя и разными способами с разным синтаксисом правил.

Причина, по которой в FreeBSD включено более одного пакета межсетевых экранов, заключается в том, что разные пользователи выдвигают к ним различные требования и используют разные предпочтения. Нет одного пакета, который был бы очевидно лучше других.

Автор предпочитает IPFILTER, поскольку его правила с сохранением состояния гораздо проще использовать совместно с NAT; кроме того, в него встроен ftp прокси, что упрощает правила для фильтрации исходящих FTP соединений.

Поскольку все межсетевые экраны основаны на анализе значений выбранных полей заголовка пакета, для создания правил межсетевого экрана необходимо понимание принципов TCP/IP, того, что означают различные поля заголовка пакета, и как эти поля используются в обычной сессии. Хорошим примером является: http://www.ipprimer.com/overview.cfm.

## 27.4. Packet Filter (PF, межсетевой экран OpenBSD) и ALTQ

Пересмотрел и обновил John Ferrell.

В июле 2003 программный межсетевой экран OpenBSD, известный как PF, был портирован в FreeBSD и стал доступен из коллекции портов FreeBSD; первым релизом, где PF был интегрирован в основную систему, стала FreeBSD 5.3 в ноябре 2004. PF это полноценный межсетевой экран с широким набором возможностей, в котором есть опциональная поддержка ALTQ (Alternate Queuing). ALTQ предоставляет управление пропускной способностью Quality of Service (QoS).

Проект OpenBSD осуществляет замечательную работу по поддержке PF FAQ. Этот раздел руководства фокусируется на взаимосвязи PF и FreeBSD, предоставляя лишь общую информацию по его использованию. За более подробной информацией по использованию PF обратитесь к PF FAQ.

Дополнительные сведения о PF для FreeBSD можно получить с веб сайта: http://pf4freebsd.love2party.net/.

### 27.4.1. Использование модуля ядра PF

Чтобы загрузить PF как модуль ядра, добавьте следующую строку в `/etc/rc.conf`:

    pf_enable="YES"

Далее, выполните стартовый скрипт:

    # /etc/rc.d/pf start

Учтите, модуль PF не загрузится, если он не сможет найти конфигурационный файл с набором правил. По умолчанию размещение файла с правилами следующее: `/etc/pf.conf`. Если путь к файлу отличается от вышеприведённого, то внесите в `/etc/rc.conf` строку вида:

    pf_rules="/path/to/pf.conf"

> Замечание: Начиная с версии FreeBSD 7.0 файл с примерами конфигураций (`pf.conf`) был перемещен из каталога `/etc/` в каталог `/usr/share/examples/pf/`. Для версий FreeBSD, предшествующих 7.0, размещение по умолчанию -- `/etc/pf.conf`

Модуль PF можно также загрузить вручную:

    # kldload pf.ko

Поддержка ведения логов для PF обеспечивается модулем `pflog.ko`, для загрузки которого добавьте следующую строку в `/etc/rc.conf`:

    pflog_enable="YES"

и запустите на выполнение скрипт:

    # /etc/rc.d/pflog start

Если вам необходимы другие функциональные возможности PF, то придется добавить поддержку PF в ядро.

### 27.4.2. Параметры ядра

Включение PF путем компиляции с ядром FreeBSD не является обязательным требованием, однако вам может понадобиться одна из функциональных возможностей, которая не включена в загружаемый модуль. Например, pfsync(4) являет собой псевдоустройство, которое вносит определенные изменения в таблицу состояний, используемую PF. В дальнейшем, это псевдоустройство может быть скомпоновано с carp(4) чтобы создать отказоустойчивую систему межсетевых экранов на основе PF.

Пример параметров конфигурации ядра для включения PF находится в `/usr/src/sys/conf/NOTES` и показан здесь:

    device pf
    device pflog
    device pfsync

`device pf` включает поддержку межсетевого экрана ''Packet Filter'' (pf(4)).

`device pflog` включает необязательное сетевое псевдоустройство pflog(4), которое может использоваться для протоколирования трафика через bpf(4). Даемон pflogd(8) может использоваться для сохранения протоколируемой информации на диск.

`device pfsync` включает необязательное сетевое псевдоустройство pfsync(4), используемое для отслеживания ''изменений состояния''.

### 27.4.3. Доступные параметры rc.conf

Для активации PF и pflog(4) во время загрузки в rc.conf(5) должны быть включены следующие переменные:

    pf_enable="YES"                 # Включить PF (загрузить модуль если необходимо)
    pf_rules="/etc/pf.conf"         # определение правил для pf
    pf_flags=""                     # дополнительные флаги для запуска pfctl
    pflog_enable="YES"              # запустить pflogd(8)
    pflog_logfile="/var/log/pflog"  # где pflogd должен сохранять протокол
    pflog_flags=""                  # дополнительные флаги для запуска pflogd

Если за межсетевым экраном находится локальная сеть и необходимо передавать пакеты для компьютеров этой сети, или использовать NAT, включите также следующий параметр:

    gateway_enable="YES"            # Включить сетевой шлюз

### 27.4.4. Создание правил фильтрации

Пакет PF читает конфигурацию из файла pf.conf(5) (полный путь: `/etc/pf.conf`); пакеты отвергаются, пропускаются или модифицируются в соответствии с правилами и определениями из этого файла. В стандартную поставку FreeBSD входят несколько файлов с примерами конфигураций, которые находятся в каталоге `/usr/share/examples/pf/`. За исчерпывающим описанием правил PF обратитесь к PF FAQ.

> Внимание: Изучая PF FAQ, имейте в виду, что различные версии FreeBSD могут содержать разные версии pf. В настоящий момент FreeBSD 7.`X` и более поздние используют ту же версию PF, которая включена в OpenBSD 4.1.

Список рассылки, посвящённый FreeBSD packet filter является хорошим местом, чтобы задавать вопросы по конфигурации и использованию пакета PF. Не забудьте проверить архивы списка рассылки перед тем, как задавать вопрос.

### 27.4.5. Работа с PF

Для управления PF используйте утилиту pfctl(8). Ниже приведено несколько полезных команд (все возможные команды и опции приведены на странице справочника pfctl(8)):

Команда | Действие
--- | ---
`pfctl `-e`` | Включить PF
`pfctl `-d`` | Выключить PF
`pfctl `-F` all `-f` /etc/pf.conf` | Сбросить все правила (NAT, правила фильтрации, состояния соединений, таблицы и т.д.) и загрузить новые с файла `/etc/pf.conf`
`pfctl `-s` [ rules | nat | state ]` | Отобразить правила фильтрации, правила NAT или таблицу состояний соединений
`pfctl `-vnf` /etc/pf.conf` | Проверить `/etc/pf.conf` на наличие ошибок, но сами наборы правил не загружать

### 27.4.6. Включение ALTQ

ALTQ может быть включен только путем компилирования ядра FreeBSD с соответствующими параметрами. ALTQ поддерживается не всеми существующими драйверами сетевых карт. Для просмотра списка поддерживаемых устройств в вашем релизе FreeBSD обратитесь к странице справочника altq(4).

Следующие параметры включат ALTQ и добавят дополнительную функциональность.

    options         ALTQ
    options         ALTQ_CBQ        # Class Bases Queuing (CBQ)
    options         ALTQ_RED        # Random Early Detection (RED)
    options         ALTQ_RIO        # RED In/Out
    options         ALTQ_HFSC       # Hierarchical Packet Scheduler (HFSC)
    options         ALTQ_PRIQ       # Priority Queuing (PRIQ)
    options         ALTQ_NOPCC      # Required for SMP build

`options ALTQ` включает подсистему ALTQ.

`options ALTQ_CBQ` включает Class Based Queuing (CBQ). CBQ позволяет распределять пропускную способность соединений по классам или очередям для выставления приоритетов трафика на основе правил фильтрации.

`options ALTQ_RED` включает Random Early Detection (RED). RED используется для предотвращения перегрузки сети. RED вычисляет длину очереди и сравнивает ее с минимальным и максимальным значением длины очереди. Если очередь превышает максимум, все новые пакеты будут отброшены. В соответствии со своим названием, RED отбрасывает пакеты из различные соединений в произвольном порядке.

`options ALTQ_RIO` включает Random Early Detection In and Out.

`options ALTQ_HFSC` включает Hierarchical Fair Service Curve Packet Scheduler. Дополнительная информация о HFSC находится по адресу: http://www-2.cs.cmu.edu/~hzhang/HFSC/main.html.

`options ALTQ_PRIQ` включает Priority Queuing (PRIQ). PRIQ всегда первым пропускает трафик из очереди c более высоким приоритетом.

`options ALTQ_NOPCC` включает поддержку SMP для ALTQ. Эта опция необходима для SMP систем.

## 27.5. * IPFILTER (IPF)

> Внимание: Перевод раздела не завершен.

> Замечание: Этот раздел находится в процессе написания; содержание может не вполне соответствовать действительности.

Автором IPFILTER является Darren Reed. IPFILTER не зависит от операционной системы: это приложение с открытыми исходными текстами, которое было портировано на операционные системы FreeBSD, NetBSD, OpenBSD, SunOS, HP/UX, и Solaris. IPFILTER активно разрабатывается и поддерживается, регулярно выпускаются обновленные версии.

IPFILTER основан на межсетевом экране и механизме NAT уровня ядра, которые управляются и контролируются утилитами уровня пользовательских процессов. Правила межсетевого экрана могут устанавливаться или удаляться утилитой ipf(8). Правила NAT могут устанавливаться или удаляться утилитой ipnat(1). Утилита ipfstat(8) выводит статистику IPFILTER для ядра. Программа ipmon(8) может заносить действия IPFILTER в файлы системных протоколов.

IPF был первоначально написан с использованием правила ''последнее совпадение применяется'' и только с правилами без сохранения состояния. Со временем IPF был расширен и включает параметры ''quick'' и ''keep state'' (сохранение состояния), которые кардинальным образом изменяют логику обработки пакетов. Официальная документация IPF включает традиционные параметры правил с традиционной последовательностью обработки пакетов. Измененные функции включены в виде дополнительных параметров, они необходимы для создания эффективного межсетевого экрана.

Инструкции этого раздела подразумевают использование параметра ''quick'' и параметра сохранения состояния ''keep state''. Это основа для создания включающего межсетевого экрана.

Детальное описание традиционных методов обработки правил: http://www.obfuscation.org/ipf/ipf-howto.html#TOC_1 и http://coombs.anu.edu.au/~avalon/ip-filter.html.

IPF FAQ находится по адресу http://www.phildev.net/ipf/index.html.

Архив списка рассылки по IPFilter с возможностью поиска доступен по адресу http://marc.theaimsgroup.com/?l=ipfilter.

### 27.5.1. Включение IPF

IPF включен в базовую систему FreeBSD в качестве отдельного загружаемого модуля. Система динамически загрузит модуль IPF, если в `rc.conf` указана переменная `ipfilter_enable="YES"`. Модуль создается с включенным протоколированием и правилом по умолчанию `pass all` (пропускать все). Для изменения правила по умолчанию не обязательно собирать ядро с новыми параметрами. Просто добавьте в конец набора правило, блокирующее все пакеты.

### 27.5.2. Параметры ядра

Включение IPF в ядро FreeBSD не является обязательным требованием. Эта процедура представлена здесь в качестве дополнительной информации. При включении IPF в ядро загружаемый модуль не используется.

Пример параметров настройки ядра для IPF находится в `/usr/src/sys/conf/NOTES` и воспроизведен здесь:

    options IPFILTER
    options IPFILTER_LOG
    options IPFILTER_DEFAULT_BLOCK

`options IPFILTER` включает поддержку межсетевого экрана ''IPFILTER''.

`options IPFILTER_LOG` включает протоколирование трафика через IPF путем записи его в псевдо-устройство протоколирования пакетов `ipl` для каждого правила, содержащего ключевое слово `log`.

`options IPFILTER_DEFAULT_BLOCK` изменяет поведение по умолчанию так, что блокируется каждый пакет, не соответствующий правилу `pass`.

Эти настройки будут работать только после сборки и установки нового ядра.

### 27.5.3. Доступные параметры rc.conf

Для активации IPF во время загрузки в `/etc/rc.conf` потребуется добавить следующие переменные:

    ipfilter_enable="YES"             # Запуск межсетевого экрана ipf
    ipfilter_rules="/etc/ipf.rules"   # Загрузка файла с правилами
    ipmon_enable="YES"                # Включение протоколирования IP monitor
    ipmon_flags="-Ds"                 # D = запуск в виде даемона
                                      # s = протоколирование в syslog
                                      # v = протоколирование tcp window, ack, seq
                                      # n = отображение имен IP и портов

Если за межсетевым экраном находится локальная сеть, использующая приватные IP адреса, для включения NAT потребуется добавить следующие переменные:

    gateway_enable="YES"              # Включение шлюза для локальной сети
    ipnat_enable="YES"                # Запуск функции ipnat
    ipnat_rules="/etc/ipnat.rules"    # Определение файла правил для ipnat

### 27.5.4. IPF

Команда ipf(8) используется для загрузки файла с правилами. Обычно создается файл, содержащий подготовленный набор правил, который полностью замещает набор, используемый на данный момент:

    # ipf -Fa -f /etc/ipf.rules

`-Fa` означает сброс всех внутренних таблиц правил.

`-f` указывает файл с правилами, который необходимо загрузить.

Это дает вам возможность отредактировать файл с правилами, запустить вышеприведенную команду IPF, тем самым обновить набор правил работающего межсетевого экрана без перезагрузки системы. Для обновления правил такой подход очень удобен, поскольку команду можно выполнять столько раз, сколько нужно.

На странице справочной системы ipf(8) находится подробная информация по всем флагам этой команды.

Набор правил для команды ipf(8) должен быть в виде стандартного текстового файла. Правила, написанные в виде скрипта с символами подстановки, не принимаются.

Есть способ составления правил IPF, использующих символы подстановки. Обратитесь к Разд. 27.5.9.

### 27.5.5. IPFSTAT

По умолчанию ipfstat(8) получает и отображает суммарную статистику, полученную в результате применения действующих правил к пакетам, проходящим через межсетевой экран с момента его последнего запуска, или с того момента, когда статистика была последний раз обнулена командой `ipf -Z`.

Детальная информация приводится на странице справочника ipfstat(8).

Вывод команды ipfstat(8) по умолчанию выглядит примерно так:

    input packets: blocked 99286 passed 1255609 nomatch 14686 counted 0
     output packets: blocked 4200 passed 1284345 nomatch 14687 counted 0
     input packets logged: blocked 99286 passed 0
     output packets logged: blocked 0 passed 0
     packets logged: input 0 output 0
     log failures: input 3898 output 0
     fragment state(in): kept 0 lost 0
     fragment state(out): kept 0 lost 0
     packet state(in): kept 169364 lost 0
     packet state(out): kept 431395 lost 0
     ICMP replies: 0 TCP RSTs sent: 0
     Result cache hits(in): 1215208 (out): 1098963
     IN Pullups succeeded: 2 failed: 0
     OUT Pullups succeeded: 0 failed: 0
     Fastroute successes: 0 failures: 0
     TCP cksum fails(in): 0 (out): 0
     Packet log flags set: (0)

При задании флага `-i` или `-o` соответственно для входящих или исходящих пакетов, команда извлечет и отобразит соответствующий список правил, установленных и используемых на данный момент.

`ipfstat -in` отображает правила, применяемые к входящим пакетам, вместе с номерами этих правил.

`ipfstat -on` отображает правила, применяемые к исходящим пакетам, вместе с номерами этих правил.

Вывод команды будет выглядеть примерно так:

    @1 pass out on xl0 from any to any
    @2 block out on dc0 from any to any
    @3 pass out quick on dc0 proto tcp/udp from any to any keep state

`ipfstat -ih` отображает правила, применяемые к входящим пакетам, со счетчиком количества совпадений для каждого правила.

`ipfstat -oh` отображает правила, применяемые к исходящим пакетам, со счетчиком количества совпадений для каждого правила.

Вывод команды будет выглядеть примерно так:

    2451423 pass out on xl0 from any to any
    354727 block out on dc0 from any to any
    430918 pass out quick on dc0 proto tcp/udp from any to any keep state

Одна из наиболее важных функций команды `ipfstat` активируется флагом `-t`, правила отображаются подобно тому, как top(1) показывает таблицу запущенных процессов FreeBSD. Когда межсетевой экран подвергается атаке, эта функция позволяет обнаружить соответствующие пакеты. Дополнительные флаги дают возможность выбирать IP адрес назначения или источника, порт или протокол, которые будут отслеживаться в реальном времени. Подробная информация приведена на странице ipfstat(8).

### 27.5.6. IPMON

Для того, чтобы стало возможно использование команды `ipmon`, необходимо включить параметр ядра `IPFILTER_LOG`. Эта команда может использоваться в двух различных режимах. В основном режиме, который используется по умолчанию, она используется без флага `-D`.

В режиме даемона создается непрерывный протокол, и возможен просмотр предыдущих событий. В этом режиме IPFILTER работает в FreeBSD. Поскольку в FreeBSD встроена функция ротации файлов протокола, лучше использовать syslogd(8), чем используемый по умолчанию вывод в обычный файл. В `rc.conf` по умолчанию `ipmon_flags` имеет значение `-Ds`:

    ipmon_flags="-Ds" # D = start as daemon
                      # s = log to syslog
                      # v = log tcp window, ack, seq
                      # n = map IP & port to names

Описывать преимущества протоколирования излишне. Например, оно дает возможность отложенного просмотра информации об отброшенных пакетах, откуда они пришли и куда направлялись. Эта информация существенно помогает при отслеживании атак.

Даже с включенным протоколированием, IPF не ведет протокол для каждого правила. Администратор межсетевого экран должен решить, по каким правилам набора нужно вести протокол и добавить ключевое слово log к этим правилам. Обычно протоколируются только правила, отбрасывающие пакеты.

Включение в набор последнего правила, запрещающего прохождение пакетов, в сочетании с ключевым словом `log` является довольно распространённой практикой. Так вы можете увидеть все пакеты, не попадающие ни под одно правило набора.

### 27.5.7. Протоколирование IPMON

Для разделения собираемых данных syslogd использует свой собственный специальный метод. Он использует группировку по категории (''facility'') и уровню (''level''). IPMON в режиме `-Ds` использует `local0` в качестве имени ''категории''. Для дальнейшего разделения протоколируемых данных, если такое необходимо, могут быть использованы следующие уровни:

    LOG_INFO - packets logged using the "log" keyword as the action rather than pass or block.
    LOG_NOTICE - packets logged which are also passed
    LOG_WARNING - packets logged which are also blocked
    LOG_ERR - packets which have been logged and which can be considered short

Для указания IPFILTER протоколировать все данные в `/var/log/ipfilter.log`, создайте этот файл заранее, выполнив следующую команду:

    # touch /var/log/ipfilter.log

Функционирование syslogd(8) управляется настройками в файле `/etc/syslog.conf`. Файл `syslog.conf` позволяет достаточно гибко настроить обработку системных сообщений, выдаваемых программами, такими как IPF.

Добавьте в `/etc/syslog.conf` следующую запись:

    local0.* /var/log/ipfilter.log

`local0.*` означает запись всех протоколируемых сообщений в указанный файл.

Для применения внесенных в `/etc/syslog.conf` изменений вы можете перезагрузиться или заставить syslogd(8) перечитать `/etc/syslog.conf`, выполнив команду `/etc/rc.d/syslogd reload`.

Не забудьте отредактировать `/etc/newsyslog.conf` для ротации только что созданного лог файла.

### 27.5.8. Формат протоколируемых сообщений

Сообщения, генерируемые `ipmon`, состоят из полей данных, разделенных пробелами. Поля, общие для всех сообщений:

1. Дата получения пакета.

2. Время получения пакета. Формат времени HH:MM:SS.F для часов, минут, секунд и долей секунд (последнее поле может состоять из нескольких цифр).

3. Имя интерфейса, через который прошел пакет, например `dc0`.

4. Группа и номер правила, например `@0:17`.

Эти сообщения могут быть просмотрены командой `ipfstat -in`.

1. Действие: p для пропущенных, b для заблокированных, S для пакетов с неполным заголовком (short packet), n для пакетов, не соответствующих какому-либо правилу, L для соответствующих правилу протоколирования. Порядок следования по флагам: S, p, b, n, L. Знаки P или B в верхнем регистре означают, что пакет был протоколирован в соответствии с общими настройками, а не каким-то конкретным правилом.

2. Адреса. Всего три поля: адрес и порт источника (разделенные запятой), ->, адрес и порт назначения. 209.53.17.22,80 -> 198.73.220.17,1722.

3. `PR`, с последующим именем или номером протокола, например `PR tcp`.

4. `len`, с последующей длиной заголовка и общей длиной пакета, например `len 20 40`.

Для TCP пакетов добавляется дополнительное поле, начинающееся с дефиса, за которым следуют буквы, соответствующие установленным флагам. На странице справочника ipf(5) находится список букв и флагов.

Для пакетов ICMP, в конце находятся два поля, одно всегда ''ICMP'', а второе содержит тип и подтип ICMP сообщения (message и sub-message), разделенные символом косой черты, например ICMP 3/3 для сообщения ''port unreachable''.

### 27.5.9. Создание набора правил с использованием символьной подстановки

Некоторые опытные пользователи IPF создают файл правил, поддерживающий использование символьной подстановки. Основное преимущество использования такого подхода заключается в возможности изменения значения, присваиваемого символьному имени, в результате чего во всех правилах, содержащих эту символьную подстановку, будет использоваться новое значение. В начале скрипта вы можете поместить часто используемые переменные, а затем использовать их сразу в нескольких правилах. Ниже дан пример такого использования.

Синтаксис скрипта совместим с sh(1), csh(1), и tcsh(1).

Символьная подстановка предваряется знаком доллара: `$`.

Для присвоения значения символьным переменным знак $ не используется.

Присваиваемое символической переменной значение должно быть заключено в двойные кавычки (`"`).

Начните файл правил примерно так:

    ############# Start of IPF rules script ########################

    oif="dc0"            # name of the outbound interface
    odns="192.0.2.11"    # ISP's DNS server IP address
    myip="192.0.2.7"     # my static IP address from ISP
    ks="keep state"
    fks="flags S keep state"

    # You can choose between building /etc/ipf.rules file
    # from this script or running this script "as is".
    #
    # Uncomment only one line and comment out another.
    #
    # 1) This can be used for building /etc/ipf.rules:
    #cat > /etc/ipf.rules << EOF
    #
    # 2) This can be used to run script "as is":
    /sbin/ipf -Fa -f - << EOF

    # Allow out access to my ISP's Domain name server.
    pass out quick on $oif proto tcp from any to $odns port = 53 $fks
    pass out quick on $oif proto udp from any to $odns port = 53 $ks

    # Allow out non-secure standard www function
    pass out quick on $oif proto tcp from $myip to any port = 80 $fks

    # Allow out secure www function https over TLS SSL
    pass out quick on $oif proto tcp from $myip to any port = 443 $fks
    EOF
    ################## End of IPF rules script ########################

Это все, что требовалось сделать. В данном примере сами правила не важны; важно то, как используется символьная подстановка. Если вышеприведенный пример помещен в файл `/etc/ipf.rules.script`, то набор правил можно перезагрузить, введя следующую команду:

    # sh /etc/ipf.rules.script

С использованием в правилах символьной подстановки связана одна проблема: IPF не понимает символьную подстановку и не может обработать такой скрипт непосредственно.

Скрипт может использоваться одним из следующих двух способов:

- Уберите комментарий перед строкой, начинающейся с `cat`, и закомментируйте строку, начинающуюся с `/sbin/ipf`. Поместите строку `ipfilter_enable="YES"` в файл `/etc/rc.conf` как обычно, и запускайте скрипт после каждого его обновления для создания или обновления файла `/etc/ipf.rules`.

- Отключите IPFILTER в стартовых скриптах системы, поместив строку `ipfilter_enable="NO"` (это значение по умолчанию) в файл `/etc/rc.conf`.

  Поместите скрипт, подобный нижеприведенному, в каталог `/usr/local/etc/rc.d/`. У него должно быть однозначно говорящее о его назначении имя, например `ipf.loadrules.sh`. Расширение `.sh` обязательно.

      #!/bin/sh
      sh /etc/ipf.rules.script

  Права, установленные на этот файл, должны разрешать чтение, запись и выполнение владельцу `root`.

      # chmod 700 /usr/local/etc/rc.d/ipf.loadrules.sh

Теперь, правила IPF будут загружаться при загрузке системы.

### 27.5.10. Наборы правил IPF

Набор правил ipf это группа правил, составленных для пропускания или блокирования пакетов на основе их содержимого. Двусторонний обмен пакетами между хостами составляет сессию. Межсетевой экран обрабатывает как входящие из Интернет пакеты, так и исходящие пакеты, которые сгенерированы самой системой в ответ на входящий трафик. Для каждой службы TCP/IP (например, telnet, www, mail, и т.п.) назначен протокол и номер привилегированного (прослушиваемого) порта. Пакеты, предназначенные для определенного сервиса, порождаются с некоторым исходящим адресом и портом из непривилегированного диапазона и направляются на определенный адрес и определенный порт назначения. Все упомянутые параметры (номера портов и адреса) могут использоваться как критерии выбора в правилах, пропускающих или блокирующих доступ к службам TCP/IP.

IPF был первоначально написан с использованием логики ''последнее совпадающее правило побеждает'' и только с правилами без сохранения состояния. Со временем в IPF был включен параметр ''quick'' и параметр сохранения состояния ''keep state'', что существенно улучшило логику обработки правил.

Инструкции, помещенные в эту главу, созданы с использованием параметров ''quick'' и ''keep state''. Это основа для создания набора правил включающего межсетевого экрана.

> Внимание: При работе с правилами межсетевого экрана, будьте очень осторожны. Некоторые конфигурации могут заблокировать вам доступ к серверу. В целях предосторожности, первоначальную настройку межсетевого экрана вы можете выполнить с локальной консоли, а не через удаленное подключение, такое как ssh.

## 27.6. * IPFW

Этот раздел не переведен.

# Глава 28. Сложные вопросы работы в сети

Перевод на русский язык: Андрей Захватов.

## 28.1. Краткий обзор

Эта глава охватывает множество различных сетевых тематик повышенной сложности.

После чтения этой главы вы будете знать:

- Основные понятия о маршрутизации и маршрутах.

- Как настроить IEEE 802.11 и Bluetooth®.

- Как заставить FreeBSD работать в качестве сетевого моста.

- Как настроить загрузку по сети для бездисковой машины.

- Как настроить трансляцию сетевых адресов.

- Как соединить два компьютера посредством PLIP.

- Как настроить IPv6 на машине FreeBSD.

- Как настроить ATM.

Перед чтением этой главы вы должны:

- Понимать основы работы скриптов `/etc/rc`.

- Свободно владеть основными сетевыми терминами.

- Знать как настраивать и устанавливать новое ядро FreeBSD (Гл. 8).

- Знать как устанавливать дополнительное программное обеспечение сторонних разработчиков (Гл. 4).

## 28.2. Сетевые шлюзы и маршруты

Текст предоставил Coranth Gryphon.

Чтобы некоторая машина могла найти в сети другую, должен иметься механизм описания того, как добраться от одной машине к другой. Такой механизм называется маршрутизацией. ''Маршрут'' задаётся парой адресов: ''адресом назначения'' (destination) и ''сетевым шлюзом'' (gateway). Эта пара указывает на то, что если Вы пытаетесь соединиться с адресом назначения, то вам нужно устанавливать связь через ''сетевой шлюз''. Существует три типа адресов назначения: отдельные хосты, подсети и ''маршрут по умолчанию'' (default). ''Маршрут по умолчанию'' (default route) используется, если не подходит ни один из других маршрутов. Мы поговорим немного подробнее о маршрутах по умолчанию позже. Также имеется и три типа сетевых шлюзов: отдельные хосты, интерфейсы (также называемые ''подключениями'' (links)) и аппаратные адреса Ethernet (MAC-адреса).

### 28.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`. Ниже приводится краткая таблица некоторых из этих флагов и их значений:

U | Up: Маршрут актуален.
H | Host: Адресом назначения является отдельный хост.
G | Gateway: Посылать все для этого адреса назначения на указанную удаленную систему, которая будет сама определять дальнейший путь прохождения информации.
S | Static: Маршрут был настроен вручную, а не автоматически сгенерирован системой.
C | Clone: Новый маршрут сгенерирован на основе указанного для машин, к которым мы подключены. Такой тип маршрута обычно используется для локальных сетей.
W | WasCloned: Указывает на то, что маршрут был автоматически сконфигурирован на основе маршрута в локальной сети (Clone).
L | Link: Маршрут включает ссылку на аппаратный адрес Ethernet.

### 28.2.2. Маршруты по умолчанию

Когда локальной системе нужно установить соединение с удаленным хостом, она обращается к таблице маршрутов для того, чтобы определить, существует ли такой маршрут. Если удаленный хост попадает в подсеть, для которой известен способ ее достижения (маршруты типа Cloned), то система определяет возможность подключиться к ней по этому интерфейсу.

Если все известные маршруты не подходят, у системы имеется последняя возможность: маршрут ''default''. Это маршрут с особым типом сетевого шлюза (обычно единственным, присутствующим в системе), и в поле флагов он всегда помечен как `c`. Для хостов в локальной сети этот сетевой шлюз указывает на машину, имеющую прямое подключение к внешнему миру (неважно, используется ли связь по протоколу PPP, канал DSL, кабельный модем, T1 или какой-то другой сетевой интерфейс).

Если вы настраиваете маршрут по умолчанию на машине, которая сама является сетевым шлюзом во внешний мир, то маршрутом по умолчанию будет являться сетевой шлюз у Вашего провайдера Интернет (ISP).

Давайте взглянем на примеры маршрутов по умолчанию. Вот типичная конфигурация:

Хосты `Local1` и `Local2` находятся в нашей сети. `Local1` подключён к ISP через коммутируемое соединение по протоколу PPP. Этот компьютер с сервером PPP подключён посредством локальной сети к другому шлюзовому компьютеру через внешний интерфейс самого ISP к Интернет.

Маршруты по умолчанию для каждой из ваших машин будут следующими:

Хост | Маршрут по умолчанию | Интерфейс
--- | --- | ---
Local2 | Local1 | Ethernet
Local1 | T1-GW | PPP

Часто задаётся вопрос ''Почему (или каким образом) в качестве шлюза по умолчанию для машины `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).

### 28.2.3. Хосты с двойным подключением

Есть еще один тип подключения, который мы должны рассмотреть, и это случай, когда хост находится в двух различных сетях. Технически, любая машина, работающая как сетевой шлюз (в примере выше использовалось PPP-соединение), считается хостом с двойным подключением. Однако этот термин реально используется для описания машины, находящейся в двух локальных сетях.

В одном случае у машины имеется два адаптера Ethernet, каждый имеющий адрес в разделенных подсетях. Как альтернативу можно рассмотреть вариант с одним Ethernet-адаптером и использованием алиасов в команде ifconfig(8). В первом случае используются два физически разделённые сети Ethernet, в последнем имеется один физический сегмент сети, но две логически разделённые подсети.

В любом случае таблицы маршрутизации настраиваются так, что для каждой подсети эта машина определена как шлюз (входной маршрут) в другую подсеть. Такая конфигурация, при которой машина выступает в роли маршрутизатора между двумя подсетями, часто используется, если нужно реализовать систему безопасности на основе фильтрации пакетов или функций брандмауэра в одном или обоих направлениях.

Если вы хотите, чтобы эта машина действительно перемещала пакеты между двумя интерфейсами, то вам нужно указать FreeBSD на включение этой функции. Обратитесь к следующей главе, чтобы узнать, как это сделать.

### 28.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.

### 28.2.5. Настройка статических маршрутов

Предоставил Al Hoang.

#### 28.2.5.1. Ручная настройка

Предположим, что у нас есть следующая сеть:

В этом сценарии, `RouterA` это наш компьютер с FreeBSD, который выступает в качестве маршрутизатора в сеть Интернет. Его маршрут по умолчанию настроен на `10.0.0.1`, что позволяет ему соединяться с внешним миром. Мы будем предполагать, что `RouterB` уже правильно настроен и знает все необходимые маршруты (на этом рисунке все просто; добавьте на `RouterB` маршрут по умолчанию, используя `192.168.1.1` в качестве шлюза).

Если мы посмотрим на таблицу маршрутизации `RouterA`, то увидим примерно следующее:

    % netstat -nr
    Routing tables

    Internet:
    Destination        Gateway            Flags    Refs      Use  Netif  Expire
    default            10.0.0.1           UGS         0    49378    xl0
    127.0.0.1          127.0.0.1          UH          0        6    lo0
    10.0.0/24          link#1             UC          0        0    xl0
    192.168.1/24       link#2             UC          0        0    xl1

С текущей таблицей маршрутизации `RouterA` не сможет достичь внутренней сети 2 (Internal Net 2). Один из способов обхода этой проблемы -- добавление маршрута вручную. Следующая команда добавляет внутреннюю сеть 2 к таблице маршрутизации `RouterA` с `192.168.1.2` в качестве следующего узла:

    # route add -net 192.168.2.0/24 192.168.1.2

Теперь `RouterA` сможет достичь любого хоста в сети `192.168.2.0/24`.

#### 28.2.5.2. Постоянная конфигурация

Предыдущий пример прекрасно подходит для настройки статического маршрута в работающей системе. Однако, проблема заключается в том, что маршрутная информация не сохранится после перезагрузки FreeBSD. Способ сохранения добавленного маршрута заключается в добавлении его в файл `/etc/rc.conf`:

    # Добавление статического маршрута в Internal Net 2
    static_routes="internalnet2"
    route_internalnet2="-net 192.168.2.0/24 192.168.1.2"

В переменной `static_routes` находятся строки, разделенные пробелами. Каждая строка означает имя маршрута. В примере выше в `static_routes` есть только одна строка, это `internalnet2`. Затем мы добавили переменную `route_`internalnet2``, куда помещены все параметры, которые необходимо передать команде route(8). В примере выше была использована команда:

    # route add -net 192.168.2.0/24 192.168.1.2

поэтому нам потребуется `"-net 192.168.2.0/24 192.168.1.2"`.

Как было сказано выше, мы можем добавить в `static_routes` более чем одну строку. Это позволит создать несколько статических маршрутов. В следующем примере показано добавление маршрутов для сетей `192.168.0.0/24` и `192.168.1.0/24` (этот маршрутизатор не показан на рисунке выше:

    static_routes="net1 net2"
    route_net1="-net 192.168.0.0/24 192.168.0.1"
    route_net2="-net 192.168.1.0/24 192.168.1.1"

### 28.2.6. Распространение маршрутов

Мы уже говорили о том, как мы задаем наши маршруты во внешний мир, но не упоминали о том, как внешний мир находит нас.

Мы уже знаем, что таблицы маршрутизации могут быть настроены так, что весь трафик для некоторого диапазона адресов (в нашем примере это подсеть класса C) может быть направлен заданному хосту в той сети, которая будет перенаправлять входящие пакеты дальше.

При получении адресного пространства, выделенного Вашей сети, Ваш провайдер настроит свои таблицы маршрутизации так, что весь трафик для Вашей подсети будет пересылаться по PPP-соединению к Вашей сети. Но как серверы по всей стране узнают, что Ваш трафик нужно посылать Вашему ISP?

Существует система (подобная распределению информации DNS), которая отслеживает все назначенные пространства адресов и определяет точку подключения к магистрали Интернет. ''Магистралью'' называют главные каналы, по которым идет трафик Интернет внутри страны и по всему миру. Каждая магистральная машина имеет копию основного набора таблиц, согласно которой трафик для конкретной сети направляется по конкретному магистральному каналу, и затем, передаваясь по цепочке провайдеров, он достигает вашей сети.

Задачей вашего провайдера является объявить на магистрали о том, что он отвечает за подключение (и поэтому на него указывает маршрут) вашей сети. Этот процесс называется распространением маршрута.

### 28.2.7. Устранение неполадок

Иногда с распространением маршрута возникают проблемы, и некоторые сайты не могут к вам подключиться. Наверное, самой полезной командой для определения точки неверной работы маршрутизации является traceroute(8). Она также полезна и когда вы сами не можете подключиться к удаленной машине (то есть команда ping(8) не срабатывает).

Команда traceroute(8) запускается с именем удаленного хоста, с которым вы хотите установить соединение, в качестве параметра. Она показывает промежуточные сетевые шлюзы по пути следования, в конце концов достигая адрес назначения или прерывая свою работу из-за отсутствия соединения.

За дополнительной информацией обратитесь к странице Справочника по traceroute(8).

### 28.2.8. Маршрутизация многоадресного трафика

FreeBSD изначально поддерживает как приложения, работающие с многоадресным трафиком, так и его маршрутизацию. Такие приложения не требуют особой настройки FreeBSD; обычно они работают сразу. Для маршрутизации многоадресного трафика требуется, чтобы поддержка этого была включена в ядро:

    options MROUTING

Кроме того, даемон многоадресной маршрутизации, mrouted(8), должен быть настроен посредством файла `/etc/mrouted.conf` на использование туннелей и DVMRP. Дополнительную информацию о настройки многоадресного трафика можно найти на страницах справочной системы, посвящённых даемону mrouted(8).

## 28.3. Беспроводные сети

Текст предоставил Перевёл на русский язык Eric Anderson, Андрей Захватов.

### 28.3.1. Введение

Было бы весьма полезным иметь возможность использовать компьютер без хлопот, связанных с постоянно подключенным сетевым кабелем. FreeBSD может использоваться как клиент беспроводной сети, и даже в качестве ''точки доступа'' к ней.

### 28.3.2. Режимы работы беспроводной связи

Существуют два варианта конфигурации устройств беспроводного доступа 802.11: BSS и IBSS.

#### 28.3.2.1. Режим BSS

Режим BSS является наиболее часто используемым. Режим BSS также называют режимом инфраструктуры. В этом режиме несколько точек доступа беспроводной сети подключаются к проводной сети передачи данных. Каждое беспроводная сеть имеет собственное имя. Это имя является идентификатором SSID сети.

Клиенты беспроводной сети подключаются к этим точкам доступа беспроводной сети. Стандарт IEEE 802.11 определяет протокол, используемый для связи в беспроводных сетях. Клиент сети беспроводного доступа может подключаться к некоторой сети, если задан её SSID. Клиент может также подключаться к любой сети, если SSID не задан.

#### 28.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.

### 28.3.3. Режим инфраструктуры

#### 28.3.3.1. Точки доступа

Точки доступа представляют собой беспроводные сетевые устройства, позволяющие одному или большему количеству клиентов беспроводной сети использовать эти устройства в качестве центрального сетевого концентратора. При использовании точки доступа все клиенты работают через неё. Зачастую используются несколько точек доступа для полного покрытия беспроводной сетью некоторой зоны, такой, как дом, офис или парк.

Точки доступа обычно имеют несколько подключений к сети: адаптер беспроводной связи и один или большее количество сетевых ethernet-адаптеров для подключения к остальной части сети.

Точки доступа могут быть либо приобретены уже настроенными, либо вы можете создать собственную при помощи FreeBSD и поддерживаемого адаптера беспроводной связи. Несколько производителей выпускают точки беспроводного доступа и адаптеры беспроводной связи с различными возможностями.

#### 28.3.3.2. Построение точки доступа с FreeBSD

##### 28.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, которые можно получить у производителя ваших адаптеров.

##### 28.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.enable=1
    # sysctl net.link.ether.bridge.config="wi0 xl0"
    # sysctl net.inet.ip.forwarding=1

В версиях FreeBSD, предшествующих 5.2, вместо указанных нужно использовать следующие параметры:

    # sysctl net.link.ether.bridge=1
    # sysctl net.link.ether.bridge_cfg="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) для получения дополнительной информации.

Также полагаем, что вы прочтёте следующий раздел о шифровании.

##### 28.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 или другие единицы измерения различаются в разных версиях микрокода.

#### 28.3.3.3. Клиенты

Клиент в беспроводной сети представляет собой систему, которая обращается к точке доступа или непосредственно к другому клиенту.

Как правило, клиенты беспроводной сети имеют только один сетевой адаптер, а именно адаптер беспроводной сети.

Существует несколько различных способов конфигурации клиента беспроводной сети. Они основаны на различных режимах работы в беспроводной сети, обычно BSS (режим инфраструктуры, который требует точки доступа) или IBSS (ad-hoc или режим одноранговой сети). В нашем примере мы будем использовать самый популярный их них, режим BSS, для связи с точкой доступа.

##### 28.3.3.3.1. Требования

Существует только одно жёсткое условие для настройки FreeBSD в качестве клиента беспроводной сети. Вам нужен адаптер беспроводной связи, поддерживаемый FreeBSD.

##### 28.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

Если статус не будет соответствовать `associated`, это может значить, что вы оказались вне зоны досягаемости точки доступа, включили шифрование или, возможно, имеются проблемы с конфигурацией.

#### 28.3.3.4. Шифрование

Шифрование в беспроводной сети имеет важное значение, потому что у вас нет больше возможности ограничить сеть хорошо защищённой областью. Данные вашей беспроводной сети вещаются по всей окрестности, так что любой заинтересовавшийся может их считать. Вот здесь используется шифрование. Шифруя данные, посылаемые в эфир, вы делаете их прямой перехват гораздо более сложным для всех любопытных.

Двумя наиболее широко применяемыми способами шифрования данных между вашим клиентом и точкой доступа являются WEP и ipsec(4).

##### 28.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` на более уникальный ключ.

##### 28.3.3.4.2. IPsec

ipsec(4) является гораздо более надёжным и мощным средством шифрования данных в сети. Этот метод определённо является предпочтительным для шифрования данных в беспроводной сети. Более детально ознакомиться с безопасностью и применением ipsec(4) вы можете в разделе об IPsec этого Руководства.

#### 28.3.3.5. Утилиты

Имеется несколько утилит, которые можно использовать для настройки и отладки вашей беспроводной сети, и здесь мы попытаемся описать некоторые из них и что они могут делать.

##### 28.3.3.5.1. Пакет bsd-airtools

Пакет bsd-airtools представляет собой полный набор инструментов, включая инструменты для проверки беспроводной сети на предмет взлома WEP-ключа, обнаружения точки доступа и тому подобное.

Утилиты bsd-airtools можно установить из порта `net-mgmt/bsd-airtools`. Информацию об установке портов можно найти в Главе Гл. 4 этого Руководства.

Программа `dstumbler` является инструментом, предназначенным для обнаружения точки доступа и выдачи отношения уровня сигнала к шуму. Если у вас с трудом получается запустить точку доступа, `dstumbler` может помочь вам начать.

Для тестирования информационной безопасности вашей беспроводной сети, вы можете воспользоваться набором ''dweputils'' (`dwepcrack`, `dwepdump` и `dwepkeygen`), который может помочь понять, является ли WEP подходящим решением для обеспечения ваших потребностей в информационной безопасности.

##### 28.3.3.5.2. Утилиты `wicontrol`, `ancontrol` и `raycontrol`

Это инструменты, которые могут быть использованы для управления поведением адаптера беспроводной связи в сети. В примере выше мы выбирали wicontrol(8), так как нашим адаптером беспроводной сети был интерфейс `wi0`. Если у вас установлено устройство беспроводного доступа от Cisco, этим интерфейсом будет `an0`, и тогда вы будете использовать ancontrol(8).

##### 28.3.3.5.3. Команда `ifconfig`

Команда ifconfig(8) может использоваться для установки многих из тех параметров, что задаёт wicontrol(8), однако работа с некоторыми параметрами в ней отсутствует. Обратитесь к ifconfig(8) для выяснения параметров и опций командной строки.

#### 28.3.3.6. Поддерживаемые адаптеры

##### 28.3.3.6.1. Точки доступа

Единственными адаптерами, которые на данный момент поддерживаются в режиме BSS (как точка доступа), являются те устройства, что сделаны на основе набора микросхем Prism 2, 2.5 или 3). Полный список можно увидеть в wi(4).

##### 28.3.3.6.2. Клиенты 802.11b

Практически все адаптеры беспроводной связи 802.11b на данный момент во FreeBSD поддерживаются. Большинство адаптеров, построенных на основе Prism, Spectrum24, Hermes, Aironet и Raylink, будут работать в качестве адаптера беспроводной сети в режиме IBSS (ad-hoc, одноранговая сеть и BSS).

##### 28.3.3.6.3. Клиенты 802.11a и 802.11g

Драйвер устройства ath(4) поддерживает 802.11a и 802.11g. Если ваша карта основана на чипсете Atheros, вы можете использовать этот драйвер.

К сожалению, все еще много производителей, не предоставляющих схематику своих драйверов сообществу open source, поскольку эта информация считается торговым секретом. Следовательно, у разработчиков FreeBSD и других операционных систем остается два варианта: разработать драйверы долгим и сложным методом обратного инжиниринга, или использовать существующие драйверы для платформ Microsoft Windows. Большинство разработчиков FreeBSD выбрали второй способ.

Благодаря усилиям Билла Пола (wpaul), начиная с FreeBSD 5.3-RELEASE существует ''прозрачная'' поддержка Network Driver Interface Specification (NDIS). FreeBSD NDISulator (известный также как Project Evil) преобразует бинарный драйвер Windows так, что он работает так же как и в Windows. Эта возможность всё ещё относительно нова, но в большинстве тестов она работает адекватно.

Для использования NDISulator потребуются три вещи:

1. Исходные тексты ядра

2. Бинарный драйвер Windows XP (расширение `.SYS`)

3. Файл конфигурации бинарного драйвера Windows XP (расширение `.INF`)

Вам может потребоваться компиляция драйвера оболочки мини порта ndis(4). Под `root`:

    # cd /usr/src/sys/modules/ndis
    # make && make install

Определите местоположение файлов для вашей карты. Обычно их можно найти на входящем в комплект CD или на Web-сайте поставщика. В нашем примере используются файлы `W32DRIVER.SYS` и `W32DRIVER.INF`.

Следующий шаг это компиляция бинарного драйвера в загружаемый модуль ядра. Чтобы сделать это, сначала зайдите в каталог модуля `if_ndis` и с правами `root` скопируйте туда драйверы Windows:

    # cd /usr/src/sys/modules/if_ndis
    # cp /path/to/driver/W32DRIVER.SYS ./
    # cp /path/to/driver/W32DRIVER.INF ./

Теперь используйте утилиту `ndiscvt` для создания заголовка определения драйвера `ndis_driver_data.h` перед сборкой модуля:

    # ndiscvt -i W32DRIVER.INF -s W32DRIVER.SYS -o ndis_driver_data.h

Параметры `-i` и `-s` задают соответственно файл настройки и бинарный файл. Мы используем параметр `-o ndis_driver_data.h`, поскольку `Makefile` при создании модуля будет обращаться именно к этому файлу.

> Замечание: Некоторым драйверам Windows для работы требуются дополнительные файлы. Вы можете включить их параметром `ndiscvt` `-f`. Обратитесь к странице справочной системы ndiscvt(8) за дополнительной информацией.

Наконец, соберите и установите модуль драйвера:

    # make && make install

Для использования драйвера необходимо загрузить соответствующие модули:

    # kldload ndis
    # kldload if_ndis

Первая команда загружает оболочку драйвера мини-порта NDIS, вторая загружает собственно сетевой интерфейс. Проверьте dmesg(8) на предмет ошибок загрузки. Если все прошло хорошо, вывод должен быть примерно таким:

    ndis0: <Wireless-G PCI Adapter> mem 0xf4100000-0xf4101fff irq 3 at device 8.0 on pci1
    ndis0: NDIS API version: 5.0
    ndis0: Ethernet address: 0a:b1:2c:d3:4e:f5
    ndis0: 11b rates: 1Mbps 2Mbps 5.5Mbps 11Mbps
    ndis0: 11g rates: 6Mbps 9Mbps 12Mbps 18Mbps 36Mbps 48Mbps 54Mbps

Начиная с этого момента вы можете использовать устройство `ndis0` как любое другое беспроводное устройство (например, `wi0`); в этой ситуации применима информация, приведенная в начале этой главы.

## 28.4. Bluetooth

Текст предоставил Pav Lucistnik.

### 28.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.

### 28.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

> Замечание: Стек протоколов Bluetooth запускается вручную во FreeBSD 6.0, и во FreeBSD 5.X, перед 5.5. Это делается автоматически через devd(8) во FreeBSD 5.5, 6.1 и в более новых версиях.

> Скопируйте файл `/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

### 28.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 для выполнения не требуют прав администратора системы.

### 28.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

### 28.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.

### 28.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`. Теперь ваш ПК и удалённое устройство спарены. Альтернативным способом является инициация процесса создания пары на удалённом устройстве.

Во FreeBSD 5.5, 6.1 и в более новых, следующая строка может быть добавлена к `/etc/rc.conf`, чтобы hcsecd запускался автоматически во время старта системы:

    hcsecd_enable="YES"

Ниже даётся пример выдачи протокола команды 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

### 28.4.7. Service Discovery Protocol (SDP)

Протокол обнаружения сервисов SDP даёт возможность клиентским приложениям осуществлять поиск услуг, предоставляемых серверными приложениями, а также характеристик этих услуг. В перечень атрибутов сервиса включается тип класса предлагаемого сервиса и информация о механизме или протоколе, требуемом для использования сервиса.

SDP подразумевает коммуникации между SDP-сервером и SDP-клиентом. Сервер поддерживает список сервисов, в котором описываются параметры сервисов, связанных с сервером. Каждая запись об услуге содержит информацию об одном сервисе. Клиент может запросить информацию об определённом сервисе, обслуживаемом SDP-сервером, выдавая SDP-запрос. Если клиент или приложение, связанное с клиентом, решат воспользоваться сервисом, то для его использования необходимо открыть отдельное соединение к устройству, предоставляющему сервис. SDP предоставляет механизм обнаружения услуг и их параметров, но не даёт механизма использования этих сервисов.

Обычно SDP-клиент выполняет поиск услуг на основе некоторых желаемых характеристик услуг. Однако иногда возникает необходимость выяснить полный перечень типов услуг, предоставляемых SDP-сервером, не имея никакой информации об имеющихся сервисах. Такой процесс всех предлагаемых сервисов называется обзором (browsing).

Bluetooth SDP сервер sdpd(8) и клиент с интерфейсом командной строки sdpcontrol(8) включены в стандартную поставку FreeBSD. В следующем примере показано, как выполнять запрос на SDP-обзор.

    % sdpcontrol -a 00:01:03:fc:6e:ec browse
    Record Handle: 00000000
    Service Class ID List:
            Service Discovery Server (0x1000)
    Protocol Descriptor List:
            L2CAP (0x0100)
                    Protocol specific parameter #1: u/int/uuid16 1
                    Protocol specific parameter #2: u/int/uuid16 1

    Record Handle: 0x00000001
    Service Class ID List:
            Browse Group Descriptor (0x1001)

    Record Handle: 0x00000002
    Service Class ID List:
            LAN Access Using PPP (0x1102)
    Protocol Descriptor List:
            L2CAP (0x0100)
            RFCOMM (0x0003)
                    Protocol specific parameter #1: u/int8/bool 1
    Bluetooth Profile Descriptor List:
            LAN Access Using PPP (0x1102) ver. 1.0

... и так далее. Заметьте, что каждый сервис имеет перечень атрибутов (например, канал RFCOMM). В зависимости от сервиса вам может потребоваться где-то сохранить эти атрибуты. Некоторые реализации Bluetooth не поддерживают просмотр сервисов и могут возвращать пустой список. В этом случае возможен поиск конкретной услуги. В примере ниже показано, как выполнить поиск службы OBEX Object Push (OPUSH):

    % sdpcontrol -a 00:01:03:fc:6e:ec search OPUSH

Во FreeBSD предоставление сервисов клиентам Bluetooth осуществляется сервером sdpd(8). Во FreeBSD 5.5, 6.1 и в более новых, следующая строка может быть добавлена в файл `/etc/rc.conf`:

    sdpd_enable="YES"

После этого sdpd даемон может быть запущен с помощью:

    # /etc/rc.d/sdpd start

Во FreeBSD 6.0, и во FreeBSD 5.X перед 5.5, sdpd не интегрирован в скрипты загрузки системы. Он должен запускаться автоматически командой:

    # sdpd

Приложение на локальном сервере, желающее предоставить сервис Bluetooth удаленным клиентам, регистрирует сервис через локального даемона SDP. Пример такого приложения -- rfcomm_pppd(8). После запуска оно регистрирует Bluetooth LAN сервис через локального даемона SDP.

Список сервисов, зарегистрированных через локальный SDP сервер, может быть получен путем выдачи запроса на просмотр SDP через локальный контрольный канал:

    # sdpcontrol -l browse

### 28.4.8. Доступ к сети по коммутируемой линии связи (DUN) и по протоколу PPP (LAN)

Модуль работы с коммутируемым доступом к сети (DUN - Dial-Up Networking) в большинстве случаев используется с модемами и сотовыми телефонами. Этот модуль покрывает следующие случаи:

- сотовый телефон или модем используется вместе с компьютером в качестве беспроводного модема для подключения к серверу коммутируемого доступа в Интернет, или другой коммутируемой услуге;

- сотовый телефон или модем используется компьютером для приёма входящих соединений.

Модуль доступа к сети по протоколу PPP (Network Access with PPP - LAN) может использоваться в следующих ситуациях:

- доступ к ЛВС для одного Bluetooth-устройства;

- доступ к ЛВС для нескольких Bluetooth-устройств;

- связь между двумя ПК (при помощи протокола PPP поверх эмулируемого последовательного канала связи).

Во 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-канала на удалённом устройстве используйте утилиту sdpcontrol(8).

    # rfcomm_pppd -a 00:80:37:29:19:a4 -c -C dun -l rfcomm-dialup

Для того, чтобы организовать сервис Network Access with PPP (LAN), необходимо запустить сервер sdpd(8). В файле `/etc/ppp/ppp.conf` должна быть создана новая запись для клиентов LAN. Примеры можно найти в справке по rfcomm_pppd(8). Наконец, запустите RFCOMM PPP сервер на существующем номере канала RFCOMM. Сервер RFCOMM PPP автоматически зарегистрирует Bluetooth LAN сервис через локальный SDP даемон. В примере ниже показано, как запустить сервер RFCOMM PPP.

    # rfcomm_pppd -s -C 7 -l rfcomm-server

### 28.4.9. OBEX Object Push (OPUSH) Profile

OBEX является широко используемым протоколом для простой передачи файлов между мобильными устройствами. В основном он используется в коммуникациях через инфракрасный порт для передачи файлов между ноутбуками или КПК, а также для пересылки визитных карточек или календарных планов между сотовыми телефонами и другими устройствами с персональными информационными менеджерами.

Сервер и клиент OBEX реализованы в виде пакета стороннего разработчика obexapp, который доступен в виде порта `comms/obexapp`.

Клиент OBEX используется для посылки или приёма объектов с сервера OBEX. Объектом, к примеру, может быть визитная карточка или указание. Клиент OBEX может получить номер RFCOMM-канала, указав вместо него имя сервиса. Поддерживаются следующие имена сервиса: IrMC, FTRN и OPUSH. Канал RFCOMM можно задать его номером. Ниже даётся пример сеанса OBEX, где с сотового телефона забирается объект с информацией об устройстве, а новый объект (визитная карточка) передаётся в каталог сотового телефона.

    % obexapp -a 00:80:37:29:19:a4 -C IrMC
    obex> get telecom/devinfo.txt devinfo-t39.txt
    Success, response: OK, Success (0x20)
    obex> put new.vcf
    Success, response: OK, Success (0x20)
    obex> di
    Success, response: OK, Success (0x20)

Для того, чтобы предоставить сервис OBEX Push, должен быть запущен сервер sdpd(8). Должен быть создан корневой каталог, в котором будут сохраняться все поступающие объекты. По умолчанию корневым каталогом является `/var/spool/obex`. Наконец, запустите OBEX сервер на существующем номере канала RFCOMM. OBEX сервер автоматически зарегистрирует сервис OBEX Object Push через локального даемона SDP. В примере ниже показано, как запустить OBEX-сервер.

    # obexapp -s -C 10

### 28.4.10. Профиль последовательного порта (SPP)

Профиль последовательного порта (SPP - Serial Port Profile) позволяет 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

### 28.4.11. Решение проблем

#### 28.4.11.1. Удалённое устройство не подключается

Некоторые старые Bluetooth-устройства не поддерживают переключение ролей. По умолчанию, когда FreeBSD подтверждает новое соединение, она пытается выполнить переключение роли и стать ведущим устройством. Устройства, которые это не поддерживают, не смогут подключиться. Заметьте, что переключение ролей выполняется при установлении нового соединения, поэтому невозможно выяснить, поддерживает ли удалённое устройство переключение ролей. На локальной машине имеется возможность отключить переключение ролей при помощи HCI-параметра:

    # hccontrol -n ubt0hci write_node_role_switch 0

#### 28.4.11.2. Что-то идёт не так, можно ли посмотреть, что в точности происходит?

Да, можно. Воспользуйтесь пакетом стороннего разработчика, hcidump который доступен в виде порта `comms/hcidump`. Утилита hcidump похожа на tcpdump(1). Она может быть использована для вывода на терминал содержимого Bluetooth-пакетов и сбрасывать пакеты Bluetooth в файл.

## 28.5. Мосты

Текст создал Steve Peterson.

### 28.5.1. Введение

Иногда полезно разделить одну физическую сеть (такую, как сегмент Ethernet) на два отдельных сегмента сети без необходимости создания подсетей IP и использования маршрутизатора для соединения сегментов. Устройство, которое соединяет две сети на такой манер, называется ''сетевым мостом'' (''bridge''). Система FreeBSD с двумя сетевыми адаптерами может выступать в роли моста.

Мост работает на основе изучения адресов уровня MAC (адресов Ethernet) устройств на каждом из своих сетевых интерфейсах. Он перенаправляет трафик между двумя сетями, только когда адреса отправителя и получателя находятся в разных сетях.

По многим параметрам мост работает также, как коммутатор Ethernet с малым количеством портов.

### 28.5.2. Ситуации, когда можно использовать мосты

На сегодняшний день есть две ситуации, когда можно использовать мост.

#### 28.5.2.1. Большой трафик в сегменте

Первая ситуация возникает, когда ваша физическая сеть перегружена трафиком, но по каким-то соображениям вы не хотите разделять сеть на подсети и соединять их с помощью маршрутизатора.

Давайте рассмотрим в качестве примера газету, в которой редакторский и производственный отделы находятся в одной и той же подсети. Пользователи в редакторском отделе все используют сервер `A` для служб доступа к файлам, а пользователи производственного отдела используют сервер `B`. Для объединения всех пользователей используется сеть Ethernet, а высокая нагрузка на сеть замедляет работу.

Если пользователи редакторского отдела могут быть собраны в одном сегменте сети, а пользователи производственного отдела в другом, то два сетевых сегмента можно объединить мостом. Только сетевой трафик, предназначенный для интерфейсов с ''другой'' стороны моста, будет посылаться в другую сеть, тем самым снижая уровень нагрузки на каждый сегмент сети.

#### 28.5.2.2. Сетевой экран с возможностями фильтрации/ограничения пропускной способности трафика

Второй распространённой ситуацией является необходимость в обеспечении функций сетевого экрана без трансляции сетевых адресов (NAT).

Для примера можно взять маленькую компанию, которая подключена к своему провайдеру по каналу DSL или ISDN. Для неё провайдер выделил 13 глобально доступных IP-адресов для имеющихся в сети 10 персональных компьютеров. В такой ситуации использование сетевого экрана на основе маршрутизатора затруднено из-за проблем с разделением на подсети.

Брандмауэр на основе моста может быть настроен и включен между маршрутизаторами DSL/ISDN без каких-либо проблем с IP-адресацией.

### 28.5.3. Настройка моста

#### 28.5.3.1. Выбор сетевого адаптера

Для работы моста требуются по крайней мере два сетевых адаптера. К сожалению, не все сетевые адаптеры поддерживают функции моста. Прочтите страницу Справочника по bridge(4) для выяснения подробностей о поддерживаемых адаптерах.

Перед тем, как продолжить, сначала установите и протестируйте два сетевых адаптера.

#### 28.5.3.2. Изменения в конфигурации ядра

Для включения поддержки функций сетевого моста в ядре, добавьте строчку

    options BRIDGE

в файл конфигурации вашего ядра, и перестройте ядро.

#### 28.5.3.3. Поддержка функций брандмауэра

Если вы планируете использовать мост в качестве брандмауэра, вам нужно также добавить опцию `IPFIREWALL`. Прочтите Гл. 27, содержащую общую информацию о настройке моста в качестве брандмауэра.

Если вам необходимо обеспечить прохождение не-IP пакетов (таких, как ARP) через мост, то имеется опция брандмауэра, которую можно задать. Это опция `IPFIREWALL_DEFAULT_TO_ACCEPT`. Заметьте, что при этом правило, используемое брандмауэром по умолчанию, меняется на разрешительное для всех пакетов. Перед тем, как задавать эту опцию, убедитесь, что вы понимаете работу вашего набора правил.

#### 28.5.3.4. Поддержка функций ограничения пропускной способности

Если вы хотите использовать мост в качестве машины, ограничивающей пропускную способность, то добавьте в файл конфигурации ядра опцию `DUMMYNET`. Дополнительную информацию можно почерпнуть из страницы Справочника по dummynet(4).

### 28.5.4. Включение функций моста

Добавьте строку

    net.link.ether.bridge.enable=1

в файл `/etc/sysctl.conf` для включения функций моста во время работы системы, и строку:

    net.link.ether.bridge.config=if1,if2

для включения функций моста для указанных интерфейсов (замените `if1` и `if2` на имена двух ваших сетевых интерфейсов). Если вы хотите, чтобы проходящие через мост пакеты фильтровались посредством ipfw(8), вы должны также добавить строчку:

    net.link.ether.bridge.ipfw=1

Для версий FreeBSD, предшествующих FreeBSD 5.2-RELEASE, нужно использовать следующие строки:

    net.link.ether.bridge=1
    net.link.ether.bridge_cfg=if1,if2
    net.link.ether.bridge_ipfw=1

### 28.5.5. Дополнительные замечания

Если вы хотите осуществлять удалённый доступ на мост через ssh(1) из сети, то корректно назначить одному из сетевых адаптеров IP-адрес. Общепринято, что назначение адреса обоим сетевым адаптерам является не самой хорошей идеей.

Если в вашей сети присутствует несколько мостов, не должно быть более одного маршрута между любыми двумя рабочими станциями. С технической точки зрения это означает отсутствие поддержки протокола spanning tree.

Сетевой мост может увеличить задержки в замерах командой ping(8), особенно для трафика между двумя разными сегментами.

## 28.6. Работа с бездисковыми станциями

Текст обновил Jean-François Dockès. Реорганизовал и улучшил Alex Dupre.

Машина с FreeBSD может загружаться по сети и работать без наличия локального диска, используя файловые системы, монтируемые с сервера NFS. Кроме стандартных конфигурационных файлов, не нужны никакие модификации в системе. Такую систему легко настроить, потому что все необходимые элементы уже готовы:

- Имеется по крайней мере два возможных способа загрузки ядра по сети:

  - PXE: Система Intel Preboot eXecution Environment является формой загрузочного ПЗУ, встроенного в некоторые сетевые адаптеры или материнские платы. Обратитесь к справочной странице по pxeboot(8) для получения более полной информации.

  - Порт Etherboot (`net/etherboot`) генерирует код, который может применяться в ПЗУ для загрузки ядра по сети. Код может быть либо прошит в загрузочный PROM на сетевом адаптере, либо загружен с локальной дискеты (или винчестера), или с работающей системы MS-DOS. Поддерживаются многие сетевые адаптеры.

- Примерный скрипт (`/usr/share/examples/diskless/clone_root`) облегчает создание и поддержку корневой файловой системы рабочей станции на сервере. Скрипт, скорее всего, потребует некоторых настроек, но он позволит вам быстро начать работу.

- Стандартные файлы начального запуска системы, располагающиеся в `/etc`, распознают и поддерживают загрузку системы в бездисковом варианте.

- Подкачка, если она нужна, может выполняться через файл NFS либо на локальный диск.

Существует много способов настройки бездисковой рабочей станции. При этом задействованы многие компоненты, и большинство из них могут быть настроены для удовлетворения ваших вкусов. Далее будет описаны варианты полной настройки системы, при этом упор будет делаться на простоту и совместимость с стандартной системой скриптов начальной загрузки FreeBSD. Описываемая система имеет такие характеристики:

- Бездисковые рабочие станции совместно используют файловую систему `/` в режиме только чтения, а также используют `/usr` совместно тоже в режиме только чтения.

  Корневая файловая система является копией стандартной корневой системы FreeBSD (обычно сервера), с некоторыми настроечными файлами, измененными кем-то специально для бездисковых операций или, возможно, для рабочей станции, которой она предназначена.

  Части корневой файловой системы, которые должны быть доступны для записи, перекрываются файловыми системами md(4). Любые изменения будут потеряны при перезагрузках системы.

- Ядро передается и загружается посредством Etherboot или PXE, и в некоторых ситуациях может быть использован любой из этих методов.

> Предостережение: Как описано, эта система не защищена. Она должна располагаться в защищенной части сети, а другие хосты не должны на нее полагаться.

Вся информация этого раздела была протестирована с релизом FreeBSD 5.2.1-RELEASE.

### 28.6.1. Общая информация

Настройка бездисковых рабочих станций относительно проста, но в то же время легко сделать ошибку. Иногда сложно диагностировать эти ошибки по нескольким причинам. Например:

- Параметры компиляции могут по-разному проявлять себя во время работы.

- Сообщения об ошибках бывают загадочны или вовсе отсутствуют.

В данной ситуации некоторые знания, касающиеся используемых внутренних механизмов, очень полезны при разрешении проблем, которые могут возникнуть.

Для выполнения успешной загрузки необходимо произвести несколько операций:

- Компьютеру необходимо получить начальные параметры, такие как собственный IP адрес, имя исполняемого файла, корневой каталог. Для этого используются протоколы DHCP или BOOTP. DHCP это совместимое расширение BOOTP, используются те же номера портов и основной формат пакетов.

  Возможна настройка системы для использования только BOOTP. Серверная программа bootpd(8) включена в основную систему FreeBSD.

  Тем не менее, у DHCP есть множество преимуществ над BOOTP (лучше файлы настройки, возможность использования PXE, плюс многие другие преимущества, не относящиеся непосредственно к бездисковым операциям), и мы в основном будем описывать настройку DHCP, с эквивалентными примерами для bootpd(8), когда это возможно. Пример конфигурации будет использовать пакет ISC DHCP (релиз 3.0.1.r12 был установлен на тестовом сервере).

- Компьютеру требуется загрузить в локальную память одну или несколько программ. Используются TFTP или NFS. Выбор между TFTP или NFS производится во время компилирования в нескольких местах. Часто встречающаяся ошибка это указание имен файлов для другого протокола: TFTP обычно загружает все файлы с одного каталога сервера, и принимает имена файлов относительно этого каталога. NFS нужны абсолютные пути к файлам.

- Необходимо инициализировать и выполнить возможные промежуточные программы загрузки и ядро. В этой области существует несколько важных вариаций:

  - PXE загрузит pxeboot(8), являющийся модифицированной версией загрузчика третьей стадии FreeBSD. loader(8) получит большинство параметров, необходимых для старта системы, и оставит их в окружении ядра до контроля передачи. В этом случае возможно использование ядра `GENERIC`.

  - Etherboot, непосредственно загрузит ядро, с меньшей подготовкой. Вам потребуется собрать ядро со специальными параметрами.

  PXE и Etherboot работают одинаково хорошо; тем не менее, поскольку ядро обычно позволяет loader(8) выполнить больше предварительной работы, метод PXE предпочтителен.

  Если ваш BIOS и сетевые карты поддерживают PXE, используйте его.

- Наконец, компьютеру требуется доступ к файловым системам. NFS используется во всех случаях.

Обратитесь также к странице справочника diskless(8).

### 28.6.2. Инструкции по настройке

#### 28.6.2.1. Конфигурация с использованием ISC DHCP

Сервер ISC DHCP может обрабатывать как запросы BOOTP, так и запросы DHCP.

ISC DHCP 3.0 не включается в поставку системы. Сначала вам нужно будет установить порт `net/isc-dhcp3-server` или соответствующий пакет.

После установки ISC DHCP ему для работы требуется конфигурационный файл (обычно называемый `/usr/local/etc/dhcpd.conf`). Вот прокомментированный пример, где хост `margaux` использует Etherboot, а хост `corbieres` использует PXE:

    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;
      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;
        filename "/data/misc/kernel.diskless";
        option root-path "192.168.4.4:/data/misc/diskless";
      }
      host corbieres {
        hardware ethernet 00:02:b3:27:62:df;
        fixed-address corbieres.example.com;
        next-server 192.168.4.4;
        filename "pxeboot";
        option root-path "192.168.4.4:/data/misc/diskless";
      }
    }

  Этот параметр указывает dhcpd посылать значения деклараций `host` как имя хоста для бездисковой машины. Альтернативным способом было бы добавление `option host-name `margaux`` внутри объявлений `host`.
  Директива `next-server` определяет сервер TFTP или NFS, используемый для получения загрузчика или файла ядра (по умолчанию используется тот же самый хост, на котором расположен сервер DHCP).
  Директива `filename` определяет файл, который Etherboot или PXE будут загружать для следующего шага выполнения. Он должен быть указан в соответствии с используемым методом передачи. Etherboot может быть скомпилирован для использования NFS или TFTP. FreeBSD порт по умолчанию использует NFS. PXE использует TFTP, поэтому здесь применяются относительные пути файлов (это может зависеть от настроек TFTP сервера, но обычно довольно типично). Кроме того, PXE загружает `pxeboot`, а не ядро. Существуют другие интересные возможности, такие как загрузка `pxeboot` из каталога `/boot` FreeBSD CD-ROM (поскольку pxeboot(8) может загружать `GENERIC` ядро, это делает возможной загрузку с удаленного CD-ROM).
  Параметр `root-path` определяет путь к корневой файловой системе, в обычной нотации NFS. При использовании PXE, можно оставить IP хоста отключенным, если параметр ядра BOOTP не используется. Затем NFS сервер может использоваться так же, как и TFTP.

#### 28.6.2.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

#### 28.6.2.3. Подготовка программы загрузки при помощи Etherboot

Сайт Etherboot содержит подробную документацию, в основном предназначенную для систем Linux, но несомненно, она полезна. Далее будет просто кратко описано, как вы должны использовать Etherboot в системе FreeBSD.

Сначала вы должны установить пакет или порт `net/etherboot`.

Вы можете изменить настройку Etherboot (например, для использования TFTP вместо NFS) путем редактирования файла `Config` в каталоге исходных текстов Etherboot.

В нашей ситуации мы будем использовать загрузочную дискету. Для других методов (PROM или программа MS-DOS) пожалуйста, обратитесь к документации по Etherboot.

Для создания загрузочной дискеты, вставьте дискету в дисковод на машине, где установлен Etherboot, затем перейдите в каталог `src` в дереве Etherboot и наберите:

    # gmake bin32/devicetype.fd0

`devicetype` зависит от типа адаптера Ethernet на бездисковой рабочей станции. Обратитесь к файлу `NIC` в том же самом каталоге для определения правильного значения для `devicetype`.

#### 28.6.2.4. Загрузка с PXE

По умолчанию, pxeboot(8) загружает ядро через NFS. Он может быть скомпилирован для использования вместо него TFTP путем указания параметра `LOADER_TFTP_SUPPORT` в `/etc/make.conf`. Смотрите комментарии в файле `/usr/share/examples/etc/make.conf`.

Есть два не документированных параметра `make.conf`, которые могут быть полезны для настройки бездискового компьютера с последовательной консолью: `BOOT_PXELDR_PROBE_KEYBOARD`, и `BOOT_PXELDR_ALWAYS_SERIAL`.

Для использования PXE при загрузке компьютера вам обычно потребуется выбрать параметр `Boot from network` (загрузка по сети) в настройках BIOS, или нажать функциональную клавишу во время загрузки PC.

#### 28.6.2.5. Настройка серверов TFTP и NFS

Если вы используете PXE или Etherboot, настроенные для использования TFTP, вам нужно включить tftpd на файловом сервере:

1. Создайте каталог, файлы которого будет обслуживать tftpd, например, `/tftpboot`.

2. Добавьте в ваш `/etc/inetd.conf` такую строчку:

       tftp   dgram   udp wait    root    /usr/libexec/tftpd  tftpd -l -s /tftpboot

   > Замечание: Бывает, что некоторым версиям PXE требуется TCP-вариант TFTP. В таком случае добавьте вторую строчку, заменяющую `dgram udp` на `stream tcp`.

3. Сообщите inetd о необходимости перечитать свой файл конфигурации. Файл `/etc/rc.conf` должен содержать строку `inetd_enable="YES"` для корректного исполнения команды

       # /etc/rc.d/inetd restart

Вы можете поместить каталог `tftpboot` в любом месте на сервере. Проверьте, что это местоположение указано как в `inetd.conf`, так и в `dhcpd.conf`.

Во всех случаях, вам также нужно включить NFS и экспортировать соответствующую файловую систему на сервере NFS.

1. Добавьте следующее в `/etc/rc.conf`:

       nfs_server_enable="YES"

2. Экспортируйте файловую систему, в которой расположен корневой каталог для бездисковой рабочей станции, добавив следующую строку в `/etc/exports` (подправьте точку монтирования и замените `margaux corbieres` именами бездисковых рабочих станций):

       /data/misc -alldirs -ro margaux corbieres

3. Заставьте mountd перечитать настроечный файл. На самом деле если вам потребовалось на первом шаге включить NFS в `/etc/rc.conf`, то вам нужно будет выполнить перезагрузку.

       # /etc/rc.d/mountd restart

#### 28.6.2.6. Построение ядра для бездисковой рабочей станции

При использовании Etherboot, вам потребуется создать конфигурационный файл ядра для бездискового клиента со следующими параметрами (вдобавок к обычным):

    options     BOOTP          # Use BOOTP to obtain IP address/hostname
    options     BOOTP_NFSROOT  # NFS mount root filesystem using BOOTP info

Вам может потребоваться использовать `BOOTP_NFSV3`, `BOOT_COMPAT` и `BOOTP_WIRED_TO` (посмотрите файл `NOTES`).

Эти имена параметров сложились исторически, и могут немного ввести в заблуждение, поскольку включают необязательное использование DHCP и BOOTP в ядре (возможно включение обязательного использования BOOTP или DHCP use).

Постройте ядро (обратитесь к Гл. 8) и скопируйте его в каталог, указанный в `dhcpd.conf`.

> Замечание: При использовании PXE, сборка ядра с вышеприведенными параметрами не является совершенно необходимой (хотя желательна). Включение этих параметров приведет к выполнению большинства DHCP запросов во время загрузки ядра, с небольшим риском несоответствия новых значений и значений, полученных pxeboot(8) в некоторых особых случаях. Преимущество использования в том, что в качестве побочного эффекта будет установлено имя хоста. Иначе вам потребуется установить имя хоста другим методом, например в клиент-специфичном файле `rc.conf`.

> Замечание: Для включения возможности загрузки с Etherboot, в ядро необходимо включить устройство hints. Вам потребуется установить в файле конфигурации следующий параметр (см. файл комментариев `NOTES`):

>     hints      "GENERIC.hints"

#### 28.6.2.7. Подготовка корневой файловой системы

Вам нужно создать корневую файловую систему для бездисковых рабочих станций, в местоположении, заданном как `root-path` в `dhcpd.conf`.

##### 28.6.2.7.1. Использование процедуры `make world`

Этот метод установит новую систему (не только корневую) в `DESTDIR`. Все, что вам потребуется сделать, это просто выполнить следующий скрипт:

    #!/bin/sh
    export DESTDIR=/data/misc/diskless
    mkdir -p ${DESTDIR}
    cd /usr/src; make buildworld && make buildkernel
    cd /usr/src/etc; make distribution

Как только это будет сделано, вам может потребоваться настроить `/etc/rc.conf` и `/etc/fstab`, помещенные в `DESTDIR`, в соответствии с вашими потребностями.

#### 28.6.2.8. Настройка области подкачки

Если это нужно, то файл подкачки, расположенный на сервере, можно использовать посредством NFS.

##### 28.6.2.8.1. Подкачка через NFS

На стадии загрузки ядро не поддерживает подкачку через NFS. Подкачка должна быть разрешена при помощи загрузочных скриптов, монтирующих файловую систему, пригодную для записи и создающих на ней файл подкачки. Для создания файла подкачки подходящего размера вы можете выполнить следующие команды:

    # dd if=/dev/zero of=/path/to/swapfile bs=1k count=1 oseek=100000

Для активации этого файла подкачки следует добавить в файл `rc.conf` строку

    swapfile=/path/to/swapfile

#### 28.6.2.9. Различные проблемы

##### 28.6.2.9.1. Работа с `/usr`, доступной только для чтения

Если бездисковая рабочая станция настроена на запуск X, вам нужно подправить настроечный файл для XDM, который по умолчанию помещает протокол ошибок в `/usr`.

##### 28.6.2.9.2. Использование не-FreeBSD сервера

Если сервер с корневой файловой системой работает не под управлением FreeBSD, вам потребуется создать корневую файловую систему на машине FreeBSD, а затем скопировать ее в нужно место, при помощи `tar` или `cpio`.

В такой ситуации иногда возникают проблемы со специальными файлами в `/dev` из-за различной разрядности целых чисел для старшего/младшего чисел. Решением этой проблемы является экспортирование каталога с не-FreeBSD сервера, монтирование его на машине с FreeBSD и использование devfs(5) для создания файлов устройств прозрачно для пользователя.

## 28.7. ISDN

Полезным источником информации о технологии ISDN и его аппаратном обеспечении является Страница Дэна Кегела (Dan Kegel) об ISDN.

Быстрое введение в ISDN:

- Если вы живёте в Европе, то вам может понадобиться изучить раздел об ISDN-адаптерах.

- Если вы планируете использовать ISDN в основном для соединений с Интернет через провайдера по коммутируемому, не выделенному соединению, рекомендуется посмотреть информацию о терминальных адаптерах. Это даст вам самую большую гибкость и наименьшее количество проблем при смене провайдера.

- Если вы объединяете две локальные сети или подключаетесь к Интернет через постоянное ISDN-соединение, рекомендуем остановить свой выбор на отдельном мосте/маршрутизаторе.

Стоимость является важным фактором при выборе вашего решения. Далее перечислены все возможности от самого дешевого до самого дорогого варианта.

### 28.7.1. Адаптеры ISDN

Текст предоставил Hellmuth Michaelis.

Реализация ISDN во FreeBSD поддерживает только стандарт DSS1/Q.931 (или Евро-ISDN) при помощи пассивных адаптеров. Поддерживаются некоторые активные адаптеры, прошивки которых поддерживают также другие сигнальные протоколы; также сюда включена поддержка адаптеров 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 `<hm@FreeBSD.org>`.

Для обсуждения вопросов, связанных с установкой, настройкой и устранением неисправностей isdn4bsd, имеется список рассылки freebsd-isdn.

`subscribe freebsd-isdn`

### 28.7.2. Терминальные адаптеры ISDN

Терминальные адаптеры (TA) для ISDN выполняют ту же роль, что и модемы для обычных телефонных линий.

Большинство TA используют стандартный набор AT-команд Hayes-модемов, и могут использоваться в качестве простой замены для модемов.

TA будут работать точно так же, как и модемы, за исключением скорости соединения и пропускной способности, которые будут гораздо выше, чем у вашего старого модема. Вам потребуется настроить PPP точно также, как и в случае использования модема. Проверьте, что вы задали скорость работы последовательного порта максимально высокой.

Главным преимуществом использования TA для подключения к провайдеру Интернет является возможность использования динамического PPP. Так как пространство адресов IP истощается все больше, большинство провайдеров не хочет больше выдавать вам статический IP-адрес. Большинство же маршрутизаторов не может использовать динамическое выделение IP-адресов.

TA полностью полагаются на даемон PPP, который используете из-за его возможностей и стабильности соединения. Это позволяет вам при использовании FreeBSD легко заменить модем на ISDN, если у вас уже настроено соединение PPP. Однако, в тоже время любые проблемы, которые возникают с программой PPP, отражаются и здесь.

Если вы хотите максимальной надёжности, используйте PPP на уровне параметра ядра, а не пользовательский PPP.

Известно, что следующие TA работают с FreeBSD:

- Motorola BitSurfer и Bitsurfer Pro

- Adtran

Большинство остальных TA, скорее всего, тоже будут работать, производители TA прилагают все усилия для обеспечения поддержки практически всего набора стандартных AT-команд модема.

Как и в случае модемов проблемой использования внешнего TA является потребность в хорошем последовательном адаптере на вашем компьютере.

Вы должны прочесть учебник Последовательные устройства во FreeBSD для того, чтобы в деталях понять работу последовательных устройств и осознать различие между асинхронными и синхронными последовательными портами.

TA, работающий со стандартным последовательным (асинхронным) портом PC, ограничивает вас скоростью 115.2 Кбит/с, хотя реально у вас соединение на скорости 128 Кбит/с. Чтобы использовать 128 Кбит/с, которые обеспечивает ISDN, полностью, вы должны подключить TA к синхронному последовательному адаптеру.

Не обманывайте себя, думая, что покупка встроенного TA поможет избежать проблемы синхронности/асинхронности. Встроенные TA просто уже имеют внутри стандартный последовательный порт PC. Все, что при этом достигается - это экономия дополнительных последовательного кабеля и электрической розетки.

Синхронный адаптер с TA по крайней мере так же быстр, как и отдельный маршрутизатор, а если он работает под управлением машины класса 386 с FreeBSD, то это гораздо более гибкое решение.

Выбор между использованием синхронного адаптера/TA или отдельного маршрутизатора в большей степени является религиозным вопросом. По этому поводу в списках рассылки была некоторая дискуссия. Рекомендуем поискать в архивах обсуждение полностью.

### 28.7.3. Отдельные мосты/маршрутизаторы ISDN

Мосты или маршрутизаторы ISDN не так уж специфичны для FreeBSD или для любой другой операционной системы. Для более подробного описания технологий маршрутизации и работы мостов, пожалуйста, обратитесь к справочникам по сетевым технологиям.

В контексте этого раздела термины маршрутизатор и сетевой мост будут использоваться как взаимозаменяемые.

Вместе с падением цен на простые мосты/маршрутизаторы ISDN, они становятся все более популярными. Маршрутизатор ISDN представляет собой маленькую коробочку, которая подключается непосредственно в вашу сеть Ethernet, и поддерживает связь с другим мостом/маршрутизатором. Всё программное обеспечение для работы по PPP и другим протоколам встроено в маршрутизатор.

Маршрутизатор обладает гораздо большей пропускной способностью, чем стандартный TA, так как он использует полное синхронное соединение ISDN.

Основной проблемой с маршрутизаторами и мостами ISDN является то, что их совместная работа с оборудованием других производителей может оказаться под вопросом. Если вы собираетесь подключаться к провайдеру, то вы должны обсудить с ним то, что вам нужно.

Если вы планируете объединить два сегмента локальной сети, например, домашнюю сеть с сетью офиса, это самое простое решение с минимальными издержками на обслуживание. Так как вы покупаете оборудование для обоих сторон соединения, то можете быть уверены, что связь будет работать нормально.

Например, для соединения домашнего компьютера или сети подразделения к сети центрального офиса, может использоваться такая настройка:

Пример 28-1. Офис подразделения или домашняя сеть

Сеть построена в топологии общей шины на основе 10 base 2 Ethernet (''thinnet'' - ''тонкий Ethernet''). Подключите маршрутизатор к сетевому кабелю с помощью трансивера AUI/10BT, если это нужно.

Если ваш домашний или удаленный офис представляет собой один компьютер, то для непосредственного подключения к маршрутизатору вы вы можете использовать витую пару с перекрестным соединениям.

Пример 28-2. Центральный офис или другая локальная сеть

Сеть построена в топологии звезды на основе 10 Base T Ethernet (''витая пара'').

Одним большим преимуществом большинства маршрутизаторов/мостов является то, что они позволяют иметь 2 отдельных независимых соединения PPP к 2 различным сайтам одновременно. Это не поддерживается в большинстве TA, кроме специальных (обычно дорогих) моделей, имеющих по два последовательных порта. Не путайте это с балансировкой нагрузки, MPP и так далее.

Это может оказаться весьма полезной особенностью, например, если у вас имеется постоянное ISDN-соединение в вашем офисе, и вы хотите им воспользоваться, но не хотите задействовать дополнительный канал ISDN на работе. Маршрутизатор, расположенный в офисе, может использовать выделенное соединение по каналу B (64 Кбит/с) для Интернет, и одновременно другой канал B для отдельного соединения для передачи данных. Второй канал B может использоваться для входящих, исходящих и динамически распределяемых соединений (MPP и так далее) совместно с первым каналом B для повышения пропускной способности.

Мост Ethernet также позволяет вам передавать больше, чем просто трафик IP. Вы сможете передавать IPX/SPX и любые другие протоколы, которые вы используете.

## 28.8. Даемон преобразования сетевых адресов (natd)

Текст предоставил Chern Lee.

### 28.8.1. Обзор

Даемон преобразования сетевых адресов (Network Address Translation) во FreeBSD, широко известный как natd(8), является даемоном, который принимает входящие IP-пакеты, изменяет адрес отправителя на адрес локальной машины и повторно отправляет эти пакеты в потоке исходящих пакетов. natd(8) делает это, меняя IP-адрес отправителя и порт таким образом, что когда данные принимаются обратно, он может определить расположение источника начальных данных и переслать их машине, которая запрашивала данные изначально.

Чаще всего NAT используется для организации так называемого Совместного Использования Интернет.

### 28.8.2. Настройка

Из-за исчерпания пространства адресов в IPv4 и увеличения количества пользователей высокоскоростных каналов связи, таких, как кабельное подключение или DSL, необходимость в решении по Совместному Использованию Интернет растёт. Возможность подключить несколько компьютеров через единственное соединение и IP-адрес делает natd(8) подходящим решением.

Чаще всего у пользователя имеется машина, подключенная к кабельному каналу или каналу DSL с одним IP-адресом и есть желание использовать этот единственный подключенный компьютер для организации доступа в Интернет другим компьютерам в локальной сети.

Для этого машина FreeBSD, находящаяся в Интернет, должна выступать в роли шлюза. Эта шлюзовая машина должна иметь два сетевых адаптера--один для подключения к маршрутизатору Интернет, а другой для подключения к ЛВС. Все машины в локальной сети подключаются через сетевой концентратор или коммутатор.

> Замечание: Существует много способов подсоединить локальную сеть к Internet через шлюз FreeBSD. Этот пример показывает шлюз c двумя сетевыми картами.

Подобная конфигурация часто используется для совместного использования доступа в Интернет. Одна из подключенных к локальной сети машин подключается к Интернет. Остальные машины работают с Интернет посредством этой ''шлюзовой'' машины.

### 28.8.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=""

  Указывает машине выступать в качестве шлюза. Выполнение команды `sysctl net.inet.ip.forwarding=1` приведёт к тому же самому результату.
  При загрузке включает использование правил брандмауэра из файла `/etc/rc.firewall`.
  Здесь задается предопределенный набор правил брандмауэра, который разрешает все. Посмотрите файл `/etc/rc.firewall` для нахождения дополнительных типов.
  Указывает, через какой интерфейс передавать пакеты (интерфейс, подключенный к Интернет).
  Любые дополнительный параметры, передаваемые при запуске даемону natd(8).

При использовании вышеуказанных параметров в файле `/etc/rc.conf` при загрузке будет запущена команда `natd -interface fxp0`. Эту команду можно запустить и вручную.

> Замечание: Если для передачи 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).

### 28.8.4. Перенаправление портов

Минусом использования natd(8) является то, что машины в локальной сети недоступны из Интернет. Клиенты в ЛВС могут выполнять исходящие соединения во внешний мир, но не могут обслуживать входящие. Это является проблемой при запуске служб Интернет на клиентских машинах в локальной сети. Простым решением является перенаправление некоторых портов Интернет машины с natd на клиента локальной сети.

Пусть, к примеру, сервер IRC запущен на клиенте `A`, а Web-сервер работает на клиенте `B`. Чтобы это работало, соединения, принимаемые на портах 6667 (IRC) и 80 (Web), должны перенаправляться на соответствующие машины.

Программе 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)

### 28.8.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), чтобы это сделать.

## 28.9. IP по параллельному порту (PLIP)

PLIP позволяет нам работать с TCP/IP по параллельному порту. Это полезно для машин без сетевых адаптеров или для установки на лэптопы. В этом разделе мы обсудим:

- создание кабеля для параллельного порта (laplink).

- Соединение двух компьютеров посредством PLIP.

### 28.9.1. Создание параллельного кабеля

Вы можете приобрести кабель для параллельного порта в большинстве магазинов, торгующих комплектующими. Если вы его не найдете, или же просто хотите знать, как он делается, то следующая таблица поможет вам сделать такой кабель из обычного принтерного кабеля для параллельного порта.

Таблица 28-1. Распайка кабеля для параллельного порта для сетевой работы

A-name | A-End | B-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
GND | 18-25 | 18-25 | GND | -

### 28.9.2. Настройка PLIP

Прежде всего вы должны найти laplink-кабель. Затем удостоверьтесь, что на обоих компьютерах в ядро включена поддержка драйвера lpt(4):

    # grep lp /var/run/dmesg.boot
    lpt0: <Printer> on ppbus0
    lpt0: Interrupt-driven port

Управление параллельным портом должно выполняться по прерываниям. Файл `/boot/device.hints` должен содержать следующие строки:

    hint.ppc.0.at="isa"
    hint.ppc.0.irq="7"

Затем проверьте, что файл конфигурации ядра имеет строку `device plip`, или загружен ли модуль ядра `plip.ko`. В обоих случаях интерфейс работы с сетью по параллельному порту должен присутствовать на момент использования команды ifconfig(8).

    # ifconfig plip0
    plip0: flags=8810<POINTOPOINT,SIMPLEX,MULTICAST> mtu 1500

Подключите кабель 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

## 28.10. IPv6

Первоначальный текст написал Aaron Kaplan. Реструктуризацию и добавления внёс Tom Rhodes. Расширил Brad Davis.

IPv6 (также называемый IPng ''IP next generation'' - следующее поколение IP) является новой версией широко известного протокола IP (называемого также IPv4). Как и другие современные системы *BSD, FreeBSD включает эталонную реализацию IPv6 от KAME. Так что система FreeBSD поставляется со всем, что вам нужно для экспериментирования с IPv6. Этот раздел посвящён настройке и запуску в работу IPv6.

В начале 1990-х люди стали беспокоиться о быстро иссякающем адресном пространстве IPv4. Принимая во внимание темпы роста Интернет, имелись основные проблемы:

- Нехватка адресов. Сегодня это не такая большая проблема, так как стали применяться адресные пространства для частных сетей (RFC1918) (`10.0.0.0/8`, `172.16.0.0/12` и `192.168.0.0/24`) и технология преобразования сетевых адресов (NAT - Network Address Translation).

- Таблицы маршрутов становятся чересчур большими. Это всё ещё является проблемой сегодня.

IPv6 решает эти и многие другие вопросы:

- 128-битное адресное пространство. Другими словами, теоретически доступны 340,282,366,920,938,463,463,374,607,431,768,211,456 адреса. Это означает плотность примерно в 6.67 * 10^27 адресов IPv6 на квадратный метр нашей планеты.

- Маршрутизаторы будут хранить в своих таблицах только агрегированные адреса сетей, что уменьшает средний размер таблицы маршрутизации до 8192 записей.

Имеется также множество других полезных особенностей IPv6, таких, как:

- Автоматическая настройка адреса (RFC2462)

- Групповые адреса (''один к нескольким из многих'')

- Обязательные адреса множественной рассылки

- IPsec (IP security - безопасный IP)

- Упрощённая структура заголовка

- Мобильный IP

- Механизмы преобразования IPv6-в-IPv4

Для получения дополнительной информации посмотрите:

- Обзор IPv6 на сайте playground.sun.com

- KAME.net

- 6bone.net

### 28.10.1. Основы адресации IPv6

Существуют различные типы адресов IPv6: одноадресные (Unicast), групповые (Anycast) и многоадресные (Multicast).

Адреса типа Unicast хорошо всем известны. Пакет, посланный на такой адрес, достигает в точности интерфейса, который этому адресу соответствует.

Адреса типа Anycast синтаксически неотличимы от адресов Unicast, но они адресуют группу интерфейсов. Пакет, направленный такому адресу, попадёт в ближайший (согласно метрике маршрутизатора) интерфейс. Адреса Anycast могут использоваться только маршрутизаторами.

Адреса типа Multicast идентифицируют группу интерфейсов. Пакет, посланный на такой адрес, достигнет всех интерфейсов, привязанных к группе многоадресного вещания.

> Замечание: Широковещательные адреса IPv4 (обычно `xxx.xxx.xxx.255`) выражаются адресами многоадресного вещания IPv6.

Таблица 28-2. Зарезервированные адреса IPv6

IPv6 адрес | Длина префикса (биты) | Описание | Заметки
--- | --- | --- | ---
`::` | 128 бит | нет описания | cf. `0.0.0.0` в IPv4
`::1` | 128 бит | loopback адрес | cf. `127.0.0.1` в IPv4
`::00:xx:xx:xx:xx` | 96 бит | встроенный IPv4 | Нижние 32 бита это адрес IPv4. Также называется ''IPv4 совместимым IPv6 адресом''
`::ff:xx:xx:xx:xx` | 96 бит | Адрес IPv6, отображенный на IPv4 | Нижние 32 бита это адрес IPv4. Для хостов, не поддерживающих IPv6.
`fe80::` - `feb::` | 10 бит | link-local | cf. loopback адрес в IPv4
`fec0::` - `fef::` | 10 бит | site-local |
`ff::` | 8 бит | широковещательный |
`001` (основание 2) | 3 бит | global unicast | Все global unicast адреса присваиваются из этого пула. Первые три бита ''001''.

### 28.10.2. Чтение адресов IPv6

Каноническая форма представляется в виде `x:x:x:x:x:x:x:x`, где каждый символ ''x'' является 16-разрядным числом в шестнадцатеричной форме. К примеру, `FEBC:A574:382B:23C1:AA49:4592:4EFE:9982`

Часто в адресе присутствуют длинные строчки, заполненные нулями, поэтому одна такая последовательность на адрес может быть сокращена до ''::''. Кроме того, до трех ведущих ''0'' на шестнадцатеричную четверку могут быть пропущены. К примеру, `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 адреса в процессе автоматической конфигурации.

Для получения дополнительной информации о структуре адресов IPv6 обратитесь к RFC3513.

### 28.10.3. Настройка подключения

На данный момент существуют четыре способа подключиться к другим хостам и сетям IPv6:

- Подключиться к экспериментальному 6bone

- Получить сеть IPv6 от вышестоящего провайдера. Для получения рекомендаций обратитесь к вашему провайдеру Интернет.

- Туннелировать посредством 6-в-4 (RFC3068)

- Использовать порт `net/freenet6`, если вы используете коммутируемое соединение.

Здесь мы будем рассматривать подключение к 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  MY_IPv4_REMOTE_TUNNEL_ENDPOINT_ADDR
    # ifconfig gif0 inet6 alias MY_ASSIGNED_IPv6_TUNNEL_ENDPOINT_ADDR MY_IPv6_REMOTE_TUNNEL_ENDPOINT_ADDR

Замените слова, написанные заглавными буквами, информацией, которую вам дал вышестоящий узел 6bone.

При этом установится туннель. Проверьте работу туннеля утилитой ping6(8) с адресом `ff02::1%gif0`. Вы должны получить два положительных ответа.

> Замечание: Если вы заинтригованы адресом `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` или Konqueror, который входит в `x11/kdebase3`, или `www/epiphany`.

### 28.10.4. DNS в мире IPv6

Для IPv6 использовались два типа записей DNS. IETF объявил записи A6 устаревшими. Стандартом на данный момент являются записи AAAA.

Использование записей AAAA достаточно просто. Назначение вашему имени хоста нового адреса IPv6 достигается просто добавлением:

    MYHOSTNAME           AAAA    MYIPv6ADDR

к вашему первичному файлу DNS зоны. В случае, если вы не обслуживаете собственные зоны DNS, обратитесь к вашему провайдеру DNS. Имеющиеся версии bind (версий 8.3 и 9) и `dns/djbdns` (с патчем IPv6) поддерживают записи AAAA.

### 28.10.5. Внесение необходимых изменений в `/etc/rc.conf`

#### 28.10.5.1. Настройки клиентов IPv6

Эти установки помогут вам настроить компьютер, который будет работать в сети как клиент, а не как маршрутизатор. Для включения настройки интерфейсов через rtsol(8) при загрузке, все, что вам потребуется, это добавить следующую строку:

    ipv6_enable="YES"

Для статического присвоения IP адреса, такого как `2001:471:1f11:251:290:27ff:fee0:2093`, интерфейсу `fxp0`, добавьте:

    ipv6_ifconfig_fxp0="2001:471:1f11:251:290:27ff:fee0:2093"

Для назначения маршрутизатором по умолчанию `2001:471:1f11:251::1`, добавьте следующую строку к `/etc/rc.conf`:

    ipv6_defaultrouter="2001:471:1f11:251::1"

#### 28.10.5.2. Настройки маршрутизатора/шлюза IPv6

Этот раздел поможет вам использовать инструкции, которые выдал провайдер туннеля, например, 6bone, и сделать эти настройки постоянными. Для восстановления туннеля при загрузке системы используйте в `/etc/rc.conf` нижеприведенные настройки.

Задайте список туннельных интерфейсов (Generic Tunneling interfaces), которые необходимо настроить, например `gif0`:

    gif_interfaces="gif0"

Для настройки интерфейса с локальным подключением на `MY_IPv4_ADDR` к удаленной точке `REMOTE_IPv4_ADDR`:

    gifconfig_gif0="MY_IPv4_ADDR REMOTE_IPv4_ADDR"

Для включения IPv6 адреса, который был вам присвоен для использования в подключении к туннелю IPv6, добавьте:

    ipv6_ifconfig_gif0="MY_ASSIGNED_IPv6_TUNNEL_ENDPOINT_ADDR"

Затем все, что вам потребуется сделать, это добавить маршрут по умолчанию для IPv6. Это другая сторона туннеля IPv6:

    ipv6_defaultrouter="MY_IPv6_REMOTE_TUNNEL_ENDPOINT_ADDR"

#### 28.10.5.3. Настройка туннелирования IPv6

Если сервер будет обеспечивать маршрутизацию между вашей сетью и остальным миром, то в файле `/etc/rc.conf` понадобится следующая строка:

    ipv6_gateway_enable="YES"

### 28.10.6. Распространение маршрутов и автоматическая настройка хостов

Этот раздел поможет вам настроить rtadvd(8) для распространения маршрута IPv6 по умолчанию.

Для включения rtadvd(8) вам понадобится добавить в `/etc/rc.conf` следующую строку:

    rtadvd_enable="YES"

Важно указать интерфейс, на котором выполняется запрос маршрутизатора IPv6. Например, для указания rtadvd(8) использовать `fxp0`:

    rtadvd_interfaces="fxp0"

Теперь мы должны создать файл настройки, `/etc/rtadvd.conf`. Вот пример:

    fxp0:\
            :addrs#1:addr="2001:471:1f11:246::":prefixlen#64:tc=ether:

Замените `fxp0` на интерфейс, который вы будете использовать.

Затем, замените `2001:471:1f11:246::` на префикс вашего размещения.

Если у вас выделенная подсеть `/64`, больше ничего менять не потребуется. Иначе, вам потребуется изменить `prefixlen#` на корректное значение.

## 28.11. Асинхронный режим передачи (ATM)

Предоставил Harti Brandt.

### 28.11.1. Классическая настройка IP через ATM (PVC)

Классический IP через ATM (CLIP) это простейший метод использования асинхронного режима передачи (Asynchronous Transfer Mode, ATM) с IP. Он может быть использован с коммутируемыми подключениями (switched connections, SVC) и с постоянными подключениями (permanent connections, PVC). В этом разделе будет описано как настроить сеть на основе PVC.

#### 28.11.1.1. Полностью объединенные конфигурации

Первый метод для настройки CLIP с PVC это подключение каждого компьютера к каждому в сети с выделенным PVC. Хотя настройка проста, она непрактична для большого количества компьютеров. В примере предполагается, что в сети есть четыре компьютера, каждый подключенный к ATM сети с помощью карты ATM адаптера. Первый шаг это планирование IP адресов и ATM подключений между компьютерами. Мы используем:

Хост | IP адрес
--- | ---
`hostA` | `192.168.173.1`
`hostB` | `192.168.173.2`
`hostC` | `192.168.173.3`
`hostD` | `192.168.173.4`

Для сборки полностью объединенной сети нам потребуется по одному ATM соединению между каждой парой компьютеров:

Компьютеры | VPI.VCI соединение
--- | ---
`hostA` - `hostB` | 0.100
`hostA` - `hostC` | 0.101
`hostA` - `hostD` | 0.102
`hostB` - `hostC` | 0.103
`hostB` - `hostD` | 0.104
`hostC` - `hostD` | 0.105

Значения VPI и VCI на каждом конце соединения конечно могут отличаться, но для упрощения мы предполагаем, что они одинаковы. Затем нам потребуется настроить ATM интерфейсы на каждом хосте:

    hostA# ifconfig hatm0 192.168.173.1 up
    hostB# ifconfig hatm0 192.168.173.2 up
    hostC# ifconfig hatm0 192.168.173.3 up
    hostD# ifconfig hatm0 192.168.173.4 up

предполагая, что ATM интерфейс называется `hatm0` на всех хостах. Теперь PVC необходимо настроить на `hostA` (мы предполагаем, что ATM коммутаторы уже настроены, вам необходимо свериться с руководством на коммутатор за информацией по настройке).

    hostA# atmconfig natm add 192.168.173.2 hatm0 0 100 llc/snap ubr
    hostA# atmconfig natm add 192.168.173.3 hatm0 0 101 llc/snap ubr
    hostA# atmconfig natm add 192.168.173.4 hatm0 0 102 llc/snap ubr

    hostB# atmconfig natm add 192.168.173.1 hatm0 0 100 llc/snap ubr
    hostB# atmconfig natm add 192.168.173.3 hatm0 0 103 llc/snap ubr
    hostB# atmconfig natm add 192.168.173.4 hatm0 0 104 llc/snap ubr

    hostC# atmconfig natm add 192.168.173.1 hatm0 0 101 llc/snap ubr
    hostC# atmconfig natm add 192.168.173.2 hatm0 0 103 llc/snap ubr
    hostC# atmconfig natm add 192.168.173.4 hatm0 0 105 llc/snap ubr

    hostD# atmconfig natm add 192.168.173.1 hatm0 0 102 llc/snap ubr
    hostD# atmconfig natm add 192.168.173.2 hatm0 0 104 llc/snap ubr
    hostD# atmconfig natm add 192.168.173.3 hatm0 0 105 llc/snap ubr

Конечно, вместо UBR может быть использован другой тип, если ATM адаптер поддерживает это. В этом случае имя типа дополняется параметрами трафика. Помощь по atmconfig(8) может быть получена командой:

    # atmconfig help natm add

или на странице справочника atmconfig(8).

Та же настройка может быть выполнена через `/etc/rc.conf`. Для `hostA` это будет выглядеть примерно так:

    network_interfaces="lo0 hatm0"
    ifconfig_hatm0="inet 192.168.173.1 up"
    natm_static_routes="hostB hostC hostD"
    route_hostB="192.168.173.2 hatm0 0 100 llc/snap ubr"
    route_hostC="192.168.173.3 hatm0 0 101 llc/snap ubr"
    route_hostD="192.168.173.4 hatm0 0 102 llc/snap ubr"

Текущий статус всех маршрутов CLIP может быть получен командой:

    hostA# atmconfig natm show

# V. Приложения

# Приложение A. Получение FreeBSD

## A.1. Издатели CDROM и DVD

### A.1.1. Коробочная версия

FreeBSD доступна в коробочной версии (FreeBSD CD диски, дополнительное программное обеспечение, печатная документация) от нескольких поставщиков:

- CompUSA
  WWW: http://www.compusa.com/

- Frys Electronics
  WWW: http://www.frys.com/

### A.1.2. Наборы CD и DVD

Наборы FreeBSD CD и DVD доступны у множества онлайн поставщиков:

- BSD Mall (подразделение Daemon News)
  PO Box 161
  Nauvoo, IL 62354
  USA
  Телефон: +1 866 273-6255
  Факс: +1 217 453-9956
  Email: `<sales@bsdmall.com>`
  WWW: http://www.bsdmall.com/freebsd1.html

- BSD-Systems
  Email: `<info@bsd-systems.co.uk>`
  WWW: http://www.bsd-systems.co.uk

- FreeBSD Mall, Inc.
  3623 Sanford Street
  Concord, CA 94520-1405
  США
  Телефон: +1 925 674-0783
  Факс: +1 925 674-0821
  Email: `<info@freebsdmall.com>`
  WWW: http://www.freebsdmall.com/

- Ingram Micro
  1600 E. St. Andrew Place
  Santa Ana, CA 92705-4926
  США
  Телефон: 1 (800) 456-8000
  WWW: http://www.ingrammicro.com/

- Hinner EDV
  St. Augustinus-Str. 10
  D-81825 München
  Германия
  Телефон: (089) 428 419
  WWW: http://www.hinner.de/linux/freebsd.html

- Ikarios
  22-24 rue Voltaire
  92000 Nanterre
  Франция
  WWW: http://ikarios.com/form/#freebsd

- JMC Software
  Ирландия
  Телефон: 353 1 6291282
  WWW: http://www.thelinuxmall.com

- Linux CD Mall
  Private Bag MBE N348
  Auckland 1030
  Новая Зеландия
  Телефон: +64 21 866529
  WWW: http://www.linuxcdmall.co.nz/

- The Linux Emporium
  Hilliard House, Lester Way
  Wallingford
  OX10 9TA
  Великобритания
  Телефон: +44 1491 837010
  Факс: +44 1491 837016
  WWW: http://www.linuxemporium.co.uk/products/freebsd/

- Linux+ DVD Magazine
  Lewartowskiego 6
  Warsaw
  00-190
  Польша
  Телефон: +48 22 860 18 18
  Email: `<editors@lpmagazine.org>`
  WWW: http://www.lpmagazine.org/

- Linux System Labs Australia
  21 Ray Drive
  Balwyn North
  VIC - 3104
  Австралия
  Телефон: +61 3 9857 5918
  Факс: +61 3 9857 8974
  WWW: http://www.lsl.com.au

- LinuxCenter.Ru
  ул. Галерная, 55
  Санкт-Петербург
  190000
  Россия
  Телефон: +7-812-3125208
  Email: `<info@linuxcenter.ru>`
  WWW: http://linuxcenter.ru/freebsd

### A.1.3. Распространители

Если вы продавец и хотите заниматься FreeBSD CDROM, пожалуйста свяжитесь с распространителем:

- Cylogistics
  809B Cuesta Dr., #2149
  Mountain View, CA 94040
  США
  Телефон: +1 650 694-4949
  Факс: +1 650 694-4953
  Email: `<sales@cylogistics.com>`
  WWW: http://www.cylogistics.com/

- Kudzu, LLC
  7375 Washington Ave. S.
  Edina, MN 55439
  США
  Телефон: +1 952 947-0822
  Факс: +1 952 947-0876
  Email: `<sales@kudzuenterprises.com>`

- LinuxCenter.Ru
  ул. Галерная, 55
  Санкт-Петербург
  190000
  Россия
  Телефон: +7-812-3125208
  Email: `<info@linuxcenter.ru>`
  WWW: http://linuxcenter.ru/freebsd

- Navarre Corp
  7400 49th Ave South
  New Hope, MN 55428
  США
  Телефон: +1 763 535-8333
  Факс: +1 763 535-0341
  WWW: http://www.navarre.com/

## A.2. FTP сайты

Официальным источником FreeBSD являются анонимные FTP зеркала по всему миру. Сайт ftp://ftp.FreeBSD.org/pub/FreeBSD/ имеет хорошее подключение и поддерживает большое количество одновременных соединений, но для вас возможно потребуется найти ''ближайшее'' зеркало (особенно если вы решили настроить у себя какой-то из видов зеркал).

База данных зеркал FreeBSD предпочтительнее по сравнению со списком зеркал в Руководстве, поскольку информация в базе собирается из DNS, а не из статического списка узлов.

Кроме того, FreeBSD доступна через анонимный FTP со следующих зеркал. Если вы выбрали получение FreeBSD через анонимный FTP, пожалуйста выберите ближайший к вам сайт. Зеркала из списка ''Основных зеркал'' обычно содержат полный архив FreeBSD (все доступные на данный момент версии для каждой архитектуры), скорость загрузки возможно будет больше с зеркала, расположенного в вашей стране или регионе. Сайты каждой страны содержат последнюю версию для наиболее популярных архитектур, но на них может не быть полного архива FreeBSD. Все сайты предоставляют доступ через анонимный FTP, а некоторые предоставляют доступ и другими методами. Для каждого сайта приведен список методов доступа в скобках после имени хоста.

Центральные серверы, Основные зеркала, Armenia, Австралия, Австрия, Аргентина, Болгария, Бразилия, Великобритания, Венгрия, Германия, Гонконг, Греция, Дания, Израиль, Индонезия, Ирландия, Исландия, Испания, Италия, Канада, Китай, Корея, Латвия, Литва, Нидерланды, Норвегия, Польша, Португалия, Россия, Румыния, Саудовская Аравия, Сингапур, Словацкая Республика, Словения, США, Тайвань, Турция, Украина, Финляндия, Франция, Чехия, Швейцария, Швеция, Эстония, Южная Африка, Япония.

(as of 2010/11/13 13:50:55 UTC)

Центральные серверы

  - ftp://ftp.FreeBSD.org/pub/FreeBSD/ (ftp / ftpv6 / http / httpv6)

Основные зеркала

  В случае проблем пожалуйста свяжитесь с администратором `<mirror-admin@FreeBSD.org>` этого домена.

  - ftp://ftp1.FreeBSD.org/pub/FreeBSD/ (ftp)

  - ftp://ftp2.FreeBSD.org/pub/FreeBSD/ (ftp)

  - ftp://ftp3.FreeBSD.org/pub/FreeBSD/ (ftp)

  - ftp://ftp4.FreeBSD.org/pub/FreeBSD/ (ftp / ftpv6 / http / httpv6)

  - ftp://ftp5.FreeBSD.org/pub/FreeBSD/ (ftp)

  - ftp://ftp6.FreeBSD.org/pub/FreeBSD/ (ftp)

  - ftp://ftp7.FreeBSD.org/pub/FreeBSD/ (ftp)

  - ftp://ftp8.FreeBSD.org/pub/FreeBSD/ (ftp)

  - ftp://ftp9.FreeBSD.org/pub/FreeBSD/ (ftp)

  - ftp://ftp10.FreeBSD.org/pub/FreeBSD/ (ftp / ftpv6 / http / httpv6)

  - ftp://ftp11.FreeBSD.org/pub/FreeBSD/ (ftp)

  - ftp://ftp12.FreeBSD.org/pub/FreeBSD/ (ftp)

  - ftp://ftp13.FreeBSD.org/pub/FreeBSD/ (ftp)

  - ftp://ftp14.FreeBSD.org/pub/FreeBSD/ (ftp / http)

Armenia

  В случае проблем пожалуйста свяжитесь с администратором `<hostmaster@am.FreeBSD.org>` этого домена.

  - ftp://ftp1.am.FreeBSD.org/pub/FreeBSD/ (ftp / http / rsync)

Австралия

  В случае проблем пожалуйста свяжитесь с администратором `<hostmaster@au.FreeBSD.org>` этого домена.

  - ftp://ftp.au.FreeBSD.org/pub/FreeBSD/ (ftp)

  - ftp://ftp2.au.FreeBSD.org/pub/FreeBSD/ (ftp)

  - ftp://ftp3.au.FreeBSD.org/pub/FreeBSD/ (ftp)

Австрия

  В случае проблем пожалуйста свяжитесь с администратором `<hostmaster@at.FreeBSD.org>` этого домена.

  - ftp://ftp.at.FreeBSD.org/pub/FreeBSD/ (ftp / ftpv6 / http / httpv6)

  - ftp://ftp2.at.FreeBSD.org/pub/FreeBSD/ (ftp / ftpv6 / http / httpv6 / rsync / rsyncv6)

Аргентина

  В случае проблем пожалуйста свяжитесь с администратором `<hostmaster@ar.FreeBSD.org>` этого домена.

  - ftp://ftp.ar.FreeBSD.org/pub/FreeBSD/ (ftp)

Болгария

  В случае проблем пожалуйста свяжитесь с администратором `<hostmaster@bg.FreeBSD.org>` этого домена.

  - ftp://ftp.bg.FreeBSD.org/pub/FreeBSD/ (ftp / rsync)

  - ftp://ftp2.bg.FreeBSD.org/pub/FreeBSD/ (ftp / rsync)

Бразилия

  В случае проблем пожалуйста свяжитесь с администратором `<hostmaster@br.FreeBSD.org>` этого домена.

  - ftp://ftp.br.FreeBSD.org/pub/FreeBSD/ (ftp / http)

  - ftp://ftp2.br.FreeBSD.org/pub/FreeBSD/ (ftp / http)

  - ftp://ftp3.br.FreeBSD.org/pub/FreeBSD/ (ftp / rsync)

  - ftp://ftp4.br.FreeBSD.org/pub/FreeBSD/ (ftp)

  - ftp5.br.FreeBSD.org

  - ftp://ftp6.br.FreeBSD.org/pub/FreeBSD/ (ftp)

  - ftp://ftp7.br.FreeBSD.org/pub/FreeBSD/ (ftp)

Великобритания

  В случае проблем пожалуйста свяжитесь с администратором `<hostmaster@uk.FreeBSD.org>` этого домена.

  - ftp://ftp.uk.FreeBSD.org/pub/FreeBSD/ (ftp)

  - ftp://ftp2.uk.FreeBSD.org/pub/FreeBSD/ (ftp / http / rsync)

  - ftp://ftp3.uk.FreeBSD.org/pub/FreeBSD/ (ftp)

  - ftp://ftp4.uk.FreeBSD.org/pub/FreeBSD/ (ftp)

  - ftp://ftp5.uk.FreeBSD.org/pub/FreeBSD/ (ftp)

  - ftp://ftp6.uk.FreeBSD.org/pub/FreeBSD/ (ftp)

Венгрия

  В случае проблем пожалуйста свяжитесь с администратором `<hostmaster@hu.FreeBSD.org>` этого домена.

  - ftp://ftp.hu.FreeBSD.org/pub/FreeBSD/ (ftp / http / rsync)

  - ftp://ftp2.hu.FreeBSD.org/pub/FreeBSD/ (ftp)

Германия

  В случае проблем пожалуйста свяжитесь с администратором `<de-bsd-hubs@de.FreeBSD.org>` этого домена.

  - ftp://ftp.de.FreeBSD.org/pub/FreeBSD/ (ftp)

  - ftp://ftp1.de.FreeBSD.org/freebsd/ (ftp / http / rsync)

  - ftp://ftp2.de.FreeBSD.org/pub/FreeBSD/ (ftp / http / rsync)

  - ftp://ftp3.de.FreeBSD.org/pub/FreeBSD/ (ftp)

  - ftp://ftp4.de.FreeBSD.org/FreeBSD/ (ftp / http / rsync)

  - ftp://ftp5.de.FreeBSD.org/pub/FreeBSD/ (ftp)

  - ftp://ftp6.de.FreeBSD.org/pub/FreeBSD/ (ftp)

  - ftp://ftp7.de.FreeBSD.org/pub/FreeBSD/ (ftp / http)

  - ftp://ftp8.de.FreeBSD.org/pub/FreeBSD/ (ftp)

Гонконг

  - ftp://ftp.hk.FreeBSD.org/pub/FreeBSD/ (ftp)

Греция

  В случае проблем пожалуйста свяжитесь с администратором `<hostmaster@gr.FreeBSD.org>` этого домена.

  - ftp://ftp.gr.FreeBSD.org/pub/FreeBSD/ (ftp)

  - ftp://ftp2.gr.FreeBSD.org/pub/FreeBSD/ (ftp)

Дания

  В случае проблем пожалуйста свяжитесь с администратором `<hostmaster@dk.FreeBSD.org>` этого домена.

  - ftp://ftp.dk.FreeBSD.org/pub/FreeBSD/ (ftp / ftpv6 / http / httpv6)

Израиль

  В случае проблем пожалуйста свяжитесь с администратором `<hostmaster@il.FreeBSD.org>` этого домена.

  - ftp://ftp.il.FreeBSD.org/pub/FreeBSD/ (ftp / ftpv6)

Индонезия

  В случае проблем пожалуйста свяжитесь с администратором `<hostmaster@id.FreeBSD.org>` этого домена.

  - ftp://ftp.id.FreeBSD.org/pub/FreeBSD/ (ftp / http / rsync)

Ирландия

  В случае проблем пожалуйста свяжитесь с администратором `<hostmaster@ie.FreeBSD.org>` этого домена.

  - ftp://ftp.ie.FreeBSD.org/pub/FreeBSD/ (ftp)

  - ftp://ftp2.ie.FreeBSD.org/pub/FreeBSD/ (ftp / http / rsync)

  - ftp://ftp3.ie.FreeBSD.org/pub/FreeBSD/ (ftp / http / rsync)

Исландия

  В случае проблем пожалуйста свяжитесь с администратором `<hostmaster@is.FreeBSD.org>` этого домена.

  - ftp://ftp.is.FreeBSD.org/pub/FreeBSD/ (ftp / rsync)

Испания

  В случае проблем пожалуйста свяжитесь с администратором `<hostmaster@es.FreeBSD.org>` этого домена.

  - ftp://ftp.es.FreeBSD.org/pub/FreeBSD/ (ftp / http)

  - ftp://ftp2.es.FreeBSD.org/pub/FreeBSD/ (ftp)

  - ftp://ftp3.es.FreeBSD.org/pub/FreeBSD/ (ftp)

Италия

  В случае проблем пожалуйста свяжитесь с администратором `<hostmaster@it.FreeBSD.org>` этого домена.

  - ftp://ftp.it.FreeBSD.org/pub/FreeBSD/ (ftp)

Канада

  В случае проблем пожалуйста свяжитесь с администратором `<hostmaster@ca.FreeBSD.org>` этого домена.

  - ftp://ftp.ca.FreeBSD.org/pub/FreeBSD/ (ftp)

  - ftp://ftp2.ca.FreeBSD.org/ (ftp)

  - ftp://ftp3.ca.FreeBSD.org/pub/FreeBSD/ (ftp)

Китай

  В случае проблем пожалуйста свяжитесь с администратором `<hostmaster@cn.FreeBSD.org>` этого домена.

  - ftp://ftp.cn.FreeBSD.org/pub/FreeBSD/ (ftp)

Корея

  В случае проблем пожалуйста свяжитесь с администратором `<hostmaster@kr.FreeBSD.org>` этого домена.

  - ftp://ftp.kr.FreeBSD.org/pub/FreeBSD/ (ftp / rsync)

  - ftp://ftp2.kr.FreeBSD.org/pub/FreeBSD/ (ftp / http)

Латвия

  В случае проблем пожалуйста свяжитесь с администратором `<hostmaster@lv.FreeBSD.org>` этого домена.

  - ftp://ftp.lv.FreeBSD.org/pub/FreeBSD/ (ftp / http)

  - ftp://ftp2.lv.FreeBSD.org/pub/FreeBSD/ (ftp)

Литва

  В случае проблем пожалуйста свяжитесь с администратором `<hostmaster@lt.FreeBSD.org>` этого домена.

  - ftp://ftp.lt.FreeBSD.org/pub/FreeBSD/ (ftp / http)

Нидерланды

  В случае проблем пожалуйста свяжитесь с администратором `<hostmaster@nl.FreeBSD.org>` этого домена.

  - ftp://ftp.nl.FreeBSD.org/pub/FreeBSD/ (ftp / http / rsync)

  - ftp://ftp2.nl.FreeBSD.org/pub/FreeBSD/ (ftp)

Норвегия

  В случае проблем пожалуйста свяжитесь с администратором `<hostmaster@no.FreeBSD.org>` этого домена.

  - ftp://ftp.no.FreeBSD.org/pub/FreeBSD/ (ftp / rsync)

  - ftp://ftp3.no.FreeBSD.org/pub/FreeBSD/ (ftp)

Польша

  В случае проблем пожалуйста свяжитесь с администратором `<hostmaster@pl.FreeBSD.org>` этого домена.

  - ftp://ftp.pl.FreeBSD.org/pub/FreeBSD/ (ftp)

  - ftp://ftp2.pl.FreeBSD.org/pub/FreeBSD/ (ftp / ftpv6 / http / httpv6 / rsync / rsyncv6)

Португалия

  В случае проблем пожалуйста свяжитесь с администратором `<hostmaster@pt.FreeBSD.org>` этого домена.

  - ftp://ftp.pt.FreeBSD.org/pub/FreeBSD/ (ftp)

  - ftp://ftp2.pt.FreeBSD.org/pub/freebsd/ (ftp)

  - ftp://ftp4.pt.FreeBSD.org/pub/ISO/FreeBSD/ (ftp)

Россия

  В случае проблем пожалуйста свяжитесь с администратором `<hostmaster@ru.FreeBSD.org>` этого домена.

  - ftp://ftp.ru.FreeBSD.org/pub/FreeBSD/ (ftp / http / rsync)

  - ftp://ftp2.ru.FreeBSD.org/pub/FreeBSD/ (ftp / http / rsync)

  - ftp://ftp3.ru.FreeBSD.org/pub/FreeBSD/ (ftp)

  - ftp://ftp4.ru.FreeBSD.org/pub/FreeBSD/ (ftp)

  - ftp://ftp5.ru.FreeBSD.org/pub/FreeBSD/ (ftp / http / rsync)

  - ftp://ftp6.ru.FreeBSD.org/pub/FreeBSD/ (ftp)

Румыния

  В случае проблем пожалуйста свяжитесь с администратором `<hostmaster@ro.FreeBSD.org>` этого домена.

  - ftp://ftp.ro.FreeBSD.org/pub/FreeBSD/ (ftp)

  - ftp://ftp1.ro.FreeBSD.org/pub/FreeBSD/ (ftp / ftpv6 / http / httpv6)

Саудовская Аравия

  В случае проблем пожалуйста свяжитесь с администратором `<ftpadmin@isu.net.sa>` этого домена.

  - ftp://ftp.isu.net.sa/pub/ftp.freebsd.org/ (ftp)

Сингапур

  В случае проблем пожалуйста свяжитесь с администратором `<hostmaster@sg.FreeBSD.org>` этого домена.

  - ftp://ftp.sg.FreeBSD.org/pub/FreeBSD/ (ftp / http / rsync)

Словацкая Республика

  В случае проблем пожалуйста свяжитесь с администратором `<hostmaster@sk.FreeBSD.org>` этого домена.

  - ftp://ftp.sk.FreeBSD.org/pub/FreeBSD/ (ftp / ftpv6 / http / httpv6 / rsync / rsyncv6)

  - ftp://ftp2.sk.FreeBSD.org/pub/FreeBSD/ (ftp / ftpv6 / http / httpv6)

Словения

  В случае проблем пожалуйста свяжитесь с администратором `<hostmaster@si.FreeBSD.org>` этого домена.

  - ftp://ftp.si.FreeBSD.org/pub/FreeBSD/ (ftp)

  - ftp://ftp2.si.FreeBSD.org/pub/FreeBSD/ (ftp)

США

  В случае проблем пожалуйста свяжитесь с администратором `<hostmaster@us.FreeBSD.org>` этого домена.

  - ftp://ftp1.us.FreeBSD.org/pub/FreeBSD/ (ftp)

  - ftp://ftp2.us.FreeBSD.org/pub/FreeBSD/ (ftp)

  - ftp://ftp3.us.FreeBSD.org/pub/FreeBSD/ (ftp)

  - ftp://ftp4.us.FreeBSD.org/pub/FreeBSD/ (ftp / ftpv6 / http / httpv6)

  - ftp://ftp5.us.FreeBSD.org/pub/FreeBSD/ (ftp / rsync)

  - ftp://ftp6.us.FreeBSD.org/pub/FreeBSD/ (ftp)

  - ftp://ftp7.us.FreeBSD.org/pub/FreeBSD/ (ftp / http / rsync)

  - ftp://ftp8.us.FreeBSD.org/pub/FreeBSD/ (ftp)

  - ftp://ftp9.us.FreeBSD.org/pub/FreeBSD/ (ftp / http)

  - ftp://ftp10.us.FreeBSD.org/pub/FreeBSD/ (ftp)

  - ftp://ftp11.us.FreeBSD.org/pub/FreeBSD/ (ftp)

  - ftp://ftp12.us.FreeBSD.org/pub/FreeBSD/ (ftp / rsync)

  - ftp://ftp13.us.FreeBSD.org/pub/FreeBSD/ (ftp / http / rsync)

  - ftp://ftp14.us.FreeBSD.org/pub/FreeBSD/ (ftp / http)

  - ftp://ftp15.us.FreeBSD.org/pub/FreeBSD/ (ftp)

Тайвань

  В случае проблем пожалуйста свяжитесь с администратором `<hostmaster@tw.FreeBSD.org>` этого домена.

  - ftp://ftp.tw.FreeBSD.org/pub/FreeBSD/ (ftp / ftpv6 / rsync / rsyncv6)

  - ftp://ftp2.tw.FreeBSD.org/pub/FreeBSD/ (ftp / ftpv6 / http / httpv6 / rsync / rsyncv6)

  - ftp://ftp3.tw.FreeBSD.org/pub/FreeBSD/ (ftp)

  - ftp://ftp4.tw.FreeBSD.org/pub/FreeBSD/ (ftp)

  - ftp://ftp5.tw.FreeBSD.org/pub/FreeBSD/ (ftp)

  - ftp://ftp6.tw.FreeBSD.org/pub/FreeBSD/ (ftp / http / rsync)

  - ftp://ftp7.tw.FreeBSD.org/pub/FreeBSD/ (ftp)

  - ftp://ftp8.tw.FreeBSD.org/pub/FreeBSD/ (ftp)

  - ftp://ftp9.tw.FreeBSD.org/pub/FreeBSD/ (ftp)

  - ftp://ftp10.tw.FreeBSD.org/pub/FreeBSD/ (ftp)

  - ftp://ftp11.tw.FreeBSD.org/pub/FreeBSD/ (ftp / http)

  - ftp://ftp12.tw.FreeBSD.org/pub/FreeBSD/ (ftp)

  - ftp://ftp13.tw.FreeBSD.org/pub/FreeBSD/ (ftp)

  - ftp://ftp14.tw.FreeBSD.org/pub/FreeBSD/ (ftp)

  - ftp://ftp15.tw.FreeBSD.org/pub/FreeBSD/ (ftp)

Турция

  - ftp://ftp.tr.FreeBSD.org/pub/FreeBSD/ (ftp / http / rsync)

  - ftp://ftp2.tr.FreeBSD.org/pub/FreeBSD/ (ftp / rsync)

Украина

  - ftp://ftp.ua.FreeBSD.org/pub/FreeBSD/ (ftp / http)

  - ftp://ftp2.ua.FreeBSD.org/pub/FreeBSD/ (ftp / http)

  - ftp://ftp7.ua.FreeBSD.org/pub/FreeBSD/ (ftp)

  - ftp://ftp8.ua.FreeBSD.org/pub/FreeBSD/ (ftp / http)

  - ftp://ftp11.ua.FreeBSD.org/pub/FreeBSD/ (ftp)

Финляндия

  В случае проблем пожалуйста свяжитесь с администратором `<hostmaster@fi.FreeBSD.org>` этого домена.

  - ftp://ftp.fi.FreeBSD.org/pub/FreeBSD/ (ftp)

Франция

  В случае проблем пожалуйста свяжитесь с администратором `<hostmaster@fr.FreeBSD.org>` этого домена.

  - ftp://ftp.fr.FreeBSD.org/pub/FreeBSD/ (ftp)

  - ftp://ftp1.fr.FreeBSD.org/pub/FreeBSD/ (ftp / http)

  - ftp://ftp2.fr.FreeBSD.org/pub/FreeBSD/ (ftp)

  - ftp://ftp3.fr.FreeBSD.org/pub/FreeBSD/ (ftp)

  - ftp://ftp5.fr.FreeBSD.org/pub/FreeBSD/ (ftp)

  - ftp://ftp6.fr.FreeBSD.org/pub/FreeBSD/ (ftp)

  - ftp://ftp7.fr.FreeBSD.org/pub/FreeBSD/ (ftp)

  - ftp://ftp8.fr.FreeBSD.org/pub/FreeBSD/ (ftp)

Чехия

  В случае проблем пожалуйста свяжитесь с администратором `<hostmaster@cz.FreeBSD.org>` этого домена.

  - ftp://ftp.cz.FreeBSD.org/pub/FreeBSD/ (ftp / ftpv6 / http / httpv6 / rsync / rsyncv6)

  - ftp://ftp2.cz.FreeBSD.org/pub/FreeBSD/ (ftp / http)

Швейцария

  В случае проблем пожалуйста свяжитесь с администратором `<hostmaster@ch.FreeBSD.org>` этого домена.

  - ftp://ftp.ch.FreeBSD.org/pub/FreeBSD/ (ftp / http)

  - ftp://ftp2.ch.FreeBSD.org/mirror/FreeBSD/ (ftp / ftpv6 / http / httpv6)

Швеция

  В случае проблем пожалуйста свяжитесь с администратором `<hostmaster@se.FreeBSD.org>` этого домена.

  - ftp://ftp.se.FreeBSD.org/pub/FreeBSD/ (ftp)

  - ftp://ftp2.se.FreeBSD.org/pub/FreeBSD/ (ftp)

  - ftp://ftp3.se.FreeBSD.org/pub/FreeBSD/ (ftp)

  - ftp://ftp4.se.FreeBSD.org/pub/FreeBSD/ (ftp / ftpv6 / rsync / rsyncv6)

  - ftp://ftp5.se.FreeBSD.org/pub/FreeBSD/ (ftp / http / rsync)

Эстония

  В случае проблем пожалуйста свяжитесь с администратором `<hostmaster@ee.FreeBSD.org>` этого домена.

  - ftp://ftp.ee.FreeBSD.org/pub/FreeBSD/ (ftp)

Южная Африка

  В случае проблем пожалуйста свяжитесь с администратором `<hostmaster@za.FreeBSD.org>` этого домена.

  - ftp://ftp.za.FreeBSD.org/pub/FreeBSD/ (ftp)

  - ftp://ftp2.za.FreeBSD.org/pub/FreeBSD/ (ftp)

  - ftp://ftp3.za.FreeBSD.org/pub/FreeBSD/ (ftp)

  - ftp://ftp4.za.FreeBSD.org/pub/FreeBSD/ (ftp)

Япония

  В случае проблем пожалуйста свяжитесь с администратором `<hostmaster@jp.FreeBSD.org>` этого домена.

  - ftp://ftp.jp.FreeBSD.org/pub/FreeBSD/ (ftp)

  - ftp://ftp2.jp.FreeBSD.org/pub/FreeBSD/ (ftp)

  - ftp://ftp3.jp.FreeBSD.org/pub/FreeBSD/ (ftp)

  - ftp://ftp4.jp.FreeBSD.org/pub/FreeBSD/ (ftp)

  - ftp://ftp5.jp.FreeBSD.org/pub/FreeBSD/ (ftp)

  - ftp://ftp6.jp.FreeBSD.org/pub/FreeBSD/ (ftp)

  - ftp://ftp7.jp.FreeBSD.org/pub/FreeBSD/ (ftp)

  - ftp://ftp8.jp.FreeBSD.org/pub/FreeBSD/ (ftp)

  - ftp://ftp9.jp.FreeBSD.org/pub/FreeBSD/ (ftp)

## A.3. Анонимный CVS

### A.3.1. Введение

Анонимный CVS (известный также как, anoncvs) это возможность, предоставляемая утилитами CVS, поставляемыми с FreeBSD для синхронизации с удаленным CVS репозиторием. Помимо прочего, он позволяет пользователям FreeBSD без специальных привилегий (с правами только на чтение) выполнять CVS операции на одном из официальных anoncvs серверов проекта FreeBSD. Для использования этой возможности, просто установите переменную `CVSROOT` на соответствующий сервер anoncvs, введите общеизвестный пароль ''anoncvs'' в ответ на приглашение команды `cvs login`, а затем используйте cvs(1) для доступа к репозиторию как к обычному локальному CVS.

> Замечание: Команда `cvs login` сохраняет пароли, использованные для авторизации на сервере CVS в файле с именем `.cvspass` в каталоге `HOME`. Если этот файл не существует, вы можете получить сообщение об ошибке при первом запуске `cvs login`. Просто создайте пустой файл `.cvspass` и попробуйте еще раз.

Хотя можно сказать, что сервисы CVSup и anoncvs выполняют в сущности похожие функции, есть несколько отличий, которые могут повлиять на выбор метода синхронизации. По своей сути, CVSup гораздо более эффективно использует сетевые ресурсы, и из двух этих программ он более интеллектуален, но за его эффективность приходится платить. Во-первых, для того, чтобы появилась возможность хоть что-то получить этим методом, CVSup потребуется установить и настроить специальную программу, а во-вторых, этот CVSup позволяет синхронизацию только довольно больших частей исходных текстов, называемых коллекциями.

Anoncvs напротив может использоваться для получения как одного файла, так и всей программы (например `ls` или `grep`), с помощью ссылки на имя модуля CVS. Конечно, anoncvs хорошо подходит только при операциях на чтение CVS репозитория, поэтому если вы намереваетесь производить локальную разработку в одном из репозиториев проекта FreeBSD, вам подойдет только CVSup.

### A.3.2. Использование анонимного CVS

Настройка cvs(1) для использования анонимного CVS репозитория означает установку переменной окружения `CVSROOT` на один из anoncvs серверов проекта FreeBSD. На момент написания этого документа доступны следующие сервера:

- Австрия: :pserver:anoncvs@anoncvs.at.FreeBSD.org:/home/ncvs (Используйте `cvs login` и введите любой пароль в ответ на приглашение.)

- Франция: :pserver:anoncvs@anoncvs.fr.FreeBSD.org:/home/ncvs (pserver (пароль ''anoncvs''), ssh (нет пароля))

- Германия: :pserver:anoncvs@anoncvs.de.FreeBSD.org:/home/ncvs (Используйте `cvs login` и введите пароль ''anoncvs'' в ответ на приглашение.)

- Германия: :pserver:anoncvs@anoncvs2.de.FreeBSD.org:/home/ncvs (rsh, pserver, ssh, ssh/2022)

- Япония: :pserver:anoncvs@anoncvs.jp.FreeBSD.org:/home/ncvs (Используйте `cvs login` и введите пароль ''anoncvs'' в ответ на приглашение.)

- США: freebsdanoncvs@anoncvs.FreeBSD.org:/home/ncvs (только ssh - без пароля)

      SSH HostKey: 1024 a1:e7:46:de:fb:56:ef:05:bc:73:aa:91:09:da:f7:f4 root@sanmateo.ecn.purdue.edu
      SSH2 HostKey: 1024 52:02:38:1a:2f:a8:71:d3:f5:83:93:8d:aa:00:6f:65 ssh_host_dsa_key.pub

- США: anoncvs@anoncvs1.FreeBSD.org:/home/ncvs (только ssh - без пароля)

      SSH HostKey: 1024 8b:c4:6f:9a:7e:65:8a:eb:50:50:29:7c:a1:47:03:bc root@ender.liquidneon.com
      SSH2 HostKey: 2048 4d:59:19:7b:ea:9b:76:0b:ca:ee:da:26:e2:3a:83:b8 ssh_host_dsa_key.pub

Поскольку CVS позволяет выполнить ''check out'' практически любой версии исходных текстов FreeBSD, которые когда-либо существовали (или, в некоторых случаях, будут существовать), вам необходимо познакомиться с флагом cvs(1) для ревизий (`-r`) и с параметрами, которые могут быть использованы с этим флагом в репозитории проекта FreeBSD.

Есть два вида тегов, теги ревизий и теги ветвей. Теги ревизий отвечают за определенную ревизию. Их значение остается прежним изо дня в день. Теги ветвей сопоставляются последней ревизии определенной ветви разработки, в любой момент времени. Поскольку теги ветвей не сопоставлены какой-то определенной ревизии, завтра они могут означать совсем не то, что сегодня.

Разд. A.7 содержит теги ревизий, которые могут заинтересовать пользователей. Опять же, ни один из них не подходит для коллекции портов, поскольку в коллекции портов нет разнообразия ревизий.

Если вы указываете тег ветви, то обычно получаете последнюю версию файлов этой ветви разработки. Если вы хотите получить предыдущую версию, это можно сделать путем указания даты флагом `-D дата`. Обратитесь к странице справочника cvs(1) за более подробной информацией.

### A.3.3. Примеры

Хотя перед тем, как что-то делать, рекомендуется полностью прочесть страницу справочника cvs(1), вот несколько кратких примеров использования Anonymous CVS:

Пример A-1. Извлечение кода из -CURRENT (ls(1)):

    % setenv CVSROOT :pserver:anoncvs@anoncvs.jp.FreeBSD.org:/home/ncvs
    % cvs login
    At the prompt, enter the password ''anoncvs''.
    % cvs co ls

Пример A-2. Использование SSH для извлечения дерева `src/`:

    % cvs -d freebsdanoncvs@anoncvs.FreeBSD.org:/home/ncvs co src
    The authenticity of host 'anoncvs.freebsd.org (128.46.156.46)' can't be established.
    DSA key fingerprint is 52:02:38:1a:2f:a8:71:d3:f5:83:93:8d:aa:00:6f:65.
    Are you sure you want to continue connecting (yes/no)? yes
    Warning: Permanently added 'anoncvs.freebsd.org' (DSA) to the list of known hosts.

Пример A-3. Извлечение ls(1) из ветви для 6-STABLE:

    % setenv CVSROOT :pserver:anoncvs@anoncvs.jp.FreeBSD.org:/home/ncvs
    % cvs login
    At the prompt, enter the password ''anoncvs''.
    % cvs co -rRELENG_6 ls

Пример A-4. Создание списка изменений ls(1) (в виде unified diff)

    % setenv CVSROOT :pserver:anoncvs@anoncvs.jp.FreeBSD.org:/home/ncvs
    % cvs login
    At the prompt, enter the password ''anoncvs''.
    % cvs rdiff -u -rRELENG_5_3_0_RELEASE -rRELENG_5_4_0_RELEASE ls

Пример A-5. Поиск доступных имен модулей:

    % setenv CVSROOT :pserver:anoncvs@anoncvs.jp.FreeBSD.org:/home/ncvs
    % cvs login
    At the prompt, enter the password ''anoncvs''.
    % cvs co modules
    % more modules/modules

### A.3.4. Другие ресурсы

В изучении CVS могут помочь следующие дополнительные ресурсы:

- Учебник по CVS от Cal Poly.

- CVS Home, сообщество разработки и поддержки CVS.

- CVSweb это веб интерфейс к CVS проекта FreeBSD.

## A.4. Использование CTM

CTM это метод синхронизации удаленного дерева исходных текстов с центральным. Он был разработан для использования с деревом исходных текстов FreeBSD, хотя может быть полезен и для других целей. На данный момент существует очень немного (если она вообще существует) документации по процессу создания дельта-файлов (deltas, разница между имеющимися и актуальными исходными текстами), поэтому обратитесь в список рассылки ctm-users за дополнительной информацией, если захотите использовать CTM для других целей.

### A.4.1. Зачем мне может понадобиться CTM?

CTM создаст для вас локальную копию исходных текстов FreeBSD. Существует множество разновидностей дерева исходных текстов. Захотите ли вы поддерживать все дерево CVS или только одну из ветвей, CTM может предоставить вам все необходимое. Если вы разработчик FreeBSD, но ваше соединение по TCP/IP некачественное или отсутствует, или же вы просто хотите, чтобы изменения автоматически отправлялись вам, CTM предназначен для вас. Вам потребуется получать до трех изменений в день для наиболее активных ветвей. Они будут отправляться вам по электронной почте. Размеры обновлений всегда поддерживаются настолько малыми, насколько это возможно. Они обычно меньше 5K, хотя случается (раз из десяти) достигают 10-50K и время от времени даже 100K или больше.

Вам также потребуется узнать о различных особенностях работы непосредственно с исходными текстами в разработке, вместо готовых релизов. Это в частности относится к выбору исходных текстов ветви -CURRENT. Рекомендуется прочесть материал На переднем крае разработок.

### A.4.2. Что потребуется для использования CTM?

Вам потребуются две вещи: программа CTM и исходные тексты, которые требуется обновить (до актуального состояния).

Программа CTM была частью FreeBSD все время с момента выпуска релиза 2.0, она находится в каталоге `/usr/src/usr.sbin/ctm`, если у вас есть копия исходных текстов.

''Дельта-файлы'' CTM могут приходить двумя путями, через FTP или email. Если у вас есть доступ к интернет по FTP, доступ к CTM может быть получен через следующие FTP сайты:

ftp://ftp.FreeBSD.org/pub/FreeBSD/CTM/

или с сайтов из списка зеркал.

Зайдите по FTP в соответствующий каталог и прочтите файл `README`.

Если вы предпочитаете получать дельта-файлы по почте:

Подпишитесь на один из списков распространения CTM. ctm-cvs-cur поддерживает все дерево CVS. ctm-src-cur поддерживает главную ветвь разработки. ctm-src-4 поддерживает ветвь 4.X, и т.д. Если вы не знаете, как подписаться на список, нажмите на ссылку выше или на ссылку http://lists.FreeBSD.org/mailman/listinfo, а затем на ссылку соответствующего списка. Страница списка должна содержать все необходимые инструкции по подписке.

Когда вы начнете получать обновления CTM по почте, используйте программу `ctm_rmail` для распаковки и применения обновлений. Вы можете использовать программу `ctm_rmail` непосредственно из `/etc/aliases`, если хотите полностью автоматизировать процесс. Прочтите страницу справочника `ctm_rmail` с более подробной информацией.

> Замечание: Вне зависимости от способа получения дельта-файлов CTM, вам потребуется подписка на список рассылки ctm-announce. В будущем этот список станет единственным местом, где будут анонсироваться операции, относящиеся к системе CTM. Нажмите на ссылку выше и следуйте инструкциям для подписки на эту рассылку.

### A.4.3. Использование CTM в первый раз

Перед тем, как вы сможете начать использование дельта-файлов CTM, потребуется определить исходную точку для последующего их применения.

Сначала потребуется определить, что уже имеется. Каждый может начать с ''пустого'' (empty) каталога. Вы должны использовать дельта-файл ''Empty'' для создания поддерживаемого CTM дерева. Планируется распространение ''стартовых'' дельта-файлов на CD, но на данный момент это не делается.

Поскольку дерево исходных текстов может быть объемом в десятки мегабайт, предпочтительно начать с каких-то уже имеющихся текстов. Если у вас есть -RELEASE CD, распакуйте исходные тексты с него. Это снизит объем передаваемых данных.

Вы можете распознать ''стартовый'' дельта-файл по символу `X`, добавляемому к номеру (например, `src-cur.3210XEmpty.gz`). Обозначение перед `X` соответствует имеющимся исходным текстам. `Empty` это пустой каталог. Как правило файл с `Empty` создается через каждые 100 дельта-файлов. Между прочем, эти файлы большие! От 70 до ;) мегабайт упакованных `gzip` данных это обычный размер для `XEmpty`.

Как только вы получили основной дельта-файл, потребуются также все дельта-файлы с последующими номерами.

### A.4.4. Повседневное использование CTM

Для применения дельта-файлов, просто выполните:

    # cd /where/ever/you/want/the/stuff
    # ctm -v -v /where/you/store/your/deltas/src-xxx.*

CTM работает с дельта-файлами, упакованными с помощью `gzip`, поэтому вам не требуется их распаковывать.

Хотя весь процесс довольно безопасен, CTM не будет изменять дерево исходных текстов. Для проверки дельта-файла вы также можете использовать флаг `-c`, CTM только проверит целостность дельта-файла а также его применимость к существующим исходным текстам.

Это все. Каждый раз после получения дельта-файла, запускайте CTM для поддержания исходных текстов в актуальном состоянии.

Не удаляйте дельта-файлы, если их сложно загрузить еще раз. Вы возможно захотите сохранить их на всякий случай. Если вы можете сохранить их только на дискете, используйте для создания копии `fdwrite`.

### A.4.5. Сохранение локальных изменений

Как разработчик вы возможно захотите поэкспериментировать и изменить файлы в дереве исходных текстов. CTM имеет ограниченную поддержку локальных изменений: перед проверкой наличия файла `foo`, сначала проверяется `foo.ctm`. Если он присутствует, CTM будет работать с ним вместо `foo`.

Такое поведение обеспечивает простой путь поддержки локальных изменений: просто скопируйте файлы, которые вы хотите изменить, в файлы с соответствующими именами и суффиксом `.ctm`. Вы можете свободно изменять код, а CTM будет поддерживать файлы `.ctm` в актуальном состоянии.

### A.4.6. Другие интересные возможности CTM

#### A.4.6.1. Определение файлов, которые будут затронуты обновлением

Вы можете определить список изменений, которые CTM внесет в исходные тексты, используя параметр CTM `-l`.

Это полезно, если вы хотите поддерживать лог изменений, выполнить предварительную или последующую обработку изменяемых файлов, или если вы просто немного параноидальны.

#### A.4.6.2. Создание резервных копий перед обновлением

Иногда вам может понадобиться сделать резервные копии всех файлов, которые будут изменены CTM.

С параметром `-B backup-file` CTM выполнит резервное копирование всех изменяемых дельта-файлом CTM файлов в `backup-file`.

#### A.4.6.3. Ограничение обновлений для определенных файлов

Иногда необходимо ограничить набор файлов, обновляемых CTM, или даже задать обновление нескольких определенных файлов.

Вы можете управлять списком файлов, с которыми будет работать CTM, путем указания фильтрующих регулярных выражений с параметрами `-e` и `-x`.

Например, для извлечения свежей копии `lib/libc/Makefile` из коллекции сохраненных дельта-файлов CTM, выполните команду:

    # cd /where/ever/you/want/to/extract/it/
    # ctm -e '^lib/libc/Makefile' ~ctm/src-xxx.*

Для каждого указанного CTM дельта-файла, параметры `-e` и `-x` применяются в порядке их задания в командной строке. Файл обрабатывается CTM только если он помечается как подходящий после обработки всех параметров `-e` и `-x`.

### A.4.7. Дальнейшие планы для CTM

Масса планов:

- Использовать какой-то из видов аутентификации в системе CTM, позволяющий обнаружение поддельных дат CTM.

- Доработать параметры CTM, поскольку они могут ввести в заблуждение.

### A.4.8. Разное

Существует набор дельта-файлов и для коллекции `ports`, но интерес к нему пока не так высок.

### A.4.9. Зеркала CTM

CTM/FreeBSD доступен через анонимный FTP с нижеприведенных зеркал. Если вы выбрали получение CTM через анонимный FTP, используйте ближайший к вам сервер.

В случае возникновения проблем обратитесь в список рассылки ctm-users.

California, Bay Area, официальный источник

  - ftp://ftp.FreeBSD.org/pub/FreeBSD/development/CTM/

South Africa, резервный сервер для старых дельта-файлов

  - ftp://ftp.za.FreeBSD.org/pub/FreeBSD/CTM/

Taiwan/R.O.C.

  - ftp://ctm.tw.FreeBSD.org/pub/FreeBSD/development/CTM/

  - ftp://ctm2.tw.FreeBSD.org/pub/FreeBSD/development/CTM/

  - ftp://ctm3.tw.FreeBSD.org/pub/FreeBSD/development/CTM/

Если вы не нашли ближайшего к вам зеркала, или зеркало неполно, попробуйте воспользоваться поиском, например alltheweb.

## A.5. Использование CVSup

### A.5.1. Введение

CVSup это пакет программного обеспечения для распространения и обновления исходных текстов с основного репозитория CVS на удаленном сервере. Исходные тексты FreeBSD поддерживаются в репозитории CVS на центральной машине разработки в Калифорнии. С помощью CVSup пользователи FreeBSD легко могут поддерживать собственные исходные тексты в актуальном состоянии.

CVSup использует так называемую опрашивающую (pull) модель обновления. Работая по этой модели, каждый клиент запрашивает обновления с сервера, если и когда они нужны. Сервер пассивно ожидает запросы на обновление от своих клиентов. Таким образом, все обновления инициируются клиентами. Сервер никогда не высылает не запрошенные обновления. Пользователь для получения обновлений должен либо запустить CVSup клиента вручную, либо добавить задание в `cron` для настройки периодических обновлений в автоматическом режиме.

Термин CVSup, написанный с заглавными буквами, означает весь пакет программного обеспечения. Его основные компоненты это клиент `cvsup`, запускаемый на каждом пользовательском компьютере, и сервер `cvsupd`, работающий на каждом зеркале FreeBSD.

При чтении документации FreeBSD и списков рассылки вы могли встретить указания на sup. Sup был предшественником CVSup, и выполнял похожие функции. CVSup в основном используется тем же способом, что и sup, и, фактически, использует файлы настройки, обратно совместимые с файлами `sup`. Sup более не используется проектом FreeBSD, поскольку CVSup и быстрее и более гибок.

### A.5.2. Установка

Простейший способ установки CVSup это использование прекомпилированного пакета `net/cvsup` из коллекции пакетов FreeBSD. Если вы предпочтете собрать CVSup из исходных текстов, можете использовать вместо этого порт `net/cvsup`. Но имейте ввиду: порт `net/cvsup` зависит от системы Modula-3, которой потребуется существенный объем времени и пространства на диске для загрузки и установки.

> Замечание: Если вы собираетесь использовать CVSup на компьютере, где нет установленного XFree86 или Xorg, например на сервере, используйте порт, не включающий CVSup GUI, `net/cvsup-without-gui`.

### A.5.3. Настройка CVSup

Работа CVSup контролируется файлом настройки, называемым `supfile`. В каталоге `/usr/share/examples/cvsup/` находится несколько примеров `supfile`.

Информация в `supfile` отвечает на следующие вопросы CVSup:

- Какие файлы вы хотите получить?

- Какие их версии вам нужны?

- Откуда вы хотите их получить?

- Где вы хотите разместить их на своем компьютере?

- Где вы хотите разместить файлы статуса?

В следующих разделах мы составим типичный `supfile` последовательным ответом на каждый из этих вопросов. Сначала опишем общую структуру `supfile`.

`supfile` это текстовый файл. Комментарии, начинающиеся с `#`, продолжаются до конца строки. Пустые строки и строки, содержащие только комментарии, игнорируются.

Каждая из оставшихся строк описывает набор файлов, получаемых пользователем. Строка начинается с имени ''коллекции'', логического объединения файлов, определяемых сервером. Имя коллекции говорит серверу о том, какие файлы вам нужны. После имени коллекции следуют одно или больше полей, разделенных пробелом. Эти поля отвечают на вопросы, заданные выше. Есть два типа полей: флаги и значения. Поле флага состоит из одного ключевого слова, например `delete` или `compress`. Поле значения также начинается с ключевого слова, но за ним без пробела следует `=` и второе слово. Например, `release=cvs` это поле значения.

`supfile` обычно задает получение более одной коллекции. Одним из способов построения `supfile` является указание всех соответствующих полей для каждой коллекции явно. Однако, это приводит к появлению слишком длинных строк в `supfile` и это неудобно, поскольку большинство полей одинаковы для всех коллекций `supfile`. CVSup предоставляет механизм задания значений по умолчанию для устранения этих проблем. Строки, начинающиеся со специального имени псевдо-коллекции `*default`, могут быть использованы для установки флагов и значений, которые послужат значениями по умолчанию для всех последующих коллекций `supfile`. Значение по умолчанию может быть перезаписано для каждой отдельной коллекции путем указания другого значения в ее собственных параметрах. Значения по умолчанию также могут быть изменены или расширены в любом месте `supfile` дополнительными строками `*default`.

Получив эту информацию, мы начнем строить `supfile` для получения и обновления главного дерева исходных текстов FreeBSD-CURRENT.

- Какие файлы вы хотите получить?

  Файлы, доступные через CVSup, организованы в именованные группы, называемые ''коллекциями''. Доступные коллекции описаны в следующем разделе. В этом примере мы получим все дерево исходных текстов системы FreeBSD. Существует одиночная большая коллекция `src-all`, которая позволит нам сделать это. В качестве первого шага по созданию `supfile`, добавим список коллекций, по одной на строку (в нашем случае, только одну строку):

      src-all

- Какие их версии вам нужны?

  С CVSup вы в принципе можете получить любую версию исходных текстов, которая когда-либо существовала. Это возможно, поскольку cvsupd сервер работает непосредственно с репозиторием CVS, который содержит все версии. Вы указываете ту, которая вам нужна, с помощью полей `tag=` и `date=`.

  > Внимание: Будьте очень осторожны при задании любых полей `tag=`. Некоторые теги существуют только в определенных коллекциях файлов. Если вы укажете некорректный тег или ошибетесь в его написании, CVSup удалит файлы, которые вы возможно не хотели удалять. В частности, используйте только `tag=.` для коллекций `ports-*`.

  Поля `tag=` означают символьные имена в репозитории. Существует два вида тегов, теги ревизий и теги ветвей. Теги ревизий означают определенную ревизию. Они не меняются со временем. Теги ветвей, с другой стороны, означают последнюю ревизию заданной линии разработки в любой момент времени. Поскольку тег ветви не относится к определенной ревизии, он может означать завтра что-то иное чем сегодня.

  Разд. A.7 содержит теги ветвей, которые могут быть интересны пользователям. Тег, указанный в файле настройки CVSup, должен предваряться строкой `tag=` (`RELENG_4` превратится в `tag=RELENG_4`). Помните, что для коллекции портов подходит только `tag=.`.

  > Внимание: Будьте очень осторожны при наборе имен тегов. CVSup не может отличить правильные и неправильные теги. Если вы неправильно наберете тег, CVSup поведет себя так, как если бы вы указали тег, не содержащий файлов. В этом случае он удалит существующие исходные тексты.

  При указании тега ветви вы получите последние версии файлов этой ветви разработки. Если вы хотите получить какую-то из предыдущих версий, сделайте это указав дату в поле значения `date=`. Страница справочника cvsup(1) описывает как сделать это.

  В нашем примере мы хотим получить FreeBSD-CURRENT. Мы добавим эту строку в начало `supfile`:

      *default tag=.

  Существует важный специальный случай, когда не задаются ни поле `tag=`, ни поле `date=`. В этом случае вы получите последние версии RCS файлов непосредственно из CVS репозитория сервера вместо получения определенной версии. Разработчики обычно предпочитают этот способ. Поддерживая копию репозитория в своей системе, они получают возможность просмотра истории ревизий и проверки последних версий файлов. Однако это достигается ценой большего занимаемого дискового пространства.

- Откуда вы хотите их получить?

  Мы используем поле `host=` для сообщения `cvsup` откуда забирать обновления. Подойдет любое из CVSup зеркал, хотя вы должны попробовать выбрать ближайшее к вам зеркало. В этом примере мы используем не существующий сервер, `cvsup99.FreeBSD.org`:

      *default host=cvsup99.FreeBSD.org

  Вам потребуется подставить адрес одного из существующих хостов перед запуском CVSup. При каждом запуске `cvsup`, вы можете перезаписать настройку хоста из командной строки, используя параметр `-h `hostname``.

- Где вы хотите разместить их на своем компьютере?

  Поле `prefix=` указывает `cvsup` где размещать получаемые файлы. В этом примере, мы поместим файлы непосредственно в главное дерево исходных текстов, `/usr/src`. Каталог `src` уже подразумевается в коллекциях, которые мы собираемся получить, поэтому корректное указание таково:

      *default prefix=/usr

- Где вы хотите разместить файлы статуса `cvsup`?

  Клиент CVSup поддерживает определенные файлы статуса в так называемом ''base'' каталоге. Эти файлы помогают CVSup работать более эффективно путем поддержки истории уже полученных обновлений. Мы будем использовать стандартный каталог base, `/var/db`:

      *default base=/var/db

  Если base каталог не существует, теперь подходящий момент для его создания. Клиент `cvsup` не запустится, если base каталог не существует.

- Различные настройки `supfile`:

  Существует еще одна строка, которая обычно должна присутствовать в `supfile`:

      *default release=cvs delete use-rel-suffix compress

  `release=cvs` означает, что сервер должен получать информацию из главного репозитория FreeBSD CVS. Это обычно всегда так, но существуют несколько иных вариантов, изложение которых выходит за пределы этой главы.

  `delete` дает CVSup возможность удалять файлы. Вы должны всегда указывать этот параметр, чтобы CVSup мог поддерживать дерево исходных текстов полностью актуальным. CVSup удалит только те файлы, за которые отвечает. Все другие файлы останутся нетронутыми.

  `use-rel-suffix` это ... мистика. Если вы действительно хотите узнать о нем, обратитесь к странице справочника cvsup(1). Иначе просто укажите это поле и не беспокойтесь о нем больше.

  `compress` включает использование gzip сжатия при передаче данных. Если ваше сетевое подключение работает со скоростью T1 или быстрее, вам возможно не потребуется использование сжатия. Иначе оно обычно помогает.

- Все это вместе:

  Вот полный `supfile` для нашего примера:

      *default tag=.
      *default host=cvsup99.FreeBSD.org
      *default prefix=/usr
      *default base=/var/db
      *default release=cvs delete use-rel-suffix compress

      src-all

#### A.5.3.1. Файл `refuse`

Как упомянуто выше, CVSup использует метод опроса. В основном это означает, что вы подключаетесь к CVSup серверу, и он говорит ''Вот то, что вы можете загрузить с меня...'', и клиент отвечает ''OK, я возьму это, это и это.'' С настройкой по умолчанию CVSup клиент заберет каждый файл, связанный с коллекцией и тегом, выбранным в файле настройки. Однако, это не всегда то, что вам нужно, особенно если вы синхронизируете деревья `doc`, `ports`, или `www` -- большинство людей не могут читать на пяти или четырех языках, и следовательно им не требуются локализованные файлы. Если вы обновляете коллекцию портов, это можно обойти путем индивидуального указания каждой коллекции (например, ports-astrology, ports-biology и т.д. вместо коллекции ports-all). Однако, поскольку для деревьев `doc` и `www` нет специфичных для языка коллекций, используйте одну из замечательных возможностей CVSup: файл `refuse`.

Файл `refuse` говорит CVSup, что он не должен забирать каждый файл из коллекции; другими словами, он говорит клиенту отказаться (refuse) от получения с сервера определенных файлов. Файл `refuse` можно найти (или, если у вас его еще нет, должен быть помещен) в ``base`/sup/`. `base` определен в файле `supfile`; наше стандартное расположение `base` это `/var/db`, что означает, что по умолчанию файл `refuse` это `/var/db/sup/refuse`.

Формат файла `refuse` очень прост; он содержит имена файлов или каталогов, которые вы не хотите загружать. Например, если вы не можете разговаривать ни на каком языке кроме английского и русского, и вы не будете читать документацию на этих языках, поместите следующие строки в файл `refuse`:

    doc/bn_*
    doc/da_*
    doc/de_*
    doc/el_*
    doc/es_*
    doc/fr_*
    doc/it_*
    doc/ja_*
    doc/nl_*
    doc/no_*
    doc/pl_*
    doc/pt_*
    doc/sr_*
    doc/tr_*
    doc/zh_*

и так далее для других языков (полный список находится на странице FreeBSD CVS репозитория).

С этой очень полезной возможностью пользователи с низкоскоростным подключением или с поминутной платой за подключение смогут сохранить время, поскольку им более не потребуется загружать файлы, которые они никогда не будут использовать. За более подробной информацией о файлах `refuse` и замечательных возможностях CVSup, обратитесь к его справочной странице.

### A.5.4. Запуск CVSup

Теперь вы готовы к тестированию обновления. Командная строка для этого очень проста:

    # cvsup supfile

где ``supfile`` это конечно имя `supfile`, который только что был создан. При запуске под X11, `cvsup` отобразит GUI интерфейс с несколькими полезными кнопками. Нажмите кнопку go и смотрите за его работой.

Поскольку в этом примере обновляется существующее дерево `/usr/src` вам потребуется, запуск программы из под `root`, чтобы у `cvsup` были права, необходимые для обновления файлов. Если файл настройки только что создан, и эта программа раньше никогда не использовалась, это может действовать вам на нервы. Есть простой способ для пробного запуска без затрагивания ваших драгоценных файлов. Просто создайте где-нибудь пустой каталог и поместите его в качестве дополнительного аргумента командной строки:

    # mkdir /var/tmp/dest
    # cvsup supfile /var/tmp/dest

Указанный каталог будет использоваться в качестве места назначения всех обновлений. CVSup будет работать с файлами из `/usr/src`, но не станет изменять или удалять их. Вместо этого все обновления файлов будут помещены в `/var/tmp/dest/usr/src`. При запуске таким способом CVSup оставит также неприкосновенным каталог base. Новые версии этих файлов будут записаны в указанный каталог. Если у вас есть права на чтение каталога `/usr/src`, вам даже не потребуется работать под `root` для выполнения пробного обновления.

Если вы не работаете с X11 или просто не любите GUI, добавьте набор параметров командной строки при запуске `cvsup`:

    # cvsup -g -L 2 supfile

Параметр `-g` указывает CVSup не использовать GUI. Он действует автоматически, если вы не работаете под X11, но иначе вам потребуется его указать.

Параметр `-L 2` указывает CVSup выводить информацию о каждом производимом обновлении. Есть три уровня протоколирования, от `-L 0` до `-L 2`. Уровень по умолчанию 0, что означает полное отсутствие сообщений, за исключением сообщений об ошибках.

Доступно множество других параметров. Для получения их краткого списка, наберите `cvsup -H`. За более подробным описанием обратитесь к странице справочника.

После проверки работоспособности обновлений вы можете организовать регулярные запуски CVSup с помощью cron(8). Очевидно, вы не должны позволять CVSup использовать GUI при запуске из cron(8).

### A.5.5. Коллекции файлов CVSup

Коллекции файлов, доступные через CVSup, организованы иерархически. Существует несколько больших коллекций, и они разделены на несколько меньших под-коллекций. Получение большой коллекции эквивалентно получению каждой из ее подколлекции. Иерархические отношения между коллекциями отражаются путем использования отступов в списке ниже.

Наиболее используемые коллекции это `src-all`, и `ports-all`. Другие коллекции используются небольшими группами людей для специальных целей и некоторые сайты зеркал могут не содержать их все.

`cvs-all release=cvs`

  Главный FreeBSD CVS репозиторий, включающий криптографический код.

  `distrib release=cvs`

    Файлы, относящиеся к распространению и зеркалированию FreeBSD.

  `doc-all release=cvs`

    Исходные тексты Руководства FreeBSD и другой документации. Они не включают файлы веб-сайта FreeBSD.

  `ports-all release=cvs`

    Коллекция портов FreeBSD.

    > Важно: Если вы не хотите обновлять всю коллекцию `ports-all` (все дерево портов), а только одну из подколлекций, перечисленных ниже, убедитесь, что вы каждый раз обновляете подколлекцию `ports-base`! При любых изменениях в инфраструктуре сборки портов подколлекции `ports-base`, они могут быть использованы ''настоящими'' портами довольно скоро. Таким образом, если вы обновляете только ''настоящие'' порты и они используют некоторые новые возможности, есть большой шанс того, что их сборка прервется с непонятным сообщением об ошибке. Самое первое, что вы должны сделать, это убедиться, что подколлекция `ports-base` обновлена.

    > Важно: Если вы намерены построить собственный вариант файла `ports/INDEX`, вы должны обновить коллекцию `ports-all` (полное дерево портов). Построение файла `ports/INDEX` с частью дерева не поддерживается, хотя и возможно. См. также FAQ.

    `ports-accessibility release=cvs`

      ПО для поддержки пользователей с нарушениями зрения, слуха и т.п.

    `ports-arabic release=cvs`

      Поддержка арабского языка.

    `ports-archivers release=cvs`

      Архиваторы.

    `ports-astro release=cvs`

      Порты для астрономии.

    `ports-audio release=cvs`

      Поддержка звука.

    `ports-base release=cvs`

      Инфраструктура сборки портов - различные файлы, расположенные в подкаталогах `Mk/` и `Tools/` каталога `/usr/ports`.

      > Замечание: Пожалуйста, прочтите важное предупреждение выше: вы должны всегда обновлять эту подколлекцию, при каждом обновлении любой части коллекции портов FreeBSD!

    `ports-benchmarks release=cvs`

      Измерение производительности.

    `ports-biology release=cvs`

      Программы для биологии.

    `ports-cad release=cvs`

      Инструменты САПР.

    `ports-chinese release=cvs`

      Поддержка китайского языка.

    `ports-comms release=cvs`

      Коммуникационные программы.

    `ports-converters release=cvs`

      Преобразование кодировок.

    `ports-databases release=cvs`

      Базы данных.

    `ports-deskutils release=cvs`

      Вещи, использовавшиеся на рабочем столе до изобретения компьютеров.

    `ports-devel release=cvs`

      Утилиты разработки.

    `ports-dns release=cvs`

      Программы, имеющие отношение к DNS.

    `ports-editors release=cvs`

      Редакторы.

    `ports-emulators release=cvs`

      Эмуляторы других операционных систем.

    `ports-finance release=cvs`

      Финансовые, расчетные и связанные с ними приложения.

    `ports-ftp release=cvs`

      Клиентские и серверные утилиты FTP.

    `ports-games release=cvs`

      Игры.

    `ports-german release=cvs`

      Поддержка немецкого языка.

    `ports-graphics release=cvs`

      Графические утилиты.

    `ports-hebrew release=cvs`

      Поддержка иврита.

    `ports-hungarian release=cvs`

      Поддержка венгерского языка.

    `ports-irc release=cvs`

      IRC утилиты.

    `ports-japanese release=cvs`

      Поддержка японского языка.

    `ports-java release=cvs`

      Java утилиты.

    `ports-korean release=cvs`

      Поддержка корейского языка.

    `ports-lang release=cvs`

      Языки программирования.

    `ports-mail release=cvs`

      Почтовое программное обеспечение.

    `ports-math release=cvs`

      Математические программы.

    `ports-mbone release=cvs`

      Приложения MBone.

    `ports-misc release=cvs`

      Различные утилиты.

    `ports-multimedia release=cvs`

      Мультимедийное программное обеспечение.

    `ports-net release=cvs`

      Сетевое программное обеспечение.

    `ports-net-im release=cvs`

      Программы обмена быстрыми сообщениями.

    `ports-net-mgmt release=cvs`

      ПО для сетевого управления.

    `ports-net-p2p release=cvs`

      Сети клиентского обмена (peer-to-peer).

    `ports-news release=cvs`

      Программное обеспечение новостей USENET.

    `ports-palm release=cvs`

      Программная поддержка для Palm™.

    `ports-polish release=cvs`

      Поддержка польского языка.

    `ports-portuguese release=cvs`

      Поддержка португальского языка.

    `ports-print release=cvs`

      Программы печати.

    `ports-russian release=cvs`

      Поддержка русского языка.

    `ports-science release=cvs`

      Научное программное обеспечение.

    `ports-security release=cvs`

      Утилиты безопасности.

    `ports-shells release=cvs`

      Оболочки командной строки.

    `ports-sysutils release=cvs`

      Системные утилиты.

    `ports-textproc release=cvs`

      Утилиты обработки текста (не включают настольные утилиты публикации).

    `ports-ukrainian release=cvs`

      Поддержка украинского языка.

    `ports-vietnamese release=cvs`

      Поддержка вьетнамского языка.

    `ports-www release=cvs`

      Программы, относящиеся к World Wide Web.

    `ports-x11 release=cvs`

      Порты с поддержкой X window system.

    `ports-x11-clocks release=cvs`

      Часы X11.

    `ports-x11-fm release=cvs`

      Файловые менеджеры X11.

    `ports-x11-fonts release=cvs`

      Шрифты и шрифтовые утилиты X11.

    `ports-x11-toolkits release=cvs`

      Пакеты разработки приложений для X11.

    `ports-x11-servers release=cvs`

      Серверы X11.

    `ports-x11-themes release=cvs`

      Темы X11.

    `ports-x11-wm release=cvs`

      Оконные менеджеры X11.

  `projects-all release=cvs`

    Исходные тексты дополнительных проектов FreeBSD.

  `src-all release=cvs`

    Основные исходные тексты FreeBSD, включая криптографический код.

    `src-base release=cvs`

      Различные файлы непосредственно из `/usr/src`.

    `src-bin release=cvs`

      Утилиты, которые могут потребоваться в однопользовательском режиме (`/usr/src/bin`).

    `src-contrib release=cvs`

      Утилиты и библиотеки, заимствованные проектом FreeBSD, используются почти без модификаций (`/usr/src/contrib`).

    `src-crypto release=cvs`

      Криптографические утилиты и библиотеки, заимствованные проектом FreeBSD, используются почти без модификаций (`/usr/src/crypto`).

    `src-eBones release=cvs`

      Kerberos и DES (`/usr/src/eBones`). Не используются в текущих релизах FreeBSD.

    `src-etc release=cvs`

      Файлы настройки системы (`/usr/src/etc`).

    `src-games release=cvs`

      Игры (`/usr/src/games`).

    `src-gnu release=cvs`

      Утилиты, попадающие под GNU Public License (`/usr/src/gnu`).

    `src-include release=cvs`

      Файлы заголовков (`/usr/src/include`).

    `src-kerberos5 release=cvs`

      Пакет безопасности Kerberos5 (`/usr/src/kerberos5`).

    `src-kerberosIV release=cvs`

      Пакет безопасности KerberosIV (`/usr/src/kerberosIV`).

    `src-lib release=cvs`

      Библиотеки (`/usr/src/lib`).

    `src-libexec release=cvs`

      Системные программы, обычно выполняемые другими программами (`/usr/src/libexec`).

    `src-release release=cvs`

      Файлы, необходимые для производства релизов FreeBSD (`/usr/src/release`).

    `src-sbin release=cvs`

      Системные утилиты для однопользовательского режима (`/usr/src/sbin`).

    `src-secure release=cvs`

      Криптографические библиотеки и команды (`/usr/src/secure`).

    `src-share release=cvs`

      Файлы, которые могут быть использованы несколькими системами (`/usr/src/share`).

    `src-sys release=cvs`

      Ядро (`/usr/src/sys`).

    `src-sys-crypto release=cvs`

      Криптографический код ядра (`/usr/src/sys/crypto`).

    `src-tools release=cvs`

      Различные инструменты для поддержки FreeBSD (`/usr/src/tools`).

    `src-usrbin release=cvs`

      Пользовательские утилиты (`/usr/src/usr.bin`).

    `src-usrsbin release=cvs`

      Системные утилиты (`/usr/src/usr.sbin`).

  `www release=cvs`

    Исходные тексты www сайта FreeBSD.

`distrib release=self`

  Собственные файлы настройки сервера CVSup. Используются зеркалами CVSup.

`gnats release=current`

  База данных отслеживания ошибок GNATS.

`mail-archive release=current`

  Архив списков рассылки FreeBSD.

`www release=current`

  Файлы предобработки WWW сайта FreeBSD (не исходные файлы). Используются зеркалами WWW.

### A.5.6. Дальнейшая информация

CVSup FAQ и другая информация о CVSup находится на Домашней странице CVSup.

Большая часть связанных с FreeBSD обсуждений CVSup проводилась в списке рассылки freebsd-hackers. Новые версии программного обеспечения анонсируются здесь и в списке рассылки freebsd-announce.

Вопросы и сообщения об ошибках адресуйте автору программы `<cvsup-bugs@polstra.com>`.

### A.5.7. Зеркала CVSup

CVSup серверы для FreeBSD работают на следующих сайтах:

Центральные серверы, Основные зеркала, Armenia, Австралия, Австрия, Аргентина, Болгария, Бразилия, Великобритания, Венгрия, Германия, Греция, Дания, Израиль, Индонезия, Ирландия, Исландия, Испания, Италия, Канада, Китай, Корея, Коста Рика, Кувейт, Кыргызстан, Латвия, Литва, Нидерланды, Норвегия, Польша, Португалия, Россия, Румыния, Сан Марино, Сингапур, Словацкая Республика, Словения, США, Тайвань, Тайланд, Турция, Украина, Филиппины, Финляндия, Франция, Чехия, Швейцария, Швеция, Эстония, Южная Африка, Япония.

(as of 2010/11/13 13:50:55 UTC)

Центральные серверы

  - cvsup.FreeBSD.org

Основные зеркала

  - cvsup1.FreeBSD.org

  - cvsup2.FreeBSD.org

  - cvsup3.FreeBSD.org

  - cvsup4.FreeBSD.org

  - cvsup5.FreeBSD.org

  - cvsup6.FreeBSD.org

  - cvsup7.FreeBSD.org

  - cvsup8.FreeBSD.org

  - cvsup9.FreeBSD.org

  - cvsup10.FreeBSD.org

  - cvsup11.FreeBSD.org

  - cvsup12.FreeBSD.org

  - cvsup13.FreeBSD.org

  - cvsup14.FreeBSD.org

  - cvsup15.FreeBSD.org

  - cvsup16.FreeBSD.org

  - cvsup18.FreeBSD.org

Armenia

  - cvsup1.am.FreeBSD.org

Австралия

  - cvsup.au.FreeBSD.org

Австрия

  - cvsup.at.FreeBSD.org

  - cvsup2.at.FreeBSD.org

Аргентина

  - cvsup.ar.FreeBSD.org

Болгария

  - cvsup.bg.FreeBSD.org

Бразилия

  - cvsup.br.FreeBSD.org

  - cvsup2.br.FreeBSD.org

  - cvsup3.br.FreeBSD.org

  - cvsup4.br.FreeBSD.org

  - cvsup5.br.FreeBSD.org

Великобритания

  - cvsup.uk.FreeBSD.org

  - cvsup2.uk.FreeBSD.org

  - cvsup3.uk.FreeBSD.org

  - cvsup4.uk.FreeBSD.org

Венгрия

  - cvsup.hu.FreeBSD.org

Германия

  - cvsup.de.FreeBSD.org

  - cvsup2.de.FreeBSD.org

  - cvsup3.de.FreeBSD.org

  - cvsup4.de.FreeBSD.org

  - cvsup5.de.FreeBSD.org

  - cvsup6.de.FreeBSD.org

  - cvsup7.de.FreeBSD.org

  - cvsup8.de.FreeBSD.org

Греция

  - cvsup.gr.FreeBSD.org

  - cvsup2.gr.FreeBSD.org

Дания

  - cvsup.dk.FreeBSD.org

  - cvsup2.dk.FreeBSD.org

Израиль

  - cvsup.il.FreeBSD.org

Индонезия

  - cvsup.id.FreeBSD.org

Ирландия

  - cvsup.ie.FreeBSD.org

  - cvsup2.ie.FreeBSD.org

Исландия

  - cvsup.is.FreeBSD.org

Испания

  - cvsup.es.FreeBSD.org

  - cvsup2.es.FreeBSD.org

  - cvsup3.es.FreeBSD.org

Италия

  - cvsup.it.FreeBSD.org

Канада

  - cvsup1.ca.FreeBSD.org

Китай

  - cvsup.cn.FreeBSD.org

  - cvsup2.cn.FreeBSD.org

Корея

  - cvsup.kr.FreeBSD.org

  - cvsup2.kr.FreeBSD.org

  - cvsup3.kr.FreeBSD.org

Коста Рика

  - cvsup1.cr.FreeBSD.org

Кувейт

  - cvsup1.kw.FreeBSD.org

Кыргызстан

  - cvsup.kg.FreeBSD.org

Латвия

  - cvsup.lv.FreeBSD.org

  - cvsup2.lv.FreeBSD.org

Литва

  - cvsup.lt.FreeBSD.org

  - cvsup2.lt.FreeBSD.org

  - cvsup3.lt.FreeBSD.org

Нидерланды

  - cvsup.nl.FreeBSD.org

  - cvsup2.nl.FreeBSD.org

  - cvsup3.nl.FreeBSD.org

Норвегия

  - cvsup.no.FreeBSD.org

Польша

  - cvsup.pl.FreeBSD.org

  - cvsup2.pl.FreeBSD.org

  - cvsup3.pl.FreeBSD.org

Португалия

  - cvsup.pt.FreeBSD.org

  - cvsup2.pt.FreeBSD.org

  - cvsup3.pt.FreeBSD.org

Россия

  - cvsup.ru.FreeBSD.org

  - cvsup2.ru.FreeBSD.org

  - cvsup3.ru.FreeBSD.org

  - cvsup4.ru.FreeBSD.org

  - cvsup5.ru.FreeBSD.org

  - cvsup6.ru.FreeBSD.org

  - cvsup7.ru.FreeBSD.org

Румыния

  - cvsup.ro.FreeBSD.org

  - cvsup1.ro.FreeBSD.org

  - cvsup2.ro.FreeBSD.org

  - cvsup3.ro.FreeBSD.org

Сан Марино

  - cvsup.sm.FreeBSD.org

Сингапур

  - cvsup.sg.FreeBSD.org

Словацкая Республика

  - cvsup.sk.FreeBSD.org

Словения

  - cvsup.si.FreeBSD.org

  - cvsup2.si.FreeBSD.org

США

  - cvsup1.us.FreeBSD.org

  - cvsup2.us.FreeBSD.org

  - cvsup3.us.FreeBSD.org

  - cvsup4.us.FreeBSD.org

  - cvsup5.us.FreeBSD.org

  - cvsup6.us.FreeBSD.org

  - cvsup7.us.FreeBSD.org

  - cvsup8.us.FreeBSD.org

  - cvsup9.us.FreeBSD.org

  - cvsup10.us.FreeBSD.org

  - cvsup11.us.FreeBSD.org

  - cvsup12.us.FreeBSD.org

  - cvsup13.us.FreeBSD.org

  - cvsup14.us.FreeBSD.org

  - cvsup15.us.FreeBSD.org

  - cvsup16.us.FreeBSD.org

  - cvsup18.us.FreeBSD.org

Тайвань

  - cvsup.tw.FreeBSD.org

  - cvsup3.tw.FreeBSD.org

  - cvsup4.tw.FreeBSD.org

  - cvsup5.tw.FreeBSD.org

  - cvsup6.tw.FreeBSD.org

  - cvsup7.tw.FreeBSD.org

  - cvsup8.tw.FreeBSD.org

  - cvsup9.tw.FreeBSD.org

  - cvsup10.tw.FreeBSD.org

  - cvsup11.tw.FreeBSD.org

  - cvsup12.tw.FreeBSD.org

  - cvsup13.tw.FreeBSD.org

  - cvsup14.tw.FreeBSD.org

Тайланд

  - cvsup.th.FreeBSD.org

Турция

  - cvsup.tr.FreeBSD.org

  - cvsup2.tr.FreeBSD.org

Украина

  - cvsup2.ua.FreeBSD.org

  - cvsup3.ua.FreeBSD.org

  - cvsup5.ua.FreeBSD.org

  - cvsup6.ua.FreeBSD.org

  - cvsup7.ua.FreeBSD.org

Филиппины

  - cvsup1.ph.FreeBSD.org

Финляндия

  - cvsup.fi.FreeBSD.org

  - cvsup2.fi.FreeBSD.org

Франция

  - cvsup.fr.FreeBSD.org

  - cvsup1.fr.FreeBSD.org

  - cvsup2.fr.FreeBSD.org

  - cvsup3.fr.FreeBSD.org

  - cvsup4.fr.FreeBSD.org

  - cvsup5.fr.FreeBSD.org

  - cvsup8.fr.FreeBSD.org

Чехия

  - cvsup.cz.FreeBSD.org

Швейцария

  - cvsup.ch.FreeBSD.org

Швеция

  - cvsup.se.FreeBSD.org

  - cvsup2.se.FreeBSD.org

Эстония

  - cvsup.ee.FreeBSD.org

Южная Африка

  - cvsup.za.FreeBSD.org

  - cvsup2.za.FreeBSD.org

Япония

  - cvsup.jp.FreeBSD.org

  - cvsup2.jp.FreeBSD.org

  - cvsup3.jp.FreeBSD.org

  - cvsup4.jp.FreeBSD.org

  - cvsup5.jp.FreeBSD.org

  - cvsup6.jp.FreeBSD.org

## A.6. Использование Portsnap

### A.6.1. Введение

Portsnap -- система для защищенного распространения дерева портов FreeBSD. Примерно раз в час генерируется ''снэпшот'' дерева портов, который затем архивируется и подписывается электронной подписью. Полученные файлы затем распространяются при помощи HTTP.

Подобно CVSup, portsnap использует активную (pull) модель обновлений: упакованное и подписанное дерево помещается на веб-сервер, откуда его должны забирать клиенты. Пользователь должен либо запустить portsnap(8) вручную, чтобы получить обновления, либо настроить периодическое задание при помощи cron(8).

По техническим причинам Portsnap не обновляет основное (''живое'') дерево портов в каталоге `/usr/ports/`, а работает со сжатой копией дерева в каталоге `/var/db/portsnap/`. Впоследствии эта копия используется для обновления основного дерева.

> Замечание: Если Portsnap был установлен из Коллекции портов FreeBSD, каталогом для снэпшотов будет `/usr/local/portsnap/`, а не `/var/db/portsnap/`.

### A.6.2. Установка

FreeBSD начиная с версии 6.0 содержит Portsnap в базовой поставке системы. Для более ранних релизов FreeBSD эта утилита может быть установлена из порта `sysutils/portsnap`.

### A.6.3. Конфигурация Portsnap

Конфигурация Portsnap описывается файлом `/etc/portsnap.conf`. Для большинства пользователей вполне подойдет конфигурация по умолчанию; за подробностями обращайтесь к странице справочника portsnap.conf(5).

> Замечание: При установке Portsnap из Коллекции портов используется файл конфигурации `/usr/local/etc/portsnap.conf`. При установке порта этот файл не создается; вам нужно создать его самостоятельно командой

>     # cd /usr/local/etc && cp portsnap.conf.sample portsnap.conf

### A.6.4. Первый запуск Portsnap

При первом запуске утилите portsnap(8) потребуется загрузить упакованный снэпшот полного дерева портов в каталог `/var/db/portsnap/` (`/usr/local/portsnap/`, если Portsnap был установлен из Коллекции портов). На начало 2006 года размер снэпшота составляет около 41 МБ.

    # portsnap fetch

После загрузки снэпшота из него может быть развернуто основное дерево портов. Это необходимо, даже есть каталог `/usr/ports/`заполнен каким-либо другим способом, например при помощи CVSup, поскольку позволяет установить точку отсчета, от которой `portsnap` будет определять необходимый объем изменений.

    # portsnap extract

> Замечание: В конфигурации установки по умолчанию каталог `/usr/ports` не создан. Если вы используете FreeBSD 6.0-RELEASE, создайте его самостоятельно перед первым запуском утилиты `portsnap`. В более поздних версиях FreeBSD или в версии из портов Portsnap автоматически создаст его при первом вызове.

### A.6.5. Обновление дерева портов

После того как первоначальный снэпшот дерева портов будет развернут в каталог `/usr/ports/`, обновление дерева портов будет состоять из двух шагов: загрузки (fetch) обновлений к упакованному снэпшоту и последующего обновления (update) основного дерева. Оба шага могут быть выполнены одним запуском `portsnap`:

    # portsnap fetch update

> Замечание: Некоторые из старых версий `portsnap` не поддерживают такой синтаксис; в этом случае, используйте две последовательные команды:

>     # portsnap fetch
>     # portsnap update

### A.6.6. Запуск portsnap из cron

Для того, чтобы избежать проблем с ''безумными толпами'' клиентов, одновременно приходящими на сервера Portsnap, команда `portsnap fetch` не запустится как задание cron(8). Для работы из `cron` предназначена специальная команда `portsnap cron`, которая перед загрузкой обновлений ожидает случайное время до 3600 секунд.

Кроме того, настоятельно не рекомендуется запускать из `cron` команду `portsnap update`, поскольку при пересечении с процессом сборки или установки какого-либо порта неизбежно возникнет конфликт. С другой стороны, безопасно обновить индексный файл `INDEX`, запустив `portsnap -I update` (разумеется, команду `portsnap update` без ключа `-I` для обновления оставшейся части дерева портов придется запустить вручную).

Для ежедневного обновления упакованного снэпшота и индексного файла при помощи `portsnap` и последующего отчета почтой об устаревших установленных пакетах добавьте в ваш файл `/etc/crontab` строку

    0 3 * * * root portsnap -I cron update && pkg_version -vIL=

> Замечание: Если системные часы не установлены в локальное время, пожалуйста, замените `3` на случайное число между 0 и 23, чтобы не создавать пиковых нагрузок на серверы portsnap.

> Замечание: Старые версии утилиты `portsnap` не поддерживали несколько команд при одном запуске (например, `cron update`). Если команда, указанная выше, не сработает, попробуйте заменить `portsnap -I cron update` на `portsnap cron && portsnap -I update`.

## A.7. Теги CVS

При получении или обновлении исходных текстов с использованием cvs или CVSup должен быть указан тег ревизии Тег относится либо к определенной линии разработки FreeBSD либо к определенному моменту времени. Первый тип называется ''тегом ветви'', второй тип называется ''тегом релиза''.

### A.7.1. Теги ветвей

Все они, за исключением `HEAD` (который всегда работает), относятся только к дереву `src/`. Деревья `ports/`, `doc/` и `www/` не имеют тегов ветвей.

HEAD

  Символическое имя для основной ветви разработки, FreeBSD-CURRENT. Используется по умолчанию, если тег не указан.

  В CVSup, этот тег представлен символом `.` (не знак пунктуации, а символ ''`.`'').

  > Замечание: В CVS тег по умолчанию используется, если тег не указан вообще. Обычно не очень хорошей идеей является обновление до CURRENT на машине со STABLE, только если вы не стремитесь именно к этому.

RELENG_6

  Ветвь разработки FreeBSD-6.X, известная также как FreeBSD 6-STABLE.

RELENG_6_1

  Ветвь релиза для FreeBSD-6.1, используемая только для исправлений безопасности и других критических исправлений.

RELENG_6_0

  Ветвь релиза для FreeBSD-6.0, используемая только для исправлений безопасности и других критических исправлений.

RELENG_5

  Ветвь разработки FreeBSD-5.X, известная также как FreeBSD 5-STABLE.

RELENG_5_5

  Ветвь релиза для FreeBSD-5.5, используемая только для исправлений безопасности и других критических исправлений.

RELENG_5_4

  Ветвь релиза для FreeBSD-5.4, используемая только для исправлений безопасности и других критических исправлений.

RELENG_5_3

  Ветвь релиза для FreeBSD-5.3, используемая только для исправлений безопасности и других критических исправлений.

RELENG_5_2

  Ветвь релиза для FreeBSD-5.2 и FreeBSD-5.2.1, используемая только для исправлений безопасности и других критических исправлений.

RELENG_5_1

  Ветвь релиза для FreeBSD-5.1, используемая только для исправлений безопасности и других критических исправлений.

RELENG_5_0

  Ветвь релиза для FreeBSD-5.0, используемая только для исправлений безопасности и других критических исправлений.

RELENG_4

  Ветвь разработки FreeBSD-4.X, известная также как FreeBSD 4-STABLE.

RELENG_4_11

  Ветвь релиза для FreeBSD-4.11, используемая только для исправлений безопасности и других критических исправлений.

RELENG_4_10

  Ветвь релиза для FreeBSD-4.10, используемая только для исправлений безопасности и других критических исправлений.

RELENG_4_9

  Ветвь релиза для FreeBSD-4.9, используемая только для исправлений безопасности и других критических исправлений.

RELENG_4_8

  Ветвь релиза для FreeBSD-4.8, используемая только для исправлений безопасности и других критических исправлений.

RELENG_4_7

  Ветвь релиза для FreeBSD-4.7, используемая только для исправлений безопасности и других критических исправлений.

RELENG_4_6

  Ветвь релиза для FreeBSD-4.6 и FreeBSD-4.6.2, используемая только для исправлений безопасности и других критических исправлений.

RELENG_4_5

  Ветвь релиза для FreeBSD-4.5, используемая только для исправлений безопасности и других критических исправлений.

RELENG_4_4

  Ветвь релиза для FreeBSD-4.4, используемая только для исправлений безопасности и других критических исправлений.

RELENG_4_3

  Ветвь релиза для FreeBSD-4.3, используемая только для исправлений безопасности и других критических исправлений.

RELENG_3

  Ветвь разработки для FreeBSD-3.X, известная также как 3.X-STABLE.

RELENG_2_2

  Ветвь разработки для FreeBSD-2.2.X, известная также как 2.2-STABLE. Эта ветвь по большей части устарела.

### A.7.2. Теги релизов

Эти теги относятся к определенным моментам времени, когда были выпущены конкретные версии FreeBSD. Процесс выпуска релизов более детально документирован в информации о выпусках релизов и статье о процессе подготовки релизов. Дерево `src` использует имена тегов, начинающиеся с `RELENG_`. Деревья `ports` и `doc` используют теги, имена которых начинаются с `RELEASE`. Наконец, в дереве `www` нет специальных имен для релизов.

RELENG_6_1_0_RELEASE

  FreeBSD 6.1

RELENG_6_0_0_RELEASE

  FreeBSD 6.0

RELENG_5_5_0_RELEASE

  FreeBSD 5.5

RELENG_5_4_0_RELEASE

  FreeBSD 5.4

RELENG_4_11_0_RELEASE

  FreeBSD 4.11

RELENG_5_3_0_RELEASE

  FreeBSD 5.3

RELENG_4_10_0_RELEASE

  FreeBSD 4.10

RELENG_5_2_1_RELEASE

  FreeBSD 5.2.1

RELENG_5_2_0_RELEASE

  FreeBSD 5.2

RELENG_4_9_0_RELEASE

  FreeBSD 4.9

RELENG_5_1_0_RELEASE

  FreeBSD 5.1

RELENG_4_8_0_RELEASE

  FreeBSD 4.8

RELENG_5_0_0_RELEASE

  FreeBSD 5.0

RELENG_4_7_0_RELEASE

  FreeBSD 4.7

RELENG_4_6_2_RELEASE

  FreeBSD 4.6.2

RELENG_4_6_1_RELEASE

  FreeBSD 4.6.1

RELENG_4_6_0_RELEASE

  FreeBSD 4.6

RELENG_4_5_0_RELEASE

  FreeBSD 4.5

RELENG_4_4_0_RELEASE

  FreeBSD 4.4

RELENG_4_3_0_RELEASE

  FreeBSD 4.3

RELENG_4_2_0_RELEASE

  FreeBSD 4.2

RELENG_4_1_1_RELEASE

  FreeBSD 4.1.1

RELENG_4_1_0_RELEASE

  FreeBSD 4.1

RELENG_4_0_0_RELEASE

  FreeBSD 4.0

RELENG_3_5_0_RELEASE

  FreeBSD-3.5

RELENG_3_4_0_RELEASE

  FreeBSD-3.4

RELENG_3_3_0_RELEASE

  FreeBSD-3.3

RELENG_3_2_0_RELEASE

  FreeBSD-3.2

RELENG_3_1_0_RELEASE

  FreeBSD-3.1

RELENG_3_0_0_RELEASE

  FreeBSD-3.0

RELENG_2_2_8_RELEASE

  FreeBSD-2.2.8

RELENG_2_2_7_RELEASE

  FreeBSD-2.2.7

RELENG_2_2_6_RELEASE

  FreeBSD-2.2.6

RELENG_2_2_5_RELEASE

  FreeBSD-2.2.5

RELENG_2_2_2_RELEASE

  FreeBSD-2.2.2

RELENG_2_2_1_RELEASE

  FreeBSD-2.2.1

RELENG_2_2_0_RELEASE

  FreeBSD-2.2.0

## A.8. 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@stacken.kth.se>`

## A.9. rsync сайты

Следующие сайты организуют доступ к FreeBSD через протокол rsync Утилита rsync работает в основном тем же путем, что и команда rcp(1), но поддерживает больше параметров и использует протокол удаленного обновления rsync, который передает только разницу между двумя наборами файлов, что значительно повышает скорость синхронизации по сети. Это особенно полезно, если вы поддерживаете зеркало сервера FreeBSD FTP, или репозитория CVS. Пакет rsync доступен для многих операционных систем, в FreeBSD используйте порт `net/rsync` или пакет.

Чешская республика

  rsync://ftp.cz.FreeBSD.org/

  Доступные коллекции:

  - ftp: Частичное зеркало FreeBSD FTP сервера.

  - FreeBSD: Полное зеркало FreeBSD FTP сервера.

Германия

  rsync://grappa.unix-ag.uni-kl.de/

  Доступные соединения:

  - freebsd-cvs: Полный FreeBSD CVS репозиторий.

  Этот компьютер помимо прочих также зеркалирует CVS репозитории проектов NetBSD и OpenBSD.

Нидерланды

  rsync://ftp.nl.FreeBSD.org/

  Доступные коллекции:

  - vol/4/freebsd-core: Полное зеркало FreeBSD FTP сервера.

Великобритания

  rsync://rsync.mirror.ac.uk/

  Доступные коллекции:

  - ftp.FreeBSD.org: Полное зеркало FreeBSD FTP сервера.

Соединенные Штаты Америки

  rsync://ftp-master.FreeBSD.org/

  Этот сервер может использоваться только основными зеркалами FreeBSD.

  Доступные коллекции:

  - FreeBSD: Основной архив FreeBSD FTP сервера.

  - acl: Основной ACL список FreeBSD.

  rsync://ftp13.FreeBSD.org/

  Доступные коллекции:

  - FreeBSD: Полное зеркало FreeBSD FTP сервера.

# Приложение B. Библиография

Так как страницы Справочника FreeBSD предоставляют лишь описание отдельных частей операционной системы FreeBSD, они не очень удобны для иллюстрации объединения этих частей вместе для того, чтобы настроить ОС и сделать ее работу более гладкой. Для этого незаменимы хорошая книга по системному администрированию UNIX и хорошее руководство пользователя.

## B.1. Книги и журналы, специализирующиеся на FreeBSD

Международные книги и журналы:

- Using FreeBSD (на китайском).

- FreeBSD Unleashed (перевод на китайский), опубликовано China Machine Press. ISBN 7-111-10201-0.

- FreeBSD From Scratch First Edition (на китайском), опубликовано China Machine Press. ISBN 7-111-07482-3.

- FreeBSD From Scratch Second Edition (на китайском), опубликовано China Machine Press. ISBN 7-111-10286-X.

- FreeBSD Handbook (на китайском), опубликовано Posts & Telecom Press. ISBN 7-115-10541-3.

- FreeBSD 3.x Internet (на китайском), опубликовано Tsinghua University Press. ISBN 7-900625-66-6.

- FreeBSD & Windows (на китайском), ISBN 7-113-03845-X

- FreeBSD Internet Services HOWTO (на китайском), ISBN 7-113-03423-3

- FreeBSD for PC 98'ers (на японском), выпущено SHUWA System Co, LTD. ISBN 4-87966-468-5 C3055 P2900E.

- FreeBSD (на японском), выпущено CUTT. ISBN 4-906391-22-2 C3055 P2400E.

- Complete Introduction to FreeBSD (на японском), выпущено Shoeisha Co., Ltd. ISBN 4-88135-473-6 P3600E.

- Personal UNIX Starter Kit FreeBSD (на японском), выпущено ASCII. ISBN 4-7561-1733-3 P3000E.

- FreeBSD Handbook (японский перевод), выпущено ASCII. ISBN 4-7561-1580-2 P3800E.

- FreeBSD mit Methode (на немецком), выпущено Computer und Literatur Verlag/Vertrieb Hanser, 1998. ISBN 3-932311-31-0.

- FreeBSD 4 - Installieren, Konfigurieren, Administrieren (на немецком), выпущено Computer und Literatur Verlag, 2001. ISBN 3-932311-88-4.

- FreeBSD 5 - Installieren, Konfigurieren, Administrieren (на немецком), выпущено Computer und Literatur Verlag, 2003. ISBN 3-936546-06-1.

- FreeBSD de Luxe (на немецком), выпущено Verlag Modere Industrie, 2003. ISBN 3-8266-1343-0.

- FreeBSD Install and Utilization Manual (на японском), выпущено Mainichi Communications Inc..

- Onno W Purbo, Dodi Maryanto, Syahrial Hubbany, Widjil Widodo Создание Интернет Сервера с использованием FreeBSD (на Индонезийском языке), выпущено Elex Media Komputindo.

Книги и журналы на английском языке:

- Absolute BSD: The Ultimate Guide to FreeBSD, выпущено No Starch Press, 2002. ISBN: 1886411743

- The Complete FreeBSD, выпущено O'Reilly, 2003. ISBN: 0596005164

- The FreeBSD Corporate Networker's Guide, выпущено Addison-Wesley, 2000. ISBN: 0201704811

- FreeBSD: An Open-Source Operating System for Your Personal Computer, выпущено The Bit Tree Press, 2001. ISBN: 0971204500

- Teach Yourself FreeBSD in 24 Hours, выпущено Sams, 2002. ISBN: 0672324245

- FreeBSD unleashed, выпущено Sams, 2006. ISBN: 0672328755

- FreeBSD: The Complete Reference, выпущено McGrawHill, 2003. ISBN: 0072224096

## B.2. Руководства для пользователей

- Computer Systems Research Group, UC Berkeley. 4.4BSD User's Reference Manual. O'Reilly & Associates, Inc., 1994. ISBN 1-56592-075-9

- Computer Systems Research Group, UC Berkeley. 4.4BSD User's Supplementary Documents. O'Reilly & Associates, Inc., 1994. ISBN 1-56592-076-7

- UNIX in a Nutshell. O'Reilly & Associates, Inc., 1990. ISBN 093717520X

- Mui, Linda. What You Need To Know When You Can't Find Your UNIX System Administrator. O'Reilly & Associates, Inc., 1995. ISBN 1-56592-104-6

- Ohio State University написал Ознакомительный Курс UNIX который доступен в Online в HTML и PS форматах.

  Итальянский перевод этого документа доступен как часть FreeBSD Italian Documentation Project.

- Jpman Project, Japan FreeBSD Users Group. FreeBSD User's Reference Manual (Японский перевод). Mainichi Communications Inc., 1998. ISBN4-8399-0088-4 P3800E.

- Эдинбургский Университет составил Online Путеводитель для новичков в UNIX.

## B.3. Руководства для администраторов

- Albitz, Paul and Liu, Cricket. DNS and BIND, 4th Ed. O'Reilly & Associates, Inc., 2001. ISBN 1-59600-158-4

- Computer Systems Research Group, UC Berkeley. 4.4BSD System Manager's Manual. O'Reilly & Associates, Inc., 1994. ISBN 1-56592-080-5

- Costales, Brian, et al. Sendmail, 2nd Ed. O'Reilly & Associates, Inc., 1997. ISBN 1-56592-222-0

- Frisch, Æleen. Essential System Administration, 2nd Ed. O'Reilly & Associates, Inc., 1995. ISBN 1-56592-127-5

- Hunt, Craig. TCP/IP Network Administration, 2nd Ed. O'Reilly & Associates, Inc., 1997. ISBN 1-56592-322-7

- Nemeth, Evi. UNIX System Administration Handbook. 2nd Ed. Prentice Hall, 2000. ISBN 0-13-020601-6

- Stern, Hal Managing NFS and NIS O'Reilly & Associates, Inc., 1991. ISBN 0-937175-75-7

- Jpman Project, Japan FreeBSD Users Group. FreeBSD System Administrator's Manual (Japanese translation). Mainichi Communications Inc., 1998. ISBN4-8399-0109-0 P3300E.

- Dreyfus, Emmanuel. Cahiers de l'Admin: BSD 2nd Ed. (на французском), Eyrolles, 2004. ISBN 2-212-11463-X

## B.4. Руководства для программистов

- Asente, Paul, Converse, Diana, and Swick, Ralph. X Window System Toolkit. Digital Press, 1998. ISBN 1-55558-178-1

- Computer Systems Research Group, UC Berkeley. 4.4BSD Programmer's Reference Manual. O'Reilly & Associates, Inc., 1994. ISBN 1-56592-078-3

- Computer Systems Research Group, UC Berkeley. 4.4BSD Programmer's Supplementary Documents. O'Reilly & Associates, Inc., 1994. ISBN 1-56592-079-1

- Harbison, Samuel P. and Steele, Guy L. Jr. C: A Reference Manual. 4th ed. Prentice Hall, 1995. ISBN 0-13-326224-3

- Kernighan, Brian and Dennis M. Ritchie. The C Programming Language. 2nd Ed. PTR Prentice Hall, 1988. ISBN 0-13-110362-8

- Lehey, Greg. Porting UNIX Software. O'Reilly & Associates, Inc., 1995. ISBN 1-56592-126-7

- Plauger, P. J. The Standard C Library. Prentice Hall, 1992. ISBN 0-13-131509-9

- Spinellis, Diomidis. Code Reading: The Open Source Perspective. Addison-Wesley, 2003. ISBN 0-201-79940-5

- Spinellis, Diomidis. Code Quality: The Open Source Perspective. Addison-Wesley, 2003. ISBN 0-201-79940-5

- Stevens, W. Richard. Advanced Programming in the UNIX Environment. 2nd Ed. Reading, Mass. : Addison-Wesley, 2005. ISBN 0-201-43307-9

- Stevens, W. Richard. UNIX Network Programming. 2nd Ed, PTR Prentice Hall, 1998. ISBN 0-13-490012-X

- Wells, Bill. ''Writing Serial Drivers for UNIX''. Dr. Dobb's Journal. 19(15), December 1994. pp68-71, 97-99.

## B.5. Внутренности операционной системы

- Andleigh, Prabhat K. UNIX System Architecture. Prentice-Hall, Inc., 1990. ISBN 0-13-949843-5

- Jolitz, William. ''Porting UNIX to the 386''. Dr. Dobb's Journal. January 1991-July 1992.

- Leffler, Samuel J., Marshall Kirk McKusick, Michael J Karels and John Quarterman The Design and Implementation of the 4.3BSD UNIX Operating System. Reading, Mass. : Addison-Wesley, 1989. ISBN 0-201-06196-1

- Leffler, Samuel J., Marshall Kirk McKusick, The Design and Implementation of the 4.3BSD UNIX Operating System: Answer Book. Reading, Mass. : Addison-Wesley, 1991. ISBN 0-201-54629-9

- McKusick, Marshall Kirk, Keith Bostic, Michael J Karels, and John Quarterman. The Design and Implementation of the 4.4BSD Operating System. Reading, Mass. : Addison-Wesley, 1996. ISBN 0-201-54979-4

  (глава 2 этой книги доступна онлайн как часть Проекта документирования FreeBSD, и глава 9 доступна здесь.)

- Marshall Kirk McKusick, George V. Neville-Neil The Design and Implementation of the FreeBSD Operating System. Boston, Mass. : Addison-Wesley, 2004. ISBN 0-201-70245-2

- Stevens, W. Richard. TCP/IP Illustrated, Volume 1: The Protocols. Reading, Mass. : Addison-Wesley, 1996. ISBN 0-201-63346-9

- Schimmel, Curt. Unix Systems for Modern Architectures. Reading, Mass. : Addison-Wesley, 1994. ISBN 0-201-63338-8

- Stevens, W. Richard. TCP/IP Illustrated, Volume 3: TCP for Transactions, HTTP, NNTP and the UNIX Domain Protocols. Reading, Mass. : Addison-Wesley, 1996. ISBN 0-201-63495-3

- Vahalia, Uresh. UNIX Internals -- The New Frontiers. Prentice Hall, 1996. ISBN 0-13-101908-2

- Wright, Gary R. and W. Richard Stevens. TCP/IP Illustrated, Volume 2: The Implementation. Reading, Mass. : Addison-Wesley, 1995. ISBN 0-201-63354-X

## B.6. Безопасность

- Cheswick, William R. and Steven M. Bellovin. Firewalls and Internet Security: Repelling the Wily Hacker. Reading, Mass. : Addison-Wesley, 1995. ISBN 0-201-63357-4

- Garfinkel, Simson and Gene Spafford. Practical UNIX & Internet Security. 2nd Ed. O'Reilly & Associates, Inc., 1996. ISBN 1-56592-148-8

- Garfinkel, Simson. PGP Pretty Good Privacy O'Reilly & Associates, Inc., 1995. ISBN 1-56592-098-8

## B.7. Оборудование

- Anderson, Don and Tom Shanley. Pentium Processor System Architecture. 2nd Ed. Reading, Mass. : Addison-Wesley, 1995. ISBN 0-201-40992-5

- Ferraro, Richard F. Programmer's Guide to the EGA, VGA, and Super VGA Cards. 3rd ed. Reading, Mass. : Addison-Wesley, 1995. ISBN 0-201-62490-7

- Intel Corporation publishes documentation on their CPUs, chipsets and standards on their developer web site, usually as PDF files.

- Shanley, Tom. 80486 System Architecture. 3rd ed. Reading, Mass. : Addison-Wesley, 1995. ISBN 0-201-40994-1

- Shanley, Tom. ISA System Architecture. 3rd ed. Reading, Mass. : Addison-Wesley, 1995. ISBN 0-201-40996-8

- Shanley, Tom. PCI System Architecture. 4th ed. Reading, Mass. : Addison-Wesley, 1999. ISBN 0-201-30974-2

- Van Gilluwe, Frank. The Undocumented PC, 2nd Ed. Reading, Mass: Addison-Wesley Pub. Co., 1996. ISBN 0-201-47950-8

- Messmer, Hans-Peter. The Indispensable PC Hardware Book, 4th Ed. Reading, Mass: Addison-Wesley Pub. Co., 2002. ISBN 0-201-59616-4

## B.8. История UNIX

- Lion, John Lion's Commentary on UNIX, 6th Ed. With Source Code. ITP Media Group, 1996. ISBN 1573980137

- Raymond, Eric S. The New Hacker's Dictionary, 3rd edition. MIT Press, 1996. ISBN 0-262-68092-0. Also known as the Jargon File

- Salus, Peter H. A quarter century of UNIX. Addison-Wesley Publishing Company, Inc., 1994. ISBN 0-201-54777-5

- Simon Garfinkel, Daniel Weise, Steven Strassmann. The UNIX-HATERS Handbook. IDG Books Worldwide, Inc., 1994. ISBN 1-56884-203-1. Не печаталась, доступна по адресу online.

- Don Libes, Sandy Ressler Life with UNIX -- special edition. Prentice-Hall, Inc., 1989. ISBN 0-13-536657-7

- The BSD family tree. http://www.FreeBSD.org/cgi/cvsweb.cgi/src/share/misc/bsd-family-tree или `/usr/share/misc/bsd-family-tree` на компьютере FreeBSD.

- The BSD Release Announcements collection. 1997. http://www.de.FreeBSD.org/de/ftp/releases/

- Networked Computer Science Technical Reports Library. http://www.ncstrl.org/

- Old BSD releases from the Computer Systems Research group (CSRG). http://www.mckusick.com/csrg/: В набор на 4CD включены все версии BSD от 1BSD до 4.4BSD и 4.4BSD-Lite2 (но к сожалению нет 2.11BSD). На последнем диске находится также последняя версия исходных текстов и файлы SCCS.

## B.9. Прочие издания

- The C/C++ Users Journal. R&D Publications Inc. ISSN 1075-2838

- Sys Admin -- The Journal for UNIX System Administrators Miller Freeman, Inc., ISSN 1061-2688

- freeX -- Das Magazin für Linux - BSD - UNIX (на немецком) Computer- und Literaturverlag GmbH, ISSN 1436-7033

# Приложение C. Ресурсы в интернет

Высокая скорость прогресса FreeBSD делает непрактичным использование печатных изданий для информирования о последних разработках. Электронные ресурсы это лучший, а зачастую и единственный способ информирования о новых возможностях. Поскольку FreeBSD основывается на усилиях добровольцев, сообщество пользователей само по себе зачастую выполняет роль ''службы технической поддержки'', а электронная почта и новости USENET это наиболее эффективный способ обращения к этому сообществу.

Наиболее важная контактная информация сообщества пользователей FreeBSD показана ниже. Если вам известно о других ресурсах, не упомянутых здесь, пожалуйста отправьте информацию о них в Список рассылки Проекта Документации FreeBSD, чтобы мы могли включить в этот документ.

## C.1. Списки рассылки

Хотя многие участники разработки FreeBSD читают USENET, мы не можем всегда гарантировать, что ответим на ваши вопросы в краткий срок (или вообще), если вы отправите их только в группы `comp.unix.bsd.freebsd.*`. Вопросы, отправленные в соответствующий список рассылки, достигнут и нас и обширной аудитории FreeBSD, что несомненно гарантирует лучшую (или как минимум более быструю) поддержку.

> Внимание: Все сообщения в приведенные ниже списки рассылки должны быть составлены только на английском языке.

Описание каждой рассылки дано в конце этого документа. Пожалуйста, прочтите описание перед подпиской или отправкой почты в любой из списков. Большинство наших подписчиков получают многие сотни относящихся к FreeBSD сообщений каждый день, и определяя правила использования рассылок мы стремимся удержать высокое соотношение ''сигнал к шуму''. При меньшем соотношении списки рассылки перестанут быть эффективной средой общения участников проекта.

Если вы сомневаетесь, в какой именно список рассылки нужно направить вопрос, то прочтите статью Как эффективно использовать список рассылки FreeBSD-questions.

Перед тем, как направлять сообщение в любой список рассылки, пожалуйста, выясните, как лучше всего их использовать, например, как избежать частого повторения одних и тех же дискуссий, прочитав документ Часто задаваемые вопросы о списках рассылки (FAQ).

Архивы поддерживаются для всех списков рассылки и поиск по ним организован на WWW сервере FreeBSD. Поиск в архиве по ключевым словам дает отличный способ получения ответов на часто задаваемые вопросы и должен быть выполнен перед отправкой вопроса.

### C.1.1. Списки рассылки

Общие списки: Ниже представлены общие списки рассылки, к которым каждый может (и приглашается) присоединиться:

Список | Назначение
--- | ---
cvs-all | Изменения, вносимые в дерево исходных текстов FreeBSD
freebsd-advocacy | В защиту FreeBSD
freebsd-announce | Важные события и вехи проекта
freebsd-arch | Обсуждения архитектуры и дизайна системы
freebsd-bugbusters | Обсуждения, относящиеся к поддержке базы данных сообщений о проблемах FreeBSD и соответствующим инструментам
freebsd-bugs | Сообщения о проблемах
freebsd-chat | Не-технические темы, относящиеся к сообществу FreeBSD
freebsd-current | Обсуждения, относящиеся к использованию FreeBSD-CURRENT
freebsd-isp | Вопросы использования FreeBSD провайдерами
freebsd-jobs | Вакансии и резюме, относящиеся к FreeBSD, с полной и частичной занятостью
freebsd-policy | Публикация правил FreeBSD Core team. Только для чтения, малое количество сообщений
freebsd-questions | Вопросы пользователей и техническая поддержка
freebsd-security-notifications | Уведомления безопасности
freebsd-stable | Обсуждения, относящиеся к использованию FreeBSD-STABLE
freebsd-test | Рассылка для отправки тестовых сообщений (вместо обычных списков рассылки

Технические списки: Следующие списки предназначены для технических обсуждений. Вам необходимо внимательно прочитать описание перед подпиской или отправкой почты в один из этих списков, поскольку они предназначены для использования внутри проекта.

Список | Назначение
--- | ---
freebsd-acpi | Разработка ACPI и системы управления энергопотреблением
freebsd-afs | Портирование AFS на FreeBSD
freebsd-aic7xxx | Разработка драйверов для Adaptec AIC 7xxx
freebsd-alpha | Портирование FreeBSD на Alpha
freebsd-amd64 | Портирование FreeBSD на системы AMD64
freebsd-apache | Обсуждение портов, относящихся к Apache
freebsd-arm | Портирование FreeBSD на процессоры ARM®
freebsd-atm | Использование ATM сетей с FreeBSD
freebsd-audit | Проект аудита исходных текстов
freebsd-binup | Дизайн и разработка системы бинарных обновлений
freebsd-bluetooth | Использование технологии Bluetooth во FreeBSD
freebsd-cluster | Использование FreeBSD в кластерах
freebsd-cvsweb | Поддержка CVSweb
freebsd-database | Обсуждение использования и разработки баз данных под FreeBSD
freebsd-doc | Создание относящихся к FreeBSD документов
freebsd-drivers | Создание драйверов устройств для FreeBSD
freebsd-eclipse | Использование в FreeBSD Eclipse IDE, а также приложений и портов для нее.
freebsd-eol | Взаимная поддержка относящегося к FreeBSD программного обеспечения, более не поддерживаемого проектом FreeBSD.
freebsd-embedded | Использование FreeBSD во встроенных системах
freebsd-emulation | Эмуляция других систем, таких как Linux/MS-DOS/Windows
freebsd-firewire | Техническое обсуждение FreeBSD FireWire® (iLink, IEEE 1394)
freebsd-fs | Файловые системы
freebsd-geom | Относящиеся к GEOM обсуждения и реализации
freebsd-gnome | Портирование GNOME и приложений GNOME
freebsd-hackers | Общее техническое обсуждение
freebsd-hardware | Общее обсуждение оборудования для FreeBSD
freebsd-i18n | Интернационализация FreeBSD
freebsd-ia32 | FreeBSD на платформе IA-32 (Intel x86)
freebsd-ia64 | Портирование FreeBSD на будущие системы Intel IA64
freebsd-ipfw | Технические обсуждения, относящиеся к переработке кода IP брандмауэра
freebsd-isdn | Разработчики ISDN
freebsd-jail | Обсуждение jail(8)
freebsd-java | Разработчики Java и те, кто занимается переносом JDK на FreeBSD
freebsd-kde | Портирование KDE и приложений KDE
freebsd-lfs | Портирование LFS на FreeBSD
freebsd-libh | Второе поколение программы установки системы и пакетов
freebsd-mips | Портирование FreeBSD на MIPS®
freebsd-mobile | Обсуждение портативных компьютеров
freebsd-mozilla | Портирование Mozilla на FreeBSD
freebsd-multimedia | Мультимедиа приложения
freebsd-new-bus | Технические обсуждения архитектуры шины
freebsd-net | Обсуждения, относящиеся к сети и исходному тексту TCP/IP
freebsd-openoffice | Портирование OpenOffice.org и StarOffice на FreeBSD
freebsd-performance | Вопросы оптимизации производительности для быстрых/работающих под большой нагрузкой серверов
freebsd-perl | Поддержка различных портов, относящихся к Perl
freebsd-pf | Обсуждение брандмауэра на базе packet filter
freebsd-platforms | Относится к портам для платформ не-Intel архитектуры
freebsd-ports | Обсуждения Коллекции Портов
freebsd-ports-bugs | Обсуждения относящихся к портам ошибок/PR
freebsd-ppc | Портирование FreeBSD на PowerPC®
freebsd-proliant | Работа FreeBSD на серверной платформе HP ProLiant
freebsd-python | Вопросы, специфичные для использования Python во FreeBSD
freebsd-qa | Обсуждение гарантий качества (Quality Assurance), обычно перед релизом
freebsd-rc | Обсуждения, касающиеся системы `rc.d` и работы над ней
freebsd-realtime | Разработка расширений реального времени для FreeBSD
freebsd-scsi | Подсистема SCSI
freebsd-security | Сообщения безопасности, касающиеся FreeBSD
freebsd-small | Использование FreeBSD во встроенных приложениях (устарел; следует использовать freebsd-embedded)
freebsd-smp | Обсуждение [не]симметричной мультипроцессорной архитектуры
freebsd-sparc64 | Портирование FreeBSD на системы, основанные на Sparc®
freebsd-standards | Соответствие FreeBSD стандартам C99 и POSIX
freebsd-sun4v | Портирование FreeBSD на системы, основанные на UltraSPARC T1
freebsd-threads | Потоки в FreeBSD
freebsd-testing | Тестирование производительности и стабильности FreeBSD
freebsd-tokenring | Поддержка Token Ring в FreeBSD
freebsd-usb | Обсуждение поддержки USB в FreeBSD
freebsd-vuxml | Обсуждение инфраструктуры VuXML
freebsd-x11 | Сопровождение и поддержка X11 в FreeBSD

Ограниченные списки: Следующие списки рассылки предназначены для более специализированной (и более официальной) аудитории и вероятно не могут заинтересовать широкую публику. Вероятно хорошей идеей будет сначала наладить общение в технических списках рассылки перед присоединением к ограниченным спискам, так вы сможете освоить этику общения.

Список | Назначение
--- | ---
freebsd-hubs | Люди, поддерживающие зеркала (поддержка инфраструктуры)
freebsd-user-groups | Координация групп пользователей
freebsd-vendors | Координация поставщиков перед релизом
freebsd-www | Ответственные за www.FreeBSD.org

Дайджест рассылки: Все вышеприведенные списки доступны в формате дайджеста. После подписки на рассылку, вы можете изменить параметры дайджеста в разделе настроек учетной записи.

CVS рассылки: Следующие рассылки предназначены для людей, заинтересованных в просмотре сообщений об изменении в различных областях дерева исходных текстов. Это списки только для чтения и вы не должны отправлять туда почту.

Рассылка | Область исходного текста | Описание области исходного текста
--- | --- | ---
cvs-all | `/usr/(CVSROOT|doc|ports|projects|src)` | Все изменения в любой области дерева исходных текстов (надмножество других списков рассылки CVS)
cvs-doc | `/usr/(doc|www)` | Все изменения в дереве исходных текстов документации и Web-сервера
cvs-ports | `/usr/ports` | Все изменения в дереве портов
cvs-projects | `/usr/projects` | Все изменения в дереве проектов
cvs-src | `/usr/src` | Все изменения в дереве исходных текстов системы

### C.1.2. Как подписаться

Для подписки на рассылку, нажмите на название списка рассылки выше или воспользуйтесь ссылкой http://lists.FreeBSD.org/mailman/listinfo и нажмите на имя рассылки, которой вы заинтересовались. Страница списка рассылки содержит все необходимые инструкции по подписке.

Для отправки сообщения в выбранный список рассылки, отправьте письмо в `<`listname`@FreeBSD.org>`. Это письмо будет разослано участникам рассылки по всему миру.

Для отписки от рассылки, нажмите на ссылку, находящуюся внизу каждого письма, отправляемого через список рассылки. Возможна также отписка путем отправки письма на `<`listname`-unsubscribe@FreeBSD.org>`.

Напоминаем, что обсуждение в технических списках рассылки должно оставаться в рамках технической темы. Если вас интересует только получение важных анонсов, мы предлагаем подписаться на рассылку с небольшим трафиком freebsd-announce.

### C.1.3. Описание рассылок

Все списки рассылки FreeBSD имеют определенные основные правила, которых должен придерживаться каждый использующий их. Несоблюдение этих правил приведет к отправлению двух (2) предупреждений от FreeBSD Postmaster `<postmaster@FreeBSD.org>`, после которых, после третьего нарушения, подписчик будет удален из всех списков рассылки FreeBSD и дальнейшие его сообщения будут отфильтровываться. Мы сожалеем, что эти правила и меры вообще необходимы, но современный интернет это довольно суровая среда и многие его механизмы довольно слабы.

Основные правила:

- Тема любого сообщения должна соответствовать назначению списка рассылки, в который это сообщение отправляется. Например, если список рассылки посвящен техническим вопросам, сообщение должно быть техническим. Продолжающееся обсуждение вне темы, или флейм только понижают ценность рассылки для всех ее участников и поэтому не разрешаются. Для обсуждений вне какой-либо определенной темы необходимо использовать Список рассылки, посвящённый неформальным беседам о FreeBSD, специально для этого предназначенный.

- Ни одно сообщение не должно отправляться более чем в 2 рассылки, отправка сообщения в 2 рассылки должна выполняться только при наличии простой и очевидной причины для дублирования сообщения. В большинстве рассылок подписчикам уже приходит много избыточного материала, и за исключением редких случаев (скажем, ''-stable & -scsi''), на самом деле нет причины отправлять сообщение более чем в один список рассылки. Если сообщение отправлено вам так, что в поле `Cc` находятся несколько списков рассылки, необходимо урезать поле `Cc` перед отправкой ответа. Именно вы отвечаете за собственные сообщения, независимо от того, кто был автором исходного письма.

- Персональные нападки и профанация (в контексте аргументов) не разрешены, это относится и к пользователям, и к разработчикам. Грубые нарушения сетевой этики, такие как цитирование или пересылка личной переписки без специального на то разрешения, осуждаются но специальные меры в этом случае не принимаются. Однако, существует несколько специальных случаев, когда такие письма не отвечают назначению списка рассылки и, следовательно, могут повлечь отправку предупреждения (или исключение из списка рассылки).

- Реклама не-FreeBSD продуктов или сервисов строго запрещена и исключение из списка рассылки последует незамедлительно, если станет очевидным, что это спам.

Описания рассылок:

freebsd-acpi

  Разработка ACPI и системы управления энергопотреблением

freebsd-afs

  Andrew File System

  Этот список предназначен для обсуждения портирования и использования AFS от CMU/Transarc

freebsd-announce

  Важные события / вехи проекта

  Этот список рассылки предназначен для тех, кто интересуется только периодическими анонсами значительных событий FreeBSD. Сюда включаются анонсы снэпшотов и других релизов, а также новых возможностей FreeBSD. Рассылка может содержать призыв к добровольцам и т.п. Это строго модерируемый список рассылки с малым объемом трафика.

freebsd-arch

  Обсуждение архитектуры и дизайна системы

  Эта рассылка предназначена для обсуждения архитектуры FreeBSD. Сообщения в основном строго технические. Примеры подходящих тем:

  - Как изменить систему сборки для одновременной сборки нескольких по-разному настроенных систем.

  - Что необходимо исправить в VFS для включения слоев Heidemann.

  - Как необходимо изменить интерфейс драйверов устройств для использования одних и тех же драйверов на множестве шин и архитектур.

  - Как написать сетевой драйвер.

freebsd-audit

  Проект аудита исходных текстов

  Это список рассылки для проекта аудита исходных текстов FreeBSD. Хотя первоначально он предназначался для изменений, связанных с безопасностью, его назначение было расширено для пересмотра всех изменений кода.

  В эту рассылку отправляется большой объем исправлений, и она вероятно не представляет интереса для обычного пользователя FreeBSD. Обсуждения безопасности, не относящиеся к определенному изменению в коде, ведутся в freebsd-security. Разработчикам предлагается отправлять изменения в этот список рассылки для просмотра, особенно если эти изменения затрагивают части кода, ошибки в которых могут повлечь нарушение целостности системы.

freebsd-binup

  Проект бинарного обновления FreeBSD

  Этот список предназначен для обсуждений системы бинарного обновления системы, или binup. В этой рассылке обсуждаются вопросы дизайна, детали реализации, исправления, сообщения об ошибках, сообщения о статусе, запросы на расширение функциональности, протоколы коммитов, и все, что относится к binup.

freebsd-bluetooth

  Bluetooth во FreeBSD

  Это форум, где собираются пользователи Bluetooth во FreeBSD. Обсуждения касаются вопросов архитектуры, деталей реализации, патчей, сообщений об ошибках, состояния работы, запросов на добавление функций и всего, что относится к Bluetooth.

freebsd-bugbusters

  Координация усилий по обработке сообщений о проблемах

  Назначение этой рассылки в координации и предоставлении места для обсуждения для лиц, обслуживающих базу данных сообщений о проблемах (bugmeister, bugbusters) и для всех сторон, интересующихся базой данных PR. Эта рассылка не предназначена для обсуждения отдельных проблем, исправлений или PR.

freebsd-bugs

  Сообщения об ошибках

  Этот список рассылки предназначен для отправки сообщений об ошибках в FreeBSD. Когда это возможно, сообщения должны отправляться с использованием send-pr(1) или через WEB интерфейс к `send-pr`.

freebsd-chat

  Не-технические темы, относящиеся к сообществу FreeBSD

  В эту рассылку входят все темы, не подходящие для других рассылок, с не-технической, социальной информацией. Она включает обсуждения на темы: кто пьет слишком много кофе, где варят лучшее пиво, кто варит пиво в своем подвале, и так далее. Нерегулярные анонсы важных событий (такие как будущие встречи, свадьбы, дни рождения, новая работа и т.д.) могут быть опубликованы в технических рассылках, но ответы должны отправляться в -chat.

freebsd-core

  Команда FreeBSD core

  Это внутренний список рассылки, используемый членами core. Сообщения в эту рассылку могут быть отправлены по серьезной, имеющей отношение к FreeBSD причине, которая требует рассмотрения на самом высоком уровне.

freebsd-current

  Обсуждения, касающиеся использования FreeBSD-CURRENT

  Это список рассылки для пользователей FreeBSD-CURRENT. Он включает предупреждения о новых возможностях, вносимых в -CURRENT, влияющих на пользователей, и инструкции относительно действий, которые должны быть предприняты для поддержки -CURRENT. Всякий, работающий с ''CURRENT'', должен подписаться на эту рассылку. Это технический список рассылки, все сообщения должны быть строго техническими.

freebsd-cvsweb

  FreeBSD CVSweb Project

  Технические обсуждения использования, разработки и поддержки FreeBSD-CVSweb.

freebsd-doc

  Проект документирования

  Этот список рассылки предназначен для обсуждения вопросов и проектов, относящихся к созданию документации для FreeBSD. Члены этой рассылки все вместе обозначаются как ''The FreeBSD Documentation Project''. Это открытая рассылка; присоединяйтесь и участвуйте!

freebsd-drivers

  Создание драйверов устройств для FreeBSD

  Этот список рассылки предназначен для технических дискуссий, относящихся к написанию драйверов устройств для FreeBSD. Это наилучшее место для того, чтобы задать вопросы по форматам и протоколам общенияi (API) драйверов устройств с ядром FreeBSD.

freebsd-eclipse

  Список рассылки для пользователей системы Eclipse IDE под FreeBSD, а также ее приложений и портов.

  Этот список рассылки призван оказать помощь тем, кто выбирает, устанавливает, использует, разрабатывает и поддерживает работу Eclipse IDE под FreeBSD, а также портирует их под FreeBSD.

  Кроме того, в данном списке для общего блага пересекаются и обмениваются информацией сообщества Eclipse и FreeBSD.

  Хотя данный список предназначен главным образом для тех, кто использует Eclipse, в нем также можно обсуждать средства разработки приложений для FreeBSD при помощи среды Eclipse.

freebsd-embedded

  Использование FreeBSD во встроенных системах

  Этот список рассылки, предназначенный для технических обсуждений, рассматривает работу FreeBSD в особо стесненных условиях, в частности, во встроенных (embedded) системах. В данном случае встроенными считаются вычислительные устройства, отличные от настольных компьютеров и выполняющие, как правило, специализированные задачи. Примером могут служить смартфоны, сетевые устройства, такие как маршрутизаторы, коммутаторы и офисные АТС, телеметрические системы, КПК, кассовые терминалы и т.п.

freebsd-emulation

  Эмуляция других систем, таких как Linux/MS-DOS/Windows

  Этот список рассылки предназначен для обсуждения вопросов запуска и эксплуатации под FreeBSD программ, предназначенных для работы под другими операционными системами.

freebsd-eol

  Взаимная поддержка относящегося к FreeBSD программного обеспечения, более не поддерживаемого проектом FreeBSD.

  Этот список рассылки предназначен для интересующихся предоставлением или использованием взаимной поддержки относящегося к FreeBSD программного обеспечения, для которого проект FreeBSD более не предоставляет официальной поддержки (например, в виде сообщений безопасности или патчей).

freebsd-firewire

  FireWire (iLink, IEEE 1394)

  Это список рассылки, предназначенный для обсуждения дизайна и реализации подсистемы FireWire (также известной как IEEE 1394 или iLink) в FreeBSD. Соответствующие темы относятся к стандартам, устройствам шины и их протоколам, наборам плат/карт/чипов адаптера, а также архитектуре и реализации кода для их правильной поддержки.

freebsd-fs

  Файловые системы

  Обсуждения, относящиеся к файловым системам FreeBSD. Это технический список рассылки, предназначенный только для технических обсуждений.

freebsd-geom

  GEOM

  Обсуждения, относящиеся к GEOM и связанным с GEOM реализациям. Это технический список рассылки, предназначенный только для технических обсуждений.

freebsd-gnome

  GNOME

  Обсуждения, относящиеся к графической среде GNOME для системы FreeBSD. Это технический список рассылки, предназначенный только для технических обсуждений.

freebsd-ipfw

  IP брандмауэр

  Это форум для технических обсуждений, относящихся к перепроектированию кода межсетевого экрана IP во FreeBSD. Это технический список рассылки, предназначенный только для технических обсуждений.

freebsd-ia64

  Портирование FreeBSD на IA64

  Это технический список рассылки для тех, кто активно работает над портированием FreeBSD на платформу IA-64 от Intel, предназначенный для поднятия вопросов или обсуждения альтернативных решений. Те, кто интересуется обсуждаемыми проблемами, также приглашаются к участию в рассылке.

freebsd-isdn

  ISDN соединения

  Это список рассылки для обсуждения разработки поддержки ISDN для FreeBSD.

freebsd-java

  Разработка Java

  Этот список рассылки предназначен для обсуждения ключевых приложений Java для FreeBSD, а также портирования и поддержки JDK.

freebsd-jobs

  Предложение и поиск работы

  Это форум для публикации вакансий и резюме, относящихся к FreeBSD. Например, если вы ищете работу, относящеюся к FreeBSD, или у вас есть работа, связанная с FreeBSD, вы можете разместить соответствующую информацию именно здесь. Эта рассылка не предназначена для обсуждения общих вопросов о приеме на работу, поскольку форумы на соответствующие темы уже существуют на других сайтах.

  Имейте ввиду, что эта рассылка, как и другие рассылки `FreeBSD.org`, распространяется по всему миру. Поэтому вам необходимо чётко указать свое местоположение и область, с которой возможны телекоммуникации или помощь в перемещении.

  Письма должны быть составлены только в открытых форматах -- предпочтителен чистый текст, но Portable Document Format (PDF), HTML, и некоторые другие форматы могут быть прочитаны многими. Закрытые форматы, такие как Microsoft Word (`.doc`) будут отброшены сервером почтовой рассылки.

freebsd-kde

  KDE

  Обсуждения, относящиеся к KDE в системах FreeBSD. Это технический список рассылки, предназначенный только для технических обсуждений.

freebsd-hackers

  Технические обсуждения

  Это форум для технических обсуждений, относящихся к FreeBSD. Это в основном технический список рассылки. Он предназначен для тех, кто активно работает над FreeBSD, и служит для поднятия вопросов или обсуждения альтернативных решений. Те, кто интересуется обсуждаемыми вопросами, также приглашаются к участию в обсуждении. Это технический список рассылки, предназначенный только для технических обсуждений.

freebsd-hardware

  Общее обсуждение оборудования FreeBSD

  Общее обсуждение типов оборудования, на котором работает FreeBSD, различных проблем и предложений относительно того, какое оборудование можно покупать а какое нет.

freebsd-hubs

  Сайты зеркал

  Анонсы и обсуждения для поддерживающих зеркала FreeBSD.

freebsd-isp

  Вопросы использования FreeBSD провайдерами

  Этот список рассылки предназначен для обсуждения тем, имеющих значение для провайдеров, использующих FreeBSD. Это технический список рассылки, предназначенный только для технических обсуждений.

freebsd-openoffice

  OpenOffice.org

  Обсуждения, относящиеся к портированию и поддержке OpenOffice.org и StarOffice.

freebsd-performance

  Обсуждения оптимизации или повышения скорости FreeBSD

  Этот список рассылки существует как место для обсуждения тем, имеющих отношение к производительности FreeBSD, хакерами, администраторами, и/или заинтересованными сторонами. Приемлемые темы включают обсуждения установок FreeBSD, которые находятся под высокой нагрузкой и сталкиваются с проблемами производительности, или преодоление ограничений FreeBSD. Заинтересованным сторонам, собирающимся работать над улучшением производительности FreeBSD, настоятельно рекомендуется подписаться на эту рассылку. Это техническая рассылка, идеально подходящая для пользователей, хакеров или администраторов, заинтересованных в скорости, стабильности и расширяемости FreeBSD. Это не рассылка вопросов-и-ответов, заменяющая чтение документации, а место, где можно внести свой вклад или получить информацию по еще незатронутой теме, связанной с производительностью.

freebsd-pf

  Обсуждение брандмауэра на базе packet filter

  Обсуждения, касающиеся работы пакетного фильтра pf под FreeBSD. Допускаются как вопросы пользователей, так и технические дискуссии. Помимо этого, в данном списке уместно обсуждать инфраструктуру ALTQ QoS.

freebsd-platforms

  Портирование на не-Intel платформы

  Кросс-платформенные вопросы FreeBSD, общее обсуждение и предложения для не-Intel портов FreeBSD. Это технический список рассылки, предназначенный только для технических обсуждений.

freebsd-policy

  Правила core team

  Это рассылка с малым количеством сообщений, только для чтения, предназначенная для публикации решений FreeBSD Core Team.

freebsd-ports

  Обсуждения ''ports''

  Обсуждения, относящиеся к ''коллекции портов'' FreeBSD, (`/usr/ports`), инфраструктуры портов и общих усилий по координации портов. Это технический список рассылки, предназначенный только для технических обсуждений.

freebsd-ports-bugs

  Обсуждение проблем в ''ports''

  Обсуждения, относящиеся к сообщениям о проблемах для ''коллекции портов'' FreeBSD (`/usr/ports`), предлагаемых портов, или изменений к портам. Это технический список рассылки, предназначенный только для технических обсуждений.

freebsd-proliant

  Работа FreeBSD на серверной платформе HP ProLiant

  Этот список используется для обсуждения технических аспектов использования FreeBSD на серверах HP ProLiant, в том числе для обсуждения специфичных для ProLiant драйверов, управляющего ПО, систем конфигурации и обновлений BIOS. В частности, это основное место для обсуждения модулей hpasmd, hpasmcli и hpacucli.

freebsd-python

  Python во FreeBSD

  Этот список рассылки посвящён обсуждениям, связанным с улучшением поддержки Python во FreeBSD. Это технический список рассылки. Он предназначен тем, кто работает над портированием во FreeBSD языка Python, модулей сторонних разработчиков для него и Zope. К участию приглашаются также все, кому интересны технические вопросы.

freebsd-questions

  Вопросы пользователей

  Это список рассылки по вопросам о FreeBSD. Вы не должны отправлять вопросы ''как сделать'' в технические рассылки, если только не уверены, что ваш вопрос чисто технический.

freebsd-scsi

  Подсистема SCSI

  Это список рассылки для тех, кто работает над подсистемой SCSI для FreeBSD. Это технический список рассылки, предназначенный только для технических обсуждений.

freebsd-security

  Вопросы безопасности

  Вопросы безопасности FreeBSD (DES, Kerberos, известные проблемы безопасности и исправления, и т.п.). Это технический список рассылки, предназначенный только для технических обсуждений. Обратите внимание, что это не рассылка вопросов-и-ответов, но дополнения в FAQ (И вопрос И ответ) приветствуются.

freebsd-security-notifications

  Уведомления безопасности

  Уведомления о проблемах безопасности FreeBSD и исправления. Эта рассылка не предназначена для обсуждений. Для обсуждения предназначена рассылка FreeBSD-security.

freebsd-small

  Использование FreeBSD во встроенных приложениях

  В этой рассылке обсуждаются темы, связанные с необычно малыми и встроенными установками FreeBSD. Это технический список рассылки, предназначенный только для технических обсуждений.

  > Замечание: Этот список рассылки устарел; следует использовать freebsd-embedded.

freebsd-stable

  Обсуждения, касающиеся использования FreeBSD-STABLE

  Этот список рассылки предназначен для пользователей FreeBSD-STABLE. Он включает предупреждения о новых возможностях, добавляемых в -STABLE, и влияющих на пользователей, и инструкции по действиям, которые необходимы для поддержки системы в состоянии -STABLE. Всякий, использующий ''STABLE'', должен подписаться на эту рассылку. Это технический список рассылки, предназначенный только для технических обсуждений.

freebsd-standards

  Соответствие C99 и POSIX

  Это форум для технических обсуждений, относящихся к соответствию FreeBSD стандартам C99 и POSIX.

freebsd-usb

  Обсуждение поддержки USB в FreeBSD

  Это форум для технических обсуждений, относящихся к поддержке в FreeBSD устройств с интерфейсом USB.

freebsd-user-groups

  Список координации групп пользователей

  Этот список рассылки предназначен для обсуждения вопросов координаторами каждой группы пользователей и назначенным членом Core Team. Обсуждения в этой рассылке ограничены темой встреч и координацией проектов, относящихся к группам пользователей.

freebsd-vendors

  Поставщики

  Обсуждения, относящиеся к координации между FreeBSD Project и поставщиками программного и аппаратного обеспечения для FreeBSD.

### C.1.4. Фильтрация списков рассылки

Списки рассылки FreeBSD фильтруются различными способами для предотвращения распространения спама, вирусов, и другой нежелательной почты. Действия по фильтрации, описанные в этом разделе, не включают всех используемых для фильтрации списков рассылки проекта действий.

Только определенные типы вложений разрешены в списках рассылки. Все вложения с типами MIME содержимого, не входящие в список ниже, будут вырезаться перед тем, как письмо будет отправлено в список рассылки.

- application/octet-stream

- application/pdf

- application/pgp-signature

- application/x-pkcs7-signature

- message/rfc822

- multipart/alternative

- multipart/related

- multipart/signed

- text/html

- text/plain

- text/x-diff

- text/x-patch

> Замечание: Некоторые из списков рассылки могут пропускать вложения других типов MIME, но список выше применим к большинству рассылок.

Если письмо содержит как HTML, так и только текстовую версию, версия HTML будет удалена. Если письмо содержит только HTML версию, она будет конвертирована в простой текст.

## C.2. Новостные группы Usenet

В дополнение к двум относящимся к FreeBSD группам новостей, существуют множество других, где обсуждается FreeBSD или куда помещается другая информация, относящаяся к пользователям FreeBSD. Архивы с поиском по ключевому слову доступны для некоторых из этих новостных групп благодаря Warren Toomey `<wkt@cs.adfa.edu.au>`.

### C.2.1. Относящиеся к BSD новостные группы

- comp.unix.bsd.freebsd.announce

- comp.unix.bsd.freebsd.misc

- de.comp.os.unix.bsd (German)

- fr.comp.os.bsd (French)

- it.comp.os.freebsd (Italian)

- tw.bbs.comp.386bsd (Traditional Chinese)

### C.2.2. Другие интересные UNIX новостные группы

- comp.unix

- comp.unix.questions

- comp.unix.admin

- comp.unix.programmer

- comp.unix.shell

- comp.unix.user-friendly

- comp.security.unix

- comp.sources.unix

- comp.unix.advocacy

- comp.unix.misc

- comp.bugs.4bsd

- comp.bugs.4bsd.ucb-fixes

- comp.unix.bsd

### C.2.3. X Window System

- comp.windows.x.i386unix

- comp.windows.x

- comp.windows.x.apps

- comp.windows.x.announce

- comp.windows.x.intrinsics

- comp.windows.x.motif

- comp.windows.x.pex

- comp.emulators.ms-windows.wine

## C.3. Серверы World Wide Web

Центральные серверы, Armenia, Австралия, Австрия, Аргентина, Бельгия, Болгария, Бразилия, Великобритания, Венгрия, Германия, Гонконг, Греция, Дания, Индонезия, Исландия, Испания, Италия, Канада, Китай, Корея, Коста Рика, Кувейт, Кыргызстан, Латвия, Литва, Нидерланды, Норвегия, Португалия, Россия, Румыния, Сан Марино, Сингапур, Словацкая Республика, Словения, США, Тайвань, Тайланд, Турция, Украина, Филиппины, Финляндия, Франция, Чехия, Швейцария, Швеция, Эстония, Южная Африка, Япония.

(as of 2010/11/13 13:50:55 UTC)

- Центральные серверы

  - http://www.FreeBSD.org/

- Armenia

  - http://www1.am.FreeBSD.org/ (IPv6)

- Австралия

  - http://www.au.FreeBSD.org/

  - http://www2.au.FreeBSD.org/

- Австрия

  - http://www.at.FreeBSD.org/ (IPv6)

  - http://www2.at.FreeBSD.org/ (IPv6)

- Аргентина

  - http://www.ar.FreeBSD.org/

- Бельгия

  - http://freebsd.unixtech.be/

- Болгария

  - http://www.bg.FreeBSD.org/

  - http://www2.bg.FreeBSD.org/

- Бразилия

  - http://www.br.FreeBSD.org/ (IPv6)

  - http://www2.br.FreeBSD.org/www.freebsd.org/

  - http://www3.br.FreeBSD.org/

- Великобритания

  - http://www1.uk.FreeBSD.org/

  - http://www3.uk.FreeBSD.org/

- Венгрия

  - http://www.hu.FreeBSD.org/

  - http://www2.hu.FreeBSD.org/

- Германия

  - http://www.de.FreeBSD.org/

- Гонконг

  - http://www.hk.FreeBSD.org/

- Греция

  - http://www.gr.FreeBSD.org/

- Дания

  - http://www.dk.FreeBSD.org/ (IPv6)

  - http://www3.dk.FreeBSD.org/

- Индонезия

  - http://www.id.FreeBSD.org/

- Исландия

  - http://www.is.FreeBSD.org/

- Испания

  - http://www.es.FreeBSD.org/

  - http://www2.es.FreeBSD.org/

  - http://www3.es.FreeBSD.org/

- Италия

  - http://www.it.FreeBSD.org/

  - http://www.gufi.org/mirrors/www.freebsd.org/data/

- Канада

  - http://www.ca.FreeBSD.org/

  - http://www2.ca.FreeBSD.org/

- Китай

  - http://www.cn.FreeBSD.org/

- Корея

  - http://www.kr.FreeBSD.org/

  - http://www2.kr.FreeBSD.org/

- Коста Рика

  - http://www1.cr.FreeBSD.org/

- Кувейт

  - http://www.kw.FreeBSD.org/

- Кыргызстан

  - http://www.kg.FreeBSD.org/

- Латвия

  - http://www.lv.FreeBSD.org/

  - http://www2.lv.FreeBSD.org/

- Литва

  - http://www.lt.FreeBSD.org/

- Нидерланды

  - http://www.nl.FreeBSD.org/

  - http://www2.nl.FreeBSD.org/

- Норвегия

  - http://www.no.FreeBSD.org/

- Португалия

  - http://www.pt.FreeBSD.org/

  - http://www1.pt.FreeBSD.org/

  - http://www4.pt.FreeBSD.org/

  - http://www5.pt.FreeBSD.org/

- Россия

  - http://www.ru.FreeBSD.org/

  - http://www2.ru.FreeBSD.org/

  - http://www3.ru.FreeBSD.org/

  - http://www4.ru.FreeBSD.org/

  - http://www5.ru.FreeBSD.org/

- Румыния

  - http://www.ro.FreeBSD.org/

  - http://www1.ro.FreeBSD.org/

  - http://www2.ro.FreeBSD.org/

  - http://www3.ro.FreeBSD.org/

- Сан Марино

  - http://www.sm.FreeBSD.org/

- Сингапур

  - http://www2.sg.FreeBSD.org/

- Словацкая Республика

  - http://www.sk.FreeBSD.org/

- Словения

  - http://www.si.FreeBSD.org/

  - http://www2.si.FreeBSD.org/

- США

  - http://www2.us.FreeBSD.org/

  - http://www4.us.FreeBSD.org/ (IPv6)

  - http://www5.us.FreeBSD.org/ (IPv6)

- Тайвань

  - http://www.tw.FreeBSD.org/ (IPv6)

  - http://www2.tw.FreeBSD.org/

  - http://www3.tw.FreeBSD.org/

  - http://www4.tw.FreeBSD.org/

  - http://www5.tw.FreeBSD.org/ (IPv6)

  - http://www6.tw.FreeBSD.org/

  - http://www7.tw.FreeBSD.org/

- Тайланд

  - http://www.th.FreeBSD.org/

- Турция

  - http://www.tr.FreeBSD.org/

  - http://www2.tr.FreeBSD.org/

  - http://www3.tr.FreeBSD.org/ (IPv6)

- Украина

  - http://www.ua.FreeBSD.org/

  - http://www2.ua.FreeBSD.org/

  - http://www5.ua.FreeBSD.org/

  - http://www4.ua.FreeBSD.org/

- Филиппины

  - http://www.FreeBSD.org.ph/

- Финляндия

  - http://www.fi.FreeBSD.org/

  - http://www2.fi.FreeBSD.org/

- Франция

  - http://www.fr.FreeBSD.org/

  - http://www1.fr.FreeBSD.org/

- Чехия

  - http://www.cz.FreeBSD.org/ (IPv6)

- Швейцария

  - http://www.ch.FreeBSD.org/

  - http://www2.ch.FreeBSD.org/

- Швеция

  - http://www.se.FreeBSD.org/

  - http://www2.se.FreeBSD.org/

- Эстония

  - http://www.ee.FreeBSD.org/

- Южная Африка

  - http://www.za.FreeBSD.org/

  - http://www2.za.FreeBSD.org/

- Япония

  - http://www.jp.FreeBSD.org/www.FreeBSD.org/ (IPv6)

## C.4. Адреса Email

Следующие группы пользователей предоставляют для своих участников почтовые адреса. Приведенные в списке администраторы оставляют за собой право удалить адреса при любом злоупотреблении.

Домен | Возможности | Группа пользователей | Администратор
--- | --- | --- | ---
ukug.uk.FreeBSD.org | Только пересылка | `<freebsd-users@uk.FreeBSD.org>` | Lee Johnston `<lee@uk.FreeBSD.org>`

## C.5. Shell доступ

Следующие группы пользователей предоставляют shell доступ для тех, кто активно поддерживает проект FreeBSD. Приведенные в списке администраторы оставляют за собой право закрыть учетную запись при любом злоупотреблении.

Хост | Доступ | Возможности | Администратор
--- | --- | --- | ---
dogma.freebsd-uk.eu.org | Telnet/FTP/SSH | Email, место для сайта, анонимный FTP | Lee Johnston `<lee@uk.FreeBSD.org>`

# Приложение D. PGP ключи

В случае, если вам нужно проверить подпись или послать зашифрованное электронное письмо одному из офицеров или разработчиков, то для вашего удобства здесь представлено некоторое количество ключей. Полный список ключей пользователей `FreeBSD.org` доступен для скачивания с http://www.FreeBSD.org/doc/pgpkeyring.txt.

## D.1. Офицеры

### D.1.1. Группа Офицеров Безопасности `<security-officer@FreeBSD.org>`

    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

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    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
    KRrlaWusbYfqZn4BQsSpYw90evo=
    =BvhO
    -----END PGP PUBLIC KEY BLOCK-----

### D.1.2. Секретарь CORE `<core-secretary@FreeBSD.org>`

    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-----

### D.1.3. Секретарь Группы менеджеров дерева портов `<portmgr-secretary@FreeBSD.org>`

    pub   1024D/7414629C 2005-11-30
          Key fingerprint = D50C BA61 8DC6 C42E 4C05  BF9A 79F6 E071 7414 629C
    uid                  FreeBSD portmgr secretary <portmgr-secretary@FreeBSD.org>
    sub   2048g/80B696E6 2005-11-30

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    mQGiBEONy/ARBAC4Ke7ijFSAiNZ8eKGENunAPSCm5Q75nmJrc9QW3DKQydseMYn5
    kRPzybZ3IMTzIMkB4kydWoOFb5xlyQ2NLsf0nrn0Kc4DbnpmwFi+2Owv48XIoJ80
    4tTHkog+pC+3kMOmAbikOgHfT5DZCu0Vz4k343yg06uFB5RZkFDV3qdr6wCgp8ye
    cBFzt6Qnf7baiKC87mSy46ED/2Kw/sUT40JT57u5SL5rgrAt15Q/PdCbFlBX9N8f
    y0CA7KUL82ISxFwmuFESIi8zD4IOmx2ow4EBczVCVmbAw04GNKyVL4X3KdcZdLxr
    d5BEdu3WcEs9FfbHiJgpPonNQ7UHeaG/Oos0N/LZqGM5kjaopSjNX9QTZXnYtIeX
    v5WRA/9un7HooV6yVf/o6lhjpLg0Dgu/nGPwTVt6mz0dS2sg7FwuWwefnYMo1Hte
    YRJHhP8wR8MeRai5uwUHkn9OINTu2a1WSHxfjL0T8JGI2XWppqwg21llvBlJ9HDZ
    vlnpvG8vsD5+2HLvJe/tHQOXEaKqnlWGRt+6eeKLc2pTOeRrhbQ5RnJlZUJTRCBw
    b3J0bWdyIHNlY3JldGFyeSA8cG9ydG1nci1zZWNyZXRhcnlARnJlZUJTRC5vcmc+
    iGAEExECACAFAkONy/ACGwMGCwkIBwMCBBUCCAMEFgIDAQIeAQIXgAAKCRB59uBx
    dBRinOoSAJ9dmofaKia2PRYmFrJ6VRV1qMEDiACbB/A1Qwv2jl5ra+Q/G28nrR4N
    IJG5Ag0EQ43MFRAIALjm7U1vf218XrDDrO6ztZdMSoQfLnbqDB/RyNr6CnnFrgIa
    T4/hBABT7S9Hmb5rPiN3UOTDsgHUq7tCeGnf+9K8KA45KclMcayVhttyGlwAtO0k
    ZebxZEAlWAhl4ixfejAwKdrjGe66b2upVFEmR6W7GhPitJDyWKK4/57fe3tSEs3y
    C2iJEbFpzYnVGK4DPUEsbSQ0Gv+COS1ql7QQW7H09dWt443r125I1Viv3nrIXlpm
    R5KFS0MvQ4bZyyAo4k2t0BxmAXNyxLh+1HZe5bh3dkk1XbJlooNwfr+WhqSlLsTG
    Qsj1/9HmjVMWyzH6tA5tZ42Fu1ZGTA6Dnc7BBLMAAwUH/jt/r2iJDiKFpjay4DII
    CXeKrKUP+mzYQJGJXX+Mls+TjDLFpm0Qng/wUCjZH8+GQStKSiaY7Lqnt1V0aKpw
    74CznHzgu4+ve9QG1+O5ald61Yy7dPGH+9Adr3jYJzdMhojjzPSKxIuDkHYOvjka
    /VGPtYDBuCaVPGDHGvWT4YZiVvpDg/zBucCAWF55WKphZXh7v7ZPvdfCj6DeZ+wQ
    BF10d9HXlWulitc+27gQiBhA2JFXG2p6Qg6Zj1E4AUdK5Hpjx+HgqGATq3GqzyQd
    UxvhR6VoV1OjmQvz1paLT3V0ch3mvRNiMd/oNJsHCSL9yhmtonSaprKG51OboDbV
    OFqISQQYEQIACQUCQ43MFQIbDAAKCRB59uBxdBRinHoLAKCAgS3CpgdsRmMHDhFa
    4qis7hd7WACeO40ZPvVi2vJpDK/1tM7SOVDPY44=
    =yfPY
    -----END PGP PUBLIC KEY BLOCK-----

## D.2. Члены Core

### D.2.1. John Baldwin `<jhb@FreeBSD.org>`

    pub  1024R/C10A874D 1999-01-13 John Baldwin <jbaldwin@weather.com>
         Key fingerprint = 43 33 1D 37 72 B1 EF 5B  9B 5F 39 F8 BD C1 7C B5
    uid                            John Baldwin <john@baldwin.cx>
    uid                            John Baldwin <jhb@FreeBSD.org>
    uid                            John Baldwin <jobaldwi@vt.edu>

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    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
    =BVS/
    -----END PGP PUBLIC KEY BLOCK-----

### D.2.2. Konstantin Belousov `<kib@FreeBSD.org>`

    pub   1024D/DD4C6F88 2004-07-29
          Key fingerprint = 39DA E615 A45C 111D 777B  3AD0 0B7F 8C04 DD4C 6F88
    uid                  Konstantin Belousov <kib@freebsd.org>
    uid                  Konstantin Belousov <konstantin.belousov@zoral.com.ua>
    uid                  Kostik Belousov <kostikbel@ukr.net>
    uid                  Kostik Belousov <kostikbel@gmail.com>
    sub   2048g/18488597 2004-07-29

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    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
    CQ==
    =EJ3p
    -----END PGP PUBLIC KEY BLOCK-----

### D.2.3. Wilko Bulte `<wilko@FreeBSD.org>`

    pub   1024D/186B8DBD 2006-07-29
          Key fingerprint = 07C2 6CB3 9C18 D290 6C5F  8879 CF83 EC86 186B 8DBD
    uid                  Wilko Bulte (wilko@FreeBSD.org) <wilko@FreeBSD.org>
    sub   2048g/1C4683F1 2006-07-29

    -----BEGIN PGP PUBLIC KEY BLOCK-----
    Version: GnuPG v1.4.2 (FreeBSD)

    mQGiBETLtf8RBAD12xaszO99wnMaNtuoyE3dIfsv4ijnLmKeFwXXGGe40tf5lDu1
    0X1DrI4wX6emUgSTsuxgZh4OJOuCz/YOLwO1AqL0v8Emjxa1VicZmoQ2zjMPY1GD
    6rWOIvgRC+6M3LstE7h0N49uouNANFHAaAfCNxyWw2EvZxnqc85TMd1BcwCgnEOe
    lHdj9PehNMRSp2TkNpcS5SUEAOEw+rs/vMXeqXHP910nd4U5DmBxIaoA7ARIqAS5
    F+SvNtDxlNeeLSMY7l64kCgB/RO4NGYxMTPklFMAm4cr0ri8s6+v/Y4vdoWsDluW
    MbzKsxBHVmPxr9WEU9iZxexbSlDdeJ2l19xgty4Jp3xPJ0iSo8Tip8w00kSN9cN3
    ULs1BADKhXiy9B2tfDUAQCstSr/04ZB015u1CZEAMxOfIZ97Y1RjSTdAAshqB/sX
    coKlQ5Sanx5shV4xARen/8d1EftgIfX1s0hL2QhA9xCHdHob/9Ok8SbpMq+H3WDj
    VEqpf9dJieU/IFE4wLc1y5M61jw5kX5bqbXPWtIuCJqC0DB9qLQzV2lsa28gQnVs
    dGUgKHdpbGtvQEZyZWVCU0Qub3JnKSA8d2lsa29ARnJlZUJTRC5vcmc+iGEEExEC
    ACEFAkTLtf8CGwMHCwkIBwMCAQQVAggDBBYCAwECHgECF4AACgkQz4Pshhhrjb07
    2gCfb5LcR2MiNHfyP2FEgQ2NphUkXDcAnREV1tDLlJy7KxOlub01Px8NhNkfiJwE
    EAECAAYFAkTLuj8ACgkQ/KbBSP+K4wXTDwQAjdsoW8icjSXo/hl8OBEeQfQCPtuu
    0MU4hJM4TRf6QCHXxtJPpMgGGqp6HbMEwmxO58yhKOLCZk5Xyo8rsVJG23pQvGqW
    UmphE6+9e8RuwneZiJ/yvbn7cOaS9EuUIHnIZnvNYTqLboIG1XaYwq8YqwNhsHVb
    8H1Jvx9fVSo9RGq5Ag0ERMu2DRAIANuJ6ZjYQnDhZFSVColje5oXGEmn3BBIeyLo
    TjzbmLo41iPlPPedLnnG7bGcWlwb8Y6CvsniC2+9Tf79O8rpGglQZQFAKS4qSToA
    CMWBlKPF2yaCLOlKezzn5Xo3D61WYs3z74ak+CKznqdFDkXYU7c428XprqqLnuzk
    jUQyfrNOCg9jjODB6eXVS0nkYlYhsfBe9Mh3xmaf8QGocH01dCaXNJASKbSgUtWJ
    aD0fXWexf6p04DX/84359mtOquZe4NCEy/o2RpKoHxaN8cggO3NUfsLkDBODQ1vr
    RS/H2sixVLbfNPx4XzIYc525ISyGGk1WJ0hxUPDaJeMtlUVE2HMAAwUH/AuwxkpX
    QT49Q3+kZf7hHcvR5fzaRKUcK/lIdPAhJBTZZQjZxH5Qo1MfDftizkIg4O9FcN3w
    eR7AKVhjVGLPna10Tb7PuNByKehsCMJM089OTJNEwRKu5AzpgE+pvkBeKTWwoGUE
    7hkaunpFXGv8TglO25G1hxKgryB3CBu6n4jN4pnlUtwBBQ6jTC+YRd5zeCiDJYvY
    R89ibrdmvFsI6Cy7K0iSFBFaJREOakXPTdmcWSxC71MMuefPrUhMsys0SN/EPd3g
    n/LDvcBtismvo8FAUKTHPlJhvXM87V7sDfCmtzG79NzlwjJto4pJoHyJg57T3kJy
    cQ2qe/WZTvl9OFeISQQYEQIACQUCRMu2DQIbDAAKCRDPg+yGGGuNvdVZAJsErSAN
    uN92IOQQttYydXNGTCUC4gCeOaQSjL1nW1ZwEJt2HuwEJ8LI8Bk=
    =RrPJ
    -----END PGP PUBLIC KEY BLOCK-----

### D.2.4. Brooks Davis `<brooks@FreeBSD.org>`

    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-----

### D.2.5. Warner Losh `<imp@FreeBSD.org>`

    pub   1024D/1EF6D8A7 2006-08-15
          Key fingerprint = AEC9 99C1 3212 1A86 93A6  A96B DB9F 6F12 1EF6 D8A7
    uid                  M. Warner Losh <imp@bsdimp.com>
    sub   4096g/34FC5B17 2006-08-15

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    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
    =b6Wd
    -----END PGP PUBLIC KEY BLOCK-----

### D.2.6. Pav Lucistnik `<pav@FreeBSD.org>`

    pub  1024D/C14EB282 2003-08-25 Pav Lucistnik <pav@FreeBSD.org>
         Key fingerprint = 2622 B7E3 7DA5 5C53 2079  855B 9ED7 583F C14E B282
    uid                            Pav Lucistnik <pav@oook.cz>
    sub  1024g/7287A947 2003-08-25

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    mQGiBD9KJ7ARBACp3MjNRANlRjkeOgYwxQ+wYbuWeAwY8/G6ZMJ3eVffTpVDU9/I
    P+d0StwlRTb7nenXOU0Ukvv3THskI/8D4qqeRKD822LFui30gxlv6uXficHJNYfl
    4zlicKl5TyfCbZTMoCjCBeL2Pgk4OPuYn4pudjlaSVYHM2n4dMWdLlH7zwCg0E8z
    LdrDYapLdgezr2TaMy/QVksD/jk6s5FBpESnRr1X6c7giSbTaXPPRw6/tvaKhPXf
    1SpToswyB315eXEKNKKPRwA2kiSPcNciUjLdiJFOdrTpRUy6XfOhgDBa4IpnMfwB
    bOj1w/0sjy0Mgzlj1ae1fVDFY/5dfzfqa8gcXCV9u+QRELtz29S0Yivk4BlqH8wQ
    GFnoA/9mUd+OLIiy0NXNkEwPiKsvKyEPt9ERY+8ODdH6+P8VATTXBQdIBWGBAnhO
    PBKQ3t8WiKZU7OwAeb0geyxaF6mlf+nXp7bIs/osguF8U1oawnc/459Xlm5JZSqM
    4vSYKgZbl0fLpeQ+7gCnV4v2VOK+CklrZoIXXYybLWI9uRIZ6LQbUGF2IEx1Y2lz
    dG5payA8cGF2QG9vb2suY3o+iF4EExECAB4FAj9KJ7ACGwMGCwkIBwMCAxUCAwMW
    AgECHgECF4AACgkQntdYP8FOsoJcBACgwvi5aF1TB+VUnfn1aoMEpYyJbloAoJ1o
    ni5QjI3rZIQ80Mkrtj9lwzcfiEYEExECAAYFAj9KLMoACgkQc/PxpRAQX0iWNwCg
    3cFfsyCqXsbomDR6FDO7vc36ph4Anjz8ZqU/uAELMcDeAu+G3V/szlGKiEYEEhEC
    AAYFAj9Q/0wACgkQt+DSc2Q4lGbmdACfbOIMKBRX4PDwTe81OAi0m/ImVX4AoLGr
    grkkSSn9civs5o2ovlfYHLO3iEYEExECAAYFAj9U1FkACgkQhc9768l+pLaMjQCe
    LYtORcg3I/aNa1jrrhx3f2DJawEAoJsr4ilP0faolpeCBZ8F4uDFWZ2IiEYEExEC
    AAYFAj9+zBwACgkQHgKKGreJP+TI4wCfSxff5PaKtfwmkW8ZOh/udslWmNIAnAtQ
    JCKLXjfR8pVWAdKNhAXJ39rRiEYEExECAAYFAj+KedwACgkQsB/XvLG2RNKEEgCf
    dl3XBRrq5+/Il9AEspiC0n9xijsAoLTHNvM9LXcSga6LBnwk6rHsdshJiEYEExEC
    AAYFAj+Kf/wACgkQu/rQsBCtaKI9WwCgjlKegmtbMY6+r8FlVdWuM2HPQrEAni+s
    fKobgdKlfHt2M/ZCAXOnR/hJiEYEExECAAYFAj+VN/8ACgkQDsZnm2KtQhc++ACd
    G/HfvFMi4LXagZzLFLPmihKO1LMAn0ix+S3usm5aoVkuvqn7ik1cVyDAtB9QYXYg
    THVjaXN0bmlrIDxwYXZARnJlZUJTRC5vcmc+iF4EExECAB4FAj+yp2MCGwMGCwkI
    BwMCAxUCAwMWAgECHgECF4AACgkQntdYP8FOsoLsqwCfeMIFltsrDkaPZZ7phSx7
    0u6E2tsAn2fFlP9U2QT1SUebpaUaRbnRKmuzuQENBD9KJ7cQBACWoRj6p3M3mx1n
    6FvPV6EoLFXH5dSRS0HIGwe0M41mZgD9VcRfA8OXYFYCzlSn35owkHxCmjjOp5XD
    1u37hl/rEPCsOtMFxzjyj5Ujwu7E/cAAqAqB2u9Zy5juful59d0U9pGhaAUALtaE
    IMdZJTXHX9trbnpAyUV6L8TU3s/2XwAEDQQAjb5WxBYKAHRykalp4QdE+Obc8ZS8
    rqf4KY0R5PYYvcni6lBBNdKgTRHThZZxUybU+pww95RKXRv1PtLb2jW/BKwV6qum
    SqQZkZzpUtqd69DDGilC8J4BtCPJmB4QpzTZjzeGi8MDjkX/btP/wY9z+f/3Cguj
    500udi7+fT9CRuKISQQYEQIACQUCP0ontwIbDAAKCRCe11g/wU6ygh+iAJwNtPbJ
    zULbTUIEZ+C2eXcB4+jjYACfT4aN6ETBfBYNij1Qmd6TjOXcXgY=
    =Jmz+
    -----END PGP PUBLIC KEY BLOCK-----

### D.2.7. Colin Percival `<cperciva@FreeBSD.org>`

    pub   1024D/0C6A6A6E 2009-01-12
          Key fingerprint = EAF4 8BBA 7CC7 7A30 FEFC  0DA9 38CE CA69 0C6A 6A6E
    uid                  Colin Percival <cperciva@tarsnap.com>
    uid                  Colin Percival <cperciva@FreeBSD.org>
    uid                  Colin Percival <cperciva@alumni.sfu.ca>
    sub   2048g/DC606691 2009-01-12

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    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
    =RYUS
    -----END PGP PUBLIC KEY BLOCK-----
    -----BEGIN PGP PUBLIC KEY BLOCK-----
    Version: GnuPG v1.4.9 (FreeBSD)
    Comment: A revocation certificate should follow

    iHgEIBECADgFAklrBn0xHQFOZXcga2V5LCBJZCAweDBDNkE2QTZFIGdlbmVyYXRl
    ZCBvbiAyMDA5LTAxLTEyLgAKCRAy3h7N0JNH/J60AKCk8fKCpx2gXrbWMHrulX8Z
    mxuFNwCg+1koNtGfe3LQZj/CSV2zfr1mTA4=
    =GSTt
    -----END PGP PUBLIC KEY BLOCK-----

### D.2.8. Hiroki Sato `<hrs@FreeBSD.org>`

    pub   1024D/2793CF2D 2001-06-12
          Key fingerprint = BDB3 443F A5DD B3D0 A530  FFD7 4F2C D3D8 2793 CF2D
    uid                  Hiroki Sato <hrs@allbsd.org>
    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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
    OGg0F7Gi41lcFhA=
    =wurQ
    -----END PGP PUBLIC KEY BLOCK-----

## D.3. Разработчики

### D.3.1. Ariff Abdullah `<ariff@FreeBSD.org>`

    pub   1024D/C5304CDA 2005-10-01
          Key fingerprint = 5C7C 6BF4 8293 DE76 27D9  FD57 96BF 9D78 C530 4CDA
    uid                  Ariff Abdullah <skywizard@MyBSD.org.my>
    uid                  Ariff Abdullah <ariff@MyBSD.org.my>
    uid                  Ariff Abdullah <ariff@FreeBSD.org>
    sub   2048g/8958C1D3 2005-10-01

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    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
    =2tPN
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.2. Thomas Abthorpe `<tabthorpe@FreeBSD.org>`

    pub   2048R/A473C990 2010-05-28
          Key fingerprint = D883 2D7C EB78 944A 69FC  36A6 D937 1097 A473 C990
    uid                  Thomas Abthorpe (FreeBSD Committer) <tabthorpe@FreeBSD.org>
    uid                  Thomas Abthorpe <thomas@goodking.ca>
    uid                  Thomas Abthorpe <tabthorpe@goodking.org>
    sub   2048R/8CA60EE0 2010-05-28

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    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
    =hUQl
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.3. Shaun Amott `<shaun@FreeBSD.org>`

    pub   1024D/6B387A9A 2001-03-19
          Key fingerprint = B506 E6C7 74A1 CC11 9A23  5C13 9268 5D08 6B38 7A9A
    uid                  Shaun Amott <shaun@inerd.com>
    uid                  Shaun Amott <shaun@FreeBSD.org>
    sub   2048g/26FA8703 2001-03-19
    sub   2048R/7FFF5151 2005-11-06
    sub   2048R/27C54137 2005-11-06

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    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
    NnNrFxKZ
    =zwEb
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.4. Henrik Brix Andersen `<brix@FreeBSD.org>`

    pub   1024D/54E278F8 2003-04-09
          Key fingerprint = 7B63 EF32 7831 A704 220D  7E61 BFE4 387E 54E2 78F8
    uid                  Henrik Brix Andersen <henrik@brixandersen.dk>
    uid                  Henrik Brix Andersen <brix@FreeBSD.org>
    sub   1024g/3B13C209 2003-04-09

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    mQGiBD6UQlgRBAChxRQ81Vmb8AMxEG+meT1euB3fDPtkvtSc+HdWDnpNWCTnkyq/
    IVuG1c23Hi410K+MVwRn/IXaUGHANhsIL6408dHX3QuvTCWW/RYx3bPU2gxjbuw8
    4ZT/dw1vsbR/dnjz2PaX9Hhq5boAy0IXkpsRqLh5ys+pW96idnfCW8VCewCgyFTR
    +GTaKsSAJ6mFEIo6Q9NbsH0D/1M0Rtj1teZbJIitnYkRK8l5YH6AD1swOEdZTvUY
    AccQjQOwn/9EWO4nYdOknoogXLYMMsz1Pkw/X5IoABeH9AHRcxhhkG9B2SVzaxyI
    BB0VH5J8ks2zkf0o5yKieBtIobPw5lcgLjwhALVrsV4FjV3G0+lS/cb08wlID1sI
    nqHcA/9ibS8Omf/xFQLlD9KebW87FadmrPsBS0qPOZzOkMqdCaFZsJ9UZie+RcMR
    qDFZZLHZjAh71J1czn7qbK+BCv+LRhzERTWevw7fgL/41m0DO8JqzMkLZr9EneRL
    7ZJ5NtBPS5WoWzMpoydaQEA2sjCnMmTxBtJpCenR26LynXmdmLQtSGVucmlrIEJy
    aXggQW5kZXJzZW4gPGhlbnJpa0Bicml4YW5kZXJzZW4uZGs+iGEEExECACECGwMG
    CwkIBwMCAxUCAwMWAgECHgECF4AFAkUMaR0CGQEACgkQv+Q4flTiePjlBgCgqa2K
    xi/J9ln8BULtheJ4PzDhp48An0OnhLfiWDsn1XoS9KQ38XzrSimbiEYEEBECAAYF
    AkPMcpwACgkQN0y+n1M3mo2P+QCdH5NSpHYikhVD41PPaSNg1SY9rm0An2LXs/aT
    06Tz69gBoWoWeLMnkfrGiJwEEAECAAYFAkQMD3YACgkQH3+pCANY/L2ZaAP/cCpR
    TmyTqgIA9Q4CguB07gdlm02Ak8TVubuvBylM9JrZpPR+bqSrjocEi+rgUFJn/e6b
    IrQ41WnPrP7K050DpQelGx1WxnKwGgssNzGP96y+babR/1jGUTO1fLyD+cZQ3GTy
    CxCOa0YIHpyB89icVeAcYUaOmlUTkYoInY+0+7eIRgQQEQIABgUCRAycfgAKCRAJ
    xOeJkBbvUD4gAKCJPc2v59Heoxo+HNEElroGNuQrFwCginDoNFpG0imu5WleEhJc
    EesQGrSIRgQQEQIABgUCRDFIzQAKCRDz3nmC81+kz3ZpAJ9FW6NzbeeOnXXDwT9s
    tdEZm7c6swCgle3IfXIKYd18RtxqMWxfxpFTQvOIRgQQEQIABgUCRMz8SAAKCRBd
    Vo7rtLWu26v2AJ9RGgGOcs1/9XfklMYo0UrzeMml/QCgsNXw9k3E3kkCE3c7SVBi
    klYWP72IRgQTEQIABgUCRQ1LqQAKCRCfd8Csb3oRX/o9AKDoN7obVo8CjEUaarVv
    I/6COPYj9QCgw1IlrO3dyh6lLJbgdci9Xg55Ry2IRgQQEQIABgUCRSzZpwAKCRDV
    CFOpIhPncu8hAJ4niDTm5vUWx5FHeAkbkey7zYV79QCdGJOrDToSQIDoDv/wv6xf
    x7xNMjmJAkgEEAECADIFAkVXKukrGmh0dHA6Ly93d3cucGFlcHMuY3gvZ3BnL3Np
    Z25pbmctcG9saWN5LmFzYwAKCRAmSeYoxdNNBYjyD/9uK1PGmlM7TEI8A+oMUQYL
    OHao0/EdKdQnbuoCX5EC2HtW6ITXytHxzDoisCFOVQS3YpN73vth9IZRXPM7JaBQ
    +uG5ndUqprNIWyon/LC85R1S5iK2Q5KIHyEcntBDDqzzYVWig0+Pm83kzJspM4Va
    8btXk05rFIzi09xcL3Yew2a84YDCwifWEs0TRhsUtsht2mO01hS8XjmyJvzdNebI
    HOwL8kQVDZbNIPReCpCmgk7p6AerphHjbrzTrby/BdkM7vKukvOIX9uJXIFr9s/6
    VdiupUWJ2i0H+zRD0eLdpTtmPMe0Yy2SUrIuqkq2TUm+bLLm8jIIypoSz69hUfhH
    M+koasJ3wrz+LriUORK3vUCOxIhuMFUKL/oIWsMNzi0onnTaEoD2YwUS5Xd3i5Nl
    PQHinaGAp5c4/05/fqFzEvplik/9gK8SDC67SZcEm85BmyrGe1JUuivemB45PEJ1
    o5MKkPyxE2oFEvpFjJwRlHa/8Xd+b6hBVZqNDk+ACTqsdi/+i73TCDC0Tc5H1yy0
    OICxowaYtXvoMBolZBgDM30d1PfFLULowpqHQLQnCrgF+QfKEooKIxgUqgs2HxJz
    T+6EJGbO+NwT6GClosbAaQk3cRcvR4bZ3oRaSA5E2LySTu8Vifs4nH0cc86OAmCO
    Mau10ikzd9Ewyv+/z4lbzIhGBBARAgAGBQJFWOY9AAoJEK6UZT1dE6xFELEAnRBP
    hI3AwYWMDdxL+b7td3vGI2c0AJ9/e+cOTjDM7Jg9w6XxPIbVCAe5KIhGBBARAgAG
    BQJFWhAaAAoJEBRll9zcw5nH7lwAoLBj35DUAC1Ftv5GNrOUakRuC4l4AKCgKP3M
    GsROrLP5b0qgIcLBWRzfUohGBBARAgAGBQJFWuFiAAoJEBdynXf0qFEvckkAnjCt
    0FiAGhaXlAHW1LODtjrdejmNAJ9qaPTihxJrExSUQ0pYPwahDkWPo4hGBBARAgAG
    BQJG7wWGAAoJEJ7XWD/BTrKCgooAoMlrxw5Ai6Qa9mA+zLdnpNLRMiJiAJ0WL6Vd
    gF7oQof3A/3lrQN48xdNR4hGBBARAgAGBQJG739QAAoJECGmRpvR77qmomMAniZl
    uTilewm9oM6i1322xHr1GKWVAKCHF8tSCL1z1y98piDoOBPzBXsJB4hrBBARAgAr
    BQJG8YqxBYMB4oUAHhpodHRwOi8vd3d3LmNhY2VydC5vcmcvY3BzLnBocAAKCRDS
    uw0BZdD9WIwvAJ4xQw3xp+9xfdhKDoNrSALnqzmwEQCfcvsMnu3g5qEkhPmTmDqg
    Mq0twzOIXgQTEQIAHgUCQ0JEDwIbAwYLCQgHAwIDFQIDAxYCAQIeAQIXgAAKCRC/
    5Dh+VOJ4+JyVAKCW3JS2DvDpr+TlD5qYSHb64OKbPwCfda1O1FIElnQNw1YnZ6op
    4NYf0GWIcwQQEQIAMwUCQ/8J+wWDAeEzgCYaaHR0cDovL3d3dy5jYWNlcnQub3Jn
    L2luZGV4LnBocD9pZD0xMAAKCRDSuw0BZdD9WJv1AKCeEY8AF53YFwkwiQBXbR84
    jlXVRwCfcT0zhAl57VR4Ijt1D4cJ6g3A8qW0IkhlbnJpayBCcml4IEFuZGVyc2Vu
    IDxicml4QHBpbC5kaz6IZQQwEQIAJQUCSBwuXh4dIE5vIGxvbmdlciBlbXBsb3ll
    ZCBieSBwaWwuZGsACgkQv+Q4flTiePhGPQCeJ651G2UDB+TxQDFT3RDjc6XCUB8A
    nAqb8b6bFhpo6Uqnxmyw2d3XNoGpiF4EExECAB4FAkIBUDYCGwMGCwkIBwMCAxUC
    AwMWAgECHgECF4AACgkQv+Q4flTiePgcFgCdFw3EtJ01m1hktPyeucQgU97IqxwA
    n2k1qlf+M/ieVFGNI2hcgFQz2nKGiEYEExECAAYFAkIKCGYACgkQ1QhTqSIT53Kf
    NgCcDk5kXYY4QTRdK26MygwH85vZKcgAnRa+/NN/clXI4WnLifU68l/rD/z2iEYE
    ExECAAYFAkIslDsACgkQ7p4sJIfNPb01AQCeLUWOpmnoIwL4nzPUsd5UZjhJcVEA
    n1JTVyN9ichddZWmgcNpXplkfKLEiEYEEBECAAYFAkJrwiUACgkQqy9aWxUlaZBa
    SACfYBOmry8jmCj0obm30Lcw3L5NRT0AoLBqjlhFowQ3CC7BI0gGX9rNeWGkiEYE
    EBECAAYFAkPMcpwACgkQN0y+n1M3mo0ekACfRCfopy7HXWEqzMz41CIOSjfzUtAA
    n33OhSgZhMTYH29Hw1oVqOgs5WaniJwEEAECAAYFAkQMD3YACgkQH3+pCANY/L0E
    JAP+IQREFJqA+3/agrXLYbLXxyWrWn0nYBrf/mVHQPi/p0lQQVfsP5UJ/ULoe/A3
    IfJ90UYtY6HXKPeTXpXDBhsNkXG8nAo/GITGHpQYLzrb2+9LIlDpv3bxF1Bqnxu9
    LRG8k2QEVZz8jm7ye3CrFrD8Cgz+T2LHQZSa1RgJJCLDD3SIRgQQEQIABgUCRAyc
    fgAKCRAJxOeJkBbvUGw0AJ98qwodnFSekO8brL72wrIzoU++eACbBBEI35O59FlL
    iIkdteyUlN1le0CIRgQQEQIABgUCRDFIyQAKCRDz3nmC81+kz2aWAJ9XYkdaBcZ3
    7Y/l74+2s8JzFPmzjQCfb7FHHCmQK7z44lDBzeticpPfzeyIRgQQEQIABgUCRMz8
    SAAKCRBdVo7rtLWu269GAJ9XvlBYMTagjaC96ZNyVpxnQ0dPygCeId9nG3FcnMbd
    3Got/vMSbiH2pyyIRgQTEQIABgUCRQ1LqQAKCRCfd8Csb3oRX+/gAKCq9dKKyEmu
    laW1S7QfG6u8on6LOgCcDMkItuWGP/vPbnLro+Q/xDTnSSaIRgQSEQIABgUCQxFh
    hAAKCRDzTPIvFJInJy/tAJ4tV/DUGK0MCzVKnXU0Gj41NpBYVACg0YeGlONBI0/2
    sIxWqC9UEnEWg9qJAkgEEAECADIFAkVXKvErGmh0dHA6Ly93d3cucGFlcHMuY3gv
    Z3BnL3NpZ25pbmctcG9saWN5LmFzYwAKCRAmSeYoxdNNBSPxD/9giiYqFeT9pdwf
    WNNLuTf/f5UVboyqDodR3DhZ3TYu7WaSjogcT+Z0Eb1Rh/DvaknbGAFANP9Siu/h
    QIFKzy/dbP3enBtLK7QBjBXftJccvJ732D59ACgLrrpgl43JWbJux9s6DLGgD9Ex
    jucxqvLSiaCIQNo2ckeqlGHOlJnK000yzCRHDzaELZOljnoaWevmV6JPTtzo/5Sk
    3iDn8TFZVpWSvX3NBKy9LpjadZ9pWJs7m9HALTzi6SzeufQXz3O6d9KBsmr4O2HJ
    rLVEh+ynF2hy9hARRNN4mO6drVUUZLloE8GUC+zidou6fNV0xzcLeNxtj0erFa8H
    ACWgQsxvuZxS7fQf/WRWUjuwJftl++NbwBzKXkqT62bP4wmMqSeesbzli4Mhqo6C
    e4rn7U6yNilIo2aUd8nPhEE9EzGypDJh9BcJnOpTK4qJMOVL9DE25kK8gDqw5piN
    xFvm5+HNVscqa7o381zXJLr6Aj+3DvjzGsOtvzIlU7m442obs8o8gQQwQ57/gHB7
    RWBLyO/T6eQOLTeysDtlXzcnoojG6B2aP3tc/37W/chOgjz3yfLa20Q/gWIiNqVz
    bHdlmTliYjkC450BjViAw4hiw0JLghWqT//RjxPtsJxlDxacwpetU5oTxcrQP5LT
    G60rwHXjuGRvgPrn3x8N278eyKNfJIhGBBARAgAGBQJFWOY9AAoJEK6UZT1dE6xF
    taoAn3F8sxfer7OegDc0Zig2CEVHWkTPAJ9nZSDDYoP/EDmYkDJVrbUFtfBUMIhG
    BBARAgAGBQJFWhANAAoJEBRll9zcw5nHyoUAnjiyOHs3IwBS6cesouiIc4biB5sT
    AKCuhRPUuTU5wRzVRPBNNw4RwwY/KYhGBBARAgAGBQJFY2fyAAoJEBdynXf0qFEv
    /OQAmQG+kylQyiX2HlLoz0o0/KDJblzhAKCL8B4qUei0setnNCCEbT74xkSZPohG
    BBARAgAGBQJG7wWGAAoJEJ7XWD/BTrKCtHEAn1cF1EcKcob70aLzqgnoOykjry1S
    AJ9iPF7XACsVYhO9A0oWMu3w1fuQ0IhGBBARAgAGBQJG739QAAoJECGmRpvR77qm
    QrIAoIcvChTSNd6yWUMfR2EVmKJmDr0KAJ0d99LlCySmdzl6BBZfHMQUi/5AsIhr
    BBARAgArBQJG8YqxBYMB4oUAHhpodHRwOi8vd3d3LmNhY2VydC5vcmcvY3BzLnBo
    cAAKCRDSuw0BZdD9WAzHAJwNZ2W4vUBjg2cU44xa0h4+Zq10gQCeIGN4jAfRxEjC
    FzZib0EPzuyCa2CIRgQQEQIABgUCRVjmOQAKCRCulGU9XROsRXEwAJ4hBK7FoJwG
    +ItGXMS/756L7e/TQQCgiRCasxhWrlNDGCgh5oeuBW3cDfeIcwQQEQIAMwUCQlcW
    1wWDAeEzgCYaaHR0cDovL3d3dy5jYWNlcnQub3JnL2luZGV4LnBocD9pZD0xMAAK
    CRDSuw0BZdD9WK0kAJ9jgJCr7RB+9jY6CM5GX09Ji3MhbACeIRIkdA0BkwUZJU4M
    6GaAtAlod5OInAQQAQIABgUCRAwPcgAKCRAff6kIA1j8vfUBA/4zQCLeRphxrg+j
    p2dnSIaZefM4bnKifsWwr6fDRb4TowSTV/rAGiP0tTpj4GiNS3n570g4w2EO/jrt
    d+e7dxxQByOrkSP5AASQ2FBFdvWBHNmnLyMNHQGPeRdgxFGAUyRdQuplKZdQpMmI
    64Pgp9jTRxmxVdYqYTaOdunVYs5B+7QkSGVucmlrIEJyaXggQW5kZXJzZW4gPGJy
    aXhAYWF1dWcuZGs+iEkEMBECAAkFAkheiI8CHSAACgkQv+Q4flTiePhbMwCgwElj
    kjekm3o6i4E7w53JcOZOnnUAmwVcqrVDeWo14NTVW6wcDA30dP7kiF4EExECAB4F
    AkNCRCUCGwMGCwkIBwMCAxUCAwMWAgECHgECF4AACgkQv+Q4flTiePhB6wCdEl+U
    42TOiSvAx9ECTSKR2pEyYoEAnj0O+McjsCxgeWOAiHxkH6S1MSA5iEYEEBECAAYF
    AkPMcpwACgkQN0y+n1M3mo3JYwCgvJXm7Sv30SSF/vkUA7lYZnMXpk4AoJhq9b0i
    LW4qwgNhgrYYbBE6c+6piJwEEAECAAYFAkQMD3YACgkQH3+pCANY/L1+5QP7BxzD
    nx+SYAqmAWudmO5gqRzwhB4L9nrtPa3hGkWNEMuxJjBCkJJHoX/rxMYkR2ZdSFIF
    X++7Y3qsI7d2GUCMBgCqN8zdfwWvrpjBBNpLSVliNwvEujAi1BmTixDbiq4CKwai
    6gxsFEDYsA05cX2Njg1bYbX/XjRcGpNQPKuna8GIRgQQEQIABgUCRAycfgAKCRAJ
    xOeJkBbvUN6JAJ9fHHR1Ms09rYyajMra0aX+7XaUswCcCjNoayZQlf+6DkJBaQFi
    Gi/FMTCIRgQQEQIABgUCRDFIzQAKCRDz3nmC81+kz2+0AJ4pLGBcGNMBWAIOujap
    eYQfKif2TQCcCgcrHLwm7btUTbaHHD1g5LMwpaeIRgQQEQIABgUCRMz8SAAKCRBd
    Vo7rtLWu28G4AJ92TcPH0fM68/NerGJRA5QtsYm9CwCdHCuab38MAWv115wvbrXL
    QZK4HcOIRgQTEQIABgUCRQ1LqQAKCRCfd8Csb3oRX3tPAKCMuerpLB9Boh39hsmc
    Vfw8MZjlggCg7kMhr5MI6/a2z2oLvakXo2AoM5KIRgQQEQIABgUCRSzZqQAKCRDV
    CFOpIhPnco9wAJ93feKzaBOMflNEpZH4B+jtN5bm9gCgrthnnQToMNZl3b5RWvLi
    P0f0pAyJAkgEEAECADIFAkVXKvErGmh0dHA6Ly93d3cucGFlcHMuY3gvZ3BnL3Np
    Z25pbmctcG9saWN5LmFzYwAKCRAmSeYoxdNNBXB4D/sFtImOodWUaR2QacEiFUdu
    IK6NS5DhfiW2fXtEUAdFoh2IE8Iwlc61DVKMf1jSFkIFaMs4OdTnYuiM702x9CW2
    XrT5pO4ORMXACpmCpqLJU4RoUKpE2Y5ABrwit3MqGUFoyunebnhc9IgItrJ620as
    Hm0RfIwI5LC6fV+6wuSiES1zhsg/zPZ8aTnYTfGCh/vCttqxDmuxUEsVK9E7T17X
    ZJCLeV+PR93LLrMDvVSyRwJLOSkpCqgGL/g6/asvw/lGX0g8G4WmHmQW42FrtpfB
    JF+hRwO2d9iLZ5ubzqcdRkydwOBx/x3tzPjxCjq+U32tnSCys1YAo9mYaCfYQcuv
    aa0P4hditNAypAJYORxB+ik7wtXoioD08pUcA2BhxgKjUe3D1r+C8x7njZ8lWSwG
    eJaNxUhmsRou5SI1nG9cG4blHWMNGg/jnGXAozmca5VRHzQJoTabBg84TIXdbBzT
    QECPBUJp0r69roYnF3Rmpyov4iHHe5gtIQ9HgW2A7XDMNyDVeEtYHi8OqhOPVi2c
    /sU/mWTMP5n5w17+H+AHPrZP+iFRSREnIcEunBlKg3TfBgIT+isMVtG1HcEGNuQQ
    THVgrx/JSjLuwUWxdyOg23KFanBM2gY+p6ZYQng8xa2fGC4rzQmI+/4xoAiey8xE
    oYLU2DypEuhJadFUhSUx4YhGBBARAgAGBQJFWOY9AAoJEK6UZT1dE6xF5SoAoITs
    52ZAf6SVB8FBT/eLnx5Ni2K1AJ42rKcj8HMbNQf4bOjamJNrlo7YHYhGBBARAgAG
    BQJFWhAZAAoJEBRll9zcw5nHQ8cAnA99vx1/TIdt/r2h1byHrCgPvNTaAJ9zPyo9
    IzZlJ5oSiGDo0cr/Rkw154hGBBARAgAGBQJFY2gdAAoJEBdynXf0qFEvjiMAnRKD
    j/PC26266T+sdLZfSyRngb1oAJ4rbxayEIqu63igRuCBsuAvOrtTBohGBBARAgAG
    BQJG7wWGAAoJEJ7XWD/BTrKCsQIAn2Lwn9l5UtDEcVk5E2knZtVfDX5zAJwMfIwV
    8u921zNypcgpzSwkLdrmKIhGBBARAgAGBQJG739QAAoJECGmRpvR77qmhc8AoK4z
    sYbuIhYrdYV+HfB5xivwzuR0AJsEO3/FNwHOneiAkRqUP5o0DtqrXIhrBBARAgAr
    BQJG8YqxBYMB4oUAHhpodHRwOi8vd3d3LmNhY2VydC5vcmcvY3BzLnBocAAKCRDS
    uw0BZdD9WCXFAKCN9ym4MaPJrl1rXPLH7nhI38iSUgCfXi386GkvwKKZuZzeOiib
    zcbjnauIcwQQEQIAMwUCQ/8J+wWDAeEzgCYaaHR0cDovL3d3dy5jYWNlcnQub3Jn
    L2luZGV4LnBocD9pZD0xMAAKCRDSuw0BZdD9WLlXAJ4mP3eT18lsEijZsQo65cXC
    TxnCbACfYva7F6eu2E2dG2TzMDb/e8TTTg+0I0hlbnJpayBCcml4IEFuZGVyc2Vu
    IDwwMTA3OUBpaGEuZGs+iEkEMBECAAkFAkS5PskCHSAACgkQv+Q4flTiePj4BwCd
    EW0dQCinDGdSvvVLuWlF10mcv1MAoKeV3Qme9GOG3KIDi2+0YYVfALWMiEYEEBEC
    AAYFAkPMcpwACgkQN0y+n1M3mo39kwCeLYh6qjL75pvCYnPlu7cAaWloIPsAoKzV
    rhyrWPavpDOpjUHNK6aOjR4niEYEEBECAAYFAkQMnH4ACgkQCcTniZAW71AFMwCf
    ZlhOSlwpyKprNvg9oNgM7cDpo70AoIz2//rstyB3hBmF7m/HDtDRzAz9iEYEEBEC
    AAYFAkQxSM0ACgkQ8955gvNfpM+OIQCeL9vt1bc267tdDbSxFWvSUu1WeOIAnj+E
    tBz+Q4yi9OU6s01OOA31yjH6iEYEEBECAAYFAkVY5j0ACgkQrpRlPV0TrEUvwACf
    fomLxMEYRAkdxzEkcAhLzS31F+sAoIwCFDdHfzbgMbsP4s5W2fCX1LWCiF4EExEC
    AB4FAkNNAyICGwMGCwkIBwMCAxUCAwMWAgECHgECF4AACgkQv+Q4flTiePhQtACf
    UzPG3iBf/BMLQl17C6hl9bSOKAMAnRKgGiKWi++keWWxfB5/qDNVxNzmiHMEEBEC
    ADMFAkP/CfsFgwHhM4AmGmh0dHA6Ly93d3cuY2FjZXJ0Lm9yZy9pbmRleC5waHA/
    aWQ9MTAACgkQ0rsNAWXQ/VhpSwCfa0RYTPKoHh6Ogsm2h7ScHHUYXosAn09Q7Gxk
    fNbRg745zWgPkRt5HEVgiJwEEAECAAYFAkQMD3YACgkQH3+pCANY/L3RtQP+IPJF
    C1yUq5Pgm3LEaUDB8ngxFYP2IPQ3KH0ehmbe4OHU0c9E5yh1ViNlYKWKxTUhUKPU
    MJPjOESKdmU0WBHrnQ5FKZmr8K/uGCdHU+lhYQwzgMYkjTn7AS44YukZLkQ490ZP
    5lhVMtFWLJdVEZGK1oO0bSeRcB0RMwrT+z1gNYe0JEhlbnJpayBCcml4IEFuZGVy
    c2VuIDxicml4QGdpbXAub3JnPohJBDARAgAJBQJCCgVMAh0gAAoJEL/kOH5U4nj4
    M7oAn3LAoaE29feNavUpw/hqD0f4nnPkAJ9NZeroZkX09hlGDvA4liC34DPRI4hG
    BBARAgAGBQJDzHKcAAoJEDdMvp9TN5qNzO4An1IY29nD0bMD/5hxDtJUt8qO1x3v
    AJ9dlLb448dgdpxLUdDCf3aeHOlmpYhGBBIRAgAGBQJB2VIpAAoJEK6f5wUIDEyl
    7ocAoIcvdubBFFCmxmwweGhXgU2SX6lQAJsEYm6joOMZ2tOLA8WcKzghMkGDBIhZ
    BBMRAgAZBQI+lEJYBAsHAwIDFQIDAxYCAQIeAQIXgAAKCRC/5Dh+VOJ4+PMeAJ9C
    58QMyzQBgC5SGUikeFA566K0dgCdEiMguJ0C0qwtjERzndmsiY7DOmKIXgQTEQIA
    HgUCQgoFFwIbAwYLCQgHAwIDFQIDAxYCAQIeAQIXgAAKCRC/5Dh+VOJ4+BpNAJwJ
    By7+NfNDQcxWU+6DKHkWAIovKwCfWPk+0S74OBOx0+NUXOxtcq/mCES0JkhlbnJp
    ayBCcml4IEFuZGVyc2VuIDxicml4QGdlbnRvby5vcmc+iEkEMBECAAkFAkUMaXgC
    HSAACgkQv+Q4flTiePhWGQCglliBZWa/HU+0qtQZnt/rIRn1b+IAniiTtF0Ll90A
    770pMIjsJ8cXe8AfiEYEEBECAAYFAkJrwiEACgkQqy9aWxUlaZBlggCg4Cp+lHk+
    M6HKbhoEAHK5XszVHQoAoI+422ohFYnow4bpH+3sJXANyHc6iEYEEBECAAYFAkPM
    cpkACgkQN0y+n1M3mo3tggCeL+Oa440W4UVmz2CHvUloy0oiRUgAoLRHa406iEBC
    gESdsl5I9LWw95pRiEYEEBECAAYFAkQMnHcACgkQCcTniZAW71DrigCdFfiK45WT
    r54R7kGFJ8Cbdv5LtDkAn2FJzdglgl6ZJPns1OWZlipeOagoiEYEEBECAAYFAkQx
    SAUACgkQ8955gvNfpM8niwCeOhuAcBWGPQPuxAsGj2Tze+bsCC8An26dkM9a5EkD
    kjF3+2lJ9DU31SA9iEYEEBECAAYFAkTM/EcACgkQXVaO67S1rtt1zQCg1KgdWTEI
    D8WM+UDFa5BcoMsIP/YAoPWQDKrrU5e0iZZ6UyPv/CvGwUXjiEYEEBECAAYFAkVY
    5jkACgkQrpRlPV0TrEVxMACeIQSuxaCcBviLRlzEv++ei+3v00EAoIkQmrMYVq5T
    QxgoIeaHrgVt3A33iEYEEhECAAYFAkHZUigACgkQrp/nBQgMTKUBegCgjS4riHWP
    KMibqhhdC1u50DbVdo4An32389aHCCSUIPOPxUD3qgD0AVh+iEYEEhECAAYFAkMR
    YYQACgkQ80zyLxSSJydLEQCeNKplzVjXHY7qqDC9xCxbGm/aEoUAn3crkx580XUK
    RUTP5x0mTm8DbU2ziEYEExECAAYFAkIKCGgACgkQ1QhTqSIT53IkPgCdGpOSyJ+m
    pFrzGZFgh/Lj8BnxNasAni1xPecPOx/jbMvMjzkDF/tTqYHFiEYEExECAAYFAkIs
    lDgACgkQ7p4sJIfNPb0oJwCfcEpNBQYY1j+W9msAFlkSMi6HcDMAoK7Bh9O9Nl9x
    PHU7sr/IDIu6R+S4iF4EExECAB4CGwMGCwkIBwMCAxUCAwMWAgECHgECF4AFAkUM
    aRoACgkQv+Q4flTiePiIPACbB8tt2u3orcg/5HxImRnaomc7TLMAnRv0PIUdFiEf
    K1l+gS2uwSXija00iF4EExECAB4FAkFWy4wCGwMGCwkIBwMCAxUCAwMWAgECHgEC
    F4AACgkQv+Q4flTiePi8MQCgxoTyVFHwWKxhnSKpFT/QuZHmNj0AoL+kL/3CB40D
    5yJnV8lg+wvQIGr8iGEEExECACECGwMGCwkIBwMCAxUCAwMWAgECHgECF4AFAkIK
    Cw8CGQEACgkQv+Q4flTiePh0CACfUPBi6e9JJXlLmDmoDU+YDcUs+eQAniFqFhyS
    OuqV5X/Pa3q8tgCtHDTjiHMEEBECADMFAkJXFtcFgwHhM4AmGmh0dHA6Ly93d3cu
    Y2FjZXJ0Lm9yZy9pbmRleC5waHA/aWQ9MTAACgkQ0rsNAWXQ/VirxgCfWvTJDRYt
    AEvwBOmWHWT2x2DIarcAn185FVF/u3bR+ECLqtsT+iDZz4z/iJwEEAECAAYFAkQM
    D3IACgkQH3+pCANY/L31AQP+M0Ai3kaYca4Po6dnZ0iGmXnzOG5yon7FsK+nw0W+
    E6MEk1f6wBoj9LU6Y+BojUt5+e9IOMNhDv467Xfnu3ccUAcjq5Ej+QAEkNhQRXb1
    gRzZpy8jDR0Bj3kXYMRRgFMkXULqZSmXUKTJiOuD4KfY00cZsVXWKmE2jnbp1WLO
    Qfu0J0hlbnJpayBCcml4IEFuZGVyc2VuIDxicml4QEZyZWVCU0Qub3JnPohgBBMR
    AgAgBQJHKQT+AhsDBgsJCAcDAgQVAggDBBYCAwECHgECF4AACgkQv+Q4flTiePhq
    eQCfWx0ViywCxSkExyqgaSqVNXH8+VsAoLoRKzkDFGDGM8th/coby9cu73YeuQEN
    BD6UQl8QBAD67SO20OScwP3/oJr1tjmNFTIBBTo10Jt1/mBMlFp4rkEbysvcjv2v
    ppRYRjbG7EwuYyfRebA6XLF+l9K+ZCIq5ICMqto7UKNyNnWpjw9wLwiPkeMck5Qr
    mXC8/bH1PHXCw8m6NxSiRYd2YbLYO/ErShDfMrZJi9wt0pY97s6rkwADBgP+OgEQ
    2woWjwk3s9A6+cGoGCD/N84mNSBFl6LVOqiATkgFzm9VenDsV1LuVbvd8d/NUZ+j
    m2ANALFxlgKxeqthJhFZLXZIckp5GVPRqrUJKauF04fQZ8w9JI6Kp3brnaN6wa0n
    xC3pqYwZdBjDUjaOtes27UqqlTYX0sQaDLM0ARGIRgQYEQIABgUCPpRCXwAKCRC/
    5Dh+VOJ4+PRnAJ4p+ftWiiCBRqfHnRhf3pTlzxGDUQCgw+Jkqwvej2KCMft2Xavc
    7w2qYVU=
    =4lil
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.5. Matthias Andree `<mandree@FreeBSD.org>`

    pub   1024D/052E7D95 2003-08-28
          Key fingerprint = FDD0 0C43 6E33 07E1 0758  C6A8 BE61 8339 052E 7D95
    uid                  Matthias Andree <mandree@freebsd.org>
    uid                  Matthias Andree <matthias.andree@gmx.de>
    sub   1536g/E65A83DA 2003-08-28

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    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
    =PvSJ
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.6. Will Andrews `<will@FreeBSD.org>`

    pub  1024D/F81672C5 2000-05-22 Will Andrews (Key for official matters) <will@FreeBSD.org>
         Key fingerprint = 661F BBF7 9F5D 3D02 C862  5F6C 178E E274 F816 72C5
    uid                            Will Andrews <will@physics.purdue.edu>
    uid                            Will Andrews <will@puck.firepipe.net>
    uid                            Will Andrews <will@c-60.org>
    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-----

    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
    =inzo
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.7. Dimitry Andric `<dim@FreeBSD.org>`

    pub   1024D/2E2096A3 1997-11-17
          Key fingerprint = 7AB4 62D2 CE35 FC6D 4239  4FCD B05E A30A 2E20 96A3
    uid                  Dimitry Andric <dimitry@andric.com>
    uid                  Dimitry Andric <dim@xs4all.nl>
    uid                  Dimitry Andric <dimitry.andric@tomtom.com>
    uid                  [jpeg image of size 5132]
    uid                  Dimitry Andric <dim@nah6.com>
    uid                  Dimitry Andric <dim@FreeBSD.org>
    sub   4096g/6852A5C5 1997-11-17

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    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
    xRwUHYhGBBARAgAGBQJFyxVpAAoJEAcwX4a9TftQbu8AoIJm3/jPblmyeGQkC++x
    VLrU/0SbAJ4l/BPPCLOupNirFGxjGC4epnQow4hGBBARAgAGBQJF8/UvAAoJECmO
    j4RKTuYj1DoAn3BmreRuw4Kx6LCfOIfwzVCvddlXAKDKpYxmbR5E7sRgZ33bW0cm
    jSgvgbQqRGltaXRyeSBBbmRyaWMgPGRpbWl0cnkuYW5kcmljQHRvbXRvbS5jb20+
    iFwEExECABwCGyMCHgECF4AFAkM3P9YECwkKAgMVAwIDFgIBAAoJELBeowouIJaj
    veYAnixTEZ3p3JZGZyVA4LteIltRLpgIAKCEyfiPRlQsKaHhhFkArm2D0eS1+Ihz
    BBARAgAzBQJDWOwGBYMB4TOAJhpodHRwOi8vd3d3LmNhY2VydC5vcmcvaW5kZXgu
    cGhwP2lkPTEwAAoJENK7DQFl0P1Y8XIAn3u4wVGHGp48vrlkD7LrAkgMa4i9AJ4k
    uTexj7XLEDuqfFKKSKhzDqqeYohGBBARAgAGBQJD/amIAAoJEOYLp9vIqq1APR4A
    oIPX7sBet1QQKNvCs0bLDFkjZvKTAJ4v5okd559cL7rO75QY/wuHRwpgTIhGBBAR
    AgAGBQJFyxVpAAoJEAcwX4a9TftQy4EAn0wt9VUlf8wXmumsp1C5i4NqISYyAJ0b
    VuDsgxkGlhnxL+FuStrueQDWAIhGBBARAgAGBQJF8/UvAAoJECmOj4RKTuYj1kkA
    oIkd3JjzUCNH7wInYbSqbqMqF7hCAKDKE8CZQVY9lI8pYxLIPH90O31Fm9HTX9Nd
    ARAAAQEAAAAAAAAAAAAAAAD/2P/gABBKRklGAAEBAQC0ALQAAP/+AC5IYW5kbWFk
    ZSBTb2Z0d2FyZSwgSW5jLiBJbWFnZSBBbGNoZW15IHYxLjE0Cv/bAIQAFQ8QExAN
    FRMRExgXFRkgNSMgHR0gQS8xJzVNRFFQTERLSVVge2hVW3RcSUtrkWx0f4OJi4lT
    Z5ehlYWge4eJhAEXGBggHCA/IyM/hFhLWISEhISEhISEhISEhISEhISEhISEhISE
    hISEhISEhISEhISEhISEhISEhISEhISEhISE/8AAEQgBIAC8AwEhAAIRAQMRAf/E
    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
    p3ZoprcVEgZAeA==
    =PPl8
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.8. Eric Anholt `<anholt@FreeBSD.org>`

    pub   1024D/6CF0EAF7 2003-09-08
          Key fingerprint = 76FE 2475 820B B75F DCA4  0F3E 1D47 6F60 6CF0 EAF7
    uid                  Eric Anholt <eta@lclark.edu>
    uid                  Eric Anholt <anholt@FreeBSD.org>
    sub   1024g/80B404C1 2003-09-08

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    mQGiBD9dFQARBACzmGtuaKFqQwoRV32TI4ANBPHPlXkKXJ1WYQQkahzP/VfzNOUH
    VbjIMQqrNPawOcrFyEFuI/FJLWXewhrcrM+of831BXWqnQ7ketGqKUO3xT18N1MG
    BVCx7F1wpPW42YkhFVAubZ5tyHLOVSc+iJZVGgZ5mUi57odqZ1l+rnqpjwCgnXx5
    tas++vGBPk70vcIP+ZmswGMEAI0Lfr7Qy42P6hbYJZpk/NVAvXMZMUyK7fti2lR8
    BCOQr8lSdFUZMAqOhlGSfr75Lp8YhR4R4qCSISPXIbtkpYpS5A4YOk22qljLfyrC
    vki3U3Qum1eO2L67jswb+hQ7pCeaddNm9Jmsg+CJOZl6nfDIJpC8yoXH76W8tXAm
    1DgiA/96RKTseIR0z79ahlxX5HDr2A5bPM5CZBdPba4tSuFIwd28HVUdLhJmsGpC
    uVnQ5VnhBh5coNBhcb+ngZCOr9NvvyvwrxdYYGvuABeWS3v2UGx7XnJQmBQubWYq
    CEk3wScZWhEoFchvPEVfXtzNBjI6sF1FWMYkAhHaYiH4M7rBiLQgRXJpYyBBbmhv
    bHQgPGFuaG9sdEBGcmVlQlNELm9yZz6IWQQTEQIAGQUCP10VAAQLBwMCAxUCAwMW
    AgECHgECF4AACgkQHUdvYGzw6veNhgCgij4I47kRmhRkdzJeftLig2TG8/gAnRcb
    r7ah3d3nPKNLRN+nQDTp0uxctBxFcmljIEFuaG9sdCA8ZXRhQGxjbGFyay5lZHU+
    iF4EExECAB4FAj/CqF0CGwMGCwkIBwMCAxUCAwMWAgECHgECF4AACgkQHUdvYGzw
    6vfvYgCeIy1G5U6YPFK2QZNhB7SazQXwvjgAoJmxWRZr8zKOmcMiYFf1tj05UDhC
    uQENBD9dFQEQBACpBlENAalxZonZ7K2NU6xiH/qz+XI+ZU6WQh58iUlM0QPUU8ta
    Ot8uQUL5DT6G5myFDZufYomYrdzaLxuZbzpWzDOFGqb9aWLlHC16ydWbIRvPif0D
    ar9wFJX3b5DFkVICUYXTKTx/O/VqcpGHH7tLInuipYRapOBrUw1LU87qLwADBQP+
    KbuF41ujgb7QfPX5x5Cdg9D9SZAQyxu5TbsSXmc4fuel10QFMdWyMEUW2rMLixYn
    cWw7AfziHCy3uWOOm1qxm8npYCIRp0jG3M/Jydc8iQTqL59v0/UBOxPQ1pYZxE/8
    EOmbHRHe9BQt4pfouuLVKXGzxg3NW6nXXNQVEeOyqFaIRgQYEQIABgUCP10VAQAK
    CRAdR29gbPDq9y8MAJ0dP1d27SdsNNU4d8nFpwrXfXXa2wCfRvgv8i7ziyodkgwl
    B8LNmWvWUn8=
    =2V8B
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.9. Marcus von Appen `<mva@FreeBSD.org>`

    pub   1024D/B267A647 2009-02-14
          Key fingerprint = C7CC 1853 D8C5 E580 7795  B654 8BAF 3F12 B267 A647
    uid                  Marcus von Appen <freebsd@sysfault.org>
    uid                  Marcus von Appen <mva@freebsd.org>
    sub   2048g/D34A3BAF 2009-02-14

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    mQGiBEmWjSoRBACy4CsdR35YB6pGzU1aa1mbTkLuF44VBjV8O9qji80zo/VJs3JL
    El0wIhM9pg6zObKkzOU5HJFU/6uazzzDnc+A8y3NJL3u+HoX/7c03e3yUZ6xl7PC
    ua8tO3IAQiB/cg/Ltb6iJa8FflfmCKGE0I2DXeR2vN9PpgQVkJW+/NSDbwCg2Nxm
    mfeO83a7C28G/MV70z5CTg0EAKdHCkACr+iB1WpOIKEmFkZRD0NXHEXYa6L2kPdY
    XPNJ893yu5YUmHMFNUdVxoIKaUKpIGPa+V4q6ojAilWJiaEB74W+teqNBzwhzyNv
    xfp/W6fNJtvC1DJkrxkag0penU9ZROkVEnZajIclFh5la3muxX07Qf2HjGZM3Cqb
    nz6PA/9gdPecNwo1N+9aX/CGrCw0DC1QVFc1HJqcL3pe2qQkMVDO7sfQkewtQOW9
    H2ZrDWlVxIohQ9/+vbKV1uOcJr5+egSGNTCNNuimh9Kp4LYMc1vNouQe1D9fsCXW
    2kcgO8FozH0O3uJ60gCak2K06iA+mGziNYLQH3IvjVswivxOyLQiTWFyY3VzIHZv
    biBBcHBlbiA8bXZhQGZyZWVic2Qub3JnPohgBBMRAgAgBQJJlo0qAhsDBgsJCAcD
    AgQVAggDBBYCAwECHgECF4AACgkQi68/ErJnpkfulACeI1WVnhrKTq/+O2Djbpuu
    Nyj/MYMAn0BMDpy4frZjlIMfhazixfk4cbjNtCdNYXJjdXMgdm9uIEFwcGVuIDxm
    cmVlYnNkQHN5c2ZhdWx0Lm9yZz6IYAQTEQIAIAUCSZwX8QIbAwYLCQgHAwIEFQII
    AwQWAgMBAh4BAheAAAoJEIuvPxKyZ6ZH48AAnRraNz0aFuSHUFaw8LXjROOTwld/
    AKCvawhTgwYKX3YjLzu9Jcc1t3UNj7kCDQRJlo0qEAgA2acv4O4JFQCzgJXhCQqn
    KHFeEqOcgpKlvIGlgfP4/hVOCms2LK3qk10JpcbDbkBn0cBW7usxvA3mDiF2ZnrY
    wIwAROI7SNSY60PydR6DXc6I21VAd7hmmcpqkJFXaSMvKkQcq7sAJGlSYVpPuBqZ
    1kCIu2vlPBdpT4W1hHxf7l4Q+h2ge4+C2beRv9V9vRVdlXeSqJT1o5EgE5CjZ6sV
    Eh+9/TQdkRAoGgQG4LZvDuhWfsSkDU6x/soFKOPCdTF/LytW8YZ6asN1EpVJihAe
    GseQdkwP8iK9Co90Ab27+5WVVrP+xkY+rULOngW2vIwJrWic6nk/a0/0MrPjFn3k
    IwADBQf/dMsSQncKSSn8Tg9KeeBLftirddz+Mos1j+1PYOc88vrMrHVodBfNtJlG
    zxAGwFyLtk/yA8/MuW219t57O3W49VYh+I8NenzlRmZr/ahn8t79UD7+SWmy8L5e
    3XD2+w9WTj9Lx1V41wFKvxVLItNAik58Oi9MHa/wR1LMRIeGFAVHWAZcxYLLKfGR
    lYcMmMTY4906sjJ6Z+ZVYILnTR360JdeiZbFdaCFGf2yUoM+HeA2+975CaRagu+N
    /HZKW4JSsiu15fvaLTPwFG6YXKcHL2zI0Vc5UF5nd9GGZdX9Y4ffBi3aPXgIOJm5
    eAf29A6Ne3/llt3RG3TduGacd1WghYhJBBgRAgAJBQJJlo0qAhsMAAoJEIuvPxKy
    Z6ZHPMYAn1s6Sdc/4Kkv8KQ0KaJNwmkQYkcSAKDLkzy/Ph4mOMm8jO6ZL+Orpo21
    CQ==
    =HKIb
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.10. Marcelo Araujo `<araujo@FreeBSD.org>`

    pub   1024D/53E4CFA8 2007-04-27
          Key fingerprint = 9D6A 2339 925C 4F61 ED88  ED8B A2FC 4977 53E4 CFA8
    uid                  Marcelo Araujo (Ports Committer) <araujo@FreeBSD.org>
    sub   2048g/63CC012D 2007-04-27

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    mQGiBEYxSRMRBACUOhoJNgNPJtP5AcENhALcif0n7o785oCDaTGrMNPV75DdnR8o
    +mHl4POS1bZ7RYHdo7SHCbJqu0nLO4OCeAagamnK4lW+qaa0KaC6WxBiS2/K3qFe
    Y4mDMQRPxBNUWUh7A6VpXMBWk8n6ieyMGLiLQj7+d0fImSY3NdX547qZswCgnjln
    RlpLKFjRIRtNt9RKZQbm0JcD+gMXo+MoUHHKKnSKIQt3u7rnN3Mpnr4OGsa7J6KJ
    whm6GPX0zHzjKUhXCDOJwaYBpOJYNLTTNS3nKpq7GOkQDg7Q4I89/Q8S6AVwCvX1
    N4Jdeebm0jJBrzVNdbezIYEBwL5k+2YN6FcaC1yKBTk3N7qF7/4dmfRNO14qLFaz
    E7T3A/94lP7YT9FHqmNr9RPuy9rmz1bZhU/7tEimLF2o2Y6ntxsbSY1StVHJj0ln
    cCNlMV4vrIP6Ce73W51Vw1iKNapQy2113lWVfc6dwLdhRxWDVMNPKW8ESxqrFSJ9
    IVTzZvPQoqrXOsuVKTej0MC395UbdiLGWckmsJIYVrPaX+C7lrQ1TWFyY2VsbyBB
    cmF1am8gKFBvcnRzIENvbW1pdHRlcikgPGFyYXVqb0BGcmVlQlNELm9yZz6IYAQT
    EQIAIAUCRjFJEwIbAwYLCQgHAwIEFQIIAwQWAgMBAh4BAheAAAoJEKL8SXdT5M+o
    kMEAn26jMz7Tux/fTt8Z6V59+qhhd62EAKCGEPvDrh8Ye46LyJJj2ZeA8sWNtrkC
    DQRGMUkmEAgAgSVxd8hyDpx7nndMLjTIfpla4/mOP6VSkmzF0Enj1ESzOeTVC765
    gtnjjsFq5Vy5Gv3wdLwwDkcCij5FkBCgSi9EBcp5ooFpNfN9UtHT6/2Z9X7laLiS
    qQtS7xbqU1bxUQ4sK6AdjhOgzdDz8KOeWUjs6WO+/Touq/gouggxMbg/SWjywsfk
    SkgJ9SwH/o+QXvTEloyTwqwA7ptckvFKeBiyiA8RI/T2wqHUHmRE7YrI+HZz1b8q
    kPqALkZFoZVgYEVHjIuuuT5KttaQYvAdHgWjgTTjugeCfHj186yQbIG3TOD0ToLc
    KXFycft7oYFku55Elo0bRS2mxT6/SptmrwADBQf9Gws09t+AcOYUaLH3V8EKLg24
    1r/aEfu7tPYMZ/xHmibOkxxxQgJEUAIqE4jZY6fMrwUj4F9p4Q8E3mN/wkpY2qHJ
    4yUI71cv7NEOeXLvU3bdS5wwvlEK3obIJZfhzefmUncPQ+pEVdbtoGT2ehosqe4K
    nw+bBE9q1Q8elF4mr6mNTavSZBs2FTJ84S009pbMyqyZZZ61RL1H0XmZV4s03Ywf
    tJpc/uTSwgB5I9SiSi1clafGLRzWx4BzToIeHmE70Ycl1PGJQ5kmf2tmTPrVbKCX
    F/4+S3Sn85D9s3jk6LfxMfLiSzErBkkV/zZaXcNFTPfGZ21Dp6/0IyKF+HnNuYhJ
    BBgRAgAJBQJGMUkmAhsMAAoJEKL8SXdT5M+omBEAn3t4uIC5dceYeU8j15UnzECK
    pAWBAJwI/yul4wCtXeyIhg0vYCrExTl5Wg==
    =3ciY
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.11. Mathieu Arnold `<mat@FreeBSD.org>`

    pub   1024D/FE6D850F 2005-04-25
          Key fingerprint = 2771 11F4 0A7E 73F9 ADDD  A542 26A4 7C6A FE6D 850F
    uid                  Mathieu Arnold <mat@FreeBSD.org>
    uid                  Mathieu Arnold <mat@mat.cc>
    uid                  Mathieu Arnold <mat@cpan.org>
    uid                  Mathieu Arnold <m@absolight.fr>
    uid                  Mathieu Arnold <m@absolight.net>
    uid                  Mathieu Arnold <mat@club-internet.fr>
    uid                  Mathieu Arnold <marnold@april.org>
    uid                  Mathieu Arnold <paypal@mat.cc>
    sub   2048g/EAD18BD9 2005-04-25

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    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
    =vtoU
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.12. Satoshi Asami `<asami@FreeBSD.org>`

    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-----

### D.3.13. Gavin Atkinson `<gavin@FreeBSD.org>`

    pub   1024D/A093262B 2005-02-18
          Key fingerprint = 313A A79F 697D 3A5C 216A  EDF5 935D EF44 A093 262B
    uid                  Gavin Atkinson <gavin@16squared.co.uk>
    uid                  Gavin Atkinson (FreeBSD key) <gavin@FreeBSD.org>
    uid                  Gavin Atkinson (Work e-mail) <ga9@york.ac.uk>
    uid                  Gavin Atkinson <gavin.atkinson@ury.york.ac.uk>
    sub   2048g/58F40B3D 2005-02-18

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    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
    =w86g
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.14. Joseph S. Atkinson `<jsa@FreeBSD.org>`

    pub   2048R/21AA7B06 2010-07-14
          Key fingerprint = 5B38 63B0 9CCA 12BE 3919  9412 CC9D FC84 21AA 7B06
    uid                  Joseph S. Atkinson <jsa@FreeBSD.org>
    uid                  Joseph S. Atkinson <jsa.bsd@gmail.com>
    uid                  Joseph S. Atkinson <jsa@wickedmachine.net>
    sub   2048R/5601C3E3 2010-07-14

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    mQENBEw9JfkBCACYbhnwk/miOjf46p2L6WXieiOHXd8No26MCqfF8J4MnzzqYI3w
    //hll+jcx4KqUeLhYQZJsGt5C912Pi1akA79CW99AFF4YXKSr002mo2br0/aGCtz
    YS+0CfdpHG+WUds+hUWmqDD5hUCH91FRsp5vLjrmxec/zTy/uzeQ/BIrr1PbGqLp
    EjKL8OL082s3raHdHA2P+xWAVJJU8FDZaZMdlQpQ0hoE0H8WxImnohIzXTbsYyGn
    k0ZbJmdxyp4BwiXqhNYyUQyU558mytW1UYTBnxUnUtyr4Mv05AgdBu44ZEs0qR7D
    MzJK0eST4Id/xN0Vgliw99aah5ugrpYmmP3VABEBAAG0Jkpvc2VwaCBTLiBBdGtp
    bnNvbiA8anNhLmJzZEBnbWFpbC5jb20+iQE4BBMBAgAiAhsDBgsJCAcDAgYVCAIJ
    CgsEFgIDAQIeAQIXgAUCTD4P5AAKCRDMnfyEIap7BshbB/4sdAZ2d0oC9+z5g89K
    Q04ZwB1ci7IPEFL1R5cexiy6Tffl4Lk+MO7LSB8dWZYyXCHklzojJQxizXgJjIAI
    +n9he2ERiRy4vsR4UGHDDx8vAoeiUmOVuvN84kn0//BiyMvghlDgFAXGTWO9N5Vt
    5QIdpuxzOBwa4g8RNXREVWAUXg3gOKAxlKsuVT1iKYvmfIVctiebYT+2togP7ASn
    AH2tbyq8/DBxPICaKCWazPTLtwjODbpkCpOFT9xv4jKep4eLrPBs8/c0NxrSrNh6
    8pNMdhR0pZdoZK5cz+aUaDkCRXuN5AGyoq3bjjbK+ZsZ+js0l5VABpznZBcbtMDB
    oKjyiEYEEBECAAYFAkw+DtAACgkQvlQxDBfwqjd5zQCgsKrfOUH7/kTiiSkuzQaF
    dh0aX5cAnj3KWkRRJ4vWv8Wuudj21+9uz2WziQE7BBMBAgAlAhsDBgsJCAcDAgYV
    CAIJCgsEFgIDAQIeAQIXgAUCTD0vGQIZAQAKCRDMnfyEIap7BnyTB/9/eq2FRn8A
    1BgYvM8dqhiXx36jGOlIbUAphCOXI9me++B3qdEvDolqPFJV3gaMzLX5G3TmrJRj
    BZ8dzL18TpIQFUexr28jsBNA8KBehzhqmTb58d6acePrj9IuumPIzi+K6+CZwbgd
    1E8w1Qpk4SRZgSbUtOXtltmmgpV14WMq/4cv18ViQ5u9Xqx4AbCMOlurkpEXCF4v
    5g+FMyXHHBK4chzJJu8m1WffihQ0Agnu6Nr0p8Atnqu+mYEhZwCyPcVoAoq3Jmxr
    dW31p2/ruyjPs2gmJ5KW8iabgkT+UI5Z9c3V7Og0xe9SoXhQHgKv2iKEjY6hQs/w
    sQrWDJRxWsHrtCpKb3NlcGggUy4gQXRraW5zb24gPGpzYUB3aWNrZWRtYWNoaW5l
    Lm5ldD6JATgEEwECACICGwMGCwkIBwMCBhUIAgkKCwQWAgMBAh4BAheABQJMPS8U
    AAoJEMyd/IQhqnsGQzEIAJLCxnC4LCYRvcCksOmhA+ot9oXES6HEGR+b5oldvGsz
    AZyn2twhTOcHBTjS+NqV49Jl9FeiChHO9Z1KzbE8OfSle66xdQA0zzUHSRF/YYBi
    cM/Nl+BA4MVEJnfJdT0iDtOjAxlvf/2eEg4dN26hEmVrzkAgUXW6RAIabSdvs58L
    DP++6nJONOhYQa/ph2eJSsnLNI3s2aIDyQUiZIKTrLjS0S28r6pyVxCL8rxZDeNP
    5APxYuaXxAp7PpQg5i6rFTjOxiVcZq7I9AT6HfK2bq5BbUALbYJG+L8tOkvLt2ZN
    U1Oqp0qAN5GqtXDkW972y093PXuMUN9faumQqvKDcQuIRgQQEQIABgUCTD4O4AAK
    CRC+VDEMF/CqN7oVAKCwkr0UwFhDDsRo6GX/9jLJSDiXkACfQWEijaQwdg2vOx3f
    eFBx5dJ2K+e0JEpvc2VwaCBTLiBBdGtpbnNvbiA8anNhQEZyZWVCU0Qub3JnPokB
    OwQTAQIAJQIbAwYLCQgHAwIGFQgCCQoLBBYCAwECHgECF4AFAkw+D+gCGQEACgkQ
    zJ38hCGqewbqzgf+KcT2D/SzGcZ0rmb3bSgUotGesuyFARkGr8YbJWVZBYmjtf1B
    bAVsrwBQR9PZZhtSMMyPnhciLQJaLkYwBv1ONTyV+Bc+ZRwfQuKDvDPoIvHKjKIa
    7EsGw1KTnpq2U1Xp8HoDdFqOv/G3af2E3jJUjxKHmLXTuaNvrgQyBhRm+7Jy7rXI
    V3v94dG1UvhtTF47c4T0BanysVNSWe/f1OQikY6J6bdNq95xF+/wOYzUAxfytDTq
    Ko8J9Y3QwCYea4K3ellxNdfJI5abWLSI+s1sSyTyg/7/4d8/IcGgGGmaQ0e9kSa2
    PZ0wHh68tkDBn8U60FIP5cy+bJuLRGopT2kDqohGBBARAgAGBQJMPg7gAAoJEL5U
    MQwX8Ko3P/cAnjloNxXgyrJUBp31OtlD5JyL81FiAJ9naRMq963euz/HuXgoNd/8
    m3d2kIkBOAQTAQIAIgUCTD0nNQIbAwYLCQgHAwIGFQgCCQoLBBYCAwECHgECF4AA
    CgkQzJ38hCGqewbkhAgAhfxgjsQrP1E6IekrhcpnLZACBwuQSFkCz+6gRZhZL/Ca
    3s/FLhkX9SSFlGCkEeISWEP2Y0qeMVZX+Xx2JlTjICzjEWrpu/2JC6eOACZIIWMi
    FxjEJ4rWxN/5lGaMEkFpY+BNI75jlK1rswN4997uGSZcz1EUdLdqOJHZZeu3f74r
    lV12Up8JIQzmxUOePOBNkNWJmFvCWedbxouHvLRZm5ClNSRED1fhS9XWel/UNfIg
    yLe+jiNRJeqFIrARCDwgoWvNMLuRM0anEf0irlsbz/tDrOPnX4nOCNPjH/5XP84g
    n11pw+RAShkirln8MeRqMS86TyamdXQWrUqJrf60IrkBDQRMPSX5AQgAvDd8Gg3P
    VmVWN2b8BjnmdefLWsjE7u0tJxCYW2tb8UbBJWagid7GS+pq4U7JNbbnLNQshXwJ
    7kLtFW9o99ql+oMkxctKpjmN6ZHUMmMtLenHkyrFVQtUzGZI13R0v9s5QqAg6O+v
    ZvESo9TlfLAoCBJmzqkp1jhqv/e2G437FNeSUqlVCq6mNqk3sLlY+Zh6RjADb1CT
    5HB0HWVzrUOj2xcvzrYduTjJJ7VQS4E4WGSTFyMVnEqvDahnaG0iTMeTn2Nfm/yk
    NMZ3knreBYrXC4lbvCVQugNifWqUj4LL0y+3DCJAG4TzMmeiomjvlVAOxYlpTAzF
    zIuuGl2eilO3FQARAQABiQEeBBgBAgAJBQJMPSX5AhsMAAoJEMyd/IQhqnsGm/gH
    +NvCjlIBTOWGEdBW75B0UTeSTCiAv3+CNbjk57mvA4k4iq7BM7KffLJtAKI4Oode
    MbrI8DqOvjav3uNUeiq+/CZJNZ/vOQUmgKpPRv+y5oDt2vMikTYxUAIuMItn0zoO
    jSQ2krVYxypf0tmZG9RSkk/EQrd5kOrSVdyrau5WTIhlcCle7BU/a1bYL+IX6kuL
    XEqr+vQDcqnpdCkmH/iNII9T1TSVaheELHfPQFdNemLfIiHef8F1oaKYesNR/QpE
    /nWvgalA/AtaOtMn8ls+FolKTYt1g77dS2c5RAJIo/RyLZKVfV3YEHjREjN8lVVn
    wmKGlCQF5zC50z2aIiJy6w==
    =99Ow
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.15. Philippe Audeoud `<jadawin@FreeBSD.org>`

    pub   1024D/C835D40E 2005-04-13
          Key fingerprint = D090 8C96 3612 15C9 4E3E  7A4A E498 FC2B C835 D40E
    uid                  Philippe Audeoud <jadawin@tuxaco.net>
    uid                  Philippe Audeoud <philippe@tuxaco.net>
    uid                  Philippe Audeoud <philippe.audeoud@sitadelle.com>
    uid                  Philippe Audeoud <jadawin@freebsd.org>
    sub   2048g/EF8EA329 2005-04-13

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    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
    =Ed5M
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.16. Timur I. Bakeyev `<timur@FreeBSD.org>`

    pub   1024D/60BA1F47 2002-04-27
          Key fingerprint = 84BF EAD1 607D 362F 210E  69B3 0BF0 6412 60BA 1F47
    uid                  Timur I. Bakeyev (BaT) <timur@bat.ru>
    uid                  Timur I. Bakeyev <timur@gnu.org>
    uid                  Timur I. Bakeyev (BaT) <bat@cpan.org>
    uid                  Timur I. Bakeyev (BaT) <timur@FreeBSD.org>
    uid                  Timur I. Bakeyev (BaT) <timur@gnome.org>
    uid                  Timur I. Bakeyev <timur@gnome.org>
    sub   2048g/8A5B0042 2002-04-27

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    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
    =r3u1
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.17. Glen Barber `<gjb@FreeBSD.org>`

    pub   2048R/A0B946A3 2010-08-03
          Key fingerprint = 78B3 42BA 26C7 B2AC 681E  A7BE 524F 0C37 A0B9 46A3
    uid                  Glen Barber <glen.j.barber@gmail.com>
    uid                  Glen Barber <gjb35@drexel.edu>
    uid                  Glen Barber <gjb@glenbarber.us>
    uid                  Glen Barber <gjb@FreeBSD.org>
    sub   2048R/6C0527E5 2010-08-03

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    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
    LBT/tevLahQa3eAzSFY7G2NY
    =qcjn
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.18. Nick Barkas `<snb@FreeBSD.org>`

    pub   2048R/DDADB9DC 2010-07-27
          Key fingerprint = B678 6ECB 303D F580 A050  098F BDFF 4F3D DDAD B9DC
    uid                  S. Nicholas Barkas <snb@freebsd.org>
    sub   2048R/36E181FB 2010-07-27
    sub   2048R/BDA4BED3 2010-07-29
    sub   2048R/782A8737 2010-07-29

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    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
    w7zsUcXBoDCfj8IfFwAxKholDgQBBt1pQcCbgIk=
    =zoiI
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.19. Simon Barner `<barner@FreeBSD.org>`

    pub   1024D/EBADA82A 2000-11-10
          Key fingerprint = 67D1 3562 9A2F 3177 E46A  35ED 0A49 FEFD EBAD A82A
    uid                  Simon Barner <barner@FreeBSD.org>
    uid                  Simon Barner <barner@in.tum.de>
    uid                  Simon Barner <barner@informatik.tu-muenchen.de>
    uid                  Simon Barner <barner@gmx.de>
    sub   2048g/F63052DE 2000-11-10

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    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
    8o9/o+UAoI65F9bRERosGt0m0f0q1WwwdGcz
    =HMUk
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.20. Doug Barton `<dougb@FreeBSD.org>`

    pub   2048R/1A1ABC84 2010-03-23
          Key fingerprint = E352 0E14 9D05 3533 C33A  67DB 5CC6 86F1 1A1A BC84
    uid                  Douglas Barton <dougb@dougbarton.us>
    uid                  Douglas Barton <dougb@FreeBSD.org>
    uid                  [jpeg image of size 6140]
    sub   3072R/498795B4 2010-03-23
          Key fingerprint = C0BE C1E3 8DC8 D7F4 8E6C  732B 0C14 D9CF 4987 95B4

    -----BEGIN PGP PUBLIC KEY BLOCK-----
    Comment: Public key 0x1A1ABC84 for dougb@{dougbarton.us|FreeBSD.org}

    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
    FthQTWFB0ZgtsA==
    =Mlfh
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.21. Anton Berezin `<tobez@FreeBSD.org>`

    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-----

### D.3.22. Damien Bergamini `<damien@FreeBSD.org>`

    pub   2048R/D129F093 2005-03-02
          Key fingerprint = D3AB 28C3 1A4A E219 3145  54FE 220A 7486 D129 F093
    uid                  Damien Bergamini <damien.bergamini@free.fr>
    uid                  Damien Bergamini <damien@FreeBSD.org>
    sub   2048R/9FBA73A4 2005-03-02

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    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
    =uQuq
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.23. Tim Bishop `<tdb@FreeBSD.org>`

    pub   1024D/5AE7D984 2000-10-07
          Key fingerprint = 1453 086E 9376 1A50 ECF6  AE05 7DCE D659 5AE7 D984
    uid                  Tim Bishop <tim@bishnet.net>
    uid                  Tim Bishop <T.D.Bishop@kent.ac.uk>
    uid                  Tim Bishop <tdb@i-scream.org>
    uid                  Tim Bishop <tdb@FreeBSD.org>
    sub   4096g/7F886031 2000-10-07

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    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
    5ACdHjn4iuMiXZA8cDDPAi8VybndPak=
    =F66Y
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.24. Martin Blapp `<mbr@FreeBSD.org>`

    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-----

### D.3.25. Vitaly Bogdanov `<bvs@FreeBSD.org>`

    pub  1024D/B32017F7 2005-10-02 Vitaly Bogdanov <gad@gad.glazov.net>
         Key fingerprint = 402E B8E4 53CB 22FF BE62  AE35 A0BF B077 B320 17F7
    uid                            Vitaly Bogdanov <bvs@freebsd.org>
    sub  1024g/0E88C62E 2005-10-02

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    mQGiBEM/sJgRBAD26RM3o9QC+V5JO6/zr3ffRnNb08Bc6YIvpTd8yUhc4AIa1Zbg
    QHoUNZ0pOLffeZ3i0wnqV3lMV1cPMtvSRWlvh+XSiSg8hYlnh7+oAwmqs0Zev1r7
    w/In683ytXREuidcak8qWq4GAkET20sIICV7Ye56HJDlKrtOjUWDhVQJvwCg8jUp
    CDtJ8V6Cw6GgjxH1iaNR1X0EAMKCUJwZgIoh2Rpqfrbwv92AD7dmaJJLVfnUSMCE
    GvjcZ+O41PpvWi3PkxmgA3Zb0sJ3OSfgPi3Tnj3Nllyhqnf3WO1Yumzq3myBg+F/
    qH9a8BXvVJlk/2cbYUC6uJeGMCC971X3hceu51J41k0ano7/ALIWeoUC1HhkAOaP
    f7IoBADkQCDuIvdJ7KebBMgXIHwAJnycVZsXXQPlOx0gty4+OVMY9PfpEm7T+1DM
    mWwuckntM9tSYuInbUPco70LBxuHHBNnhiUOTkijZ5GK/VF+WPnqOEopkjL7LD2q
    wSYqGaBPbl/noAoEb3Nx7h8D94kJUF7Gchs9fCH6UxHd+/Q8jbQhVml0YWx5IEJv
    Z2Rhbm92IDxidnNAZnJlZWJzZC5vcmc+iF4EExECAB4FAkM/sJgCGwMGCwkIBwMC
    AxUCAwMWAgECHgECF4AACgkQoL+wd7MgF/cbhwCghoShm9pCHbiUjXin1mR+0HaU
    XvAAniOPVmeKUuBBKCc3KLPIhfCCKt9viEYEEBECAAYFAkM/zzcACgkQhdRQRWtp
    GwOrjACfRJUhoojMI3sBMsjH9IuCwj8CikoAn3RlHMmCAx7JIiAMmg2gC1qjIUsU
    tCRWaXRhbHkgQm9nZGFub3YgPGdhZEBnYWQuZ2xhem92Lm5ldD6IXgQTEQIAHgUC
    Qz+yTQIbAwYLCQgHAwIDFQIDAxYCAQIeAQIXgAAKCRCgv7B3syAX91XMAKDJ89F+
    46BctXCALIn53c89waWDrQCgmCHSVr/rVUMU6fnyHtoNvYXtkFuIRgQQEQIABgUC
    Qz/PMwAKCRCF1FBFa2kbA/bwAJ4mwlXag5w3scB7heyAtqr7w6491QCghh/fVv3t
    EOFNlmwonrudaMSIYTm5AQ0EQz+wmRAEAKke9/e3jLaDx8i86+J0eTOAypCQy7WU
    QajhZDFqBHbBQTDRbcYG1dLYd/sC9oUwqgaLe+yEYw3JdfsiaiHsE2yZ/S4S2wTL
    7MrUqOc1aVPu95c3Xcef13DKCMx36B4EbMwJa00bU5ut6/7tHly5Edb8nkn5vKP4
    00TbjMa/3ZCHAAMFA/9OffxCzJmwUjCOxAg2GBberPxovtCtwAw7goKZzuga9+9Q
    dZBICMIc4l/I+zjDlphF/k9I5CQGOwoKTo+OCsZN7SSAB94NV9BEoA1MX9drWv0y
    CZJlD1bSrcPFVjWajXqC6NpAAiCdQapvV1sJK0F09v/RTHdPAZcRnpg/YS2jDohJ
    BBgRAgAJBQJDP7CZAhsMAAoJEKC/sHezIBf3nP8AoNBIM6JqCrnzQealKln3Tc+t
    HMPIAJ9td+R2zFqwuX+IMk135J0T/PXeaw==
    =bBFz
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.26. Roman Bogorodskiy `<novel@FreeBSD.org>`

    pub   1024R/1DAACA46 2004-05-25 [expires: 2009-04-26]
          Key fingerprint = AC27 CF29 5E51 E53F 8C8D  DB90 8074 5B38 1DAA CA46
    uid                  Roman Bogorodskiy <novel@FreeBSD.org>
    uid                  Roman Bogorodskiy <bogorodskiy@gmail.com>
    uid                  Roman Bogorodskiy <bogorodskiy@inbox.ru>
    uid                  Roman Bogorodskiy <novel@clublife.ru>

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    mIsEQLMkmwEEAM4cQe1CNDdIWcOlb8221icriocsnJOWZ4XMX1Ww7CTUfPZU31Ho
    boNl3sK/+KsJxwt6frqOBnnvtQYQEYzIQNJ4pMKC2Mz15jMYndwsuxg6L09e6+R1
    7RfIEFEXU7p6YWQFLoBFUW16XF7ye8YrjFJxAEfTa4jnXF27ERopVpUFAAYptCVS
    b21hbiBCb2dvcm9kc2tpeSA8bm92ZWxARnJlZUJTRC5vcmc+iL0EEwECACcCGwMG
    CwkIBwMCAxUCAwMWAgECHgECF4ACGQEFAkgS0BsFCQlA3vgACgkQgHRbOB2qykZG
    oAP8D28j3pBxbOch9/mlDL048M1lWMnJhAJ1wYpcAbmKseBrEWCz9czxPj/UgUNl
    6EfRLT71W0HOH/eN74zJqwWb80wviX9nOKApsmqtv528fujoMYF+XeweBX4a+Cta
    D+krJUxM0rA8kETvLcHCehl9EDJdNHHM5piSCTrnj8XBNJS0KVJvbWFuIEJvZ29y
    b2Rza2l5IDxib2dvcm9kc2tpeUBnbWFpbC5jb20+iLoEEwECACQCGwMGCwkIBwMC
    AxUCAwMWAgECHgECF4AFAkgS0B4FCQlA3vgACgkQgHRbOB2qykZ1+AP/ajL5tZdQ
    hoM075iBc+q34czeeLccV6nXGDkQSyJ2gp654+oOiDKIU+HeaaNVpgvvtzZqoFQZ
    GH38DWM0G/WLuaEJDsCPSVHdKMgAe98FaLWe/oekTS0KF/epuK73GHRBNZaCPrcn
    tVWALyo/O6V65023Lor4DcU6pjhDbwk6Yrq0KFJvbWFuIEJvZ29yb2Rza2l5IDxi
    b2dvcm9kc2tpeUBpbmJveC5ydT6IugQTAQIAJAIbAwYLCQgHAwIDFQIDAxYCAQIe
    AQIXgAUCSBLQHgUJCUDe+AAKCRCAdFs4HarKRnIcA/4iBqhJ7zdEx1j1qQ0rj9hO
    R/OQISesx17fRMwd/u3tmDjAyX22Pgqhhj56f2eJ2SQUr0PJXin6UwaYEQ4ifbz0
    z6zVZlmiLVEwJk6O43dhHc6k9RxM/eDltzbCa4aBQwuQg3Seyg4Z2HCvRrKv9ESZ
    9NZVI+hqVyQl9hyJ95b8CIi0BBMBAgAeBQJAsySbAhsDBgsJCAcDAgMVAgMDFgIB
    Ah4BAheAAAoJEIB0WzgdqspG/3kD/0isk4pKJTMKCcoaGcZsGW6C3e5CZw8Mr+OW
    AsxHGh/Iv3iGB7gGoO07R/I+uAMNR2VbPQAvYPlMwrIhubNzUZRzkdlBu7QQyT7C
    lyEIAn/ikUzfmxvD2U0D0SrHguz7YcSH1Vjb9R7J8dc+qlPJBRXIX6saNG6+FbSk
    KN+J8hOBtCVSb21hbiBCb2dvcm9kc2tpeSA8bm92ZWxAY2x1YmxpZmUucnU+iLwE
    EwECACYCGwMGCwkIBwMCBBUCCAMEFgIDAQIeAQIXgAUCSBLQHgUJCUDe+AAKCRCA
    dFs4HarKRpUEBACyMr1jFO6G1HTwixax4+jMmto+9Mdp3uifEr/Rwa6mFyIGQx1G
    3N/bHWgWNIUkD8ZAKoD4jaijPNpE9yEUsXSkZD7TOkvRfsFbGDb0PissDnraRr0o
    hNH2K/edi23vXQH/rHj7N/B4fjF+3x0jocg3+Dnh1ADEJcPBN2HQGVAkkA==
    =ilKf
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.27. Renato Botelho `<garga@FreeBSD.org>`

    pub   1024D/2244EDA9 2003-12-16 [expires: 2015-10-18]
          Key fingerprint = 4006 C844 BC51 AD75 CE60  6E24 E824 5B89 2244 EDA9
    uid                  Renato Botelho <garga@FreeBSD.org>
    uid                  Renato Botelho <rbgarga@gmail.com>
    uid                  Renato Botelho <garga@freebsdbrasil.com.br>
    uid                  Renato Botelho <renato@galle.com.br>
    uid                  Renato Botelho <freebsd@galle.com.br>
    uid                  Renato Botelho <garga@brainsoft.com.br>
    uid                  Renato Botelho <garga.bsd@gmail.com>
    sub   1024g/7B295760 2003-12-16

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    mQGiBD/fJGwRBAC/raNISTKpkhGpJA6iYgLgHzfbJU8uwiej3s+7psND31ZYSEhH
    VkSxq10pHFeVCsbeyh/FMsru+pDJXRcsACkPTJR4CzC1VW/FmsDTKAbaZPFty433
    xbSU83u3XAqv7JQBtsTs8o7RBlJtiiAuFbtDcsotEASJ8UGKFVxdRSlHwwCgsspa
    c9VFTt28MSnF23UKv32YA5cD/iLUNRgZqkZHjdGHxaMcpEwVDWFC8nrygNNQ5LBo
    cfb+NAVT3vSIc5NDeuP7XPSdJcWqCkH0+XUTqzuspo9NIYyjHoOj+JulZtW7CFB8
    vFWjjbeajKlp6X4EisvdNdwfpzivp5UanNmNjDGth3caN3oPowyVDpZITeTYgRd7
    zUIyA/9Mx44O+40mpbYbyn0tatgeb7KYUKV7SZgrPwew0Pt10VzwzqXEQFbP2jS+
    AvO3A/zrEr1xUwMij++E7rvW/IgE6lEE+KYCI7y1Xg4wHo8WieVCn8PGNZWM+bEj
    UnUxRSH5l9fgHsJmcOauc1x0a+opNcMtvZmqPTjbZvAPjBhv3rQiUmVuYXRvIEJv
    dGVsaG8gPGdhcmdhQEZyZWVCU0Qub3JnPohmBBMRAgAnAhsDBgsJCAcDAgMVAgMD
    FgIBAh4BAheAAhkBBQJMverXBQkWRMfrAAoJEOgkW4kiRO2pEK4An201FtTBLXFt
    +5jK91JwaTO7TPKuAJi5DxFqma1flzjZGCeZUATDDVdAiGcEExECACcCGwMFCQvI
    QGAGCwkIBwMCAxUCAwMWAgECHgECF4AFAkLSYE4CGQEACgkQ6CRbiSJE7amQ+gCe
    Oea5QcNRuMo26D9mC7uq7QogKdkAoKmVqOnzFnvGJR2nDy1Nkkil56yaiGcEExEC
    ACcCGwMGCwkIBwMCAxUCAwMWAgECHgECF4ACGQEFAklsglkFCQ8f1O0ACgkQ6CRb
    iSJE7akf1QCfZ5JXobtJdTTKaMfMAhnsXA5AFN0AoJoogcAQwYt79WZIfEXHC1vv
    YeyKiGcEExECACcCGwMGCwkIBwMCAxUCAwMWAgECHgECF4ACGQEFAkxM224FCRXT
    uIIACgkQ6CRbiSJE7ak9PACfXcokm/B1iJGgYVZRoPWOryloBcoAnjB2/d3Tvf/d
    ilJ8CbD4AoUt86WptCJSZW5hdG8gQm90ZWxobyA8cmJnYXJnYUBnbWFpbC5jb20+
    iGQEExECACQCGwMGCwkIBwMCAxUCAwMWAgECHgECF4AFAky96toFCRZEx+sACgkQ
    6CRbiSJE7akapgCgjlt1aLxPyQjWDTSmriqeigsQ9kYAn2hjjKn6zrUeEULW5MvH
    CKXWhzq7iGQEExECACQFAkDjBMYCGwMFCQpM1+IGCwkIBwMCAxUCAwMWAgECHgEC
    F4AACgkQ6CRbiSJE7alT4ACfWjvokOVfGUTSSWvqOubDPDGDviYAoK5vFOzZAZxZ
    rbVca3cmeM8sQ3PgiEYEEBECAAYFAkonWGcACgkQ5Gm/jNBp8qAj+ACcDZqmEs8P
    NvAoy03BEhxtqBl+AocAn02j41ZurQXefPJBvR0KJLiwZ8zxiGQEExECACQCGwMG
    CwkIBwMCAxUCAwMWAgECHgECF4AFAklsgl8FCQ8f1O0ACgkQ6CRbiSJE7amPHQCf
    UDSHI/QGAJJVl/6zU1kPOsXyKR4An2jyLFSVaeiNdliyTLA3oOVUzflZtCtSZW5h
    dG8gQm90ZWxobyA8Z2FyZ2FAZnJlZWJzZGJyYXNpbC5jb20uYnI+iGQEExECACQC
    GwMGCwkIBwMCAxUCAwMWAgECHgECF4AFAky96toFCRZEx+sACgkQ6CRbiSJE7alR
    HwCeNIsSZgDp7Kd3j4fEQ450fTywLaYAoJU8YMl8gd0v1TIiYRYxCso10l9TiGQE
    ExECACQFAkUYI+YCGwMFCQvIQGAGCwkIBwMCAxUCAwMWAgECHgECF4AACgkQ6CRb
    iSJE7akNPgCgrLHsvMcelxgFZ/ILqNLUvZ0D8FYAoJErtICnUiWffarCD4i7steV
    EJdFiGQEExECACQCGwMGCwkIBwMCAxUCAwMWAgECHgECF4AFAklsgl8FCQ8f1O0A
    CgkQ6CRbiSJE7amQ+QCfazEqKriQLG8HxkwO8mBav8chQ1QAoJtyNWWk9/fv16Ms
    g7i7GSaLiTDTtCRSZW5hdG8gQm90ZWxobyA8cmVuYXRvQGdhbGxlLmNvbS5icj6I
    ZwQwEQIAJwUCR3PakiAdIFRoaXMgZW1haWwgaXMgbm90IG1pbmUgYW55bW9yZQAK
    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
    IHN1YmplY3RzKSA8ZnJlZWJzZEBnYWxsZS5jb20uYnI+iGcEMBECACcFAkdz2rog
    HSBUaGlzIGVtYWlsIGlzIG5vdCBtaW5lIGFueW1vcmUACgkQ6CRbiSJE7am6EwCc
    CaNgOvMN1RlSmJ7viDNqoAsrh4oAn3xfLzP0mntT7FeCMf/zmgH7rI5GiEYEEREC
    AAYFAkJdYbEACgkQSypIl9OdoOPXQwCfXvAeWbjFLcd1d7j45TSipB+VtREAoNZz
    Z3yGvwVOxyrcIFu9MpP6dcT+iGQEExECACQCGwMGCwkIBwMCAxUCAwMWAgECHgEC
    F4AFCQvIQGAFAkLSYEoACgkQ6CRbiSJE7anSAACfT1B0Mn0qTTFgC2cqSMK7HDMX
    3uIAoKir+tawlN5ZrDWN1jRqF7Adz+F9iGcEExECACcCGwMGCwkIBwMCAxUCAwMW
    AgECHgECF4AFCQvIQGAFAkJBY8cCGQEACgkQ6CRbiSJE7akxGQCfQ4gj70L0rbMs
    Nb3E7nZH0Z40lvkAoJEqABGLP3IxAgEvuOAsYf3GEKdstCRSZW5hdG8gQm90ZWxo
    byA8Z2FyZ2EuYnNkQGdtYWlsLmNvbT6IaAQTEQIAKAIbAwYLCQgHAwIGFQgCCQoL
    BBYCAwECHgECF4AFAky96toFCRZEx+sACgkQ6CRbiSJE7alPvwCeM5aBxEyj+xcp
    aXaTTPcPMqfM+LkAoI/Fuz0IhnG+r0wAFwW+SyTsGzJWiGgEExECACgFAkxM274C
    GwMFCRXTuIIGCwkIBwMCBhUIAgkKCwQWAgMBAh4BAheAAAoJEOgkW4kiRO2pXpMA
    njGZ/MHhkjmdeFqHZcTPW62YMB/IAJ4/Ci6BMFPUWgtth0yL00q/xL3t5bkBDQQ/
    3yRtEAQApbe0v2n44Ryi3dUr3dZ6HruyCEj/5GuW8F7yz2CyZjsKcnkUC+nnsUn1
    8YOBQhGBei1aMvjs4j9xk8dORKxNcm6gsfAoApKS3TYUasaW2QmToJJRSFDVbMo9
    Bg4Ul/NbvlU1b81pu0Zww1OcJn3BctuKqG7mKGPIjA3KOYUfSH8AAwUEAIXm/DCs
    HGGIwJCHGDmEAsGIYJk9g2NWh2ObW/2uUblHbDd6h63gVWxd5Y4n1Ql9lNDqhaiJ
    l4BRAVEaoW4tK0JNZOhtf2drAPZsrOm3/Jc29D74T55lgOILJd2GQ9a4sy+OzzXf
    rYsB77C21vkIUi/pYZfTz/f/Ar1MT1mVj3/uiEYEGBECAAYFAj/fJG0ACgkQ6CRb
    iSJE7amGagCgsHfJXA4PvaIw/d2hHS9VlAh5Z6cAoKPyew4gQHo/5fCeBunSpIQb
    AanR
    =4VMy
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.28. Alexander Botero-Lowry `<alexbl@FreeBSD.org>`

    pub   1024D/12A95A7B 2006-09-13
          Key fingerprint = D0C3 47F8 AE87 C829 0613  3586 24DF F52B 12A9 5A7B
    uid                  Alexander Botero-Lowry <alexbl@FreeBSD.org>
    sub   2048g/CA287923 2006-09-13

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    mQGiBEUHm3YRBAC/bBl9E1saFAVuS5wtnBQ7BbXPOr21SBExZ3t+f8k2PG2SsKYL
    xNMAn1drC9UdbUVcQDzlGcWQONYRKj4kWoYSYNDOElwa7Rv/f4z4NnIhOxxT6G+M
    qQTFWj6MjrCVPZh+b5Y3DTdmNxuJq+Yf9+DFsxc0i+xhMrbbjuokWRFdxwCgvb8Y
    fLNYJqjf9V5hhnvt3K2/L9sD/2frMKR7o1Ie3CgQbhZgYLkGlMmAlyrKLamdRzRl
    AmjJ35mkIQ9iu36BpsUmVL9WPjy2sdep0FyRLRgu5/q9qhJxy31GsVYv5y9m9+px
    X+00CN1a/5g1d6gxLUY30KsOL8OXSqwmq36iJHEsRxFfs9NJ/dBui1cFW0dDNmdg
    nE9xA/0aX+9BPSiu/hXFa5A2Q8fCB1wOcaru+QzgbY7nWnse2PQ7Nsv0xEMkaYdT
    AqA9I/UyssYeRygD7H8edd24xy39EBAVLLCD57Tjye2fCOyWBIGJU7Jtc4b/DJgm
    6bP2bSscB44ybBmlWdza2sgui9D4beWQvEVZGgpsnqnCjJQDOLQrQWxleGFuZGVy
    IEJvdGVyby1Mb3dyeSA8YWxleGJsQEZyZWVCU0Qub3JnPohgBBMRAgAgBQJFB5t2
    AhsDBgsJCAcDAgQVAggDBBYCAwECHgECF4AACgkQJN/1KxKpWntZ4wCfWY5pLq6V
    rCpsAiGcIniMBUoueTYAn0b5suADC5pawqBP/Xbv95e69gDWuQINBEUHm5sQCADC
    7ynjQmBXd8q2Ei9ab6oO6Q4XbEu2eMLcm1C4b1cu8Riyb0bYI8fQ0JkYPWBDdgvG
    iVuDGHjLRCJm8LDV4VAhpkn6obPaDW2ZVf3urkAsCszSmv0jlEO+grOj48c7sLeR
    NpZX76FCKFtgHClQOSfR/9eoKFQh5jveWgSQ0gEW95gGQShy1cTi1XUdJdxilL6G
    GNBfSNgAFwQBkepgzjR853bVysoZEF0Z9MF/PZgmAXoPYTs54tA24LSETmBo5BjA
    yUTI6Dv4+jKXqmDphX6BjxeJkYxlKAyVBgNrKZahPoyOPd0FvMINn4MpOJdpq3sv
    PSXwbexIrroMJQz7nR9vAAQLB/95AIR3oGIOhDCAUwf18K0Uv+v2cKVhClHqyAGy
    zHjyoyEoSnhApWVXD2hNvqfxy37t5/5EzaU0mvC0GMpv0trBa9uBRk8GrXgILnzh
    dYjhbSPZStx3D/0lFBLHt9qYjFFQweKNun9coOV0TzdXigH5PFxiks90Qc/sfr6N
    v6hXA4MAe81zeEdQafBkreHDo9fL4i+GwxF9novXNZ0C+YNJ6+3wOIJwacCZ1bdy
    gWTM8pTa7vtvtA0Pk4CZpGKSICg/jDq9dZT+vaNGFnKvQOQv1RPNLs/QqfvUo4ZF
    khopn5yHXGJjLZp0Zds4MdqXLddUNHXW20Yki11eZ9NXK1KdiEkEGBECAAkFAkUH
    m5sCGwwACgkQJN/1KxKpWnuSYgCeOgBV4svD8sqNBVN467Le6aLzPxIAoKsNXerk
    njcpzY8FzVuY52JnLNP4
    =CUqZ
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.29. Hartmut Brandt `<harti@FreeBSD.org>`

    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-----

### D.3.30. Oliver Braun `<obraun@FreeBSD.org>`

    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-----

### D.3.31. Max Brazhnikov `<makc@FreeBSD.org>`

    pub   1024D/ACB3CD12 2008-08-18
          Key fingerprint = 4BAA 200E 720A 0BD1 7BB0  9DFD FBD9 08C2 ACB3 CD12
    uid                  Max Brazhnikov <makc@FreeBSD.org>
    uid                  Max Brazhnikov <makc@issp.ac.ru>
    sub   1024g/5FAA4088 2008-08-18

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    mQGiBEipViERBACsCTYd7As236qQw4dG/xB8p3XbN7pFP/C4yjRJak2QZfsOQ4mR
    7liBgXc0FevU6FQOW4XrcRbQeGFlRE5pb3idwhTKNc58TEifGM2s2ZGgRrR0aIF+
    9s5ZbVNp75FgSsN+9ksAOmz1nSj+M9Ikz464YvA3bHvKP8QQCpPpBgiuSwCg5IBV
    XSvep/e502PHqsiP8H1zGjMD/0xDwDdLfnN1R5tuNDfZEN09BSRlYYFPmMlP177i
    DBCF/2gF1bQ7KL42qBCr49ngVMAEAUlmZwBIN0XvfGe0KWDvc4G/CYqcOiWhbBEA
    pvtJZHE1C/kIRFS/IiM7BVmkdVnn1MzJrGSVPAF85e/iyc1K05C/qCuulqm1aLpf
    8dOeBACDvyvk2uE7R11REnKa6FKvzS2X32YclSM2sApwl+LnFO9eT500Rxzy9ldP
    jKlKR/dO0DwUKxnUO6DOHAEZzvutx1f6ZJksXk/0OsSNkn7+TIt3pKb10udpcCag
    k/ik+o7v+2XB7BlydRBPwcaJE4fq+CWyAbgRfKROetwfTI3ItrQgTWF4IEJyYXpo
    bmlrb3YgPG1ha2NAaXNzcC5hYy5ydT6IYAQTEQIAIAUCSKlWIQIbIwYLCQgHAwIE
    FQIIAwQWAgMBAh4BAheAAAoJEPvZCMKss80S1+cAn0+WKUu5TxrXSF4N8WlRK0mU
    1tcdAJ9Fcv54PisOdQiVUSIw25LqSqWyJbQhTWF4IEJyYXpobmlrb3YgPG1ha2NA
    RnJlZUJTRC5vcmc+iGAEExECACAFAkiyz/wCGyMGCwkIBwMCBBUCCAMEFgIDAQIe
    AQIXgAAKCRD72QjCrLPNEjtdAJ4tcsvvos2CoXmZsTJxuVF0RaEwigCdHgBapPWu
    MPyv9FLRzdWelOfZ3m+5AQ0ESKlWIRAEAOzibN5tPXiGKAHPwaQgnVQiaKv/7HUr
    FVfqycyXJC0/nmJ59UNpJ+0Y4GDwDRYqWqGyyd9diKAUomUwbIuQ71BUibmIZQS0
    3v0jgcfnJAhgz7EFGewgQLHsYwzwTDtPNQCqxDEUwDLKla72ksuodqzx92Dj6SSP
    AfFN/6B2bvQbAAMGA/9XFhkt0SAqXV09CXs3QuHdzuJ0PLadaz31bWITmSLqW2FU
    /EwXt1615g/E/qIwa1PzjZT8JQDAEHKbT5XPXtTzvOAUp8JK2wW9P6JQ6YPT14Vy
    /9PiMvLThxNY3zWjWChWuEf8zohd922OSqlSE8vgOm0H7XUe480/FeP3RP1EKohJ
    BBgRAgAJBQJIqVYhAhsMAAoJEPvZCMKss80StqIAoKpjMeYK0fSi6GpfIaojuz59
    eHHiAJ9ws2o67xPKbWgdqMxn4MfLK+ojbg==
    =m+ns
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.32. Jonathan M. Bresler `<jmb@FreeBSD.org>`

    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

    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
    pX25BMHqkEMHAxahVagzguPetlTIHxHGRSH3lg==
    =ttzj
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.33. Antoine Brodin `<antoine@FreeBSD.org>`

    pub   1024D/50CC2671 2008-02-03
          Key fingerprint = F3F7 72F0 9C4C 9E56 4BE9  44EA 1B80 31F3 50CC 2671
    uid                  Antoine Brodin <antoine@FreeBSD.org>
    sub   2048g/6F4AFBE5 2008-02-03

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    mQGiBEelsqARBAC37tcs27BitWt9YeIYmpRNgtRH/ndAm8ecJK+7IuEqo1t9IglY
    Uy+lI1xW1H4LrIbmSKmwfg3Gj3lm+12avQ8mf0vVbl2RVxfOQZY2C127Qv6Mg/Ox
    Fwxb7UCWzYi+XAf5XVHyzKLaLq/S56serWDX+mGY83kLhVKXy7pL98bwewCgtr1D
    miY3vAu1NMoWPuZ/2kvLLh8D/i1Zisp0EE5B4QjRFbaSUzfk3tImTKLQtbj4F3S2
    Zo4hh3IRYLGq2OMJ+gH5c5KXMhaxqiK8XCO1pHNdCyaL1PZDW9s0sxPiVv5DDxHU
    Lm1BXyTIJyuAC8KVnMWIfHVoqIX45m0Br6IFyiHU3CFBSsarkC8088HViilTYGd1
    8InNA/4+wVDMqnht2/YeMqyYevKOGw69Dqe+1jeTNOg7h/1EOL2Sytg9EIfyTf71
    IxJAhsKU1ibjAMubERoTN16rPgTx4yrDtRSdfbmnHxrreih6PKsbiaKy76cnYaxz
    sz4VontIIaH+Ye+VmVIQsBS/QIBBki0j9YAzNDcJqCdWKcoeb7QkQW50b2luZSBC
    cm9kaW4gPGFudG9pbmVARnJlZUJTRC5vcmc+iGAEExECACAFAkelsqACGwMGCwkI
    BwMCBBUCCAMEFgIDAQIeAQIXgAAKCRAbgDHzUMwmcdHwAKCrHa3q1ixEdvmpU1Ny
    2SpQrmvslgCfef8t/hiaMLSuyZEsjR1x8cp6hiK5Ag0ER6WyoBAIAJScQspDgp5D
    P/K1ZdT86Ux7Nv2UhZilYF0LPkvZBdfTC80RpjrUvz1m8ZObbCsUO5Ag0j3+Wtms
    6CVaQqfT2RoRyjcnNVJGadWqKmOWVkvZYzHQPl8SZNENYurFFhfy4MCxXf5drkH3
    CV5QqY1onhuvsfl69UZ54e6X3+DjQ3KdtqyyqUez7Qe20ZdIcgC43HcEuqAbAOxm
    /K0zDNvHpjwgleNoFBd8GZfD/biD9EMnhiCBq5rS8Jqh73e9wLtkMfssQunA7ELx
    ZVuC7M5dBBMjRUp0dswAKAgdcaLA0D1NGUNSno35Rzur7sluufivfjLwn+qRLRBM
    FPR+ggIO/Y8AAwUIAIBR74TtznV04mci4vHDds4HX0RI/hxawivtanEAGZvV54hS
    XUnVqpIVgTqKCtmS3gqoQMQBf1+25Rq7UJlVNl4/AoLcl9ZfR140hTSd888OwcB2
    MAHd9CgUXjTHcFQj8tXFhPiWY7SfFwheLDFJUgCqB/ilgPf1XGOYuZfvBxkyXd8p
    TC2sx4iFSUBbY4S6UZN8uokpRZDbTHUPgLHAoOg1lzrzUvZuknEzbcBDgQoVwLWD
    9UCZxl1wxly6oZkq+uggXg7zxWuE5CMdWtz9/FA3CRtRBTqZnHrMM9hlHGgxTYan
    bBTs793WWsKf8rhTRqNDqQdN07YxsmTi3129OSeISQQYEQIACQUCR6WyoAIbDAAK
    CRAbgDHzUMwmcYHKAJ0c3chle4XcJ5c7+0odRWmOZ8m0IwCgndOwp3kjZUZFbAu0
    AxHti2KSFZc=
    =HznU
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.34. Diane Bruce `<db@FreeBSD.org>`

    pub   1024D/E08F5B15 2007-01-18
          Key fingerprint = A5FB 296B 5771 C1CD 6183  0FAB 77FF DCBE E08F 5B15
    uid                  Diane Bruce <db@db.net>
    uid                  Diane Bruce <db@FreeBSD.org>
    sub   2048g/73281702 2007-01-18

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    mQGiBEWvrjsRBADPHOAUGtAny5WUa+5+6EFo83DOSCxMWqECyfgGcX0fLdQFTlNC
    oQwjuDPJoUX3l2U8+Pr0PbCnU9dAv/nfR4mefBYaSYKrOkKR2JMCUu6Z551wJIOo
    G65q410cwz3scHJ9m52iGRbZoz99+AjGymA/V4zHYV3phF+hXJKamS/DLwCghPo6
    Osexk+odFXJ+Yq8fz9MdvaMEAKPsHsY9gWyzmVtQ8toM3yudoZcjILTsNbX7oDM4
    Q0MWURvY1JkyH5vQ0l/BbJH50CGzFHb1CvDHDyR9wx74U4q58eRnx+HzSC/UukBT
    e/SOBwXM2MHv0D6fHgm7Tepwiy2uc7St5SawiJXEW5XdY2bleovVDanPvFhv2pSz
    z56IA/9O+rsGqWmgutoU97HyoIrHkY1aMAbcVkBocooeioXdm+V4AF+nlIp3pZQ+
    7YS0X7JkyQTRoxvGsGawjktbDGAzBFTYazAS2eKhBE3wyWME/14VR1OVG6EAvli+
    fL4tVUi3xBHDdb8Pd3PzWt1CduBW6RIs2NCrv5baMO35RQo71bQcRGlhbmUgQnJ1
    Y2UgPGRiQEZyZWVCU0Qub3JnPohgBBMRAgAgBQJFr647AhsDBgsJCAcDAgQVAggD
    BBYCAwECHgECF4AACgkQd//cvuCPWxUTzwCfcKKh+vsTusry/Ait8DtdpUse8YMA
    n2URXcmflBA8OQ1JrFFjiW/5N3iwtBdEaWFuZSBCcnVjZSA8ZGJAZGIubmV0Pohg
    BBMRAgAgBQJFr7DmAhsDBgsJCAcDAgQVAggDBBYCAwECHgECF4AACgkQd//cvuCP
    WxVIvwCdFGub9b6qt+L50ePcYnLy5sthiZIAn3PPdYTUPdXV6DfOtKFPcx6ArSHm
    uQINBEWvrlEQCAC5N9u/zG1ahYsV+kiytZ5Mgt+I+yi5aSCAQPThSGXsVptfZRW6
    0LVElbLL2v+r6ETRK92QrtZLSqM51sKWY+lyJfxRjuW2AsVAL6/NgV7bTuYs2etL
    vo347XX2ff7DrA07mGOAPrer9naBlaLPwWggWO9bU8HzphbL+kI15T0aUXLwIdeM
    LjHOQAypJ9iFsv/OY2A7epAw8zK4LCPA0boBQY6CKcFV9gxDl/kmsqobvBeyAru2
    jFAgeFytIJsP3O1kA1aKEFDolcoPwlVUQiAsFvNtUSX8k8r1HKfQpnjuSCXLU7jE
    82X5VWSAcoX/PyaXDY7AmHJFLpZGyGIs5sLrAAMFCACQPyOQmX0iDjJW8OCpmgE5
    yDv3Jedc/w4546OLOC4aT1wclNZh+iHR2meuFgm6J1bv9h78R6dCkGDJeh8MTCtn
    d9J/IDc/QElCqqndnn5XmXjtGqukXIlIg7iGF71T74K/Nb0Lepb9p9BQpiNqudHJ
    L+KqSAjFT03vfpJab65EpyeOq1ZIswDIWMRb2BFQs/El8rX8cXOSzTrKfWSamRw/
    6l1aBwsmqi8sW23GSBYCd7FKQADVKIu7EN68QT6Diyd9CB0s4U2DjHrr7snncyUF
    A9c6FTX+tIE8NXJ7ku40g7T0WnX8jpuoagdWpjlu/NS2cgaK3n8MwrL5kYYLc6+O
    iEkEGBECAAkFAkWvrlECGwwACgkQd//cvuCPWxWcygCbBuZU/pJ2tZXVsUrFSRts
    8Cvwa9MAn25/zFXyrtEDo+1imX3MjKZrdJC/
    =vYnO
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.35. Christian Brüffer `<brueffer@FreeBSD.org>`

    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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
    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
    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
    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
    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
    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
    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
    39qvyzLMAKCpgKEyrjeLLn85zYQt/mEHlJBF+oiNBBMRAgBNBQI/J8ifRhpodHRw
    Oi8vd3d3LnRyYXNoLm5ldC9+dGhvbWFzYi9jcnlwdG8va2V5c2lnbmluZy9rZXlz
    aWduaW5nLnZlcjEuMC50eHQACgkQpHnNxFq0YGrGIQCgpqtvf2JAIBFJj2ZEAjar
    xQHUk8sAnR1PKOzaTtbULulLAfboR5j38Jg+iQFjBBMBAgBNBQI/J8iqRhpodHRw
    Oi8vd3d3LnRyYXNoLm5ldC9+dGhvbWFzYi9jcnlwdG8va2V5c2lnbmluZy9rZXlz
    aWduaW5nLnZlcjEuMC50eHQACgkQ+Xz54zpLf11CkQf+L6ndlBkMOsXAHSRpruI8
    FEip58dRE3PEWCR5Cs3Zj/TrV9mF0pCnbU+5wlfCBz2Ieuj2ddNwI+9kWicCF4Xs
    9avqRAasSO5sUSgpq405nKmNu7KdJEQG33expmPz/AX+agHOwTKpniohjlEa67Qd
    TG2ewcKvmLEQW0LjY0Rq2gRJ4cGFYkSmynOBp6agg6bITiwXPNQZKQ5VafjOQVUR
    tXtQTjInZ8gJGVdkrGD46D5a8yznX/KQU4ZEgRmDb6vl9POybhOihDvszahBfwzs
    c5QBZPHEXCdeCNA3rdCYbaqkxohS+y5PjcYchfO12YOaOB0Gg8SWOnow/M0FFmFc
    FYiNBBMRAgBNBQI/J8i1RhpodHRwOi8vd3d3LnRyYXNoLm5ldC9+dGhvbWFzYi9j
    cnlwdG8va2V5c2lnbmluZy9rZXlzaWduaW5nLnZlcjEuMC50eHQACgkQeQV2j3WE
    9dg9VACfcYe3EhS4Nh/EaOlsxtBPfa8k5jUAniNbDyUG3T3TZv9p6fCzIMIoG569
    iEYEExECAAYFAj8nyMUACgkQ+dAU8DjJhY3c5gCfTaZQqM+jRp21JyZUdMM+9lii
    SVIAnA58fijG8f9ytFnVu2v+60w/0cEqiEYEExECAAYFAj8nyM4ACgkQXQ9/SeDk
    nzTt+wCfdlDeiOXOMP5OlGd9mobCgiIbzfcAoOSkTiIY5k/iyi0W1ajOo89HcoaE
    iJwEEwECAAYFAj8nyNgACgkQG7CLvyqSMiV/bAP/TXflvf1U6ypKOg90Kd4++x0s
    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
    n1ZPAm4K+PVEiQO61qCfMn+ChxtOAKCS/X79h4HhU1u4nrdXZHIhAbmzNYhGBBMR
    AgAGBQI/FSr5AAoJENNbvJm8fQIKhgsAnjccO2D3BzBrHQC0PkG2IonxKDVCAKCZ
    tyTDYdhtFUwDmt+Uc4uxRnfAJIhGBBMRAgAGBQI/FV6DAAoJEJ7QeO9LOhNcdRsA
    niNNCWCT3t/EosNju1EPYDaK9t/eAJ4kdChYqxvVu2svHHxQnP42VC1zf4hGBBMR
    AgAGBQI/FV6FAAoJEPAj+AsmhB1b6/UAmwU7MIhoLC7bmh7l36761YwzQksxAKDO
    WIJW/wXBbulL8Gw6XXMJvtRrCohGBBMRAgAGBQI/FYv5AAoJEFO2uB3BPO4Hw5kA
    oMGOp6M8HsCoWqOer0DSsNwxViHRAJ9s55WWSjqlWBoz2l23y6643Bz3AohGBBMR
    AgAGBQI/E/MiAAoJEEvvJiQi30CHnt8An3HUfqUqQriyiTZN2WMHIk9hRDe5AJ9a
    dB5xQdh4wBZnNSSSo9nlL62/T4hGBBMRAgAGBQI/E/MpAAoJEJVkH2slPljj6BIA
    niMNct9yBdxXiOMCVJl0HjACq6lPAKDGNnzpHdoqODj83NcmyXJVWETt6IhGBBMR
    AgAGBQI/FdZ0AAoJEEG59OhbcT3wPJAAoLuaK8k/Ql+BzeTWzCrvnV/WsuM1AJ9B
    E8/KPWvRl/CZanwDgSAZ+3Ha3okB1wQTAQIAwQUCPxX0L4YUgAAAAAAaAGNzaWdu
    YXR1cmUtbm90ZXNAcGVuZ3Vpbi5kZSJodHRwOi8vd3d3LnBlbmd1aW4uZGUvfmJi
    L2NvbnRhY3QvcGdwL3NpZ25pbmdzL25vdGVzLkE1QzgyMDk5MTlGRkFBQ0FGNDFC
    QjI5QjZDNzYxNzhDQTBFRDk4MkQuYXNjIjMaaHR0cDovL3d3dy5wZW5ndWluLmRl
    L35iYi9jb250YWN0L3BncC9wb2xpY3kvdjEuMS8ACgkQGaJoCYg4/ZT6JAgAvfif
    YdKHBnC3Ezv483f2fsdF/jbUNa+1iz77iFI1dRa+SRWKRVbglKeznpT8GYbw6+82
    gxWZ7Xotbn3s5yGLXNYP0vBhek1YG0zYig498ROlIc8OPwNgCEVUHj962FFfQSwF
    2CQ+2e7h5PRll2PRpZNQCzm+c5Xj9p/tslSBWQ23/1p1U7eI3bvfMLVRx9tC/nyP
    sQo/V/yhIYPi4Ys1anBCl0Gin9g+eg4ghhWl7ksOZqG/Oc6c6viQsgVME4eKVHpl
    jdOj9WCpWIYar2Jsf16ITOMlYnGB4a3SJ1kxfXVR4lhZCaZ7PhVAaEH/GZC1ElPz
    jbKLNdvCTfe3GMNTBokBAQQTEQIAwQUCPxX0PYYUgAAAAAAaAGNzaWduYXR1cmUt
    bm90ZXNAcGVuZ3Vpbi5kZSJodHRwOi8vd3d3LnBlbmd1aW4uZGUvfmJiL2NvbnRh
    Y3QvcGdwL3NpZ25pbmdzL25vdGVzLkE1QzgyMDk5MTlGRkFBQ0FGNDFCQjI5QjZD
    NzYxNzhDQTBFRDk4MkQuYXNjIjMaaHR0cDovL3d3dy5wZW5ndWluLmRlL35iYi9j
    b250YWN0L3BncC9wb2xpY3kvdjEuMS8ACgkQqx5LYEZ1ax7SjwCgmoUN3NUQ0fQw
    bmHqkVnBCc/jL8YAmweyJNMQNKsDC0frsHFyejRnNGumiEYEExECAAYFAj8TsOsA
    CgkQ58nbr+NW78AkMACfWs9ycteAylXk2RTrD5RHIYXgrVQAn0VpM3W6vemovNt5
    zQWuHwUHKMELiEYEExECAAYFAj8W3jwACgkQO7/Pd72LBQ2EJgCgqRYVlay6OEUR
    eBS4I1Rj2wKtZrcAnidL9ET5crzLbhC9Gx6/tHWhhPPriEYEEBECAAYFAj8Ro7oA
    CgkQ0Bn175Anq4jOzACeLP5omUoyFcsNXRdWv/IYPBW3jLIAn1Vg4cqudANdKnKB
    SoTDTh0YxC60iEYEEhECAAYFAj8RGzMACgkQ9LSwzHl+v6vvzACfaVizS3TQYJEA
    P8o1Qaz/KbQaVmwAnj5l/c+7wA/YOzu5sJpArDrXZ+CRiEYEExECAAYFAj8X0bUA
    CgkQkR9K5oahGOZPrACfaQI+NCA28YYgnl2gjmoI1mLl2/QAn38tDQ910otKemZf
    9Eie7p/zTbGZiEYEExECAAYFAj8ZfqoACgkQZmZxetuDVnl0pACgiUtNtNoOd0Wb
    siifl8jXtNOzkGMAn0WikIoLoN6BlIzYMWjJNhnttKt+iEYEExECAAYFAj8Zfs0A
    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
    otqKGK6X6iceCg==
    =yns3
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.36. Markus Brüffer `<markus@FreeBSD.org>`

    pub   1024D/78F8A8D4 2002-10-21
          Key fingerprint = 3F9B EBE8 F290 E5CC 1447  8760 D48D 1072 78F8 A8D4
    uid                  Markus Brueffer <markus@brueffer.de>
    uid                  Markus Brueffer <buff@hitnet.rwth-aachen.de>
    uid                  Markus Brueffer <mbrueffer@mi.rwth-aachen.de>
    uid                  Markus Brueffer <markus@FreeBSD.org>
    sub   4096g/B7E5C7B6 2002-10-21

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    mQGiBD20hPARBADzumxDOkMdttpWKphTxFC/j0+MJRW5UmFjd43c301LEMFSJMkv
    06EukQSOVWGyGL70v/4NWx25BiLhLDIb4feE5SZccQTnjxXYCjkQ4LfcolqTAzga
    L3GLNF356vKLQPlv6J5ah3vdZHa8Djh8q0s6CHAPi2rhEVbO2x7IcRW6MwCg/0+E
    KmRtdsifDJ00iBEMpJAApccD/As/bzVXI4FZwjwIMdep9+He7rwL/xGK+ZmRUEoN
    iiIxfd2oOkwDXZuFqTGftONd9Apao+FefTbcpEfv7sBVzHCJBn2bTr5mTjDwuA8v
    hGQ/7+QyKIFPmsL5KZYPkBcRA195UBSdwEPdERGH+aWvDTVJieyetAiD78WTd5ez
    T0V1BADwVnc1ABRMz6e8HK+78G/4vMHKPPEC7YbSmOo25FKR7XimUIlvGfj+CNO5
    w6QSDJaIRo9yOCPEacMe91NeZskPlEEXN/KIOlV11vTZ/pVDMETnzdarNo2B7J2K
    4HQzTYBzfFHdCrKP0tExSCy0iN2lWzSI57S9o8YxgnwrmuJPN7QtTWFya3VzIEJy
    dWVmZmVyIDxicnVlZmZlckBwaG9lbml4LXN5c3RlbXMuZGU+iEkEMBECAAkFAkTZ
    3xQCHSAACgkQ1I0Qcnj4qNRBCwCglhvWAuZ+9bWZ64EXP9wHLiQYT1sAoPGL96ae
    YBK0wnq1TWjE9GPTYFXAiFUEEBECABUICwkIBwMCAQoFGwMAAAAFAkTZzskACgkQ
    1I0Qcnj4qNTguQCdHFTLRplJE7g607rCVSxDCefYw8QAoIMaWQv0Iflm5aAR0F47
    3WrjQplWiEYEExECAAYFAj20imoACgkQbHYXjKDtmC1WawCfUZkir7Dy7wP3hiNA
    X8yo78CpuFYAoMJtyYVOf8fayYICxujAO3zU2pjViEwEEBECAAwFAj53axIFAwHi
    hQAACgkQT4OMtyagqBYphwCdFiRae7gCvrB/jFA8ceyXaEP44doAnj41sLHZFGWI
    ZUmQmNTiNfZXYoQQiEwEEBECAAwFAj53IYwFAwHihQAACgkQdROiNhMQLPXCqgCf
    SgcJhp/6tnpjypjXWH9t6uKHg+MAoMYnXWc7iXVFvi99BonJW15V63uptCxNYXJr
    dXMgQnJ1ZWZmZXIgPGJ1ZmZAaGl0bmV0LnJ3dGgtYWFjaGVuLmRlPohPBBARAgAP
    BQI9tIVmCAsJCAcDAgEKAAoJENSNEHJ4+KjUCJQAoMsgaMOze2p3Iaz0/fK/Xmeb
    654IAKCDmJpex0C61bzfczSdaxXPPyIbJIhGBBMRAgAGBQI9tIpzAAoJEGx2F4yg
    7Zgt0WUAn1WbgrMzw02LdGQQLBMzY5CYXKxTAJ9uvEu5kTB1jFhMa/rM7r04dipM
    cYhMBBARAgAMBQI+d2sSBQMB4oUAAAoJEE+DjLcmoKgWxiwAoPKtxw1TpXp/6KTr
    YZD67bOTJA8+AKDzxW0tIl7ij/nnNE9gob7cSeCfuohMBBARAgAMBQI+dyGMBQMB
    4oUAAAoJEHUTojYTECz1ZIwAoIW7tPHgp/AAUso8L1C62O2WF4l6AJ9jsLQ7cBnL
    81TJ74C3Zey4iU0PNLQtTWFya3VzIEJydWVmZmVyIDxtYnJ1ZWZmZXJAbWkucnd0
    aC1hYWNoZW4uZGU+iFwEExECABwFAj4kssACGwMECwcDAgMVAgMDFgIBAh4BAheA
    AAoJENSNEHJ4+KjUzWsAoMhZqjpybn0KgRf8Br3eExRIbpcfAKC+OlKaKZLRSgbz
    +6Pig+YQiPnOK4hGBBMRAgAGBQI+JLiDAAoJEGx2F4yg7Zgt9j4AoPUVdFwcegkz
    /rAuVD5T3psicMzIAKDgKHpuYGnx9WLeK0fcIS9uAMrVzLQkTWFya3VzIEJydWVm
    ZmVyIDxtYXJrdXNARnJlZUJTRC5vcmc+iF4EExECAB4FAkA33goCGwMGCwkIBwMC
    AxUCAwMWAgECHgECF4AACgkQ1I0Qcnj4qNSSjgCdHF9CzCm9j6uX5aCpJ5Cg2qG7
    ktMAoMhccEzyNtzKGskfzazD1oTJdTjNiEYEExECAAYFAkA34C4ACgkQbHYXjKDt
    mC1PfwCg5bAwdeUZ/YgXy9UF4qpEX6fH6BEAoIS2DnUx4qlcuuhBUp9RXnST2G2k
    tCRNYXJrdXMgQnJ1ZWZmZXIgPG1hcmt1c0BicnVlZmZlci5kZT6IYQQTEQIAIQIb
    AwYLCQgHAwIDFQIDAxYCAQIeAQIXgAUCRNnO0QIZAQAKCRDUjRByePio1PgQAKD0
    YBsRWZpJv+i8MS5yTzympEWFOwCg9nEzWeocm8GIKu/EWjoCX+G1LOiIRgQTEQIA
    BgUCQDfgMAAKCRBsdheMoO2YLRWlAJoCSpQjOyb69ZXMoDKx7naBi5aNAQCg+Zl9
    IW0wDSUhTsHnwOf+Tf5sACG5BA0EPbSE8BAQAPkYoH5aBmF6Q5CV3AVsh4bsYezN
    RR8O2OCjecbJ3HoLrOQ/40aUtjBKU9d8AhZIgLUV5SmZqZ8HdNP/46HFliBOmGW4
    2A3uEF2rthccUdhQyiJXQym+lehWKzh4XAvb+ExN1eOqRsz7zhfoKp0UYeOEqU/R
    g4Soebbvj6dDRgjGzB13VyQ4SuLE8OiOE2eXTpITYfbb6yUOF/32mPfIfHmwch04
    dfv2wXPEgxEmK0Ngw+Po1gr9oSgmC66prrNlD6IAUwGgfNaroxIe+g8qzh90hE/K
    8xfzpEDp19J3tkItAjbBJstoXp18mAkKjX4t7eRdefXUkk+bGI78KqdLfDL2Qle3
    CH8IF3KiutapQvMF6PlTETlPtvFuuUs4INoBp1ajFOmPQFXz0AfGy0OplK33TGSG
    SfgMg71l6RfUodNQ+PVZX9x2Uk89PY3bzpnhV5JZzf24rnRPxfx2vIPFRzBhznzJ
    Zv8V+bv9kV7HAarTW56NoKVyOtQa8L9GAFgr5fSI/VhOSdvNILSd5JEHNmszbDgN
    RR0PfIizHHxbLY7288kjwEPwpVsYjY67VYy4XTjTNP18F1dDox0YbN4zISy1Kv88
    4bEpQBgRjXyEpwpy1obEAxnIByl6ypUM2Zafq9AKUJsCRtMIPWakXUGfnHy9iUsi
    GSa6q6Jew1XrPdYXAAICD/9aiTfaH5Vs6Ms4bUQIeOLvadkQy4eVVKIXehBRAJ0X
    SVed1BNBwyBPUtuphL2BvX7Vx69418nwd5heQMAaWjps91W/3tXq6IseBlVGQcZ/
    K3ICoafLYS8kp5i5ksX+2jvCF/H4KtDzODYBQOnC2TgVY3q/UncJDKjOS0Rfellh
    a/PI4wd8k0i2PKB3iqZ2kgetMD7ioU9hSQz2UHSsx3t88vj+QhuXLA/PsIBso8py
    X/6gxAUhGZKFMOJbqAowUXxQjyChVi9Rr08tM4PvDN2SD3XYhODrCLeNuGeKnoYG
    3HkX09xJglxLUHsTU6ZHx7EK+vkEdTd74RzzFf4wJnMPnT3TKNX1u5P+DOZ5bjBZ
    2O0ze3qLk9fBZxpiP2ev7GDMnQAeqb8Ox7lmGFUH1UARXhaicIhWTnfq3kJsCY4a
    DI7yHGu0Q1pg/R7V2ZGLgBTamItb6mUWGCBE5AF6AYVJQ1UU4We4FAfMmaiEb2ZE
    Gi60ff1jAR1PxAnEDHvb316Wv5GXRf3r6EZUQyuQSnWiIhgCs3EqbBUzbZvCVtHZ
    vLX7HZ10HzpHEdwNVpFAurUyP1DgRCCt1qKeDLui+t4N/WgP1EdQXpkmy+79Kcq4
    ny+HLaMgYuKSk+khJhA/l7xfMk3JNwlp1adMS8/FgScU/NS629UPsK0fJ1Mwlk5Z
    w4hMBBgRAgAMBQI9tITwBRsMAAAAAAoJENSNEHJ4+KjURHIAniigU3LNmmT0gemQ
    7wb7L8No/lEcAKCDziXLMavHZGnIuNydVv7D1XEllA==
    =rJ5H
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.37. Oleg Bulyzhin `<oleg@FreeBSD.org>`

    pub   1024D/78CE105F 2004-02-06
          Key fingerprint = 98CC 3E66 26DE 50A8 DBC4  EB27 AF22 DCEF 78CE 105F
    uid                  Oleg Bulyzhin <oleg@FreeBSD.org>
    uid                  Oleg Bulyzhin <oleg@rinet.ru>
    sub   1024g/F747C159 2004-02-06

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    mQGiBEAjnDYRBACecNDd39vZ9wnodFlATK+xvhlyX4M3FBEV34t9eVZtJz4916yb
    nLZmHwY6awt+nm6FGciSPucfu7stBCqvPURWEThJgAyXbxEVNyXmXrZ2F5OyNMyM
    EcbuqLZTjYxxN5mxUYswtiNDmdWn+Ivmw46wTOl5Pu+B7W2KVl8mwwbAjwCgl9hA
    puTWWN0zFklDJIuLx9eVxnsEAI+QaACe8H2l3XFpNkp6n680ZlW7FBZDDOYjCS4z
    nhFg7Bca74t6vnn5Q4miLnDDyOPkZqMBD2nLUkcK/kMfe5uqDUWf/i6sFDwv7d6I
    9Ag4tUWLkhxAqaqomesfI2yS4o+QGTJgQdGU3IUrOnMJD7Ascwj7304lYuqYcaqT
    KQHSA/9eTg26Ihn9uBpGit+slgkmTHmKgAbg7IaSHSEYRbpmnc0Je794zeWns/oI
    vAyGNxEFpPQMVrSXHnFmK9AOcLcfssE24a3zw7So33asH2Ha9yYBrfKGrTCPZAsa
    uUGrKbGmXQ0oXDjjqV4anvC2QI5pEJvMbHJ+Xyq5xQN73ttJxrQdT2xlZyBCdWx5
    emhpbiA8b2xlZ0ByaW5ldC5ydT6IXgQTEQIAHgUCQCOcNgIbAwYLCQgHAwIDFQID
    AxYCAQIeAQIXgAAKCRCvItzveM4QXzXVAJ9RD4kKNcvV8UmuBM66osVfZ/7yIwCg
    htVf/ZfKdcob1zQsBNNpmzkpduKIRgQTEQIABgUCQCOgsQAKCRD9LjUgMMgeateB
    AKC0iX0NNspa5EnBYGE/eEe+LxRs6ACfUqA0s50e2goJznaIcLTgZXtDECGIRgQT
    EQIABgUCQDIZWwAKCRCF1FBFa2kbA7N9AKCbDyp3g6vRN7dQKBb35s7gLp8yIwCd
    EH/ivmrxZSaHlrOMJjt6rnmuFqa0IE9sZWcgQnVseXpoaW4gPG9sZWdARnJlZUJT
    RC5vcmc+iGAEExECACAFAkOMPS0CGwMGCwkIBwMCBBUCCAMEFgIDAQIeAQIXgAAK
    CRCvItzveM4QX+tfAKCLk3zeTyzbbN6TqYpnqocno4H9kACePQaaDytLX+zk4plw
    sywqPLv67SG5AQ0EQCOcNxAEAIUR6Uj/bLAu0/FSGDSCXfjuThVT1lh1rCLQkbBw
    TxNiwHPHHSQRa654aoYbQdi9x6M7fzE6Uzmdj1Gs/UBYZhhsrlkL+Ls/xuhe3Kh3
    E6lho11qPhjYXmFHk42VhtVlOcikZ/Azgqgycfql81H3bKWv6jA0el9SnX4yk5qf
    tgZTAAMFA/9T7/ty76bNeP3/LcY9ZL9KYWB8v8pJ9jEt/RfBXB0GTuV/H+bzTjSc
    PwhT8Fam9Fo+r02tUJfqA+XlOJf6IXPlLPRfvzHhiBJSBPuMvB6vYs5zrlUzkgNE
    VFHBr+TxpUWBq4ZtI9K8YUbPD+s86irYn9fHlnj9qnYsod3ySvU0xYhJBBgRAgAJ
    BQJAI5w3AhsMAAoJEK8i3O94zhBfFzAAnAg+W9rkVVdYu33hNqpX8E1t2kShAJwK
    V8DuSaXJtEgVE7Wp5CeArqtwUg==
    =/2pb
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.38. Michael Bushkov `<bushman@FreeBSD.org>`

    pub   1024D/F694C6E4 2007-03-11 [expires: 2008-03-10]
          Key fingerprint = 4278 4392 BF6B 2864 C48E  0FA9 7216 C73C F694 C6E4
    uid                  Michael Bushkov <bushman@rsu.ru>
    uid                  Michael Bushkov <bushman@freebsd.org>
    sub   2048g/5A783997 2007-03-11 [expires: 2008-03-10]

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    mQGiBEXzleYRBADIqilbqBfzstvMByOY3QlvQD9QIGQLwZbziOMByQPwgzgBFk6x
    OA7NOfSKONPTsLtIOSc+CbuyEfw5jJiXsQ3Ox71Zp2JTra/bTim/WwJKC5Kc+egl
    CD6KO7GMTCBb102m2x97G+rNjGS8n7Uf7ITgoj9QtxBjpAC3K1ZcPoAcjwCgobcT
    q5MUrCqPHrnlZ87BnbT/3m0D/15hcV+qndPCShIqFTYbTSG18X7lBNTONZXmCm04
    5dRcJrz4qLvsCYkBrmOCrKbYViQCQWiT7/G3Jzc+WtGFirYibU1TxBprZuP99gX0
    Hea3gvgodlje7eq3Dz7Hx9uFgN8pfw2wWlEgdkuYk72s3lSJN6+TGWzXuWnRYYJ1
    H8XtBACpByr9qcCaJ9yNAwDbDZhj03zSeZoIQz6d/3tDv7SkzDlVyxErJCO7CiHg
    JlxN0+paX0gW06xkLmwSESerJVbxEIoejdkdxebqPEIQN+9Se6Q2tkefMWd93IwL
    MP8sXgUBE6PEmFZTwI1/Av+vR7aI1pPk+yIrKTV2KyC7yCULMrQlTWljaGFlbCBC
    dXNoa292IDxidXNobWFuQGZyZWVic2Qub3JnPohmBBMRAgAmBQJF85XmAhsDBQkB
    4TOABgsJCAcDAgQVAggDBBYCAwECHgECF4AACgkQchbHPPaUxuSKCQCdEAIOx9JT
    lAxIOwL6ApsukCI1bgcAnjkybnn6t4WWYy7IvmwMMJJ17oe0tCBNaWNoYWVsIEJ1
    c2hrb3YgPGJ1c2htYW5AcnN1LnJ1PohmBBMRAgAmBQJF85xpAhsDBQkB4TOABgsJ
    CAcDAgQVAggDBBYCAwECHgECF4AACgkQchbHPPaUxuS8xgCgjJ4lLhI3wDP8Rnhv
    Iy9UW5BuBEYAoI22XNE3OHvBdsmUyUvVji8yKt4auQINBEXzlgAQCADnAWwYquUZ
    mbrZ9/UO4abD7Nm0vipplm/O078SMdonir+HKWZStjuvIHhpPDGI0wCpg/v24B3w
    QVGiQhXWRL1cbvjDmiQG7GFdG6u4c1+2S6Evx+fp5DCjUMaoygd/KwF5tmxE5M2R
    7SOYueuuxcDiYi4qJs9lroNxnwG2/VkrcPxlek1QbRVjs+TuRnzTaUzXbU7kli6y
    PUhBucf6nB0cPHG6VVn8N0Kki+HBaQjYOxtBCO2B5E0uRq0Y25l9Vt9s/0TfYnYb
    E0/sLj0XSBu8WWmXtW7QrtLPN0Tb6XrTeIaWW7HLy1ACVlzniu5oeumVKiW5nsW4
    uJ/6kF5Fuu2PAAMFCADNuQ0Irmhub799B7h+FJVtNu1IxptmvJnD/RoWXhAtVo79
    c176MEqS/8tghzdq/zXhr4DPMiTDWf1p4ynKFFkpQaWkHO28cvu3rc0tdpkI2d+s
    zKT6fFNn3kqQ7Eq5xgijSK8+aTWoUhqFvxkhLIcColuPK2TmQ+uIxjtu62lU52eZ
    DDePyHFGVWqtkZ99k1vGxZRf+vVXaKTBkGY3Pek04knpP5ROGA+JjL/Ew5o4SWfn
    FeD9aJ+xtZ9VqTUyl+U4XwIYlRcWzbqsbGp0D0jgry5Xhiggngd7xtNSB9/44HuU
    C5EQWVi35HKNdXMq4wsOMG68DCTE3XOABa5yPY7TiE8EGBECAA8FAkXzlgACGwwF
    CQHhM4AACgkQchbHPPaUxuQTrQCcCfrtwSXFegD9D0DpYWa6iIy9glIAniDIOvRb
    4L8/nn1Nbu+PBNHamCHi
    =zD+p
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.39. Jayachandran C. `<jchandra@FreeBSD.org>`

    pub   1024D/3316E465 2010-05-19
          Key fingerprint = 320B DB08 4FE3 BCFD 60AF  E4DB F486 015F 3316 E465
    uid                  Jayachandran C. <jchandra@freebsd.org>
    sub   2048g/1F7755F9 2010-05-19

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    mQGiBEv0XOgRBAC9mFTzSKBVumlXJwWdkt7HvSRKo64Zs7BO/tYzt4dWVIzWwUC/
    Z/Ns/X3Plb+sXp7mcvs+oLKiHw3qrRT5wPbef3V9hFfZiKdOfmeOv5fx1sIXejBC
    Cqq5ocAoq0bqf1S9i7vnuqfyH+9SRPOv0O6EnKCU+7sVMFXAuxDhm1+u/wCgwRj3
    tNFbsptDZ/K5SMLM44ldK98EAKpSRVSMHrI/nxXvrNcPhedsC9MXyMOYE/q1la5k
    b+qNrD9QCJRwbz1LvoJGeOzEmtmZ3afT048Uks+RE03w+BhqJnuFgpAKqA39Fop0
    MBvDuZ7Wy3iigebX35PAQ3h4FhwDTzsu9aEg2Iv/WksDqluQJcMkt8sn5NffhZho
    z726A/0dPVvHy0dart8LHKfou07u8y5/950UVITjGlQJ3RGvwQV7aPEjgpJQlQqR
    BMr3TOOJ3YGHY6xkaJk1fijb8MpSlihIr+Lyvhu8xVb3GCrPCh4Bff8fO35+wpBO
    62p09dL4mJcD1mELJhMAMPpqXAXD2Ho76/RQ1yZlmH/xyAPTg7QmSmF5YWNoYW5k
    cmFuIEMuIDxqY2hhbmRyYUBmcmVlYnNkLm9yZz6IYAQTEQIAIAUCS/Rc6AIbAwYL
    CQgHAwIEFQIIAwQWAgMBAh4BAheAAAoJEPSGAV8zFuRlnKEAoKcsMnIQFgek8hHO
    6a5pFO2DBto9AJ9GLTOc3OBdX1oFFQh/rsRYKPkMIbkCDQRL9FzoEAgAk8FWde22
    yzxXI/qWRo+o6Ptm9Hae4reggr0boqeQCnV4ksLd01s7tJoaGlogi9OTLrq+OV4E
    CvkcKKHSltijMsITEwF0BwfrR1C1I59yUYABtGkw6f3bBApHNcDhl6dpcHymP8CM
    PiBrx5s63ja/CAKFaScUCUe7A5vYK91BwAJJ/IK9UONU9TUyimRRv2C86rQWV15N
    R8WE55iMdmFsu/Rkv5P3IPNzaIjcvY19iJOuxfeDTiKDp9j1QWwUOShrAHXa/Cra
    JvcNo4Iu3VeLKpaFW5zBvIbfQCa8LfRwfLPSEM+tCk9nH5zXSvwf6dDWvN66oo1j
    p2eAjrUEFnfqOwADBQf/VGVl9qx/d8NMjhMdaV6qvq8DfHy4I/BXQFERgKkFfrAd
    n1oGEJCT1fHtJNN79nCbyZ2dlfKqr6+Xcdy7RKInGHs9DwK4KfVU5dA5L3f81wZs
    OoMNuk64kjTAN867PzWdv7o+2seSa/9phsWEpCD+9qtRLiOcIZ8xeoecBS3iS3mp
    aT1HZuMLFMm8XEJSA4l8QfupBigr7Gq8z0ChwfMCZsVlVx3MtrTmuVlPnbJ4g0ku
    28MACNiHkbfW5A7XhJ8re+Rc83so8ak26mO0FQeh5qsiVj4z/pmFGrYmeH94CLr+
    bC+1nwkbAFxjZrRuFzct1y+oe3MSU0UUKTXUikovr4hJBBgRAgAJBQJL9FzoAhsM
    AAoJEPSGAV8zFuRlI3kAoI9Pl1nGD/sEvV9aGkLfAK7v9A9JAKC8ReU1wrQlM3z9
    oA5JjxumuE274w==
    =kEVt
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.40. Jesus R. Camou `<jcamou@FreeBSD.org>`

    pub   1024D/C2161947 2005-03-01
          Key fingerprint = 274C B265 48EC 42AE A2CA  47D9 7D98 588A C216 1947
    uid                  Jesus R. Camou <jcamou@FreeBSD.org>
    sub   2048g/F8D2A8DF 2005-03-01

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    mQGiBEIkZzcRBACrskMO6BYlK30ghgpDYTou1UEgp0Y4QdghWeEP5kppuDy7kf87
    CoKVvE/u+pVd7aFoTMa7ikqxKH4Kh7wnDEbFnzeZGtsf0Fzw5oHgoaQQlZHGRtr1
    49UuyFnRWVKyI8IXS25Ie5p6ZlbAVFINOdJuP81gku8SffsoifnKIiWrTwCgzhTU
    uS1rg+TpKkiRnkXXtpVF9k0D/3/OADlTo77GAWMXl6HBTaB3BXB53Q4PozvGDter
    lWGKbx6uYvLq3ZPX1XBUapzJ3eoEfCsA++FeSzK+tue/ulbLiXmFhXSQWtXoRo5D
    I75uOoXlrc45uLc9XkOpeZ5dF4a1iJOGHe/hD4mmyrWIM+E6cy1lL4EetM35ZiEM
    lHqDBACehJoEdCAVMOcfQLs33/iTBRBE7Z6fN9DCH3kTvoYcgpZsFAX2WQFz085/
    zHJ3NVFSH8LCi/6ck5ZeXCasAS3L99Q/io4WwmlqDj/b4PBdfoefInLJkroijcQ5
    B2I2cH2Ss5kkwqj9PovanMWNY6Irv2szIViIeThB+l6hiuzaK7QjSmVzdXMgUi4g
    Q2Ftb3UgPGpjYW1vdUBGcmVlQlNELm9yZz6IXgQTEQIAHgUCQiRnNwIbAwYLCQgH
    AwIDFQIDAxYCAQIeAQIXgAAKCRB9mFiKwhYZR31UAJ91fYdpk0PNNr14jtURyeeS
    upTEEACdH7tOg9LmYNxAi0iKWVInoA/TNmW5Ag0EQiRnPBAIAIKVE+F4De4BWuab
    6LREy3VmvNQgHSF8lHJm4TWKYGEkNhG+sIRFdJExqKG+N+El9QY4QGgezdogQIYk
    RBSg7nWzVrs7DiHJqC4PB/f23bzJl24Cg05jtxvZBz7t4lNXwY9G4kTmDb815FXd
    1p8gwa1KCNsTlKVRJxbaku9gHsO2JZigLMzzF1Zt1vGtaSHX5SyjhOdMOFtjuLed
    NAgl9vgAoMpXLf2Saom38Lgv/jnWz9OfST0P+OA/JmqN5DqeRTlyVZdQ8i8bduYX
    xmtbBPOGHWxwUDxiXMULkdjkLLrY1UaizR6/ULI6+cPrPLZFdnr+5GK6ZoTXyJ2n
    EUUxpGMAAwUH/iPguYUdGVnwKiwqojHq9DzDb09qvPg+UIEjwZA9mPExfMPLo/1b
    2NLgOF7pqeluXfiN84i58sipi4/ntlsNSzCYKCH2t2Wmfjdfpa3N4JaVptLR650x
    Lzj3egnWJKpHVSO+v1U7BSYBnaVPGfOMQVlSO5ra41SiVyZq6laX30PXXIFP6Ocx
    VWECVLmTR+L1g/5Nvq/L6NPv3ziuSLbSpvkLhTxLosaQwYFwPE7mLKgERUKDNc1u
    EXqyf8No4LKyO9V6VLckMgG4qbjQZhm9ozCmEYoKFZLafsq8czdNIKi4JV/8aUjU
    CsR5Dc8XAdwzPq6DBcikn1UBnvotbHtAFNiISQQYEQIACQUCQiRnPAIbDAAKCRB9
    mFiKwhYZRw2hAJ4mmNxtlCe9yUHRCzxsUxl36gQYtwCfQZ3f8K4dxPU2ClJ46fTf
    FqQS584=
    =KYGd
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.41. José Alonso Cárdenas Márquez `<acm@FreeBSD.org>`

    pub   1024D/9B21BC19 2006-07-18
          Key fingerprint = 4156 2EAC A11C 9651 713B  3FC1 195F D4A8 9B21 BC19
    uid                  Jose Alonso Cardenas Marquez <acm@FreeBSD.org>
    sub   2048g/ADA16C52 2006-07-18

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    mQGiBES8etwRBADeB8shuQ3GGp/AozsOggqLnSmFwCS8nGN+rnE+4LHuRzkL4Kh0
    pgzalpPre7DohKjX2uzq9lTjjmsrTKZLM+yaNZ9fFMHC1uHxZnV9/c7tC97oQQXl
    FjMmemGZGA3VMhh5jEtjT5EJIvPBB4SBVhVhBJ24ananUD9KmUHTyP8GrwCgxMJ6
    +NrGKVeu5QYVLo9oVo26J+0EALkWeeHI8PE3f0jOqS+Voym3jQPLw7pvx+HoySw1
    X0c0YRa9uJVH2e8aFMMsCzT/sP492IksJvtRNpzDSJJyYM3zukzH+l7J2vwDvKgD
    YknZJE0pAS0GRAVbZQ9u6bez2+CUrGZW7Bvablo7r3nBHyhI2SpeM6naXlS4AJ6I
    9dbaBACm82l0Uwip/WoJM0r/lB6eXMz9tFeRgfnPY3+G0Y9pFpdxTX0q5M73L6u2
    PeXbWI2XPyPqw0wqda5YNlcRylXJmzLFGQzR6opqIbOEzRE+IinyQwQlcAv3qzBU
    p7qCplhjblcyAhWTlM5XsrAWxXHyNFrSCCPDgW296+8b6b94s7QuSm9zZSBBbG9u
    c28gQ2FyZGVuYXMgTWFycXVleiA8YWNtQEZyZWVCU0Qub3JnPohgBBMRAgAgBQJE
    vHrcAhsDBgsJCAcDAgQVAggDBBYCAwECHgECF4AACgkQGV/UqJshvBm6wgCgqtDd
    lyjakeTr7YVdNmpaI/UxpG8An0jtgTDD2M+CioUqGN1SNTkA/6cWuQINBES8euQQ
    CACt+RPVEUX/qDk3Qh6E1Zrm410mAJLfgG70tz02ApDXhW6aZccW97rH3pec+RDW
    fZVaSW4xHjUQMu1JaXK0dD++UWifuhYF+GUfi2NQflcy600VjM4v1HMZulTE5/0n
    NfPU4s2Vu0w1JcuXryjy5O8+ur10wQ4HFnL+qSDmXY2UKKTHA7vVrBTmysELDuj5
    N6T9+xxuR7EJG3lwTREgPnr5nRlyZBxgAd6k/AJ8i2X1YiGix2KI2fk/HYdgl3FL
    xnLXrLE43mAwQjcmkMruNkebjfAAnp6vKvSOLZ3mqoPNhP6SPGTPxoskcHqHhvXh
    L3Y7/Qqga4sg+P8tZ4YTx4SHAAMFB/92KAG0TePM8+gtp64oOp9RuUELjT35f5RZ
    0ZJZ1JromyMjOc6FRh1a9HiVzY2Vq99S/r8S5QoNH6vppxGjSL3Vs6vJg79eT5Jc
    ODdEZhoSzqmc/TwTHfOeHiFJJk8kAtX33CIHBUDM0p3OaJDj3weYi0TUWcxcvlFg
    p4RIYHCkmJj1/sI+0U8Jw35nSK4uNwW8MCl9a2hwHCtfnvQBfotybc4+YuwFesT2
    SDRit/mXxYkmi/a5GPB0To/e/QSBuk7MMNtLv0oF8LCrfaN76XOmahxjaSYidA4H
    LUFNqtRL9J5/T4VSZsrSl+Gb6HQIaMoGPbXmFk3i6FzNP7VDViZ2iEkEGBECAAkF
    AkS8euQCGwwACgkQGV/UqJshvBlwLQCgqDaWuJOgfV0r5li2gRPUMI5XCscAoIG2
    pLZLUWFiL2unIMhkFZSQbZZj
    =I2hD
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.42. Pietro Cerutti `<gahr@FreeBSD.org>`

    pub   1024D/9571F78E 2006-05-17
          Key fingerprint = 1203 92B5 3919 AF84 9B97  28D6 C0C2 6A98 9571 F78E
    uid                  Pietro Cerutti <gahr@gahr.ch>
    uid                  Pietro Cerutti (The FreeBSD Project) <gahr@FreeBSD.org>
    sub   2048g/F24227D5 2006-05-17 [expires: 2011-05-16]

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    mQGiBERq43MRBACwBpnAQKjba4//RauFjrfImT2/oiaNWsxq/oYloEhFl971iMsw
    LCaXDtgt8qJDj4RFqiQbcaNBONsht5d6vM2u9fSPq+8aqTwKBUgwUV7EVeBluhk+
    S/iG04HU5lrYjklvmMwkOMUJsuCN8Sj2R6Bc0oyNGbIk/eF3G8Pj70GKqwCg5TzU
    iz2NkNzhoyZIAyL0jyY2/1kD/jSj16M2A3SvH2n1dtNRiNkceKdb8GFEoX3/Irdf
    rt12YcOhjm98XvRhDFJa1R2UgLul6q38YxcLH+rOH9nmlTy2HIYh1HuAPtftR678
    ApOeznte0gxEstliD/AJ9sR9IfvzS105E5OGCWzZc6AMJa7MT4XVAlEogHWZCxou
    4eDMA/4najs55j1kz8khhLiAX0SUJj92XpjmpSFLvFB8D4JpeNtWKGx/wt9uwYBr
    GqnFpP7JHUFowTgg4LjgM3r+W+s1TyUZ5cBlgTgp1Qh6y0h98X6Pbppu1GEhTvWP
    9FlvKNK1+bYNKKvUFHc5nLRK+0M7e0IP6yws2O9RN6rkb6UU8rQdUGlldHJvIENl
    cnV0dGkgPGdhaHJAZ2Foci5jaD6IYwQTEQIAIwIbIwYLCQgHAwIEFQIIAwQWAgMB
    Ah4BAheAAhkBBQJKwl4hAAoJEMDCapiVcfeOp+oAnR9QXvf5u9vyeU3vnAo7CiyW
    LE6GAJ9Pip8AO5c9BvjTjsRhVH9O+447qohpBBMRAgApAhsjBQkJZgGABgsJCAcD
    AgQVAggDBBYCAwECHgECF4AFAkUULcYCGQEACgkQwMJqmJVx944wAQCggfm9PIqo
    j6KZAih/TjByBR7kcAgAnRqnqUHf95IzrsGn6d7b+IhfvKh7iH4EExECAD4CGyMF
    CQlmAYAGCwkIBwMCBBUCCAMEFgIDAQIeAQIXgAIZAQUCRc3QKxQYaHR0cDovL3Bn
    cC5taXQuZWR1dAAKCRDAwmqYlXH3jswNAJ9KqPCEaiTKejBDeI+ZjLemDPYFogCg
    vC7oKdYHCRU/i9jgcsiycL3wuce0N1BpZXRybyBDZXJ1dHRpIChUaGUgRnJlZUJT
    RCBQcm9qZWN0KSA8Z2FockBGcmVlQlNELm9yZz6IYAQTEQIAIAUCR7xw2AIbIwYL
    CQgHAwIEFQIIAwQWAgMBAh4BAheAAAoJEMDCapiVcfeOw5AAoMjUQZiqAGONGzJt
    T3RI1sHhl/p8AJ9ytrTA/gwo66j9K+qNDxQ9kUXqubkCDQREauOLEAgAv+OK9YPB
    4r5+9aZ9/tV6ItolxheP3skoV9ISg4T0ltZM8jLtBLqPY5qWlGRrAbh3ZHkOvrrf
    Y/bfGxPg/qlOe+ewqTnAA7IQcBXObENVfrq2gm35aluNcHbFutYGrkAThuFst1qJ
    bPowBBmQgR7RH5/lWbn3Qnisthsm6J5JldjgcfXth9usyXsGXCP1zZ10Sj2Q090S
    uSEEC/PfBpSbgkEMtTEJfirmVKTp0gPfIdUn/HhT3ed4kkZXkQJvvI/t3Glyp7RY
    5nMYPr219vJ+bYP6yxm9gdfLey6A4gEprtncF/7MTUpib3MvgBpmPRq9yV4LHbhi
    DbXHaoXG1uZVvwADBQf/TkvaVZK55GKm527FenxU4hf0fWG3orqKAI/p3AhPj7l/
    T1nLGWHMku22j61zx9N5xPElMLFdcs4+BX/ltzZdhFS67k+Ya/CLy0G3we8KQSqo
    UTzlP7Mr1aJtXiNXUbadNrkSX1DlRV5RP6ro73vvaFXPwHTxSmRRHg/UgE0B5+tJ
    kuNmK2whTDRR6rfpEcdIS1Tms8IUnva0ZI0QSnhzUcxv+YrV8TX11/NC0FlmhxTz
    ncM1pa6w0yGC/E48uG3NuElPenqM1h05xe9BntWbBPjB1TYa80jYNbLA/KdKEZlK
    1klP2PnNoAX3HoKOm/1rkYEywGfxXuJezX4fYLrdxYhPBBgRAgAPBQJEauOLAhsM
    BQkJZgGAAAoJEMDCapiVcfeOsdgAnAhRFj8Q7p39kg5LmO/zsDXCD8wOAKCDV7iQ
    R8Dblj7cX+WKPwwhnrNq0Q==
    =UXRy
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.43. Dmitry Chagin `<dchagin@FreeBSD.org>`

    pub   1024D/738EFCED 2009-02-27
          Key fingerprint = 3F3F 8B87 CE09 9E10 3606  6ACA D2DD 936F 738E FCED
    uid                  Dmitry Chagin <dchagin@freebsd.org>
    uid                  Dmitry Chagin (dchagin key) <chagin.dmitry@gmail.com>
    sub   2048g/6A3FDFF9 2009-02-27

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    mQGiBEmoPBkRBACM2PQ+WGI38Z5NtkF50MuYyv0u4qSaWtx5Tquch2sgBDjxjebI
    XQYuyzM9piV4ZSZHFyjvFCHjLhPg7Ae6xaeaOwPsGQ2Q+bSC92PoTC3bDdHW1hPV
    6s8KxrFcelHLwhmF56WIALoI6E6IF60KztuISLm0VDG0Wy3lP8QAeoWbgwCg0fY1
    iOETR0ZP09ophWg8CPUxyvcD/3NFr6GEVUuFX4ENQkX2GTrvEB1IBS3v9JvEMlUX
    bShFXWGHB+3ynBvw/EiuOgIB6Jzay3prP9rdGW4NSV7ZMa3Yw6OdhVpQ0ticn4zU
    FiqLL6x8SKXKSm9BvjFuWADe3Lnu/ekY1lYTM4iWPNdA2LjRUHwpDIHcHWgcCzkn
    CfY+A/0eKkj+/VTddCspDaXuTmgGlkz90LsA0cLv6gRO3IV+0t80TgohtsCdR2X/
    Yf7fi8GsaMdhgJZNm9dMz/zD7ZkQ+OyQN7NkB1zkwg2RwOnbbjTa+HECtsr2Znb6
    B85MamlnHN0WHNgexaC6c7ezEFq+RMBKRVJJGwehZXpT185T57Q1RG1pdHJ5IENo
    YWdpbiAoZGNoYWdpbiBrZXkpIDxjaGFnaW4uZG1pdHJ5QGdtYWlsLmNvbT6IYAQT
    EQIAIAUCSag8GQIbAwYLCQgHAwIEFQIIAwQWAgMBAh4BAheAAAoJENLdk29zjvzt
    eLcAn3hUOTepQzeJqPuTFl2Z2dM10HHKAJ9DJRmSIAwHBGPzlAFFzKKFW+OoV7Qj
    RG1pdHJ5IENoYWdpbiA8ZGNoYWdpbkBmcmVlYnNkLm9yZz6IYAQTEQIAIAUCSam5
    zAIbAwYLCQgHAwIEFQIIAwQWAgMBAh4BAheAAAoJENLdk29zjvztRJYAn0cIluug
    IS7YO6a+Bf0FByX3jlndAJ9k3HAxpt9i9R0wFkFmbMX0He86bLkCDQRJqDwZEAgA
    jMe9QT4KYOHsLQsF5vHBq/+W+Lniy6OqEB1GSK9P/vqVIqVa7v7NXX/B5R8UiQMz
    fSNcYH/BTN1lb8Pe7pAIBpqPhKBi7NAW1Ddy9399co1c37ncf6HEa2P0tpJbTrG0
    Eww9nUiFbhjWUHSY0MT57mHQHdCSlqNFl2jaV91CQaNybt9z8JLO301vQXP4LLND
    a/FQ3TdBEIXFLs/H8QKLBe5TBgd2lXy9qpZsii7xpfNXKG1qqIa8sfUoJO5Ng2GB
    K6tJUFh/J548BLt/c/p1KJo8ovJB70DiOaznRc+Tu8rR03ehdfrJ5FpDoxC6UAa8
    7FpXWxjM6L3N/T01NcaXUwADBQf7BpNvsT/QzV74wnGXoi9aUE84ojkIAm9X4Q78
    dfdCvSFWUACcvsB/d7XLcCXOZ1NJ1E8Tdjjmr24MRQRUY8MhDt47ngsTyDhDW5l9
    EQ/ByjX3wlRBNP5qEDVkLudfRE6LlEye2NSNpXYs1Naw6U/deUggNZMwriVCuRI6
    TPc/bKeq7+378EBaKc8ckuRdv8LWsIdaKQ6rQZh1CB6LpSsL9OjcRpKvK8yYas6I
    kWUr07xvvlVyRVLcrNyQwp2QnfK8fXeH2I/Qg9QwcV+cXyKzH4vka9zrR1A9SAHJ
    iOyMXJBy+GzoYLf/y7/u/LOVAm09P4tQ/7V/DY7nxiOabSioTIhJBBgRAgAJBQJJ
    qDwZAhsMAAoJENLdk29zjvztGEAAoNFpe2XX37q3yAaNfiZgEABrxsgZAJ9yH0YJ
    QrmO4sxq5l7AD6K+KNahRQ==
    =ER/k
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.44. Hye-Shik Chang `<perky@FreeBSD.org>`

    pub  1024D/CFDB4BA4 1999-04-23 Hye-Shik Chang <perky@FreeBSD.org>
         Key fingerprint = 09D9 57D6 58BA 44DD CAEC  71CD 0D65 2C59 CFDB 4BA4
    uid                            Hye-Shik Chang <hyeshik@gmail.com>
    sub  1024g/A94A8ED1 1999-04-23

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    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
    b7AAzA==
    =dqQP
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.45. Jonathan Chen `<jon@FreeBSD.org>`

    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-----

### D.3.46. Jonathan Anderson `<jonathan@FreeBSD.org>`

    pub   1024D/E3BBCA48 2006-06-17
          Key fingerprint = D7C6 9096 874F 707E 48F8  FAB7 22A6 6E53 E3BB CA48
    uid                  Jonathan Anderson <jonathan@FreeBSD.org>
    uid                  Jonathan Anderson <jonathan.anderson@ieee.org>
    uid                  Jonathan Anderson <anderson@engr.mun.ca>
    uid                  Jonathan Anderson <jonathan.anderson@mun.ca>
    sub   2048g/A703650D 2006-06-17

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    mQGiBESUcI4RBACIrp/6emcURG5g8edmVyp6d/PcuRDcy3i+YJSXqLPp/3qfM2J5
    kVMCQvgFSXX75K5HvZU6mMMtHYGCComtn67O1MbUSyVUZlNW2PwUr77Nc34MgcYF
    fzU7siy8Pc8LqIy3JUtHwi+qmt/+UsQBTCO+2heK5xMj6zklm7qRfOo0rwCg65HO
    lViBItJSZuZnIqz5chlFbhcD+wdg1tyXl+HW/d9E6LxMigAct7fFMHd5aA5EWWr1
    plTfSSxOETAsX1afsEBfrr6d8jLVri1tfDvRHe/30YxRv6rTZ64GLIXD2WEoN3yg
    NvRVRkOeFPtN8K1gHEKRrcp9ZJfGG80F6d/RMk++AAbg/pI5ne6AxEiR1cAHmwGF
    HlfzA/4/bmU3m2n2SEbBRAOugrYcSRF0OvPsju2K34pooAnePs/S/zJdILIism3W
    1Hjjp46R6kEtvY1ykulseQzRk+IpF9Esc2tJA3VSHL0Z2uI/1fg2mCGc0nk+t4MB
    oqJshJLlR0S7LerduZ/Rc1zErb4nfhG88GzH2Z6fawZtantmjLQuSm9uYXRoYW4g
    QW5kZXJzb24gPGpvbmF0aGFuLmFuZGVyc29uQGllZWUub3JnPohgBBMRAgAgBQJF
    Im7qAhsDBgsJCAcDAgQVAggDBBYCAwECHgECF4AACgkQIqZuU+O7ykiR8wCglscB
    c4qLHc61O+WbG1AVlgMrvXAAn0R2OaVyHU33lcxpP9AZHsOYmhcFiGAEExECACAF
    AkSUcI4CGwMGCwkIBwMCBBUCCAMEFgIDAQIeAQIXgAAKCRAipm5T47vKSCC6AKCG
    fne/4SQaTeR2HtTM8lJGMQZCDACfffBWKNxqzE9C1pp21dlJPyhOLwu0KEpvbmF0
    aGFuIEFuZGVyc29uIDxhbmRlcnNvbkBlbmdyLm11bi5jYT6IYAQTEQIAIAUCRSJu
    zAIbAwYLCQgHAwIEFQIIAwQWAgMBAh4BAheAAAoJECKmblPju8pIj08AniQCG2Zu
    dFFzMubFUI5RK/s/KmYQAKCzEY9efR+f1sJKSo9/I1QZuNNQ0rQsSm9uYXRoYW4g
    QW5kZXJzb24gPGpvbmF0aGFuLmFuZGVyc29uQG11bi5jYT6IYAQTEQIAIAUCSBtj
    iwIbAwYLCQgHAwIEFQIIAwQWAgMBAh4BAheAAAoJECKmblPju8pIAtQAoIifNHQi
    kGm5CIgOxMgMAc4zZWaQAKCG2cl5XbQkANEp/5LB0AJkVyP5KrQoSm9uYXRoYW4g
    QW5kZXJzb24gPGpvbmF0aGFuQEZyZWVCU0Qub3JnPohiBBMRAgAiBQJMrKDcAhsD
    BgsJCAcDAgYVCAIJCgsEFgIDAQIeAQIXgAAKCRAipm5T47vKSJPMAJsHHtHqP65y
    av3mDwxrHqnGYCNw6QCfSSK/rPic0fGdI+kwKphP+t804+S5Ag0ERJRwlxAIAKGW
    DtckTk++NzYHbfCmCa0mCtUg4BQ0752ZRUZS73V/dP4LYBmOS7ubppIWC8XJ8vCA
    YKesQYBde3Ly3TrZfzdlDLBlua2YzmLQgwZvTzfalzcUrbHzFWy+mGqXBBfnclV6
    tYwMDmsVxsukpIVsZzWpEMBBrrd3Zsr9SZG8rjyfiiuv5kvrdPpGv/w9INCcqvMV
    CTi7whrJn8MBwD/rNVuZqa8kW1dN65xKN98Jn5RA5JCX7kY04gIyUL6x0dHnJZ/c
    dfRSMgHPTROiajnzHrd9Olm4e05Dijd5vAffF9rxNtlJNTPDaN57RhhdTK1ZE6mr
    zWocL33kLML77+3rVZcAAwUH/0sXk1iRq1cs6D99VsEpK5Yu12U8OTUk8cPZF+8C
    HsT0c5xCbaPENBebs8gtgS1/oURvO/lgNmthPFEdyD60l0u+wt2BSmua9s+tFsUH
    uWgTSx0k6Z3rw9wZV/YUxe5PLEJ1JJGi3YY7qCG0BqFbbHcpkrtj6X4+H0Y01MzO
    1BdklQ548jHb6wZn6BW+dZikz/vE7urxhx73CpRWerLtq0EpFzsdRc9DzChqmxwX
    WZFpSAZT4fbEipdmK6dtNPJoTeHpB4zxTX1Cj1HHCKRw13dFlr+CMBnQnhJOOaM0
    kh22yyLrR4rikuEqnhfB79Gw6dxlJltTUKNuPHk4D14Uh5CISQQYEQIACQUCRJRw
    lwIbDAAKCRAipm5T47vKSCIMAJ9i5XNgXRnS+qoCDrSgrvf78e6zugCgh+4Wscpb
    rOIHnGJFBTAXFZR7KjQ=
    =PbEt
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.47. Fukang Chen `<loader@FreeBSD.org>`

    pub   1024D/40AB1752 2007-08-01 [expires: 2010-07-31]
          Key fingerprint = 98C4 6E6B 1C21 15E4 5042  01FC C7B7 E152 40AB 1752
    uid                  loader <loader@FreeBSD.org>
    sub   4096g/9E53A5C7 2007-08-01 [expires: 2010-07-31]

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    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
    =PrOy
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.48. Luoqi Chen `<luoqi@FreeBSD.org>`

    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-----

### D.3.49. Andrey A. Chernov `<ache@FreeBSD.org>`

    pub   1024D/964474DD 2006-12-26
          Key fingerprint = 0F63 1B61 D76D AA23 1591  EA09 560E 582B 9644 74DD
    uid                  Andrey Chernov <ache@freebsd.org>
    uid                  [jpeg image of size 4092]
    sub   2048g/08331894 2006-12-26

    -----BEGIN PGP PUBLIC KEY BLOCK-----
    Version: GnuPG v2.0.1 (FreeBSD)

    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
    AJ9RFN/fKYunmZzi/STcxm8mj4AJRw==
    =XTXc
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.50. Sean Chittenden `<seanc@FreeBSD.org>`

    pub  1024D/EE278A28 2004-02-08 Sean Chittenden <sean@chittenden.org>
         Key fingerprint = E41F F441 7E91 6CBA 1844  65CF B939 3C78 EE27 8A28
    sub  2048g/55321853 2004-02-08

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    mQGiBEAlrEIRBACQ1ZZIej0e8esRdDxmuSv96bv1NTDBaEx7P649JM8a3afUvnQl
    JkA/ryZsKAnw1OeIK907Cs5HdaG1lD9ttpQolG5ZN23K01CuHUvq6yY+evwDV31D
    rKwYfALKfdhtAaymxM7RRsNNV8OkXLg0SEtBit4lbdY79vqiVC3PeWYvIwCgyOlb
    7dw3f2mNtm280LybDSjn5KcD/2gWssJVtQgssnCi0Jto8csULw4OKyJHvXX06Qkf
    lnXKcCJTBMgXZf0cZpYhuyqMUZfsVJaF0lMJ85J8zD+Of3G/KwuCqW7jqpom0zw9
    mgsmhZ1rZCbf4cG1orpGSSfmsi5IFoe+mWEJgHwIKlLYd/XDfT1q81swa2AlcjbE
    Pod+A/0cNSOWz4rj1ZjcxYsxg0sZES5eFEHfIJ+5g3yMbNPcvbQhlSClgDD1Z46p
    6bEZA4+vL2kJH+29E1Q0M6H4OB2rY/Co5TypocuazZR1kwkJY+bQtFqPrcCm67Er
    GYl3qcbtV8Wgn153k6DnMUc7by2iTrJiRjWw4LNVhRZn3/dj8LQlU2VhbiBDaGl0
    dGVuZGVuIDxzZWFuQGNoaXR0ZW5kZW4ub3JnPoheBBMRAgAeBQJAJaxCAhsDBgsJ
    CAcDAgMVAgMDFgIBAh4BAheAAAoJELk5PHjuJ4ooG+EAoJP+RzGsCHKYGaLhok0/
    B0hBnIKtAJ0YTlDINuquFtqFTeZgwTUg4jeHFbkCDQRAJaxTEAgAqKA+B8+oo31g
    N7Q6uw1rR5F6M2fFBwPrYU9w6bM7qX6e/oy3epL8BgtzdlHyzcux/hLGDHGP6mku
    lwH5wGSjqfbk3guI1ogl+e0EjblIeUEAA1R/k2o8xt/HINhXiCjQhY6AJL9cljGz
    NQY/ecR9d4HEvjc+Ticgyt4h6WSGMTpjjY+Y0bWrxsXi5ZAsCNYEuRgdaRM52aXR
    gGkSqMBOKSKAPGc35Jh4nzvPSKjXmkXutCnPNcO+qPoro5j2Dx53ZkfB7Raj6CiY
    C8VQ8PDEpjELTq8fuOqqrl911RDYAOECWEqyim78qROuhgq5750w1CJj3K8o2FDE
    Qap5jNPiUwADBQf/bk9Es1QDyDTPLC7Look1OS50vhotrHce7P+uab++khm03ajq
    XmNuTYifQY0kgzzEBaELw4+isBf1NV1vvPK9P6k6FCx+1mcNYzItRLBo15MtcXlB
    IqkD3v/BnhVgT0PqJT6jO8glKCmhEq+GurXqydIfEzWCbz0+snVK769Q9rJHHUf8
    icDKfUI1m7javdnXVrpA1kKZM8Omis+BfO17XDBLYZuVW5rAJDzG42YM8H1mrqBa
    GL806X/3i55d2RfgrljiZvXBpdOZRnM21w6hxNuj3OaVxqrQn9hOgzBcVdSZWc9b
    vxpmZ2j1vx7i4xNq5dzcBqxMKDcAcwomLWgjHohJBBgRAgAJBQJAJaxTAhsMAAoJ
    ELk5PHjuJ4oob8sAoI0szWtufl86pHsG0AwxjsykDS38AJ0SAW5Nr1N1HlZlrtlG
    0ev24JoBxQ==
    =yGes
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.51. Junho CHOI `<cjh@FreeBSD.org>`

    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-----

### D.3.52. Crist J. Clark `<cjc@FreeBSD.org>`

    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-----

### D.3.53. Joe Marcus Clarke `<marcus@FreeBSD.org>`

    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-----

### D.3.54. Nik Clayton `<nik@FreeBSD.org>`

    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-----

### D.3.55. Benjamin Close `<benjsc@FreeBSD.org>`

    pub   1024D/4842B5B4 2002-04-10
          Key fingerprint = F00D C83D 5F7E 5561 DF91  B74D E602 CAA3 4842 B5B4
    uid                  Benjamin Simon Close <Benjamin.Close@clearchain.com>
    uid                  Benjamin Simon Close <benjsc@FreeBSD.org>
    uid                  Benjamin Simon Close <benjsc@clearchain.com>
    sub   2048g/3FA8A57E 2002-04-10

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    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
    =/2rY
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.56. Tijl Coosemans `<tijl@FreeBSD.org>`

    pub   2048D/20A0B62B 2010-07-13
          Key fingerprint = 39AA F580 6B44 5161 9F86  ED49 7E80 92D8 20A0 B62B
    uid                  Tijl Coosemans <tijl@coosemans.org>
    uid                  Tijl Coosemans <tijl@freebsd.org>
    sub   2048g/7D71BA74 2010-07-13

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    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
    =JjyN
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.57. Bruce Cran `<brucec@FreeBSD.org>`

    pub   2048R/6AF6F99E 2010-01-29
          Key fingerprint = 9A3C AE57 2706 B0E3 4B8A  8374 5787 A72B 6AF6 F99E
    uid                  Bruce Cran <brucec@FreeBSD.org>
    uid                  Bruce Cran <bruce@cran.org.uk>
    sub   2048R/1D665CEE 2010-01-29

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    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
    =XNzi
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.58. Frederic Culot `<culot@FreeBSD.org>`

    pub   1024D/34876C5B 2006-08-26
          Key fingerprint = 50EE CE94 E43E BA85 CB67  262B B739 1A26 3487 6C5B
    uid                  Frederic Culot <culot@FreeBSD.org>
    uid                  Frederic Culot <frederic@culot.org>
    sub   2048g/F1EF901F 2006-08-26

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    mQGiBETwuAsRBACaptn8vJ5o5RZkWQUvr3EpBW91+hZtYLM+oBpk6+BayiPAW02f
    aAP6XTrl3GE6hK5+lZWMdxeu733Ukq72cLwbSNefpXi1A9/7IU+bsUWKgSRL/O4z
    HQziOHx+UgFr+uWdKbIssFmIPSJbsI0IOZV1p1mLVDCz97QG8JvyJA7AEwCg7XLC
    0Rsiev0R71ErTCHmuZXoVt0D/ilNo5WJyA8mQ7wmfQsRUnV+GXXOYk2OdhrfqPnh
    B4WVqBd/duf7Hn8TzGF+ee90N7PjlOXa7VH8wQcKKSNUDGWcV++xJQ/ZxeB7g2Ya
    R+JeQy64fVu2+Zi8IehUt96k85mVZtb09J9C+t4+isRsZUb+A/tlcMLlYxcPSaai
    vGA+A/sH2RRyDJFTMGfqmpRSpm716mgWE1Oyk8rjqpRLOjlrgmORHNSSIawSpAHs
    PQrC5ouBWFRe6pCBLpd+xcvaqmnkVBYrVZFmI2ElTYWwviF8aQ7HHP7TVek4EZoE
    xjQ2YDxKlFN287s9yc8HXIiPcwLO6yPhDa1ZLEoebGLDp+nHI7QjRnJlZGVyaWMg
    Q3Vsb3QgPGZyZWRlcmljQGN1bG90Lm9yZz6IYAQTEQIAIAUCRPC4CwIbAwYLCQgH
    AwIEFQIIAwQWAgMBAh4BAheAAAoJELc5GiY0h2xbJ9wAoKf/6b8O9hlrKE6kFfr1
    h4FuwX/XAJ49WDVUxcf+jFYluXwHmzRW8biSarQiRnJlZGVyaWMgQ3Vsb3QgPGN1
    bG90QEZyZWVCU0Qub3JnPohiBBMRAgAiBQJMuXzFAhsDBgsJCAcDAgYVCAIJCgsE
    FgIDAQIeAQIXgAAKCRC3ORomNIdsW/A0AKDVBYK/Y91Wz31ws7Rxy7/LpvL6DgCg
    4jNUurzgT1i0vFuBfPLQx5LEZSe5Ag0ERPC4GBAIAJFsfHsMTmxdNfKtzMpGOJF0
    dLMLwwjPyKkVPtZZ5LZclo+7jjyg7dAYvY05o2ppQ1TH0LjTV333qWItSbv88Dkq
    f/pn8tS0/for45dVnuJbTAkkc+khPHCJ08iZsl/X1IYBj3bteb1z2jZr6M2JEQyN
    qUbbuop3zDoOVMx++lsR5+Q1/+BVuJGw5SuLVhTdNOjiwta3x+eSH4Jzqfb918SB
    uiaQyPcdMGBDd1VyVkJZU2dIFp7olJbi6T+leY1+TUdvXvzmBqB/0XtQfOfc3hQb
    Te5HP9IhiAQkhe9fdsOZpcAJuWS1HvKZT/Ck8UqKTWU3epzTlEN5LiTuisRiUGMA
    AwYH/3eopRoq31zWXlfWI5bETU/DDna48gzpz/P8cc0ge/7YO/sGyB3jtF3D1htI
    rS1dp7I1P8+H42vwAje18uxg1IKZeQ/ffFl29BTqWM71rALuPyXR80JjT6gggTRl
    Bj/YEVUyxD+PXG2qRBNtYOCDLUtKbFzpaGV/ViONkSfzKTNIdjyDlTp8UGWRXteI
    903NQSogGxVew/0wrlyXURoBKWZu34Y6awcvQSmDGLzWqEpVbyVofAjjtE06iIXF
    u9vd3RPua/WkTjZELE2Xs6hkxGoWfsmpnsKuMS4zZDr0olIbBtMiQGp8nbOQrJPe
    5ax09EyO4fJYj4KqY7vfHdMMjByISQQYEQIACQUCRPC4GAIbDAAKCRC3ORomNIds
    Wy+LAJ9s/SE8+ysRtHJq4zYNkOyzXpt6VACgjcPRoqpDhE0y8V+QniOWN6eJ0Ls=
    =h8ph
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.59. Aaron Dalton `<aaron@FreeBSD.org>`

    pub   1024D/8811D2A4 2006-06-21 [expires: 2011-06-20]
          Key fingerprint = 8DE0 3CBB 3692 992F 53EF  ACC7 BE56 0A4D 8811 D2A4
    uid                  Aaron Dalton <aaron@freebsd.org>
    sub   2048g/304EE8E5 2006-06-21 [expires: 2011-06-20]

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    mQGiBESZZ5YRBADZ18WQp9eda97kmLEVNkYUkTbWn90/9ViXP5lWhWDvdIwXXa+S
    byVbZI75QkYrvhhyDQPwK2pwF3v/nGaBhQvO666uWWyqBAC+FTjc6GQ/tVTe67Pp
    dBVlY3X2QadAIWOYHFWNhG58jAXDnuz9po/w/h5t/6wayVElamu/jPBwBwCg48VZ
    4q1oQ7M474YPBsyLfmkLEu8EAJwdgos/BxJ0a39PFtI768+6SS4e+B7qt5UDd30l
    87rvKoW3gXuf4Vn00Y8m+aK+mUjsWeQfDCF6Kj7/ecGNSkfvwmsEDnRMujyapX6J
    wuJ6DzKgrc3zEBXVK5g+JBrSZDGetkdl8jndG0lmxIqxqnx1R+uxiWNs9NAdeP1P
    F7vCBADAPoKaAEW0LlsOE0zIylP5e+LTBd6MQeZ8zISlNqMHDX9F174Fo4CFH/pI
    nW588yf/ChScuONLPIPbMBkvoC34yLEGluvjZov0cjySqzcTN/TkZ7iH1NrkYe71
    /z0Pe6jWY8p4KjK6C6dKok8b1ZI/btmJyuv6bkTzM5kQlxg43bQgQWFyb24gRGFs
    dG9uIDxhYXJvbkBmcmVlYnNkLm9yZz6IZgQTEQIAJgUCRJlnlgIbIwUJCWYBgAYL
    CQgHAwIEFQIIAwQWAgMBAh4BAheAAAoJEL5WCk2IEdKkTFIAoJwahC11/B2TXIk8
    9PioqX0c5nU5AJ0YGkpXIzDzF6QskMWWQq64fMuE6rkCDQREmWehEAgAzFoPIPXW
    +sMFJs/DzCYMzHglYmNzHr8wCfvNq3hiiHUfk9EtcUaMnVI6TMkoEEF4mXMpf7oc
    uCjU0+CZMf2GV+bLkxs2rNePyjzTuoig1vsl9RFA+1tMfLrUsUKwoPjLZUbHHApl
    S1x4k+TaLanT+tSQar//WNuA5JrmxRXSyYXu/2y5VSi+niaNKupNYXfqr53SuW2J
    xh90I90hzgBzQypWNNDEIN1c/lkgIvWm7RbbBliX9Y23iUeFkzmLbOUcpLSy3zj3
    9I3eCshQdFv5UT54N8rMAg6hGC5jfeqy4mVpMLWst3Y/Od+DBv/F9xnaquGW7LYp
    Pz+H4fJzdC79hwADBQf/XyMpsvO4z1N+8DaVybwMedLd4ExSkIAsAI3MTS1mtNu9
    mFm9GQULWvUH1YXBFnVVidibc7zdTwVEAPFhc/uZ5unxqzbUAj5whkCBUF53ZpVv
    nsskZZ3aUEh4hEM6S1t1kc7+HptpMgaSxEcjy+ylybMEzBQ14Mh38sEavfoeDvfb
    aP1AtLQh/+ehQZHeA6px3PvdDeevM6zLoAY6yEKtd5QaSrvhIuP91HKeQjPgM8yy
    IZTWM050axPzKZOCf2VsB78QUNVGcfFrbScleBvaVbdOh/ZgxGOgD7LOhhgivV1m
    dLQ+3W66/GuUVDHap5hdzPuoUgFTodlzilfqjpaekohPBBgRAgAPBQJEmWehAhsM
    BQkJZgGAAAoJEL5WCk2IEdKkNGoAoMBfaOMRp7+OtWsx8pkGGlFszVCDAKC0rEFY
    lBcUW4xcel1cl7I40JK+lQ==
    =bsX2
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.60. Baptiste Daroussin `<bapt@FreeBSD.org>`

    pub   1024D/49A4E84C 2008-11-19
          Key fingerprint = A14B A5FC B860 86DE 73E2  B24C F244 ED31 49A4 E84C
    uid                  Baptiste Daroussin <bapt@etoilebsd.net>
    uid                  Baptiste Daroussin <baptiste.daroussin@gmail.com>
    uid                  Baptiste Daroussin <bapt@FreeBSD.org>
    sub   2048g/54AB46B4 2008-11-19

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    mQGiBEkkLyARBACYi5Qr3qvyrpp0rgqK4cAwteOZbhB3Jt2uxuzrKnKeTw3y4DrG
    lD+7wAwKmLapXFobxCmndhXNnWw1Viy+hiBN5id8c6TmLF+I4lbxL1Nmzl++ifVr
    OdOTqXH/L6kbKF80bY3zhgzR6EtH/0UjL6aXNWyLv/2l88+vx+Qrc5NhJwCgwzkS
    RbUjFKhyAxh7APNTUqV/ZfUD/3nnu/ti17KqQhiRgm6qup2ZPOOpOtlJ8J4dDFtd
    crmhH/ViE5ze8hPVTymufvLj3dWJXB3gA4CJbMmD9qQMaNJ1q7tEIe1MVNUEVop3
    4BEl0oRJyeUlT9QuVqM2GzsBeIiTikZMMpRlZOuuYwm5sbx3nrDHaiBKAkthZF0z
    l9dlA/9QdSfmViz/x7B9Oa7WfkvmAH4/nMIxaBsliNAtK6peaPFo9M03wgfh0eo0
    3JjLAVFbembVkYkA9HqqMFx7Z1W0i1WJAr5SC7gX6Pf3pQPmKIKJKJykXzIRmL6M
    boUYksuTrtZIDiz/luiEg3wVUONLe6iX18v4RzvS03F3T4HAULQxQmFwdGlzdGUg
    RGFyb3Vzc2luIDxiYXB0aXN0ZS5kYXJvdXNzaW5AZ21haWwuY29tPohgBBMRAgAg
    BQJJJC8gAhsDBgsJCAcDAgQVAggDBBYCAwECHgECF4AACgkQ8kTtMUmk6EwjzQCg
    u6livnP3Mpb8zzzAvfNloYFVW6AAnRwemMVD3FRe1Rn+Ci3lfgySMDmltCVCYXB0
    aXN0ZSBEYXJvdXNzaW4gPGJhcHRARnJlZUJTRC5vcmc+iGIEExECACIFAkxO2FcC
    GwMGCwkIBwMCBhUIAgkKCwQWAgMBAh4BAheAAAoJEPJE7TFJpOhMb0YAnjOkFOYw
    8gjML7yPL7w3WNukE/XzAJ94L1XFYK7seJA4zHkMI1nTG3SZjLQnQmFwdGlzdGUg
    RGFyb3Vzc2luIDxiYXB0QGV0b2lsZWJzZC5uZXQ+iGIEExECACIFAkxO2G4CGwMG
    CwkIBwMCBhUIAgkKCwQWAgMBAh4BAheAAAoJEPJE7TFJpOhMSlsAnj1fB+Mtca/J
    umANnc/GL7iWGjStAKCkEJmZyABghRDR8HxMzJEgfGYZ97kCDQRJJC8gEAgA3nSj
    7ISAocQ76ew5bSc+aW/cLqnAvWnEFOtwneahbOOrwpLRt1CtCC7bFsWnkqsFJT6N
    UFcc1dJl0D0+JMql1+uvyiBK4kLGhw/kayWqGhWVYAwul375lLxyj+Er3zGAMdLv
    vbGtg4+8vt6jpF1CvKLQzGQ3UJDlCKz3XST/tRUUFoq/5lD58wqJBOyjKgv+nU5g
    nmVJbmsNtRH8gArX1b1Mld4pnfYdMcRVpbna7Ct78GJDbvsRZnR+YlMMc7De0zd1
    /oeYo7TBc8isPRxFvdd6d6GIuDPuiK6EXZphrwzQSqG3/hp9SHgC6of9yVzP3wFi
    mrVRyyUQKVHYX21u0wADBQgAvbwssU0S6THyBaPr6S+tbTKS8is81SZ87kiUmu1J
    /qyKHXkl/aiC39DBX+a2nr9hUbtUsdYlEmWf4LMACm4jt0mPKrL2EbAUSRCVqJ0M
    c9TliU7X+ULExN7DNa7B93ux4TaGr04CjEuQxfdg3Ob1YDeJ6bzKIK8f64eB51as
    31mUaWC5Jwsj8O1XgP/yNvKi0vnJb4bBava0h2U75oU9GzeWr644KRnh2FGKwpnX
    HSqFq3opG/PR4PbSYkf2R2Eeo7Ox46iCWRrNjjgHXK/GjH8skjXoWWmD9S0h73b9
    KNDXRPD49G0P4yvNV6p08laVUl3G6A63aA1/cBqVGFsyg4hJBBgRAgAJBQJJJC8g
    AhsMAAoJEPJE7TFJpOhMLooAoI1+f30zI1xxIXjy08NLxCQv+9nbAKChzUNzc5OI
    D2+VxC1zkCRqhNa+rg==
    =NqtT
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.61. Ceri Davies `<ceri@FreeBSD.org>`

    pub   1024D/34B7245F 2002-03-08
          Key fingerprint = 9C88 EB05 A908 1058 A4AE  9959 A1C7 DCC1 34B7 245F
    uid                  Ceri Davies <ceri@submonkey.net>
    uid                  Ceri Davies <ceri@FreeBSD.org>
    uid                  Ceri Davies <ceri@opensolaris.org>
    sub   1024g/0C482CBC 2002-03-08

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    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
    bmtleS5uZXQ+iFkEMBECABkFAkNKSicSHSBObyBsb25nZXIgaW4gdXNlAAoJEKHH
    3ME0tyRfmbwAmgM8RxlVNuJ21w+vNOz9VRTixYWUAJ9on0q7U7r3DoLrlHR7AERZ
    AnNsT4hXBBMRAgAXBQI8iPZrBQsHCgMEAxUDAgMWAgECF4AACgkQocfcwTS3JF9K
    DACgqcXLx+lstujUIJ57fYfX7DpaTlYAoJr5CpgeNfVK69NlZSLw0tszxd63tCdD
    ZXJpIERhdmllcyAoV29yaykgPGRhdmllc2NtNUBjZi5hYy51az6ISQQwEQIACQUC
    R5YTgQIdAAAKCRChx9zBNLckX1TYAKCRZHTj+2/Q4Ei9zXWPYo1m4h8DNgCgyi3l
    9xNc6tnk0K6lBMVWRPHSH9OIYAQTEQIAIAUCQzc4TAIbIwYLCQgHAwIEFQIIAwQW
    AgMBAh4BAheAAAoJEKHH3ME0tyRfbR0AnA0x3FNcN7QZFCMjyUIq+8SU+H8lAKDF
    IjKSK3zdW3wkVBtPmXuhSm6d34hGBBMRAgAGBQJDv9frAAoJEJnvMgrELySdoXsA
    nAmfR3omQLViU4jJcBG9nL7Hb0GvAJ9OpEclx0GKtnXg2qO17ScNODs7rIhGBBMR
    AgAGBQJDv9gOAAoJEBCXnKrAf8AFw5wAoMP176cOsZzQhAZJYGuqmn2GMyE6AKCs
    Y5bWd8ziA6TnumebNo8nqdfIhokCSAQQAQIAMgUCRT+OhCsaaHR0cDovL3d3dy5w
    YWVwcy5jeC9ncGcvc2lnbmluZy1wb2xpY3kuYXNjAAoJECZJ5ijF000FE0kQAKer
    d09AdfoAL03XNWMZw/cxRsftj6VYlBw3Z05IGz1rzkrU2zpZoiuDcKAj1olabd9x
    DQTMq1zYt0rROOcs8gu3/nzXo8LwyyFv+PrYUtyzT1LPmFmWiikHtOatSiStDk9U
    kBH+b0jjbO01oba92PqMGLyCbH35PhbutOOana4FRKva9n8ZazkzMy8cRCFyaBUi
    N7kfgtzZa1TuSpd1k2y4wi4nu0A2fugJbY/mgV1Mf0kSuVs0cx4X4KH2bjKwwYsX
    mztavpD31j6PPmtJarpeCi5fBYie2JDNuEQvIfOPYJoPF1XNfTKfHSr2cpX1m60X
    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
    kY8idgc=
    =eKfA
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.62. Brad Davis `<brd@FreeBSD.org>`

    pub   1024D/ED0A754D 2005-05-14 [expires: 2014-02-21]
          Key fingerprint = 5DFD D1A6 BEEE A6D4 B3F5  4236 D362 3291 ED0A 754D
    uid                  Brad Davis <so14k@so14k.com>
    uid                  Brad Davis <brd@FreeBSD.org>
    sub   2048g/1F29D404 2005-05-14 [expires: 2014-02-21]

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    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
    =HfL5
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.63. Pawel Jakub Dawidek `<pjd@FreeBSD.org>`

    pub  1024D/B1293F34 2004-02-02 Pawel Jakub Dawidek <Pawel@Dawidek.net>
         Key fingerprint = A3A3 5B4D 9CF9 2312 0783  1B1D 168A EF5D B129 3F34
    uid                            Pawel Jakub Dawidek <pjd@FreeBSD.org>
    uid                            Pawel Jakub Dawidek <pjd@FreeBSD.pl>
    sub  2048g/3EEC50A7 2004-02-02 [expires: 2006-02-01]

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    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
    9caBiftOC/+/0ej5qqg=
    =/cMH
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.64. Brian S. Dean `<bsd@FreeBSD.org>`

    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-----

### D.3.65. Vasil Dimov `<vd@FreeBSD.org>`

    pub   1024D/F6C1A420 2004-12-08
          Key fingerprint = B1D5 04C6 26CC 0D20 9525  14B8 170E 923F F6C1 A420
    uid                  Vasil Dimov <vd@FreeBSD.org>
    uid                  Vasil Dimov <vd@datamax.bg>
    sub   4096g/A0148C94 2004-12-08

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    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
    XmPkHj0KHckscg/fYw==
    =Yp1b
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.66. Roman Divacky `<rdivacky@FreeBSD.org>`

    pub   1024D/3DC2044C 2006-11-15
          Key fingerprint = 6B61 25CA 49BC AAC5 21A9  FA7A 2D51 23E8 3DC2 044C
    uid                  Roman Divacky <rdivacky@freebsd.org>
    sub   2048g/39BDCE16 2006-11-15

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    mQGiBEVa4hkRBADRcg44myl39Jv+OO9DMl2XjrS9JwguZSVjCHY2Tj4urjsEjcwf
    3ykYpJbXkK0KHHP5VTfoIp0MwoQdS4Xx5uHMHg/re5gws7KU4DXFmc9gWd1+eVXK
    PEMfWVG94qS7pG9e5aS7znglPNVUUBMKVI0VgD4fsML/92RFJl7iLFY7uwCghVfP
    952asGrNrV9T9+GBOxKUjvMD/3be37yXGBcS2f3Py6gHbv4vC0CFtfXUM6Zclz6Z
    8FGv0sYDaTW94FPkXqmcUaIjH5KMyig8Y93UquZ04stFgYkxwku1drHZb4hnuqmv
    NR4qvycMye1dMC9824+FpZkhP6ItjMcbE1PxRhQVU7dyO0dFyUlEEiMrTPhzLiJj
    aR6pA/9nW7NSJIaSnDrJ8Uq4NEIjyTidU5JCZLJJxTbSbEe5FrOSINENppVbmUzj
    CMXqyP4sHXtEA53Dl38dDjWz08A/c4dK+lwxtjDQ0NrLpXHrnqWc7tNW3XtayCiH
    KjYTUbj2kHV4Kva73zJBAlN0N+D58TfQQDisnaw/cGebU+5/ULQkUm9tYW4gRGl2
    YWNreSA8cmRpdmFja3lAZnJlZWJzZC5vcmc+iGAEExECACAFAkVa4hkCGwMGCwkI
    BwMCBBUCCAMEFgIDAQIeAQIXgAAKCRAtUSPoPcIETDXXAJ4t7ojZLL46SN/zLVTT
    4qylgoqfNACfSvpuziRIUKGLO/YdkYe1hiJqknG5Ag0ERVriIxAIAInh7G4TY8ky
    NObKXToSjpvxNhY4JQMsJ43dCHTkT6CwAes96mhAscYF3KfBcIFhv3Oj6LhyMe8l
    J9A8wcAPnYzOzjiZLrITF0IlVM1L9VT49tkvidOUMykKvluYKMmntH8fCi5pBKc8
    Y7FQ5Kc3MZ/2dge5k95mpuWmuAjAVJXKd2ONAPSRwnxplJo1kA7Bvp632TRbDEjx
    mwtg48FI4Blwu19i8rpwzRf0iCp78UF2ypoyrRqzudLXcMT4yS2yU4z4mbU91qbc
    PNCkaMP9/HyoHnIA38bs0tMUUawKCeQZgCkTV1R+V/J5uoRIMsSBGfX81RADvEB6
    HtYPrUFCYs8ABA0H/0PBej8RqZJmWU7qlpoEX4gEG8FpcsNG2RGNjuSu6l19xk1E
    RF5tYg2N3hnqioWri1t3BJn1qpHgSL+mJJRqf00c2U5XUKuxAvTWjARyqa2G+WiF
    hPc1pmE9Ty2n9XkmT7G3jidTNHXbqsjEK0OCZdLJHOkTuStUjn8Mz2PpvlZoj0Mo
    VYEE3Paet8mFH+Y/EjHKTe30RymAOQOlc3gKEP/2qkp0Zqkb0FqklLCUQvvjn37k
    /oIcF/lvmIieN/on565dggchLRWCX7dMI6QDtEnd72jwpGo30oVUC3NlKoEggcFA
    jiVbPR/F4UhBtjcB6GCiLHvREKjL17gCVwMv4mKISQQYEQIACQUCRVriIwIbDAAK
    CRAtUSPoPcIETGfTAJ4tppNp16pURW2x6Yi3GwY12/Rb9gCdGiT6lz3e0Ffo3EDl
    3I1WppEoQQw=
    =5OWm
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.67. Alexey Dokuchaev `<danfe@FreeBSD.org>`

    pub  1024D/3C060B44 2004-08-23 Alexey Dokuchaev <danfe@FreeBSD.org>
         Key fingerprint = D970 08A4 922C 8D63 0C19  8D27 F421 76EE 3C06 0B44
    sub  1024g/70BAE967 2004-08-23

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    mQGiBEEpzAURBACu7RDb0dP0oorBa7j0Do1auzG1N2wQgTMIHoo7DhspaGjvN0RJ
    /dozO04jqyWopb/cA7iWMqn/7gX9ckHrKa1ugQRb8P7AhIZNmfc0B5AOCqeGo8gi
    o9y/XBhFRS3Osxxe0j2bIoL3pk0EBjHaa477yiZyWNjq5j8rPf/h7DudtwCgx14M
    iEwmKZ4hWMzeaKYcOFTIn1UEAJtUMrBbxMxchDnIuAn3Oz3ESpGpxSDVcTHUxoIl
    3A+mizXetzWX8lmEP8GM2oM1/dRCiF+l2v5tcnBO52PT1cFst28W6Ytyf1PamIFC
    GNL2CZUz/ZVRBPEZb7CfXJYupYd1AiYNCoSyh9bOv4Fin3Uhm+Ds1n6x3yulCFyo
    PJ9pA/wOMpGwCNSpNLcfz3gG5dh7PR2rhh0D0w7jZbO/l8D/81inThfBRb7B4KIP
    v1Cl/ynm+M4XS7Fy3xjfPHbUvHY/DNr9rqI0qsGU9qTubuBO+I647tjLFem8gaue
    yESeoU4okXMPblPXh8r93JIfbmi/rMcuddblJ5kw6U/IYYGGS7QkQWxleGV5IERv
    a3VjaGFldiA8ZGFuZmVARnJlZUJTRC5vcmc+iF4EExECAB4FAkEpzAUCGwMGCwkI
    BwMCAxUCAwMWAgECHgECF4AACgkQ9CF27jwGC0QXdwCgwTxjqqG9DppWUVvfQklR
    7O7d/QoAnj9qF7prbDCAq43MQJIJ1AP6x/4UuQENBEEpzAYQBACsVmYX94l7jndx
    byPUZl5SlKLJFSTIymPGLebcdNg8rF86aq/9d8nRrkrqUWtpQtWeAZw2GZn0n/vz
    kRbmaqMaHkmdg9g9xT2qstOL0rZhCyvLWVeNYUjgkNWi7Be3yjb11RLPOanpug5z
    Rfu6I/7qjOcVEoa3cjlahdK//xleWwADBQP9EWsXY1iKSQ1k1B3N3+EEWbzuOzaH
    upo7fLwamIVuX7K95YIqOawMlhERBD8MUxfrzJkOIbVI/81g802Iq1D2Xv46hvCP
    J8oszCeFjqixsOkg3HmdUyvTHnODBHsQMoy/37r5voAElx/LXc4Dm9DSR0rSTpXh
    mUdHtM0Y6XYEcoCISQQYEQIACQUCQSnMBgIbDAAKCRD0IXbuPAYLRD9GAJ91NEgg
    OHfLL9Taov5GEDVjEaD8MACfeTqtFRD4Piuxg64CGOdNBCJ5+p4=
    =abIH
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.68. Dima Dorfman `<dd@FreeBSD.org>`

    pub   1024D/69FAE582 2001-09-04
          Key fingerprint = B340 8338 7DA3 4D61 7632  098E 0730 055B 69FA E582
    uid                  Dima Dorfman <dima@trit.org>
    uid                  Dima Dorfman <dima@unixfreak.org>
    uid                  Dima Dorfman <dd@freebsd.org>
    sub   2048g/65AF3B89 2003-08-19 [expires: 2005-08-18]
    sub   2048g/8DB0CF2C 2005-05-29 [expires: 2007-05-29]

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    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
    =hGAK
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.69. Bruno Ducrot `<bruno@FreeBSD.org>`

    pub   1024D/7F463187 2000-12-29
          Key fingerprint = 7B79 E1D6 F5A1 6614 792F  D906 899B 4D28 7F46 3187
    uid                  Ducrot Bruno (Poup Master) <ducrot@poupinou.org>
    sub   1024g/40282874 2000-12-29

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    mQGiBDpMfbARBADvuMgOIlEdTWlb4XvAu1YEfCijox47muRNbkA0yb0drMwYnV05
    tZ5cOK1uVELQ+gtGK7lDS5rQ68LPpXFMVva98skkVimzgfmQiqDOXiYW4BVE1qmO
    THpb5dIpHoXqTDILTLVomf6d8Z2re+IJUNvbrBFM616wndIQqux/O5LHDwCg1Hky
    KrYDoOT1lcDgSGH6RcqSoAkEAI+D4y6JpBctutEGWNcgijLv36g09LYNeC/gD2aq
    0bS/4c44eoPkMCBBn8MM9AIsK5sfne2GuglHcUM2U82s5UbZcQl8vzcyG9AVGQGl
    aoO/duxFKPQC70/xEa26Bwjv78cVWm6hLHoMZRXvsprr3pQpuZHmzPWwwxipqXkY
    gYApA/wMrLwdewzd4yEMB5O6y9WSd+FUA/y1MS1+9epdbzPnpUszR2QKlA+XblfD
    8KdxxUjIjt6WOXEhQ0GCWfRauB0MAZHTMkA/NVnmR+pI6FSJ9LJ4s6+BoFRbKdDp
    JY6yJUZzqRgxgo7tIcpRsRuXP4zu8KYlCPL0Al3gSW2DlKYxirQwRHVjcm90IEJy
    dW5vIChQb3VwIE1hc3RlcikgPGR1Y3JvdEBwb3VwaW5vdS5vcmc+iFYEExECABYF
    AjpMfbAECwoDBAMVAwIDFgIBAheAAAoJEImbTSh/RjGHWXsAn0/3nHkOH2WxLdWl
    ANdjJDzkMLywAJwN6CBCDKSbN7OzfNHTx3XAEVUUmbkBDQQ6TH21EAQAiEIQKsg7
    Pi2k3L9fFnDDAcFgh2oL/MpHgN4kKYx2aoTr02O3rBmK3ADCIBqj3dlWMavIOuzu
    1DvmvsloIcDwsMsc846bjQq0R20VaiNz4NJqZfhS2/xYPzJo9sPTncJOGQowjv+J
    GqlkmvLVSLSzYPh7OZjdw3SxS3zFPEQg0ccAAwcD/iZIddUIenySJdgs8WIe26X5
    r34/0TlyxiwtlzefYpVHHYD8CzVhYPD+iWUpDv/10HC7c58JTxNUGyN2UGcaDNRc
    g/VJqRahYxz9LokB+vRPmCyoP8bhLkrp0fHZFnFpH4IY4WQecLBfYJZZF/K7TLLz
    O5tine3BIL/LpM0nhVWJiEYEGBECAAYFAjpMfbUACgkQiZtNKH9GMYe/7ACfTNKi
    dschnmutxCWw5fcsyqP9oYcAn0Cf7InoUX5AUFaj4dFZ4IN+9L/m
    =LTGr
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.70. Alex Dupre `<ale@FreeBSD.org>`

    pub  1024D/CE5F554D 1999-06-27 Alex Dupre <sysadmin@alexdupre.com>
         Key fingerprint = DE23 02EA 5927 D5A9 D793  2BA2 8115 E9D8 CE5F 554D
    uid                            Alex Dupre <ale@FreeBSD.org>
    uid                            [jpeg image of size 5544]
    uid                            Alex Dupre <ICQ:5431856>
    sub  2048g/FD5E2D21 1999-06-27

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    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
    AhsDBgsJCAcDAgMVAgMDFgIBAh4BAheAAAoJEIEV6djOX1VNK0oAoPp14QWuw+em
    oL7+q0L9RCAtw+15AJ45PiXh1GNC7HPj7xEzLdU0FqNM6IhGBBMRAgAGBQJABqTY
    AAoJEGiYgizI8lL75sUAmwSDPuHjpFlqPDLmZ9CYh3Hb82lqAKC3BLlS9vSv8Dzu
    hQVIUSh0Um5WsNHU+9T5ARAAAQEAAAAAAAAAAAAAAAD/2P/gABBKRklGAAEBAQCQ
    AJAAAP/bAEMABQMEBAQDBQQEBAUFBQYHDAgHBwcHDwsLCQwRDxISEQ8RERMWHBcT
    FBoVEREYIRgaHR0fHx8TFyIkIh4kHB4fHv/bAEMBBQUFBwYHDggIDh4UERQeHh4e
    Hh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHv/A
    ABEIAJAAeAMBIgACEQEDEQH/xAAfAAABBQEBAQEBAQAAAAAAAAAAAQIDBAUGBwgJ
    Cgv/xAC1EAACAQMDAgQDBQUEBAAAAX0BAgMABBEFEiExQQYTUWEHInEUMoGRoQgj
    QrHBFVLR8CQzYnKCCQoWFxgZGiUmJygpKjQ1Njc4OTpDREVGR0hJSlNUVVZXWFla
    Y2RlZmdoaWpzdHV2d3h5eoOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3
    uLm6wsPExcbHyMnK0tPU1dbX2Nna4eLj5OXm5+jp6vHy8/T19vf4+fr/xAAfAQAD
    AQEBAQEBAQEBAAAAAAAAAQIDBAUGBwgJCgv/xAC1EQACAQIEBAMEBwUEBAABAncA
    AQIDEQQFITEGEkFRB2FxEyIygQgUQpGhscEJIzNS8BVictEKFiQ04SXxFxgZGiYn
    KCkqNTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqCg4SFhoeI
    iYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2dri
    4+Tl5ufo6ery8/T19vf4+fr/2gAMAwEAAhEDEQA/AOJFx4keL/hHrOVYLJmS2eNd
    qGJVbK5IAyo78n1Oal8U+GtMdhDout2etXkUgjuIixxIwQMxXbwcYbIzngnnBrmr
    qO0gLXl8s9sl1GGE7XJ3HoPl5yWwMcc9Saz5bLUdPvRqMAnhtY5VXz7iMxg4B2qx
    K4dyCQD1xnNedC7OmrHkkrGddqNP8QajaPF5UUu2VU27cKRnjPbk1Y8OXMMOv3mo
    XSpKpOY2mG4hhjkVX8RTzvrFtesx3RxGMyKXbcuTt5ct1yR6cdKwLq/dZWAZV7cd
    MVvGnzb9UVKUqbsz06+1+zu52mTZHO/LSqBlvw9f8aqQXLI6lJo0jCgAMACBnpx9
    T+def2l0wIllOB29WNaC6zs2yHYNvQMev41p7FJWM3UZ1XiBY72c3jQxq5ULvQBs
    qM//AF6ztOkhs5TIJfKLAfL0HA4/GsCHWn87MZIV/vBGIBP0rUkltDL5ctw4bA3L
    Iu45x/8AXpuCa5XsCbWqN29vk1eVXubmOX93sVDgk/WsXWNGmjurC4XN1H1mRCAQ
    BjIz9O/aqN/Yny0exuFTPzZGav8AhbUHtJA15JkjK4JwSDxnnpQoKFuUrmc7KXQX
    XbrT73xvZSaRBeWdraRRgGcrI+9ed2CcH+Hj61YutRu7ia+mu9moRlFR4FTY/wAo
    5IHsRn8TjtW5BPpE14tz9lhDcYcKBjn1HXNYerQvN4quLZ75rMXABtg6bond2xjg
    E88cH35HGc6ilOWpSlCC0NrSILDxLo88ekWxsZpEaG4hiOQqncFcHockOCeDgDjv
    XMeMjcx6dYeH7RCYNFsFnuBnhZ5ym8/hlR+NafwivToviGeJpIpYZJSkgUMyNsyM
    N0I5J+bBAPOKm8bWsOnaZ4qvIt5e+u7fyy5+ZFDgspx7jHHoKulL33F7HPVTSTaP
    Z/gtA0vwc8P26uUaSzba6nBU/aWwQfbNFL8GLj7P8MPCSAIF+ynezHpmfP8AWiux
    njyk0zw/xpr0rWUekwwOs0J80AQ7RDyDxkZ6d+MfTrfl1nxLD4XlttQFrNIfLmRL
    uFHNqATGSq4Chu/rk/Wj4h6Ff+HvDcepHxXqOozwzJBCLhEcAOCpGWBPTPGa88i1
    PVLi5gtlvGUh1WMoiKQzMB1xnuazo0oUY8rVz1ZT9rJzR0/jWTRHtdmjXV9dTLO3
    nSzbfLZeilcfU9a402jGATbwQXGRvB4/Cuj8e2kFr4hudPsJZ54EZQXmkLszY+Yk
    /U1m2seyE5AI3beOqjFQrK5reU0nJ3GSRRfZ/LjQ8HIGef8APFZd8yqqIxOcYGO1
    Xri+iuAYmjKRg9FJJHuTVSW1ga5R2fcvXPqMUlcTV9ixozLCUuZl3shOxd2Nx/wr
    YLSXEcoljiSUqXjaMEEkdves7SYYJ9QjMi7o41ZsZ64U8Y/Sr7yGO+tZdrAh97KT
    94YJ/Lg1MjWKdiXSL4GVSyK0YTI3Dke+a2Looti7zWaTbxlHAJGPU9cVx+hMst/A
    lwStsAGkwc/KOuK14NakOomW4yIlZt6L90IRgD8OMUMlXepfsbpIx5SBTjGFzjNb
    zQJqNvb7WZbiM5inGSY/Qcc9f5VwF5L5N5G6ufLlY7SDwAPX8/0rq/DN9Gk6wNGX
    KtldxJJNDlbUajrYT+zr/Sr5XvLgXE8pJ3gYk3KOSw9Dng9/rXW/GPTopvh/p+q6
    XHMsARBdiSUMWdWAZlUdFyynnt9KddwxuY7mS2hmnjGY1kGQD9Oh79cihtW0jULS
    4tNZD2kQspo7eNIsxCV1IBIXOOTnoAMCoXM2pIK9ROKhLdGnpKapd/C3wlZ6NL+/
    hSKV4sZ85d4JA5HI4I57UVieA7qK90/SdJn4WKHy13swB2sq9jnrzxRXVUi76Hkq
    K6jfjxIU8O2MBfcJL5TkHg4Rj9O9eX+F1U+JbIuPkS5jkYn0TLH+Vd78cLlpxo8G
    TzJLIR74UD+dcXYRLaPLI5KvsYoQM9RSnLU7KMfcLOug3d/NMHx5shbcfTOc1lyS
    rauRCrFc9+9E120cQba2D6nP61WSVZ1MecE9P6Vjc6klsQzW7TSO6oVyMrj1HakV
    DCqRbhJuPP8As/StOGwE7cHa+OQDjP0rSs9FkYKDGdzgYYjijnRfsmc9p8l0kmVR
    yxGOR3rQey1CVfN8ttxUjcBjGeP5ZFen+HfBscqgmIYI5JGc/wD1q7iy8IWsqlUg
    BI45HFQ6iNI0WfN9hHLYXcSzQlkQkHKn5lIwRWydG821a5tCWWT76k9D1/nXrur/
    AA4ujI09nbD5Scgrke4xUuk/DzzLRi8ckMrEBFToxz1/+vWU66WpvDCt6I8EtrOW
    adopVK7Pm644z29+a6vRtOu49s1uN4GRgrz+PpXudv8ACi1m0Nr6S3WW4RA5VRhh
    x8xP0PQd68be8vdGv5YICYyOACM8f3eaIV1U0RE6Hs+pu28s7IUdATHg8HcOeCB6
    evFZmqJZSzvKIl8w8Fl61e0SdZJZFYDc3qpI5OTWfrlqLYmLz45SDncpBBB5rpoa
    SaODErRMp+D7ldN8XQruAV2DR5zksCD/ACU0ViTT/Zb6CfzNpVxgjr17fhkfjRXW
    rHnzi7mj8Vpi+vafEDnZCzfm2P6VFFZxyeHlvJlDyMX/AAAJA/lVbx151xr0F0Yy
    sAhWJGJHJBJP863rEA+GILcLkmLOSeucn+tc71OuL5Yo89vpYwdhR+PepNBiSXUI
    4uMN159aTVIyszIw5DYOKt+EQZNbjQLzu4xWMn7p109Zo9O0Tw1amNWeMtjhST2r
    o7TSLOOYP5eTxgk5xTrD5LQKMZq9bxynGOprgUm2em4Kxr6THGmFQYB6YrsdKUFg
    UABI/OuQ0iFnlUH867LS02MADwBVS2CC1Ox0a1R1+dsbuT7V02nwRRIqgqcHPA4J
    rk9FfdKi5AB4znrXW20exF5ya5ZQbepyYu6la5NPaQy2zRPuMR+8oOA3Ofyr5B+L
    ugRjxfqTRhdv2phtz2xkivr+RmSImvkP4yaolh8Y9TXA8soJCvu6A/1rSlpVsuxG
    Fu4SvtocjZi5trV1ZSJdgUEnpjgGsWS9ku52W5K71LxOfdTkfof0rctLm7vLE30k
    Ugib92JSuFJ/uj8s1yesl7XV7h14DiO4H1U7X/8AHTXr0Iu3Mcld3lymT4sUQrEY
    pMsJVIxzgUVqahBvHzKDn8jRXRqcqsWPF1xFPJZ+WWwGckEYxwK2baC4S2jiWJ8I
    gGfwrJ8Y+a+qWkUoAxExCj3OP6VqvNcykbJ9pBPbBrE0a91Gd400P7TE11p9uqNa
    kJOqj7w9fy61jfDiNm8Ux5GVRGJ4716Bb3awWGZ4/OeZ9rgHlto4/nWN4V0xLLxH
    NJGjLHJFvjB7ZOCPwORXE5NJxZ7jpRnKFWGzOwl1eCxXy0jeaUnoq5ArOuPG9xCA
    IdOkznG5hgCm69bahIfK09Nu4/MxOAfx6/lWDqfh2RDbSO9w8vHnh3wuQc8Y42kf
    iKKEIsivOaV0dXovju5Y7mhBYEcLXrfgPUJdWkVY1zIyZK9c183T6faW+pwLYSuW
    WMb5N3V/bnOK+jf2eyv9pmScjcsX/wCuoxC5VZGtBycXLsi/4on8QaYJJQ8On20f
    PmTNtX61xVh8R/ES34htPE8Uik7drI21jnqCw/ka7X9onTHv7C2vI0nmCN9wD5FX
    HUgd6888LaHp2o6zZS21lFEIpVaTdhuMjcNr/KxO3jcOMnrWVC1SHNIqo3OKcY3b
    PY/DnijXbmSGC9u1WeWPKxyQFA4z1UsPmH0rwr9o/RZ4viZHqEkLRxX9mhJxyGXK
    4/ICvpD/AIRTTZtWXVbcpaoWEgtIP9Qrf3gOAG9SoGfeuH+PGlm/v9Mu1t/PFmWk
    kOCQqjaeSOgz/OuenUaraChyVHyQVm1r6nl3juZbPw1o3hi0h2QW8X2iXb1LsCBn
    1OMn6EV5T4phZVgunJKq5iceiuMH+lepfFu4Mniz7YMI11aQzSIBkBiuDn3OM/jX
    n+tL9r0m6t8bi8Z29juHI/UCvdw6XskeNjpP6zJPo7fcUY7NxaRRuxkZFClsdfwo
    o0W8Fzo0L5BIXY2fUf8A1qK2scfUXxNFnxXbW+S58pPfq5rQuj5WFMqj0BGM1qS+
    Fmk14aj/AGgG27dqNHz8vbrW8dJh8pfNCySddwUdPSsrFuaskjldDtZdTW5sZZ0j
    kUpJA6nOAeGz+OK6eJ0k01AoAa3xGwxgjgZ/x/GscH7H47XyU2LHAquAOTnc3T8B
    W/cSCSUJBEzeZnzDjjGK4sRTlzaHu4PEQdDlb2LEMfnx/Ss+6053JG9wDxw1aGnS
    KrgEcUaldQwox6+prGk9TrlFNamXY6Hbxt5oALDuRXqnwSRV8QRw5K5U/jXmGnXs
    1yzBYyiLjJNei/CiYW/ii0LYCsOT6ZoldvUuMbRaXY96Wyt54vJuIlkjYchhnFcr
    ceH9Htb1jbwIjZ9K6szPFLsC7hnk+1cp4jvGt9WUSJhZR8no3/1654tR9083CRqS
    m0mdNo9mYbXJcHIzVW4jgezvftaxmzJP2ov90RKuW+verVheR/YN6tkYwK8Z8Z/E
    iV9O1vw/Ba7WmuHgE5YYWPO1sY5JOD+ZqadP21RKC23MXJwcpzdjyHxbdXGu+Ib3
    VChQXErNGpH3Ixwi/QLgfhWDLBNGOYwQD2bGa6G5ljhX/Vztu4zGm7H1qlcKSmeT
    nnntX0SioqyPJlJyk2zh9Ctbu2lu4ZoCkXmFk+YcD8PbFFdLcJ16Cige7O2eW3Ug
    SOo5xwR1qTCSIFVyTkZPb6VYmiGBItvH5pwd23/PaoLpdRCk20aNlccZx+FTa5By
    Vm3m+NdTlQqRH8i7h3CoP6mtxIpW+63QFchOc59azvCGk6vDd31xq1o0TXLs+Q6k
    nLE8YPTpW/LY+ZIAjty+WWRMhvbr796SiXOWuhQfdG3Tvgiq96isu5jwOnvVy+Ty
    5WHABPpiqeoJIbQSW+0yAcA9DXkrSVj6dSTppjoDJDG3lPgN2x1rqPAWtBNat0lj
    2kMFz+NcJa6lfQRbLjTg4AyXjbj8q2/D2raY77buzuoc87gvce9U4yaZtT521ZH1
    VZ6kuoM0yuY8DaRgAPwB9aq+I7SHUbNY7lCjA5RvQ1y3gfxBBcW8aWun3dzIU/u8
    nHfjpVvxU/iq8nsUtVgtYHkzNGRucLnjJ9T6Yrz5RktzneGlSraaG3sNjp7eY+UT
    5i3qAMmvmm9DT3Mt0/zF2aQ8c8nP517r8VdbTS/C5iG4zXWLZMDONwO4n2Cg/iRX
    iYnAGHVc8dRXpZTC0JTfU8nMKjfLF+pmRl24dflHQbShH4Ecj3qG6KAkCPcAeD7V
    bmld+cdDke1VXKlM8j6mvWv0PMSMicgA/JtHUUValjB5bbn9DRSLO9EttG7FLU8E
    bi3btk88Cpd2YwnmEBhlSB8v4U5THDGqZI/iDBe/4mnShPMDFg4HIGOf50iCBEXb
    5cgCBm4IJz7fSoLi3REDCSWMg4G0b8+uc81aYkjeQCR0AOSKjkLOxj8p1LDnAGMe
    /NMDB1VEM0iJkKcEZ6jIBrNt3AfY556Vr6opF2R1yo7/AFFY1zGQ4deGHb1rxqml
    Rn1FDWjF+RLKi4O0YzWh4bdVu44nLKrNz6VnWs8TgK4APcV0nh6KAyKwwFB6GhSa
    R0U6sotWZ634Eu4LdV8tnB6fert55I9hmcAALnJ7VxHgkWpRWbZjv7GuwDLezpGC
    GhjIL46Mewrza7fNuc+OfPV5n8zyv44s0cOmQyMUefzJCMkMB8oA/wA+teZiSKNk
    VwX7MzHB/lzXr/xnsxc3tnOxAxGyjPrkGvLJtPaNhueM85btn3r38Bb2EbHhYuXN
    Vbfl+RRneFCrKr7G5BAOahuTGuQ20nHPGKWa2edj5LYIPy8EY9etDRDgSKxAPbv7
    c12HKZN55ZPyZyTwaK0XiiXA8sk5OA3OKKCjszCky5zjHcnIWmGNYidspZz82QDz
    /T2oAYoBnaCOCD1qWIbDtySMdCKRJCoeRVPmKMnBOeR7YpJbRod9xNLtjA+YsBwO
    OKke8trVmOWZgeEABJ/w/GsjVr25v2Hm7UiHKxr6+p9TWNWvGmvM6sPhJ1n2Rn3M
    4nneQlsZwufTtUEibsY5IqREJLA96daYLFT2/SvKvzO7PoklTioroZ9xarIysh2O
    OMiuz8A+Hb/V7aVI544xjG4oSRWDPasrjg4PSvQPhndSadayx4X94cjNZ1XJR0HT
    tJu252PhDwdJpsZF3rEk65+4kW39ST/Ku3tYI4ogiLsUelYOmX6zzLGASc9K6VgF
    jANcDu27nnYuU7pSZyXxF0T+19HdIkzPGfMi9yOo/EZrxSe3VH2mNsnPysTkH0Pp
    X0rInmAEDODXIeL/AAVYaoWuIwLe4I5dRwT7ivVwGJVJcktjiq0/apW3R4edpYja
    uQeqnOaoyNGjGOV41AOG+YcfXNdvrXhHUNOyZbfzFBJEsYyvT8xXN3UUMKEyvGAu
    C7dgOmfwr2IzjJXRxSi4uzOfusvGxgiBLcLIRnvzwKKsbbe5ceT8uceZEc5Iz1A9
    fp+NFUK5/9mIXgQTEQIAHgUCQA3BlgIbAwYLCQgHAwIDFQIDAxYCAQIeAQIXgAAK
    CRCBFenYzl9VTUyfAKCPzZcnNkDyHypU+wZkicPKQuWVtACfSCxA4/IVY+oWI9l2
    x6uSkR7p4GiIRgQQEQIABgUCQA3JIAAKCRBomIIsyPJS+wPrAJ40SdQR/ruPWkBT
    Q+kqpz7fTvW+LACgzYiB60Djrdg1JfZy6DAoresN2U20GEFsZXggRHVwcmUgPElD
    UTo1NDMxODU2PohYBBARAgAYAh4BBQI/7VDUBgsJCAcDAgMVAgMDFgIBAAoJEIEV
    6djOX1VNKTYAoLQEAZmjiD/bwfaXfgp/9MGDYLwCAJ47WxftOqTrwo+DmLMs5eeH
    cB2R9YhKBBARAgAKBQI9nynbAwUBeAAKCRBomIIsyPJS+wsqAKDnsTnj9g3poCL3
    rXQAa3z+cLSINACeKHPJHJFeAMlTth+exCsjzHvWwqqIRgQQEQIABgUCPaAEEgAK
    CRDM3dmywuiTlMgyAKD2OL8xT2F1Tca/IdDITcMmmTMtAQCgpYddO1+uk6KD5yZ1
    T1r9CgczFLiIRgQQEQIABgUCPaEzHAAKCRARLnBkKQVquU3wAKCf2VNbbdf0NjZh
    MWj/2MUJuj8OmgCg4Yc3NusQXoYQpPqNE9Lq3JWnkA2IRgQQEQIABgUCPaGCJAAK
    CRCrkzhFOoUIdniNAKC2Vu0JZAhoYcFJgg5f88ug/uJM6gCg/NBi2E3lD3AEwTmY
    YMEHM0Eo89mIRgQQEQIABgUCPaKUeQAKCRDh6e74fbtvQSmoAJ9HCY8UdGJidzNF
    KwZfe4hPNSsyxQCghW9jw9YmOJkL0khM9T/ObBHRsYmIRgQQEQIABgUCPaMf8gAK
    CRCT82lDB9u/z+FgAKCJhJtQJL/IWuEHrwaMOzCciaNAwwCgo7JG3LwdKXuMDd9U
    IIiLdDpo4tGIRgQQEQIABgUCPaMG5AAKCRA0BDtoCX0/VQwDAKCGdknfi8LOrA9d
    /DZ1bL+ziinH7wCfbzssDMBl3lk2XOyYxHu9OwOUG96IRgQTEQIABgUCPamSQwAK
    CRCg69IuxaVxo3QzAJ0aPnSw+fmsrjeUvbxxm/hYiKRpdACeJ31wyzywkuGDmkZR
    jUtu9FjGgvmIRgQQEQIABgUCPamh+wAKCRBid4/0XvxVgsnqAKDbDwEL/0LIAeFN
    ksQlJMKJvmL5fQCg49d63dzlf6CGBzOEyxi+oDbd8ESIRgQTEQIABgUCPalftwAK
    CRDKk6NkAcCgetZaAJ4kzLKNGJNUec0+xpIpT6tTfxC8zACguXnsLsNZ0+jBMKOY
    Ieqza+3AyNKIRgQTEQIABgUCPanuLQAKCRBXqgy8iXHukSxgAJ9Ro+qXA8/+x+TH
    1u12UFr6Lk/CuwCfZPgS7RqYzbX8zUpR2b4+c6mf2tqIRgQTEQIABgUCPa26GAAK
    CRBtIQ42qnKHy9TFAJ49cIxTs+m0pA3VrYFjsu3hOMnpFACeMp+Evlkit9ddvrP+
    m0uNV+qqDG2IRgQTEQIABgUCPbJ7ygAKCRBfli7LrmESF03KAKC4gi8VUcmT79ls
    xDQTrsZ/8TTGugCfVQeNotyTsLhPlKZw7rMzhfij6ReIRgQTEQIABgUCPe4PcQAK
    CRC3gJYKEvlMRsN0AJ4+BCQsl1w7ecPJdBpBXhz2zJqttgCg07UpF+Mjxz2kIHHA
    hRBgVh7AhPWIRgQQEQIABgUCPfCF0QAKCRD4MU/sLLlElRVWAKC0iCa3eREcovyT
    TLKO9/t3g303uQCfW07f8XhJ30HsrgBXRGMBMFufHNmIRgQQEQIABgUCPeDE1gAK
    CRDyQgCBgr3vdEyhAKCsTxGYujlcC5MFwwIvAdF0gkCODgCeOyejN13b8lDwqTIG
    GWgcMNYhZCWIRgQTEQIABgUCPeHP0wAKCRA0pYpdjc2B+P2OAKDELljFrGV85WHW
    4kBU0kQAZEDxEQCfW7QgKSWcXMSXa0RidcsdBn+TJp+IWAQQEQIAGAUCP+1Q2QYL
    CQgHAwIDFQIDAxYCAQIeAQAKCRCBFenYzl9VTQjzAJ0cpYi+A6e+c/5XYiysLv+o
    /n7BjwCfWxYKnGdMKGUD8GBNUSLxFCbIGYqIRgQQEQIABgUCPeKk5gAKCRBYtWpA
    3MV1lkbEAJ9KMWQ3p5+ceSJsruNGRDsOntnTigCfRMzcsyzxzT3ncqeX+SwKmbMQ
    vGKIRgQTEQIABgUCP8jfDQAKCRB6hTJqN5GI3qofAJ9mHIJvRB7rf2urP4RaT4PP
    +4vg2wCgk6/GZEGaRngOXhdeanvVcMxGltiIRgQTEQIABgUCP8osNgAKCRBujFd7
    G7FxaBs3AKCEHQxpUBGAed8pEdhvBNGsJgUfwgCfacd+t+J24XMrzLEHF+CWDSj8
    scyIRgQQEQIABgUCP8palQAKCRC+jL8eYgxA7ZGFAJ9yThe7M04jK19RJApmUIC6
    oQ0gfQCgpDhCiTf+C2EBzS0bwRBrspZ/00qIRgQQEQIABgUCP8qHBwAKCRCRaxpu
    McNnH6a3AKCoUBJDcp332uW9cd6gMSJr7rIbEACfboFIMeilqey8vI3rktNso2xh
    81KIVgQQEQIAFgIeAQQLBwMCAxUCAwMWAgEFAjppb9IACgkQgRXp2M5fVU3GFACe
    Pwx0Beh0P95n7+QfmVOzlGsxKcoAoKS2JixAHziI6WR49MbyhZ13zconiEYEEBEC
    AAYFAjppb88ACgkQgRXp2M5fVU1A9QCg2BJLqwfN8oCw3QNVITUQ3QgTKNMAn0Vr
    mwp7qqRYqdrKlQ9UxXv1jscQuQINBDd2Z64QCAD2Qle3CH8IF3KiutapQvMF6PlT
    ETlPtvFuuUs4INoBp1ajFOmPQFXz0AfGy0OplK33TGSGSfgMg71l6RfUodNQ+PVZ
    X9x2Uk89PY3bzpnhV5JZzf24rnRPxfx2vIPFRzBhznzJZv8V+bv9kV7HAarTW56N
    oKVyOtQa8L9GAFgr5fSI/VhOSdvNILSd5JEHNmszbDgNRR0PfIizHHxbLY7288kj
    wEPwpVsYjY67VYy4XTjTNP18F1dDox0YbN4zISy1Kv884bEpQBgRjXyEpwpy1obE
    AxnIByl6ypUM2Zafq9AKUJsCRtMIPWakXUGfnHy9iUsiGSa6q6Jew1XpMgs7AAIC
    B/4iOQRTLPaimmNLii/gU4Zh8u4iATtDnkMY9ldInQ0QT4qrK9/bRe/jnpHTlrTm
    aKd48B+wDBoUjU19EbFl0FN1e2Zum2oOBKfEwr8Up6tmBY9vsxCsqY65fP432P3s
    ILrLh/k81wqVXhuEvUxpkbZMtEePLLCl39G6RXD2M8qe5LsIgjFH+a8uCRwdUWgF
    Dv/R4HpwKNk5U6u5Jmh3XWh/OoHPshWV1AfbUFCVSwuuu2r7g2VzVhBbWqdlTfLs
    Cvf8JBbmWwBQOj09F1IQN9hZzXxa5+K5DdaSuFXURglTpRnONTwbkPwM37526h/t
    VAf3gSKBEtg1jPveLVdKxoGKiEYEGBECAAYFAjd2Z64ACgkQgRXp2M5fVU3vzQCc
    CC/qqMn8MWKJ0CbiXiTSu7dpojYAnjslrpODNzSntRQ5rK0SawJXsWWk
    =CMdE
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.71. Peter Edwards `<peadar@FreeBSD.org>`

    pub  1024D/D80B4B3F 2004-03-01 Peter Edwards <peadar@FreeBSD.org>
         Key fingerprint = 7A8A 9756 903E BEF2 4D9E  3C94 EE52 52F7 D80B 4B3F
    uid                            Peter Edwards <pmedwards@eircom.net>

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    mQGiBEBDlWwRBACjdnvu/rCOVEjpYmlmQmmmYZ0hbUdustNozm8dtKpg2w+zED3z
    9kHcoXEY2i1jxmJrHd4PPcvMutJB5AuYU4NiBmdMgBgfZvW7yaD+tHfvgozNyEKa
    3Gcddamy/ENCFKoSTEuCDxH77zf6DXh/B/Ekjav0sZnGHPqFhUdKzwh21wCg57uM
    Z3aL0+sIhiNYEJK93yjXt0sD/2F6+T7dj7wjdCPsb3mh5YSTjGeSXjnXHfeFQmmA
    /dPyOkWOAuTo2uR3AeVRrJ6rslKLqyl773HX+eM5b52gIsFZ+CzSEiHSrHEqOR/o
    3jzzGWhZb3Q/dbeWsPrtw32XUOdiijH5h2PyfKQ6reu+lpH8oKTbvOoycguHnsiN
    8zt/BACCRoxdjw3f5L4RMfbdxN8/9GLcDzjv27s4Jn17snXuOyNzWxky+hNW5InM
    wG92m9/a4XtZX6viK4sY8kfFLvAx95vaRiPJOPdUIx6Hk34HHsXdQ6XbUaadlBuG
    Mxr+aT2o01qzxi+dS8+SWXjCBwT5mRVdOZq7RFYd73I+FrzltLQkUGV0ZXIgRWR3
    YXJkcyA8cG1lZHdhcmRzQGVpcmNvbS5uZXQ+iF4EExECAB4FAkBEXVYCGwMGCwkI
    BwMCAxUCAwMWAgECHgECF4AACgkQ7lJS99gLSz9lewCgtKJX8EySD4x42LoZ8imS
    gYzQ2AMAnjAlfeFF6q4Lqiv6ikUW7uSGu2WitCJQZXRlciBFZHdhcmRzIDxwZWFk
    YXJARnJlZUJTRC5vcmc+iGEEExECACECGwMGCwkIBwMCAxUCAwMWAgECHgECF4AF
    AkBEXiQCGQEACgkQ7lJS99gLSz/1ugCgwj+RyWcUk2WtWZlox7rmTG9ymDsAoJ+r
    ckrEYUJfPdH0GKonpipJQwL6
    =73v6
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.72. Josef El-Rayes `<josef@FreeBSD.org>`

    pub  2048R/A79DB53C 2004-01-04 Josef El-Rayes <josef@FreeBSD.org>
         Key fingerprint = 58EB F5B7 2AB9 37FE 33C8  716B 59C5 22D9 A79D B53C
    uid                            Josef El-Rayes <josef@daemon.li>

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    mQELBD/4Zd0BCADEH+EDDjEX2ztufB5dele5Bt4XBg3cYncvlTsVEDLR89xtwmFs
    3no9Hs0ImTQwplsDgbixBL3DXWi46dwVK0MGYIUycJxLfsgFdlWngcXYkpWF3O8g
    v4YhytcVi9uSBy8oNB7huiY8IXh4XPgiOKztgCVJZbIgi8ahoif04eHTT9YGOL5x
    Qu+n7D74zAcgzK0XO+O+WXB8EoO/saJxzcCIeEGzfCjq4VyL6JB+1c9CgWlrpI7K
    LOpFqrN2qHygIMxCicp/163AdxD9I1hUtlF/sZYY9BpkbweLLqxKf4qtDYAMZLuS
    xFGfIG8f0imfFeTXt85FgYGxqLMlmdjFefIpAAYptCBKb3NlZiBFbC1SYXllcyA8
    am9zZWZAZGFlbW9uLmxpPokBOgQTAQIAJAUCP/hl3QIbAwUJAeEzgAYLCQgHAwID
    FQIDAxYCAQIeAQIXgAAKCRBZxSLZp521PM0PB/91jWBC7yI2obxE+VGsItduiPhC
    0x+Z33suGP8f7ewGBlztKC8y5N9jCGCfG9auwkJ9Xo27zCpMIkba4CfbRqyLxWoh
    ZluHQg5uge7AGefmsdfDsfZq5mPNtUkB8uVn3tXGwVVsxknw8PGtw25wbDCOXTCi
    t6L70v1gJfK8UxFhu0VCdOxbRAuQoIkE+bSO6g8bJrt6JFzhVpuHdgxwJbziWYSp
    nEJUN4Eou4UfCteVQrkh2O7ArHMmAEb89s5xbfNrQ4NdVBXHfsrzEDhWOqgiQ/4m
    o2DAs8iy2aCbWRaKG6G57g+uwhbqEN3gkeDfjhcpBMLqQy8drqx+erNGVYnKtCJK
    b3NlZiBFbC1SYXllcyA8am9zZWZARnJlZUJTRC5vcmc+iQE6BBMBAgAkBQJABsPr
    AhsDBQkB4TOABgsJCAcDAgMVAgMDFgIBAh4BAheAAAoJEFnFItmnnbU8miAIALbu
    Y15l3+9kNlv4Arv26aYrRcIYEUcCLIGZnD93NPnyEza4WwsUbCvYgNpKb/wojAA3
    xUdzHtRUfDp++eQU72S7DcRkkTt5vrnwKnH9kMsr2/hCIaO3ESiOVoPeJy91fHEF
    I9K1qP5noJQjfjr1w4ib86spyVb5LH3QPEnyvDX/UTBYiYu8UUYonitLZ3iHk1Ku
    x9SQoPszvkxdM1+d25pbG1uSV8JQRym6TsPQp3RwpbCy5hnwMbDLaWl6fbRwtAxZ
    i6A0cppdbgi+DDrOFoFKuU25YKKOKl76Vy+cpjYPBPRH3mOTYd/i2xliEP56dTJU
    4QqDJPpnJdmvXiCFt5k=
    =UfKm
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.73. Lars Engels `<lme@FreeBSD.org>`

    pub   1024D/C0F769F8 2004-08-27
          Key fingerprint = 17FC 08E1 5E09 BD21 489E  2050 29CE 75DA C0F7 69F8
    uid                  Lars Engels <lars.engels@0x20.net>
    sub   1024g/8AD5BF9D 2004-08-27

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    mQGiBEEvjRYRBAC1jMkUf5HrEQcNSLSK4NogjNTuwxE9d4PjgOiJ04L/haKeUAaB
    x21REw659FNCOW/HDuCzNH4POFQYoe2dyS3lV4xk+YsoJ50NuoCro/tiigBztKB6
    u/Ukq8bReroNwjP1Q2TnCHWxzDIq2HJ2FQtbXXlWKe7ZBu/LFwAsHLenLwCgzkp1
    i0gxqzxWrzIApMiKWB+HORED/3Jjom3MOEZfr27aYvY18700uXui6GAkcxTj2/6X
    s1MVpQt8F/BAgKYkw8Q3qOgoaJPHpnBQXMIB5TXCkXxZYwvUFlLHMOghpZE6/eHn
    3+UdvqsxHGa59Ym7HYzS1IExBVNfof4MVsunQtnGaHyQDMrKt2zF2MmTgASzITWW
    GyOjA/0Qc0K+hUBPsiaVpNcCZs6vPxeU1qSZamyZlVIjfQgRkTGN94bJD7l4qzaK
    hpmOLF8eD6+pA936HVhLfmPsNFkpFgw10oQQVYIVx/Thj5tOX2o7VbXUdQEkdTTO
    t75c2UqZIdPKet/btF+NPnnT3P8u0UdVvpvMeq7thLuJLkDDo7QiTGFycyBFbmdl
    bHMgPGxhcnMuZW5nZWxzQDB4MjAubmV0PoheBBMRAgAeBQJBL40WAhsDBgsJCAcD
    AgMVAgMDFgIBAh4BAheAAAoJECnOddrA92n4OuIAn08LIWiZX5vZ5GvClSsa30Wp
    2LG5AJ98fEToSwavm0tAuDHU1kPoDhPSqohGBBMRAgAGBQJBL48NAAoJEI90JpT7
    YBR5I/kAnA3vnk2qg91m3nocHy6nS2tShMUzAJ9RQ1orEGxFGukfgtY9iTTG4Tpg
    /4hzBBARAgAzBQJCVYkTBYMB4TOAJhpodHRwOi8vd3d3LmNhY2VydC5vcmcvaW5k
    ZXgucGhwP2lkPTEwAAoJENK7DQFl0P1Yg9UAn0/WHYshCUKP551shW3EtjUFvSF/
    AJ9EhPPzNRdgS5cs8Hifvd29McguHohGBBARAgAGBQJD/deEAAoJEAwB9WIgsQYJ
    9lYAn3MTmAp+MZn64phFp346NFhy1tRwAJ4xd16I6dRhDMSiNVPQPybwAZTfirkB
    DQRBL40XEAQAobWOOZBUJm+Twj/sGj0bUdlZ5H1Qos5uWEEjamcElcmN4dG6Dyjl
    X+X4dmcAQADm2JH5aajdWKKDjDNaTRbdV9XCe/iogYD9UhbPEQuHovTuDaOQrRsF
    nSCcXH1GABWF+Cp2JA4FVS1gmHykr+u9DZP7CsOosI6PWmOYwySidHsAAwUD/jVL
    iRLUj2qR3ejYTa61ATT5wb6UtuIohpvBNFj4t3V+LWATXmuOP1mYhy3SmoxUcmFj
    uULJ2GHHb+wNnP8YpGdxRVFkBV2grnpKqPdCkcm1ON707w2d3aDCEl9KGzhEvg68
    c4CF0hVkLGIs0qeZfsOwxE4jdYpPl8YuuRZV2ah3iEkEGBECAAkFAkEvjRcCGwwA
    CgkQKc512sD3afjgrgCguloybHuwhKsmOnnD6HSp1G/s4mkAn2VeB3Euh8fg6W/9
    gcKK4GHoPC8/
    =T+Zj
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.74. Udo Erdelhoff `<ue@FreeBSD.org>`

    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-----

### D.3.75. Ruslan Ermilov `<ru@FreeBSD.org>`

    pub  1024D/996E145E 2004-06-02 Ruslan Ermilov (FreeBSD) <ru@FreeBSD.org>
         Key fingerprint = 274E D201 71ED 11F6 9CCB  0194 A917 E9CC 996E 145E
    uid                            Ruslan Ermilov (FreeBSD Ukraine) <ru@FreeBSD.org.ua>
    uid                            Ruslan Ermilov (IPNet) <ru@ip.net.ua>
    sub  1024g/557E3390 2004-06-02 [expires: 2007-06-02]

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    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
    xfUIyIEOONF8sN1I
    =tea/
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.76. Lukas Ertl `<le@FreeBSD.org>`

    pub  1024D/F10D06CB 2000-11-23 Lukas Ertl <le@FreeBSD.org>
         Key fingerprint = 20CD C5B3 3A1D 974E 065A  B524 5588 79A9 F10D 06CB
    uid                            Lukas Ertl <a9404849@unet.univie.ac.at>
    uid                            Lukas Ertl <l.ertl@univie.ac.at>
    uid                            Lukas Ertl <le@univie.ac.at>
    sub  1024g/5960CE8E 2000-11-23

    -----BEGIN PGP PUBLIC KEY BLOCK-----
    Version: GnuPG v1.2.5 (FreeBSD)

    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
    Fv2s0kptGIN2izILm1myaA==
    =qAVp
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.77. Brendan Fabeny `<bf@FreeBSD.org>`

    pub   2048R/9806EBC1 2010-06-08 [expires: 2012-06-07]
          Key fingerprint = 2075 ADD3 7634 A4F9 5357  D934 08E7 06D9 9806 EBC1
    uid                  b. f. <bf@freebsd.org>
    sub   2048R/1CD0AD79 2010-06-08 [expires: 2012-06-07]

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    mQENBEwNjXUBCACWeNjUFZ8rzqxrEIdL3wVrvkWVwaf5HW0YwoIMq7ba3hRcPWuv
    yr3frrdvqJv9rHJYA8f6uE5dCkb7OSI3YXHC5QN/H9xB1bvRuSUyD1MwmuihUX/A
    7yk7HzUE3sXy1U3QIMJWgpvnN242OZtH2XlanuSoDdBL4Qh2Fw7ywQaZvzNlZKUa
    hPF0Ty7wci/5xuKB7T72Qk4vAYYqxUxYJR/5ox8vM/xiAh5XxPbOuAF0p/wQiiRi
    NjF/f6tluQu6Q6VFwHXGcZvJK39nNNpadsDCegdRCUUFJsHm8dSjlIyi5CTyUsXf
    btdlagPTlhiBtOYgtcfRZoPBLFjVafjqqL57ABEBAAG0FmIuIGYuIDxiZkBmcmVl
    YnNkLm9yZz6JAT4EEwECACgFAkwNjXUCGwMFCQPCZwAGCwkIBwMCBhUIAgkKCwQW
    AgMBAh4BAheAAAoJEAjnBtmYBuvBVG4H/Rc/AqfFfQi+qph0HKggVJyzEKvhVWhR
    8RZ+8zS4t72b4kIJT8FUOiHMpq/+qC+Lt5MFPCtxmOETDgpD9GM1EkgJ1rSDrN8m
    kbXuQ9Z95KztU0tGsv87JT0xSpxeMnYaQ1NWx5bkKG5AOf6ZZaUVas0XH8/9QCFH
    gqy7Xe2eGsLO52ZH/4AI8cFc0FPF17hSWTIAwIyuxcRLas+KdV1j74xaBu6parX3
    2FoquEFRAPoEcuey2aSWoo4OCBCoGYqh4mhWbEuLOac0NP3oLDFjEDJhE7UT+0gx
    W5LLwPr0FARkAbRZp84vt9rD5MrhNcZy0X3PBpykium4OrEIp5l9OM65AQ0ETA2N
    dQEIAK1D1POvE2tRnTeNRW6lw/bu9zx8d4PS2R7GepQkbUWQxpgcwSEoB1JGN8jw
    0iKD8KRoFLwQx+TizzRShRsOeYj7beK6rY5H1C0DbrQX6T7eMumOVV2RklVFqYiZ
    HcJh8LGjJN/tKt4k7OnDs40lHOFHxvKW+PiKogfiWDKpc/wns9mAhcXrbT0SZ4Be
    qbQOsZMfUbvOZUek4+lOZuaCb0M3QU47bsFrJonPn7VEHw7mkhTNL9a6KKc4ZqQw
    52ECVq4dKjNIkvaQZyosA7tRCr+CBYUumE6fssk72SdT0RD/tgHgKfgWZ9mxB3R0
    l7CCm8v4c24tZQuuGQG26WWeD8sAEQEAAYkBJQQYAQIADwUCTA2NdQIbDAUJA8Jn
    AAAKCRAI5wbZmAbrwabXB/9ggUz/04tDZdX4pDsfDoBKtnJ9r1yNWrniBBNlcVLZ
    G+3BwF5EfZAA/q3lSJmC4BVzaDUwrrL/zbPb0WhE5cGG/byLiByXsEDVSId4Kv/Z
    bLaPyox8RIYUL/wCjt/57FIORwGVhUr8oDDRLeSoIsazXWhvWfx9qCdzcZTabSkN
    74Q0WxQuOagvpl4Kcf3eQEQuB+BvxDQx9JvEXUZanurRP018uTdXficJ5MS+SwXq
    gJUSSPybwVjK/ll1G33185jnSQSFNwGq1udet7vkDjQKNmkcev1SJY1g0S9iFKRz
    e6dmnydHGtQ0508cCusMPNCQ4HRhQHEW7w5yu1J4t3UY
    =bgLz
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.78. Rong-En Fan `<rafan@FreeBSD.org>`

    pub   1024D/86FD8C68 2004-06-04
          Key fingerprint = DC9E 5B4D 2DDA D5C7 B6F8  6E69 D78E 1091 86FD 8C68
    uid                  Rong-En Fan <rafan@infor.org>
    uid                  Rong-En Fan <rafan@csie.org>
    uid                  Rong-En Fan <rafan@FreeBSD.org>
    sub   2048g/42A8637E 2009-01-25 [expires: 2012-07-08]

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    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
    D/Fet8nCx6Ef1M1J4Q==
    =1iVI
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.79. Stefan Farfeleder `<stefanf@FreeBSD.org>`

    pub  1024D/8BEFD15F 2004-03-14 Stefan Farfeleder <stefan@fafoe.narf.at>
         Key fingerprint = 4220 FE60 A4A1 A490 5213  27A6 319F 8B28 8BEF D15F
    uid                            Stefan Farfeleder <stefanf@complang.tuwien.ac.at>
    uid                            Stefan Farfeleder <stefanf@FreeBSD.org>
    uid                            Stefan Farfeleder <stefanf@ten15.org>
    sub  2048g/418753E9 2004-03-14 [expires: 2007-03-14]

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    mQGiBEBUhZkRBACOyBTXaf9n0gkvq52yhACaPjUpAY4c+Z+xDM5jZZNpcaEyuU5N
    ipJdvlKIIkfB+Jka5TxiUBskSo6cegPW7k3G9/as+39SeOexEw5aH1WROcrqD1Wq
    iBTJ/Ey8eVleGTP/3vpbUoT3gcNZuus00J75OmJV06xyTA9M0tSy1/aIxwCgrbCJ
    Xr3wLOPYiGXf5WbWfy08DmUEAI2xYIycYgZ7ogcqFcu6gShO/uTcXkZL0xOIC8el
    rAC/HciJagmvYPjQimQeKhqyX+uvnhguiS+XZYx9yqegOG1dSOVWw6FJTYgzKeT7
    6tHmaplB4JQLkUSBn8p2fsyXAaIA4M+2c9fYf59El5+OyfOhGfAEJNJv1oGLYWic
    Bbt0A/98H+rPmPwtv4ntIvCq5xkvjENzmG6WerNF5dXHsoG6Lnhe++4jUquHseEI
    +u4ou+v1it5vBTnPI2Wz02WP1Oyz7JC0cPAbrTGz+eaaNV+M1wD7yqj1poW74buk
    4hJ+myIqC1dRrliAyrr75xHl3pr212+8Cty8RTiNF9xgICtH3bQoU3RlZmFuIEZh
    cmZlbGVkZXIgPHN0ZWZhbkBmYWZvZS5uYXJmLmF0PohnBBMRAgAnAhsDBQkFo5qA
    BgsJCAcDAgMVAgMDFgIBAh4BAheABQJAmCd/AhkBAAoJEDGfiyiL79FfqEoAn0cP
    NQJYvSLWsU4gD/cffKUtLEKiAJ47lf0I7dFdAJSqqxSCOrw7iuWhTrQxU3RlZmFu
    IEZhcmZlbGVkZXIgPHN0ZWZhbmZAY29tcGxhbmcudHV3aWVuLmFjLmF0PohkBBMR
    AgAkBQJAVIenAhsDBQkFo5qABgsJCAcDAgMVAgMDFgIBAh4BAheAAAoJEDGfiyiL
    79FfeOMAnR6XllE6b+BKnoRjBOC06PXfoK0jAJ4yDtL0vkYkW9LRmoFkWpxJYilU
    ALQnU3RlZmFuIEZhcmZlbGVkZXIgPHN0ZWZhbmZARnJlZUJTRC5vcmc+iGUEExEC
    ACUFAkCYJIMCGwMFCQWjmoAHCwkIBwMCAQMVAgMDFgIBAh4BAheAAAoJEDGfiyiL
    79FfwykAoIes15zWxNJ7iQr1n4rP+x1LidM5AKCDakRpNHAdMiaJJRNrHt9I1kOu
    FbQlU3RlZmFuIEZhcmZlbGVkZXIgPHN0ZWZhbmZAdGVuMTUub3JnPohlBBMRAgAl
    BQJAmC7cAhsDBQkFo5qABwsJCAcDAgEDFQIDAxYCAQIeAQIXgAAKCRAxn4soi+/R
    X//IAKCmPHdkW+JyvXq8Ph/4AcoSYGltQgCeOyA+WXLvjD8s36h1ITQXleLr0Ju5
    Ag0EQFSFrBAIANrcNEggDb7bS/TkhZg5CEw0HP0bFOogCowNgGZ/9EzZA1SvABYb
    vun0RyK0Ceh51Vr0Lb01i6cIDTH/cBVMqXX75YPusncMzsEuMdBCzMqKRPCpimUD
    jFmMIBrkbtu8OTwaL+Xy1j7/SyfYv8fV6q6ibGWgN4pcyDmItTWYRNnR1G4EdIvl
    a2CgQr7AgzWPGeeZLrUqUuLjYKwZ5JUqch3ooU4e+eFkYjovMyiC5E23UxZWyDZQ
    DA1aOizxH7519R5l1YDsrqjZdVz3Ks7iCPYZ+T2QMGM7oUDjbt0xAhQCt15yj2K7
    f0m6KtmHWzwgf5Dagcph00anBMldDQ1RqscAAwUIAMReNMLnk1jhYUYoitYNDJTO
    Pp1X5bk66+b5yHW2Ul9DDboe9tp37AoSJf1hEI7eyB1qkKO3bt9nePKOuAe64ft9
    jMYEm70IS3tmo3hHyTbLuOpxF3f7ZHmai2gXPdDmIczDqkE1PneX9gJQadQTqvky
    4PVHKVUGTBScI0S830ZBbIsvoYimjGCPMuz4UT0vKR3XLay4RjwCYC6waqRuJoBq
    rfm/vmx6/GNfb/jwZgN3QYPgTptx65eAdEAy2C3Y7RbMrbx9qqvx5TxaS2yVFy6X
    6gIrSmFSFE8rplPDActw1V4YMyuwnyVvGe93pYwYfxzM/BxN09V9QBQUhIa7TMiI
    TwQYEQIADwUCQFSFrAIbDAUJBaOagAAKCRAxn4soi+/RXy2fAJ99u5jBvCIXuEPa
    rLB9utH3lU/ymgCcD/fpfY9v7wyOrivOy6Wz3ZWjdnQ=
    =9khA
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.80. Babak Farrokhi `<farrokhi@FreeBSD.org>`

    pub   1024D/7C810476 2005-12-22
          Key fingerprint = AABD 388F A207 58B4 2EE3  5DFD 4FC1 32C3 7C81 0476
    uid                  Babak Farrokhi <farrokhi@FreeBSD.org>
    uid                  Babak Farrokhi <babak@farrokhi.net>
    sub   2048g/2A5F93C7 2005-12-22

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    mQGiBEOquWMRBADPeAMeFy9OMbD3PxFjNmPIuY9CMb/fP9G3KNugVwLoHj29pXHS
    QDo9OGHmA6udL6ZjZt/cWsU6CBwrVmr7nnqIXwOFGsvv4sT4cQJd51ypMFcvrYvi
    UmdfnNZWeggviCMYdZErMqVdH7QKZyZ/7xB1IBV/66Bu768nQlSpTmqTYwCgwpUr
    8V37ACzVXUZ/1CPqtadIe50D/1rlR4GTzMnmJGBbqY4c2nNtaUA2HEzI11QsHvFp
    jTEcHI/RdhLv8dcFFAD0PmLC+5W7OydXvQXBfWzVXmrEPzFprwOc79wfCB+JzOt9
    JzyClVDYvhYd0f2kxrXOR3ddLaBCMU9A/NxvDL05TCE8b3rSuV2VRT6E6A45/88t
    aKKvA/9ewMdS3zicyyK33FTYTecGJc6Kt1ke/spq6jo6k3+L94Z7eZrZrhXGMRYg
    Ibbm3VuxoPeIqyY8SujHwNNzP7PqGp8MVefjzktldMyvbJex8oIyB0NMrHTJ2JTp
    ScJAetOE/mXYhMSACgWbebu6uBEigmaz1D4WNU/ITf8xuX784rQjQmFiYWsgRmFy
    cm9raGkgPGJhYmFrQGZhcnJva2hpLm5ldD6IYAQTEQIAIAUCQ6q5YwIbAwYLCQgH
    AwIEFQIIAwQWAgMBAh4BAheAAAoJEE/BMsN8gQR2iM4AoKXtRmdbGhmrJ3cW6lcd
    gP4IUfUkAJ9mqLQk3ztstsPzzovhwV4sIH2VgbQlQmFiYWsgRmFycm9raGkgPGZh
    cnJva2hpQEZyZWVCU0Qub3JnPohgBBMRAgAgBQJFUO2LAhsDBgsJCAcDAgQVAggD
    BBYCAwECHgECF4AACgkQT8Eyw3yBBHZd/gCgmHXJVgY+AwvJvL2v2qG6+P2EsP4A
    nimm5LNueFg2PbDsRb+Iz53zw8d6uQINBEOquXEQCADPKrfxmpqJEbVpJV1PfcLJ
    KpvF/0s1NEhvrXVnm0GhId8R96n22E9oD7QYTw/+TkdCksw0dcAIvFH2y++HNQoE
    NVgoyVW32Rw076Va8nizA2icB6hEJwKiI400qKjZknj2pnILPHORq+Zl43sHaXnB
    imchl5U9gZI4EXCRC0u87oLd0IHuFMUGYEfhsxninLpmFNPjS55zEhPDIBTuFFiN
    NFZ8aLxq6APGd1lbLJhYnQIYZJreaI3lXc0VYqjkaB5WBeYXKNNF3y39yNY3SXFt
    /dwIP60IoaIAjARFLqvUNYOsHpjsVAItxxMdTpAlX28VYWsr3quGL97Xhd4NfDvb
    AAMFB/9ep1jcpFocEOurMYZkIrPE0CdgdeWzlhHhW2F38cZTj46WxoAY21QOfjRx
    tCcGDrKNNwoHO3TIsuPrEI1OtJ4y8b7Pj2zuv/kUAEMUjl5dutg2kIDz5cs5zxI6
    4HhUx17vQGTOK3l1I2JxoNrMKPcDKxegHqYqpzb6vEr3gsKT7GSeMBREq0rvfZfQ
    ZmZTLfdy0AiQ6KsVt1YV9wUE7Kq5OmhjVZNovhZtxO/tzppQLNX/62wdf1OmFZIn
    xWrYFHeH/N+QGBmMRf0NMb0oOn4nEMem9QhSRcW9UcyU1K7Usa3m3WG7qrmcq+ri
    9RVM7/8wJCKNJD1ej35rMQYVrolIiEkEGBECAAkFAkOquXECGwwACgkQT8Eyw3yB
    BHZy+ACgqz3KenkNoTQKFv4nrGUHnAqMm5sAn2Z+BhMOzEhuimOTVLXVzKuipov0
    =vL0B
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.81. Chris D. Faulhaber `<jedgar@FreeBSD.org>`

    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-----

### D.3.82. Brian F. Feldman `<green@FreeBSD.org>`

    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-----

### D.3.83. Mário Sérgio Fujikawa Ferreira `<lioux@FreeBSD.org>`

    pub   1024D/75A63712 2006-02-23 [expires: 2007-02-23]
          Key fingerprint = 42F2 2F74 8EF9 5296 898F  C981 E9CF 463B 75A6 3712
    uid                  Mario Sergio Fujikawa Ferreira (lioux) <lioux@FreeBSD.org>
    uid                  Mario Sergio Fujikawa Ferreira <lioux@uol.com.br>
    sub   4096g/BB7D80F2 2006-02-23 [expires: 2007-02-23]

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    mQGiBEP9+FkRBACKcQPLBb7vcUuQTM+Zqfwsd44vzULREV7qHVvTqJWDsFyQd4hz
    /rX86mmHiS/fOh68SonP6QdXO2i+d+LshgLTVPBlW92TXsFYP09FUWWx2dm0P249
    P7xoIcQ7slhHnSVuPDObzm5T7yDXL02OeO6qonN62IjjxB8xzFo+W6SsAwCg2BtA
    gvPq1hyeXVXlbItG/9Hbul8D/0yjvmED7dj7eQpm6LvjswjkMoRdg6cgR+/N9LdP
    GIdjGHkfFnW8hRg7QAPzmstkhtY1I3zEjVVCcYjJrIibaqBAUAx0v5HszLKKRnrI
    ZZm4IXKFpkVC2sV475FpFTPXIiHmyzq1lbpgAQXX71yFNJ7hsEuYx1z2Ihblz/B+
    KHJ8A/9UNVEPc4s2YgjntQSDWRY+Vcr6M4bN/+ogCJ7XYN5lcHjB+gUD8kAWupEH
    1hDV3WFahpG1i0MusOZM+dggTXSshd76z0JlOJjbywEv2Z2nb+1b1GU4EY+2RlTi
    nP9rO7EqtPhHjNkpXfsSHFOC3qfcsDhphXOJeOFwwhMhkxmkHbQxTWFyaW8gU2Vy
    Z2lvIEZ1amlrYXdhIEZlcnJlaXJhIDxsaW91eEB1b2wuY29tLmJyPohmBBMRAgAm
    BQJD/fhZAhsDBQkB4TOABgsJCAcDAgQVAggDBBYCAwECHgECF4AACgkQ6c9GO3Wm
    NxJtqwCfZrWhCzRFNX2TkVEW1zMS0mw5aLwAnRUNKvayClkvdqHMLksYTFtUu4RT
    tDpNYXJpbyBTZXJnaW8gRnVqaWthd2EgRmVycmVpcmEgKGxpb3V4KSA8bGlvdXhA
    RnJlZUJTRC5vcmc+iGYEExECACYFAkP9+lYCGwMFCQHhM4AGCwkIBwMCBBUCCAME
    FgIDAQIeAQIXgAAKCRDpz0Y7daY3EiNhAKCLZTyIxlE0tU91Cy6YxRKCu1Kv5ACg
    rbLcuizHmkAx/du+XaG+aveC4Ui5BA0EQ/35pBAQAL9uIr9y2BwxMeHbj6LLmoPC
    DmQnzXWWWIZPtEyWlUv6ANLvtNX8M0ZWzfy4Z4EXof6/m3Z8KsAEZf22AObR+CA1
    mgRRmDxVfWDU3fYYIVwMTQ/IqjWz5TPfldXySqxtW/Zm16ODYv3c+tnu/KX/M/WQ
    1l9pLfIB9G3NlnHwHTWBdIQhomXLzurW0yuq4LXobA/nQmOWmrQwjXNk1zzO+p5t
    v18thaXoF9pGObS86oCCfwaUMg4RD6PtizVUSA+frFmcR0/kpNGAWw4gIqHY++9c
    Ri+Tjvbii0ZhBZNb3l2spqhg7zMAqzQ/wR0kJt09FegN6vClMLDBJW5Rveb7u4XT
    e01JY5E9h2Nt/RaJQ2RgaoD0bNLx32Zda0GOzidFAK+0QzOGvfMKimaye3YkWRXg
    GFZFHH4k0FIcRd461ta4aN0VMKbpRbYxZP8oxmN3VrJdrf91Qqton2Ljrqk4ndQA
    xb6zbtJeobx6MiYlDf4GB4Wgm4g2L/BYH+ObV5QqnTnwMIjP6Y3BvP941d7eX6VM
    cpJq3ueDK+FHbF+KEozHycvlZrj+el5SuWXtNdOVma/DUQjHJ1DHMmciVqZwArnm
    Ygg7f0G7dMxBi4n4OdHHSkJXwth4ojbZf+zDDQnHmt7J04/EArgEvBKxOGEh8EcR
    evS6bR8NvH7lfXjl+7AbAAMFD/9DHsJNi6bx5sciwo7xvwx9NZY2MTHBxaWV3iWj
    9OIoiklZt8Ca8a4ukDc5d2t/DrGr/rtKsUyQ7utEhfdKr17TYZH9mW9ZzOKp5sjO
    aWOcmFCGMjemejPedAlH8sBD4I4zg+Ph/tMRgAjyw/ZkhXlUbVJ4ooibU1uix5Wy
    AcxXSyrCOCLbVfpcCphiXCRlFsVuyiTkjM1D3STr6M6YSq5vTpbWkUvHs9c1pgqh
    51SoGR8tcyUM3JUvY5fTos1sRlIS6XexXEvmBe51jcuV+4I9cI2cXWVpWU09zBTE
    mF0WSgs2pXZftMpbLwaTSjzGA4VNQQ5jocsfWUP58HgBCyO4x8G+N1A9PWYtKUoB
    WVcjjl2ak8G0mbTGb03QaIDAy2CVkeKYVws6ZTQBZtfKiO8Vz2UQcklRNTPTxYHo
    69kIY47+6WW44huXc81ACGx2GXXDZtqxasysRtzAzl6U/FKy2lHE7Buyjh7VKYI1
    7IncPhl/XyEBWTESAppWvd3WiCdT0zq6wpwxrdpLprWblqxLRttK2Emwe2KhvDk4
    3jdj/KOlMi2OUa600mbRfjX78MbNHisLUEG1ceMXaQY3quaerb3Q1N8Rptn8sT1U
    RMqbVlP4fxFwJg9F8nyLYzBcVm1H9WGFoojCqQ3htuvI8kca6I/UQxHG7V9Meqbm
    uFqP7YhPBBgRAgAPBQJD/fmkAhsMBQkB4TOAAAoJEOnPRjt1pjcSt1UAn19TWL7b
    atBvRWIroNaSp6+y2jWHAJwMSHg8w1dVEw3XxYR1fhEhE1hBWA==
    =lXvC
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.84. Tony Finch `<fanf@FreeBSD.org>`

    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)

    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
    KnkOqXNQ7FzYXOIPK74=
    =7TEa
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.85. Marc Fonvieille `<blackend@FreeBSD.org>`

    pub  1024D/4F8E74E8 2004-12-25 Marc Fonvieille <blackend@FreeBSD.org>
         Key fingerprint = 55D3 4883 4A04 828A A139  A5CF CD0F 51C0 4F8E 74E8
    uid                            Marc Fonvieille <marc@blackend.org>
    uid                            Marc Fonvieille <marc@freebsd-fr.org>
    sub  1024g/37AD4E7D 2004-12-25

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    mQGiBEHNnEURBADK+anixdFH+aSxIGLw1soiwMXSiVPD56dmoA/VAFqrE3XVo/y6
    bPqpSNwvvhL8Um2v9G/7EDMorqekYErS3sgUOtrA05NSJlOUJk/97ZFzAlGZ4/u3
    CwtpFBdiATaCvAdMocWhxVkyIFvo6AqVNz6RkTldJUuwVzGelXWk9IfI1wCg586A
    r7CU9HIsVJD7/vIbIIsKDncEAKYh6XKEBHWI1pF3Ony+rPhlXCV9W3yraiBb/YXS
    XaPr2Wy3XC86ufHZs8ewug40DqcSfRobj7qV5II1CMoVrwhUuJ9Y087ETjt7xC9d
    xI4jrkVZlaRt0m/LUKLLfz6L9KaLWRkBfFhOjJH6TAv779q0n/KfaiU48Xuue6ff
    KNDtA/96/oTg9+NWjm47zCdQeyZGzEE27btvzbrLZuG6TcP7gAV0F6udGbImgw1f
    mKrQZn4ZtVKCKS8IzTn/UM/P26Pn9JOzDKd2voPE9Ee8D0L8ywg3mxmBdm+TY9vs
    r2OEV89Nc2sJZm5CeiqEvfACI8KwbExqWy5TW7Qz+zLi3zk+ErQjTWFyYyBGb252
    aWVpbGxlIDxtYXJjQGJsYWNrZW5kLm9yZz6IXgQTEQIAHgIbAwYLCQgHAwIDFQID
    AxYCAQIeAQIXgAUCQhzb7QAKCRDND1HAT4506BdRAKCaBqu+lvdAp3fhgIJxL0XY
    YG6vhgCeIyaLMYFzQfii5s20wePEhG3rfMq0JU1hcmMgRm9udmllaWxsZSA8bWFy
    Y0BmcmVlYnNkLWZyLm9yZz6IXgQTEQIAHgUCQc2dRAIbAwYLCQgHAwIDFQIDAxYC
    AQIeAQIXgAAKCRDND1HAT4506PmiAKDanV0mSeUSRJuDmfA13o4ELsQ38gCfaEgn
    LyzKfRawEhJdqsGPWW/fnte0Jk1hcmMgRm9udmllaWxsZSA8YmxhY2tlbmRARnJl
    ZUJTRC5vcmc+iGEEExECACECGwMGCwkIBwMCAxUCAwMWAgECHgECF4AFAkIc2/AC
    GQEACgkQzQ9RwE+OdOisEwCfY8xxYIhN0w9CSUbsN1/EoYp0D+gAoLedf7wiwvmQ
    O0XpcJaXgtlO4x6fuQENBEHNnEgQBADPHKv6eOKxk2HPrm180rVAM6/d3LQkBEGL
    Ma4QuSXXbTDXpzfrt6YOLi+ILe/hu5DNnGbQyvkBB1lLdmqW03lat1ape9wytNoA
    kHOX2C4kom2WA3FvtAoxojmylEn8S0koH7RUuhhTM29rVBap0W+UpwpnxmtbGXEO
    NciLWy5CzwADBQP8CSp5Hh4+7uXIRpp+RQ8PKJ2vQVnf7c+QTPDN5MLXEv1UK9gK
    vtb4sms2yr2IuBMP1FSAFN6DpedjoZSKimxqCyMNbyy0io2pMrNDCpqCadKOyLWN
    gJhJTxE+3kYeZqzZExvf8q+faQqXp91bbS4XZ4JzgAkT3B0mvQ1OHlVlAauISQQY
    EQIACQUCQc2cSAIbDAAKCRDND1HAT4506PAVAKCWlLnQdfJsRZtt0Q880glcLzc8
    SwCg47K+qs1q5klc1cCIaCj+/TtsLCk=
    =rg/z
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.86. Pete Fritchman `<petef@FreeBSD.org>`

    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

    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
    oIDNzwMAwpXoLZkEkk/dMUDTsFCy
    =ZbG1
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.87. Bernhard Fröhlich `<decke@FreeBSD.org>`

    pub   1024D/CF5840D4 2008-01-07 [expires: 2015-05-05]
          Key fingerprint = 47F6 BDF1 DF9E 81E2 2C54  8A06 E796 7A5A CF58 40D4
    uid                  Bernhard FrЖhlich <decke@FreeBSD.org>
    uid                  Bernhard FrЖhlich <decke@bluelife.at>
    sub   2048g/4E51CE79 2008-01-07

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    mQGiBEeCHjoRBACSaB/CWwMs6NSHptLM0nqOigdiEMILpAOtekIVkzQ/0zB+G/fw
    J/vtVPoRZu0NlINwCSfnnOSpx0yZuX7CDJVVcGxWf2wt2Ly+1U/j5CnP1QV6dLhz
    iCbrvfV0GwXGvmJVhxX5lbVB3adzODgPa5S1v/Cj2Dbmqx6KFyMRsaepUwCg/dSE
    ZQdHiAOL7zh21WTtNbXvXqMEAIdk1WvclSjR8tv5HRQYOzlXZo2+EIeJklxNuBe9
    BuGNax1Su2R+Feq/qH0xSTayZmkKV1U7ECFq6PFYUpbn2aroSMmJTQKifsBk5M+J
    8Yrxg/tulUTiwi3FlrKkVyf3JNCmtDZbZGgCHAXUgIJbnHNzW2nRYk3LeeBJ4T74
    3VTZA/0Z8Gti+9zYP4RvCnbufsBO8dS7H3qMaaDa+Jnj2KYnLbQXhUH0hSRPePZd
    ylPSYMYhbvZxLF+kVoxRPKn4o5o524ECkO4tJuQwZV72xCRemyMalhyObfPUv3Pv
    2c9DTpeP6fiO+lK4jPSqjFUQ+wdJz/qxXYdvCnfperQftmGvILQmQmVybmhhcmQg
    RnLDtmhsaWNoIDxkZWNrZUBibHVlbGlmZS5hdD6IZAQTEQIAJAIbAwYLCQgHAwID
    FQIDAxYCAQIeAQIXgAUCS+MdjgUJDccA1AAKCRDnlnpaz1hA1JVIAKCMAnvJIfw1
    +r+G0Ke38mRrnhzJRACgnnSswoyJD0lvmZR8VIGvBOQ72AK0JkJlcm5oYXJkIEZy
    w7ZobGljaCA8ZGVja2VARnJlZUJTRC5vcmc+iGgEExECACgFAkvjHfsCGwMFCQ3H
    ANQGCwkIBwMCBhUIAgkKCwQWAgMBAh4BAheAAAoJEOeWelrPWEDUO+cAn3ccQBd/
    abvhD/0pllCsWvT/ULv8AKDx/E1tUCqUkenPB1JcIv5sQ6e/DLkCDQRHgh5eEAgA
    mjk/OYgnOp2A6FTh7AlWOVlrpo+DPQ4bxGXUYtudxptm3hUtaV64zWzL1EF5Ky7u
    YNuJw3CGHX6tDV0KZ6kYGphkcjkv9i/T3U1YaqTklgmbzkSgIcuCzHP+6z91SnjY
    VL+HG4egz3GPBn+vWORt78JxgLjLlLQoLQhAliQK4v0+J11kXMT5mZc6IUpilJNw
    qLbsMKPUxYV8bco3NTMfmkcdJah9ymGQOiRHsTt9VCuvXClnpDF7TpxRd/BICfdZ
    JyNQYTvVV0d/g24zumsyxgcI0qup+NKic/M3G/+4Bo+f57FRRndARktAUqc2NSGK
    mTlqsOuJZ0RPDmwGTIcPAwADBQf/dZUT6idKhsd0kpaHpX0V/LES8kFdh3mNiU3s
    IEOeF9jslZEg3Bl2/AmOIVKWheu8396CjqKr+vjmXlEKABj3YF2ARFj9yg/epZdq
    OGyVjWkw4JhigVmtbc/BhNX1uMy/SlBpZUIyubvtp21f8YOdLQcV2in+x/Vfovhj
    kp2ms7fX0PnfwSy3Q27B5bvlU/jPxsog8dJ9Mf0tfoEWs0DBrPkDjBbvwu0VM2Qq
    JOasZHOS2qAAnE77X0dkA1c1eQeXtgoLbqMrWdp6tS532KiTQN85GRMJbECocMUE
    pfez5pVX7oYxsotEqIfBHqqgx4Zv//oA0fE9dIAc+RawKq64C4hJBBgRAgAJBQJH
    gh5eAhsMAAoJEOeWelrPWEDUtV4AnA6B3aXqQMK3LGBF5RYuPqIf2BeZAKCo6fV+
    qu2NvCjYzT8RrLvqANb1wQ==
    =ucJ/
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.88. Bill Fumerola `<billf@FreeBSD.org>`

    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-----

### D.3.89. Andriy Gapon `<avg@FreeBSD.org>`

    pub   2048R/A651FE2F 2009-02-16
          Key fingerprint = F234 4D58 DEFF 5E3A 4E0F  13BC 74A5 2D27 A651 FE2F
    uid                  Andriy Gapon (FreeBSD) <avg@freebsd.org>
    uid                  Andriy Gapon (FreeBSD) <avg@icyb.net.ua>
    sub   4096R/F9A4D312 2009-02-16

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    mQENBEmZYYwBCADCrWmjbSj/846S7irndSa66XI//DVoOrTu/thqFyluQQmhhRuB
    +ndX79CWe2IRvr3l4bIaD3Lx2pq6OsUPWOsOAJSt90FGkynqSmO9MbcjD8ZE9Hkb
    mgqIW2NtEnCiVw20OlI2OfjhyavEcFAHxHsITRFVDlmjxutlyDkPmWXPNjsjfCaI
    FmzObn+W1adLT3r835x5mst9vBfuRFCTnm/yCHStkPTpW2mZ3njfDWEiQKc0ANaw
    EOEthnekr0jRvJmnC53JsJlwVH9yv9CY5EM5gVehmKuRok8NcVaPdNA7M9CATpaC
    eYQ+by4j5RBSMgXlFxhjHxM6VfGNv5vb6KG/ABEBAAG0KEFuZHJpeSBHYXBvbiAo
    RnJlZUJTRCkgPGF2Z0BpY3liLm5ldC51YT6JATYEEwECACAFAkmZYl4CGwMGCwkI
    BwMCBBUCCAMEFgIDAQIeAQIXgAAKCRB0pS0nplH+LxrvB/0R7uiYKZE63nqMbL2P
    9mqrbpC3PmrA0bNpfonu4wSOyvgeK/xJ0MTnSUTv5LLb1g+qF45LZSkYXsjncD+i
    HfLID68iSHBSWxQwgLePN1cEpDgcec/2YTpWBdzlC6Q4EtGunZs5jhEC9a4wDqBx
    uRzhexNDEiRzN0bZwqg/E2T7eY0oXfpwpdwsfAeuPniEwEJSFjSreMwg71wPIAb5
    HcuMieKnxjlqDEW7xQ0nrTydWnhxVvJoeVdB93mKnmhtQ9K/G6cV0q75Au5qy0au
    ztmXi8XaK/pyYxCbmhSPRC/u6Bo9K7rx6+MxtGX8YQd1VLC1kfNCx3JfETA8P1QE
    nJQstChBbmRyaXkgR2Fwb24gKEZyZWVCU0QpIDxhdmdAZnJlZWJzZC5vcmc+iQE5
    BBMBAgAjAhsDBgsJCAcDAgQVAggDBBYCAwECHgECF4AFAkmZZdACGQEACgkQdKUt
    J6ZR/i9dkggAlly9aIHTmseVjpdHD67VZ3sZWPvb/QaZ905mOj6fhxb4MVlwl49o
    9VmO0Pd1Als5FziaDnRBGiB61MjqDiCNxRfn7K1LJ+hf52ax3o+4oWQ7pDWwNPfS
    4qdnqnwpZL3uL4EtaU6r4Ix5bz7ekoYUV88sORR0fYueJqxDJcom6ZnDKEG6RrCM
    mzuiXhDfEWdLD2mdMvKeTAd1hGK+dLrIy8hmjH3zn4POkXe+d4qIJ0ENG1rlXTST
    KdrIUPUjQSmS6W9fCrBF97C8ii384XbPUd/rQkDBLC3jcqGpuHhzGTLYza53dlvB
    4qk0CaXOd8cOu3i1ac5ldiMuAcmv/bqg6okBNgQTAQIAIAUCSZlhjAIbAwYLCQgH
    AwIEFQIIAwQWAgMBAh4BAheAAAoJEHSlLSemUf4v8+YIAKgxK/MtfJ+CpAc/HPR3
    JFy8jWEkFanKgYIClzydEb3ONHkhFzNIUJIdPHNq4NGpWT7sKJg7u/0ojjPuAI+y
    AniD632Ki6q2MGBZp7jVll4B3q3+wKvaTT+h+Q1UvNjOmTbTZaHifRP6ufBNjlQ4
    BoXFUpYYLGNcH8Zal5G3CcBWAsfXt0iAM5mLVVpJEzaQTDFCEKpeSInhiKYxGyFG
    dGcffr98sUZhLrdx2Pl5H1hD6G+DBRYZLXag7cEumPjuikrgxZNAeHEyz3QfhPFh
    l6YJKm7HBy3DNwrg57+jDBHx7AWviq87MzU1XnWWns5Fi1WLPSlyAKSGWMHqITfj
    7NqIRgQQEQIABgUCSZmGVgAKCRB8Pwz8BJPKAl0OAJ9OvtFwX62D5OfoZ+jwtRka
    qv1scgCeLrS4nYea2JBdVmDi9dS/d4LdOF25Ag0ESZlhwAEQANe1Q5ZfTOc+6I7S
    S7KBrbz+Rdo0iEg6or7rrKUC62Vm8aX97yzBsgXzwQXBjD64DiJ1Lely+RRdE1Rs
    77/b81WHOYYBExtrcNXmbwxWqSs7Vxf8yBd/uB9n24sf2KhbVFKOeGXiB+76Ls6Q
    F3cOmQeeyGR+Rk7Trk4O/UxUPnoGFTM7yuFjZnf5R2c2BfprUvZ1OdIax3BxqDAk
    TF1BvmdAYeTqf+45+2DY1qD5w0o5AcCOovOk0mj/3qUbFMngtaVgiEnQEUYpH8RK
    vFecaB13JAOjvcf8HppNtMiY/WC2vKeBI8XTVP4JB8h0agalQUabcXpMdA+J8Q5s
    0zFAueYfzfDOtjxjgoA3c7GKk8Hkj4rtaa1nbTgIGJ4of+gpuNSA+AmLOPrLAcSm
    xQWsayfvrMdCWIwjSkbqB4yAiffIdI11buH44XmU9VoB/EuyxZ0eWft61kBQIKtM
    ES+YMiEEEHb8R8I/2wgJx35hywHUlOKn163em8Rcwbm/i9Myx4pc9RVSsz9IBsUe
    bHOi3v0kfVrxLIwpqfUc/Ryla/+BW3W08WeJ5AW/hv+OU7HHnNTaBeNTX0MRe6Bx
    jbDYT+M0iizIU7itI8Ki/wDYhhbwKq+WLvozPHoHQv4rRnuwdvW8LQmdrIE21k+5
    XrphH1jIOMo3GosT2wEopaIbjC9dABEBAAGJAR8EGAECAAkFAkmZYcACGwwACgkQ
    dKUtJ6ZR/i8Gswf/WvKsYhmIPPzshU9e2LYXCNYSsoaayqcwpH4z2UzFOQ6GdOJq
    DaPYCvFS+gllkktfKJ+qXjvwMrJOyyONVIr34XJTKc+5dX2kKMu/CnSNkBD+nfDo
    tUk9Hd1Z5zGaNrPwy02y9KWqYASKIWNNFIttL0XEnMfW8CLWQrLzmKRlxWZPC1Lk
    TnYVtxH7RrM3VTbBBfyeMypbdj7Wc1/kEu4xqXgTI6FhXkgTR8Ag1LGP4x32rzBS
    QtuMayhOSUUQZrJpcQYQpSl3j/AGaXuC4sHRpgpomR3B98cCUwcJuQJtCK03W57U
    maATzhsOLAzTARzC9+OmDsItyFnveYUKQQEUwg==
    =4PiO
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.90. Beat Gätzi `<beat@FreeBSD.org>`

    pub   1024D/774249DB 2009-01-28 [expires: 2014-01-27]
          Key fingerprint = C410 3187 5B29 DD02 745F  0890 40C5 BCF7 7742 49DB
    uid                  Beat Gaetzi <beat@FreeBSD.org>
    sub   2048g/173CFFCA 2009-01-28 [expires: 2014-01-27]

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    mQGiBEmAbU8RBACOi7LAumjK/zBMpQDMrR55L9xJh1vTYpiKayLth9ZPlsg57pa8
    4p93pSTs7XKcHIO8zqr+LpFFxtafUVoFwzDhwwhO8mX97oakPK/LG2ItUYYZ5302
    RX0UclTrMNt2UM+0nrTI/uoh/azn5S+gJNYYTEJy96QzOtY0eGj/dDvOWwCgg3hb
    fN0crXO6FKY+fshrgQUdKX8D/1PWjcXge7sM3tlR9z0ETZe35qEljmTXpT4sPky6
    KmUF4ymBqhWCTn10WQjuOjhEXhF3rHQ/omgOr/dBQFZefBtcYKHUBq3lvmd0cuFB
    xVJRQErw5U8r343EeaZOFY+ale9iNTfwkl8AyrkaazUH/j3qu4ZnGdf+Wum1P/SF
    8ijyA/9XcujJJuXMT717d5yY1Vx1Dn+aYLV4y3OiniJBQFP9CU2lX+Iw1sfuTGml
    zx8+RPTlL+S3+nz2XkiYwHVi6wlthhGIOgE5DfG1r9FG5PZJtBr3pQau9BilT1TU
    3rXZp2z/tkNEQTagSB4ObCAQ5bTOuxli41TPFuHxmn4Q1YrmkLQeQmVhdCBHYWV0
    emkgPGJlYXRARnJlZUJTRC5vcmc+iGYEExECACYFAkmAbU8CGyMFCQlmAYAGCwkI
    BwMCBBUCCAMEFgIDAQIeAQIXgAAKCRBAxbz3d0JJ20jPAJwOdzYWw9hZSEFtUf40
    lGSurerRAwCfWN8iMDBntKPMBt3j5QQWWSkPxx25Ag0ESYBtTxAIAK2WncBXO3CK
    VTcGY5jvbqKWsJ+JUJqZylaV3FW6YzAMKKw380m2khT823qgC5XBja+nm0IQn2ec
    34D3XKl8gjf4WWJog6y/DAnxvwdtsS+Wwq0/ownCF1pvFiIt1tAw54i5fmqpwZj1
    UPQE2IRc54y9yFdGNSuV0He9ZdJGxXKx2GW71rHlgWCfxXmD+GtwzFs76jn04bwk
    lj3YM/AVr+6C3OGrUv0lIzD26kPxpbZHPSx2a6imBk5HQKVsuYqqeI5ZMOnkbwPn
    GuEu7tVn0Y0lwVyBqYf1qe4u2e/38Kg7e/X7Vk/OTSh0FMJ5ZsakKUjedvJ5DA91
    gUJBmGkopmMAAwUH/jQX8T1IlDgmZN2T8FUc3hnQjcYdOPRJv2Qx2DeXK4OI4DCX
    KWxVGXeGVd+EpKgYCSmBYx5UA6MKN17nmoQei2MuVigxE07cCx6BjASTmHxex3r9
    EGl8luGmEkzhTajYfu+13dvMMQVYuyQTwB6dMioaw7j6lE5GBG06NvRfzik3mI5n
    ms487lKYcqAJ+iFk1a8Lbtof3xoHi9gYl3pWQ/rXirY8sp02e2FgC6iFvE/4+hD+
    DCdkkCZOJMIl23JVm4VLWC8Ak1Z5PnOXPzXwS1hEX1KjRyrW/Z1EwNcCK8zSNQH+
    bknf8dxan+46/iwig5ejA9N0lyy6gooFXeiYCQqITwQYEQIADwUCSYBtTwIbDAUJ
    CWYBgAAKCRBAxbz3d0JJ28NNAJ9II48hjLq4PRAYpsDHXGH+2wSr1wCdF1Kq1fEU
    WlCtH7Ew40yBxy/bVJ0=
    =h59X
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.91. Daniel Geržo `<danger@FreeBSD.org>`

    pub   1024D/DA913352 2007-08-30 [expires: 2008-08-29]
          Key fingerprint = 7372 3F15 F839 AFF5 4052  CAC7 1ADA C204 DA91 3352
    uid                  Daniel Gerzo <gerzo@rulez.sk>
    uid                  Daniel Gerzo <danger@rulez.sk>
    uid                  Daniel Gerzo (The FreeBSD Project) <danger@FreeBSD.org>
    uid                  Daniel Gerzo (Micronet, a.s.) <gerzo@micronet.sk>
    sub   2048g/C5D57BDC 2007-08-30 [expires: 2008-08-29]

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    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
    =z5Yc
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.92. Sebastien Gioria `<gioria@FreeBSD.org>`

    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-----

### D.3.93. Philip M. Gollucci `<pgollucci@FreeBSD.org>`

    pub   1024D/DB9B8C1C 2008-04-15
          Key fingerprint = B90B FBC3 A3A1 C71A 8E70  3F8C 75B8 8FFB DB9B 8C1C
    uid                  Philip M. Gollucci (FreeBSD Foundation) <pgollucci@freebsd.org>
    uid                  Philip M. Gollucci (Riderway Inc.) <pgollucci@riderway.com>
    uid                  Philip M. Gollucci <pgollucci@p6m7g8.com>
    uid                  Philip M. Gollucci (ASF) <pgollucci@apache.org>
    sub   2048g/73943732 2008-04-15

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    mQGiBEgER9QRBADEnqKDo2SQwM99dEQW6sEoFafQm592R98bDFZC1CqmBhZaj9nG
    ksxyX82s/PaOoosKZR3hsMcDOJgYkHfTKIMU6aDVMrONfsgLF4V6meTaBHW5uSOI
    cJBsW/TSTsOq21yrp6995jSTsHZxV0CpFDZWGCowefxvbRoAz/89pUBxYwCglOYk
    btty+eanC+la8LUuLn1na1kEAI9wXI6wRbc4Qv4dppmNwiBsu0aDW2bOe6TNU5nj
    MMU5dMQkQ+FkHBFNyF3Fy5Uvm5zhGhlPKRTW9nOmLzZQBf9kj1G2giq5MN3fs4jg
    k15/93Jm3TnyV8LZxP4cBU42HhuL3b6rzFFNVgDLw4PJuSqjt/JTNhNtCwYW+nqS
    g08zBAC0FuxTJzna5X8Y2o5o+J2yU0kIB+y+fmGeaN5zg4VsM64Nexhc2X3HJbXd
    31hPqySdBl6DQP/I9U00S/C2Qb6MVwTDYR2DBltoeqoHOJKGLvqB5N01DAVg8kAK
    31PpMdFhkfZwM2ZsHfoGbnEB2fMd4Fb/+DwbjrckwdG1w8P2t7Q7UGhpbGlwIE0u
    IEdvbGx1Y2NpIChSaWRlcndheSBJbmMuKSA8cGdvbGx1Y2NpQHJpZGVyd2F5LmNv
    bT6IYAQTEQIAIAUCSARRtAIbAwYLCQgHAwIEFQIIAwQWAgMBAh4BAheAAAoJEHW4
    j/vbm4wcSz8Anj92jZBlcifpDwdiUvTZdGO28CjQAKCT4jeiJcLCbhnXaXonBCzw
    DRw5s7QpUGhpbGlwIE0uIEdvbGx1Y2NpIDxwZ29sbHVjY2lAcDZtN2c4LmNvbT6I
    YAQTEQIAIAUCSARH1AIbAwYLCQgHAwIEFQIIAwQWAgMBAh4BAheAAAoJEHW4j/vb
    m4wcM20An10tzTX41D6qcEjOBqMzwyydrYoyAJ0Qs9fj/ct7iDCphvNwCcjNGMlx
    ZrQvUGhpbGlwIE0uIEdvbGx1Y2NpIChBU0YpIDxwZ29sbHVjY2lAYXBhY2hlLm9y
    Zz6IYAQTEQIAIAUCSARRmwIbAwYLCQgHAwIEFQIIAwQWAgMBAh4BAheAAAoJEHW4
    j/vbm4wchSkAn2DyHStIDMIXwKH8LAgut1wpf4sgAJwNKynACF0+sok5YupxxZkm
    QFJsNbQ/UGhpbGlwIE0uIEdvbGx1Y2NpIChGcmVlQlNEIEZvdW5kYXRpb24pIDxw
    Z29sbHVjY2lAZnJlZWJzZC5vcmc+iGAEExECACAFAkiGRaMCGwMGCwkIBwMCBBUC
    CAMEFgIDAQIeAQIXgAAKCRB1uI/725uMHK3IAJ9n6VjOWpymuzHE7xN/xlJu2j5l
    uACeIqegqdXAaqRS4+olfTDN/nvoYWe5Ag0ESARH1BAIAJGalt0PcCClgFjAWdKr
    2+wNm8CrgW8cm62p1KZ9rxTHqpDEQopa8Y2G86pKDmhjJQmPmepcZx2ZhnBc0UVj
    qBA9bEDnVJU/ysuxjYrjswYNP+5ZemUsk5IZgnZOLQod6ewWtcdZ7EPJYOfKNAvo
    1TMNFZqA6CLKUgjPpokRdolseRkyuS5q5XM4InraptSvv6G6SXRiDBwChbwfbJG/
    82ClmnuInhDzmc4gg5flrU6RprLu/PPx8SSIRkVHNZdPL3cF5pocETruqdkcb8yD
    aC4kIIqsn1XeBYLXS5lYbZBexR0i4i0xkjXnErrGu2lgGm65RwF+hvRsDC7RIC0c
    9hMAAwUH/0UY8w+pGeGMgZJHiLSoaK6pTXv1/ega4na1vGglnBeGXB2Cj6jKgv3j
    6a9XLRtaw5owhTLAX0uWt1XOw8ojm+vgVBvXJO7ljUI99/Zov5IQRZfy4TN8dOY4
    1TNgGiwaUU/rh+MIQy5hFCQPGRjIUKIkOGEBKOaZEkTV6Hr9rFCokpcTILF73JB+
    hI2EHwnXzpFKmzB1zwbNvtv4QiyozROvc558n13WP8OdmdGNv0jNcytqEIaB+PZM
    wMcLMjikPHKUxfHcdmwCezpIBKG2T/5xgzTCMxQ0UbfIYLnsOfJrCm+akw2VbQ+R
    TdP5dVLKITdFUk3nydirHpN5JYkH31WISQQYEQIACQUCSARH1AIbDAAKCRB1uI/7
    25uMHPq4AKCSdNolzpw8MfWfj4LU2ZVlbflHHQCfWUK39VTu4mNu5nPmuM6gmewD
    rNE=
    =SgIy
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.94. Daichi GOTO `<daichi@FreeBSD.org>`

    pub  1024D/09EBADD6 2002-09-25 Daichi GOTO <daichi@freebsd.org>
         Key fingerprint = 620A 9A34 57FB 5E93 0828  28C7 C360 C6ED 09EB ADD6
    sub  1024g/F0B1F1CA 2002-09-25

    -----BEGIN PGP PUBLIC KEY BLOCK-----
    Version: GnuPG v1.2.0 (FreeBSD)

    mQGiBD2RGpURBACZe4DKSXi6jCkn4eZHJr7nGPISQr4YUq3rDqcOSUlFPBZlVd8S
    pYnfkNNW8HTxl0+qd5kIXiQxuvWxCrTNzoS0gPO3IQcICkAqbIICK0A1KFFx4Zen
    +muTp/e7bDhStcMEelXc+/3mLReBJf/d6e4For6P/rqVmMAcm5A2GO4quwCgmrSD
    fLt9NGJ+mtiXFxloHe57l/sD/3nanV7H4zk9gPJZA9b8UKpbZZmsyljTuYOAULL1
    oh3CZDYvKZZ3E1v9exVDadSGvbps1bL1okku27nNd9BnlnSxZ+sQbfJtvEoBMUwH
    HJnAhTU5sW0UJv6K7goZ283npX8fFjyDWJ4+XJ1Qq1e+VMF5QeZVRFiIJ6NztM7F
    6b1NA/0dwFApYGf2r8YV5uJPeSsWH94Mx4PTtIXp+WOovQ434wzuBUMiHxeeuv4z
    LP9Vjf40s0GoC0TLz8wB2awUrO8aWwgg9SUf5yO+jKZ9BchBgnqjju81zAG5sbUc
    ogMUrENjqIJgFCkHcnbxo2IHOygwjezvZeM/svcxJ1bW/gZlwLQgRGFpY2hpIEdP
    VE8gPGRhaWNoaUBmcmVlYnNkLm9yZz6IWQQTEQIAGQUCPZEalQQLBwMCAxUCAwMW
    AgECHgECF4AACgkQw2DG7QnrrdZetACfY5hq9W8pDo/vGEaCZWQtpTpW+EUAn0jx
    G2nWbw6EDoGxa62mmqy9rFyMuQENBD2RGpYQBADjmTUn3Gk/tkVzIgVm8wdfuMPb
    n08JkuNLUDYjxWRfRmVZHpT3L+e7rUwKFrcmMRM+kMSsnWKhmhwpkI4Tqgi5/lmg
    kN8R+kr6gm40lEAc8tNPNzbE4ueKSAwW8QKqC2iHAqe0l4SjvDEns5M3mARPEtfn
    tdEsQGeyGYlxsG+MhwADBQQA0HSyz2a2mMvyn7IfG7f7t3zuL5tXoFARYQ2FYMWn
    VSkydfzYuBc6kX3oskR1QMv4EDgX0hIUglvTIb918Qj+4tx5CKsUKnZFflGYfY2C
    qwVwR9SPPdX7rhytqkalH8HyuLm2XuRaf/pzo23tAivSXNFhfQhvybFtLdPBJ6yK
    3XaIRgQYEQIABgUCPZEalgAKCRDDYMbtCeut1qqBAKCDnLRYCpUm4eyVG+Ycsn6B
    giZvyQCeKeQZPCnz6RKllxb8E/E17bdhN24=
    =T2MZ
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.95. Marcus Alves Grando `<mnag@FreeBSD.org>`

    pub   1024D/CDCC273F 2005-09-15 [expires: 2010-09-14]
          Key fingerprint = 57F9 DEC1 5BBF 06DE 44A5  9A4A 8BEE 5F3A CDCC 273F
    uid                  Marcus Alves Grando <marcus@sbh.eng.br>
    uid                  Marcus Alves Grando <marcus@corp.grupos.com.br>
    uid                  Marcus Alves Grando <mnag@FreeBSD.org>
    sub   2048g/698AC00C 2005-09-15 [expires: 2010-09-14]

    -----BEGIN PGP PUBLIC KEY BLOCK-----
    Version: GnuPG v1.4.2 (FreeBSD)

    mQGiBEMpwEsRBADcnD1kRdYoPvpKLjT1w1T5p1fT/LAimANGHXVoZxusjNdJjleF
    7SNfN6V+sjm8bdUjZb3VJr3oA21sdwIKXzamhtbaDRAAvKdYIRecTaLId8SqI3dO
    mZtLVo0A7XNkjVMtyLn8lPKpdiHPOc05/x8sVLNZ2LR/xFJnbdT5bomy2wCgmIOF
    EaoJmSuh5trZRiKIAeIodfMD/3zaTMjI7eLziJG2IWdxceN40vUX555gCpeFEQtD
    DfVV++32c7BN0j9o8VFl3W1vsQ3Elhm9GRlb5hZbRo53Z1YTJEzogXTGBVipJGID
    cDo/bCmRuMSarsT+M6R1NF6uToSBeVZyCtA/DDbJHNvYD5VeOJKsdaQ7hYtctoJ6
    ms7hBADD8AeV5gLZOjOIFTAkX1ibEksxz/P8aUFjnj0QmPe98/RI02e/iYVVdPgz
    HgrTA+gF0X7nIicn+KhBgOT0MTx6bf9DFzmk1KaFBA6vnQ9alw1WtRHGsIm0OgD/
    Jn5tRQFriUS5PWQP8FKXcUfmqOd0WtLebPicX66nOba+NKdU+LQvTWFyY3VzIEFs
    dmVzIEdyYW5kbyA8bWFyY3VzQGNvcnAuZ3J1cG9zLmNvbS5icj6IZgQTEQIAJgUC
    QynBHgIbAwUJCWYBgAYLCQgHAwIEFQIIAwQWAgMBAh4BAheAAAoJEIvuXzrNzCc/
    UUwAmwVe85K4Ljml9AgBKbNn5juVRkr7AJ96PWlTFr/IdKq+1m3Zw7Hyt93cf7Qm
    TWFyY3VzIEFsdmVzIEdyYW5kbyA8bW5hZ0BGcmVlQlNELm9yZz6IZgQTEQIAJgUC
    QynASwIbAwUJCWYBgAYLCQgHAwIEFQIIAwQWAgMBAh4BAheAAAoJEIvuXzrNzCc/
    6koAnjbYaFve7vZz3DW2qTBnYXp/n5IAAJ9+2EStzCP3tnKb/hjOxotstQufCrQn
    TWFyY3VzIEFsdmVzIEdyYW5kbyA8bWFyY3VzQHNiaC5lbmcuYnI+iGYEExECACYF
    AkMpzVMCGwMFCQlmAYAGCwkIBwMCBBUCCAMEFgIDAQIeAQIXgAAKCRCL7l86zcwn
    P+oFAJ4tcY+w4DVH+x7euh4K6ECBqM73PACbB2QBuJrDOtTxoYdmiH3XdHCytT+5
    Ag0EQynAUhAIAKD52CU2Xp69qfo/j/1aLgiMhgLpx56ySAb9SzZySUHadyptFpJR
    i3glUnoUh9dfU1jr8Y0f1oChCmm9TOZnQJWR7LOrO+av3gxnRtVMkvVr8eAPG3o6
    C3VZop7FPxR05Jmy0EtIxweEgNGmCX/p58T9LAM50E9FacmwYAIn77O5zXcJVnBI
    m9Ih05Hy4nGIoyF4iBA/NZQL10glMnwc6p82AiMj1FI6i6iDdPYBeiHKUXkyZ+Q7
    Df+HkelT3zot4DPKBeGBSFyQENOjHCp4wl27DsfiJXViy2NRz5lzrSFgvc0ZIUus
    Ia5d9nG+OE67JKU4qT5xgJL5+eOe1lXsHgcAAwUIAJKuSmq6lvF4NWN8HWDimXBE
    Ol8jNHf+miaLgMxOhAOeD4TQHpqgEhnf02koUbGDbli/AS1oC6WGhKSekgYKZCkf
    zmvRNEkCJCOMG3bOcKEokHiujcyQHWf8k4WmBQe0hGalrE+oaLti5H2/jAqUqYFi
    tHWRUeJDgfwOXRalI3YJJyjfBzE6ckE1kFWoEeXDuZdER9kusWWVrX38mdniwoKj
    7e+GtfYo+riB4Nb/TSuQjw45DKVaqYNi13P2P1EmHwmrSjnL3Yrck3x/vDrCKa0c
    2+BAMAaLVnOGdaYT1xsaMBGcgSkybQoOmvMm5hdtxURqi7k/TbaNhV/etSzfB/CI
    TwQYEQIADwUCQynAUgIbDAUJCWYBgAAKCRCL7l86zcwnPw4iAJ9rVaOA1zKrzwRX
    CLE2Xxf/FkN6JQCfZU7PjkJvE9jqgsBVfMhi6S6kNZ8=
    =rDV2
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.96. Peter Grehan `<grehan@FreeBSD.org>`

    pub  1024D/EA45EA7D 2004-07-13 Peter Grehan <grehan@freebsd.org>
         Key fingerprint = 84AD 73DC 370E 15CA 7556  43C8 F5C8 4450 EA45 EA7D
    sub  2048g/0E122D70 2004-07-13

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    mQGiBEDzjb8RBADNg1Ak3kReZLn5N6aGm/0ofeBsZDK31HgXFoQnXpZWuPf4Dcuz
    EztxDMfAhCdQPuFm+u2av7YiOc4Xmxmety18CwBP4E0w2Wf2RKdI7CdeVshn5epo
    kTMTn8pDu3ZDzui6Uvnjuc6y51VzL4zJwNNZAF5Vs1gXr+V7aDbvb1/6PwCgtX5K
    XQHfTdms5d6yhYwyQ4SrJ6sD/izS3iZBHe/nDdTBnSIA4sIdcZUn+sRfX7/GPs3H
    9JgYbI/+fatLEUShiKaNTCCibNRXx1OqFk0w+vs1pRz/ziE+G7uV7tglS3h8LMnO
    Q/6y8WwTMiv2seCKyiuvGxG2NMT7OAdrSNe8xPIlNRBdxvANFlgnfPsypXRfjJ5g
    1mqxBACaho98/zNgFpClOwAxw1Il0TX1c2EGB0e10FJ77rDNiPCWSnsPu5LB8mhL
    FfeGdx+zVVj5G4tMVIdJgZ5T4IpELPY1rpqf75F4mBrWTnmd7g9X1S//U8j7pNet
    JDVlymYg9DJvtKnfOHXqViwV8g2X0EwKsOpjo3IBZ0Oepw3wfbQhUGV0ZXIgR3Jl
    aGFuIDxncmVoYW5AZnJlZWJzZC5vcmc+iFsEExECABsFAkDzjb8GCwkIBwMCAxUC
    AwMWAgECHgECF4AACgkQ9chEUOpF6n19yACeNpRdDKA7qDA1vKGyjJIEdeAhqT4A
    nRC1CUpFTve3psN3cPWymDzSiHl5uQINBEDzjcsQCACkCgzuJRaPnoWmOZCk58ya
    +2Tbxd3qHtDDwMnY8NKi15FA0Cs40PUffHtWrxW1qcmm7QRmhHpR49tR1f7xT7CR
    OX5QKPa2axjv1mk9MKC4BtMe851UIMZ8vWbm/Obo9UdNYqEQEXT5TY6PbkiC8tDH
    5i00MBg6mkYtK9xU1OjJUp1YHuqalWgMEW1nUFM1CV1Fbk/SqLzyNcC0biTRMUkZ
    aZ1MgF6oxBIj/InO0f7gVoL3Jb5BC9bOUo3NkHCUQDBPwfLXR3lfrQLo7fLckYaN
    j85Ap6NXJr88vINfU+xn/MeVwTGYw9ejh4sujp3d57wP9Ym3PaR2SkoPdZO323oH
    AAQLB/wMC99y55a2jnP9IOsI+UIgWFWDmVqDhdgdp7asKjW2aUhX1k4CGPw7AdTL
    dtBdxqxFNp72fZPZ53ZIn0z2bogyYOOT4aWbTFiqKyU6CScCpeunKs+/qz0pw0f5
    /TdHgDCBrlMLihNiC0Tvtf/BzTLR3pqDshts8x82qKSjhxExazbBxJ23A4El53I8
    zZLQLD+vqJaFylhze8DNC3J/V4NgD1Vdporrz9L+QZuJXDGUyp6Gj4uteAu0W/My
    4+5zrs9Ym/TSmC4y3PLoqAeJv5I3E+6YqMo4c7XcLuJWO8jzg6aRlQmc/WgvVANW
    juieqW0bcYqNu2F/GeUcgvD3dWt7iEYEGBECAAYFAkDzjcsACgkQ9chEUOpF6n2l
    QACglTS9Ryv4oLwvXTNK2j2RLiH1VZEAn1YaLCp5rtafXPpdMdCOuJXo7MjC
    =UNPF
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.97. Jamie Gritton `<jamie@FreeBSD.org>`

    pub   1024D/8832CB7F 2009-01-29
          Key fingerprint = 34F8 1E62 C7A5 7CB9 A91F  7864 8C5A F85E 8832 CB7F
    uid                  James Gritton <jamie@FreeBSD.org>
    sub   2048g/94E3594D 2009-01-29

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    mQGiBEmCOzURBACOSQ8S2bwRYqXrfV9/pT8BmnGl7GYrkbDtJqL0IaTV1Bmdw7ed
    qcDjMT55c2LEQlO7w2EG5z7JfaBnP+jV3X/gtH37gcqClcJRxJ2uhT7fShzmRR/U
    5iTbAt0BwDF/W5LFmxajhZvw8NJKeMk8j0kUwdTzSKalN+iAhXEhqx/uWwCgz2qg
    9utCYdwfeSmRwebBIQhPq4MD/2bWpo3/Vw3PZzNsja1l/s8jQjxkMoXJ8LlYFoYW
    vc5lMBeR0nb1lZrnBvQGkEJVSPLXLvTBYireyqai8pt+Uk7D1oRevpsD/rIsSZBV
    MVSa8jUqPF0HC0vWrDd98HDq/RJ3SD4HHhiWJ2wA8YrftyeHzZ0kiJYzggQ3UPM6
    +x52A/0U2kBqBq+HqA7YWTEo4pn2W3adZCT8mwmsDdEnC/uTvA0BHBN1HfgCxwee
    TSqOwssFioHCVu+N/lxKjqy9ftHI4ljSuYOPpC3q+LwFdVjbCQ6ynILNKp89QiK6
    B5TphmOTQJ4ytVxr/tcvzDOCxbtyG6t7eCJBlfEgGjZLQu7uYrQhSmFtZXMgR3Jp
    dHRvbiA8amFtaWVARnJlZUJTRC5vcmc+iGAEExECACAFAkmCOzUCGwMGCwkIBwMC
    BBUCCAMEFgIDAQIeAQIXgAAKCRCMWvheiDLLfwhyAKCP4JGKCayDfY1f7sBXhYSa
    6Zr5KwCfSy1evNxNmp5TwB7RBpEZpL2R2C+5Ag0ESYI7NRAIANiluE6e3GNLyLTc
    cc/SQ5NdW4/B89yDQkZi/f7mUAMiS73iKoe555EVI/JIFsHUduHeYMB/ERDHNSUj
    RmWVkb4r8eVSlMVvoU8sBYGqihoYtFXYT7rj8vvq6ufkF9RtBJLTLzikEg07jfQk
    EzKr1eFOl0v76UGnmqrYiTXOAJoXQIH4+Kt3pWd8jz0Lsc3Kd4+eMW2A+eXSpShb
    yuQhvtIkSdOLDa9PV03Y/GweSCbTKa5+oTmCoKvXJYjDHwkuj7n2dog8vo64Oy1h
    z8mPPFyDXr1OitDdA78Vvpu8afz3Uev9DMaKd6WIEtVUprLOXyuSixn0x0rvImes
    t6lHX3MAAwUIANKigPUT7boxzc93BdWUOKrZEnjN7zVnIqUMizVgi0K9nLM+lSpm
    exPfoEZqCIBmAmDRYO50Y5Lwb2R6V0qHFBmIvZZ9Ih4YosXuu6oFhKHjamRK6JXI
    hh5mMrOZnfDRn5YGEr3ZCEOGzdW0pY1t8THd6mtXmK7iIKKy+3u/WHf0tCJDRXk6
    7ETBWwqFTE3XpZz09aHRV2470GKESSbs1Q4Cobc8ZIifNzr8kfnWPm/EH2UCNpnZ
    K2UvAxi6SRYVWIY11SRS/am+DRGweKfm9+NZpHEk2yJknHd95Q3IVw+fX+2yKVQe
    L+X9H5BR1y6XxKbxqrlWF5I2FDJo4BzOA1eISQQYEQIACQUCSYI7NQIbDAAKCRCM
    WvheiDLLf1rdAJ976PPYVcvK8Q/zKQrMv7pff09z2QCgut3uY8LEhlK39qZCF9Cl
    2+bu5gU=
    =Uux7
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.98. John-Mark Gurney `<jmg@FreeBSD.org>`

    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-----

### D.3.99. Daniel Harris `<dannyboy@FreeBSD.org>`

    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-----

### D.3.100. Daniel Hartmeier `<dhartmei@FreeBSD.org>`

    pub  1024R/6A3A7409 1994-08-15 Daniel Hartmeier <dhartmei@freebsd.org>
         Key fingerprint = 13 7E 9A F3 36 82 09 FE  FD 57 B8 5C 2B 81 7E 1F

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    mQCNAi5P5owAAAEEAMIKNuDnLGiTOzk3kGMmz1ii9FbYEM6fKdf0jSi0YSTxSWAn
    7EZbBehJ3yTAYuCaGSEGXEWismycc98LnH2Fb0uI2EsJ0CVLJqxsOL3DK8XE0YOk
    HjSKUpmJkh/BKrMAmUnqhbD6YIBiKnZh3ABt9+a7A+SakJQxvtQ9cYxqOnQJAAUR
    tFVEYW5pZWwgSGFydG1laWVyIChMYW5nYWNrZXJzdHJhc3NlIDE2LCA2MzMwIENo
    YW0sIFN3aXR6ZXJsYW5kKSA8ZGFuaWVsQGJlbnplZHJpbmUuY3g+iQCVAwUQQGso
    RdQ9cYxqOnQJAQFBSwP+IIm2bFprpayabQ/VgXp10OD3sgIEtH8c99sU91LyotNT
    ySif8DS+ujliDk5wVnaOlzqrV4sga8d2ybM81hdW0nxI9dNxLIp+ti90OecZMF6M
    4PlsdkYGnqZDzXlFg4o70GSAWKjL9RTG5JvNnYWS453mCjYc3O4dm+1zzADfgcy0
    J0RhbmllbCBIYXJ0bWVpZXIgPGRoYXJ0bWVpQG9wZW5ic2Qub3JnPokAlQIFE0Br
    JFTUPXGMajp0CQEBkqMD/0D1K1hTJc8u5K3gpsk9LrnOVYpP3zHbSe94oLO5tHv/
    b/Y1626xqcMKYfAIk435asuPnGRkMjgpsxPUKksfWMlUqW4aIiX7di6aMuWkgSBI
    BXguu1Dk/qRImOZkNzWc3V+/CQ+PIauy2rZubfW2+oVkW1iEmmO7I/nPqDxDBNBI
    tCdEYW5pZWwgSGFydG1laWVyIDxkaGFydG1laUBmcmVlYnNkLm9yZz6JAJUDBRBA
    cX8u1D1xjGo6dAkBATkoA/9aDk7yNvh6urP9EWcPv5mjJt0yYIIjGpV7VH2P+mTa
    dK14ah24HSaTjh4psJg/uFw4egAs2XxDKXrf1SHCaaVajC3VQGvKq6V2Ytmgw6qe
    Rtt+NtrXVJn5EUnMY3+G8YCXugulym6bUWaC1x6PC0Y2IEzRkM3H5Et78gd2zujB
    o7QqRGFuaWVsIEhhcnRtZWllciA8ZGhhcnRtZWlAanVuaXNwaGVyZS5uZXQ+iQCV
    AgUTQGsk+NQ9cYxqOnQJAQEV6QP/ZFHefmwjiex7zEU9uhzjEdZhDlM0szKULUoo
    TB4x3yiXiYlzK2aqppXbV+vl+t2VLhd3McH+SKSiKwoBVWrdqsXguruIjUYGMAJI
    aE+Zh3OGUs8sZhtQqn3nE4+VngpyXwPwXPrDhQiwwJRxj+01lupNwS0Z6cAPmD4A
    W1L0aSc=
    =HsTV
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.101. Olli Hauer `<ohauer@FreeBSD.org>`

    pub   2048R/5D008F1A 2010-07-26
          Key fingerprint = E9EE C9A5 EB4C BD29 74D7  9178 E56E 06B3 5D00 8F1A
    uid                  olli hauer <ohauer@FreeBSD.org>
    uid                  olli hauer <ohauer@gmx.de>
    sub   2048R/5E25776E 2010-07-26

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    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
    =cHUi
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.102. Emanuel Haupt `<ehaupt@FreeBSD.org>`

    pub   2048R/C06D09BE 2010-09-24 [expires: 2011-09-24]
          Key fingerprint = CC88 5081 78D1 39C3 B467  865A 348E F6CC C06D 09BE
    uid                  Emanuel Haupt <ehaupt@FreeBSD.org>
    sub   2048R/F658659F 2010-09-24 [expires: 2011-09-24]

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    mQENBEyc9+EBCAC5T1xdwPOdncmPh/T+n7l1azphl7haKdpfIrAdCaJFxQIHFqde
    S4hpq/+KKUDAVOGTCn/Cvz0GPd00EgOiR4gBxhQKYSFnVoEGVxxPUX+r9ABZs6fc
    8FCP1enBhlHfuO0pwt2139vagEQC30MlOr35OMVYlB+2tX+CVe5yVZU6S0ZA1u3H
    YHnGHpFweC/VmTFmwVV7g8OtsV0uC7VxWiNLITSmUYyJ2L0B8Lkne2lFzWnUMtC1
    PnOzRFiioM62jiWWLUwHP2vcky838rQ4ICnzpHPvkZv+/YvXsFni/z/hCa3Oqu0O
    zSofjPu60NtNzZdB4F3bVEdWwRWGYzDvjQJ/ABEBAAG0IkVtYW51ZWwgSGF1cHQg
    PGVoYXVwdEBGcmVlQlNELm9yZz6JAT4EEwECACgFAkyc9+ECGwMFCQHhM4AGCwkI
    BwMCBhUIAgkKCwQWAgMBAh4BAheAAAoJEDSO9szAbQm+S7UH/AnqrRmTZwHIq1VB
    aawX61ejWxfoY1glx4jEG82AEp6MsEMc9p+wIBpwE4ww+trRqdlDmBqsrL5PBdHu
    MxVW3zlH7KLIkjUj7lWJw6Ifhq05bqh1+KbLOb2iM+8h3k65IH1nVjnCwAqVX8Ev
    CGa46w4kKOqCcmYDgbYJFYm3b8dwy4TO1haMfsN1zbcUgKgWa63l0TIcns4Ux5pK
    ZEF9iV1uJ5GHXyLl4vqdaYtGd6Tj2pO90zfLPUWAXpI23/q1X4CrsDOD8kDpjT6v
    JuRfQOiwkjpVEOgo2btLArX9Tvu2tmPFbstvwUaZByf0V03c19DVasg33vOaYOcr
    UsTxfZS5AQ0ETJz34QEIAMBygTWtv/grv0Z6U7WoWqRtbH++8jb1reZezLaw81sP
    O6wf0f37VxZi9SzTgLcyLx4bJ4vYHKD9QcvzE8Q6szLayMg5tIVVL8roonmLjFgC
    JdGVOBwsgLWpZ/gE/xBIB2kHaNcr87HMYkZmz8JHsUNFJh0mV0cgWxNzezcH+NCy
    NyKH5qtb6PNSR5u6IOqkqhX7vWRRawYcedI8IM62VZO8nob8kXcOwrYxYh3KJhVl
    URaWRdZnznFGBTQXt3md/EsBFB90O3dsfuBxH9M95oNnKa/VaTD0gRHHyysaLbmk
    ukd1zvxSxlPRVCaYDTgU/ndl2HxsrTkA2y8qCUKm2V0AEQEAAYkBJQQYAQIADwUC
    TJz34QIbDAUJAeEzgAAKCRA0jvbMwG0JvkHWB/4pW83qa4YmXI1FdD44/jlVHvPC
    gU+fGmvaG1/1zD3oJd8C4502VdrUvyOc/NtQ9Bgjku51OvzwfIQYiYFY9Aq+xBAz
    2FQQAKj6JaIzx4DQD53AnoWo3UqA34Wtn+YUZzv6zfnXIpJw2QnL4tFyY0WNFJuF
    r9j4JZYYZEwsUbL73EcRRJqbVpJMRgE2P7CmiJYFDxygx276pBTUv2jSO9zWK3Hi
    pwxY7Q1YlRzSfRN0TLb49A85DZWG2OqDIVJew2+fP+wjHQndNF6xuINNkZ9K7hyr
    i+WSZkZBLbU2Uk3tyfAHoO8OywmSK2vKYFjmYpkqiyx530/oOqSiSoOPrLfW
    =7z/9
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.103. John Hay `<jhay@FreeBSD.org>`

    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-----

### D.3.104. Sheldon Hearn `<sheldonh@FreeBSD.org>`

    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-----

### D.3.105. Mike Heffner `<mikeh@FreeBSD.org>`

    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

    mQGiBDp6LpYRBACHINF1K2lJiWCFAgY36X+NFDvgbRe9U7BKy2Q8ZPouMOi/GIwW
    iocDyVwRnK8tC3D1BM3THs3cFW0aPsSOTGngZE8rTs8lm53UWi1UApTUztjH3odp
    OynMb/Dj3k8SOWkq5mYYzl+38jsz067tRDlij4s4I3EjwcBQJOhnUUWV0wCgpDBc
    wAx9TBVCSY9H5YLtCrJbnOED/iwQH58xpFLxQO1FDYlUCZgZaASm0luft13HuCrM
    Zj2oDgJZOcuP2AshoJXnKavDjwBIvgf/p6cPZ9CS0sF8WI+v/LHN/EUQQoXXNzD5
    ZujgMh1w35nMvl7fSJRDaie9HggnUx+ODtWimmROpiicDXb849asCrUUEcpU0V3G
    wYaxA/96OWzf/TCr6CZABFBCLq2VwX3Run3ttBiXOVI69gEDj95mfeDUxPQH4JNt
    /hI1B61Ab3/yDWmjzrW7Kb2i9URK4OKw/95YjoC2g0t/CFrmFi82UwMsmUp4mIqJ
    eUrQ202IY2zCqCEtHcTbUdXrP1eFkGmi77s+KzzzknO63+efXbQhTWljaGFlbCBI
    ZWZmbmVyIDxtaGVmZm5lckB2dC5lZHU+iFcEExECABcFAjp6LpYFCwcKAwQDFQMC
    AxYCAQIXgAAKCRAWiRlCzey/mTswAJ9uujS3rA/mJcR8TH33q6SRhZSeFgCePzaT
    lOAkDv2LVm0F+V5CBex2gkqIRgQQEQIABgUCOs49wgAKCRDCpSwr0i8VsUrfAKDi
    Cffo5C6Ei5xHtWRA0DpHChOoOgCgqwDeqC4zLU/lB/jKYdGX37VPMQO0I01pY2hh
    ZWwgSGVmZm5lciA8bWlrZWhARnJlZUJTRC5vcmc+iFcEExECABcFAjp/gWcFCwcK
    AwQDFQMCAxYCAQIXgAAKCRAWiRlCzey/mRbDAJ9BS5FWb+Dj4IHlRYsr6IHCXxet
    LQCgmpN9GwBWNxzBlbAQEw1O8anp5xiIRgQQEQIABgUCOs491gAKCRDCpSwr0i8V
    sfQXAKDW4IsDEKGr1rYpO4IIZPMl2hVLJQCcCRUr0Mfce6AXKUYBfjAlZmddN0u0
    JE1pY2hhZWwgSGVmZm5lciA8c3BvY2tAdGVjaGZvdXIubmV0PohXBBMRAgAXBQI6
    f4GRBQsHCgMEAxUDAgMWAgECF4AACgkQFokZQs3sv5mRMwCffitElKCHTC+tF8hQ
    R9Tdb87+PH4An3jlIX+TAD/u6CjyAZ9fR8nEXeVUtDRNaWNoYWVsIEhlZmZuZXIg
    KEFDTSBzeXNhZG1pbikgPG1oZWZmbmVyQGFjbS52dC5lZHU+iFcEExECABcFAjrF
    NgQFCwcKAwQDFQMCAxYCAQIXgAAKCRAWiRlCzey/mTbAAJsEIOjmXPBxqyrpS0QF
    lrJtDENffQCgmWgC/5AezMfJwtu+s001BNw7oRmIRgQQEQIABgUCOs493QAKCRDC
    pSwr0i8VsWB7AKCZe9euDml2vgJAaaPt34ptUl4UHACg4SZK21iSMmLW+cI6L8iw
    gGvDcPe0Kk1pY2hhZWwgSGVmZm5lciA8bWhlZmZuZXJAbm92YWNveG1haWwuY29t
    PohXBBMRAgAXBQI7RpsRBQsHCgMEAxUDAgMWAgECF4AACgkQFokZQs3sv5m0ogCf
    RV9e/JXy1ixgKCVoqzaIQ3j2MBQAoJwtV25V4gpucQxysqRrWTB65Ja+uQENBDp6
    LqIQBACFcO+vvM6/ItdzUhX3vIihiKENou4FchXwc/u7uchsLs589+PwaYWXqtPH
    E9YSjXYo9y87Sl6ciOagBL6rJZ8oNKc/ylRmx42iSTdAdEKCgK355kmXiWgaAm/W
    CT5YIETaY+D9TrBDD+c+ofB8vhekxAlr30FAnX6VmUJFi5xfrwADBwP+LiUdpsML
    kdJj0Y8PmbB3Gxle3X9w+6hBkoP8Z0q5dzG3Y3mGYpgLd4Ytf1KEKUm68BDJgcvf
    41B2Y6Ptp7mSRAufbymIRihNKH78fleaziWsux2CYJGZvsJzuYrlzgwuTzcLQKL6
    MfRXZHPyt+1SwQeV6pIE0DBZLHg9a0Ak5sqIRgQYEQIABgUCOnouogAKCRAWiRlC
    zey/mfYtAKCVze8DK+0HP1fTQyDajO7o9RTIVACeIwhXBEbRN8cH0BsG/8Qn5sZo
    2Q8=
    =/joR
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.106. Martin Heinen `<mheinen@FreeBSD.org>`

    pub  1024D/116C5C85 2002-06-17 Martin Heinen <mheinen@freebsd.org>
         Key fingerprint = C898 3FCD EEA0 17ED BEA9  564D E5A6 AFF2 116C 5C85
    uid                            Martin Heinen <martin@sumuk.de>
    sub  1024g/EA67506B 2002-06-17

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    mQGiBD0NjbIRBACZTF4rK66+y43uXsV8CHSefx5lRHaLPFMNga+sUBRIFcwu9WbS
    KSP/r60Gf/mNK4EUX3/+3gVljrgpAbQL9X9MV/SO50aZM8JMrUkUwjuzzzFKplT7
    bdB2zWhexWemFsE0F1G5NpxkqMg/E0aiZb5P9MVJyGLlF1hCwhWsNG0OewCgzQ/b
    yAEMk03PPk3DOaM4d/Vdf38D/j4O+TJPSjMf58wRGkrT+BmLCvFvg1OsUOMgyQPC
    Y07yO6WmSiZV5ynqb4bS5m3jfQmG1I2wK+dIf8SHyaVgqZiUpfqrsFV2qwfZXcod
    C8a8b/kmEbdMk1j+jZ8qxSScrKCHKqdEs1UihCt/F1kVVd8gqYbWouICxF4GoU4Z
    ANmHA/4xVNIInKVghFk9lMaK9lDgQs02laaTWLWzcSfe28ADds3Jdur0Ox06tgeU
    zdktWQvRYpIjqiQCCFLN18l6Lc5qyTg6fnx2yWpWJMb/xumUz7A79X0TBN8WG71n
    zfJLHtn7fCjsi5009s7Ahu//Q7pGN8FvkrZHZ3xNw+3pAaoawrQfTWFydGluIEhl
    aW5lbiA8bWFydGluQHN1bXVrLmRlPohZBBMRAgAZBQI9DY2yBAsHAwIDFQIDAxYC
    AQIeAQIXgAAKCRDlpq/yEWxchZjRAJ4s0v1VXJmkm7kj3kMM0Z8xMNoJaACgkcMu
    T1ID/2v+A1X7+suOzrWMr5aIRgQTEQIABgUCPZGohAAKCRCteU9X9uLnUzW3AJ9T
    0Hzs6ZZq3HAYuSVkLReaZEhyGQCfb7goCt5RLbxx+3AMyyX5uh1boQmIRgQTEQIA
    BgUCPZGlrAAKCRD5Ay7lt7i0eYdWAKDEeKMbkRTSZKsKelQwiD+T3me3tQCfVMLi
    9mkjolOAXpAOVX3Igy5QHUS0I01hcnRpbiBIZWluZW4gPG1oZWluZW5AZnJlZWJz
    ZC5vcmc+iFwEExECABwFAj/Q6/UCGwMECwcDAgMVAgMDFgIBAh4BAheAAAoJEOWm
    r/IRbFyFjSMAniK+uu6ts+tLchT7+npgPJ0wmyCXAKCmCmXrSUTnPG5DwiVD66h6
    aL2GHbkBDQQ9DY20EAQAh4G77oKy6pQB1+dhbbLsfb3UeRWv7i/w21Y1tSriZ5gm
    HhofJRuczvrhI9V23wRVOKs417TGJzytDIfp/huycYMigAQXikmFBJSqIC2ktJEi
    0DGhhne4XBdJENiHV8rb3/mk+Ffes/88DmoU45fpAwY1YN1jH8WO5mEq2aKCjHcA
    AwUD/jBsaAoUeNO00hwuZuWYNM4nvX57nptObVzP54/TfKs4GmdWzcfI2JB+5eFp
    rjtNCK+tosTQd73VzMWKk0fwiIew+GsB+g/ibK/WJW0lS6fktW2nPG2mGRblLtf4
    8W4ZmtZUqFTBSbmZOcsxQ/LahRosX82NbQyFPwuFMEBqYho5iEYEGBECAAYFAj0N
    jbQACgkQ5aav8hFsXIU0ogCeLnzxBftyPv5iS52Ear+q/mPZL7oAniB0B6mFArQV
    gtLJNL6KejWqSh3V
    =Z84i
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.107. Niels Heinen `<niels@FreeBSD.org>`

    pub  1024D/5FE39B80 2004-12-06 Niels Heinen <niels.heinen@ubizen.com>
         Key fingerprint = 75D8 4100 CF5B 3280 543F  930C 613E 71AA 5FE3 9B80
    uid                            Niels Heinen <niels@defaced.be>
    uid                            Niels Heinen <niels@heinen.ws>
    uid                            Niels Heinen <niels@FreeBSD.org>
    sub  2048g/057F4DA7 2004-12-06

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    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
    9RkYrA9581ilMd2RCkU=
    =x4MH
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.108. Jaakko Heinonen `<jh@FreeBSD.org>`

    pub   1024D/53CCB781 2009-10-01 [expires: 2014-09-30]
          Key fingerprint = 3AED A2B6 B63D D771 1AFD  25FA DFDF 5B89 53CC B781
    uid                  Jaakko Heinonen (FreeBSD) <jh@FreeBSD.org>
    sub   4096g/BB97397E 2009-10-01 [expires: 2014-09-30]

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    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
    T5KpyVoV09QzVQ==
    =YKVk
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.109. Guy Helmer `<ghelmer@FreeBSD.org>`

    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-----

### D.3.110. Maxime Henrion `<mux@FreeBSD.org>`

    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-----

### D.3.111. Dennis Herrmann `<dhn@FreeBSD.org>`

    pub   1024D/65181EA0 2008-09-07 [expires: 2009-03-06]
          Key fingerprint = D4DB A438 EB5E 1B26 C782  F969 820B 66B3 6518 1EA0
    uid                  Dennis Herrmann (Vi veri universum vivus vici) <adox@mcx2.org>
    sub   4096g/C003C5DD 2008-09-07 [expires: 2009-03-06]

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    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
    =b9AS
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.112. Peter Holm `<pho@FreeBSD.org>`

    pub   1024D/CF244E81 2008-11-17
          Key fingerprint = BE9B 32D8 89F1 F285 00E4  E4C5 EF3F B4B5 CF24 4E81
    uid                  Peter Holm <pho@FreeBSD.org>
    sub   2048g/E20A409F 2008-11-17

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    mQGiBEkh8ugRBAC6djNybj/k+sW8z4TZeC9M1PuSSuJlmCxF/h35rN1bJMHiaVaz
    umG5AjNwYtKilXO+bpj3OUQDz86j/vMpETy44lOaxr5f65lkP/tXATjVpSkxuimp
    vUHi6wRaCHLbyMGHRfuOX1E1yrYm6E3UvjrNnl8bhOJ9paUkk3El+gKm/wCgtIS4
    07Fb+Mft+7a9Ti8cUKP4rSEEALh/nGAsKInUmw3ybZ4c68yVjOUOhbDgAjU8zwb7
    vVzVpCythAEailx0l5UDzVSD8oszLiSDFLf93rfS7AyWx2/C/6kayLH7nYnmHmI6
    Evv/uZ/o4Tw8l2BmqEMwMIBRi37et9tTJNEKMAAUaah81KRcE9CPp91f3oKutOAq
    BkG6A/9e2II1FvJRLzeGRB4FuNm4yqnRvA+LCPE24qEWGoVu55KvSsrb/kQEUxHh
    46K6d1UCWYIlAPhV/CGstv2CfW4zDXOBlDg8kdQz9VFlzyz8sSs6ZP6b7kUzrSRp
    tq6mgiLKaTFYtm/BaUgYXpSI2uTlgujhC2v40pzeKN65Ph2H8bQcUGV0ZXIgSG9s
    bSA8cGhvQEZyZWVCU0Qub3JnPohgBBMRAgAgBQJJIfLoAhsDBgsJCAcDAgQVAggD
    BBYCAwECHgECF4AACgkQ7z+0tc8kToFTVgCfU8q5hy5tJ9ZEs9ScXPuIZ/vA4XkA
    njuLqq+giT5SvrrckuA8I1iFgsezuQINBEkh8ugQCADzK4XaJN07zeKtivb4sass
    fejhXyMJ5kwNqK+DRqMcHkbh6PCKpoOo7xjnk7e1MdTp2UeGifzTUEXz9iPdLFoW
    0O2iCppIgUEVfeShzOqEtiP0qpdDmc9RHbA17R8V8jaNWxmJtbI3Oid/7ubVPBfv
    KkPlsyut4A0yXBSxhqpLnaDpDVfMuUFbdMK+aYLABZMQaj6SJOf8bsHrBL6/j05T
    A0ZJkwPrV+ATbCXLUCAQ8q9rza292OFdLq5/iOQQa8mXhR+egd+NP1GLDEze/kx7
    5gNQJLnfS5GUBJMSIzLIC5Nn+WPzdmK5tMT/NLhzRbtqmWoAfQcW/kcEAUlNbGJP
    AAMFCADe1t3CP+Utgy0QAmqkipgKwvs32CsRgye2ocxtrN8GRaunFSutyESBNCHP
    VH/jh2rTZ6KjVvgBcruaT8B83YtYgOnFpe+4FZr7iwlSVL1CcEwWRDD+oujebAUL
    MaLTcToWbggvbUbOtu+VNKooDYFbFoZvUs9I/49RRdcLfC7dxOfl0+51WTUTB4g+
    d/rxtExYkvh19QEWsj6lyR6icwRhtrn2S+0oZ0JQ/mjCoqdrGNiiGPXzKrUnpSK1
    b1hrtZ3E5BoWJuXu4Y4hHHzoxGW3ggVeTp/+X2K0DfKu0itGJML98oe1hXbbDaht
    O+s3+Nrro2j0Hx3JiQB1wB9merWsiEkEGBECAAkFAkkh8ugCGwwACgkQ7z+0tc8k
    ToElPACgjLamE6WKd9zLyyoyZcV2H55qlZAAnitC7OHmghbHiw+LuQZ5Je7M6sik
    =KODn
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.113. Michael L. Hostbaek `<mich@FreeBSD.org>`

    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-----

    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
    nQO5zgCfXsb8wtA8I0ngWwOQxrnRRE7+Smw=
    =j3Mm
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.114. Po-Chuan Hsieh `<sunpoet@FreeBSD.org>`

    pub   4096R/CC57E36B 2010-09-21
          Key fingerprint = 8AD8 68F2 7D2B 0A10 7E9B  8CC0 DC44 247E CC57 E36B
    uid                  Po-Chuan Hsieh (FreeBSD) <sunpoet@FreeBSD.org>
    uid                  Po-Chuan Hsieh (sunpoet) <sunpoet@sunpoet.net>
    sub   4096R/ADE9E203 2010-09-21

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    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
    KQ==
    =zTaI
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.115. Li-Wen Hsu `<lwhsu@FreeBSD.org>`

    pub   1024D/2897B228 2005-01-16
          Key fingerprint = B6F7 170A 6DC6 5D1A BD4B  D86A 416B 0E39 2897 B228
    uid                  Li-wen Hsu <lwhsu@lwhsu.org>
    uid                  Li-wen Hsu <lwhsu@lwhsu.ckefgisc.org>
    uid                  Li-wen Hsu <lwhsu@lwhsu.csie.net>
    uid                  Li-wen Hsu <lwhsu@ckefgisc.org>
    uid                  Li-wen Hsu <lwhsu@csie.nctu.edu.tw>
    uid                  Li-wen Hsu <lwhsu@ccca.nctu.edu.tw>
    uid                  Li-wen Hsu <lwhsu@iis.sinica.edu.tw>
    uid                  Li-wen Hsu <lwhsu@cs.nctu.edu.tw>
    uid                  Li-Wen Hsu <lwhsu@FreeBSD.org>
    sub   2048g/16F82238 2005-01-16

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    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
    MTZHdxZQQYQ=
    =uV7d
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.116. Howard F. Hu `<foxfair@FreeBSD.org>`

    pub  1024D/4E9BCA59 2003-09-01 Foxfair Hu <foxfair@FreeBSD.org>
         Key fingerprint = 280C A846 CA1B CAC9 DDCF  F4CB D553 4BD5 4E9B CA59
    uid                            Foxfair Hu <foxfair@drago.fomokka.net>
    uid                            Howard Hu <howardhu@yahoo-inc.com>
    sub  1024g/3356D8C1 2003-09-01

    -----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/M2RusUQwBP131PnCzSCmAZB8gvcNSlbA9gnrQmRm94ZmFpciBI
    dSA8Zm94ZmFpckBkcmFnby5mb21va2thLm5ldD6IXgQTEQIAHgIbAwYLCQgHAwID
    FQIDAxYCAQIeAQIXgAUCQh1SIQAKCRDVU0vVTpvKWcmhAJ996hkp7RKzCsO1R4wh
    81QBqxZ87QCdH2JXwcclPFAF/XKpS5kbQbKdW8a0IEZveGZhaXIgSHUgPGZveGZh
    aXJARnJlZUJTRC5vcmc+iGEEExECACECGwMGCwkIBwMCAxUCAwMWAgECHgECF4AF
    AkIdUuwCGQEACgkQ1VNL1U6bylmL+gCgle9BEVLP/FKDTEsz6pYH/hdVMzgAn2kg
    KyplWAdJKjQ4AHlKOzi1DKj0tCJIb3dhcmQgSHUgPGhvd2FyZGh1QHlhaG9vLWlu
    Yy5jb20+iF4EExECAB4CGwMGCwkIBwMCAxUCAwMWAgECHgECF4AFAkIdUiUACgkQ
    1VNL1U6bylmacACglEvdvs5wMSB3EEP4qp46uKdXlt8Anivwqzf9dhjw07omH35k
    Ll7D5wGouQENBD9TDB8QBAD+sEewy1REDPQWycqdZVWzxmiS1X+TzSAgfcc7/QKv
    AZEsGADvhHcvaACTBuYRVr8DyzUxFUxeNByWSkLe7N5Hmaqauw681zsI+2osfXbW
    Jkp3JUybeFSIN5pacLNP5+DEAOzzphCF8ALv9H/MB8J9dRhZwDkY7SKt/cSNh4Cz
    xwADBQP/aD4exhzoF1iXR4879xEAAsRy3CCaoiPNeE4Aj9mWmjqEMzWYOjDeZ2zF
    W8Jrn2i+tOVGFpg2FKwtuqU8JRs/lqbedYUlM3UQl2pqGSV2tAziuLKKkzPnKWo6
    79hIhrjQCEPk1MqipoL6l8qZb8vbBpoCee5NF772jR85ai0ZdGmISQQYEQIACQIb
    DAUCP3rhagAKCRDVU0vVTpvKWU/OAKCE4tEk79yRFtmSNNa+ddafxcuyagCeI9MA
    byQOCAi708pPSIquH3oiM8o=
    =P50z
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.117. Chin-San Huang `<chinsan@FreeBSD.org>`

    pub   1024D/350EECFA 2006-10-04
          Key fingerprint = 1C4D 0C9E 0E68 DB74 0688  CE43 D2A5 3F82 350E ECFA
    uid                  Chin-San Huang (lab) <chinsan@chinsan2.twbbs.org>
    uid                  Chin-San Huang (FreeBSD committer) <chinsan@FreeBSD.org>
    uid                  Chin-San Huang (Gmail) <chinsan.tw@gmail.com>
    sub   2048g/35F75A30 2006-10-04

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    mQGiBEUjcNoRBACNcrOsDaRrFQMnMjnNViPfgBakMnwy28P/tfZvg+vx/5iRt73p
    5RrBE3dJZyAIOg+3st7sgtVuqeymh8JmoRlVFqLKEpCM1NNqq6TNHhlLBAuIYtTL
    hqN2knPM1m/IZp1Y4a5Z1OVnM6/fqItkxql4SX+GJ5815Lvh+1lokr8eMwCg9w2Q
    HgsgytJkYiFGJpkw1YOfwFUD/2oALyshDDCQIshX2xHPk+zLTMQva7uqDy8AUJLO
    o0DfaofDhkGjZnLpuFrc16eyfaYZw+mO149WTMpWrzCi+SmCXje6MSywINHneql+
    X6OzJCazYCGUfkSbwtAH89gIRKJiQKQfi4xhDrn8Iu+x3YtOKKxnrEVGX2S8fKka
    6YJ9A/99q0NX+543o6/kjfOz6Q44xzoyalBXT36THsFm239AaOejufu+HeyTZs02
    rvrF7IGgga1eUeQwx9gvRNFX65CkUc3AOTVfK2Tn36QJcGfm6r3ZYFWKjAMJ3haf
    aElE7Bs2zGergI0KNOid8rjC6osA3NVYSGI4mKIuQcBoxUNf6bQ4Q2hpbi1TYW4g
    SHVhbmcgKEZyZWVCU0QgY29tbWl0dGVyKSA8Y2hpbnNhbkBGcmVlQlNELm9yZz6I
    YAQTEQIAIAUCRSNw2gIbAwYLCQgHAwIEFQIIAwQWAgMBAh4BAheAAAoJENKlP4I1
    Duz6zsMAn1oP0sY1yRMo8jr7iCCdGtw2FuISAJ9crrnri2tcPS3281HX/4xk66dq
    c7QtQ2hpbi1TYW4gSHVhbmcgKEdtYWlsKSA8Y2hpbnNhbi50d0BnbWFpbC5jb20+
    iGAEExECACAFAkUjdFgCGwMGCwkIBwMCBBUCCAMEFgIDAQIeAQIXgAAKCRDSpT+C
    NQ7s+pzxAJ98bMcpWM9Vd/YvB2tx2tK3zH89GQCgqOGeoJQvB+MWFM1oVbP5jmJS
    wDu0MUNoaW4tU2FuIEh1YW5nIChsYWIpIDxjaGluc2FuQGNoaW5zYW4yLnR3YmJz
    Lm9yZz6IYAQTEQIAIAUCRSN1FwIbAwYLCQgHAwIEFQIIAwQWAgMBAh4BAheAAAoJ
    ENKlP4I1Duz6QX0AnRiAfY8Ngh14cBzYH193/LSIuebEAJ9wY9Gz9WQbwb7QlJEX
    cOmrejGiTbkCDQRFI3FNEAgAsPAXITBR7gx+9AyYwzvtIUjzo+viSfVHusyZccu8
    82qzPKYF3J1QewFczrL6GbPCNqw2c/IZ0Sn8leGgVw5cwP+eUNtcbuQIa8Hpgl0Y
    Ns5WZlr94NXTdU8+mO8WXugzsumUnScnKFhrzEQQKYbbAIavBAzVAoj8Bu2UDaCB
    fCc4S6OwHgUTuLHDRA0b8YXe4Zc/VbblSIZFosga3vishPOCuj0YWjLjdkXHFZ+Y
    We4oDxnMT/yPBcp1/7wqEhTid1dgJvu9R2N9IFSxHTxoHiEsEFa9z619/imVPXGF
    rmcoJb5vG/NSH6cMHr5KP60H4ze0pwMKJ3had+YJSIJGBwADBQgAm9eGbCZ3RUin
    Kh/AJSsVfzW0snA4V1sv3ovSOekROs9YoUkalx8Ywt4fZkGHFWvYXLVb1KnmW3+O
    juhfrjsgmaizQhSMHT47C21XJSvAWuXXZrF6PaIiPAo6q56wjfSS62ycj7z1UlSS
    SDEusPgFG3LfYBuM2wjRYYXZ2plAcxhGt2oM5Mf4Tjom1Y1GHp4m9VOIa+0D0HZI
    +oNYlOteR6I2tWg90bXJcAd6VlSwYi25b/KRkzYyHlU84o11UJnBnG8HgaN6E92w
    QAQTtIUd6PxLWYBG0ni4vtD2ZwyGKAH26QJIUC4bLYdfoZ7V7/MbwI4JEliGjZCl
    INqt4mrYsohJBBgRAgAJBQJFI3FNAhsMAAoJENKlP4I1Duz6TJkAoNRkeWHFV+q1
    WHzk4XJLFtL8cNyBAJ4u3Mfd7xo3Bx8pAs1vSTWooWb7Pg==
    =IROz
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.118. Jordan K. Hubbard `<jkh@FreeBSD.org>`

    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-----

### D.3.119. Konrad Jankowski `<versus@FreeBSD.org>`

    pub   1024D/A01C218A 2008-10-28
          Key fingerprint = A805 21DC 859F E941 D2EA  9986 2264 8E5D A01C 218A
    uid                  Konrad Jankowski <versus@freebsd.org>
    sub   2048g/56AE1959 2008-10-28

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    mQGiBEkHYgARBACdbmFESh/3csPP37dJBDTkAfWcUck6myVTVYu3dFgwDPA0iCs9
    HolmEV9qZA6m/ljZYG6b9ycHe2M7Xq3Mopdvw7Sa3ab7b2PRLu1WbKUIS/HlOXNH
    p3Dg3/Zhf1raBKMg4F0x0pbQm9+friN44SlnLlQK5M2224X786/VTlVv/wCg3YFE
    CufrZUsIPZndUVGh+/seBbMD/2fhNQhreWxF9QFCMohC/pGSfg1sddpWMqh6R0bF
    aSXfJwYivDLcTp4JYPpZilScBFgSxsfLKboRBElj+k7cj2e8nK4xzfoX+xsGrRDm
    t8uPqISnw8bvRGS3bZNuTt3NqHpXeiL1aEEEEMk7tKuGwlwf/KmA4BYq+eWDM7Hz
    EWPLA/kBJn5jAO99l/h1yGzYiWwy4a5iQd2sZg+M60bC3s9xP8ZvCPhm4qGuis9/
    dxzKxz7hPQ2CamU9DlpnoCeZQ8mttyqnipsnMVniI3A79xSjCP2dNkVWvimc5uWw
    e9ME6DAa2ldmN7fkj/b6ahvCiBZLVc2jv/fcmHcP8IzvhHLhT7QlS29ucmFkIEph
    bmtvd3NraSA8dmVyc3VzQGZyZWVic2Qub3JnPohgBBMRAgAgBQJJB2IAAhsDBgsJ
    CAcDAgQVAggDBBYCAwECHgECF4AACgkQImSOXaAcIYr8cwCgzjJgksYSmXwES8lI
    vri3HicZZUIAoKfdyp1VxyUvbm39iwIMsUBpMCTduQINBEkHYgAQCACT3lbgvRwF
    lzEkL7JnyMaHkw5Lh77Sl2cRu1+fouQeGxRw5CZFwcIUkZWJDgBLxFHJiAtjw5xz
    UnVDm1RWBLXdNn4/KvWOUx2ElPweL58q+j/45qfwISg7JyJckRAvACQ2bLT+2jlc
    iDInZiV9OAnwT3OhBb0a6dvMsbDcIk25QlcS/axVdCYp/ELN4jlgL3Vk0NoQfalo
    rtj/vALu5soRJgq5keyroDlCc2fDp3iISCBngx1xoFBaYaJHo7XSbXnCes3NhAEd
    DkY0QCBWQGyqW/ULGrIdgyGtszpxSlecPmaRlxpmTjAQT0mX+rGE8vBkgH/pDgqt
    icql1p3f9ofnAAMFB/9NCp6oARpDfPTG6upM+oUPwginu23w2ux7uecZuouL640w
    Yj4vssTGDhuP3QRQsDrlhXdHdkUvSuguXpG8EGf4GjflV/AvvXJDmOO3LB4TCQmw
    I+Umsc/4BCP6r/YowSyYmQENJ8VIf+Ps+WfoeGS6UzbEpZbAFfBMpNSQbzwDSa+6
    kh+eAHOZiPUjtoao+eyrvqEK+rpydN3G2D3UOJVsbYbG/3R0zD1sBnNBaqAub4zr
    vMBB0Fuml/pBzhFl+2VrS420Bfy6d83uPriNmlXlTyrX/kSxYVMkVm+lfqrjhSO9
    dj2t5lqpUSCRLO3Wbs/97zIi6Vn2fphH5iA1qI/fiEkEGBECAAkFAkkHYgACGwwA
    CgkQImSOXaAcIYoobwCeK8Jy/4hOkaFBHbi/WJ/SHaJGyNkAn35fpqrdHuOO2L6C
    Tuizqar0AwZZ
    =xCbj
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.120. Weongyo Jeong `<weongyo@FreeBSD.org>`

    pub   1024D/22354D7A 2007-12-28
          Key fingerprint = 138E 7115 A86F AA40 B509  5883 B387 DCE9 2235 4D7A
    uid                  Weongyo Jeong <weongyo.jeong@gmail.com>
    uid                  Weongyo Jeong <weongyo@freebsd.org>
    sub   2048g/9AE6DAEE 2007-12-28

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    mQGiBEd0e+0RBACwYdXNeIplh+WEQ9ywP1wJyTpGe2rVvkOLlJNpTJpVX7JT508G
    KuYI2B+Rn/V+1+AicL9tsUAnWX/tDma3bYw0Ls68LvD/571k2GYG3CMTy5FSrrtp
    3v3N75jHDsfulUzHL3LHsa/CA5qzuL819KIaUfTKY0A107vcI3m0v4emEwCg2BaW
    OyiO9pic/WnPi4tuFjLpeEcEAIzLSKzAiZZ7U8ESKAtonwYqdu0BIRFpp0kedXqD
    M9cTts8VjqjdMOm55xvI7h9EGjH+crFZBlZD0NWXD00NrrQdHifulSrv5l3Wtgn8
    xilqUhiYUcPQu2DHSuVlShvNZO6/rYA8R45axAfQv8rFo8NV0oElH+bvGq1mwRKY
    ciJ0A/9lN68t6G3LKmaSfWz13IUJT0E2qy27NnSb4RuKE2TuqyIMFzXh5+jjnp3U
    zRDX6KrYLju5Ire9GGJEMsGs28B5r3HXUPADqVIS8i6dW/npZlyizU7MfoRDFiRe
    btMpnYx7d4qnpKMpEm1J15JF84YrNGvkE55z7+g5zG0ua9KZgLQjV2Vvbmd5byBK
    ZW9uZyA8d2Vvbmd5b0BmcmVlYnNkLm9yZz6IYAQTEQIAIAUCR3R77QIbAwYLCQgH
    AwIEFQIIAwQWAgMBAh4BAheAAAoJELOH3OkiNU16VAEAoKnaR60kp0PF+O70GH7y
    v4k26FJqAKCycX2eM5PzjVzbAKHq0yMRj7tkbbQnV2Vvbmd5byBKZW9uZyA8d2Vv
    bmd5by5qZW9uZ0BnbWFpbC5jb20+iGAEExECACAFAkd0fKQCGwMGCwkIBwMCBBUC
    CAMEFgIDAQIeAQIXgAAKCRCzh9zpIjVNenkDAKCGZSCJTG2dSCbEH3kLTpYdAnfM
    gwCfay7fmNNMrN31IhC2jddWylvSDlW5Ag0ER3R8ARAIALZoci+sXDkhF0ahtePy
    ZszOeKUg8MHIac5RID5CfjGsTsbfAv7eM7TBocAJOKBxhD/suqsdomMBMwoMKYdv
    R4tKCosDopYGwNFNtryXrOQctNKxIf31kc8UnqGfgRAwjABorBRJCQdBZEBm+93k
    lDl0azEWPFuwzZ+dA12dw0jF1/n7TAIkvaA7joFfNvZ8a2WAfJvoal0/nUqmJCmB
    ntaWEdZP5rOEUvVBn117W8D5B8YHp//TM7T3eT4M4Lp7wUQIiwT7fGgRWCIfIrGd
    GZSEykjB/keyIip2Hh//0Ft0Ot8D+4wYz9YhH/RRmfBDMBhW898B1rEewhc0wmjH
    txMAAwUH/iB1/HLYV9ckHT6i/UDl8lEsw5CMxftnEI6wY2i9MWqTSTiuoNE+PQAA
    kicGwxrxxtvLccdFE4WOOQsh9oyzbOeWWBrtxzloRBzaxC9dx+tQaOzzJAUjaEaV
    wneSg2x62naLiztaQ9U66g81BwSyT8NF7uYjsCyvPsrHwDELNcPdDXQ2q0GKj0I5
    tSgqMOPwohYRRS3hYfoPnYZOshdwYErtMCola0hZn7LXJopRByQyT/x2N6WW0zGY
    YxJemF80JqLrf9RtZVSsTeqT7Sd0+kcgPq3wcoqDXKTEQ+K4yjcE7c3hqhowQU72
    2S6S4JjYQhKvdJykZRuvynQGeuT8H8KISQQYEQIACQUCR3R8AQIbDAAKCRCzh9zp
    IjVNepJjAKCIgdGxVdwuToMZ7z1n2mJEulHr8wCfdimx3iKjNLlAE154wBx3v9Rr
    trI=
    =5yOU
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.121. Tatuya JINMEI `<jinmei@FreeBSD.org>`

    pub   1024D/ABA82228 2002-08-15
          Key fingerprint = BB70 3050 EE39 BE00 48BB  A5F3 5892 F203 ABA8 2228
    uid                  JINMEI Tatuya <jinmei@FreeBSD.org>
    uid                  JINMEI Tatuya <jinmei@jinmei.org>
    uid                  JINMEI Tatuya (the KAME project) <jinmei@isl.rdc.toshiba.co.jp>
    sub   1024g/8B43CF66 2002-08-15

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    mQGiBD1b+Q4RBACetpZD+bWytVmQ3Itmu0ZBfSDF6FVyUQuKS3OZmvsZHxxqq1+u
    erHNhmyte/aCI/YrEUzHPT5LU+9LMpRQD0AwSs3Ot2vUzokSiTu8ZqhoWBcsosKK
    eKM73V7NiTgBGuJ3UxVmKNXzUZhRjGHuekB/ZCCv1pDg9B3HPL8ty+2M6wCgu02T
    +vMZW0VeByn79Lpmm2nu/F0D/3NN4e8ZtLTbUJxJb/hHhLzOr8XahZCqsNF2bj0C
    0u2SzkelDa5iVDWwiOkg7xI154REAALOG1FnLyO4bRPkcQ/EO5tbzXoVn0I6MPWA
    EiwBfVRXzP10MDHhqH0NvT8pyA4ex/BflaeFem9HItRjfojdqEUYVAACceAdLQLG
    MknWA/4hfAAp+dPcU8iHmd7AemuGoOhu5AAKbp2S4vwozJEFiv67wD/+WFXVggUx
    wbQ3X7oNiOLeg9OASDV5qtbGPATHikYagWVjndqmvxO1FiL6BnQBnzAVzOEN3L2K
    Ex566bUw/2R/dr/zhOc3BKxCV50T2Xe4u/cEiYkUbLj6+Y8V2bQhSklOTUVJIFRh
    dHV5YSA8amlubWVpQGppbm1laS5vcmc+iGAEExECACAFAkYDPqYCGyMGCwkIBwMC
    BBUCCAMEFgIDAQIeAQIXgAAKCRBYkvIDq6giKEOZAJ0Z/iUCa6UrrsVmKiP4a9qB
    0jFUCgCgn/3mQxdtXTA6SOlFFsisaxsIXIW0P0pJTk1FSSBUYXR1eWEgKHRoZSBL
    QU1FIHByb2plY3QpIDxqaW5tZWlAaXNsLnJkYy50b3NoaWJhLmNvLmpwPohZBBMR
    AgAZBQI9W/kOBAsHAwIDFQIDAxYCAQIeAQIXgAAKCRBYkvIDq6giKBtcAJ9DRqXt
    h8WEpjgr+sD9OuaYqmV8nACfSdo2Ml+Qfz2Rad9OtZodmELCCi20IkpJTk1FSSBU
    YXR1eWEgPGppbm1laUBGcmVlQlNELm9yZz6IYAQTEQIAIAUCRhkdkgIbIwYLCQgH
    AwIEFQIIAwQWAgMBAh4BAheAAAoJEFiS8gOrqCIo11cAoIJT7N2GMSNXAujnuIvc
    HnBtgk5zAJ4qDo/En3ic8E7h7zc4lT/WQQDhRrkBDQQ9W/kQEAQA1Q07/j0kScL1
    WF9EeXVEyLpTxHZ7owTI+KrRcQ6Vc6KABu1cwhE78ANVfn/CkWVXHyDEnWEIvaz2
    QYwz47sqOxdOg/AmHFVd8xouengw32KNjViVBMsW/l8VzyAVvvGGNuQ+f7zDZ/P9
    v9WwwRcrgL9g+uAnrJJo/wttIBqhSk8AAwUEAIqcIez2zlkwGayFeLqgwuw4PCbd
    kGtXs0l2mQljv8GWuTRJ5D8aD0nlM9MNaSLB7xq6igMriP/NyfIVv0aLJwRH8ilx
    RBYosGvm+nEmUtakhU/77uXcLtipoUGi+y1reFRVSoypJil6lqDTjKtWQlWA7xOG
    QzGMdgoBC1d55jXXiEYEGBECAAYFAj1b+RAACgkQWJLyA6uoIigNBwCgsUFgZMfR
    sEybYW4cWwBNhNTqE9wAnRf9BFkzpn3ZyD+NBkjx2INcitoD
    =ISn8
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.122. Michael Johnson `<ahze@FreeBSD.org>`

    pub  1024D/3C046FD6 2004-10-29 Michael Johnson (FreeBSD key) <ahze@FreeBSD.org>
         Key fingerprint = 363C 6ABA ED24 C23B 5F0C  3AB4 9F8B AA7D 3C04 6FD6
    uid                            Michael Johnson (pgp key) <ahze@ahze.net>
    sub  2048g/FA334AE3 2004-10-29

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    mQGiBEGCy1ARBAD/K2SbL6XiTJ3Rn/weuN/L78ROUltIoRGOkZE4971fLcAbtIsf
    nANWDrpDqbhLgEbZLeCn/EIWOPqrYyKpCGu/IoZ6kx7UPtUH4eooJBarrrQPJVV1
    mfW5ktDry3AoiaUH+jL47AxFCb/bh7Rc11vrhLKdnc74wI+nu2cyk2llkwCgwX78
    nlN2qTrbXxOEAPpJjMontfsEAL+4sS9DOay7NkZq2B2p9AZnSsXQg6/r8Epqznqj
    yPQBm489UcIZy2FiBwaUR7w0fMh5xNX0FE3xFiTd4VUTgUJUSqpYtdfI7IHvJXml
    P/VK14CtgRY2B24wpDPMae32hGBFUwSE9Frb5NiKlxMC4+fR71wZS7MtxTnwJ1v/
    MoVaA/9FyoKCAw3Dqnf5W89dj5W5x35jLKSLobEhhUB2S2LPiwBa5A79euMvgtk0
    gKeh6IslXKOmCO148ws7HSaErBIBVBDpfOsqcQJTcd5lvEbslp+z2oCKeQK3pgQ5
    aEHp8IJ3YgQEHz+YityOF0jCMGNJTFAz18U4RzVxSe55iyT/17QpTWljaGFlbCBK
    b2huc29uIChwZ3Aga2V5KSA8YWh6ZUBhaHplLm5ldD6IWwQTEQIAGwUCQYLLUAYL
    CQgHAwIDFQIDAxYCAQIeAQIXgAAKCRCfi6p9PARv1oW2AKC0xjNgjhL1EHPtFOXH
    kGz24lF4QQCfQxkoJBq0CkLQrYvdA3MLP+IJ6ba0ME1pY2hhZWwgSm9obnNvbiAo
    RnJlZUJTRCBrZXkpIDxhaHplQEZyZWVCU0Qub3JnPoheBBMRAgAeBQJBgtexAhsD
    BgsJCAcDAgMVAgMDFgIBAh4BAheAAAoJEJ+Lqn08BG/W4JwAoJaU6MbisTlg4EMF
    jfE+wNptwO4kAJ46A0W6SiLWbK09gu7YlgfLgdYAmbkCDQRBgstcEAgAvD4PzCsh
    muLtNkPVKSlk2eZbqlIuyapbuIo6rHk8fo7fkfqVOOrnGOrAT5/sflmnG3H0BLvF
    4pkk7tyRtg3hz8qGACCA4SRf48TxRERpIUoW5R2cVBsMBTnpspRaFu8OdBL0dwXs
    LmH797gxDXCGXzSU5xKBSQN4LfoEuLr1qQmPbuPW+Rdi3hrdk1eGsJ03rU5RExzQ
    ck+J7a5VWsyghNCSj1Rzuw+0OVGBijJW51FD9QU+Eqb3seL7E19mWC3FMU34RFwn
    5lbxolY43iPV0jc0MFcV4POHUSZ8ot9xbQpcAClTyXZh21QEIFzYjJe9ZeVWKOqH
    UZS1naB4k98G6wADBggAnRlPolzcjJvqvv5Hfv7oDeDARNxqeKTj+fPXIHR0Gh34
    8HMfmxsFzS6nsrrVc43Q6Iaso5hbdP4UvE0/HzhPALzCTeZGpZF54pffg9Pqb84U
    p+D59I+b88RDBvvfwF0OBg6du08Rdkv9JfG3R+QZembK+IhUa5yxhtfbQmI6Y01r
    phtx4FAKZw4Xp2eb7IBoZWktfcOE99UJcl9hUmBHJXRznQoCHz5OwAKA6a/0b7j7
    B3bPxj+tLlQksdmRbEJKVBa3LQm09PkxfZj8iahvQbp23p5VSJDKzNDrgmsqaCpV
    CFNgMvYLvtxC2xA0uNtaRpdZRLS/11NUj3oJIULv8IhGBBgRAgAGBQJBgstcAAoJ
    EJ+Lqn08BG/WFK0AnjdWWBxG7slwI8u1W+7uRsuh6NXMAJ9r+6Br6mlEtsoWrMel
    IlhG1mVq6A==
    =I7wA
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.123. Trevor Johnson `<trevor@FreeBSD.org>`

    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-----

### D.3.124. Poul-Henning Kamp `<phk@FreeBSD.org>`

    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-----

### D.3.125. Sergey Kandaurov `<pluknet@FreeBSD.org>`

    pub   2048R/10607419 2010-10-04
          Key fingerprint = 020B EC25 7E1F 8BC5 C42C  513B 3F4E 97BA 1060 7419
    uid                  Sergey Kandaurov (freebsd) <pluknet@freebsd.org>
    uid                  Sergey Kandaurov <pluknet@gmail.com>
    sub   2048R/5711F73B 2010-10-04

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    mQENBEyp1pcBCAC1kRi74jv2nnEhN+nPwBiru4aEDeR+REKtg96ZF5kocDbHsDWD
    tmU84sfsPEFCXj12qEPRzucS4VwIjWND6EC0rYPBHXlFDzHnZLBXyIKYcKIU5eHA
    1tA+41J9ZaRX4268ODvLIf9gz0hAh2suQ3v3dbX8dnec7ZHUJEOH9zg1BTFoZ2jj
    Xv9PHI5aPsNA9qMcgQpVWDayw3mp5/guyw0lN1SBIQqm/lC7L7qcYexHxkq2+LQf
    fy3pPQxkAVbk8PHyRkGrJnC2CLf9ixqtXRLNmNiHa72at9Js/xLsYcc5aVX056wh
    9nxghZuRzg3gtLpDV0Ae3BQUU9/ljdKmjkfpABEBAAG0JFNlcmdleSBLYW5kYXVy
    b3YgPHBsdWtuZXRAZ21haWwuY29tPokBOAQTAQIAIgUCTKnWlwIbAwYLCQgHAwIG
    FQgCCQoLBBYCAwECHgECF4AACgkQP06XuhBgdBmo9AgAtPBg2HTHzJN9qrhMgzKL
    g3VbZ2+pBNMTzpGjcMJTiCn6Ch9YmIX9IAknQk5lgQuQAliGEBNIARb3An8JtjPr
    NbpHyRLXwjLL1aIUnvUmVjJfCKy3W3GFUiK9e85kUH/wFBjX+G+YPHho1kGvb5N9
    yAG9SbzBl8sfYyR9sblDwMsST1SNRxOF/LClKcFD2VrgTvMcQ6+jS74F/cQEIqxw
    vbd1pUEdd13EfezwSg0dO7ZPmd146wLXIJzJ9cvijOqNYZRsuEYJemCT8CZu/0B4
    /PQBozdKZWOWkGctxw1WUT2yQaL/3rIby8hPzp9d7BhB6Sqv4I9kpkx+iRrv7xrf
    /7QwU2VyZ2V5IEthbmRhdXJvdiAoZnJlZWJzZCkgPHBsdWtuZXRAZnJlZWJzZC5v
    cmc+iQE4BBMBAgAiBQJMqeGtAhsDBgsJCAcDAgYVCAIJCgsEFgIDAQIeAQIXgAAK
    CRA/Tpe6EGB0GVy1B/9rz6f/CMS2dnq2dBudDPIX9Boz7FLf21QG3deapV02Rjv8
    WuSWO/dhanDHVvFRNe8DmxfNgwvNr+ODLc3nTh3PGUVJdQ6VIJnMuIOLroc/w+TI
    CgeEqe6a3sC0GJuJU+paDmh4rOciyfAvzwhDc6qBiwOIjcwjOLOWSjBlJT8CS1jk
    TpOt3akFUTG9vD/svjSWQdreTL9DicwmefNS2+oWBuLXN5dqQB9FDl83+G7IenX7
    it5E9/tvcVVi7OqdUwGeV2eDoQFFrEzzII5KLwt3CwzpSEgCmu81t8hJHbbuTbqK
    ZcOx3d7Lq2h/td6WDkHXbF0vNSUboSRX/uN0m2A+uQENBEyp1pcBCADpKKpK8I/7
    GlsNAntUUFZqwXniLdRxJUmGLh0ZNKnagGYjz1v5kunomAy4fyIPTqHKUWP8c9E1
    pV6r5CD2JupM6lHv7INCcSaYNVBOTKTEe2i6L8GHzhCLGWQLU9JRHuRPNesDwo2b
    0zpuXtsS1DEg3cpp5IVCCFNV9HW6bN93jL1+HDI64aisiRdAXKiol+w6t5Ev70YM
    VvQK/YF3aBWw1HETJkPwoondfZ4XMpMlkbk5MjJOS76T65uGQYAuhcd6PN/J/mtH
    KnS2waj7q1dvDBeXaTAwKm/Oeew3s8ggcz3JDQ/EcB48xfi1k4vQWc3j6UteYrqU
    PqIKoCV/bT7RABEBAAGJAR8EGAECAAkFAkyp1pcCGwwACgkQP06XuhBgdBnTzQf+
    PFVidYjiACW+9CsL/zoA1QqPm2IhTBDp9S6GrfSruEFNfbthEOuSuAX7VqZPT2GG
    S1aRaY9LduOGrzdtvRfLvnSsz31wjwG2Rkb6OUbX/jzPaL/KYikt++VCdR9T/S4W
    B1QeLzybuQWQQMnDyb+kMpxmF7lHkhJgQhzElhEuZlkYhiALLS2AkXOQi3tmBe7r
    sF5/J4jcjI4O45jx/Mdhdx4I4Fn5pN4TXQjBC0kFOaldy7l6WVk/yZzKNJjBoASv
    JMyuua8AiGc8fvez9PeSIqkrNJcrCcDaLxpmXzMjxbwKgulfBk4NY5YXKC9/Vi1D
    ZHTrB5rRodo5ARlH/LF9IQ==
    =RXWt
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.126. Coleman Kane `<cokane@FreeBSD.org>`

    pub   1024D/C5DAB797 2007-07-22
          Key fingerprint = FC09 F326 4318 E714 DE45  6CB0 70C4 B141 C5DA B797
    uid                  Coleman Kane (Personal PGP Key) <cokane@cokane.org>
    uid                  Coleman Kane (Personal PGP Key) <cokane@FreeBSD.org>
    sub   2048g/5C680129 2007-07-22

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    mQGiBEaj6Z4RBADnHGSN+HpgYx4kwj2c//kuW91OOYhYlstDCeVTlNc/7YpbgF3T
    KQKBWHu7uqygI7IeboCuCltP7D+PcXTVdBlh6X4aiwV0XSBCAF4ZngCb56OsSBYd
    MPjygHV3TH2TKe4PGqH+MZ3umogB3TZVMLpz4S0WyxXjUxLm5tYn7rOCCwCghTRd
    00JiGg0u59cT1/GiD2KYE40D/03DKCm4IvMRFsxc3IGhXQc3rQJVhBBAxnnzBA+s
    R3i0xKzGqBslEUG+AxUMFjohjQgTWjFRa1PTFgHih95Z1lR0/oO5teyDfxjeAPA5
    2hUoB3PF5NUFeMWXPCoSyb48uswJ5CCeX/IA5lVO891+jQh1LHIFQDa/rB6zeYzQ
    HaSXBAC3RheXdRaEFGt2JkNqAZxEQVtiWe5tebdm2oh1RaIfMQ+U1p4X9EBQQjGq
    6JeeUsO56HXECEgCyk46fgo2xNwIXqYi42sQlIGn8JDBwOLyjD4iJpz2uxC2NO9J
    GKUOMdsdydUpfdkF7tWu1rGXXmzGcUUkHXgKsF3jf739FyGAubQzQ29sZW1hbiBL
    YW5lIChQZXJzb25hbCBQR1AgS2V5KSA8Y29rYW5lQGNva2FuZS5vcmc+iGMEExEC
    ACMCGyMGCwkIBwMCBBUCCAMEFgIDAQIeAQIXgAUCRqPskwIZAQAKCRBwxLFBxdq3
    l7aXAJ9829PUx9ST75k3L6/nfkejftuUFwCeN5vqGr5uZlkCQr+Bx45HbcyFQp+0
    NENvbGVtYW4gS2FuZSAoUGVyc29uYWwgUEdQIEtleSkgPGNva2FuZUBGcmVlQlNE
    Lm9yZz6IYAQTEQIAIAUCRqPstQIbIwYLCQgHAwIEFQIIAwQWAgMBAh4BAheAAAoJ
    EHDEsUHF2reXPTgAn2uPDHMfAoaLp+Eg2FfIuMlVNgfEAJ9xBcFz8kLTrAbKnthL
    S0yBqAUrv7kCDQRGo+meEAgA22OriKy6l+mvGIqbwk67Yz2zcVtHx8Jq8uuyt4Ue
    JfuK9H8rDOz783oF3++ywf07xqtl70rH+KHSNfVyXUetVXfBUZfo5bTwxokQWE54
    eJukJyZeDYXpaJ8ro083lkHsqE9vtTSwJfU4rqRpu67nC80WSkke0t/35sHKqwJI
    WXlHniGD3dJt+ZTy6hxzcx3WjlNDNUEq6iSl28XNzWdvpKIrah/ksO5O2akmaZcB
    SXtHthWdX58hOCHBhS1QQSKvThL3VlFtsi7EhW4/rNekDomypLxHGErprjMGV3GF
    509kI2vn7NoA1G4sxrESZK9sNIC+KmdWO0MQ4NYhB0NAnwADBQf/XFiDa83fYJUN
    LBqGGgeOPE+pyBS6gVrw6Kz62nFFgfW9hHtYgItzS4XrDHCc8TCSG4zOBqBY4Qvh
    HgJ1Fa8rppbMUMI32egtfY0/cu8NVWtHlYp9aQp5tM/0zPu5RaRpQxafs9e5j4gf
    fd6mY3ro3vJjZ6UczORKFBHxLDg/F6UCeOZsv8Ii72YDqzZEFdBUMJH7ArHFKndd
    ZxkN7+iGXZorHnTJj8mXSDYmvyaI+Gfn/dea9RDp9h75257cHhnbaDd4ZvlUK7JQ
    8HFb6jM0LsadfDuSSMLUYFozqeG1MVCJgn/Rv0i4FMlI0QK/6r7njvvfR6p4mLl5
    n9r0NOG11YhJBBgRAgAJBQJGo+meAhsMAAoJEHDEsUHF2reXJO0AnitUss1PV58K
    ++igcU+jU/EAsjbNAJkBlxLkkDzmxfWATLWri1+qzA5WDA==
    =L430
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.127. Josef Karthauser `<joe@FreeBSD.org>`

    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-----

### D.3.128. Vinod Kashyap `<vkashyap@FreeBSD.org>`

    pub  1024R/04FCCDD3 2004-02-19 Vinod Kashyap (gnupg key) <vkashyap@freebsd.org>
         Key fingerprint = 9B83 0B55 604F E491 B7D2  759D DF92 DAA0 04FC CDD3

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    mIsEQDQwdAEEANxnThVC8GNO9VXTjWFhJh7XgMLHf9jDd0B1804WUqc3c76r8y/k
    AXZ8e3kNH1rpa+VJ0rYQnurQg5BeFQny8TzU6PC9QSdqNKSCvhai6B+w3t15sKJK
    nGZ7DwyoyuShMFNMVF250KS7dEZnYy8yrtopCIWJAWzuzuQQtmUYk4B5AAYptDBW
    aW5vZCBLYXNoeWFwIChnbnVwZyBrZXkpIDx2a2FzaHlhcEBmcmVlYnNkLm9yZz6I
    tAQTAQIAHgUCQDQwdAIbAwYLCQgHAwIDFQIDAxYCAQIeAQIXgAAKCRDfktqgBPzN
    031cA/9ZuwCRbYhTHWzOhQuT8dm7Bby0wEq+KzkULXd/ExgxCu/54t9M7csD378X
    /Fg2erLP2J8cYIcVXmdtIJO8AwZRw5GgmVP+h1sEY+KT8jiJNlX2hB/9qCmng3FY
    ItLBY2t7XVmTPMw8BLANE7PJ1LKT/OoUHEk0OjK53KKGNU2oUA==
    =VzLE
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.129. Kris Kennaway `<kris@FreeBSD.org>`

    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-----

### D.3.130. Giorgos Keramidas `<keramida@FreeBSD.org>`

    pub   1024D/318603B6 2001-09-21
          Key fingerprint = C1EB 0653 DB8B A557 3829  00F9 D60F 941A 3186 03B6
    uid                  Giorgos Keramidas <keramida@FreeBSD.org>
    uid                  Giorgos Keramidas <keramida@ceid.upatras.gr>
    uid                  Giorgos Keramidas <keramida@hellug.gr>
    uid                  Giorgos Keramidas <keramida@linux.gr>
    uid                  Giorgos Keramidas <gkeramidas@gmail.com>
    sub   1024g/50FDBAD1 2001-09-21

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    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
    YrCvIlM7SxdCu93NzqQB7jenia6ebD06AOarTu5wmWQfuG+8ruwyxYDagT08iVNn
    VJ6GLdZyuaX52XmTemh/8GR3yviUUEwI7xUSwUOC6jRRsGZk4I927L/QyGd3An/3
    jcWrP4f6IhvACWxliz2zJUiKO/k6zCedc64P7WaFVX2QkJnPVUHi4FzITcitjeHc
    05y8Iztv/aKwmc76WjdeUsdcfAoX5ZHwQnb1I4V/D2lWUSRQ/pvwP+sxthcDKIEz
    CyDq6C1yYoudHvXefD/5BQaTMsscCZpdwEk72+4su1dL5AtXOfZvUQNbFkLxcJXT
    nqQH0cvyzN9lyjaSNbnFrSW97eO3DbmBCN+RZzeJLYv7+GdnKv8u3XVri3gsPxbB
    T3EVxF2VQVEyQQa3U1HGPQTZ3qZI41j3l0XdrL2kr7L6VEZ/DIrkMldDjUZHMCSI
    RgQQEQIABgUCSY3E7AAKCRD9YxGtr70E+eK6AJ4uig/wIhnRxtnwmiLMJeEjUzIP
    5gCfS3ZnoVfMjZgF2D75sbl/f3xowoyIRgQQEQIABgUCSce/MQAKCRAnH/bXGvzH
    05YwAKCRwVMi/1kV/nz0YYFHuhD/+E+Z8ACgmnHbaCTXTaW2Ldm8btc7mHl/T3KI
    RgQQEQIABgUCSgc+swAKCRA1vLp3h/iomKzgAJsEPkVzsI8l51sbptK0eJJUEU4P
    IgCfSGrV0biCeEg2LYvkY8r+qISrp8eIRgQSEQgABgUCShJ0sgAKCRBKChvI5PT/
    5qKNAJ9v7FrYn9H4JSkDSkodD5e58m8o7QCfYIYTc7ZtJezQVDfs5trMaZJ9hSG0
    KEdpb3Jnb3MgS2VyYW1pZGFzIDxna2VyYW1pZGFzQGdtYWlsLmNvbT6IYgQTEQgA
    IgUCTCrZPAIbAwYLCQgHAwIGFQgCCQoLBBYCAwECHgECF4AACgkQ1g+UGjGGA7aY
    hgCgodxcHXJakfN/aTje5ptVDfnp9r4AoI8VuOfyfOa3oNG7l5b02xyBlB5atCJH
    aW9yZ29zIEtlcmFtaWRhcyA8Y2hhcm9uQGxhYnMuZ3I+iHgEMBEIADgFAkwq31Yx
    HSBJIG5vIGxvbmdlciBoYXZlIGNvbnRyb2wgb2YgdGhpcyBlbWFpbCBhZGRyZXNz
    LgAKCRDWD5QaMYYDtsu7AKCQ4dJNvHzvIY2N3TZ9hQgkdHCTcQCglV+YmYD5tfhK
    fxz6xA5tWYKsazuIRgQQEQIABgUCO6yjtAAKCRBh4yFaDntT0WGcAJwMjYa2mHPt
    EJnBP6+q5ibZKotr+QCdGcFV/PUvU+x6GFu51qYyjeWIucGIRgQQEQIABgUCR+T5
    GwAKCRDuYs+nBbNfMveNAJ9ky78WZ1m2J6k8kAaR0WH8xyHp/ACfaElBolLsm9Gj
    YVJil7G6Hq3yyuOIRgQQEQIABgUCR+T5kgAKCRAq3iExvmZmv6UpAJwM2zEmjcqD
    p8aXCCDJ/1/2oT7IjQCfaMLk0j5ORVhqctDvAY+wwZEvzOKIRgQQEQIABgUCR+T5
    kgAKCRAq3iExvmZmv/OpAKCYm2oSekQXnZqajQU1RfZKM7CsrQCgieh8jdbNAjRP
    o1UyuApv0ZPoZtWIRgQQEQIABgUCR+Uv+gAKCRAEoQQzidLT0DkXAKCcjUk/vXuz
    jTaCl+qbcWFUMhnsFQCdFXUhl/DaE/12iREGM7Gez8ksk8CIRgQQEQIABgUCR+WJ
    hgAKCRAEiI4tF8pLCg+bAJ9hlq2p/iT9cF49pLIFr0BdsRgrFQCfSpunlpTurbIY
    f7QjOY/2VavPdFKIRgQQEQIABgUCR+WmiAAKCRCZZAgVZDELDQUBAJsEwvc/iP8R
    dmQsKJVdAd7HmsCebgCdFILI2RcyU+cyaqSJnQtGpTrWs0mIRgQQEQIABgUCR+Wm
    iAAKCRCZZAgVZDELDcPbAJ9B86zJfqXItUmFsdbjnTkfv0Du/ACdEWm3KD6P8BLH
    YbmSrODft51RJQqIRgQQEQIABgUCR+YdBwAKCRBn8zEabg+0lFvwAJ9O82HTpKKG
    vFLoi4YgLNxnB1DikwCeLkyPVIOaGE0DwDLD0mfxMu+a3eGIRgQQEQIABgUCR+Yd
    BwAKCRBn8zEabg+0lMLfAJ0bVOPKNtXRo1DiwlOt7fzRU7jUHgCdGTk8w4f593R2
    sy/AuP2OcyC5UjCIRgQQEQIABgUCR+ZKlAAKCRCO4Jst5hzfnyoNAKCQpB9PRwaU
    VUJ135MP11iFJDJ9IgCfXqKfF9jLE3yMjZgIcEpL+smlcWeIRgQQEQIABgUCR+Zf
    8QAKCRC+0FYoWVDL6s5GAJ0Qa5e084kFMk/x9yi3ZJJkYGYoSQCgg/osMIqE0iap
    kgpMFHPDEC9/s0aIRgQQEQIABgUCSD+7iAAKCRC34+da/nDnSv66AJ9SsNj8FsHC
    PEf1/nj+/XfBvSS14QCgvrpmjWsneMDPc5KS11G5536l4/SIRgQQEQIABgUCSY3E
    7AAKCRD9YxGtr70E+RNrAJ0aVYtYjGIUv1jvsI0e5ZSSbf9i6wCfSx63gTBilUjw
    ytYl6pksrimIdLmIRgQQEQIABgUCSce/MQAKCRAnH/bXGvzH05pUAJ9tJ7FyfhOW
    sF3A7ewo00h3ofJfjwCdFH30b9A+0IAClS/4EZVfNDVsMniIRgQQEQIABgUCSgc+
    swAKCRA1vLp3h/iomBj/AJ4l3/jneMZu+goTdI7hKe8rsDwotwCgjto74WWmTNqu
    cNhr+kDMDr9ZBjmIRgQSEQgABgUCShJ0sgAKCRBKChvI5PT/5gmDAJ0W4SzU8pEN
    JGqvn45YusEpJIMBQACfd6t+Th+2EBgQ+oZh2Bus0N0CTl6IRgQTEQIABgUCR+VE
    mQAKCRBYgr49723CGoOzAKCg2M0IsBFkiCFqZQtjEOh6THH3iACg4n7nvzcGAVcT
    hqfao561aZ+b5e6IRgQTEQIABgUCR+VEmQAKCRBYgr49723CGv79AJ9DqepWswek
    rpFOW68PVA+PD7kAmQCglDC/OFB9FMFaNzblUgw+BHUHQQSIVwQTEQIAFwUCO6qZ
    /AULBwoDBAMVAwIDFgIBAheAAAoJENYPlBoxhgO2ltQAn37K+r+lNFAES8vwWD0d
    ANjiYkilAKCDaK9qiWj1wy+ccOkx4lp8Dk2nBohfBBMRAgAXBQI7qpn8BQsHCgME
    AxUDAgMWAgECF4AAEgkQ1g+UGjGGA7YHZUdQRwABAZbUAJ9+yvq/pTRQBEvL8Fg9
    HQDY4mJIpQCgg2ivaolo9cMvnHDpMeJafA5NpwaIZgQTEQIAHgIXgAUCSgGFPwUL
    CQgHAwUVCgkICwUWAgMBAAIeAQASB2VHUEcAAQEJENYPlBoxhgO29LEAn1Jthpzv
    3o36AS44s7WZM6/94PjRAJwOFfTn1DgYEe2sjxgTx/d2XIGq0IkAlQMFEDwZ4kGY
    5EXs8/cRtQEBz6MD/0mjU7j2oD6tnDB2nzULCCoTqPojv9FEnZucyzNO/YfIsjJp
    1GyqSpbftIf3QByvWvPt85+NHExomMy430uwZ5PJDsrc18/PpK6fFs0S0k8S4EDP
    D1uGW26Am1aCbhggGHJcVlL3vcoss6IJbjkC3naBj+UsJrfHJzxONgicvPTQiQIc
    BBMBAgAGBQJIa4MKAAoJEN1ejAYcAAcD1V0P/Rfj5mTmAx9gf2VnH4JPYpaKyv18
    o/vFvq68yMI8yv+Ogg8dRXSGTgpSRSOUVva2MoXzL+3O18VKn9AYhByEir1A/cKb
    Ol+jKQWgUlqxCmJ4svl+QJvvIX8qBTQPVMgXxKt/OU8pt6Jynm37NMxbrueXjBDp
    asEe1Mo12VkXjeBW/ImUucKDM9UgXSqSHUw6DArpOwfq/pRazKPuj8cAuWdFhOck
    wJ24T/+smX78I0L2ELBYavbtpHtecW1cvvbH40iz26Zv5Tc5Rpo8i+uOfD6q0EIU
    6rUzcvYqg+dxTEER2Q2UxoOb9fHgtg86qw+jh8lops7wKBBvZBW6nF0KOOl8uxq6
    Xk/f0ilBJ1UbitZ1IQN7ztMKhodkXoDpyklfqN7WBm7A0YksLrxwRtEutUdGrv0p
    3gqGfcMzyOAM3UEA23ulOtsFZ1JZcp5li4nz+xoHlWZnBAmm4+MdpKuOVn/S7wvM
    HMB/Q5ht+qjkPiBStdBfu0R90JbKpMWqHDwibUZ6+jRSXYepx4j7OnbRkXRpDCON
    Y/aQgUWmbMSYFawpD5J+jS92lIgA+ziSxBqEXq2xIpJv4V1BP48rPOst8bq0Afqa
    qyt2JI5MkkgtEG6ej+yJrNW7G3phYlaOdey93+oIVQZ1kg5a7yCMx514elb+B3O4
    iNhUqyOGBZFu0/L4uQENBDuqmigQBACgw6sMUjrDjUWkajVJpp7IXzsi2Q5kk05m
    jTmw0YrXGRvQD783Tjv5Ceg2rXAqnUwwknqFXk3sF+haPKrB1HQC7b4QZvIwLdUL
    dO2rV8nnG9Dsv93nIF49ivYpyLt/y88fvKuyqbXYH0zIlrytNHMiIdPnoxmiyNpc
    kSf+tuo4owADBgP/eIIdo+XS2KFCEMqkssYyk28WuGshSd/8BCA3cTPZVyFIm5u5
    OazjJs2xLeOvVy93iLKhgiqWfuJEUxD8FB2BSGQog4VbQT7A1FFQOhvbx53+vPhx
    HgcQyY5/e6ILDt6Cux2i7eeRXyCYjjbD0fmn7+qnEFElfXTER4s6z8tUIpKITgQY
    EQIABgUCO6qaKAASCRDWD5QaMYYDtgdlR1BHAAEBSdAAoJTXPDIJf2sqyJhE5E+M
    rkbWaRVzAJ4oA62xKNbHfUJWJOrlny+YSCPRpg==
    =PK2k
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.131. Max Khon `<fjoe@FreeBSD.org>`

    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-----

### D.3.132. Manolis Kiagias `<manolis@FreeBSD.org>`

    pub   1024D/6E0FB494 2006-08-22
          Key fingerprint = F820 5AAF 7112 2CDD 23D8  3BDF 67F3 311A 6E0F B494
    uid                  Manolis Kiagias <manolis@FreeBSD.org>
    uid                  Manolis Kiagias <sonicy@otenet.gr>
    uid                  Manolis Kiagias (A.K.A. sonic, sonicy, sonic2000gr) <sonic@diktia.dyndns.org>
    sub   2048g/EB94B411 2006-08-22

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    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
    =3/vj
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.133. Jung-uk Kim `<jkim@FreeBSD.org>`

    pub   1024D/BF6A9D53 2004-04-07
          Key fingerprint = F841 0339 93EF D27D 32AD  3261 9A56 B2D5 BF6A 9D53
    uid                  Jung-uk Kim <jkim@FreeBSD.org>
    uid                  Jung-uk Kim <jkim@niksun.com>
    sub   4096g/B01CA5A0 2004-04-07

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    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
    E5Fbf9wkC8rs
    =HTXi
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.134. Zack Kirsch `<zack@FreeBSD.org>`

    pub  1024D/1A725562 2010-11-05 Zack Kirsch <zack@freebsd.org>
         Key fingerprint = A8CC AA5E FB47 A386 E757  A2B8 BDD2 0684 1A72 5562
    sub  1024g/6BFE2C06 2010-11-05

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    mQGiBEzUTbERBACySFcOGxN2msGiMvx9yhyQuklGdDgYKAzm/TNlImVQF6q3qhcb
    CJ6FaE99kFG5EmQXT8uCRSzb3/dIvNrhjTxrmT63kjs67mKnyHky3wP0NHCNSmZs
    b5Ky3h/SPOpb06S4zmhI7MGEm/xwBkQqc2YqfYTzRW83VNS9e/sTNzzwBwCguOPz
    Hr++4PFj0nr8I6r5HKMrfzcD/i5B4dhi25M/KlQsM2dh3r/z8KZ/79gmHKBJMrHg
    zI3sczQvXNo7jgaJwqgSInlfSoKKFyBw6Oqr0kP31E0K6ZKdrbpH982BSx5qtGe2
    xnDJNHrSOtgFqg3EW9DaYImdUmUOeW31evMwhjCYGSZF6iNVh6sahfZNFwmEgUXU
    +zBJA/0YeIPcQNdOapJ8H/ATRH7SLyMME+GIOx+85VCD2VBOq+WCSN8U7gJ/FFTn
    0NCVAVtPt/IAOMCZTob2as0C4w3Ho3YZTnl0jl1taYCRQnENQoVoT7cCqN4auypU
    0H2EvGPGUie+iZ4r+G2LLdrqPMiR5UTRcZuPk9O3VWXPpeJuoLQeWmFjayBLaXJz
    Y2ggPHphY2tAZnJlZWJzZC5vcmc+iF4EExECAB4FAkzUTbECGwMGCwkIBwMCAxUC
    AwMWAgECHgECF4AACgkQvdIGhBpyVWKvcwCfXGP1APXbQMWyacrwv4vfCjdTUpYA
    njYDgW1ok7AiabZjdT6APpGeqDKyuQENBEzUTbIQBACYKMjEfC82aby7YMRmNqCR
    IDU43ipbpRsUSz+TdHe61OYBL3eOFM5N4gp7tTmLisoW7AzFdiDgM9CUv9V/+ucO
    cM+Kmloqe65XWyCQchCISe5+8mMqFG617aDvQihHjho473IxlersxGS76WG7RDUn
    EP7gQeU/MzBcKi5Wk1ocOwADBQP/ZAgj3Oub0ntbBealsqEydjhysMMCOjOWJ75h
    lmBfH++UXiN3rFdzHzGlwLhTLY6I992YZM5fYPw/ta3w5Y2Cm8c3QqG+RcoyK+dH
    c9ce80Ddq1DV4F7RWNhjl3ej9kOneb0XhPdZ3FVDlc0P/88+5nL4bRLMuzp7g5rI
    ONhG5W+ISQQYEQIACQUCTNRNsgIbDAAKCRC90gaEGnJVYhriAJ0Y6dyrFOU4sLuR
    +KLw5h/8RgCNPwCfVayO/zLdURlB+BOpbmyxn6WnCLg=
    =sdsn
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.135. Andreas Klemm `<andreas@FreeBSD.org>`

    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-----

### D.3.136. Johann Kois `<jkois@FreeBSD.org>`

    pub  1024D/DD61C2D8 2004-06-27 Johann Kois <J.Kois@web.de>
         Key fingerprint = 8B70 03DB 3C45 E71D 0ED4  4825 FEB0 EBEF DD61 C2D8
    uid                            Johann Kois <jkois@freebsd.org>
    sub  1024g/568307CB 2004-06-27

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    mQGiBEDetekRBAD7mBgP351FCNnqp360OUy+ZKCr2IxUU/Tyffqyrrgiol16kTEO
    bpImo5cgZcw+y3wTSgGxwbb+UmUcJhLDO0olDNOCOYdBzzKfTyZwLzgVaC/XZ2dE
    LQa+3FnIp0btyU9vermk7GqWJqvVUTnMSjinqWS0MfgrcuEXjXTQ1b3b6wCgutKz
    BhEasg38JthFvIownezYwHcEALNJsxEnsfEMm+DQXPUvWTiScu2QR2v0BVVzfg1w
    DMaEnSjw44NF+cyyKXfqx3hYkboRw66GMvcbfl7AYh7ThfDjof5MHfBbe6aeJwd+
    pyVS9BRiXMDbwnuPm31K1zsyCr6XeQquM204Jb1fdMiFEi22A2VxQxAY4cjenvgx
    2UIFBACBHtPfsK8QyAXlNtTQqvMEQe01pXm3u90pL8DBoWsWR9vDIlnJLaMgi2jG
    xBNQp9UP9ZxS+BiAoEkUficsoPvoMkzQBSnfcDJfnyCXranBuuhsF4mzvEO8uLJw
    4NwT+7jij0udeWe3Ymd4ppWHEADhx7PLdYdq4Kczuu0XcGqHarQbSm9oYW5uIEtv
    aXMgPEouS29pc0B3ZWIuZGU+iGEEExECACECGwMGCwkIBwMCAxUCAwMWAgECHgEC
    F4AFAkGV02gCGQEACgkQ/rDr791hwtgJbwCfeBGfFaR0IIUhvfVy7GYFQUjHuYQA
    nR0Vl/9xS9SbGpk9nqDCHooXgrCPtB9Kb2hhbm4gS29pcyA8amtvaXNAZnJlZWJz
    ZC5vcmc+iF4EExECAB4FAkGTw+cCGwMGCwkIBwMCAxUCAwMWAgECHgECF4AACgkQ
    /rDr791hwtg4zgCeNkjhClKqeDjTWvoSuh805WDuXnUAoKFid8813Hg7HATB4UwD
    3KvmHBIFuQENBEDetekQBADtrxEvnshp47wNGP33Vwas4RtDVp40lC51yVFj9Ior
    zXhq9SD20gz8qPCwG3a4Srhbh3rgjPvzzqcjSE/axk5+LwJ2KHySlpfwu4wTtddf
    o6JzlJYWtQE+bcp65vnd6L5DGJsm1KmRTOZOL6wWxTXft4lgxfg1MEbzOKcL5YnU
    BwADBQP9FCPfDZYwAsZya5h3aAd9yg6dvDsObs1D1MMIiygr54/cmGUiPcI6zaga
    hTfDiDGanlBk1idFVKh0A6ZEza55NA45lJ02W9amWvrjG+PB8wTX4IWRAmDN4ql4
    QuahtHsciUVzw4BtHhPtM1+DpT+C6aPwclpmxX2Az8tHDjHKdq+ISQQYEQIACQUC
    QN616QIbDAAKCRD+sOvv3WHC2ICsAJ0fvZ0rq70bwTIWfgYq3N3fSZfR6wCfdrgZ
    /8nwcdMpTA2LAo1YbndxFW8=
    =VCND
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.137. Sergei Kolobov `<sergei@FreeBSD.org>`

    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-----

### D.3.138. Maxim Konovalov `<maxim@FreeBSD.org>`

    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-----

### D.3.139. Taras Korenko `<taras@FreeBSD.org>`

    pub   1024D/8ACCC68B 2010-03-30
          Key fingerprint = 5128 2A8B 9BC1 A664 21E0  1E61 D838 54D3 8ACC C68B
    uid                  Taras Korenko <taras@freebsd.org>
    uid                  Taras Korenko <ds@ukrhub.net>
    uid                  Taras Korenko <tarasishche@gmail.com>
    sub   2048g/8D7CC0FA 2010-03-30 [expires: 2015-03-29]

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    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
    EsKTn7/B
    =meSB
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.140. Joseph Koshy `<jkoshy@FreeBSD.org>`

    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-----

### D.3.141. Wojciech A. Koszek `<wkoszek@FreeBSD.org>`

    pub   1024D/C9F25145 2006-02-15
          Key fingerprint = 6E56 C571 9D33 D23E 9A61  8E50 623C AD62 C9F2 5145
    uid                  Wojciech A. Koszek <dunstan@FreeBSD.czest.pl>
    uid                  Wojciech A. Koszek <wkoszek@FreeBSD.org>
    sub   4096g/3BBD20A5 2006-02-15

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    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
    =sg8v
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.142. Steven Kreuzer `<skreuzer@FreeBSD.org>`

    pub   1024D/E0D6F907 2009-03-16 [expires: 2011-03-16]
          Key fingerprint = 8D8F 14D6 ED9F 6BD0 7756  7A46 66BA B4B6 E0D6 F907
    uid                  Steven Kreuzer <skreuzer@freebsd.org>
    uid                  Steven Kreuzer <skreuzer@exit2shell.com>
    sub   4096g/76940A06 2009-03-16 [expires: 2011-03-16]

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    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
    97ttC8vSig==
    =cR2i
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.143. Gábor Kövesdán `<gabor@FreeBSD.org>`

    pub   1024D/2373A6B1 2006-12-05
          Key fingerprint = A42A 10D6 834B BEC0 26F0  29B1 902D D04F 2373 A6B1
    uid                  Gabor Kovesdan <gabor@FreeBSD.org>
    sub   2048g/92B0A104 2006-12-05

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    mQGiBEV1zhcRBAC4T9pbx3J+/0qY5k3IVGMGpI31SZHwtO0ijDBA3V0mIOUpty/E
    2AnAQ/7GZEvWtMd3pE5xwoicgSQbPcnsHG9kqG43vvr2DdByY9lavqoXPOXKeQnr
    U/Z5eYvOgT5Da6USxXI5obFdNsCwwKYt7Sbvfj6L+FVWSS8HW54f9xuqLwCgwCRv
    TxVBZJ4xERWsk3nJH4B/GKkD/20ddbTHSTBuBpulmoOUNBcrnIEYPRCDvF/e07yz
    sp3KJeMegdPEwBoy6bF9R8HkVgSEx/jdMSZNeMeAOpAKDlTUyTNJRgzVwqu+SgOj
    GT8IzhLNFaZ7wiKoA0yRhGb77C3IPzjSbcOI9A3vn9DkStWfDtjTIOxh7FxF9+H5
    c5z9A/9++LOF8L9VPHUNi4h/L/jE6CWSZgeTUIMkSwALrochNi9xIr+kS5pPxUPZ
    MHVdG0+gK3wNLD6KGpBnHB65wWbb85fukY9y4YgEv0+TjpPwkbwlAbKtt7cf7RA1
    mYtYStbOedPBAE8Y89cAcmQ4a4ViJFWfSTLJorAAy73pVns7ibQiR2Fib3IgS292
    ZXNkYW4gPGdhYm9yQEZyZWVCU0Qub3JnPohgBBMRAgAgBQJFdc4XAhsDBgsJCAcD
    AgQVAggDBBYCAwECHgECF4AACgkQkC3QTyNzprFGOACfYLDfWSz4Ke3HN+suyrD4
    iwnZpycAni9084/VZ5iAadc6I1o81cGFX9GtuQINBEV1ziAQCADQBlmiWzgTaAem
    j1rFzVhEe3bSRg4qmcyiUyIbVWj8Ecc71c33fSHdgjHnAqKGjxKIkf7qoSziLWL7
    b2dxUiI/M7OUTi2Tdy3nJa/GJ+PK3CK4oM/oSMGOSUz7d3ZaKwZX4d/GmpCZ6U6w
    XFPymLOQtlDRTyz31QPCQXnI2CD2yswSdrHID/LuBDx+24vA2NyGy7WdUmSSchnE
    aw0fYTiHbjqI4xsTS6wkRJ4QRcHg8vyXc9Xd0/TKtaFBURWfHDC9RWNjisrhc6q1
    89o0QHBW+UqcYdWPUgTO38hr7k8U8LNJT0a7axsgwiwLr1oSS8z/RjdiFwuArM5M
    PQgkvMYLAAMFCACIMIO2gjtPL64mLy6If2TPBTqb+g+HaWWk4lxsUN3A7A5y9TXk
    w3Hx2jcig6P95jIKyiTJkV5ZqcUuwtEWK/nK6M4o8x7QQwLAfH6x/wfsb9Gays+K
    wT448Xhi05cOnIuKyFXXzaNRgGe/G+fxpxqEjmgP5y2NjB+KG/h4/Am25h9Ylm+P
    EYq8QMxwYS+3TpfCMmgnqTymegNZpbQ32nJYKnxn9j58sLqgp7BjekgAYi79z+Zx
    0HoeGPiehGLdymoj5aaiTCZfTB5CRMyn+dbvXUpl8hdAEG72q5D7JH8yicOANHUd
    NdMIcDxTJcHnDQeXdSrVWGTQmt4iuwfweKlmiEkEGBECAAkFAkV1ziACGwwACgkQ
    kC3QTyNzprFoGQCfZdGMd7cQFoCW1DBGMnNJ9AO5WmQAoIM4BtfriXvx3Tov88ES
    DHOhFMi+
    =jLzS
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.144. Ana Kukec `<anchie@FreeBSD.org>`

    pub   2048R/510D23BB 2010-04-18
          Key fingerprint = 0A9B 0ABB 0E1C B5A4 3408  398F 778A C3B4 510D 23BB
    uid                  Ana Kukec <anchie@FreeBSD.org>
    sub   2048R/699E4DDA 2010-04-18

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    mQENBEvLStoBCACxnU/0ujcU5D0Ph4eGJhRfFSxoH/CBIH1AnaQyrsmzMCfdFav+
    IS9qdAHeNN1GugOKwvbP1TQQWQjGNiPMaUzWVE55PrLfQhTq3q2t6Q/9MUIXEKkX
    p3bruBe7eruQb4sN9Q113lLTZBTs8GsWI+iAqaeuT2eKhYuJlqI37Zp/36k87cTE
    sQg37HtSfkjLOCEbxH9q6JGCi0rwa4DqlPfwoPEyyMuTcwcRm4QhNKUvJ9jRFze9
    YYMXQIgBMX5L0j94mnq52HkXstv2rK0xURKANtXcqb0ciQUoXTRN0K0cYHPbNHWS
    PqZMhpTYd9d+SKYHuOGUJbsLhtaGzBLK9SQ3ABEBAAG0HkFuYSBLdWtlYyA8YW5j
    aGllQEZyZWVCU0Qub3JnPokBOAQTAQIAIgUCS8tK2gIbAwYLCQgHAwIGFQgCCQoL
    BBYCAwECHgECF4AACgkQd4rDtFENI7ub6gf9HsBwaT7CmPenZPPJk+/GXDiNWPW+
    Q7c6rAEA3072j+h/RDTnhKip9R6/4SankmrQSA0NCO1EiTzsgV/3cS0k4v0XKBrT
    10B1WrxI5Tx0osEYNP4GhPWkEO/6jCTF+8EsKyPujOvw9ps/OBgdYhD+gwv94SX5
    IymGWrBeyncmJDefcvA1UoL5XjhgGtv6qhmzPmN0+PamJlPd0X2W0fb/w9/od+5+
    o7olzxiy0kVaYXBizKVQ482x/oN3kXwzMmxkhN4zmoJpOzvjBOw4Ar5WiYldgL8x
    ZggWcR0NLVejeyi5VBPxsPh3vfvfvvjhxfHuS/bLGyBa/tO0bKxTpbD9frkBDQRL
    y0raAQgAsOEgWecCnr55Ny/V3LI+apr6wq5Rt37E+szExLEzGPQCeSE2BKWDNHGv
    KWYuTow6dZtCySg7GXW0fEV+QEvWvDa3y/zGjZOSVwcm7pk3Vm3Pnuv9a52wG6gm
    +a0M/68T121UK37+u5u25OHZaMaGl2poaeD/D+jzzvYvEDk6C84FNDmLXZjMtiuS
    NmLsc+kZodFbsrUjdFZXykFKP4a4D8Gq4nPLvDjRB5ZNKFjy1HQxpOJAkZpK0wgz
    t1AymA+9oom984jiPlV3DSrxrJoAndQeHoKDz2dhdZ9E1CC0Al5aAhVn94nfdwee
    GEL8N1KTtQLBmP4QXFtOAupBiqq0IQARAQABiQEfBBgBAgAJBQJLy0raAhsMAAoJ
    EHeKw7RRDSO7B1gH/3I75IrWb9AAEQRYIoGJW4/vPB2CQ0juG2XX657wzgDzL8uD
    E8Lb4zQJa1RtSj8Ma/Qx+cL7BNWypZAUIrXrhZiVdAjvnQ87CyW2bjZ1w4zsv1Qm
    mbKT6TmfMuGQLUjnoOwdRh77TfyLirKsXx1535UY6gH3YFAiZaf5H4yosC49tizF
    l5WNOv4DmHSJ5npLItAORSrBDeJWk2wLjp7N+7Hy9lbyMegAwYMQSrQTwNRGok0K
    ufjKvZwbUTmo/MYaLncTWpWl/ZFL21s90vBM36q0RiPDVCkZvqrdwyqb56Fr4KUH
    yl7TOEgJibW2V19o1SPGrF7QFfC3nE7S407UmRc=
    =+R9q
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.145. Roman Kurakin `<rik@FreeBSD.org>`

    pub   1024D/C8550F4C 2005-12-16 [expires: 2008-12-15]
          Key fingerprint = 25BB 789A 6E07 E654 8E59  0FA9 42B1 937C C855 0F4C
    uid                  Roman Kurakin <rik@FreeBSD.org>
    sub   2048g/D15F2AB6 2005-12-16 [expires: 2008-12-15]

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    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
    8juSFfJ2ZBIPyPzTGgMu
    =0i68
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.146. Hideyuki KURASHINA `<rushani@FreeBSD.org>`

    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-----

### D.3.147. Jun Kuriyama `<kuriyama@FreeBSD.org>`

    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-----

### D.3.148. René Ladan `<rene@FreeBSD.org>`

    pub   1024D/E5642BFC 2008-11-03
          Key fingerprint = ADBC ECCD EB5F A6B4 549F  600D 8C9E 647A E564 2BFC
    uid                  Rene Ladan <rene@freebsd.org>
    sub   2048g/C54EA560 2008-11-03

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    mQGiBEkPa+MRBACUFlLWm3NomhEGr/Aj+rvLo6ayjrDP4Z7ihGTLMDFbhISurcAD
    8nW0MaFtBiUPxXFA1AC7L7In1cX8PFnQqgNcZiyZ4DOU6S8MndbUYwesM7oHs5zR
    KnvC5fZxY57cq9+L0r4qXdm6PvWr3Ca0T+E0QyWDn0AkYdLGYDafk5C/OwCg/zBe
    RExgeevWoBrieKK3F8dz/48D/jGNn4s+LPMtKNlaqYph0hyUmuZrQXXAmVTqfm0h
    9BBhby4qla9GqnYy0iiDqTCOzbckXQDBvXWFusmZx4AMnJTW/XQDHo9Kw9quWnjU
    YvMbgvqOIUu0mSS8gVLT4550dD1AUJucBzLUa6h5qi7EIh2c/nYwdimZ6Rv9DnV4
    lm64A/0cVk1m4mWC3jJzAS4tNtWbvhDbgWtqEiy1q/U116GtmnirZLJd8HE1nrVD
    VYCjhEHlA15GlLwN7zgnG9PBN4LXMWdccDwYAtsUAeZ5tTu4cU5k84ukxxOrzUAl
    d4p+UBef8QbpUkkEJm/0YWmim7+bTfH93FBGIXiG7x2UYVD93rQdUmVuZSBMYWRh
    biA8cmVuZUBmcmVlYnNkLm9yZz6IYAQTEQIAIAUCSQ9r4wIbAwYLCQgHAwIEFQII
    AwQWAgMBAh4BAheAAAoJEIyeZHrlZCv8LboAoO4/qyTTRwaKzRA5xvt0H2eFh4tH
    AKDLMSXjX+HX7U4zomwrekN7sJBd7bkCDQRJD2vjEAgAmPMCmdnoQu+Q3Z0pCYcA
    YJr1NyAu3xlpD4+dYBimEp2bAknPDCmaoVrSh7e7Mh754give4Hzz56QZsksIuEm
    rROafrecpxoAdMtOm/qa2CjlCKWVId5wbQSuuz8TV54CmoyUtruvKfUPDbK74TZQ
    BX1PyjaZ0FMrFPg69qoNcku2Wjc0BJsNFQ8+TzMzTbL1GKcM7kHZc4Wa/nSqwhnI
    hf7mgvd5NQEZs/7I3DVWxrqzEHFPPMPKE6weJJ56NEAd5W9rs2/eezUjnzAXYwyf
    IYCyWWqYeOCa4a7zYu84H0KxVQvUStVUWpTFLaZOpXJvgJkKPPXbPDTh6PV26t3a
    QwADBgf+PArSxdwEsXZWy73mcE9DjlnI/bRX/XN2tsZppzUyi5mOXZG7H+ZJGAU8
    DZ1+8QgQAwhCGAAKWt4jHq785usSUUa453N9k5X9JURTeMLrYVK8EXA9URQqCQpK
    iw8Om6xYoUHJZbgvTArySyw9mLgxo+hqLdEQdkJmSPfDcBsBS6d4dvv/NJyJDEAd
    vm1EXZQ0fmj+qzhCXhr5GVDGYcF152EHHpLLgFVgrKyVeIA748pxq84hvS65ieDn
    s/YuebWVLbexzqUkEN5arNahxk2kY32ZehzrhaC4DYAcJVEalMHS7X8V5LLhOrd2
    hTusyDPzEjlQi69AjtnBZUkxgVmviYhJBBgRAgAJBQJJD2vjAhsMAAoJEIyeZHrl
    ZCv8MAgAniHMkbReHW4Rlsj0/8s3r7dUuz0iAKDlFOXqYtStrWXWn5y1IU+gTHLW
    Bw==
    =uP9y
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.149. Clement Laforet `<clement@FreeBSD.org>`

    pub  1024D/0723BA1D 2003-12-13 Clement Laforet (FreeBSD committer address) <clement@FreeBSD.org>
         Key fingerprint = 3638 4B14 8463 A67B DC7E  641C B118 5F8F 0723 BA1D
    uid                            Clement Laforet <sheepkiller@cultdeadsheep.org>
    uid                            Clement Laforet <clement.laforet@cotds.org>
    sub  2048g/23D57658 2003-12-13

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    mQGiBD/bH3wRBADoVem06r8ivhxQhCOEH06GAg5J6iqqlKIo5BmOiQ8IHo8JzA9z
    TwFNbhUCMWzUusH56nNHKOTuFV7wHiR8nvK0y2yU5qTK3MHbfSeMVy4rFAKgyZae
    Wf1lxRHU+W/EksFaC31ljkF01TGHVMtpKPzDSttgrrMtgstT7QKWTKcggwCg8bVn
    g7MH9udGaSNY5hO3l9wIcusEAMD+erpSZgVfwojT/pliCwnvKRwNByhIWqz2y3Ly
    M2+VR/IjFlpOvT4Ytrn2VC4V1duahdowNQh5x0vUPagRRYKx67OEbIcisKsGQTnT
    m4FSRUfULKZ3M016uSsYNbuopctjrxHE1YJfskHmLnIHjnXhJjfmouQqOX8nQSh0
    ryjCBADTi6z4ZvH3CF/C1egPsmYzJ14H2t51JUSHwEWWaj3LkILEGvHsywCIT7Xd
    R34B0hPIn/ihsJF4XBEiqJlZmFhfFUmSR3/No4TYKOtMAzfo6GtMv8q19U/LQaVY
    1wYY0rWCqfzwcH9vSLlpHL9afqNBnVK3XiBGMCmXZw+4klu+f7QvQ2xlbWVudCBM
    YWZvcmV0IDxzaGVlcGtpbGxlckBjdWx0ZGVhZHNoZWVwLm9yZz6IXgQTEQIAHgIb
    AwIeAQIXgAUCP9sirQYLCQgHAwIDFQIDAxYCAQAKCRCxGF+PByO6HcPlAJ9gLehC
    AhRMepAZrGdPsPFoMB283gCbB6y04aeQlXaa9+xAm6C0ciAiXj+0K0NsZW1lbnQg
    TGFmb3JldCA8Y2xlbWVudC5sYWZvcmV0QGNvdGRzLm9yZz6IXgQTEQIAHgIbAwIe
    AQIXgAUCP9siqgYLCQgHAwIDFQIDAxYCAQAKCRCxGF+PByO6HT+eAKCBj8MXtxmq
    l0PuLGLnR04gnauqPACg8Rtgb2XwCrgcZFcjS1Fl7/SmTE20QUNsZW1lbnQgTGFm
    b3JldCAoRnJlZUJTRCBjb21taXR0ZXIgYWRkcmVzcykgPGNsZW1lbnRARnJlZUJT
    RC5vcmc+iF4EExECAB4FAj/gQ+4CGwMGCwkIBwMCAxUCAwMWAgECHgECF4AACgkQ
    sRhfjwcjuh2wLwCfZ0Sqh6DY5U2ZDj+JrdqX1qzEaGMAn30UALtH14r1jMPPq6xn
    UuMfFjyLuQINBD/bH4QQCACbO8LantesOQKcxZS6WPSLhIoZerdMJ/b4DCd22GGu
    IM4eoWiYPX73cTMbN9cTEObaA0hvXEdn8vWl9/RBV6aL/fYhAqTVGWhXu6MBJiAv
    0zFeliJl2+7MqzZjjr8GSFkhM3tXEzFr+7r7/Bqnp8hdzMFUS2dLcL+ZTXJuq9s+
    xUNnwt0+Qy13VQU9whTZNZy3PHHa3XRc5IbZ5FnqMM3D7twlt0sS6j253b3CXw31
    qEREoLutw25X8pbQeYJW8st0xIEY9z0MikBOJvKPAUani5+eWjuJC0FlXYM4qSnz
    zhBpDbQBuhQu5JgPPiXlBq+ta/prm6FyJjcK+EyJsMGnAAMFB/9DIGugG/5F+4XC
    dTvFluD8zbP6zwqWRuHX9JmA+oso6ruDHiZ+Ckdz0xBfD8yoyENIRnLmBxx11uZN
    upAlM2itsvAwHMm6zKGLwlN+74vhoCTzvDFtnyTSgC8as4kk4XCax2QMAueFpW+2
    8/SSLqIK2UWT8/5SkP0QaN5qSFgRwhGxYgyVP8pflrjL32u+fEwo8EjNnOUHX4WY
    uzdzq1t+0K2AnZH5TiUCPy9iLP8o3rBm89Qdh45wzqN9DOGePoc0v4opQK9+3TRa
    vYAx6izrRajiGgUHLcYeL2nQxyi3LBkKvbp4Bw/dpxGTdmPhtyU8jYqdP5SQbrFJ
    4DwXqs4biEkEGBECAAkFAj/bH4QCGwwACgkQsRhfjwcjuh3mfgCguHMdGD3Orm8e
    pAU+aCOCPVkkx7AAn2yhe79FYbHDx5Dx2LAfRRRyfxjR
    =lVoL
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.150. Max Laier `<mlaier@FreeBSD.org>`

    pub   1024D/3EB6046D 2004-02-09
          Key fingerprint = 917E 7F25 E90F 77A4 F746  2E8D 5F2C 84A1 3EB6 046D
    uid                  Max Laier <max@love2party.net>
    uid                  Max Laier <max.laier@ira.uka.de>
    uid                  Max Laier <mlaier@freebsd.org>
    uid                  Max Laier <max.laier@tm.uka.de>
    sub   4096g/EDD08B9B 2005-06-28

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    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
    01jfP2YAn3DLpgqbfVb0MZfxffpFg3K6fWkX
    =jGQA
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.151. Erwin Lansing `<erwin@FreeBSD.org>`

    pub   1024D/15256990 1998-07-03
          Key fingerprint = FB58 9797 299A F18E 2D3E  73D6 AB2F 5A5B 1525 6990
    uid                  Erwin Lansing <erwin@lansing.dk>
    uid                  Erwin Lansing <erwin@FreeBSD.org>
    uid                  Erwin Lansing <erwin@droso.dk>
    uid                  Erwin Lansing <erwin@droso.org>
    uid                  Erwin Lansing <erwin@aauug.dk>
    sub   2048g/7C64013D 1998-07-03

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    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
    =5i3W
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.152. Ganael Laplanche `<martymac@FreeBSD.org>`

    pub   1024D/10B87391 2006-01-13
          Key fingerprint = D59D 984D 8988 7BB9 DA37  BA77 757E D5F0 10B8 7391
    uid                  Ganael LAPLANCHE <ganael.laplanche@martymac.org>
    uid                  Ganael LAPLANCHE <martymac@martymac.com>
    uid                  Ganael LAPLANCHE <ganael.laplanche@martymac.com>
    uid                  Ganael LAPLANCHE <martymac@martymac.org>
    uid                  Ganael LAPLANCHE <martymac@pasteur.fr>
    uid                  Ganael LAPLANCHE <ganael.laplanche@pasteur.fr>
    uid                  Ganael LAPLANCHE <martymac@FreeBSD.org>
    sub   2048g/D65069D5 2006-01-13

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    mQGiBEPHZKURBAD/4O6BhuBlZH0ptJMLl3p/A+Ts0gBinSPtBL0tA82TBSm2uFRd
    8ehlKBMwyNQg1coTJWW8omEwAb+o4E8vwS4OOzzSCesNMgnXganMEE/STapgbXvi
    fh5Equ1GEeYyFvj9jaUGVoy1OxQzRAmVWtsV3RiV+mHDrBSJjLkS1CdaiwCg/RDB
    GxVmtywOwdmahcaHZb+dMD8D/1j417FsO9vnsenyS3fjLRNJJuIBevyX4WFqn9Bu
    fpt9M2l1C7YXvu4TMGkobUvmMsyEoPmQKAm66ickDUEnrwsLGzRWJBN/yoN4CSoS
    vqS04f59qObOfJa+a64Lg6Y5EGzzqnQvQK1A8Fdw1uSXAcauzucEMyld4sOsIEXi
    sLuFA/905RotLj6DVEl70+z3in4J64G9lLWdwOVmlANi8zUpIVUYobTJOMTdT7zI
    xNhYcjYqIc3WIAJycCJPMk9hk9SCra9ETNcU6GkusmyFdNr5YmRSRnz0etlTW6rF
    P7Dgj9b/jKMPh4NHJ8+cO77EPCsN8tz60LuMLXRboHAdrAi5j7QwR2FuYWVsIExB
    UExBTkNIRSA8Z2FuYWVsLmxhcGxhbmNoZUBtYXJ0eW1hYy5vcmc+iGUEExECACUC
    GyMGCwkIBwMCBhUIAgkKCwQWAgMBAh4BAheABQJMmnBZAhkBAAoJEHV+1fAQuHOR
    SloAoNpk638zaargeIyuzTKfV3OEt8bDAJ4oXhCjGOmIhDbIjILHQLDG9ozsV7Qo
    R2FuYWVsIExBUExBTkNIRSA8bWFydHltYWNAbWFydHltYWMuY29tPohiBBMRAgAi
    BQJMmm9xAhsjBgsJCAcDAgYVCAIJCgsEFgIDAQIeAQIXgAAKCRB1ftXwELhzkZ/q
    AKDyek8AbHNoIEFU4aKj9ZAxCyy57ACgtCnaOXA8TRY4ehdyAKHwwYROoJW0MEdh
    bmFlbCBMQVBMQU5DSEUgPGdhbmFlbC5sYXBsYW5jaGVAbWFydHltYWMuY29tPohi
    BBMRAgAiBQJMmm9OAhsjBgsJCAcDAgYVCAIJCgsEFgIDAQIeAQIXgAAKCRB1ftXw
    ELhzkRNMAJ9gKkxH4i/zQvgtw32ilPgyVvlnqQCfRDI6ESnizQdNyXWwnTbzXnD2
    Afy0KEdhbmFlbCBMQVBMQU5DSEUgPG1hcnR5bWFjQG1hcnR5bWFjLm9yZz6IYgQT
    EQIAIgUCTJpvXwIbIwYLCQgHAwIGFQgCCQoLBBYCAwECHgECF4AACgkQdX7V8BC4
    c5HzwgCg1hCgLsdxVIT6kx9/ejMcfITITJAAoO6xYuVfkCBk0lprOgAWeeWXsP5O
    tCZHYW5hZWwgTEFQTEFOQ0hFIDxtYXJ0eW1hY0BwYXN0ZXVyLmZyPohiBBMRAgAi
    BQJMmnSxAhsjBgsJCAcDAgYVCAIJCgsEFgIDAQIeAQIXgAAKCRB1ftXwELhzkS7s
    AKDpM9SQcvBVkmHQBrb0B0ZaRMIU2ACg6NTKumOvbvDgF49sRaVXHl3WLZO0Lkdh
    bmFlbCBMQVBMQU5DSEUgPGdhbmFlbC5sYXBsYW5jaGVAcGFzdGV1ci5mcj6IYgQT
    EQIAIgUCTJxEgwIbIwYLCQgHAwIGFQgCCQoLBBYCAwECHgECF4AACgkQdX7V8BC4
    c5FD5QCgyc4QAoRqHFkyCcPIn2Onyh7OcLAAoIahqNOxLn6qTNKHTEc8uhKauHvW
    tCdHYW5hZWwgTEFQTEFOQ0hFIDxtYXJ0eW1hY0BGcmVlQlNELm9yZz6IYgQTEQIA
    IgUCTJ02PQIbIwYLCQgHAwIGFQgCCQoLBBYCAwECHgECF4AACgkQdX7V8BC4c5Ga
    NwCg5LZThwqJ5ArvQVRDlgJDAub1jWEAoKUE1GjKMNd3y9H4AFAqr/kukqhTuQIN
    BEPHZMIQCACJjfWn16Cg7jpvy/SsGAulMEcLI6Glkzp+g0/JyYvNfvvaRGX1hJNw
    6pr1u0yU2FJuZo5b+avZu7P7UnCu2ZWRk8y0WVNHG5lie/jPy0rQBF/DhP6FVqk/
    TdcDECa1Ncp9EE9vCuZGvEgzjvzgxhQ06/d6Rtzxy3C1P79c0j661raPeWzX62M0
    Cj0a0ljdvvm25hv41VT1GAyX/punhrhnBiZwm6UGVu9SQNsOD15pWqMKD26lpwP9
    qA9XHnsOknL3yXl542T9BWffZh2I8OUE0XL1LSSsoPC6a7wV/Vx7cgTDLU3Pv55l
    ERY0p8uadTOCIu36tPkmkuJfoWJF4OQfAAMFB/9YTQ1dN+c2yl8C80VJO07wdNln
    VKQNcCKtuIJXRygcqC4gj8EI4qMofuJ4JTSWdApJjp9AgxFWol6AyYnW6oQU9A3D
    GVfeCc4MpduCFpdnex4U82UdwPB8905kAmuH13OIV3vIEqknpqaygDrJ95E1rYUQ
    lHzlQTHk+JxdqeDvvQfmrLRhPzgQtlukl4wjy+Kbp7Cr3X247c+5y1iAFCJ+o+VO
    dSlNlckHSWbV8yKvJMy7iF/HfvxJmMR1koU+SvCuOcL6A/CvS0JdLo6gIJJwRHFb
    +4iZBR9UUuU4AQBH4HIeSCFREczk8BTIPR/97OQI7FmGUSFTafxLHrww2p/3iEYE
    GBECAAYFAkPHZMIACgkQdX7V8BC4c5HIQQCdGivImEAN/fic1R59mKWpF2NRNJwA
    nRUyAyZp4AGCki3wKPxtkeS0295b
    =DB+6
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.153. Greg Larkin `<glarkin@FreeBSD.org>`

    pub   1024D/1C940290 2003-10-09
          Key fingerprint = 8A4A 80AA F26C 8C2C D01B  94C6 D2C4 68B8 1C94 0290
    uid                  Greg Larkin (The FreeBSD Project) <glarkin@FreeBSD.org>
    uid                  Gregory C. Larkin (SourceHosting.Net, LLC) <glarkin@sourcehosting.net>
    uid                  [jpeg image of size 6695]
    sub   2048g/47674316 2003-10-09

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    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
    =VNnr
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.154. Frank J. Laszlo `<laszlof@FreeBSD.org>`

    pub   4096R/012360EC 2006-11-06 [expires: 2011-11-05]
          Key fingerprint = 3D93 21DB B5CC 1339 E4B4  1BC4 AD50 C17C 0123 60EC
    uid                  Frank J. Laszlo <laszlof@FreeBSD.org>

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    mQINBEVPgQYBEACvR8zsof8gLi7pF4331BIVluP61Z4ICzkg2lWLB0Gj1feCbBcA
    neds8gqHJ7vxArQeYTBV6Gefk4mvCecxo2LGFEcsDuns2X1hf1pXz4AKvtYoVL0e
    ytW5s3bRdxX+gekv3KxVQjv4tJU2surbW0Hv17Z4m4ZbRfn17dzvpMwtiZmP3kMX
    N0qAeBs4MZxmWhfYHapc8du75XfpvvD2W4I9VBJXd6DLKNksjq0/Ih3Ygh4kEVxH
    6xQT+lL+6yVWTl8XQpJs3u0OPpY/dVjI98DaZucW/Lkh/+uxZm5ndExi4bFJ40rY
    KfqCsbGAYPOj4HKDkcgNZu+MbC6nIuIuh/eK8ZIpSlSdkzJ2r46wOBHLUJlJoxH/
    P4Ly5cXu5lUX2Mf8/HahPSY++5xIoSI1mpqruJyQZxhF4J56X1Bn0BnMmFt+uXF7
    O8bjQi4XQJBurcSkAuBnTQlohuAXDfIqeGqqMN6iDGTGCOL9R5WZ6nasyDL+qPA5
    WK/ooxINQWPWbTikYb3PZK7v8ABBj6TYAAGxAYrly7boIVKxYUFbotH4Y8dmXUEr
    p8Hj+tFZCk6AKBn/lCLsM/vTs0ylaSHJOhQc49fj/PETGSQLVjd8iH0l87MfLd9i
    iLnd0m/Y+ecCobgQDGnDQiFqvsJF6VI+/bisOJiE/HdOyo9j9K3jJ1l4gQARAQAB
    tCVGcmFuayBKLiBMYXN6bG8gPGxhc3psb2ZARnJlZUJTRC5vcmc+iQI8BBMBAgAm
    BQJFT4EGAhsDBQkJZgGABgsJCAcDAgQVAggDBBYCAwECHgECF4AACgkQrVDBfAEj
    YOwJtw/+Pe7qOPCqTUyi+w9k0829sinZIkLxpqJPSzzYaHQ1QGIOg4wO5yCER49n
    Sp7V/S1cNKXTIR+YU2Pf2dj/s7Ot6bRXl9dDnUgMjkvNEEIO6a9gazZSfD6+5ECL
    DFEcJ6n4En02dCjsZQ3uR9DITAZcd/Y3Gczaplwd9LHpUoh/nG1Dj02+6fB0E1wQ
    ebm518PDvbCaQvggYIPc8DvS5DO3GSRLQ64a2bILYOP1UXPGn4X/0yoayieyO6lD
    HFA1gVCROtgG1II0ylDWH+Klp4nAyRcqoYfF5kHWsvQS9N27gf90F0XEALjxCCEu
    Osy4rtDvg1mU1AK0eflyZImJBFfEOXZrEM2TYo+H5X1KLEMlCzgz/5MoOQ3F896u
    K1Rb95LuF2BJOJsnYbHTEURwloif0U5VIbuH6s37bVjkXDbHcQo1UGwQM/v6tPaG
    YirZCgh+NpKChuO43XvQTG7CL21qqten+DOh6MBPtBK9TeZIeuGPiUkS1WcCwRbp
    QwmK2wZeVaZKReqLJO0QXq06dgd4iaiN7W8p6HZe3LYbnR5d8SWyPp2RQxESOOF7
    3atOTQXB5hn+pXuHpH1qKK6RkiD62pMd2RgRJlCdKZXM5UKjpAV7w/k15qiZuZg+
    N0Jkod50e8O7CLTZdXTTYpifOkjdnycBY24X1Ra0IqkTC69zPrs=
    =xm1s
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.155. Sam Lawrance `<lawrance@FreeBSD.org>`

    pub   1024D/32708C59 2003-08-14
          Key fingerprint = 1056 2A02 5247 64D4 538D  6975 8851 7134 3270 8C59
    uid                  Sam Lawrance <lawrance@FreeBSD.org>
    uid                  Sam Lawrance <boris@brooknet.com.au>
    sub   2048g/0F9CCF92 2003-08-14

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    mQGiBD87mDQRBADpSK4q7J5JpjHMPdlp4ieo4jJR9V63tvptpBOAk/nuhWnY3fpu
    Z7pcxOy5I5hZDIu2kn2zkBv4CTsn9yxdWgJaSKU9nQMYpfFdCnajo0HTwV72+7eK
    u86VDWZeWuuUIiHVNBUILClbOadmRFDxuCCjyE+V97o4CiUu350M28YdBwCg6LE8
    dpO9NELy9LJxyhPBE51iS4cD/2CdsCXzmKaFTa+w5fCOSBzNv516qY1GEkNvmDrD
    e3dgeyxaembidWjjU2vqOZmWFP64jgayvyFZChGMlRab78GKXH7DIGGrXWp9v7B9
    JjCqDyuX3NGaxCDFUNJYR6nt7Q93sAT85oAV9EPeFFEx7Ksd4C1iKlGlohGwleb5
    TCngBADX+A5DR9eI9E8loh9NmT4HVzvjk9kvk/vq9i0MqxgcEBodgRPibVKWTWOj
    MR0T+3qOzLGiVjIL2FzVF1na27hGJmXupxU4dWoKVGR85JYNOoFBNuR2HZsim+iy
    sX0gK6ejsxVhhx6Q+CQgCQ80TzuY/dD2qFuOGkda0P9Ro62yt7QkU2FtIExhd3Jh
    bmNlIDxib3Jpc0Bicm9va25ldC5jb20uYXU+iFsEExECABsFAj87mDQGCwkIBwMC
    AxUCAwMWAgECHgECF4AACgkQiFFxNDJwjFmBaQCcDJfb0SfPgEimiFVhsQOJccxJ
    F1UAoKJrgMOoY10RAqM822JzOnn9mGXutCNTYW0gTGF3cmFuY2UgPGxhd3JhbmNl
    QEZyZWVCU0Qub3JnPoheBBMRAgAeBQJCWzEGAhsjBgsJCAcDAgMVAgMDFgIBAh4B
    AheAAAoJEIhRcTQycIxZWoEAoNefUsJBBCoZSmfVIPEh4g1oDmOFAJ9H6Q4/hfh4
    hFTLxU7p2bLgbdjGHbkCDQQ/O5hBEAgA5LFaiwqsnyrdVB+Y7S511ZPmQOi8UwfQ
    04PIWyt9a1MwGSYdUpzGAieMLe4KG6olMlLH0X/qxkVjbukwPyybeN7RNUZE1DD7
    KGbVOWpyQHhAB4EPfzRJFYQEmT1x7tk0nVbF7emuK9iG+Z3et6Io58QjOgyEMLYU
    UjwzCE2NYjJmMLEy1e+icfEkOs30s8XPrus/GNffVlsxmHEzxtsicw+AVnlrjLtG
    xZ5DsNRqJM14L9X5qR3O0dq3BnKGZPOctIF6bRv0AC9lX9kQ1saFqv8iEHoHZ2vD
    2eIplYu/bviD+lI+w6zrq/KgNHQ1n9ngzs/N14lN9C57dHTS7U9nJwADBQgAhWSk
    YnYr5vUskZgVmf0joVgYNBqXIBKo3qXx0DYxGOT18EbKhtSYCar4Uhjob9fUhQop
    nEd00GQVZwDTL3/STCXUUSaHRJhK9yCwgvQ+/q58yW1JvMrCA6uaca89y9DnfWxv
    0lFbOdLJJQNrgLCyNweLhZcEjOSTQO6EZB5OX+z4Dgfxd/5DKWr19JKw54Qtus3s
    9zZhVoQoXzWiDlYdtuGUjnVQvycegOxwjFN/TP9IQpQS8HFMfEu5GLTbRAQ3zirS
    W4FtGaeI7cUqap6ot2BRd1prAXyThXHxYAARaYib/xvCLRDTfXCHgJXbqEiJ72Yy
    FgGYqFTRrTTgxiXo9IhGBBgRAgAGBQI/O5hBAAoJEIhRcTQycIxZLQgAniGrL6cw
    +rQG5xLeJ6hrbllYV+8cAKCmIpsp54t97HWvJTKN9GhbpQhojQ==
    =iBxM
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.156. Nate Lawson `<njl@FreeBSD.org>`

    pub   1024D/60E5AC11 2007-02-07
          Key fingerprint = 18E2 7E5A FD6A 199B B08B  E9FB 73C8 DB67 60E5 AC11
    uid                  Nate Lawson <nate@root.org>
    sub   2048g/CDBC7E1B 2007-02-07

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    mQGiBEXKYeQRBACVxgl1l+IwFK3aZ96X+BHzeUuGfAAWSqzZuJq0rVXhUU0KnGy6
    r2HLJKwGlSQ0tP7rsYy34fDZy5BB1JajHNUIhb5SJFZH3VltQuZ3mnaLWJajm4Q2
    c3TRBVVFcm4y0x/QiCcz3JvCUWHaPUUWlpbrkt57O5NTVlneOtruZtYPwwCg+3Ft
    WjNU4ppXEbbsLHsIri5gPCUD/2e7RFkq1KaaqA0wfwictFgxuOZX00Do1kIFfoE6
    0jKSxU3P8E01H68vZs8vGuVOLVE1pXoWoJa68zVOWkLCTE1z2U5YJumZL1mDRRHt
    VfqlsaHNBLIRd9qAZsj3F5aSFu1/hCOiUkgLWQa9e/BAv76L+mCIJ+g5bU0YTEhx
    XoFwA/9dF3JFdQCkrzbhS9/BSjEIXDCl7e9Yt4/6jTg14fr9Pb5hyUYYxu6i5v59
    TgSdxSFUd3MaZmH3Kewg++9oqewNEYdOu/gmx7GiSKr3k0FlX+aK7UsVDjEr55Gi
    XH5pqUce7y8bmx03a/pa0Lq5WLvPnfUaplWeoCmmAXeYmRFYqbQbTmF0ZSBMYXdz
    b24gPG5hdGVAcm9vdC5vcmc+iGAEExECACAFAkXKYeQCGwMGCwkIBwMCBBUCCAME
    FgIDAQIeAQIXgAAKCRBzyNtnYOWsEUGfAKC9mTqJd/PjHdTG0YZkBr0Y0PLmCwCb
    Bl/VHprr5SrFDBdZy+vB5GIEhme5Ag0ERcph7BAIAJKt5PBfx/CEqBDS+JkDyYLG
    RA3johtfG5HPVPOX1iFJgDLx/5ZKIsK3oxJLkkZQDBjzJgU+GcffBwafaTObEbid
    D2rtwtqfM2EgoSntvJhrP09Qfx1/MOZs4MVJbGEec9egMgFRzUSKZ2xiYNqKOWL4
    dL0TOyeLg7HQne1fuOOFEJZJtCxHAm75z6Q8deYHr7bQQ6NZuYc2qsOLjBX+M6Ig
    d+r5p3vhkeg0uUzkRR9bAmtaDT3BFfxfMG0b4iTBpDW5UQ2Cp0NG+SAEaXVCYNcA
    kKHZGTTI9e6a8AimsP1wOKs1TsE7WSLsk0Y1U6E7OuHLdmGwZygipfkUXR5v/hMA
    AwUH/jLrMCAzZaCh6m6mrJ2HYCASRSfGKAbmfqPymEICfZ3Y+FeCCFopeatMZPyE
    R6gEzHyu1hlSHV6yTfxRDV+gO6Pl9snsucJtD//ZnfNZenKsFoGJM8qu758jBA5m
    FY5bTlkySmFJYHGAtpMap85j32iA3B24VmgIZ+rE/YVQUbbkaFrKN7Crvm+PgH1u
    xbLrkjypklyo3iZZQo75W7SobSvyqnG3LRXkXsS1U1m3QWcLqIjKZTrrhbV3IIRK
    +A0rSRKXpDt5lOYIqbJ+PwwGexlgzb31vJa0+N8qjdvbbMZIOA7mDVauEYsETkU0
    Wtl5Rc1M8Qx2IISH+K3AGXHqn3iISQQYEQIACQUCRcph7AIbDAAKCRBzyNtnYOWs
    EcVTAKDj9JrwUwygZFNG+oWsOA3/ikA7qQCfQkYnj9q6E0Z21p/ZTDptic+qSEI=
    =yO1b
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.157. Yen-Ming Lee `<leeym@FreeBSD.org>`

    pub   1024D/93FA8BD6 2007-05-21
          Key fingerprint = DEC4 6E7F 69C0 4AC3 21ED  EE65 6C0E 9257 93FA 8BD6
    uid                  Yen-Ming Lee <leeym@leeym.com>
    sub   2048g/899A3931 2007-05-21

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    mQGiBEZQ5iYRBADg09p5ljHhIDwhH8i265BFEL1AyW3EPEOb0CyFErp3K4H7+IpG
    FeaHUrB2i4MYs2r9gAMHadBMTXZJv7ECq2AUQfm3vTKeBjVVz/N7jsEDcmH6bObY
    XvfRlp9618IBRCDdcbD3Qs0Bv4tM+e0oNYBTsOWAO+bfpHYPk5wORxq6ewCg8DWN
    J/THLd42Fd4HTfxTC4tTa6UEAMPz7iASUbyJr7//O/Uu+05MBKX8wuNdrH2XPUWq
    MwLcgEpKSFl0xjpJUMpr3eWGvAg0Vz1UzxDUvZUwbj/5nXh2olNoMH2LQY0QwXGG
    TPudevBeJ6W+UaEGCAH4Yy25hxxr9h8XI5KRlPCOjQ8i6H+EZbLRTLgOrvBWvD8B
    Ob8dBACGxoySAQP+leHIe9nrKyZ00tkNI6WPEPAG+14yiCgWLJnWKi7maIHzjG+1
    1Fz5+nyMUtHofmLvNyDA/V1e2LFXDjH3v/PcTCQON8EnHAoYmqSRAZMBMmDpU1Af
    f/vbiOg1zwhwAhdO8y6GZHcJGJjJ8lJYs151ehSS2Oa+NRCfH7QeWWVuLU1pbmcg
    TGVlIDxsZWV5bUBsZWV5bS5jb20+iGAEExECACAFAkZQ5iYCGwMGCwkIBwMCBBUC
    CAMEFgIDAQIeAQIXgAAKCRBsDpJXk/qL1q9tAJ0fy0MkFt+hNcvb0OMqTRJvjYlB
    KACgluazpF5ATo+dNtJifOd8kMBxB+C5Ag0ERlDmLBAIAKOlmONAuOtrVXvRw2gr
    wYNA4bjQrv44PLCMGuicddC1S6+Ngp+F2bjq43iyDk06i4eXBop0uqzkGA56pCVW
    51mSLThl5q/1dixiLDOSy/9Scuei57KuP5MOk5GpFBU/OZv0R+1ZaK+718+jI8/E
    NGOt/rZ3ZaTR94rAn9yQzVp4prVw4F7r6Vrp9mVu2qgoYKpwpfuR4nw1kq80Z1R8
    TxtUrGFYSY7nRTPI6FI6fo6BVPMAw01Xh3oKfDfrecaNtNNgM/DvkrBvZsVHu3NO
    M2yAVL6LP/Sjv0uF1pK/WjP27hzvO3yha2KYS3oBu4zysyVbi7QuFvm5FmF0mKik
    JosAAwYH/RWHzWWtpgXdbMUrPxFTmFhXCVVuyiHG0h3bMZigKtAMcjjYRMenhiRm
    e5Z5si4VzzpaaZaVY6T7hmzM3cran4VH6dFdZy6qhBFzlJphpLwnJti/FMrF2CdY
    1kthUC0fxeEDPBkYvV1izBrPQ915XYXuXdJjbk/ATqeIKsqEHWSmTCLcLLtWn9Nt
    X8DWU+GHMbaMAbtEfL+i8vg0WIOeSE4tlQwIkvSzfXh6Rysr7NtOuYzADD6ORRkg
    Q9K802n7IYXqWhZTWKijXpf+n+NzWdXC/1UZambcfo1gcS1fotmrO3Fmq3+FgJ/A
    YPmudGbHwUlAXVfJ47Atxggoe0znf5CISQQYEQIACQUCRlDmLAIbDAAKCRBsDpJX
    k/qL1tpnAJ9MKjKh4P+ePXeQ+yIwfPza+MnFcwCgvVONrkQ6Byi+tZ1ilTlKR+8+
    xnc=
    =XiOT
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.158. Sam Leffler `<sam@FreeBSD.org>`

    pub   1024D/BD147743 2005-03-28
          Key fingerprint = F618 F2FC 176B D201 D91C  67C6 2E33 A957 BD14 7743
    uid                  Samuel J. Leffler <sam@freebsd.org>
    sub   2048g/8BA91D05 2005-03-28

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    mQGiBEJHnP8RBACRTtM4Fb2oRITEwfTLIKSa5Mk0m1A7Pitd1qkjtAyFCi5V6uF/
    2FXPP3Ux3M8xzrvkQNnWkYvGh5MSgkkJ0nszUvh63m5Lp1Yr/EMQr03v1HfqGKF2
    SALv7eVJ3XHEEGsYq6KOcJ+2n3FkL6bwGXkXSya85a+EwQ+/aBhpEOEKwwCgl4N4
    oTMEgh2Z06ZkMJrqbf4/P38EAIAN93nvAN14v41zw25b4USFzqH/JFTG3utAVxiB
    NgTEkD+OkktxJFoTrZxfxoU6Od4tl+yIyhKJgj/QlH5pA/mpMeaXh+TQ0/EQAzml
    d/sw7vXV3WJ+zXIZeh51yuHBY817e7izcnfmY33UrOdf4DtcplmUrfQd1eVMSo45
    K2b3A/9a0tg7NhdfkL06b97oyKb0L8F92Q1sO6J5sgsEjNrUVrFnNU0DIDgbi/0t
    oBpnqIDa09hhBJ1XYcxU4KMxBLpuIeuk2cDCUCVeeEDmx98GIss3hKO8YWzB40y6
    7vtdh5lveaNV4+CA2xL/cDXscl+poRQA5tR0efR16jckEaEcVrQjU2FtdWVsIEou
    IExlZmZsZXIgPHNhbUBmcmVlYnNkLm9yZz6IXgQTEQIAHgUCQkec/wIbAwYLCQgH
    AwIDFQIDAxYCAQIeAQIXgAAKCRAuM6lXvRR3Q7whAJ9e9jjfVscKVirvWN5IM2j0
    60Q50QCglAppekJH6jWStTwoq1EroBFPKUy5Ag0EQkedCBAIAKmxNvJW/W+PrE+T
    JjKw6dbqUqAUNIGWnr6xgL7KYBpx5eo0XH3RCVzvRSfboA1+nXauTn/FhOtWMw0J
    dkHrMQhxKSDhWOxeftKuiRiVLPXxF7PX0JMOadxOuqNSt1VWcuTxxBB2wva2Rb48
    JscdFbT2u7+PHNarDgUnEobobdvbzh4F1ACaesUq4s2y8jH+YJTaBqJJuZLjLwti
    C2zv7skf40I5ldud4/7ARGuumpjTrqZFQeQwPKX975X+jw5SBUJXA1ckKcgTp0s5
    Yk+O5+yUkt6yzDO+CAYEaZ/xfpOhwmqSIXtdo+ilm2q3y5l+nyEVidYncRWRWYyO
    iaXOJdcAAwUH/0Ixl92WezOXBqMrKVaA+abCN6t6n9zxSnwfVo92Vlfqj8Huz3Hk
    55e1in3P01xXdNKnapYNkCg70WbtNQtCh0nJdGGDEWVqJsjiqDDMYa7QLahV7HPB
    RyOtoAXnTWPpyk0d5WEXPLJ3vPjxqv5wKTmav3JcvVahSVWi2wmWAgfQJXYRvCU3
    EEQ5KqtCBrQNdBsSRnzgDsMY2kAh02VuGTbkVlQz/rI7HAYEOL8SoR489O/MTE+b
    5HtUT70rk57/3jR3QtiH/3Q7OqnPh/ATjO+pnPuhfqHiQWLWRDigJNheH/B+1Hmn
    sHiSWrUmlaI0bzyIVW4Xft3nu/wH3QVSSWOISQQYEQIACQUCQkedCAIbDAAKCRAu
    M6lXvRR3Q1SUAJ45iX7Ka9rb5pwAmY+fyfpuO4qgJwCfW4VAl3+NLCCP4A0Y8wlb
    UtEtg3M=
    =kR9a
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.159. Jean-Yves Lefort `<jylefort@FreeBSD.org>`

    pub   1024D/A3B8006A 2002-09-07
          Key fingerprint = CC99 D1B0 8E44 293D 32F7  D92E CB30 FB51 A3B8 006A
    uid                  Jean-Yves Lefort <jylefort@FreeBSD.org>
    uid                  Jean-Yves Lefort <jylefort@brutele.be>
    sub   4096g/C9271AFC 2002-09-07

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    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
    3bMQAJ4soo0qCyPCVz4Y0Ly5jvYWToXt0w==
    =kszM
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.160. Alexander Leidinger `<netchild@FreeBSD.org>`

    pub   1024D/72077137 2002-01-31
          Key fingerprint = AA3A 8F69 B214 6BBD 5E73  C9A0 C604 3C56 7207 7137
    uid                  Alexander Leidinger <netchild@FreeBSD.org>
    uid                  [jpeg image of size 19667]
    sub   2048g/8C9828D3 2002-01-31

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    mQGiBDxZg2YRBADEFCcKKsa/VS6z7aq+04C4rJ925MPEdQnGo4EVKtRv38AnqUaW
    M6w2CJuDQ4iS+FL+nWaSwRnfGufftkEx0mSum1FMXQQ6+buC11LkgUYcF2f0wlak
    HGr6Vo48RGz76Vi7u5tcoEaLb6uYjJfOOAzYX1aOv/T+qeGVc+JJG4LhNwCggBHB
    1DpYSy35o1I7EyVufjruQJkEAKp11sHwuPcc6Q4q5hSKG3VM5TJKHwRkdoRxgfjT
    UJGecH9GA4Td7vh11dMyS22RnFNS5hcCdCdoe9PkDEvwp+w30pi8uNOFmpCF9TlA
    FRgwFC9pq6VveHd1PHWSRgiTFxeTXgJ0Y/zCZSitURCtlqMXMg9qnUe1tTAF99yp
    zmQZA/sFaFGTLzCbPrUY+2q13b5PSQsv2D5FHFGuH3FL/rIyPexKmm9Fcs+LAQM7
    rx94ipa0OpwapUwCFPg6zNqQ+67JM4KCzRsoSQPsVtCNNcEODQRMXqx6DK1tYUvf
    ymCAmXUqqqVXARyDh954uBqTfRSASsqPsVAxtwmVA7rceEcIfrQqQWxleGFuZGVy
    IExlaWRpbmdlciA8bmV0Y2hpbGRARnJlZUJTRC5vcmc+iF8EExECABcFAjxZg2YF
    CwcKAwQDFQMCAxYCAQIXgAASCRDGBDxWcgdxNwdlR1BHAAEBQuIAnRn2yTAmJACp
    PB9Nc1WjeQpipeDAAJ900VXCYeRbwhfldpGMbiGlkj4Ly4hGBBARAgAGBQI8WYOm
    AAoJEHninGCwBj/nkIMAoLd0ACBW+D47AAGAHLvbnoVOUcysAJ48WGg7PqFVvxq5
    66+s+xtIsYOK1YhGBBARAgAGBQI8WsZXAAoJEPSMqBtpqFhziTsAn1jBAxq4biI6
    ZMO9tPDjXdgGWCu9AKDW3KmsBTCEZomtitZtbKTPiun6M4hGBBMRAgAGBQI/jTT0
    AAoJEGx2F4yg7ZgtPz0AoMP+vntzMwK6UNZiXNqnicGBn1fRAJ9gslYqStRTXgv0
    GytGmbrqAvKUt4hGBBMRAgAGBQJCNujQAAoJELNT4Gpva4J6gesAnjrWpLWWUFF/
    Yt4GUP7Dd2dCqTNyAJ9St58kCHv3XQPIOWScicMrGTebBYhGBBMRAgAGBQJCOoAp
    AAoJEOMv2scF+1/ZKEcAoKssBpCFMaSAq5VWLCO4ggxb6WodAKCv2hiiV3dHswxe
    I/l25PCDATjTSIhGBBARAgAGBQJDpJAeAAoJEIXUUEVraRsDpIcAnR2iRPpS1w3i
    SCqV5/5+jJx5SyjtAJ46/73g9swXtLEIUgl7z+RGg1/IQ4kBIgQQAQIADAUCQ7Gf
    MwUDABJ1AAAKCRCXELibyletfH57CACMkpmNhmUxfx9Bp9ifKhvZ12ZOvv0wYlBD
    3XJsXEq4aHJ+Bq2GmQLyEFX8ryV0HwSl1UfDEVsJ7IRjds66Wmo218eZp33tHMbq
    02QvrroY6nbaPHXpydhAaHmY0iZcFtUJXRa9VqiAUwTVlKbUkAL0r87RBTxhIzDq
    xaNZC+MTxUJphyDQYnJ8OvOuHeeMRhLrwQZJEevtb8JR5CzyrjoIn351ff86hz7R
    PsThwMXTMqT9T2w98GhuP5UYRp1bFNCbAlWJwgNiLKd+6AXdyQIOouCzY5tnD1wf
    vPB1v+wTi6KnU6E2VsQ8yggFcPaPovO3uKkRRAkATgN/meGtDBYhiEYEEBECAAYF
    AkY8hosACgkQ524iJyD+6d0B/QCePfnQ95VTfwRpSMHu0GxbWi5ZUlgAnjwAONqq
    L+iionCmk3WCHjeFvv9WiGsEEBECACsFAkY/XkwFgwHihQAeGmh0dHA6Ly93d3cu
    Y2FjZXJ0Lm9yZy9jcHMucGhwAAoJENK7DQFl0P1Y5VYAnAjxx4bU+zNPpIRO4QiD
    gpYZ69ruAJ4gdxhkupzsuLeXEdoZjngqbtDf3YhGBBARAgAGBQJGSaS/AAoJEI2O
    PuD3c7zgVlEAn1nKfTF8E16RhQM1cqV3YU1odL9zAJ96gPRqe2GHv8yEQLtJfTsz
    NkXcndH/AABM6f8AAEzkARAAAQEAAAAAAAAAAAAAAAD/2P/gABBKRklGAAEBAQBI
    AEgAAP/bAEMAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB
    AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAf/bAEMBAQEBAQEBAQEBAQEBAQEBAQEB
    AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAf/A
    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
    w4wojMYjJ29yNAQkSoEcLz2pGI59uHPJHona1RREKBAParfv1aRySoJww/hBygBA
    IKnPp1pKNd4YAhTs/eFcARsezM4BwuAkryHyu6LJc4A9EElDCSvdGCF9qqGfahZm
    UMy8Fvdk555GfTcClLip3vjuKu+Wo+/bV3ZyvDloWD3Vnb18vXzX8+54Z6204hbY
    Tuk/Q8kgy2ws2HkZio/zlFQiNQsYYIp3jB9H9EjGp7bMilTLLJk4PZIdIixxjDu0
    ZVfb7t5O9YiACt4jSSVmDOu2fEjOu6Ry8ZQiPaB+7SOQo4JCqc7mYgg+pI5CaKmk
    YMZFrJq6eRlVGVamoqo4pTIu8otIJFSNQinYsSlOAZzJ97qRRX80FX883fAtdJ4l
    J1+67/s/Hse3fI8c+DOnpSn5aPgFp5Gwg9747ky5kJAUGPe7vt4bCIQFUejWGl7n
    bDqFDNHUO28MV2MrLGmc4fcTmVj8OQQwjHoCJ0VYqsYnUB1pnxl5MplnBVAC4kPa
    GxDhAzo4IC+jyGJVkYyzQl12oCHzFBvCuYz+8ZZJVk9m8459qKCxyneSpBY8+/pI
    tKj7tDQUvCoNjMot8nJ+v2Ff/k9jrrwNo4FdWZ+cllwDtAJG3t8MzZ8ByxTc3ARQ
    y5U9tggcJIgJcRogU+5FZI2WEHtgZKJKS+wsEMih2BUbSmnUGmMYZHeWWWeNSi9q
    JD2yqlRvZyYYRJMzhAz7uFAHpaW2m7NPNL7pZJahJO2duXghiAWL3JkQxvIJDyol
    dwCEVUAVzcfTcRO4xVpFtHu3hvi6pUpmqi3/ALX/ANttHt2L2/PzyrrXS3CzXGiq
    nr0o6qlqIpp6KsrLfWdgiZJDSVdBUQ1lJOCG7c9JPFPGCjxSCQq3rIV9V30z1Fl6
    x60sN+oz2rXrfU9ztDy29NS/+Tr9qKuu1JW7a2GoqIbotprIaear7dSKunCuXedp
    R62NxQyiA9yQb1V5MDLAHD7QVVQo3FMLgr7VJUbgCKRPxGNMy2nqfYdR/k56ekvG
    i6MSV0iRiK4XG1T1CVCRdsko8NJNQrhyXaNo3VnjZXNH/wAQMBPyqGrhCTLR5d04
    Hp/y5sSVyOYbZfb2Sf8AqN4y41//AAV12HB9Uug1EISxeY4WO9QnHJp/82MYXTKM
    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
    3pN33MuLy6TF2xxajndw39tJyQra+iSLXHI1fikrqGqkpa2llpJ6ZtskM6sjq4/h
    YH3cY5xgY+T8CTJlmb/YGyB+ofPO054488/y9crveJLxeLjcjlDX1dTVktJ3Cvek
    aRUZTtI2ghMrwBjGAMACtS36XADckEfpOf55xx5+39OfV4jj4tamoNn4zeEPyaXg
    Lr4fYyaVE0hLdGLLZLlkl8WoeqUYp+NVz6Q8Gm/OV2455Iwc5OMjCnx9h5A54wT1
    RyTknA+eSFGeBnBxyOPHO7GcDks7vPuPBxxzxjPw3wfH+JA9C4yOPJ5Hg+POR5OB
    +k5GPIxnx6anGSPrkl7g27QiJzuRXa7liQZClkqKVFnL8pBdJbSSGK9rynHxx6e7
    8HVKd0gHkEjI+fOPuRgf055OPn1uW/syf0qnR3RHqj9U+paAQXPqxeE0FoeomSMV
    C6Q0jM0t8rKV5EBSC8amqUpWZCquNPI5LDC+sbP0w9C9XfUn1y6adENEUpn1D1F1
    VbNP0sgRnioaaeQyXO61AUFhR2a1w1t0q2zxTUkhznGfqe9COlmlPp+6PaB6K6Gp
    DR6U6aaXsmlrNTQQmN54rXSolxuVZIqhHr7rXyS1tXNs3T1U0sjOc+2t+dZp44Qw
    kllJjlluC9kU+3uiVUZspMVY1tQHdHbOwQWPQl8e7Vle9PBd8AnFe631DRQVqgNu
    KvPGsqxqCEgVmd449z47ksO7IbaFhIb25XDHXK1hayZKd2VY2KMI+4QXBJJzGdpI
    BVR9lUAYAAD1Xa5MsYYR7VhDBNxVu2rqBIR7VBlcEhnG52ywDD2n0yFyuUi1LLG2
    wAcq0keQ7MzNkkglgWw3nDAjJxn1E0ZkY+nkoX0L2FBbf6p5CukqKpxjdd29HL3f
    s10/3a6LukS/2Kz6ssVzsN+WG72O+22stN3tdS+2mq7dcIJKWrpZd/JSWnZoywCs
    pbKlSAwzqfWB+FtqvpzS3bqP0EW4ay0PCJa+46QkZKzVmm6Y5mZqIwYN/tlPHn+7
    jW5wRJukhqEV5vWhGG7wNT9hTNFIwKs7JvcLj37AQV3FdwyWIB5Oc49GFPWbjIkT
    x4KllBmTdkKqAPlRk7R7wvgcY851fVaSGpjFlcJx3fbnGNPRYnO/Gz7hJJXLdCQ2
    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
    =H22z
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.161. Andrey V. Elsukov `<ae@FreeBSD.org>`

    pub   2048R/10C8A17A 2010-05-29
          Key fingerprint = E659 1E1B 41DA 1516 F0C9  BC00 01C5 EA04 10C8 A17A
    uid                  Andrey V. Elsukov <ae@freebsd.org>
    uid                  Andrey V. Elsukov <bu7cher@yandex.ru>
    sub   2048R/0F6D64C5 2010-05-29

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    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
    JrV1mi5i
    =KVzv
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.162. Dejan Lesjak `<lesi@FreeBSD.org>`

    pub  1024D/96C5221F 2004-08-18 Dejan Lesjak <lesi@FreeBSD.org>
         Key fingerprint = 2C5C 02EA 1060 1D6D 9982  38C0 1DA7 DBC4 96C5 221F
    uid                            Dejan Lesjak <dejan.lesjak@ijs.si>
    sub  1024g/E0A69278 2004-08-18

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    mQGiBEEj2LwRBACdxv/Z/TqPsaxTmKrXZSOPnQca8L9UksW+71kI7YouAkbnnTyB
    maf7zCs0BDcUU6t2mO5ijJlxXe7Y4yMx/3mwGX9iWfWh5U9xobG0STcU8ET3ZQmZ
    /AM1vSL/weLK42YHxyqSrudt/oWxH4iDZFz5I/HI1DRwZMFhft3ja+pdYwCggAu5
    GwYrQlQJHJcCFbxnYUGJX/sEAJXyzea8rzP7dTUsaOYcLitIpy/eDI3vkB0aW7Uh
    JSicWASPW2erv99f1p2gkVQ0b0lrpMwPrysotfN6wLLYR0fowCWHm7hnASgohFpq
    VwB7aj0HDEHne7EIr6geSpnO8Y4QUtbFVWo9cq7HGzrB8NhwpLXQ5g9RgB+H9SS7
    SzVXA/4qPOAoJ8Fp+ZSznd46yd+dgFmVpSJuTs3g+hFolSioEkbi66fHwPMWeifS
    i02AkU8m/qiGMAXRwBm7s5jeLwQyJX38S4PnupPg8pOjZtLVYoTWaM19yuMGS5S/
    ryF5MaCGtuB72Wnsp67aZIkaHjfS4QAKo0WVH8yucnyOS+BFsrQiRGVqYW4gTGVz
    amFrIDxkZWphbi5sZXNqYWtAaWpzLnNpPoheBBMRAgAeBQJBI9i8AhsDBgsJCAcD
    AgMVAgMDFgIBAh4BAheAAAoJEB2n28SWxSIfMJkAnjxPSokKlZtVhYhAcgX9as76
    sadXAJ4yo003F9ilZw6avaThCBltR/MqWbQfRGVqYW4gTGVzamFrIDxsZXNpQEZy
    ZWVCU0Qub3JnPoheBBMRAgAeBQJBJQwqAhsDBgsJCAcDAgMVAgMDFgIBAh4BAheA
    AAoJEB2n28SWxSIfOHYAnA9quQ97rU3eJHb1LzOTpwZVMSDxAJwJnLzSFQHfJu1f
    seG9fTyt5UpBAbkBDQRBI9jCEAQAza9XDZevfbu9BYjDESbKo38SRgyTd5/lIgzH
    IlF+9zGr2e9PH1WOIPr0m9m3LYQzkL3YiUm23UoJO7uhvWvCpxfChwVx3VFwM7Yz
    WqWBV+W27aZNROEmh5KheJACE/m6j0R6UECiRHZS/EsHP8FNG8roWro23ApNR0Vh
    zZ6iVNcABAsD/3glWDyCWMA/eX/YGPw3xN3hkENgruwtWKkK6TW6kYv94k4iD/b5
    bRsmIvGd31AM5/Qv/IQd7epXb2ovDaKvMl6+jAJb1NMCSzOkCnoqcQoKB0ed33d0
    JOVWuA34WCMZ2zHLFEtwuQkHZqmyNQcxRLGLkODo4WWsYNU7KeGHvAJDiEkEGBEC
    AAkFAkEj2MICGwwACgkQHafbxJbFIh9+8ACeNr7M+KLI/eWu6Nig8877cjrEP3QA
    n1Kfo14Pijwx26kysheLFV1jutrq
    =IfeN
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.163. Chuck Lever `<cel@FreeBSD.org>`

    pub   1024D/8FFC2B87 2006-02-13
          Key fingerprint = 6872 923F 5012 F88B 394C  2F69 37B4 8171 8FFC 2B87
    uid                  Charles E. Lever <cel@freebsd.org>
    sub   2048g/9BCE0459 2006-02-13

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    mQGiBEPxAWERBACkn7HyvqMEJbJcf5eSJ57WR4Xoo1PU1GIsAYhdFhDOvmeWRZcH
    kwUyFyol4X3P7RyibrvZwnvc+nrqXqATzVeDHT2NhcTTeG7fq4E4a3VpdqR10uV5
    nswMRw/Arci7vuAQnmHzOYfnNP1ng6qLjA/CUizQ01WakhQeHGtbM9Q5XwCg2GEW
    H6d78/rWY2Lb2wo6cS+9Du0D/01cO9zPg+Mh2T43XdLMjnVp17jR99SuNajqJbBJ
    pNehq8yA6wb3ahZPjKtXpgELu7YI7omxhqcq1mxKvXa262aV72qdWqWoqvZzX0hU
    lOckg6Q6EO7qGvU/jOY02/tmHdzQy6UJzHB7JVsfZ9DGH5xW23AYmbD4WF8jXtyL
    Ey2eA/91IZpxEK7guIBt0FE0qMSCh5VOOlzOQkV+KtLswzEVPOWw/93wGpd/uilx
    jZESPZ70cSWuCWwY15FEFts/gs5gPhCs1h4asQI0Shft3sgQrBhE1/hg2uENccHR
    y1Af75hwezkwFkE2DUXFQqLuUlGu0sOtG+b7+IPrYuaGAB/yBLQiQ2hhcmxlcyBF
    LiBMZXZlciA8Y2VsQGZyZWVic2Qub3JnPohgBBMRAgAgBQJD8QFhAhsDBgsJCAcD
    AgQVAggDBBYCAwECHgECF4AACgkQN7SBcY/8K4dpvQCeMv7yFBMFOPxa8lF15IYP
    8LRYjaYAoJyIupvj/RgaM5zZXZdPUS+gro9SuQINBEPxAWkQCACPOzcRL0LbFubW
    3c8aJODeBG91aQRPz+ndMItFW6/+CW3EmyCGyaG8uxdtY0SOx0yALj4PiSj35s8u
    wqfsWFRuNixODl9lE8ihq4d5qfeiwpcAR9wVNwgnXD9boKXOOFwb70W+9pI/I4zX
    igHFxZQpndROhIFO1RLdoBlB89vV5iX/qzPKHFfmbbIkY4zvAsvW2MCly1WiEC2y
    GT5GJTFZgko5/VBFzb3VDvA0grCGGTbHK1hnfuuvouQPnbuawdSZO2XGMc2pFcKW
    gh+fgdw5Y/oQZelJKhLaL8Lz27buTz2sj5O/cYv5n7wDD/kSnb7+pd//qagox3JZ
    bGXKTED3AAMFB/42KW+FULr4keaGuhAZ07hrNs73Uw3QTTNIUYYOkSJVvgold8RX
    HMP38WANIkHtB3LBaZBxhqAOp2R5AppIPfyDrp1q0lTOGpzWfsQNQd10KRsXZGkf
    K6INVa6kpzQhNDxBUyLh4onp7hZyt9zXdZrfYJLexbxrxkP1LDRDNJJAY29LnVR2
    vyDHPrB6mmgijy07S6yKwC6iJIRoU8w4X3xFqIQ+KcA6VBhXqtqxSjk7GQnwyB7Z
    7l4Qg8iZvX5qj753w6BDEwDtXlCCbocDVsu5xcLRPwMN8BgH7XcYCwmZFEU7IgEk
    RAhqiHsjpnO7al5a+HQJi/KMOs5aDfwdkI48iEkEGBECAAkFAkPxAWkCGwwACgkQ
    N7SBcY/8K4fTZgCgiVDpYWzuROUmau+CUT/UVCatpHUAoIyg/KnHhe9PUB9Gav5+
    /KWhtyRy
    =T2Vu
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.164. Greg Lewis `<glewis@FreeBSD.org>`

    pub  1024D/1BB6D9E0 2002-03-05 Greg Lewis (FreeBSD) <glewis@FreeBSD.org>
         Key fingerprint = 2410 DA6D 5A3C D801 65FE  C8DB DEEA 9923 1BB6 D9E0
    uid                            Greg Lewis <glewis@eyesbeyond.com>
    sub  2048g/45E67D60 2002-03-05

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    mQGiBDyFNecRBACKn+4b36n2/e55yTfpLXS9a57gQNgx0WXBfbK9LMLf2D8otD+0
    z1DW2eclAOwJVtPftjvYP0HKFVC8Pes9Wvp6Z0sIEPpdkL2NPlUuxXUyh1b92u7n
    Bpt7Uwsom88fnn+BOPrvvPL8Arg3JBen+Jd8o9yRoABCYku8vQF6CEUDcwCgmHJd
    9hZ/kRb1rLdSLssB4VMQ3zED/0/SVm+6XV+2ObXn9FKQpCC6sMSq+PCoR9NzAVRI
    njTtkpyR0fjJZr69IN2E2MWPonv38Xg1tWJnR3fKUOnNqwiVHBQKKrKa9lGWsZQp
    TrR+ihtJ9hC626dCq9JDb1Ls7TXn9ha+d0WNuqiwugto/myHm/GVlCANhGzUuDNU
    Mo27A/46YEAMuhSQWOxgSZ/Z5g0ybgpswVePrxvD4sX2/AVfKClOYpPiNJe+S7YT
    JmfIPkpP2P7v+87BaN/uWgaFmxlhpUOIuat44w52EwwGB+K24cGgq52XncZsYTYH
    SrLitkRtt35tVdnn1v3gmDi83M8W/YunflpeJAgJC0QzxKuar7QiR3JlZyBMZXdp
    cyA8Z2xld2lzQGV5ZXNiZXlvbmQuY29tPohXBBMRAgAXBQI8hTXnBQsHCgMEAxUD
    AgMWAgECF4AACgkQ3uqZIxu22eCkCACfUuNYpGGlFboDl5FZeXlor/k/hogAnjyq
    /Vw8amjEN34PGuqBPQpMnFrwtClHcmVnIExld2lzIChGcmVlQlNEKSA8Z2xld2lz
    QEZyZWVCU0Qub3JnPoheBBMRAgAeBQJA/XNpAhsDBgsJCAcDAgMVAgMDFgIBAh4B
    AheAAAoJEN7qmSMbttnguMYAn14cqGfabS626P1D4GMcSkSagzaZAJ9LyH+vMrfn
    OI2x9+VLyaTSAvm4zbkCDQQ8hTajEAgAmuQukPFaefkzE7DTIgSDIc5vRmUHDs01
    bGp36R7f5GEmXwNtCZ+Mf+H54QSzuNh1QaJ6Nq/iYd35LA03/I7AgUFwSX1cEc/n
    fNjxqS27CAab6nIt9Syb9WAAKUKDMwZCjHBNv49CAPyVVb1aTUCJyUcv1gGSMNHX
    r2bkWpa4nIN4+rqD3hifHCX1j/2XMkmYY8NCVTY52zqO4sCbh+ohAMfYtW2yV2Iz
    z4ngppp0fUbmlGV6DVvTC1Mi61UCDkhO+TZFlE3qXeGlP5GR0SbpdQmPiI0Jpinq
    Zs43gcd2xtiUBM7HAMoQDpyFirDuyDKUgMWJrtJtAwWa4cf4Luh/fwAFEQf/dqpH
    bl48tu+REAPrjk9NWaGVqi1vv0r4LJXo8db9aGxwwAzKXDhwqHo69E6l4/Rd+hsa
    sIJE7vGNbGK+uerTg/W3jot90MqraplXHuS54TjOMyzWSSG7S6ypmDf5YnK3xQE4
    NfTYvC2GxphotkE+QmBzmeft/Mo3opVYlv3OOBqiQoCYB348rXczxEUPam3bFBw1
    wp5XjA0kqYRcUbxNE5AK9c+g6R2c/jT96EnDZDpMRCNZiAKHFLEjtHy66BiVHKvg
    tijWD0kxtlWV8KAKN6OhUpSSsCv53jsCIntNARAVENOKOV0RQVDfJgykeK+3eeNr
    UdIjAWFAWcVOEw5TQohGBBgRAgAGBQI8hTajAAoJEN7qmSMbttngHb4An37mZU8r
    E3SGCAlTJCLV1JxRDXVyAJsFBVshxisn1GycdT3UCwcJVAHJ5Q==
    =bx2+
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.165. Xin Li `<delphij@FreeBSD.org>`

    pub   1024D/CAEEB8C0 2004-01-28
          Key fingerprint = 43B8 B703 B8DD 0231 B333  DC28 39FB 93A0 CAEE B8C0
    uid                  Xin LI <delphij@FreeBSD.org>
    uid                  Xin LI <delphij@frontfree.net>
    uid                  Xin LI <delphij@delphij.net>
    uid                  Xin LI <delphij@geekcn.org>

    pub   1024D/42EA8A4B 2006-01-27 [expired: 2008-01-01]
          Key fingerprint = F19C 2616 FA97 9C13 2581  C6F3 85C5 1CCE 42EA 8A4B
    uid                  Xin LI <delphij@geekcn.org>
    uid                  Xin LI <delphij@FreeBSD.org>
    uid                  Xin LI <delphij@delphij.net>

    pub   1024D/18EDEBA0 2008-01-02 [expired: 2010-01-02]
          Key fingerprint = 79A6 CF42 F917 DDCA F1C2  C926 8BEB DB04 18ED EBA0
    uid                  Xin LI <delphij@geekcn.org>
    uid                  Xin LI <delphij@FreeBSD.org>
    uid                  Xin LI <delphij@delphij.net>

    pub   2048R/3FCA37C1 2010-01-10 [expires: 2012-01-10]
          Key fingerprint = 27EA 5D6C 9398 BA7F B205  8F70 04CE F812 3FCA 37C1
    uid                  Xin LI <delphij@geekcn.org>
    uid                  Xin LI <delphij@delphij.net>
    uid                  Xin LI <delphij@FreeBSD.org>
    sub   2048R/F956339F 2010-01-10 [expires: 2012-01-10]

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    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
    =A4bU
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.166. Tai-hwa Liang `<avatar@FreeBSD.org>`

    pub  1024R/F4013AB1 1998-05-13 Tai-hwa Liang <avatar@FreeBSD.org>
         Key fingerprint = 5B 05 1D 37 7F 35 31 4E  5D 38 BD 07 10 32 B9 D0
    uid                            Tai-hwa Liang <avatar@mmlab.cse.yzu.edu.tw>

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    mQCNAzVZoYQAAAEEANP5N0PqWEDO1ml4yfxXCQ+hEhaXyaGyNboh6uLX7uNPXQTI
    9veETXNd20Fu+8yuzVFJk+KmmGerUzduHLXm6q+szHBvEQoJ2ZGk9AL9jj2JjFRj
    rCRsf6mk8SWuL0xDBTu04bZZ2ttNDxNiymNTqdBVZmX6Mdg/T2i3mv/0ATqxAAUR
    tCtUYWktaHdhIExpYW5nIDxhdmF0YXJAbW1sYWIuY3NlLnl6dS5lZHUudHc+iQCV
    AwUTNz0HC2i3mv/0ATqxAQGQ2QQAww0WfeHFmupfTBWWdmNSX9eCDIfN7Wsuiu54
    DgCi7T7ixQa6reIsMAKx1KHNX/GSBr+t3nyHT7N12Ee09qKXywQAw9W2nrdMGE1V
    nENHEFgJtvnoN76U1goANEfZGnLLhyuDoMyZGCZmVG6FiV6EoKrWxfwq+jV0Y9K0
    3AI/Cny0IlRhaS1od2EgTGlhbmcgPGF2YXRhckBGcmVlQlNELm9yZz6JAJUDBRNC
    H/ubaLea//QBOrEBASTEA/9H+78uZl6JvHwGKOXyZkrRCLTUgifJcR3thVfynGrM
    AImheJwqgVP7FQojDk8xBCBQ1b3tpwpeRPwE0V/Dr5MkFLfiaVgCIfMibqcc9zuH
    i4RYcRqKswiO3pFeDMyHiSxylURcHfx73CYijIDyG+HPiCQ4OGd95VJywUzOVddn
    +g==
    =jIT8
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.167. Ying-Chieh Liao `<ijliao@FreeBSD.org>`

    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

    mQGiBDpaoxQRBADcF3xUpV2Vs8pV5QnfwFvTzBY1fnczFB149fe1+plAQEARu5xk
    Dn6dpnPw9CM49eC0ouEYwPByhICcSwlUGBgxKsOqGjlkIlge9vtQdwI9i4xxHv+h
    OxTyhdHYI8hQjyFJaQNmzim7SdfX8bvx5bcuNV9n/sVIsKoy5rbXo2rWmwCg/+rX
    A79Ki8IORrhyEGd3+JS/rGMEAKpXT8Z6MNOJa8xL2mrVd9ZlKDMSZXPMxYowddI3
    hZQqjtbssHvB6qpmbrQ0geNF7aaBCIAnVR8tAMxacdSBpbz0ittXA9i86gyjMri5
    6xSgd6CrdcbibDD5TIOSBeYcFBb+4UkZ85kQYil/gcksp81NZg53H5eI5Wrw6sBM
    /nYCBACEGldPZ2DdUPPvsfNQme7N4Yd6jS3BvXbXhqCYfHiCNiRS09fcLGEnO4br
    6mQ9/K8kLx7R7GXSNOevoMNLLJ5kc1DIFYXQeS1weB86HY596nNqn914C8UWhcoR
    wZBv4bkgZpAirBGPvrO+Z9YM3B1N0a+xu1rZzYSsBya97wsverQkWWluZy1DaGll
    aCBMaWFvIDxpamxpYW9ARnJlZUJTRC5vcmc+iEsEEBECAAsFAjpaoxQECwMBAgAK
    CRCsxgFlEcAjgrpCAKCHxIaNLyp4tT6j2UrFEyINUY1apACgnv8EuncpGD+Zm+Em
    o8HOKUG5Mv6IRgQQEQIABgUCOyeEvgAKCRBr2cjSd5gysdAvAJ92xR6Wv4jg8DBn
    VMypazvpAM7fNwCfbsK/olkpB8NQGt5YaixPvu8IWF+JARUDBRA7Mhy1w33D30O5
    lTUBAUx9CADDyga+ulzenkEpaykTu8FPJ8RS6Dj/2K1zROfdoKNPzTWZeHrGM9FM
    bPsZ6Vg4tJJKacr9WblfRNiUf0KIStU4ogFMYcouEWJ7Fvc6ovH91zB0WOzACVGX
    rjJc4TUNe6E33XotLW2fhpEWZoUNJxMa9uux5i6YRFXSpyXLcu+tmSDBGkjdyRZ/
    VsNglwfQDFtI+MqIpHQP8NpJSqeTxDdrLLK3+bDcxNDqzqVmOZ4Y2Mlzej9pxPBY
    RYbOs6aORQkDCOC8fhYixI/gu4+hZQTkr/Dp2Zev9THwo8wjg52Pd3KU9Y4OoMtO
    fOdB6z0dLzGbWUXaealBJujEufBPPVCwtClZaW5nLUNoaWVoIExpYW8gPGlqbGlh
    b0Bjc2llLm5jdHUuZWR1LnR3PohLBBARAgALBQI65Sx4BAsDAQIACgkQrMYBZRHA
    I4JFIACfWI/enwLh44kL6z8mQtwE0Q+iSlIAniahZULNeHsoE3sNcfcsCFNafw8Q
    iEYEEBECAAYFAjsnhMIACgkQa9nI0neYMrFpcACaA7k/1m9DqK0AvSBZsSLL0fwo
    zmQAn03jRr8opZGMVdivbmi9hkHiRwAgiQEVAwUQOzIbycN9w99DuZU1AQE6nAgA
    lbrIYTH+p+v/bflh9gp6o/KUQDVwx9TBZBVewogyWAYf2uDavJ+m90oXVgMu4H1W
    DU5spmtn//R62TGoiS8vPOOltsfNMCgTCIrxKHEUQEXMa4rVkiI9NGRL6tdDnRgq
    P3lpg4eP6/bF0zxcc3s1l2a2WeK7+WYtOOYU9TCcebsyiHxvWuev000rQtRUgeHE
    jCdaAVuCUlBD6f9MUX+Ww6HbWwFJYXkMW2Ga931MS6qf5xcuhyh4JHI/YLwdiOoo
    mdbUbXTkU+r+od0iB4w930sxwjnyGO2LfTxcIA7fgeALkmNhWwVCZjkQ0iGR4LEj
    1RHvahMrU6qqX40xgz8/dLQkWWluZy1DaGllaCBMaWFvIDxpamxpYW9AZHJhZ29u
    Mi5uZXQ+iEsEEBECAAsFAjrlLLsECwMBAgAKCRCsxgFlEcAjgq7JAKDwmq2mVJwr
    pFHaVsrfJZXmRSqYvACfTC1DhXwEm8m1aFeRhe9N6LUPtyeIRgQQEQIABgUCOyeE
    wgAKCRBr2cjSd5gysV4tAJ9Gt7y4bVGlm34MRdurQdTsEmQ64wCfRgI2kGaanklo
    IySQ2tNH0B0s5UaJARUDBRA7Mhy6w33D30O5lTUBAVNYCACPSdTc+y8xnOTAO69I
    GxWnVw7n4ZP1yAOFW0kWXDlSrzxvuBzkaYYe2q5tBiTjc38j8L0m/GvIAToFZKGG
    XxNbY7IGhTP/sZBXei7960cUZEJqaTHIrJxALXeyYj7bQ8OBtLsuJpG2+7k4c3+1
    M8t/k4DpVx2L9IgtvHTwIOH1MeJpH526IUXDipNFaRTPKUHE1exKOd7z1zyGgE7e
    x0+X2cTckTFzy8NQgZFzAkA06HOYjQf8i/IOvp84Svozfg8NH2KriC4MA5a3rD4G
    n6fqtecPgMrcG+KIHJYZvg3yToceFJkwxZFcSGtl43pprgSf/pqkZ1fodcJ7Llf9
    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-----

### D.3.168. Ulf Lilleengen `<lulf@FreeBSD.org>`

    pub   1024D/ADE1B837 2009-08-19 [expires: 2014-08-18]
          Key fingerprint = 3822 B4E6 6D1C 6F71 4AA8  7A27 ADDF C400 ADE1 B837
    uid                  Ulf Lilleengen <ulf.lilleengen@gmail.com>
    uid                  Ulf Lilleengen <lulf@pvv.ntnu.no>
    uid                  Ulf Lilleengen <lulf@stud.ntnu.no>
    uid                  Ulf Lilleengen <lulf@FreeBSD.org>
    uid                  Ulf Lilleengen <lulf@idi.ntnu.no>
    sub   2048g/B5409122 2009-08-19 [expires: 2014-08-18]

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    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
    L1JhS/1K
    =sCn9
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.169. Clive Lin `<clive@FreeBSD.org>`

    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: 2005-08-25]

    -----BEGIN PGP PUBLIC KEY BLOCK-----
    Version: PGP Key Server 0.9.6

    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
    tF/cItKqIqZ9RhFcg+IisxgUtQ==
    =g51D
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.170. Yi-Jheng Lin `<yzlin@FreeBSD.org>`

    pub   2048R/A34C6A8A 2009-07-20
          Key fingerprint = 7E3A E981 BB7C 5D73 9534  ED39 0222 04D3 A34C 6A8A
    uid                  Yi-Jheng Lin (FreeBSD) <yzlin@FreeBSD.org>
    sub   2048R/B4D776FE 2009-07-20

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    mQENBEpkXvABCADnsekA8rnN29OpRPBgLBo2RzYI3b+FCSkPqDatHJuGSfTqFUgi
    2WI8QItI0toqcePNpNtgyHie5jqsX3/yFBRGO1xyCSIEMSbMiOtZZizYLqlLW9pZ
    seNxwHBetogToNoveYHXNGsrptkqir5mx+vtSO5o6DFcDZYQRgZq9NTnKnuJkYwK
    wnujkHcTpUVw9pmnwj6ZxZ5V8fboCzd9ET1SmWH6194tpJ0Fq/HX9qGfF/c6Kl+e
    Hwz7TFi/hpMwsdwjz07SrDi8bumuWNpwZprOzHKORbHfdg3GZaEPcLhF7qjvYunk
    osYrnyUmz7+FpTJVg3u2Pp3eL0xdXU4TuwTfABEBAAG0KllpLUpoZW5nIExpbiAo
    RnJlZUJTRCkgPHl6bGluQEZyZWVCU0Qub3JnPokBNgQTAQIAIAUCSmRe8AIbAwYL
    CQgHAwIEFQIIAwQWAgMBAh4BAheAAAoJEAIiBNOjTGqKQTYH/3kkQL00ibVSNCHH
    2VNfnV9tyIDBIorMHFctEZ+zTQ/mQRxXUS3gpD9pg4nYNJtrstIWxH9Y8GxDTjQ/
    pJsVbZ6WcYXANwihoH1jQetSR4ZZDLrVynSWQ2WeYg0XEedKxV6ZmxZQPAbN742o
    T8ehZpThFSaPVDtIYFh0eVnPkwsmR/mC5DQDGkwb2p2bsxdbkYCWLLRiS5buGFyZ
    iHZSe+D+mRJq5kxZriy2pSXcQUlqZk3jvpC9mXr8QzAwyzbPwHRak5NNuQxxCJGh
    CBDzTSB9OsJrLd7WOxISii2k9ZszP69EymO3wTpSnoCPyUllOsdMa0291xv8kw0c
    3ytWz/65AQ0ESmRe8AEIAMYk6s/25zGN9qnfbTjwtxPD2/K5AeyJaQ+kZ5kiOZqn
    DlpMawMccq+yvh25oX3j0NUug4j35FKFZqnzpLx4KizbJjhZX+V826lVsf9kx6mR
    UmpYAlOb1qQUZMuR2+41eVnuieAqNyFH4pjp2zR6mhaoI82a1AMeOdhVOLfTl1+Z
    mj2sL+1J+fkcBxuhMEC30elVKxuQo/8NphZlnZe/819Q3HDsuw2mEiQMWH2y/5B3
    aSpm7/LY/L13YI8oUNWZrvjJZYSYyFyhDryzkP60251Dhfwlu2792Jt2Y4dm/zVW
    Yi/QpUdoPLRqEQjipiBg1sWLH1UGYys4muUxBoUQItcAEQEAAYkBHwQYAQIACQUC
    SmRe8AIbDAAKCRACIgTTo0xqimB4CAC9MJzYzpUgnlhh275aZs6pXJnK9dty7HpQ
    zJ6UpoR7oBcmYivlAXaFBB0jxsAAzu3wKXwC9IOZZAB5y9keXWkG/2zdutJJ687a
    HAjXUUPi3QIF1uPGgvpEQPNfn+Gki8c3B/QOCVhKg9UEtewRzT8tZqCubeZLmc7L
    NbNX5xOta92KD29XOCXX+6htRJ3aBTn6nNzRdBpuVxKhzd+eLg4gRMKJebDfDXrG
    fkDmHta2l1EdhlLxyLCvLd0x0mMGS9rMBuEaTvc5hka6YsM7hhGMZe//CjCO8mGl
    CZyUepEymoFG7nCPpMTgZFxCHzOOljsoaEeOxg6aS2kNv2sTcDkJ
    =cF/N
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.171. Mark Linimon `<linimon@FreeBSD.org>`

    pub   1024D/84C83473 2003-10-09
          Key fingerprint = 8D43 1B55 D127 0BFC 842E  1C96 803C 5A34 84C8 3473
    uid                  Mark Linimon <linimon@FreeBSD.org>
    uid                  Mark Linimon <linimon@lonesome.com>
    sub   1024g/24BFF840 2003-10-09

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    mQGiBD+E2XERBADU5F4DbwP8KaHN1H+yz8zaPjOSLJushNA8Qu0hN7GXqd5vgRDc
    zzzeZIzVVxPVdrQ+I24UwSIYu4ww6nfum6kRv/i5khxbYM4zGGPG7s5pmqIECum1
    tKvJ21IE823lcJtUp0C4qhCTZvoc3lADMn9cPgOSJClzHjAYDasOTy9hhwCgsTqP
    aHntu6Uj3BYpurWHJSePWrED+QExF2asNPehIOZ4l7dwpaeGSTxeINH1FYnlF+J1
    N8lvpFQ2H3sfSViVgAtqM27Y/jOf3EkQH0Wym0iCczOxEUFbNH5NWAm6IOVT9owo
    tkh2PZgyfN0AJZBPh9d/oMN2MEKPb6wcqr3c67ZmQG7B+LGliBSVYhWDbd6E2YHb
    bvKVBAC0pL8fzNldEQUUYDTTrWhMVCr7IGzwrd6cEhIZ6b5kqQd1IsIChVG3jCVL
    wWGSgmXY4J7i4Ujsx8k/f6CluNLwmP5t9caycz32QdJAWkzQq2x4AQUy56HDbvui
    QFOqD+PGWqvoUUyJqLbzoASI5dcV35OY+m37Z1Wxhsn22WBE0rQjTWFyayBMaW5p
    bW9uIDxsaW5pbW9uQGxvbmVzb21lLmNvbT6IWwQTEQIAGwUCP4TZcQYLCQgHAwID
    FQIDAxYCAQIeAQIXgAAKCRCAPFo0hMg0c5j/AJwO+VSVExRY8saToDKF3hVe4wNE
    EwCeKFf5ysZjQIJY3pJ9tUzm8o3tX+i0Ik1hcmsgTGluaW1vbiA8bGluaW1vbkBG
    cmVlQlNELm9yZz6IXgQTEQIAHgUCP4yK4wIbAwYLCQgHAwIDFQIDAxYCAQIeAQIX
    gAAKCRCAPFo0hMg0c8c4AJ99m0hHLctAVXjfZYurZBnl2dUL7gCgiG83BXm30rBa
    POtWm2AstMb6uVm5AQ0EP4TZcxAEAMQPPoRMfBR3cRc/T5NsWunFlZA6nB+3BkVd
    p0ham4FoseEh7q+hqa8udARMpTc4LIIL4FU6lIa4L0s3Z77d4bXfJmwlUHuUMSk0
    tnG003D4VDBc3HWSSX/W/CRyN+OBxPljJywTjI4goyXx9Lc31qwpGqYy5Ao8X6EA
    TT9g3IgzAAMFA/wMgON1JxPGr8MSvSLHLMY/xn2PR8lSVZmOlbhNE5hL2FzyFME+
    Pnc8hR31cohFjSXR7hb6SOWrZjYpdIVsa6qdqXIRDbcb5sKEGv9959W8yt+L/kNr
    RlN3oExA2pkYpEQfLpH0HdMmbU61NR0cI6p4ZZly4p6JR0kEajaUOlq/cohGBBgR
    AgAGBQI/hNlzAAoJEIA8WjSEyDRz9lwAn0pJVzrxxaB/PqtJsu034bH5PnlDAJ9G
    axdzE7A6F/UPmrURep9QFDq70w==
    =GflG
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.172. Tilman Keskinöz `<arved@FreeBSD.org>`

    pub   1024D/807AC53A 2002-06-03 [expires: 2013-09-07]
          Key fingerprint = A92F 344F 31A8 B8DE DDFA  7FB4 7C22 C39F 807A C53A
    uid                  Tilman KeskinцІz <arved@arved.at>
    uid                  Tilman KeskinцІz <arved@FreeBSD.org>
    sub   1024g/FA351986 2002-06-03 [expires: 2013-09-07]

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    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
    Gmh0dHA6Ly93d3cubWF0aGVtYXRpay51bmktYmllbGVmZWxkLmRlL35tbXV0ei9z
    aWduLXBvbGljeS5odG1sAAoJEN6Fg/i9v+g4CnoAn2xsBlhU4Ar0ometcbozgfIU
    ifvNAKDHthneVq4UVMN5C0Lp/w79iovplIiMBBMRAgBMBQI9BRkQBYMDuSWBPxpo
    dHRwOi8vd3d3Lm1hdGhlbWF0aWsudW5pLWJpZWxlZmVsZC5kZS9+bW11dHovc2ln
    bi1wb2xpY3kuaHRtbAAKCRDehYP4vb/oOOKWAJ0SSTs2+mxevjqnan14AOzw5GmS
    ZwCeNlwGUMiPZzQ7Wk8Rc4qzkElJ9CmIkwQTEQIAUwUCPyFXhAWDAZznDUYaaHR0
    cDovL3d3dy50cmFzaC5uZXQvfnRob21hc2IvY3J5cHRvL2tleXNpZ25pbmcva2V5
    c2lnbmluZy52ZXIxLjAudHh0AAoJEKR5zcRatGBq4DsAnjYo4sY3+i+OfER0cPvH
    PNFweS0AAKCTKLfNHYbegvlreeK3itC+KED7EIiTBBMRAgBTBQI/IWPJBYMBnNrI
    RhpodHRwOi8vd3d3LnRyYXNoLm5ldC9+dGhvbWFzYi9jcnlwdG8va2V5c2lnbmlu
    Zy9rZXlzaWduaW5nLnZlcjEuMC50eHQACgkQeQV2j3WE9dj0JwCgquNEDw0PfLpP
    VpBKBFl4l5i78sAAn2wl5MUyTa5HT3xINEJRx9N4oLzFiQCVAwUQPSLOeb1ApukP
    zoVJAQE8lQQAiCSul7FIad4Pder4RTB8ow2nE52U4W0G0mjD78CBaETZOHGJuO8l
    lrqnx/rYDS7rsAL8Rj/v5YrsYOBbPY/6s94W6Jy6iWijwccQJRw91CtGueCTab9E
    sQE6WQnp1kxDyJC3FMytBchVE+gLmcn/7MhPnWj05xA4wLS5N0maYEaJAJUDBRA9
    Is6DvUCm6Q/OhUkBAbbpBACdcJbmmeUz2kxRjtB2dBr3l0mVGpIMdVMC/NaKqHqk
    5gxRm98cOnq2we9PSBI7H5xBmJSqX+ZJHRVUSDzoGaJ73A/yPFi8t7Q9MRMb/Xep
    w/bEx7jsvV7Lg+tXRedxG/gMQ5E8KS6CXRtQIprLUGQJ/rOA/wxylXPIUMGNaiEb
    moiiBBABAgAMBQJADIE/BYMDwb/PAAoJEL/W7lhX938JNtkD/3/2RKm28v6btjL2
    UrCJg8LjxoqxSOdU6N5SLplZ2YOef3+gZUTZSsYT1K4XvPoBvPif+6zd0a9bFp+f
    P2j7SGMrlhHTd6+aDQ/BHaEZzt4dY2dfFcDNyvqIKeOTXw8/HR+dwryHDNwRcEMO
    b00IPVjfVirOcdPNbn6jYP1LYnPniKIEEwEBAAwFAj0je7wFgwOawtUACgkQxEaR
    6Lw5pc2SzQP5AfSuryok2VlAgquMdE9fwF+A3bjTWs6TVxFkXdInfML4Ur+44z00
    p9kjkT5IJrEebMZqYHsnyNix2owkgAyddONo+ldGAyzTUYwEWY6IY0km1n97Tnz2
    f6SSOYNqHVJ50h3jxsclD5sHBiH+1OdDCCHyyzV/gL66y2JTbLZhbOKIogQTAQEA
    DAUCPSN7vAWDA5rC1QAKCRDERpHovDmlzaE3A/99qZ1tpSrkk3Mp/Hkbwdn/cbKp
    YtkMfm4yQyjaeRL52CrOtVVK68DobMTaRz+KYTOhI9QMhkwSn3sxFpA7YmJ5NcQb
    w9lp4UU+42+KNj5szfEM/C+tDOyMHjBw4sgBXvsyY5w05SLXMN9KU48OChg8TWKy
    LCaGZybsl0FG3D5zC4iiBBMBAgAMBQI92qAcBYMC4551AAoJEOUVKCUzHNpdbL4E
    AJNRKdSx9NEU/zO22hbv/1J0NoGpeo7U3CkJZKbfuSx6nB0EXNHq4rZwcouVIR0Z
    c/KpKLXZlKW5OEHuqYtqctz18g3KiF4jY+1qlZqzIg1Ybmm4xuq8+040wbwpG/3D
    sCgPxPlqvRGHeOwgxWIWngmiYm7WmiQIKQAoy8HTgbSYiKIEEwECAAwFAj3aoBwF
    gwLjnnUACgkQ5RUoJTMc2l3FHAQAki+C6EKYQRullCePZ2GMJ8SR54xI42JaPbSB
    zxpb684J/jabcr8WHHJvGXlapUmdl3vqlks5tatn5iFJvbE4qAPOdo6C5NXIpD5O
    SbHAocXj43QdrftuMVF7w1fyJBkWFoMrMZoa4FxiFLENbm7DknLebp1Bp282O/XR
    9R52PJSIogQTAQIADAUCPyFkiwWDAZzaBgAKCRAbsIu/KpIyJW/MBACnClO5+acv
    jHnfaUd53tcKfLkb+vWzMXWKNt37RG1d04bKqlkZdzJKT+noMBqflVf91rk3goPP
    JPDjwUtm51gGlSgPG4mPnhQRrUHwC8BM0lGiuB68Z1QdxF1iUx8B623GtPrJbfuf
    CexrAxIL6La7KosErbR1JXbjS9+d+M1p9oiiBBMBAgAMBQI/SiLRBYMBdBvAAAoJ
    EJugaRW/hasxbHUD/RqcGxjUaJgELwAfNcTpm86BsNL5tu6WJFe3DdIIzQTb27GG
    gbOfj5NRLFnk75xgQtk8lnKqsXQHMC6hm+pwh4ZGISBZE7NIqYokUSYDT2mbplDo
    2kDPyO2V1fWf8P5f8rI5e2QYIvn4kNFWidfQKh1Rw86MlZVIieVf8eVeS5qCiQEH
    BBMRAgDHBQI/FpZTBYMBp6g+hhSAAAAAABoAY3NpZ25hdHVyZS1ub3Rlc0BwZW5n
    dWluLmRlImh0dHA6Ly93d3cucGVuZ3Vpbi5kZS9+YmIvY29udGFjdC9wZ3Avc2ln
    bmluZ3Mvbm90ZXMuQTkyRjM0NEYzMUE4QjhERURERkE3RkI0N0MyMkMzOUY4MDdB
    QzUzQS5hc2MiMxpodHRwOi8vd3d3LnBlbmd1aW4uZGUvfmJiL2NvbnRhY3QvcGdw
    L3BvbGljeS92MS4xLwAKCRCrHktgRnVrHo45AJ0dD92uCPhsjLWrVsbhMJfwmkVO
    nwCglKPYurVXyo6uXC/Q5KdueASb3iWJARIDBRA9A+ZYlWBhpt2TQTkBAQY9B+MF
    dy8EKYP1mgbIXhZC8sScs2sSUsLhF0ZpSq6JcAMGIqjZZRSPfvDgt9Aqe8GnG6At
    Z7NXdfYARBq301Vaf1t/kNwVK0zcL3TswpGZ/j9Ao+HhJFA1ivPHb3zrazrmEluF
    HbbPHZ+33Lvx1APLw2AXP2ise5XmO/Ra52I5TgeNP9HJs1R+Qk8Pt+Pir5Efgego
    JngRgdySfvcFFo9O2Kinx1sV3a/KTzmP4kzmygsk2zVjTN9uLv/RV7U/MheTshFx
    IfQUxCFUofTz16Z5/nPEt2ePOWXQGPZrcW8grx6jQA3TnNQpy45kpBns7nWhvJAI
    7UWzBBdMaBwJUjLUiQESAwUQPQPtFJVgYabdk0E5AQEtVAfiArWPvzDkos9Y+cao
    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
    rkaqTKUHX//H3tjh1TLQibtBeo03sT15GlIo5mALPnSDgAvi+QhaIHPk2h6JAd0E
    EwECAMcFAj8WlgcFgwGnqIqGFIAAAAAAGgBjc2lnbmF0dXJlLW5vdGVzQHBlbmd1
    aW4uZGUiaHR0cDovL3d3dy5wZW5ndWluLmRlL35iYi9jb250YWN0L3BncC9zaWdu
    aW5ncy9ub3Rlcy5BOTJGMzQ0RjMxQThCOERFRERGQTdGQjQ3QzIyQzM5RjgwN0FD
    NTNBLmFzYyIzGmh0dHA6Ly93d3cucGVuZ3Vpbi5kZS9+YmIvY29udGFjdC9wZ3Av
    cG9saWN5L3YxLjEvAAoJEBmiaAmIOP2UOOYH/37HHgIRFgKc3iUWJWNUXOP6R/wJ
    IjKlaL15XgKCb4oPhHOnSbKTH1Fo49LzRgbE2hmdazesui7YdkNO8xIVF7CCQ5yo
    L8UeuAaJ1ugD6tQpOqzB+gi1IeeSTjTmbD1Z5kcojO6pi5M+OV0Repe3RDp9RHfh
    LZznf111JJPZ+ZlZmKEqjvBN9VivW1l/gje2DOSjhFsqRrWRMI1o3tusnUuezGy/
    6palleSR4HHMWb5yLXCFEQhGUJF374pnXRR4E7x59mM1BEnoy1lpPaXY2MAy061R
    VihBCnrZTwxoZI3gZhSXHoR4aWJUbbkHEinblqoXETVqjFHfg/nHGij/S7i0L1Rp
    bG1hbiBMaW5uZXdlaCA8ZTAwMjU5NzRAc3R1ZGVudC50dXdpZW4uYWMuYXQ+iEkE
    MBECAAkFAkyHxfoCHSAACgkQfCLDn4B6xToDhQCffcmZ+r5hP4pC8qiLaN5mknoO
    mEcAn1ekKjPCD0ObOhnSNqWiA0if7HkviEYEEBECAAYFAj0BJlsACgkQZ8MDCHJb
    N8YKfQCfbqneeSuRkRWo8Pt5AJJhu68fH+sAn2hVhwowNTFTnJ+VWLoYINmwNopV
    iEYEEBECAAYFAj0B/C8ACgkQlWQfayU+WONzFACfQBGpIsi42s3iqv4aAzpXzlIJ
    NjUAoIfca9XSUulrYQecXPL4XT/yhK+biEYEEBECAAYFAj0D8J0ACgkQeMu5lRpX
    J7lbtgCgm22+HVBwhSTprdZHLeBLDEG39NYAnjcNHt8/vz0wknxJwgPDHV2Py39L
    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
    eZA9uIiLBBMRAgBMBQI9BRkQBYMDuSWBPxpodHRwOi8vd3d3Lm1hdGhlbWF0aWsu
    dW5pLWJpZWxlZmVsZC5kZS9+bW11dHovc2lnbi1wb2xpY3kuaHRtbAAKCRDehYP4
    vb/oOGeJAJ9Fj3VCUQIZk0qd9UGUEJIXBH4m2QCYxLYupcwjq5IpO3TDnf1pcPon
    SIiTBBMRAgBTBQI/IVeEBYMBnOcNRhpodHRwOi8vd3d3LnRyYXNoLm5ldC9+dGhv
    bWFzYi9jcnlwdG8va2V5c2lnbmluZy9rZXlzaWduaW5nLnZlcjEuMC50eHQACgkQ
    pHnNxFq0YGqazgCfaWuFD/Y3mWHymdnU3CL15fZudaYAoMYSpXJwS+IQh7rsdske
    4ac4u1oniJMEExECAFMFAj8hY8kFgwGc2shGGmh0dHA6Ly93d3cudHJhc2gubmV0
    L350aG9tYXNiL2NyeXB0by9rZXlzaWduaW5nL2tleXNpZ25pbmcudmVyMS4wLnR4
    dAAKCRB5BXaPdYT12CdDAJ9wa2zL0+9ucn4EEYye2ewY2ftnLgCfV0GGtD6qqswR
    XSX8xg1uVT8BvTqJAJUCBRA9IeIwxEaR6Lw5pc0BAU7xA/40Pz2+U1DqLqhc9q+g
    jGYaKbvB9cp1XD7TdtaZGQflFatqzjUWMFx6moDBNpH2ewJwERxaLFPIvl80Rwhc
    BVOanPYXS/Tk0AGwhsXYnNmSXQz5esxe9UIFk0NgZNF8je9vMOgD7+sNVu+3NPQc
    45XajKsoRq6i+vOiy48grLPrvIkAlQMFED0izoO9QKbpD86FSQEBPwwEAJyHvOQP
    xpnXgPRkcH+WBATeDfYACi8wRtYqpBHrUWo0i8x+05V9QWEaeJSauaKEhEoF5zjG
    0CQ+FZ77gWcF+W2AU3sBXXt3yK7hu2yVDu0dZ4V1ycN2d4LvV9s2X+Gig+lnF3m9
    n+hE7XkR3kjcvlToi7D1rAtQg4G5xJFFVxmPiKIEEAECAAwFAkAMgT8FgwPBv88A
    CgkQv9buWFf3fwm2fwQAsZtoL1euv11o+Jx/BSaxObERXUMTQ4WQHRh+uZSTWdxM
    0H+lLCvhBpquwZ1bTRKFnmb1JZTpkefUJ5h/ZG1MWBP8TA3vQMzVhwu5VrDiWehp
    8OK5hliRQKzXy7qiup30DbSB/bDo/70+jDGU1SclMdVWIAHB0RZ4+sMz0vm6LfuI
    ogQTAQEADAUCPSN7vAWDA5rC1QAKCRDERpHovDmlzaUUBACDoo52K7TgUbPWPP5O
    CCSXu3gq0MmsZkGa9ri/FQGErQB2UyxJlldsih1JHs9UDsxvcvi0PHS2d4UgAL7f
    Yp7BY64JfC1XA4lkrdrGD3DkYWDjkaGHwdzkXUzlTKro29bJvuqLtdSaEfmozp6o
    NyuG8I5NEIsY8Fczynj5or9PRIiiBBMBAgAMBQI92qAcBYMC4551AAoJEOUVKCUz
    HNpdilQEAJ2mlcltB/DyQtNOneX+qAQJe2L6fusQrfQxDg4c10Wk+66Hp3mvooRO
    RBJFOei1V1elBSrqwkihrioKVubPpHVVMSACsdbxf+OnCzp2xcEAlTca60RCk3Vr
    7HovwC3ok3FQYenOsjN1mim671DrEuShZdcXr28NmVbS/BxXdeBqiKIEEwECAAwF
    Aj8TM1MFgwGrCz4ACgkQtGuSO22KvnGBFAQAp5y1TghvnXEw0D7SVExX4YBjBc4W
    kjdYJNcPGv+e+lzhBQr4omRWfaXyJ1QI4wJhIOu9UAaeXncBRObPTawsD7bROf9k
    Cois/pPxwq8U76O7jHc0U1o243izjxloa52vlUVolysBTQ+9wbtB79YWCL76AxBR
    jZZ8ncq8IZ8AbrSIogQTAQIADAUCPyFkiwWDAZzaBgAKCRAbsIu/KpIyJSKcA/sF
    G59sCKxjoDnvAIy7tKe5zETyZg9esDUP3UE2EcLmP/ahWMPwAEU1Fm43WhKf96vL
    H94Td7rZisji7zxlU/6/g5z+iUA3zFBTJQ6O5WYVKGGRG/P2MfZlmAEUTIYYuPDn
    8Wo5lOw/eJF2jOAGAi7ILPeHhXxjjn72X1tqQuJOW4iiBBMBAgAMBQI/SiLRBYMB
    dBvAAAoJEJugaRW/hasxz+MEAJE2ZbBrCenJ67wVbJzITCAIgbC5s8K7DqHhEIxI
    RG/O2DbU1g3mgxbV+6PaAonnPvl+HEF3k82g217tPkTXYJuBrt5T/NgcwxzlkMZ3
    xUKZybz50KvxDAnKw5OIcpSnh2E7+Ja1AkBbzF5w/rYMdVKdlj11CUcEY9CVkwQg
    c0KriQEHBBMRAgDHBQI/FpZTBYMBp6g+hhSAAAAAABoAY3NpZ25hdHVyZS1ub3Rl
    c0BwZW5ndWluLmRlImh0dHA6Ly93d3cucGVuZ3Vpbi5kZS9+YmIvY29udGFjdC9w
    Z3Avc2lnbmluZ3Mvbm90ZXMuQTkyRjM0NEYzMUE4QjhERURERkE3RkI0N0MyMkMz
    OUY4MDdBQzUzQS5hc2MiMxpodHRwOi8vd3d3LnBlbmd1aW4uZGUvfmJiL2NvbnRh
    Y3QvcGdwL3BvbGljeS92MS4xLwAKCRCrHktgRnVrHlyZAJ9DfCRr/epketGKHgFJ
    qEtUpKY5HwCfV2vAA6M5/ECBMbzYgnvk0AyXR/uJAREDBRA9A+0klWBhpt2TQTkB
    AXlOB949F4PDm6NH+kr4CRk1ZBe9XPvpDwi92dtW8XbnSuQeEiTyuuhsh6hxznc0
    E6hxp0TkSyyQQvCkM7jdepYUz0YTcrv/7B3l8PcSm3LptluQmsuaoE1DNh9jrngL
    wjQlF31/4DIAAb8R5FDA2E2Yes6S0EwPHH3jjvaeYT16+krw3Lt2cja6vnmslele
    gCc8HvxqPRvOQAZJKg2cOwQyNz30yYBaFEcEKCFDmsAKPd95/pOHzaAAkYlDHrzl
    NBQ/9ieuApOGnWe5zrTJ4U7zmnJk1wSOpVQtzliOj0nRdVtPGSzAy71XeiDkwX1Z
    puJs+6WnAsJysZRF7xSe+8+JARUDBRA9A/EIAVW64qCU2iUBAXx8B/0VFgPg08KC
    1EjdkdTmruI5RRhnurqrEDNuh9zhGoc+DIx5OMBpKdv/FuBMLvHy9s4rpg2q94Nb
    4fCoU2vz8KJMyFvDIPlLwixriqBBeITPqSdJmGQzh3bNOJ7tBoSBzRg+TDCCPyI3
    zWnoZpnv5ASu3nDODiImcBaMEM8XlvR4ciiv44kg16C6d8TZ1KlYUyYzGmBA1Aiw
    IuPnZdwkmHL1OOgviBZdopLUNdxMmuSpoZC7fkUPAgvyHUIXdaIeHBsO3ddQADWm
    EuaA+dt74CZJ9kooZwFIiVLsA4sFja1yvmLO6YO0D/xTGYDj4ptoKO5/EiBLCJgX
    XD201rZI0LG8iQEcBBABAgAGBQI9J5ZGAAoJEIz2bIET3TlQgzQIALkMyL6w/Yy9
    68ah5KswoSokkuCsJj7VfqHBXcS3Wd85yXG0gIpbDsp3WhoMs5F375UkzdvQvZW7
    quInvn6wthKXeX7WxqhM0T8quUYcH1SDHDYRwsSvz9l+PaUdr0ynwhCMVyz256k7
    6vHQspnYktlFfH1rGLsgTRonFMeWZMp7BWRuQ6l9hwsKEC+rggdkhmaz6Iqq7Mot
    VdC/nqqm1I8bzMIZXyZWcRre1eGCGftAteHwB61kyt+WwGSFE6byeaS+Y2hjsWi5
    XCg+wOKAdP08ZU1w7BRGY9guaRrRGrRed/RGG4+Lzwl93EtfCVUharteVIKJdJVk
    Qc/32ACrzuaJARwEEAECAAYFAj0nlnwACgkQ/LriDKIR9e1xQQgAy3tOBRcTiaoO
    9WFAKbHU5rMVwaxfeAxgaozaWiOUDlbi9XfZgPzsMYxItWMhv29jbIfVRQXhbw9l
    ++2h6aIUdf4aYIVTBuoZvvdeOby63DUTxorPCg9nIRBKGQRWPPZ/WcbSfJD4+iMe
    d6ynjt31Yjb0UDVmXMhzFT69VQTHuG6HuINOgbgR+Z3OVqp+LZl+mWG0l7eQTufE
    t/lpN49LuzhFbx9TgmhPbdXG8o4zgR1sHSiwCMKunWrw75YU8FToBY25KGJYiBUa
    qEhSmcD74myVWQ9vMMDZbAQSSI51Z1YYB+4PPmUMEZ+eAZxof+sh3A71k7gh2exa
    tVglxj9HE4kBIgQQAQEADAUCPQTDrAWDA7l65QAKCRAJ6fkKinJORUrHB/0fX5mN
    z9MO8jAEnEOCWJdcDLP4aYyfema9l3RAWZd1wDt3yumhl+v9KXbGb5SO7UMeBuQq
    7DOALBsaag3FHjmpxmWvKSOk7rGHvVMxhB+krlZZ6owSSmSv87cjr2oZunGFk3fZ
    16/nVPWFKCC9ddKThNBjCZ8EsEk39PEE8w4KayDmFT7n+rsdiIAH6YK1ZgXRJb5h
    YQrF1MqhZA1IF0adWUJqjru0CTfG4blw9MdTZSjFbZzi25RtO5kaCnXwwwu4eJKn
    Ml70vEpyw2sLZlRVXQUZiyCYhbKhgyl38WjibUd20p9gv4ywYXZqGpMlTQXPlHfD
    ciXV95bLD9yyGtijiQEiBBABAgAMBQJCgPOZBYMBTU11AAoJEPXDIAojnGOETTMH
    /2fv9JiwPpdoloLpvOBUhQF5lDT4YT2AaDBPa0+4EEW5wVcYmyPlEHfS6u460028
    X1Co0qkeu2t2faUDoAxP145cu63N8ANU25p5z+imhnmK3P3hBUM8r4LoFaV0cfWP
    A2YP/Zvfvh3jmVFc4LsJQ8bFj6Sk2F+ZXxFEQMa7MIdNQWr+GkHo9seAoVwLcgj7
    Y+ejouUR7HnUtg1enVEZ4Gsg773lJY/WQQbg4CkAjgt2NtmkGtN62Tq1mxBo3Nyk
    Z/IZS+s7BsefA1nBQf7uliJU9UgJXDBIZ5pxq5nn1s2IC/5dMGg73keb/EZpuGsQ
    1emyVqUpjvLdbLfQlwuZ9NeJASIEEwEBAAwFAj8RDoAFgwGtMBEACgkQQAYVDkAJ
    6u2CyggAtD+Wo1MDSz8vblTtJKrKWPT/3mlrcptUtQDt59fsQb/RIucxOO+LZcIQ
    GfgqNL2hHAqhcHezCLKctSAPZQB8pyFoJ4MyZRht0QYj0KJkAyZ51t+nAPZeYMgJ
    IyB4jHAGt13QD3Bqa3ka4X2g+wK7xot6Y9Rex4dx6y85+lgasu3soD5+PbONZ8cy
    NGmes/lWfD6IqgR0xwInzc7J/dd3r0+M4/k+Z0n09qlPtiHRAkb41EZYn3uP7Ecm
    T7+oJ6PVIsLN/LEs0Xz78NCYJTbTErjIY1hXeK5dZKTBdO3n2f2fDl1EBNdLwqML
    5RvlJK/eovsZlNPQucmntGNf3uxFL4kBIgQTAQIADAUCP09yDwWDAW7MggAKCRCl
    oGDCbsJmbdG9CACRJkyzwLvby9Plt45AGskc0Md5H2FkfJMU0pn8jzQLoVSSLQm/
    OvJLrkdagUC7LG6Y/4+Dn9CkfPA+D9CYpl48CVQuW2uiQDkRMKW7kSAlK5E/Q2BD
    JtepnQWyDBzZY6y6JcwBhvQbiBqUf+LzJLgTFaxIawUWCBN7rG5onNUouMiKsqDD
    COXzgufcTX9bjn9529+KOXrvBF9mGzIXC0COgvHrFwWe88wAYpB7lgqTcjw6oty+
    Wk+fTYCH3xbahQGDBZ1yqsudDfjYJk9bhCluHxZ1eyT9cM928lGZ/pzjTgdrJYJn
    jDgsk0Kmba00brNWfnH25W1svk1qKh2lggYCiQEiBBMBAgAMBQJBJLCCBYMCqZCM
    AAoJEBto3PzAWWgj5MEH/2NonEcbTuHRk1WVg+QhoBJwZnEKYrrhnj5yU7jkqB9O
    QvMHcRgrTMUbUoKuppjVcO9C4rUfVfqnRj4of+xOcdWk44gfDR8OjTpBnyJ4EqII
    jwer4R3g7sgVSJfGLpDw9jlYxPxtCdaYlrf3teDdAGpbeQcnhP8sqN6Rq8zzB42S
    al9u9HJ4ZxOC/ZZ1AVm7qrgEeC8wFWKlMa29dt1cKO8ThB7O8+IxWTNQ9mGHQRZR
    JgvsFj+y4FSSZqI3uy2gn8nu68tqg4HvuzYGWw2og+9N+7VZYBxUQLi/gS4Oqyit
    QZC6psx/gPiXQ5LeRHMG8r+ErBLd/we5nxPGzqEcf3OJAWkEEwECAFMFAj8hY58F
    gwGc2vJGGmh0dHA6Ly93d3cudHJhc2gubmV0L350aG9tYXNiL2NyeXB0by9rZXlz
    aWduaW5nL2tleXNpZ25pbmcudmVyMS4wLnR4dAAKCRD5fPnjOkt/XVHLCACzW+/n
    SIi37z8LxLdd2svzce3PLJ7xXc49oF0SdoeuZmpBRo+4H5Zh7HZQ1BEsRBJykYrS
    IU+9pP5BiW1TaIk6QBUTIwIy3pDGvyI/oGpJPVa9wc1ZoiNjhfK8yDXY+z0Q6KJR
    ab6nbOymsZo2mRdCQ4EVo+YvY8lA+e84t1C9JbzBsi7yqAT3eQr+O9Qq8I4M+vlz
    VOq4iWqdRaGTq8oG0ChumQhbFNXwWrKu/A5NOzLFuF3l3vhMqbbJJEj/EZpdss8k
    yq8jTN4lSsuNvf5DyLSbzj2IOJMRN/hSPrBiOtriMr5aNDw0ADK54AUTy6+ab1tM
    iP3Hc/FNHFJ19F/ziQHdBBMBAgDHBQI/FpYHBYMBp6iKhhSAAAAAABoAY3NpZ25h
    dHVyZS1ub3Rlc0BwZW5ndWluLmRlImh0dHA6Ly93d3cucGVuZ3Vpbi5kZS9+YmIv
    Y29udGFjdC9wZ3Avc2lnbmluZ3Mvbm90ZXMuQTkyRjM0NEYzMUE4QjhERURERkE3
    RkI0N0MyMkMzOUY4MDdBQzUzQS5hc2MiMxpodHRwOi8vd3d3LnBlbmd1aW4uZGUv
    fmJiL2NvbnRhY3QvcGdwL3BvbGljeS92MS4xLwAKCRAZomgJiDj9lAmfCAC89hFV
    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
    uwxauGavfjau5uBBiIwEExECAEwFAj0FGRAFgwO5JYE/Gmh0dHA6Ly93d3cubWF0
    aGVtYXRpay51bmktYmllbGVmZWxkLmRlL35tbXV0ei9zaWduLXBvbGljeS5odG1s
    AAoJEN6Fg/i9v+g4CnoAn2xsBlhU4Ar0ometcbozgfIUifvNAKDHthneVq4UVMN5
    C0Lp/w79iovplIiTBBMRAgBTBQI/IVeEBYMBnOcNRhpodHRwOi8vd3d3LnRyYXNo
    Lm5ldC9+dGhvbWFzYi9jcnlwdG8va2V5c2lnbmluZy9rZXlzaWduaW5nLnZlcjEu
    MC50eHQACgkQpHnNxFq0YGoOEACfTsirMSqINACr1m4dUD2r9J7QGEsAoIM17Lgq
    BjEMuYeVxx26AO+WjhFPiJMEExECAFMFAj8hY8kFgwGc2shGGmh0dHA6Ly93d3cu
    dHJhc2gubmV0L350aG9tYXNiL2NyeXB0by9rZXlzaWduaW5nL2tleXNpZ25pbmcu
    dmVyMS4wLnR4dAAKCRB5BXaPdYT12O3iAJ9mZ1NU2WVpp9du8QOpTvp1jdAodACf
    U/wOv46EWpPHyLzGx7VHh0MoBrWJAJUCBRA9IeIwxEaR6Lw5pc0BAQ+vA/0Tlm31
    srrL1VhwixsEUO8BguGOG9P0go59CscjOyc2Ah95zpHQHwtFcZo6VR/qMxM/WnTo
    6+7JE0Yce6xYO6LWdU9w363+5cHtBPXpR59e/XVzNeqbMIq0NoQNAcKoAkxYAUaM
    v3ogRI0xMUYZLHzucxSAOYvkclVrD5YsbmRxWokAlQMFED0izoO9QKbpD86FSQEB
    tukEAJ1wluaZ5TPaTFGO0HZ0GveXSZUakgx1UwL81oqoeqTmDFGb3xw6erbB709I
    EjsfnEGYlKpf5kkdFVRIPOgZonvcD/I8WLy3tD0xExv9d6nD9sTHuOy9XsuD61dF
    53Eb+AxDkTwpLoJdG1AimstQZAn+s4D/DHKVc8hQwY1qIRuaiKIEEwEBAAwFAj0j
    e7wFgwOawtUACgkQxEaR6Lw5pc2SzQP5AfSuryok2VlAgquMdE9fwF+A3bjTWs6T
    VxFkXdInfML4Ur+44z00p9kjkT5IJrEebMZqYHsnyNix2owkgAyddONo+ldGAyzT
    UYwEWY6IY0km1n97Tnz2f6SSOYNqHVJ50h3jxsclD5sHBiH+1OdDCCHyyzV/gL66
    y2JTbLZhbOKIogQTAQIADAUCPdqgHAWDAuOedQAKCRDlFSglMxzaXWy+BACTUSnU
    sfTRFP8zttoW7/9SdDaBqXqO1NwpCWSm37ksepwdBFzR6uK2cHKLlSEdGXPyqSi1
    2ZSluThB7qmLanLc9fINyoheI2PtapWasyINWG5puMbqvPtONMG8KRv9w7AoD8T5
    ar0Rh3jsIMViFp4JomJu1pokCCkAKMvB04G0mIiiBBMBAgAMBQI/IWSLBYMBnNoG
    AAoJEBuwi78qkjIluIoD/20Zoeb8fUTz6dltU0vJwXhcfKyncAh9OEXJyu0XvoEP
    NQGEwk/XCogWhM5Wk0RnJ9xpF3F6cG4V196/KWnRLgcq3k2O6dyT4oViHAcTfXd/
    gqHHm19WOLg8K10OoNMpoOcLz5uQwGXPZo3vTZtBPclhUx377IyRS4NAV0VDV0EV
    iKIEEwECAAwFAj9KItEFgwF0G8AACgkQm6BpFb+FqzF/eQP/bS51MfoqqIEbo7bm
    Td+6uhTbbSmMic1bgwuX2BbDHml9+bHSG3nQ10/dbpmL0FyZ22jQhtGW4iK4Eowi
    CRo3oYl/L4EOz5Diw9+8Vhu3b0Zur1LT7kZtNHH3VwCVzHmd9+4JAv5AOV7a1BBb
    P1u4gOmmqRzPkRzRIrVTsO2T4NuJAQcEExECAMcFAj8WllMFgwGnqD6GFIAAAAAA
    GgBjc2lnbmF0dXJlLW5vdGVzQHBlbmd1aW4uZGUiaHR0cDovL3d3dy5wZW5ndWlu
    LmRlL35iYi9jb250YWN0L3BncC9zaWduaW5ncy9ub3Rlcy5BOTJGMzQ0RjMxQThC
    OERFRERGQTdGQjQ3QzIyQzM5RjgwN0FDNTNBLmFzYyIzGmh0dHA6Ly93d3cucGVu
    Z3Vpbi5kZS9+YmIvY29udGFjdC9wZ3AvcG9saWN5L3YxLjEvAAoJEKseS2BGdWse
    av8AnjQExVJnQN05g1TMyMD0OKcLqskYAJoC8yqjWLJoeHKNJ60RQbJtv/EzmYkB
    EgMFED0D7RSVYGGm3ZNBOQEBLVQH4gK1j78w5KLPWPnGqELtJMDE489APXweY7cA
    dnLBevcbyI6HuLIlTcSmFAgPoHjdO+7xWNpfaa8m6vSumkyUeoYMlK+TUnx2LCS6
    FvmPCYoEFM6g92HpASGLwZqcCLMp3+uemnAB/N4/QKaIqPNBAlSIAr8/gouF3Q5u
    mO18G7YPdrNMuKcxRFMjy9iaXIryRWAMbl+yecvT+SyewrD33TOdvHPu6eWcYIv4
    xLK3jcIJ2hoiOJorzam3u9NV/ornIhdtEB+mGzIbgobdk7Wm+wXKAPSxGz41LHw6
    KP/NdBSEQvDT/MJMXrfM0Mh7TDklFxQ5d0r1rxDaPcdUnqiJARIDBRA9A+0UlWBh
    pt2TQTkBAS1UB+ICtY+/MOSiz1j5xqhC7STAxOPPQD18HmO3AHZywXr3G8iOh7iy
    JU3EphQID6B43Tvu8VjaX2mvJur0rppMlHqGDJSvk1J8diwkuhb5jwmKBBTOoPdh
    6QEhi8GanAizKd/rnppwAfzeP0CmiKjzQQJUiAK/P4KLhf//////////////////
    ////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////
    ////////////////////////////////iQEVAwUQPQPtDwFVuuKglNolAQHXHAf9
    HIyylcQqNFatx4TC4LB8VvuMajy3C4txsU5IgkpCQlkxv7OBLUaxTtzi0UaTuzL1
    ogNOruD5Dz/sU5W1vFBDN0/nb/FgivCPlQZU8wX392LwZJ+BsyVeYNSODTeKLAxY
    eibXPYGrXBX+g97/gtsVih2dAFfglB5uduCQG9//n4kZHj2nqCq/6MYmyJv5jaJz
    0LqeygTn6QbKB0nhGmP+yqICop4ldnQs4ebi5980J8PzBypCaxY3B42Rc845g2gv
    bYpF1HGNhrEIPkqeF79X6Y7o0/QSiCivmqLbBv1Wehy75lGhWN1uHUPT6uYxZxDe
    Fc4n4bSilKLvAU+I2iTGYYkBHAQQAQIABgUCPSeWRgAKCRCM9myBE905UEgeCACm
    02d+IBhcQGXS3f74HImb+UF7xbC+sS0JgIha9bXbjcbuk5hrVA3dFrPlh403JHCU
    zj+Ucetjj0GFTp8mwoowZdgjbQoAphixJ0hCyePLVlxQmIey5kSmHO601SeHiLjH
    k4l8rE1u+2q6TQgY1basJMw0u1pzqIyXIOIZHDJwomjd63g6+NO+JbPDMa+D3ur7
    hJkWcKaNrRVRPTJemWD7PAJLPmMyyq3AXZFC0nJKab8S2AUuyxdCLSwkLxCQHXIq
    vImocpniny6eq/2h2Wt9LZ0G2BhvBEXA9YRJQnEwhDqf1GFJojtbdGxKmbQ6Vl51
    ZLgT9qiPFbwhLDGzj9S8iQEcBBABAgAGBQI9J5Z8AAoJEPy64gyiEfXtZh4IAInC
    8G4WUR7fF3puLovnymgaonudsm91vLE8H26fKAUMj+i4Lns3FCrKUKgsIqE6ykJ7
    cimFq50qO7EVAOEHA20L7muCT3uyuUViJey4pDiWJxn9gRklYwb7AP1Z70sg/vCZ
    pWpHibfmzh3NV+iqtA/iC3+mv0M4+g96xlqcz/4h1wR4NGuZwViO5iFbglrt2XcC
    u0Mivi9HhIPwNV0MDxAUQXyoGa0MLSreABhzlH2gCeoplFVgauSN5FiK/U1vJmkW
    NvuBQWlrb9mUxE1YLjCbJnVa+qrucZgBmAbWxhxZpEM4uo9W/CVyYs+Ar3rnh9x3
    lasLOfIzaizglb/xenKJASIEEAEBAAwFAj0Ew6wFgwO5euUACgkQCen5CopyTkWu
    Swf+PfsrzBwU7vwcb8Y7ZKMqU4byaCrbMRA1y0Sh1PQN6Am5dbo60poRwuuCs1ha
    iAEUncMsFzUDp6wWNiphqeq/1yRhVHZ0Vmo9LVJukml13yTHoxfQJfeB9Kwfv8PD
    EKbf7oLs5eg5OV8thrDeZH/ADOITFTRZ4RrxvrM0J7ycmXKos6bxTA5qvBpi3ksB
    4VWvG4zDaWaRCvxVYYHJeDYlOrsTLycqJY9HeRSfLYTvfYGHtKQS69AmlLd4EbND
    bh6cUe9Nni2L5PLpOibxZB5k/27rT6kljm+ZRmNs0GXTrJbUKXQP7rTMO/7DhgGH
    v4wRtHN2uo5sX32UpoHKThaVWIkBIgQTAQEADAUCPxEOgAWDAa0wEQAKCRBABhUO
    QAnq7WFRB/9i1NmKvCJEo1p0cEvylsUn43h5Z2G1kTQNGL6A9lcc+vu8P65BT4F7
    Ce/j2PLOFN94o8P7TZc2PBS2Ra2ZrNuZF6c8N1fDpbN/fMH+MJhjUTzAIdicVenl
    N0CWGaK2Ynks3jkQqxDjTCGEjQaRsBI7j+6wBqk20cpmn8MVk4MY7lTxtG/UElLC
    gumwfiXi8NKLcYoB6WvMSkdHITnHg5H3E61giWs4CBJ2Up+cguipaiqzQFHafOkY
    fidsuZZ4i6a9cV2yll5wwhLasJbl9W+T11wQudqQp8K/ghD5B0QQSuhPDeq1AoWD
    5L1TsAwC7mcs8cRXFQcyBSFLS2+beuMKiQEiBBMBAQAMBQI/EQ6ABYMBrTARAAoJ
    EEAGFQ5ACertYVEH/2LU2Yq8IkSjWnRwS/KWxSfjeHlnYbWRNA0YvoD2Vxz6+7w/
    rkFPgXsJ7+PY8s4U33ijw/tNlzY8FLZFrZms25kXpzw3V8Ols398wf4wmGNRPMAh
    2JxV6eU3QJYZorZieSzeORCrEONMIYSNBpGwEjuP7rAGqTbRymafwxWTgxjuVPG0
    b9QSUsKC6bB+JeLw0otxigHpa8xKR0chOceDkfcTrWCJazgIEnZSn5yC6KlqKrNA
    Udp86Rh+////////////////////////////////////////////////////////
    //////////////////////////////////////+JASIEEwECAAwFAj9Pcg8FgwFu
    zIIACgkQpaBgwm7CZm350QgAgFvhxzaOyCdMHtXLClUDQ3gWpzGP7eIze1UMkliL
    B1xf1q/OzsLCm8K82t0acH0W57pxQ63Co9vw64g+4Uw+wkY+zOPMow0DJ0zEy2yd
    bGPAfgprB3atew0jFIj9wCDl4BcyjxH9EIXQsESeWFMVQGLZqbWNbdSGy2Fvhx9L
    1MH7chXEWVfAx3cngZURkefQP931nTkBX3BMTuamzjWJ36Bo1+bEUWOc40EJ+Y+b
    1edotw1DEmsHigmh0go3Xn7Z51Iem1Qel17fKX17vyMnIWOymHc69zxAOj/uhUWN
    PsAnJGy2PKZnFT5ZlHOVsrVuAUWknKHVYbcqP3sPYHNsMokBaQQTAQIAUwUCPyFj
    nwWDAZza8kYaaHR0cDovL3d3dy50cmFzaC5uZXQvfnRob21hc2IvY3J5cHRvL2tl
    eXNpZ25pbmcva2V5c2lnbmluZy52ZXIxLjAudHh0AAoJEPl8+eM6S39dXX0IAKzx
    k0rDD/EMUKZLF2A5vIQhJL1untKV52bWhdb7fLLpk5yugHOWM9Ce8GgQ+/pDW54q
    68xbqMV1KiEN6fdadpaeZH0rABTJYNs+NGKs/Spi6l4e9e6slnzu4YG/yfyZY9s+
    6WULBCTwJsnfQBe4PqrSoNNPE4sADsYA+Q7jmd2v95+wZdq9GEZ3MH6cI0/rJi26
    HZSwfzSfYy87AGg+LjNW/iJ6MwZ6nOitPCHJCkOvovRtSgw3yzmt1XOOTx3TUSzZ
    sF3xR0NgWPoCAADdx7ZCes9xNWpK2NKP80Gn4idNa7mILAlM4f5/fHAdtU2VS2wI
    Y/yv7hQdTH0oWrOI7hSJAd0EEwECAMcFAj8WlgcFgwGnqIqGFIAAAAAAGgBjc2ln
    bmF0dXJlLW5vdGVzQHBlbmd1aW4uZGUiaHR0cDovL3d3dy5wZW5ndWluLmRlL35i
    Yi9jb250YWN0L3BncC9zaWduaW5ncy9ub3Rlcy5BOTJGMzQ0RjMxQThCOERFRERG
    QTdGQjQ3QzIyQzM5RjgwN0FDNTNBLmFzYyIzGmh0dHA6Ly93d3cucGVuZ3Vpbi5k
    ZS9+YmIvY29udGFjdC9wZ3AvcG9saWN5L3YxLjEvAAoJEBmiaAmIOP2UNloH/2QP
    qs6n9ct6/Y/o4H/DPwayN2l0oLS/GQ33pPq2HVXDzESizH5wbqldZoTmtbz7BLJ1
    FuEOy1imTnAq3EHEvnhl4vEMoxxA9E7ubeYxepWqtasudpFWr9PKHPtHQ7sGnrCM
    TCrxVv6juJDNpS9wjytLhAZK3CjDfLGrI6/wm/zt+KtL+P07XT4M+nujiAALJHxI
    u/OS3dCVspJh+9CGABipjSqm6IprmsdzZWa4dwSJx/FVlo7myCo4vwITwLvM3+DT
    AtNOrfQSfgURXjZUu15IreXyw8meyWkeC1pK7BHQZiFRtg5uNliikYkCaCR4j9Qm
    iW/eadPs+EkS2DjF32m0IVRpbG1hbiBMaW5uZXdlaCA8dGlsbWFuQGFydmVkLmRl
    PohGBBARAgAGBQI9ASZWAAoJEGfDAwhyWzfG7SsAn0lNlCrct/T4mpuiaV4Vm2Oj
    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
    nie1P2HllifWQfs/fbQ3d3OCiM5AiEwEExECAAwFAj+PEnYFgwEvLBsACgkQGcp/
    AjG8ndaq9ACeOM4STjERjh0+X3/jb31d/TB6MRQAn31PzPN/ir7uIPcup8/uX/dY
    dSwPiF8EExECAB8ECwcDAgMVAgMDFgIBAh4BAheABQJAC9oRBQkG0ml9AAoJEHwi
    w5+AesU6uu4An36oKpQwrmFBS8wLvLUqsHR+57JRAJ43jJEjRIeJK7LlULHPH5i3
    hLYtKIhfBBMRAgAfBQI8+9eRBQkDwmcABAsHAwIDFQIDAxYCAQIeAQIXgAAKCRB8
    IsOfgHrFOng+AJ4l4PAWYM/hTjiQZ2JTg9nue3/54ACfXZ0EoH+BUZY8jQ4zelcw
    aaMJBkWIZwQTEQIAHwUCPPvXkQUJA8JnAAQLBwMCAxUCAwMWAgECHgECF4AAEgkQ
    fCLDn4B6xToHZUdQRwABAXg+AJ4l4PAWYM/hTjiQZ2JTg9nue3/54ACfXZ0EoH+B
    UZY8jQ4zelcwaaMJBkWIawQwEQIAKwUCQAvZpSQdIFBsZWFzZSB1c2UgdGlsbWFu
    QGFydmVkLmF0IGluc3RlYWQACgkQfCLDn4B6xTrJVACfdWQ9VL6ZRGY6HseGSwIj
    R0bi0fIAni6mE2lHpV4y/uKq/OgYrkh58WrwiG0EERECAC0FAj3zl9QFgwLKpr0g
    Gmh0dHA6Ly93d3cudG9laG9sZC5jb20vcm9ib3RjYS8ACgkQEFgWhcUhCX6wuQCc
    CEVMC2uxUY6TU+FZh1gYJQHeso0AnRvpRw0kFy4MuwxauGavfjau5uBBiG0EEREC
    AC0FAj3zl+wFgwLKpqUgGmh0dHA6Ly93d3cudG9laG9sZC5jb20vcm9ib3RjYS8A
    CgkQEFgWhcUhCX7O2gCgpijOB8d9FnMMwYJGu+3Spq2sF/MAnjajGQJQdL3N1VPV
    VZZ8e3Yf3Km1iIwEExECAEwFAj0FGRAFgwO5JYE/Gmh0dHA6Ly93d3cubWF0aGVt
    YXRpay51bmktYmllbGVmZWxkLmRlL35tbXV0ei9zaWduLXBvbGljeS5odG1sAAoJ
    EN6Fg/i9v+g44pYAnRJJOzb6bF6+OqdqfXgA7PDkaZJnAJ42XAZQyI9nNDtaTxFz
    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
    VNPqUUt/e1JTKucRjCaC91hXgPtCGR5Nbc4isImlUrMIfHqebsUzPxH66vW4eckt
    SCJQhRY32KBDs/fY5AiPZ3FMfN5QcnLPesJgvK5BkQ0DB1uDbG0ODL0YnilzR4HZ
    YtTv3kbCg2Kyz068ql6+Z16L5qfJC/11iQEiBBMBAgAMBQI/T3IPBYMBbsyCAAoJ
    EKWgYMJuwmZt67wH/if3kjo34L91/rzgIwlyimeM4ncnzfsCGG6q2fjTMkIWH6DN
    9l7geF2T3IN2VeC2cXE6n0o+7T/pA9pw4MnwqSxfgw7yiefSaLKlWt8fp+XIVNN4
    egyQ2AEA7wS0j0rQdpGt1j9P989F9iSh5sxdqXXF8NiJSLNk/6Qc3CBP+7JoOh4Z
    532jvx7/q1atd4qYXhFx2b9vA20FLUQwJOyMbpYoiG8d0a3uQ0xivTUERUkOrbHk
    um1Q1b7R81lDYSnts+Z2PtThb/RW21BgllkLhqwg8xQKjTQ0S/Y9UdYubffvegMX
    uUAT9RMyuwKjxlPnACE81oPS/nS5fdvz0WaXf9iJAWkEEwECAFMFAj8hY58FgwGc
    2vJGGmh0dHA6Ly93d3cudHJhc2gubmV0L350aG9tYXNiL2NyeXB0by9rZXlzaWdu
    aW5nL2tleXNpZ25pbmcudmVyMS4wLnR4dAAKCRD5fPnjOkt/XSZCB/45brff7zO0
    wtcSO55jnl1ef/ivPg4jTKDRRLtTo9BEGf0NDYM4laaeFV2DAP/upFTG7I3vtRG2
    0W64jCxzuBPto6Om8DobzCWaqr4vnuwi0sHFpqeX+pULRHFodBPv2PMevLMDHTq7
    wVIh62hzJrWYPrX8CP3Fgl7s9f0O8YeoGIWQRTR+oJ9qwDqY55uVzKfhalrxoC/M
    Wz+Au8HAcdDJvZsTN0jEF7byIuKjnL0BQXjuMiEcIAmNZ8G+mU3F1tZaMaEkvIC0
    VuhgbuuUc8CvuSdSeu2jtVdAR1T4+o7JXl7T3cMe6VMRpIZSw8S9c9oYANM9W4Fv
    /CcfXjM0YZGViQHdBBMBAgDHBQI/FpYHBYMBp6iKhhSAAAAAABoAY3NpZ25hdHVy
    ZS1ub3Rlc0BwZW5ndWluLmRlImh0dHA6Ly93d3cucGVuZ3Vpbi5kZS9+YmIvY29u
    dGFjdC9wZ3Avc2lnbmluZ3Mvbm90ZXMuQTkyRjM0NEYzMUE4QjhERURERkE3RkI0
    N0MyMkMzOUY4MDdBQzUzQS5hc2MiMxpodHRwOi8vd3d3LnBlbmd1aW4uZGUvfmJi
    L2NvbnRhY3QvcGdwL3BvbGljeS92MS4xLwAKCRAZomgJiDj9lNvQCACUffB9VWqH
    ksmiZ/5q/zKBGtWBGChdc1KkjzrMcfwZPijE5taUdS1mD04+6naJ+KgSbIiOrtk4
    GsCuHJSLBIhJy9dtpvaZMhmU6kKp1ItxXfBw6VqD3bgllDPnkWkb5q034BOAmdg7
    Y4jXeD5iCdUNpIGemKlF1S1GNYnYzYnTKfRIcqgZ8G4QA8Po/vDaoPw42XbEY1p3
    pjUjwfuh4Uhqb3lZtM/PPCHhSkogT/EW6DdyB40YfZzvDQj4upYfS19jwbrREo6x
    sFAMeQ60nZFqxjbWD34BIIqnWGOGM3vU+4kTDJTH36MOHSmcpteXz4wDlBUTstG9
    MS1/zMPJcRt0tClUaWxtYW4gTGlubmV3ZWggPGFydmVkQGluc28udHV3aWVuLmFj
    LmF0PohGBBARAgAGBQI/EFinAAoJENb6+t2VLz//zDIAmgM8Pn8fyYwFN2SxP9nh
    xCQ29iJeAKDcePVaMco+0a3ECEdC8K9f1vrgNYhGBBARAgAGBQI/E0TkAAoJENAZ
    9e+QJ6uIuX4An1HLngrffGbtzm8qmS7pwbhXe+J5AJ48LfmHJ4b97S5pU5Z9idOl
    XZsY4ohGBBARAgAGBQI/E2yJAAoJEK3sLNEalTfnUnYAoIZNqErG88a1q7YEzIGx
    rYJOnNptAKCLDpceIDQ0aEhmPsUoFp6whg6p14hGBBARAgAGBQI/FkxeAAoJEEbM
    XGPzGKVqolMAn0gx5juuveK5cXOE12M3eoKH9DLNAJ90uBOT0ahOSTPBNaYRNrG1
    OttHGIhGBBARAgAGBQI/IEB/AAoJECjdsP0Zyba6a+8An0AOYFxPrdDD9arN1ojC
    R4diAecHAKDYiwxv3h5hoLfoJa+peG51Rarwv4hGBBARAgAGBQI/KLbxAAoJEG8j
    i8JP2loM7hoAn1/RkGr3qSul/9ELruvomxMJ0+QlAJ0Zj+Y/WUr96hetuIemzO+0
    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
    ACYFAkOcgLMCGwMFCQfCnv8GCwkIBwMCBBUCCAMEFgIDAQIeAQIXgAAKCRB8IsOf
    gHrFOsBBAJ9lae6Yx+hYnhQlAL2V6hKj6Cdy0wCfTI8qVP3GSaczTliaRgswukbg
    ZGOIagQTEQIAIgUCPa26mgIbAwUJA8JnAAQLBwMCAxUCAwMWAgECHgECF4AAEgkQ
    fCLDn4B6xToHZUdQRwABASX4AJ9GHkeHPIbS/6NGOjYJCszIux9zRACdEW8bvoIW
    BtpPqk4Ea+hzDwPAtLSIbQQREQIALQUCPfOX5AWDAsqmrSAaaHR0cDovL3d3dy50
    b2Vob2xkLmNvbS9yb2JvdGNhLwAKCRAQWBaFxSEJfolbAJ9YEt9jQw2+DvqPVoU2
    INI3T4pz4wCePIvqxmLrnTTs7aIw3lmumLMocSCIbgQwEQIALgUCRpThWScdAGkg
    ZG9uJ3QgdXNlIHRoaXMgbWFpbCBhY2NvdW50IGFueW1vcmUACgkQfCLDn4B6xTol
    dACeO/kUVSvm6oP8ccrEUt58Et9ckSUAnjaBTgZKgyKsQf1vivXqLoi4vX/KiJME
    ExECAFMFAj8hV4QFgwGc5w1GGmh0dHA6Ly93d3cudHJhc2gubmV0L350aG9tYXNi
    L2NyeXB0by9rZXlzaWduaW5nL2tleXNpZ25pbmcudmVyMS4wLnR4dAAKCRCkec3E
    WrRgauA7AJ42KOLGN/ovjnxEdHD7xzzRcHktAACgkyi3zR2G3oL5a3nit4rQvihA
    +xCIkwQTEQIAUwUCPyFjyQWDAZzayEYaaHR0cDovL3d3dy50cmFzaC5uZXQvfnRo
    b21hc2IvY3J5cHRvL2tleXNpZ25pbmcva2V5c2lnbmluZy52ZXIxLjAudHh0AAoJ
    EHkFdo91hPXY9CcAoKrjRA8ND3y6T1aQSgRZeJeYu/LAAJ9sJeTFMk2uR098SDRC
    UcfTeKC8xYiiBBABAgAMBQJADIE/BYMDwb/PAAoJEL/W7lhX938JNtkD/3/2RKm2
    8v6btjL2UrCJg8LjxoqxSOdU6N5SLplZ2YOef3+gZUTZSsYT1K4XvPoBvPif+6zd
    0a9bFp+fP2j7SGMrlhHTd6+aDQ/BHaEZzt4dY2dfFcDNyvqIKeOTXw8/HR+dwryH
    DNwRcEMOb00IPVjfVirOcdPNbn6jYP1LYnPniKIEEwECAAwFAj3aoBwFgwLjnnUA
    CgkQ5RUoJTMc2l3FHAQAki+C6EKYQRullCePZ2GMJ8SR54xI42JaPbSBzxpb684J
    /jabcr8WHHJvGXlapUmdl3vqlks5tatn5iFJvbE4qAPOdo6C5NXIpD5OSbHAocXj
    43QdrftuMVF7w1fyJBkWFoMrMZoa4FxiFLENbm7DknLebp1Bp282O/XR9R52PJSI
    ogQTAQIADAUCPyFkiwWDAZzaBgAKCRAbsIu/KpIyJW/MBACnClO5+acvjHnfaUd5
    3tcKfLkb+vWzMXWKNt37RG1d04bKqlkZdzJKT+noMBqflVf91rk3goPPJPDjwUtm
    51gGlSgPG4mPnhQRrUHwC8BM0lGiuB68Z1QdxF1iUx8B623GtPrJbfufCexrAxIL
    6La7KosErbR1JXbjS9+d+M1p9oiiBBMBAgAMBQI/SiLRBYMBdBvAAAoJEJugaRW/
    hasxbHUD/RqcGxjUaJgELwAfNcTpm86BsNL5tu6WJFe3DdIIzQTb27GGgbOfj5NR
    LFnk75xgQtk8lnKqsXQHMC6hm+pwh4ZGISBZE7NIqYokUSYDT2mbplDo2kDPyO2V
    1fWf8P5f8rI5e2QYIvn4kNFWidfQKh1Rw86MlZVIieVf8eVeS5qCiQEHBBMRAgDH
    BQI/FpZTBYMBp6g+hhSAAAAAABoAY3NpZ25hdHVyZS1ub3Rlc0BwZW5ndWluLmRl
    Imh0dHA6Ly93d3cucGVuZ3Vpbi5kZS9+YmIvY29udGFjdC9wZ3Avc2lnbmluZ3Mv
    bm90ZXMuQTkyRjM0NEYzMUE4QjhERURERkE3RkI0N0MyMkMzOUY4MDdBQzUzQS5h
    c2MiMxpodHRwOi8vd3d3LnBlbmd1aW4uZGUvfmJiL2NvbnRhY3QvcGdwL3BvbGlj
    eS92MS4xLwAKCRCrHktgRnVrHo45AJ0dD92uCPhsjLWrVsbhMJfwmkVOnwCglKPY
    urVXyo6uXC/Q5KdueASb3iWJASIEEAECAAwFAj8RTT8FgwGs8VIACgkQCen5Copy
    TkVorwf/ZHfXpigg+qo5D9nzURNgsckj7d5F6M3QfYUSpE7Hl8826m80iVciBIkZ
    Eo9R2H9mFOf8CJFBLqcbz6vxRC0Q+xMbZSw8o0tRrfVTEPyvdh5ayIwKsV1mgFux
    JwyDPN3zy7LejqsLQUA2IGY+pCz2kv7P0iWRvK4uaRO/z5qaF1QLd+aYssolkidm
    cMnkJph3+/UiN8Tvlr6UAcsAolj+ZShPM1whJ6aAOL1EnDmnHScVVmGIl6Qf2q1j
    tPlF3qG6CY9CyIaUSxSudAEMaGthTeM+MjP108aJcTYVF1PbyHnKy0e4tJlU/MW5
    OohVH3/KEmIj2lT2AvBUHbCYL4NW2IkBIgQQAQIADAUCQoDzmQWDAU1NdQAKCRD1
    wyAKI5xjhP8aB/9DnrJvwzgelLhZ61kZ6hHeMnL5MfRwe1ytJw32UgK8k11Rh2qX
    4aFq1z3jF/jRmFE6GRSP1dSFpu+YQjPSJ5rJO6urO8OyFXkgPVw5ERlbWxyU/E/9
    wQf0rfg2/fdOsLOkp8qO+svw9kt291WSWBvw78MeHYEUjnckGhYYuvg0bFMjCqew
    ZxPHP6+qxgRRlI624ArmvG7auGaLJvolDji9dc6RFoygdmDKFcB6oZZCfpsMRM5i
    SokRQJq6kcOxC9uSq0S5F3kqBpxaX/Cz7awWCpGJ2HJ8IM6KWhn3DZ3PaKFvFWkM
    fOt6IXQMCuz7uhLPeh9yn8HeE0+xrafU75VQiQEiBBMBAQAMBQI/EQ6ABYMBrTAR
    AAoJEEAGFQ5ACertOZEIALVSl0IYEbpqEftGbDf1uxfhioTFUS4IedO8x7dG9WrH
    m5WTOy8dBTnA1ibqD5U6kwfUkylDsSwjghQQtsEAd9Uc45LjFZVi4+w/3mj65IbM
    lizrunjZwRysce8eHgEVgo4yfDfyCF+LNHSFOVDIBawnUTm4j9PZiX74hq/W2aGP
    acKn+as0PLzSJMu7MtmCf/pds9TBVLoTlhRXcA4+o6P94OkMP0YMSNLe/0Bq+Sag
    QKAtJwdTbmSGZfCnd+iBdTQsEyCUYnjvJq+enNZgKTWfNHeRYbDBJvoyA39HKiej
    eRci4KjDfQhn1EDDz/q9mQr50cXfWxYD+LXzWeF6knaJASIEEwECAAwFAj9Pcg8F
    gwFuzIIACgkQpaBgwm7CZm2ywAf/dy0mCvoyH4ly1NzHMx0y1UCw/XF7YIbO9Vuv
    ILO2l4JAt+r8G7ebXp18q6vMCtPnoVAr6r7e4asp7+0BhvMXkj4nx/4N0W3pG9ux
    1/mPF9rpWq9hRcjbcHU7IqzS8VqaS+bVgIuGb99RT4Yeo9nA9hqwvTXFRKPzImv9
    uCRfPLcD4N2nUgUWcUF2GicA1gVQ6GhJrGCROTLt0s+0lLmCVrkT/Pg6ZpxXuogZ
    q2GHEZPqBUiPyRbhmz4GtZHGEZjMYO3V8nMgMkHpk7luh2dShDJzIoqfftgTmzuQ
    R0qhEyRldZlomTht0XVv0RBnGUO8IEhEM/JhXUdDKTdHtrPhLYkBIgQTAQIADAUC
    QSSwggWDAqmQjAAKCRAbaNz8wFloI72cB/oDy5na7lM1nIlRKN69USWBQ7h2HAXw
    QMyblpipNl4tTj89gZVEQlEXB82pdDUwULLydKsHe8MELbUyhE9Od++pkdM3BzRI
    ehkDqBiLkmHORf40nB2zszVVcWcp6yuM2yd/T41h4ySIw1GP5mmpd+FfFxWdIx4O
    Ycc5O3E7ksMCfryKusAiDVIlZqdFQv1wKX7tI49rX2kgqaM0ohYS1GeFH3bDlMq+
    b6vfY/BZRfJ5yqw0q+XM3Ev5g+s9Y5a0LeUY8BOD+b2DVAmOxBsVJQzZwBMwl5hc
    3U4D2KH5Jy1VDk3b84sdNqlbbSkSpn1qlnjn8+4o65DI3rsZT2se9J1ViQFpBBMB
    AgBTBQI/IWOfBYMBnNryRhpodHRwOi8vd3d3LnRyYXNoLm5ldC9+dGhvbWFzYi9j
    cnlwdG8va2V5c2lnbmluZy9rZXlzaWduaW5nLnZlcjEuMC50eHQACgkQ+Xz54zpL
    f11Guwf/RNdrUReGWes7tODJdN+NsfrTDQluwTTSGGmPL8xr+S/9V22Z1LLzGzg2
    7MI7VCJu30zHeEFJTNDp5fDrNoyCqZPO/aAKbQ3Q2faltmhePWNsbIZ/jgDHZ6oP
    7IokLhyMe20AXTNMtIcZcPOm3vYqHmcUnlz3LDnxKIoO3/6tp3qQ56yQjqn9S+Rv
    fL/1rq+4jJDwqAeoW9VRupcKAE03k6nEJwVSm8QGJDa0Zc8nUBTFcgtUturZMXm8
    FEQgkNtYCFL9VrRP3T8H38oHfxp8CA50Wk6uRqpMpQdf/8fe2OHVMtCJu0F6jTex
    PXkaUijmYAs+dIOAC+L5CFogc+TaHokB3QQTAQIAxwUCPxaWBwWDAaeoioYUgAAA
    AAAaAGNzaWduYXR1cmUtbm90ZXNAcGVuZ3Vpbi5kZSJodHRwOi8vd3d3LnBlbmd1
    aW4uZGUvfmJiL2NvbnRhY3QvcGdwL3NpZ25pbmdzL25vdGVzLkE5MkYzNDRGMzFB
    OEI4REVEREZBN0ZCNDdDMjJDMzlGODA3QUM1M0EuYXNjIjMaaHR0cDovL3d3dy5w
    ZW5ndWluLmRlL35iYi9jb250YWN0L3BncC9wb2xpY3kvdjEuMS8ACgkQGaJoCYg4
    /ZQ45gf/fsceAhEWApzeJRYlY1Rc4/pH/AkiMqVovXleAoJvig+Ec6dJspMfUWjj
    0vNGBsTaGZ1rN6y6Lth2Q07zEhUXsIJDnKgvxR64BonW6APq1Ck6rMH6CLUh55JO
    NOZsPVnmRyiM7qmLkz45XRF6l7dEOn1Ed+EtnOd/XXUkk9n5mVmYoSqO8E31WK9b
    WX+CN7YM5KOEWypGtZEwjWje26ydS57MbL/qlqWV5JHgccxZvnItcIURCEZQkXfv
    imddFHgTvHn2YzUESejLWWk9pdjYwDLTrVFWKEEKetlPDGhkjeBmFJcehHhpYlRt
    uQcSKduWqhcRNWqMUd+D+ccaKP9LuLQrVGlsbWFuIExpbm5ld2VoIDxsaW5uZXdl
    aEB6aWQudHV3aWVuLmFjLmF0PohGBBARAgAGBQI9ASZbAAoJEGfDAwhyWzfGBLwA
    oKWnsa+E24L29Y9VyeXfZq3pg9k3AJ9hEEh8WO5fj4Z073lvgHVPG6qyB4hGBBAR
    AgAGBQI9AfwvAAoJEJVkH2slPljjgrMAn2TgIY+ZB9r9qR3HM5I+T1fLYmveAJ9Q
    OWDtqooXNB9VcaFEHmZjWgYUvYhGBBARAgAGBQI9A/CdAAoJEHjLuZUaVye5V44A
    oLB91plDEM+io+/BzmYfzfwypybJAKCFpbbrLHz0Ne0ff4ntBjoKgzSjPIhGBBAR
    AgAGBQI9BLByAAoJEM480UB2FxNnQy8An0ZtsEQIU2LXngkTiTcy4DU+n/cDAJwP
    ZEkWgSLvqryJDSz2PsnFEYk/YYhGBBARAgAGBQI9BMA8AAoJEFGs9q11voCXsWQA
    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
    XVK9xQbCgN09K/U7Moh0szy7nubZYDUUA62UliMNutrqnafkKVuk3BDqmGPvkeLT
    2RwRq2bZaAznMsPuVoWTfVlM9WdErwLrll8n3WgfRaWTPh6iNJpNqDdYcqoRy9oQ
    EroyjWKJdTijSkOrkga5Uwl44TzsvLXV8H1AK45BpwGIogQTAQIADAUCP0oi0QWD
    AXQbwAAKCRCboGkVv4WrMcTwBACQzG2D7BX5U4nc002Ki5py7uqWXGn03haAqx1E
    slANX6FycgyeqE5zB7ApLz+J68gLWWWhnVsiJOnC2SWL2ou1ky9cpgROPfhgTC5z
    iwH15WTGIayHy3nqzoRGAoRAyvzvZlnXQX1hGqOzfXCGszDKVGsERTZI4ublEw7M
    LZXwY4kBBwQTEQIAxwUCPxaWUwWDAaeoPoYUgAAAAAAaAGNzaWduYXR1cmUtbm90
    ZXNAcGVuZ3Vpbi5kZSJodHRwOi8vd3d3LnBlbmd1aW4uZGUvfmJiL2NvbnRhY3Qv
    cGdwL3NpZ25pbmdzL25vdGVzLkE5MkYzNDRGMzFBOEI4REVEREZBN0ZCNDdDMjJD
    MzlGODA3QUM1M0EuYXNjIjMaaHR0cDovL3d3dy5wZW5ndWluLmRlL35iYi9jb250
    YWN0L3BncC9wb2xpY3kvdjEuMS8ACgkQqx5LYEZ1ax4N6wCgoKMUMJTeMgLrP7Sd
    EqKYc/NXdqgAoKub6jBnXDpsFcwHq1lzhnBEtvO1iQESAwUQPQPtHJVgYabdk0E5
    AQGr6AfhAXPkw0zq95J+Xi7N/d+0wPKViQyMmSeWD8NdWW/S0pKGsl/cxKVBCN/T
    H5GkDExI4WPc55SFO/2X4X6udCWODuypp7LkNsnROaXolU5CSpowxUpuqjlckxwW
    q+u+ThTeBJBWwzLpogUJtQiIcMdpmB5xs6chXKc8eeh0/F6E7XLMdcNdcXGAV21V
    AB9sFn3vH1v6jge4mRzvDB7ty5jbjJI8/gA8S/BuChufT0sFNxXp1/hFkEk1UGGt
    2La8DKgzRw1pFNuOgfw2lOQun3VC4haThtscPavQS3FKVjHdF8l4akFDXRcltrug
    RMFfLkrjJThH/3MUCxxdyOdQ+YkBFQMFED0D7RgBVbrioJTaJQEBn/QH/0NIkPkt
    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
    EKWgYMJuwmZttHAH/ixMvBCz1OMGPF61psTyfuxOpAXoxsOSJmQHyALkSIZmAJJf
    qVoyzuSygh9eX1jK+qnIeqXKtyhubCE9Y+vXyuksddMJSo+y2Pf8m4j9BiFIyRT2
    swoTUXViJbUpfG1+Yn+Byp5ST5S7etTtN2s4jkfRZFdcVwv8cN+8u25kCTWaBaIZ
    +xiuhEDzFq2S+/ssIeLcv9DM31zZVkLLGVNqWUEcg1VJfhAZpBpV5lLv3UBwS5Wp
    w2JVQ8gVMt4ljyDQ6A3W2tp8toNqEZrzF5ZIfuDG3lZFPgdnBOTDHvit7iSj+702
    2Sglj1BSf0sj47u2qDPg+OQcpRKc5SA2udw5ZICJASIEEwECAAwFAkEksIIFgwKp
    kIwACgkQG2jc/MBZaCPLYgf/c+azlvmNdUwqr3/fEnS/rrk2pgi+WRvqbwpZF0fM
    xxLDUWYkFjpls14RovW8BjZ/FyjLOFv40Bbhsv3KlskkioB9sur4LyFUnmQCRQqw
    +MnSClyKKR0nhRv6ld0ygWGt/8D5KbVJYSKV+LBY4JW/rCD5VdpEqY3CiUJEKh9B
    NPkpF4+HsM17pollaYDq+rIySQOhyi0Tdq+BF7MFJwJfPysKV3GvMketSmCqW23Q
    Di/aS01mrVBz9amobWhdwbdrJH45JSm7QxcO3yMmKNURjatGaBi6ih8yGRyHYL8a
    paZcY2VA32cdNTqCsVHeyUcml7mqfsyOKlpleEIE7IcFzokBaQQTAQIAUwUCPyFj
    nwWDAZza8kYaaHR0cDovL3d3dy50cmFzaC5uZXQvfnRob21hc2IvY3J5cHRvL2tl
    eXNpZ25pbmcva2V5c2lnbmluZy52ZXIxLjAudHh0AAoJEPl8+eM6S39dkwwIAKjo
    94Mz7+ryatxk1pmMylgu5u77qqnvJ4gwOLB7lvYJCLou/QAyyy0I5iwKSQpnWJmk
    zV1XZdnQ/qqvMSH9l49cgxA/kQTM5laAXf4JXCM+JdLqcWlvoNAApJB1T8uQzi3+
    vU2RdVKJgl4HehvyTOAS4fWMqQBhz1ha5xaXUdPFrnC6ih3bflmWxFxjK6OtEOi+
    q+sTlALfPZ5S7tUazNCHXYSjtC2AncW8zq1tp+TYMJ9/Cj2j30M3752HW73oXQAH
    W4E3cgfiNWlxRY8eC/9XR7PpnZYV9s3gbHoYrn5vkbxOmzW+bbw//y8CBV5vtLdJ
    o4J2bR1QueKjIAv6rBiJAd0EEwECAMcFAj8WlgcFgwGnqIqGFIAAAAAAGgBjc2ln
    bmF0dXJlLW5vdGVzQHBlbmd1aW4uZGUiaHR0cDovL3d3dy5wZW5ndWluLmRlL35i
    Yi9jb250YWN0L3BncC9zaWduaW5ncy9ub3Rlcy5BOTJGMzQ0RjMxQThCOERFRERG
    QTdGQjQ3QzIyQzM5RjgwN0FDNTNBLmFzYyIzGmh0dHA6Ly93d3cucGVuZ3Vpbi5k
    ZS9+YmIvY29udGFjdC9wZ3AvcG9saWN5L3YxLjEvAAoJEBmiaAmIOP2UNN4H/iI9
    8ocmrlSsXKH4kvKrAXdVR6Zt/eWN7bDhufaiCq5gPpkySvANnBSHv083bor6AoK4
    v77Otwl5SiTnK9A2YkPqfk54mYzX6Wyd9rkXfvq7gx1FZIv7Ad8Ht2aJqAhGlSZW
    Q9DE7b7lDtCDwrDREimWAdGozy2sjNsqPYyF0R6okrHfkOVheXEw9ogZY8hrPQYE
    Nabv4R5nIg0QsK3P5QA9c6uwcEPYvz9YLsJNPgub5PnU9hWwhinttwq5byt5f787
    YFF+61LoGq94SBEG47NY+j9++vvf9YCJLnMVzmZqdE+MZyu0AjcdXNzBIByBeaJF
    VzSyxQcnu9EjayJMWcC0JFRpbG1hbiBLZXNraW7DtnogPGFydmVkQEZyZWVCU0Qu
    b3JnPohoBBMRAgAoBQJMh8VeAhsDBQkVL4RlBgsJCAcDAgYVCAIJCgsEFgIDAQIe
    AQIXgAAKCRB8IsOfgHrFOpV9AJ9vGgOIsR2lOY8yuaVPkMN2IbwHXgCfcpcxDEAS
    sU5oeT6EpGXgyQTKHQm5AQ0EPPvXkhAEAJR+JXp+B5wZWFu2EzCwEH7rHNiXcQ/p
    nonR7NV2gbOUZ9LHskHn5jq6NNZPEfIwBJqs4RwoIb1RFNGkyx01qjx3yMUtORy2
    SGENCBBTH+c9kkrL1Bq4MnbR6tWtAcOKjefsZDjBE2SgXTPW4Jy+yrRfhhxa637b
    y25Wmx8PHlwLAAMGA/9dRrwk/jXPcGvqcyz4I/dsTM9IhCxyKvPJghBxGNTAmqHY
    n3WWR8H49cHfi3XW8HMNXl+tk4IULp7GA8akmKw48d65oqd9KD468k+UkagdO83P
    +Uoehtv8ROCbYECF5AkPgtk8px8N5EgHE2PANrXTL0EB/TFidNLdiJu+CUsDGIhM
    BBgRAgAMBQJMh8JUBQkVL4VCAAoJEHwiw5+AesU673QAnRxVRUIYUB0OZZ5A2d34
    bbJlJih0AJoCWn8cneSXT3oShBlbt8J3l133BA==
    =viLB
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.173. Dryice Liu `<dryice@FreeBSD.org>`

    pub   1024D/77B67874 2005-01-28
          Key fingerprint = 8D7C F82D D28D 07E5 EF7F  CD25 6B5B 78A8 77B6 7874
    uid                  Dryice Dong Liu (Dryice) <dryice@FreeBSD.org>
    uid                  Dryice Dong Liu (Dryice) <dryice@liu.com.cn>
    uid                  Dryice Dong Liu (Dryice) <dryice@hotpop.com>
    uid                  Dryice Dong Liu (Dryice) <dryiceliu@gmail.com>
    uid                  Dryice Dong Liu (Dryice) <dryice@dryice.name>
    sub   2048g/ECFA49E4 2005-01-28

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    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
    =No5H
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.174. Tong Liu `<nemoliu@FreeBSD.org>`

    pub   1024D/ECC7C907 2007-07-10
          Key fingerprint = B62E 3109 896B B283 E2FA  60FE A1BA F92E ECC7 C907
    uid                  Tong LIU <nemoliu@FreeBSD.org>
    sub   4096g/B6D7B15D 2007-07-10

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    mQGiBEaS8qERBACaZz5sEl2I6ZKN0bcqTm2G2jrxPKmX7jBxXhlwonMSfX725Jz6
    fiYxo8MN0709R1xk4tKLJZGM1cxNItFVi0+8bdfdqc88u3cabTM9qYd1hoy3uJtO
    Z8YHGbwzcQfU81r0cs/7xHYROjU1DjM7ixa3aVqokoq+N0nIHNztsDzNkwCgjQrV
    NoU5rFgzsvxbzNmrLSMxpckD/39CGIg1ic4qeuNHEHoTRIGgCffFGr/VOW1m1zYL
    h5nX0qpE8e3y3c7YwX9yxueJtVTZV2HSP8/yILkBMb48ggUcYLaaPFthGAnggx7g
    XB0bLw1TYxeykQoV6MIUf+LXVggJV8js2lZmpC/eUwnbGtDj8ShidE4RlqyMvwtW
    /K7BA/9ZrFZkf/2KysdzweIV4HJG3tntx/bOJDGN/ndp7s7E54iTpTIQLEaXs4r+
    Fb4tEork0p/BrsH2VpDp+O6SjsvpxlOxUN94BkUtwvNj0v2rAXwjEz8RNCXWPoVJ
    G8juOTAtLmgG5Bj+8JOHlHdO1nMZXfAzxYWwVAjE9K1z71kEFbQeVG9uZyBMSVUg
    PG5lbW9saXVARnJlZUJTRC5vcmc+iGAEExECACAFAkaS8qECGwMGCwkIBwMCBBUC
    CAMEFgIDAQIeAQIXgAAKCRChuvku7MfJB2bKAJsHeFHOGni/1CmTS/IcyOYMmChi
    rQCfSjwIUFej0kqsSo0VqLTAjYO0Xxi5BA0ERpLyoRAQAMrvUD7fP2937y24s55C
    MmmGiMxUsutflqt4mIpGf5Ssj0//h2bjFxknChyx7uc9BhnxXPMc1zN+V1onm64N
    eDMZon6LL3ThZvIVFbrjkRv+O1Iqh82k66HNTSl21/FQ8mL3/0E77yfrd8uZSrTa
    cQOdFNYMN5qUbG5U3R6S76CaYX6oN8ctJFXN8PLO2CCn5KBAJ3CWvdcmoadWq6rf
    w7qA0Q6FNXYQq+PxvxNKei9w6xcnDc0DA0/TzaOm3lUQnIQWivgtMa7zkM98LfRu
    wAV7Nn2Op6IeQv2e1i5zT9tL7Au7hUiDXzO2upae3D70tPcUER7k6J7NfWaBfsZA
    CZ9X+jNxECL1RzZnsNRtLMHfIE6YJCc6Onw+PuBE8147hF4bNv79+5JX5XkB7UBd
    8KMHkpCUA4ANo9WTt29JdhUi2hChdATXiIKodWLuUjXjOczDe1HA69BPA6w/RL1C
    OChSEm0M6rYLx8a2X2rpIE+fONE1l9gtWPB1OBOs3/yKO+ozknnbUpMIZpCdq5mP
    BTuLaNAEWTpQUVEJ/32lLdSf0qYtqpn+WycSGXYA0cqRWXYCldTRaA5n4kYC+9ho
    yIueGCwW0D68QGXo+s4VuSaRwTu3kwkQ1H+srwK+pd1wMSabzaN3YgOT6g/L5lrI
    el3jspkgLpEHXYCk8WIZtaCjAAMGEADAsLKwES5Ig7Z3+LFMTFxK3rGMIoUizQpW
    kHUAcwO58jud6t0pxyz5RtYyoAXeCxEGYt5xhYgdcnbWDjraEN94ptOdLeFRa1IG
    y+LIr3+oWF4s4aJqe2WiFd8Fbhlw29YH+CF7E27m6byeYiH6mSB/KuBH9cFicG9B
    mSf6li6ZkL8NGNZ9l1ouOH1TA9hePO7RsHjP38unUFbSg6l9gfiaZF+sNXddZoQc
    qcstmQ2VJQkatqAAPTLwMEIYJvjY+DeKZAHbHfv97eMIe9F2aQ1OdAmL4lyownVk
    fILsTGZ4OOI6KvJD8QcQxn9g5bUwoxIoR1y7AoIYUe84sX5xqo7byzOqlcGQIa5B
    ss21LvP+0gJxrxb8Y1+jDqn8Y3wEe7V5pEchMU9BsTpPD6MNqdkZSiUCA+Yz1P90
    WgO3UbzlDTp19XeOmfCN5srlI2irtijkmKnzLmJFPU3oVnS70vxTZ6JghBERuxa0
    8si44lj1uPztWIc86BmYfEPZ8yuaVve8bI0Cmr/IDUfHlX8/wQ59TV+utMvPrx+e
    ukPoY3Ybxg1r/M2JSEqUmh8czViNrJDqWtEdOYf/oriSJ1mtenq+mEyxwlrgJR5x
    ZAFB/X2eZm/vEnlXttxgRlhT4HBAw6j8ju70BXbUm2boDlQDyQnPG2jA4RbTnvUw
    2aN3vWATPohJBBgRAgAJBQJGkvKhAhsMAAoJEKG6+S7sx8kHi2gAn2xTy641n6vL
    QzMTDTvTKnwMTWoMAKCDsxLiKzQoXpl9Z24xb9BxFdIgLA==
    =nL7g
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.175. Zachary Loafman `<zml@FreeBSD.org>`

    pub   1024D/4D65492D 2009-05-26
          Key fingerprint = E513 4AE9 5D6D 8BF9 1CD3  4389 4860 D79B 4D65 492D
    uid                  Zachary Loafman <zml@FreeBSD.org>
    sub   2048g/1AD659F0 2009-05-26

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    mQGiBEocVOYRBACUSj+Rt8ZAKD0QoT4yHgh+f74lmw0pegpzvQ1DNBhGdVWfIM77
    n6hK4QSYPhSNT/Zz6qqsZlcnuSyXwKDcu82rOUJmo44UalWbWF/wvz4ICuMMttCy
    WRko6Z+lfzILBr+simnAUX2v9mIxfnkg8mEN5/rMc4rOda49Vbcdc0aFEwCg4/or
    HctUnKwa6r+ArXlZ8bxLX4sD/2A3JzXegkrD6LOwGA/STqNhuolad6ZZpvJGpr1n
    gsYX5ihLaYuxBBWK1ech3Rm8GojvsOpmcc5YTtjb37n/YU9WYoKcmpJukdEYNeSZ
    BQPi7jVXUb3joJobOT1LFYjrOX8/MoOgIxPI7RBM27G5Uarxe0RpF8r94bUxEqMb
    SkgHA/9KqKfxHB7suexO993OtM4fTcnJjCfarcL8qpBOQlYLAP2Q3IGZpjE39Bmy
    tnDNwrZ/8jZrJxBttZ5Fjt01pvMAEpFVHm+QNheqBOqpyN4jmyOsvmSjd4YL5ZZQ
    hUhuPS/dtInONvWvBmOHBsoKdrgoUPO2EuMW1pCm/0i7xHGCtLQhWmFjaGFyeSBM
    b2FmbWFuIDx6bWxARnJlZUJTRC5vcmc+iGAEExECACAFAkocVOYCGwMGCwkIBwMC
    BBUCCAMEFgIDAQIeAQIXgAAKCRBIYNebTWVJLe4bAJ0Q8l/7TIpaYFGoaHUkv/YF
    VdcR/QCfVOdEcCe3gPZ2k5KLC1D8V4ESKue5Ag0EShxU5hAIAI7OSBr9s4l3skaB
    +lVNxA/eEkigb0ghP+OoLVRvd7k3LZpjM27jqMhdmu/8U9bTRTX6kA7Ur7uRF1La
    aSrc6unoufkWcm+w7M9sQv1vwdxOg/D9CZttjMxNJs18VRQokair4OAR9mMXybMT
    hBw3H8B+H0AZh7eLTMXUX8q6fc/Dy7u+sOq6fnCY3vIVUUDaw5XaRKI/mWDmQcMa
    4hB79gvNxHjCs2oF5ntyaCF4nsggmZ2guOjN9oBoo6gm09QFlVA5Nwz/g5s84m0t
    Gtz8sGSPK339kwaT2Tym6yR8UszENlyjG1wVVaQhBPHvE706jOlPXc2JasNKoSqX
    Flyj7icAAwUH/0z2SEPs78Ws3eZq58axkafUowgB31tEM9Ke0jLNy1nGkcC+poyh
    Shl4DNyUbLb86J4FrkFa7bmJi8VHteZYjTxrY9usKLKGkbZV8qNd8ry1emG0Lx2g
    JM5jcRp6ghT2qufHF9PukKwkmNRJJgvAbgSgLi9dWkMymmpo0LsKfKmnoVCy34tV
    704K7JOOBHob6Gi9vMXLYkBUPJCn8BALbZi0WRR/D5bB+OHucjJpEp6lHXYihkX7
    xgSyrzkI2fvDLmJg6/jmtsrQwJFScf2E24IWO5JGLRsuqoE1UUcnmqQKLZ+iH7vI
    fSYNaY/TcB55V2TmpzpYmkGBgI8G1dygrAqISQQYEQIACQUCShxU5gIbDAAKCRBI
    YNebTWVJLTvyAKC5FWGAM6MJaj/cNvWfkdMFaZqAGgCfaktgPFqyozZiZQuoJM5D
    +FztFoI=
    =isE1
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.176. Juergen Lock `<nox@FreeBSD.org>`

    pub   1024D/1B6BFBFD 2006-12-22
          Key fingerprint = 33A7 7FAE 51AF 00BC F0D3  ECCE FAFD 34C1 1B6B FBFD
    uid                  Juergen Lock <nox@FreeBSD.org>
    sub   2048g/251229D1 2006-12-22

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    mQGiBEWMWfERBAC6P55NRPt7PWHQk3e3cp6yAYpxsNH4TyMZUNKFjE9E+g4GDe1F
    fd1ebE/as+qcZ7rnIoEqXMYyXW/8X8kdE7FJVoJBmH3RdlaJhHSxogrAHZJ87PWH
    yGC4mP7F2zvLjUqB2fUC6gYUJybmYi7F6run1zPKLr5A5Polx/SpqL52IwCg/5Kq
    vo2Lc3ceBT0L5BKOWFLHBWMEAI/OIOXhv4Hsu0k0Ol+Zdwp3vkw+geBo0MVHp0/P
    XItW5TM5Xi0iqQAcBU2KmPKUinaIJEEPAat5sPMZ/0BUsdmhlD6BqIp0qC8LXm9g
    Tqmenm3WpiJPsd486lW6dxzFqOZKdb6qq87SJ7ajnPB12SykRW26VkyHzNCqiETL
    LigDA/sFPsm499ccL62BwkRGax93iYylhsrV7zXT8FXAPIS/S7JasvaiyHTvRv8K
    u9XSO453WZtzN7TkNp6i3Vw1SSxbrwCRZZ7nspEdMXWF9ZdTtSq8mpA3R74X7dKM
    SXPbbsTFfQ5JR9v8x5T201nFiM/jPteU6WbfyQc1MuMCUqwzm7QeSnVlcmdlbiBM
    b2NrIDxub3hARnJlZUJTRC5vcmc+iGAEExECACAFAkWMWfECGwMGCwkIBwMCBBUC
    CAMEFgIDAQIeAQIXgAAKCRD6/TTBG2v7/bkFAJ9/NodQJ3G3mLhNkT/rv4ncgpOV
    KQCdGm6jx53ESn4s8YJAPKWgym0AKTq5Ag0ERYxZ/RAIAMR6vbusFDGVMpB6AWhC
    cru/N6Qz/kfB6+Ufy2nXcYMMaD2c4MiSUSV6pF08s+xx8oqh6DiGdPvdJQ19ZAdw
    BJaD3tc2EeIv7Eh0upHhC7CuRk3eHHd+KaKFquLGU4HNMEvxXkW+DZ0wWrbVIu0N
    vRBYXJlil7B3RE9+9yQLdoK1IA/N7DtUvbezVC3Px/ZuNe+cnI5neXZVnm9ks9E4
    qlghKSdb2LLghwfBy0JRqssZnvvqS+kRz0LJgKIX57pSrHfx0L5Rwu1JWqvmWKYV
    hkCogZFXpn31ArmmJ54O5KEP4hYNR2FcF8hwNjMqfij29QRi7xpxDLQYgUjM/kTl
    g1MAAwUH/2TJn6E3LtPX7ceMUKVyJRO/OsS7/r8nX8hPRmX/cnnoHTtYOQ1S2F9J
    0IFTZKubxfyhp9ldRx55GiDWyRvGhhjCOuUH7VCSPMCURbMOHi67EDfqbHPzhKcZ
    1lmeqpETmPx4SbVQ9vQ1802gsyZzNy3BQcoK9GIw1Bg6KLYVQ/9rcSDHAB+ULVF+
    YkthjJcPDQPdcn8Zy+xGDuciav9HPaeRXK8nXvx8ERDti99GiuHI/S5+t3wDeTPT
    dZuMiiJYsVc3QuuEN4eMseohFUX6R/Mnm2L0qFc43k3h0vmOoTu65dMEnYZdsKiI
    wXTiy7GaMXH69Iuq9QK5wAQGHwTDbJGISQQYEQIACQUCRYxZ/QIbDAAKCRD6/TTB
    G2v7/Z/1AJ9MfhLFFNtQHDgvIwjgQa2xJX+N5QCfQKUy9vBwNhrVvrH86hoDMhjV
    d1Y=
    =E5fg
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.177. Remko Lodder `<remko@FreeBSD.org>`

    pub   2048R/6EB8C8C8 2010-05-28 [expires: 2012-05-27]
          Key fingerprint = D692 91F9 F4EF D363 7F3F  4D17 9C75 DF7B 6EB8 C8C8
    uid                  Remko Lodder (Remko Lodder's Key) <remko@FreeBSD.org>
    sub   2048R/011C6AA0 2010-05-28 [expires: 2012-05-27]

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    mQENBEwAJnkBCADaaSUOhXEQBlgiLmwmq2FKs8cSBc1KEWj5gZLLs+Fh53+rquTB
    yqCP5ZOcP6BozqjbHia/6TQJDgvMTtWpRuLOtdTK7DyMyiHAFMp6TUuQHpRMun28
    rjGcntGi+uoaUk4gUfY1vSZUurKTAWiQH0TiD35qu20PcHhKysNpGqCTtnJF9vYh
    ikZvwbEx0mXBfQrD0tp6A/wHNSGZ0dkobwTDTBsw1Fggqaljr2NJBJIzEUtezYbe
    VR0bquobnRRiFoyEYL5BhyWtXgHRrJKpsx+XoxNK7df6y3hr3uWj/nshx0JTfSxO
    Kp2jYuZhHSjOPpDIe2vsod1Qe/XpSJ60Yp37ABEBAAG0NVJlbWtvIExvZGRlciAo
    UmVta28gTG9kZGVyJ3MgS2V5KSA8cmVta29ARnJlZUJTRC5vcmc+iQE+BBMBAgAo
    BQJMACZ5AhsDBQkDwmcABgsJCAcDAgYVCAIJCgsEFgIDAQIeAQIXgAAKCRCcdd97
    brjIyJZ6B/0ZKYS5Tb+OI6QRgLOOwv3yoBjgrXCsJ8Fcqa2+gJ1MfK0NZeiofiZQ
    OhH9tGvt76pva8L1LiewbHpRXtbA9DMC7w6eBgECSrud7oGuE+Yd4kOPo1yc+qWQ
    DWBK6OS/MkfPZS12/lNYqxg5EXR3wesaEWPfrJ1VPC3GzRngV2zKxahmoZ4LwwNj
    m16QLg6jf4ltLP+5TPQnIM1ZdBpkOVweegsXbvxhoJUT1jVgueG9F2DuVfDAefKq
    y63IZu1MqendaXCiU5HTnIsGndu6CR89gxMAT7NrjqTN4vp4asOo50Jr91yc4HbH
    CK1shMzwQyWnlSx1/4bYw4iUuVvy0bwruQENBEwAJnkBCACmI3KaRWkpVcxrpt8g
    9LruHRBe2qr6SiuW2kxiUYFJuizKWELVhU1mgBipEsA1T28CkRfGL4LFuG2o3fR0
    5rkEnv4IV8WuYITvleJGbFRr67jfKkZVc/CwfLFwtkTp8EbXQquiKQ/k4eIbM1XO
    wRLdewsUjTPBaml6QjcPYluV+IUmEAbckx2UkN3YKef/DSg3AeCDqSWDGxCz59Vj
    9ia+jiZ22lvLqhNX0iq8sS9YE5N6rW52Y5njraclfZ3qY5FuXNmbzalVmFcRd1Vs
    o2sGGMd8P8L/GLeIwYNVFs6qcwmna9nl+xP6LxYxnJGjJBJF+8FcRA7FTaOARdbH
    9Y9lABEBAAGJASUEGAECAA8FAkwAJnkCGwwFCQPCZwAACgkQnHXfe264yMhjsggA
    taUN/S4of8EB+JV4srLho7s8Hzk2UK11PnWLplIyTZKmJWYTXHQP0L3hL93IRC5I
    Y5lG8bd2znMdAQrGxMxIOKKtYOBCxk6ph0xX4QYDsi3Vx5l7wDPSqCgX8DTyxgoS
    LK6wuLipVtg/dypNMiOJRwcGEKH0SvLjl3klCAK/Q8lEo6K9P99J0LvonBHsSl/h
    7VBH5TKJmuWWBiX9fmFRNE7iuK/dqSgT5Bu9iqlshloQOALofchAKVm0/2B//u/C
    Tb/LgkD2u5rFiqe+Cz9LWwF/CdjRM+1EXwL5C73gTmUkI5tT32cmgRWDlS3gFT1E
    2JwvVAHif+MR5Y2RMTMdyQ==
    =H/lo
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.178. Alexander Logvinov `<avl@FreeBSD.org>`

    pub   1024D/1C47D5C0 2009-05-28
          Key fingerprint = 8B5F 880A 382B 075E E707  9DB2 E135 4176 1C47 D5C0
    uid                  Alexander Logvinov <alexander@logvinov.com>
    uid                  Alexander Logvinov (FreeBSD Ports Committer) <avl@FreeBSD.org>
    uid                  Alexander Logvinov <ports@logvinov.com>
    uid                  Alexander Logvinov <logvinov@gmail.com>
    uid                  Alexander Logvinov <logvinov@yandex.ru>
    sub   2048g/60BDD4BB 2009-05-28

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    mQGiBEoeNvgRBADOJSDLfbgPuLl4Y1QO/1BjX2MFveYtMacSLpaJURRewkBmoKBz
    iXa9a5A+uKiQTtX8S8bnkvwmpzEua8RMWUN/XXb8aZc7DPcZbP9NFNaNZ8BLgnLC
    FK1gIEpJpcodAQ0K5HAGiLwjsK3RdM78pvDUJDDmWPaflk8llx4H7kjjTwCgwIRy
    /8f8FHQV3zUIGqmJDt5019cEALE+LTHjCOZkk0YKqVETY7IAKX48t/o3t+ybkqcC
    zFYIRA0v7FR/ipxkNgSzi+tKMaExDuFuV9aZEhepS54eXriXyGmzvevINlHlFgh+
    60WrUGIlkVtQYCW4EeP7kB66u6uV6PnKqFUXPLoF7MDg5nrJqaX7r4+9d0JopClN
    1L52BADKV1retnbON3PP460z4j9IJspst9n1AZ3y9S5ojZ0IvhL9UsjazvRheTCm
    fArizJMTtDUo9SxWXCtpfxruYJSB5jlhkZFMC1oj484mxm/MgNxJ8mov2RAT1Pu4
    85PjDNtAKq7yrTf8x7PbNVpoJkU98lZQ84Bt4RbaqechA3l/l7QrQWxleGFuZGVy
    IExvZ3Zpbm92IDxhbGV4YW5kZXJAbG9ndmlub3YuY29tPohjBBMRAgAjAhsDBgsJ
    CAcDAgQVAggDBBYCAwECHgECF4AFAkoeN8wCGQEACgkQ4TVBdhxH1cBPpgCfYR9i
    yz3P8GnzGKzKacDhYSSRdlAAnikohHSQEqzFyKimalh+Vk+yv1mutD5BbGV4YW5k
    ZXIgTG9ndmlub3YgKEZyZWVCU0QgUG9ydHMgQ29tbWl0dGVyKSA8YXZsQEZyZWVC
    U0Qub3JnPohgBBMRAgAgBQJKHjeCAhsDBgsJCAcDAgQVAggDBBYCAwECHgECF4AA
    CgkQ4TVBdhxH1cCloQCdGWWbAGInaDd3AqGI07kIeHUfZjMAoKmujjBeu/1n8bsO
    OwUIcOutIiBRtCdBbGV4YW5kZXIgTG9ndmlub3YgPHBvcnRzQGxvZ3Zpbm92LmNv
    bT6IYAQTEQIAIAUCSh43kwIbAwYLCQgHAwIEFQIIAwQWAgMBAh4BAheAAAoJEOE1
    QXYcR9XA8FUAn2F8Y9LTsvK/GJAMU2gboZY1DCxnAJ9XnCdD3w7uQscd+sqIJKuV
    KlYsDbQnQWxleGFuZGVyIExvZ3Zpbm92IDxsb2d2aW5vdkBnbWFpbC5jb20+iGAE
    ExECACAFAkoeN6UCGwMGCwkIBwMCBBUCCAMEFgIDAQIeAQIXgAAKCRDhNUF2HEfV
    wG/MAJoDJLimxPsysGqpRWMYb36855NBLACgn8ICeVtfyqCoxAv0YIYk3K0M9we0
    J0FsZXhhbmRlciBMb2d2aW5vdiA8bG9ndmlub3ZAeWFuZGV4LnJ1PohgBBMRAgAg
    BQJKHje5AhsDBgsJCAcDAgQVAggDBBYCAwECHgECF4AACgkQ4TVBdhxH1cBWygCf
    fvEVUFOSzEPylUJMZt2NKaiwomQAoKY66bHiWUIReF5NliBlsM3bv5qyuQINBEoe
    NvgQCACVC9Ks/nhrOVuHu9rj52KRW5J7S+20ZOZFOb90iVFCwFSn3/TstqGnao9X
    NQBiopv+i5s5AdmVjUyHnTSMggqVGfxltgG6ttxmY+iU7N/+aIXkbPzHZ/qZgKv5
    ey5MhS+kFV8Jh2IGV6beaQM0KNJ9LV9Hq1+V4ae0ulaGYFrNnbwI/rdXZ7vEETCF
    EVM3NP6xsgiw1NQ/V6b7iriTroeRytu7XoRlchik/7sQBLBwUvIVAD7BdHqjQ1NF
    SILyTr3aPagu1CxARmkCCDX2sfcqT2/9wVECubbgcUMRjVHm7k5BsZK7fGmHcBZg
    /5Rl7ngtUYwsR4h47A0aH4IPZ7AzAAMFB/47qL+Rb4wqF+sCWM/QqCrgFqMwz1JI
    qc26U0+a6bZ6kJBbMzvBcdrVFRfn52qacCdfFpdI6Yz3fWQyzrAZwqjCTPaGBeEd
    rSVbonW5dDjJTkSiKMlo53D19PcNklSjFnCrPeF4aFQ4VbT3RioWh9P00xhCHPQB
    hsg+cU9rm5ZASMht3K+k+bgpHT9gPVzckZTC73l3xaNetTDnHlRDw8ATvBYcUfYr
    kDp3tgkZ7a1pPRMz1oOKNWtxW5Z07HLj0Lt2xyZDe0BSImiAa7MYC4PKLi5VlDKB
    GPjLDrM9K1XUM3Gp8O3bd5qjnsueu6XOdGZA93g4wjXmzDqhFIXy5T69iEkEGBEC
    AAkFAkoeNvgCGwwACgkQ4TVBdhxH1cA3KwCfV8uCW9P5gm0+Dfm1miO/j6rvexcA
    niBfAchAUVjJn+UKjAd5RD1SFTAm
    =bSSP
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.179. Scott Long `<scottl@FreeBSD.org>`

    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-----

### D.3.180. Rick Macklem `<rmacklem@FreeBSD.org>`

    pub   1024D/7FB9C5F1 2009-04-05
          Key fingerprint = B9EA 767A F6F3 3786 E0C7  434A 05C6 70D6 7FB9 C5F1
    uid                  Rick Macklem <rmacklem@freebsd.org>
    sub   1024g/D0B20E8A 2009-04-05

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    mQGiBEnY+RIRBAClGSwgcIr4i7G4CYEa2cBHRC2UOB75/AXFqxmzAOcype8WInbX
    f4xLBa63VMoM7eis27BouVRcHI64oREIL9yvvMPwRD2ZINY5UD/zkls7fw9F2NyJ
    AgntQEPRDkk14AEiIX5uvB3l+JyKmbMNpJuhrKpbxc5qvaDTgD02y9TurwCgguAy
    pMVQu2mtVccXkSb7WEh95SkD/0jTFzDTcuowbxALrPgQtlGEXo7RYLPIFxTI748F
    h8Tgra3flWp2QPAnWBJEzrz+9rl8wqQ2ddb9IydwtY49BjKIrXhj2Lh+8l/1oDKr
    RXzRbNH/lGHhmphW42DgM9mOCCoSWugUEu458I89FjuoncdBiDdi7HUxPy/rZ5MA
    tnRRBACWL22M5MPfD9dl9SHvnoBz47nwlBeg0Oxl22oNfiyTQdJ1q+g/wGpDPAll
    eqs3Svky7gj+f5375K/DEYaeFSRynXeetpdqpkBDlp4mRdDGcpd/4ImAx6deQTXo
    EraidVlZ0Fjr5cP+mFzoI41LAhTJa/VUoUkMxq+gJAsXsSF39LQjUmljayBNYWNr
    bGVtIDxybWFja2xlbUBmcmVlYnNkLm9yZz6IWQQTEQIAGQUCSdj5EgQLBwMCAxUC
    AwMWAgECHgECF4AACgkQBcZw1n+5xfFFBQCfbFJpzSEXUgmoEl4RBgoPNzu9SOgA
    mwW8fBCx0RDGfho/8S/PjZLQ38JCuQENBEnY+RYQBADMlW1YS4ZhBh4PCOXTJsjT
    Vda2DEn1W+2BzZw9j/DFAFjm0U05rlEsfz584Y/SLlPNbCZ979//3K7XxicRw7zm
    E1Mzahy2jrmGGJv2GfAZ+YyJPGA/xndNA3/ocT1x03LMWNbZwFBe4Kk5ShoqPgl3
    cO28w3TJUnrUZyo+h3WhpwAEDQQAkwVB18LmtI0CW4H0/jMgiz5B0z3yZdlinbif
    +EEFHhhdp1tXtxA/jyp3FsW7hOlGXQi/tACcxJ2UBcYAZh03+x7bUMnJpisPDnJ3
    UilCuwk5cAkQmGeAQ7ukNNBwVhJ0ZfW7p2lZ2RwW7zSjPK7RMW1EL4Scwpey/ojb
    Tv9fVXmIRgQYEQIABgUCSdj5FgAKCRAFxnDWf7nF8WUfAJ0TTs+DTEkwHeE4mHAA
    CqfpXJXMhACggkoKIIAH+lHNqv3Uy9q5RFd8t3I=
    =F39a
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.181. Bruce A. Mah `<bmah@FreeBSD.org>`

    pub   1024D/5BA052C3 1997-12-08
          Key fingerprint = F829 B805 207D 14C7 7197  7832 D8CA 3171 5BA0 52C3
    uid                  Bruce A. Mah <bmah@acm.org>
    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>
    uid                  Bruce A. Mah <bmah@kitchenlab.org>
    sub   2048g/B4E60EA1 1997-12-08

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    mQGiBDSMdS0RBADQE42S0MDRcjiuM4mPH4NL2m60OMHgq3mYuIzrNkRE4jSzZJiG
    8jBMl5VysnTkdvL61gH4aihIqioULOUq3L9XEtlrLbx1HDXEEdAdhARzqPapD4x2
    FbHpjb0wjxQ7RmXXvLHDlPa8x8K48BJjZ+9WhPs6TKu78+I+9cqZ0u1KKQCg/2ls
    GAGht29FiOtHrHFVMKl3WXMD/R6wl33Xsb7mwFROBWoYxExqSAZ9xeI5KUtQ5f2U
    eYSbUfxCTkcBIImjf6UhtjLTs6Rc0ouYLHOHu7wxVVzA0x3UpcEWUkNXWsy4PO+S
    j7PdzKi52BzR2LY62DoBTUARAaIsvp3fV126NPBHR2Isflo2OlEvwKGJ40IJMLGN
    d3xBA/43QdXUcxa/FFAeCroYr/BkWPYz7Oh1HFBTa9xxrKL5sLDJChp/yLFoVhsG
    0t4w595cbD8L1n1PckcaKVK2Y8vjafJKL5k5Ea/CnF0kO7+Q3RaydqzOcS2yP0n2
    ZLQ+sorNz1huY6hrJemH9SjWnYKg4xbxfQzRBcfRxGQv3usvC7QbQnJ1Y2UgQS4g
    TWFoIDxibWFoQGFjbS5vcmc+iGAEEBECACACGQEFAkLy8f4GCwkIBwMCBBUCCAME
    FgIDAQIeAQIXgAAKCRDYyjFxW6BSw/IGAKCXkxrROelKd6498dQuBhdVBji7qgCg
    /eUqq6mKA+R+P1MD4YjsyXy13pOIRgQQEQIABgUCOe6NVgAKCRCI4Xsd/OVlYVW/
    AKDVOmtjLziEZDRxiyeimOQy2cQ0pACffZ1KopGDjOi1Hwi3diH5dSmOOwOIRgQQ
    EQIABgUCOe6NXQAKCRAY9QOAJMJ4AkinAKDIpaIXZCpCK7ysX9PW+3/tL7nNawCg
    ngynY5TWPwEdZ1aedPev6M/3+HmIRgQQEQIABgUCOs5wJwAKCRAJ/r8QgpnNs4gP
    AKDjAHY+qf+Li5WmAXDzQhsZ0Om0dQCeNJ706+74vz2NLze1Ttc4EHmDXEWIRgQT
    EQIABgUCPQenhQAKCRAgFTHVhF3+3UHaAJ9bd79S/Sq93vH/bQbmGuoUFR4BXwCf
    a9bJYAT5gz3SN6pxqRxZyqb6EqSIRgQSEQIABgUCPQetSgAKCRAh+cW892qb9Z6d
    AKCQqaiB1Wh467OWGusGvrYQzXlq4gCg4FNg/xngvZeJW97Ntn1BJza6s3SIRgQS
    EQIABgUCPNl+gQAKCRAqNrG6CC7PxbswAJ4gLnUa0Jx78YupuQjIPRB5r3puggCd
    GjYiK4n0b9LbI7jZhgJsEb89JoGIRgQTEQIABgUCPQernAAKCRBG7a30NX1l+4fl
    AJ9Dz+M2C2doo92UtEmZK+DYzJ16AwCfYga0raO8/sIAEd1Wrp+3IlgmrcCIRgQQ
    EQIABgUCO+moHgAKCRBVlt0M6b9lPaakAKCAhO9xMc+3ldxsPUnGNhTZ6HivgACd
    EAzCr/VbLp0dG2/hPV5Om1d4aA6IRgQTEQIABgUCPQer/AAKCRBdjovp8jga1Bpj
    AKDDCZG5Y5HLe729yr1PP/Q0vf/FRQCgiXZX0DhJj5Pa/SlEKHn0FqJ/ti2InAQS
    AQEABgUCPQetLwAKCRB8S2dtoA4VY1BIA/9l02ueCOR++lCobMBgOBcFOO5NiE+M
    x2osDI6r1cZFMYJXOfxR1nbvzT/yGZv2waF0XECMvbjUSdcRPHalVGDivaLR98z8
    6p7mFzr2g7LHpI/brauPIVYq61EHtZK1LWzKFAK6HEpx+C4JXURsA0d8i66Yu8bx
    jVJVn9pP4WEiI4hGBBARAgAGBQI9B58MAAoJELTXEKIORR99m68An2c0YEMO40sq
    UAJNrmCrox4RlAXUAJ9PvIK2AFsFRj0CYqjc1F7sdX3VCoicBBMBAQAGBQI9B7fI
    AAoJELaE8XzBCodN+R0D/2fWf0Jp2gJy7Pq5v3GZBxiE4Jlgill6C7iFU+wv+V6Y
    fp5KFBfTNH+myn8DP9I2PDhSfH/epN5UqkuTzqyz4DLpmD0Q/eK2U3SmWrfQFojh
    BUDGLDSsSMcsUQOc/kYYAZ1Iqpe+2F6+UBNq66/DWbS/9hm9uqIL0ehRb+x4Nl5W
    iJwEEgEBAAYFAj0HrTsACgkQ1uCh/k++Kt1d5QP/RZ8QoiVv3yqpFDOogmHGFqoO
    3PWJKMzsP0zvySlSM0Q9RD3bSTRGYg02UxHm+EPS6hy42td452YUYMMK4lirRQty
    wcKjuM2P2owoB7H0AuVjDsmEdLihxVq79/Mh2WWytabS0OVxvR51JW6HT8imv3/8
    vSU1JXA3BZnTrl173dSIRgQQEQIABgUCO6jZ4gAKCRCeHQdkN4IiqFUkAJ4zDQG8
    i+y4+nmrEDHtewizXX8a/ACgkOdRDTFhrElHzO81thsR6BnDh2+IRgQQEQIABgUC
    PQep0QAKCRC1UrBDdzkF1ic1AJwIQLg4bt4zXyc79PsDRm3esGh15wCffnTIMDtR
    9b2kRuFVRLnDBxA0IOqIRgQQEQIABgUCPoN1pAAKCRA/fNKRRvrNxw2cAKCJnEPh
    KU+w4MRdVyOsI3m1puIm2ACfX1+ehJ0wkRuSKN1sE9XpR74PqTKIPwMFED6LNcJi
    QObrltOfCxECiSMAoMAwczTW4s2rMJzvEsSxVUMgH9ycAJ9ztFJbYsjP50gMjWbx
    8IFnHLQKPohGBBARAgAGBQI+Yp0KAAoJEOGpmw+ppg/j5NcAoM+A5luHR+h/uGFy
    CnMScUMV2mH8AJ9oBLhulGjW4otlfO8Sm6WXTJxEvIkCHAQTAQIABgUCPy8b0gAK
    CRAdYunJN23Ox1ytEACnpieD6dwAgESgHR+Iw04YYbmLB1rynuI65AqfBRdEQnqG
    5xXjwZmwJ+aaSFEraKLz6RQLpv4HvKoXyvZAhzSFOPmHvV7GgmCTDZ1kVJNg22F/
    8AdpBdfrW4RPbK7MeOS1MXV7xzr5mC5NWimIJVrsn2TLECbciIu8Kpy4c7wv3EF7
    wmZzaTOkalQLL9XODpWhm2X1ASJ+nl4P9J4IElR+lwy/KqRXLljA6/v9+wBs6kmV
    idbzeXTrKttX++EJ0PxyMMX2j0CAVZeXTWH5ieafn6X9uU3f9QA1ZF6w23Z8JTp0
    ggoOvqYJ5+GqmDdn/YrY3hUizlCy8OnAOs0cpN6VgaRrVgmIWKdK/o+VE2iLlbSb
    cXaLSN43BIWpnFrypxRZLN8YZQb3P1/A0ukOM/GHf8qE+0SXJlL6CUP1N5GsgRej
    JOc8YEuSkanPA478KvwaY0m5vXnc+weUHSrlkwxKrRXzENz9jGimhbK+J8OSPqTV
    up3Mjnc04zglDYtWbttlc20zZtB+I29uTqarLLRPG+LpKFxSGvEJivXMiksWzR8e
    Py2VRGCo7bSbjT54nTJeBuhMYylNc3tDege6vDiyAJnFOWCF19b5coyStLsSc6xu
    KXRe8cUcuxeHoiapXlYdwso2i6jhKOuTUspA5gK4kBe90RDN4kbholz5wUiiAokC
    HAQTAQIABgUCPzFIvQAKCRAPJ00hlI+PBvVuD/wOSFsStty8WdpxlG0gXk9RWWaC
    YsNjBcYCpHTFoPRQ+fZn/wQWWH0EVZ4pmPJB9f7COADs6gnoRWUFl+eApNi5bgsC
    8XUvcSnWJpPrZwmt/2c0mTd5rM5LvmaGezMjBKYepTvMWG8atd3Vt0O2WObt3/1m
    XVfzEr/EbbcTZ1umFyjUmh+6Z0LsCt910Br8D77PZdxjB4BmiVxWQKsHtuSNRTYF
    RPgGZcsKzu1cyFyI5DE6kwh1b1UjQSV7vCPRsCiNXflbejjZZCtSQ1OBrM7R/4rP
    sa0Tkf9MEBq7Wsj313KMZ0oPhEcM5so4P04VYhMHqABTijeF7kZ+GaWdiKZxVhDz
    aFryG1IunTLr5HO+yFa1NgsFtBbsmuploZYcJMeWKuo/z4DWvClgES2sTBKfRfVO
    q/65juxImaDxc1Qy1yyRBYl1Wiib1aZSToK/X/OsZwPVo7QAPAqbDQcMkrc5JJ80
    c0N3TJtu+ymidWUnZ+gvFe6c3DTV+trItxrwPjhHfPD4+oHH1tFb+ofcAa69qt6j
    LIziLMjS+Tyv5/8QP8xshscaiCDQUpjWwsjkkDfQBBd2lpry5iUL1dLVfSDprRtt
    dTpIe7ZXBsss+7XGBx/A4ApW2JAxoPo+A7obZMzt29jge6RCIwSXx1r6ltrqnYcV
    O2RFRKEXP/IJ/Iexq4hGBBMRAgAGBQI/YU+6AAoJEE8s09gnk88taKEAoLCFzYQy
    gC5TNFi9g4jPi53k7pAnAJ9MBgAycaj1QFLnFwFb9rOZIHyR3YhGBBMRAgAGBQI/
    YnQoAAoJEMiGpCvVsvD7NQMAn1ckw60nFYwxjPIEWCFVXzO4Vw5qAKDFeA154HBx
    NDSvbzu1LVz5HjKx9YhLBBARAgALBQI3e6BCBAsDAQIACgkQ2MoxcVugUsO4/gCf
    flQ3GeCupyHPgKfFikkzF1yhbwMAn0DqJIZ9klHdcWGPz2cWHA7PSPGCiEYEEhEC
    AAYFAkAyi/MACgkQK9b4h5R0IUKRQQCcDqpDaOqbpozLjhEmbw3GkvUkM+QAnA64
    PuM7qnvvqyYnARyZCfXI2AomiEYEExECAAYFAkC0G7MACgkQ/G14VSmup/ZgxgCf
    XJq5zF9MRHkSh09MQWnqOYv1S6sAnA+9CRUiZU6A/AsV8QQ9VpZa1OSDiEYEExEC
    AAYFAkD4HsQACgkQoE/7G33K6dPbiQCfVxLCAXYMOoBkhncGxRMrCrHjlnEAnjL8
    wI7YWfJxW8ZGhxt0+5tq8vG6iQEiBBABAgAMBQJC0cfBBQMAEnUAAAoJEJcQuJvK
    V618sIYH/RKryJhK9oyyLDJVOBp65U6ViVC07T2hlQYfot48p62GmURoxba9dF9A
    jjFcwGc1D8vhnnfIQz7pnu/SI5uWdAonMAJvRMwIpwt+mj3W2UiPVBbqvcZjRvay
    RVxyQCGJwE3zR/0yden80GHNPZuDACWrPJ+MzuertkjOclMkXadCI+nWnZ+usVqT
    FEtC7N5F5gRO8tyZZ8a4CCadkHJlXtEXbjnbmHVDQP9E0PVc5DuN3wwA6jFyMDKb
    TWHH1SWJJL5VZOvTj1D6ToBlccS2vGhOqhPOWzIMZOERplyx+PfY7JjLOOo19ggn
    HTUzQUwvsJNhk7UW5YQqmEJE8iZWoR+0IUJydWNlIEEuIE1haCA8Ym1haEBjYS5z
    YW5kaWEuZ292PokAlQMFEDSNdJeozjotI+wmPQEB2sAD/R79H8KT20AvdLfLK3hU
    /jm0Zc2EkJzh1fl2HKotAyfp22WAfutAsz8R5HIYX6i4tM7DWG6pX8kwiWmzEvHd
    5+GlUZHvnjKQ/FMLARnHzoPtx/WhX7DQxfaguOnmjdmRGzKbDGj8xDL3b8yFmOaR
    dbs4ibPoajzaZ3Tr/W4PZq/qiF0EEBECAB0FAkLy8goGCwkIBwMCBBUCCAMEFgID
    AQIeAQIXgAAKCRDYyjFxW6BSw1EKAJ4qGuAM4xTuFXXIRdujkCQEUqr1hACfb5+G
    KrD7r2lZGxjg/lGThLZYvZaIRgQQEQIABgUCN4O3TQAKCRAhPF408YILVTFSAKDW
    VZm+TtyL320Ys3xjCWSY0dZ8ZACg6+bO0WQFvgmjLgpww4zf9A953DSIPwMFEDeF
    EjyvogFJ1jl/pxECv0UAoP0N+A/su+EsG7AyqtTxc0SkSG1MAJ4i8MbiIzk+Picf
    +hm1H+gXxWn1Kog/AwUQN9n/OWlM93/mX/l7EQLDZQCfaV51kpxPgnf6Phq5748s
    gmarZroAn3NskDMAtcSHqTyYfFu7SNOxgWIdiEYEEBECAAYFAjnuh+YACgkQIBUx
    1YRd/t2hWwCdHqfPJWb2wVx4VoMtod5RRtQ9tF0An2ec1YSzFuep4DB6dI23LP04
    voQ4iD8DBRA587GDd84pxY+hLiARAq4zAJ0SMRRA74tGwcGLWGwAxBbpVmPM5wCg
    sH7yO2LFTpDA7ZOJxLlsCumygsyIRgQQEQIABgUCOe6NVQAKCRCI4Xsd/OVlYfzc
    AJ90xj1zsCx/77XSTRhjOth7YuT55ACfQJZMfNge3GcyXVSRAKsP4TQ9zYqIRgQQ
    EQIABgUCOe6NWgAKCRAY9QOAJMJ4AvUZAJ0fzv+uIaG2+DHRCoSYI6ahOfvjowCg
    hg4JNSkzdscpeMLb5q16DM1wI9+IRgQQEQIABgUCOs5wIwAKCRAJ/r8QgpnNs9gE
    AKCkwV3KND32VVU/8XZahJoianhhxACg5v5u1/2R2enqkLWZUWFL28qu/o+IRgQS
    EQIABgUCPQetRwAKCRAh+cW892qb9YsbAJ40Xm8eNqn8rNDzw0OPYNllg3fp3QCf
    ZjLQcRY41X1pBDw/ANzaB/VMKqCIRgQSEQIABgUCPNl+fAAKCRAqNrG6CC7PxdY1
    AJ0SC7aH9Xl9Jd3d97YA4Dkik102yACeJ/jBytsYC2I5XM4rM23KXUyWcPKIRgQT
    EQIABgUCPQerjQAKCRBG7a30NX1l+6nXAKCmvl6WMd8LGiDIjoCFftCNCjWtKwCg
    qkc6y4+xT2+xliwJJpbLYuauZmeIRgQQEQIABgUCO+moHAAKCRBVlt0M6b9lPcKJ
    AJ9Qay/Wac7u0Xhhv2gEcjoPDhjN8QCfbpDwH2kVSzDVywWQeYmNl0tWRPSIRgQT
    EQIABgUCPQer+QAKCRBdjovp8jga1NnSAJ9f82WWtmBwykCgd3sxQ7S+UXDE8ACe
    K/OC5oWwkQ3d25iL5KjAevFBCtmInAQSAQEABgUCPQetKwAKCRB8S2dtoA4VY6P4
    A/9GQa7Anvzfqg/t8lz2ZWS4DWOXcpepN9NwyspwOCc2InJ6COiNqsFAWltbBXT3
    Ik7zl7UvFrNrMQcWK5CYNbtmfxC260BSsS4jECPt4UKLnKNGLsyaQTI8u5uvzYP5
    L7zn6fnLYbRNLIqEu21dAwPgrRnZKCMlyfs1vxBI35ULLohGBBARAgAGBQI9B58I
    AAoJELTXEKIORR99BOAAn3MBIytcvWun3scv1Xs0CTptuRW+AKCZ+pUZ/59HUo4l
    qhSmcyn+010UGYicBBMBAQAGBQI9B7fEAAoJELaE8XzBCodNS2gD/Rs2mgQiCmQQ
    zqlldque7spyufObyYyXAcBgcRs4Tp+Dk4CpQZyUB1/wn4xEO45voG2kp3twCyYN
    BKDrwpZYiLg3QWJRnGifYAiwW+W/ldaLydHvmCJzxRngVYSfrOi74gcqUDlFFrFn
    EUpusat5DOYSUqk+pnhHKXmtVWQxrNGKiJwEEgEBAAYFAj0HrTgACgkQ1uCh/k++
    Kt0z8AP+NNkS3RA/2uhPsdpOo0Oo7arbTP1zk27TRW4pGj23dga2XaVtM7nSUf5U
    Tf0tTJ5dDhbTobrm+GWQ2ThBB+IbY/oigeI9FLE1Rx7vn2IEakjiD2E4kafL95T8
    ooBrCkbqDPxigs+mYAig9E9I6p62Dm3nBlOEAnq+6t98rsi/yjWIRgQQEQIABgUC
    O6jZ3wAKCRCeHQdkN4IiqDWxAKDAk9tST2QaFszZPH2gVgushcOo/ACfVwfxrBj0
    4HEBwa+w3WL00RU7dMOIRgQQEQIABgUCPQepywAKCRC1UrBDdzkF1tVlAJ0QGe/T
    0YYoSb3+Va/nTjqD1aA2qwCfcikASWvi1DpX7pyGD08xylln57OIRgQQEQIABgUC
    PoN1mgAKCRA/fNKRRvrNx18XAKCuAnmaHp/afH/D7qMyY78c8O6OFQCfYI2Do346
    vvcw6EupU1XxDXrK5NqJAhwEEwECAAYFAj8vG90ACgkQHWLpyTdtzseEbQ/9FkHq
    LNaxRNXCFKyyBakKuOfxdiCA/WyNTm+YKW0tu8Yzqb6gL8u3dKjF3+W6UGzPxyRU
    YeQ0khy4UeH/Po87HXo+Eu8mTWZUBxd6KKkdVH5v8Gq1x0m7qZHJ+46X+HsLlEz2
    7omXEK/npgXl6sa1wX8OjbG85c5259Sezr9wvUgmbBd2U+xITRmmxGwvzzP6iEoI
    bbzNYjZFwqlOXeC6Hehiw/AB8eZ+qMr0FtTIONV/CK1aaGHKwV6c6K3zjmhnLPi3
    1kvqccS5uoY2D2X3eeS7+0IJXTiefRm3YJOilLMsEj31X05+1aZO4X6LTbvTGqCh
    BoHuipylrwuCZeJP4LI2J3iIqpBsXCK/zCkhSPbPSa6napw05BLT920cSEkZB1cE
    SzIdHFao4u5G987wzKM2xcSfuwAWMxd0OVHzNlH7fAblH75ot96cR0VzWxXosB98
    iU5BFBxBXgxPxNw5qCOZuqr0eOLfmoaTVP3mueeP/w4okVw2JdQ8xhFiSdW0hA+b
    QYtbjOpmBzTvQ5Txl6YmhqmsxkV3q38JM+/3DNSiULvK0Lw0tIdbLejmduxlWmBu
    p5DKi4f4WniXDRG5cSyt7ozMGmbStU6WasK5FvoZm54u+IoVMcnBu+H3a/JxGCNH
    ndirtbgdez6xZd4vaGRToxyy/fRUnvA2xdY9vumJAhwEEwECAAYFAj8xSMIACgkQ
    DydNIZSPjwbwHRAAtrOgbcw4tAl2YRgfzaO5eTOr5vM+nOsdOkwmk7XuMKwnQkoA
    dyJ4wp2v6jZe9b9mkZX7XAzLls3EF+pfAXm7Mie7mjOYR8DH6p7bAew+YBIIq6bU
    FjM2qYBC3FYoRQLPzB8Cj58QC7wLVAYndS5+z5nh4/JKIB8uM2KQxHewPRNRN7RZ
    HXlJTdmAqcb/n4s/HDe5mTh+vuuzoqrOJKFlBmnVhojDDkRqSAMMijMYNPV9rkQ2
    RZ/ti3xKR1bIUz9jlReqVXn+T+oIw+kR8uPyAKQNdov6uvShAqe60V8/JAeorfNA
    mytt54mcB3rTPsj76RFnrPC4k+G08YWuW+vmmezRx2FRNlG61WeWGORLpQ0T9yfU
    nPoH5KyYnod91n90VXEcyEQyYTLOnDMJ8U7jOlnLVzGTMiMX8+gKmoGmTYzbxUan
    0YOGiV5KR4HaAQzl953yhYJ1J431iRdjOLVXT1Q4IuiFgyIMxTceeiXtUeFMpbco
    8GixnCCWKBJL40gU2xAy2hyPNC2s9krgQ/XGbzKGjoqY2FbRU94dtiwpIEx7hRbW
    cSdj1Ny1rNC/KFkn7dUY0wbwYtJPkVadmqTe5dDe2FT1SBqzAXm0312gMden8bly
    XoYXuaEU4wG3hDsDUeSGoyvcuuCVZRlO/nHXueSQyeOArOv8tNCqALbcSC2IRgQT
    EQIABgUCP2FPvQAKCRBPLNPYJ5PPLbpAAJ0QgWty4BWn9xzLNVqexe/zT2f0GgCg
    xAi3vElatIil4AEH4bEOLe9dzKOIRgQTEQIABgUCP2JwvwAKCRDIhqQr1bLw+1Wp
    AKDBDqSDEelvLAHy+4Eb4xY/cHg2KQCcDWibvRs2L1bzNyOoyE/hPfbgNjCIRgQS
    EQIABgUCQDKL9QAKCRAr1viHlHQhQvoHAJ97600f9vsYM5UQ7GhJJHl7U6pv7gCe
    Iy8kReROsRKjVvwiEG2K4e+aqxGIRgQTEQIABgUCQLQbvgAKCRD8bXhVKa6n9ivh
    AJ0cAl+cKCKFNX89rRWFp4hCn6rPigCfdeUcPsV+LqNS5aVBV9Q2w1slfv+IRgQT
    EQIABgUCQPgeyAAKCRCgT/sbfcrp08+pAJ4mDcrSKQ4uvERV+uEfxlaSccHCaQCf
    du7kJMl+QQILLzZywsCCn1C8nQq0HEJydWNlIEEuIE1haCA8Ym1haEBpZWVlLm9y
    Zz6IXQQQEQIAHQUCQvLyCgYLCQgHAwIEFQIIAwQWAgMBAh4BAheAAAoJENjKMXFb
    oFLDMwAAnjfLmu45IePvR151wwTQerqUgrnXAJ9LgGdXbdZL0kzfyhlfVs/pdPBL
    Z4hGBBARAgAGBQI57o1WAAoJEIjhex385WVhjEUAoJ/rPEgZs/YUnfDnmMGLIxdF
    hz2mAJ9EKcQ8233rt0pdt4xvRXziLvLG6YhGBBARAgAGBQI57o1dAAoJEBj1A4Ak
    wngCxVYAnjhh80GEvKsG9kdUb/doJE8p2BIbAKD1azZoxMi+pIH2hs4plL7oyqf4
    94hGBBARAgAGBQI6znAnAAoJEAn+vxCCmc2zE3YAn1pylLDv1Bbsyb+hjT6CSr7o
    o2LaAKCavkdw7lb9NpR9lOc/qaEWyjcRyohGBBMRAgAGBQI9B6eFAAoJECAVMdWE
    Xf7dH1EAnjUTYP2K6jRcSMUl40P4S67KMl6/AJ0YfKTHo/RhE7AvyE4zERaETylA
    WIhGBBIRAgAGBQI9B61KAAoJECH5xbz3apv17EQAoNs0ttUBYmDgMHRNviLjF04F
    Hj9tAKCACgUpqyaeJJGd7glBp33Kgp60KohGBBIRAgAGBQI82X6BAAoJECo2sboI
    Ls/FfegAnRMPAfMfhwf4/Hmn12hJlw7YnLLLAJ9GiR1jUOtKMulsOjCZYVW74h0F
    94hGBBMRAgAGBQI9B6ucAAoJEEbtrfQ1fWX7FRwAnjoduMj4hoXgi/X0p+Q6nsJW
    1wYGAKCt6IZ053pq+3fljhclARAuNJTIr4hGBBARAgAGBQI76ageAAoJEFWW3Qzp
    v2U98CkAn3iYu+I1XQKAjEXji2bocrMjr1kMAJ0eA4VZdJk+JTWnPntk4Pg1ITGS
    2ohGBBMRAgAGBQI9B6v8AAoJEF2Oi+nyOBrU+rsAnAjUV6MJadAnXe8VJsOvdbTH
    N5yaAJ47ve5A8HLOxkn86YaUEm20sc1DPoicBBIBAQAGBQI9B60vAAoJEHxLZ22g
    DhVjzDMD/RcE92t8k5xx0pUiQFAOlCjJfVuh3f3cof26plw+hncy+hlle9rGPSVY
    YhtTGgy3InVS8Kp8x4RyJ/Ymy19I7yrsRQK7c100zCxd730pUwk1Yxvyiv6Djs7r
    OcsHF5suU1rDUBmTOm5HzleCm/fzVkHcXst//RPCCIhumOhoRONXiEYEEBECAAYF
    Aj0HnwwACgkQtNcQog5FH3179QCdHeCmWzl2nEqI5zqrxo87MPrPVs8AoISl2sGu
    Sh8Y9gWwj5AA/eHoLuUTiJwEEwEBAAYFAj0Ht8gACgkQtoTxfMEKh02PpgP8DJ+y
    XkLsYnUH7BhnED0PYFYsOorCe/tPg7ocMc+XGKUrags9IJQk+nZpfmFOR/pycQBU
    /pZsDYYSGAKVFNI2ElPoTfUFka6EHFFag9Xs9YPeiCkcr4sbTmCx+6uVidvCnboa
    E5c4Uczws3uck6QVB7WKHzjBdvO/OBnmB8zOP1KInAQSAQEABgUCPQetOwAKCRDW
    4KH+T74q3RvGA/9JJp94uPG2AehKliTnkT3r7U9gBA1LzO+7TJI9a+i79+484EM/
    EZwwjnks+S+vS+m7StUDeOYYFSe/d4xsg47cAN6cEleMJzunNh4vKH7cducWZbia
    bUrYrZH6cIJU5Vy85h+yhx+tjdexRPtLxv24JZVDqxa8IWtIIKiKmUVPb4hGBBAR
    AgAGBQI7qNniAAoJEJ4dB2Q3giKo+x8AoMpsdaJ93u6oIDYHziPGbQy9VcMJAJ4h
    RXG3LRdvOsm+0ZV36s6qQHWAvohGBBARAgAGBQI9B6nRAAoJELVSsEN3OQXWTOoA
    n04Y9k2OHyDGieYAHJ11n2rnPhdGAJ4i2yIXGgDaBeXP/op4OB2CHbbmfohGBBAR
    AgAGBQI+g3WkAAoJED980pFG+s3HzR4Ani4cq+i8iqN4pEsR4zDG+hKgUi8BAKCu
    5aNC3ElOlgyXY+Jyw8zhgmpeS4g/AwUQPos15GJA5uuW058LEQLfuQCg4Hgl1aA8
    PULLwKIolsalL9A+RYsAoMt3oXAnVMQwmDvyYulm+oxKJllHiQIcBBMBAgAGBQI/
    LxvdAAoJEB1i6ck3bc7HMWkQAKo+SAjy5D47D/eOt6ikqcUbxF74pAorSbthtj4r
    U6DMDoxqX8Ap5NZry/3w8pUZL5zRgyzYeT9oXoUk8syjenxoZb14lQEGd1ZSy1/D
    I2yHgnqzNLlk083Evvq1tdJBoJ11OB1RoOTZj5PQHoI6WWti/S9w87071Chuja98
    4p/U0RBWQgb78OaWnv/dCHYUynikHK+x6+arZo1ci5pDFktaSHzQbUgI+vW3kIZK
    4s34cbGmBjCdLtI1wqxkRnWYYmYYj7NiRdJT2OnQot5QyUA9lZFKUickFyfWuNFk
    Exo6licEcI21JWALTBq23V+AyaEIoIN2PdY3BbCcinHMjLbJ6vni5EJVhjNIF/wL
    oAmip2xWcDQJqE5cCNG+LleyNoGCuQ+5q1/4mdrl/FJvzhWLJKEvJcd8xKqt5mY8
    cVioJdIwJHDZrWnS0Tum8Ye+0HbV/UqX13KbV97cTGGIGelB/Fh//v08zApho3KI
    fNz57TrqHinmpdVDgMTZC4jZCti4njHYOITNhNUu8H5OZysVzn71YQdg8e7dFeJ9
    8sTVQS/YQMg9XZEfInu92UP//t7hha6yp7Cns+H3k1VaGsbCug2iiagjkvZgfqmM
    e8zugg4T7RLTy73jPL6PDgNBrl8Eu+1ysmCKdOAMC6nDKwPWto/fMQ1rt/0gcXot
    47eWiQIcBBMBAgAGBQI/MUjAAAoJEA8nTSGUj48GIvUP/R5Grvaxae14cnW0mqJz
    v9F2Jm2+FbILYZUTRFgcHG//gOcdW3ehhRX2+85O3ndr663O7yYPcj5wtObRCcTp
    9bdrETSi0oNmkZbf6DgDDQl7Ywpnw2qwznwSHVy0dNZ4ew8A5H/JhD+gnRjyiw+a
    i8Xyn86QcRw6MN6FHhDr8TmKYbLnblL+6+n+5fXDCqEPcXDOtIkzWyFiWpq5w9J0
    JbvEukbhpjieJzd8zedEUOGZGQ54YhISl9B9IS+PCBcxMhEvPjd6zCwbJtJGsVt6
    SsLIBlygjfQFqPNn4UX1/rDqsQ32Gw4cMIil2RYRtxfN1QHCH4nid0ZdMTFtodqv
    hqV1MZpTF5ut8kPtj4RtrtJaGNATZr+N5+wukiSdo4MTuphb68sBJbD/dV3eTiQA
    kFb2+0Of8/wE4RfPgD2RBMa31Nukk4JKLoV5qlZE9F3ZGRT4FzCQNxt/mmMCJXtW
    O33oQEzuycPSUw/eqKskBbXkx41wMXw/Oa/CrADPWOVRpqkOq4zVW9JPNItkwSZ1
    rCpp+fXkSO3v9/r8UMWuz4fNacqQCfm8+1Shs29DMuonYzuxcRR3MRGV91UlQ85+
    jiP96TCPdcOdErQ0EOHkPF3r7sUUXzRhdoa3UpvFoMbL5OufP56R0IyWNtdoHqNe
    vDmJ8jcEJj67RXzGKL5eAGfHiEYEExECAAYFAj9hT70ACgkQTyzT2CeTzy2GTACe
    J4BppzXByYFAwbOx8PzgmBRK3VYAnA1nir+/+EHDdINUoIXzVHiV7hKWiEYEExEC
    AAYFAj9icMIACgkQyIakK9Wy8PuX4wCfbeVNeOT2afD9et0eGqnHZ3c3RyYAoNnX
    IzOwmWru+6fhtsEYvHFCL8/+iEYEEhECAAYFAkAyi/UACgkQK9b4h5R0IUKJVQCb
    BG4/YtxPFGIy9eOxnQJyRwrpwsgAnjdD8XOIrOp+U70uAY7rnRGaLni/iEYEExEC
    AAYFAkC0G74ACgkQ/G14VSmup/ZltACdF76yPp+CugnQ+RkKhSBG/+qtIowAniLG
    I5/n/dPJhLWvW1Ykl7Bdh00eiEYEExECAAYFAkD4HsgACgkQoE/7G33K6dPe9ACg
    kWdHnaHveLsWUkoON+xt8MeUnUYAoO9Jan+db2NgoEoJTZs3RC9kgn51tB1CcnVj
    ZSBBLiBNYWggPGJtYWhAY2lzY28uY29tPohdBBMRAgAdAheABQJC8vIKBgsJCAcD
    AgQVAggDBBYCAwECHgEACgkQ2MoxcVugUsN0ggCgoEqyQSfW536+C0hfHEpOp0EL
    LcQAnAl6DvzwpoJwrWQc0h9nykKzJcDDiEYEEBECAAYFAjnujVYACgkQiOF7Hfzl
    ZWG5gQCfQpNn6yvqdu84zzBBst+l6hhZaOQAn2SJTy4RJZetqZNMpgoQfJF+MRUb
    iEYEEBECAAYFAjnujV0ACgkQGPUDgCTCeAI5VwCgmS7PLgTE0htw56cO6WS1Tw/M
    oXYAniBaB0+h60Yqt2+9eW3ORmYYRZYQiEUEEBECAAYFAjrOcCcACgkQCf6/EIKZ
    zbM5ZwCfaXlx0KKbiGiwDcmBMXFZjzw2fVIAl1SZjmhnPvwLnlqdy1Mt7s9FT9uI
    RgQTEQIABgUCPQengwAKCRAgFTHVhF3+3TsQAKCNtV6GyUY+8PibM1MvXHv+S1/N
    WwCdH7NGAtuhVubQX2Jd4PIFLQYLA/2IRgQSEQIABgUCPQetSgAKCRAh+cW892qb
    9SXgAJ9n2q5gskfp2ApR69WtRrQ/DzFvrwCeIq4JB5XrXdZnsVWDd9rWEaJ4VuOI
    RgQSEQIABgUCPNl+gQAKCRAqNrG6CC7PxcTJAKCR0VIdQWPR1/30X2Dbdu0hn1LU
    9wCcDeidUYkMXBtY69YdwjU1w6KHjICIRgQTEQIABgUCPQernAAKCRBG7a30NX1l
    +22SAKCY1RIGfp9Q4ILM6iJwyQo4ZMkXVQCgvwQ51yxCftq97nMtOLqx0s4pZcOI
    RgQQEQIABgUCO+moHgAKCRBVlt0M6b9lPbZuAJ9Yjcs3fJXQThwDkhcTTo4pX0BZ
    IgCeIN5Mn6hQaqR8Z5h6fiXqdA9zxr2IRgQTEQIABgUCPQer/AAKCRBdjovp8jga
    1JbgAJ9fKWmuJGii1EQV0a+3i/VshRI47QCg3z5ml7DMd9xwkVXO5CZajl8qi8mI
    nAQSAQEABgUCPQetLwAKCRB8S2dtoA4VY6NoBACFoqy7IlJHqvu6Z8q/uw2qRcGq
    E17krbXviSlgxb/7Usl4u3KlMBAWnCsj2Vnv8c7DrQGDbXNfEUZvV3zz5QfVF3z8
    T0n/GptHo+ORLwLQpV72ucoFWN1zYgOry8K6Q8ObsqwYDRDtfMGtNBnzjg57rsI/
    A7vWaqXIodtYn7ivuIhGBBARAgAGBQI9B58MAAoJELTXEKIORR99CCMAn0jK+gA6
    vktC9wtCu67SiHEXDoyEAKDLHPnn+xcoYLvZfsur4OvG1uTo3IicBBMBAQAGBQI9
    B7fIAAoJELaE8XzBCodNPM0D/3Re5qHcEzUTmNO1lgZeP+q/yWsIocT3kcidLeu3
    7B7CsH7o1Zf2P8KCiEnx1SXYK3PN+EtUyg/9Z9hqXiMoGtvkb+qFgQc5TGZmAtWn
    3hyiHzVdaI9aSo30M4pH3VRaSSTWcLYkC5t5u12+SUrlOtq0ZQjLPOXpCL53d8i7
    ROe6iJwEEgEBAAYFAj0HrTsACgkQ1uCh/k++Kt1GwwP+LnPQmxJxuS4V3AqmwbQ6
    Fbf+QyJODI6xApsoPcdq3cRTbFE86yxgJDeQeXN9+KXrPp0QU+SeEekVO8Z4ilJy
    hmjVEqjyRJF6BwfRXOUq1UTVo8q+W6Okkpa6fMg7PML1hKKcaU2uRbxG8OVEQ+J0
    ekeBIHyLkaHmPG8ZKrqVmw+IRgQQEQIABgUCO6jZ4gAKCRCeHQdkN4IiqNH5AJ9L
    jFgED45Yg1HXKtcIa/1DKii/6QCgyk4TnvuBUiMov/XiRgykTbMiO2eIRgQQEQIA
    BgUCPQep0QAKCRC1UrBDdzkF1mFFAJ0etxVK+m50IJboRSrGtAx6owvRpQCbBkbn
    0dZX2oE+3ZbpfVWiisXZ0hiIRgQQEQIABgUCPoN1pAAKCRA/fNKRRvrNx1w4AKC6
    GxIOY/HaH3OJyP6jLxaB2ScKXQCfX9js5vL6d8qD5HtpZubv6ff21+6JAhwEEwEC
    AAYFAj8vG90ACgkQHWLpyTdtzsdHnA//fKus4sLo7LH/5O0ofCM3IQiIys9LBcH5
    h5NSNb9cqevjoMeVzEfKD8vyt19fDzd4ILgqTeWKngkj9ELshnrYauWa810Xo9H2
    Rt9vVAaGzHwPtGF0GvHq1TK2g4E+LGNlG7jhkFbWu8OpD2isjlDBq6tncI7z8dJY
    aw6wJK5TrkNCLMprWQovyoa6OS32PGLNON+FEeAa2ENOEsBXcVEfutc1BHogvr6G
    i4XwaqB54gk2lDvVol4LwlkSZhMJw1I1rSEeTTsYWiTAnkNhVne4RvbOYCJuCrRb
    3Kga74rKiGwG7fpiUGas7Bkiz5FerPsCI6bCIiCLAKcuUqkoUDEDD+D1ZsmCnHQV
    MS4ucS/5AA3tuF/6I1qeQOIXH2SOZYWxQLEgIai8gl/jOfhICeMXS11sgQmG9OKb
    wXhWxJPHLWkrVGAitUHYw/fj56S+CQdo9JGzjLsJj8DJxXSnr/ah56Q6UV72uTfW
    w+5yYcyI+QlvThOZ7zL1ktQQbigQAZcmTpgS1ldhH9pc7WurlyV9bV6ROYeiqIe6
    j98rMblFeaiU4CgFY0lIqPKA1OJKK7d8DesSAYNLP8D3W2xRbMgafp4yxJwm5coV
    an+fmQnnPe50r9puWSaOugi/Pka4CP3XOy88odUZ05wC28Is7/QcMQzHAj5UdlUZ
    /JNwTiFlBYaJAhwEEwECAAYFAj8xSMEACgkQDydNIZSPjwbVlRAA0UKZE0bBtMse
    S7gVtz4AAeIDVHi/VL9LX2AT/Rgi9mxtB2ul+2ubEr9l+pIeK2bt/RN6eOKL/N4i
    NOZcQr0pbRlecj30iF8SwoCd/IkUXH5Q5o/7uKNoGBNXOX3r6+aqdhGMcjAe0R20
    u1RVFl92V3EYxGZym+FwL2yRpEARvUBPmeyli0DSTDzCUed3KtWZO3LN5lfJ/teo
    ZGaTs3ETYvIT1egco9DG7juA8hvaJq/YclE68E9s8GTX9V/TXq3g0FkT3IdOXlWN
    bCzAbnAvRjqcusXH12f4DKCUhz/WcaF9/wU85ExWF+rDfnxDEVtcJB83JdbxC4uC
    jMY5S6GEtuvDbTJW73twkrdwBzTMwi4aUC9SYWCVlvxLrod4y6zm2UGUYV1egaTn
    wdVVgXjzy2UzWHcUWbw4AwVMUXs3Up6wncaVe+gMKeMhMk9eoEgATU3swbigVQyz
    6x1O350qZgx2j1D+3LMHcEpZ7jbOPFhv0zT5gtuQVBhnBoxF5F9kGQd0cFDgUCTR
    emZYnrDjtyb90gbwOIUz2GB1obgH9TH5uGPccyxX9or5qmvXZ2Id2/pOmxlHj/CN
    /IGcaIU6tm6/uoigAPYoG+W+gjmlH5msf1MuMmBnccX8+hqWsOsV7Bd3Qb3Tjwql
    8pHe5pA/xZzuXejGH+/Ouv4yLmgXlzSIRgQTEQIABgUCP2FPvQAKCRBPLNPYJ5PP
    LRHhAJ46SbLH/JorxxTNVSwsXJKLHfivhwCcCUUskOCuw1QU6FqoqyHvWgAtvmWI
    RgQTEQIABgUCP2JwwgAKCRDIhqQr1bLw+0sbAJ4g6hW8GbPktt7jmbVy5gcw5ThO
    nQCgrhwQdg+8dnurDKVJFoJ+DOxGlkOIRgQSEQIABgUCQDKL9QAKCRAr1viHlHQh
    Qop0AJ9Gwf2GvrRDretOKpqB6WH7q+xwbQCggDf6k/gCp1SgEa76CmoM9bmLSQaI
    RgQTEQIABgUCQLQbvwAKCRD8bXhVKa6n9iplAJ9aKQTGIJWZO6XJu4eOfIKugG6i
    qQCfaSMIbwewKVcADXOdy4RgjW8gqVeIRgQTEQIABgUCQPgeyAAKCRCgT/sbfcrp
    0959AJ9oyIL8hzxku3V7loeKJniMQuJ9WwCfTPsTs6s2DdhOyMDXeOe6gMFjsKS0
    IUJydWNlIEEuIE1haCA8Ym1haEBlbXBsb3llZXMub3JnPohdBBMRAgAdAheABQJC
    8vIKBgsJCAcDAgQVAggDBBYCAwECHgEACgkQ2MoxcVugUsPnoACg21dsNct4vizn
    XTB1izxCmKe0aKgAoP3yBmPcmUKDDseXPAblYLLqn6eyiEYEEBECAAYFAjnujVYA
    CgkQiOF7HfzlZWE0dQCfVIdGmpefW6qr8TOrENXM39HolocAmgL5DdG/nYUfUUP6
    LrS5u0/A2BvEiEYEEBECAAYFAjnujV0ACgkQGPUDgCTCeAKmmgCePVbkQ9AsnCO+
    sqkZ7NYcdK5LT9UAoNU3T9jgMvnW5gDKTaJEy8477q6FiEYEEBECAAYFAjrOcCcA
    CgkQCf6/EIKZzbM9tACdE3IgDQ/y/f1ZhuyIsud2baKg6K8An2r8w7cEAwfWye7u
    3I6sr3fJR8/eiEYEExECAAYFAj0Hp4UACgkQIBUx1YRd/t3U6ACfVd5fnfsai/K+
    duMDi0WKa2k38VEAn2p0uGy85e0MQ1S0u3FdGSLfkN8XiEYEEhECAAYFAj0HrUoA
    CgkQIfnFvPdqm/U3ogCfau3JPECPX6A/RI4UWkUKQ+oowGwAoIpLlY529WaVqbbV
    bVYacVLVbdFBiEYEEhECAAYFAjzZfoEACgkQKjaxugguz8Vf4QCfRDfaMqBSxK43
    gurEuy8OCFKwqGAAn3oqVlkd8t59MZBw18KZbaPbly1diEYEExECAAYFAj0Hq5wA
    CgkQRu2t9DV9ZfvzrgCgiTbsoz9DrF9xDC2Z78Z6gLbAv74An1Ym7gkuCUcjHTxw
    XXNzfZ1CiY8KiEYEEBECAAYFAjvpqB4ACgkQVZbdDOm/ZT3/xACdEGJfn+fp/0WS
    aMjNEb1EYkUXYdIAmwS7bOv/UjLxJ3HcY4ooG/BexGd/iEYEExECAAYFAj0Hq/wA
    CgkQXY6L6fI4GtSrDgCeJVw1t8/ud5C7P+7VDoyIXv47M50AoLg3I3TP32lGXqF4
    hFe6VfeMppj8iJwEEgEBAAYFAj0HrS8ACgkQfEtnbaAOFWOYXQP+IJH2o8bGTLrZ
    p7Nc2Bs2p7aln3COggZKfk2F88VRA7Utsdjj9KysLp8EiNi7tR7mj4LHuRp4wBNv
    2RDSWqk9OZSq6IW5ZpmlECCJ/H42wmn+jt3gS4bBQyQlUtr74hDqfqgY1Wd21bJu
    ZpCTL9drVICxN+Dof8MJH51anQAsI3OIRgQQEQIABgUCPQefDAAKCRC01xCiDkUf
    fYP6AKCm90SLG+7bnqIVykONaB/sFtu+8QCgn01PJqvV4duJEAkTmHs385UYJ9WI
    nAQTAQEABgUCPQe3yAAKCRC2hPF8wQqHTbR3A/97W+V7e/4rowEAh5l7EOKXxTLv
    wfrZDvsB0nFBLv/RCb7jtQmwtGijb2NCuOTtNW3/HOGeeYNMwPfYf4jRsLRtlOIk
    waULx5RgmK4NITJXHiJ0D81wduBfPoZO+kP11AZpQF2n5okOMqoXLceg1ue3g9ll
    LPMJZveSjQnSi0kcV4icBBIBAQAGBQI9B607AAoJENbgof5PvirdMVMD+wTxQSvm
    qx18J2uYZj6ujUX3lbYPwK1ggM4w2MmVKUD+X9RBjaW1aSp9YnQLL4j0lFOkYssc
    IlGSFRGeE8cF8DBis2ape/lg6DWSON9qHgS/44YRC8xXZPXNB1wwQM4cUa4L3Mxz
    AfYWJwAjMO0y5owDebKEnZjYeGaRD6hwhkbriEYEEBECAAYFAjuo2eIACgkQnh0H
    ZDeCIqjgcwCfYuVM7kgfbmALOd/umBDLHGxx6HwAn00+6UqhasWTl+G2oCydp7sM
    kguSiEYEEBECAAYFAj0HqdEACgkQtVKwQ3c5BdYilQCeM1Mft6Kwxqo1nbOLzQ5v
    OWlRbSAAn1IyIuMAmJylg/cMqesV4McXYXQaiEYEEBECAAYFAj6DdaQACgkQP3zS
    kUb6zceUJwCgmyXUHKLSZ+3DwHQQIBnSkouNJUoAoKP/GwrD+mo2LDKObb10I5xw
    QYVwiD8DBRA+izX7YkDm65bTnwsRAjB5AKDQcLYt/6PjoATMIPe3izHDsImhVgCg
    79BeGlQC3H5R6kecepRKFeK5g9aJAhwEEwECAAYFAj8vG94ACgkQHWLpyTdtzscy
    aw/8Dz5mVfCrrTCx4J2/h9/HgXCMCwyMdG87e7CgQCaqsXo457G9thSA+fSxZ5rj
    DDqs+go5K0QGE2U7UgRJ+YMlemCxrywRCIfoO5qW+fWc3juHwEVehrfSfsa9Xk7B
    izoyETeK+1ggx50hNN+DRKG7jBokwzOsMYH4CJgPRBz96DL8Dgaxiys6cPKx8bmV
    Chu9goZEtWSNbTXdeCZRDe043IFy0Yhg7CAYKOIm9+L6iqQ3nYxCXOdHRBvGVpZM
    6ZlBCsJD5DDSTqSb5EEuiybO8YYzaDXnt9/Fam/j+arS7eJqfYXsI9CBA5SCZkaQ
    ERMkFm0uk1uiQZa00VBU2tJHaAPqmc/Nuv88Db9056x8pvS1LPdtZ9cL7xqZRXzZ
    Dl4mRljYL1Yn8xU+OmeVdPVVfUjSe0lxog1d9ya5DNNXySVT22xqIIYK8I9d1VHR
    hGtsPiZ3Hlj+FXnvc9KWFuRAwprkRclOXZvU2i8F2joxPvLyE06tjTOj3VNDJPd3
    Q0LzTtfMHszoom4wt8RtxNvQqkDuoJ5VHyshdWRcZg3mFIeuEq8QHgP26YQqOG19
    N1343ao8k5rLhN59ZeGo5zzM/zklOjrdhyenfRH/8BQZe1TFeDHuD4jURekDFFOV
    KM/j4Bf7Y7qxAkzWLdqWsFnOMUy+Sy2IyEotVM9Opsd3IVuJAhwEEwECAAYFAj8x
    SMMACgkQDydNIZSPjwZD6xAAtsGfhze/SOnRJtGrz9zPrt0ZT7e+sWCk4k8hDt3J
    qGjuLUsH7Cu4IcVLrmNLlKNxrN2T8oxMcibDoQj7er60iocsSifIgwpwnJXhJ40T
    k6OK1aSiVIwQ4ff9lywSqaEY4wnYymxg9ADpPJfDVIZkhjARdLVfdLhkFwBiLVj7
    T8KfY++qG6XZDCk0WdQ+Uh7qk8fLwdihuKK9+ySCVOwLIuARAmBtGOS8VOzgm1kV
    oVs/RjVn7o5Wu+ckbYBkvWkzC5uwTR/U8MRs15V4MmxGL2omjO532ZogiyGNhbI3
    nkA9byWOKQayLPK7/Vf9jYEzEUrCfX0oU/Y/tK2tUKCI4GX0Y9s+8D+xmo/uKMmV
    0Rh79rMNZAhnb7Y66qn7/VYJjyBxZoR/1dsLn0147ouuF0NISHBtSocPH/5/b4Ad
    +7jUn9WZe4H6jVGdjjrUIGk3C0IB2fUW7Dp3Eda8J1rtMMeo6ult7y67Q4A4g9wc
    sY5cJBwkckroU8wQraLaFGutClWeyoHneb4nBL9TJwjw2DlknIp39TFONIE6T0lJ
    vapOU16zTB8IZ3rixVuMl+IcJi7uNuCCmDsh6auMG2QMIIe9B5wGQ4cPS1CmoG/O
    5G1/D5e0Rncvsy/KdnwnA2xCGVH7YgCM98SfJGLCI9bpCqq63llKPd+rCzlLU1Sc
    aliIRgQTEQIABgUCP2FPvQAKCRBPLNPYJ5PPLWSmAKCvdbstKvhG4XaDxofWuWz1
    WoAv1wCgn2JMIKqB1r/fgU+cSAMKLwAoWbWIRgQTEQIABgUCP2JwwgAKCRDIhqQr
    1bLw+xzAAJ4vlsWlhklfv92GMCEY4E7fjsrgRgCdGLfsBuxfTkUToRGgoxfiR0i6
    03KIRgQSEQIABgUCQDKL9QAKCRAr1viHlHQhQsD2AJ4unwkMZtCqZQxKkG46sJyo
    AeCFKACfdt1c5n1zk70n2jTIEBmyRMQTBjiIRgQTEQIABgUCQLQbvwAKCRD8bXhV
    Ka6n9kurAJ9mlD485VMjlFMhjvpgPUmi6lhRvQCeMkvghXcy129LJ8f6HrMbF1nY
    d0mIRgQTEQIABgUCQPgeyAAKCRCgT/sbfcrp04KkAKD0WGdrXoOL9O7PU59gmvsP
    QxfoowCeKjqCwWNSvfc3hvaqL6lqQq1Y6Xa0H0JydWNlIEEuIE1haCA8Ym1haEBm
    cmVlYnNkLm9yZz6IXQQQEQIAHQUCQvLyCgYLCQgHAwIEFQIIAwQWAgMBAh4BAheA
    AAoJENjKMXFboFLD7oYAnRRTp0GejwRmem9u8GQV6VLp076KAJsGNKqwweGFa8cO
    91bpzUemGWQGU4hGBBARAgAGBQI57ofoAAoJECAVMdWEXf7dN58AniqC0HLEPpB6
    ESefyQKpRVlpTcC+AKCIy2WFq1lAksYB1/dYMU5+wzxikYhGBBARAgAGBQI57o1W
    AAoJEIjhex385WVh9oEAoKmQIWf+hxmJf7IskYAzXUEUi1wRAJ4zFYwo04eKV7sb
    DHXPHR13pfZW0YhGBBARAgAGBQI57o1dAAoJEBj1A4AkwngCtb4AoKY5S5sCQCbn
    19SraaSTPVBmImyfAJ9fG/FSYHCMNt194t9uixewoBCLrIhGBBARAgAGBQI6znAn
    AAoJEAn+vxCCmc2zF+UAniGDl8pHwSOuJxDril0p8Ko/O7gUAKDaRn6sGz5erDxg
    Rr6A/hDaNEyTxohGBBIRAgAGBQI9B61KAAoJECH5xbz3apv1uekAn05MpMaRgtCo
    o1E6pI6boqBpxeUmAKCggEAPwXKNmS9m2unaphEZrXbcpIhGBBIRAgAGBQI82X6B
    AAoJECo2sboILs/FqOAAn1DgPNBWkQJxsWCDYAWG1TIi6LkKAJ9302UjWqTlrRUz
    zFEpNb3/7tdtvYhGBBMRAgAGBQI9B6ucAAoJEEbtrfQ1fWX7W1AAoMkkgs/Dnrmd
    v3jS5D5bZWDiF/0xAJ0ZlQdE1a6x9FuBE31sGPbZJFjaG4hGBBARAgAGBQI76age
    AAoJEFWW3Qzpv2U9er0An0G5GRcbYPhxGXelUZA7i02+OqeqAJ489xEd+M9/8XCl
    ot7bYcaAIKPiwYhGBBMRAgAGBQI9B6v8AAoJEF2Oi+nyOBrUFPEAnAx7C6fu2geu
    1x+EtwtnIQehhLhBAKCrTji0qZFeVXngqiW+8SPpAodFpoicBBIBAQAGBQI9B60v
    AAoJEHxLZ22gDhVjGKQD/1V1M+nOmEXulqfoNynqnFKN7oafzPLPzyEvJQFc1X60
    Agx3te5E9OgJhYLqleVC4tPfGoiqCT68f7nemh6QAMu10iQoYUPL07ux6jIMmEPe
    o14rEb58AH7RS65qJdpK9v+18kKP+a8+huLERtYRPzGffMCReZ7ertNfidK1EDHm
    iEYEEBECAAYFAj0HnwwACgkQtNcQog5FH31WnQCgkmbUrptpXjcrPmkP3rROGHs0
    TycAniYxzRdqIWx47Iaj7dLuxcvTHR7oiJwEEwEBAAYFAj0Ht8gACgkQtoTxfMEK
    h03OSgP/TPpnQyZVwCgSIoX/Yz485VgXNfEIyoojai6TMwnBLCkp++nNoIf5Dcba
    xHx97g1ojCqFZ8hvOAs70JBFQiVhgREn3GAcHR8VXLapdm5CTnOwF1GPfB3dHcxp
    FrRIHwNSbM8gyx7/MBYOCOpxArdDZLHSLns3CKEeq3JzgahbcfiInAQSAQEABgUC
    PQetOwAKCRDW4KH+T74q3Z1sA/4iwg4lSmpFBG3GIjreoth2SMtRYHvnK2QpklWl
    0/Waz76mzUCZOW8xz+QqFvhMPy7pVI7w4QWnlZI7BMfLUWDX+jlTIg9Vq1f0jXaw
    4j5ESYej6X02Dwbly+kOMuCNf9l3BFTBqGOWziPsZcAHsZrqhgOT1korNAW86NYc
    D3lFnYhGBBARAgAGBQI7qNniAAoJEJ4dB2Q3giKoFjQAnRb/8lYs9iMgAGcq3SxI
    ncT76jcCAJ47SFXq25cZHXv8w/40OVk7ZMZGCIhGBBARAgAGBQI9B6nRAAoJELVS
    sEN3OQXW3KwAniOhY0yPMPcbq8/BaqcEx/cvuyioAJ0bvD3UIQKHdzJlusms5sjn
    njzG7ohGBBARAgAGBQI+g3WkAAoJED980pFG+s3HyKgAnRjkDaG0eDnjpYwomKYA
    GXsIjET0AJ4o5ak1vZNDAqI4kg1v2C2kerYybog/AwUQPooWdGJA5uuW058LEQIL
    SwCffrvSiLVs4zeJQKDCZ5/txijnyeoAoI4vJa0WBSMP1Tb2o0ANYe+4GHAUiQIc
    BBMBAgAGBQI/LxvdAAoJEB1i6ck3bc7HARIQAIkAegb3UmnTmQXWE1EqFNokRvzH
    kJ3LRszOZBv1ZTq1bPiyeSAaEgRJWYLf7q8nkREckqzBQ3ISXn8pj+l2S6z8d3FL
    nLotTFRQZPemwasw6XRvaIdL8MEnssAyHGTnQsQEFPFUoHJrb1L55I24NFoMLDlb
    S2ar6Gm1vWNRuIw2z+uh6zAtosMUWMp3B3LOhSjuELIeulojIzPY6FL56Lods0pb
    Sc+2UzaKUcqqaczijaC6uzdoR3Zt+xZk7GWsa6zfugBh5UcU8kVr1l5YvfMlzGAP
    s7QKRvCfgJN+YINcw/CazGE95ixdY0FLQGIfskeQUtkdiJeD45wVNUsYOBAbZX2l
    KHE3wuGO8LS2JZZY0Bj7T0Pw0JdHVf0AvallMPv0xiFZf/TfghBiA/RG8euwdIqN
    0Q3hQKHFSxjvH8jQE/sVPiwL8h14nUd5XwfgJgIgP2blPn75yGpAXrVHnjDEH1VT
    DGfcbKEGSeqdYmK8eJOOFbs5z+XgnylOAJvwDn38Kn1K0hI3B5XyVlH4PzRRNvRj
    2kppJBbNTgwdlWHjHdyUGASMSAlr2jITuO9LwO35mFhSdqk9eDNBukXv/KF7+pz5
    agJx7Lu1PLB8ia9rgD5ntAUr1MJbi1R0+r993+7ngvu1ROjiUrs6zolXBHcB8G2f
    JVHjWPhAC7TJFbQmiQIcBBMBAgAGBQI/MUjCAAoJEA8nTSGUj48Gm9kP/3SJUz1x
    ZkngYsVM05hcICWzUX2bI4QtX0FRjDEC7gK6ta/pgM1ZMzorJ99uT7gZk0aLcnLo
    Rbxn85iEZmg/bPcAp2oYkjF/9tbFBeTcHHQsiVwf6vyskVAQhnyRgHamhcX7RxNL
    pQTUKEG9KLEmU4rf/FwB8RCMbSWZUFgUMgr1GGcR+Sa9Rb92OH06ihrsINJrV8hL
    LQhoSj9JhOolTvf0gZ/D/YqopFZfmcB4QZefaQWNVRnv9lCcT0d889iRQLGWvkZJ
    9+nbWhjlileo9soTGg8ejb4Q/jLRQhYD6oYYqJ49pKf78JX30TEzIo6dQIv+rTK4
    ngcMEOUaK50+YGDEorVS8lZQbGYYq/SMfprxqfh5MT5YfXus+ur9fhLccQK5uQJJ
    ebDWZKEXDdObEECOLWSS5Q2MQiyXQ7qWe27kW+dZWmsDZh0AUtvnoA5F92EGpDaT
    SXCdTWMqpPQyhsnRwxlZp13SXGGd81ghePYvjOQTJC7eSGHSmMROLFQZk8h4dR1Z
    1HOsBCUktAvxnq6cxzVWf3hOzQz4W5nuBFiIhzac+5ulDpV0S090a5tKkLrbXd7d
    5rFg5DyCnT851Tp140vxOmEQG8HbS5c0Z1hgWZ0TKnvred6xZQ0DCXmCioypAhZY
    es70lOIxj/cGT1rgBFtLbxhc2r2b2YDcnZMtiEYEExECAAYFAj9hT70ACgkQTyzT
    2CeTzy0hBQCdHyJJoRGvB3/u/iIVqfi2ZM57ddEAn0He6pc/KPyGKaV5d5xOicLx
    25oNiEYEExECAAYFAj9icMIACgkQyIakK9Wy8PsEJACg4gEPwQZasvNK4uqjoo71
    1FJhKwMAoLKbekzTQVTpvOZZKxQGm9cDXgthiEYEEhECAAYFAkAyi/UACgkQK9b4
    h5R0IULLXgCfVXab0tlOszHsKgX+unjuB9b0YGsAn1edz54snUroRVUozB3n2ge3
    gyNoiEYEExECAAYFAkC0G8AACgkQ/G14VSmup/YoWQCfYz431uqel/Mn2pW0jjZo
    MTQPka8AnjrRTE1UjHjccclw/mGTAtLczG+giEYEExECAAYFAkD4HsgACgkQoE/7
    G33K6dMULQCfTzkkq/YAIfoz7OHd4IuFwa5t8K0AoJxlmUIYArFopHXPr2KmcYNI
    nNRetCRCcnVjZSBBLiBNYWggPGJtYWhAcGFja2V0ZGVzaWduLmNvbT6IRgQTEQIA
    BgUCPQenhQAKCRAgFTHVhF3+3dkQAJ9HV17gMTtF08GgPhzgRwno/rVDGwCfcQlt
    3xdrwf7fSFutTLT7gBVjvQiIRgQTEQIABgUCPQernAAKCRBG7a30NX1l+wnzAJ9h
    MZblSxpSVfJpV+53wT4uCXgjCQCffIRsBwN7ZXoP7mzL+LhrHIza3IqIRgQQEQIA
    BgUCO+moHgAKCRBVlt0M6b9lPfGhAJ9/dUFlRYJ91E8FzLkXn/SgZKQICwCeIjWn
    VYKiUB+Y6FSR9sCKuwuV7xqIRgQTEQIABgUCPQer/AAKCRBdjovp8jga1G10AKCH
    E0/UNcgqwCPsZJLNkCGpmuv8OwCfbYofO75CuMTpzLwKdzZCYDTD+AKIRgQQEQIA
    BgUCPQefDAAKCRC01xCiDkUffWbuAJ9HUq/wpxw47yFLDRZ/2HtPBRVWyACgzFng
    1nf0U4jm+y/5+G5Qtcf3x5+InAQTAQEABgUCPQe3yAAKCRC2hPF8wQqHTXt4A/9x
    WSjFPrA9rKYKj0Kn70gnypK++fHMWnohTiTA16D0BPIITNnJ2ZDgpw4e31GjbTgc
    NcNAJAZD4f93YLLEnEXN9ihXIFbrhisRe8rnq6zWjZvPUMf94SNCCuGVRj/V2M6H
    Nx46mA8r5Ejk0bVScbjD32e660m1hOYc7ye7dtA0x4hdBBMRAgAdAheABQJC8vIK
    BgsJCAcDAgQVAggDBBYCAwECHgEACgkQ2MoxcVugUsMDkACgnWY9xvPaJXivvJrg
    VgA8VCW8OBcAniW2PlA9621xD1dar8JGR8T6xF0miEYEEBECAAYFAj0HqdEACgkQ
    tVKwQ3c5BdZEMgCfVGP+zxgVXC2/8ifhVX6QT5fxzIAAn397V9V3sEq5XVgHksV0
    0meCdlHEiEYEEBECAAYFAj6DdaQACgkQP3zSkUb6zceLVgCgh9HH1APmMYyJpMQe
    RhYNELOVANsAoLAl3qmzleaa+3qxFlsrixYSy7g1iD8DBRA+ihYgYkDm65bTnwsR
    Aj3zAJkBvIdL2keRqSuM7m+MRNzSTSfbfwCgqRdVGTfwdEat9BUNgiAUH+GySkyJ
    AhwEEwECAAYFAj8vG94ACgkQHWLpyTdtzsf4gA//dii5I6XCQ3khpmLQyNJTkGfk
    uTRHtAPMDyf6mJHnv/15WXA9ID4ORFi8qAAgvYasc1sfTa+Qd8oL8R6JmnUDV8Mt
    dlsFqfgYnltBERdx2NSxnDV0QyVIRApiwqCgMYsTB8mARXRTfo3h0oqSEOvSFzx9
    WCpU/Kb283qHPtvKh/ZfjdtNVHqVS9oNfg5db36LRx1ayWZxDNW4dq9Q7pohlcR1
    kDPfcgdWWiCPWZSqBRHXAq9QnFPqKdAg4ctIUPu61CCb7iHqMEBc6qT+XcMyXAWB
    L3T+6qmEcZ9AgQmRIkFtwG/IoS64uWZYuLh1EmsnMOKuEgtyI5Ujt2b86zz26wga
    hGsUSH7TCojVbQG8Agnr7FsjNoGPqs61KmRN1L8CA/Crt5/unUMimWlDVMLP9CD4
    ChgSDLK5zMisF55GV51j//IkeGuJz/ueXBVx0r0bgFvxCyR7G6NAA4H/AoQ3rrxF
    f4QYNuAdXGjAmuHc8VtTAchWlThACieLp1fn5GcnO9z8l6j3fzW6R4XgzWfm+vkf
    C93iAy6ZRLTMt21ZSJV+BUZL4/lKCIz5SxLYnN49tZgzqrH622Kkt8eT6pxDuUxk
    MGs4n9bu2FheKOZRAXlCbQyA6B30TN0nHVpJFRDZRsfT51LbKD0623WzMwXgDyhL
    RRO7OY/vtLWWlXUl3d6JAhwEEwECAAYFAj8xSMQACgkQDydNIZSPjwaG4A//W231
    JuB/SFIT4hfo4k7cAt8XItRbnechv+7JNxkb8D/NiflXzqOjsJMFFPifaGnfS1d+
    S1sdpFQ5riHZR1GZyXPgO/zlcNus+4u3G1Uy/AnO+vq4o637k53dXYXedm7VO1fi
    I9S44VnTF1UZccvrUxrNIlewpODNqSUnQ1B9MCviDQHM2B9GHvLvGfAYxrznFh9Y
    rGWfz+vPHFvTtBf50rjMnlBwK1/obqk7DmtKz1wFnp0xWndSGkccrvYzAL4yOI4G
    5C97LC9YNLnMnptJvf70cqGM90hdRy8l0tIvcEpxz2uNZE264w7jzsFxYBsGUu7a
    oOLqDl5a0zXnKGjBQiA2Ny4oT0ClQDUQXyg1pgqyV6gjeQUrU9kYRDugPvohItbb
    s4KBx48XF2IJOtM8GJ58uWc5RN2NcbDzU96a6aEWq1lZpIQ3dedLLQ62aUyjuBgw
    aYYOmPXcCLHd1KJ+Q8nM5VWISdbvLePg21w1zMMjCn4x3r9NWRvgU7RmE0dkIAJg
    3fYntkMEhKJd3UOI/tKkPXumoSeh3ZeKY9kX057km9SMbd6Ta+2aAmh+j0XsECg6
    akZiIdTNuENHbKozvsYn/aVIV0Xa1EjoKZmNmUkwOHO21N8chOtNpF/q7eVTjN30
    P4Byvv+qLgvDRv/ttIJQR6JwL/L3l/9+RC3T3mOIRgQTEQIABgUCP2FPvQAKCRBP
    LNPYJ5PPLeiXAJ9+oDmohcfCjbKbXHnszOR3dEacoACeJ2MC6nhSrqZ0H4Mqg8TX
    GoXZBOqIRgQTEQIABgUCP2JwwgAKCRDIhqQr1bLw+/UmAJ9ZxwlnixZ9FrIGoaQp
    f2y9oH0UkACfX2gN+UdkicK//Te5SLwjHkdvwmSIRgQSEQIABgUCQDKL9QAKCRAr
    1viHlHQhQv30AJ9FzYF3Q+psI9uajSM/MdomZpxB5QCfZ7jyjoqsDeyyj8FU/cDl
    AylXwVmIRgQTEQIABgUCQLQbwAAKCRD8bXhVKa6n9lVaAJ93WH9Plcc3xGGcOYQR
    16lRm1B9sACfTSdPHcR6MXYeeLldvZU2n7/tOWWIRgQTEQIABgUCQPgeyQAKCRCg
    T/sbfcrp00t0AJ9FGpwRmL8LbZ6CcCXF2lZSJMWcjQCfVnaL3r9G5CiIX9sUgJRs
    xwYImd60IkJydWNlIEEuIE1haCA8Ym1haEBraXRjaGVubGFiLm9yZz6IYAQTEQIA
    IAIbAwIeAQIXgAUCQvLyCgYLCQgHAwIEFQIIAwQWAgMBAAoJENjKMXFboFLDuzQA
    oKEZtOMMcFKq7ixTgwkHxFrm6nJkAKDSDBEcYqitXwC0MRCu2edscFFO6ohGBBMR
    AgAGBQJA+B7JAAoJEKBP+xt9yunT3tkAoPwLI9DEnGWnH/WEBino2z2kiZsWAKC6
    hgXGRwa8Hhuo8gbEFAYM5jvVRbkCDQQ0jHUuEAgA9kJXtwh/CBdyorrWqULzBej5
    UxE5T7bxbrlLOCDaAadWoxTpj0BV89AHxstDqZSt90xkhkn4DIO9ZekX1KHTUPj1
    WV/cdlJPPT2N286Z4VeSWc39uK50T8X8dryDxUcwYc58yWb/Ffm7/ZFexwGq01ue
    jaClcjrUGvC/RgBYK+X0iP1YTknbzSC0neSRBzZrM2w4DUUdD3yIsxx8Wy2O9vPJ
    I8BD8KVbGI2Ou1WMuF040zT9fBdXQ6MdGGzeMyEstSr/POGxKUAYEY18hKcKctaG
    xAMZyAcpesqVDNmWn6vQClCbAkbTCD1mpF1Bn5x8vYlLIhkmuquiXsNV6TILOwAC
    Agf6A0oIHx7GA/Wg+7Xy+rZVKyrOQ+bxzDQbpNNwDBP5mZ4NoG6tgX9LLpLkihRl
    mL76JsNHhQxaSHOU9mjmuAZgNVlYRE+O/fTIlLkRrBkgn0colEMy0EFx8/UsTPu8
    j/RBURcrAD+ony+vXyl9cb2HEfpeUWhGQC/WdIhPwRKCK2fIZ75Szjkd4tgD9+yY
    UEfGCbpw7bRwqHRDEdVy7qx7nHcTH5Xq+vdqJ7ZlsaNMNhDukS3RunILkTW5q9We
    W9eabSSyY4uCY81YP2bRF/U/FPM/mYbWNUELgSmN/YkSwWLGgfjcCObTwgd0FOW7
    XZuJ71R7ytBEn5kDt3bcvULsB4g/AwUYNIx1LtjKMXFboFLDEQJ3lgCgpRxakeNI
    vUps4fdR3nZq/MRKTsIAoI5BR4LrbaOwqe1M5HlH1W/jDLIp
    =D0KC
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.182. Mike Makonnen `<mtm@FreeBSD.org>`

    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-----

### D.3.183. David Malone `<dwmalone@FreeBSD.org>`

    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-----

### D.3.184. Dmitry Marakasov `<amdmi3@FreeBSD.org>`

    pub   1024D/F9D2F77D 2008-06-15 [expires: 2010-06-15]
          Key fingerprint = 55B5 0596 FF1E 8D84 5F56  9510 D35A 80DD F9D2 F77D
    uid                  Dmitry Marakasov <amdmi3@amdmi3.ru>
    uid                  Dmitry Marakasov <amdmi3@FreeBSD.org>
    sub   2048g/2042CDD8 2008-06-15

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    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
    =6qxA
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.185. Koop Mast `<kwm@FreeBSD.org>`

    pub  1024D/F95426DA 2004-09-10 Koop Mast <kwm@rainbow-runner.nl>
         Key fingerprint = C66F 1835 0548 3440 8576  0FFE 6879 B7CD F954 26DA
    uid                            Koop Mast <kwm@FreeBSD.org>
    sub  1024g/A782EEDD 2004-09-10

    -----BEGIN PGP PUBLIC KEY BLOCK-----
    Version: GnuPG v1.2.6 (FreeBSD)

    mQGiBEFCGHYRBACI9ERMi5j2009Juy2kpXS860i9tJJ10mM9TNuCZVYcPRRTiSWe
    Q+YySmBtR9TA3OZfd6BA9EqusEgcwUJpxjZ8zjGzirj/OjcPtKwM9ZO6dadeMNaE
    wT32bJDUw//2ky2xflJCsjg+TSO7PxQi3g/YEWfau6Istg8PKfzHQan0EwCgxwrV
    6JijZQ85jIgQoceJjkwBLHsD+gKeeSUG7g2CO+NJf2d0tBj+l22QzmeAtlnuUskd
    nHKDAzzty80e4HXkUYw8IMueR7Fe2Tjx20OvVSkzMwiZYqevIJHVhiouCFZxYpSa
    JQHPYLpMXMVZ1X8d17tjbFRBXWmNrDcEhb4m3WoDKfQD/qbMCwBErsQ0t15dddnQ
    BVyqA/93dSzMYRC+Zm6Hzfk5Dz2MsvsxEE30ysSwFjIZ06RtYPKlN0x3ABCGba8f
    o5H0P6+gobJRLTQfK4xDS4J3G/d7TWO1bZGk9MPEzCJDexTt5yfKsY2jZRVRrikE
    fIbdSUgLnczBdUno5qC9IyMhGNa8O92GsjleDm7D+p+wkkoyCrQbS29vcCBNYXN0
    IDxrd21ARnJlZUJTRC5vcmc+iF4EExECAB4FAkFCGHYCGwMGCwkIBwMCAxUCAwMW
    AgECHgECF4AACgkQaHm3zflUJtqlWgCfWKIRLzsvZjBjuck31Ep8sEDP0GgAn17m
    X0hYq8W+2gbHbmYeqIFefHs9tCFLb29wIE1hc3QgPGt3bUByYWluYm93LXJ1bm5l
    ci5ubD6IXgQTEQIAHgUCQUK9MgIbAwYLCQgHAwIDFQIDAxYCAQIeAQIXgAAKCRBo
    ebfN+VQm2sH2AKCnwIQ3C8+62/uQh05mqXqdzAaU8gCdEkRN+L9HY1OwFlSDi6Tc
    OAWLTPG5AQ0EQUIYdxAEAItGBQMO4f4rHYh9zc4fd62RhBfMHJpY1ex6HeiHt3pb
    i6KfBUai1zRYxgq9F+8qR9WgBLF1VhA4O0nCU9/FKOChc19W7xKa2auvE22Kq1ta
    xjCszahtPTDGIBs4K8u0fH/Gx4VSikQcfIGNd3IK4vALbLfH+iK/1RJNXPzQ9A4H
    AAMFA/4+UBNqZPucstZgmEwVB2H1Bt671fQqODpWj2eOMIYJWXKraUxdIjUqzm9K
    QhC7LBj9ihsn+LRsO49oWIAv5bks4zC0STACJ+Lx+FMb1i5ayAp/03DoZyrjRnGb
    SIY8Dtqonut2nic0NQ4XD5uqTkx2t7xlKJay/n4Nop2uqwajOYhJBBgRAgAJBQJB
    Qhh3AhsMAAoJEGh5t835VCbaOZEAn3wkQ7xISlGUox1/aiPU1CafRrZyAKCXgDLa
    wlCa23ftqh2DPxkAXtCnEA==
    =FIQv
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.186. Makoto Matsushita `<matusita@FreeBSD.org>`

    pub   1024D/20544576 1999-04-18
          Key fingerprint = 71B6 13BF B262 2DD8 2B7C  6CD0 EB2D 4147 2054 4576
    uid                  Makoto Matsushita <matusita@matatabi.or.jp>
    uid                  Makoto Matsushita <matusita@FreeBSD.org>
    uid                  Makoto Matsushita <matusita@jp.FreeBSD.ORG>
    uid                  Makoto Matsushita <matusita@ist.osaka-u.ac.jp>
    sub   1024g/F1F3C94D 1999-04-18

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    mQGiBDcZe6YRBACDOZSZ5cWE6IvNkx2Ht6S/VdIY1OXFU8n+cOVxNIHFWXPUOrFG
    F526VZoPfjURnslubdxXC8TKGspX96uc1jdROHvEwsxUUELyzZ7G5oJ5wd4jHwjq
    K5zwV5FZoNm1SHdeN0FqZB9rlJdOt0kxVZS+b1PUc0j1i4oDNZz7+8rc0wCgltLi
    c2i5RQzjuvJvF9P8OYGujHcD/3Tq02ov/aNX+jIoO58uuOBZpYFL7ZfbCeiMs+4A
    dmvjTI9MpfLBP711iu1asuikx6HLQts9UTVk36qP9ubNmFi54kDHsej7Ce8m+dOu
    Cjcjle6Be71MGLq4YUxd9xZmGGDPhEFnHWbB/QPP4n/m3DN3hblWBgP2PsgmqDyK
    518dA/0bhL5pvw5LSaRtGxxWvFBInfWGzC5EuLw4ERZW+bEFB0To08ZnocLRN/E6
    tZ2JTr2O5aMLqUEM3jgsIvs9EOGUBwPRzyOQXpc2uQemn7J0pL6PQfuBIaUI/NOu
    ULM0gQfLIV3wOP6Y5gH0FBcLt/ofrqdYys0C6zTq3LqDW5FdQbQoTWFrb3RvIE1h
    dHN1c2hpdGEgPG1hdHVzaXRhQEZyZWVCU0Qub3JnPohfBBMRAgAXBQI71CCFBQsH
    CgMEAxUDAgMWAgECF4AAEgkQ6y1BRyBURXYHZUdQRwABAc3PAJ0VtHlKCmR8IjdR
    KJxY0C5fdmaDGwCfecy3f/dYGQsljHhv0Wr2PxciscS0K01ha290byBNYXRzdXNo
    aXRhIDxtYXR1c2l0YUBtYXRhdGFiaS5vci5qcD6IYAQTEQIAGAMLCgMDFQMCAxYC
    AQIXgAUCQ5F4YAIZAQASB2VHUEcAAQEJEOstQUcgVEV23p8AoJKAqle5nC6Wi6yO
    TZtcr4axeBnAAJ9ABx4gqACagCDc/OMk3pmtb4sy1bQrTWFrb3RvIE1hdHN1c2hp
    dGEgPG1hdHVzaXRhQGpwLkZyZWVCU0QuT1JHPohdBBMRAgAVBQI3GX1RAwsKAwMV
    AwIDFgIBAheAABIJEOstQUcgVEV2B2VHUEcAAQE6EwCdEPG7N7vmhgYEqmZqPLm6
    oqjHOpIAnAr1FfVDPXpfE2SmXUZenG7+5MwntC5NYWtvdG8gTWF0c3VzaGl0YSA8
    bWF0dXNpdGFAaXN0Lm9zYWthLXUuYWMuanA+iGAEExECACAFAkORd40CGyMGCwkI
    BwMCBBUCCAMEFgIDAQIeAQIXgAAKCRDrLUFHIFRFdraSAJ91gKAjNH0XzAKohpQV
    vo3uT7LNvwCeJSxDm0hpmaOpa+LCcabNP91SyhS5AQ0ENxl8HhAEAITl4uP+i5aY
    Wr7mPBLAaWfoQ4fyT3pUThtStiymqsrEDFKhVqA/KD3PUV1CeOBc9oq69x1+pUlk
    VYz3vDrvk0hP+dy6nerUEbkdGtMKLvGzakdond55jgSTZ6CPHxqyLva06QpY8tj9
    CODunFUE+MPVV4Lf9U4wMeEDZFEYvcajAAMFA/9kKoDY1ur1mAPJRWAcEONxnwiW
    qe7l++fg/294wra8IkAbF760iMnqq63qavsGT6xStMi9EwZC687p86sFex6KF+uv
    P04CTAyt+FAph7oa44AdWJo4tJ4SP8xIznOiZS8clWwxTaqv9Ncy6LZwbZf/P427
    egF1zuv5A/MTO3KD7YhOBBgRAgAGBQI3GXweABIJEOstQUcgVEV2B2VHUEcAAQEr
    7gCdHJTTs41XBpfprQCErm3tGXwRrG0An1zUSEtG1AA4jFXNgIlud0OO4aMm
    =aY+v
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.187. Martin Matuska `<mm@FreeBSD.org>`

    pub   1024D/4261B0D1 2007-02-05
          Key fingerprint = 17C4 3F32 B3DE 3ED7 E84E  5592 A76B 8B03 4261 B0D1
    uid                  Martin Matuska <martin@matuska.org>
    uid                  Martin Matuska <mm@FreeBSD.org>
    uid                  Martin Matuska <martin.matuska@wu-wien.ac.at>
    sub   2048g/3AC9A5A6 2007-02-05

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    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
    =HbmE
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.188. Sergey Matveychuk `<sem@FreeBSD.org>`

    pub   1024D/B71F605D 1999-10-13
          Key fingerprint = 4704 F374 DB28 BEC6 51C8  1322 4DC9 4BD8 B71F 605D
    uid                  Sergey Matveychuk <sem@FreeBSD.org>
    uid                  Sergey Matveychuk <sem@ciam.ru>
    uid                  Sergey Matveychuk <sem@core.inec.ru>
    sub   2048g/DEAF9D91 1999-10-13

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    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
    /CYAn14opUDUCjxXXd3vrkwzNCIrYQ5i
    =iDu9
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.189. Tom McLaughlin `<tmclaugh@FreeBSD.org>`

    pub   1024D/E2F7B3D8 2005-05-24
          Key fingerprint = 7692 B222 8D23 CF94 1993  0138 E339 E225 E2F7 B3D8
    uid                  Tom McLaughlin (Personal email address) <tmclaugh@sdf.lonestar.org>
    uid                  Tom McLaughlin (Work email address) <tmclaughlin@meditech.com>
    uid                  Tom McLaughlin (FreeBSD email address) <tmclaugh@FreeBSD.org>
    sub   2048g/16838F62 2005-05-24

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    mQGiBEKSlvMRBACEIyrOE2NlPjwg7bS3nUC4S/D1nPV22eEJ0ga9+LNHlQnsJON3
    lGOU6iMGa6QaBoqg7Qw3aL6FaJlogNQfIPWZCRZdfJjlbw0Yd6EzCpMqoowB+4y6
    XuObOhie5bdHFK8NVk9n1BZGUELcnPGMdhPPIQ/UHq7Rlhbqh8qkcA0imwCgzNEV
    oPAY1SeozW0kBE6YUXXGQXkD+wRzl9As4+1CE3ZgxUWtoNqYvZMNWYTbO0ZWMx6i
    YWJ5GkLCMdVqNZ7iCteeDBVoRzLEbD/FyVzazPm7FBSxzK71EC+C4Ybt2IQPWfBK
    Q0GI+2ghQ/HyLh4gLCLP5XEk9aw9DwXGJt2q7HngEJli5o8LFVo3Qiu5X+QeC7QN
    r6uGA/9/raZnDF33jfAlx1jrHnFVEa1xzs81q2LK2ii+RdU5bvTJQchoHFRKZMBW
    HszbXB4f+wqkSkj6B7od8hBINJwdumQXdjO6nybh2abkCT2f/nyK7ktCcq027AD4
    BjWWFltUZpvspzq724SOEyBsbYJp4YTB2wys+gcyDF/ugaJCl7Q+VG9tIE1jTGF1
    Z2hsaW4gKFdvcmsgZW1haWwgYWRkcmVzcykgPHRtY2xhdWdobGluQG1lZGl0ZWNo
    LmNvbT6IYAQTEQIAIAUCQyJDcgIbAwYLCQgHAwIEFQIIAwQWAgMBAh4BAheAAAoJ
    EOM54iXi97PYq4MAoJeuQSfnGZsPBIpzOZ0vHmf/ZV4ZAJ4kKyQrqbxup6u/vMWG
    lS9JqYlZj4hGBBARAgAGBQJDnF0IAAoJEMYEPFZyB3E3kccAnRcxLZQIxgo0T22x
    GUDB8tkAUUOTAJ93N4aVydp/zrDo+OE1HStNFEsWvohGBBARAgAGBQJDnGKmAAoJ
    EHninGCwBj/nLhoAn3sa1+X0ccAhA+iPHo1mypN2uKUqAJ9B46J73q8E7PU17U6k
    RHY/7eCLaIkBIgQQAQIADAUCQ826swUDABJ1AAAKCRCXELibyletfK2IB/9GoKeE
    G2qDTfQbwG2Gbj4sW2FjaeNryneSTxXRMpK5dBwiMi07iM8Ze+8NdE9KlOzA9I1r
    tkYgR32UCfteyQXU8YvsKf6Q4wRqKbpckqI43zXMdvXyzG23P6/gR/Ozqh96Z9vA
    i6WdnvxjZaY6jItk357LJPQDP6zQncKFfcw7W+QAPx2N8BrUUy8U94kW6URhS01R
    d3NP8JylEXqqF6L7cSxcmO3A2QAVjzDpmfWu6AvREuYY7dkSSZWGK9hpoEjPN5GS
    LDgwRaiYZKHYz8Bx2UUA6sqaoebqAHY09bHIZ4fMiEkm7SSf5PsoS0emb9O0q5U1
    tHI8+6LkM6Zhs57CtENUb20gTWNMYXVnaGxpbiAoUGVyc29uYWwgZW1haWwgYWRk
    cmVzcykgPHRtY2xhdWdoQHNkZi5sb25lc3Rhci5vcmc+iGMEExECACMCGwMGCwkI
    BwMCBBUCCAMEFgIDAQIeAQIXgAUCQyJDgwIZAQAKCRDjOeIl4vez2IaCAJ98fPNG
    gmITFIYH+M3UBkw1YTvfAgCfQdAkDAFJxVrvDZBDliO2NB6jAu+IRgQQEQIABgUC
    Q5xdBgAKCRDGBDxWcgdxN2PzAJ9d7HmdkCyM5CN7cgG6BaZ87AHY5wCfUjblYg9y
    tsrTj2+ip8f05PC7zhCIRgQQEQIABgUCQ5xipAAKCRB54pxgsAY/5+exAJ94yol5
    HuRwmESdxzjj9S70GoYbsgCgxad9osFjtuxHHX37vaxUgJyLEbGJASIEEAECAAwF
    AkPNurMFAwASdQAACgkQlxC4m8pXrXxT7wf+Ji6vtaE5wjEI3/puKsHfGJmmHklL
    UBkcl5acntPLPxhXa2Z742ZZW+3QXeUyyXnqU1/BSn6/NBYO6I8yUJc5QptnlCvQ
    sJpwJlnTd7jBhSzN+L1xGxxvmmq2LfzLIleW8ye27vBOW4JDPDSgz4gVTKRqc0JV
    1EYULkWCGpfDA/xPP+4Lhizz57Q6EqLVurxMjNLE2mqV7feIvYoGLxOX0RxbNSpT
    +uJ+6ydpyE8UhykkQwgN0vhaokwSHC1KWWFH0ET38hcdFvaVrWZsrG/GwGg0T0mG
    23CvIdBUGH9U0roJjUa6CDDQz8ohR0P04lFpVsgDi9AVPEFWTX4gcUwyILQ9VG9t
    IE1jTGF1Z2hsaW4gKEZyZWVCU0QgZW1haWwgYWRkcmVzcykgPHRtY2xhdWdoQEZy
    ZWVCU0Qub3JnPohgBBMRAgAgBQJDIkMNAhsDBgsJCAcDAgQVAggDBBYCAwECHgEC
    F4AACgkQ4zniJeL3s9hsCQCgjLOKwwiG6bABO6ue0mjHpvR6nhUAnidSAywDgVQa
    nv8Ev+hIv4/QpD2PiEYEEBECAAYFAkOcXQgACgkQxgQ8VnIHcTcenACeNyN5PiZU
    TJ72eTxbc60q6PpkVOIAnRInAWvK8iW8I7uGOMBmyYtZWfu8iEYEEBECAAYFAkOc
    YqYACgkQeeKcYLAGP+czFwCgkAtsuKGoojwfo/Rg6p9RCazIUjYAoJ0xxWeuZ/df
    7lkbyqcRGJOfLeBBiQEiBBABAgAMBQJDzbqzBQMAEnUAAAoJEJcQuJvKV618rKkH
    /1kUl4Cqj3n9a+acjUnl5gH1r6SVUuNK6pPJPVpBXDOGWQQPfVYl2LTtFfzIh+e0
    q7J5os8timFbi/6HaI3RNV21XoqrDVgmRA8lApxM3dfB0hlJ6jx9eoUjHgi4n08w
    nX3g43I0zoRc3lQPHFc0jV9yRhgAln2yHmrvdcW0SUb8Zv/FvyG26W1gyEvl0cPE
    /AvKerTr2oP3aKnWtQfylovIw6Y+MmP3AynlvYghY7qw5QSnw3PhITvoFh4Lg4hI
    c/AoY69TAdf4d+kHtbo9vssMoT/NAIaAN3K8hdzSmJ0Ifsj7/K9+qtYz3r3c/+Qz
    1pH6hqz1u13upXLo/slPV7S5Ag0EQpKW9hAIANJJ8W4+BYSzM6ihW2ElYyt3h2hp
    WXptNPnrZDAoqx7YtCyPnUpn6dJrlsz2NTJiW7ahdsCQqrCyMTRCzAZAbFN1s8Se
    0hlREeHxGBIw+trapap/B2u0VQHDfVEL/9ib+jUFm+Gp3izgcgf4y3tvJRmmPCgj
    Y9fFcFu7PrntYsK91OkgungUriZ1fbjx0OkHRaz7nnq+On+dVElFh2iTwpZKrG3L
    7Qws/iVWamLOSQ14d3fzWN/Y7pF09QjOo5i/iyN1QEYiOffYaUthWr7lJ35muuaH
    yEMeodSNkKCF+BqpmmWKgJohopQ1/f36WjwlaVKaRh0zCIxcpX5xPtSoMzMAAwYH
    /2OiL+gBLaaTC5okydoeHAE+G5TobT4CI2fw2P9htDWVYf1eIriTRYKywSyjF+YS
    nCc8hleBDCwrUY03GXCFEOq0SAR97cfRhzxlHps3n3iAuZp9TwcGDiskL0wAaNS8
    43AKNHlKRNWxXoCE4oBlq/t1+DV+7BnjdI+MCAUe8h4y/jACIxpxnRKjmAcN2qDh
    THauJKvmUjw5W9SvgDU8sHNXRAdTbCrDj3iEAvZ2bTUMLmh9h0tKhwmVD14IMpDp
    7ZELqCgJgtHjv9kAg0Yz/Dy34jdLgypTJzUreQcJYvv5Krp1QLRTMMtoMtkop56+
    oKcUsj5bqschZLFzuL2hj3WISQQYEQIACQUCQpKW9gIbDAAKCRDjOeIl4vez2KQu
    AJ999gXGK70qxOzC8xOb3luxRKE/TwCgleUyV4VszS8i918p+td30+xsf1M=
    =DTOK
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.190. Jean Milanez Melo `<jmelo@FreeBSD.org>`

    pub   1024D/AA5114BF 2006-03-03
          Key fingerprint = 826D C2AA 6CF2 E29A EBE7  4776 D38A AB83 AA51 14BF
    uid                  Jean Milanez Melo <jmelo@FreeBSD.org>
    uid                  Jean Milanez Melo <jmelo@freebsdbrasil.com.br>
    sub   4096g/E9E1CBD9 2006-03-03

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    mQGiBEQItSoRBAC0Dd1LYWYUcjRH9XabIefY+5q+Mwi7iBdvUjq96c/LgGZLXbG8
    ZlK92kraOdWvwrPcYUCjYQwwesOmjXryXPoS+AYiz9iVs7AR/A9drFECh50wfaiL
    J7X4kSpR9zDgju/yVPyT3rhE4ZEZ/81txqdu5DSG5+vD8dLoXdb3EziXFwCg8Njt
    Lcb+ETI3MvK0M4A5HpuBvTEEAK2H7mNZ5BoLCrB81244e1BFwd16raITUv7DiF11
    Wl4kFowGt0K9P0d6QxmL3bEdeud2wfNaVjAuiO2B32XlV4xskZmfalniN6fsX9b9
    jnzJzpFvR4tPeZdpw07ePYJXh5vZjx4Mkflv9X2+rWafLiw5vkmwPnkQPcnhWnD+
    Ia0UA/40hZZvC9h20eH9hAcJA865wLxzmUijzgAGHjXVjhNT2oYGneNeY70auub7
    hGVL7GwsDSYc76W6IhJOcAjgHcCfa3uGerFR56T9se0ysmlBrONiYTokVZ3vKFp6
    m9ZceaPiE94RtHsVVkDa+F2KWeGU1As8gskVBP8MycodYb8XgLQuSmVhbiBNaWxh
    bmV6IE1lbG8gPGptZWxvQGZyZWVic2RicmFzaWwuY29tLmJyPohgBBMRAgAgBQJE
    CLUqAhsDBgsJCAcDAgQVAggDBBYCAwECHgECF4AACgkQ04qrg6pRFL/NCgCgg1C8
    cFGpWahx1wgZ8IQxsmCSUV0An2YnP/Q4w10WTe6qp+I+H7c7k900tCVKZWFuIE1p
    bGFuZXogTWVsbyA8am1lbG9ARnJlZUJTRC5vcmc+iGAEExECACAFAkQxmpoCGwMG
    CwkIBwMCBBUCCAMEFgIDAQIeAQIXgAAKCRDTiquDqlEUv6McAKDC5MusdUU0kl9T
    /ymavKEu9a349wCfXWEu9GgVb0CCZ8Agx3BHHIuZNo65BA0ERAi2QBAQAPB4mj53
    L9vbS2WLCAPMMn4ZGDYGXbe1pB/mjRbZlTGnUYWE3NO1fLYXEaoilRsvcEKtbsWp
    Ynuk8Ou4DaNoVyX9I6I18rs5KMZBiLOvQZFYCBbJYSIn/nNycOqsTy6Nw9mz7mrw
    I6e6EhiYh/AQ+MI3zID3iYnbQlQFZo4gLMFTLKklpiV+DaPoDiEkQPGn+0mmLEIO
    pmCqiDTxCIrig7feExCXJa2+CXLj2OS+r6su38O7WJiGMq0i9nCeu+4NnezoKPwt
    +s5kVYAjOSzDRybWz0UDzi9M7Kxu9tFoxEQUikLDMdqSklPfRs95TEmpXIvksn3A
    lub2Vfum6/kdRNkxPPbUuyEvtzeCc87LB2cLpP2+EXcfHCe7MdrtowWleRqXymXa
    Lyun7uKk2etFpEIfAqCPC1Yd8Jf2coyVY/n+a6yotWzCtQ4vogO2dTTKmj17kkcW
    1CXZz4W73Jut9ixZmYL/zOJj61j+2S7K7VLfSNrP8H8SACH0oHxYP89BaqOSOO2N
    0DtvyhFfS0OsxAEBa/EgtCAZiON4nZdQGPyDvq2/uQ1SGxbykTCvgxElAQfyUh7x
    lctdQQ6f6MEEPHapdDwpnqX5TAcdY7v9eE+/DZNTeswUBc03qtqxee1II3K3+Rvl
    4R+DuGn/oPdgksnX0kX0wtHgclXRsZ6x+wEfAAMFD/9S7Z0ee7WeH4WwU9Mf9gSp
    3JGafoInoJZNSRsKAl4VFC8axivUGyUzJdTbADoRXDR6NfqJE94u+pP3vx4AAvVH
    cvzfGj10GlUOwQGbQxaYGgYtqVgQ6MKeS6A3xaj63WgBFtx8bbt3e9XTnjPto2ZC
    U/pM3lmwsvxHoJGgisRvEfdQeWW2cJlxcBfpqat1/2MFBK60Wd0WAr0x6A3m5xpy
    ejftkcUa08BT4LSiGAsmuNKtUYULA9OrbvJreUa90lrM+6sZy2Edh/kulNmXgS4Q
    Y+OVptuhHSgBeME+j/fM5+p3Uyyaa45xmCFxnx5u/XBWhzMiPvi/m+qYkXPECFLx
    CiZ4OC7Xso79UeMmYq+CTDMWR6pe6iGVQZhRH69ShA+c545Eic/RoOv4ra8se7/U
    R5BU29AWWtapMq50/h321Oi+JmmfJHrte9Kd6RdyahuvtlWb7bgnKPwzpaRXYtbt
    H9SskRTdESK14AwH2eUVAP66Dfr5xBoyuS2g9MkRxxhjHWmMi4TAyh47VgXUxOPF
    Uh1eFsIqVa1scXFaimmicdnbg7N5iVoqIIiuc2Q5P1xIuTUdxw1SjXOInmjAszO7
    Ckad599/WaNFS/pkDOgt8yfQaLOKCqVuKkimWa8YuZkm0g/aY1n1cE7TvNpxdrS+
    dw6TU3idxbY/DuNsWfHfrYhJBBgRAgAJBQJECLZAAhsMAAoJENOKq4OqURS/QrYA
    oIelyoPYInm4v6UTBo3XhOwNkHWbAJ0XXqE5J3Zv8FCqjQsJTFCmmNSoGg==
    =CyrL
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.191. Kenneth D. Merry `<ken@FreeBSD.org>`

    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-----

### D.3.192. Dirk Meyer `<dinoex@FreeBSD.org>`

    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-----

### D.3.193. Yoshiro Sanpei MIHIRA `<sanpei@FreeBSD.org>`

    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-----

### D.3.194. Marcel Moolenaar `<marcel@FreeBSD.org>`

    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-----

### D.3.195. Kris Moore `<kmoore@FreeBSD.org>`

    pub   1024D/6294612C 2009-05-26
          Key fingerprint = 8B70 9876 346F 1F97 5687  6950 4C92 D789 6294 612C
    uid                  Kris Moore <kmoore@freebsd.org>
    sub   2048g/A7FFE8FB 2009-05-26

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    mQGiBEob9xURBACHaqCbAqwyIXO0HHHCAVYPqVkhhr2FIS+yTvVJnCQa6G1KIasT
    LKGK0Z/Ae+suMsQoT9e1Pw/zhErm++aRSYqdTzyuMUjEDXtgsfp27rdQZRNiWDwz
    2/gd1nSEWYAKqUh5i0iJ89tkiL3JJx7/FD1+Nfp2sk318usUshT9/T+L6wCgmRvG
    A61Yo0rszOQexAwZ6PqE9fUD/3tGobQB17xQIca/AwUDyR2cw1lGs3S2ZN2G5xAT
    QL+h30wplhrrIO3lkyZQ7p71ZTPiAf5b5eTrXWrXVtO2Um3+wU04yhBVcmO9DeO/
    F6SLVzJLCRyTSNUSZNmWrl1EOFWooNnfBI4Emjke46g89hIbhYlS+qRL+qN0ugpR
    SnfmA/9d/UiazKlhp3fX9EwYRQmOC4WXDxuWS91I7kH0xsbHR/BHFJbUHDr0shsB
    lNRmfxwaZjiC6oHsJE0Du6FcSncYSfAChLrt+fqGvNgXf4hDIjsUtu2d5sxgoarv
    EvaSwfh/gelNuTnsgQll26LaeYjgmJgwf4Hb7I62UkkPuU5LMrQfS3JpcyBNb29y
    ZSA8a21vb3JlQGZyZWVic2Qub3JnPohgBBMRAgAgBQJKG/cVAhsDBgsJCAcDAgQV
    AggDBBYCAwECHgECF4AACgkQTJLXiWKUYSypOQCcCQagomGK/P/P4OedoFUDw5ZY
    2qIAnjRRTC0mRqUbIjaf/FWNuU2qtbiMuQINBEob9xUQCAD/zeiP1+Ru7ffCZwZo
    QTPjuYvm/PnAeeL2fBqN/Q367UuqR6RlqV03lo5nFxD1phheP0BmH6b0qyMh2dxi
    /6nq32g9b0Wb8s93pqYimxtujpNnWmZhwparaUm9tPyIGRdJ6wj8G43gOwyjDdwi
    GBPDAdSAqVZI0m+l59F5lsPiYJDGSkYENjLd6T7aAd0JzDjd0YLTx1+WLir6OrLG
    p1j81rBRCGRNipN7tGB0/pEB/mutU8GlDTTFaD1cWT4X3RGGP9MOH1UuS4wZXzJX
    8duq+4fKlpKEPOyJ9R51D25a9V71Dybdx/5mo+Bsec8T5+N0f4hK6utrnJvSQTes
    vinLAAMGB/wNS78TRKqFdjz83F/LB42srwFqDCKz03Pns6Fzespha8zWKOTiNOk7
    2WuXl6qWXhZ1aSithGzoWX3Xm6m0m3ZYk9wE+rDqT7Z3/T0tKiHmwG5z3QpuLOnp
    LGuBH/ra2gbyC+Ycj/faYXOz6Chf0e67bNRru9OGf289Q/EVcm39DinYBK1jrHcq
    xZ+b8jxtOWygo2D0SIS/hl4ljMDMaj/J8itwJXj0OyuoJ1IZkW32L4RN3jIXTUgn
    pGyhtw3wO4V5nhdj+YgvhP2VW1K2SVW1SqExlYdvB+HigKV5oHzTNluILcJgs4BY
    ntHqlJQ57QKxWImxvFZmS9MBaf69Tb68iEkEGBECAAkFAkob9xUCGwwACgkQTJLX
    iWKUYSziLQCeOWM0aLs+/NIGsNo/Lc2N4YTQ4pUAn0rL6J3fe3flPx5pBoj/SSto
    jjB9
    =yaw0
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.196. Dmitry Morozovsky `<marck@FreeBSD.org>`

    pub   1024D/6B691B03 2001-07-20
          Key fingerprint = 39AC E336 F03D C0F8 5305  B725 85D4 5045 6B69 1B03
    uid                  Dmitry Morozovsky <marck@rinet.ru>
    uid                  Dmitry Morozovsky <marck@FreeBSD.org>
    sub   2048g/44D656F8 2001-07-20

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    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
    =yCgd
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.197. Alexander Motin `<mav@FreeBSD.org>`

    pub   1024D/0577BACA 2007-04-20 [expires: 2012-04-18]
          Key fingerprint = 0E84 B263 E97D 3E48 161B  98A2 D240 A09E 0577 BACA
    uid                  Alexander Motin <mav@freebsd.org>
    uid                  Alexander Motin <mav@mavhome.dp.ua>
    uid                  Alexander Motin <mav@alkar.net>
    sub   2048g/4D59D1C2 2007-04-20 [expires: 2012-04-18]

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    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
    L4EaOMcBYbTvTg==
    =ZML6
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.198. Felippe de Meirelles Motta `<lippe@FreeBSD.org>`

    pub   1024D/F2CF7DAE 2008-09-02 [expires: 2010-09-02]
          Key fingerprint = 0532 A900 286D DAFD 099D  394D 231B AF20 F2CF 7DAE
    uid                  Felippe de Meirelles Motta (FreeBSD Ports Committer) <lippe@FreeBSD.org>
    sub   2048g/38E8EEF3 2008-09-02 [expires: 2010-09-02]

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    mQGiBEi8sBIRBADJt1SLW/mX5HmXKgbG72GXupRR8V+lDbtquXx6dJ+3E62S9xFx
    KehNrX8YcYnp+dcuHktXxQPJ/BAzOnvPdHKgzdXMARO5ApOfQ2VDgZgAcs0dVEnn
    LILvxiwQ7YlyJjOTJwbcHBpsTdolhNooi2FEE3N5ShSMRlPoH3GXF1qdnwCgqV/g
    IlQTCLudKrApFqNIbDCrPh8D/AmN2MdnlnIk6d7zUgLWuu3coohYIYOxaZ+ovKDb
    S8siSZ5uaEZOhWHVLVGYXTmzLrCK7TUBKdK1sW7YrYKQdPjhYnYXrwS4AaWupWwX
    K+fZWTaZsJiGLbOIrszAd2hRHUgQ5VeeoM0eD9eyAWHp5SVi9YcixMUNbn5ERPu4
    ppK2A/sHynDjmkXHXzuNwN8dwcUjTMTVt9bxGrLVJHcJUsK527dv6/UG1CfZYnzT
    nca4GNO42/FBjQtyJaTQd76aJQ/PSU88MMGuMUh9LYl9rRdMQKn4FXm/6t7NZOqx
    qvXzEC8jFw1BOvxhmykSEZDlwZFwQngDre9Ux68Eu6Nut554yrRIRmVsaXBwZSBk
    ZSBNZWlyZWxsZXMgTW90dGEgKEZyZWVCU0QgUG9ydHMgQ29tbWl0dGVyKSA8bGlw
    cGVARnJlZUJTRC5vcmc+iGYEExECACYFAki8sBICGwMFCQPCZwAGCwkIBwMCBBUC
    CAMEFgIDAQIeAQIXgAAKCRAjG68g8s99rlhsAJwNTFc1W0eu3Em6+RjD9WZWtX/1
    0QCfb2riDssKYX42D7HhVjDvTe1BtXq5Ag0ESLywEhAIAOQrj0PRt1WOC3Gh1njF
    KDacQl1aJ5f52yaz0FLpu7igTRS/8ET1+uHvIwzcSbbG/4xWqPwirMxpNZwpFMzX
    9l8bURIX5szmJ+bEl4VH+La1p+w31YswBn0PDTSYtWhaIn1LMXED4e2Kg/wUCpLT
    M8htMa1pg0F2ZcmvbNZFuXMd3BBAkvWrRJTYuDXy8HHnbALjUd40laUDT3Wi6FRB
    W3HFj5lIiEjnJG52iTSxWVEkoChy7l/qDQ0zsguCCZZvLfdQz2DAFscjX/HltuUK
    s/gkzVR4jZDVMQPqCATuCvDYHrDWJnfU/R317Eg2kp2tJrNibrnFX+ciISSuq1+t
    UmMAAwUH/1XXvFtLACv8NFLVFVWM9wA70ZTLjZEEfewbWRYgT1yvOChn7H2ef3mn
    I7/WoLF3ntm8Qcw6TcSrzVbZjgdWpS65Wc5YZn1rMb6nP419kjDQPjvB8RUA1g9v
    7LuOv8qeqqo1/mT6PIh8ZnhWR42ei8l3QcbyGJMQGPHyUZk84qbd1TI9gO5GjWHZ
    LIi80DPb0cpazMCIgYjrqZsOoq4XcYJZah85Eu9jdqbx8aDNnag4NeO+9jhy1msg
    xC7WuLYPctfFZ3q5ZwdvvtfluyeKjqY5mzkAuXKbtK66yMLugU4NnR1IeS7oI212
    NF2FmCRAkCMB26n8sd7xavpd9uF+6ciITwQYEQIADwUCSLywEgIbDAUJA8JnAAAK
    CRAjG68g8s99rkWyAJ9b53BhFJ6+49cr0IIZLxVBGlWNnACfX4O3OOhx8kClRzsH
    1wm6VFjn7qg=
    =q3W+
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.199. Rich Murphey `<rich@FreeBSD.org>`

    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-----

### D.3.200. Akinori MUSHA `<knu@FreeBSD.org>`

    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-----

### D.3.201. Thomas Möstl `<tmm@FreeBSD.org>`

    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-----

### D.3.202. Masafumi NAKANE `<max@FreeBSD.org>`

    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-----

### D.3.203. Maho Nakata `<maho@FreeBSD.org>`

    pub   1024D/F28B4069 2009-02-09
          Key fingerprint = 3FE4 99A9 6F41 8161 4F5F  240C 8615 A60C F28B 4069
    uid                  Maho NAKATA (NAKATA's FreeBSD.org alias) <maho@FreeBSD.org>
    sub   2048g/6B49098E 2009-02-09

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    mQGiBEmPtPkRBADEcSQQGME+Df6I9jnjUBNMxvX8aMAH0+SKJEn0xTZvu9WLQmJv
    Bx1Hh6AN8fD7OONFBYGsDAxbbgFnwxc/KPBctXHUxoTE3lRTFRwYJJKIKvrDhFjr
    qDWwLJ9TsUn/pDsBflPFe57okBlPgSywTLGLuurOaT7oda6Z2K0FOiALVwCgn/b2
    7R19gm0uKjzsEPejafW6lZMD+wQK4qETffrdqRoVRnzzpTa+xa60kQxxsIeibffy
    dovqH7HIWeqiqDwls17zmbMc7auNliyN7VJ1bQ2C5SkojMUqgEsVle/8gfe0cWhS
    2jJ8A3Xg+/IzYwj+TtlWqUkzx/b1Ck8v/9aRmLtTNo9OdC8H9Nu1onF3Cp0WqsiN
    gwNHA/4+8w5D5gouNWfuYkkzoQQ2jIFJ4zhe0GCb2MIrqKrf0N40NOcYFLi4eJ8F
    W1DAdQbQjfMMlYAknm7MBpnsagTqjS9MniPVygYUUre/xMx0tszvWdGdRSjEY/5U
    AXoCevBci0meKTm5ZSDb2RPOLezF/zOV82IY3T+OKXTHcLSeubQ7TWFobyBOQUtB
    VEEgKE5BS0FUQSdzIEZyZWVCU0Qub3JnIGFsaWFzKSA8bWFob0BGcmVlQlNELm9y
    Zz6IYAQTEQIAIAUCSY+0+QIbAwYLCQgHAwIEFQIIAwQWAgMBAh4BAheAAAoJEIYV
    pgzyi0Bpf4UAnjOqrSHlb4NdW+ulVFu3o8W1hbTKAJwIdn91S2W9V3ueKsbFqq62
    8dPYsbkCDQRJj7T5EAgAuaHr5IuEXaxoUcoZryGZweRs+G2Oh+jsMIvMABVGMZJ1
    iov7vSypm1EF6/cO3O+rn+Zcpuf4XKPP3TK1oKWLIYRgdkvTWwzVc/PGWRHdr6/S
    fo1B8/jr9tWW50p+s+KZoMPV/Rdz84AN8bNZVAMxNWXooYrGMxMvEDg3rX8KZW57
    25KF+GlYYBoIXxatMYGlZKz2lcaeD7Mf9EFs9jtpyZ2lhlXjWu3NZBdf4ClzWt/C
    uQI2mM2oEX6oZEDCgWvGoIPKzMruI/lAPi8I4Q9A3fH7azEz/BHW6yqLcXfmUrMe
    jsGTS/ovpV/dyxqNzsVpt203ZBxSSkSjOOMO4OzBOwADBQf+LVc888G6GxeCJGxp
    X+uACx6ziuaGO2AIvfUWN2KlDEpiCHwKf1L4FBE6mKm2l9ZloNyisnL8nvC/lmes
    whiTQkiVgB014EDhR7IoljZQJwpJqWC6HCwED08In2O/fI4JX3XiPbUzYSmQSpd0
    tMMBVBwkB3m8SnTaF7cnYrZVGL2oCrBxfbYYhxDtxmGnD3q1/me7dixUJLbEHSmj
    wXvORtzMuADmNuz3RkkEKrtHXgqtqYluZwb3VNlRa9T/MxMYMfMA9V8IYw4gQkM0
    xEM4UOUuweNyXRUSyuvcLQJthhWiw+Yfi9ATzdbnbwh1rwwVOoIhcM4QHBgPhnir
    vrn/k4hJBBgRAgAJBQJJj7T5AhsMAAoJEIYVpgzyi0BpqXQAnjkUgOmypg8bF5kd
    ZDVC/M0s8sUfAJwIJuJHTepRSP6qVkZKiXF5TRMt2A==
    =Rtch
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.204. Yoichi NAKAYAMA `<yoichi@FreeBSD.org>`

    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-----

### D.3.205. Edward Tomasz Napierala `<trasz@FreeBSD.org>`

    pub   1024D/8E53F00E 2007-04-13
          Key fingerprint = DD8F 91B0 12D9 6237 42D9  DBE1 AFC8 CDE9 8E53 F00E
    uid                  Edward Tomasz Napierala <trasz@FreeBSD.org>
    sub   2048g/7C1F5D67 2007-04-13

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    mQGiBEYfTV8RBADcVRh6fWX1XI43cTrdJBctCOxf9jZ6eedmhajkpMRhg7b0JPPL
    cYL6H1x1xqKbXtKxWE+BzQfdDJNJhwjQIwaXityWHihnkw5XBCRMuCGrUuaW/pPQ
    31EX1Am9d8k+ckUK8tPMNuWM8+ZYjXTJppLg20pIPBRwvmRR/hrHDhMvbwCglDGC
    ZfTHYkv36MFnkPHJH4iaQIkEAKoy+bcyOiJK0iuAx5KeF3CxP53Nd4sbsHKcbibP
    OsWJKKUHPlVTts6bUvM6RH+zUHOeWpXmgNvZTsvmoLU/E0I80BN5ngdOwV7oqeAk
    V03iltsBGIeBv5B0xxYDyQBuo52LV5CGZ7F65o1jGF8LWfZbtPh02gTmhYymmLeV
    QryDA/0WbmKavL5Dh7L4Ugz1JVIC6miD399IsLV+XewJjcaXnnngIplz0ZjK9hHx
    kuG4w3pi450z6gMTmpY1IPC7R158j/fLhygYLhB0sffXaGs50nizBlBoZNR/RZRJ
    7Ik1Q1E4dV5kVhgqBs6qPCfAdVMKGTWpM3xF2uyFT5xbuVPxIbQrRWR3YXJkIFRv
    bWFzeiBOYXBpZXJhbGEgPHRyYXN6QEZyZWVCU0Qub3JnPohgBBMRAgAgBQJGH01f
    AhsDBgsJCAcDAgQVAggDBBYCAwECHgECF4AACgkQr8jN6Y5T8A7L7wCfa7dxDhHm
    WYOcaZ3PiBCxbMyMeW4An2regIquPmK4ZyrJkfXGd7BmmgGKuQINBEYfTV8QCACv
    /cPnRLjvnYJdozvbzoBqC4m2sAmBClDV9cRtIGXu//ULZ0CnDmEByfp7W2Aqlm4a
    +WnDBlbKaP4td0uwvly3m2hNH3DS/7/aBaDYhPUeetmIP3GZrelGlQHqe1ldJuwD
    KEiR0ANagAikuSiO8Fv76YY2dFmUSWh6mNd6+/F6hYahByJbDXrsYNSMI7BtpH/C
    fPaSew66982uu86IGIZPREfKSYouLuuHPUwrGRbcwyeIL5y/0i6Eyxi3JuPHCYSa
    a0jX5VQ8Gn3P3SukTdK+rWaJQMlzjbdaZknB/GeRDEc6ND3eqdmQa/PdnkGVwHeI
    S17IutKHDCsxDqSJgak7AAMGCACJtwmr70SqnOxtHugDB0G4tAEN+poeol9zfEnE
    A1nZImvDNLUoX11YZRLHCc9nz2V7HIzTacNL8ue5DenmtSs72S3zHM/DnIhXjx8r
    hBFrSW/DdJB80LLcC/NhRcl3U6sof4nzYuipkgr7evAeoZqWpHiYcuag0ZRRH5Jv
    4Yh3R8zFYAg2NSKs2Q3CCX4c0vs1boZ1f2x4QQhxTpsDkjJxGPJ8OEAR7W5BjDOY
    KZBL9+02bzJKnOcbrtRkbylGZAQCxX9DoZDGHSCqaUBZMJZzWauW6xcwd4s91pMQ
    MVG1u5WHvZlOEo1Cg3Y9QSyehMKkcLwyuBj2zP+ijlkIBuFhiEkEGBECAAkFAkYf
    TV8CGwwACgkQr8jN6Y5T8A6VnwCfZdSh5TaDbb0wjcyUkVYAWZIo4n0AoJOfSvnF
    MeOHsJ51PEblZGwvjW0k
    =hc/r
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.206. Alexander Nedotsukov `<bland@FreeBSD.org>`

    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-----

### D.3.207. George V. Neville-Neil `<gnn@FreeBSD.org>`

    pub   1024D/440A33D2 2002-09-17
          Key fingerprint = AF66 410F CC8D 1FC9 17DB  6225 61D8 76C1 440A 33D2
    uid                  George V. Neville-Neil <gnn@freebsd.org>
    uid                  George V. Neville-Neil <gnn@neville-neil.com>
    sub   2048g/95A74F6E 2002-09-17

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    mQGiBD2Gwe4RBACw78PVfE2fA9U0mISJrV1ohjdkzVTly0WQ/YwMgyB/J/Z/M35G
    zIc8yKi8YR/6QYGqgEzeKAhrUIDyBfudhaJ527gyR3Xi+QHgWMQDvd41NlqM5DBn
    yIVKj10DmDYjcHm29M1OHAkXKZT6tHCqp1dKFD7EXtY1bOakvN7TIKld7wCg6AS/
    iPmIvGE7wpFlcFkYIjjL4ksD/iKpKneEwB7dEksyDQX8l18v58x0lH334WDgRO5a
    X3Wlc4He8b3kWzBWK0z81XE8Z7ip0Io13LHhamLp1P1eDX4sWKQpJmdRtHziC9R6
    4GwW9P7aCUCCf91XxaYEU2j755u1Zby3gF1tbookwO1iXQERYuo3ZHezH1bkdRk2
    HNecA/9+HCfVESjRFPfOEVqljx+Lm5atTx5VX/D/6iprDUARn0YgW5xrwM8doeNI
    UxkBOUszEUPDpXPnMI5RWB+0siQhZl3yX+lUPtASrEj84rpOSXZtNPAkHit/iwva
    pW75gZjt9yN7IhVQVw8O2OMTRGNoWsshzKzznqxNP3p1JYYq/rQtR2VvcmdlIFYu
    IE5ldmlsbGUtTmVpbCA8Z25uQG5ldmlsbGUtbmVpbC5jb20+iFkEExECABkFAj2G
    we4ECwcDAgMVAgMDFgIBAh4BAheAAAoJEGHYdsFECjPS6hUAni/U8Zbrr+TFHLt3
    cLg0VWnWxCI/AKCNqxRmA/HlZLPRzhVCQODgfbOG4LQoR2VvcmdlIFYuIE5ldmls
    bGUtTmVpbCA8Z25uQGZyZWVic2Qub3JnPohgBBMRAgAgBQJDtkW7AhsjBgsJCAcD
    AgQVAggDBBYCAwECHgECF4AACgkQYdh2wUQKM9LtQACfTi75crWjtxxVJUmGSn2+
    CDnlCesAnRqM+XSv9/KnZ3O/GRtpkNwT9NCJuQINBD2GwgUQCACvJfoCKfRo3y1J
    kaisLLtSVsqCeF1mlwfBGyvD0Lu0VnDGuy9aHExafNEbUaW+OQe0YXtZeX70CUPF
    nizBcDEsHEj1pC9HoZCSoYXtqORBa3ZIUwz+jJbjHJErs7XM/EshhAollC14rXKt
    K7+UVCw5JkCmialF7LAyWgqeBilwtKUBpIaXquf0/qws+uOikcZb3UttamQFUW0Y
    l4KKHP24cvCOXSlx8Kl9l2rQzfedjQPXI98zkcR3SEjZ07cDs+mQOTax2OgVS3F2
    nDUEqLQmAiftHFWQ0h3RBpEYLGTNd3gXXxJPxZdR7YIBnxvJ7RZM5qGgZfTc0Jm4
    aM5s+As3AAMFB/0dVB40Fvk74U6mwHLMwEkzHiZoVVZPBUMsuqb3FlgZrMYmwa3q
    APNhPhWSO9pLQlPJ99nFFj1lRUU7OO/oihsdKLEfT2CT5tqa6fAWoiSQIKBBbkrm
    bQedeXPWtvJezS0FY17rOfK8242Lnq+djS8ihBxSKpCVbwWO1DPktu6hGzWQz+x2
    B91jbMfM9/n00xEkZ4Z2H0dSZNY2WKqK+MkqAiYf6uJBs7BZV391WWQ1fagCP/Tf
    HPM0gDnwFfqSJmxJzPm3upTmYgoSRqri7NH3Wec5pY15b67JFHMpMFbgauEsiDSi
    CCk4YxHfge4SMe6noPICAjN6PCkIMDldxi+ZiEYEGBECAAYFAj2GwgUACgkQYdh2
    wUQKM9KJgACgwzfFmUB4diy5sTzLVLE3TCqwnJYAn39ByQnv/FeLGSY/blYrVsQK
    aCpC
    =SotO
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.208. Simon L. Nielsen `<simon@FreeBSD.org>`

    pub   1024D/FF7490AB 2007-01-14
          Key fingerprint = 4E92 BA8D E45E 85E2 0380  B264 049C 7480 FF74 90AB
    uid                  Simon L. Nielsen <simon@FreeBSD.org>
    uid                  Simon L. Nielsen <simon@nitro.dk>
    sub   2048g/E3F5A76E 2007-01-14

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    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
    =ggBj
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.209. Robert Noland `<rnoland@FreeBSD.org>`

    pub   1024D/8A9F44E3 2007-07-24
          Key fingerprint = 107A 0C87 E9D0 E581 677B  2A28 3384 EB43 8A9F 44E3
    uid                  Robert C. Noland III <rnoland@FreeBSD.org>
    uid                  Robert C. Noland III (Personal Key) <rnoland@2hip.net>
    sub   2048g/76C3CF00 2007-07-24

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    mQGiBEamZvMRBACgUM3B+Z/7yw5DtYP+4jNaSvvJBNPtLbHeCcXzAytD/Le3Tx/g
    /joJFJZS92agbQSt6p9SPnw1xguQ2YMdBQ5LFbE5ZgrXnDX9JUWjhyjTPKRbkFPx
    5G+JkTG9I75/ZVq6AhcOjXwsq/mkANhu87uOPRO2Uf/e01o3CplYIjRVPwCgiqwz
    wycuIxPvmWX3ao5gkV5iUgMD/2cVqZQ/uareIN2HF559LZkfjGdBA7U4H1cOD7hr
    pK27HTNcSAMpHP368AY5nSEUezQ8iOArCxx2xYMIvyxeaQ5wFgQ0kuwb21JieUdm
    6+cQ3uynJMSVVic5T4qoyC3mpu00VNBpCLJIk2zLk8CPDPQot6yB41622xXXHaix
    1efSA/9oJBP+6Ffdrni7hxAEgP2uG/lXQ/oG67UljMC1LFkiV0irE9O6G5UXFEVE
    FOQfXmXqLRoIjWaqDLdfADerSl6jeva70UfbiGfxHHkbltMZi2v3Xd6H2wmZKcSl
    RDYhdvNIhNDXfGAoaYneHN+JWYPDYebG5MyN1QyU5+kB7n7grrQ2Um9iZXJ0IEMu
    IE5vbGFuZCBJSUkgKFBlcnNvbmFsIEtleSkgPHJub2xhbmRAMmhpcC5uZXQ+iGAE
    ExECACAFAkamZvMCGyMGCwkIBwMCBBUCCAMEFgIDAQIeAQIXgAAKCRAzhOtDip9E
    47ceAKCI+rqu84IxKD8Rb+a1hL/+NqHotACeIg6ZGwFCNA2OOUchxF3hXvJ+mfqI
    RgQQEQIABgUCRqZ50wAKCRACwq9DxPQf7Ay9AJ9xShA298xcySmevKvX8sWC3LQ4
    iwCfbsQ7+AB2L4j25YgHK9CjF6f8s2K0KlJvYmVydCBDLiBOb2xhbmQgSUlJIDxy
    bm9sYW5kQEZyZWVCU0Qub3JnPohgBBMRAgAgBQJIhOEYAhsjBgsJCAcDAgQVAggD
    BBYCAwECHgECF4AACgkQM4TrQ4qfROOE6QCcC085r5aDgvzVDPvrZU+pSitB+BgA
    niwufou7zDg3AJGyf1MeuuFaZ1r9uQINBEamZvMQCACOvnyHYPRaWC7fFfrdqGxj
    C5ZnjHjYTg4vIUgVmPE096H+WflesmgOZ8bQH6J+3Pzpf+l6HimYtF+gMvDLIz0I
    HD1K2z75Ne6WlPKh8Is4lty1+knbOIDLqCSgFWcU1hAkj+Yr//oqUTlJ9qIrghoj
    L4w7QdMHGb7jMMLL/VHg+MXnQliD/UFAk9oF+/UbTfQwsanJXaydby0yjmXecyMo
    X20orSA/UKJe59Rc7sGOHf7uFoVByqsWQ/yesRmVsjxMNFGNMz1ekKFKHop7xcAj
    8DLYnrvdilD3MuC28USAZjSa2b84+oQJADQL1r+wT1bqWCEUvaIqf64b3Tpt8bIf
    AAMFB/9J9pOfPljyE3D0jy2azVr41mK7FG32FBpz4S1SIeq8DAz9OI+XuCoXd2Ol
    FA6oSepyBxG1Cz2dzhkobE3COPzwS6jRzPdsmZtkJ1Lp/t7w0FSMlOYqNkdD9OCb
    OxraGoL4PfoPgCsH80dY/On7e8COQs6rRPTOmx+FGqkdEaNXVyF8A7EoIUNi881j
    Cn82QjfR4pwFJ4KNeJRt+kBVE2j//VmsqlMcc1xBPzSwcO2YaURhF90qB9ql+bZx
    ENkoYgqdbkQwcPugdKJm4GzaX7OhdGprjH/E7Yj7fFmXhE2VsyQ8heGjKrRHgy/g
    4mTYKTTJnYHSXO+MThJ6JPwcgHxUiEkEGBECAAkFAkamZvMCGwwACgkQM4TrQ4qf
    ROMFAgCfYpxRT6ReISfiSqGLMBQndCh2ol0Anie8hp/BanOvY2jOiUUcfvyhIqrZ
    =bQIC
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.210. Anders Nordby `<anders@FreeBSD.org>`

    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-----

### D.3.211. Michael Nottebrock `<lofi@FreeBSD.org>`

    pub  1024D/6B2974B0 2002-06-06 Michael Nottebrock <michaelnottebrock@gmx.net>
         Key fingerprint = 1079 3C72 0726 F300 B8EC  60F9 5E17 3AF1 6B29 74B0
    uid                            Michael Nottebrock <lofi@freebsd.org>
    uid                            Michael Nottebrock <lofi@tigress.com>
    uid                            Michael Nottebrock <lofi@lofi.dyndns.org>
    uid                            Michael Nottebrock <michaelnottebrock@web.de>
    uid                            Michael Nottebrock <michaelnottebrock@meitner.wh.uni-dortmund.de>
    sub  1024g/EF652E04 2002-06-06 [expires: 2004-06-15]

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    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
    isNkDxI+R1w=
    =LE25
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.212. David O'Brien `<obrien@FreeBSD.org>`

    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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
    lSVmAKDF3kyQAZDAyz+21MQJnmJ2O5dFJg==
    =cMCa
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.213. Philip Paeps `<philip@FreeBSD.org>`

    pub   4096R/C5D34D05 2006-10-22
          Key fingerprint = 356B AE02 4763 F739 2FA2  E438 2649 E628 C5D3 4D05
    uid                  Philip Paeps <philip@paeps.cx>
    uid                  Philip Paeps <philip@nixsys.be>
    uid                  Philip Paeps <philip@fosdem.org>
    uid                  Philip Paeps <philip@freebsd.org>
    uid                  Philip Paeps <philip@pub.telenet.be>
    sub   1024D/035EFC58 2006-10-22 [expires: 2010-10-13]
    sub   2048g/6E5FD7D6 2006-10-22 [expires: 2010-10-14]

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    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
    eAAKCRBfLIShPrYEbQ0wAJ9YALnp+0soJem8hhB7IRisycI+YgCfTnCivHZs7bCI
    e/PY7V/OL4i/nUSIjQQQEQIATQUCRfGDJEYUgAAAAAAOAC8gZmFsY29AbTR4Lm9y
    Z2h0dHA6Ly9mYWxjYWwubmV0L2dwZy8weDAyMUM1QkQyLTB4QzVEMzREMDUuYXNj
    AAoJEKd8S94CHFvSqE0AoMZdrTi08D4+5/lPWx453a+0L/xUAJ98czUXanYtiJaO
    fkfj+5PM5TV+pIi8BBABAgAGBQJF776QAAoJEO2iHpS1ZXFvBvIE/3GKB/i4+m2R
    mBqyxhWShO6Fz7Hj2vmqqsKaKVUp/SYXftXmTDD14IiVxOFl+7riaU/ubGIn0cn8
    dpLVjth+rS04QkS907x9afMBx93Py+Na2fPg/FFlKmEv9+Yl8yMr3omKh6VzgRFF
    tMNRNDA42TZa2cUsRvAGs4GQZ8t9HgI1Janmnl2Ec2EBoESyhgL2uZqfSez51HfA
    l8RtrT+2K2WI9QQQEQIAtQUCRT5aCIcUgAAAAAAQAG5zaWdub3Rlc0BncmVwLmJl
    Imh0dHA6Ly93d3cuZ3JlcC5iZS9ncGcvNDI2NzEwMTNGOTRBMEFCRUI0Q0U5QjZE
    M0RGQzJDNjJBRjc5RDI5RS8zNTZCQUUwMjQ3NjNGNzM5MkZBMkU0MzgyNjQ5RTYy
    OEM1RDM0RDA1LmFzYyImGmh0dHA6Ly93d3cuZ3JlcC5iZS9ncGcvY2VydC1wb2xp
    Y3ktdjIACgkQPfwsYq950p5ImQCeJo41Qrs93qfxYgL+GsMhmoV1phAAoKT2UTKH
    OaxnC4TDwXz67uxbP+0EiQEcBBABAgAGBQJFPLwpAAoJEILS9urEu56fXz0H/jGb
    lglqrcuH1KX12m3OTCWr8exda+NQ9fqaLd42xMHw8l0wEjq1hB14J+vVEQBLqcaP
    NA8YUT6rF5feQwZCSfvTIZtxIYiufXuLPnl8xmNGWMVMjqraSkg6eYlwAHYD//R5
    YgOXuY8byDKM2OyRYwAHSCDGGQyObdxlKBnBTiPskubLgTEKtluAiYRUPlLJOWC6
    TribgLa4o/+1P0fnb+qUOelSE063CX0toVfxZGUptMraSxm8M5AWnYkFHtqSN6/R
    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
    CaqISgQQEQIACgUCRVSzOgMFA3gACgkQXyyEoT62BG3o2QCeP3ANQeCZqkeYOY76
    KBkmb8mvJYgAn282Syns2QBXaRdh32CSowOjVUK2iI0EEBECAE0FAkXxgyVGFIAA
    AAAADgAvIGZhbGNvQG00eC5vcmdodHRwOi8vZmFsY2FsLm5ldC9ncGcvMHgwMjFD
    NUJEMi0weEM1RDM0RDA1LmFzYwAKCRCnfEveAhxb0gWyAJ9Dvb+0THnTnzjpujK4
    6qx3w4GjbgCgk7+1sjtvEacRzzsFXpRB1GtRNmWIvAQQAQIABgUCRe++kgAKCRDt
    oh6UtWVxbx41BP9qnNahfVcdoIUx+SW0qgniCvpkqJe+MEZkW+Uctmc1MHMd0Isf
    mvLwsNJLVSKvbsnWhroGpHKas+L+IQ4/c/InfQ+2cgU2lYueqfJNQeL5KXVWvfuw
    8TsLDO89WNWRaxqPAmh8zmq0g3SMvZeYGHfUoTamCbGIFdP6JTtD/7Jr5u0A/VQ1
    NtHFOnKnyQeLxKiUE6VcqkCrHwZDU0+kNc3RiPUEEBECALUFAkU+WgyHFIAAAAAA
    EABuc2lnbm90ZXNAZ3JlcC5iZSJodHRwOi8vd3d3LmdyZXAuYmUvZ3BnLzQyNjcx
    MDEzRjk0QTBBQkVCNENFOUI2RDNERkMyQzYyQUY3OUQyOUUvMzU2QkFFMDI0NzYz
    RjczOTJGQTJFNDM4MjY0OUU2MjhDNUQzNEQwNS5hc2MiJhpodHRwOi8vd3d3Lmdy
    ZXAuYmUvZ3BnL2NlcnQtcG9saWN5LXYyAAoJED38LGKvedKe8vgAoJUZ/vyqJjh9
    O9J8v3WCn8OuBvUfAJsGpOOA7zm+c1tUK/ThAJ1LA6YPH4kBHAQQAQIABgUCRTy8
    LAAKCRCC0vbqxLuen3zTCACCuWXUoJQqS+pX4CX6gflKWf9Z4aHfHojtaJlo7tPQ
    re3dO2YB+5UpByiYIVNggrk8Im0nHnL4Cwt5OEmWBl1Ux766NH1IuWQWg4wwBOMt
    l4o2NrzdYX23+AZsRlnNQI/r1b9E2HBzDro1Lh1tNkBA61OpGTOm9Mfrd+yARqq8
    GqkSYAcDFtAiMuaYTYaCEjmcCKyehrjiHLXGBUdAL2GMKyqhF1FyQmhLw1WiNeaD
    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
    qbzPvsUENVWdYdL7vCnW1YhGBBMRAgAGBQJFZgjJAAoJEEIUTAYlN20+28YAoJxT
    4tVQ+kVDIMS3XfFa4ZqsqILIAJ4ucGk3wguAbQjHcDgI9fXdNQIyi4hGBBMRAgAG
    BQJF40+5AAoJEIwl7g8NwLfWgtEAoI3j5Qv5s1t7OYxZiI33+HWd9HmlAKCnV3+o
    /xCxpgFeBDUjZllEXq+cl4hGBBMRAgAGBQJF6t/bAAoJEEHcHJByRJcLsqIAmwbZ
    Xr8wBbZvQgmBWux5kHt4PDhvAKCPum9E6jApG6LECojx86ooATSVr4hKBBARAgAK
    BQJFVLM6AwUDeAAKCRBfLIShPrYEbTP/AJ9TPQ2RQd1AUAHKDRnmV3mqxlcLXACf
    TX9rjT4+p5gs2WkJJtr2YPzyws2IjQQQEQIATQUCRfGDJUYUgAAAAAAOAC8gZmFs
    Y29AbTR4Lm9yZ2h0dHA6Ly9mYWxjYWwubmV0L2dwZy8weDAyMUM1QkQyLTB4QzVE
    MzREMDUuYXNjAAoJEKd8S94CHFvSjMwAoJKRUhYm3g3GQc7Ax5Mvie9Mos/cAKCJ
    Ht3BGEU4sXrZQcq46mb8/z/p4Ij1BBARAgC1BQJFPloMhxSAAAAAABAAbnNpZ25v
    dGVzQGdyZXAuYmUiaHR0cDovL3d3dy5ncmVwLmJlL2dwZy80MjY3MTAxM0Y5NEEw
    QUJFQjRDRTlCNkQzREZDMkM2MkFGNzlEMjlFLzM1NkJBRTAyNDc2M0Y3MzkyRkEy
    RTQzODI2NDlFNjI4QzVEMzREMDUuYXNjIiYaaHR0cDovL3d3dy5ncmVwLmJlL2dw
    Zy9jZXJ0LXBvbGljeS12MgAKCRA9/Cxir3nSnia6AJ9WPIdOlKIIwOeSCBx0uYlM
    UM2tQACfQKbqhzbKM8RyO3QXO4XE3CybJ8aJARwEEAECAAYFAkU8vCwACgkQgtL2
    6sS7np+53Af/RSNZhaUC0B+D06crMIfkqfA2c2K6EJatcm9c7mXH5VLXKkkqjH7x
    80wOtDi3GKzZLOwCkwlk6d88eISpx9dBMipxUUlJqYC+a9FMWMaZgcLd7EPuDTuq
    kHfCHQLpPkMDXFIj+XP8T4pt3pdG1a+eoGUdz00KypSz2Fk64ylznd1XHEdexlW/
    I4E1ZAlWEmcLENobjarXiIHzcvJJj9GQXLCxO+b6H9Mew0OBLxcJZJzrurclo7Nh
    Nwh0JSEwkoB7xS6jerfSndbeKg6mJ1fGmmhkyvhe08/zv4ZyzP3rtArBqJq4sPJ3
    zCX/gqqkfm6Q4OMD8scaCCs59x6fdubPT4kBHAQQAQIABgUCRVdNPAAKCRAu1F1m
    YaBz6WyGB/9TroL46iD2Ya35k+/eQVEJzpRtNXZZ6BkSismkWY11psNGiYFyTJuK
    B72s8g+BAij8XmXnywrZYukz7IdHwWa0avkMGQ7kne5ATn2629UTbvQy9/ceStTZ
    mWjqTP1+g2ERDMmXM834cSimbFJBCW1SZllRBqchTBBtSrBLRomBOquEha+wffpe
    mMRG7F7d3ARGFsXG4oWgOV3BiKs+J+PV8ajolC1jDq7Tnrdy+FbOZJunkwdGmvKH
    GU1QnjzZV69+g0dzOif3gKi1gsrirce3YMQTpayINt3DZKdZw9ki3DCrizqTJU5h
    huY/JFlZ8bj4EwWDbXY1Mefy4zwZNp+8iQEcBBABAgAGBQJF40fZAAoJEOjgYvYN
    ywQxp2UH/0x7Yzrj4RAOEVkmBl514m/OqBB2++EftWhCCj+Qpa1diejZKol7/+xY
    d/6q8/2zXTIHoiRKCw1aLfHmy21qoGLdifQnpHwLh0NZxG2Mb4I9TaYO6PiKRilk
    6WrW4AE8s0Lzh+GUK4te+/fWf4kf54hgJkxV+nkdEXJcN1fSixSgrAzyV1pihXgV
    +SpSBu2p9Fs+7LhuQEjUn7eFolkn8aE4IU00f/1z9Hj15fTDWPoqCYZotKiGBfJp
    biEY75UN7Axyw1Ld0I+P609B5ATMevBAhjcqBunV3QaKlX9TEmnJGYflZAHAYPP5
    W0fcOgaSZtl7x4b0QkBDqLkLCfGOpoeJAhwEEAECAAYFAkVErkwACgkQV5MNqwuG
    sGdTpg//YZ1ohVGSZbayvDmade3wApKZCmr4ZCeVX/vMtDzW6g8qIwgfAVrtHA2m
    gitZEn8u3MqWrDL3d4VNNHEunehTfC551Xw+lA4q3+y1y3J8wIJ655c7YpDbBRUF
    W8gaMolIryZZJztW/bljqDCI/cMWqgNY3dZkmGelbrszxYQ75lRAhEou3CC0pF3P
    Y7xtBgqlnoAc/vTVAAqSpWUr4y0rpPc51ZHsiShSJ5WzU+p2ecYLpa/ApnrEK2NF
    G1t1KVwoI+UISA9VoBPeb1ieYF7ECS302fL/j/UfQUaFcU2L4ZKtkorkj2RR/pRn
    bnfTjWACZVuSSIfYmZ1SekDT3lxHZkSallDYkscBJsfGZtYt4MCWO6XbUFtbLram
    xkFS3b2gKpn/imm/uufBUvWJn4/VgM6PFc93hGZQ0tpqQ7EZ9wYwyBoNXJBxpH8H
    5vS8ALQrk2V9uT+n7bxtqGhaFIP3TKfN5tNZFDVmEYbmT0kFZrp7rcnjELwEeUu6
    yqZuhoBZXeuf82Aq03jtm38w3pl89VpgwOtQ7rtSHje3YasJqINruqcWtkQmVUNy
    PbrPMcbsIalOMUVJUGqdhXItYLUFL2qJ+SRpdAMInat5DIS3YFQhiTyCgYJfFlYg
    TlUt0NpT9jIiaGF+ZHdGufa/SpCMWUWzeeve7C5B4mWWbS4BO3WJAhwEEAECAAYF
    AkVFGsMACgkQ8nHgrm5wPZUNxQ/7BXuauRT7oWGsrSNlVLJ1TKuzcC2pG7+ejIwj
    09EHJshAYqAgFSWliMX/5l9VitGkGAXcIghBoYREFUQs4nZuph15nv1BZ2QoOnqg
    0Db/UygnavVBihCoPQV96wqBub6xymztR9rCPQjLK6/j3G4bKUzYybbkSnii/I5c
    XZnsTBH2acP6Ik4Zf4Q2n0uPkXC2Aoe6k5d1pPBPZMZ/tqBgQZdcmTIVxDaaXLl5
    YCYdl/wRMq4JWfbSDSR0cv5siEcG2qrWHXIE9vkgA6YELSElHjoLtkV3Ev4nFL6B
    S4wm2XkzVPTRCjLMyl6UokHEywXd4qqbnVv5XsNmMnxMsCowWCnYXAWElVW1HKzp
    VtichvJh14247Pq6YTfbkfeN2k8PT2KOk3EEJrF6dx2hw5V0NNiZPZ1V7ewV+ET3
    9SDBebGK8ElcCTKZsMewntTK5AksDSoiifSogyI5euf+VpbT+yIS84LbcNUwa/2o
    eRpzSa2mCPKFLF+Ra6J8qt8Wxg+BRQHG1DUzKy4s/zQEfB+4mMgfI9nrjmsLo/BZ
    XAsr1anY8PXKrrGo9JwL8B1pRZreecofhzSkixYNPmpjLYo5quXXRzV2rhwKwBnX
    Pio32pqHtvoPppb0lfyB5yl8pet4pAYAPRXOejxwHdcb8+MqhXQN+CH5o8zFHJYu
    u/KY6KOJAhwEEAECAAYFAkXixEMACgkQUiJTw9cnOYGPGg//asKcYZxGxGgX97F3
    Yyxmeg2x7jEwrq5eRol/GVbVF3erQGzbsT+ApxiOTv53zYl8b7g/Z5ouNtkJgz4/
    rsx3f1S5+YJwcnYaPNSWkg/7eZI8O/tgbd1j2PeOMb/sNhXQNJ5OSwjRuOmU0nr4
    wn9Yo98Ja1Jl67tUvxeaxpU8x5Buuwxg8CRZQSEYe83jjRuzsdJ8FBR/PHEoXqOy
    ndJsDRhIuB6xgwoPMuCokreBWeig1hAZvIIpKmBpanlDzq5J624xH7m0ogcSyIXf
    esHsHsAFcTz/88YILjCuUudPnWAqjA1jlb6wyQAa6uS38DQdTmBmJbV+q2vfFhD4
    D9hqt2nUfVrt9sf/NICy/mX7zXoCsSFiQBeyrEt9jIutKI9d7geZiubpnZwRZcje
    +SfXgwXkluQADC9iVe6BR8Hty+76pM2okqCsS+CGB+hko/nxlaUDI2JVPBUKRBs+
    U2NkvFAFisFh+VUdhHNMhkBnmRzMvIy37/SaVQCczRkxle11jf9Otr6zFH37hzuB
    mgFpP2qJaopIsF3ASVeSDoppG9J8A9nM25PKzlmAwh5b5b32wel6DUA+MLNEf+ZU
    /9EEwmtBnw0dOcVRHGyTO+WnXjAoPHi8Yu4Dkz7PMij/cYlJTZyxjbOuRCa/9ao9
    ++wb5l0DQDoDOHrMCHtgxmmBpJeJAhwEEAECAAYFAkXi/JUACgkQM5YViOHCGEWD
    XxAAigK2dcMPVbM/+VSjcA9zXweY4JZH0kDbbmKH3Vh5d5tZz5ggAnC3ve1wUiCl
    WNUsFN9q9S/4WWEjFKaoIKEJ6vmIUntb6cwyQ/HaeFfTz73d9xIQu/UcA2WnZoSr
    C6zxBEnFQbG5VrV4ATPwzzw8QeDWh48LTG3VybDXFvFxtEZ2/Q76rPMbbd6Gw6sV
    NenIkFRE8QJdA08z4R4BZvUF51tJmjyE6Ajh+ZK10Thv3RH1+j61in2OpniAwvrs
    qiSxS3LOxuLv6x8aJz+J5Bx2nkZ1XHS8cP1GZNUQ8B2sKESxCyd0YEkaAW+YuzSW
    c15oHcvjSPMjvx12dNrKa2IFvmVPWc2KjRNWVJL4mIVFRlf40n0SVRvEuAicqCmg
    hO7BFNP0+qIarsIwLgFVTqsv++Ua28bKSWLYNCVIH2GHc7xXXDLiunf9a7sW5iIP
    FnkCjf5KDLuNnY2V2B/KRQFKFuv93LfuVU8Y0DHdmX8nBCKl6xGfZy4e00P/j+MK
    s2EbqGgigQIDEV5tbtkWiG1GFC7DSIdcBV6q54linphfcA+fZnx6bFAlck7Mdqvr
    233KAosXXIcFiPUrUwmit3GcI+oafpZOz6JEvFRq1MU4NDNvhgLH/sSQDl+AjclR
    c/Df/AzCpIh86qHjKGF1KX419r1sPXeaR5FyKmhUFLpcIoGJAjcEEwECACECGwMC
    HgECF4AFAkrVjSAFCwkIBwMFFQoJCAsFFgIDAQAACgkQJknmKMXTTQUing/+Lblf
    x5Q9E3Vm/XY9FQ9vOPvIbskQozW6vVTQ025En4eHQJ5Dgeeoyuj38/DxY3h2K1fS
    GrkvUOgIgy+N012gpflnHxBmrgcoiJ2+czEZkFkqMNs3fTVS0o35JBCoGcWmov45
    T3g+/feZXiVd/K4qwdIGmHfW/io1C4xGVg0kwA5wZJwjbJ4n9c1yD0uxDIzF7DR2
    id3eylomvgwqpJXUESCJwmqh6VQu1uqrL4OFBTg+Evk1eeT8eUcpYqg1FQK6Qfwk
    4KR+2Vy/G9v/LquOg+GIiwYqJVVMmpt+9oG/5GdeXeZI5sV9TYDW8xINF4UND4fr
    NFzfs91v3z96ne2F5ehK8t6rV55fiqjx/4Earw108TXZr7DKOCK8dJiFS2x8QgWG
    QkJPuXtqRjos6UlqvCN1mNy8IXTClXhOTguBpd2GFz7YnciwsAXbw3gfL6DQSh0U
    Df7H/+reaSn/4sdFgiinMWuibFcpmXKM934VcvdqiUxTyvPZT6zdLLNRPlOhnzxy
    oAVi1MabhGgGHiWLr9Z4m6wIYd/OFX5mEqFxvXRJ7gqm449JJtm6ToPDKKU6TMBj
    z7zMxpeHECmUbTKkvfHwToPzf5RIiYyYlB9ai3j0kDIOAUY3P0zAAKTuHUZqUEKz
    l6zeOSVQetsZNsRJgjeNIpgAzCD53ZHGQFcBFY6JAkAEEwECACoFAkXtt6ojGmh0
    dHA6Ly93d3cuZWxoby5uZXQvY3J5cHRvL3BvbGljeS8ACgkQlXlS1880AanLqg//
    fqsVeJPJfp2FA//a4s5Ai+sSilWuOaHZ3xgmNq7pCF3DWnAT5tFhnUjAxnJb9Cbh
    HuhoYx2BPDEWDrhL1fBoDcW0gNRg5/8gSdz/IElbykKXUjWB/mTtKVDAUKW3Xpdp
    +JZfjkz0aLhYDWSSnS0RI6srHlhi+fEovv8MAIAiY8FD4ToV8m2afK62Hb+eWJlS
    FfIJr5Ydhq3EDG2Gl8FIetYA/UUuige1FhiyvcG49aza6IeteLC/OFzX7VdwLYw0
    MTRVCLOREclVIzwkGPSgtp/RYN2fBn2rQn+fe8QXxbdtW6qq8Jj+75wvnl+hkzJl
    /zSEr04rUT+0o0QTYF6dgzIXkoqxzy/uS0mZhJBOGeEvXlkDQbNnS1DnPSeVMKMm
    4LPck/Bn0rbGoAoxtB7uHXDhHAaWBOuc94XYyqjV4DiY/PbVu8rv4RSHsTlGEnYI
    h5KYM9AJ7koWUjFMK+Oj+AVMuy8AJ7b22byZSc2AAnGeo8dGLZe3ttWHkd3/yIq8
    8+G4+auVD6+O+2gs4cdLkxmYEkoWlMnoCjfcnl6v9gLOek9YCtu9LhAZPFXnhiar
    HF6BYVw18n2gTEnG8QQ75U9EyWYj6PSJOrEUr6okm68CoFgy6KScErL5eW8JKUeH
    CjEa3yJiO5kIa3D5qc/dtS+FDDdudgSzeXcIsQDc3FOIRgQQEQIABgUCRlL7mgAK
    CRAiGMgejnwD/9cIAJ9OFbYDu1ZYgwq3yyMY1etSslNSNQCZATvgqRVLX77Skdvp
    cwbF/dFDLZeIRgQQEQIABgUCRm6AxwAKCRCPqYpv7u1w8zGJAJ96VH1HN36XdzK+
    fUnZZZXMY6M2lQCg3dWoKEatkH5VxaK8MoTSg/zsDDeIRgQQEQIABgUCRpH24wAK
    CRCptvcwuD12HC6ZAKDGSqcb8afNGYCCH4/vjZ7PHhPpFwCg3zhuxS54H4vy02R+
    L83J6dDsaIeIRgQTEQIABgUCRp7w9QAKCRCYYg1FtYEYLFE7AKCShU9RBetlhxp5
    SvN7qp8q7A6/QQCdEaesE7em/L3or45E1nLzcS37TCqIRgQQEQIABgUCRqSyNwAK
    CRCYtF5mZjk0FRMHAKCyXFH8t21KZ29SFHuWnKGqgs5GbgCfZuK60wqkdMYYflL2
    qwhT1+5mokmIRQQQEQIABgUCRqSyTgAKCRCizvCpOtm9p1M9AJ43+CWBqUWrUbLW
    qhk5IRWJs8pDJQCXd8fvnI7Kb+139T7YzW9a4R2DKohGBBIRAgAGBQJG0atyAAoJ
    EElQ4SqycpHykAQAn2XOzEDvnkVIworYUsgkc9aDHwpUAJ9GAHuZ6/DwOFfl9YAY
    iR9yn9HQmIhGBBIRAgAGBQJG1XvXAAoJEPbI6ZxnaB08sVwAoKpUkF2sYhb4Xa9J
    pcNo4JK9ln1+AJ92WhalBpLXFZKcViM3meic+BHr/IhGBBIRAgAGBQJHgnBMAAoJ
    EN56r26UwJx/onIAoMtACA8r4uHBcuZhfdzeN1Jxs5N4AJ0Yrf7FJcj4HQYBgA+M
    NE031wqmlIhGBBIRAgAGBQJHwatNAAoJEBv+MzI42ihH82IAoLe3ch5PwF65KOwd
    ZIIPUvHfkboaAKDDfxx61qphtqEn/3ogpcRxlwAtjYkBHAQQAQIABgUCR8HMtAAK
    CRBXGmKoZj+IK7EqB/kB4V7MznRouTKnauq0Rzk3sNcW5OanggcHZb5RF0o//7Zd
    0cVFeFfzuPTvVama3TYJn4OxEaxl/qbLv8r8SiyyAseZ6p1rRmUDXcEFpdqTZjPC
    M2CVOLFrSyyQLGSzuEPN2JBqbUWFzpyB0rsbmhUeHpnEG0RsFCPNwJoE0k5mEDxA
    X51Bz8koJLSsBOuJPWzYgMMWBiCrqcV5lpPdF1i8K4q428O0slJ3Tq9pAZN+/bhC
    hyuBWaPx137F25w3KKiucHQ8Oo+2fDjRmx4ijWhoVK/ULkukfZOS4NXxguoLa3IF
    skm3nND9jhEBDa2MCM4EpCz5EsO1Dk2DyNQxaoM+iEYEEBECAAYFAkfBoB4ACgkQ
    bMaawmho9B/ZdwCfXPdsDJUNME9VbAyic7USzuyCscgAoLozSq97OfekLyGiquAB
    wHD2Ga6iiEYEEBECAAYFAkfClIEACgkQ7VgcJkMLJle23QCfYiJdp0422CIZY4k7
    yj2Tr35Of2cAn1GrEPdbd8cJ23IWRQJT2riGWVHfiEYEEBECAAYFAkfCFDwACgkQ
    zuQOoGJIuhJDugCgulCyqfySwVGpCNyNwTeAuGKCVy8AoKV72kMN79FuCYAn6osf
    masptCnAiEYEEBECAAYFAkfCr1MACgkQeDVb1KSC7iS3TACgifLVWFNaM6bMs1kq
    IPNa+UEIgA8An3biyA7MXtiqmpR/ZQXqQ6L3RqPAiEYEExECAAYFAkfCquwACgkQ
    O7/Pd72LBQ0GMQCfQ8n2gZ4VFQ4tGqerKJJec/zucI4An1GYb7MJsNFHROMD5rU3
    IihmnrXCiEYEEBECAAYFAkfCwi4ACgkQacIxuZqlam0iPACdETDh4JVh3PIqeNkK
    N6n4rO3BchsAoJ7h/NncNvxmJc2AypKw3f8EcLefiEYEEBECAAYFAkfCpeMACgkQ
    w3ao2vG823Nv+ACfddyqEaSc6ICQyFpfmkyQ7A6GiAoAn1WOT772/dXdGzvQnzUc
    kvqTv7r4iEYEEBECAAYFAkfC2IAACgkQnzel+k2nxUbzOQCcDc6x6ejEqS1/L+mr
    hZp54By/DMgAoLAJKbb1TU+K1ukkgTPKYgBxY1G+iH0EExECAD0FAkfC6ggyGmh0
    dHA6Ly93d3cubmljLW5hYy1wcm9qZWN0Lm9yZy9+YmxhYXAvcG9saWN5Lmh0bWwD
    BQF4AAoJEHLU3/jUw/GXPxwAoIlmDooQx2bABfH2hahBEEYpB5xLAJ9SqZc0UXlU
    w3qCkKHkMSSq/3lkaohGBBARAgAGBQJHwvW2AAoJEGnCOC0E3vRF2eEAoLh/h9ND
    PbXovj1uELtCFSWX2sNfAJ9gsTXkcKwPL6xCyieFOha7ceIDeohGBBARAgAGBQJH
    welaAAoJEFBGfQ4RsA7ovd0AoJsOP7L9ueq7Z4mhjpt6ww/TWAEhAJ0XA6Y5sMgw
    R9OjeY3YEcp97FN8gohGBBARAgAGBQJHwxmaAAoJEJOw1a+ol/0CzZgAnjYhitRl
    7AQ+WuKJSoxKekv4A5hkAJ9DY00LEv0TWqrivHoHkzkVBtnUB4hGBBARAgAGBQJH
    wzHdAAoJECaYpw70IUNLLeMAnRfxBnWRnvY1b2fy+9fUAoIABkdaAJ9Zpk0T77WN
    pSYP1cAhsiCXLt/g94hGBBARAgAGBQJHwzYkAAoJEIgBCUoovLPjaBYAoJxWC9q9
    BrWSchRuBXgWLmjyT0mEAKChK71tOJDqoe/leP3zkgaEJQNpSIhGBBARAgAGBQJH
    w7gJAAoJEGFKaQUp8WoYpkQAoOPSe+7qm2IAdHTZbK+3AeuS9nCcAJ4ntXPWdv42
    raYWvXbRk7LECPM+FIhGBBARAgAGBQJHw0E2AAoJEDJN7vc7jGitQloAnAxthYrK
    QrbmsdYLEybYVKVNL2Q9AKCOWpHh90MliR4QAu1mdyVJBt504ohGBBARAgAGBQJH
    wzrZAAoJECYpDSUgMnn/OnUAn3tJGkgHlBsmozNjBRtDorWByFgWAJoCUuQGESra
    17PEH7x7kUcjPhCtx4hGBBARAgAGBQJHw+wFAAoJED6g+Gt5T518xzwAoJONrQ+w
    I4jPD5OJOnUw2ldu/LfgAKCUJ9/WQv3sS2WJfr1O8g9Vc8ZvyohGBBARAgAGBQJH
    xAl7AAoJEOf/LltjT5ognxwAnjBi7Wt/k4ESK7VKfAalHMyDu7EbAJ43i9XSkEpi
    AnBUk+s0qpGrRKPkpYhGBBARAgAGBQJHxIV0AAoJEC8a0HMpPAX9VhgAn34NMP6N
    g0/Ojj0GGlpZalLKAAYIAJ99C/otwtq2RRU0MOzMqkIOcuDLeYhGBBARAgAGBQJH
    xJQCAAoJEIon6KzS+gXsyaAAn1gJQ1EWsoPgMBW5WkHztlRaQ37wAJ0fK2I8bZ4j
    qXoM4cwRTZVIdWbfGohGBBARAgAGBQJHxJwEAAoJEDK1M0mR4VPF+kYAoJwidQNO
    j1xs7CLUqSnYtMGCxssMAJ9qwZWBrELlkxDtrv3BPuwAEoicKohGBBARAgAGBQJH
    xLZ0AAoJED7gV/+qII2ewsoAoIPxWeXTY0hH4c2DEDbfPe5BCWbfAJ9TWTVJhK+g
    bmQy1I6InBJFcnZrnohGBBARAgAGBQJHxLZ1AAoJENwDuqPTSSoqW1EAni7pbRfa
    Z5NrB6eeg3R1/EgnHzxrAJkBTcuTrwCy7yxhmS6XRdUrXAH6iYhGBBARAgAGBQJH
    weCBAAoJEG/RPdzXzenm2cMAoJ1JXPuQmjru2DgzSCCn6xvISGsGAJ9OpJ6atVH2
    mPkXHAH2D3qFIH8AC4hGBBARAgAGBQJHxdQdAAoJECRixBtY62DIuuoAn2zNf/ud
    XX3iE/LGBeHh3nSheqLxAJ99/l3bvR15wc2CxsnKU09O9uG0iIhGBBARAgAGBQJH
    xc7xAAoJEKlp3XNuqV5nLGsAoLWB9s1ZmQTY9DbD7mhrLQvyaTnGAKCv2FrOHoeP
    ChjwbgxPRmtrx2PrlohGBBARAgAGBQJHxm6gAAoJEAYPKHb84D2qU8kAoI5oXLG3
    Cvtbbu3NOMc01a664krSAKDC8SgHcsVJQgHejt0U9UWW833xhIh6BBMRAgA6BQJH
    xnzeMxpodHRwOi8vd3d3LnNjLWRlbHBoaW4tZXNjaHdlaWxlci5kZS9wZ3AvaW5k
    ZXguaHRtbAAKCRC0deIHurWCKffiAJ9YVDOvUKDJqRR7IoKCWiAu0G2G9wCgz+6v
    mQe/T13CtbfYBy9FDPQiAD+IegQTEQIAOgUCR8Z84jMaaHR0cDovL3d3dy5zYy1k
    ZWxwaGluLWVzY2h3ZWlsZXIuZGUvcGdwL2luZGV4Lmh0bWwACgkQlI/WoOEPUC5D
    qgCfUrxCgWWEX9Mssq+tmHJKkRitmSwAoI1hPSQ887Ao3TBpKgxPocTr4xEoiEYE
    ExECAAYFAkfCa9sACgkQ7oGSpuRD1tgHCgCcC7KlS1I5bypfqs+0CmgCZxmvmRMA
    n2rbzczuFWz1rOQSNuOmvox312SgiEYEEBECAAYFAkfGrtkACgkQqXWYex+fp+4S
    wQCbBIR4InBaTaIdng9K69WgVuOzu60AoIZF+6qO1Rgq+hFSBKqVJ3KBN/wgiEYE
    EBECAAYFAkfHGhoACgkQjB6yu/0L7eVCXACfRI8dVEI4XtX55ACLo2kJdrir1cAA
    njVx8PGvP9D8pcR3TT9xnMOClgEviEYEEBECAAYFAkfIQu4ACgkQQg3wMOorIo9o
    9QCggzq9gLwGqvlVvzSYIUavfbbDYTMAoJP2zX5PTOLk/oZKVZQR+OwcUHk5iEYE
    EBECAAYFAkfI3osACgkQIJm2TL8VSQvdEgCffjoSu5l2NQElN1t8zP7RNTVEdpcA
    mQEoq+8ltaS54IXNsWW8nnG59CCxiEYEEBECAAYFAkfKwBoACgkQoYVPneVrO06G
    dACfYpKFtg1chx+Z4S27Mwyg+xxseO8Anjh+Q3bU/Qx9R+NPg3L/QIJj+mCliEYE
    EBECAAYFAkfK1m0ACgkQpOKIA4m/fivW8QCgpLNDQJUyFi8lg0VutPgNPgkeU6UA
    n3CPkEQCMXqnYj1IJ7rzGlvSu/5diEYEEBECAAYFAkfPEogACgkQTaUqra5kIYYQ
    1QCgv50w/5GoDQw97Gf8Woitpv+hL08AoNWjZQO1Fd09dXuzxctMKA3oqKHGiEYE
    EBECAAYFAkfPEXYACgkQggFLRsR48HQumQCfQQrId/2yQ6T3TaY+EAZkCB7GTCQA
    oJJB4X8MBC+MUwlXJKJ7H9aGIcOyiEYEEBECAAYFAkfRfpwACgkQHoowUyEn+FpQ
    agCeI8c7M0+mnSE/lG3tYvyRr65d0iAAoKzTC2m5ueDLME0Apc7zxl1wPDqwiEYE
    EBECAAYFAkfTHz8ACgkQYxa2MDWAMuGSfACgxfxxZ26YqlYUgyvjH1ZXKWAEmwAA
    oKFZLT3EzPHMiF9tr8k9zxux1QMGiEYEEBECAAYFAkfVX0YACgkQQUuEI2/szeAh
    iwCffmDhhXq1/uap09uvlfZ3eA6BEyQAoIvLwNLSY0uIEJ4GKH/8ZDkF71sPiEYE
    EBECAAYFAkfZBQYACgkQYdSYB4kLFbKVnACeOurdSjrjAiUNlX4tOV2o5W1IUR8A
    n13Q2oKS/z6EtjMCkOA8+XIaIYQliEYEExECAAYFAkfu5QcACgkQPtVx9OgEjQjb
    iQCg1ixmQUSr98CuQkgUcfoCbWUt7TwAnR23ONHZ7y3/7c/anNAQGFNtwzoZiEYE
    ExECAAYFAkfu54kACgkQuffIhmkXw7n5lACeNu6ozSpYZOELehY+4uNtNJs/BW0A
    oJNkerz13u2jXorj+tBD3OI7xAjbiEYEEBECAAYFAkgLzAMACgkQt1EUCfwV2+xU
    6ACgyXSOrZeFrCi8v6ZaJmkrw12QtdQAoO4Eqp2lfwzJolCiNelK9w1wiEFiiEYE
    EBECAAYFAkgnRpUACgkQIKyzvlFcI41cxwCgt+eYwqiYDmRCcH8qhrLUI4YxggkA
    nRf0yy7r+5W8Zc9ftYIRG7K6SCtPiEYEEBECAAYFAkg7xYsACgkQuz1UtkfqhLRL
    vgCfaj9E7pKeahOV4+2Bmj0Zz+QmJ6AAn0G+HMgd9lPdUp5pscYjg1oO4uMGiEYE
    EBECAAYFAkg8AsAACgkQliza9zvECB98PQCeKDb3DjqNLHngXbvGrclXj9QYv50A
    nRGIcAMoO1MeFqgi4lQGIeyxOzOriEYEEBECAAYFAkhNqc0ACgkQzop515gBbcfF
    ZQCePhIJZVs5RNP8Q7eIxmYGX1D086UAnjd5U62LU6K9/0aTz7tcf6mGmFAviEYE
    EBECAAYFAkhTmeEACgkQPE3owOS0jEiYCQCeILiL7MinlMw3NZMdPoFlwIsDqEcA
    n1ienSN6DSbeOaoTD35F3AV6plBziGsEEBECACsFAkjzqn4FgwHihQAeGmh0dHA6
    Ly93d3cuY2FjZXJ0Lm9yZy9jcHMucGhwAAoJENK7DQFl0P1Ytm0AoIb9UbHqR/HI
    GiPCLst/fXb92KCZAJ0b94WuodGapRtgKGGhCx2pLLEMioicBBABAgAGBQJI+bCO
    AAoJEE1WKCF5BQwR8lED/iYpugTAXsVODkA1MYmr6yRuJWlm+HDnGUqq7vy8t3o4
    1RKLuzRKGBb1oZEn8Ue+Wf7XkJk8UwgZ79WQxSRrI1zplDOXfoxsXOO23CtsibQQ
    8ohWVBEYB8eDzqK090TpJyTt3hkV0Smnpj2uxTh9c4zY0rpye0+j6XsWrcSgTKhH
    iEYEEBECAAYFAkleY8gACgkQzu0fnOK1uKiVsQCgxjpkHvbvlUHQvEY3cZTmB3L4
    4NgAoI2DXnApQ9yEiDfzewG1DYUzHyg3iEYEExECAAYFAklhQJ0ACgkQDRIpbmO4
    1338lQCaArHK6tsAKicxdLf9cWZPm33ezk8Ani2hIbV9UK6eZ/TTyX0IH6N1BvmA
    iEYEEBECAAYFAkmPlzsACgkQvuM9o4Jvd//G7ACfVPGFMLHdELClderpkYCd/7FR
    rqgAn3SAYWrvbAJtL5fuRaWYGOh3gEx7iEYEEBECAAYFAkmPVjsACgkQLH9rOhij
    cP7mrgCghXw0olaPo7L+zE+EJ0gKiEFSuIEAn1X0I0yvqGUozupOGcoBwfgoF4m0
    iEYEExECAAYFAkmPO44ACgkQDQcukyqaucOc7QCgmXwv8Iq/R71vubrYwILbDYqr
    qHMAn3u1iefMyv4PNLZzbj01E9pivdk1iEYEEBECAAYFAkmP/7cACgkQiqNir+ly
    Ms3ydgCglDj9YnASBHeMI7yekYQ++xo0k2oAoKKYxREQsZqEDwcp+611ZQXgU7Fh
    iEYEEBECAAYFAkmP/8AACgkQp99YcnDUTCPKGgCg4NqXGh8fnqZyhoSS2xWpsniO
    4scAn19R5U/FwIscn26uIr4rcHk/6SOTiEYEEBECAAYFAkmP/8wACgkQ4gEcJ5SE
    GX7ACwCdFSK82UQlRjQVn2AQ8SGsV0GZM+AAoJjn2135k85MUFNEpqVxP2K1nmwp
    iEYEEBECAAYFAkmQAIIACgkQL5UVCKrmAi7LAwCgsPYLrpbJ7Ros1AQoH5ee79wd
    bEYAn39vlJtQO2Qol+/1QxYAvQBaY5fSiEYEEBECAAYFAkmQHqIACgkQAxLow12M
    2ntAJACfSiyqm+K88UKgWftEuOXEKhN4VecAmwSlMiPTT+WpjC00f4gm6TK3HYP5
    iEYEEBECAAYFAkmQShIACgkQB2XVbhoM0ILeNgCg7q7pTlC02HsjFaQMz7MVd3Nk
    97MAn1sZnbWVHOuI0kvx6TIsY/k7qjuIiEYEEBECAAYFAkmQWqcACgkQgT/oOnSX
    SCR45gCbB36DTWaN8XpF/jGzJhob1BnkhQcAoNqIcX9AghUyFDforbHZmBQWGr4H
    iEYEEBECAAYFAkmQZJMACgkQaJiCLMjyUvscmQCg1cqNw9mvs3ygmT7eRF8yoU2Q
    lewAoO/gh5AWiflE2413QW1Pg7wUr8oviEYEEBECAAYFAkmQV+kACgkQNC+1OarS
    A7UhbgCgyS/eVhIt0TMczgKt2a00vqLr8hAAniEE722rRRnAOCmPoLooJ4zrVaI5
    iQEcBBABAgAGBQJJkFWOAAoJEIseUF9CCTC0/10IAJwbrVFV/urB1N0r291Q4I/E
    5hGm4aD390s7jlA6G4+h99UwCADyQetpPg/+zM+Y3GRL9cD5lX6gXA9+/kwEPLhn
    yU5KNHCLVQD0feNIHO7UO/uIoFBJaTGWNCbhPvYpk2f3Pnx6APEnoktGRzMuSFYz
    dsRBhLwR8/ABDlQrqH9d7CbLLrzpWs7C3CB3QGUAAsRPX5xckMQ5p3wxTU41aUlD
    ZJ2UrWLeTLUjX+53zznAfcjnfEGBXFwY1sxQgGdr/6DEnOgSx8nM5w7BxuIl6zNR
    sI78U3j587R/7TFFmDkkLHhvtmzSku8u4fXwdkhlFt2UCnRjfIGxtozW/LsVoEGJ
    AhwEEAECAAYFAkmQVaQACgkQnSp2Ia1HtYPcvw//bMgveyraWRevQG56+3UaBQWg
    ly05DOo4dy09MuuWq7N+4Igg+DnanADprWunRhwmUzYTOOJt8zidhS7oyxM8wK2T
    XS+htt8UEFAENZ+5f3Up7MBwqnvTqsoNE231KAvuQD7GPYDUw3+yNGdER+1VqSE9
    ReeKj1qJpXVi6Rh8iMQFogobzIh1r3kZQSYORXserV+19ELxjiYWf96uGGN//qkf
    4LiGA6C52i0jk6xNGqmYJy79YbUbEhfhh1y/y7Qp3s6JVy9jcLRDV3ZUD7hSVMpb
    +1hZRhUQE+zdaPcm8Gqke0fhod/PWFrg4pVQCrbV+hlQJikHms+bjfC/sV4RtqVo
    2xAnNPbPjquTvwnuzPWu4n+fKCd5ZV+5O2Yzl/8HVEmWNriIRbUSu6OYArNlMmB5
    xnIOHFDzFx6NevafCx/S/byTQERjpmLHiCT/+kFbc5Z8u+FfPvRM4zHJHF6CP/j6
    s+hTHtGfvxdUkxvk31SXDfIQ8FlDPVuzpnI+NXDtkJHbrrgV8v1Btt8C+PdV96mD
    57yw8IVFrqiMyFVBNDg69SM7VAa8nRTdQs1vEDRL9nTZd7IcpWsa4bBuMHrEKh9p
    XNkJLstIOjiZ22Snd4JphRPcETu58VyQX6Ngz75LhcTomQKm486sKtqK74D6a881
    /IzaHKuX7VZqftpdJfCJAhwEEAECAAYFAkmQVc4ACgkQEIHZzcEzoLb80A//YqbD
    XLw+0oElZXcYRztAM2Tvbg3s3u/4MC/sH0MW3YfPABA+b8VxbyAviaic4yBdVVKe
    2jBx2Vgo9iJu4p+QzXrTs7rIpsd9vUjGZCjfdr29QwOzyMB0h9qi7AUSIwU25TbV
    B1hseChYCLJSBXW/3BmFs+TsYnBugxPCYMdUDsX0p/TURHOurXczxmuZDyUlnJeI
    gbDGJFymvw7k/4aADNQKoBGLZ2gwtrOPEe6OeG8CQxG+JjW6899bSpBMhB2qHQ80
    xOeY7oxOQiM9/SmAvFNVPZjvnGQNi2htHa47y6MQ63dsXn/Y0hmSiRQeGBkGOBEz
    36iyHtT8XVJEDTR4JCK3tlE0/3k7h3AXskYbwltiHhqRa7poDabj1hSHPAH0Lqc0
    jfq2YFIqVipe42eIz8/x3GLcdc86WG5GeDNSsarW5PnvaTpCnu7YXbxnWBDylm38
    NQB4/rIj/rchgmj2JY+hy3iDaSjXTJbiHwN295vUM4WukEgHRY818NOYr0mxfH6k
    sfGnvD/ofCWd/iWYj0jjE3jMb431WzHxInmbJgkGYBdNm3MF9uW24+ksKb3VoHhN
    UJBt79tloBqrszGt/Uq3Tz9XvWqcr/zxQ0bSaFW/J87+bEQlH7vDqTZsLpMOdopT
    LdipYDgLm4cfZyh3EcGhb7RaP0QKsWs/6mWxgLKIfAQQAQIABgUCSZB0iwAKCRA7
    wxiu+himOdhaAv4sDW747kNNsT30Xn/WNAr4cO90wQg0201j9by8Z6Aqhk3/R6kw
    lpr+OMxzGLCTvUu9sx4Q8Rxe2H7dns9tUQ9kd4WTOy8jk0uVZYK7SrfucwlR1t5w
    Uia5NcjC0j5gkPmJARwEEAECAAYFAkmQdI8ACgkQy3cxP5LvVCWhMQf/e008ShDt
    Mn1V0/w1Slju4yuEwWlaqeEiEafgXwFxMI9zAFRa1dRUREJNWMSM3MOfMvA9rCql
    DGHTkp8hORckenAk8tmwLvJoZzLmG+pAVxcXAkJ9TLFDyAHHVOLY6THlC9gi7ucE
    7EzVn27bjpR1zIY57IorM/UW5pmhPcpAWILbp3cSzH2Ta4dfPKNUKq8nRLD9CQjo
    NAXLXoO4BOQSVtOFOnRiIrezHwzXtiSpzEYMiNEymesVmDyWZjO8ULYRN7HqKkdl
    Q44h/0TRZJSN+caUYQBEgXLcSvRC+ftuQmG9sHqEPKNOyqs5ZxJN+v3zQ0mwJx7B
    DlbNjJjua1zQyIhGBBARAgAGBQJJkHSSAAoJEOAEXXL76tkXF4MAniPpcmJDtp3j
    sBt+t+zGTJOSwE/HAJ0ZGh+LMEX3kYOHDnO9sNK8YuLaWohGBBARAgAGBQJJkH2k
    AAoJEAjs9tTVSxZnlwAAn2chz/8BV6cSV39ACBEJHWE8Y6KnAJ9MQLY+25HOTsjz
    T2flfghjCIWdcohGBBARAgAGBQJJkJ3ZAAoJEBFGQza7bS+gKSQAoL135ddPnfW9
    4esasqQKi3F5iE6uAJ4+PIwsnTZEl5m2k+IqLNA/t4pnfYhGBBARAgAGBQJJkJ7h
    AAoJEDsymJ0A88/ka84An0onL7syenRRy8XmYRAY09lZdiRoAJ0beuW+hAVGVFnx
    d+gvZ4NvzA1mcYkCHAQQAQIABgUCSZCx8gAKCRDe+RQoQEXRmyrRD/4uwtamYGDC
    29RZdXDGtqw54/+rEnyt51C5bNnRLSaNE2EEkjOAOsQ2+8NNobXSk36TKb/ukwps
    bp6XuEBAz2esmsWQIK/ZBa7K+dU/RabbXPDfFYYvaSK12X7vOhp3uye9o4Q0Tiuv
    UWUmHs9705WaxrrEMHWj44WxFEty5xWpFBvfM9n3sUD02Rd9nW93FMutgzDXTjve
    Xzbgv+2SKmriojB+1IvqNCkEbPdBTMFATrR4Bha9EstrZOWGrUHUgXp698+gVIVn
    xW/rdOnuv8yPtvfxP3ElhmzuHjuRqhJQHFephEmGIqVY5dixum4s++bRptaletVC
    PIKA7Rir8Bc53qYagbRfHQNrBUhnJstNZ5vjPDFOSwZSTpKIlHVXrNTbrpjsDf8V
    32f9eSCIPwjTrFotq2XJz1w0tKSonHw8cMGAACGn20mqc3fchF34PUewCk8Frr2a
    TRvSrLqGONnO2fAc+cs00mUraB4N233BI1BVvbykD3MR9AGwRKaWT8cFhiE+qblf
    vDklmEkUzUPSiuWqvyJUXT46fDnO8KXsQoEbgkJV0HfKwhvrfCi6u8B8JW0nfb2v
    l33wsUHp5A4U19lDWU3UtmNKUybl9VoeX0RCzfBmHcgGjuIcm8T9C7XPn1vN5Ep4
    7xKIy+gUN9xE3rTfrO1b3neqVFxHdnCfaYkCHAQQAQIABgUCSZCx9QAKCRDd3znG
    xf5t6wOpEACM8uTx+lDpVURRXe3dB9smEY7gTd57Bcyb4iAiNA/Lhi5DA7JsmMF9
    sNdcEEfUy+hv79/upGC+xsl7t13ua7GQ+zXx02gg/1XlH045OPmW4920Bf3xrXDV
    UdcaXnyeGzd1fO4xW4gjttti1Fi4Ep5vxvWelF7rVGTBBDNvizmjCZTG+ytlEKkA
    wU6r//0fV3GQgnZmFKL+22Cgu0D2q3uCP3VZiDO3y4Kh4QSmGLNFL5zU0JhgxXaX
    8gnsg2g3vi5fonvGWwNxnS1169wY2vFl2a01qZiJb2wmLpe/jmocOipgyb8yirf5
    W6jcfz79sofgasmRdFoLFgWJn7Hb2Nl8Wm0qJTdEBbolr026P2Xp+5dALFvye0Ut
    DMGsXecF1GfOcZ8r88N4trFnzpyaL53Nl2jBKU3buoXQX0bzODYsaeFLSsEZNwNf
    06lTUuCOOAUwiheQb25eyeJo8UPyqc/f9MPnwJAnHppmGg5kFTtgfYledjkdUIAD
    KbF+jRtD4kCqIxSL/OzR5wR4X4257QeVp6W9P4sc137xQUgCq3KHQGaCaGWkW0Vp
    RB9NLBWlUN0FwzffPyRclB0re9PymBVhthbwiFSHuzbsRVSNgJ2gUDXyt2JEZVyb
    kE4UTKNpREK1S8fbJHXTRclrY4doIv4jg3+V1S4b8Gr7nLPxVX7u3IhGBBARAgAG
    BQJJkMHUAAoJEMCeHYmVkw7eki8Ani5GUZ5GEJstJGB0rowq9BEp/xVLAJ9/gjcR
    UACXnnogDZFZaeEsCGsGlYhGBBARAgAGBQJJkMHwAAoJEAQEa4VKLhYrMLkAoJ0h
    b6gsdYl1NEyWM59PEiORZZcsAJ0ZVMrEiF0kkT/vIqSrYZ782/RmbohGBBARAgAG
    BQJJkTz6AAoJEMgmU/O0xT7oKToAoJ9UKjF9k00VBeWQsu+Gnrn3dNyRAKC5dIzX
    AmPy38ik9cAotJ1m6OM3uohGBBARAgAGBQJJkW0hAAoJEHz1R0jaFAam86EAn2mV
    9RhsAvfo9KYg6TN7ByfHteRQAJ0ak3s7PE28A1tTjCcn3TmVN+uGAohGBBARAgAG
    BQJJkWmrAAoJEIiM4eQuL/QcjRkAniTEYO1s1sqmFJt7GCY2Cc4ljWEvAJ9EGQHP
    5Dk6I42QIcikWcWmoYr34IkCHAQQAQIABgUCSZIDSQAKCRDngszygD8mhRStD/9O
    7ctEasgGek3VCgsUmrkmgMAEJ8xoQBygqfyx0oUU3+emc8pDECslRUBgTl9wa1fM
    QvanQ+WjGbbmT0dqbsrglSCdBtMHoHpD/b8756twYNfHTGdYOoF3+tUHLTDZRrjS
    7c5w4wssuSi9yccJpqIcithbEdUjWRFY69QRVvxjAII1qDZW6SB5ykpjpwwVGkW0
    wWgAkpynOSap4XTJWxs8EZqH+6v/9msX6A9v9+0Waq4tB8VXxf4CG8+J5KhwWjaX
    S4tBhvRoxcIlMPkzP0SAyYGStg/tzPsP5FFdJNjKjxTgwpGYpt3IO/JdL6dvkqHB
    rOK267wX/2hQsy2obJqFAvjlRMPzd67greDmyKZHMxADgHwZK276Njm/AmKJa+ij
    qUqDkwkFP80qdpNUlBzgwc2smAsAnxkwAZsJON/ZkfYxe5K1v4Ev9dAx2x3VQbfj
    pAFEbTE7AteZ+3Tf8s4FiT2w/3ASNunoLZIc/2uO5hcOr4nKsb2aSajhu2GkK853
    FCy+EyDHKyXGYNI9UyS0G8p/SRPXpO2qXVRkVUtUoAtsqcq5vSxIO+m7RFfiLKTe
    66aa1h+l86M/Fvz0kRjzk15l0+RGgqjhCKOk0QLQA7C/igKNONGyxxGn1Fnmg528
    5zIMrkfzqYTf0UscIAJ5InUx/botlxxkTFHex7ch7YhGBBARAgAGBQJJkf++AAoJ
    EMQj1y0zHlzXdJ4AnRpGZWSsciVzaWGaY21cfmhjb5I2AKDHRURdGBUVb2vqrDqz
    7B78E7V4rohGBBARAgAGBQJJkcmzAAoJEGk9gwx7YoW3lgcAoIjRDQu2BNbMPCYE
    P3WkloDaCL3QAJ4o8ENbN3ns+WuWiBaLY0D4WRj42IhGBBARAgAGBQJJkpkbAAoJ
    EPsT4t1cqOknPn8AniEg5I37X5UUiSM90NETsRb2DZ9NAJ4mtkOK7JfOcyJevHYZ
    7tb3rM50iohGBBARAgAGBQJJk1afAAoJEO3x30LzMSi5FBMAn2z3qQmi7/NvPa9f
    XxoRqfOrRNBXAJwLCA2hIFvDwz4THpqV01LlFsPIS4hGBBMRAgAGBQJJlqlCAAoJ
    EFiCvj3vbcIaPbIAnRrZujnB3YWhc7RveChkz2Y+RgGjAKC/L+7Qrw2tXjEI8YCB
    x/jU/PjiKYiUBBIRAgBUBQJJl9vRJppodHRwOi8vcGluZGFyb3RzLnhzNGFsbC5u
    bC9wb2xpY3kudHh0JhpodHRwOi8vcGluZGFyb3RzLnhzNGFsbC5ubC9wb2xpY3ku
    dHh0AAoJEDrW+BGDAMwCVn0An2P7yLXjMxN32c8i38RzvmROM+PoAJ9wWZgjeDpp
    KMSCbEjAankGs5oofIhGBBARAgAGBQJJmHLYAAoJEAnizUlE5svNG+oAn1i0MJm1
    In9uC5ZzazT2vBKEWSS9AJ9v4ZfB5msEnGJJX14jFaFpPAEAXYhGBBARAgAGBQJJ
    l014AAoJEHm0KcCDVmNZlZQAn21Sl+2JM2/W7J/cNsEwIXAB9sNiAJ42x4jav9KR
    YZ+DeJ/jPMw+Ko+/7ohGBBARAgAGBQJJlszqAAoJENXJt1HEZTInDHgAmwdbgJuJ
    MIJgiFzX2MMBx/bKTxgqAJwImhBVj9vodb2WEddxqgoLUfH/NohGBBARAgAGBQJJ
    mDqPAAoJENXJt1HEZTInpzcAnRhS//BPOvPXTl1EgUYY7vrQGVg2AKCWyQhiKkbp
    zpzVA6iOnurSynT1rIhGBBARAgAGBQJJmcQ9AAoJEC3OPyg21OT1W1MAnRuZgQ2Q
    fh5Ij2W5KjE2BT9bsQwwAJ9jGsqUhZu0gEnQtMEXnLTVqXODq4hGBBARAgAGBQJJ
    myAmAAoJEAmB22b4lOTI/SgAoJxL5EteXp9jvIg6pGBPzMQhF2zXAJ9h009+U+YW
    as7azm7S+Z0Bq9dWh4hGBBARAgAGBQJJmzLPAAoJEErbH4hriFRDEoYAoLl0H+qv
    djR1cnfCI3pJDq6trWS8AJ9FkP9Dcj7B13LEDUEskaXzcqT4XYhGBBARAgAGBQJJ
    nXgTAAoJECdA0PghelxmeJcAnA5/3Q6r6Eas4ESOAC86XtcVeQTAAKCX5DNQfnwF
    SmlRLhRRZaeGg32hYIhGBBARAgAGBQJJncLaAAoJELx0PKzWXp6U17sAn2M5mJLv
    ttDrCnYBPVjtMIwuhNh0AKCHpKxyonNWXkab/7TeRGvTcl4HJYhGBBARAgAGBQJJ
    lJraAAoJEJA1w39wJAf32QgAn0Egia/f52PMfVWvTss8t7Ht8uCcAJ4/GYK7Qyg3
    +MTQA7JTcO/D0w66G4hGBBARAgAGBQJJnzLEAAoJEIHn1YY4GYVO5tYAnj6HMv8w
    EOXqfRYuEl+R1985jL2uAJsE33yMF61J2VwRZBVfYu7G0HVH3okCVwQSAQIAQQUC
    Sawk3zoaaHR0cDovL3d3dy5kYjN5ZGguZGUvfmRhbmllbC9ncGctY2VydC1wb2xp
    Y3ktMjAwOTAyMTQudHh0AAoJEN7qu9S7MM41GtAQAIbux/zjagmBNSxgHjJ8jAmx
    tpaDyfZMGFZVoV5GPLLWwok5XP+kHfdpMRYMQoJIjr791v0gb4r8tt0KOUa1QnOy
    KoY4TEv73AfKrlHjNBv5+aSqUt+uZYGxYTZlbeq7gJ+zn/YTMoNWTua5gOKpkDyB
    oAShqhYH6rzPCsnltdN7BORwi5HIfb+wMOAAk1Om1RuxP0YdZIp7xoqmGQ8lHCd7
    cfADseXwBVQsqOv/egHXjjGH4eGxQlA2ghdv/th1UWvKqxtpikvOzgbgURRBsiHn
    Hf9h3EJClwV4G3T+sAmtWT+v2M0ZsSWdJ3SM2fxDApOjKzMRcKQzo66FT9LXcHDN
    2qAbVrQU4Qr2Ow/1LGHl3rCkpDDzrNIEfu+TLwAwLuL+uSP4xBZuEfa25aHwWAOp
    XNTsuu9NXcrPeWzvLih92hSVdkFerkdBnlOVzip/VG5BCPXJoLAeVG7aNZJ12WV4
    OLWYYi8D0lZO/aJBItC4LQYdzgfsU0xSpQB/ksvk1ZnioUhGMNtl3FlNIt5ElcKL
    2SsaWXrfAnkpp9acZPg9ZvDY8cRnhWI4v0hra12FjxjRToCB4baGhMokewRd6J5J
    6ig2vKybO+k/z7BJuDzYCeDPLypos8sOx1ZHEsVC6D1032KM3TUJuiLDeXbZCgiO
    edpOcMd9hu/rjWrhbI0miEYEEBECAAYFAkm0NP8ACgkQdkeBByM7nqATygCfZZzz
    dqCrx86BZTCqEbJJLBhDE8cAn2/DDBqAMbp3oB9AUnzqKfZKVVMYiF4EEBEIAAYF
    AknA/T4ACgkQv92vIFfdlZfAsQD9GrHRE57eU2nUTu579aZeuCMfUqosblq36W5t
    L8JnsgEBAIqNiK1WFuNUSWkomYMZjI0SsRK0qgKHI/03ZfKatouhiEYEEBECAAYF
    AkmQjm4ACgkQnfxiFjIAu8ffdACfcRdszB9AoxA0tlZqTY7kHU8SwgYAoKmWuhaf
    hKcAPCG/4FMVTok1AhgiiEYEEhECAAYFAkn9FsoACgkQEEWdBN+gpNRfQwCgijL7
    cpIrbrQRnhPTz928kjWwRVEAnjNWtK/JS0iazD1xuLAUYAb7Y9N8iEYEEBECAAYF
    AkoE7ycACgkQ02Iyke0KdU0pCACgqpob0xZMAsiF7AULH1sZaNlum34An0TZMR1y
    QyoLjEdsdH2l2SpkFZUMiEYEExECAAYFAkoE9BcACgkQldnAQVacBciu5ACgnR5l
    wZDTEJEcNXQ4gyOXD+hnFr4AoINjl/cSWKKhNchkL6VXCuX6HgvIiEYEEBECAAYF
    AkoMU6UACgkQtA9uJlKbngSmMQCfd7wKp5bUR8zdHTGKAvtd9V7qj18AnAiqNS9H
    iXtgl9Fk27aVrmZLv749iQIcBBABAgAGBQJKDFPNAAoJEJj+n72lJOQGdRYP/2eI
    3Dj/r1ynwBTK3KPc388rNvwibt250lblk0B6J6WOLG+/ZYk8ckZP8uiGV86aRwCG
    qTJGrasDYPkSlgVvPCgJ8gHN2npWluRZGWZFlRSgxoq6sCLDbedcJXu7q7r/Dt3d
    k/O8lkKPWuGEb2bJg2Zdjb9XJoB0QvEMZ7sUiJlMUAmZH3Xh3YQEy4ewesonDDJR
    kHtuWOvGoGIl3Av9s7z9K7O4s+Mz3FI1MRwasB+bmmckBPqD5+u1Jqrqq6rO0eKa
    cIfuDMHMvZ0DlzD9XcjP90kBGuhmQx8tw6DW1/P0FHThz0nUQva3ZCCJ/VnKbmz/
    p9wuXAA09D8eHe0qgih3WyzzGbwOYkqEoWBhA1deKwuXMW9diXpz2nu0P5MJ2Ept
    ejUIpKjJgiBQ6YfNM5SReNuA62kcqThdYcckJoVdfsP5xbSc/bwv1npvC0t9VmGb
    +savspf+c/j+dWPOP9R0QIhrYVqudHgiI4wGRD+a9dY83t75z0L09hclujk0/rSf
    Rx6qpHlv01R54BJSBawcUrSU1cwrjPXcOKou6LLLTRPLBlCzoO4+QnpWDrFjgoXm
    m5Y7RSQjU7wCxXZr6L7vbkcDCH75C4WlcMEZCYx4Rzfs78hzx/BSSfw4jdA/SFLf
    RtODT7r5kpDVoroUDS5LcV7sYfb96mihYW1AMdIPiEYEEBECAAYFAkmR+soACgkQ
    AlYAh8azrv9FhgCgiPNKfIJtzIsCZU2vXZt5+qlpRNAAn1kmSGRQjab+0IiOAVd1
    eM/lftd0iEYEEBECAAYFAkrRyoQACgkQE6yPd32YBRMpbACfdc0uAuB7uUGEUu8B
    VIqpiVNo5AMAniWBzOHNVrW+SYwdf3DibQpDIEDkiQI2BBMBAgAgAhsDBgsJCAcD
    AgQVAggDBBYCAwECHgECF4AFAkU785MACgkQJknmKMXTTQUTPBAAuoXbG2AnDlaB
    pM/Y+Qzy1QWMWv+eOIix8rvdReNKnT8UO4rJI5q06MihTsvWbP+dt5fbMHO/3hXH
    dXQySMwbrGLEVpTHUZZG53aUmDIB1W6A6BGiaswNNQD+oSS+OGUP2zw5X2wJXgdZ
    0fYezWTmovsEPq9JsknwyoJ+M+UcFWwU6mbgmh80gJJtu+hPU6y6g+m2cheC4wVm
    5Ds0+YEwdKSN0IJel4YCxjLpKTI7v4Vx6r2AUv3FHrR4aeyBxUAH1rhoRD26WMK3
    /90qF/J/U0wCeD9QDwykiiykeJsl/Ga2WFE/anjW9arko03rJgLUN1WTxBCPNn/e
    oxw1WJwyTh5YvUAmk/VpY56HCekiym3CSLu7E8WeCw05I95HziSJfaWQQTaJFURb
    uvU7UTH31h0XhxKNZgoVwEenDI8e3kE7achjX378hCXMddZ5KajRYkoq9i6wBT0+
    VxJ3axZuORrePVKpoFW/ZJ3RlPeG0RZob7DBtbD2sQuB7Stn5G56mjLRAgKR7D+j
    SK1NPe9ysWzlAxAlStSDn3Y+6vR7/HY6+NC6ZZMplD86UHl8RD24cFOC8UmiZtH5
    V0rBfCgQOxw9XasK+SogO1q8BTlx9MxqTW1lLXYa4emxky1AXDIbJ+JqNCHoL8fN
    ZrGWX5ne06mjbzJ+QEicd4B3OM5FABW0IVBoaWxpcCBQYWVwcyA8cGhpbGlwQGZy
    ZWVic2Qub3JnPohGBBARAgAGBQJFO/SyAAoJEL9L0OYEnbh5ps0AmgMhJPelx6WH
    V72N46WCC43XIm7MAKDikRkiD3Rt5Z6PZzJmt4Wla71ER4hGBBARAgAGBQJFPHEB
    AAoJEKsvWlsVJWmQwU0AoIYomK0PaheEjeSwtw+J9+ZjXZBGAJ9MYFzMSPB2MdnD
    cyUJWtJOXIaS64hGBBARAgAGBQJFPHIOAAoJENuE1HYSbUfAaL0Anisr65gIUkQn
    PYYWRk5JTjbeGxuoAJ9uEl4Iw7H3TY47eL67WYNS7Q/Zj4hGBBARAgAGBQJFPI+Z
    AAoJECakfGr+bYUP+RoAoPVgECssn+DTZ4OPkoKb2XxjOUZ0AJ9G8a88p5YW8F7A
    hCYwnfeFp9uK4ohGBBARAgAGBQJFPKjmAAoJEFZBJvIp8ZvRo8gAniAliFYCkuuD
    aGnBLcgzR1NAzFlDAJ9lmE/IHXxQvlxXlSNh2cl1Aab2vIhGBBARAgAGBQJFPLNZ
    AAoJENdZXTdLcpYlew4AoJ0D5XAIiPKqxK+3oHQn0kq78moKAKC9pABTH/DhPrkc
    /yJcIEPfVm9Ie4hGBBARAgAGBQJFPPEtAAoJEGjhJSt9pcU7JoAAn23Ge1ptrTEK
    S+myDVEcbX/GoJvpAKDakWxy6YASTvfNpn4sXi83izk6jYhGBBARAgAGBQJFPPe0
    AAoJEHPeaYzHFAWi3BcAoIJyi4C9Uv2lUNN05/KKpAEsd4/EAJ4vjgqqGT9HFUQc
    q129w/aV4VMxNIhGBBARAgAGBQJFPSglAAoJEAbypSJtCNehMgkAmwUifkrk+gp0
    Szv/kAedb8zkO6iXAKCzNZh/VOmwnzoUpyq0nCHLIm8984hGBBARAgAGBQJFPecX
    AAoJEKrPs4YhG27vnAUAoOlr+0g7Kv36yvUq7YTuiqeLfoigAJ0TCorQ8dWSpIF5
    iwdFkv2nG+BSZIhGBBARAgAGBQJFPhw/AAoJEKkX6cyZbhRe2O8An3XP1tMdNicl
    hU4fDCGnokj2I76UAKCNioU8yKbIIxZFja3P1mEAitzB7YhGBBARAgAGBQJFPk8K
    AAoJEC+VFQiq5gIu/0oAnRSXSjlHGSIHKheXEpDZXAV1fJUtAJ9gaP6ekTyXIVYw
    E0q84bYzC8BpuIhGBBARAgAGBQJFP9EiAAoJEJRq0wuHLLoELH0AmwUfeOqKIyim
    BOZGE3xwUenCtkBGAJoD7sR7/rHhR1lZBcsRBbOsQyeTkohGBBARAgAGBQJFQGdT
    AAoJELcooz9Fd1H3MnIAnjmg5pi5CV4lQYVH8Mcotdkwm+qdAJ0WFLmRMApRAsQ9
    ikCnyM2xhswnR4hGBBARAgAGBQJFQm+PAAoJEAYGnPKWlFfwKoUAmgIbHMYLZ3ps
    x1/oHXHtYPXs3w36AJ9B+yuQSsOZykKJXUA6GMgjbVcIOYhGBBARAgAGBQJFQnYH
    AAoJECXSjMWVfVjPZpcAn0FCGC3PBCs/jwPpboWOnWAlzqIXAJ9mNHe6hj9Nhz3F
    8brm+lJ5lX/Yu4hGBBARAgAGBQJFQ4XBAAoJEGx2F4yg7ZgtIiIAoIcJEhmhRHCf
    T3yNQUdQVSWJeOxzAJ4qLMInKuzJ8+WzVDEybfHBRSOMsIhGBBARAgAGBQJFRb//
    AAoJELPOLSM6q/mSlqEAnjj7/ftn7rWTdg0NhSNfxO2DUKHvAJ9BeB+EttEYqNu+
    KuHkY7ti2pgHb4hGBBARAgAGBQJFRhogAAoJEMo5dFnlGy6R9YIAnir1RKr6DZiZ
    zJLsyoJhoJjGL2w7AJ9hCLPvc4Nr4CTolP718VsW5UTRjohGBBARAgAGBQJFRiJO
    AAoJEKBP+xt9yunTux4AnA8zmY2Cf9EyqaFvz6rl0rQ0EL1AAJoC3LHuiSrcZjzf
    M4Kpj9cFSj0W8YhGBBARAgAGBQJFR4KnAAoJEJfO5hKrjj7VjFoAn1Ll51aQ43gf
    s4/igm0/hy/Gm7fwAJ9lsTSEDaJ9QJmXbQA8M0vVOYPOrohGBBARAgAGBQJFSa3g
    AAoJEFmm5/To7k54yN4AmwZ+xZQJ2UYTOPq5HF9x8XHmqpOJAJ4thUecVzyu78pR
    aMyQvvfC5OX/OohGBBARAgAGBQJFSxxMAAoJEKwhViahIYdXiE8AnRIMZay1w+Ot
    FGB5pK54tuA7ZVEHAJ4rnc/LGOrrDGsW9v8J/GxdQPGwMohGBBARAgAGBQJFVGbt
    AAoJENjKeKUexWvsptwAoLEJhj9GHeysaILjr5+5an0zzVeYAJ936msahLKAE9v9
    pUd4g7xNtzAb2YhGBBARAgAGBQJFVdoQAAoJEBaK712xKT80I1MAoM4e7OvLus6o
    X4oym415VOAMnA/CAJ4le4HN170BbQDiJgEGUEQYDcZBCYhGBBARAgAGBQJFVhw+
    AAoJEBypWmNWsMoILd0An2kt5ur+YpCpdZyr0G+AJa43JjA4AKCEGjt2nI2Wtd55
    tGnfaEUWujBGmIhGBBARAgAGBQJFVxuHAAoJEBXWiATKbN+yrPsAoJLfii0gmT4e
    ZT5qvIgif8OYwe9sAJ4jNU8si6sRinuJkR9oEwP+GCdrSIhGBBARAgAGBQJFVxue
    AAoJEDDUOm5k6+Igh1oAn2a2TFDZ3Si1CITcl0eLEZvQTGnoAJ4z26b44lk+w7J/
    iHF/A1qeyxQSoohGBBARAgAGBQJFVyq2AAoJEL/kOH5U4nj4GZoAoIn/14eXwFq6
    XM0cO+EA0mMEjuV8AJ0YXJ+/LS1NPCId3LGv33jX3xUjXohGBBARAgAGBQJFV0kb
    AAoJEF2Oi+nyOBrUihQAoKHHMuBCKsDKp4VIdIdCvYc2LdkvAJ9UP+iAv/KL8GPu
    uXuK5jbhAIoT3YhGBBARAgAGBQJFV0nTAAoJEE+xyIscE5vFW4AAn2QS6p76phP3
    UPUMY9jRgUWugl6LAJ98fyppHLWBMCm6L7mv00FZFo4/iohGBBARAgAGBQJFV0sK
    AAoJEDMRJG1RR9z0LDQAnjW2Ki9ZGpg15hqJXLAlcgFjxq7rAJ9S3eN+SKCdbwTF
    M0v2FFBlpsWuaIhGBBARAgAGBQJFWhEaAAoJEBRll9zcw5nHrEEAoKbstl3GPrPs
    nQCBPf2us0eRbddMAKCjmKdG9CHqjriypmV5GK0PPmJvP4hGBBARAgAGBQJFWs7g
    AAoJEBdynXf0qFEvkXcAni4Pxzx02havE3vMCo0hNcA/OMwhAKCDuM1nb0sAJVKT
    auCyzMl4t0Ynh4hGBBARAgAGBQJF4ZPJAAoJEJhL04CsX3AMD6IAoMUJqdGrGU8j
    +Qr+95Wb/D8srE2QAKC+ZvPAPxrznlkV0QZbTu4dtpMXJYhGBBARAgAGBQJF4bTF
    AAoJEFAC77GWLjiQ9agAniLpQ5wJiE6B92z/gqMl5xcHo7pwAJ4kuj1I8BAmEFtR
    RhN+k/n8gVlF+YhGBBARAgAGBQJF4d3SAAoJEE1EwCDFwFuuMQoAnRDw0oZsSyTT
    kZiBJcO21J4M6ZtRAKCDtWSTbXEIMr7g9KDxPIycSb5kaYhGBBARAgAGBQJF4eVP
    AAoJECV+3BMl8VmUHlMAoLKlfB2hj13LDLQ1w1yYN4aeThmEAJ4l8Rqb5hH5KsdR
    xHZYyVr0jKFhBYhGBBARAgAGBQJF4enFAAoJEHhn1Tx0eTXdZoYAoI2xogaxu3CX
    7N9FLTjUxYHTR/U6AKDJD1S8m9YtF17dkzqv1C33IpyRhohGBBARAgAGBQJF4e1C
    AAoJEFiD3l2iIpt4rEgAn0V6JT/llmlI9yqxDSrKTWbORtN4AJ9Gt5MN6ifhWe7w
    1dTUHLKJyxkYdIhGBBARAgAGBQJF4fJWAAoJEFUVYHaRYekRXtwAn09wYwWPxZJx
    0fC96dFplNU+jhQrAJ0dsvZRkcfn91zXk+6SaQGr2Cw/u4hGBBARAgAGBQJF4fws
    AAoJEMfZMCWd/6rUncUAn11we8HwCavg0+FKBE/usc0C9IAeAKCkl/j1UrLZX08i
    jQhEcdieqFdin4hGBBARAgAGBQJF4gQlAAoJELOx+BoCeHiAVEsAmgKuI2F6I7Yj
    IKQbGc7Wkzs1J4CmAKCQXRHjmb3lPIa95RKRyYj8gxJ7rIhGBBARAgAGBQJF4hIT
    AAoJEOVE3gebfDKNmDgAoMX6VbfAQp/EWzFsFljuxe9ZLDV/AJ9arKegk8FLJiSJ
    Dw48lwD0KH5eF4hGBBARAgAGBQJF4iIbAAoJEH5OpU/Qq0B1U0AAnA9PT13YursO
    aP3ugVE4WDpEvGzyAJwN0XvT3fMutxQLIU2r/MgcjLRduIhGBBARAgAGBQJF4icT
    AAoJEHZJQAVJruv2f5QAoLnkM98ucJclUU4WId9A6I+SUB2FAJ93StlkOc4zWx3i
    wQD+CE681eo1bYhGBBARAgAGBQJF4i9xAAoJEAZVrBDy2EYvKVYAoKGgUoyeHNoh
    p5NQWaJTs8C0frJNAJ4n0e4BkM6mDvIq8w3FiHgsPiUYg4hGBBARAgAGBQJF4lC7
    AAoJEFuTwC+eSpydTuMAoInOsJ2kHp430xH9pnkuo2BJe92RAJ90rfFciiv/4Pci
    lakO/gA4pz+Y1ohGBBARAgAGBQJF4quRAAoJEAMlcIRNIxPVNX4An2i++y+nAADg
    IvEPHslgOc2DA7U5AJ9wEtBILJGKvBn+4UKCMYWmenqx8IhGBBARAgAGBQJF4sEs
    AAoJEHMcr9NTwaMvtG4An08V38xdya0VksHlNSX8Jux0mEmxAKDbpshbHTVHuOta
    UXnruV4O9GM0B4hGBBARAgAGBQJF4ss/AAoJENoZYjcCOz9PwOUAoJicX9iMEHJ0
    mFpU+i9t+hM8XCcuAJ9j0Px7oknmBnusGQEKZQAKEjJqaohGBBARAgAGBQJF4vBT
    AAoJEItKxIGsHnFeN4UAoIYXNE7paT0D2dRdVcCvdnt0fFoiAJ91Km5omikvhY4v
    YDp2KCnOWkkgjohGBBARAgAGBQJF4wXeAAoJEDACjSRIE7X+qqoAn2jiVI1wXzWm
    hxKVmHyZB66/tsQYAJ4qyhG74WEjzpzWzXaiC+pIWWOu64hGBBARAgAGBQJF4yUZ
    AAoJENOjcASuTRzUUqYAoK6HsqHvwONlUOdgsO40s1iE+UtsAKDe8uT6VvpCiyL1
    Mm3O1QoAtQpLJIhGBBARAgAGBQJF4yu9AAoJEB9/MmoS7vYqYXEAn0ZeoWNea5HS
    /mLhH607gGyllG7KAJ0fe13c7srMRSdbXtzFisR2+EpebYhGBBARAgAGBQJF4y6t
    AAoJEDiaVjzCcqEmS60An1vIUy51RRBNaHFAAuPQ2nS49ERGAJ9iBZ7PTXLTkUBh
    4AmLbdlw4ypo8YhGBBARAgAGBQJF40jQAAoJECGntTuACWnvxuEAn2DsCmzv6vKj
    cz7kLtJEek0No/mQAJ43nBGiyy4WMjxyB+9oNB4Bdwk2r4hGBBARAgAGBQJF40mE
    AAoJECic/8DmPNbWa8MAnAsKLYyLIde4pJ8m+bcNo0HatNhPAJ0ZwWOlm0+YvsJa
    OkAT4BwOz19cDYhGBBARAgAGBQJF41TPAAoJEErbH4hriFRD9hQAoMGHrTsPllkc
    fb90dCHTO9QcpeREAJ9NwBnBQbTWVoJEw3L0WhDRQZWPOohGBBARAgAGBQJF44Rn
    AAoJEM8SNHyWi9WHZyYAn1Myhbni3NIq3YTWarB9LgsxsmTMAJ0VZO5NWErrVfXU
    rYfZCi3wRBVNlohGBBARAgAGBQJF45cyAAoJEDhzTXeHkBRSgasAni4bRYoOEMmE
    jgvHEE1TM8shoWrvAKDCHAIVHhfwFIEELInT99zSEyte34hGBBARAgAGBQJF5KOF
    AAoJEElYlpcbnMLqbpgAoJ1L7rikDwDhN4Bm5213TLaQ3jiHAKCJMxA/u/SJkLvT
    RceM8m0v6Y5ApYhGBBARAgAGBQJF5MAGAAoJEHCyAyE69Z0W/aQAmgK1VXR5G3dI
    7k/H8trYHpsu2CXOAJ9YeB6HnxYvzSWM3pAAELBDM49QZ4hGBBARAgAGBQJF5XYD
    AAoJEHkOjJRh/9qruUkAoIP+RNZrpyRMp+xM2UIgoG8GQ5puAJ9tjDuN/w44fDAV
    A+rfbpZ9fvVKzohGBBARAgAGBQJF5amFAAoJEM6A78SRpwfkz8gAniwNRtbrMMFQ
    yqDtjK/VZuFOoTHzAJ0Tu3FU6zcPpZhypPzC2XDFX1+2dYhGBBARAgAGBQJF6ZYv
    AAoJEBVYlEWZ6B2gjfkAn1las4lmWgjLdXMI7NKtT3oDRU32AKCa7Q0LNI/DK+9f
    G0on2QEbJ6LvE4hGBBARAgAGBQJF6bguAAoJEC5HP/cdc4Q0UHkAn0QF5pSfbYuc
    VQYZNZpT1jiKslvPAJ9H0SVWJyyPOAgADqxhcIca0q36NohGBBARAgAGBQJF7dt5
    AAoJEDBp6SG3moccPwoAniTQX8gL4wz4Zaqq5Jnfz00/mc3MAKCrMgc+ly2HoxuU
    Y0GXsj7zCH8niIhGBBARAgAGBQJF8c/UAAoJEGnSph3iY/zUOpoAoIoZuN/Xg6XV
    n/QtfWBihSmMCcMrAJ9FFj+UUUxGm8bHAdJ/GLGkKBFLgYhGBBARAgAGBQJF9VMn
    AAoJEOpi07Zqq8KhjNQAn12KHpidMLRtFCa0wHcPNzXuG04yAKDcT/38Jjqmeg1m
    dsXcSYxYC3B75IhGBBARAgAGBQJF/zH9AAoJEDqQ/8EUCNfx+4MAnjsWsCtj1hT1
    Jcz6/BQVnXtJ8kjnAKCXH7iZsdsdeuRgle26zybpcR7J94hGBBARAgAGBQJGCjo7
    AAoJEIpncZwt6CezkrkAn2hiE8gC12Xu+JQ/+s03lRRpAid9AJ46gp5be+ylhh4A
    04WuiBMVArxSPIhGBBARAgAGBQJGCokQAAoJED2vVKIe71J2bt0AniknYR++rqDR
    AxQ+rSS4ccbzSLY6AJ9zBe5pIm1qkxIyF/Q380BdH+S22ohGBBARAgAGBQJGT8yx
    AAoJEGBl1TP9wgW5o34AoIN8iRLsA7xPUfFPCO+NEYjRbhScAJ0R94PFOIRUNDld
    nAaIQs0BDweSb4hGBBARAgAGBQJGUgcoAAoJEBXWiATKbN+y8B8AoJ9vK3XGOsMg
    2IrvJii3CpyffTilAKCJOD/q0s1hrUEmQJHhUR+89vVdQIhGBBARAgAGBQJGUm2y
    AAoJEEjJztxXHuSY0/IAmwasJ714gWBEoBor/rdGa61g2LCHAJ459Zkg6XydkIwK
    1oDd6dmCY3q0wIhGBBARAgAGBQJGXE+3AAoJEHHOr6zsoorbucMAniXqgNakMnqA
    jzdEcIbGkgz29NEVAJ9MK9+EyPAmYFg7o6Fig5NpbTTxpYhGBBIRAgAGBQJGUO1u
    AAoJEHkDg6l0ZuZTMNwAn1/HNkhN+dsQHYTsuHkCDQTFq6NLAJ4njYahGGVqwsMP
    2K/iOlOgMZBJRohGBBIRAgAGBQJGUO2sAAoJEAJJTlL82leHZWgAnAjdO8UF6TWP
    g9/zZSbiWFDj2/vDAJ0XJDmb2jQ5RvQtroNsfRFpy7gBxYhGBBIRAgAGBQJGVLZQ
    AAoJEDKI3m16FCTGGekAn3MQdsfk9OZ1+D3ukjTyi06hiKk5AJ91lcg4pJOcU/RR
    jMWFbqeSZl5ugohGBBMRAgAGBQJFPHw+AAoJEO0Yto0WGUVT4bQAmwYRfwPtYpZ+
    vDlvjyAVcKI7dzPWAJ91OcRsHpqTvMTVMWsO5y/BBCeZaIhGBBMRAgAGBQJFPQ5P
    AAoJEDsr5WIUkTiXyyEAn18VbgJvjZYtwoQLyfO07OraUwCVAJ0cGQeZ1EQld64f
    jFtw0yVHeUoyKohGBBMRAgAGBQJFRc7/AAoJEFYhzLq4BaQWR5YAoLEE/29NXreH
    bTL9rRpdgUNZo+qNAJ0Xg5vJxFyd5A4Cnx5X0sDuZWFRn4hGBBMRAgAGBQJFSmQc
    AAoJEKHH3ME0tyRf480AoJjO9sCTuEqKNInuEE1SPXWTh2MRAJ0R+0Xt6IKLywjN
    hp9ecDdc9A8ysIhGBBMRAgAGBQJFV02UAAoJECHFCRYOSnh1QwUAmwWzfh4NtLbi
    D535gTMdPRtzRt1pAJ4tjhvBU0AbQ1kBKtagblyXSfBSbYhGBBMRAgAGBQJFWZnQ
    AAoJEHu7RcYqQ9NMOQYAn2RE1CJcTnZ/QDlWOkOqCNUZnVIHAKCtYT3bM5MUdXqT
    XG6ofB7hL+4abYhGBBMRAgAGBQJFZgjJAAoJEEIUTAYlN20+tIMAoI1sQr27vJjE
    xoiQGwS674X/MwP5AJ0Zj12bSG+EBxCgMCFtvx5C7EEyuIhGBBMRAgAGBQJF40+5
    AAoJEIwl7g8NwLfWE6YAoMPz6GU0qjr+TKlYphjlJKZtHcaKAKCNNgXR/3sHhcc0
    G8z0awGUymF8mohGBBMRAgAGBQJF6t/bAAoJEEHcHJByRJcLjTQAn17ykf+m0+RB
    N2/Uj1UW4M2yL6g3AJ4/hfu8brIfsJ0HMxpeKEtVRvQedohKBBARAgAKBQJFVLM6
    AwUDeAAKCRBfLIShPrYEbaNVAJ9dCSUkmKdSi88RxPKDhen9M1CBYQCdFRhJlyA6
    +pCx6sKas7bv6ZleLAuIjQQQEQIATQUCRfGDJUYUgAAAAAAOAC8gZmFsY29AbTR4
    Lm9yZ2h0dHA6Ly9mYWxjYWwubmV0L2dwZy8weDAyMUM1QkQyLTB4QzVEMzREMDUu
    YXNjAAoJEKd8S94CHFvSVUYAn1VOGjali5cGBQBcO2OXXepNIS10AKCckhrCG4Aa
    BGfhoWdJJuXSEpTCfYicBBABAgAGBQJFVcyrAAoJEB9/qQgDWPy9kLgD/RICpKsH
    41qM1mt6XZeO66AZXjo0O1yB9Nl5XSBPiE+Rs5wDfLMheFbbgAOwhfTvwM4g7eBi
    Lb0U77DP5uCK/8rvsIowhJYmwJaaQrc4SzQuiIHqe22ybUOOcP68NBRozASuecg2
    3hlmcNNvHz0I6ImX5Ql0QpgT5RYSxupejuoPiLwEEAECAAYFAkXvvpMACgkQ7aIe
    lLVlcW9PAgT/cYFUQ3RsdPPpidzqp03htsyx4Rj91ugKmMSQ3uciUKmOdpJfAr9P
    jE4eQEMg/q1KHOxLGlOHjpYdlNgGOsEZHXIGyNFbKdCy6iPb3/uhfEWXcKVMEkr2
    uKN9bgQ3xMHR3LnmqIwr8/f72yYXx0MXYN5TfsDdG2gnlfCAjmWeZDhdoBRwOnEd
    C2I6Eh2QKClbgGSu53V/SSskplrypMn/voj1BBARAgC1BQJFPloMhxSAAAAAABAA
    bnNpZ25vdGVzQGdyZXAuYmUiaHR0cDovL3d3dy5ncmVwLmJlL2dwZy80MjY3MTAx
    M0Y5NEEwQUJFQjRDRTlCNkQzREZDMkM2MkFGNzlEMjlFLzM1NkJBRTAyNDc2M0Y3
    MzkyRkEyRTQzODI2NDlFNjI4QzVEMzREMDUuYXNjIiYaaHR0cDovL3d3dy5ncmVw
    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
    EQIABgUCR8S2dQAKCRDcA7qj00kqKlewAJoCC3rgsmwEK4u2/k/66b/sKp01wgCf
    eto3a4CrlbxI5PUJej0XGQbB74OIRgQQEQIABgUCR8HggQAKCRBv0T3c183p5phH
    AJ9Qajibu0wTHAbHvHtK6jhEkGb+uQCfcmP/5yDn3Wa99HYXQBoMTNDBpNKIRgQQ
    EQIABgUCR8XO8QAKCRCpad1zbqleZw3WAKCV6d2WEcFNpCrggwL+27U3H+x58ACf
    WmCd9gq8K1379WKdttvZtCySSk6IRgQQEQIABgUCR8XUHQAKCRAkYsQbWOtgyJQM
    AKCTRpumrjYIU6QxQ7z0SzPPt7AVUgCfdcGigrbHjM5K3dTnQ7NrDVltrMKIegQT
    EQIAOgUCR8Z83jMaaHR0cDovL3d3dy5zYy1kZWxwaGluLWVzY2h3ZWlsZXIuZGUv
    cGdwL2luZGV4Lmh0bWwACgkQtHXiB7q1gikdFwCgmZwxkmZlYMxO3HTJUQomUDAJ
    +tsAoN/qhgg3KTyScNnXvsTViUTF94AKiHoEExECADoFAkfGfOIzGmh0dHA6Ly93
    d3cuc2MtZGVscGhpbi1lc2Nod2VpbGVyLmRlL3BncC9pbmRleC5odG1sAAoJEJSP
    1qDhD1Au2+gAoNpTUJViDdPp8XP8uamUOOcQz+ktAKCZchyzmqZgF1kFvodaHr8J
    YV+5EYhGBBARAgAGBQJHxm6gAAoJEAYPKHb84D2qyRwAoIAtk8cWu+A9EeDjf5Nb
    QuRjw2a1AJ9GViwE17o8bUT4umpIS4a4X6Eo8YhGBBMRAgAGBQJHwmvbAAoJEO6B
    kqbkQ9bYOW4An0ynogoRYRLFhUtJQruoaocljCCMAKCg5fWJhrYrl5m16aWPda0B
    TOBD1IhGBBARAgAGBQJHxq7ZAAoJEKl1mHsfn6fueJIAoMh+sxaKN8jeFISIT2+W
    znabHnm3AJ4+LHQnxbE0+kEgEcFzPcgOP5N9h4hGBBARAgAGBQJHxxoaAAoJEIwe
    srv9C+3lOfEAnjbXpwZzFpL6RX/I2m0dm0I+3v9LAJ9bZ+cl0r5mKl51ePjC5jRo
    oNJVyIhGBBARAgAGBQJHyELuAAoJEEIN8DDqKyKPOxUAoIqt1Z3Ax0FSF2ugdctG
    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
    +N1wOTBU7s/iSbT2dmqHbQCgy+wFoFyglknK6Em6cCV9XyMqCWqIlAQSEQIAVAUC
    SZfb0SaaaHR0cDovL3BpbmRhcm90cy54czRhbGwubmwvcG9saWN5LnR4dCYaaHR0
    cDovL3BpbmRhcm90cy54czRhbGwubmwvcG9saWN5LnR4dAAKCRA61vgRgwDMAqYJ
    AKCUe9AkTOK+4n85grnkhkliFYpWRgCdFk/sA4D3La/mQQF+22b0us/93LuIRgQQ
    EQIABgUCSZdNeAAKCRB5tCnAg1ZjWSBeAJ96VEru8vbBK0wu9a6zDlpRdHFZXwCg
    0SP89HegT2PqvO+MGg+u/Q35KqSIRgQQEQIABgUCSZg6jwAKCRDVybdRxGUyJ4al
    AJ9ujFGF+jKHnzotfS/TpJ4DE47qIACaAxj1CMWVK8uBqNsRSpdnBjcCFNCIRgQQ
    EQIABgUCSZnEPQAKCRAtzj8oNtTk9db3AKCAopptnFQ4azphEhFA3jicMwzRZgCf
    epstTTM0FT4DJ1sqM4aQTaNx3d2IRgQQEQIABgUCSZsgJgAKCRAJgdtm+JTkyMEZ
    AJ4tgMWJOK4vxJzR3khy4X23yz/YMgCg3TK+6c4Q3LtrnDkIRoHT1XR5K8KIRgQQ
    EQIABgUCSZsyzwAKCRBK2x+Ia4hUQ02fAKDCCWICugRtfV00EetrGd7sm2B+hQCZ
    Afv46BTUaTA5xEbj4ZXztHtrTvGIRgQQEQIABgUCSZ3C2gAKCRC8dDys1l6elO7D
    AJ99gIp5Pk0j8/hAWz7sYXJuQ+bzHQCdGfAEk0FckcLBbHaabPKTyNk6aiKIRgQQ
    EQIABgUCSZSa2gAKCRCQNcN/cCQH95pUAKDHR7tfF9Ne1eVkRYB36kkNoC4d5ACd
    H+y4zpF5cM3GNfeoxoQpOFMnYF+IRgQQEQIABgUCSZ8yxAAKCRCB59WGOBmFTgRL
    AJ4tcnL5xEJbB4GHqqwOS4ZFOVmE0gCfdZ5gN24aPFkJJkfhyaury/XbWPOJAlcE
    EgECAEEFAkmsJN86Gmh0dHA6Ly93d3cuZGIzeWRoLmRlL35kYW5pZWwvZ3BnLWNl
    cnQtcG9saWN5LTIwMDkwMjE0LnR4dAAKCRDe6rvUuzDONbU+D/90fBcNLxIIVapG
    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
    BX7jXX/o5pj5oavzBgstYfpLrohGBBMRAgAGBQJF6t/bAAoJEEHcHJByRJcLSGYA
    njeLCAj1bYyYa/05jFW/py2NmSFpAKC/v/BkHy1Dr5n12iwv3YDkwskBFIhKBBAR
    AgAKBQJFVLM6AwUDeAAKCRBfLIShPrYEbXH6AJ9ig0i2ffCooj/teQH4+CU/s+Nx
    kgCfQlAfDOKsNZ0t8mDO1n6yuUAKcCSIjQQQEQIATQUCRfGDJUYUgAAAAAAOAC8g
    ZmFsY29AbTR4Lm9yZ2h0dHA6Ly9mYWxjYWwubmV0L2dwZy8weDAyMUM1QkQyLTB4
    QzVEMzREMDUuYXNjAAoJEKd8S94CHFvSXnsAn1x4MXGs5pvzaojpcqE5pdvG5neN
    AKCB6f/sWrWfVcm8PDNNB6mayvVw94i8BBABAgAGBQJF776TAAoJEO2iHpS1ZXFv
    EHME/2id8ZhcpQQ8Go/P5Wu1gWV8cyvPQ+AT2e3Bzqd9tbkH+hSMIt9ubVl3IyQW
    diZzZzVQaUapMirKxFdiQmo+JkrOEs/mcUUVq6XnDy8lJdxCQOz8ZFenUkGQaovN
    uHRQAVvd1GQppK35T7x00lRwu4jhdgiF4GJ2dyV7T8NTN7O2ADEDnXClHyCGB6EW
    y2QsdOtKMckN16UxC4sajo5/VRqI9QQQEQIAtQUCRT5aDIcUgAAAAAAQAG5zaWdu
    b3Rlc0BncmVwLmJlImh0dHA6Ly93d3cuZ3JlcC5iZS9ncGcvNDI2NzEwMTNGOTRB
    MEFCRUI0Q0U5QjZEM0RGQzJDNjJBRjc5RDI5RS8zNTZCQUUwMjQ3NjNGNzM5MkZB
    MkU0MzgyNjQ5RTYyOEM1RDM0RDA1LmFzYyImGmh0dHA6Ly93d3cuZ3JlcC5iZS9n
    cGcvY2VydC1wb2xpY3ktdjIACgkQPfwsYq950p52xgCfXZth5pnHae2J5+Kc2Eoh
    MYzW7X8AniUizIhcHb3zAim3F9zYAj3tGxQXiQEcBBABAgAGBQJFPLwsAAoJEILS
    9urEu56fmYYH/i0vpRRvs0U4yC6mjQTCYCnRRK0F3WXaQaPQpd2qI45KpMnVS23B
    ko/OUPSwlgSIkBkvAaep53EpAMNqbzDjrxYvungQdG5yckxVsuJPCfg/bEW8Eq5u
    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
    =srgn
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.214. Josh Paetzel `<jpaetzel@FreeBSD.org>`

    pub   1024D/27AFAECB 2007-05-11
          Key fingerprint = 8A48 EF36 5E9F 4EDA 5A8C  11B4 26F9 01F1 27AF AECB
    uid                  Josh Paetzel (BSD UNIX) <josh@tcbug.org>
    uid                  Josh Paetzel <josh@rephunter.net>
    uid                  Josh Paetzel <josh@pcbsd.org>
    uid                  Josh Paetzel <jpaetzel@FreeBSD.org>
    sub   2048g/E0F5996B 2007-05-11

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    mQGiBEZE9hsRBACkqO2OV/PrEX21X/cKwTlmq4+K11tFM6WadeGkk7nfuULgIBtU
    vJHUq7SBdquzDwR9uZ+JuqTdRLGP6MvPdCJqGtO2S4IZ/e22Hq+0VIeSQJM17/7f
    ix/l/19TtNXF+/OaNtB7k7CkxtnRlfV0D9lAJjO1+LkcxIUvJYLAztdtdwCgnN4v
    oIgCmu5wpNdsKWa2V3dmtosD/ReV4emDN6bTj9YDzsm1A0jLHCaibnmjjVfBlFlw
    3WgiIr64OAVkv4gVFKhVbLDu62PMGg1KjSnKaX6c6RCyBcSLzorYKT/a/Z7VV0Of
    YbdymuZKzNszwsA+mV0CdW3K4qUTchOljVWKIUkac056bnjUw1DepbknMfRoDPJS
    mBy2A/0ajK+mnTc+dC5ptp62fmw4nbpcusDpPF3FPrq7uKtfHNBpeGT81oZql29n
    I/jC+zL7RXIOs8VqtObKQX4D6cZca5fHrG8J3wZ/WJambOyE+gJOLNn/RPlEVZza
    39EzhNgCnGCQkcxlujLsH1Yo2q+JdKCMplL+O3IGFmjb4M44nrQoSm9zaCBQYWV0
    emVsIChCU0QgVU5JWCkgPGpvc2hAdGNidWcub3JnPohjBBMRAgAjAhsDBgsJCAcD
    AgQVAggDBBYCAwECHgECF4AFAkcePeoCGQEACgkQJvkB8SevrssLagCfeo28bF/M
    de7cKsqxKBnUwUDTUkkAoJNEVeKwMCfnDnZdd21Qfrzkg8TeiGAEExECACAFAkZE
    9hsCGwMGCwkIBwMCBBUCCAMEFgIDAQIeAQIXgAAKCRAm+QHxJ6+uyx45AJ9I2XQ/
    4aNBteK0kP/7PR3YkIBu7wCcCTAYhxzBjjLS6Fk2fAeJipM0NWOIRgQSEQIABgUC
    RuUqGwAKCRAPnmdi+uvqKGR+AKCFvQHf+dGQTyKsUYT74mrinP9xtACgpqbGMAwl
    GkMmFoxlkD2NcruvlFKIRgQSEQIABgUCRuUrywAKCRAxv0+Fl9jktI/cAJ9+WCBm
    zh7ioGmznozLF/TRXJRvQQCg2tfIkAd7pHq/FkG0Dbo+qXf0iUm0IUpvc2ggUGFl
    dHplbCA8am9zaEByZXBodW50ZXIubmV0PohgBBMRAgAgBQJHHP9GAhsDBgsJCAcD
    AgQVAggDBBYCAwECHgECF4AACgkQJvkB8SevrsvRewCeP2+iZT028T2k7jWf4pNg
    sE3FZqIAn1vdtOJr2NZObxZGZLepx1nTAjgvtB1Kb3NoIFBhZXR6ZWwgPGpvc2hA
    cGNic2Qub3JnPohgBBMRAgAgBQJHIss4AhsDBgsJCAcDAgQVAggDBBYCAwECHgEC
    F4AACgkQJvkB8SevrstrUQCdGvsdR0gEl/P/0YrYlIV9mn8dZ3QAn3PApXta/aR8
    33PwOJ21VVMXZSFhtCNKb3NoIFBhZXR6ZWwgPGpwYWV0emVsQEZyZWVCU0Qub3Jn
    PohgBBMRAgAgBQJIwbF2AhsDBgsJCAcDAgQVAggDBBYCAwECHgECF4AACgkQJvkB
    8Sevrsv1fQCeKWLFfeqqRYwxYtaRR8JOGs8JSkQAnR8cpGdIjDp5XNqAxvfep1Rh
    NZVouQINBEZE9h4QCAC7ZkBUrBluZSp8/HOC8Oe9ErEzPygIHQsdQHUSTuAIO9Mr
    jy4MDeQZjU10nTjJrEIjJM7N4sZugWxnV3Z5unkglQlI1mZPb7sziQUTfr7xrp75
    B2ABAVMUltOMQtfvcu/SKzJ7nH7mTkIzGwQeko39YC/tiqYX0TiNwVgMIN4gkoY1
    na/7G5zf3VbJHFoDGkXalhlhhDTGfnO/kGfnAKMLx6fzLFgiE0wiQqaU6deX6PmJ
    KZFI1MegTP5pYAqps5cVBIlqojCa0drRBkMOEO+ftNHQEuA+sOjHSgAZTUOq8gX5
    1EYWZRQLupEWRaQf5Zv97G7gUMbBO2lslCvTZnRzAAMFB/9XQdasghjTL93Vnu+x
    4H/yVENZiDJfEGetRlKKeR6x1rYThSTdu77P9Fh+ep1VjdbSyy7kU2rjhmnbSmoL
    dnSzaTRmBATjfWiyVzSUIpbEr2iLfHbWxxIL2yPofhkrOtJtR/RAo7PQ3Of0/SBw
    i5nYRC+RXCgOEG1bOuORQNHwfwdp+rpHuwQ5a0fZ6xzdsfU8vCES6Ca82FJ3Y97s
    F9HK69rKsNySFYuu1ppUSr1e4odvKex5KgGYoxBDbyljERqVzsUIhZHv590zlQfI
    4T4Ca6NAIm71gw/huNVoqUWfIqCW4DarUgUmv4Cvv6Uqc9k0jxzSNBzuIHumSxuy
    w5gXiEkEGBECAAkFAkZE9h4CGwwACgkQJvkB8SevrsuYfwCfUOH0SxLex3DmJXiT
    cMbIcefX1ewAni6+MH9LS3dLO/uzr6JVPjDsr1X3
    =Xmyn
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.215. Gábor Páli `<pgj@FreeBSD.org>`

    pub   1024D/9E3F9BE6 2008-04-17 [expires: 2013-04-16]
          Key fingerprint = DA0B 2143 0FC8 EE5F E211  D329 7D4B 6E18 9E3F 9BE6
    uid                  Gabor PALI <pgj@FreeBSD.org>
    uid                  PаLI GАbor JАnos <pali.gabor@gmail.com>
    sub   2048g/A780C60B 2008-04-17 [expires: 2013-04-16]

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    mQGiBEgGzt8RBADdmkWC/Q4tpLhYpw9oidgWjyRRx/MgPRrGhtAvVdNTjbVoT4bl
    5e+v3CHoBih7KIh0BVQrux+H4UJ1Fou1wwwCrPH6ismBR5P9iZEGmBR/K0+1gBph
    /aUBANM1QG1FpAKMsYytqXiNk7mH/+oxomsbXBg8ZFGzlOWCwp3gvMZBGwCg7UY8
    YtV9L46nZMFIfzlj/tkNzh8EAMeF8nLv2qFsBT3ihYJRb27c/GtsnSUCQgwU5CVS
    Zx0QVb/zpy0syLHO+AeJnUIQWBKOhPpysXRlyMpjDlPu2b/VS9av01uLeHCCR9YE
    G/Jp4mCNswD0RLoQh0WrNtdr0kR0htr8mZrkRbZo+YoZPCdp/lD5JNq6fkS/Dgc+
    OGBsBACIOunHi0iEMnThJNznfLSA4hmjSdkrI249U5Ie8KfA5aXxaCX5o68tMgUV
    s/9hUBIc9cKoAkUf8t1XEADTik544HYm9FNULU55K1yEoG6dQrVm1HYVSl7uklE2
    mHkkg15nqapedChp2a+UhXYK4IthrBYcI4YVvQMBsMIFvo63krQqUMOBTEkgR8Oh
    Ym9yIErDoW5vcyA8cGFsaS5nYWJvckBnbWFpbC5jb20+iGYEExECACYFAkgG0YIC
    GyMFCQlmAYAGCwkIBwMCBBUCCAMEFgIDAQIeAQIXgAAKCRB9S24Ynj+b5rQSAKCs
    f7zv5XU0wXzKF9Y/9kIH2CKg2ACcDIvhQGclbBZy1NWr96IEkesPVd20HEdhYm9y
    IFBBTEkgPHBnakBGcmVlQlNELm9yZz6IaQQTEQIAKQIbIwUJCWYBgAYLCQgHAwIE
    FQIIAwQWAgMBAh4BAheABQJIBtGPAhkBAAoJEH1LbhieP5vmlK8An3aLBPTXu/f0
    dWAovygPqgvjreGXAKDUrndv2PP84EhK4f4HDDwfeIVyPbkCDQRIBs7fEAgAyLRw
    XdnvIKENQFgcjI2XyPtcbe+mCs2miAdRWKPRq+RuVLu7ub1kYK13W9pYTJL5LAiF
    TBVm31uuoiN/sQaJMDz/Hz2DOLRsEcb+d5f/9ssiPUxMdYKnE+kYwXRvm15y6Z6G
    dNhFZWleNpFRuPYqy/HaUb5q8/quF5VcH/cDVS1tSTErPtM7i3mmnJOpdIdBrCPe
    VVJXZo5MWUp1wG2IIuyap8ddM5S/kHhhyujLxLNDnlTxYogGZz0qad/R3LeiYTfl
    Drn9cZzvFdPlmrSvdw78RH0tB09fRLoI8KjGHi/bTiF9Pai75OUwVMv4PmxjAF6s
    OLU9q8zGpr8XE2ykwwADBQf/XVmkCPL+BRd45e40ayCo4sqfMoh0mK6dP66FmO90
    tAHtlIfkK74mcb/XrHC0KoX7c/TSaG9C8uJ7NGYzEFQzlzY8LlAfW/P+LjIpXjk5
    frEItGm0fCNU/+eBwcobO9gfWHDHucfocar8/pnot2PhwJpRFy1/xUa8oHXxNfW5
    IXnb67uCDPl4xFy9GkPPsgFZ4QI9+S7do0XYDEwfvzELeNTANAzMK+jIs5yzJ7mB
    mwI9orFltPfmc1y/EVc08LlR7qCsbosb/HMHO3jaMeKq1NIHyzRd70RZn5ow4B0Z
    zPQTJCWzfM0L5vAF96N/Rmrigwsg83+dE/a5e2791WRCRIhPBBgRAgAPBQJIBs7f
    AhsMBQkJZgGAAAoJEH1LbhieP5vmWAMAn2t7GwTeP9Hq3t1I1uU8AUGgS47cAJ0Q
    0CAkpRuxhi2FZn58aNBhvQPcog==
    =JvPF
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.216. Hiten Pandya `<hmp@FreeBSD.org>`

    pub  1024D/938CACA8 2004-02-13 Hiten Pandya (FreeBSD) <hmp@FreeBSD.org>
         Key fingerprint = 84EB C75E C75A 50ED 304E  E446 D974 7842 938C ACA8
    uid                            Hiten Pandya <hmp@backplane.com>
    sub  2048g/783874B5 2004-02-13

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    mQGiBEAscLQRBADERe+RX2eJpYLoaJ7d29B8YcTYzNlsfzghM1R1/Dx2RDy5poKa
    Jn9j+Iptq1qS9GkTHXFcQh8LT2K7wnE/MZTCxkZvg2ZkfQbJ4Z+0z3A1A6Kvg0tH
    X5aqmPUeLXvnps7nqZxkhl2ibcjhH/VYZK3mdRikd1wtJD1EhbbeqaR8BwCgkQAG
    vdJHN9gfjLLcM12EitkjoUcEALoo1bPoULWd4YhVH7W5L3Qp0dr1vf5pYC/V7FQ+
    8yPXZtGzMvIld8iX1sv/zsw4EoXXsaRzJo/ixdCS1WYBPowryu0G/LX5w0RTTGHc
    ihcHLm6ZmyNuIsTQ1ifLNASJoLkNBlQAuA0VG4evAujrmaWyEHbbIDSQKUJOjL9u
    jb2HA/9pycrr3+735Aa7B5jThN6p1XEC8GQg5MDx23QnTPj9QHXH4qs7s+hwxZq9
    3WkVFBcJtDBi8PeEVqfD/QPeU3ewbnNnfaF46miGV1iG1mzU4zMq4n5oBdijf5eL
    cRRdOJytYKTvlSCe8gf0MzfaB3RqD8+Cjcs3PtQOy1VT4aQiv7QgSGl0ZW4gUGFu
    ZHlhIDxobXBAYmFja3BsYW5lLmNvbT6IXgQTEQIAHgUCQCxw7AIbAwYLCQgHAwID
    FQIDAxYCAQIeAQIXgAAKCRDZdHhCk4ysqEPZAJ9ByMndfTtnnVIbsyHc2NjDp5F/
    vgCeP6o87Lw4aHuGo5guA9yeWwtwAla0KEhpdGVuIFBhbmR5YSAoRnJlZUJTRCkg
    PGhtcEBGcmVlQlNELm9yZz6IYQQTEQIAIQIbAwYLCQgHAwIDFQIDAxYCAQIeAQIX
    gAUCQCxxDgIZAQAKCRDZdHhCk4ysqLchAJ4+01/uQVdqdDeESGodcvgKsrieqACb
    BIW7HMvh85WqofTeAK5pJu7hCM25Ag0EQCxw2BAIAPXEkkg6lSxGRmVH1yzRnSKr
    /M48xyRXYDrRPaVVBFkC4Af3CR5MjncJtjbzm7xH82glC67cksRTfTZRs7kJsid+
    g62V53dAu1Uoj8ecSDhblb8yW3rTLKVqGcliGcTRFivcm+ZFm0kc0xCQE3rd1COX
    NLEomMV6xuZ9PVzDAbJwAoGdpCYsCl09eZrTErueQ7pEVsLx9/0zQSmC/uDFEVZ7
    23GsJg23+EUBT5KuTxQ4i0k++Ccr4HR/OiUy6KmyXSNsKsBsXwm3map3Debqqqx1
    ssrDXa+PHkKEUrONQBoYbZ17DpPZb+NKWibi0Vp1HKPP2vZl4NZQC0GBLXbEudMA
    AwYIAOYhwVTWKQSgeEZUNe4PwvHczx8/3VNjYZGY6/ZRjgmfO3+MagjonZqfxYha
    GpsEV17NXm4WIg6HWtI43JwIWfkUybsdxQVH4i5lWYuA26wD6UtNXw9laPHKXonR
    DvmKDC6K0iFbSxTqXRZVQ//wMxh58/Yw/fX+fYtmH6u6kPaL+CPRkhQLezTzZWHj
    2wF6v+frdglW1/LpwpCFndb1i5+36ogZ5ZudG/iz53QzlOF0IZSGHIb9tlQ+4gUn
    KfxpQloI+5vAyqpHDKIH9K26wTBzKsp5Mt4W6cLfgjXs7TNc8BVT8d4rmmbGpGnG
    pSjj7b1q6EhpIVBkAMLw7qanLlCISQQYEQIACQUCQCxw2AIbDAAKCRDZdHhCk4ys
    qAuZAJ0VNEtJSZOAGetxBJ/BMWahVD8xeQCfVKwTHdPh83Qcf28xx81icY5OKY0=
    =rF4D
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.217. Dima Panov `<fluffy@FreeBSD.org>`

    pub   1024D/93E3B018 2006-11-08
          Key fingerprint = C73E 2B72 1FFD 61BD E206  1234 A626 76ED 93E3 B018
    uid                  Dima Panov (FreeBSD.ORG Committer) <fluffy@FreeBSD.ORG>
    uid                  Dima Panov (at home) <Fluffy@Fluffy.Khv.RU>
    uid                  Dima Panov (at home) <fluffy.khv@gmail.com>
    sub   2048g/89047419 2006-11-08

    pub   4096R/D5398F29 2009-08-09
          Key fingerprint = 2D30 2CCB 9984 130C 6F87  BAFC FB8B A09D D539 8F29
    uid                  Dima Panov (FreeBSD.ORG Committer) <fluffy@FreeBSD.ORG>
    uid                  Dima Panov (at Home) <fluffy@Fluffy.Khv.RU>
    uid                  Dima Panov (at GMail) <fluffy.khv@gmail.com>
    sub   4096R/915A7785 2009-08-09

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    mQGiBEVRWoMRBADzr63XtBQiGIA98UAz2AHVhg+5E7rf4KhRRzwIFwsdqZhK9ErU
    Ep+G25QXRqjxGYiEO+oC5nFnk7fzHXPTLgvF80goowBeuc89I5UyiLeMoY9tkLLg
    /M2/UiEr+LYX3BAzvZSIGG+IZ6cIDgpGEyaey03koQkMUSIgHc38rTsdewCg8+jQ
    oIqgyxmz0w57HahG3wYJh2EEAJU0Ap6iSmknLiPE4a2bYUXUK1lSG5SMo8C87dkU
    U2BVgqH3K7PKYAUIawJN74PgvehKG2iq9ALsyL/oX5G82sKZjgaIJrSBMw9+yppw
    22lespasyK2GXV+5sK0QKfONUAUAqeXNH5kzNI1jmt31v61o1M2Xc0bVeK3wXGCi
    9a+rA/4rlsZ/fHLpiSoKtfSEGC1hKM7XbqBmOB28lNQj14JQJZB6BOF0o597dWHX
    SAQF1NUZfNG7htDr/o8SoVQOLN+qws29004XfyCOMCodUx8UC/P1bZ+PozF8l9DJ
    hyxD0ZoRDT0Drpy71kzt1dQapDZ4BwyoTVLdsgMwAsT/+duHGLQrRGltYSBQYW5v
    diAoYXQgaG9tZSkgPEZsdWZmeUBGbHVmZnkuS2h2LlJVPohgBBMRAgAgBQJKWMPY
    AhsDBgsJCAcDAgQVAggDBBYCAwECHgECF4AACgkQpiZ27ZPjsBjq4wCgsKuehK2f
    5CALYdGSTf+5xiYzahUAn37WOdQpdI4Cm83owRtt5EnapZ8FtCtEaW1hIFBhbm92
    IChhdCBob21lKSA8Zmx1ZmZ5LmtodkBnbWFpbC5jb20+iGAEExECACAFAkVRWoMC
    GwMGCwkIBwMCBBUCCAMEFgIDAQIeAQIXgAAKCRCmJnbtk+OwGKSIAJ9bmwywJuJ5
    3N5Ebi/P7F8YSJi/VQCg0wNR4h4sYrMsffGqm4WqbeiHOo60N0RpbWEgUGFub3Yg
    KEZyZWVCU0QuT1JHIENvbW1pdHRlcikgPGZsdWZmeUBGcmVlQlNELk9SRz6IXwQT
    EQIAIAUCSnzREwIbAwYLCQgHAwIEFQIIAwQWAgMBAh4BAheAAAoJEKYmdu2T47AY
    SvoAoKAd+Si/4z8BWaiStznUwrRPFL4qAJdBDDunxHvkAbIbvGSXEfqRkm5HuQIN
    BEVRWqQQCACLhrO4OX/M/LTH8b0phvAcYUeT/Q4sBxoOFz9uDgQKPXl0GVpBbEn7
    KlBLcITrVDEtfl7Amrj+YflAmaWwsTnyRXOo5LY/d5S59pzOURMVqe7pQih009xF
    irbQ+mpRaP8TaZiVGPGH9ssbiEA31DM0qObyxE1Ecmz0Kg+Z5If6snxYxA+tGXZY
    QUihFxsiFrJ6KBxP1B5UIhM2/wZyCOGPjrFEQE2sskwjLtr0S+rJNldLSODF97KO
    XS6cUhka+QGa2VNVatVMxy7i7wWZD0eyhFDNbSjfaMQ5S6J1ESK27i+P7clv2moi
    DYeFiXm24f8fqPSYBJP8GmWJVY+BxWaLAAMGB/0QdsYjXUDoR+gAV1IE+oiE4Omh
    /rptMW8lTURxF7FYZmy4EgwLScn6Gvyj/b0BQ4z0vjv6NWtXUy1qlimR9plb0GiL
    cLMfqgFw5RIgves3rYnWn01RxXys523vUq8/aHCLdJB0ElODN9FS1FcDU0WbfvHy
    zpnLcPnBpcdAlukTAjB+t5FKj0LKPlsrS3bwjv1DdZRAjq2IVs3kEz5uA9CENQFI
    Ntet0+j5u3/i0q+kYaYZIdSuCL6a6pPLm6e2c5ayroU6ErBET1ZhSdTfJj/VANjM
    Zkh1QfeAZrHvE8geVLvdQzULeq0OOTSO48eQuqIXMHaqD7pIXCH9NsEE57LaiEkE
    GBECAAkFAkVRWqQCGwwACgkQpiZ27ZPjsBj3AACghzIuVIcv49c/2zsI4IqV9qvj
    kzUAn3nvaEiZES10YNIxgbQYMYFkB0RomQINBEp+xiUBEAD01RkOYcyzU/Fnam2F
    I7PPwYqW00SwVmfUHihvVniiaMwzaYzchb+mzShaNsqRgjIN/i59OBpnS25OXMLE
    pQP7jDJnY2xKyJN2H4qn1HPHkF9cYuqvqkm+r5459g+2ZoGY9Sr1PA0XSzXJMSQ1
    nRK3cFfqlN/L2//P36U5VuOWXGZUTwr/n2B/N0HAsYsqDOdjofLg7x9z8p8elqwJ
    bT/O4ltg8JBVAnof+FzqefYW4CzqkHRjq/9ORiGYh14ST9ECsCaVpfdDUTor0wgp
    JqzCN1HsQcHqgdMmOqigWIgN7Eg4MRQU3LDCISrNJ/45zvcKUXR0RHOjnSuflYba
    74q58XhZ4eCTqHeMHjA8st4IWRzy9l0V4RunnZxjOTb806jyIhdxcb2m8o5tXwsq
    jf0TQ7vYowDHrQ6gXlhPg4Jvvwf+BwlB2p+w7Cs/Y9QA0YHnIOIVZAwU1wv66YSI
    9IDL2AbnY2gQGx+dkHiC3S5LG8HcPrMcjayyThKKIi5KQsWa3snFeK5ky+cRpVEO
    PQfUXFOas++91v90Xe9j+lsmRofsyvuygzoaZE2fud0kCsOgYEg+kiLPlQicNAx5
    IToOs8BrVFLcxmbPKuVBfbLdWsYLjXGzbXEmzV9fNDZ1r1uNmVema8YYCiNjUDZh
    xIfKt8nbp6cx8UgVLGRVDEfXeQARAQABtDdEaW1hIFBhbm92IChGcmVlQlNELk9S
    RyBDb21taXR0ZXIpIDxmbHVmZnlARnJlZUJTRC5PUkc+iQI5BBMBAgAjAhsDBgsJ
    CAcDAgQVAggDBBYCAwECHgECF4AFAkp+xzgCGQEACgkQ+4ugndU5jymB4xAAgMLM
    Mf0/tfIXHbH5JHsY2Pvb5wyA6yM9ruROVFYABipPyQj3TXEvTk519Roa7EgfTiW0
    JKYuWuGBgKoJyoq0Tu9iu0ycnYTq9BXS/EXonJH9NBwlqH3Azp+ZEH0zwk0gu6L/
    xfOfE6zhOob050XxAkjh9Zj35sEswjN5dldXvLF68w9ONBXdEIlsyj6dJ8oM+Hz7
    yBEBvJG/GOIk8+vVdM/SF94Xm0R+eDIiwHvy7pMBMukhTvUx8JV8KXGJcN5086Rr
    Br7L4UPO+HlAbgYxlvwZE2cu4W9GWBssg4Hxd3eYmFC4cyA5n9gAiQGzat53zaxq
    xlNXhZntixD5pgZow70UIW4EFpWtv0yORo0bZNbbhNJJNh9hBwfAU0zGnG+EAkau
    5cYQB5+BBNJPaPIt6dkW5Rcvw5WwZgxfZbujEOMWSZboC/0hT2MkC8U5iX+Jyi8x
    Wp3I7jAq9p58yuTyKp5ZC+TfZumWVlkz7C/iDfMbABDT3c8HaoVRgBsmiRxy7NTi
    efGAtx+/bNLnujZZtk3jy0lMD33Y4kF0YiNw3I1GxdsenKEWJjbiWLENpgJ7Z4fM
    UW4kaimQgBqSj2918UPSRKWoaylfr9PmVBFQAcQO7JJvKN2kTlzKzkHSQlkkWPX5
    pj2X7ERM4TZ/8TsJ3lSVvgTV/l710RIpe9F70AG0K0RpbWEgUGFub3YgKGF0IEhv
    bWUpIDxmbHVmZnlARmx1ZmZ5Lktodi5SVT6JAjYEEwECACAFAkp+xywCGwMGCwkI
    BwMCBBUCCAMEFgIDAQIeAQIXgAAKCRD7i6Cd1TmPKb5kEADatAL8Hq26Uaqb8hem
    nQ+YAqVPhRvELz2Yi/RoLlscY39i6OelRyELdzlfrNCfRl4et6OT1fSuq9b950mf
    R92Ah5J3uvaySD4bpz8rvzzSCKkP3xGpdeS9tr6JTTvyP1ySkWOcOJCb2CXEmKch
    2+IJNNXfXcCppM3+yzVrClF+icwlBTH8F0mOFAFqEEUzSoX5hXRrLp+/qcavQPtQ
    szG9AhuwWcAqfiC/GnCKfLhyDIUaEmBCMH8hGiff0GyIvkyoskmAY1eUUHg5XUQa
    i7FtWH5iuktl9aLmuOiXglNubE5T5RWzyQvyelh9f4MSo4tlq5iPIuGmFchazJzs
    yck1ytDOs+zkeWRmakjz2Sj0s07CLPv2d2RZxtqYJyi5ZUxGEfmnWlINAIsXaREl
    M0zVXibY+xLVaFU/JzpA2TVaDHG6OEJoQfpsLFLxEOboygULRNMBUCufLwmsLOr4
    ITJRP9T5Wf38gqdjXAm7C1MWG5DPEt+lzqyzc/TSXxwdR3xw/zlxPMLMiKCIjpfc
    SoHjDmzz0iTesGhxuu3Qb7O6rbDhUAV9bgXcMi0JlDLK8mAyOY733XyC2S18FTrN
    vJ/opr3ROHzJ0g/ojT0QzkpspPbpgf0DNn8v+gEBZKPyg9zuP3bR7dj4M76xf1yK
    lu0WDIO4NGWdnmAqO99nc5AhIbQsRGltYSBQYW5vdiAoYXQgR01haWwpIDxmbHVm
    Znkua2h2QGdtYWlsLmNvbT6JAjYEEwECACAFAkp+x3kCGwMGCwkIBwMCBBUCCAME
    FgIDAQIeAQIXgAAKCRD7i6Cd1TmPKREzD/9ANKU02qbh78yaccFZqvjyVE5Ysdo+
    HDOCtxcGKVxsVTiPJubLqv3KiCIL8alemZWGlLi69wnlaSAZiuB+5l6Y+gWYFrFs
    tGAY6PPuyeQcQxaGpb5j23PbADaOrqfIvVyOB4Ld2fPm8r+t0Bwb4P8epmbG4mOP
    jJA+w9Eq7KMwFK0vIGuCFIOfK09bKNkjEgMYr/1KG28uVw8CKyQj38ACn1oojpV0
    1E+SpbldHqFUoGkNbba4ojnZVST1IzO09V1X4dDs4xGDvnJ04iSeifiTNYEjDnGb
    VA9TMFF4cUuV8dVeJQrc2+5iE3H7mSFLNCe9DjFkmrRV+AnCn2bE5GYUiYA0o9N5
    OwRICmz6BhNZUMWVVGytQy0g4pdmxNSkAiMCA8FzCbY8BCn6XOOelF0EsHug5bqG
    vaKCn9CyoLEHhnZ6ttzJlpYO4AQlds3Rvi53HouowEbWhQQxhiKRfvKPVwpXphR4
    PNIgkLXckv5MJD1IPL2eyzWCYdBY1lCCTA8sdnzdk7WLfDJzyAk5sEbf+mlGhywH
    Ksu87yGOckEVKH2x6L0WGdroY5IfR4NMhzGQOPDuLnX0r+SY/R6l+5vLyf7xni+V
    NkNpxt9PbVLt+JfdIbpVIe7HvQoxbBpqwy7BMAq23N31gROI6N31i8bAayoQ8YC8
    CPxH2E4J4bMIybkCDQRKfsYlARAAwFMwdCBvS9w8wCJG9vfnuKGWH9hgDbYVePin
    ddOsOUGVEvRAJGrUjxcN5CYveYbezc0G0NdJ5+c0zTqNndcIB8cgMF3Ekm9BlkJd
    +8un8kruecS6qh6pPr+gqzUx5lV1Se+HWdmGmGz5np2XTUYgTxgOnNPUkwPZ/cb0
    8cKEaLcN3OqbdV1e3/zuSFgmQ9tp/oQ3n68O2EqAyNtryPBtD7shQ+qR+c0UhlLq
    KtnYthvv0Es0jklKX2VF5J8RfZ3wHJCUvO5/RNLi+jLedYZ4LKPoEg4yJFLGD6Fm
    YktjGE2TIrgZBUK3+stPt0h8FAyzIFtfRDDY05x9tr1WB09kGB2trDAHj/EX1IDc
    0HQnSVSOGOkf2Ibw3GWmV4SDw5JQCnIVkQmrYD9+WeziQrM0fsAZgM4U5HK0PMDe
    qSAImtnufNBKx21napvICjN7S2X5itKEmE5yZAG0V6aiaFZV4nxP8HDUofwzWKGs
    Q0FNLNjMu83XxiM0/o/QOH/tl1rnJgjx82p3zgrdSrnEGIjRLr6rFWLDzjPa0mPx
    PGI2oUCTtNt6jZeKa2ru5D1ScVFIrePD3rKLX0pT2tBBmzTFSM3mCf+0XmUFlYqP
    C5kKRw6IjQRYcBH4BMASwU1dy6gL0IAYrkcVbicjha0Tem/Upi+K+Ua0XXDN/RCu
    HJ5GubEAEQEAAYkCHwQYAQIACQUCSn7GJQIbDAAKCRD7i6Cd1TmPKaAqD/9G+cjv
    MQMq/qdBSopHItrA9OsIoK1Da9KhbJM2BEHpvI1LXDnA1IAyepoRLHZt2Fq5rF7X
    rtUQliqBDLbjXIWyWkLq//GUfbk+miz4mDoAppAb8kAEc7oKji0e0Fs2Yz7XgcRL
    ECh0Dg0m4RTX2Ig+NGFQoLwXxH3EGZbW4uk+KWNT0qbQ/cQgqMB211k14wuHCxtI
    cHAlE4WvEUaJPNY1ERZmhmlDGBJsdiHBhvEcRsmLVzJuX0hC9IYevKxy1mzEPTgn
    GHqiBrOKJPxpXp5qvoE2HTTzJF/rUW+uKd8bdRItHeIk7xodqnhAYI+NndzJP4MS
    rz/NV8N16J1N40SFKBEqTznpFwD7IATv0ph0qS+YNSILymgAnsUYRgcwH6D/X4tz
    MKvaD0ZiSIH/nduhh9T16xhiVqvEKB50KvBe/pPjwVnfHGgfdcnYpXwrozwJRvTi
    OPeQR4LCr5HoGTZleuczPJCaafbbdf5mnz0H+ByEffYljzLePsEgJyhmaAy7rZc0
    yBYj+FGB+LcmVUKd7pc+Pf/DTQlgbu+j55Mk5+WpivdZFM9iHsPHNi2yFmzAeaaR
    m3CLNRBRnMX11fYIzydjtwq5wSa1ydSmMbBcw659r8OYJOWTyCBFnS6QJRk6UgDg
    gvGn3mxLairK5wBG/6nAxa+uon8t9tl7FKwiMg==
    =Jlk7
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.218. Andrew Pantyukhin `<sat@FreeBSD.org>`

    pub   1024D/6F38A569 2006-05-06
          Key fingerprint = 4E94 994A C2EF CB86 C144  3B04 3381 67C0 6F38 A569
    uid                  Andrew Pantyukhin <infofarmer@gubkin.ru>
    uid                  Andrew Pantyukhin <sat@FreeBSD.org>
    uid                  Andrew Pantyukhin <infofarmer@gmail.com>
    uid                  Andrew Pantyukhin <infofarmer@mail.ru>
    sub   2048g/5BD4D469 2006-05-06

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    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
    =47um
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.219. Navdeep Parhar `<np@FreeBSD.org>`

    pub   1024D/ACAB8812 2009-06-08
          Key fingerprint = C897 7AFB AFC0 4DA9 7B76  D991 CAB2 2B93 ACAB 8812
    uid                  Navdeep Parhar <np@FreeBSD.org>
    sub   2048g/AB61D2DC 2009-06-08

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    mQGiBEosaGcRBACOXnXquGEW53BjpMt2jViod/TUf1xgjMekcbDxqOODPeX7eYfr
    wJ8G6BCNOpGjBmWDu/JcNj4Z+gmTilJ6WLZQ7ecFZfEeO91pt6ys0cyWh0xfO+/m
    T83D7W81S/kqrJBkQbBIdV6LumevdErHo272r8RcMELC4Ru87eRtX3hmEwCgnnGN
    JMpQFUfYTt5XE7nY0yQoeV8D/0OcWmJbEZWxX9O7AuliCe3zd2Dw0B4LB9SZ2Dis
    7+gpVd3xVgYnt5wRE9kM+ThgrMA/wqr807qmEG6bcfUsfwwGN9YUtNF3xAN07cXT
    s026sCIFNZK816PrThBzCgkwR7pDpkMzGWIBr8WiXXy0eB+JlQ6UV4PEiXuZ5ulz
    P0b1A/9CZm3wJfrNC0r1gMyrfVedg4zwKU997bmPLGcYs+rWXDTI9CvMseOUYn4C
    oDZQCp/9zxuHK+VU7Y/w0c/hVE5ERACSn4SjN2unEDstK9njZBMHEPVkAe/YvSG5
    cmc97SHlVE+eu/bbLKcvFb6rRLPOaVFQJMJA2VJEGWtYhvP7ZbQfTmF2ZGVlcCBQ
    YXJoYXIgPG5wQEZyZWVCU0Qub3JnPohgBBMRAgAgBQJKLGhnAhsDBgsJCAcDAgQV
    AggDBBYCAwECHgECF4AACgkQyrIrk6yriBL0MQCfUJOiS2PbJFDeiav1ylcXXwfp
    ggAAoJRoS7GDENGyM4BzjJ4b0ptZqTLRuQINBEosaGcQCACFCWs47SL4DQA6bNDl
    VJu4w8wLf8uVOyatuGmdXX8Y/OTVQJgA3vS+ODNVJCxhKVlvhcn7bhBdGdWKS9K+
    lr8+eEvr4hf2bQpesoHC+uFgKyILkCBNL8raixbhysyq0pfZWWDJMyn+G42BG1yJ
    Ji+bykygdpYnbIVA8dYHmBibI8mkPKOHSohjXT1SRfGGn+l1w54OO4NlJhCXMkjT
    A/Z9Bt4XeaiR85uJi0UUfV8FGZHhgSvT+/P1xIvz+nytuehSP/QLXl13CtAG/nKV
    kAcZnsT/3NrJ4Z2r45k+c50Wrf210scAaBogrrV5eIHfNGgOANApN8+8vj+aXO4p
    XRuXAAMFB/44ea8rd+P5N3OMrfuM8i91Qe1bJ+BIoroKPOr8jvCry0h3QpdfLKUN
    IgaqbS3JZeBJ8HHnWSGCF+o6H5gzRe1hvylPEclLPDCuPe7T746h9Mzejf2hNDJv
    Og+BuweDZW4KhovVbdS+syJEvpGF4bO8qgHT2CKgruXSHbFetdQWbkM0rfMmTuo0
    GcR2BEVrPb/SPFv64ZZyAZzmnGO4vT1bzClnTzJixrDpH74M3vSEYegMB4KdbLYB
    i8Jx4QUKgVEhJHjJubKWX4etyU/uuehOC3xYrmr1UXvsom3U8r36Dvdo77Yr3dgD
    VXa7bolNx0TIhdWxZI+R4z9E75QY+/wgiEkEGBECAAkFAkosaGcCGwwACgkQyrIr
    k6yriBI+JQCfUxgyqGtzZvLh5Al7gsTmRc11PLwAniD3NfWGRcO2+9uxSSQqRH1y
    wC4n
    =tqY8
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.220. Rui Paulo `<rpaulo@FreeBSD.org>`

    pub   4096R/39CB4153 2010-02-03
          Key fingerprint = ABE8 8465 DE8F F04D E9C8  3FF6 AF89 B2E6 39CB 4153
    uid                  Rui Paulo <rpaulo@FreeBSD.org>
    uid                  Rui Paulo <rpaulo@gmail.com>
    sub   4096R/F87D2F34 2010-02-03

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    mQINBEtpXcMBEADA2Fye/cDy2Tiay+ieM9avchk+igtnLNdmHv+07rHP4OMXfJ2D
    HcAl0+Mbehs7vLQBKvpIFXJAE4z2JAaLw16g/o8AUEO0/tchFy+RGjqxzwrY6Xv8
    ur3+lyezJ/Xs34yQb7h+m2i7gxp2lXsk15zc/V3bJ3EGnTPAxTD0/UGT5UMBSK8a
    TVH/YTvYuAoQ162qtjrfdSWgO83+mJHtyO52asF6Jcv4PxTc1KjPNJ4CF4qmRAGn
    0RH+KCHN4PWxfLx7tZm3W1y28rEOkzjezqRs+etz4yGwK0oiQU0l0xJ/HocgmQyK
    HTytMRU6SJZ0YWqMOr0avZzjIkupcKYwVjOEy0p80gcREj0ka3aep7PCUh07ftgJ
    w24Oon6xMVt17sGyqqAAzfVVWiCa790SRYsuu5cQdel9RnyH9ozWWM6Ki6q+cq0v
    mSWwS4TIqWWkXxZsF0H8C4TM2UkzskwfZDvAw1qlmmEsZ18x5+SWCYf2k4j7as49
    jXFUZRU2XBF1enVkqFYKnHwTpAMk9JmFsFXMQv+WMTndoEjSi1YG/NRLRboaIT0X
    i6+AHTAdh3oZ8bqdifE1jJCivWPn/sAsUICkpuagGygDFHC3q+5BgYVyMnJuS284
    +gB5HKZ3ww0gk10xc0EG/fMoSUEed96vceyk4qTBxfCl+bM/2KstlXfAjQARAQAB
    tBxSdWkgUGF1bG8gPHJwYXVsb0BnbWFpbC5jb20+iQI4BBMBAgAiBQJLaV3DAhsD
    BgsJCAcDAgYVCAIJCgsEFgIDAQIeAQIXgAAKCRCvibLmOctBU4ypD/0ci/Gt1KaD
    khN95sad+8ZJFK4K6W4o0g+dMjDa9Bb1U2gfyKobO/I2FWg9z9a5PTO5BaeOtU6L
    iGwhNVJ0iOfZrAr+cnUvbDL6cJa1gy9khzvNtVj/eUAd1d7RPImTcwq6Dn4fTstZ
    122vuDQZeh82e8W9srJPEcGgPvSk3XIZF/gilRBPcfN6KmOt0Ixx7U2rqU0sblG+
    jQKG8nsDO1huNt1dYgCh34vxeVzvsvGqFeilh1a0cvxN6+GQa07uF732lA77lMB1
    +1fEhiS/n7K+6T0w51sNjoieQAn5pE2hw8Q4QZ4HTaXaI4YG2n7dOclTtDYm3FCv
    Vdtd+4Wn2l/2VpUQfJ26Ge/BslqgF4RiljyAQ2fLcPhR1GWFzsvgDuNZRSM395xi
    nS54SGVsmMkEPoblIPCvhG26C7UszmcUfjyI++0nMRhCK/R4n/aV0VKxBWoUIhrD
    uksOFfO3jmI/58fmYD4WvDyvv9nyeo7E3MpGQMAZdNPKBdJSmFHzRFvC7LGgLxaT
    lR5uXyPEMrly68FjPiYqHDhUP4TxsBy/IBwPkizxoTtS2OEvR0uQDR0vXAY1+Njv
    YEeob+aaL8WNM4FfDZ1ZBd7Ux+qnDXuxuvR4MU7WlrzHunqWFirC1o3PslMbHNP7
    oz09YhXXNLSM+6j3Jb4zDEfsgsg02SpqxbQeUnVpIFBhdWxvIDxycGF1bG9ARnJl
    ZUJTRC5vcmc+iQI4BBMBAgAiBQJLaV3zAhsDBgsJCAcDAgYVCAIJCgsEFgIDAQIe
    AQIXgAAKCRCvibLmOctBU8XwD/48GsS6Zxmc1I1qhnGPf7+b6VeHgSyTHtu62TjA
    BGoGHeBcBiMe48ws8Atoi92EiA7pM+43aW6Hkkc/h9/1cGugsPHz3G1haw6/ikSv
    X1TU4Z3Sf+5E9NaWL0nT8o0LtQ4ZJ0BriesejV3fRXckE9gbsqOaP5legSqs8xje
    mk9lio2VkHGlBC23d4z0NFsXv2+Y/ilrvvoJMWANGaV/Ejgscb2EvK3xGgxOB8cA
    MvybOjLvDKbXAx0LfL2VtPIdsF38n744B1bsr7yreYQvMkjYxR5ASgaVVx80Bowb
    CntPsNWzyTSNMeL9IfKd5spO7QawJ9dNQzTG38SE3svv2iAf6f8uS2WNmVQxQHDv
    oB+mZ/ertNsxE0VdFBTzOuwnoRzurtOHUZnRvt4zLFOfunEQOMeo4HnXIoCHbaIK
    svXmSRl8+lK/jn5Sm7uXFVMPWCEwOlGfcey/30mAUj+9aY8TBEII6xy3d6n64cpf
    26scuS9KaYBCuqOECmQ4wDZKHHVsWQqjSeH1WOH94E47IYYhecJB+yaleP2E/4LU
    CokiRbyLlAklpT4P9x4RFt+MoWHrKMlesiR8NBVpdhV/rZSk0eF+vDuoqdrNA+8k
    dyPkWCRiKra3rRc+cdQeoD8tW+7Gg8mcFnyC+UOdTyHF1bSxP/hoODW+eu0mm+Q5
    OPlB6LkCDQRLaV3DARAA3XVIRwiM8YFt2haoWsU1yoBPTQhACxaH5YNXfgtbV4dn
    ENswRzVyDi3UvOSmC4CX645b+4RslzFTAW5iq2b0ExV0TQqEHsCuujCItUmdYeql
    6stEgVfNBiRVeYFa+6a3rWkh7dD0UDxk0PDA6pkWbUMgOGUwm+oVB6irHvcllN3q
    DAGouG23BuurPyFXC8ripXp1Oj/1PJcH5gr6Z675raaRbQuXa4ysLAPMbfxKPpON
    FhVJ77ilFzDFRknFPYBNoodQYLSmFqOZZ5rqYnBK5aiJFiDBSgYQtCJ4cbx4gCwd
    Xs9wF1lOZcKSiA9L47BZOmUL/nvGOXff/ImN5abBhJzxgm37niqZlRbHEaQ+8pJ/
    jLLqL7wzRXw7YpzVyXD+ru431nFBO5nUbfa9Q1b5VPVgsYV7r/3j8Purv+PeCZTJ
    RAU/qUBm7FhxStwPT/5jBM/oSdwLYX16naa4xGKgXwyccZ97vUsspRQnSDaxmbaz
    4s1iwClPauHfRir57opc51sL7IypnGBfnKXzebApbZcnKgYFKxVZbIVoaNFlHc5S
    Ti5CcP031vFf9R4uB0Til9qIgyzdUVpRTg0XNGxQjSh/n6/76gpQqah0jh60ae80
    frB74alM6JCdJHmYWzr664FMnplUx4JTiggAL9CMpU1Y6kYTkPMrk/dpfcAf4JUA
    EQEAAYkCHwQYAQIACQUCS2ldwwIbDAAKCRCvibLmOctBU7KiEACFQ4Dd2cR3ybc2
    rppjM7hI4i6wvpqDu3qD+4xjKfa1h7Ihtxh/QInl6a6cwTwKhM68gIM/43nrMrsD
    vfukfNGvgavrxdNQlxAbItEybDP7PFJEqIEjCBl36KAAYMbkzlXloYAHX3eyIz4Y
    ZOKGVF2lQkhqmA/SrmM2Wqk/uB4oATrbzOUvKFa+9R+PVV7MMZbpM0tiVak2fUn1
    M2N3S+t2usxMXVIfHjv9LexEokaWZcr+vj8NM3X/HVYiv+YXf3bO5D2Yw67ISa49
    ucFYpbOChs5a3ONrfd5v3smvkWE1ReWsPzpJ286lnGj8ZOhe0R/P+xv+dRBJzf9M
    mQTHR6L1VOgVmYkjONbZDCd+Q/Xhcuj4qeTPQtbh5ek5PqsQ6sukppn7YccbyMoA
    HHyZzZJsByT5M1DqjsioOiiW1iCRjXZfKttxx1So7aTmpsH4i7V6P0s848sME30p
    6yCsgCJgt3YPJFQqtMRCczmPWYMFKqBxQT//akRnThlIRCC1rjJBML1yoLvTzG0u
    16vOXdfscrwaGM/fOyC1sZEypyeXT7LjojQvVPfBBY/qXKjLckdpZ0YeXNSoquku
    dixFpPDnlUBdk/iuCcVRtWg8B5fPN/fbeJVRpNXnedw8aNes9JZhnj5jmTXYUlqA
    ik5Vxm3qOoCKPgBkTCUAZTCmZZ13YA==
    =vI+5
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.221. Mark Peek `<mp@FreeBSD.org>`

    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-----

### D.3.222. Peter Pentchev `<roam@FreeBSD.org>`

    pub   1024D/16194553 2002-02-01
          Key fingerprint = FDBA FD79 C26F 3C51 C95E  DF9E ED18 B68D 1619 4553
    uid                  Peter Pentchev <roam@ringlet.net>
    uid                  Peter Pentchev <roam@cnsys.bg>
    uid                  Peter Pentchev <roam@sbnd.net>
    uid                  Peter Pentchev <roam@online.bg>
    uid                  Peter Pentchev <roam@orbitel.bg>
    uid                  Peter Pentchev <roam@FreeBSD.org>
    uid                  Peter Pentchev <roam@techlab.office1.bg>
    uid                  Peter Pentchev <roam@hoster.bg>
    uid                  Peter Pentchev <roam@space.bg>
    sub   1024g/7074473C 2002-02-01

    pub   4096R/2527DF13 2009-10-16
          Key fingerprint = 2EE7 A7A5 17FC 124C F115  C354 651E EFB0 2527 DF13
    uid                  Peter Pentchev <roam@ringlet.net>
    uid                  Peter Pentchev <roamer@users.sourceforge.net>
    uid                  Peter Pentchev <roam@cpan.org>
    uid                  Peter Pentchev <roam@cnsys.bg>
    uid                  Peter Pentchev <roam@sbnd.net>
    uid                  Peter Pentchev <roam@online.bg>
    uid                  Peter Pentchev <roam@orbitel.bg>
    uid                  Peter Pentchev <roam@FreeBSD.org>
    uid                  Peter Pentchev <roam@techlab.office1.bg>
    uid                  Peter Pentchev <roam@hoster.bg>
    uid                  Peter Pentchev <roam@space.bg>
    uid                  Peter Pentchev <roam-guest@alioth.debian.org>
    uid                  Peter Pentchev <ppentchev@alumni.princeton.edu>
    sub   4096R/D0B337AA 2009-10-16

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    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
    jjAqbYfJRPjeyqTOUA==
    =S5L6
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.223. Denis Peplin `<den@FreeBSD.org>`

    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-----

### D.3.224. Christian S.J. Peron `<csjp@FreeBSD.org>`

    pub   1024D/033FA33C 2009-05-16
          Key fingerprint = 74AA 6040 89A7 936E D970  DDC0 CC71 6954 033F A33C
    uid                  Christian S.J. Peron <csjp@FreeBSD.ORG>
    sub   2048g/856B194A 2009-05-16

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    mQGiBEoO/iURBAC3FVq7xH4uRIEWRvmPzD1azqtwlQE3zipCf4K9B4EjKidksgP0
    56qAkWMvngWG7OW9YNCtZYgDNAINOGdw2pZYioERq7U+cdIPKSZrIP5WrpORdi8A
    4i3VmRKh19ztJEGb8jvthYDlEyvoABXmz/Bi3YHDkfjT0py02SnkcjikxwCgkGkL
    rNwWGviRd6hsBZZEeximSKcD/0OAthVoMmk4bMByWPoEWf5i3I3JHDeC4g3oEgYp
    7dxMaxboqjFmiTZ2xMwdR9wlpwE0ITSeVj5pMtswr8q3ghLdlXOpd4wn/vLu51/G
    ra7cFgNex3kCb+5tLfqZQCiK/Y8fQ6TJdowaxN0xtrdGbTtUR0BJMi7/AhNF1GxW
    HeE6A/4n/K5Z8EDq7e5HZ5S0lx3MAKy1QgS1tnO0aaHK3v+DtD4xbe9aV2ls39sh
    2Xu+z5QGkrx7q3HOSnC/DzMSYDG5I45GGNdDoBVmJ6IfvNICzXgM4hDh8KgIXNZZ
    PEkHN+uwTWCnIj1yhothpk86XBvyiEAbCTwQ5jWBmZkvLI2GdrQnQ2hyaXN0aWFu
    IFMuSi4gUGVyb24gPGNzanBARnJlZUJTRC5PUkc+iGAEExECACAFAkoO/iUCGwMG
    CwkIBwMCBBUCCAMEFgIDAQIeAQIXgAAKCRDMcWlUAz+jPOYNAJ9WfWDy0ZlOC7q7
    KUyrq7e49no1SgCeO4nUcK5nLZKkyGXxTbnghFZegGS5Ag0ESg7+JRAIAM8UbDPn
    dVBYrvJqBwdWQA17XN6jycQC2smWLnJ6geaQfBgXAff5/Hn1LtPPG58k048yF6QF
    xOCzPOTrkjaL8GlyKGLK9jfctyC+zRl5FvNyJIBIgFRsJjBB9K3FpZEsxWltSyqc
    5mxf4D8VwJeDfWdgeqVgORapBruHm3MAf5B13PfBN8lV2Yqbo520U6ZWUtdTscsL
    2QLTZcrIN5aq5Wsuy4r8H90h3JYcOUK4PJTBNLmlmLEuTlENbv8E5YVvvgx/ZJ9H
    lX9FWz+w/hrEQIR2xnF8MJeAaOR3Q6cKgvFrH7PUHwvYxAXkXGWv6xsJ4VEA7a3g
    IOytL1l/8Zo0fiMAAwYH/3Sn6JzdbiF7peLiQ3SqbNSQV3aKxNP+PuGvuALiHKKd
    WgF5xjrBfgSjJbybwm4YtNfqLU/x8SEtEXVkyMozgWSMn2K/vFrgwURjG92IhDXJ
    bOzEDyx86/iJosMn2glcb9eBYGrmz92H+9a1Q1xMyuk7uD/+nFcJOj3GqnuFK54L
    //A6ott10Ddgg8JB3jehrzrOeg8/IdPifhT845X9q24b3kG0orzCIOk0/xyUyps+
    9A3j54Fp/atyVmHFPRedjGMwYPIqKQvFnzYuaoN/NT1yJZEFbyud/h1Kpi4+Z2/C
    Te9glz71eqlUSond5WFnLSd7GSuUxXprwC0bGQ61tASISQQYEQIACQUCSg7+JQIb
    DAAKCRDMcWlUAz+jPNDzAJ4lJdUYDs8aONEFRW/TpLMiepzPqACeN0HmbLJjwaVk
    tI1h5vM9MqGGVwo=
    =p6fK
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.225. Gerald Pfeifer `<gerald@FreeBSD.org>`

    pub  1024D/745C015A 1999-11-09 Gerald Pfeifer <gerald@pfeifer.com>
         Key fingerprint = B215 C163 3BCA 0477 615F  1B35 A5B3 A004 745C 015A
    uid                            Gerald Pfeifer <Gerald.Pfeifer@vibe.at>
    uid                            Gerald Pfeifer <pfeifer@dbai.tuwien.ac.at>
    uid                            Gerald Pfeifer <gerald@pfeifer.at>
    uid                            Gerald Pfeifer <gerald@FreeBSD.org>
    sub  1536g/F0156927 1999-11-09

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    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
    =3Uph
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.226. Giuseppe Pilichi `<jacula@FreeBSD.org>`

    pub   4096R/8B9F4B8B 2006-03-08
          Key fingerprint = 31AD 73AE 0EC0 16E5 4108  8391 D942 5F20 8B9F 4B8B
    uid                  Giuseppe Pilichi (Jacula Modyun) <jacula@FreeBSD.org>
    uid                  Giuseppe Pilichi (Jacula Modyun) <jaculamodyun@gmail.com>
    uid                  Giuseppe Pilichi (Jacula Modyun) <gpilch@gmail.com>
    uid                  Giuseppe Pilichi (Jacula Modyun) <jacula@gmail.com>
    sub   4096R/FB4D05A3 2006-03-08

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    mQILBEQO5zIBEAC35pBPGhBBgx/P1hqxQK36nCgj7s4t6H9USqoaW2KoT6fdP/I/
    KiGTTWMIHwTRAcyvXp43HjXqn0dPE8a4hGXAizpIjFCw5h1Aodga54znJD/FTiNh
    VKBajUyzwSddcDYVb5i2dt3JDOJ4iTv0at9FlkEX7MiluWTXy6x/T1ZZqqoGmxek
    ZGH1hgBoVP5nL5b4apKdCnefvjhTC+OYis+0+tOY94+uDGwBlWVQqA1di0eNABGy
    HbFwSCx2gEW6Rm4X330PKOYKFZ9K4Tup5XEUStvN0ka+dEzFjEEzJS1wvx2+Kqe5
    XXi6PrP8fSIOelmn5dC2cLM+gCs9TESPp5pt50dpRWpp/FTPNWstauhEFYU1H5X5
    gAul+2oQsVagyxw6Njl8VkeqUHGlhQrxc/CusyUHNuIb5fwbj0ewe5g++E0U/CW5
    E7ecYTzVaUfo4hU0/yQvxQCjlR3D/RYOgcPBCgmjiMkbTigJzGyOXWAEI0bR/c2C
    E1RT5JIpAs2PZvfbVAYM980aUA7dvioaCGTKeJfcgcCy4vWobJjiB68YVmy+UcTC
    EVCB3jwqagXOtscud6whmx0A3qvIxo62PyHWcdNNnz74mQo7sWwIQVNaqdmR7Ylq
    qe7rUq/xSghwnR0Ut8i3jzoNUdnpko6aYmKk1WxttNxPedVJdLD0u5JnVQAGKbQ5
    R2l1c2VwcGUgUGlsaWNoaSAoSmFjdWxhIE1vZHl1bikgPGphY3VsYW1vZHl1bkBn
    bWFpbC5jb20+iQI7BBMBAgAlAhsDAh4BAheACAsKCQgHBAMCBhUKCQgDAgUWAwIB
    AAUCS6uDJwAKCRDZQl8gi59Li3lvD/9XqXvy7hahe+FE+CW3W88E8+ikfiJS8Qdn
    gq0IAAY0rD3Wl8UqGJeiwbtSC7y8Bs2mq25tAgRpH3AM9bER8jOnrCiPviaYsljE
    opgWLcwKxfq9QKz2Yq4CsA+CMIEh0qWxeQusKE3KAUI5pct7lPLVUPrjLisdgiie
    vBb0dngqabSVYziMBHEJH7WTyZ9JC8WbSkci9DqfuLkbDDo1Ll7olmrSqqNte05q
    PkyyV1e+POwG9fzC1eBTd1WyJyhm3GhOR6hBU4yRV0LY9eN0f2jQ2knr2WEgdLhC
    DoWaUJ6CStuafR1LDtsQ4vvN6s3FF0FDnkdFe87vtEm0QwnwJ1yS+XYAUOYdPtVY
    La/lXsD+dkk3PU2sq9+pcrd+tZrteGUUZ2nJjXbPALPU+ONic+TCp0IEly6csWfs
    geQUgspULOlhiYcGZGiyE/t9wygLS+zxsunTBGMR5Yt/fHdpDdKUuAEGOIPn/Cm/
    YpXM25vGSPUSFssk3x/TJZKz6Cmr0Q2NtYo0ghKmiCglIw+yzFWNpXqLCjcRiHeS
    FXJvL+8mz2jLmU3qB7o9T4QO7jSbZfqPVhHxLRrf2oBjPwi9Rjk8Eu+Cw9g6hYlY
    WnBLwDgxi1xRv7CrXWdXxWQUW6ny4nKVgLwYInj5uZhVxS8z+QQm0dz7L0oL3ozr
    /+8IZZWMj4kCPgQTAQIAKAIbAwIeAQIXgAgLCgkIBwQDAgYVCgkIAwIFFgMCAQAF
    AkQO6pUCGQEACgkQ2UJfIIufS4sZYw/+PNvGDGwvKy5VLTT6dEc0a/Lp4JEA9sjF
    K53VT/3VZaCnLN2W7YghefIhQfAc7slgBkTo2YSjqxKo4Mvl19uMnzyS/6Q5cxni
    Xmgr3TyKIiihvDoaFroeCEOAYRCbinQCU21XbuBtUAvbCZ2Zp80ljz4Se8POrwia
    1QC2Kuyl4O0y2Of4T5x1pHBWZyVFB0kkKoF462OEdytlI7g6ZCcMSoPJfFXfMQYl
    dUmIcnK+IhERbfXZjpFJDPr7WJdF6Ef6dPxtiv5u07Sq7KVOXsndj37DhwZFOhpg
    DSwxMohwpCypg6FyOGkvRYuOqo2efbSu733vjBMJsW8uaojjgaBu92rVDyt82YO2
    fs8Q90spH1MTMAiU+UVzgY2SiR8Xt5o84BW4QNMIaBylTX28H44qi5JdpyhvruKq
    pUzUVVxAgTSUZkk0H94mgEVBd3foImpIi/WD6kK1dQHB8t5gtF1E4RiWdASN7Pl8
    gtLF05Sh055ZotUK+5MxdowAgXR7rX2n7rikcsY1mkhdSgRH0WJJkrasone99LCc
    zo5JKRgTaD40P+amep/6asiIV3bCnMEefTitk/7oNNG87teTU2bwPk3WXAx67X6G
    BaDg6RaXZzC/nUwIASS7R8koCrWRcb/JDnY32wA4whnrUV/H1vSyoPEbSZEUUFWW
    2Kpek1CyInS0M0dpdXNlcHBlIFBpbGljaGkgKEphY3VsYSBNb2R5dW4pIDxncGls
    Y2hAZ21haWwuY29tPokCOwQTAQIAJQIbAwIeAQIXgAUCRA7qXQgLCgkIBwQDAgYV
    CgkIAwIFFgMCAQAACgkQ2UJfIIufS4syLQ/7Bh++UiDEo3SIgkhxQOE0Kqi/FR7A
    +c5HDUFuu3vfeH8Y6nU+mUmcEKzqAUZ2ar4FQdJqu4hb79Z9ej1AKN+BvhPN7joN
    PsoIKUQB/tihberMami1r346HJDA0hlB6Fowh2mJitjk480DSRdGItXkHDX1wCx9
    HJqjB3itsD8xYEFJIyPyn7NxVd1iQTFQJ4RtcI1kQ5GNMWZDWPGTQNkBDb8piMbQ
    dywgZC99VYkswBBJKhIKkGLuwBTcHqETXgbNfqHg7PS/7DbCkGsJVjGuGvnXtFRd
    NO6iYi7+Zw2anUH6YoziAM5mqTsYaGNzA3/lP3V95PBckEdNzRIBhOye7l7tCJM4
    QWS6J40Vbx3InSJkLaD3c8SEXuW8Ce1qJ9CxjG7FKtmMMNkiDhbwWcH+AlV2R7F8
    VOaqwwAN1eXnEdVT6aoY0ZOtJxRCtNJiJbrUiecEdP0P7+KsrCDAEn/qBCxPP31+
    MwNczfDMoVOUSwi7LDM/G6aJK/hvBpUK5ArMDRb+raFX5FmXTLvk/SuN+ywhk5tG
    xtjZ2lHAZY4Ragh8A1GzRSSM4pRBjGwcLAigRFN+37uVb8PEgKtvUQ3x0BDrz5i7
    Vrngp2TfKdyZ9zp5Mssiff6XNu2Zom5mJSJ+gEPmfetpRNjfZfGokzzxB8kAZuKZ
    1crX7uKi25Iw0Bq0M0dpdXNlcHBlIFBpbGljaGkgKEphY3VsYSBNb2R5dW4pIDxq
    YWN1bGFAZ21haWwuY29tPokCOwQTAQIAJQIbAwIeAQIXgAUCRA7qeQgLCgkIBwQD
    AgYVCgkIAwIFFgMCAQAACgkQ2UJfIIufS4s6VRAAl4KooildQ4IOQ5mQHVU1Kxkw
    oeBvLAYxNY4Ru861Ey49Za5R2v4fszPFtrM+oFBF553RMK95JNZPvpyyeqoCsC9U
    ju0jt+5KGq/BlEF6Xg7t99OgRegGn+2PF4yiUn3kDg9j03BkSY757bh3dWoVm/KT
    KsSP6azbDGUGUkIvyqgGjfj1x3UbIMj0MddPMqD4AotgDw9VpC1AQ7wqCBOfi1X1
    U+F8UUcM3uXXR+csZ1xZ1QYlJtEifGHXe69+bv5u3urOTvXSGWX+29Dbh604Jjxr
    SPaU0jDliR0BmGFTWJi/437cGWFuP7xXYwD6MaDkCkLiBEjM95DXfkhaG8boRC5V
    v+/BCWmRHGdS9YAPOl2y146UWWPC9KOs/s8VHyjkahgQFqJfN44WEYDCmgOwFy7i
    4h+IHPZDNnBYz5brm1UpI/453B6LM0suWUni5gjr3UtA/sZLuHEM6zNWVadUFaee
    Tu3HE28GneT4bJlO1cFxaJ5ovdX8nGISoit1SfTEwEg6osGj5bVhQE8FfeOQnHbG
    Ho06Yr86ZRnkO3rG5YwPTCTHZhtlGU0TaeebnRt1QU4Q3dA2zEuFgf28WTLNCP5q
    sxPz5WPtUzEdT89JDd2g81o4Cgvvkh49SO3Arh/QS3fl00BlHTCnDudpuLG7aQ8x
    IpxY+ryc7ZXWJGE1CQy0NUdpdXNlcHBlIFBpbGljaGkgKEphY3VsYSBNb2R5dW4p
    IDxqYWN1bGFARnJlZUJTRC5vcmc+iQI+BBMBAgAoAhsDAh4BAheACAsKCQgHBAMC
    BhUKCQgDAgUWAwIBAAUCS6uDJwIZAQAKCRDZQl8gi59Lix/GEACqUsPsYt7nNASW
    d2KE7OYKgrSQXHPstljutOJFdpOJ2d44ZoI9Uk9yaBvfw+Eqt3nnePZkBGZs6RM5
    vqfhv92Pzr7irMhLJSjZ4HAhi1A9weYpBLB4CehBdDrR2mDCZZLkyJro5CZPhqyp
    206YBYTcK989iFowirI9WwfqvH2lFQvpBHLF1xOfTBQxs4iRFuwv59BqhvdCbg25
    U29XhEo77bwzGPnSx1W0tIwk40hj97DpD+GhbmhZngXzpNy3plr3cH1iioViDgCo
    Y5sEJal2Ba5bRahNfqi2/GRhM8lXs/FIPmJO7sMM1SjwSyN5eb6aIYecdNeCphmD
    witsLttzqqDIk8jcwZhlzPxIRSWo1QfsLc6omoHn6toB2TT46ro3WBt7UTNGnhmD
    70Ob2RhaVrsJDq5MLvvLTNsHlALdcmzTJy5q3cadfEHytLb8ErbJxhP36cYSGXO1
    5Ms+E2VFfVaQTvhiezm/3C7Tnv67wRS1rUkBxdClrPRMnqitQyx5kzMnbTUV+cex
    SyUxLeICRyjOPPsKcpO7PeFSnwHyp3SiXBh7Eqbrmb3yWYZsI/VqI5vqJMVba/KM
    1Njtq1KtX+lz4sQEeX4taqLqijUHokZpafcEwcUNXiIcpkY6WnuGnIdmfcWo86q/
    W1mH9tnNW5PyEUubqNyv4tbP+GPKB7kCCwREDufuARAAvX3EFmlazvh+BpwJGzMe
    0xy+KEZo2nh9c9il6PYCaJkcvsL9bKnfJRLDQaZGTXB7zItYFun9z8XwpoHd/UA7
    vyLXmEpTDeA0umUvxvHRb5qjrEvzMX6v7UBDEJdSpkOHDxSIV7JJfos/brQayxsM
    wky8RrkijveeSfXQ6+w7ONRlQ/rT5hp4T8VnNLNGXo0OJUtMBpTXgQddWK63bcr/
    fbGm+IUXiCjsZNU/C0VYfvSPKdnoA14dwYhixrxxs0tc/LpxLDI24Hs5ertI36rQ
    o9Cuxj/zCI7Qdn0B7/9rP+DYG16gtHnSJOwNz3HTdBePi9SqyaEYfYol0T4a2aWs
    Hlr+MRf4TaYd5Q+r/RawWE6sSOvTjfY8EpdmrINDxZTMRvTq0jLb8kiUIZSZcTGT
    D3mxjNNG/vsb9+C2IwdOr6dukAmXyNT7/V35GjlS+TLxyLlNpJ/BDJMLR1nvVLrz
    GeYzE0sBJ1kEhzFFBAb5H/5bCG6DLSqYbjHRzTEySsPZs4vwaydBRou8JNj5ykrG
    6B1OS8lDHwsOz0k0Dzq8w6aQOYLoe0p7391++hqAtHAbvtpuvXwrsvrgwCvLZ26r
    hoNo/57InscRTFXFjIZOlbA68aHNyBlY24TU8OP0bpj/fMglzVRrU2VSpkLsUDzV
    0AvzYz1Z+koQglAsdyEw8D0ABimJAh8EGAECAAkFAkQO5+4CGwwACgkQ2UJfIIuf
    S4vlxg/+PLV9macXRHd7gW5IyTUjUBTUQsrVBt472V908Av84cuPIymbQOKq4wPy
    Dsub+ivenle+5gIO20wMro2eEfLMb0/u8Q7H3wp20bX0nphTtGTgBLom6B6yQj9l
    hz4cWleqV81UOg+X2sWPxewHAuvLi9xi4OZU+xnEd/Q7n5L6ZeG62BJ3LJJhzoq4
    T4Z5HkxT60AJnSrmmy8AGpiqo5tR4d9ojclrKqUzbOMFb2plruydbBLyn9Cl8XLA
    FQ0HGCmIH0Fh0lBEylK8nyR7hRRsnQAujGaaAZOs6wBjQISDk7NYQwUkUdTTHpbr
    0LbrJbfpoORmZlVZqUMcuYxukE1l+Kteeb8mLabFZlMvsLP5TpSlgJgoBNaPdnAX
    92AwNmtMYbOvh5qCEsqiBV0tR8rglbxUg+DIvUHBF4ZmBtoqO59KX+7t2Kg7bopS
    1rj8Kbpoxrfkx8SxEU3UexX2cUJwWrxhLe2vdlgA4IQmLWQOXPy6ckZng/sLU7wT
    DA3HKknUdjCzyNhGvdreAXxGpXaYguZIMU79jT0Zu92azOKxMYSlLqTEqXNeFvjS
    imHuzWOgnhFeAF56AEUOXquw4YqN7DCD0jsiamMbU9Rxmta1i59OVdrXKO61EmFa
    Z8VhMQ0Xfpv8p6kgxG3PEbR9wWq75cRBbNOEApw6YpKxlRCbKH8=
    =jIdO
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.227. John Polstra `<jdp@FreeBSD.org>`

    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-----

### D.3.228. Kirill Ponomarew `<krion@FreeBSD.org>`

    pub   1024D/AEB426E5 2002-04-07
          Key fingerprint = 58E7 B953 57A2 D9DD 4960  2A2D 402D 46E9 AEB4 26E5
    uid                  Kirill Ponomarew <krion@voodoo.bawue.com>
    uid                  Kirill Ponomarew <krion@guug.de>
    uid                  Kirill Ponomarew <krion@FreeBSD.org>
    sub   1024D/05AC7CA0 2006-01-30 [expires: 2008-01-30]
    sub   2048g/C3EE5537 2006-01-30 [expires: 2008-01-30]

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    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
    6MXOtw==
    =3Md4
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.229. Stephane E. Potvin `<sepotvin@FreeBSD.org>`

    pub   1024D/3097FE7B 2002-08-06
          Key fingerprint = 6B56 62FA ADE1 6F46 BB62  8B1C 99D3 97B5 3097 FE7B
    uid                  Stephane E. Potvin <sepotvin@videotron.ca>
    uid                  Stephane E. Potvin <stephane.potvin@telcobridges.com>
    uid                  Stephane E. Potvin <stephane_potvin@telcobridges.com>
    uid                  Stephane E. Potvin <sepotvin@FreeBSD.org>
    sub   2048g/0C427BC9 2002-08-06

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    mQGiBD1QNM0RBADbw1IMsD6ShBkXQirwG9TUFkBfZOaGUB9nZZTGZzkDWsj9/8FP
    TacAKze6REEdtfADFyYolZrps+o0xVUI3ib5kzXnzz8yj41HTzR7PG0FcgINt5Ls
    yuq+d3ETSu2AALwNfolKy/9yIIcRFl1bI5cawOua5MB4VUaf4JHiyOikfwCg/zsO
    QReMvoKLcZkn9pcCH6EZHtkEAIxZKMcRaIuGe0vF3oP4GfuEXIa7K7R9ez0u3iiD
    inNPQ5vQuY0qJMLbZAu6wyqEP9wVXCdAiclBbPYRb9tabcV5gFkuXpLvq5E7pGkN
    hRF/rUeDxf/EKIklqe63KNqgzMZ2nM8lvoDkUrdSQL5dc2Y5a6VIq22QsgaraYmo
    j4p7BACAfCiZjND9VcNAQmTvEyNGslQ63gzUfE7D8Xlx2Glv4PP9AmZ2X+FRliY4
    YaARKDK+62bNTrJjQGiaIzz9LsFV5zpYvHBQ9KP6NIp5bP3ljaUwyAJt5+GT8sGZ
    ZOBpSmau+s8RmSPajjvSwACjWF9tP19IJMtnk+pMn1SGiVbMA7QqU3RlcGhhbmUg
    RS4gUG90dmluIDxzZXBvdHZpbkB2aWRlb3Ryb24uY2E+iEYEEBECAAYFAj3s8qYA
    CgkQpvaYsfdm3ZH1VgCg3x3Qbvq/n5W/xonGXqI6+LJXLw0Anj5AgE0GPTC1naYn
    KpFmD9Hb+m6LiFgEEBECABgFAj1QNM0ICwMJCAcCAQoCGQEFGwMAAAAACgkQmdOX
    tTCX/nvccgCeIGN+hK7GND/4+9BbHpXOOnnlsJ0AoOavUpZeUj/t6pw+ld4CU7t5
    iUrhtDVTdGVwaGFuZSBFLiBQb3R2aW4gPHN0ZXBoYW5lLnBvdHZpbkB0ZWxjb2Jy
    aWRnZXMuY29tPohGBBARAgAGBQI94tEZAAoJEJnTl7Uwl/57WiQAniYT7h0K32tZ
    1+PkyM0UUvu/Vg3JAKD2VXNsiI3w3o/xm20IqR/UwZtAVLQ1U3RlcGhhbmUgRS4g
    UG90dmluIDxzdGVwaGFuZV9wb3R2aW5AdGVsY29icmlkZ2VzLmNvbT6IRgQQEQIA
    BgUCPeLNjQAKCRCZ05e1MJf+e0K7AJ9YssAR7btTX0oE9MNYYVQBbfYNpACfdyiD
    QeQhD+7FNqs4cZ+GEsWMxJ+0LVN0ZXBoYW5lIEUuIFBvdHZpbiA8c3RlcGhhbmVf
    cG90dmluQG5tc3MuY29tPohxBDARAgAxBQJD6jKhKh0gSSBubyBsb25nZXIgd29y
    ayBmb3IgTk1TIENvbW11bmljYXRpb25zLgAKCRCZ05e1MJf+ewE7AJsEexwRGNC9
    uR8JUPjttVJG012/VQCfVg4M1xq2+h3Ys/DecKUVxt0uVsK0KVN0ZXBoYW5lIEUu
    IFBvdHZpbiA8c2Vwb3R2aW5ARnJlZUJTRC5vcmc+iGAEExECACAFAkXQf8MCGwMG
    CwkIBwMCBBUCCAMEFgIDAQIeAQIXgAAKCRCZ05e1MJf+ey10AJsHFjVs9WEaui/i
    L9xfITeCmwkd/gCcDlRcmGUW3ov/jmeDzGFrE+MQsqK5Ag0EPVA0zRAIAPZCV7cI
    fwgXcqK61qlC8wXo+VMROU+28W65Szgg2gGnVqMU6Y9AVfPQB8bLQ6mUrfdMZIZJ
    +AyDvWXpF9Sh01D49Vlf3HZSTz09jdvOmeFXklnN/biudE/F/Ha8g8VHMGHOfMlm
    /xX5u/2RXscBqtNbno2gpXI61Brwv0YAWCvl9Ij9WE5J280gtJ3kkQc2azNsOA1F
    HQ98iLMcfFstjvbzySPAQ/ClWxiNjrtVjLhdONM0/XwXV0OjHRhs3jMhLLUq/zzh
    sSlAGBGNfISnCnLWhsQDGcgHKXrKlQzZlp+r0ApQmwJG0wg9ZqRdQZ+cfL2JSyIZ
    Jrqrol7DVekyCzsAAgIH/3fG4jw0qo+iUk3wwS3oLPf5USbiPYOjUZ9jpaII8pYE
    iH7i741cPL8qNpFgshJANd4sz3Iu/hu3xj8aWaZ+jDOM674U69lcv1hl/rrHESIR
    oHIwfjmExLtnFl/2NvQ7uKM2jKoJNERtbi5P7PfLqD2Y8xK1W8cFZmPuD404SBRu
    ubk5BrYXv94VU8rxE34uhOEuAW/I6uv7DhCcr+bVJzJQYCsHxHh79kHsHEW6KAGb
    W34S96t9m8mgl7Kb+KCS7CqmqlmP4/itf/26wfXf5ynhRrWpUuc+jbf6n9afjjzm
    0CWCBS6/f2OALgJX+J5DUG5TggtFVKMMQRf5Bv79F0mITAQYEQIADAUCPVA0zQUb
    DAAAAAAKCRCZ05e1MJf+e4YEAKD8ArLrD9l/sJDn45ZDBjs3PxAEWwCgoy+go5Wt
    0MmiyLIGfKRYTeFnh6A=
    =AbPN
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.230. Mark Pulford `<markp@FreeBSD.org>`

    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-----

### D.3.231. Alejandro Pulver `<alepulver@FreeBSD.org>`

    pub   1024D/945C3F61 2005-11-13
          Key fingerprint = 085F E8A2 4896 4B19 42A4  4179 895D 3912 945C 3F61
    uid                  Alejandro Pulver (Ale's GPG key pair) <alepulver@FreeBSD.org>
    uid                  Alejandro Pulver (Ale's GPG key pair) <alejandro@varnet.biz>
    sub   2048g/6890C6CA 2005-11-13

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    mQGiBEN3W2YRBACt8uucrC3Gv8Q2PoAppL0Gdmy+ufJkvp+e3QpNnEvYPU7jivtZ
    MBuMVzadeiE2FMfzAhD90bLOxomZSwIKAc+uiMqqXrciOGMEBFFcHNOgHGI48me3
    fBvzQ4weJjGQrdUVOuQOtCNEmPHHdXOG0Vks+2ZD2czYDmixUkysso1gXwCg5ETt
    H/u9qXgKHxwQN1znhppBHu8D/2/ikj7Y8S5evZauwQ5m1qBMz7GS4FyXH8LZPPC3
    KJW9AHiNSOl4a0g6bH17OTaa6OOljyO0MzbM0UQDJON9JvGLH4q3ML0QQ145yfvQ
    fxLbFMU0B3MSOgFUkpRrWflbsleBp0BH6MCUNzdhDVgyQxyLkyr+mdX6m7N+EiF1
    m882A/9hz6+cmex12xdJnhx/frVL2Ji2deY4JntneNcZS7FBCWCe5d4weYUlLUJa
    sAZuwe/8q5BftMfHXeJzwLc+8zJ2EU6HEX7QdJTezSb7Mjh8Py8T/7TkyjK9LYJ7
    hg8BSx7hQ0xo1KJoDx057GjkE2PGW+ngUyAExGvZHc4Gos3lgLQ8QWxlamFuZHJv
    IFB1bHZlciAoQWxlJ3MgR1BHIGtleSBwYWlyKSA8YWxlamFuZHJvQHZhcm5ldC5i
    aXo+iF4EExECAB4FAkN3W2YCGwMGCwkIBwMCAxUCAwMWAgECHgECF4AACgkQiV05
    EpRcP2HiqACfSVe9jQLEj8zM/iMLO3S5aLY6EawAnjIo6VapDopNW66BjRzFKQ+D
    P56HtD1BbGVqYW5kcm8gUHVsdmVyIChBbGUncyBHUEcga2V5IHBhaXIpIDxhbGVw
    dWx2ZXJARnJlZUJTRC5vcmc+iGAEExECACAFAkQy/PwCGwMGCwkIBwMCBBUCCAME
    FgIDAQIeAQIXgAAKCRCJXTkSlFw/YcLPAKDTcYP8Uso5mQls/wFYuOsfruyyXQCa
    A/xZlNpAz+akVuPQZRh4qqHH0nC5Ag0EQ3dbdRAIALqYTavt1809JFOCuiaOZBeC
    /qK5Hvi70rgyIyUJj6q0RrC6FzEOTKGQIaLZSdxhG50lw2KFOCkq0ARfhdrezR0a
    0WQApeSb63hd1lvOz8ocyPkUI1IKc7aD0aQfcplaf3NmQJ6HF0rEzenRUoxy3mro
    R1yddUO/HosbvaeSCRabM1ORqx/G3WFfmX6dHuLltvbModDmOr04QbQ4+gctmplR
    qtk7eRXAFAG+Fo7lkhF0z1KUFQF56kL3rDXaAQzE/Vv6Rgk9vOYGXLJQdngNIXhC
    KVzrkqrZXj4El1gfSR1Dl32AzZtY6acGF2GvMGm2R2udTHsYeyCYXKlBRu6xakMA
    AwUH/iRn8SsuszctzdLqNxideej+9FQ+nHaMBw3Y+N1tlkHeDVmPDNiTotOzYo/V
    aRhW3bAebwEQr5bOs/6bnDrK86b2PUuwC/XtE9nXF9f1QQvApIyKzW6VG/FsQIpd
    +5lNWfRDKmoUZpMeKg9bQCjeFk8tFXsnp6kn8NhEAMCCeDwiWYUl8pcFlNIwPs1M
    brkZ7QCbA8OFAK0YkzUqYmvKPIS2SjpMA+uPJ0674v8kMuh9VhcQj/1RKKR0q2Fm
    sUykWFoGEp1FAVpMkKa2cKS3vYgpobMjVYeMWhsWXAFM9hZT9gI5oKVo7ECUZEBO
    f9dufNDZ1UHAHlAojMMCW53/fGSISQQYEQIACQUCQ3dbdQIbDAAKCRCJXTkSlFw/
    YY8XAKCxojHrj/8OzUI3PFFTS1/afkj3HwCgz5wfMMjyDZG8rUt9ZFbUVN/RPs8=
    =iWC8
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.232. Thomas Quinot `<thomas@FreeBSD.org>`

    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)

    mQGiBDfqEAgRBACWuQA8w3jSz2SOXCzzuggBpkXadlyswhNi5Jce1auOqiRVw8gD
    cTlIWLpboHFyJeF/d5A1UPjgmiexRuyyukyQn30Z3bx5MaWwojJb/K/4ppguCwg0
    6hXIJoT77FpOex8WySQ4nGK22+EHp74utDJSp6uj4QxWYhXJ+/LraUyhUwCghdgF
    ByPm2qwPYbiNJaeLyJNN8oEEAJEOxTHuXlB5HUzFSOPOYFIxzpsFkbUvpqEt2Ug9
    mgorHqgcmeP98YWLwMFznLXehyAjtvoqRYWWHepHQwaeqx6ZpwHdStPXTi5mb3ih
    Rzz90yL+2ctf7nnd7rc8bveN8gzlRAnHKjyjSkC9DXpBWd/N0P53XPoqdm+WlMu5
    XC2IA/0fVbpYQfcbiFf9O/FMym1gWqF6xemtP3ClEG82yhAU2kyYnmdBQj+OYaJO
    eTW7RSptEfx2429HgOU51JHn4JGEf1U14Qe67X0I1jzIPKHxLACWwVxezbbW2ljm
    snPDX9S7QhZgZFiQRD4hvV9h+cK5EYb0ee6JW6rX1fK1FAyt9LQnVGhvbWFzIFF1
    aW5vdCA8dGhvbWFzQGN1aXZyZS5mci5ldS5vcmc+iFgEExECABgDCwoDAxUDAgMW
    AgECF4ACGQEFAjfqEAkACgkQAE1UuDk9JGm9TwCfQu87Wzf0dxpjtI8FsCGpeZsC
    aL0AniDJcaMKrNDhV2RYGhVWnS2QMgU5iQCVAwUQN+oTTN4fokUTQBLdAQFCKwQA
    qYJH3xn5saRMS3vCd/OSgho1sYT/VpqSRKqqK+++TwnAiddP4nIjJ801qi3xmj/x
    asZXY/t6t9c6F/V+zyi+605FiWd1zob7jCCk+NGmSCcBdfu2QDJfbSnQEkkDDyIM
    gDFp0a8yTChd3khAqrEyKV/nurTi0CFuHHUlLNZvJGOIRgQQEQIABgUCOH8t0gAK
    CRDNwlt1HkPUTkfVAJwKlx7U/PIDLugWOC7y4ezhd+8L+gCfVQN19+VQjW99tlCJ
    UTrCe389PpmIRgQQEQIABgUCOIBuWAAKCRCBvdPEDh+beVnhAJ96FGBEcsxgYqjg
    HOaGeRKtOygYaQCcCreBXTmJ4kjI6hwEXLIZEOriL3OIRgQQEQIABgUCOIAAWgAK
    CRCCvws+sGjBN14fAJ4s8KTGnb5CEOih8rlPXPirmH5CUgCfSEOhLs0Moo6v0JzD
    9aNYpQ/85iaIRgQQEQIABgUCOgqtWwAKCRAOp1a1FEhD9ZcFAKCAtkdn9HmB1AO4
    htYQ4WhU7wbpfgCffOzyPPNIEQEorZg9q6fSAhMqirqJAJUDBRA6GWTqQGOdg4uP
    VMEBAQJtA/9K/+oQfcjiLtasv2CWsRj+ueQJBCqnsScTgQpKSZX9xZhqLok6o3XP
    xeM0iJtyz4rjAwI/hZioc6+o6K/K1OKn/1Lyfzj4KtdW9tevtAtwYFcetQNxEtlB
    33GgIBo+GgJ9JhNzXnqPZdV13WQRdBntpJGkezIra+T4nES+rptdwIhGBBARAgAG
    BQI7HkUGAAoJEDoapjWQmlQGPGMAnA655jvZwLDUWTAH/5Xhl6LyMGGtAKCffcLQ
    2mHerpCwXzWKNPs8me2bs4hGBBARAgAGBQI7HpFlAAoJECwYoCq0xfN/GZkAnR9x
    NWIvk5tqG2gwREX9yRuj0b4RAJ9xtyb4+Md0hYbC6Ygb5ezH8ZAM8IhGBBARAgAG
    BQI7HmMFAAoJENyRPZhd8DFn5BIAniJWbZXPO5OoMAdBeS72QriYbAlxAJ4m7HmD
    APcikpX9MV/o9HqxR0Nd64hGBBARAgAGBQI7sdvrAAoJEEClvu1y0Dyxl0AAn2jY
    qYDskpmBvkuPYC59Tl9fzQmmAKDGF7+cP2FUvtxmZ+l8iTm/g50hBohGBBARAgAG
    BQI7uInSAAoJEIYHkD298KrQUCMAoJs159fBsjZh7E0sGWE0IAEdwH0gAJwIcsJp
    U65HrsSIbVbvmD+lbwa2tIhGBBARAgAGBQI7xx4sAAoJEDBZv5LNN1b0SbwAnRdL
    ZcYR9OuhqTW8rEs0OpcGTVCVAKDswo+6NOzugNZLqZIfF52RjkHfK4hGBBARAgAG
    BQI7zVoPAAoJEFPlmVtRVTMKRYIAnjgLGrRo3Zh/Fl/+ODaABypF2Re9AJ9U1h4T
    FINLAY9569j0rqFNr5gD/IhGBBMRAgAGBQI897wiAAoJEPEzIkEbgK3mUvIAn10j
    BuF/A0y+gVesLfsIDguzfyCcAJ99K0azFbXYSUZ5/XJSJlBRhZexhIkAlQMFED1i
    DHoA8tkJ67sbQQEBzUwD/jLSmpWIglpBi+F7G6OSXXE57BHldGBoLWTjK4oO8rvO
    4zBoC7QoqOQSLuC9NjrjRFlSWNWR5O/xOH7I6hSE/GSt2mmIdUnEAfgplJ04r9qJ
    kBTE5ix/XPc02uBSkgQv3TGdqr8SNu8trSa0AT7vw78kKOj0TVw9Ap7DCcKzYsTG
    iEYEExECAAYFAj1h5oYACgkQiONoszDJNIpI4QCfeqYp+usipwxyPtDNKsb/JjlU
    FekAn2GxcLbSsS2kW6m5fqa3V/Tw7k1PtCFUaG9tYXMgUXVpbm90IDx0aG9tYXNA
    ZGViaWFuLm9yZz6IVQQTEQIAFQUCN+oTswMLCgMDFQMCAxYCAQIXgAAKCRAATVS4
    OT0kaQ/MAJwM8fztZzPR2wWY6uNbBeZhe3J2NACfUWj1hvToUB6cFPY/Eer4mhJp
    wziJAJUDBRA36hPT3h+iRRNAEt0BAQK5A/9er+qYqfrZRJCkXRwT8YNpt4Zi087Z
    jyYMZR2kYAZJUA8Q/YBoJuPqkXlsx3kWmyDe6K6jP1eMJiWNbrcH4m96IeUEbhlD
    7e+LGpwqYjTbp+7pwfAHkpAQXkB/vvo4Gitcb5Pknvj+YYPsEDuSMQxbBL1rWAhc
    1JhROiaWE0vdR4hGBBARAgAGBQI4fy3YAAoJEM3CW3UeQ9ROYR4AoLUZJtftjz4n
    +wEo+H2hCN+UN9duAJ9Yb8lWmH/ZIJqLMM9PiXU0OIz01IhGBBARAgAGBQI4gG5b
    AAoJEIG908QOH5t5dbwAn2A/LWelybp46IxdWKYjBvd3m3PaAJwPOGcJengwi4St
    b0SjNXaxUq4prIhGBBARAgAGBQI4gABeAAoJEIK/Cz6waME3UFcAnj4lGBYFE0n2
    8R9GA5iRf+gcT3j7AJ9ob/SnIaS/TNI+YM3QhiAV0PWdqohGBBARAgAGBQI6Cq14
    AAoJEA6nVrUUSEP1KkYAn20CoeTxfh+w+DuohpfN4G7b1NHVAJ99wSZyYcMBZ/fb
    O7cMKc7q/c29HIkAlQMFEDoZZPxAY52Di49UwQEBK7oD/1kkDsmY2V0/eVpdsB25
    Ua6YmOe81hm1/jDSe0869wDWDwwdyzgpVciifPDqVIAl+2uzawrazkJUJaYTHaTh
    WPJe49pEkrfoBlymefaPfzxkZc8VTsiyecvjB8yqgiWkVKIOoaTnfsaL28YX5VR+
    oMQwR8iZmTdyTqvBOyaK0DRyiEYEEBECAAYFAjseRQkACgkQOhqmNZCaVAZyIACf
    c4DWUuct4pEosdStBnb1nTrgBNAAniFY/KV7LQUOK6Cd5fCg28T3ZFetiEYEEBEC
    AAYFAjsekWwACgkQLBigKrTF83+UQwCfYxx+gCEwSQVS1Wf99OI71i5Qr/kAoM1Y
    pc0h8oQW9eP2qB7i5OmM4RY5iEYEEBECAAYFAjseYxkACgkQ3JE9mF3wMWfwNgCf
    aOsZeRQ55p5AxfH6dNnUFztuLQEAn2OVaJq9x9nlNaVHHhtVvBSy3e0JiEYEEBEC
    AAYFAjux2+4ACgkQQKW+7XLQPLGvjACgzjpcmwMr8D70XsAcKzRlGBs+LBEAn2E1
    s8k//sWpelo/XZtdIN4FJUe2iEYEEBECAAYFAju4idYACgkQhgeQPb3wqtDMgwCf
    d2qtQCT/RP9kaJntGJvdXWMZYLMAnRDRPUjUbHVc9gMaH9lLKX9rHJ1CiEYEEBEC
    AAYFAjvHHi0ACgkQMFm/ks03VvS3yACfaVpSjmAOPFwvtf6760mrf0I2Sf0Ani9/
    WYGG3ARZiike52mMEEkhAdQQiEYEEBECAAYFAjvNWhIACgkQU+WZW1FVMwowNgCd
    FMw/T9fCkIzXC9GM/VYn+FMVb5QAn05iilPJu0CpcLfsXbJRS+E9JK1eiEYEExEC
    AAYFAjz3vCUACgkQ8TMiQRuAreYX5QCeIqv9hIM4ta/kt2abewVyqdMDt/QAnj2X
    YppdAV7y783u+hBscbmr2hHPiEYEExECAAYFAj1h5osACgkQiONoszDJNIodbQCf
    Y9l9H+W0hQyFTER1LcCppFTTTBMAnjtsPJDc9eq1jKwXhTIUkWdBCwjptCJUaG9t
    YXMgUXVpbm90IDx0aG9tYXNARnJlZUJTRC5vcmc+iF0EExECAB0FAj1hgngCGwMF
    CwcDAgEDFQIDAxYCAQIeAQIXgAAKCRAATVS4OT0kabNwAJ9hD8FZ7SFnQio/uHYs
    sc+k6gU98wCcC34bEYJ+XVKB75WUMleshVtmP0GJAJUDBRA9YgwHAPLZCeu7G0EB
    AZhgA/9hC5jSb/DCB5dMWYRenA/aJkDsSsCMgAqmbFGLWzUZRgn2Bqc2uFKdT+ea
    TeeKapnSl2ppxac+odSUPTY5PWF9Q5+OsNQLOJkcLy5d2XSGoYiicVXe7smUHl1l
    tlT3+twbiwCe/3qdlsMOPEhJfUKyYRVzlsNLVlLaLjFRGY2h/IhGBBMRAgAGBQI9
    YeaLAAoJEIjjaLMwyTSK5xsAn15xwc2IBpNg6/TLBL5QzwD/KLmlAJ99rGujgTt1
    rjWreFrHtzJivbuJaIhGBBMRAgAGBQI9YgSRAAoJEPEzIkEbgK3mscIAn3PWrHtn
    Smt+NrxPPf4fJRdmzx5GAKConDEqaPYmi/DfAw1mB2vLF1lhQbkBDQQ36hANEAQA
    ija4VG1y1xjhazkHAyK/ux2AVYC1b4wEkUa3kos7YaoQ24tfO9Y7l7EA0abBM5Ca
    9v2rWb5k3ouXBuyI4C02muT/dUUfbZb9atkvZeJHWzFoBjHu5RHkCTT5Vfb6tJZr
    e/njzwQEXDXCCbEXS9JLQ2vQo4+o1sKnmb8XztsrSfcAAwUD/jxXIq3DoUgrPc/A
    c16hgLkgI5Reu7QkRIpOO/ZuBZ5ymwdFXHb/4l/0ti9H/ONUag1PAHC2+YMuuZoO
    NhVkFw5Uxm8QEoiS88I1Tu+PSrFIG9J2uzOcaVR5cWlvszoitxicR2IQIkouy9Zv
    oS9ihhkhW7P/VXoxfLFwBD0qsPdsiEYEGBECAAYFAjfqEA0ACgkQAE1UuDk9JGne
    lwCggGkRGKsB/L4LeCilJ1DO96kNj8UAn1ofH9VS6wXK83zRzJ0NJpwVsCs5
    =mFN1
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.233. Herve Quiroz `<hq@FreeBSD.org>`

    pub  1024D/85AC8A80 2004-07-22 Herve Quiroz <hq@FreeBSD.org>
         Key fingerprint = 14F5 BC56 D736 102D 41AF  A07B 1D97 CE6C 85AC 8A80
    uid                            Herve Quiroz <herve.quiroz@esil.univ-mrs.fr>
    sub  1024g/8ECCAFED 2004-07-22

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    mQGiBED/zxERBADJcZlF+Rzm8wL5lPTTPA1zLwa9u4ZZeVheS9vRGTOC6Sfi2NV9
    feWCM4TR9CVtp2tAcVlrXjBzvhbeNajssCPn94qUh4z8ERJKT1R8n4zlilTcMTSQ
    qZ9t7mIpcpsmpCO1FvfozjfexpUSeLHONKlwHhXXQFdJm6bw3X+kZKUeQwCgut4g
    ilrxtY66n6pzC7jt8GaM1ikD+gLzk88lPNHA8hZurRaYoRD2cD7jOMk0WNuuRZLA
    4LsG+hJUyrPU5vLKou+2iXl6MBvjlYwY3FS5wc1PZ9tRRbMNIq71xCTXmSapks50
    M+/cVYhJhQTVWCFhY+HZLDJpiaeMEkTHqoXo6ePVSMgFDQXADv/hMIPkNheXzmXM
    yhw0BAC75FBSMcRJz8jOaHXSZ7AM9EdMhH4mru1YyfLzwqk0DQS7ToXc8mEpo9SJ
    c/rYfSHf6Egx9856sncCfLvoTScZDwWXvB7kJPOfXK0u8KK1uZBDAqEacmm2oEHd
    Xi0KbfW1zyqIPnLKjgu57OqSGyDBKzC2XuQvWcNk7Sol/Yxp9rQsSGVydmUgUXVp
    cm96IDxoZXJ2ZS5xdWlyb3pAZXNpbC51bml2LW1ycy5mcj6IXgQTEQIAHgUCQP/P
    EQIbAwYLCQgHAwIDFQIDAxYCAQIeAQIXgAAKCRAdl85shayKgHKNAJ9/qmkJgaMW
    zOFnMUGcH/fc9ksrZwCbBhYIuo/nnHe9tC53mIlqDoXOz/a0HUhlcnZlIFF1aXJv
    eiA8aHFARnJlZUJTRC5vcmc+iF4EExECAB4FAkEOc8MCGwMGCwkIBwMCAxUCAwMW
    AgECHgECF4AACgkQHZfObIWsioA0SgCdF2eAlmqyihMQVf/T8r/x6x385vIAoIhZ
    hhYxTsWZ4dUA1XmbEfZxMQPvuQENBED/zxMQBAC8M+1oDgxVjVnYlhapOHWNMDlU
    1LolN2B9sUm56K0UaCpnCsrm2Jc/kzr1egmjqxGkV1dIih65W+oPZQOBqq4mAvPI
    SRlE0MrcPCeRyzN4zSwqwu1o0rcCWaacPpNxnG5icluD1RPBDucRPhc8gFMmcfEq
    5pgw3LU58ZIrvB3FLwADBQQAjM9l/u6o0CVwRZ6XshuJQnc7Kt+su/xyZjkYqURp
    sZ8Q9xWgKI4Tv/x+IbgkU5D2vCu6FyfDpBMWsNnSxVJ8FaHCWDKLpDHxB0+RUcme
    HRcpvV+HnLvJtF1V0dRB3XVtD8h6TcGuntFlKHFTKKQk4H5X+fbsUdq4ycNwgNm/
    IfyISQQYEQIACQUCQP/PEwIbDAAKCRAdl85shayKgJrjAJ9S1aS1G9Vpq0kYjZHp
    pFmvrw+CbgCeIgeeepmX9+n+2YEAuWfJlX2KZCs=
    =Snnd
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.234. Doug Rabson `<dfr@FreeBSD.org>`

    pub   1024D/59F57821 2004-02-07
          Key fingerprint = 9451 C4FE 1A7E 117B B95F  1F8F B123 456E 59F5 7821
    uid                  Doug Rabson <dfr@nlsystems.com>
    sub   1024g/6207AA32 2004-02-07

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    mQGiBEAlXqcRBADYFElOoUIMntNwwMiVO/7bQQGYgo0HOz2ih10GpP3iyNletvOt
    AbH7AFCB/D6eHO/pOs3khk3ys3xL618e8vxttN7/jC+GWlPb6zReE92A75iP7+ud
    aDCccDlpfsoLfTt8FlZnFuA+d6gJ48Aie5meq1T/IlFV/EJGZ3BfTyKkAwCg545G
    dnVFL0hRjIJkz6Bs5xKqpxUEAIpfe1Ik8aXgwgbW35dZPUtUNDU3OmullZO8z2BU
    HefkZDyL+y5MBO/9aGtjN+TpnhmhWcVKD7rhTsL4w8v719Kq3cGFfNL/E1D6YyCp
    /BU0/Hm9+1MMxPg+nIUkhU4HmtZGoLT71xRSendbZjCr+s31XXxA5YbLruztTRFT
    YcNyA/oDbsyMIcEemO7F2ypq2FPlnjjCISS2Fr0HsBQltedY1Kr+hfOnjYAcMfIQ
    QyojMPl3bV4IFcavIhkiQBPBwGJsj/SNgNhOek9v9c4iuLpXzzbOfO4WiRBkpUY/
    Fzefogi7d+9t/PyPVzd5Rzwx4eqrTYOeMT8TJmGLWkoUwbMe1rQfRG91ZyBSYWJz
    b24gPGRmckBubHN5c3RlbXMuY29tPohbBBMRAgAbBQJAJV6nBgsJCAcDAgMVAgMD
    FgIBAh4BAheAAAoJELEjRW5Z9Xghhw8An02BsS5+rEgyF+f+byeZy5sIrDnJAKDK
    GpoGPWfwZ8leK1MqENlxZZerx7kBDQRAJV6oEAQAvo0FvU58ew8t5XAo27wvwpxV
    pdWoKRTF7lS7ENfhwoiHVW2qsX/TfxyRw50BEtDUlFe7lBqSyskJ/3ejcVXuJ5cm
    vYmxrUEfas57AnBsJqFerQhqB2Pr6BwDUU9kpmJv9vAlt/vdX6lIkXTfvGcrSFWF
    7cDEL++0tD63ULOVQ4sAAwYD/1CUpkXjwmFkg72LddRrvmXtKxk3crql4dYj/wjQ
    JeWeZQT+HKOOIHYFENZAqC8GSfQ621DeFD+TIN9SNeBG8K1LNqxUk71QAwiYSz2R
    Cm3n97esKKD2SB0yJDQJo+MsQ7PKdQPJtCDk34x0JvA4eijiTj9yGdQX8jWi8Sd7
    H0NPiEYEGBECAAYFAkAlXqgACgkQsSNFbln1eCGOuwCeLy66OJdIebn1pU3UXo8O
    xlFnyncAoOYrXS8vPETOhlx/yeBVsgfX1vcL
    =ZXPM
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.235. Lars Balker Rasmussen `<lbr@FreeBSD.org>`

    pub   1024D/9EF6F27F 2006-04-30
          Key fingerprint = F251 28B7 897C 293E 04F8  71EE 4697 F477 9EF6 F27F
    uid                  Lars Balker Rasmussen <lbr@FreeBSD.org>
    sub   2048g/A8C1CFD4 2006-04-30

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    mQGiBERUw7QRBADJY85JY9QB4nxv3rXAPnlW59gLmWzuuVNnKBrQsoD5jq6WrDEs
    fqqU2h/JwHB06RZMm/VUSH9MnsrxpGGKbIuJ9bRn9zA4qbgP0kPCMoyb9AmyGEYx
    bIp0N1PeYni64IQH3XGaycloWNhNDDLv6o+c6e+wNnRfUv1qygKhM8vf5wCgyN3/
    KgxrTIo27FnrLDatjxYgHeMEAKtOpeyGk8VhkxXX7t6/sD1HPvDiuYLfM/14VKWB
    ZXaWcOzhytZRFbu/DDG2sMiMFdK8Xu7a1Zsfa683kmpgqHkG0FYcS14Y8yHDU1IM
    GpCRz18v8tZwW4N1npJ/vthpL1B4Hx0SUhGo2HgE85pRHdsDbhp0S6pZW2ff25wZ
    ljhABACI2/zM6SbfibbyRsvJcyW/TOfnEOxHUFfqT3SFYAP79hRBsqCN8v4fSR54
    Tf+jHv7uYVH2lK3zED3sXn2VCgjD3jJNLkeGB6qY/WnWYCB63YwUXk2igOqGijJq
    XEVplNG6ExaQIco5vilOseqWuW5ONJKMM+iEi5TpfV1cPGFpAbQnTGFycyBCYWxr
    ZXIgUmFzbXVzc2VuIDxsYnJARnJlZUJTRC5vcmc+iGAEExECACAFAkRUw7QCGwMG
    CwkIBwMCBBUCCAMEFgIDAQIeAQIXgAAKCRBGl/R3nvbyf/xeAJ98F2AdELJxK6Po
    3rTPUqnJK+GZawCfX/0jvc82JWnGwbDcpyp0+xUJ/xe5Ag0ERFTEKxAIAP2AWduS
    +WfuTAqZlD2aIzyvzZPOJ7a8ZDmUtBDxbxuBetLMqC3oFMoZ1/857wV3J7Jvxx7u
    LFbpdYS/0zXTjyKE/NWqeHIuGH9fDOIDuUKT1ZkEh+OzfWQaUihYTib330LwWP1s
    9J8zLCJM1SdQSHVDOG9m+28JXH4ITmK3LkR3zdb/QYEOyFmHfhSqVQpZ/KEBYZ1K
    Kn0gItwqDILuk4v8BvR3ioWF1Ywod6JEMAgJvwypyDlyglvVVvav8UcOYIYfyv2i
    6g2EjIqmCpzaEa3m/RumCWaCLIIeZUqpM+rIfQyKcjgU8J254dFMqFYFIX7iFGnO
    FVhT8tyNXolkKWMAAwYIAPrna0LxXoNVdwCyAW6pcNR9LkWsalQ+cCTS15jnguq5
    V6HmMHsbAIwcXqZn6benX5g6Gx68gIrSS/c3iBMS3jiauIu/bjvhdTMLr0v/jXpp
    7HjdOkgwfdE184hxVzsO0w3UeWFVhmb6sW/Wb9OtdRTj160mHj5UsCycg7Q75R20
    2sBke5vP6o22CCNOZQxM615oFDgotYO/D5I8h/x08IQHlyxzgG2VXFbb/vvibOVs
    iFA246TaRzxYjo4pJ7apRKhXWX9Bm6Tl/X3X41idqbkZXXcdOV8i1jjJ+8hvmUXX
    BTrU4DyOHeRrKD2GRBGMn8WxhPL0DN+w2zBRpRdM7sWISQQYEQIACQUCRFTEKwIb
    DAAKCRBGl/R3nvbyfw7kAKCnpl/jNh5Hx0mkJ6BEDWlmGzuvMACeM95BWxxghmcn
    J6BmOEuZ+TPmHxc=
    =6byw
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.236. Jim Rees `<rees@FreeBSD.org>`

    pub   512/B623C791 1995/02/21 Jim Rees <rees@umich.edu>
              Key fingerprint =  02 5F 1B 15 B4 6E F1 3E  F1 C5 E0 1D EA CC 17 88

    -----BEGIN PGP PUBLIC KEY BLOCK-----
    Version: GnuPG v1.0.7 (OpenBSD)

    mQBNAi9Kb+IAAAECAOaa/3k5Zo+9i/fUPQfU4fzrRFwNifp7ujcxLNFsnMgcWeJZ
    XMd6iGiomTlBSlIHeNKa+JMGPmBTRrL7I7Yjx5EABRG0GUppbSBSZWVzIDxyZWVz
    QHVtaWNoLmVkdT6JAFUDBRBDA7AqRrL7I7Yjx5EBAQSTAf0WL+tTm+n0NFF2xQUO
    ZfxpuqnERjNQY5KaWQuC6qk4UOVCwoBNA24ZxY7TifvhsNErMHMc6HTKGvzhyGyV
    q/pGiQEVAwUQOhrmBjZ8FqYKL4flAQGcEwgAwPj2xt3ITbeUWf6HiqA1u6FiIy+w
    T+GZC2Mit4UQNdjKuNJad7t56Wqem57IhOGDWGYZJoZki65y9jD0BB7MixjuQhhW
    CV/vjdiX+pDxa0HG/75CNS7PVribIuhpbTFR2tG/EZh0sl8yMUpYho81yUDMeHVN
    UV8YqerlqntgqVra2cfPanScFve9YYXVgEbM2wQyWnEG6q0wPL+upmoZ8ppozHfr
    dVYiOonwl6QrgtzavI3tHTHtxDajMJpnQLC0rWHQRmY0Xd9xs+YUpaoUcOQFUH8L
    PEp7d1OQDd6KJOV+mQ/Bf7tZwl7as3cl/16nCMZoDJVGNGCuug4vEeV36IkAlQIF
    EDMEqXeGvtRXff+FMwEBX3sD/1Uf0sqHFBfFtuphKG5ZK9cz12NRANLpVf0welRX
    Y/Yp9AIL9xGGiEFvlma1TN8IA50Gxgxq7cEiHDWT2Zh4Hps0VWmuH9vGwc84D6PW
    JXuuPV4sdfCZnJUj+g13P7ypSlPSS8WIDVET5vG+K5m8jOQJ0NPsWGaZMGknXfLT
    ZDWDiQCVAwUQL8yKYkDqOE5/AdFlAQEmFgP/VwyNP37Vaunu7DdvBblDMpfMStds
    9GY0Jmhe7q1EkkGjwSJHtkn31yPwdb/93d25puCU6rZ1+qw5jKMY9qa8RvCOnnNF
    vN0fOqGso+We3q2rGamjBYtVnihYBni7jCBTJ1lvHixWM5XjyGkIQsRBoh3qNUNA
    I3LeH1ArE3IHzDSJAJUDBRAvxTnlxS1HbQ2/kG0BAeaxA/wPKsCrDl3qJsxrLPUP
    tMfXhGBeOZWPMx1rulCknHpTgfjPpA7soh7K9zi9LAatR08sotD7oAFWslP/OR/F
    DsaLWztFjSmu1laZyU5E7yCIsHgILX0aIsazYW0UoYqCm87FDzHP1kjXs7c6mgOJ
    g2YIY6o3UH4azIigo37B52J6Ng==
    =O0QA
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.237. Benedict Reuschling `<bcr@FreeBSD.org>`

    pub   1024D/4A819348 2009-05-24
          Key fingerprint = 2D8C BDF9 30FA 75A5 A0DF  D724 4D26 502E 4A81 9348
    uid                  Benedict Reuschling <bcr@FreeBSD.org>
    sub   2048g/8DA16EDD 2009-05-24

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    mQGiBEoZOPQRBADIhhxLB7VS78ooK4j9HuEjamF7QZTXvti7rtJdnJRZtpHW2Tzo
    GWbmlyYBQoGTk8DVuUoQCO6yy0PNe9CVUDxyXz5dUL8/fSfAOhwZowXF7X5mSP5I
    2G70oN9PgdMhxazIPoUlRFAtuDEZl8udtCOVyhiLylXnHj3LJS6XG2oetwCg33hC
    UWM/ZW2XZUt7+LQfdbTvgycD/AqrDrqazX86fI5MjeRuXB75i6OCUGorcWH2T8i+
    P6r3+1A1zjxhXcYMsCI4CDBHo2Z9oq2LN7ullvutfQA3sFR2KxuJmOa7GqHFI7Zl
    PYiRD4Zkuma2bAxIzer65IwQaaC58MCoBxTUqyKys4cv0Lalj6bh+yVArG0v8is2
    5E8aBAC4GptIHT6kfx1515W/1aBiPo+2Qu3227FLyNypKu3x/EwmFu3igbir6EOf
    uQLbjWclnJv2IXZhxiS08EoD6sFFrgDYAcXa3qPpIMjYEEmH5RziISGDwqCazgFY
    63paO2B8aHJB1W+A7jz7PYMsLNXt0JhwG4hLgK8fWT0NKG2TSLQlQmVuZWRpY3Qg
    UmV1c2NobGluZyA8YmNyQEZyZWVCU0Qub3JnPohgBBMRAgAgBQJKGTj0AhsjBgsJ
    CAcDAgQVAggDBBYCAwECHgECF4AACgkQTSZQLkqBk0hwvACeKQW/gMO7z6hv57J2
    4Ed012vx6mIAoL2JyQyqhtwjM3QJ90ZCvB073uTmuQINBEoZOPQQCACi/zTUlqiY
    dA+XNPPH93JSArILJcRIamP8n+Ans6akcluVONe5qRG1txgpclh9/v0Cv3qkr3hM
    Whm3Hh0zCtlrpZbd3oS1qdejpnCJxWTyISI/n6LXyoZ9YHI+IdYkcQowxxFDw+0J
    jIF/ROzHRyAmHqN0ORPyN0a+Xu4st+lgWBCj84op2xzzId+d4mTTyjvlAzbBaijI
    xMdbca3R5V4ISFzGiOHtEWQYb0lUz/DZVXYC22JnQdqtOJy/vZ9IMsSdi0tWsugo
    DGRtfdLAsg6PHIQZgTwbfehQmdSsLAAy43uvs1ywT7Nh0ffCmQawvvOhUOlIrYXU
    jxnIxQkncTqDAAMFB/91mznM5M2NWRhEIG5p0SKJaq4rrXUngMA0Tl4dhrJhlkol
    TfTTlS2u8jSjEK+39Lbs8uWZDXg8PHK2i8LOmgmuf1JfRV0clJMa01D/ZHIBRVB/
    TrJ3ia9rM7EG+2GBFzjkuMEpKBFrW/YLtCJZUdYfyQRjtLRCa3NEfQolvUvA3V+W
    ehixnxIpUJrz3JjLGcDVJx0tkgtFV8f1D6O9WEUc9jLzAM7ehrqbA1QQFlnwDcZo
    T1m0+Js3cIOfiLMqHB6iZi0tBTj5A2h5C/lWVCdw0HYjZkRKc2uG7nFfv++9mqS4
    HyiCcDiyStR01S/CuV5TCLZ17tW1Ihi53EGO8K3hiEkEGBECAAkFAkoZOPQCGwwA
    CgkQTSZQLkqBk0jJ8ACcDgRWhxql58ou07O1MZZbCBzDnkwAoI0ngzxuGBDgIIyx
    vPpqAjKmWnR2
    =WFIY
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.238. Tom Rhodes `<trhodes@FreeBSD.org>`

    pub   1024D/FB7D88E1 2008-05-07
          Key fingerprint = 8279 3100 2DF2 F00E 7FDD  AC2C 5776 23AB FB7D 88E1
    uid                  Tom Rhodes (trhodes) <trhodes@FreeBSD.org>
    sub   4096g/7B0CD79F 2008-05-07

    -----BEGIN PGP PUBLIC KEY BLOCK-----
    Version: GnuPG v2.0.9 (FreeBSD)

    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
    =S+Kg
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.239. Benno Rice `<benno@FreeBSD.org>`

    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-----

### D.3.240. Beech Rintoul `<beech@FreeBSD.org>`

    pub   2048D/11753A7B 2010-11-15
          Key fingerprint = 4DEC C668 9EF9 2AC3 FBE6  99E3 40B3 595D 1175 3A7B
    uid                  Beech Rintoul <beech@FreeBSD.org>
    sub   2048g/A9AA3FE9 2010-11-15

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    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
    ToToI9MEe2pr0dq6TDDDmVMQAw==
    =cdYr
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.241. Matteo Riondato `<matteo@FreeBSD.org>`

    pub   1024D/1EC56BEC 2003-01-05 [expires: 2009-09-07]
          Key fingerprint = F0F3 1B43 035D 65B1 08E9  4D66 D8CA 78A5 1EC5 6BEC
    uid                  Matteo Riondato (Rionda) <matteo@FreeBSD.ORG>
    uid                  Matteo Riondato (Rionda) <rionda@riondabsd.net>
    uid                  Matteo Riondato (Rionda) <rionda@gufi.org>
    uid                  Matteo Riondato (Rionda) <matteo@riondato.com>
    uid                  Matteo Riondato (Rionda) <rionda@riondato.com>
    uid                  Matteo Riondato (Rionda) <rionda@FreeSBIE.ORG>
    uid                  Matteo Riondato (Rionda) <rionda@autistici.org>
    sub   2048g/87C44A55 2008-09-23 [expires: 2009-09-23]

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    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
    LlxcQeUB
    =cJab
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.242. Ollivier Robert `<roberto@FreeBSD.org>`

    pub   1024D/7DCAE9D3 1997-08-21
          Key fingerprint = 2945 61E7 D4E5 1D32 C100  DBEC A04F FB1B 7DCA E9D3
    uid                  Ollivier Robert <roberto@keltia.freenix.fr>
    uid                  Ollivier Robert <roberto@FreeBSD.org>
    sub   2048g/C267084D 1997-08-21

    -----BEGIN PGP PUBLIC KEY BLOCK-----
    Version: GnuPG v1.4.2 (FreeBSD)

    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
    izq3ic4=
    =mgE0
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.243. Craig Rodrigues `<rodrigc@FreeBSD.org>`

    pub   1024D/3998479D 2005-05-20
          Key fingerprint = F01F EBE6 F5C8 6DC2 954F  098F D20A 8A2A 3998 479D
    uid                  Craig Rodrigues <rodrigc@freebsd.org>
    uid                  Craig Rodrigues <rodrigc@crodrigues.org>
    sub   2048g/AA77E09B 2005-05-20

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    mQGiBEKOK8MRBADOO9VIucM2dGygVera0+Hcu9ud2f3MrcfVgsB7/awfE/MgIYtC
    CFtCJrD1Ml+p/spmiuzJNDSamT8NHywsG5R+GO0EC76+mfL3hwXvGUJoQV+NcDu6
    99s6OUWTimi5OPOURzG7lXYpO0wVysx3R5Nzg7tIC06fmXNXuj02JvCm+wCgqkPx
    nZgCFoqq2mHoiLL59CUExbED/iOnglDOuZsncR9xRZJfbSLUJf5z9NE413FXAx3f
    THY7+akGk8kWChrOeyIvLvSGmkHHFQXgh1umG4fFd7TCJ0Sexh44s5q0ROjEK4ge
    nwAsS0iheMB6JqW8ibBfawr2iwu3ZAkqfelU+NSbHm4sEeHxEGyJtZKA7rOPGDm8
    YOBZA/45n2E/Z6hv6D4Bm1xEDGNICK28uTqzXh0wyCJJtVOortd4CmKZZrZJj7am
    3aDdtFUZ1yZc5FW2E0xLa7Oz8HUj7eMT7Ljfd0c5yNna7WcNjqWNAz6WMhHByRZv
    nOPiUMQNvCbyrKw9OsFKNNbrSnjQcc/5yy0SiIMVm4rydXzK0bQoQ3JhaWcgUm9k
    cmlndWVzIDxyb2RyaWdjQGNyb2RyaWd1ZXMub3JnPoheBBMRAgAeBQJCjivDAhsD
    BgsJCAcDAgMVAgMDFgIBAh4BAheAAAoJENIKiio5mEedzB0AoIXeENkxV41KlJMV
    z0ozHJ/q1ESdAKCimzfOMwz7Qyauo4VHs4rk7NEPerQlQ3JhaWcgUm9kcmlndWVz
    IDxyb2RyaWdjQGZyZWVic2Qub3JnPoheBBMRAgAeBQJCjjVzAhsDBgsJCAcDAgMV
    AgMDFgIBAh4BAheAAAoJENIKiio5mEedT6wAn0IjcGqARj8Qe+JZThbQCQbH0ERp
    AJ4w1pYLdsKphwaEB8GakvaeRsrBTLkCDQRCjivkEAgAo5DHUcjEBK54Vo2S403y
    InnfqiiUDXqb8Oof18CICB6JgA3NjP5g9BE5+7dI8relt4Q0ILg2IJvISIlfmyDl
    +GuegA3dMo1IrghmtI5+IWN2mm1iNy96jpJ1TQhvHTFDlETdV/BE57CcO1ZnKHiW
    m9G3GjnMrunVyLMEY+6TJ6ykqP2VzYBsc847iCv477LdYFe1+vedZb8Bk9xpeeZJ
    tuT3O+JiR+B/SHISpycxyM3ei+C7eRRC8wV+khOw/8xirJ1Wzyg3GrolQPtJsTNG
    mqg6DXIYPY5wbF3SUBT5ZA7pLPxXhUWNewU/8mXisuM0hp7nz9VLQ4JfbMuvGF2j
    wwADBQf/SCUw06q5l8qdJ9G3WFfPOE449mq5uXHGlfeamCkjx9/SzI/8yldrxwdF
    5XiAZWRpeQoksUbPI+tmxWqi8NDxt+KLDNhSCg0+C8KRFBY0ZI4CDmUg+MX9Mix2
    ir/RK6eoEYNXdt32raX7MzQP87LTL+cnxJzbQ702HYpVqrJUOgSRwQ3posbp7hwV
    djfiE38r9Hd/E4ZxxAIT3GafZ12KzxQZ8dSxoa/2tP8VfAfe9jt/XX4F0QD2yIGV
    2wJMd/CZWTZgDfNW1anGR+9AyV9dT+8cYi36fkgTQb5rN25rJKzHd9RA/EGJXSU4
    l1hNG4gBpYjF5gD/UTuSgGI6XInycYhJBBgRAgAJBQJCjivkAhsMAAoJENIKiio5
    mEedTS8AoIa+gNX84jClqNvPR5lMlQGKeB4HAKCaEmhTA9kGSY5JW3hsfDiwfr0a
    PA==
    =hHZm
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.244. Guido van Rooij `<guido@FreeBSD.org>`

    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-----

### D.3.245. Eygene Ryabinkin `<rea@FreeBSD.org>`

    pub   3072D/8152ECFB 2010-10-27
          Key fingerprint = 82FE 06BC D497 C0DE 49EC  4FF0 16AF 9EAE 8152 ECFB
    uid                  Eygene Ryabinkin <rea-fbsd@codelabs.ru>
    uid                  Eygene Ryabinkin <rea@freebsd.org>
    uid                  Eygene Ryabinkin <rea@codelabs.ru>
    sub   3072g/5FC03749 2010-10-27

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    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
    Edu6GCfjXE66i3XaSUcQWu+g8BMQUo5Huw==
    =xPkv
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.246. Niklas Saers `<niklas@FreeBSD.org>`

    pub  1024D/C822A476 2004-03-09 Niklas Saers <niklas@saers.com>
         Key fingerprint = C41E F734 AF0E 3D21 7499  9EB1 9A31 2E7E C822 A476
    sub  1024g/81E2FF36 2004-03-09

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    mQGiBEBNxyoRBAC22NnMqcH1hXXkz+jC+U2QGzOJdGHZtLRXDRpS4blFtRgAf4ab
    tZY6LJUMnjmdgaPP3Mc7YE/ITF1hGnzYF2jbJazNm17nMSP/66dGJt9dK4XAE4cc
    5nYo3GnEkacAa1zUvM6e9OGaAIkndBDUW6+a9aSQNcNyMnYL1/APv+wdIwCg2G4C
    N221QrjrGbxVQPiBM51lY98D/11d/h8aOHYkf+nirhIj9GvRmXJfD3RANZUDjOsj
    OKGgUNlXm/AT6I226v9urfdtrhMg+5zdO+I2p7dZMad/RpnSYo0GMdLRzOlN6aoI
    +4JYoACq2C7iR8pmItb+L4Nl5nNBwmcLBXD+HaZebGffZy9Uvy/A5G0ty08I8LKm
    5STvA/kBMybZhX+RTq5v1Kzau63bMBJR8MPHyWYAIBW2wTMJM1ndW5RrbIMJ71qC
    8DFFTHFJd97s/fqBMQ9rj094CdDxCYQJUkZy5+qiBkRta//iSlgsi54Xhj9prgPj
    nBMWxUjAI5Ih0VPIp3/z/q5aQRvey8Ro5JWmduzH0KpLv2Qe17QfTmlrbGFzIFNh
    ZXJzIDxuaWtsYXNAc2FlcnMuY29tPoheBBMRAgAeBQJATccqAhsDBgsJCAcDAgMV
    AgMDFgIBAh4BAheAAAoJEJoxLn7IIqR2/y0AnRetbhzvjj3kKOV28bx2Qt+YRA/j
    AJ4yY9wDPJpwq63IsGeo3BYXi32zPbkBDQRATcc5EAQA2SipeeJJjvrzqqILHNA7
    X+m/PAJonO4QhyIEXXMhzNGdiUVJ7wli23gGVF0Cj3V97Yw5KFGco3qOvvsWkO4c
    CLwd3NHbVL6OHKM36LcFd+a6RiJO9qAGGixyqUIkqYeWCmpObihrkZy9WADsSJTc
    /qOrLghJ0GyR4Ga8CoFNT/sAAwUEANfA3lWeTj3QZcDnJZYejt1aJWt7oUBQ/KOc
    HhTjY/A7zkQsAdgbcmuhzSiIH6eoofTwNOl/Kl0ieSdIyFMFfVxrmYEN/HUUUI4q
    J+BgWZgppinaeUEabnZPfY03T+ZanJ3DmB8s8x4HdpFi3jgtWY0KfDhDfHtNIeRu
    CYmLAzjYiEkEGBECAAkFAkBNxzkCGwwACgkQmjEufsgipHbIOQCfSaudT6wnsh4G
    6D9TZkji6aDqUBwAoKqxWnOya/v/MqcgrXGSCih7phIL
    =Hz+C
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.247. Boris Samorodov `<bsam@FreeBSD.org>`

    pub   1024D/ADFD5C9A 2006-06-21
          Key fingerprint = 81AA FED0 6050 208C 0303  4007 6C03 7263 ADFD 5C9A
    uid                  Boris Samorodov (FreeBSD) <bsam@freebsd.org>
    sub   2048g/7753A3F1 2006-06-21

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    mQGiBESZt5sRBACyDUDxsmkdq0XNNJfbsdVO07/vtUc+rP5hBEdMzbetPnLdujSX
    JtwzS2b5kQFk1ONAuTs9udlcZhhq5T2FIyhqpvgLG3tnt4gDabRgFsOL6oB4dFKv
    yL5emRwnch+wYlwfaoWXsXpWfdHQCwFfL39lsYLIR/aXcMwjXF1wl9yl6wCglkCt
    NECUgmsoUYE1iOyC5PnqHkMD/088reqeJuH2hWHupCOihIOOddQPiKX3EY1Y6piO
    I3aQFxOq8BdYw+3WAlBs4vegMmzk9MYEwP2STsVcPE+eu55m1GCRRds++oyv9tQO
    TFZVsYEuvJALvHSW3InTGHWfhQPrHcdodyRjhgo2bKY1RwO3RHYDRRQj5i8LDn/9
    kRSiA/9Y9Cl8Abr7kuPbgw7uWb8lRta9/le1UWQXpU6GAZHXEgppHenDaRqvbaag
    MhXXiKuuFAz4LNHf8UDqyQ4fjjfR0EajIivV17hpzagPWIzzEdr4j3RBpwHMYLbV
    1yfyml5QT46amMd2Vwq83Zgn0cUObu8E0IITqTMkweEvH+soOrQsQm9yaXMgU2Ft
    b3JvZG92IChGcmVlQlNEKSA8YnNhbUBmcmVlYnNkLm9yZz6IYAQTEQIAIAUCRJm3
    mwIbAwYLCQgHAwIEFQIIAwQWAgMBAh4BAheAAAoJEGwDcmOt/Vyam2gAoJHvCp76
    i+XiNv4R3pJgG0ZxTCjOAJ0S46VswPDByVJZNF95pfy1qEDb/rkCDQREmbekEAgA
    vAUui6QrSn//3FHeSvH1smd0432C1r8IHvR7m0Ki+F1cRolkWF29y6JMpoPcXrWC
    D5OpGfZaZQ9SwhedFr776xAwMDWAHlrHEpPC4OE3RPq7YWENc40hL+ZKfsZhGA89
    H8fiU18UdDlARgg1PDBbVi+F4ZFfKSyNcTUO3brIIpUy5OfAdTkgl3JFKERlqZic
    ZWjS9PXjsyaeTYn1Ny2T9WZqbk9Ghsb2/t8bIyayu9KNnI+vRSafRtaomeUEsKme
    YZyU4pLutea2Zj6u8BtEVyxp9Gcy0Whn/HwQc/FZE91Z6UzViucBqKmFmw3A/OHF
    HV3DAxd2ctkBrt5jzgJA2wADBQf/dD7RVzfD2ea+jpgqJW5EFDqYebjPLab5GZJ6
    uUWWZu73ynDm92lemzcT67JYirU0H0sQ6QmcZ9ZwqqdW/taCjvpsXPFb88B9AL9c
    aQD41otxgpCF/zMQwgS24DCrdtPXiKceTjHNEAMOM9xS3FBNAWjy23Jz6rIt3ROD
    o0X3iAta9cT71Q6/u6BYo1YRuLIAWZ1rpkELb06NUxsVuEQmBKGMBKf00LEw+AV8
    0FkaEukzFuG1u3k2qkeFJEZW0C6d04JT5jsskRiTrIzkd1FTyaEdueaZoiPBQybX
    KE9GyClXn1RMWA+dzAjjNvJOo556NAIpebgvXMd1rHSRxumHdIhJBBgRAgAJBQJE
    mbekAhsMAAoJEGwDcmOt/VyaOikAnRQNCxBdrbQSOLIxrChaMU5tNejQAJ4hpoO4
    tGfWhh+Ib0+vCD7UaSphYg==
    =fafd
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.248. Mark Santcroos `<marks@FreeBSD.org>`

    pub   1024D/DBE7EB8E 2005-03-08
          Key fingerprint = C0F0 44F3 3F15 520F 6E32  186B BE0A BA42 DBE7 EB8E
    uid                  Mark Santcroos <marks@ripe.net>
    uid                  Mark Santcroos <mark@santcroos.net>
    uid                  Mark Santcroos <marks@freebsd.org>
    sub   2048g/FFF80F85 2005-03-08

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    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
    IdA=
    =F4/l
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.249. Bernhard Schmidt `<bschmidt@FreeBSD.org>`

    pub   1024D/5F754FBC 2009-06-15
          Key fingerprint = 6B87 C8A9 6BA5 6B18 11CF  8C38 A1B7 0731 5F75 4FBC
    uid                  Bernhard Schmidt <bschmidt@FreeBSD.org>
    uid                  Bernhard Schmidt <bschmidt@techwires.net>
    sub   1024g/1945DC1D 2009-06-15

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    mQGiBEo2DaERBAD6iTY24oR5YgIAGmKudAPxNNLLaZPm5tsa1eQjNCRp/WPLIXCS
    /x2oZPk8JoKOPnHNuvfzKnDwh3sB/hKAQOwSTHmtKQ7Gq9Uq/IpuQXHOfF3JqJ8p
    4pOEHCSdJPv1rGNdv2Uh5Pmas3qfkI1pcn44B/XAYDVoYC2CsHmTHSMfwwCgwKIP
    BELVfQZDMaV/Zkv1etazaLsEAJXHS06o4TFVmrHzvhMPlBmS/MDJyt04MaqJwCkh
    IzZGpJ6c2rS+a9UOj5Fy8zeim3f94U5L4pUJUmn2SitHTGm14A+ZN7r2dmBC8jw5
    Oki0tbz3yObM6KSzYV2BuZ7BLP65KXAlUnHM5h4rw/EJaTL6bm0Z0sOLpc74KnZd
    qgi9BADzkJnZ0VKRRZ18xfdbPqa8FMeHJI/IhlBrwEPSeRqEjZCtTYfePzutbpm7
    YRpXk2cMe+k6Xt+FrSVF4elNT5/b3SjWjmZr7jLQ+/RvN+AH/5Ru9bQHVfuL6uSY
    zoHgl9Y5RKJMkzWfdn1LknaRIqE/ciWq22cESYJ8e/Wrk8lFVLQpQmVybmhhcmQg
    U2NobWlkdCA8YnNjaG1pZHRAdGVjaHdpcmVzLm5ldD6IYAQTEQIAIAUCSjYNoQIb
    AwYLCQgHAwIEFQIIAwQWAgMBAh4BAheAAAoJEKG3BzFfdU+8UXMAnRd2NUzksPzw
    xY9oQMyjeP1cg1R/AKCWoPmmPjJDsf1/CQIkMFMb7RuTDLQnQmVybmhhcmQgU2No
    bWlkdCA8YnNjaG1pZHRARnJlZUJTRC5vcmc+iGIEExECACIFAkttpeICGwMGCwkI
    BwMCBhUIAgkKCwQWAgMBAh4BAheAAAoJEKG3BzFfdU+8Ht8AoJS8LxsUX8jA7J6S
    WKwM9JPJ+adJAKCPcJC5vcz1C78IB2XBmnbbKmrYLLkBDQRKNg2hEAQAzfaS1s2p
    EOwwH6ZS9JJ0mnoEfVUkO2I3yfMvXZ4HVkf/lmjQziSsgtbOUPIsIZxh/0V7sDU6
    4ShmeYcY2GpBRE5NFAOo721nOMzXtSbwhUt8ZNZkWXLOCXE/oaS1UoPTQ8KW21IN
    prsFPuVORaZPn1BKXSt/g0l2mkKDdgjMLe8AAwUD/RCMR4fDfuKULk+PG4DrGuyz
    sz/6MC7cmxH76SBzLARw7HOKFXQoVPUfBbQ8oi5ynqFobgENEL5iiWrPhRHLYiJ1
    ee/RiroqJlDxSHno5qU4FIjVGm6b1WbunQ1m3bmK4ExFrygOvHwI0RhoySoAhxiR
    vttEGBF27GMdkRaaUyniiEkEGBECAAkFAko2DaECGwwACgkQobcHMV91T7wEHwCg
    tY2Mbu5ssnZVqMYfEKlx2QIJvZYAnRkudrXyV2F4QME4eLCgAXrjDptm
    =FKOV
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.250. Wolfram Schneider `<wosch@FreeBSD.org>`

    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-----

### D.3.251. Ed Schouten `<ed@FreeBSD.org>`

    pub   1024D/0D9E0B05 2006-03-21 [expires: 2011-03-20]
          Key fingerprint = 9476 D3D6 52BD F249 08A0  ACD5 E764 8318 0D9E 0B05
    uid                  Ed Schouten (FreeBSD) <ed@FreeBSD.org>
    uid                  Ed Schouten <ed@fxq.nl>
    uid                  Ed Schouten (Fontys Hogescholen Eindhoven) <e.schouten@student.fontys.nl>
    uid                  Ed Schouten (Dispuut Interlink) <ed@il.fontys.nl>
    uid                  Ed Schouten <ed@80386.nl>
    sub   4096g/80043EEA 2006-03-21 [expires: 2011-03-20]

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    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
    AACdFZtYoLpo2DTnfYuGtqRXZEIHeykAnRsWOnMRtpd8464dJZQQruNjL9EliHoE
    ExECADoFAkfFlHgzGmh0dHA6Ly93d3cuc2MtZGVscGhpbi1lc2Nod2VpbGVyLmRl
    L3BncC9pbmRleC5odG1sAAoJELR14ge6tYIp2vMAoMoFLMgK/nBCUQecr/HugnAP
    SSMYAJ0V75bc+aA8jahMj0PsWrB6KRvdfoh6BBMRAgA6BQJHxZSFMxpodHRwOi8v
    d3d3LnNjLWRlbHBoaW4tZXNjaHdlaWxlci5kZS9wZ3AvaW5kZXguaHRtbAAKCRCU
    j9ag4Q9QLq9AAKDs8db4x8ZHrWSlIxysFS9MK2EoFgCg1lUwdKAdsE/gKwbOdLUy
    KWQUAGWI9QQQEQIAtQUCR9R7rocUgAAAAAAQAG5zaWdub3Rlc0BncmVwLmJlImh0
    dHA6Ly93d3cuZ3JlcC5iZS9ncGcvNDI2NzEwMTNGOTRBMEFCRUI0Q0U5QjZEM0RG
    QzJDNjJBRjc5RDI5RS85NDc2RDNENjUyQkRGMjQ5MDhBMEFDRDVFNzY0ODMxODBE
    OUUwQjA1LmFzYyImGmh0dHA6Ly93d3cuZ3JlcC5iZS9ncGcvY2VydC1wb2xpY3kt
    djIACgkQPfwsYq950p43gQCgnmJj7CiBrBO6yU6n6OXxOFnOebIAn3HiErkPWeHB
    ONMQT1Dv1BB0G/9HiQEcBBABAgAGBQJH3DHwAAoJEOjgYvYNywQxCkkIAIy3/mle
    eMjuG2/fZJUwydRz9zQixZa0YBkPKaCgsV+5shYJtzTT04kai++8K+9AIrNRQ8k7
    8YgJqlgRpwWkwn+p2hxPOw56VB0ulXeI6wGXz/LEU38Pb34IymGWUgACvVfCy7pc
    xpMvHdOSHsKm3mHh0r1N9V6rNtAedO6ftB9wDKZtbruCytxg3Rkw0tQgBAgacM9W
    EpnzkwrTLtj/GhSgn/QxMQrrrzxDKDHoXwKS2K68/LUewYuT5Zsgb3v0V0azCVFY
    7/4raoR+AQEcKCZkNa4SldfIbS0NDEEEfSQitwE0IeNKkGfg4jSc8eghZ7XQM97f
    5XMjuB3FoCEoEYO0SUVkIFNjaG91dGVuIChGb250eXMgSG9nZXNjaG9sZW4gRWlu
    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
    ROdzJQ79C78aAJ0VGbXSjihRCHVI4qDHUwm2XRbTtYhGBBARAgAGBQJH5RthAAoJ
    EErbH4hriFRDqKYAoKeEBvjzzRrRGY1Xb0J0/wL02UF/AKCbyvdML7nj1RPRwfj/
    6IsU2ltxFYhGBBARAgAGBQJH7ptPAAoJEBUoZftifM+VM7QAoIxjm7VhQb+HFgv/
    8BWT7OyAuydQAJ0diek8SLk7e5Z3OLDdp4ahpwsTXIhGBBARAgAGBQJH8UvGAAoJ
    ELs9VLZH6oS0F2cAnidKyTl/0ZHBawu+6Iy4BQXLCheFAKC0PcnalKPXA67VIHGR
    JMTlWGBW0IhGBBARAgAGBQJIC9ARAAoJELdRFAn8Fdvsb4gAoK5JlSlgW7cfBeKx
    ve4YippFlkYzAKDW+Yk0nJbyLwWR0AFmZv01sfgUn4hGBBARAgAGBQJIE4BeAAoJ
    EBVYlEWZ6B2gWFoAnR6yEOTwahup4gQzQtt7ZYXQAZu8AJwNy91PKG5svRdrdCec
    M2uszv+J5ohGBBIRAgAGBQJHxWVaAAoJEG/RPdzXzenmO9EAoLGVzHvh1LYKYOfu
    YPQLJeWJIHnnAKCDR4wyxGHyFWiIAY+UdExBWb8qSIhMBBARAgAMBQJHxca+BYMF
    wCLVAAoJECRixBtY62DIp4gAoJqt0biSLTzKSy4SK6AFb+VW+1P5AJ9aJ8avrfVn
    AsjSOh+tm96NzEQTaYh6BBMRAgA6BQJHxZR4MxpodHRwOi8vd3d3LnNjLWRlbHBo
    aW4tZXNjaHdlaWxlci5kZS9wZ3AvaW5kZXguaHRtbAAKCRC0deIHurWCKYHzAJwP
    QvwmKoxvIiLUwuvmz2SC/x5mwwCgqlAapsm/yw0iux1oZ++FjpJLyPCIegQTEQIA
    OgUCR8WUhTMaaHR0cDovL3d3dy5zYy1kZWxwaGluLWVzY2h3ZWlsZXIuZGUvcGdw
    L2luZGV4Lmh0bWwACgkQlI/WoOEPUC6WbQCg5HxltfxKJko/DGzDIOB6bS/UmI0A
    oLzf5Hg+fCc038HSU99v7xz9wk4ciPUEEBECALUFAkfUe66HFIAAAAAAEABuc2ln
    bm90ZXNAZ3JlcC5iZSJodHRwOi8vd3d3LmdyZXAuYmUvZ3BnLzQyNjcxMDEzRjk0
    QTBBQkVCNENFOUI2RDNERkMyQzYyQUY3OUQyOUUvOTQ3NkQzRDY1MkJERjI0OTA4
    QTBBQ0Q1RTc2NDgzMTgwRDlFMEIwNS5hc2MiJhpodHRwOi8vd3d3LmdyZXAuYmUv
    Z3BnL2NlcnQtcG9saWN5LXYyAAoJED38LGKvedKepaQAn3T6UbOVbz4DrbRKA04b
    nFlFLHGqAJ40XuTPwiGdOwnZ0ASbrEzOYu0XGrQxRWQgU2Nob3V0ZW4gKERpc3B1
    dXQgSW50ZXJsaW5rKSA8ZWRAaWwuZm9udHlzLm5sPohmBBMRAgAmBQJE8wWCAhsD
    BQkJZgGABgsJCAcDAgQVAggDBBYCAwECHgECF4AACgkQ52SDGA2eCwWfDgCeLyhW
    aysPJErgwTSCk7cKQJ1/JW0AnR7AFqounCUdDXx50k191R1SLu34iQIcBBABAgAG
    BQJHwWwpAAoJECZJ5ijF000FosAP/jdhAOMfPg8JZ8r9ZGmI87AJMFv9JJNHytxj
    oDL7Sj8Xiv+JlsxSnSbtVgUEmPF/e/Ni3c+CuQe/KCG2OI7wuT48+yyeAprK1+H/
    z/4CJfloshNF+RhW7A9ouJ7eN5lWUEcHKFvHZAlmDSSlgxRJZByu0wd/2POIyEsa
    xwO3qYfqQYuOFuAakB2TFl+Rfvp5SgB9uHZGEOsAYE7GslM1w0fGYUvBhKZiWlXI
    9pqdb94w1KexJfgCcTaePnIustmJ9FkEYogEcnr3nJP1Hy//AYUnFugxd9PVQRZH
    pOq7hvrCN7zpPma65cqnK6G2Q4tiv79EppcvatENfS0ih4miurgo9uta+dZ0mzwq
    hN1vquDVDauZnf9MYjwitaWZ/+XLOi/i83NfNn6pWtUKNZ8BJR/Ohj5ZPsBQXf2P
    7Se11FfEu3zg4G8+oG29aVkoPbMvbAJ2rCL2eB9CYqz+/0qn//0Vn59nwUYPqWfK
    x5nxOnPOUWilyyeDAuX5XN+L3i2w5jWSbf8ybqPeoZfEDtcEldtNZsq3z5dl6R1a
    RlydjWB/SphL0YSO7Ojp2dk28n9atw8sxJwDyY147X/Lv5SHEghvVrgqamNDmO9c
    7Um/cuSwoZWLmaUtiGS2WSHvY2FpDdRQNkEL2VVCglpxvycwu4hhUa40z8uDxkgw
    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
    agziWBS+iPUEEBECALUFAkfUe66HFIAAAAAAEABuc2lnbm90ZXNAZ3JlcC5iZSJo
    dHRwOi8vd3d3LmdyZXAuYmUvZ3BnLzQyNjcxMDEzRjk0QTBBQkVCNENFOUI2RDNE
    RkMyQzYyQUY3OUQyOUUvOTQ3NkQzRDY1MkJERjI0OTA4QTBBQ0Q1RTc2NDgzMTgw
    RDlFMEIwNS5hc2MiJhpodHRwOi8vd3d3LmdyZXAuYmUvZ3BnL2NlcnQtcG9saWN5
    LXYyAAoJED38LGKvedKeinsAniR/Z891MA1TUahdVK89b0Q8/s2vAKCLN2KHRuVU
    Mjezr5BTUbzmOnh9QIkBHAQQAQIABgUCR9wx8AAKCRDo4GL2DcsEMXIsB/9n6NGA
    otTj4wg38NmImwGcJZSP5lLVGMbHEEOK+bFIIPqjXNze+lS8H6n3hlG7s8deefSR
    3J1lHHo/aWx3hclv+ZCd1mhlrP+osuNdE21VLiBQAgzhd19fXP1mPr+yW5U9Wfzl
    u2/R4LsON7S2292JPxWc9ROUiA2h+XpaG51odZa8TQn27NYNWVjyNl+N+quhYCyl
    wiYqjObgRZLvwHygjgBByyoOXaIfz6ABYrXi0NmVTUIxEDjh1gTm0Gz2IUh8jSgc
    zrBzhOtf8fBQwgzkm8Rmg2ml0pg7BbmpVLM7FP+IOzYa58bhz0mTEc7AzG7IejYf
    f1aMRC4e4bdBK/5+tBlFZCBTY2hvdXRlbiA8ZWRAODAzODYubmw+iEYEEBECAAYF
    AkfPHOgACgkQTaUqra5kIYYNBQCgiN9zCqLwSYfiNdV4/sW+jIYq2aAAoKEJ5tUO
    SxjgqhROKydocYKJhZWPiEYEEBECAAYFAkfRfw0ACgkQHoowUyEn+FpnvgCgkQPD
    fuT9X7ioLHS460S17SPy4K8AnjHv4hrJJldhtrPbWJ0YC3UlSEHuiEYEEBECAAYF
    AkfVZV4ACgkQQUuEI2/szeBLugCbB4iEGfDKqjOhDxKHfNvqTCu6BQ8An1Xw5COk
    osYhsXmgVgep/Sa8peeciEYEEBECAAYFAkfcMe0ACgkQKJz/wOY81tYi9ACfXTG+
    WfAbWMUbH+cWeZfxJIMNCI0AoM5YeLtxs0DmHfm6h++FE4/WctukiEYEEBECAAYF
    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
    =wVoU
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.252. David Schultz `<das@FreeBSD.org>`

    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-----

### D.3.253. Jens Schweikhardt `<schweikh@FreeBSD.org>`

    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-----

### D.3.254. Stanislav Sedov `<stas@FreeBSD.org>`

    pub   4096R/092FD9F0 2009-05-23
          Key fingerprint = B83A B15D 929A 364A D8BC  B3F9 BF25 A231 092F D9F0
    uid                  Stanislav Sedov <stas@FreeBSD.org>
    uid                  Stanislav Sedov <stas@SpringDaemons.com>
    uid                  Stanislav Sedov (Corporate email) <stas@deglitch.com>
    uid                  Stanislav Sedov (Corporate email) <stas@ht-systems.ru>
    uid                  Stanislav Sedov (Corporate email) <ssedov@3playnet.com>
    uid                  Stanislav Sedov <ssedov@mbsd.msk.ru>
    uid                  Stanislav Sedov (Corporate email) <ssedov@swifttest.com>
    sub   4096R/6FD2025F 2009-05-23

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    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
    syiKxh4=
    =OeD1
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.255. Johan van Selst `<johans@FreeBSD.org>`

    pub   4096R/D3AE8D3A 2009-09-01
          Key fingerprint = 31C8 D089 DDB6 96C6 F3C1  29C0 A9C8 6C8D D3AE 8D3A
    uid                  Johan van Selst
    uid                  Johan van Selst <johans@gletsjer.net>
    uid                  Johan van Selst <johans@stack.nl>
    uid                  Johan van Selst <johans@FreeBSD.org>
    uid                  Johan van Selst (GSWoT:NL50) <johans@gswot.org>
    sub   2048R/B002E38C 2009-09-01
    sub   2048R/1EBCAECB 2009-09-01
    sub   2048R/639A1446 2009-09-01
    sub   3072D/6F2708F4 2009-09-01
    sub   4096g/D6F89E83 2009-09-01

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    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
    jJLQtFy144uCNLgL5JagmqMiXx9rL6dHFHc=
    =sXgu
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.256. Bakul Shah `<bakul@FreeBSD.org>`

    pub   1024D/86AEE4CB 2006-04-20
          Key fingerprint = 0389 26E8 381C 6980 AEC0  10A5 E540 A157 86AE E4CB
    uid                  Bakul Shah <bakul@freebsd.org>
    sub   2048g/5C3DCC24 2006-04-20

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    mQGiBERHS6MRBAC60MHcIa5gqGjSmHLxJeZTkLTDK0zEo7MRJuMeF90Py7wdP9Fy
    jmRhyBS/tYfOtPrpHwAdn5FIkVzajEklv9L0/JiUx5WDrmJFWqIgRLdRPYw909hE
    7pW3uTs2qotWjeA8ecefzlTX9gdZVgy2uPhihMG9cn7pL1aXluca8AUsIwCg4lUf
    8pL0Pn6pZ6xP7nG1hEvkzr8D/1LR5Bm47RboJ+dvoMf9lwlXiEBP0m40100urcxR
    7e+AHDX2yr6s4edx7pPRCq2ubPgzK2rYv4NHN943AY8EYbrazp5F3EItDOLHmIus
    JasvCgPTb7HYWO7Q28redJyUIfBUTPgVVk2z4EuCb5QKDU2/2DyqWThrLEwTCTRh
    mR82A/sHQE/xib0291VjMxGKiatd2Xm5hu7dSzCeZwc/5uF0g33OYcd02fosyERd
    96SWmGigFWLbQ/kFiAoN0OAlQQoNPuWjGzIJVrxiy9y3Fw2hnoiV3MAWAGr43+UI
    FR+XB/MxOKIozYrMouhZHtmw237fKVH6Ewe/rFkthkgm9P9BpLQeQmFrdWwgU2hh
    aCA8YmFrdWxAZnJlZWJzZC5vcmc+iGAEExECACAFAkRHS6MCGwMGCwkIBwMCBBUC
    CAMEFgIDAQIeAQIXgAAKCRDlQKFXhq7ky+oMAJ9Cth9LlPV2on7lTedInW/6T2mh
    YQCgm6bY4yyoJbjUxop0bcuKYGVVuSO5Ag0EREdLsRAIAK/+InMhz/qJB/+Rwq08
    K6TtPPkAs5+IcFQqjShCtFWiaZrvBqvcTPDqVIMu6CAnBf6QTOKQc+L7lSUE6QdI
    0mE3jiieYJ/cDzSqntYZBkC5glW0AzemgyllQRlqKrIawWu8M+SwZipvKb0YCIFo
    rmhoHCjzK/DKlSi0MOjPVTbsyS/rTvhAoXxodogKfNzRpb4MwDjM4Lda9mO+hKlI
    93CsBCzNZaOECYJ/1vkpuGqOBhvezrLtNCYFmul2JtVMyCb86mOIJAeiwn/hiZu5
    eU3QYdvcCOfYh//B8AZOVSW1x8HYzMFXuznVtx1P5ygvtWY3u+uIlXC274XuV0aJ
    NNMAAwUH/1rSg/fSdVGEG3ge+sGtFKHPOaGW014dt5nHCePrhLwHIe/udyZPCD3a
    axp6RVlx5Yvw2+nMBWiW65KACBUQslSHbeM5u2aPH6HaAAEYCJ682vKUWyEHGljJ
    zDBBANYKThYwle1xRxiE5MT9B2Bz33z2/BQnCgo21KYAU/2bwi2qVG0jyF0i6ryP
    6r5w2zZbZA/0IINcwENYRhYdtU+QtyB/HqX//nshVnxZFgG0pIPET5ltq9VM+6Fj
    hxJ2RXwGOxBJW3+yLw5JuDVrqoOz2lAOulY2uiQY1Nk9xHDBKZ1U172BugHuOIbW
    EAgbLB4QFuIE0HF1h6bNSISULLt0/yuISQQYEQIACQUCREdLsQIbDAAKCRDlQKFX
    hq7kyxbGAKDdITbPvXRBxINGLWTcNxtRqjXl0gCbBVmMqSG99Tl8uB7wTZRDjtCX
    5DU=
    =iFzp
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.257. Gregory Neil Shapiro `<gshapiro@FreeBSD.org>`

    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-----

### D.3.258. Arun Sharma `<arun@FreeBSD.org>`

    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-----

### D.3.259. Wesley Shields `<wxs@FreeBSD.org>`

    pub   1024D/17F0AA37 2007-12-27
          Key fingerprint = 96D1 2E6B F61C 2F3D 83EF  8F0B BE54 310C 17F0 AA37
    uid                  Wesley Shields <wxs@FreeBSD.org>
    uid                  Wesley Shields <wxs@atarininja.org>
    sub   2048g/2EDA1BB8 2007-12-27

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    mQGiBEdzy+MRBACwXYsfLwZzbzYru+XqMIFKVIIszXJK61UejvQqcuaZRNLSQyM8
    Fc5dI6AfciZV9tH8LDqYmd/vDtzjmBp/h2SPqQfiVuREQ0+c+aplvWvWc2TjFQg6
    CZbb730TtazPXbObZvSMRvLeRM32W9Abj5L8DXoQbpMtC8cllG21fsY4hwCgyngp
    xK9e32zih9ddXk+NgjK627MD/iPPyo0N4cb9omNwOCot8YIRpdJhmvR/yPh+8rmW
    NUu61gV8jn2XB6Ldto8/dR7chqqbBU7bS+hsk/lmbOuLNe2XkQA3e7dd0EEHSYYf
    mx6zjw/dEb9EBANAWI6QOyjNM9npWb/shZi8Pehcty08t2eytd4M7wPI9zLAXsMV
    M3nUBACgxIoW4e9yXeNQ3CI2KD/Dbup+SNha1uCEmzN5A0VfPJzyi4Avdtl9URGC
    HUFnUAs5B366yQTgmkjUcfcWqTKBicp4TAZ2KbuDzMX6f6cikb9bdbl4P62vN718
    5iclN77KfTfc6j4aOdIbnc6J9GStvYY0R2eZRKkr3CsqSuebxrQjV2VzbGV5IFNo
    aWVsZHMgPHd4c0BhdGFyaW5pbmphLm9yZz6IYAQTEQIAIAUCR3PL4wIbAwYLCQgH
    AwIEFQIIAwQWAgMBAh4BAheAAAoJEL5UMQwX8Ko3juoAn3bIDWeVAWOfi1XjXdaA
    HN7HKkMKAJ9RJ4F67NZKo37U5E3UnnVSRLCZ27QgV2VzbGV5IFNoaWVsZHMgPHd4
    c0BGcmVlQlNELm9yZz6IYAQTEQIAIAUCR348ggIbAwYLCQgHAwIEFQIIAwQWAgMB
    Ah4BAheAAAoJEL5UMQwX8Ko3KPQAoJYfbksQ/n/1FitmpqJb+AmpOmkPAKCVXF0g
    Clk43/Af2rVb3Vm91NmuvLkCDQRHc8voEAgA6Tped4TSVLcdXmDMeHvt29i/9rGw
    EO6lbwUZfamHGasMALyhWC2/nWhoCdo6tTP2XT9guEX5eu/FoN+nAEIKKHqNiiuZ
    6jyOuzUFD/d6n8pUkjHRLqLxFznbgW8f0aaG4rNJTQEQy6+X4/yKEvzRxjroNbZQ
    l300+liw6Q5OztzgMjhkcva4Gxf+aVhVMueGVuANj1QhPPqvIT2roRsBY6PPNCGY
    AaymLWBq51UbvE5j2jtCF2nfxYnajauqnJpZK0tSkLMkxWd/Khvv7GmO4v47qx/U
    DTx6iQP/i43JZIqSg8zSGjY9Lr9XJpzxr4FVyW/rs5X3Fp9ZCQxF3Sty5wAECwf/
    Zs93KXphXLWhCal07JQsu0T2y81+EXRue7QltZs+VTHvGZuc949dgnZrq6iRckpD
    unMRJUXNrKP6BFNOJuDAVRVOxxDQc+ydVGwpQFzJes8/9C0TYOaw0k+ayCZapfVf
    L6zktK+g8oYOXVjjdo8hX9xsus5ie69x73Csve59VmGgCwvywuLUcjCWEgMZGRY0
    hBL9ec4uRDVRIdsl15hQ3NGwdxiDEPkJu8QzQv/t4cde+omnI0UdH+Ywk6FZ2qxj
    62QaoTvFhuNfWUdmnEAbIkfRCFnHVEL5KcQs0Z9CM2V6qS4kdD9wzthhYtcRgWjS
    paW/fPyNYLmXuYgvfyk8XIhJBBgRAgAJBQJHc8voAhsMAAoJEL5UMQwX8Ko3AxYA
    mgKQnqx2baAJtOI7VsgWeTBFEi+HAKCaIQDFpsRsUtsuEYpqj+/zH1bwhA==
    =kNwv
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.260. Norikatsu Shigemura `<nork@FreeBSD.org>`

    pub   1024D/7104EA4E 2005-02-14
          Key fingerprint = 9580 60A3 B58A 0864 79CB  779A 6FAE 229B 7104 EA4E
    uid                  Norikatsu Shigemura <nork@cityfujisawa.ne.jp>
    uid                  Norikatsu Shigemura <nork@ninth-nine.com>
    uid                  Norikatsu Shigemura <nork@FreeBSD.org>
    sub   4096g/EF56997E 2005-02-14

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    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
    =/u/r
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.261. Shteryana Shopova `<syrinx@FreeBSD.org>`

    pub   1024D/1C139BC5 2006-10-07
          Key fingerprint = B83D 2451 27AB B767 504F  CB85 4FB1 C88B 1C13 9BC5
    uid                  Shteryana Shopova (syrinx) <shteryana@FreeBSD.org>
    sub   2048g/6D2E9C98 2006-10-07

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    mQGiBEUn9lsRBADbufFsrk3YtL2jzdLYUufYV9goSp7joMMOwSLhSWf/98DoaW/d
    1bhwr9yAFfA81/ByuCEkigZl6jUW5AEEDuoJ4hxZG6th7OasSMCLHrGv4QCIDsiR
    Yo3TUFlh3Fg7SYZAxmGsMm44u/nB/0oZOWJeTzu4IkoG2QCfoRi+RUIEZwCgupdk
    xn2tovdQA+y5l7uxhm6MW2ED/Am3BVCM5EojGESa8QKTynKoWOzPFSvUvarqORru
    pEpmy5JdPjmf5mnfPvWcyccgAIi4VyuyGeqckFOJBBUaQ7w0Es7G9p+egp/e7UVC
    vgAVRKtSzix3TuXaaB04K3IJVY9vmEwTGO8Jy70Ab1hI/R4MbUUfzuWVaKUic9jB
    p3oRBAC8RgIM9zBTOtbsFTQ/LpiBL2X6oSRrJBvaLtFZEyG4aDGPxF/ESdfzIPrW
    3YePPinAgB1EhVawmP/uj3zhZQML3g69tVu9YhMhRb6C7v1h/nVC73wT3KDnGrPS
    eZzFhgHDr4zfEomXoR+HLjP3u9EMguyzlCfEO58QtTgeXKzZcrQyU2h0ZXJ5YW5h
    IFNob3BvdmEgKHN5cmlueCkgPHNodGVyeWFuYUBGcmVlQlNELm9yZz6IYAQTEQIA
    IAUCRSf2WwIbAwYLCQgHAwIEFQIIAwQWAgMBAh4BAheAAAoJEE+xyIscE5vFGEEA
    nAhEEHq5H3tzKRdgX+PFn8wyzSgqAJsECHYU7maqvBfs8l34AOwuoK+TR7kCDQRF
    J/Z0EAgAxyVxRfbMBrSUGeCXI1FSWvqZJkrLUeQ2aCN0FiEmrjUMqTgkiZcxortS
    BS9Iuk8aEXv7d4S6qhJLfidM5XgxZs/wXFHNO30S+HHw5EwQuSDg1OGM/vY2i5y0
    hJqZuQos3SpUWx2Hl3y/BlExt+D5jwFyU9hUE1nNru3SltmryJwr+6PDFfom5iYc
    1FZpfnm60ZPK0cWDYk04uMYebgXd55acArmPvZMdzEYl/ChrB2GEv/JTVCJZZY0q
    rfI7WE2wwPb6/+WK+QINb9fqAdGsOlpOgkuFo7Xu+iKdH/EDGWnKQkLMPClM1xMK
    dclJKMz5y+l/GB/dTYWH4NtGeiIk5wADBwf/TLTluCRCFKDHkBuV68mJs/ShXpXw
    tnhaFF5snAmmtAH0zk81byw4Wt1+MUMYZ1rYrmhqyhXcqnAcHYatUbj2lyvzvCxo
    W2qdW6CE+0bj/pCM41oeRZi4LzJx3pYwSS2fPWaBWAeWZ6qLrHWT8lc0RrJMlteJ
    kDnchDP9AVxmi4bvpmUbNPdERDEE66XFtQ3zXpzmb0hLV1Hcv60KVYd3zzRADOaM
    tRnRMN53/yC0C+DDDoV6H4TJwxiTo5MTT7s9a9H/EfMY40RxFGjwojRukCTGWpuh
    pJf2WBCsnvBqVsqJLeOHyxwlbJhm/KXVRbFoAp6rZTshQ8M2kplmygIJEYhJBBgR
    AgAJBQJFJ/Z0AhsMAAoJEE+xyIscE5vFzHMAnjcjCi17pcNEGqdUuGWLXFCyQ5X/
    AKCNc4ZJinPdFRM5W3TXJmKRuGTOVw==
    =DE3R
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.262. Vanilla I. Shu `<vanilla@FreeBSD.org>`

    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-----

### D.3.263. Ashish SHUKLA `<ashish@FreeBSD.org>`

    pub   4096R/E74FA4B0 2010-04-13
          Key fingerprint = F682 CDCC 39DC 0FEA E116  20B6 C746 CFA9 E74F A4B0
    uid                  Ashish SHUKLA <wahjava@gmail.com>
    uid                  Ashish SHUKLA <wahjava@googlemail.com>
    uid                  Ashish SHUKLA <wahjava.ml@gmail.com>
    uid                  Ashish SHUKLA <wahjava@members.fsf.org>
    uid                  Ashish SHUKLA <wahjava@perl.org.in>
    uid                  Ashish SHUKLA <wahjava@users.sourceforge.net>
    uid                  Ashish SHUKLA <wah.java@yahoo.com>
    uid                  Ashish SHUKLA <wah_java@hotmail.com>
    uid                  Ashish SHUKLA <ashish.shukla@airtelmail.in>
    uid                  Ashish SHUKLA <wahjava@member.fsf.org>
    uid                  [jpeg image of size 4655]
    uid                  Ashish SHUKLA (FreeBSD Committer Address) <ashish@FreeBSD.ORG>
    sub   4096R/F20D202D 2010-04-13

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    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
    u3OkE4h133CENnyqgJhmDboQTKbpq47jgHpBpATVMnLcDpKmg1ypXHUK/1zo4dWB
    hdNf/EK4adzLOCSnlYc4/4knkAiaBuy65oEYVeob9FogGK6q9xIFehzpRN53Pcgz
    I3LSf+I3gaHlNLIpmqvLAOZK88ZsnidCPhA4u0br9ce0FOKaTGzNN6zDWl95pBvB
    xoy+Jgovp3emI1OVNW+aNqK6Syt3WdSqi7UXNabpN0PgfqoHzU8a96aEYcuU0dGC
    0YABEAABAQAAAAAAAAAAAAAAAP/Y/+AAEEpGSUYAAQEBAFkAWQAA//4ABE1l/9sA
    QwABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB
    AQEBAQEBAQEBAQEBAQEBAQEB/9sAQwEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB
    AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB/8AAEQgAZgCA
    AwEiAAIRAQMRAf/EAB4AAQABBAMBAQAAAAAAAAAAAAAHBQYICQMECgEC/8QAOBAA
    AQQBAwMCBQEGBAcAAAAAAwECBAUGABEhBxIxCBMUIkFRYXEJFSMykbEWgaHBJCcz
    UoLS8P/EABQBAQAAAAAAAAAAAAAAAAAAAAD/xAAUEQEAAAAAAAAAAAAAAAAAAAAA
    /9oADAMBAAIRAxEAPwD38aaaaBppoq7croOjOnBgheYzka1qOXlUTx9/siff/Pwn
    Otb1Cev7FsCnT8VwCKPNMphENFmSByHAxqmmDc4bwS5wWOLZzYpG7SIFcjQsVpYs
    m1gzBPA26PXn1ul4FikLAcTsCxM0zWKYhpcUisk0OKsK6LKsBGYqEjz7aQw1XVGG
    1CBGC4nANHmQIb36SIWPME9CFTnj+bZf8k24/KcIv6ou2gk/O/UF116pSiHv85uY
    UEquRKLHZcnH6MYVepEA6BXHEtgMb93CLcnspjERjXynIMfbFBYFzM+eXYz5L991
    U8o5V3Xym5Hv32+q7oiouyfXV4hjtY1rWMRqbInjn7J+ERNvsv8A4+Ncyjcn3444
    3Rd+V34VE55+m++gsaNX3NbISXXT5kKSmypIiHNGkNVFRW9pgvGRFRU3Tnb5eV8L
    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
    72HtYsmNE4TLbl0fMctolg==
    =ID+y
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.264. Bruce M. Simpson `<bms@FreeBSD.org>`

    pub  1024D/860DB53B 2003-08-06 Bruce M Simpson <bms@freebsd.org>
         Key fingerprint = 0D5F 1571 44DF 51B7 8B12  041E B9E5 2901 860D B53B
    sub  2048g/A2A32D8B 2003-08-06 [expires: 2006-08-05]

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    mQGiBD8xcj4RBADp/ttN/vrU8xXimyZDEJ3NbJXMRAdWin8hhY5cVDT6n6t6Kih2
    5Z+orVfRUA77yyYprxpkMKJvfsRspWvJeM9/7duQe6C7CSUNwB3bXCj5Q7PG9Oqa
    a6ZNPQ8k0EGZkFRgbbkru8wpcttMr4ngsdIm5cU7Y/bk3O2L8kh/Do1XwwCgraUA
    0z9KKZR+PpMgM6YXmAy0fh0D/3EP//MLIF7RW+wyabjmTGxMB9RapZXlZLTjFFeX
    sOrAhgcjFodwigDHEqLtG5I75wz+z2vuyaLtTPHYy9fkFxKXNE8wNWj++6GMJO3l
    OWRyWNlDLX0d3D22vVWOeh/rLq+PvsEHso1TnOJrYn4Dn4VwVXzSIaGmzGAPuPoO
    KaT7A/9Pgc8gwGPtG31yrp6AixoMZ32wVdxuqndD3M9XK+jtcdDtKvICQcMWCL5T
    E8dwmb2qzN13bBILJHktut5JvjgOgYOJeLZKPAMRZz4MON7KcKNZKmPBuNw1a6cF
    KGkBJfbCh1GIx7DyF/CcFeg4/7IhQoANYZQNc9Zm/tRbg531SLQhQnJ1Y2UgTSBT
    aW1wc29uIDxibXNAZnJlZWJzZC5vcmc+iGEEExECACEFAj8xcj4FCQWjmoAGCwkI
    BwMCAxUCAwMWAgECHgECF4AACgkQueUpAYYNtTv0bgCgkdyW3YFhooTeMExQJT5Q
    FbCTYS4AnReju20M/WngliTt9bdbnbmPeGFOuQINBD8xclEQCADhc4W1TgKJBO6M
    bEnWC16IXR3U8sXU7meMMbclb5vWt3j1jHVczrYVdkEyGxzu+ydxVlPhdGXtxT1W
    8CBjXsfz8DRKs9nMttqPj5u6KQdr+O0zWiZZkoqOdT29X7WZNKWQreKK10PgvmDu
    1rzf0Y87B7M0qnqjKjhqinVhLrOHqJIwfFQmB/E06MOhE3BQqYXc5qvBuq4U9y7X
    Qt/Cxfobw47iwAJEJIExai4mMsbXXtydsj9O1tg20c7IBzJEEDecOFJPhIKtcQ7p
    kRNjVGwAkQhWmXsPZHKkMjgnkhTmH0L7MT2YGK6LHvLiuAbjULYiSZ7WLXMDe3iJ
    al4lDNSrAAMGB/9X9K1Dmdu6pWOub3zkgNybFFh8OoguKJkdO/bh1RejzeNfI9Q1
    M8gO3ePzgXF3+BgJIblOA77t6OhNUQLRcjSs/xZwXG5KVQjRF3XJGkLZQIl3JGmB
    i5eNE/rBIMHSPn4GM8FSDZ8bPGzgaTBhEIos/8nCMpyxf70f+gsbjjW/Dq2HXHNr
    wToHezXX1LzzCqIl2fJgubrMXVbKYQBLy7d/IQnfZp1sGfvTcSJSZXT3wo6MH1EP
    jUpwmfVOGDN1NDQTbuu1vYqSETt2xzIq4R/+y8/xbm8YKBYDCL2EyCGQcwWhFU4C
    RAgXFkuWPiXx/PjfYC4YpKd57/7xgRO9i++LiEwEGBECAAwFAj8xclEFCQWjmoAA
    CgkQueUpAYYNtTtwzQCfc42CUSzItmXxtmWaVRxFSbnwJTsAoKPQ1LsUmEHNo+1s
    X7criQoU0Axa
    =iL/w
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.265. Dmitry Sivachenko `<demon@FreeBSD.org>`

    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-----

### D.3.266. Jesper Skriver `<jesper@FreeBSD.org>`

    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-----

### D.3.267. Ville Skyttä `<scop@FreeBSD.org>`

    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-----

### D.3.268. Andrey Slusar `<anray@FreeBSD.org>`

    pub   1024D/AE7B5418 2005-12-12
          Key fingerprint = DE70 C24B 55A0 4A06 68A1  D425 3C59 9A9B AE7B 5418
    uid                  Andrey Slusar <anray@ext.by>
    uid                  Andrey Slusar <anrays@gmail.com>
    uid                  Andrey Slusar <anray@FreeBSD.org>
    sub   2048g/7D0EB77D 2005-12-12

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    mQGiBEOdg/YRBACkP7DeG+wypqbAvKYmIYMBHsYFCmIf5928MvpCgwO4idtg76IX
    Qd/AQH0sF2uFJiikI9NiJuq3OUXsyRk+7xltLLrgzl7/0GTT6jej8tWFH0AU1/0r
    nYhUJ/svVe+QNNEbMOvCCcZLslv4/fuak4Ilvgcb/SAir8iUL+nfNzwLwwCgw+fG
    2DBpULmZtyMUMZYwyi2UQ2cD/jycHnx1+AHLt24OajcWBoBG88DlcK3ERpg/J+D3
    PYoNfs4qcEhU4UVQw5vhMXBnWxD+BiZf6yrh/GRay11oqShMWl/B4UQrZZBwXBVN
    Lvx4aY6LRA/DAUd0R2CUIwsjaaeBQ2gmvISau4UjtE1ezNI5s/E7oFDNDKkv06Z2
    hrucA/9G3+UlrLhDWd2+VMt99O5FFEhtHbClMUXIhXYwFS/41zy7cGf9p4wA+IQC
    SeXns1bvdZYBxPAYTgDK0XGP8yi0TMpICcXB4v9gkqKIIuO3scB3mH+We66RG5mI
    7sls5BoJ3ARfsJuidRS1Uu0TXqCTcj2NTCtDNWd82nRarNpDwLQgQW5kcmV5IFNs
    dXNhciA8YW5yYXlzQGdtYWlsLmNvbT6IYAQTEQIAIAUCQ52D9gIbAwYLCQgHAwIE
    FQIIAwQWAgMBAh4BAheAAAoJEDxZmpuue1QYMTQAnRGPeBTIOHdEj4nOmVtECGhv
    jpqsAJ4pcMFoOwSyCqy5YXoetkQWrsq3IrQhQW5kcmV5IFNsdXNhciA8YW5yYXlA
    RnJlZUJTRC5vcmc+iGAEExECACAFAkOdhSwCGwMGCwkIBwMCBBUCCAMEFgIDAQIe
    AQIXgAAKCRA8WZqbrntUGGMkAJ45WS+CK9Uh2UYk3kGG6/jmx3kVFACgl3ALZehS
    E1Z1ifNha7XLh8C+U3G0HEFuZHJleSBTbHVzYXIgPGFucmF5QGV4dC5ieT6IYAQT
    EQIAIAUCQ52FUAIbAwYLCQgHAwIEFQIIAwQWAgMBAh4BAheAAAoJEDxZmpuue1QY
    MzsAnA1T9Wkp8yaxQmPBuuvZNrTdJOBjAJ0TJrwVeQW/+3zffBICU+rptKA8xLkC
    DQRDnYP9EAgAjavYUHgBttL7+qFwfeOJ3oW+sNVNsMp4VGWvy6QeVCeFvVK+Kpb/
    eN9ScAFJM+8wzhNHv3eyXFht0jwSadX48a0FzcYApm+pP3OH6y4Osxhz27P2tc2u
    yzKMV19nZz28cikY2mtH3Y2GtSyn8pOIL2Ar4sc+hK1LnszGTPf6YgLSBlJSnGH5
    +TMg1Pxq/CSDIq4zEv9IyBLlbuK+w1/fqDzLBT5L51FdKDUpsCBZNPaRiin+ZkBx
    LI742GusIYz+aIcwsRBDONnWdemAHbtSFDxMup5SSEvlAtEU5O0gO6bZx3tv+WZT
    6EJ66QsE5IszzTGkw0qK/H/BrsEbyOPbOwADBQf9FOrU6qF1Zj/ONad4vzbjDrn5
    nI1vnrBkJ2QJnMM/d6V2ItUVjz9myqXTgteERmwN60DD1jrTqsw5xWHJ/rjJCoW6
    mUHWjVkUram3OL/HO96t8zmTZDynrGXfnzLqykkLgJVsVmoU/1OCusY6h0CMAiWr
    altooE6mD4dpBQq1svwJEe98/X97LJix0J8W1QLOwOi8lD5kApFf6feTRCzJKcOy
    Szr3NiiwYGGRyHDQhe13KiGoJZQbhoJlbpS7krBTAxyUll6RRtQmlITLF5wmP0jV
    JWPN2tZ5BdmqYEqOoH4h6Dj+D1glXT19YN6kh+CV1w/d6iWWiB1lDXwDOQMtFYhJ
    BBgRAgAJBQJDnYP9AhsMAAoJEDxZmpuue1QY+tUAoK4RQLo2F+0c9PlfrfUOYpOk
    GAzYAJ0dMZ6xeDy4UKlIBdDq4KPZk8IGzQ==
    =vOBB
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.269. Gleb Smirnoff `<glebius@FreeBSD.org>`

    pub   1024D/1949DC80 2003-08-25
          Key fingerprint = 872C E14A 2F03 A3E8 D882  026E 5DE4 D7FE 1949 DC80
    uid                  Gleb Smirnoff <glebius@FreeBSD.org>
    uid                  Gleb Smirnoff <glebius@cell.sick.ru>
    uid                  Gleb Smirnoff <glebius@bestcom.ru>
    uid                  Gleb Smirnoff <glebius@rambler-co.ru>
    uid                  Gleb Smirnoff <glebius@freebsd.org>
    uid                  Gleb Smirnoff <glebius@freebsd.int.ru>
    sub   1024g/A05118BD 2003-08-25

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    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
    =buTJ
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.270. Ken Smith `<kensmith@FreeBSD.org>`

    pub  1024D/29AEA7F6 2003-12-02 Ken Smith <kensmith@cse.buffalo.edu>
         Key fingerprint = 4AB7 D302 0753 8215 31E7  F1AD FC6D 7855 29AE A7F6
    uid                            Ken Smith <kensmith@freebsd.org>
    sub  1024g/0D509C6C 2003-12-02

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    mQGiBD/MDZIRBACfyWbQW/cZnu504r57DAQbCbTYNG7V/TgfZwphIPyC8YnLtmJv
    vLdtl7+ToiG7UJUJsBE9OJdb1qA7JP5+jha/TlzIAUMW8doWNyI52nM1zHzBAZVE
    aB4Gxy7pib9yBsrGYiLbuV5YfB7TUyea31OXpZ4jPl1E6RxlYdVuzEhq0wCgnOeC
    SuO0cJZMXisY7DhoF1Q8ucEEAIALzShJ6bbjABbcvMWmoRwXvIcBsAcjKSdRcIp0
    AP+9i3PSZkNXV7rfYM3+SydTa3sJIVBbdXChQakcZqu9+rmfL53rErErYuRwKqhX
    mkp4+3GO7cKm0Oya1xLF9es/OfkKcQ9LxkEytNEnU7xlUNoP8fkCMJcBIwagzPfY
    7UAzBACEwGP/o1e0R36jOAjrUZsxe63Zopz5138bYdZtmsqwI+QHK6+/tS5I7FCL
    EQZL6fEjR7gF1lcj3gC2nypjO1aqodx0hShlNnz9d3uJ0q8EChjJuc30UhjgTcbb
    ZQv3hssKHkvTJ5ch0x+ohYCfH+Gcd8jbXCZvvS8PcI66DRaz3rQgS2VuIFNtaXRo
    IDxrZW5zbWl0aEBmcmVlYnNkLm9yZz6IXgQTEQIAHgUCP8wW5gIbAwYLCQgHAwID
    FQIDAxYCAQIeAQIXgAAKCRD8bXhVKa6n9nfpAJ9MHcwNehlbFRJn8B9tlLBE2JvU
    aQCeLuore1PhiLZPjHriz0/npGn9xDuIRgQTEQIABgUCQLQblAAKCRDYyjFxW6BS
    wyFIAJkBI9/2PBvvTvB0FZUF2yd3JEQJMgCgpWVGTdChec2z/YGMQ/EeTgNDThy0
    JEtlbiBTbWl0aCA8a2Vuc21pdGhAY3NlLmJ1ZmZhbG8uZWR1PohhBBMRAgAhAhsD
    BgsJCAcDAgMVAgMDFgIBAh4BAheABQI/zB/pAhkBAAoJEPxteFUprqf2oVkAnj0Y
    vcFOkVU9JWyJJKieWL/+OuNSAJkBvi/uFt2RgkNgUOvHR61SxZrGeYhGBBMRAgAG
    BQJAtBtxAAoJENjKMXFboFLDvxkAn21uVgtvwLN82vOpKTvBzwAUVK/gAKCKEQDk
    vfyMyQZayoFeC8cMagaUCbkBDQQ/zA2UEAQAqYnqd58qHyrKfsw3SrTE74/4qneU
    ra7FY74jcUhGhrxOElG5hXrHHEHo+0M+0zFwhqedecj2GZbrzGEl5SxVsme3slAf
    Gt5OaAk/ojOY5d5rTezG5v7jSr4EX0JKDkdlve8RozHsutXznsXmUY/BfO1qACek
    herQeczznycJPZ8AAwUD/1MF+jo626W+4/gMgjgCQ+saOiNI6AnGlS879MUjV0Ef
    j6aPfAJ5Xi7zNqkM+HdNBxjPtyxIK8RqmdAjHDMR8FjlZjf+svwuL2CfXk4jCk02
    OXD4dxJK74w/ZTK2kSW1VW63+5K1lgsRmZvnTpGZ4ijxj4H0r2bJFQ7iUd2kNxpO
    iEkEGBECAAkFAj/MDZQCGwwACgkQ/G14VSmup/YeOgCfcaCQpDfKaEvYiw7XJryW
    b4OXclEAnArceW10G489Csi2QR94q7clHU0G
    =gLKU
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.271. Ben Smithurst `<ben@FreeBSD.org>`

    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-----

### D.3.272. Dag-Erling C. Smørgrav `<des@FreeBSD.org>`

    pub   1024D/64EBE220 2006-11-11 [expires: 2011-05-31]
          Key fingerprint = 3A1C 8E68 952C 3305 6984  6486 30D4 3A6E 64EB E220
    uid                  Dag-Erling Smц╦rgrav <des@des.no>
    uid                  Dag-Erling Smц╦rgrav <des@freebsd.org>
    uid                  [jpeg image of size 3315]
    sub   2048g/920C3313 2006-11-11 [expires: 2011-05-31]

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    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
    DA==
    =ZSFd
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.273. Maxim Sobolev `<sobomax@FreeBSD.org>`

    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>

    pub  1024D/6BEC980A 2004-02-13 Maxim Sobolev <sobomax@portaone.com>
         Key fingerprint = 09D5 47B4 8D23 626F B643  76EB DFEE 3794 6BEC 980A
    uid                            Maxim Sobolev <sobomax@FreeBSD.org>
    uid                            Maksym Sobolyev (It's how they call me in official documents. Pretty lame...) <sobomax@portaone.com>
    uid                            Maksym Sobolyev (It's how they call me in official documents. Pretty lame...) <sobomax@FreeBSD.org>
    sub  2048g/16D049AB 2004-02-13 [expires: 2005-02-12]

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    mQGiBDv7rWERBADAnp/1Nc02OyU3eiXisqYDw2CaFNG7CpTNalQbJCX9KDuCzNbh
    RKS7slRG0Cp/IsCIoJ0WLugslAZHBtLigl5XxdVeTYKJfXV1gKXLBnzW942oswUu
    zMeZzpcrCYHK7AVaTtZJEQTDf/SIx/ZYu8DJPv/7m9I7aY3EYXQsHIqj7wCghRzg
    vhbpzqR9KiIsH82z5ctlGHUD/AixgJJ6dCf/bxIq3siaijMs1fM1JNLTIL5W7i+I
    LWUjM9PJztfasAZMj4kXjimZl9345CW+0+jV2oe7y+AFWGZUsQHKb3azruH9frZc
    a6JSUOwvy4mQjMwtQC2ngJsUQGqrfGl3DLaa4hJzlgQ6i0PHTN1ljKvrMNgtgnZg
    dypDBAClZuCCjn1RffnM4FzWuDZLYL/wLhqbtzMNvQXe5gwnDeg1QM1xgfUtaaa0
    7f071Ayv+K54wVk+7XIRZLP0Kbgo07kJlXw5AzznzY4167RkcrifLPtG4nbDQCaS
    QreYjUG902h8T7ckkmTV6VAPGUEh/ms9aAeFxAg2XOXiwCaYerQfTWF4aW0gU29i
    b2xldiA8c29ib21heEBtYWlsLnJ1PohlBBMRAgAdBQI8INsQBQkB4TOABQsHCgME
    AxUDAgMWAgECF4AAEgkQoNu5t4iCBa8HZUdQRwABAZRqAJ4ypOHGqZA7mf+m+R1k
    kUCSxtirZACeIXLS54rLLTauEHQtuHfNKEQolCC0JU1heGltIFNvYm9sZXYgPHNv
    Ym9tYXhAYWx0YXZpc3RhLm5ldD6IZQQTEQIAHQUCPDcdsAUJAeEzgAULBwoDBAMV
    AwIDFgIBAheAABIJEKDbubeIggWvB2VHUEcAAQEdMQCgg67lgOG0NlSy6RlNxeqT
    mREvqt0AnjoRX4MwyfWsHmD63XoByM5XjdketCBNYXhpbSBTb2JvbGV2IDx2ZWdh
    Y2FwQGkuY29tLnVhPohlBBMRAgAdBQI8Nx30BQkB4TOABQsHCgMEAxUDAgMWAgEC
    F4AAEgkQoNu5t4iCBa8HZUdQRwABAYJvAJsGythE5SUctWSmAYIxYHagnEUU/gCd
    FQv6AywESIEMOLK5iaONMFb5NGO0I01heGltIFNvYm9sZXYgPHNvYm9tYXhARnJl
    ZUJTRC5vcmc+iGUEExECAB0FAjw3HwsFCQHhM4AFCwcKAwQDFQMCAxYCAQIXgAAS
    CRCg27m3iIIFrwdlR1BHAAEBbJQAn1tcab5GD07XKi33AdcyP521kGhHAJ9eo7wb
    PMLk4e7y6ZiQEeMd4DF1/5kBogQ+e3iWEQQAsxiirVfUk5G6X5YyhHT3pX2Tt6n0
    F5hj36BLxU/Cbn7viUMP2x6qafIolWC5wW3JEklsql3wXovUl6Uuaah6S57XD+45
    YNAztjJ2rOp4wW9KD6i7IWkbtgz0eRLQBNzEvcvdMfGqH/1XujGn033Q3tpgT8sH
    WfbT68DXuaUTJCMAoJhav+twkmoLhT0o5KSjSgcmtjOvA/4oJZ9D5H4rSRKWhQNG
    5A5FZlNX1q7K9/WYcSKWsE6R+jnOFigZOt/wEXA4tUiI1b7SaVnSPNgQ26iMPDIZ
    uauEmvjQmVDSdO0ZsS545VQ9xJtksJdHZXnTVKWyTNiRWGHWT3ucR2XFJ40U+so/
    AxKch0N5CqtYy9A27aO6KLqBOwP9GJUvIE1zB5plWP70d9Kii6Gf9c84VwK8sYcd
    w45M4DozPUJqMUcfP4ycvK5AY80MRvNr+UP0VgfpuKElh2JCUpgj9XTE48vuAdyd
    3q6lVEC4SpjZu29oFNyzcX0dILPHy49pTaNOUK7EQgdS1S7OWksP6XCWQ+Fmd8E7
    vtcT+BO0JE1heGltIFNvYm9sZXYgPHNvYm9tYXhAcG9ydGFvbmUuY29tPohiBBMR
    AgAiBQkB4TOABAsHAwIDFQIDAxYCAQIeAQIXgAIZAQUCPnt4lwAKCRBtQCVYRo7m
    2FP7AJ9QC+MpLfOgfrBZ62ylXJbgV9rSfQCbB+djelAeWNwsPCSI1ztdLW71gIW0
    I01heGltIFNvYm9sZXYgPHNvYm9tYXhARnJlZUJTRC5vcmc+iGIEExECACIFAj57
    eW8CGwMFCQHhM4AECwcDAgMVAgMDFgIBAh4BAheAAAoJEG1AJVhGjubYpG8An1bD
    +5ViByos/wyRoQ3fL5eRnPbYAJ9orRZWWPheXO7sO4kRB4p0tUGZQ7QfTWF4aW0g
    U29ib2xldiA8c29ib21heEBtYWlsLnJ1PohiBBMRAgAiBQI+e3mWAhsDBQkB4TOA
    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
    Ks92vEvv+3B69ACfeIer9qirOJQD1Knd3bJmbG6ptq6ITAQTEQIADAUCQKgn3gWD
    CWPVkAAKCRBsY9oEhNDX51cwAKDWXdgVIwMFvkX+UWrIAcELPQK3twCgp9SYhI8o
    eSuWQrtI1NrH43dnz4a0ZE1ha3N5bSBTb2JvbHlldiAoSXQncyBob3cgdGhleSBj
    YWxsIG1lIGluIG9mZmljaWFsIGRvY3VtZW50cy4gUHJldHR5IGxhbWUuLi4pIDxz
    b2JvbWF4QHBvcnRhb25lLmNvbT6IZAQTEQIAJAUCQKa8vgIbAwUJCd7XcQYLCQgH
    AwIDFQIDAxYCAQIeAQIXgAAKCRDf7jeUa+yYClbbAJ9aRpEjLDKXtVhjVmf8pIJF
    MDuPAgCfdhkF4CGjhAeitWxpH+WdCRlE20CIRgQSEQIABgUCQKfrKAAKCRAiGMge
    jnwD/166AKCIm+EGRyBP0tR9EoM0nihlTE4+GgCfTfhsfPla/Nfi3MlghP+N6BrV
    42+ITAQSEQIADAUCQKfgpAWDCWQcygAKCRBJRaU313tD+6OGAJ9tE7s8HjQpdGFR
    7yxTHvN6MMpZXACdFQvd0G99F1du6vK6THJt/TuMwP2ITAQSEQIADAUCQKgGvQWD
    CWP2sQAKCRB9vQuV7YwgQgrfAJ9T7R7Q3FJZaNqAtHMUHFyDuEk34ACfX1y57LUO
    8CZKqHl7ZOot3RB2VoGITAQTEQIADAUCQKfm8wWDCWQWewAKCRAXjuJ0+BZyxUrV
    AJ0cZ89+YM3lbETeVlvHprOug/gWbQCdHbHscPfjx7FVkTTUe6hkd9J7fwKITAQT
    EQIADAUCQKgPCgWDCWPuZAAKCRAMy37+CzCpO0YUAJ9dhzywfm3VmhTQr2Gh2NF9
    EtISNgCgg3A7wVmhphaBag4PqB1D/NcCg3qITAQTEQIADAUCQKgn3gWDCWPVkAAK
    CRBsY9oEhNDX53yAAJ9xUFCI5G7nlOZTr7UKVP4FR0EPUACfSOnqzKyyp1OSibmx
    zW47Lz72gES0Y01ha3N5bSBTb2JvbHlldiAoSXQncyBob3cgdGhleSBjYWxsIG1l
    IGluIG9mZmljaWFsIGRvY3VtZW50cy4gUHJldHR5IGxhbWUuLi4pIDxzb2JvbWF4
    QEZyZWVCU0Qub3JnPohkBBMRAgAkBQJAprzZAhsDBQkJ3tdxBgsJCAcDAgMVAgMD
    FgIBAh4BAheAAAoJEN/uN5Rr7JgKB1kAnRtC7GHF2GLbDyqJ8b9QDNCeUC9bAJ9G
    igTUYVWJua2Fa64tJtKJ/JIonIhGBBIRAgAGBQJAp+soAAoJECIYyB6OfAP/UHIA
    n3V0lGZVJWAvdbpszkOq4jSf0JWwAJsFunCvZqn4AyRoFlCfF0DBNOugvohMBBIR
    AgAMBQJAp+CkBYMJZBzKAAoJEElFpTfXe0P7gokAn1yPJFfgJ2BxRjpN9NsivQly
    qObUAJ9pLPMloXK/69udhQCi/hQyD+YtGYhMBBIRAgAMBQJAqAa9BYMJY/axAAoJ
    EH29C5XtjCBCFX0AnAzukQp+n6mOl6BWG4+wPZa3s4cHAJ45ugwVCuSLa+Cm0xRy
    QwXFAobKoohMBBMRAgAMBQJAp+bzBYMJZBZ7AAoJEBeO4nT4FnLFBloAn1hZu7BO
    zljw+6etQuwu7nW5Xvb2AJ9I69B/Xr8oEsnQ7VLuRDQypak9qohMBBMRAgAMBQJA
    qA8KBYMJY+5kAAoJEAzLfv4LMKk7NSwAnj15R9lyjrqK+BXPMpCV87MuJABkAJ9a
    mCwv0S6UTti7BgGUOmunycJgL4hMBBMRAgAMBQJAqCfeBYMJY9WQAAoJEGxj2gSE
    0NfnAkoAnRGHimIOvkNh1EUTNj0z3gwayCUbAKDZTgsntCr5VOPZZYbLrJQl6vlh
    erkCDQRALSYmEAgA4I82XMqjiHHbgYea0nF5OoNHXENTmpRIEpE7RZdj0UrMAJI1
    fWXIjl4JS7OgvIG+thSoyC5ueveK5j8gw9gIlQi7ANcQndBRnse+COnue9Z4L8J7
    NpfhSop5Gskin4ReUwnRAFZPb+aEVpPph4S+Zxg8sCUGojvTDuRCUk0mNov9W3Mq
    eFwUfK8nc2n3eveGtfp4ygyhq+E9lMpzbQ4Flhbm2x3Nmqe7VCb6Si69JKZQrWaw
    1yHMqt3AQr4RgtgIjpX2CmV8j/Izc8WVAbQDqvDM3NaVHYVzGuui4RYCbvMrrabL
    D5zmJjsRDdo66NYWs9y4Aky6SPkp7+sDNQqbdwADBQf9FCI7TFHFeVaTqSAK6vsQ
    nkbgBmoexaoSofJfJAaby8WeZ5AVGHRavglgAxaejZZqMHpcO+hDnTBj13J/wQMc
    ocgfOYPRzvwIZfx7Gc6uF3NIgUtn55DT+cZmjq3sZcUtlmpy22kLpDPy+x0CNzqv
    lMILIxiookXJaLGqeqjGXwQOcyj/ziZNb7ZY4nJLOjshnzER/YMY8xvnJnqQ6PDe
    izwPbuP+Ej9E7iAJhDnz8et4kSp2w3Mb5Zs5pu4nYySi/GincQ8r5gUOJXmMLPrn
    N+3qG/WP0GIni7hF83GgzvV3hjtcMuFf5AJRKJeq0AAgm5MiZlCFM7zWhffrWCx6
    oIhPBBgRAgAPBQJALSYmAhsMBQkB4TOAAAoJEN/uN5Rr7JgKItsAnRFQomWrmkKL
    KMzwh2yhNHGuxYtOAKCQWvphJCOXG2iv+epUwNTl9f24EA==
    =Z1Sd
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.274. Brian Somers `<brian@FreeBSD.org>`

    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-----

### D.3.275. Stacey Son `<sson@FreeBSD.org>`

    pub   1024D/CE8319F3 2008-07-08
          Key fingerprint = 64C7 8D92 C1DF B940 1171  5ED3 186A 758A CE83 19F3
    uid                  Stacey Son <sson@FreeBSD.org>
    uid                  Stacey Son <stacey@son.org>
    uid                  Stacey Son <sson@byu.net>
    uid                  Stacey Son <sson@secure.net>
    uid                  Stacey Son <sson@dev-random.com>
    sub   2048g/0F724E52 2008-07-08

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    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
    =uagC
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.276. Nicolas Souchu `<nsouch@FreeBSD.org>`

    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-----

### D.3.277. Suleiman Souhlal `<ssouhlal@FreeBSD.org>`

    pub  1024D/2EA50469 2004-07-24 Suleiman Souhlal <ssouhlal@FreeBSD.org>
         Key fingerprint = DACF 89DB 54C7 DA1D 37AF  9A94 EB55 E272 2EA5 0469
    sub  2048g/0CDCC535 2004-07-24

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    mQGiBEECPOARBACeiKSpedo952tApwSI+rrDIrp5LOC5FG1crAiTpAqy6aP+n60z
    c2euoVDGjH/ncUZ+TxUK/MkzSOFXTjU0TETFgq2UMxSzZCLwPrmQibfHbmnF08+g
    0EjlslsszccPgTEZz6F85aZGYWjU4dhQ1VYP+y5Im88CgahggCB6J+8hHwCggMu3
    f51egcdCrodzFvL8poUYKi8D/i644gOjVN/YamHS5QUGNPJ9xkcq5G4OfK+Ubjq8
    6T1dd7UkJ22sePpKGtRhPNATeEar/HwzLB7r2h+UAD4Yrl6+//EwWB73BgxyCqcB
    X57s57K3+UMblbLR3NWJAD/HpxIBFxXfj55VPk6aH6GX5LzayMxfZVYccMyWOcsK
    UZaNA/0aJkearTpmitBL49fOhz8Je/QIF6riigkdOuyx62yAtYRNrVbDrQvvornR
    Z1CLUp+mixUc3bT+emLFpz2ZXmGqCr9BMAqENh0gayGeekyk8IYLQudFSidL3yHo
    WErc76neXoBE/5M/v7jZCrQS9loS0vITFsui0Rv95BcsNbV0iLQnU3VsZWltYW4g
    U291aGxhbCA8c3NvdWhsYWxARnJlZUJTRC5vcmc+iF4EExECAB4FAkECPOACGwMG
    CwkIBwMCAxUCAwMWAgECHgECF4AACgkQ61Xici6lBGkj0QCbBe+RP2fX0+t1fiU/
    oOcORVeRc3UAn3Y7M2TfTKmSh+5RXsaxcVKWDqZauQINBEECPPgQCACOxltxnJKq
    MHIW1P1u4pjby/v0ZsVWbhqmPzW1L/o0SHbBdPkLn+NZmOKG3sXFkitq1nnXQMq0
    pdWwEK55rN3+iYMpq2OJgubsEDJbo39Lom49w3xXs3ElHKWmgjNUMmiGi3yA3Q5P
    p9E13ze+ZBTTZrlj9xtTsXYPCkoihcjA8iD1G52CJYuVQOCxeKo3d8EZi4sFXhTs
    yGfK7ipLN2jO4H8LSrImMlT5z/ePmhTgo59A+vsIShklJpRlHqYB861sMobUlbCd
    0n7Fng8pD9jIG63usHJgU32AVEeZ9BMaZ5Gjsm7KvIwJH+w8DGnR7016hleSXSEk
    wVbS7zjXKfAPAAQNB/9GQcWpnuKYlVa7olq9XOVHe2pHrnK20wLy14ormB245Aip
    gTCN/SEIgwc09nF2QXXXhzZrxsFCPphgJh7CT8g25LCJ2rchOhCpShNS43I1ol3d
    II4nK0DtXUJc/3qG5PgPaNLHHyskwIIyfL2rKRlufTgByzF3AKXHweJQ9suxGkGS
    i2+l1NBwLwsjee59gEyKXT/cbfkV/IgA+NBpj7QaDs0yhsbPSDAJszbo53aBAB9U
    sZjWP9tkrzaP1eoSbl+LFttLtrivG/v8HZuPlI4lELeRboslI1aUUfZVt7xx4A6P
    u3L1DWOYm9rQ0q1KMlhGQKa/JBtaKy73wwzZujSWiEkEGBECAAkFAkECPPgCGwwA
    CgkQ61Xici6lBGnrNQCbBljRUNo/9EHyCk0D07YM27DYC+8Anj9wU0uuZE798XZ6
    n4y0m1iMcuSh
    =Fl75
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.278. Ulrich Spörlein `<uqs@FreeBSD.org>`

    pub   2048R/4AAF82CE 2010-01-27 [expires: 2015-01-26]
          Key fingerprint = 08DF A6A0 B1EB 98A5 EDDA  9005 A3A6 9864 4AAF 82CE
    uid                  Ulrich SpцІrlein <uqs@spoerlein.net>
    uid                  Ulrich Spoerlein <uspoerlein@gmail.com>
    uid                  Ulrich SpцІrlein (The FreeBSD Project) <uqs@FreeBSD.org>
    uid                  Ulrich SpцІrlein <ulrich.spoerlein@web.de>
    sub   2048R/162E8BD2 2010-01-27 [expires: 2015-01-26]

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    mQENBEtgnPMBCAC3bCUDqq+6pLElEuqGoN33TBfDGjX3CPciCBGBY33u0ThbKFHO
    8VYStfwkwofutees9itDAjbQbJ7vIiQSe/1gt9WLfVUhgo6j57i5lbuVi/P3RMMA
    QjJBSZM/0r67XBqUXdye0xnPuJDKs5LmfY+23AWiWroRieeEBhbkJBQOyvY/fEdE
    dQ4A26/aLR+PDIxB8vrmsTRgwLYmxpnXqPkbmQ1tjS3MtsPgUMAaEQQOyoZJ7A9k
    loivX3S44GGTmehrKaCOivMtK21zR66Sslfr2zCCvzHXp8votrRorTBOGSTMC9ed
    Gp4ZlCAWa243NOVgCYWLsUAT7sutuI97VZunABEBAAG0J1VscmljaCBTcG9lcmxl
    aW4gPHVzcG9lcmxlaW5AZ21haWwuY29tPokBPwQTAQIAKQUCS2CfxQIbAwUJCWYB
    gAcLCQgHAwIBBhUIAgkKCwQWAgMBAh4BAheAAAoJEKOmmGRKr4LOtLIH/0G99k70
    FWtU8wLnHAw4d5dkV+MpSJOiNK3xfqoEgzcBSnK8h4kkEibwzsUggtIvIQ/xkLzF
    oihFGhL/14+yM9aiyp3cVjPT7TqCN7j0kfKxwDOf7otAAwI+hYUrVG1XVM7qe7Gq
    sIS6ucEAnhjK5s/vxI2wJM8xcEQvx2ubPPtuSYAn3k/+JryIfSJaAiSmxuAfYEsf
    TBKmACwQ0CfthLkOSnBp3xNbmXnOJ7mVA/wZwTZjD2Vm4Iu9SGBNF+gsx7Jhs0/X
    ow6JpY4YsoZehFHzeLg3RINUdq5qmB0eqg0VbYV3YcH0a31nOUTGqrztfJs/V4Ap
    M8pJ3WbDrPugqDaISgQQEQIACgUCS2CgGwMFAngACgkQ524iJyD+6d3PZgCfZ+Ow
    SV3Z2p3IE3rQgIf+f67SZxEAn08H7gIDjHWv6P9Mt0JveEgBqqaftCRVbHJpY2gg
    U3DDtnJsZWluIDx1cXNAc3BvZXJsZWluLm5ldD6JAUEEEwECACsCGwMFCQlmAYAG
    CwkIBwMCBhUIAgkKCwQWAgMBAh4BAheABQJLYKDuAhkBAAoJEKOmmGRKr4LODJYH
    /j7RKNrmeszuP7hQ0sQpnn+8xmbp6bmNyXK+h3L78y1mVagMWlrJRbPe8QVLR9xq
    AmI7jIR4oVkcLhm/jnYnlqIAIyNLgrOQ6dIFMbwzd26AYS/Ozy7Grl+THXZJMcZ1
    YTNNcPpmUsC7U76viLLw2CKTMzP3LHribNCoNmfhvplGdZibwW3so+ZjEzrhmjtP
    efLnYmD2AlsJADMhmOy7vgEUSdz7UnIiVgInpf11yQQWarAwAoiKxDSR1D3MaQcW
    JmyG8mhRqyJmFtbmARZaH/eGm+QyZKYuFY//NY9/ugt8xBhhUTeWN80dwZnx2rw2
    6kLsWh3iy36yWNRF1sY7x4WISgQQEQIACgUCS2Ce8wMFAngACgkQ524iJyD+6d35
    ogCghywJlVYXlcjHCqUJkZ4mc8/sW9cAnjUU3AThywjlZFNaB4ngPYGIXHZxtDhV
    bHJpY2ggU3DDtnJsZWluIChUaGUgRnJlZUJTRCBQcm9qZWN0KSA8dXFzQEZyZWVC
    U0Qub3JnPokBPwQTAQIAKQUCS2CfRwIbAwUJCWYBgAcLCQgHAwIBBhUIAgkKCwQW
    AgMBAh4BAheAAAoJEKOmmGRKr4LOELkH+gOD9ML6IDd4Hdu5I7JcmquHejOJoEQ9
    rJRmbExegiCLtTtxI98f2GF9fMgYbKEZ2DRv9dT4tRYhJgm2ko6kf+BsLv1ilP9j
    MRJmzFe5RtVt+ot03+8bgN2TAQ6J0DknMT4sbpKWfMKgw8DQCDgK6aUxAHE/PO2f
    49Wdb6ZxXIwYQKBUsPhAB/a4Jn7C3cjG/CqtkcsWm/INNdrr8wmqFQlQByYkE8bN
    U/LS8UEIf64o59sQW8qmZfMwy7MWsL5VDvJwG/llAAYK5V+Uu+kLDwn3Vuxp5144
    rR7HgAgt+lX3IuMjvM72bc0ooljxqfGRwyfXkVqS0u7YKMIylibWlwmISgQQEQIA
    CgUCS2CfegMFAngACgkQ524iJyD+6d2hcQCfXmKCFRSNF7KxaIqfFbAZUFhHR6MA
    n0G6al32pXWhiV2i3sHyjDq3YCrCtCpVbHJpY2ggU3DDtnJsZWluIDx1bHJpY2gu
    c3BvZXJsZWluQHdlYi5kZT6JAT8EEwECACkFAktgn6MCGwMFCQlmAYAHCwkIBwMC
    AQYVCAIJCgsEFgIDAQIeAQIXgAAKCRCjpphkSq+CzppbB/9X2o72Knam5vdu9nAK
    vmkXmOmKMtp9gJ6MDXLCG/a8DME5weE37i3lmHkm/lKThNRteLajeWz1OWTEODSD
    4lq9BOpr0fDVtSEGsrgQOIj6m/RGpKhmKmyZcsGhTC9OXpcrUk5QnFFb47+25PhC
    I6cfzADL06WGPDkTEFsB2f7ugJw00iC2Kcr35YG5TvvSR/tGRCo6HZ7ooTbLAVmu
    wMrAxwIsPv/ycFBZ5e4DQiIaxsVDPS5sQDHmoIhhRgOovoIinXXCpEl0JvnkegLG
    P9ZWHsmUEIlzU20iMBDmwDmxbsMhtiIFpSNNwA1c3wE786mTQ31vcvscR5p6JJCe
    v9yHiEoEEBECAAoFAktgn/4DBQJ4AAoJEOduIicg/undB58AniViZmymFbmu6LcB
    IQdX7tOfkKQKAKC1L+dB4cKQwTLHMv+PTm3ZZQUCiLkBDQRLYJzzAQgAs/C4imB/
    b+pPBbSm85RC5tgzng8RgF9S1WXVUJupa7QEetNn58yodQr+j+ACoNeX3EKHd58m
    Ja2HyU/cKo0UwNOJA6iKwfrWXOGj7DigxdZdZ9QE/IyzsyrQPIbAVxZn1v3zmpTn
    ngueh9dUda0KKzeq8n5J6OjpS+G6wrMe1tnicM1vh18wIS1JNU/EgQ3hQ5y6Docs
    4xjiYmmO+UlmW/SiiFhwR0b5pwEaQwSLLX4OjEdpxb4E2gxh4+V0Bk1BzpS6GygU
    Qvk1Ct/elQZX3Cyo88OlLSG/UiYGI04JDuyA8wwbriQezVMn0PbVXdo6tR7pqpCD
    QAtI+LFEM9VjbwARAQABiQElBBgBAgAPBQJLYJzzAhsMBQkJZgGAAAoJEKOmmGRK
    r4LOtMEIAIrN0mDZgdvcsV6RmSfoWWawDOklTOh96B20iKYKWxBSOrGNwAAkJRfL
    4E+y/fu3DMoNUKJAAUZvjTOAl2YXv6U5LNK6IDQ5vGtERKS4VukBeDdgK9bLj95P
    cOQ2khuq4RVRL+4H4sdZyxLDD7Dad77rsuavECIK72Dlb9KX+/HJuHERxpqPNAjs
    FlQv2pfbfbr+SoOTjknLCIjct+lDV//y72WwlJeEYWQhKjVJupxPBGOyQEDCofML
    FvzDnuVl4Ft3qP/dLNwObtfghIz604M0aCpYwtItHA35zHRI/R7u24VtluA4D+Bc
    vKKK08LFvCJ5WIK8LKm1Ad/oQh3yuwI=
    =h+sB
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.279. Rink Springer `<rink@FreeBSD.org>`

    pub   1024D/ECEDBFFF 2003-09-19
          Key fingerprint = A8BE 9C82 9B81 4289 A905  418D 6F73 BAD2 ECED BFFF
    uid                  Rink Springer <rink@il.fontys.nl>
    uid                  Rink Springer (FreeBSD Project) <rink@FreeBSD.org>
    uid                  Rink Springer <rink@stack.nl>
    sub   2048g/3BC3E67E 2003-09-19

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    mQGiBD9quKgRBADeV4lxkbaQyNZMKsSxS5DJHYKbIy150H97+m+J3vYI9IPhBtlc
    oqnlQTaIpoSn3N8ExxwMADRmevRhTHLhXxgfym5iDEAlIAr5uDMKPfwc3yUPPjkG
    CKKUQhEZeRvrPZyE8D/CicuSDtunnsXttK+7xLsWAS00gCr+cHsMPebivwCgyMiT
    z4YpZ8AlVx1ZDxHIR1CgZMEEAIIcBI4MB9cfOhu9Mje++qIHyAz2jsK6d7/Xu4ua
    r2eyDKb5zsbQCwALBRi/vXdR8lt4XvDjvmHQ36J5vGDnfA5t+KtgmQ3EXInggk0M
    ZTEvnFL1q3H+bHCKsf436Cb4Nq/bPQMCznPQ7IQjiMBWJPRd6Fv93kowNKdtEAlG
    cOn3BADGc8z7dEq+xwNmeXvc0jWJpZXTzT+9eRSQK61wqyJH2gWu8wd1T37pa32H
    Efp3Wod5IUFaS7E5P7kthuoMwhKYu5YJJBOA/iV4a1BAKjTJO7sGPwXXIvKMpoYS
    wcnicf1rhZ1kSLmX06PA8x+2GFPK9ZSBU0XXhbV09JcpTSbScLQyUmluayBTcHJp
    bmdlciAoRnJlZUJTRCBQcm9qZWN0KSA8cmlua0BGcmVlQlNELm9yZz6IYAQTEQIA
    IAUCQ8tX5wIbAwYLCQgHAwIEFQIIAwQWAgMBAh4BAheAAAoJEG9zutLs7b//Bm8A
    oKysvuif0y9iIRSvLA0KBBDYBA1MAKCWEpH45Gv3c5lR4keGHo6O1EuFv7QdUmlu
    ayBTcHJpbmdlciA8cmlua0BzdGFjay5ubD6IXgQTEQIAHgUCQb6gRgIbAwYLCQgH
    AwIDFQIDAxYCAQIeAQIXgAAKCRBvc7rS7O2//ygBAJ9uO+LYKzNfgcKAv8EwEmKg
    UWvd+ACgstc4SYQz7IDk2V9ELXsLZNJHu+G0IVJpbmsgU3ByaW5nZXIgPHJpbmtA
    aWwuZm9udHlzLm5sPohhBBMRAgAhAhsDBgsJCAcDAgMVAgMDFgIBAh4BAheABQJD
    y1ntAhkBAAoJEG9zutLs7b//5pEAniSKnGBZhNgxgPI4xFrBefn1FX1nAKCJ7l21
    9H5w2fIng8oy+Mc/lipRE4hGBBIRAgAGBQI/un1kAAoJEAahzEOamxxah3cAoK6L
    o2tmYvVDKzXSuyODzWGMIPO3AKCoqHpnLbHUVCK6uNCtUMsP10k4EYhGBBMRAgAG
    BQI/unuMAAoJEAdJki0OPZOdHooAoIY0GBH5xaMQHLT7U/H4kEJoy8gqAKCEFO00
    fn3ipm+gEe1xpp+B4ghWOIhGBBMRAgAGBQJBdq2kAAoJEOU3f22J7zgDoi0AnRHx
    J54/6qgkzk3XYWytM8kORJ8LAJ4kbjFKaxN4FMrfmCXyiobPAdFX4ohGBBARAgAG
    BQJA30+nAAoJEMsdesnWoa8+Ql8AnA7jacrDH6VeCyCVPG3bCehRJGFlAJ9cy75M
    r+7vyd7HiIDkumKda0v1yYhGBBARAgAGBQJCLf29AAoJEHs456GxToKx7HoAoKDH
    l2h5HvFTNZR2yeHfjMr4XKqqAJwPng1h5Oq444Na6toMTxeYmfiQCIhGBBMRAgAG
    BQJCLf3cAAoJEGjhJSt9pcU7QtsAoJFIRKi0yuJBTyaZHUYc9/CspFwOAKCv2fGI
    ZYVRDvIILnXZayCVPJbtsIhGBBIRAgAGBQJBp3poAAoJEFECJ1+oE9XuIDMAoN+y
    gQsgchoxgjgj7xvc+phiXrx0AJ0Wrk5qkVMxH4SThHTmUcWtgUy08ohGBBARAgAG
    BQJCoEL0AAoJEJlSOEh18JoRhu0AoJM7SvWSprG7QDHKOnEXf6naqFjoAJ9r0RXn
    b38Vh6C/S1mkkvlLMhrObYhGBBARAgAGBQJCwePKAAoJEDYDstQq8oA+VQMAniJr
    UHQpCWO9Gl7P2U9mSUM9bmXGAJ44+xRxWgmcbaB5MfNxc/+EhttYoIhGBBARAgAG
    BQJCwln/AAoJECtXItZQPuZ/ie4An23xXBcj8uubd0RH4T4eytcsT/APAJ9UVS4C
    +A6oZ2syWMhLwhM8De7aaYhGBBARAgAGBQJCwl/cAAoJELm9u3R/Ejcr/sEAnAmt
    TRDaCx52VtTFUCZ3gqdJJ2nNAJ9LiD6qEUEsR78lj8KtHIFd3gJyXYhGBBARAgAG
    BQJCwl/jAAoJEO0ktfyslxhcw1kAoIeAi1yRgvSjscfriPPLJsfItirAAJ4svEJC
    OZRTtcLaPTCGljgzNHe1mYhGBBARAgAGBQJCwnenAAoJELa66j1B5mvZtVwAnibO
    IGxb784vCzraDVqA/eewItNfAJ9FqdOZYw/CovHLAj3w2nXFTsGvx4hGBBARAgAG
    BQJCwr9aAAoJELOADYxWullRPjYAoIJm0zbOeXuCRFTtpHMyjVb1VLPQAJ0RAtgr
    Ms9M9CZrOhojTARULOlEYIhGBBMRAgAGBQJCwZauAAoJEEJrd6pui7AhX0gAoMAp
    9Xqrbmk/RMZrNc0l1qo7Z81TAKCfroUBS3Ecih8v1jGmTgPUSkTV8ohGBBARAgAG
    BQJDHqqEAAoJEAYGnPKWlFfwIZ8An3dUfKJR8MQkDF46pY7ehQzyjoyhAJ9I4yiG
    pkBKVRlQnl83NxXeL9jGuYhGBBARAgAGBQJDIKKmAAoJEF924XqIxu326E8AnRSy
    bi01ic4Un4XXDT7zs9BX0GtCAJsEgPknCSS/yYPgK+Duk45J3jdf2IhGBBIRAgAG
    BQJCywt8AAoJECdq1e/TZ18Ig28AoJbmYoCkCeUozLToGrESAo5OuhWGAKCYdOzJ
    9sPgsvr8x/xa8whXrdIB8YhGBBMRAgAGBQJC0F7lAAoJEBLMC0rbivl4Qu4An21t
    BQWlJyrHZ8ZxLeWb3bLC5RjtAJ9zdPh+fDYt4/Z4h9twvCe3nKfAeLkCDQQ/ari1
    EAgA8g7iohL/Ws7gm0fHBa1iStYxJxK6p9oy5zvuN8vfgVsj4Efjm/eS2l1RH6lP
    jw27XdtAMBuEctGFAhtBajgdYhryBhOKeUIOZo94QkRLMRf2mw1gAM/yaTVlixTt
    imq2S8KfLYLTKb8T/ysQQLhaGHuI37pN4BIdISskMiFpDS3vuquN1Q7y6i3cmUUa
    8z7km9Gx98uQfPesUPn+pcAgkL0f5LBH5smNeobJ2TbVTfqKm8070NZ4md8kYtZX
    9YvF7W+6CT/gK0mYwbMkoJdyiGHXLmzbWwnhf8LrOH4cB+2SaGowaNwNon93KHX5
    gyTo5Ok/VSWqtacxKg0i7JBT2wADBQf9EDMyjJ8AoCH2/fGePWfpTb6y+z465AO6
    UA0LUNcMjVO3Fm8KrgvIf/k0SFuEkXfchVPmeBdR8uGR47+A3U/49wJObRrnKjNJ
    BtNZBxqW5rtWHAO470MQ1B89c7Wu2f5SJfqu4HJjy7LAWNCJ//KQ+tsLYrhVawbZ
    /fmmt1cur1qJA/C0OqNhay3CBw00dr4IE5nzUw1qjXQ1Oc1h82JMV3IimPG/Mqkr
    cmwbg++OY0U21uEcya002rhfWSNiNLxlAthFHqK1LNDd5EsePRHkUbRXKM0TWvV1
    8fSN39nNtd3O8nMZn9KvmFyKY6uDAYegHv+Qg3L47VJu2UKVrVVhYIhJBBgRAgAJ
    BQI/ari1AhsMAAoJEG9zutLs7b//78UAoLxcADrltOZuLTJMieSR9zw7nruqAJ98
    hpneRV17ciF5APqU2SSiDrugQg==
    =Gfya
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.280. Vsevolod Stakhov `<vsevolod@FreeBSD.org>`

    pub   1024D/213D0033 2005-03-14 [expires: 2008-03-13]
          Key fingerprint = B852 0010 761E 944A C76D  D447 A25D C12C 213D 0033
    uid                  Vsevolod Stakhov <vsevolod@FreeBSD.org>
    uid                  Vsevolod Stakhov <cebka@jet.msk.su>
    uid                  Vsevolod Stakhov <vsevolod@highsecure.ru>
    sub   2048g/786F2187 2005-03-14 [expires: 2008-03-13]

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    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
    6wzJCGiOCfCGViOv+39ADh4=
    =gaWL
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.281. Randall R. Stewart `<rrs@FreeBSD.org>`

    pub   1024D/0373B8B2 2006-09-01
          Key fingerprint = 74A6 810E 6DEA D69B 6496  5FA9 8AEF 4166 0373 B8B2
    uid                  Randall R Stewart <randall@lakerest.net>
    uid                  Randall R Stewart <rrs@cisco.com>
    uid                  Randall R Stewart <rrs@FreeBSD.org>
    sub   2048g/88027C0B 2006-09-01

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    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
    =jM4N
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.282. Murray Stokely `<murray@FreeBSD.org>`

    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-----

### D.3.283. Volker Stolz `<vs@FreeBSD.org>`

    pub  1024R/3FD1B6B5 1998-06-16 Volker Stolz <vs@freebsd.org>
         Key fingerprint = 69 6F BD A0 2E FE 19 66  CF B9 68 6E 41 7D F9 B9
    uid                            Volker Stolz <stolz@i2.informatik.rwth-aachen.de> (LSK)
    uid                            Volker Stolz <vs@foldr.org>

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    mQCNAzWGPsAAAAEEANfn/N113UfsP+wON2IJD1Npij5AKnGs1V4bXkxjcQd8Uxa4
    AKoCXtdBqB13f9xaWKI+yHvzYvxSpVD3eU8e0VBnO/PVgkl48XGWqydMW4qF6bA2
    cIOAEpytVR5wWEPdmO0LQ0zQx1lTl88maQY7s0Vi2o03yU4tMBLpPok/0ba1AAUR
    tDdWb2xrZXIgU3RvbHogPHN0b2x6QGkyLmluZm9ybWF0aWsucnd0aC1hYWNoZW4u
    ZGU+IChMU0spiQB1AwUQNyb/0968PY9qESIpAQGJcwMAi+c5BcVhXuXTv3bpbsLU
    Ftt9Pp+WCFw1SVsUy02HIkt+NTfyW6gf/yuQ7gjMRSUtp0BVXV/2NBCT01ysTpX9
    uQMa/hz5pxHESkRJBxvBPt8RsP3EYMYbtwPTMcix1d0piQBVAwUQNYdqcEekbAQj
    CIb1AQFsogH+K1mszKG+DSo72s0YNpV63NCj1Bil5wUNzRe6u3ajd4G5PZuHmmWd
    Y/uAJz4zIO53jBPYqMXGM0JHHKHu8EaLd4kBFQMFEDWHakmCXfx719L9vQEBlEoH
    /2myvoUi2Np5bujRVI2h+uKSxwWMN89fXqH6nh5XTLxTcO6VEMHAaOlV4PEXzbuw
    Z3QRD+ovELzJNu+RCXmAXNjUI+l0H/MHTtSttDa9mGXH2WRw0Qinm66OIbsprOCV
    cAunc3WKItGennhpJ9z7iXIy1jTMcZ5suljM+qFFgVZUoD+dcc4Xu4FjT3GB50dX
    MOwWWPGdSemm142TfjkvdNfNcqFw1Dg9/QLTXlXzqEbYVWgEFnVVd7Arspuo10+4
    IqA4i9bpW61XZ5KGPYr4IYyZ4RxiwPCTE9GkgxQz9Cq0rVmJqyjTYSt1JJuKxrWE
    IHSqRYfItXJjs9oNRtXFkwSJAJUDBRA1hj7AEuk+iT/RtrUBAfqVA/4lI0dDnQdt
    bkGr0fMssdso0BOHeYNXzzc518ne5/+juCoHap+348+KvHS7ppSqaCEIi65qMAJv
    fi3DT3KmToQMkE7XVfRv7V1XbQTEsw3D9xq+VxLWFdlOMbRtK29UDIyuNSDLeVgu
    PAsfZQVqaMfhOqo743wmcUpswgIRRBk4jIkBFQMFEDhaWABJ6axjeQoR+QEB6OYH
    /i/a1aYox20Qn4vNy46tD7c1RH/Ub7HfU1D0CsW+X2mJV78roZg2VyPLo2nfFpN/
    BHDR+sUCjL2sURhEdVPDktEkcFGs4V9mCFp1RUQvmKBQIGuUFadJ8n0bKtTEwH1F
    zYqUzgXNdjYc3HKINb9q+ZfICVCcyM4a4M1gH74giKnHKMN7nXKTbWbBmh4b6iEM
    nr5w46VmToAKuAdgG7unH98dJRnV+lhTfmKJ1eFMjnz1BCcvbU3oLJylDMw0Tk+8
    gBv3HVfb66YBaMJOLJ3Vinh8KAhI6JrIwn+wAFJ4V27hcRIoB28lQXsszY7WsUEK
    9tslbltr6Ll9bwpeRZ71IvOJAJUDBRA3hDNlQL8ekR0N0LkBAVADA/9a/4x8k/Y0
    OnwHaMTPhTHeIzdWaCchY28dQs2x8voRu7kVGNEC086VMuvpbxXDphJvzYcr+gW8
    7dtWI8gvrABmNYh4CAqASl2byN5weA3Vq/JfFNUyLJ9iv1N0JhyQOOkrws8WqryM
    IRlZgC6+9oaZyewijGKy8AFN81CLV2DHEIhGBBARAgAGBQI7SvgIAAoJEOpKzVz2
    XGjNKJYAoNqWOqq2PjUUCtl+LKRRbZF+JZCNAKDXYaXtG6qbZAaEWE+m7r1LLe+O
    nYhGBBMRAgAGBQI+QWnDAAoJEAcllNVHsDXr0fwAoIUVE2QqsHmX5fIeyAOSsGG2
    UJlVAJ9GPk+28IOjqJO3jw15LkvX+4JvoIhGBBARAgAGBQI+SBHZAAoJEBDLp9/8
    BqUt2wIAn2Nnv3RldasDKub8ciJHsepxBzaYAJ4giqIRIvlxLKc1Lies9wxkXScc
    AIhGBBARAgAGBQI+QEyyAAoJEByNJ2SEN+Mf8zcAoM57AaMFNyq6XGMsrI0O3cJ4
    wMioAJ92FrujzmnW2/WA6Soi5DrF2JnA44hGBBMRAgAGBQI+RX6WAAoJEC9KXfQQ
    64+oh7YAn0e3SZfP7bThkHK5TVVjdyLHfDKVAJ9ydt9U+MpPY55NoJ6Uo8a5jxLA
    SYhGBBMRAgAGBQI+QOblAAoJEDmjyUz9xKj9kWsAnR6jJOxeY4rKP0n7Ggr4VSnu
    ycg2AJ9o+NRr4q9yyM7pfREFZcoV1XCmI4hGBBMRAgAGBQI+QWndAAoJED9XzG+e
    a3bfC7kAoLWacSdLLJhBuuTBN+BvHnWBLnCUAKDIj5H1oxzJ76sP/JfZsapEGF/N
    sIhGBBMRAgAGBQI+Qq16AAoJEEAMHraiSM5jKhgAnjgBQVtp+LTcCnT2f9oYwYsP
    u4qlAJ9uCN6whxSETrv0S9YjjEODzNPK+YhGBBMRAgAGBQI+QX93AAoJEEEY9vyV
    JunFRwQAmgLVw3LkbX8KIZlnDWL5voMRFw6gAJ99I8+6GZWfDhbZ/c2iF761bn/A
    kYhMBBARAgAMBQI+QV4zBQMB4TOAAAoJEE+DjLcmoKgWLNAAnjPWg4SYMj5INI/Z
    67KSORgK1FCTAKDSc+zGbjao08ECfJs3g0I875J4/ohGBBARAgAGBQI+RbPbAAoJ
    EFv8diRAZaHaj20AoPhVj4LSdtMGbyzzCKFbWEiXfbDuAJ46sEmDEUKW9LPMpIfw
    bPA02N1XvohGBBMRAgAGBQI+QLCOAAoJEGJIS48bSI3qqvIAoNTk9lKbvIjCxjYu
    Pi+6QyWeMidrAJ0b8421ck7IAE5ByeOGhMcWTXvmUYhGBBARAgAGBQI+QFwQAAoJ
    EGoCMg2CoDJemxsAoI+pJTqzr/I9XifXmoxAmGmywwnZAJ99zT1A0X9vyMhfEj+v
    S4PgZP5CTYhGBBMRAgAGBQI+QYUfAAoJEGumFqTBUTsMwecAoJFSJuJHQaqenIet
    6YYF2RQMG67GAKDPRW/Whv1ocOrY2kURdIKvtKoLfYhGBBMRAgAGBQI+QC7AAAoJ
    EGxG8ZwW/bKYr1QAnj6fbgEOmLvusBd0xl1QNjoJSJMEAJ4lZbc4ZfML6rLKLcjU
    SiXewZJG5ohGBBMRAgAGBQI+QaANAAoJEGx2F4yg7Zgt7/EAn2LA73pPdic7lGbw
    4/zIM4Ccs2RUAKC3A0wEFXh84B60ov6IqOjpw2Ue4YhGBBARAgAGBQI+QXqTAAoJ
    EG55RQKgGXnANT4AoMFVsGRuUnRv32T9gbU2cswWJJ8+AJ42FyyYKF8UkchrtkTw
    Vuog5aYATohMBBARAgAMBQI+QMp8BQMB4TOAAAoJEHUTojYTECz147sAnj5UikFV
    tMJlzb2myMZQq1WwVfs0AKD2rQAKLMqYguwPnxZgTqdjkqweKohGBBARAgAGBQI+
    QFe3AAoJEIBnEocjFa+jNXYAnRBBVLZRL+CcoIKkSOgfHxWuwCP+AKCmdgS6N+Cp
    yuB3RLpLZwdmgfI3WIkAlQMFEz5AXimGoAgbIrKVHQEBt7YD/1u5NM4zHgXdQaWC
    zMT4jUq1vL0s97I/QVOLeSxaTe9eDM0teOjFq9jE8ZSCf0hCeNEQENylewUKPb3l
    2Cnk2iECjhA4oz5Y2EjsDBKMxYqIeTrs7aX2FmmuUS2V0rXAq/IlZVKEpGYkHeE0
    iTfV08LiX+BVzTSN3nH219xV5JM8iEYEExECAAYFAj5AWp4ACgkQlI/WoOEPUC7T
    7ACgqAw/1qBb2L37c7fGos8+Kga+7j8AoKlugMVba+7iFlppj8uLsjrd026HiEYE
    EBECAAYFAj5AJZMACgkQladE0noea19+JgCfTFPlMzDdbkljKsApRIhEJ0MgmAQA
    n3jpS7f+9z+F2+VT1EODr+qgN/TviEYEExECAAYFAj5IaJ0ACgkQmpTNb38U76R0
    yACgq7VUA+Ge/O8925P/vjgU/J+inkYAn1IKkDq4BoybzuwNbIViHcA/Pw9/iEYE
    EBECAAYFAj5Gx3sACgkQnvV2imrOP6y1YQCcCxXkvBMxP+QZHp3aGEcPS3BWFpcA
    nRpba/mx8Igvy54P49U0iytSDRlYiEYEEBECAAYFAj5BeqMACgkQoxjOxLJuarl+
    egCeNgMW5NhVX12rFBQtBw87rRRL+mYAoIfJOcdPK6KribOYa3IVPzEDDACviEYE
    ExECAAYFAj5AtroACgkQrlHMQSNGevH2MQCfe20+1ceoEJ1f/tBmGMk5L+b5P8YA
    nj836l/Q+MFUrSkui5vFnLl9+8E3iEYEExECAAYFAj5BckwACgkQsMS595oNgqkL
    8QCcCX9cJDpF5ndPPql3dMQ2TQOw+z4An0Q6b8/w3bmcv1vK/FmC8NK38G85iEYE
    ExECAAYFAj5BaoEACgkQtHXiB7q1gilw0wCcCB2TVfy6ngP+U2gBmRJrrN/pjGUA
    ni2MxhPJ0UjF0yT2ybRN0dhCHm3NiEYEExECAAYFAj5IaUgACgkQv7s1Bo4lI/3w
    sACeMrgVkwtcYBLjgz1j+voZc01ghu4An3tDEXZj/ZC84SU2qjeUvTonx0u3iEYE
    ExECAAYFAj5BE6UACgkQxzjfyzWGunEZTACbBcFVKaKo05O8gqcNHzaqoDRad3YA
    njo4qXL5vZe1+Ca+Udc3v8j1cnGgiEYEExECAAYFAj5BhRAACgkQ0ORHvREo8l+1
    SQCfUTClW0oDQpulk484vp4zxZuq9m4Ani5fkDVe5V5v8tErtl2emrbN/PrCiEYE
    ExECAAYFAj5AzUIACgkQ1VamYIjj71fu6QCgmgFAgW6sCcX0Wq3zD67y1jKO/dkA
    n3Y6+LXalg4va79fuR84qwc8w6FEiEYEExECAAYFAj5BI3gACgkQ3DZ0N+WqyzT5
    kwCfdw6c5A3aV4Mnw+TXCykESqZHvpwAn1A6AZXB1SIb8/z6cAyJnREj8lgbiEYE
    ExECAAYFAj5JZVUACgkQ3uEZ6Jp2yaOHigCePMi1gAsMcFUxX86yTd0l2NIcec8A
    n3SjLh8NXgnAkRvUijWniQKg59fyiEYEEBECAAYFAjzSTagACgkQ32cuVxwi+uzA
    RwCePk17Hk+BRidQBbbRT6rS0w5quyYAn2ak/VAfJC2036TJGk/agMeIffY7iEYE
    ExECAAYFAj5BmsAACgkQ8CTvgjVRnqhXcQCghTsuu+lr69KxozYDfUnStj9tGycA
    oJ+rgBsQI2qsKVKCGHUGdSiP7H0TtBtWb2xrZXIgU3RvbHogPHZzQGZvbGRyLm9y
    Zz6JAJUDBRM7HgBlEuk+iT/RtrUBAVGYA/9O2enRF0aTJMCInSA/JMAn6JYlIBPn
    dpRmRumHOQodkllBKkoU0DextJIqRRfHnBfw4C+6XeM8ynZWB3oGo+W2QjJqt/Y3
    +H1E6c2Glz5/k8m9ftXVZW5MW5vTNoz1JvTq5Q6CugR9Blu0V93yJL37TQ+S32D0
    Dx6Z4NsZZBDI04hGBBARAgAGBQI7SvgLAAoJEOpKzVz2XGjN+Q8An3Xj0J21Ksg7
    FRqA93rshe5ZZXwgAKDRQl/BQY5AGZlBPO2H+2fOv8AsZ4hGBBMRAgAGBQI+QWnL
    AAoJEAcllNVHsDXr9kMAn1okZvtPT5VXSzzVkWR6g13OtJ1PAJoCIchW88twLeog
    z/Nzg3mq240nH4hGBBARAgAGBQI+SBHZAAoJEBDLp9/8BqUtUSkAn2d3mERiipeA
    HziP5R3grI9uaI4TAKDE3qE57joBG8A8qCmYJPSOVldbJohGBBARAgAGBQI+QEyy
    AAoJEByNJ2SEN+MfKWIAn3ivxpA/uKUHl+fm2KPLmRNYI3HxAJ9SOoqQX8C+bj4p
    c8oelneVlsPY5ohGBBMRAgAGBQI+RX6bAAoJEC9KXfQQ64+oYusAnAoryTN3Qttx
    HSnYsUmR47Dies0+AJ9ZwrkvSzCK00AN4BlcbYYmLfU724hGBBMRAgAGBQI+QObo
    AAoJEDmjyUz9xKj9bIwAmgINDAPAQomDcgOfG5Cu+htujHCjAJ9N1Uua6NaxYy8D
    v1tbsSGVmRLmV4hGBBMRAgAGBQI+QWnlAAoJED9XzG+ea3bfZGYAmQHndOs/EP9y
    TpMe7dsnaUqMRPWbAKC7XKNVqX9d2q/gfMfYA3sKpyiZ14hGBBMRAgAGBQI+Qq16
    AAoJEEAMHraiSM5j+NoAniMCeL3nPdSdJeXyDuGHg7Z0euPKAJ9KPSZu3rw01sel
    8uZ3hHCHGcRALYkAlQMFEz5G0L5Avx6RHQ3QuQEBcrsEAL6SAiCyBNDmnBR+xHUO
    F7YpbkcSJPd4dDgJi7eKhD9o55wGdLWjMZJlKJNRWQNpAGTxx3bSZSiZPTBlVBXZ
    OcCnkbZfKa3dZCKP5HxHl2vAEcroasiNQQI9iLF7LvaYZ0+g1EmlO/Vj9CWHB8ZL
    ur8dZDBrG27il95aQFrtWTBDiEYEExECAAYFAj5Bf3oACgkQQRj2/JUm6cXVaQCg
    maKjFV25e4MDarIJeRrd958rk7QAn3xiGFmzB4hvIKxCd5phuQyWCE7XiEwEEBEC
    AAwFAj5BXjMFAwHhM4AACgkQT4OMtyagqBanRQCcDIf7Yqwk9DkEj2NLwQm+kgX8
    oo0AoJzBj8dOY8RBCteUwL9A0LoxBF/XiEYEEBECAAYFAj5Fs9sACgkQW/x2JEBl
    odpkKQCgvdFhFeBj9KcsCdGqkHDGfv1SDdkAoOcL1EqjKaz2vzhp3cxEU/kLsJDL
    iEYEExECAAYFAj5AsJEACgkQYkhLjxtIjerTHQCfYxaYQ5o6bxRhjOPv5lTVxeMj
    ikYAnR0YV4wlQBYYGGt0nKtvg8MuBLSGiEYEEBECAAYFAj5AXvUACgkQagIyDYKg
    Ml6O6wCg2FJOk8R831/RrP9CCv8VOaj5KtQAnAnfo4+TXJUwkMXRM596KiSIL72l
    iEYEExECAAYFAj5BhR8ACgkQa6YWpMFROwz+YwCfWH1UcIp9H3P1mLwKeQHZzDwi
    6f4AoNV77nh6CAd/AFufaWBQt84obYAOiEYEExECAAYFAj5ALsIACgkQbEbxnBb9
    spih2gCfY91bcc/xnKMnOICBrS/MFr6M7v4AmgKEWSakagyDY7TAT403SE7JYWqn
    iEYEExECAAYFAj5BoBAACgkQbHYXjKDtmC1h5ACg4pxJxfj3iH9VKMKhSSaxQkUL
    6HwAoJOMhoSLcSBcwRhC9c6br6HJ8ZPqiEYEEBECAAYFAj5BgcoACgkQbnlFAqAZ
    ecD/mwCfZiPgPhxIZ2uW+3yCVQpxHDJKbqMAn2zfdRalO5+nvLweSKLfvnn0lmEW
    iEwEEBECAAwFAj5AynwFAwHhM4AACgkQdROiNhMQLPWbJwCgqiqgiND7vrvR7lXZ
    +RU594ERmO8AoLU4pU1mboIwas06Bxt69i9fq/4ciEYEEBECAAYFAj5AV7cACgkQ
    gGcShyMVr6NkjgCgoiVSCaInsoV1mmdckUF2b897HiMAnAnvDrvMi9MBlZ7u6hor
    F6Lzw4REiQCVAwUTPkBeKoagCBsispUdAQEPzQQAskLYlBnE9LDF9LOVAl+uxOyt
    P+ygRCke2xddkRQMMno0o5N1GDZ19MCC1gH3LHfpfRBX4qqsd1jhu6x00jtOKZdY
    ZBhR0pI2toIg4G2gcIApUW6gwvm08vTgEadsAhctF5eYF6X//jZ+KD6NPT0vQhtO
    BnsEZFgtaUGmdKGhmA2IRgQTEQIABgUCPkBaawAKCRCUj9ag4Q9QLrjHAKDIkTqD
    wxhdTKtbO7E7Av3qXLun4QCfWM1Gbgom3IvDOO0cjOmVrUBWVY2IRgQQEQIABgUC
    PkAloAAKCRCVp0TSeh5rX9JOAJ4tNwWBAuCK3rQH85vMEQMyhGtFKgCg04iSA7Tp
    qmhKWSewlfazudSHtBWIRgQTEQIABgUCPkhonwAKCRCalM1vfxTvpCZmAKC4/759
    p3jrLj7x0RseNO2ZTeNnCgCggulgV4ZH80hp3l6+ACGCCD3NO0aIRgQQEQIABgUC
    PkbHewAKCRCe9XaKas4/rFJ4AJwPRY59Vsh2jIRqSotuByuQCyZkPQCfUBtv6IyW
    k6RXu6VUrAxSOxYodNGIRgQQEQIABgUCPkGB1gAKCRCjGM7Esm5quVn+AKDIgwUw
    NacdRUUDelaMrFe7F7nzIgCeP00xg2eFHI1V/GO4KU1ar7TBFtyIRgQTEQIABgUC
    PkC2vQAKCRCuUcxBI0Z68X2WAKCkvSW+1xOBeUFaZ0W48QnrdXXgAACbBEc+oeCX
    Gd6r2WqEh11Doly4aVyIRgQTEQIABgUCPkFyVAAKCRCwxLn3mg2Cqd7/AJoDZDUX
    3ULlwyxcHpQTnV15xJVYawCeKZ7criCJsxQG+1BxK3EFLgRePd6IRgQTEQIABgUC
    PkFqXQAKCRC0deIHurWCKTRFAKCkojFse9VrAdDHVxR7fUguPPEsTwCgnn5xJzVy
    fyecWDEL2INvKmMcmx+IRgQTEQIABgUCPkhpSgAKCRC/uzUGjiUj/SQ9AJ44o83x
    XDeyU+DfT7sSnw6mI5tFNwCeN8n4xEQeQ3vDjr9k/zX/hjZUSWmIRgQTEQIABgUC
    PkETqQAKCRDHON/LNYa6cVLJAJ98aJ4kTcVL66TTiAkR9IfI48x2gACglM18GIGK
    Ix4A3ji4yB7BBEwYxnmIRgQTEQIABgUCPkGFEAAKCRDQ5Ee9ESjyXzhVAJ49HvGH
    ufeXvVqpqRzpHS7A2KhAhQCfa/1HEiUW3BYRPxS/rzRL1KfmaxKIRgQTEQIABgUC
    PkDNRAAKCRDVVqZgiOPvV+vKAKCUhQqUVlMR6XaLJQ+Agd3R/AZvIQCdFxfP68E+
    3Qh2HDlkCtnqhXEvZY+IRgQTEQIABgUCPkEjfwAKCRDcNnQ35arLNMyAAKCw9lTF
    nqIZrigS6FL6VWd8IK40FwCfe0DKJVTC1K3qBZNZmWwREFcC9juIRgQTEQIABgUC
    PkllVgAKCRDe4RnomnbJo/DLAJ9X5mdgo0D9jrzYPUHedIBgkanj8gCdFqkVMbgq
    QWB3lOx2qa+IeCsu+QyIRgQQEQIABgUCPNJNrgAKCRDfZy5XHCL67N2uAJ9hPkCY
    wRtgpj+I98LNUu0fdU/qzQCfQNOpV5iFSTsvNOhHCAc/Cgrh0h+IRgQTEQIABgUC
    PkGaywAKCRDwJO+CNVGeqMPqAKDAHnMpI40Le0QBsOfy+Asrx26bUACg06SuKdXy
    /xAdj/loIt7VviUgxbe0HVZvbGtlciBTdG9seiA8MTgyMkBmb2xkci5vcmc+iQCV
    AwUTO6oqNRLpPok/0ba1AQGjhQP9GAmJYWAEwJK9UTQjmtM49YKCI6qyRfEOrVW5
    /RbL67I19Lzd3wfXkNaKyb0uG0zbGUN/mE7BYkPt9cx3GPxLTNmwMjQxTO6K63y1
    Uqpw0nzOub68Jyy8gTsrKODUf6Qq9PJZUOklUTlUuTibyLn513kHaIByvIYuBLfn
    2swrq3yIRgQQEQIABgUCPNJNrgAKCRDfZy5XHCL67CojAJ0er2B3hH1shIaSGkNJ
    JjRRgwrcxACaA1mQVC/GXakpIv3yv0ldFLWTYze0KFZvbGtlciBTdG9seiA8c3Zv
    bGtlckBhc3Rlcml4LmZpLnVwbS5lcz6JAJUDBRA2XsjAEuk+iT/RtrUBAWeHA/4w
    wfmxyl9v8sJesoRqvJBH65DtRLhFTwHgvQyVCUMbIMkkyf9TC+YvcCoSWe5gIvVt
    S4PyurOcbw97iJBtH7aQYqwQztMp/I9iGpEqlEMmISl4nLdMI/pehqfUyfD9AQo1
    6fSka2F/5tj3UbFG44eu3gbubWU3CkZnY3vSaFmnIYkBFQMFEDf92KFJ6axjeQoR
    +QEBd4cH/iOmUttgV/O/kkXLzaRdH/uGXnqAOx61wC5p/wsiw8oMvkC/zFPlHMna
    k8m9rXdc1NyUwXNI6yLc+B25+LJLVvx5iEnEFGCTT34Epg0HDLdCcfwBwmcBTQOn
    4HNMo9ZEH2zzSYq4vssIc0IYQbqcbBuqmgbsA4F8sReg+p8VukH+55Fj42MuLOiy
    tZaCrwaLo4j3ZTmsEPSQEUCQduSxyz5es4ri6JB+QM1TLPzmtNx3Zfbjq8oDhx6e
    zZgpvvWTUYoAakTokLrXd1IgFtEqETbkBGHYDOf4FxgZLwvvtEQ8cuW2K81/HY+c
    yiP6WX8+Tif9Ts8ytd/qJRzf0xU/U1u0OFZvbGtlciBTdG9seiA8dnN0b2x6QGk1
    LmluZm9ybWF0aWsucnd0aC1hYWNoZW4uZGU+IChMU0spiQCVAwUQOFZPzxLpPok/
    0ba1AQHfMgQAgE8mUY5piHY53O5wSlpDmadpQ24Iz6jBWtnZHmHOOzK9tgBAwREa
    rAkunLMnX6tInHS3QWcsKw+rpwkeRYjhwjuyApmxH+UABv2tun9A8FbA4mNuI7rj
    ClROv5CP0g7oE79xq25L9VSj37JwMAyYrPquIaNqd8JOvjAg5T/ybumIRgQQEQIA
    BgUCPNJNrgAKCRDfZy5XHCL67JIQAJ9qZqQ3TfEoTrRQ7EOTYOnPWEHwyACglPIA
    wTW3pxbq/C+W+kO/PNsZ3PCIRgQQEQIABgUCO0r4CwAKCRDqSs1c9lxozRWKAJ42
    Xa6HftDxF4bImBTLp4bphkg3rACgsiFJj48b731sTUwXzUoJ1Vk2JSO0OVZvbGtl
    ciBTdG9seiA8c3RvbHpAcG9vbC5pbmZvcm1hdGlrLnJ3dGgtYWFjaGVuLmRlPiAo
    TFNLKYkAlQMFEDWHpVYS6T6JP9G2tQEBUJgEAM2ioA1zLsOGL8k3cwoS4rWlKmiI
    hqlI6cc8ePfKe2fbregQiQ89/lQVTUWiC5MA7l9ERT3dUIjYmTsX+5OQLJY/UQQU
    fOcFsrwiOqMZbkAR6vgKXSj3GsjrPuPhG8f1INXAeB/GjFrfQpuwCliC6Bfmt8yD
    aFRBjZgfnE8eH99xiQBVAwUQNZS2FEekbAQjCIb1AQFJQQIArqkTioNBIq8p9Ybk
    Gm4ztbJHCRxOyOyoKz5HVtS2Ra08LXMDYj/7SCVerFbE3FmxYEniRGRRJX9CzidS
    zIC/OokBFQMFEDWKCt+CXfx719L9vQEB3qsIAJq2iP74omWhzvwWiIa4UJ+Yt8TU
    ZXHRgk1q/D8iV4LUgMgdRAP2tuO0aX6pHm096EA9H8gNeZ1woTSnLgw8Z4ySJk8J
    36jahk9wYDbc/t3L1jm563eU+idUcwpOBwbAcNdKTayPTD4Peu0CWfCjTWQ6L7Xz
    hH3cW+WuKqoDlVL/5qTtfrG9eUAieJaB+1ytuq58V9w6P+QB9sWw1kS7YUdxyQqH
    4IrlCO1Wwi4FVDJ6a3QUsRtDpDPj+XOiVZasFMb/foWzi8ZH2vih4Hb9JQET7vQc
    54UUAFK4vo/znsfK+AbgypuiLGYnvh29egIo5GADryMT5jlRwk5Ppy8wMcOJAHUD
    BRA3JwXN3rw9j2oRIikBAe6PAv0Y1/tuA+Uqfm2IyM+OyjFP5QAumPWSvQLovJ1F
    u2Q+JdXzBSRiKsWmWQPb+HHC5EMGDXmggEnWCi4blFtuosms7lcX+pwD9xUJj/Rp
    mc9bIR/vuosYR3QAAqK+IqabG52IRgQQEQIABgUCPNJNrgAKCRDfZy5XHCL67CQG
    AKCL6bVRdJJNWM/prg0+wZkrUhlY5ACcC7L2EFVlhL35V4MGMVUefOC7N3eIRgQQ
    EQIABgUCO0r4CwAKCRDqSs1c9lxozQlBAJ4hArrfK6uPBNk50nCeJAyBTeA2RQCf
    d2EysIPiSy1VJ5LpSFL69vKSnFK0HVZvbGtlciBTdG9seiA8dnNAZnJlZWJzZC5v
    cmc+iQCVAwUTQEm7TBLpPok/0ba1AQGKAQQA0+mRB+Z2eU29OIaxQ1+nUF2PSNmL
    3cwXW58tOgS+EEq9AfKTPFGYgMymB4N7igZhZEaFkp3kl2UC1lqIfKq6RraxnVKa
    KW+WC/qdXAuGQZ8AMPAcP8DLEVqtFgUing+6U6JWofXhtB/SnEjcQWX8uEZ4MJcc
    G7oQ/NdFiVk5IOo=
    =r3Jh
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.284. Ryan Stone `<rstone@FreeBSD.org>`

    pub   1024D/3141B73A 2010-04-13
          Key fingerprint = 4A6D DC04 DDC5 0822 2687  A086 FD3F 16CB 3141 B73A
    uid                  Ryan Stone (FreeBSD) <rstone@freebsd.org>
    sub   2048g/A8500B5F 2010-04-13

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    mQGiBEvD5ncRBADjSSeOophd6EZMLRUyyqvBTYhHJiCmYqDfog+PG84/Fsb7sXXe
    3W8uZ/Wob/wF8vZey+7V9aK8eoJP9aK52SIMFUR8hdbXTrwhHlTc1QrFWLXjVqJ7
    Ct+ORGcqsUO9P/KwG6Waf8UG1Dnb4IZ2bQCoy+hEXpwiE8KLhR5X3vdq3wCgjARv
    ef8JXQvjUiiGUmPTtwumbmMD/0QmTbZOhdjC1TbIEOoj5BRZKWUv6rj2bXJL+miw
    DCTdpwwn5VfmZiYHeTcCclyPH+GfkNAhrYf4XQ0qUBtB054A+0ZuK/oEbHpqw8ky
    0qj2GGCt0m1LybiX0g9MhEZU9/Coq69TGoAFcysGisrEq4gJm29oc1gcXKXdXAem
    pP9NA/wLMp4p5BTd7Q+9fVJo2X7JTAtCL3djhvFpgbSeExhKCHflH+g0gw7qiMKv
    po1ozRY0r0fwr/gv/LcIh/XBImeyodj9Hnx3xd1jhToGoVP4Olm54PxNKLtcRize
    7CfrQr8TPG6MCY10EGVczIz6Qel7izPdqacXeeB8u8RYnoh4d7QpUnlhbiBTdG9u
    ZSAoRnJlZUJTRCkgPHJzdG9uZUBmcmVlYnNkLm9yZz6IYAQTEQIAIAUCS8PmdwIb
    AwYLCQgHAwIEFQIIAwQWAgMBAh4BAheAAAoJEP0/FssxQbc6NYEAn3Mm+6fmwl8H
    JuLh1vhMkmO+liK4AJ9m5Btl2vy1eKMfijZ2a/zIbGcydrkCDQRLw+Z3EAgA9LNT
    KPMCyYCuRn0OjAMiCcHiaj20sbY5kO8o6GSOT3Gk8cXxNQgglcvfYxuGxKjG3uIs
    9+1Sa1uGkyVwTCt9DUo9EGvtLxZx/AUU88M3aVF8kt3WiIjTEow2EiS1D7gmancP
    PI2snFh3qqbkN3oWcD3rg9uEwxa9i7ptb/45KnCFJ1bB4jDkuNRqeEOGg7uPV8sZ
    /s8EYFqTl5mW8hTvUY/XgKZl8TvFHxDDXQlA83OWa7RW1JI6G6zuJPHA7q1zwKFF
    DZTabKaXB/gQHYj+j5fx8FgzIa3J7s6MUnZLq4e3xf/3yWOgfsRAxgMjL4WUe/GF
    6vOvE3oxTbUMrQ8FQwADBQf/awmIQZWNMi1aVo2Jls5GpvcV0QZTo5HCcItzoEax
    rY8HMaaApvbiGFckN75O08GuKPEtoet232CEBet2D0NS+VKqp3yBcRwKELTttOFl
    fi0ZUWH/Mk5NEJUSR+lUzptNGRmtu4ftPW/apjrtzRTR6k7KxVPZ0q171qQfF90n
    zFeWklDK1lw1PGWk5X0p4qHCCMs+6l+TEgYjCXZdaDJ/e29bNmXdz3ZBiWbu/Kjw
    jk4s6/17TVXl/KhDAyvfZ3IN3d9BN6h+R1gqE/cp7tGvgDTVZ4+nPm8NVaOr5sOl
    4L9EagqjMAqQzcbhtWHG8PE76P7wnbU2I5pHbexqLlTpGIhJBBgRAgAJBQJLw+Z3
    AhsMAAoJEP0/FssxQbc6JK4AnjiZo91wrPy2ZqMytQaPL3SJcmv8AJ9Q9jvmFruu
    qi/JXA9b5UcmNn7xoA==
    =J2di
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.285. Søren Straarup `<xride@FreeBSD.org>`

    pub   1024D/E683AD40 2006-09-28
          Key fingerprint = 8A0E 7E57 144B BC25 24A9  EC1A 0DBC 3408 E683 AD40
    uid                  Soeren Straarup <xride@xride.dk>
    uid                  Soeren Straarup <xride@FreeBSD.org>
    uid                  Soeren Straarup <xride@x12.dk>
    sub   2048g/2B18B3B8 2006-09-28

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    mQGiBEUcBVMRBACN3a/+siykVNlKvwCmd4HVMogG+Oljeu9wyLsI8dJ9Y81bkY0h
    fi7ve3Tfu4GeRcirnrc2FV9Fcsv4dt9DtYQ7PQTPH8kjrSXr3kQoiHE4fGGJl4IK
    IVIHj+iC26JJgbqFcSU7CKGdvZIOJ17IPPh/HhunKBv9ljNJ5MM+WL8kJwCg20Ez
    J3CRnHM90EFk/nfAlJRvXk0D/3rqR1ODyY/8fFDtpOIjkApkw7k2eoJsfqy7tbtX
    YwdMKQptAvz2NxW4Qjfo3NbgGbfN6eAlhoy9Srcfm886KPMA22ZAvCWopFNbqAGX
    e2iOEwbU4JflSq5vLsIhOVz133W6mK1c7VJ0cf2zl+iRWtISES4fOY5s9rEacIjA
    NcAHA/0ak6bks8LqzC64zFdI6bj2FfJbOoTrga1/FQEBSw8bET14S20G/713ZCD+
    tQXXrs8I9YjBQREsKYmy0ixFYFmxMvG0NxkIyrwD/GEqpBbNdkJlx7pUhqv3zyRY
    rzvcmca7jIguu6K9nYi3t45nmCVo4ku9EE34YHzvgFQ15+1LdbQjU29lcmVuIFN0
    cmFhcnVwIDx4cmlkZUBGcmVlQlNELm9yZz6IYAQTEQIAIAUCRRwGPAIbAwYLCQgH
    AwIEFQIIAwQWAgMBAh4BAheAAAoJEA28NAjmg61AFysAmgIisxdd6032Jk2xeI17
    gcHuzXvuAKC5z1x4XxCwELWC9mk9HUlVTWcMW7QeU29lcmVuIFN0cmFhcnVwIDx4
    cmlkZUB4MTIuZGs+iGAEExECACAFAkUcBVMCGwMGCwkIBwMCBBUCCAMEFgIDAQIe
    AQIXgAAKCRANvDQI5oOtQAvaAJwIhTZcNVO1HKFwW5+hfnpE55hAMwCgtgTvelBA
    dhl0HgdkEN+HWtZzEnC0IFNvZXJlbiBTdHJhYXJ1cCA8eHJpZGVAeHJpZGUuZGs+
    iGAEExECACAFAkUcBtACGwMGCwkIBwMCBBUCCAMEFgIDAQIeAQIXgAAKCRANvDQI
    5oOtQBgzAJ0e+6mp3n17yH4hAzcE2toJ/CPBPgCgrDC3mRdXEOD8Gegm80agUykc
    Fq65Ag0ERRwFhBAIAPf3jtvf8pJMZoO7SQ3/Et3jla1POUcJuk9T70om/Fqi9Y1b
    mxTXR7yu5Rue/ZSN20laoywnJQAJ3BENx7mZHZwCzZDfEU9QU6WipPykt7KbhBG7
    DjXBONGY34wl4RearvGn61FuL77/pkSA1XQ4+5U/hWIisTWnHRufxoykhlyo7QTN
    x/S1bEXA6eTtfT7acA8sZfMRiqb8opOtJPiSMO7vBEYHfkleUGhSJwI7R7ghux2z
    y92Sp1sFO7xb7ZVlKVPo+edqbu5mKRLvhykLiA7keNv/YGkfVjPgLthAo14JIL3b
    95dOkGV/iI+DlYWPa/sDOM2KL0S/wJ7dXMtMVO8AAwUIANqJ9nqvDnWMoiJ2/Zuc
    H9y7CMmSZEdzQwKqaJysyDqiV6LAK9TXsxzzl1UXximPMCb2qwtVGOaRKAPR8qjD
    9GQc0Lb/BCFQ213o0eb+pvq7fFmUxrt7kMUvbwRGhiRbHyo1qf/z+VA2bntosYmW
    9YSpa9eoE3iXr3cF6wQVw/nUF7jm6QQ4M3ak1MiaoICxxCy1x2WzW9mrUePPWz25
    x0Pj0+R3mnWMTewLC6kk3QFM3usdxudGXJqDVch3w47BHV59WgSnzYPshGFp0VlU
    xeJNWJYu0DM/8WeOvRdf/5VdxwJGDtxRyQSDX6niYHWg6tL2Bx1cCxJnnzLLnXDp
    PziISQQYEQIACQUCRRwFhAIbDAAKCRANvDQI5oOtQObqAJ4gRDoYRjl6DWCd2DgO
    ECDwvMM5wACgiAYFjP/BOSY6RZdSBTxOSdyeVdk=
    =Dgd4
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.286. Marius Strobl `<marius@FreeBSD.org>`

    pub   1024D/E0AC6F8D 2004-04-16
          Key fingerprint = 3A6C 4FB1 8BB9 4F2E BDDC  4AB6 D035 799C E0AC 6F8D
    uid                  Marius Strobl <marius@FreeBSD.org>
    uid                  Marius Strobl <marius@alchemy.franken.de>
    sub   1024g/08BBD875 2004-04-16

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    mQGiBEB/3xIRBADGjxOPVRN2LvXTd6jXqKf4/6pPVPQlKqtwpOZj9JgDVE+V0Elf
    kjvwfCXA0gqt7kkal8i2TU9v2g6IIKP1eUoNpBy/s15Wc8JMlESB6CkfFPNkqj5o
    ohRSoKuB8dud0KR3T531rPfQNmsVRWtxrPYigkrtYZHiTPSZFgL0e+RiBwCg+i3+
    p9+1JBby6tthOolOGdr54xUEAIYounibXk8p54DJeunp0rMbzKYvbXYTOyc4HbD0
    t9kOH+VI3BJ+DlEuCejgwRkxkisjhQbSTa4+EGROKYcVIBBTtsj8JGHiNyRVSQ0D
    +A1KDuZQh7iDwuyatT0xvcvFw52In0dj3RK5hDV2ZX1ec1WiEMKdf8It+WdTSQPT
    UUF+BAC1WEPU92FZefdEDIQQHu17xsCestDOyd6xUBpxyPV2dyUwm8k7OhRalNuk
    nAIXfbZcVVZ/+RWDdfiftoSxQmODQg0JtzhtGEQO2q/FozsCy4Bx8XPk6CQmPMJk
    x/o8MwR50qDlsmcMRR2NDF+I1QOyRpEmugZ6sO+WXm8bkj1J6rQpTWFyaXVzIFN0
    cm9ibCA8bWFyaXVzQGFsY2hlbXkuZnJhbmtlbi5kZT6IXgQTEQIAHgUCQH/fEgIb
    AwYLCQgHAwIDFQIDAxYCAQIeAQIXgAAKCRDQNXmc4KxvjaHxAJ9+D0jNIIFzozzz
    6n/bx6N+yV2rwgCfZRtKVbN4QNEBod9tfer2TgmRlqGIawQQEQIAKwUCR3O7DgWD
    AeKFAB4aaHR0cDovL3d3dy5jYWNlcnQub3JnL2Nwcy5waHAACgkQ0rsNAWXQ/VgC
    ywCgjtPLCzZAAgOuFiLwNw4vF6ZXJBQAnRPxbc9SwccyaGrkk8kiCX1nxVmFiJwE
    EAECAAYFAkd2QQ0ACgkQ722CQfCBGV1D4QQAgo9MiuMFTfyjZn/qfQmSenruVgSW
    GpKiz6DTPhmT767GqaVqaaChoWqPY6/PGPTbk71NleF1v2HU1Orzoj3KqgzE6vVM
    MMfmMXJ7y/A9hg+xImKuThiwMzfJJQ+nrvCc1beJIiMxhJJLHxmBJZve/mbMUs3V
    HC4tGEcdrGecFY2IRgQQEQIABgUCR4ekWwAKCRD09yJxgsm6KU0pAKCIgvYV8BNI
    ES5/8AK02J2lApE5kwCgxetWv8ToTTbUhW2AhaIEHlg8KQi0Ik1hcml1cyBTdHJv
    YmwgPG1hcml1c0BGcmVlQlNELm9yZz6IYAQTEQIAIAUCR3QWxQIbAwYLCQgHAwIE
    FQIIAwQWAgMBAh4BAheAAAoJENA1eZzgrG+NU0AAn1xgOlGk3+FpLagxQh6/O94Y
    8iz1AKDvu7Im3yfxj4LRh5UVKnNYMIJTtIicBBABAgAGBQJHdkEIAAoJEO9tgkHw
    gRld4JcD/j52TeNiPNJ4hDyd0QJUItk8RXcvBtrg2dSl0TGmNs2f1+3fjZ6vdrE+
    5Ry0qh38ywsxs7sEFURPavre4i7EbdOWv6NawUfaIsgXp8Os91bQr+UrXe2esAEC
    SICQS9hHI3qEl8hPqay7rPl/lXM3ivofmrRXXfBRCtxUqy8+CFoeiEYEEBECAAYF
    AkeHpFsACgkQ9PcicYLJuikeVQCdG97q3ZUAYRy7za8JihUzddma5wIAnRS7veJj
    ENbiKHg6MJc2BMFGZ9H4uQENBEB/3xUQBADFOTE426iijaR8FaZLMIRaSexGfOvc
    nPJFF+rkoktpQzP+9BKDwKvt1HmlDXaiaeJfwEfQdK7/oORh9+ynL9ag/KaocJtT
    8eAqhVnoC240NF+PhMlX7YblUwa9+M5MfNmDkNEV92ZFIJ8QjRAzn/G3rQIMo6ax
    BmsF+1P71QEIgwADBgP+Kbmf5TjcU45Wuc3ceZCAEm9o7VMhsU/tVu69x6QRu379
    HqJ9RDuAOdcBWQ/67Jw7blSbe3yWZpqhxLTWwYELJG7/XSNnIsFl3osF34lm0Y9M
    lJl+XBQ3UV2kPgtIMDTXDuklzuhdhbIlhWOXJJf48WkSxeB2WGnnlVvBCjBTx3+I
    SQQYEQIACQUCQH/fFQIbDAAKCRDQNXmc4KxvjWiAAKC5xnCwJYOHHwqreNa98Dah
    W9e6+QCgjchyumMlSJfpEEnGG8vU08TmXrs=
    =QOvV
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.287. Cheng-Lung Sung `<clsung@FreeBSD.org>`

    pub  1024D/956E8BC1 2003-09-12 Cheng-Lung Sung <clsung@FreeBSD.org>
         Key fingerprint = E0BC 57F9 F44B 46C6 DB53  8462 F807 89F3 956E 8BC1
    uid                            Cheng-Lung Sung (Software Engineer) <clsung@dragon2.net>
    uid                            Cheng-Lung Sung (Alumnus of CSIE, NCTU, Taiwan) <clsung@sungsung.csie.nctu.edu.tw>
    uid                            Cheng-Lung Sung (AlanSung) <clsung@tiger2.net>
    uid                            Cheng-Lung Sung (FreeBSD@Taiwan) <clsung@freebsd.csie.nctu.edu.tw>
    uid                            Cheng-Lung Sung (Ph.D. Student of NTU.EECS) <d92921016@ntu.edu.tw>
    uid                            Cheng-Lung Sung (FreeBSD Freshman) <clsung@tw.freebsd.org>
    uid                            Cheng-Lung Sung (ports committer) <clsung@FreeBSD.org>
    sub  1024g/1FB800C2 2003-09-12

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    mQGiBD9iAJ0RBACJHmAyofYftDx6hFkYRkCrM999YrKxfYGybHI+MoN2fFPXMvSh
    idYzBGhij1a8E7DGuZ2fGwSxdUZXcUA9PlDPuTmxs/xI/ZgX/qnG4yPgeT7KfZ5g
    UqRpm0/gz/7g5UsvNBw0iUzSbI7tTXprErflhUXX6cC1bPHTeEQbHe+nSwCglpMT
    cpcV93CQpMX+GC16UvwC8MUD/2TzigXSQ9rJNoTLuhsibSK9fh0vzq6rhCrzy2Ma
    G4M9kLvApu7+8YEk9ydVk9EE0PxHTTXGAxnpZzTW/bCCcLubhBqv8eXs2GOOxzHG
    YXb9Oyo+FDe0EAEZ5Swmf/V2eAHV4bYDmXzW9okxIUK6skXtFxQ70DxqcmtAxlxa
    QLgbA/9plT+d5g2s1c11Z0p5CQbxa8sJu4nLFT36DzhR2BmhTEM/X2wSARGe7PKu
    LdWI1WfU4Avoj9sWehSF531tMekMSZ4lp0gb0rYOyzGTqTWjq32mkqep8MDP9cT9
    6H1UaSU96yyc1sprUdU7XDf7TA4jZp2LSLlOEB2UCOa0mBL9QLQ4Q2hlbmctTHVu
    ZyBTdW5nIChTb2Z0d2FyZSBFbmdpbmVlcikgPGNsc3VuZ0BkcmFnb24yLm5ldD6I
    YQQTEQIAIQIbAwYLCQgHAwIDFQIDAxYCAQIeAQIXgAUCP4IzGQIZAQAKCRD4B4nz
    lW6Lwc3gAJ91P1UQoV68L7emHnjqlf3nK6qzmwCgiVtWyaqQJq4fayifeKfFmT2U
    0EyIRgQTEQIABgUCP2SPxwAKCRDm4NvoVAvGHGhiAJ90wTMq0zYb41tG8M+RoMyv
    oVsgtwCdGko61SUEB+884zRD2bHhwFMg+OiIXgQTEQIAHgUCP2IAnQIbAwYLCQgH
    AwIDFQIDAxYCAQIeAQIXgAAKCRD4B4nzlW6LweOrAKCRWdRCC8hQYwWCa4/upt6N
    hc+SRgCfVybP7alAFua8F010HJiSfXdNtFuIXgQTEQIAHgIbAwYLCQgHAwIDFQID
    AxYCAQIeAQIXgAUCQSQbpgAKCRD4B4nzlW6LwVB9AJ42/CQFoYKDRYz+XmCqBou9
    Y+Nm/QCfZv19FBbMSOfvRW6R7nJTSkf3Uj+IYQQTEQIAIQIbAwYLCQgHAwIDFQID
    AxYCAQIeAQIXgAUCP+GGogIZAQAKCRD4B4nzlW6LwUZ8AJ9q3BbkGIsEuhnp6rWX
    uSkcXYkWWACeNSCb9l9g/650wnXPEHcHsRpzBLK0UkNoZW5nLUx1bmcgU3VuZyAo
    QWx1bW51cyBvZiBDU0lFLCBOQ1RVLCBUYWl3YW4pIDxjbHN1bmdAc3VuZ3N1bmcu
    Y3NpZS5uY3R1LmVkdS50dz6IXgQTEQIAHgUCP2SMCwIbAwYLCQgHAwIDFQIDAxYC
    AQIeAQIXgAAKCRD4B4nzlW6Lwb3bAJ9mJttWnct/3ej1XlvmnAxRq6ZkOACfdZDT
    sLSo8DN73ZKDbiP73KqDPdmIRgQTEQIABgUCP2SPxQAKCRDm4NvoVAvGHONyAJ9t
    QrXQSZDkm71qAw+6HiERQ+qsEgCfWuA857Lrda9ZR8X7IJJ3XLO2HPi0LkNoZW5n
    LUx1bmcgU3VuZyAoQWxhblN1bmcpIDxjbHN1bmdAdGlnZXIyLm5ldD6IXgQTEQIA
    HgUCP4IyxQIbAwYLCQgHAwIDFQIDAxYCAQIeAQIXgAAKCRD4B4nzlW6LwecsAJ9F
    HNrKHPsCJ6ZesY1gJI5HOVijvwCfb5G6dT2YW8TH8GNRFe7rWPXO1E60QkNoZW5n
    LUx1bmcgU3VuZyAoRnJlZUJTREBUYWl3YW4pIDxjbHN1bmdAZnJlZWJzZC5jc2ll
    Lm5jdHUuZWR1LnR3PoheBBMRAgAeBQI/gjLeAhsDBgsJCAcDAgMVAgMDFgIBAh4B
    AheAAAoJEPgHifOVbovBz+wAoIJhcDpcOVIACy+wboHG4nGOQfiWAJ45qvE09ckd
    IX+MDl7xez7OMqDU/rRCQ2hlbmctTHVuZyBTdW5nIChQaC5ELiBTdHVkZW50IG9m
    IE5UVS5FRUNTKSA8ZDkyOTIxMDE2QG50dS5lZHUudHc+iF4EExECAB4FAkAoN7AC
    GwMGCwkIBwMCAxUCAwMWAgECHgECF4AACgkQ+AeJ85Vui8HhdACeNn9owhjpYr2y
    cYCkOFDv+q3xIF0AnAijfOOUq2oT0d0+B9sALIz0HHrEtDpDaGVuZy1MdW5nIFN1
    bmcgKEZyZWVCU0QgRnJlc2htYW4pIDxjbHN1bmdAdHcuZnJlZWJzZC5vcmc+iF4E
    ExECAB4FAkESZaACGwMGCwkIBwMCAxUCAwMWAgECHgECF4AACgkQ+AeJ85Vui8Em
    ywCdEDYOgC1/YxPHqyvEXGs+JTFFqfkAnjfkTpRPM492elqZkBlQimFGLeWutCRD
    aGVuZy1MdW5nIFN1bmcgPGNsc3VuZ0BGcmVlQlNELm9yZz6IXgQTEQIAHgUCQSQc
    2QIbAwYLCQgHAwIDFQIDAxYCAQIeAQIXgAAKCRD4B4nzlW6LwZ4TAJ9hByDD2ep6
    ixTnazmBJSg3epv9tQCeOM4JaWNwvbOrF528n8PQcgpe/3W0NkNoZW5nLUx1bmcg
    U3VuZyAocG9ydHMgY29tbWl0dGVyKSA8Y2xzdW5nQEZyZWVCU0Qub3JnPoheBBMR
    AgAeBQJBJBoPAhsDBgsJCAcDAgMVAgMDFgIBAh4BAheAAAoJEPgHifOVbovB564A
    mQGePiZdxv8qVwvtdyf6m9SvosGoAJwPuv0oR/D4PIDKFYtlTqfYN35I47kBDQQ/
    YgCgEAQAwHkhKy54M/yuuJgb4Gcit2+fDnlRZ8yRJkGe8OSl7qx9Gaz0+kwe1Gir
    V+DQFGC/W3gJqjEN12jh11ZUabE3Seeofec94rDZz/YBkf5ofMT1+tN1kwr+ju7C
    lQdZCwNewaS2p6C5PsXCUQQ8ZHfgs8YB7Ze/TY6GvpOoDKqYHO8AAwUD/1ZvVV9P
    e36FE4RkHg3P1YLkMNs5fxleXD1l6LZ8ElQy1V0RVg8sD2W22xh0wP2W9RplsDYj
    UwFKuRtxxoEsdXvDNLaUyG4hXmNUVBz3b3tmZSvENiuj5EchJWO85T+AFT0g7ap5
    wWlxOqmvHC5NZRiAP1fpKpwoSvYTLP418YSsiEkEGBECAAkFAj9iAKACGwwACgkQ
    +AeJ85Vui8E94gCdEqq8xPwuUc/LJQyc1ziacZJ/FmQAnA41/zThbZg2nf994Wre
    OT332jJ8
    =EtCd
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.288. Gregory Sutter `<gsutter@FreeBSD.org>`

    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-----

### D.3.289. Koichi Suzuki `<metal@FreeBSD.org>`

    pub  1024D/AE562682 2004-05-23 SUZUKI Koichi <metal@FreeBSD.org>
         Key fingerprint = 92B9 A202 B5AB 8CB6 89FC  6DD1 5737 C702 AE56 2682
    sub  4096g/730E604B 2004-05-23

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    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
    =xwme
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.290. Ryusuke SUZUKI `<ryusuke@FreeBSD.org>`

    pub   1024D/63D29724 2009-12-18
          Key fingerprint = B108 7109 2E62 BECB 0F78  FE65 1B9A D1BE 63D2 9724
    uid                  Ryusuke SUZUKI <ryusuke@FreeBSD.org>
    uid                  Ryusuke SUZUKI <ryusuke@jp.FreeBSD.org>
    sub   1024g/5E4DD044 2009-12-18

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    mQGiBEsqyesRBACDA3KsPNZg2Q88N9Vhp0kpoLW2Yp0xWbJ01tD2PPcGCq4nGE0W
    NgEvynvUwVJ4ODryLEIL3Po79fBIpkOhjraWdFH4LMcXjOequoERDWCMLOSBzP4R
    PKPqhSvOGw0H54357fcjzo3X2ze9HnfiOI5d94qaUpnPeE8JioJQcTEW9wCg9wKy
    KijAwG/TQBIHrS/bp6F/4GED/iCdSQ09Q6ZQF497zS1oNTgXDmD/qaAzW8F0bu/D
    rp9v5GVWeN1vfXHAtvug7/kIOO/eFZqU7IZRIf9bSerWXtaSV34QZSS81UZOr4u9
    YUGG1qk/A2a06GFzPCzB80c57G1b2c7i9Ktbw5cQ5o01eLcbqkdLmc3OcjIjnmCy
    /wnfA/9tlfS50UU7RFfwj199z7R6vxZ8HNoW0DwyNT0G/Sumj96o7+GXqU6NGZ3c
    X4g0qQbF1NY5h3cXkR9y3w3TP+guQFWtJEqyXxykYHZWAmUfNbaG7xiWdP0iGa6N
    pAWzMjpeHFXKCLmD4WzRx82TPvxSaw8W7H3PQwi/QIj1yBFot7QnUnl1c3VrZSBT
    VVpVS0kgPHJ5dXN1a2VAanAuRnJlZUJTRC5vcmc+iGIEExECACIFAksqyesCGwMG
    CwkIBwMCBhUIAgkKCwQWAgMBAh4BAheAAAoJEBua0b5j0pckoPcAoNDzMLDEsOm+
    GxbYMxiTpRNqR3/IAJ9TZ2g1dD8D99ipOUIADN8DyEZRBbQkUnl1c3VrZSBTVVpV
    S0kgPHJ5dXN1a2VARnJlZUJTRC5vcmc+iGIEExECACIFAksqzV4CGwMGCwkIBwMC
    BhUIAgkKCwQWAgMBAh4BAheAAAoJEBua0b5j0pckOEIAn1Q0VUudnFwmFG2/Gim1
    u+C8cmZpAJ41a06jrPg/BwDeHLHVhd5FzmXyqrkBDQRLKsnrEAQAg7+aWadgT2+8
    C6Hb2GzSs3/sJnLUWCGfmzBqKNQwyTMAlXEBD1w6MIeYURz7PuPgkOvB8v8b5+2Y
    JBU6i1289khWYSq1pn7XgX988+GsX//IfqCHl9i/RnuO4dVL9KXl3lGFvftpsm+A
    /l+4NkyWo5T/wpzyrmNfuDrsuDUf92cABRMD/0NsHSpAxZpt67PoIrnAXIByQU9g
    grORKLEHjYe6XpuVsz8XPARBjskYScU9VcPEtWIUWh6PXCjNk4aiKwE0jY7XX0pE
    DeiZwa2WG2eFlDqJ03aPgxTQouwEKu3zuo7Xnd/dlAThHK0wZdNWmV6ebYah8rrt
    TJ3PrsYQNptn8iogiEkEGBECAAkFAksqyesCGwwACgkQG5rRvmPSlyQyTACeNfIm
    DBCNKmYGktQUlB1U9kf7o2MAoK1PxWrRo9/d+uKirJNnzdYXTJk4
    =69IH
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.291. Gary W. Swearingen `<garys@FreeBSD.org>`

    pub   1024D/FAA48AD5 2005-08-22 [expires: 2007-08-22]
          Key fingerprint = 8292 CC3E 81B5 E54F E3DD  F987 FA52 E643 FAA4 8AD5
    uid                  Gary W. Swearingen <garys@freebsd.org>
    sub   2048g/E34C3CA0 2005-08-22 [expires: 2007-08-22]

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    mQGiBEMJW1ERBACGUsHdqFuQjrrtjpvx2pQ7GpZYl+HS/jVPn+0MjMcZwRtk2T+g
    b0/EzS/0oeOqv1biX/aZN19T31JGdlSm8FumpTc9zPgh830omlJx8V3g8wi0ZHzl
    UjGa2MkmkaCEVeP5bX/NyRljP6fpnOy+5h4F0WcpkqwlXRuhOzM8UgpXlwCgjjPk
    0CLI2jSVsnqIKtMdunOfsd0D/RaALnZrVkGtQfDX6MDo1Ws+ADGj8rGtmdN5TIoo
    ivJvilG/5HSL2nsqOcIKWA+C4lZqzMIlo5iPSz3BijMc1Ni6LaQo4E4zvh7ID5fs
    fXsMhiE7H2KNSGTjmmL/8Weq8Zgpu9TBD8CHUZLD6BU4Wmm9I/R49A16T5Gbylgs
    fEwaA/0VYP+u8TEechtQKLuAfOwL2ruFE0YKmnXq2S7MixFvSNaRilB/t41I1YcZ
    mcWbRlIBezvchln5qRommEKfp/sWVcocR+AuSTcLT3683SkeJ+9205bFx9xXJnrE
    PBhqjMmRNNlmijcBFZHk+W7tCJQBbLGJkpLfqllfVkJ+rY/NVrQmR2FyeSBXLiBT
    d2VhcmluZ2VuIDxnYXJ5c0BmcmVlYnNkLm9yZz6IZgQTEQIAJgUCQwlbUQIbAwUJ
    A8JnAAYLCQgHAwIEFQIIAwQWAgMBAh4BAheAAAoJEPpS5kP6pIrVGPkAn0i58Ikn
    S9M9e7cMI9Fis6lXDoAxAJ9eRxZEgPn3aQ4DZ2ObnuKbKSqcw7kCDQRDCVtWEAgA
    7jU7l7ssKXwc+/ynNfiLAm9nvCY4jMw+CK6hwhtuOmrgFH14jeEY8wRVBrOUkVi9
    Y13Z3qkTk5DD4iX9f25iK8PJELU5XJWStuX64hIEyqowRZ5KkvsdydHjQ1x2koS5
    oTW5kD2nWChnBKI7iWPgRnFnfthrXE83ZY1sV+/OBRZH1ZS5KVxOzClcoTiTE5Q0
    Q4Py1vlS/Bw95Nhejef7gSf6fN+iV2DQn8KDF81+MIj1jTWt5LDa80G+T5yGWeuz
    asAZVzBfPEHbWbVmRjT9Ajmump1D/0gUvxSr0fpnVfPtEFJ/MbLdcV1kyTtI9YLm
    EWnov/J31bGCDlhGjYfaLwADBwf/TBu+b48oClOPFJznnNGVVJUdD528hfVor4Wy
    3ph3KXSfaysOmG1xo+nQ3JpdzbC3nXgfVGM2wGvFEgq7ogBZ9YZNzwSP0vseJlwn
    oXNKvKKDdCyVJC6Xi0Pd6L4beJRTjxf0LPQUjYdQbwrk2RqHXZ/RUapYjlfOWS2l
    4ZqHiMoO7ZIAj/bdBKxySu8qVs3zmu59SE+ZQgxSXwxw2mF09XWOLgXsKTfhXlkl
    ZyKhjcSlVfjy4SXiXy2zFCh9+T0eiCeEzz5kS0QkA3npOooIFftI2q0IKbHOExSA
    YwOocuVEW7eLzeBfCoDa0SoapeXcjyF7KbiDwQ8xu9gEIUkpXYhPBBgRAgAPBQJD
    CVtWAhsMBQkDwmcAAAoJEPpS5kP6pIrV3wIAniAehy9Ttb00FbjcevJetKN5PWe9
    AJ9XhpsYKAyHxoZLFzGdR3EGBJNAbQ==
    =EQll
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.292. Yoshihiro Takahashi `<nyan@FreeBSD.org>`

    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-----

### D.3.293. Sahil Tandon `<sahil@FreeBSD.org>`

    pub   2048R/C016D977 2010-04-08
          Key fingerprint = 6AD2 BA99 8E3A 8DA6 DFC1  53CF DBD0 6001 C016 D977
    uid                  Sahil Tandon <sahil@tandon.net>
    uid                  Sahil Tandon <sahil@FreeBSD.org>
    sub   2048R/F7776FBC 2010-04-08

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    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
    =jPKa
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.294. TAKATSU Tomonari `<tota@FreeBSD.org>`

    pub   1024D/67F58F29 2009-05-17
          Key fingerprint = 6940 B575 FC4A FA26 C094  279A 4B9B 6326 67F5 8F29
    uid                  TAKATSU Tomonari <tota@FreeBSD.org>
    sub   2048g/18B112CD 2009-05-17

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    mQGiBEoPodURBACCCL74hQbB00H/yUtv9No6sBynaWyH/blLogfrVbNL+86XIKDz
    yricgZ6/GDT4tbpaxs+o0wPdI0SrvvZuvvLfiV4ZxiCa8TNJF5/4GEzjKE89Pmtr
    DMK/i4RCzhRfs+PfzQdTRA7aQ77mds/tYGJYsqk3m1bWwOGggMti4TBk4wCg21tx
    RTopEa+HVDn1NTLgsAs9a/0D/3lvX6trmF07ENwCp4VGzBRTAZUAGgXziQ2zdjVD
    WcIWPO9PLxM1C1Crifbh5IOFoCsrUZeEsuLalzEVWZ2O4NqLRiRfuSD4ku6Rnd/k
    DBwkHiDy03JfGybBNEKUGvhXhhu53uij6ZXxNW9xR0KclDmrBxxEyj/Y/GYMte3b
    gV0SA/97szSEf8LmQmUD1sd+VHDBaJ9QUe5xNEJ9+8ZfCsVh0zamLvrAOLnZY0mU
    hPr61esTetdjDv1UAbn/OPTMfp4oY6/4Xa59APshxuK6urXaKExwWrvio4OYTHq5
    N0Bq73HwZV1beY+yP8wRRI4AzPoeHa+vIOhfIIJO++v5u9Hrp7QjVEFLQVRTVSBU
    b21vbmFyaSA8dG90YUBGcmVlQlNELm9yZz6IYAQTEQIAIAUCSg+h1QIbAwYLCQgH
    AwIEFQIIAwQWAgMBAh4BAheAAAoJEEubYyZn9Y8pRqYAoIpC8dx4p/BaKVxueFll
    Jm/w5qD5AKCC5KSc0zMxM0Iq3FigA/tDjiyj9LkCDQRKD6HVEAgAqVPZwxV9bFbv
    PU20xAQ6HA8YxPp6QYUbb+r8AoRmqPNLoDqfNglhMimj5nPEFLvBgDHQaPQcqcja
    5Qiz7j3I8xFrBbkCrx8xp4XYAQB8An4iy8np4Ys/YjvDjittYUn8CywN4rVGIppz
    S8BDY9Ufjy6v9iFERXGEGcW3x5gFA3S1hGJZ308QhlWMw6OachMadUnAXcoO30fe
    q8eITtyJZN2MESq7G5TtaywDHz3Gg1K7m68bPeQaeAHwkQBwC/0xvDtJ4uyq/Yp6
    sQrlWJN50vaTnSAQ9q+b0tHQMVxQnxU0dVYgtE50jpPHApbc21Krc6H7a8VhNu9R
    JIanzAEUEwADBggAgJ1JY8XGrOVeYJ9F6S7F6pZKxyj/pYYBYA5dAIOm1df+cpvu
    Knen7UTOb6CgkZqGlX0BbYwYsfzr3B4oS0P5ScqE5gNVeWrCItZrZV6fuA1ZGnNn
    bvnEZ3xCZsb49CtfUcMLqNp1KGVGg1iVvh5YA7mtBmp6W12sq5YM4jx20ph+AHrs
    8/eIts+MMJ70QDI+GoXtwgS5IfFQK4x62K8W0RAmp77/qvRE4hrdsL55UYwD1zuY
    qzwfQVNaPNUUiVDEyL6K3K5GYfkZ5zPz8iJ6sWtsuLEyG4CSWLwkAtJj0Xuc71vN
    W/gkbM4ZpQgqQGQDZvN44Sj/prcJlnbyh26ajohJBBgRAgAJBQJKD6HVAhsMAAoJ
    EEubYyZn9Y8p4EkAoI+bYGMuNB+i74EdgubvW/fTinfPAKDGBmZorrcBfYrnictP
    T1jCoBbEow==
    =0Wta
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.295. Romain Tartière `<romain@FreeBSD.org>`

    pub   3072R/5112336F 2010-04-09
          Key fingerprint = 8234 9A78 E7C0 B807 0B59  80FF BA4D 1D95 5112 336F
    uid                  Romain Tartiц╗re <romain@blogreen.org>
    uid                  Romain Tartiц╗re (FreeBSD) <romain@FreeBSD.org>
    sub   3072R/C1B2B656 2010-04-09
    sub   3072R/8F8125F4 2010-04-09

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    mQGNBEu/ZS8BDADJmVznn4GFY+QaW2+bVErjMm7tNhbwZ5oP4q1eAqiIXM7td/2h
    adGXRfIS8QvswU22+Y2AoSoe61kAsBnZWZ81eIbFrJDkz092S3s5dSBs4gj1ImKa
    eRnJmb8pj9Bb/z++pwvyGJWowRiisxLy/9FBD0gNLDCVGuAeCMf+lHkc0bvwIdFb
    xyndAni0o25LxZ1z4wbSGAr+zQ3LniOZvn+ESc9fapIeue387sxWdURfEMHSZCE6
    OjHfj4Jr7Wol1xafJ7zaGQ0dhn31B3/WGx+m0vhPBdpb1j9IUQC4kzsh+m/bWX7p
    +9TETcefIruLmkOzbgVnQzLyvTsjFoM6UNG+KMrpp7nMDmfrMkmVSnPns4GS7dB1
    WKFDL0hn53Fa6LTVvy3fnlIpzhPBOOfQVDrEADlc81JrVAW3sjqXMvFmNym2uAEy
    zfAi90auI9gUhaGHqBHRaTv0XfDfg38lflRjE+OZq5tkOf5br8DwxK2c/+ryBElX
    Fdvwt6GMDaGCjPcAEQEAAbQmUm9tYWluIFRhcnRpw6hyZSA8cm9tYWluQGJsb2dy
    ZWVuLm9yZz6JAbsEEwECACUCGwMGCwkIBwMCBhUIAgkKCwQWAgMBAh4BAheABQJL
    v2ZXAhkBAAoJELpNHZVREjNvKhoL/RzzpVCNZWi7WEsOm9iM0KXRnGbsQ/OBKiNk
    VDt9PpBHNAvyyeOcmlgBqysmSXlElir1hTqcj+Hlpx1rGv2+7M9faaIQGOcA87oV
    pDJDv0rlqlSdSStIKNkMs2Zh1lhUyB5NJCipYJJ2/ZjYVYrEp+vYQQBW1aKZPyXg
    byp7ruikcU/ulHD07afqby59dYTHHfXqVTfhRmh3d+QL015TyY1kdZmrLUXDDgEo
    Qa5sT6MR5HMpagrg6KyytgLB7KoE7ohGdJAuJLX2me2/tKJw3HzSpPk4PRahSEh+
    3pn8S1DAjKvC7q23gaYbzfziid9QzJI5wLLPoint4elhDT3LKebU+ado3V0HGEOO
    FL2XxoowP7qviufUfYg8SVtIMk+KMdPduj9fNVVHIUqus9pWgMhyomRjXfX/UbJj
    BbaLArJp5Pbil2bRNXgKAJt4tBctwL4xpEOBcotBbhafP5gFSXf7vfKcM5U6/L7a
    9/TVD6xgWiAu7bzpDwm6hNVz0WPlX4hGBBARAgAGBQJLv2wiAAoJENjpoz//Vv9D
    D8oAnj3Pw9kZ9kwEi7VQQL8TwO2Qks0oAJ9dznX6xi8TZeszszNBagTSjyEQkrQv
    Um9tYWluIFRhcnRpw6hyZSAoRnJlZUJTRCkgPHJvbWFpbkBGcmVlQlNELm9yZz6J
    AbgEEwECACIFAku/ZlACGwMGCwkIBwMCBhUIAgkKCwQWAgMBAh4BAheAAAoJELpN
    HZVREjNvVRoMAKc80hlxuH+aDERjLg0ashDlHRy3+wbIkDnG9mVFiZ+iElsxKNvA
    7vxxhW/DPdMFMXXb056XfyRp4Y3ST2uWlws2TxgPRFtH1ddimYgyGWwOqAp4KUpB
    Tju4mL9wZC13me2F2V93vOX2VoyLCJMvW81GwEBlTtXD39q9heuKmKwOdJiFpod9
    5UPS/Pirs31STd6yAvSwiYHzAf9+AJqvS1xqbqZSUgi5DfgJbkamQtXZngDrNLyF
    pv4KjT3HMZptsvrVC9BPq6Qva5DIeJiWV8r6uP/K9kwoQNxcEMSNtXimHVK01C4j
    aVRBoCDY269ts7E37VgWfrooVn25xnzIvyXOSH7+cLqw8Bl9JUss+rXQe5v7fCmf
    jbH/1OnQf3q0Y3vaf0AlY69d+E14VZ5dOZfRWZO1sbslUX+NkGi+SvDVB/HzLLo2
    f46p/ceX7bpmML3WoUmyiXYuBR7+yq34/o9S4XhRJH8M43/B/7pfTt6g9K9966iJ
    bzQXflsuZnXibohGBBARAgAGBQJLv2wxAAoJENjpoz//Vv9DmuAAn3hysmbrg3yW
    2Yz5oFA1R7CeQqcOAJ4stWRNYGLons/lPJWOid/UD3bsn7kBjQRLv2UvAQwApJpj
    R4g/Bmhjq9iUi6nD4aEyv/7fZNIdSdz3GhKhjLG4cyyzmlBdjW/cgiEkBqfckDnd
    skdYloPj1p1u/R3oG5uhj8jfLTLY/Vs15nkSJUt0D0GG70ZLNETUdCxcEpcgag6x
    zr1+bc4AXIehrMZKBESXYMsBMXeXH7CYDesFJ0srGdDlUDbzHJZXRA3b++i8ZWTn
    /zN4MmHigzVwlyaNXOUHQwf/XN7Hkm2L+ogmEBGJgmwC6gsV8TIlMBhR9jRZ2VfS
    3F0uLvaUoBL3e4CaA4lEVp7NsP4L8xwXokmUQYmgR5gBh5vWqJ6fOQAak6RRcgYq
    aGB5BNVJgczZ/y+Dbc/SYrZRTR5AZ3C7yXWU8yB1iGwI6n6luGYdfTtO/yHY2tPK
    pJ5uGyZQMtyLKm9FIzF3CC8dby4SBA2lIKvnJetnHcUztdo0m4mmXpLF2/UIuwQO
    jsDGExOpqfdLMqLMKfxvOv+1+Ho2wEUp5A5rddkawe71DjWjPNsMMzCwe+2pABEB
    AAGJAZ8EGAECAAkFAku/ZS8CGwwACgkQuk0dlVESM2/LEAv/UOe7gYPimHpd+vnn
    QTMKrx4PNbC7N/RlMY1i4Kr6e3TZ8CKPe3yh14MkyTeTxQjoXlE9/r1n2iaVWY1F
    vrj22MR4MO04rUJWvWDze3FFZzLhhelUw5wTAJPLm/cC9TkKW8+VpXc62TN05FKD
    T+1arVlp5ZbkuI09W/LhJU4NuYVpRcTdmipOcK+k+DAShkFAU3o79JLqqQ6aBbXN
    2wtTGLhTGVuYVL1UzpiFwfUP0eHJjXWvx3r7OXyRYWStxwHo4MgVCDFahGrUEUxt
    lLe3bWCbBbdILO5dTvo1hYPDY6togf6jOwZ2i9G2CyB6blM3U7+eRIXYiIaABMr7
    ibxqz9F2ZmzgiA64LRCBcvnxmJu2ZDUzjKh4URTFWMMw1Cw062zLVIJk0Rxry34l
    HGPv0/X8ebLUY6sFN08qu4TyjG+lHfrXZTcCOQ7JA//dSx/8cGmaQo4muEYJal2B
    9PEvbrYgcdpGrwZ+VOmS2O4j/RvZJdJHUX8C0FXrlC6Ng3CnuQGNBEu/ZY8BDADe
    UZmEJuCavuK6buMHgzw6u9BdCpQMuDRpM+3T7EIthnkYz9CjXpYNqiG4z407YKSZ
    6hpBnuN22a67wiZKV1gsSzhVmk12hmOm3f4MZOcpLQfjo0jXwoTevuEvGiN3aBbG
    lUDRW5/qrAf5duGBiW0/Qruus9Kiedn294Z7KkuijhESR9RXGXs/EegNr/vsGxzX
    cfpJBhO76ZYt8xpb2tNDPGIqik/8gV5T5QjlDtS1nzav4BgPAeVnXURFx0PSCNfQ
    Sn25Y12ZM9iltHFfTECNcXDCJEuMQ61o34JZI7zw8wTxRYxhCc9QkZSj2Cre3+/J
    R7RGpuZ9m7Ftu8og+XetsCkEvToecF/9I19Fc3Lw+vv7Vq+hW7nKJuWgsAlHMnOL
    Pkv7IHDmV/PIddvfBrtI4ltPXJLp65HpYkG7xbdT+8KwTayVu2d/PHR1rqb3WZ6G
    LAORw9kSkxKRBQYyoUHE8YntGb497GxgF3xM1/+o2PuOoBE2i02C6YXx1MktbxkA
    EQEAAYkBnwQYAQIACQUCS79ljwIbIAAKCRC6TR2VURIzb2ITDACgjTjkS8PrSULW
    hZnRYhRG0j68jyYnCaIpvrpjNmoyBsk/9fHGJ7J3kLTThQM7mBbRtzJh1eysQaZ4
    JFupPYdkYnVDfnNfbzxQ2YH7nA7MakCatX6bavIALxLfdrN5+CzcOVJZVlWMOYIs
    XHsj8+s1xQ2qFc5Ulc2ZzqLWzcp95owuRnPM8h+1p/2md/nYqpWvrvUtAfNstV3q
    Wu05dwdd77vTbHHZtN01oTKh1m99vNRMD9c4MGGMij5BuPELfdap/sip00tyfk1E
    ZH1H+FBEebQ8hXEBm9DvuWSODRps6JvcQoYd6lNn0IgXnYDwQ7sJ5Mz6XfRjJVTH
    aO4SQiU8z4/y/YvOp2ASCM8dGxWzflFMQXs4Px/5ZFxm3Mo1MKC4PXDlTOTLu7jS
    Le1th0r5YhRtws9dpmcly2aRohF/7WcX8oGgHFlrLdrVX4SQda8pTny2MU02+bt0
    D0I9xnspW9gc/oMcZf1G8kE/+iG0SeMnRQzEMxb6R/Q7ZPsT5cc=
    =AUXU
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.296. Sylvio Cesar Teixeira `<sylvio@FreeBSD.org>`

    pub   2048R/AA7395A1 2009-10-28
          Key fingerprint = B319 6AAF 0016 4308 6D93  E652 3C5F 21A2 AA73 95A1
    uid                  Sylvio Cesar Teixeira (My key) <sylvio@FreeBSD.org>
    sub   2048R/F758F556 2009-10-28

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    mQENBEroxHYBCAD8d4HA1tGibcHpjyOTeiQ7+yclqvB8bzWazJf1OeHwHcY+Rt46
    gVxADP5QPLhMaiw4nYNr+bSg+RDIOG3bmxqDZpmw38508NWd/W8XjgQSV/PhnjU0
    pfrvhXfmGG/f6C5D5D+IRJ5dffW65YuDXtsIPTOuBCwmq9NSRK0/w4VZBL1+ihDi
    oDhAWnkxfaFXN5luY98o1GVxQNpd/ZKjb+lsvAwsoXDSjn3R2bGZbA2LBIFh1Y2f
    KHa1vL4p5ZaNp0hnHyGW0mxC+SWse7zA3c500Erbm5d5I0HUgCEGNdE6tEryklFT
    zr4HfPxclml+QnlCDVZDSAf3+ExKfNLlSwjdABEBAAG0M1N5bHZpbyBDZXNhciBU
    ZWl4ZWlyYSAoTXkga2V5KSA8c3lsdmlvQEZyZWVCU0Qub3JnPokBOAQTAQIAIgUC
    SujEdgIbAwYLCQgHAwIGFQgCCQoLBBYCAwECHgECF4AACgkQPF8hoqpzlaFKYQgA
    mO/vudKdpx8jYDFmCOIE0OorvjqXNue+0VowONs2qSWiGwsvwh7YDUg8ZKEiBZHZ
    KV29T32y0JIQJ8tKloCF+XS3IktqWA0hlXqnN+Kmw3H0+MmzjgzCPhfTxG8jUUns
    r3qnYrFQDLzQXr64rUi0o6SQsxcsyb3m3VZX/NWXLyZm3RlCOfQzIRHWKGsP7Q5+
    sMcLA/obV+C2cEOlsrT1EQWw6pBdhoPr55ssNG9Gs1oZtPhepoKjTq4X3VRIkm5n
    LEcR5WUOe9qOJxxLWSWI2lWl7KAMuGt7KmOpbSYZNWi6Z4ASm2U8KhtFIDmQINzJ
    Th4Qkph0TDAr1mhKSaRVZbkBDQRK6MR2AQgApzi1h0Oy/HVxC82JSxsfcQKNgQbF
    6H9d3gkyb57koVVP52jBhcXx4vpce7oSpyWkm/uH6ZGZi5qkjSBliy1SdE+daymV
    8FEh9KQCMPvM3BArrDlbHUzpgRDwxJ5E25FfY/ggFF6/uzY0vLsAtLdyWowOh5ZM
    Dt0sKXsAMzBRaZ8VsWeBfxJJpecRLa6igK7w0+oehWQ7v9iC+XqBpfXR2S4pxTi5
    bshXeEfezqkut0wg9UBQdOZwMdzV3kw2Zis/qvi6jte19FrH3JVe3jhuoZCVKxec
    aTL2nawtQHqCN+7MhTog3ap+ZhghWr7NK3wlPWYmk0fDCRLW2bzh7e8OawARAQAB
    iQEfBBgBAgAJBQJK6MR2AhsMAAoJEDxfIaKqc5WhBt4H/ArRP3bzyv5ejeCZ25fr
    OCR7Z1vwdFFWvWqEAPO70x9XolGZMEhuF7OVjZpIXFgjDPBAoN5nxn4A3SJqMcXg
    zDsfqOJC4N2JHwWluX4D/CZ6caWOfI0p0sM7hYyXaoAEouknPO97IvermEvmiqnO
    gpcqUHbDL9DRKBnMyqDsSE3S83kEyuwD86x+UXJNCJk6awcUTWoETg6tVrpJ6Jma
    ccMPVsn4QucbRYyY2e9tIvJ1YbcqZH2munFGa4UXeY5+UemX88tg0rHHIYoN1B0d
    qMSWsm6YwNRBuyFC4f6RkK5x3FQExsTd36UaDkxMbimkyAf2y9uMmHf49+anaTUb
    QaI=
    =7/gk
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.297. Ion-Mihai Tetcu `<itetcu@FreeBSD.org>`

    pub   1024D/21FFA1E5 2008-05-08 [expires: 2010-05-08]
          Key fingerprint = A880 42DD BD71 BAA5 AED7  AEA2 27B1 88BA 21FF A1E5
    uid                  Ion-Mihai "IOnut" Tetcu <itetcu@FreeBSD.org>
    sub   2048g/0B30E680 2008-05-08 [expires: 2010-05-08]

    -----BEGIN PGP PUBLIC KEY BLOCK-----
    Version: GnuPG v2.0.9 (FreeBSD)

    mQGiBEgiuBIRBACCfhdBIfKQoYWIJBFmDWoGi/FISis2XH8eupI+0iiUwjAUDScY
    dCuGAxQEekdsIXrpqAEnUOGsqIi+AINub8KM1ibcN8vdlFSd1RGG6mpQNSlTZ4QT
    BWFpHylCe7SRW22kU5e++LVXcViTlAvSzMs8YB/a9j3DPKzh/IXMwSaqKwCguN5R
    L36o7GJDqTIPx5pD12SaDFMD/1FJ+V3xXeKtulLzTFKVrUJhXlDTBiLVcpzAeR0E
    V5/trtZM9tJldeIX/nqKvR2QF9i0VzoCIUWNS2M8MneCFIzuhQSnt6uGWvj58V6t
    gKtNhqTNPt61BrkaTtWgg7UX6kTUcEV5nztkAePGbOAfShtK6gVBcn8MHXBRZ7De
    nqj6A/9sD7tymktX1hD7i7UlBcQhBr/Fr324qv4E33dfGKuykH+HWFxg9FAD5PTG
    CyNYoKLvl82zZso5PaDXIa42ZphviKHttMKVidKR/FuI/gTqX8Oz3mYfDoxkvFpO
    7PzMZ2+KVBxoXBwXYf6R9nZWv5cd869A18dyNvhE9tK6exVJQbQsSW9uLU1paGFp
    ICJJT251dCIgVGV0Y3UgPGl0ZXRjdUBGcmVlQlNELm9yZz6IZgQTEQIAJgUCSCK4
    EgIbAwUJA8JnAAYLCQgHAwIEFQIIAwQWAgMBAh4BAheAAAoJECexiLoh/6HlhDEA
    n0viPwOZWOfZGT/nbOSPmg+vvpuLAJ9Y6+VqpB9fdzyjW0GI26TlkcEpaohGBBAR
    AgAGBQJIIribAAoJEAV+n4tJOil7ptkAn1HjJyNBvKgXB4OY/SRbSmSikBXfAJ0X
    uSuQRMFbLqHM05bXqY95Ih3iArkCDQRIIrgSEAgAot/xHX8AzSLS7u2xyiraitRH
    fYcaMBpRYRqv0ceC95XUnBWZdy6piPBOr0p5LEGVaPN8RC6fM/9KIMCL+mEJtvZn
    dmxxCk+6GE2UsdDzMWdI2GZppjIAwPVY2YEB0kfa6fqSTV087hlyrkf7vMOl6dTp
    kAb50G1avwhy1jBoYR9f0LLn83kJV+77B/IUTe9sdgPsi3kovJNYIiAhTw62XqHL
    V59OZN/QVd1qPI0t5XXxpKbdyTRImtfF/EQ1HbqIha8ao8trmz2MtFMsT60piAoQ
    Q+usY3tHG5PPM4GxRnLW8Z0nZ0dWii42v5W5ETal2FaPUSH/9cDPAEphlcUomwAD
    BQf/RiXuGG3CBDiUYeVHlQiyNHQP4Rm5iVclcezhPstcQbb1R5rZ/sAu4FaUQVc8
    LRJ8c1UiemEhetGfTSAZnoeWxWfJgtcO0yK+fM5Q+ThqxCIlGPjAgmlbZw5R3Own
    BxiQAJMiax21BNVrxHMW0DigJqLVxvYEQDbw/DuMPwLG3Bf82zy1z3RUZ2pc8DEi
    nV3vtKfMH3UEvBHOxwdubOnmal/JYTWL7IR9mp+csXs0ZxJ5S5ELh5JlMWMa54Le
    3lujnkaTZYrdTxF+GWaFOxseNiLr6OcT4oZzTDnZ1Xn+CqS4TJDM1yczRrYPDA5c
    khpeSvqlv28UV0GvfDL0LR0mo4hPBBgRAgAPBQJIIrgSAhsMBQkDwmcAAAoJECex
    iLoh/6HlyokAniQgaL2Gi++v6kKS0faitctj+x9aAJsGV06R80EabXHH0d6Qd0vU
    ZMG9UQ==
    =e2YQ
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.298. Mikhail Teterin `<mi@FreeBSD.org>`

    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-----

### D.3.299. Gordon Tetlow `<gordon@FreeBSD.org>`

    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-----

### D.3.300. Lars Thegler `<lth@FreeBSD.org>`

    pub  1024D/56B0CA08 2004-05-31 Lars Thegler <lth@FreeBSD.org>
         Key fingerprint = ABAE F98C EA78 1C8D 6FDD  CB27 1CA9 5A63 56B0 CA08
    uid                            Lars Thegler <lars@thegler.dk>
    sub  1024g/E8C58EF3 2004-05-31

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    mQGiBEC7Hq8RBACUBh7OsXzgLr6Hz1QigRoSr5nWAUdj7Z9wNIcoE9t6J61MIUtP
    qGL3x73LspmwBGu/aC9muJ5b4Ont+BBBkVkC3Cdl7pKSvT70/ZB7TKw9f9HA9S67
    jK/NnrgG4R9amixfd0KyycNpf3yvug2FV5VZBiUqvuqWipqXacOxsD8rAwCgksWW
    74+msARYAf+mTeR7/NCEH3MEAJFfoV3APPGGECWfwrDmQT1IiBhObbjsVKbo4z7w
    yHxK+3Qm9nCG/sVthRll96C+rtAJKf+FEN8nvIx/9Z1UQ3Y7zTMgzlbz83BhhPnZ
    lAZEZI+EfmWsltzmyjJHnsvShRvjEp/YQ+0tfZV5uAPy2yrICw/rvozhCmqTox5l
    zOgXA/9mfbgbJR8NS7IwzcVSH+YEW06lyxLHjEd31aIj6wgX7O9H7JdXOytTqbSR
    VXN+5GjJhEaw9GmAd6tsvusHMy+1GBgY7TFFUNYO+JqHn6FKGzfPiFyxDyvyrF01
    QL033peqiNVxTS5nvJzmKQCpftlU3S85R+K62Alv6xO70HyaALQeTGFycyBUaGVn
    bGVyIDxsYXJzQHRoZWdsZXIuZGs+iF4EExECAB4FAkC7Hq8CGwMGCwkIBwMCAxUC
    AwMWAgECHgECF4AACgkQHKlaY1awygj74QCggWeR8IRwgHIsxVv5zItpzdtnkSsA
    n31ytm6noxfetU5J/5NnR6bwV4WetB5MYXJzIFRoZWdsZXIgPGx0aEBGcmVlQlNE
    Lm9yZz6IXgQTEQIAHgUCQLsjTQIbAwYLCQgHAwIDFQIDAxYCAQIeAQIXgAAKCRAc
    qVpjVrDKCPikAJ9a/Or2be00A9PeXyoo+b7VuLAzhgCcCX9kI2DduTtitld/mY93
    vZDnQPO5AQ0EQLseuBAEALDSStxYn/CidImaPKwDZoYVpXpHucmBZ/nK/rFwMNh/
    /RZD8ZdBF1PEDf3EA78qTxEk7PfSnoEWcxmcNfiMSALiTkehI4nWQH7j0ZSwqC/5
    Du4lP1v1PSeR35IkC58n8kur74olLMdoYxlpVOwh7jGR9W/3MSEjQ7NJP9AZ4yw/
    AAMFBACv3/ZxNdO78IPVJ1kQsfGUnwfpiw9syDqK+CMA6FyTCI2VUc6kY0Wc23Qv
    uoGv8ROk75pa2MJxEH/GQJNSZerJCSzLqdCyEW4tuxxJPQ7celSZ7PL5QutBzytL
    4rUQ5bUlYQBFlCx6aOuG2+zQqiFbm1RqX7RYdOf3LnlRmkaTDIhJBBgRAgAJBQJA
    ux64AhsMAAoJEBypWmNWsMoIibYAn1x8xlAkuQC2ZlUID9ORxSIgEMyjAJ99nQWi
    rCVB/qZMKoL16f9mHKvJ4g==
    =OYqV
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.301. David Thiel `<lx@FreeBSD.org>`

    pub   1024D/A887A9B4 2006-11-30 [expires: 2011-11-29]
          Key fingerprint = F08F 6A12 738F C9DF 51AC  8C62 1E30 7CBE A887 A9B4
    uid                  David Thiel <lx@FreeBSD.org>
    sub   2048g/B9BD92C5 2006-11-30 [expires: 2011-11-29]

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    mQGiBEVueHgRBACBqHSbbyc8BoznmojkguHMrDQtqISv33b9tpIsNSHDgz4Wpoqs
    MRwMPZpStu/FwULPzRUkceoYFIkyRyBwyIqTAD3uq2nisPR23ffDKRe8Q44Y8ccz
    sAtc7zPz/XpoI+2tLVGBCZyk9UOuIK1HkrmEjJ8uG2/eqyuckjO39oA/3wCgorer
    I3uzG/mJG7V0hHaCEkhQVx8D/3/i9YwqVVf2kqfKEGUASik/PXDpoeHfC/v6GFik
    Ss47TSaiuMOCoxF92m9EcOSoYCHOmdkJ1l+AVAWCZvKHKDM6J20dRr1zNqvR37jf
    FlmbF5B/MhRcjaSvrOLnZsP1wlz5sRkdAOdHNN/J/mwqkaatkFwtf7XcFMheB2qi
    1XvRA/kBi8lvPw7/PGibDIZXBxUmWVHLCU0dtrwKjbHE1HIpMwgjbTFrvh0pjmXh
    +qjn9VTcduP50Lrd/J3bh6WSgdc16xT2zxSAg9G8nJctDSJVgOJiYFUfLBpPBeLS
    O5ZN3GHw3TyLnDV/NvaAfzp1GXaGUB4kEuIaiaxxNugT82R3OLQcRGF2aWQgVGhp
    ZWwgPGx4QEZyZWVCU0Qub3JnPohmBBMRAgAmBQJFbnh4AhsDBQkJZgGABgsJCAcD
    AgQVAggDBBYCAwECHgECF4AACgkQHjB8vqiHqbTvNQCghqU1WwfsIQgI4bQn94M7
    z3PY/ZYAnRPT7soJ0GrlKAMRplxFoRWH1C1TuQINBEVueIUQCAC2nNYNyuKG/uCP
    l6/GUoumFRE8tcbH1jW5yrFbi8ahcoi71iCQ6Ozdx+XM/qIu13/iEJmTOvoVyOFf
    0pn0vVjgJ6yWek2oZmqh9Loj0WX2bRvV2uemOfvNwqUvDLCvbdftHgQAHOff5Tij
    GJxEBzDylhkAlF7MlZbCejiIJ7Of9fMC066Yi5M1lg5wAX1gPG27PiXJLMjcLI1B
    BsaIEtJsInd+UWsgjUE4tq1xoFhCeDZZWHCAyc7XyI7cy9FFQIII7SWkZ8TkZwKO
    T4UYyIHKtRFtgrMTkcXAc/Eul0LEo2z2e4L/G+8vF7q9LicIyv3/BF62fgx3iCKe
    HkJRWueDAAMFB/4lX+vF95ESlWuZ6DH1orSDKMzWlaJfl8ImE8nCT+QN/3ZauO7Y
    4kQ11jy2Q+vURzltl5r1uMgAheBR//qDp4OTlqxqSyYFx49iysd3rjP0vnc8WGD9
    BpGobsbcgw9axW6z278IZzJ7aroYBaceOHkEM6nNboZ1aKCn7jYqxFyzNUuJqqEY
    0vxx82C2wHIPb+b9k5LCz+kMrq8fGDPERYYcFFKHMuKZ9oyide/8hQ83KadXbvJB
    /GAqx+prMs8axuAMoGgksMRV7Er+eRZNqYyeCr31j+Oh4qpUbe1q3UPzkoUg9OMI
    qJXvBn5S1M2B8epkggu4y6HDsbVXqgT+NCaWiE8EGBECAA8FAkVueIUCGwwFCQlm
    AYAACgkQHjB8vqiHqbS5dACfWGE7OYOJs3lJUh0fHYJEYGfcOKMAn3Spx9LXSIcR
    mVETDDKHRmZTSiZX
    =iAPM
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.302. Fabien Thomas `<fabient@FreeBSD.org>`

    pub   1024D/07745930 2009-03-16
          Key fingerprint = D8AC EFA2 2FBD 7788 9628  4E8D 3F35 3B88 0774 5930
    uid                  Fabien Thomas <fabient@FreeBSD.org>
    sub   2048g/BC173395 2009-03-16

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    mQGiBEm+vTYRBAC03EXAZTDbUh/ShE+8WHHaB98hrIyAlHsMBRpWdouqNVbvEWBQ
    08to2fDMF8zpWY7GB6U1w8bH274bWjIFk9KkK9fLbfoKnwQOWBEB1IFOei/G/4Ro
    xfufEQUOWGjAcVlZp+/crXEJQEljWe4OOjh2Seruxo86qWmm6Pp8LkmPvwCg5+t8
    iQL/1Ud2c8fyLAS+AARuAhsD/R6MSZtQSselAtbGB5S01reSKO4enb7yFdU7Pcbp
    iBAqgE0khMZqcQFeOWyAiTFTqyt4t076R1s0G9uBoTCI5/sDslVvyaglnGVrL/Ej
    6WEyBEHXFHOS+pf7Aofke0wHyQhl9YrN22cEFEKWNDMCu2T+K0mP1AVKtnbLqwVG
    clIuA/9+qeScAK7n1Nu33c4WTkbhxdpxqcQGuUti+vHLrSy+wpZgEP4e3A1AurRs
    JXUGTuqT0g8wxpCMEassWuoOphrNUz3Y3ckspvo3PLbht8iWhkAS+YjvTgBPu+at
    rxqS4vuog8z12Gl5C69oUihXozh0c+9WNQUahsy2RM4ldFu3qbQjRmFiaWVuIFRo
    b21hcyA8ZmFiaWVudEBGcmVlQlNELm9yZz6IYAQTEQIAIAUCSb69NgIbAwYLCQgH
    AwIEFQIIAwQWAgMBAh4BAheAAAoJED81O4gHdFkwWz4An1Jps5d16oHpy7qh7jro
    87IPMczmAJ0f4rYdOnxuFuRDnBLwVbdb1gLQcbkCDQRJvr02EAgAlrdKSnI726B0
    hGobE1BE7jwjS+u0ozmeTh1JLZH1rKNJd/LszO7ubB6X0VGA5ustPYVb1eVoSn6L
    LkvbspsdvNitklU8Ys4FF0dI9+AvrT4u84f8AjKKSTMHoTu6vv07Vm0qEdt2ZTim
    YTwG0OKuRbwCDNaMNzshkncWxWNd/KgrP9NlfdVJ/3NxlEl/GUm6v4bw1CM3F+n8
    DanJa1jKPk0krg0bdZc90flknwaH1rQckFrxICLa/9MnV8HjZEiE/h6M4Ay3Okb8
    zQnYywHqklRfvi2nUm85AZ+fJ1X06QCJD+Idg+/Tgk2SZ3oG+yOBS5GASiYiY5Bu
    3fUtBVc3CwADBQf+NFw7Lw9mLYqd7E8VFr81U6JH4WU2sG7YEqbcZ95jqiaOby99
    jaSZ0FKPGvm2V3VpgvXchzf7noqNMWUXbQadg5U/iJnRRhdhnVUbMq/T/mx5u9RL
    jH8Bp3zF5hElGpa/rPQ0TJSI9lltUUHD4c59FbgEXqmG69sTNcXBeH+w1LBoqmyS
    VQvLsPKan6FKfFDzvvuOxdP2SFor36zu7ecEuDz+teETk5ixRiu5wpEq7geqgZfW
    rgO/2HN5OgHJCIGvQfttUwzrDLw+RHiy5wM2f+S8wSi1bka3ggE39KPODMHQR6z8
    zunYn+Xjw+jL3zrDu/FAa58nbaFRuuFEqG/V5YhJBBgRAgAJBQJJvr02AhsMAAoJ
    ED81O4gHdFkwb+AAoKtrw8aIkc31k+gGotiqv2Z+v6ZoAKDKsv5LDbNe2fncnihP
    0wGrqiKLdg==
    =HImo
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.303. Thierry Thomas `<thierry@FreeBSD.org>`

    pub   1024D/C71405A2 1997-10-11
          Key fingerprint = 3BB8 F358 C2F1 776C 65C9  AE51 73DE 698C C714 05A2
    uid                  Thierry Thomas <thierry@pompo.net>
    uid                  Thierry Thomas <tthomas@mail.dotcom.fr>
    uid                  Thierry Thomas (FreeBSD committer) <thierry@FreeBSD.org>
    sub   1024R/C5529925 2003-11-26
    sub   2048g/05CF3992 2008-02-05

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    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
    RuWESy9LIEp2SrqoKqBRt+0jSZ6IRgQQEQIABgUCQ1K/+AAKCRDhVRfyKwkgwBIb
    AJ9UqpoyZfm772zLxQoiEkFJ1lT5MACcDUiBbYW54AEhRIPkGlDW8UQCSrOIcwQQ
    EQIAMwUCQc/j2wWDAeEzgCYaaHR0cDovL3d3dy5jYWNlcnQub3JnL2luZGV4LnBo
    cD9pZD0xMAAKCRDSuw0BZdD9WCYOAJ9OQUvBJKtx/mXI+UgETR3D1yWlLACfe6Nt
    7zpO70H6D7UrSW/IOk2hC/KIRgQQEQIABgUCQ1KtCgAKCRAkfafFcir9UsTmAJ4t
    KKXARM/M15lkSoh2vyluNkFlIwCgsSDWHty7HbC0XsZt8YX2+KGceaCIRgQQEQIA
    BgUCQ2k5KgAKCRB+TqVP0KtAdb4oAKC476Ravc31ZnifBZfMjSssvkgqoQCfYOh3
    QBNfuXZA8zkjuYcuRrwOS0KIRgQQEQIABgUCQ2qAdwAKCRD28tSDVuSyLElxAKCi
    oH6Y7D/XaULZmtD+k4oaLWZ3OgCgjEXitqvUPwjMprdEXsY5frOS0F6IRgQQEQIA
    BgUCRS/U+AAKCRCWaU84quWnb9FIAJ9LD1ca96coUClR6iRkD0YL+QQw1ACfQXee
    Z1f/UDnMBM1L0tqOScU2u+CJAkgEEAECADIFAkU9ABQrGmh0dHA6Ly93d3cucGFl
    cHMuY3gvZ3BnL3NpZ25pbmctcG9saWN5LmFzYwAKCRAmSeYoxdNNBd6xD/4gHJb0
    u+0g/wyQbuvGlSQ6nSxdH/grOo40U9rAno42d7X5TQzZUnHX9tV6NA4L6KAPIiN/
    o2QYD5KqQuzTcm3TZQnI6hMPiM6yZDMP1AuCZTz6J1T3avt+AKtVdTWrg97u1ecF
    4gUBHzg4gMLX11U6XFI9j7310bInYUYBfRCBlPy60PpZC1BhjZLax6QxkdqaaAcg
    weOqcq4CbUOuszAm91Ogiz5mqqq9i+lpEJUzWtIDbsMGOZxRbOtVGLtg+4BteEvv
    YwLpWtHr1e86oY25eVjiJrJhorZSoYH6Cn+JCEf4uTNUzcpmBfn0bsUydxaBv0GH
    0prjcsY9eNfB53S1maTsXMAeYnDi20TJuFWJTdQJHSueLuRoATUPrGBAt8rZPcfz
    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
    oMybWISax+SEH2PZ7dgbNw9pgQub
    =oY1+
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.304. Andrew Thompson `<thompsa@FreeBSD.org>`

    pub   1024D/BC6B839B 2005-05-05
          Key fingerprint = DE74 3F49 B97C A170 C8F1  8423 CAB6 9D57 BC6B 839B
    uid                  Andrew Thompson <thompsa@freebsd.org>
    uid                  Andrew Thompson <andy@fud.org.nz>
    sub   2048g/92E370FB 2005-05-05

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    mQGiBEJ5esIRBACGrMoYYIu2yCvXUOUgySagPjKetJ5zKOCFDa/Gl65tFtCcc3YR
    IjSDCvKuxcuS/qPo87pNP1sHPT0gVhMr+zcTrj8rgLWfC+CTzV3FPTdIA7LhVwer
    +evZ1jSHo/MY+GHTYBiDj/GiDkk8zBk6Sppo0OdzqZ0O8IW6tvh9n7RNZwCgrPYX
    rzBYHlAZxmZfQTDhgi8rPPcD/jH740waoG4l564X9hfkHDbxe2mrwKrcxfUbNi0h
    yIOTyl3glTULTno/xG6zxh4qG/COxIWhjC3Nkwllq+VzWqzYFoPIV4E/nvPNrLLY
    5a4/19ANLLkrw2kiLxNKLPu+SwnAF6cLdnbpPrGZSGOg/DhquXulAs8foTxv0SVN
    F5dAA/9O9GFOk9IcZ6D77A7Unysoxoa3WwqNHikJTo+bHvENJJw6BM1e93keLXbo
    bljw02y2cBXMz+cwd0S3ysj2tEPvEWpUJCVbCk7bB565R1TBb8SJB08MQ7PuOzbh
    PCCc9nB2TditjUTuL1yTrOW4qki1fHMA8ySNuYBiw/iUOkHgbbQhQW5kcmV3IFRo
    b21wc29uIDxhbmR5QGZ1ZC5vcmcubno+iF4EExECAB4FAkJ5esICGwMGCwkIBwMC
    AxUCAwMWAgECHgECF4AACgkQyradV7xrg5vQjACfboFkm4m9zZmor2J1+T5IknZ2
    z2EAnjX7sCxeTxGAUp0gv1+ijFir8Ju4tCVBbmRyZXcgVGhvbXBzb24gPHRob21w
    c2FAZnJlZWJzZC5vcmc+iF4EExECAB4FAkKUyikCGwMGCwkIBwMCAxUCAwMWAgEC
    HgECF4AACgkQyradV7xrg5tJswCdHh+UXADhzk4yJKgLuJlLYsSCK4YAn26SPktp
    Q2fQpBC3mGRRUYVRowhZuQINBEJ5eu8QCADgBVHTfrvthg1lDFvuZVlSgZueFEuq
    dBn0tyJULht4MyHAYzY1fBkKtRPxp/c+sGKzd/nXZ+zqQIJRYtrAviGAi9CyHTiI
    URcpMACCvofuRoMJ8djl35UzioL8O+icL2aoSq1w0MBzzkwTDcmaiceWVIC/RZka
    U0/irf31HSzAxGYO1wXtZuYp6BrEwcRezDZQUkO/riGKT9+UUppnTFVBbyelvVjt
    D9iyeRnL3GEOH0IvXbPRo400EwOHs4ieOZhNO4xyzj2qexMcbFq2nUis/qctukth
    lynv0mYVstLgS+GQiX8+VsbmK1QkTfKTY2ufTQDPJTcAa7Kneb+luDYzAAMFB/wP
    UyXix1pw1+qSJS6m6T7m6wmPj93/BoB+sadJvmjdaGcE5yKtCLdQYHZyI8Pvl3aA
    uktn+k/IxqSwLgJCSHv9CQ0AwN+kuIPHyy+hsJk1w5C8Qd4q8sYWecyt+aycYz7X
    Op9EB2rpKgg5E+RHFsuyx/X2dI4/n9XsF0xTDXmvBYHLw1E22rliiS9WlJ1C8UHn
    gjVZ8nqd4bI9HcwQMadtjXj0EcyarnJnrqLkJopzmLSJfOtnQvXyaTzwfS7fyQYs
    lnj+k/jJFULvgolWLmmfx149+3ou9c6c9KItAE8kfl7dSaEwOo4oE9cKluzhFHeC
    ezponq9OPdSpXUwBXjJgiEkEGBECAAkFAkJ5eu8CGwwACgkQyradV7xrg5szjQCf
    WQNYMndCd/TFxFqNF8k6Nu45/lIAn3oxSJ0Gc09OwQB4oiL6kHscyL/z
    =SFfV
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.305. Florent Thoumie `<flz@FreeBSD.org>`

    pub   1024D/5147DCF4 2004-12-04
          Key fingerprint = D203 AF5F F31A 63E2 BFD5  742B 3311 246D 5147 DCF4
    uid                  Florent Thoumie (FreeBSD committer address) <flz@FreeBSD.org>
    uid                  Florent Thoumie (flz) <florent@thoumie.net>
    uid                  Florent Thoumie (flz) <flz@xbsd.org>
    uid                  [jpeg image of size 1796]
    sub   2048g/15D930B9 2004-12-04

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    mQGiBEGyCSARBACWd64iJ+56C42einT4AIwy9qon61Lx+LO4BOMgeaQTGy9/fKq0
    XqQmPddhp9awRtm0+QoeZQ00q2qyY6ufmSZJCr9iQg2a1b/fG/UKZSIKBguDuCCk
    O6acsAd3H0fmZRu8jAD+pMsJb9gO5T6YLIHK9p8uVPG0lRKzulTXm5zsEwCgkoi9
    h+S/dIPXfX94thtJgVcUeLEEAJK9ZO2KFfGx+YRKDpbj7ocGgjqMlhkDFw13Lycq
    jopPipNwpey4ZKjJa2w2fmIbcqpUZW3EH1Ld8KBOt1bhGlI92uqvrssalNH82PGL
    cbiuvYMHXOfE05tOWD2JgxJE5tY0KtED4SDaF77RAcy4z9nFt4og4YknB/seOQZ/
    5oSKA/980pHAvnm3TFK7jQN+AIckWxOS3mXxvwHmvM/MzQEVUrFAPp0C/aCh4JJF
    7Tvy54cRKEUJQpXuTeyBT0pMU0ataaESMfk4hM/WDhvlV0AXebah44uJfBAcHwJt
    f/d3c+1I5eRkWuN+ey+6FfBCooW4KvqVCnrWC/Kk16VqAyn9UrQrRmxvcmVudCBU
    aG91bWllIChmbHopIDxmbG9yZW50QHRob3VtaWUubmV0PoheBBMRAgAeBQJBsgpP
    AhsDBgsJCAcDAgMVAgMDFgIBAh4BAheAAAoJEDMRJG1RR9z0Y7sAmwT9GkO3Wcrl
    y9KcPtsQV4x6dvJhAJ0cGtclPmdOM34jMC7U5NQol2bV/rQkRmxvcmVudCBUaG91
    bWllIChmbHopIDxmbHpAeGJzZC5vcmc+iF4EExECAB4FAkGyCSACGwMGCwkIBwMC
    AxUCAwMWAgECHgECF4AACgkQMxEkbVFH3PQ5igCgiRkJPRjrvitfZOrvLhx+oScK
    3moAnifC/FHLFLr7hG/NlgLbF2yjN7Fv0cZXxlUBEAABAQAAAAAAAAAAAAAAAP/Y
    /+AAEEpGSUYAAQEAAAEAAQAA//4AbwoKQ1JFQVRPUjogWFYgVmVyc2lvbiAzLjEw
    YSBSZXY6IDEyLzI5Lzk0IChqcC1leHRlbnNpb24gNS4zLjMgKyBQTkcgcGF0Y2gg
    MS4yZCkgIFF1YWxpdHkgPSA3NSwgU21vb3RoaW5nID0gMAr/2wBDAAgGBgcGBQgH
    BwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5
    PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIyMjIyMjIyMjIyMjIyMjIy
    MjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL/wAARCABgAGADASIAAhEBAxEB
    /8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUF
    BAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcY
    GRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqD
    hIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW
    19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAEC
    AwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMi
    MoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElK
    U1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaan
    qKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6
    /9oADAMBAAIRAxEAPwD3Fic02nkAmmleagsSiikJ496AAnsOtN3Y7ivNfHnxL/sb
    dY6KFmuwcPcHlIiDggf3m/T8a8b1DxL4h1KYtdaheyZ6BpTgfQDgflTsGp9W5z1o
    zivlTT/E/iDS5EaDVL2IKwOwTttOD3XofxFe1+BviNB4hCWGokR6l/CyKQswx/46
    evH5Z6UWA9CDetOqPqKkpANY9qRetOIzTQMGgCbuaKO5ooARq4z4ja3Jpegra28p
    juL4mIMOyfx49DggZ7ZJ7V2bV538Qrb7brWgwAH70mT+KZ/lQJnPaV4Ksrq1iuNR
    V5ZnAJTdgKOw4rbTwdoaqQunoAePvsf61qoViVRwAOBVtCPUUyTl5/BHh90I+wfj
    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
    YhEx5U7AKdGZ55po
    =hxwJ
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.306. Yar Tikhiy `<yar@FreeBSD.org>`

    pub   1024D/EA04CF5A 2008-08-31
          Key fingerprint = C063 6788 AFF2 A62F 06B7  516D 200F 06AF EA04 CF5A
    uid                  Yar Tikhiy <yar@freebsd.org>
    sub   2048g/20443F06 2008-08-31

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    mQGiBEi6nDMRBADDmOkKUcTtDy4VHqTIJfILJsWmfnYBNzEzqQiRTO9qWDpmt9ah
    8lb2/MYT45AMdpUQu3NagY9oZq8bkUsUZ527gDHYOIclgwVulGEcDuwGSJrUi7mV
    5SrEWqi9FspzRgaEwjVSB1XDXqb60J7UHXzyxcUb//f5Qibxco2k9fqzxwCgtZF9
    XBidVm+Vsj/cKoJ1FXm9NWsD/RgYQzE4WUlZ3wVw+EX4+kIgHgPh5vfx2KdK4R1u
    KdWLOnamegQRQG1pe/4nAHH8WTZOkoL+eN0Vgd4Y/2/vrohQWEknqz5f4uxpOXgA
    cWp9B4Dfk4i280vNvWWoCclDTvk5Ukm305YaR4sSVHpSdwu8s+KBIZ9ia5LXpZIQ
    iKVvBACT6K15alAx71Shv8XRGiU8aYiRHq2/vBzDOPsEwomM1mIeCrJddZbangab
    GtbyizFtz4ZG2aA7ctOFVDnfbU9PHfXD1wywkjz+LBHAr32z5QU1irSUJSRGP8vr
    pOvNsrLaSS/L4Ux+kjfrJ1o/sX7isr9izsxuob2RKULBZMFx+rQcWWFyIFRpa2hp
    eSA8eWFyQGZyZWVic2Qub3JnPohgBBMRAgAgBQJIupwzAhsDBgsJCAcDAgQVAggD
    BBYCAwECHgECF4AACgkQIA8Gr+oEz1omLwCgkAutx32AF5bws/pj7R+zSWy6bcIA
    oLC9q/1fLyeiFMyurmx92vT9d9W9uQINBEi6nDMQCACnALycl1uAKREjUAYiWjO1
    CjLEmjFXNM4gryW+gm2ZMk0kWCFzdCSMTyk0pkMV33wa2H+BOMRk5XhwY3AdPnmN
    mwYwNnptRxeIrHc4J8RuQkI4apKwZ8Z62iA+c56LZCYluJGzNCrQa65LgW70fDuP
    Z6BeBCvF0pSAmUCaivezhJPQAuiZg3B2Nf2Ty7ZsX2DwuyvJVwx5mGudQ+b9YKS6
    A+nkBke0AE7Q/CS04LpCewlK+acNka3b2JlAtDpOLSvx5bzzFsZcyMmhJYF8Am2C
    4yv0F6aD4cTdH7mSvFRND9pkDtpUYDuPpJt+RgSSelXEp+nksvwTIqX3tM+vn7qL
    AAMFB/wO3l7LM8z3QaQB/eMZV4U+14wJLsWvVU1vAAR0GG5GqefSgDQOvcw1MmSm
    YsX50lGKBdtpaq6UqXcEVKJtyg84HySwMBNRGFeibiiTO2ldaWaGS4c9e0eVu7vY
    Pch+DA2rrCNuE+lb2bWlDfkDsrK/doOiYVu0XiIQK3WFF8bTXRW+9T2OWyCjAcTl
    Yml4eKqedob/PWApJPMvMzLpg1h+VfV1JPcG1xmeoT+mtRSDME14GZwoF8JLfci8
    Gnp4odmfgx5f7dTU60DPbpps94idR7dkFrTeWervPeXvFWb4+hSENb6fgJKoBkt+
    SsC+h7OmCBsWu3GCEVQ1XhB6jezfiEkEGBECAAkFAki6nDMCGwwACgkQIA8Gr+oE
    z1qM4wCfc6TUkmIxEfS6j6S358z+qkLadQ0AoK6vPNvtYK734zGuUg7w0Lm4KmHY
    =xzp4
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.307. Jilles Tjoelker `<jilles@FreeBSD.org>`

    pub   1024D/A813D5EE 2001-02-18
          Key fingerprint = 0C82 44F5 0A1B 84E4 A9DD  7032 5102 275F A813 D5EE
    uid                  Jilles Tjoelker <jilles@stack.nl>
    uid                  Jilles Tjoelker <tjoelker@zonnet.nl>
    uid                  Jilles Tjoelker (FreeBSD) <jilles@FreeBSD.org>
    sub   2048g/B94834AC 2001-02-18

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    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
    YjItxp6TYtl3DovuEK1DXg==
    =BnuK
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.308. Ganbold Tsagaankhuu `<ganbold@FreeBSD.org>`

    pub   1024D/78F6425E 2008-02-26 [expires: 2013-02-24]
          Key fingerprint = 9B8E DC41 D3F4 F7FC D8EA  417C D4F7 2AEF 78F6 425E
    uid                  Ganbold <ganbold@freebsd.org>
    sub   2048g/716FCBF9 2008-02-26 [expires: 2013-02-24]

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    mQGiBEfEDpoRBACh+3G72OFXvEjpBhfsiLhudF39C+E4zZ47xuWC9oAV/8y4jJdD
    70TjTBYydonraDCxhx+GdjfCzaN3PYw5fOMTric9xi3g8s11oKtzHG5NfgHfMIMV
    R1+7D2uXzgl/10JeYIz8DriaUBdHSKOhge5eNyXy6l1z1dPvnkP+/sQ0QwCgnaaU
    gIVvEj7qRiemJG0WRtWPU5sEAII5NYtidbx5SKM7/JzRtRI/BG497VVrcNVKbEZF
    jH5WklnTTQ1v9TnQfP7iksTZ6Ik6k86/opOagqtCRZ/Pdm9ldU/dZNFoA2f/4iER
    Od4Hhnm4rQ/rSUwXl6aZfE/26iBmH4/KkfkOX/mnRHAhs4EttXl1Nt7ew1BYwIAu
    +1eFA/40VV0lL93ab5aqvZ0fX6MmbXWjZXQ4q7YscqKclvGJK/BL4C7GTHk5Sn38
    uv+b9l39YR5yuZt2mByWyNCBBu8nXQ/vSjQ2V6wzFizAVZv3b6k13aGj4/ZUZiV3
    Q1WuU6qHvafvl0BJJBw4ywOC5gSU9eR2roGQb37fvcwH7nd747QdR2FuYm9sZCA8
    Z2FuYm9sZEBmcmVlYnNkLm9yZz6IZgQTEQIAJgUCR8QOmgIbIwUJCWYBgAYLCQgH
    AwIEFQIIAwQWAgMBAh4BAheAAAoJENT3Ku949kJe/EAAoIFqc0wekId4QcEDk35R
    OBMT0mpPAJsE2LsdqX17BXJLuVfuQuxIR9RLP7kCDQRHxA6aEAgA4w40fvHBJOqJ
    1RtowjBEX8uDEOwH2LlnKK7S5P5Z0PRM4/p+a4/P7KKRYAVehaBPc56TW4eqIXWE
    sjGNoJd8SIS+M7LIhlgBe0E0qKO1PXq7Alr5QMSR9aSS3z8NPWdKHU6+bJRomM8h
    1v8l0dBfFdYsrP11FXoAtRhkRnxB5E+A3rMJ35Uz5WPs/omz422M6SNziVn9lTXT
    N0Xk/pg3KHIVjosIakfbV25ZbrX0XYWNvh3zEhGyvbV5A4QuEXg4HSjYd43l5p+z
    FreZCrQh7IN4Oj1SfIbWzsoIygn9IacXQW/iASvpVcqP3yozcL8oi3VNSZtWY4fg
    jZZTIEJ04wADBggAoha5dSArTS2Tq04ArO/Mew4ZSZyOYg8Zay2TURrx1y2BU6on
    F56WwV2/C1qPzCOGDeVnYiXKKHnc9bNIefzKTMsJdIihw9N1CfD9h8MZ23GbhKcg
    VbiRC6t1b2BR1C7H52rPs8mXtywSGiI9pjzl8bA+ARCsvWHKe8R8iwL+jw+IVF6R
    94xcbHtK9EKOD7U2bVhiRb/uQiY6df6+VjL9lLoJMSLSWXWMtk3KJoFt6peB/XVu
    NIvbdxcU+xpgqz/SBPUs3MIgt9dG29UBsez56l0hgDAU7lcR0EIpCeBA4MskhInp
    AEJ38BJ6zL5MNmOOXWki2+FT4PbLjndwqxP0Y4hPBBgRAgAPBQJHxA6aAhsMBQkJ
    ZgGAAAoJENT3Ku949kJeYScAnAxcM/ZxE+XdjWrIazFTBJITMR0LAKCdaevdwU2m
    HFVwUGCsG1R5u7ctUQ==
    =rUEt
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.309. Michael Tuexen `<tuexen@FreeBSD.org>`

    pub   1024D/04EEDABE 2009-06-08
          Key fingerprint = 493A CCB8 60E6 5510 A01D  360E 8497 B854 04EE DABE
    uid                  Michael Tuexen <tuexen@FreeBSD.org>
    sub   2048g/F653AA03 2009-06-08

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    mQGiBEos/K0RBACA1Ck3ZLIpeSiYRNYG8RXCxbvHFOsI56DCwbRm6VXwjbbH32wv
    FZTxIR+A6LQQLCLDEvfklgI06Ksi4uWfAoLRB/CoiX7crEZGvYDc4kYSVjumjORh
    OzDtUiechd17/gyo4j+u1PDtw/5XXpSaTIRJO3g/UobVpUPjl4dMz4Ks/wCg25PC
    MPQI2rqriwffFak4PZdJ/JED/RSqsLqjsBOpk0hrY22VQrDhCHrWsVopq5hcqElw
    W1iuLMBhGK/Lursari5M8pSmjJVeWMEQwDqfF64MctbbfmOfMaRRggX2meVdMq3c
    o7bAWWEfstFB5WlUkCg6TIQjLV/4QbATfX2YkIcwuxiwC+CMq2trAJ/X8A6VdaOY
    tkHaA/4iyk4gCbvCxB1bhDp2HiDZfAWm5OlkHefzWeMIY7O4k5+vpaS69ui1xgYO
    WhXKB6RpDXcJzvZdBQqrXqFXdfBgOwhbUj1uOgkBCMpC7EXT07sxzvrnaW/RR51f
    KTeplrRMX0tXMij7nFh/WzJFSfFK+0W6+yaRVzXa42ds+VARd7QjTWljaGFlbCBU
    dWV4ZW4gPHR1ZXhlbkBGcmVlQlNELm9yZz6IYAQTEQIAIAUCSiz8rQIbAwYLCQgH
    AwIEFQIIAwQWAgMBAh4BAheAAAoJEISXuFQE7tq+FHAAn36ou5m91emjHT6ziIWw
    80iHtiyiAJ9RL3W/bShdgmG0U3UKDnPrSwebdLkCDQRKLPytEAgApnToBctsJKyI
    YBJp2wusPzd+8H1Ab0VCcL4pcKWzCIy7dTJSknLpJV7c6ts82+pZBKUMp1XHfnsT
    Q8YwoaIUOQjkBqqlkrxqkexidwj3VVZfUvHfXvU8Hw4JM862MtYa6ZHRoz+ZSVQi
    x8idPMFhs+zD9Pb0ct6YsINeKiEGTGnanm3XJIIeNg1bOlrTjDiWB6KnlMmmeZ/R
    o4vGdnO7wsP03VtJBUnPNaQ8luAs4SHBTmC+tXNhBYwn7Kh5PGR1TVH2ROpPOYTS
    StOktseR6iMJ//6mJEBOt3cypOx2d7hbXfy/LOijg5Ku4FkUUmJrM4yDMgN/2bPw
    RGw8KgOvFwAFEQgAlw5VA4FwTgo/2+pDtQxtp96WuvQxw1IL1fPPNwGO7b2TVlj5
    KTqvsqx5MP9jLCTPi93KKAFzwFfzXxOD+Isd6AxeuotlxLOUXeCdcpeyYHepURYT
    7bjYg0DaaoqZopm0L+8c+hvOLfPaJLWVbUCEy219SeCA3xtGvRtFY1JXIFk9sbgZ
    y23S592sG/5CAantKyI+SHzZim2mj4iRiI9HlGDLpGn6QAyz5HX6a+TXdHijg/xK
    3T0xfBLn/xh5tSlBdzKR7cXSmzbtP9HL5rewVgVAqqg/Mzc93nD+gY67bMwAeyHq
    u2OCE6YkLNJz9kSqsSygcMDI8vKoPU8cqDvyyohJBBgRAgAJBQJKLPytAhsMAAoJ
    EISXuFQE7tq+/EgAoLrfM3GP7IAcTezTbs+BjUQcoWHhAJ9sJmO1S8JcXD8f9G2J
    AOE2UIkbvg==
    =adk0
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.310. Andrew Turner `<andrew@FreeBSD.org>`

    pub   2048R/31B31614 2010-07-01
          Key fingerprint = 08AC 2C57 F14F FDD1 2232  B5CD AA16 EFB8 31B3 1614
    uid                  Andrew Turner <andrew@freebsd.org>
    uid                  Andrew Turner <andrew@fubar.geek.nz>
    sub   2048R/9ACBF138 2010-07-01

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    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
    BuY=
    =WLSs
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.311. Hajimu UMEMOTO `<ume@FreeBSD.org>`

    pub   1024D/BF9071FE 2005-03-17
          Key fingerprint = 1F00 0B9E 2164 70FC 6DC5  BF5F 04E9 F086 BF90 71FE
    uid                  Hajimu UMEMOTO <ume@mahoroba.org>
    uid                  Hajimu UMEMOTO <ume@FreeBSD.org>
    uid                  Hajimu UMEMOTO <ume@jp.FreeBSD.org>
    sub   2048g/748DB3B0 2005-03-17

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    mQGiBEI5K/4RBAD0LiHx/Tl4UyaX8yFUGjX1+PvATTJloNZGXl+jagSUQxCOp6Hv
    emDinSPskld/viupoAxjRImlkP905Y0Q6iDMne4s5fM/75lpeG9ztKRSgDQrQLTL
    HhXPXKNMtDV91yDqFEkwptS+0MaTMY0KrlR29RtGnpjoa347TU2BzU6TcwCgw+SL
    YdOWeSGs/7LKdUIyYlrldjkEAMqIQwnDl14vZBe9EOCrjSA4gHv6g2IQP1TRCpBu
    +/Fpi2+xcj117xO++uqMMzoi3aWwsqarao0/VSJ7ZD81by1H56Hnsp1d0r67neJy
    PKsyh2JfSQww9cxVkQjuZAjZNN1SLzDeA6xtSZrcmim+f0GIxlz3JFS9za/scs8x
    mGqzBADRF2My4V5HEMeScREj2hoquRv/uG727Nw+jftwiE+7TB7+JUwwyakAStNv
    x4+YEFAVSpKxyWgOeMqOWYd9bOSwJk40t9y1Gk6TTgV2C6sYwGHMSNOWYZbhYX7c
    84cxm2PtQFIq7g4Q30IkfAhYFzEwKmPJ8eV1zO0uNIhE+SO9QbQgSGFqaW11IFVN
    RU1PVE8gPHVtZUBGcmVlQlNELm9yZz6IXgQTEQIAHgIbAwYLCQgHAwIDFQIDAxYC
    AQIeAQIXgAUCQjxiFQAKCRAE6fCGv5Bx/qe3AJ99w7Ipfxs4CF3/+eCf53HO3FuI
    +wCdF/xyvVjjNdAYXCMxCHtUF85bD++0IUhhamltdSBVTUVNT1RPIDx1bWVAbWFo
    b3JvYmEub3JnPohhBBMRAgAhAhsDBgsJCAcDAgMVAgMDFgIBAh4BAheABQJCPGIY
    AhkBAAoJEATp8Ia/kHH+3c4An3RGo6JduyjPTZFh0eCBezNgzxdnAJsGRRE6ERs8
    nyORm56bvSgRTw9VKLQjSGFqaW11IFVNRU1PVE8gPHVtZUBqcC5GcmVlQlNELm9y
    Zz6IXgQTEQIAHgUCQjxgkwIbAwYLCQgHAwIDFQIDAxYCAQIeAQIXgAAKCRAE6fCG
    v5Bx/iTtAKC+8mS7jAYMz3QsCe4dJeIPaJcFGQCcDQITgNpJcUmBZ5u21Jotvp1X
    T/y5Ag0EQjksbhAIAP1+LeYSauTBi/ST3343W0lkqYr6HgZMNS7RtoCGFWcjfiYU
    99ybRgr0XwH5yJrn6JASp27f/ve5cwt/7ERLZ7flcfFi53AekeuRjFDkThLx2N4I
    s29ZQZsYubdOKHapnMflnFE3PQfkB7Og1MoFxkp0kOAEP/rOyuLMc9CbUaWczxWo
    FS8bmZDJ5ZNzAQ2vQFu5ExxomOENApy3ZCm/Z6MU5YJ2trsP3dkYStyG+1pT4NsU
    R4+TIbQfFzwZjowiC5w8rM4FIV4FMQ+3YvIEVkT+M/93hLGakh5tQENsitj7JsrC
    VA2mkomV4Hnjj94YCxUiPu59kHgiKGgXbdnceX8AAwUIALF64I+guwCaHbjoRPVg
    HWRuU2NzuKN93xii+xyIpImf+S30aTbFy0D6ZTQRSCs34oVNMSkUzySVcVn9DTG5
    +KVCHCOnGMH/Iv3dRWlHZ3HX6Gvr/cRyhDfWYDEec7KCDGT7Q87UbmTZ9cmOh+/h
    M4ND0NoYU6/EaaOqyRH4D8/LAeg0YsEpilClYWhlXT7VS7noOBf1JuB9Q0nOGycR
    DstkHWJf5om82lH5FzAuh9kEAduv8JdBdsMh3Zh4N80tCV7OyBQFWHV0UgjARSLY
    msEuelzzaFcfR2vIrmpYIElr6JzHGBiux0XK3Qk98kexGRdbrDFpaxbrsjs1/8m9
    MVOISQQYEQIACQUCQjksbgIbDAAKCRAE6fCGv5Bx/mRWAKCAQQ67iDvQq08n+bHa
    QkK3EDOmqACfZmJe9AepCkPAUkvp0ketnOPBXAE=
    =QZ8N
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.312. Stephan Uphoff `<ups@FreeBSD.org>`

    pub  2048R/D684B04A 2004-10-06 Stephan Uphoff <ups@freebsd.org>
         Key fingerprint = B5D2 04AE CA8F 7055 7474  3C85 F908 7F55 D684 B04A
    uid                            Stephan Uphoff <ups@tree.com>
    sub  2048R/A15F921B 2004-10-06

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    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
    =93PR
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.313. Jacques Vidrine `<nectar@FreeBSD.org>`

    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-----

### D.3.314. Alberto Villa `<avilla@FreeBSD.org>`

    pub   1024R/44350A8B 2010-01-24
          Key fingerprint = F740 CE4E EDDD DA9B 4A1B  1445 DF18 82EA 4435 0A8B
    uid                  Alberto Villa <avilla@FreeBSD.org>
    sub   1024R/F7C8254C 2010-01-24

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    mI0ES1vM6gEEAMBJJFEzIesoeff/XaJ5baSLJwdZ87H26x51KPodOiCK4pvhSOvA
    1Cl+/moYBVOqhqzfNw2pX+EPWJpwRHToqZMba0rxALNhRaQgQAVk29V3bqsQhwBS
    yfwQirouhXGNaUGbdYh4ay0ZoyY0FUtKsj4GxhpWdHlKrjsHAliHM6U3ABEBAAG0
    IkFsYmVydG8gVmlsbGEgPGF2aWxsYUBGcmVlQlNELm9yZz6IuAQTAQIAIgUCS1vM
    6gIbAwYLCQgHAwIGFQgCCQoLBBYCAwECHgECF4AACgkQ3xiC6kQ1CoucYwP+N72o
    Hafp9Oj0004/rsgDKSLSfru89cusN7G7FyBYICjFQXJfwRAr3Mqo+4JwMVHPbQ6z
    ReRiMKN362M3e2cA5GMhtYqDTq7FSJzsWBUyfMhJmKOcP5rtQlm7sIt+XFGvOxRx
    6HXoduhiDmqmDUrxVxBYQTU5qGqkOXsIA/lITJ+4jQRLW8zqAQQA2HR/E+7JRr4r
    6WkpHb5WVe8w6ipuOpVRh9KjLOeDtxlCCuZ61asE6dVTYxhLrxhmzXcz7WQLJb++
    89DaQj5bSAFy3BfujeO+HUik9qB9Dv+t6eNh8SlPByxObyNx+NNNP6k5xiyx0cMC
    AMfUJbbZ91SN4gh+21yf2VqlS5uAlWUAEQEAAYifBBgBAgAJBQJLW8zqAhsMAAoJ
    EN8YgupENQqLLXUD/3qVTKnHAvQqu7EcdV4SEMbXtxHauN6tushMAbTiSI1tCz+3
    2nThTiXvLp4mQfwdH8uTQL+n3Yf3xZATAXe6Y/7Q+TvUp/Em3/5QOzdTEHirQDDe
    Cpks3VK9i/ud2nOl/TD1sy/5ad2aBKE2sAYgtILxAsdnxh4Cn4oBYc8Obg0N
    =UkFd
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.315. Nicola Vitale `<nivit@FreeBSD.org>`

    pub   1024D/F11699E5 2006-12-05
          Key fingerprint = 2C17 C591 2C6D 82BD F3DB  F1BF 8FC9 6763 F116 99E5
    uid                  Nicola Vitale (Public key for nivit@FreeBSD.org) <nivit@FreeBSD.org>
    sub   2048g/4C90805D 2006-12-05

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    mQGiBEV1n44RBADfkt4OUwHA7c8DbobkvhyXCRHC6w0NDQER6Q/uAE68nvEgPcdO
    dAvGXUpNNWFXbKEnIc7ANCm0V7F2VDfwANAzePY1wBfVM8UQBLuSV2WIAfs1beLl
    MZzO7sth2oeMuF7l7WwM31qwgRLTOOzXs7zG+m2uh1c1nMTKG9wgQ4rz8wCgmT5i
    oJ25GpzaM0kgX3HQWP/MkFMEAK5GUSesXqHc37fEnO4WVvdB5afc4RTDJzvniXBm
    nXkHin6uAWw4HSJOEOLPv8MtRZuIxOfznukjBpHnz19R0fEvWdRKzmDoc3Yn0BW+
    FdszOxY9Nt+LtY3/ZdcbgAtWu662/t3SvgWULgCQ7bvi0Nu75Zn3nui4j2uU5fNf
    6v4KA/9x8FXQ18BPO7EuYe5ewQwVaGWKvzrMmz8NsiZuRs4oxWXL1x0nSCumetKA
    03UHxGAQli+vuMNDcDXg5zpaGN7hIqS1N1fR7XEouvkgTDTUPsjjQUdmQ98lnEBf
    URB5D+qDq8nq7H9R/4rOmxKdiA8xmBzadnolJ69Iz9nyJ4mvb7RETmljb2xhIFZp
    dGFsZSAoUHVibGljIGtleSBmb3Igbml2aXRARnJlZUJTRC5vcmcpIDxuaXZpdEBG
    cmVlQlNELm9yZz6IXwQTEQIAIAUCRXWfjgIbAwYLCQgHAwIEFQIIAwQWAgMBAh4B
    AheAAAoJEI/JZ2PxFpnlNbMAoJWh5Yg1lOayXo3b8seKn09ers2UAJQLxlE9lS9G
    qzU9FITOFNllI+duuQINBEV1n5MQCADqyPgr+kjhfCz/2N8y3FmWr4CSE0b1S7rH
    i7fy27u0QcNK3vN/l0Vbj6dsacfP9DC3+aGw3W8uY8LK8q72AIAwLh1aoYtJfzMs
    v1kqY4shMAANF55VgcAb7lyHpSymFraVZCai0nzNyccjJtSNQgC9s1BkXeUrRTS2
    su078DDYVgbXs1S14PkZOyrZ+0R4y4M6QKvD8Th46K+mZMaXdcn+wlIvOISFQppP
    1htkyCnHexg5L6PE/VsdobiCyZ2zNKd+d6GUillVuO2Qpkq1dlLTPtRgFMnpjhRi
    L0+a84b8rs6TE9g/ZLKNOmfmbGTTk3u4vQ7u6Mky6GCGO8W8WHW7AAMFCAC9NGWK
    RU0l0hfHY3kjLll9Ygcnt42nAj4ipmnzMp0jAPV2AgShnzDJLZ1KHmJcUfby4I6c
    HDKrI5lt6B8OD1hAWbHaAJ1Js1vfiwGDqisra5ZvkfJQMY1CDv1orXeM/ZnWzLSp
    +PqVXA30ei/NtngXFYlw+BJHnbB18eKw25jT6n72Ls0T9xZscwgseAmSKZsrb6M+
    N0tjZkkueWRbvrFum1i8Hf+VYhCgRkQFcTtEEo/Ulb6GRDXaFLPZzklfQMvjgWel
    yfWpv5Qg6knJFGbQyZrJ/jNBAi7aM8XAuNhhjC1oHVyNlIRM1V+1MybvoheREjMY
    qcdWjs5YCrg43SWAiEkEGBECAAkFAkV1n5MCGwwACgkQj8lnY/EWmeXXJQCfW3pc
    YuXRQYv5d2NC5AfgnvxmjnEAmgPFcYvU/gGprH9Hz/bvXp3KrT7M
    =NcNR
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.316. Ivan Voras `<ivoras@FreeBSD.org>`

    pub   1024D/569C05C8 2000-05-24
          Key fingerprint = AB9A A555 C47C B61D BF83  154C 95D9 C041 569C 05C8
    uid                  Ivan Voras <ivoras@fer.hr>
    uid                  Ivan Voras <ivan.voras@fer.hr>
    uid                  Ivan Voras <ivoras@geri.cc.fer.hr>
    uid                  [jpeg image of size 4567]
    uid                  Ivan Voras <ivoras@sharanet.org>
    uid                  Ivan Voras <ivoras@gmail.com>
    uid                  Ivan Voras <ivoras@yahoo.com>
    uid                  Ivan Voras <ivoras@freebsd.org>
    uid                  Ivan Voras <ivan.voras@zg.t-com.hr>
    sub   1536g/149FDD60 2000-05-24

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    mQGiBDkrvE4RBADgl43F4E9yq9uGfw/sc7ulsKvz64g8Sj4XjtG2K1VoEzJ+eKZB
    rgaH//pbAH7ULpV89oVpvBbvVkIlM6WSrCOWydTlvFGZgRHL10nl9FxFyuX+yykJ
    Qw3I/zhpE7TbowDwEivNtBt3p+PE6xRCpvPA++BhMs3RADvDXSeq1a1LGQCg/wUn
    1cZgybe/i0KEgOLjSYIcfWcD/05bn0WkRXUq3evT7wYZ/zi+HEQsCUV/LOPY7Zom
    sDkKTuLKlNXx8xk4EcIb1LOqmcI8qct6CLEhGfa9ek0KrxpaFkR/1fj5zZWlLbxj
    UREeaVXt7ESlawmHTwVwRAmyMDAUulxDz7MgYcJjfi0RICHCsEeopgyo6Mm7z5SH
    MKqIA/0er6aLclMRbE8+AW+4TYFyYYmlc8ek7tz3KTCGrustE4ZJXSGt9pA5puiS
    +KvlWEm7XjG5H8xUJGQuhcv6L1sY0U+1LLFZOoU9l06Rbi5QaR/J7beRqKhitLIt
    5/43PpQZ3tmdHjvIRX1EfPV3M/QS/yB2xsiJu2nChutM0n6hB7QaSXZhbiBWb3Jh
    cyA8aXZvcmFzQGZlci5ocj6ISQQQEQIACQUCPBddlQIZAQAKCRCV2cBBVpwFyOnX
    AKDsmTv7Unk0LeLnzrNHKrM2Cd00RwCffqq2vBc8Okr6cu19JJRqcRLlC+uIRgQQ
    EQIABgUCRh9mWQAKCRBtO67R6hYNC70GAJ96UzOIyYn0HMCpE3IvUAKfmPXBjQCd
    FM1iFq5IKcHYW7Chf2RBy40NtZa0IUl2YW4gVm9yYXMgPGl2b3Jhc0BmbHkuY2Mu
    ZmVyLmhyPohJBBARAgAJBQI8F10WAhkAAAoJEJXZwEFWnAXIx+8AoJYexih6EYDs
    iVst13lTI61claABAJ0WRoRfejnHcgBDidpt3P86xOv5iYhJBDARAgAJBQJErs38
    Ah0AAAoJEJXZwEFWnAXI4FQAnjATnWkW6jqhS4B0q0Fyu/PSomVjAKDX3n5peLqe
    n7copp3k3fvNTD8AXbQeSXZhbiBWb3JhcyA8aXZhbi52b3Jhc0BmZXIuaHI+iEYE
    EBECAAYFAjsrwhwACgkQldnAQVacBcj8hACeOJt1Oqq6erPIEh9smx3Ri3TUHwUA
    nAxb1miM4siElBik0NbqaRJUqBtriEYEEBECAAYFAkYfZl0ACgkQbTuu0eoWDQsp
    VACgkQr2lvyRsMrLz9Kt2FS4MOgZpeoAn3B32Z1QNnkT81A39SS21I5i6b2ntCJJ
    dmFuIFZvcmFzIDxpdm9yYXNAZ2VyaS5jYy5mZXIuaHI+iEYEEBECAAYFAjsrwnoA
    CgkQldnAQVacBcjnYACeMY0ipykUA4WTTVYsjE8H89r85JkAoKwO6L6QUprO5qSB
    me6M6QldoV2RiEYEEBECAAYFAkYfZl0ACgkQbTuu0eoWDQvFKQCfbWH3vb6MRQx5
    lAxLQuUEDPt0EAYAn0UX3UduAYZMR/dAsXSVooSOWDP+0dEt/wAAEegBEAABAQAA
    AAAAAAAAAAAAAP/Y/+AAEEpGSUYAAQEAAAEAAQAA/9sAQwAKBwcIBwYKCAgICwoK
    Cw4YEA4NDQ4dFRYRGCMfJSQiHyIhJis3LyYpNCkhIjBBMTQ5Oz4+PiUuRElDPEg3
    PT47/9sAQwEKCwsODQ4cEBAcOygiKDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7
    Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7/8AAEQgAkAB4AwEiAAIRAQMRAf/EAB8A
    AAEFAQEBAQEBAAAAAAAAAAABAgMEBQYHCAkKC//EALUQAAIBAwMCBAMFBQQEAAAB
    fQECAwAEEQUSITFBBhNRYQcicRQygZGhCCNCscEVUtHwJDNicoIJChYXGBkaJSYn
    KCkqNDU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SFhoeI
    iYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2drh
    4uPk5ebn6Onq8fLz9PX29/j5+v/EAB8BAAMBAQEBAQEBAQEAAAAAAAABAgMEBQYH
    CAkKC//EALURAAIBAgQEAwQHBQQEAAECdwABAgMRBAUhMQYSQVEHYXETIjKBCBRC
    kaGxwQkjM1LwFWJy0QoWJDThJfEXGBkaJicoKSo1Njc4OTpDREVGR0hJSlNUVVZX
    WFlaY2RlZmdoaWpzdHV2d3h5eoKDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKz
    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
    =9LWk
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.317. Stefan Walter `<stefan@FreeBSD.org>`

    pub   3072R/12B9E0B3 2003-03-06
          Key fingerprint = 85D8 6A49 22C7 6CD9 B011  5D6A 5691 111B 12B9 E0B3
    uid                  Stefan Walter <stefan@freebsd.org>
    uid                  Stefan Walter <sw@gegenunendlich.de>
    sub   3072R/6D35457A 2003-03-06

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    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
    Sjk9E6QR
    =iXXA
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.318. Kai Wang `<kaiw@FreeBSD.org>`

    pub   1024D/AEB910EB 2006-09-27
          Key fingerprint = 3534 10A3 F143 B760 EF3E  BEDF 8509 6A06 AEB9 10EB
    uid                  Kai Wang <kaiw@FreeBSD.org>
    uid                  Kai Wang <kaiw@student.chalmers.se>
    uid                  Kai Wang <kaiwang27@gmail.com>
    uid                  Kai Wang <kaiw27@gmail.com>
    sub   2048g/1D5AA4DD 2006-09-27

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    mQGiBEUZ6yURBAD9qQ4Pz+LEm54dEtrDII566La8mVjMpZfp/xcPSY4Jsj9Rin4o
    XiJ4cevwTiAr7KBGbO4uJ/hRwOQMlql8vzwO+Bc66zLxwQfGpLniTvdEnsRmiwXn
    MOlc6Kd1SwxOk4rV/B6p1iJLZ6sXQPx9IlDskyJ0OhIYKBaYx4sjN4W3wwCg5QB7
    QSrzEldBYnrxVFLHfmQO6ikD/3sW06q+gAdSFwFCFEZmE0kaCVzQUrTwnyKWlRPx
    Fvk0PftHhbofybxiv3OFp/zHZMHRlcVqcYf7WRLww+QXRgFh6x5kkOoAFMVJzhYH
    xKcXSnqPph6M4H1GvRVo4G1FkdqEZ5z2hRwiryugSfuzRRHil4ewpZQeB4am+Llu
    H3UeA/wO4eqG62W13pRephwYO0ramQai+WV34z+DUGoKY2EMpsbE6+J85aiySvor
    BTfWq1Lh5Mg3RYGWLmLay+GDQE2YIc1EUrCgHlUpB+vB+3pqPq+5ssOixktylJna
    R40BAqOP/gO/sSBnCZpI9nNqtKDpONfS8xwDArEKaoqxxphD2LQjS2FpIFdhbmcg
    PGthaXdAc3R1ZGVudC5jaGFsbWVycy5zZT6IYAQTEQIAIAUCRgD96wIbAwYLCQgH
    AwIEFQIIAwQWAgMBAh4BAheAAAoJEIUJagauuRDrMosAoIPJziIJtz3GBALxa4SG
    nIUGNliZAKC8yMp144zGxaumG1n4HZLNdaMwVLQeS2FpIFdhbmcgPGthaXdhbmcy
    N0BnbWFpbC5jb20+iGAEExECACAFAkUZ6yUCGwMGCwkIBwMCBBUCCAMEFgIDAQIe
    AQIXgAAKCRCFCWoGrrkQ69oVAJ9gWVClx+v3Hhvw2AjOyFaDT4hpnwCeP2ppw3M2
    nNkuXRtTI3uY+jwCSmm0G0thaSBXYW5nIDxrYWl3MjdAZ21haWwuY29tPohgBBMR
    AgAgBQJGAP2+AhsDBgsJCAcDAgQVAggDBBYCAwECHgECF4AACgkQhQlqBq65EOtj
    DQCfZOhljB+TJQncoZWMf/CvbT5I/ZYAnimgyJtouIZGXSTqU172qsr721aTtBtL
    YWkgV2FuZyA8a2Fpd0BGcmVlQlNELm9yZz6IYAQTEQIAIAUCRvwuFAIbAwYLCQgH
    AwIEFQIIAwQWAgMBAh4BAheAAAoJEIUJagauuRDr8iYAn0PbQX8TzGfG4VJkI/W1
    9Y2lQruoAJ4jtv0WxAV5CxIbBccVErg9rEdBdLkCDQRFGeswEAgA3/ArJRAwAXv5
    AOSioc12EGWSX9bpYWfcODoJL5ggaBLQKE8SiA+evSXgvfW9AD8S9T5ltLSAYXUb
    pbIWw/Nnp7w9+hC81fQI7mHoDe7oSsJa1mnyzibnqRczxy3V23cjqPLeZiRr3AkD
    mhBkONQron7mk23x1lTsHCgFmxBZWxNdnkIprmN37YkiUB0ky3/x3s7BVdat3hqQ
    ot3OF3i/6ugqW3qH8+Z3uEpWZr2yx5KwEJbUQNvgQqONlZsMDCp03jJuPIgnR/kA
    iRFIUmGLocgOqfL3JL+l7MflVQFFlzZNQqKK+WK2kXOc/C31AsVY0YJ4CsjTQyBa
    775LqpnTtwADBQf/WOJ8AztEUxh75zndmMV6tsUhq8K+cfaWR0e96zOP0eiO5IRW
    Z4muIXIBC7FxgyR628XAPm3a/IbMpD0Usure0MIQkmaza5ktGXG03KCpQYYhveJr
    3I69jJHUM7Vvrcl+a9wY3Ni5UgIfmWQzdpsVW707/SjZDcD9e3MWhASOThKb1wIM
    II7zgKICwGBr4VSwNVdikdHJ2wNhziuwJQHFxQs8rsXTLzHeJcWJfpZ1bi1P4Csw
    lsWosIFeKESAHoPsbpHHcS46cd6CXbOTLkonsUDqW5DZoN959MI8txkh54heZdXv
    al72Ksb969EL5ef//lDo/ex8aaVYaYwiI0H3VYhJBBgRAgAJBQJFGeswAhsMAAoJ
    EIUJagauuRDrkbkAoIe8dlhn35cPrbpcy4AtUGFlR0HTAJ96MT6WOnFqjfJJxo97
    Hps0V71KXA==
    =v7/U
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.319. Adam Weinberger `<adamw@FreeBSD.org>`

    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-----

### D.3.320. Peter Wemm `<peter@FreeBSD.org>`

    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-----

### D.3.321. Nathan Whitehorn `<nwhitehorn@FreeBSD.org>`

    pub   1024D/FC118258 2008-07-03
          Key fingerprint = A399 BEA0 8D2B 63B3 47B5  056D 8513 5B96 FC11 8258
    uid                  Nathan Whitehorn <nwhitehorn@freebsd.org>
    uid                  Nathan Whitehorn <nwhitehorn@icecube.wisc.edu>
    uid                  Nathan Whitehorn <nwhitehorn@physics.wisc.edu>
    uid                  Nathan Whitehorn <whitehorn@wisc.edu>
    sub   2048g/EDB55363 2008-07-03

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    mQGiBEhs+ZMRBACu6CWtdlJ/GkGO4O6epy4SKwxV2s64od5j3ZG/+CkdXfHVnvDf
    NAdvytDwRPjFdQtwDmLTcotdm9akMpmoI+nuTDOC/wyoojh3NlTp/YmzSLntBoaQ
    W2uwp8oAW4dszTMptgb3Dpce17cHQcCuQ8Ql9tnZlFOvm4XCP00y7pmGrwCg65cu
    0wxbDYVp2fpPIG0D67q03j8D/01g68qU+JQqCZtCTDSJ7tG4w5zlOH6Hu7Q9wRhb
    XBDKX6fiO9CiRDorgi54DoKqjQoHWnFXrKBcAughLEjle5BSZ+Z+eu/tfMwDEfhL
    FMMPuvT9BVG/nukn4ufmk8BqPbw5PGalYGbdJvvjbyWhVIu/dexqGe9mT3DD7gk0
    WZArA/95nvE5+LRH31Jugq1GJ7cqjJyd/IPQC96z7JXdme7oPQ8IYDsLjsT982MO
    8WvwNbQPnRrj3Sgjp7EcuaFt/J66P7KvpU1lQKJDfZgk1LTL0Nm8wzLj2tXSwZWg
    tSOZewMItr2yKwBlpGDsS5K7CCpbocsndrI5DOPEzuYr7y+56rQuTmF0aGFuIFdo
    aXRlaG9ybiA8bndoaXRlaG9ybkBpY2VjdWJlLndpc2MuZWR1PohgBBMRAgAgBQJI
    bPmTAhsDBgsJCAcDAgQVAggDBBYCAwECHgECF4AACgkQhRNblvwRglgkxwCgmC82
    iM6zfYaJwcFsqETyxS+9Vv4AoJCemsKBmBQiN7o5K84/DuaCZTWutC5OYXRoYW4g
    V2hpdGVob3JuIDxud2hpdGVob3JuQHBoeXNpY3Mud2lzYy5lZHU+iGAEExECACAF
    Akhs+tgCGwMGCwkIBwMCBBUCCAMEFgIDAQIeAQIXgAAKCRCFE1uW/BGCWCFSAJwL
    f5HwF8PEUIEo/25Dwr72JCW6DwCeIm2wQjiyXl+wy1QIP5eX5Emy+Pa0JU5hdGhh
    biBXaGl0ZWhvcm4gPHdoaXRlaG9ybkB3aXNjLmVkdT6IYAQTEQIAIAUCSGz66wIb
    AwYLCQgHAwIEFQIIAwQWAgMBAh4BAheAAAoJEIUTW5b8EYJY+GsAoINx6fjsHpdy
    JT0UWgiIr48kEhtcAKDetW0OzAVCF8HmXMHWR/zyjVqHSLQpTmF0aGFuIFdoaXRl
    aG9ybiA8bndoaXRlaG9ybkBmcmVlYnNkLm9yZz6IYAQTEQIAIAUCSGz7AQIbAwYL
    CQgHAwIEFQIIAwQWAgMBAh4BAheAAAoJEIUTW5b8EYJYgiQAoM04WRCQ0LI5L78O
    d4VFwQSiUiDtAJ43eEJzvlPmvR2geTEaB6lJGNrBMrkCDQRIbPmTEAgAypfp7UhW
    ZPvGO8EfI90WkCclB/H7hSfpTgcZfQafWis6YllJ/EC+orAdQ79I/vdp5x5as6VS
    HsvN/IXXxoL30uHj2PTFV4qi0Tx8YMcw3xUK+wskQ0HonWsmZZvqHBSMbh0+JpXg
    75ZHXxOg/kpaFIjYz7cML9jSFBxD1S1/kmHqFnJISJ5wFAeXJj1loPfTbu6x5NB5
    BGbR/ysii9FidJUAXPk2EviD82oltntcNrUJS29ghFwM3FO/sZFdStQppNTgDnwO
    mUFyYxpwzG8vMjWYl3DWlc8ozXtKRotGzzsXuwUvdnC9e9MRX8xsF7x1vMrV5j6+
    5SGMnz6KvRzRIwADBQgAhDEuTI6+glgo0Kale3FKlKaOdz9R26uTCWVlK32O98jp
    mrdCfG1u1cknYrLlIVZIlrTgu3WqjRS9j23z8mIKQNW6wudu+/50/N7wtlV8k/s3
    DKmoUjcXH1b7vPxxnhFbtg41COFOUziIyXkupHEOJeaF+Sz4EEi8nXMKBEoGFlYD
    rh61rOFsfrf24E3dIwdLyjoTify8trdL5pgug27pHPMgXXx5cjLooq73VFvzlqCA
    3zFyypgED7UsYMH9NjmyLlA77gK4gfuAlGXwEWyh99SVksrvvHqntHyg9p+HdCQJ
    GyYwRMNUXTfdSn4cWVc+Qip1jpgdH/bbIwZeTIMaIYhJBBgRAgAJBQJIbPmTAhsM
    AAoJEIUTW5b8EYJYA0wAoJ5oqyCt4TZRVfofTeTGcm8K+a8lAJ0YGUPg2rEaTf06
    QaoupCN+daK2wQ==
    =hP6F
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.322. Martin Wilke `<miwi@FreeBSD.org>`

    pub   1024D/B1E6FCE9 2009-01-31
          Key fingerprint = C022 7D60 F598 8188 2635  0F6E 74B2 4884 B1E6 FCE9
    uid                  Martin Wilke <miwi@FreeBSD.org>
    sub   4096g/096DA69D 2009-01-31

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    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
    =S3Qn
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.323. Nate Williams `<nate@FreeBSD.org>`

    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-----

### D.3.324. Steve Wills `<swills@FreeBSD.org>`

    pub   2048R/207B1BA1 2010-09-02 [expires: 2011-09-02]
          Key fingerprint = 98FA 414A 5C2A 0EF9 CFD0  AD0D F5CF 62B3 207B 1BA1
    uid                  Steve Wills <swills@freebsd.org>
    uid                  Steve Wills <steve@mouf.net>
    sub   2048R/E9B254FD 2010-09-02 [expires: 2011-09-02]

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    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
    eYhPE7EaCOyuAA==
    =7zxq
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.325. Thomas Wintergerst `<twinterg@FreeBSD.org>`

    pub   1024D/C45CB978 2006-01-08
          Key fingerprint = 04EE 8114 7C6D 22CE CDC8  D7F8 112D 01DB C45C B978
    uid                  Thomas Wintergerst <twinterg@gmx.de>
    uid                  Thomas Wintergerst <twinterg@freebsd.org>
    uid                  Thomas Wintergerst
    uid                  Thomas Wintergerst <thomas.wintergerst@nord-com.net>
    uid                  Thomas Wintergerst <thomas.wintergerst@materna.de>
    sub   2048g/3BEBEF8A 2006-01-08
    sub   1024D/8F631374 2006-01-08
    sub   2048g/34F631DC 2006-01-08

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    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
    B5lKgt0VCQCfdhlL5hMDBDoaMdMtBZXFL4/Vn10=
    =ArNG
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.326. Garrett Wollman `<wollman@FreeBSD.org>`

    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-----

### D.3.327. Jörg Wunsch `<joerg@FreeBSD.org>`

    pub  1024D/69A85873 2001-12-11 Joerg Wunsch <j@uriah.heep.sax.de>
         Key fingerprint = 5E84 F980 C3CA FD4B B584  1070 F48C A81B 69A8 5873
    pub  1024D/69A85873 2001-12-11 Joerg Wunsch <j@uriah.heep.sax.de>
    uid                            Joerg Wunsch <joerg_wunsch@interface-systems.de>
    uid                            Joerg Wunsch <joerg@FreeBSD.org>
    uid                            Joerg Wunsch <j@ida.interface-business.de>
    sub  1024g/21DC9924 2001-12-11

    -----BEGIN PGP PUBLIC KEY BLOCK-----
    Version: GnuPG v1.2.6 (FreeBSD)

    mQGiBDwWI2kRBADM4C4YlBiLozC/bZDedK12BMLyfnv9yOppj/doC1cOEaE+xZNQ
    7/aDZfhi7FNQzt+ehh52DLihV91G7gOsACtUk3gLR8G+0q6U76dBY/gvAGzCYUu0
    bJwlQCcPMysF4sNEwvsuct1fIVAHa+660X6Q+WI+eADIwZyN8wR1GrEqswCg3uGM
    xm85EYtxPFx7tyxfA8q/d+MD/i+SPmt9xEZ/KZOMbQVPw/vYmeWW4lVZGG2HLKmH
    J2FiAW4YjryoNqhpbbqlJigxf6staqgnQL4uuzBrr6v+OIjbljTHA7fs0WA4mtTX
    u7YcAKPXBTztw/O+f3tZz08Ep+AHJ3Q+pTbbRQZpikGGdOpjfLcEyAQBh1rNA3zl
    /MiLA/9IL7yfpyiA6cjX+MuUCqlqbPW2awQOCsmDBOcpXdOYC+MsBUhlT7IcFtQd
    BUxUiqdIKlRtIT4l4LnqzhL2HASv6Zzc06zGS+tlG6BlpCGlSxz8fp4asbTYdJnp
    d7lqme75jOUNjygal5lxJApincaLjv+4IaNUWCC5RjQuRsd3t7QwSm9lcmcgV3Vu
    c2NoIDxqb2VyZ193dW5zY2hAaW50ZXJmYWNlLXN5c3RlbXMuZGU+iF8EExECAB8C
    GwMCHgECF4AFAkGkelUHCwkIBwMCAQMVAgMDFgIBAAoJEPSMqBtpqFhz3+0An1WU
    SyLW5PtVk8AN2wZOZoIbdpWJAJ9UZjNCICVixY7lc+me/lfu7+nCsIhzBBARAgAz
    BQJB4lonBYMB4TOAJhpodHRwOi8vd3d3LmNhY2VydC5vcmcvaW5kZXgucGhwP2lk
    PTEwAAoJENK7DQFl0P1Yu+kAn27zpfl6Angb/DIsaV6srJ6SB/hmAJoDHPErifuG
    2L4KGF3NcagZRoUl77QgSm9lcmcgV3Vuc2NoIDxqb2VyZ0BGcmVlQlNELm9yZz6I
    XwQTEQIAHwIbAwIeAQIXgAUCQaR6QgcLCQgHAwIBAxUCAwMWAgEACgkQ9IyoG2mo
    WHNIRwCgnTUFJ1krhK0XISLLossxl68fS0MAoJEjQcOZTKtIp8S4Dqo7/VJYUVKF
    iHMEEBECADMFAkHiWicFgwHhM4AmGmh0dHA6Ly93d3cuY2FjZXJ0Lm9yZy9pbmRl
    eC5waHA/aWQ9MTAACgkQ0rsNAWXQ/VjuVACeKGyJ5VTFr26fxsDgqrlfXjksoBMA
    mwRwLuhmlB2Pn+40rvnL2pletnCFtCJKb2VyZyBXdW5zY2ggPGpAdXJpYWguaGVl
    cC5zYXguZGU+iF8EExECAB8CF4AHCwkIBwMCAQMVAgMDFgIBAh4BBQJBpHqjAhkB
    AAoJEPSMqBtpqFhzMlgAnigTVSmOOtxzyVwJaZDDxeg9aQB6AJ9rnepmNfxu7F16
    wiaVo6US+2p0SohGBBARAgAGBQI8WsL5AAoJEHninGCwBj/nbsMAn1LuO73ckkBj
    VxG/Qzy6khbyelOHAJ43L5JMsDGyhodaCwZ/Xc5AKAm+IIhGBBARAgAGBQI8WsMg
    AAoJEMYEPFZyB3E3MPsAn2mgRnF3H7gjW814bjWgoWFBmPdEAJ9FQuryfHAGylj2
    lZ5R68k0JWEY+YicBBMBAQAGBQI9JF/ZAAoJEHW7bjh2o/ex+jkD/RNY+vvEo2NW
    RcKfCV53bYQaYInBBaMyLHjulxrDrUPfTjW6BzFMlEf4h+hlz2bV+uVBjhiJ2bFp
    qL2vE6HEHzkloVYfk+4E8NDTVMPrUjX/Nd8Y2dsfAWPzx3tvdHZiyzrEQhDtU/fJ
    gBOds8eKhxIyjwxTD5smbbqpJyWuh7kZiEYEExECAAYFAj0kZOUACgkQYQrfI5Z2
    HYyemACfRtNZdqGCp6FSlz4EAtEys+B4w5AAnRmk9vN+kS4hPBU9a6F5GgZCMpti
    iEYEEBECAAYFAj00IUMACgkQah06FlSR5oNAMACeJP8yYszO9wkRxZKu7fovNzgk
    +bIAoMQBBw7DtYtj/KzJKRXmoX277zRriEYEExECAAYFAj/GOYYACgkQwAfeuzCC
    U0VBbACgs3OzHeay5aoOwjJutpcFBx/yKMkAn16kZ+r522qJWbHMJuB3ukiWxY0d
    iEYEExECAAYFAkGGExoACgkQFbyd9tifJxTfsQCeLNVa4Ns4iq42JGfwVZvb5gRt
    YrIAni02UYsHBVESxl99372haKmgH4HwiEYEEhECAAYFAkGGJGkACgkQJHERf6lR
    AsE4kwCgzzgFZvvk4tdr6xM7s/p1gmgBosEAoMA6Ib7qfoOuSrrlUBvMte33EyNL
    iEYEExECAAYFAkGU+XwACgkQkgpJOuNBnRoxuQCfTKFHVPqSutt6CqKpsLGWeF4f
    Z7AAnAxEWkhRLMAk6EYKcx1LRTmN1B9giFcEExECABcFAjwWI2kFCwcKAwQDFQMC
    AxYCAQIXgAAKCRD0jKgbaahYc2QDAJ91rDkVGk75blkHwV92zSeUGbFFAgCffenL
    K+whbH3KD0+rhLtOTkv7AjyInAQTAQIABgUCQYyQfgAKCRAff6kIA1j8vfC1A/4s
    yV9FHODYYlko5XnMZG5ZQ0erCpF+kYt70XxzsiNSWDYUXX2mtNniJdWMBBzg9wL8
    1CBt+5koVclllxeWJmYIemXEXcdC1o+aQ10b+JEUQoYDuEFfLTAV/zrMhBCP2qIh
    Z/lpqdQu/vTCgK0FGA1HZ48i/q7v7tE57nS4A+AT/YhzBBARAgAzBQJB4lonBYMB
    4TOAJhpodHRwOi8vd3d3LmNhY2VydC5vcmcvaW5kZXgucGhwP2lkPTEwAAoJENK7
    DQFl0P1YqjgAoJuop2gK1sXFJsd7XhVtRCzXK70dAJ4zywlp9erDWgofGE7Kfuzn
    vkFheLQqSm9lcmcgV3Vuc2NoIDxqQGlkYS5pbnRlcmZhY2UtYnVzaW5lc3MuZGU+
    iF8EExECAB8CGwMCHgECF4AFAkGkelUHCwkIBwMCAQMVAgMDFgIBAAoJEPSMqBtp
    qFhzgrQAnjpusj+cjM07WYmSXgjY8QXUWmkUAKDJN9He1N83pEewpJ4p7HnxJeSk
    SIhzBBARAgAzBQJB4lonBYMB4TOAJhpodHRwOi8vd3d3LmNhY2VydC5vcmcvaW5k
    ZXgucGhwP2lkPTEwAAoJENK7DQFl0P1YMUMAnAzE1fKsKB3GP5bN/S+qkhv+Sqzc
    AJ9km5QT16De3Ramxa8XImxg+rKpNLkBDQQ8FiNuEAQAnbGJUHM83j9CulgGV2kj
    OB2n/3t0sRM+d+tZijBrhsOqSv2c4ld2rPaWyHpwF40ZvgAqYw/XtbTS32kS+DOO
    4zHQM5yI2OYf68TaYU6TQrApCYJVPmZcQZRCGl54RF63gPa6GmteYoEUnA03leyQ
    nWzV69A6xR2vwbfXo1eq8TcAAwUD/3/ITIMjlj8eJDzGHPRaBsoYspKF6nKCvBn3
    rfduyZm7b+yknZKpCYDr/E3jvwM2CfnMJgGXH6xKnL/Nn10Spah2WjDvZ7Mppflv
    BWHwL3J+qz4alKtnZDFg+PQnkZCafQI1YOU9Faduttb02fxWp6WKq60RmVbnW3rW
    Ovi1AB+liEYEGBECAAYFAjwWI24ACgkQ9IyoG2moWHPQWQCdGAwIL50YjOPOsZVl
    623Rq5N193sAoIx+WM012DbKtxLlfiAYHjoyGvA9
    =SfCl
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.328. David Xu `<davidxu@FreeBSD.org>`

    pub   1024D/48F2BDAB 2006-07-13 [expires: 2009-07-12]
          Key fingerprint = 7182 434F 8809 A4AF 9AE8  F1B5 12F6 3390 48F2 BDAB
    uid                  David Xu <davidxu@freebsd.org>
    sub   4096g/ED7DB38A 2006-07-13 [expires: 2009-07-12]

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    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
    =jyox
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.329. Maksim Yevmenkin `<emax@FreeBSD.org>`

    pub  1024D/F050D2DD 2003-10-01 Maksim Yevmenkin <m_evmenkin@yahoo.com>
         Key fingerprint = 8F3F D359 E318 5641 8C81  34AD 791D 53F5 F050 D2DD

    -----BEGIN PGP PUBLIC KEY BLOCK-----
    Version: GnuPG v1.2.2 (FreeBSD)

    mQGiBD97XL8RBACC3CMLdwZY/RcLw4PM6h2KYj+cG7TNSfNWszZO5HdQYrd6HZKQ
    h0cL7cyW1Low8a2ZulxtEjM1SfofzDlhNaTYhyjlO4xBnJM13dMFchmM4j4qF0Mu
    al1MEeO3EbLntFsh/aDX2sOKEavz5id8eKmAZKez2O5Z27bymkFf4o2UbwCg841B
    WuuWHsy4O1zrac0WidkS3G0D/jeVbYA09gylZA1KSd3djHE55lQDQrUt3+2xWxjG
    Lg60WIqys/yxei6nVO7/Wr6Q1WISiX0bYXAxHCZZQrT6cuNtEBntPPa9PnXRewUx
    8xwVCBIuSLK5Kw2WZ2FMuQWTzfd4fwt8P9vghJlaV3h5Byw3e6/MdoDID9Jkg/ml
    f5FuA/9kZBwtE4zKJvx3Pv7EG6T0w82QA0SFtcFyRnNarUIfqyUsFXNkr8hoQT3Z
    J5haO/lW2HW70KMr26GxK61XcF8LQtfvphv9M+4yF3+DZSu1YxUM1Vs/q27EQhXa
    3Cs4kJkKdzW2xDbIbuD5ZJQqFAzWX7IiTTNXnEGZStPTQMYZLbQnTWFrc2ltIFll
    dm1lbmtpbiA8bV9ldm1lbmtpbkB5YWhvby5jb20+iFsEExECABsFAj97XL8GCwkI
    BwMCAxUCAwMWAgECHgECF4AACgkQeR1T9fBQ0t01FQCfUR367fJJ37Wl4HvZVBoF
    peBX9ZEAniaaK/D+n/JttkgY8jJf2ZvjF0SSuQENBD97XMIQBACPpJjDdDw42++u
    vPMW/R7Iwqdpgs22T/bzVlFxDGx2uD9xaoNKI03jkOyUWiFlHbuifMRhxTwO5Vyg
    nj91Y0fk8hdd9bjT0ee7lJuQ8PBqzb/uEVGFIC+56/ocFzuBANdN5fzEfxp5AA0o
    zAPotyGEmLLK8+3ApZmAbsnQEveOwwADBQP+KgIxPzWAxYSn/MFPK2QBEjHuCCsS
    JB+VOShc/QaSn/wFEKc8Brjpr1KeAEi7dFrK4Sa2Rn2+k9tRSJptxi1m3Hrr0J2z
    0JofnF6cKkvmIsCse5OGCK/LJmuWHuNVqYI2X9Q0am+soHEYsRaqB/BDLT5Mw0mE
    5NO6455cKEcyizmIRgQYEQIABgUCP3tcwgAKCRB5HVP18FDS3b1HAJ9ZjWomBkE4
    1vaMSXyIopmSQNVxSQCg3J+fBmk0yhD2A8CIfxhpSRJDwus=
    =wV5Z
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.330. Bjoern A. Zeeb `<bz@FreeBSD.org>`

    pub   1024D/3CCF1842 2007-02-20
          Key fingerprint = 1400 3F19 8FEF A3E7 7207  EE8D 2B58 B8F8 3CCF 1842
    uid                  Bjoern A. Zeeb <bz@zabbadoz.net>
    uid                  Bjoern A. Zeeb <bzeeb@zabbadoz.net>
    uid                  Bjoern A. Zeeb <bz@FreeBSD.org>
    uid                  Bjoern A. Zeeb <bzeeb-lists@lists.zabbadoz.net>
    sub   4096g/F36BDC5D 2007-02-20

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    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
    B8U1cYUAoI3ftziD88BkkQf1aD7jpiQwlW7/
    =N1dt
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.331. Alexey Zelkin `<phantom@FreeBSD.org>`

    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-----

### D.3.332. Sepherosa Ziehau `<sephe@FreeBSD.org>`

    pub   2048R/3E51FB42 2005-10-21
          Key fingerprint = 5F47 3861 7ABA 8773 9E32  0474 5C33 841C 3E51 FB42
    uid                  Sepherosa Ziehau (freebsd) <sephe@freebsd.org>
    uid                  Sepherosa Ziehau (sephe) <sepherosa@gmail.com>
    sub   2048R/7AA31321 2005-10-21

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    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
    AshLLfnD1BoaFl+lzNnL2Q==
    =F5Wg
    -----END PGP PUBLIC KEY BLOCK-----

# Глоссарий FreeBSD

Этот глоссарий содержит специфичные для документации и сообщества FreeBSD термины и сокращения.

# A

ACL

  См.: Access Control List

ACPI

  См.: Advanced Configuration and Power Interface

AMD

  См.: Automatic Mount Daemon

AML

  См.: ACPI Machine Language

APIC

  См.: Advanced Programmable Interrupt Controller

APM

  См.: Advanced Power Management

APOP

  См.: Authenticated Post Office Protocol

ASL

  См.: ACPI Source Language

ATA

  См.: Advanced Technology Attachment

ATM

  См.: Asynchronous Transfer Mode

ACPI Machine Language
(AML)
ACPI Source Language
(ASL)
Access Control List
(ACL)
Advanced Configuration and Power Interface
(ACPI)
Advanced Power Management
(APM)
Advanced Programmable Interrupt Controller
(APIC)
Advanced Technology Attachment
(ATA)
Asynchronous Transfer Mode
(ATM)
Authenticated Post Office Protocol
(APOP)
Automatic Mount Daemon
(AMD)

  Даемон, который автоматически монтирует файловую систему при обращении к файлу или директории на той файловой системе.

# B

Basic Input/Output System
(BIOS)
Berkeley Internet Name Domain
(BIND)
Berkeley Software Distribution
(BSD)

  Это имя, которое в Computer Systems Research Group (CSRG) Калифорнийского Университета Berkeley дали улучшениям и изменениям в AT&T's 32V UNIX. FreeBSD является наследником работы CSRG.

BIOS

  См.: Basic Input/Output System

BIND

  См.: Berkeley Internet Name Domain

Bikeshed Building

  Феномен, заключающийся в том, что многие активно участвуют в обсуждении простой темы, в то время как сложная тема привлекает мало внимания или вообще остается незамеченной. Информация о происхождении этого термина находится в FAQ.

BSD

  См.: Berkeley Software Distribution

# C

CD

  См.: Carrier Detect

CHAP

  См.: Challenge Handshake Authentication Protocol

CLIP

  См.: Classical IP over ATM

COFF

  См.: Common Object File Format

CPU

  См.: Central Processing Unit

CTS

  См.: Clear To Send

CVS

  См.: Concurrent Versions System

Carrier Detect
(CD)

  RS232C сигнал, говорящий о том, что была обнаружена несущая.

Central Processing Unit
(CPU)
Challenge Handshake Authentication Protocol
(CHAP)
Classical IP over ATM
(CLIP)
Clear To Send
(CTS)

  RS232C сигнал, дающий удалённой системе разрешение на посылку данных.

Common Object File Format
(COFF)
Concurrent Versions System
(CVS)

# D

DAC

  См.: Discretionary Access Control

DDB

  См.: Debugger

DHCP

  См.: Dynamic Host Configuration Protocol

DNS

  См.: Domain Name System

DSDT

  См.: Differentiated System Description Table

DSR

  См.: Data Set Ready

DTR

  См.: Data Terminal Ready

DVMRP

  См.: Distance-Vector Multicast Routing Protocol

Discretionary Access Control
(DAC)
Data Encryption Standard
(DES)
Data Set Ready
(DSR)
Data Terminal Ready
(DTR)
Debugger
(DDB)
Differentiated System Description Table
(DSDT)
Distance-Vector Multicast Routing Protocol
(DVMRP)
Domain Name System
(DNS)
Dynamic Host Configuration Protocol
(DHCP)

# E

ECOFF

  См.: Extended COFF

ELF

  См.: Executable and Linking Format

ESP

  См.: Encapsulated Security Payload

Encapsulated Security Payload
(ESP)
Executable and Linking Format
(ELF)
Extended COFF
(ECOFF)

# F

FADT

  См.: Fixed ACPI Description Table

FAT

  См.: File Allocation Table

FAT16

  См.: File Allocation Table (16-bit)

FTP

  См.: File Transfer Protocol

File Allocation Table
(FAT)
File Allocation Table (16-bit)
(FAT16)
File Transfer Protocol
(FTP)
Fixed ACPI Description Table
(FADT)

# G

GUI

  См.: Graphical User Interface

Giant

  Название механизма взаимного исключения (`sleep mutex`), который предохраняет большой набор ресурсов ядра. Хотя простого механизма блокировки было достаточно во временa, когда машина могла иметь всего лишь несколько дюжин процессов, одну сетевую карту и только один процессор. В настоящее время это неприемлемое препятствие для увеличения производительности. Разработчики FreeBSD активно работают над заменой данного механизма блокировками, предохраняющими отдельные ресурсы, что приведет к улучшению параллелизма как для однопроцессорных, так и для многопроцессорных систем.

Graphical User Interface
(GUI)

  Система, где пользователь и компьютер взаимодействуют между собой через графику.

# H

HTML

  См.: HyperText Markup Language

HUP

  См.: HangUp

HangUp
(HUP)
HyperText Markup Language
(HTML)

  Язык разметки для создания web страниц.

# I

I/O

  См.: Input/Output

IASL

  См.: Intel's ASL compiler

IMAP

  См.: Internet Message Access Protocol

IP

  См.: Internet Protocol

IPFW

  См.: IP Firewall

IPP

  См.: Internet Printing Protocol

IPv4

  См.: IP Version 4

IPv6

  См.: IP Version 6

ISP

  См.: Internet Service Provider

IP Firewall
(IPFW)
IP Version 4
(IPv4)
IP Version 6
(IPv6)
Input/Output
(I/O)
Intel's ASL compiler
(IASL)
Internet Message Access Protocol
(IMAP)
Internet Printing Protocol
(IPP)
Internet Protocol
(IP)
Internet Service Provider
(ISP)

# K

KAME

  Переводится с японского, как ''черепаха''. Термин KAME в компьютерных областях относится к Проекту KAME, который работает над реализацией IPv6.

KDC

  См.: Key Distribution Center

KLD

  См.: Kernel ld(1)

KSE

  См.: Kernel Scheduler Entities

KVA

  См.: Kernel Virtual Address

Kbps

  См.: Kilo Bits Per Second

Kernel ld(1)
(KLD)
Kernel Scheduler Entities
(KSE)

  Поддерживаемая ядром система потоков. Обратитесь к домашней странице проекта за более детальной информацией.

Kernel Virtual Address
(KVA)
Key Distribution Center
(KDC)
Kilo Bits Per Second
(Kbps)

# L

LAN

  См.: Local Area Network

LOR

  См.: Lock Order Reversal

LPD

  См.: Line Printer Daemon

Line Printer Daemon
(LPD)
Local Area Network
(LAN)
Lock Order Reversal
(LOR)

  Ядро FreeBSD использует несколько блокировок ресурсов, чтобы суметь рассудить спор между этими ресурсами. Система диагностирования блокировок из ядер FreeBSD-CURRENT (но убранная из релизов), называемая witness(4) определяет потенциал появления мертвых блокировок (deadlock) из-за ошибок блокировки. (witness(4) на самом деле является немного устаревшим, поэтому возможно получить неправильные ответы.) По настоящему положительный ответ говорит о том, что ''если вам не повезет, то тогда возможно, что deadlock появится в этом месте''.

  По настоящему позитивные ЛОРы (LOR) имеют тенденцию быть быстро исправленными, и поэтому проверьте http://lists.FreeBSD.org/mailman/listinfo/freebsd-current и страничку Замеченных ЛОРов перед посылкой письма о нём в списки рассылки.

# M

MAC

  См.: Mandatory Access Control

MADT

  См.: Multiple APIC Description Table

MFC

  См.: Merge From Current

MFS

  См.: Merge From Stable

MIT

  См.: Massachusetts Institute of Technology

MLS

  См.: Multi-Level Security

MOTD

  См.: Message Of The Day

MTA

  См.: Mail Transfer Agent

Mail Transfer Agent
(MTA)
Mail User Agent
(MUA)
Mandatory Access Control
(MAC)
Massachusetts Institute of Technology
(MIT)
Merge From Current
(MFC)

  Означает добавление функциональности или исправлений из ветви -CURRENT в другую ветвь, чаще всего в -STABLE.

Merge From Stable
(MFS)

  При нормальном ходе разработки FreeBSD, изменение вносится для тестирования в ветвь -CURRENT перед внесением в -STABLE. В редких случаях изменение сначала вносится в -STABLE, а затем переносится в -CURRENT.

  Этот термин также используется, когда исправление переносится из -STABLE в ветвь исправлений безопасности.

  См. также: Merge From Current.

Message Of The Day
(MOTD)
Multi-Level Security
(MLS)
Multiple APIC Description Table
(MADT)

# N

NAT

  См.: Network Address Translation

NDISulator

  См.: Project Evil

NFS

  См.: Network File System

NTFS

  См.: New Technology File System

NTP

  См.: Network Time Protocol

Network Address Translation
(NAT)
Network File System
(NFS)
New Technology File System
(NTFS)

  Файловая система, разработанная Microsoft и доступная в их ''ново-технологичных'' операционных системах, таких как Windows 2000, Windows NT и Windows XP.

Network Time Protocol
(NTP)

# O

OBE

  См.: Overtaken By Events

ODMR

  См.: On-Demand Mail Relay

OS

  См.: Operating System

On-Demand Mail Relay
(ODMR)
Operating System
(OS)
Overtaken By Events
(OBE)

  Обозначает предполагаемое изменение (к примеру, Сообщение об ошибке (PR) или запрос на добавление новой возможности), которое больше не является уместным или применимым из-за таких причин, как произошедшие после этого изменения во FreeBSD, изменения в сетевых стандартах, описываемое в предполагаемом изменении оборудование с тех пор стало устаревшим и так далее.

# P

PAE

  См.: Physical Address Extensions

PAM

  См.: Pluggable Authentication Modules

PAP

  См.: Password Authentication Protocol

PC

  См.: Personal Computer

PCNSFD

  См.: Personal Computer Network File System Daemon

PDF

  См.: Portable Document Format

PID

  См.: Process ID

POLA

  См.: Principle Of Least Astonishment

POP

  См.: Post Office Protocol

POP3

  См.: Post Office Protocol Version 3

PPD

  См.: PostScript Printer Description

PPP

  См.: Point-to-Point Protocol

PPPoA

  См.: PPP over ATM

PPPoE

  См.: PPP over Ethernet

PPP over ATM
(PPPoA)
PPP over Ethernet
(PPPoE)
PR

  См.: Problem Report

PXE

  См.: Preboot eXecution Environment

Password Authentication Protocol
(PAP)
Personal Computer
(PC)
Personal Computer Network File System Daemon
(PCNFSD)
Physical Address Extensions
(PAE)
Pluggable Authentication Modules
(PAM)
Point-to-Point Protocol
(PPP)
Pointy Hat

  Мифическая часть головного убора, почти как `дурацкий колпак`, которым награждают любого FreeBSD коммиттера, нарушившего процесс сборки, или сделавшего отсталый коммит, или создавшего любой другой вид беспорядка в исходном коде. Any committer worth his or her salt will soon accumulate a large collection. Использование (почти всегда?) носит юмористический характер.

Portable Document Format
(PDF)
Post Office Protocol
(POP)
Post Office Protocol Version 3
(POP3)
PostScript Printer Description
(PPD)
Preboot eXecution Environment
(PXE)
Principle Of Least Astonishment
(POLA)

  При развитии FreeBSD, видимые пользователю изменения должны быть как можно менее неожиданны. Например, произвольное перемещение переменных в `/etc/defaults/rc.conf` нарушает POLA. Разработчики учитывают POLA при внесении видимых пользователю изменений.

Problem Report
(PR)
Process ID
(PID)
Project Evil

  Рабочее название NDISulator, написанное Биллом Полом (Bill Paul), который назвал его считая, что как ужасно (с философской точки зрения) иметь что-то типа этого на первом месте. NDISulator - это специальный модуль совместимости, чтобы разрешить использование Windows™ NDIS минипорт сетевых драйверов во FreeBSD/i386. Это обычно единственный путь использования сетевых карт с закрытым кодом драйвера. Смотрите `src/sys/compat/ndis/subr_ndis.c`.

# R

RA

  См.: Router Advertisement

RAID

  См.: Redundant Array of Inexpensive Disks

RAM

  См.: Random Access Memory

RD

  См.: Received Data

RFC

  См.: Request For Comments

RISC

  См.: Reduced Instruction Set Computer

RPC

  См.: Remote Procedure Call

RS232C

  См.: Recommended Standard 232C

RTS

  См.: Request To Send

Random Access Memory
(RAM)
Received Data
(RD)
Recommended Standard 232C
(RS232C)

  Стандарт для коммуникаций между последовательными устройствами.

Reduced Instruction Set Computer
(RISC)
Redundant Array of Inexpensive Disks
(RAID)
Remote Procedure Call
(RPC)
Request For Comments
(RFC)
Request To Send
(RTS)
Router Advertisement
(RA)

# S

SCI

  См.: System Control Interrupt

SCSI

  См.: Small Computer System Interface

SG

  См.: Signal Ground

SMB

  См.: Server Message Block

SMP

  См.: Symmetric MultiProcessor

SMTP

  См.: Simple Mail Transfer Protocol

SMTP AUTH

  См.: SMTP Authentication

SSH

  См.: Secure Shell

STR

  См.: Suspend To RAM

SMTP Authentication
(SMTP AUTH)
Server Message Block
(SMB)
Signal Ground
(SG)

  Штрек или проводник (wire) стандарта RS232, являющийся заземлением (ground reference) для сигнала.

Simple Mail Transfer Protocol
(SMTP)
Secure Shell
(SSH)
Small Computer System Interface
(SCSI)
Suspend To RAM
(STR)
Symmetric MultiProcessor
(SMP)
System Control Interrupt
(SCI)

# T

TCP

  См.: Transmission Control Protocol

TD

  См.: Transmitted Data

TFTP

  См.: Trivial FTP

TGT

  См.: Ticket-Granting Ticket

Ticket-Granting Ticket
(TGT)
Transmission Control Protocol
(TCP)
Transmitted Data
(TD)
Trivial FTP
(TFTP)

# U

UDP

  См.: User Datagram Protocol

UFS1

  См.: Unix File System Version 1

UFS2

  См.: Unix File System Version 2

UID

  См.: User ID

URL

  См.: Uniform Resource Locator

USB

  См.: Universal Serial Bus

Uniform Resource Locator
(URL)
Unix File System Version 1
(UFS1)
Unix File System Version 2
(UFS2)
Universal Serial Bus
(USB)
User ID
(UID)

  Уникальный номер, присваиваемый каждому пользователю компьютера, по которому могут быть индентифицированны ресурсы и права, назначенные данному пользователю.

User Datagram Protocol
(UDP)

# V

VPN

  См.: Virtual Private Network

Virtual Private Network
(VPN)

# Colophon

Эта книга представляет собой результат совместной работы сотен людей в рамках ''Проекта Документирования FreeBSD''. Текст написан в SGML формате в соответствии с DocBook DTD и сформатирован из SGML во множество различных представительских форматов с помощью приложения Jade, открытой DSSSL системы. DSSSL стили от Норма Волша (Norm Walsh) были использованы совместно c допольнительными стилями разработанными в рамках проекта для создания презентационных инструкций для Jade. Создание печатной версии этого документа было бы невозможно без языка TeX Девида Кнута, LaTeX Лисли Лэмпорта, и макро пакета JadeTeX Себастьяна Ратца.

### Примечания

[1] | Это следует из обозначения `i386`. Обратите внимание, что даже если FreeBSD работает не на процессоре Intel 386, это обозначение будет `i386`. Здесь показан не тип процессора, а его ''архитектура''.
[2] | Стартовые скрипты -- это программы, запускаемые автоматически во время загрузки FreeBSD. Их основная задача -- подготовить систему к запуску других программ и запустить настроенные сервисы, которые будут работать в фоновом режиме, выполняя полезную работу.
[3] | Подробное техническое описание деталей работы драйверов консолей FreeBSD и клавиатуры можно найти в syscons(4), atkbd(4), vidcontrol(1) и kbdcontrol(1). Здесь мы не раскрываем деталей, однако интересующиеся этим вопросом всегда могут обратиться к страницам справочника за более подробным объяснением того, как это работает.
[4] | Не совсем верно -- есть несколько действий, которые не могут быть прерваны. Например, если процесс пытается прочитать файл на другом компьютере в сети, и другой компьютер по какой-то причине не отвечает (был выключен, или в сети произошла ошибка), процесс находится в так называемом ''непрерываемом состоянии''. В конце концов время ожидания закончится, обычно это происходит через две минуты. Как только время закончится, процесс будет уничтожен.
[5] | Алгоритм автоматической настройки установит `maxusers` равным количеству памяти в системе, где минимум 32, а максимум 384.
[6] | Конечно, пока не используется множество терминалов, но мы оставим эту тему для Гл. 23.
[7] | Возможно использование UID/GID вплоть до 4294967295, но эти ID могут вызвать серьезные проблемы с программами, делающими предположения о значениях ID.
[8] | В FreeBSD стандартный пароль может быть до 128 символов длиной.
[9] | Есть и другие ситуации, в которых могут возникать различные ошибки. Например, файл может не находиться во владении пользователя, пытающегося изменить метку на объекте, объект может не существовать или существовать только для чтения. Политика может не позволить процессу изменить метку на файл, возможно в связи со свойствами файла, процесса, или нового значения метки. Например: пользователь с низким уровнем доверия пытается изменить метку на файле с высоким уровнем доверия. Или пользователь с низким уровнем доверия пытается изменить метку файла с низким уровнем доверия на метку высокого уровня.
[10] | Вследствие ошибки переменная `sysctl` `security.mac.portacl.enabled` не будет работать в FreeBSD 5.2.1 или более ранних релизах.
[11] | Советы по выбору легко запоминающихся ключевых фраз можно найти на сайте Diceware Passphrase.
[12] | RAID -- сокращение от термина Redundant Array of Inexpensive Disks (массив недорогих дисков с резервированием); различные виды RAID предоставляют разные формы защиты от сбоев. RAID-0, вообще говоря, не является RAID, поскольку не обеспечивает резервирования.
[13] | Это не совсем так. Мы не можем поддерживать старые релизы FreeBSD бесконечно долго, хотя мы поддерживаем их многие годы. Полное описание текущей политики безопасности относительно старых релизов FreeBSD можно найти по адресу http://www.FreeBSD.org/ru/security/.

Этот, и другие документы, могут быть скачаны с ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

По вопросам, связанным с FreeBSD, прочитайте документацию прежде чем писать в <questions@FreeBSD.org>.
По вопросам, связанным с этой документацией, пишите <doc@FreeBSD.org>.
По вопросам, связанным с русским переводом документации, пишите в рассылку <frdp@FreeBSD.org.ua>.
Информация по подписке на эту рассылку находится на сайте проекта перевода.