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

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

Добро пожаловать в FreeBSD! Это Руководство охватывает процесс установки и ежедневного использования FreeBSD 7.3-RELEASE и FreeBSD 8.0-RELEASE. Оно находится в процессе разработки и являет собой результат работы множества людей. Некоторые из разделов могут стать устаревшими и требовать обновления. Если вы заинтересованы в помощи этому проекту, отправьте письмо в Список рассылки Проекта Русской Документации FreeBSD . Обновленная версия этого документа постоянно доступна с Основного 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 известно о торговой марке, к обозначению добавляется знак ''™'' или ''®''.


Содержание
Предисловие
I. В начале
1. Введение
1.1. Краткий обзор
1.2. Добро пожаловать во FreeBSD!
1.3. О Проекте FreeBSD
2. Установка FreeBSD
2.1. Краткий обзор
2.2. Аппаратные требования
2.3. Перед установкой
2.4. Начало установки
2.5. Введение в Sysinstall
2.6. Выделение дискового пространства
2.7. Выбор устанавливаемых компонентов
2.8. Выбор источника для установки
2.9. Подтверждение установки
2.10. После установки
2.11. Решение проблем
2.12. Расширенное руководство по установке
2.13. Подготовка собственного источника установки
3. Основы UNIX
3.1. Краткий обзор
3.2. Виртуальные консоли и терминалы
3.3. Права доступа
3.4. Структура каталогов
3.5. Организация дисков
3.6. Монтирование и размонтирование файловых систем
3.7. Процессы
3.8. Даемоны, сигналы, уничтожение процессов
3.9. Интерпретатор команд
3.10. Текстовые редакторы
3.11. Устройства и файлы устройств
3.12. Бинарные форматы
3.13. Дополнительная информация
4. Установка приложений: порты и пакеты
4.1. Обзор
4.2. Обзор установки программного обеспечения
4.3. Поиск нужного вам приложения
4.4. Использование системы пакетов
4.5. Использование Коллекции Портов
4.6. Действия после установки
4.7. Обработка нерабочих портов
5. X Window System
5.1. Обзор
5.2. Основы X
5.3. Установка X11
5.4. Конфигурация X11
5.5. Использование шрифтов в X11
5.6. Менеджеры экранов (Display Managers) X
5.7. Графические оболочки
II. Общие задачи
6. Приложения для настольного компьютера
6.1. Краткий обзор
6.2. Браузеры
6.3. Бизнес приложения
6.4. Программы просмотра документов
6.5. Финансовые программы
6.6. Итоги
7. Мультимедиа
7.1. Краткий обзор
7.2. Настройка звуковой карты
7.3. Звук MP3
7.4. Воспроизведение видео
7.5. Настройка ТВ тюнеров
7.6. Сканеры
8. Настройка ядра FreeBSD
8.1. Краткий обзор
8.2. Зачем собирать собственное ядро?
8.3. Сборка и установка собственного ядра
8.4. Конфигурационный файл
8.5. Решение проблем
9. Печать
9.1. Краткий обзор
9.2. Введение
9.3. Основная настройка
9.4. Расширенная настройка принтера
9.5. Использование принтеров
9.6. Альтернативы стандартному спулеру
9.7. Выявление проблем
10. Двоичная совместимость с Linux
10.1. Краткий обзор
10.2. Установка
10.3. Установка Mathematica®
10.4. Установка Maple
10.5. Установка MATLAB®
10.6. Установка Oracle®
10.7. Установка SAP® R/3®
10.8. Дополнительные сведения
III. Системное администрирование
11. Настройка и оптимизация
11.1. Введение
11.2. Начальное конфигурирование
11.3. Основные настройки
11.4. Настройка приложений
11.5. Запуск сервисов
11.6. Настройка утилиты cron
11.7. Использование rc во FreeBSD 5.X и последующих версиях
11.8. Настройка карт сетевых интерфейсов
11.9. Настройка виртуальных серверов
11.10. Файлы настройки
11.11. Настройка с помощью sysctl
11.12. Оптимизация дисков
11.13. Изменение ограничений, накладываемых ядром
11.14. Увеличение объема подкачки
11.15. Управление питанием и ресурсами
11.16. Использование и отладка FreeBSD ACPI
12. Процесс загрузки FreeBSD
12.1. Описание
12.2. Проблема загрузки
12.3. Менеджер загрузки и этапы загрузки
12.4. Взаимодействие с ядром во время загрузки
12.5. Хинты устройств
12.6. Init: инициализация управления процессами
12.7. Процесс остановки системы
13. Пользователи и основы управления учетными записями
13.1. Краткий обзор
13.2. Введение
13.3. Учетная запись суперпользователя
13.4. Системные учетные записи
13.5. Учетные записи пользователей
13.6. Изменение учетных записей
13.7. Ограничение пользователей
13.8. Группы
14. Безопасность
14.1. Краткое описание
14.2. Введение
14.3. Защита FreeBSD
14.4. DES, MD5, и шифрование
14.5. Одноразовые пароли
14.6. TCP Wrappers
14.7. KerberosIV
14.8. Kerberos5
14.9. OpenSSL
14.10. VPN через IPsec
14.11. OpenSSH
14.12. Списки контроля доступа файловой системы (ACL)
14.13. Мониторинг вопросов безопасности в ПО сторонних разработчиков
14.14. Сообщения безопасности FreeBSD
14.15. Учёт используемых ресурсов
15. Принудительный контроль доступа (MAC)
15.1. Краткий обзор
15.2. Ключевые термины этой главы
15.3. Описание MAC
15.4. Метки MAC
15.5. Настройка модулей
15.6. Модуль MAC bsdextended
15.7. Модуль MAC ifoff
15.8. Модуль MAC portacl
15.9. Политики MAC, использующие метки
15.10. Модуль MAC partition
15.11. Модуль многоуровневой безопасности MAC (MLS)
15.12. Модуль MAC Biba
15.13. Модуль MAC LOMAC
15.14. Реализация защищенной среды с MAC
15.15. Другой пример: Использование MAC для защиты веб сервера
15.16. Решение проблем с инфраструктурой MAC
16. Аудит событий безопасности
16.1. Краткий обзор
16.2. Ключевые понятия - краткий словарь.
16.3. Установка системы аудита
16.4. Настройка системы аудита
16.5. Администрирование системы аудита
17. Устройства хранения
17.1. Краткий обзор
17.2. Имена устройств
17.3. Добавление дисков
17.4. RAID
17.5. USB устройства хранения
17.6. Запись и использование оптических носителей (CD)
17.7. Создание и использование оптических носителей (DVD)
17.8. Дискеты
17.9. Создание и использование архивных копий на магнитной ленте
17.10. Создание резервных копий на дискетах
17.11. Стратегии резервного копирования
17.12. Основы технологии резервного копирования
17.13. Сетевые файловые системы, файловые системы в памяти и с отображением в файл
17.14. Мгновенные копии файловых систем
17.15. Квотирование файловых систем
17.16. Шифрование дисковых разделов
17.17. Шифрование области подкачки
18. GEOM: Модульная инфраструктура преобразования дисковых запросов
18.1. Краткий обзор
18.2. Введение в GEOM
18.3. RAID0 - Создание дисковой последовательности (Striping)
18.4. RAID1 - Зеркалирование (Mirroring)
18.5. Сетевые устройства GEOM Gate
18.6. Метки дисковых устройств
19. Менеджер дискового пространства Vinum
19.1. Краткая аннотация
19.2. Диски слишком малы
19.3. Ограниченная пропускная способность
19.4. Целостность данных
19.5. Объекты Vinum
19.6. Несколько примеров
19.7. Правила именования объектов
19.8. Создание конфигурации Vinum
19.9. Vinum для корневой файловой системы
20. Локализация - I18N/L10N использование и настройка
20.1. Краткий обзор
20.2. Основы
20.3. Использование локализации
20.4. Компиляция I18N программ
20.5. Локализация FreeBSD для поддержки определенных языков
21. На переднем крае разработок
21.1. Краткий обзор
21.2. FreeBSD-CURRENT против FreeBSD-STABLE
21.3. Синхронизация ваших исходных текстов
21.4. Пересборка ''world''
21.5. Отслеживание исходных текстов для нескольких машин
IV. Сетевые коммуникации
22. Последовательные соединения
22.1. Краткое описание
22.2. Введение
22.3. Терминалы
22.4. Входящие соединения по модему
22.5. Исходящие соединения по модему
22.6. Настройка последовательной консоли
23. PPP и SLIP
23.1. Краткий обзор
23.2. PPP уровня пользователя
23.3. PPP уровня ядра
23.4. Решение проблем с соединениями PPP
23.5. Использование PPP через Ethernet (PPPoE)
23.6. Использование PPP через ATM (PPPoA)
23.7. Использование SLIP
24. Электронная почта
24.1. Краткий обзор
24.2. Использование электронной почты
24.3. Настройка sendmail
24.4. Установка другой почтовой программы
24.5. Поиск и устранение неисправностей
24.6. Расширенное руководство
24.7. SMTP через UUCP
24.8. Настройка почты только для отправки
24.9. Использование почты с коммутируемым соединением
24.10. SMTP аутентификация
24.11. Почтовые программы пользователей
24.12. Использование fetchmail
24.13. Использование procmail
25. Сетевые серверы
25.1. Краткий обзор
25.2. ''Супер-сервер'' inetd
25.3. Network File System (NFS)
25.4. Network Information System (NIS/YP)
25.5. Автоматическая настройка сети (DHCP)
25.6. Domain Name System (DNS)
25.7. Apache HTTP сервер
25.8. Файл сервер и печать для Microsoft® Windows клиентов (Samba)
25.9. Протокол передачи файлов (FTP)
25.10. Синхронизация часов через NTP
26. Межсетевые экраны
26.1. Введение
26.2. Принципы работы межсетевых экранов
26.3. Пакеты межсетевых экранов
26.4. Packet Filter Firewall (PF, межсетевой экран OpenBSD)
26.5. * IPFILTER (IPF)
26.6. * IPFW
27. Сложные вопросы работы в сети
27.1. Краткий обзор
27.2. Сетевые шлюзы и маршруты
27.3. Беспроводные сети
27.4. Bluetooth
27.5. Мосты
27.6. Работа с бездисковыми станциями
27.7. ISDN
27.8. Даемон преобразования сетевых адресов (natd)
27.9. IP по параллельному порту (PLIP)
27.10. IPv6
27.11. Асинхронный режим передачи (ATM)
V. Приложения
A. Получение FreeBSD
A.1. Издатели CDROM и DVD
A.2. FTP сайты
A.3. Анонимный CVS
A.4. Использование CTM
A.5. Использование CVSup
A.6. Использование Portsnap
A.7. Теги CVS
A.8. AFS сайты
A.9. rsync сайты
B. Библиография
B.1. Книги и журналы, специализирующиеся на FreeBSD
B.2. Руководства для пользователей
B.3. Руководства для администраторов
B.4. Руководства для программистов
B.5. Внутренности операционной системы
B.6. Безопасность
B.7. Оборудование
B.8. История UNIX
B.9. Прочие издания
C. Ресурсы в интернет
C.1. Списки рассылки
C.2. Новостные группы Usenet
C.3. Серверы World Wide Web
C.4. Адреса Email
C.5. Shell доступ
D. PGP ключи
D.1. Офицеры
D.2. Члены Core
D.3. Разработчики
Глоссарий FreeBSD
Colophon
Список таблиц
2-1. Пример сведений об оборудовании
2-2. Планирование разделов для первого диска
2-3. Разметка разделов для остальных дисков
2-4. Названия ISO-образов дисков FreeBSD 5.X и 6.X и их значения
3-1. Коды дисковых устройств
17-1. Соглашения по именованию физических дисков
19-1. Методы организации наборов Vinum
22-1. Нуль-модемный кабель DB-25 - DB-25
22-2. Нуль-модемный кабель DB-9 - DB-9
22-3. Нуль-модемный кабель DB-9 - DB-25
22-4. Наименования сигналов
27-1. Распайка кабеля для параллельного порта для сетевой работы
27-2. Зарезервированные адреса IPv6
Список иллюстраций
2-1. Типичный вывод Device Probe
2-2. Меню выбора страны
2-3. Выбор Sysinstall Exit
2-4. Выбор Usage в главном меню Sysinstall
2-5. Выбор меню документации
2-6. Меню документации Sysinstall
2-7. Выбор меню раскладки клавиатуры
2-8. Меню раскладки клавиатуры
2-9. Выбор параметров установки
2-10. Параметры Sysinstall
2-11. Начало стандартной установки
2-12. Выберите диск для FDisk
2-13. Типичные разделы fdisk перед редактированием
2-14. Разбиение в Fdisk с использованием всего диска
2-15. Меню менеджера загрузки Sysinstall
2-16. Выход из выбора диска
2-17. Редактор Sysinstall Disklabel
2-18. Редактор Sysinstall Disklabel с установками по умолчанию
2-19. Свободное место для корневого раздела
2-20. Редактирование размера корневого раздела
2-21. Выбор типа корневого раздела
2-22. Выбор точки монтирования корневой файловой системы
2-23. Редактор Sysinstall Disklabel
2-24. Выбор дистрибутивных наборов
2-25. Подтверждение выбора дистрибутивного набора
2-26. Выбор источника установки
2-27. Выбор Ethernet устройства
2-28. Настройка сети для ed0
2-29. Редактирование inetd.conf
2-30. Настройка по анонимного FTP по умолчанию
2-31. Редактирование FTP Welcome Message
2-32. Редактирование exports
2-33. Параметры настройки системной консоли
2-34. Параметры хранителя экрана
2-35. Временной интервал хранителя экрана
2-36. Выход из меню конфигурации консоли
2-37. Выбор региона
2-38. Выбор страны
2-39. Выбор часового пояса
2-40. Выбор протокола мыши
2-41. Установка протокола мыши
2-42. Настройка порта мыши
2-43. Установка порта мыши
2-44. Запуск мышиного даемона
2-45. Проверка мышиного даемона
2-46. Верхняя часть меню настройки сети (Network Configuration)
2-47. Выбор MTA по умолчанию
2-48. Настройка Ntpdate
2-49. Нижняя часть меню настройки сети
2-50. Выбор категории пакетов
2-51. Выбор пакетов
2-52. Установка пакетов
2-53. Подтверждение установки пакетов
2-54. Выбор User (пользователь)
2-55. Вод информации о пользователе
2-56. Выход из меню управления пользователями и группами
2-57. Выход из установки
19-1. Организация сцепленных дисков
19-2. Организация с перемежением
19-3. Организация RAID-5
19-4. Простой том Vinum
19-5. Зеркалированный том Vinum
19-6. Том с перемежением
19-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. Скрипт для создания загрузочной дискеты
17-4. Использование vnconfig для монтирования имеющегося образа файловой системы во FreeBSD 4.X
17-5. Создание нового диска в файле с помощью vnconfig
17-6. Использование mdconfig для монтирования файла с образом существующей файловой системы
17-7. Создание нового диска, отображаемого в файл, при помощи mdconfig
17-8. Настройка и монтирование диска, отображаемого в файл, при помощи команды mdmfs
17-9. Диск md в памяти во FreeBSD 4.X
17-10. Создание нового диска с отображением в память при помощи mdconfig
17-11. Создание нового диска с отображением в память при помощи mdmfs
22-1. Добавление записей терминалов в /etc/ttys
24-1. Настройка базы данных доступа sendmail
24-2. Mail Aliases
24-3. Пример таблицы виртуального домена
25-1. Перезагрузка конфигурационного файла inetd
25-2. Монтирование ресурса при помощи amd
27-1. Офис подразделения или домашняя сеть
27-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. Вот основные изменения в новой редакции:

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

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

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

Эта книга разбита на пять частей. В первой части, В начале, рассматривается установка и основные навыки использования 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, Менеджер дискового пространства Vinum

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

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

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

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

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

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

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

Гл. 23, PPP и SLIP

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

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

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

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

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

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

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

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

Рассматривает множество вопросов работы с сетью, включая совместный доступ компьютеров вашей локальной сети к интернет, расширенные вопросы маршрутизации, беспроводные соединения, 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 используется в качестве платформы на некоторых крупнейших сайтах в интернет, включая:

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


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.0-RELEASE, был выпущен Nov 2009. Из ветви 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 совместимых'') компьютеров. Когда это возможно, приводятся инструкции, специфичные для других платформ (например, Alpha). Хотя это руководство поддерживается в актуальном состоянии настолько, насколько это возможно, вы можете обнаружить небольшие различия между программой установки и тем, что показано здесь. Предполагается, что вы будете использовать эту главу в качестве общего руководства, а не как пошаговую инструкцию по установке.


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

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

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

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


2.2.1.1. Архитектуры i386™ и pc98

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

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


2.2.1.2. Архитектура Alpha

Для установки FreeBSD/alpha, вам потребуется поддерживаемая платформа (обратитесь к Разд. 2.2.2) и выделенный диск для FreeBSD. На данный момент невозможно использовать диск совместно с другой операционной системой. Диск должен быть подключен к SCSI контроллеру, поддерживаемому SRM, или это может быть IDE диск, если SRM на данном компьютере поддерживается загрузка с IDE дисков.

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


2.2.1.3. Архитектура amd64

FreeBSD/amd64 требуется процессор AMD Athlon™64, AMD Athlon64-FX, AMD Opteron™ или выше.

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


2.2.1.4. Архитектура 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. Разделы диска для 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. Каталог tools на CDROM содержит две свободно распространяемых утилиты, которые могут быть использованы для этой задачи. Они называются FIPS и PResizer. Документация на обе эти утилиты доступна из того же каталога. FIPS, PResizer, и PartitionMagic могут изменять размер разделов FAT16 и FAT32, используемых системами от MS-DOS до Windows ME. Как PartitionMagic, так и GParted способны работать с NTFS.

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

Пример 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.3.2. Разделы диска для Alpha

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

В соответствии с соглашениями, принятыми в руководствах Digital / Compaq, весь SRM ввод показан в верхнем регистре. SRM нечувствителен к регистру.

Для поиска имен и типов дисков на компьютере используйте команду SHOW DEVICE SRM консоли:

>>>SHOW DEVICE
dka0.0.0.4.0               DKA0           TOSHIBA CD-ROM XM-57  3476
dkc0.0.0.1009.0            DKC0                       RZ1BB-BS  0658
dkc100.1.0.1009.0          DKC100             SEAGATE ST34501W  0015
dva0.0.0.0.1               DVA0
ewa0.0.0.3.0               EWA0              00-00-F8-75-6D-01
pkc0.7.0.1009.0            PKC0                  SCSI Bus ID 7  5.27
pqa0.0.0.4.0               PQA0                       PCI EIDE
pqb0.0.1.4.0               PQB0                       PCI EIDE

Этот пример с Digital Personal Workstation 433au показывает три подключенных диска. Первый -- устройство CDROM с именем DKA0, другие два называются DKC0 и DKC100 соответственно.

Диски с именами DKx -- SCSI диски. Например, DKA100 означает SCSI диск со SCSI целевым ID 1 на первой SCSI шине (A), в то время как DKC300 означает SCSI диск с SCSI ID 3 на третьей SCSI шине (C). Имя устройства PKx означает SCSI адаптер. Как показано в выводе SHOW DEVICE, SCSI устройство CDROM определяется как любой другой жесткий диск SCSI.

Имена IDE дисков выглядят как DQx, в то время как PQx -- IDE контроллер.


2.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

  • Раздел 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.

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

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

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

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

    Расширение файла образа диска .flp. Каталог floppies/ содержит множество разных образов, ваш выбор будет зависеть от устанавливаемой версии FreeBSD и, в некоторых случаях, от конфигурации компьютера. В большинстве случаев потребуются три дискеты, boot.flp, kern1.flp, и kern2.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, и так далее.

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

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

  4. Если вы подготовили дискеты, как описано в Разд. 2.3.7, одна из них будет первым загрузочным диском; как правило, это дискета с boot.flp. Вставьте эту дискету в дисковод.

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

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

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

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

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

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

    Verifying DMI Pool Data ........
    Boot from ATAPI CD-ROM :
     1. FD 2.88MB  System Type-(00)
    Uncompressing ... done
    
    BTX loader 1.00 BTX version is 1.01
    Console: internal video/keyboard
    BIOS drive A: is disk0
    BIOS drive B: is disk1
    BIOS drive C: is disk2
    BIOS drive D: is disk3
    BIOS 639kB/261120kB available memory
    
    FreeBSD/i386 bootstrap loader, Revision 0.8
    
    /kernel text=0x277391 data=0x3268c+0x332a8 |
    
    |
    Hit [Enter] to boot immediately, or any other key for command prompt.
    Booting [kernel] in 9 seconds... _
    

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

    Verifying DMI Pool Data ........
    
    BTX loader 1.00  BTX version is 1.01
    Console: internal video/keyboard
    BIOS drive A: is disk0
    BIOS drive C: is disk1
    BIOS 639kB/261120kB available memory
    
    FreeBSD/i386 bootstrap loader, Revision 0.8
    /kernel text=0x277391 data=0x3268c+0x332a8 |
    
    Insert disk labelled "Kernel floppy 1" and press any key...
    

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

  6. Идет ли загрузка с дискет или с CDROM, в процессе загрузки появится:

    Hit [Enter] to boot immediately, or any other key for command prompt.
    Booting [kernel] in 9 seconds... _
    

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


2.4.1.2. Загрузка Alpha

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

  2. Включите компьютер и дождитесь приглашения к загрузке на мониторе.

  3. Если вы подготовили загрузочные дискеты, как описано в Разд. 2.3.7, одна из них будет первым загрузочным диском; как правило, это дискета с boot.flp. Вставьте эту дискету в дисковод и наберите следующую команду для загрузки (замените на имя вашего дисковода если потребуется):

    >>>BOOT DVA0 -FLAGS '' -FILE ''
    

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

    >>>BOOT DKA0 -FLAGS '' -FILE ''
    
  4. FreeBSD начнет загружаться. Если загрузка идет с дискет, через некоторое время вы увидите сообщение:

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

    Следуя инструкциям, удалите дискету с boot.flp, вставьте дискету с kern1.flp и нажмите Enter.

  5. Идет ли загрузка с дискет или с CDROM, в процессе загрузки появится:

    Hit [Enter] to boot immediately, or any other key for command prompt.
    Booting [kernel] in 9 seconds... _
    

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


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

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

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

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

Рисунок 2-1. Типичный вывод 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-2. Используйте клавиши навигации для выбора страны, региона или группы. Затем нажмите Enter, произойдет выбор страны и раскладки клавиатуры. Вы также можете выйти из программы sysinstall и начать все сначала.

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

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

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

                      User Confirmation Requested
         Are you sure you wish to exit? The system will reboot
           (be sure to remove any floppies from the drives).

                            [ Yes ]    No

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

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


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

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

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

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

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

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


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

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

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

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

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

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

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

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


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

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

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

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

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

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


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

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

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

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

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

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

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

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


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

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

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


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-12 показывает пример системы с двумя IDE дисками. Они были названы ad0 и ad2.

Рисунок 2-12. Выберите диск для 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-13.

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

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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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


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

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

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

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

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

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


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

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

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

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

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

Раздел Файловая система Размер Описание
a / 100 MB Корневая файловая система. Любая другая файловая система будет смонтирована на эту. 100 MB это подходящий размер для этой файловой системы. Вы не будете хранить на ней слишком много данных, а обычная установка FreeBSD разместит здесь около 40 MB данных. Оставшееся пространство используется для временных файлов, а также оставляет возможность расширения для будущих версий FreeBSD, которым может понадобится больше места в /.
b N/A 2-3 x RAM

Раздел подкачки находится на разделе b. Выбор правильного размера раздела подкачки это немного искусство. Хороший практический способ выбрать размер подкачки это установить его равным двум или трем размерам доступной физической памяти (RAM). Должно быть хотя бы 64 MB подкачки; если в компьютере меньше чем 32 MB памяти -- установите размер подкачки равным 64 MB.

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

e /var 50 MB Каталог /var содержит файлы, которые постоянно меняются; логи и другие административные файлы. Многие из этих файлов интенсивно читаются и записываются в процессе ежедневной работы FreeBSD. Размещение их на отдельной файловой системе позволяет FreeBSD оптимизировать доступ к этим файлам без затрагивания других каталогов, не имеющих такой же модели доступа.
f /usr Остальная часть диска Все другие файлы как правило хранятся в каталоге /usr и его подкаталогах.

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

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

Раздел Файловая система Размер Описание
b N/A Смотрите описание Как уже обсуждалось, вы можете распространить подкачку на каждый диск. Даже если раздел a свободен, соглашение говорит о том, что подкачка находится на разделе b.
e /diskn Остальная часть диска Остальная часть диска занята одним большим разделом. Он легко может быть помещен на раздел a вместо раздела e. Однако, соглашение говорит, что раздел a зарезервирован на слайсе для корневой (/) файловой системы. вы можете не следовать этому соглашению, но программа sysinstall будет ему следовать, поэтому приняв его, вы сделаете установку несколько проще. Вы можете монтировать эти файловые системы к любой точке; в этом примере предлагается смонтировать их как каталоги /diskn, где n это номер, который уникален для каждого диска. Но вы можете использовать другую схему, если захотите.

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

                                 Message
 Now, you need to create BSD partitions inside of the fdisk
 partition(s) just created. If you have a reasonable amount of disk
 space (200 MB or more) and don't have any special requirements, simply
 use the (A)uto command to allocate space automatically. If you have
 more specific needs or just don't care for the layout chosen by
 (A)uto, press F1 for more information on manual layout.

                                [  OK  ]
                          [ Press enter or space ]

Нажмите Enter для запуска редактора разделов FreeBSD, называемого Disklabel.

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

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

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

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

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

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

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

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

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

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

Замечание: Начиная с FreeBSD 5.X, пользователи могут: выбирать UFS2 (который используется по умолчанию в FreeBSD 5.1 и выше), используя опцию Custom Newfs (Z), использовать опцию Auto Defaults и изменять параметры с помощью опции Custom Newfs, или добавлять опцию -O 2 в процессе создания раздела. Не забудьте добавить -U для включения SoftUpdates если вы используете опцию Custom Newfs!

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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

Xorg является устанавливаемой по умолчанию версией X11.

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

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

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


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

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

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

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


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

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

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

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

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

Режимы установки с 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 to continue  ]

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

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

                                Message
Installation complete with some errors.  You may wish to scroll
through the debugging messages on VTY1 with the scroll-lock feature.
You can also choose "No" at the next prompt and go back into the
installation menus to retry whichever operations have failed.

                                 [ OK ]

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


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

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


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

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

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

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

                             [ Yes ]   No

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

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

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

Рисунок 2-28. Настройка сети для 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 Up the ed0 interface 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 с помощью вашего любимого текстового редактора. Обращайтесь к Разд. 25.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-29. Редактирование inetd.conf

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


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

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

                              Yes    [ No ]

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

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


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

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

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

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

Нажатие F1 отобразит справку:

This screen allows you to configure the anonymous FTP user.

The following configuration values are editable:

UID:     The user ID you wish to assign to the anonymous FTP user.
         All files uploaded will be owned by this ID.

Group:   Which group you wish the anonymous FTP user to be in.

Comment: String describing this user in /etc/passwd


FTP Root Directory:

        Where files available for anonymous FTP will be kept.

Upload subdirectory:

        Where files uploaded by anonymous FTP users will go.

Корневой каталог ftp по умолчанию будет размещен в /var. Если в нем предположительно не хватает места для для нужд FTP, можно использовать каталог /usr, выбрав корневой каталог FTP (FTP Root Directory) /usr/ftp.

Когда будут выбраны подходящие значения, нажмите Enter, чтобы продолжить.

                          User Confirmation Requested
         Create a welcome message file for anonymous FTP users?

                              [ Yes ]    No

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

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

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

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


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

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


2.10.5.1. Сервер NFS (NFS Server)

                       User Confirmation Requested
 Do you want to configure this machine as an NFS server?

                              Yes    [ No ]

Если вам не нужен NFS сервер, выберите [ No ] и нажмите Enter.

Если выбран пункт [ Yes ], появится сообщение, говорящее о том, что должен быть создан файл exports.

                               Message
Operating as an NFS server means that you must first configure an
/etc/exports file to indicate which hosts are allowed certain kinds of
access to your local filesystems.
Press [Enter] now to invoke an editor on /etc/exports
                               [ OK ]

Нажмите Enter, чтобы продолжить. Запустится текстовый редактор, позволяющий создать и отредактировать файл exports.

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

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

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


2.10.5.2. Клиент NFS (NFS Client)

NFS клиент позволяет организовать доступ к серверам NFS.

                       User Confirmation Requested
 Do you want to configure this machine as an NFS client?

                              Yes   [ No ]

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


2.10.6. Настройки системной консоли (System Console Settings)

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

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

                              [ Yes ]  No

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

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

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

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

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

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

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

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

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

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


2.10.7. Установка часового пояса (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-37. Выбор региона

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

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

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

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

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

                            Confirmation
            Does the abbreviation 'EDT' look reasonable?

                            [ Yes ]   No

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


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

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

                            [ Yes ]   No

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

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


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

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

                      User Confirmation Requested
         Does this system have a non-USB mouse attached to it?

                            [ Yes ]    No

Выберите [ Yes ] для не-USB мыши или [ No ] для USB мыши и нажмите Enter.

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

Рисунок 2-46. Верхняя часть меню настройки сети (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-47. Выбор MTA по умолчанию

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

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

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

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

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

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

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

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

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

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

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

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

Теперь, после настройки сетевых сервисов, вы можете прокрутить меню к верхнему пункту, Exit, и перейти к следующему разделу настройки.


2.10.11. Настройка X Сервера (Configure X Server)

Замечание: X сервер нужно будет настроить после установки FreeBSD. Более подробная информация, относящаяся к установке и настройке X сервера, находится в Гл. 5.

Чтобы использовать графический интерфейс пользователя KDE, GNOME, или другие, нужно настроить X сервер.


2.10.12. Установка пакетов (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-50. Выбор категории пакетов

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

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

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

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

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

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

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

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

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

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

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

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

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


2.10.13. Добавление пользователей/групп (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-54. Выбор User (пользователь)

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

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

При выборе полей с помощью 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-56. Выход из меню управления пользователями и группами

Сейчас также можно добавить группы, если известно, для чего они потребуются. Иначе в это меню можно войти, запустив sysinstall (/stand/sysinstall в FreeBSD версии 5.2 и более ранних) после окончания установки.

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


2.10.14. Установка пароля root

                        Message
 Now you must set the system manager's password.
 This is the password you'll use to log in as "root".

                         [ OK ]

               [ Press enter to continue ]

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

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

Changing local password for root.
New password :
Retype new password :


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


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

Если нужно настроить дополнительные сетевые устройства, или произвести другие настройки, вы можете сделать это сейчас или после установки с помощью sysinstall (/stand/sysinstall в FreeBSD версии 5.2 и более ранних).

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

                              Yes   [ No ]

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

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

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

                     User Confirmation Requested
 Are you sure you wish to exit? The system will reboot (be sure to
 remove any floppies from the drives).

                            [ Yes ]   No

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

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


2.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.16.2. Загрузка FreeBSD на Alpha

Когда процедура установки будет завершена, вы сможете запустить FreeBSD в приглашении SRM примерно такой командой:

>>>BOOT DKC0

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

>>> SET BOOT_OSFLAGS A
>>> SET BOOT_FILE ''
>>> SET BOOTDEF_DEV DKC0
>>> SET AUTO_ACTION BOOT

Загрузочные сообщения будут похожи (но не идентичны) сообщениям, выводимым FreeBSD при загрузке на i386.


2.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®

Многие пользователи устанавливают FreeBSD на PC с установленной операционной системой Microsoft. Для этих целей в FreeBSD есть утилита, называемая FIPS. Ее можно найти в каталоге tools установочного CD-ROM или загрузить с одного из множества зеркал FreeBSD.

Утилита FIPS позволит вам разделить существующий раздел MS-DOS на две части, сохранив имеющиеся данные, и сделать установку на второй свободный раздел. Вам потребуется сначала дефрагментировать раздел MS-DOS с помощью Windows утилиты Disk Defragmenter (запустите Explorer, кликните правой клавишей мыши на жестком диске и выберите дефрагментацию диска), или используйте Norton Disk Tools. Затем запустите утилиту FIPS. Она запросит необходимую информацию, следуйте инструкциям на экране. Затем можете перегрузиться и установить FreeBSD на новый свободный слайс. Смотрите меню Distributions для определения размера необходимого для выбранного типа установки свободного пространства.

Есть также очень полезная программа PartitionMagic от PowerQuest (http://www.powerquest.com). Эта программа гораздо более функциональна, чем FIPS, и очень рекомендуется, если вы планируете часто добавлять/убирать операционные системы. Она стоит денег, и если вы планируете установить FreeBSD и оставить ее, вам возможно отлично подойдет FIPS.


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

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

FreeBSD поддерживает файловые системы MS-DOS (FAT16 и FAT32). Для этого потребуется использовать команду mount_msdosfs(8) с необходимыми параметрами. Наиболее распространенный способ использования:

# mount_msdosfs /dev/ad0s1 /mnt

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

Замечание: Расширенные разделы MS-DOS обычно располагаются после разделов FreeBSD. Другими словами, номер слайса может быть больше, чем используемый FreeBSD. Например, первый раздел MS-DOS может быть /dev/ad0s1, раздел FreeBSD /dev/ad0s2, а расширенный раздел MS-DOS /dev/ad0s3. Некоторых это иногда запутывает на первых порах.

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


2.11.4. Вопросы и ответы пользователей Alpha

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

2.11.4.1. Могу я загрузиться с ARC или с консоли Alpha BIOS?
2.11.4.2. Помогите, у меня нет места! Должен ли я сначала все удалить?
2.11.4.3. Могу ли я смонтировать файловые системы Compaq Tru64 или VMS?

2.11.4.1. Могу я загрузиться с ARC или с консоли Alpha BIOS?

Нет. FreeBSD, как и Compaq Tru64 и VMS, может загружаться только с консоли SRM.

2.11.4.2. Помогите, у меня нет места! Должен ли я сначала все удалить?

К сожалению, да.

2.11.4.3. Могу ли я смонтировать файловые системы Compaq Tru64 или VMS?

В настоящее время нет.


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

Предоставлено Valentino Vaschetto.

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


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

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

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

  1. Включение загрузки с последовательной консоли

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

    # mount /dev/fd0 /mnt
    

    Теперь, когда дискета смонтирована, нужно перейти в каталог /mnt:

    # cd /mnt
    

    Сейчас вам нужно настроить дискету для загрузки в последовательную консоль. Создайте файл boot.config, содержащий /boot/loader -h. Это нужно для того, чтобы передать загрузчику флаг загрузки с последовательной консоли.

    # echo "/boot/loader -h" > boot.config
    

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

    # cd /
    # umount /mnt
    

    Теперь удалите дискету из дисковода.

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

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

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

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

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

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

    # cu -l /dev/cuaa0
    

Это все! Теперь вы можете управлять компьютером без монитора через сессию cu. Будет запрошен диск kern1.flp, затем появится выбор типа терминала. Выберите цветную консоль 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-архитектура/версия или с ближайшего зеркала. Замените архитектура и версия в соответствии архитектурой (Alpha или i386) и номером релиза соответственно.

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

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

    Имя файла Содержимое
    version-RELEASE-arch-bootonly.iso Всё, что вам нужно, чтобы загрузить ядро FreeBSD и войти в интерфейс установки. Установочные файлы загружаются с FTP или другого поддерживаемого источника.
    version-RELEASE-arch-disc1.iso Всё, что вам нужно для установки FreeBSD и ''живой файловой системы'', которая используется вместе с функцией ''Repair'' программы sysinstall.
    version-RELEASE-arch-disc2.iso Документация по FreeBSD (до релиза FreeBSD 6.2) и пакеты сторонних разработчиков, которые смогли поместиться на диск.
    version-RELEASE-arch-docs.iso Документация FreeBSD (для FreeBSD 6.2 и более поздних релизов).

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

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

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

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

  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 или 1.2 MB дискет, сколько нужно, чтобы вместить все файлы из каталога bin (binary 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

Замечание: Используйте fd0.1200 и floppy5 для 5.25" 1.2 MB дискет.

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

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

Как только в процессе установки появится экран Media, выберите Floppy и установка продолжится.


2.13.4. Установка с раздела MS-DOS

Чтобы подготовиться к установке с раздела MS-DOS, скопируйте файлы с дистрибутива в каталог freebsd корневого каталога раздела. Например, c:\freebsd. Структура каталога CDROM или сервера FTP должна быть в точности воспроизведена в этом каталоге, мы предлагаем использовать команду DOS xcopy если вы копируете дистрибутив с CD. Например, чтобы подготовить минимальную установку FreeBSD:

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

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

Если у вас нет CDROM, можно загрузить дистрибутив с ftp.FreeBSD.org. Каждый компонент находится в своем собственном каталоге, например компонент base можно найти в каталоге 8.0/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 контроллер), последовательный порт (SLIP или PPP), или параллельный порт (PLIP (laplink кабель)).

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

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

Поддержка SLIP немного примитивна, и ограничена в основном постоянными соединениями, такими как последовательный кабель между ноутбуком и другим компьютером. Соединение должно быть постоянным, так как устанавливаемый SLIP в настоящее время не имеет возможности дозвона; эта возможность предоставляется программой PPP, которая должна быть использована вместо SLIP когда это возможно.

Если вы используете модем, 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.0 находится на: 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.4. За информацией о настройке 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.4.

Для сборки и установки 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

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

# Xorg -configure

При этом в каталоге /root будет создан скелет конфигурационного файла X11 под именем xorg.conf.new (там, куда после su(1) или непосредственного входа будет указывать переменная $HOME). Программа X11 сделает попытку распознать графическое оборудование системы и запишет конфигурационный файл, загружающий правильные драйверы для обнаруженного оборудования в системе.

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

# Xorg -config xorg.conf.new

Если появилась чёрно-белая сетка и курсор мыши в виде X, то настройка была выполнена успешно. Для завершения тестирования просто нажмите одновременно Ctrl+Alt+Backspace.

Замечание: Если мышь не работает, ее необходимо настроить. Обратитесь к Разд. 2.10.9 в главе об установке FreeBSD.

Теперь выполните тонкую настройку в файле xorg.conf.new по своему вкусу. Откройте файл в текстовом редакторе, таком, как emacs(1) или ee(1). Сначала задайте частоты для монитора. Они обычно обозначаются как частоты горизонтальной и вертикальной синхронизации. Эти значения добавляются в файл XF86Config.new в раздел "Monitor":

Section "Monitor"
        Identifier   "Monitor0"
        VendorName   "Monitor Vendor"
        ModelName    "Monitor Model"
        HorizSync    30-107
        VertRefresh  48-120
EndSection

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

X позволяет использовать возможности технологии DPMS (Energy Star) с поддерживающими её мониторами. Программа xset(1) управляет временными задержками и может явно задавать режимы ожидания, останова и выключения. Если вы хотите включить использование возможностей DPMS вашего монитора, вы должны добавить следующую строку в раздел, описывающий монитор:

Option       "DPMS"

Пока файл конфигурации 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).

Замечание: Имеется также графический инструмент для настройки, xorgcfg(1), который включён в дистрибутив X11. Он позволяет выполнить настройку в интерактивном режиме посредством выбора соответствующих драйверов и настроек. Эта программа может быть запущена в консоли командой xorgcfg -textmode. Для получения более полной информации обратитесь к странице справочной системы xorgcfg(1).

Кроме того, существует программа настройки xorgconfig(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), предоставляющий такие же возможности для пользователей (смотрите Разд. 22.3.2 для подробной информации). И это именно так, XDM производит вход в систему для подключенного пользователя и запускает управляющую сессию для пользователя (обычно это менеджер окон X). После этого XDM ожидает завершения приложения, означающее завершение пользователем работы и отключает управляющую сессию. Затем XDM может снова вывести приглашение к входу в систему и ожидать входа другого пользователя.


5.6.2. Использование XDM

Программой даемона XDM является /usr/local/bin/xdm. Эта программа может быть запущена от пользователя root в любой момент, и она начнёт управлять дисплеем X на локальной машине. Если XDM нужно запускать в фоновом режиме каждый раз при запуске компьютера, то наиболее правильный способ -- это добавить новую запись в /etc/ttys. Для более подробной информации о формате и использовании этого файла смотрите Разд. 22.3.2.1. Вот строка, которую необходимо добавить в файл /etc/ttys для того, чтобы запустить даемон XDM на виртуальном терминале:

ttyv8  "/usr/local/bin/xdm -nodaemon"  xterm   off secure

По умолчанию эта запись отключена; для её включения нужно заменить пятое поле с off на on и перезапустить init(8), используя метод, описанный в Разд. 22.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:

! SECURITY: do not listen for XDMCP or Chooser requests
! Comment out this line if you want to manage X terminals with xdm
DisplayManager.requestPort:     0

и потом перезапустите XDM. Помните, что комментарии в файлах app-defaults начинаются с символа ''!'', а не как обычно, ''#''. Может потребоваться более жёсткий контроль доступа -- взгляните на примеры из Xaccess и обратитесь к странице справочника xdm(1) за дальнейшей информацией.


5.6.5. Замены для XDM

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


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

Ещё одним вариантом является настройка менеджера дисплеев таким образом, чтобы он позволял выбирать оконный менеджер во время входа в систему; в разделе о KDE2 в подробностях описывается, как сделать это для 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.


5.7.2.2. Установка KDE

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

Для установки пакета KDE из сети, просто наберите:

# pkg_add -r kde

pkg_add(1) автоматически загрузит самую последнюю версию приложения.

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

# cd /usr/ports/x11/kde3
# make install clean

После установки KDE нужно указать X-серверу на запуск этого приложения вместо оконного менеджера, используемого по умолчанию. Это достигается редактированием файла .xinitrc:

% echo "exec startkde" > ~/.xinitrc

Теперь при вызове X Window System по команде startx в качестве оболочки будет использоваться KDE.

При использовании менеджера дисплеев типа XDM настройка несколько отличается. Вместо этого нужно отредактировать файл .xsession. Указания для kdm описаны далее в этой главе.


5.7.3. Более подробно о KDE

Теперь, когда KDE установлена в системе, можно узнать много нового из её справочных страниц или просто указанием и щелканьем по различным меню. Пользователи Windows или Mac® будут чувствовать себя как дома.

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


5.7.3.1. Менеджер дисплеев KDE

Администратору многопользовательской системы может потребоваться графический экран для входа пользователей в систему. Вы можете использовать XDM, как это описано ранее. Однако в KDE имеется альтернативный менеджер kdm, который был разработан более привлекательным и с большим количеством настраиваемых опций для входа в систему. В частности, пользователи могут легко выбирать (посредством меню), какую оболочку (KDE, GNOME или что-то ещё) запускать после входа в систему.

Для того, чтобы разрешить запуск kdm, измените в файле /etc/ttys строку, относящуюся к консоли ttyv8:

ttyv8 "/usr/local/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. Если вам нужна электронная почта, обратитесь к Гл. 24.


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

Наконец, существует несколько многообещающих приложений, которые читатель может испробовать:


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. Сборка и установка собственного ядра

Во-первых, давайте сделаем краткий обзор каталога, в котором будет происходить сборка ядра. Все каталоги, которые будут упоминаться, будут относительными по отношению к основному каталогу /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

Эта переменная устанавливает список модулей, которые нужно построить вместо построения всех модулей. За другими переменными, которые вы можете посчитать полезными в процессе сборки ядра, обращайтесь к странице справочника make.conf(5).

Новое ядро будет скопировано в каталог /boot/kernel как /boot/kernel/kernel, а старое ядро будет перемещено в /boot/kernel.old/kernel. Теперь перезагрузите систему для того, чтобы использовать новое ядро. Если что-то пойдёт не так, вы можете обратиться к разделу Решение проблем в конце этой главы, который может оказаться полезен. Не забудьте прочитать раздел, который объясняет как исправить ситуацию, когда ядро не загружается.

Замечание: Другие файлы, относящиеся к процессу загрузки, такие как загрузчик (loader(8)) и его конфигурационные файлы, размещаются в /boot. Модули сторонних производителей могут быть помещены в /boot/kernel, хотя пользователи должны знать, что очень важно, чтобы модули были синхронизированы с собранным ядром. Модули, не рассчитанные на работу с собранным ядром, могут вызвать нестабильность и некорректность работы.


8.4. Конфигурационный файл

Обновил для FreeBSD 6.X Joel Dahl.

Формат конфигурационного файла достаточно прост. Каждая строка представляет собой ключевое слово и один или более аргументов. Для простоты большинство строк содержат только один аргумент. Всё, что следует за символом # является комментарием и игнорируется. Следующие разделы описывают каждый параметр, в порядке, в котором они появляются в GENERIC. За полным списком архитектурно-зависимых параметров и устройств обратитесь к файлу NOTES в том же каталоге, что и GENERIC. Архитектурно независимые параметры находятся в /usr/src/sys/conf/NOTES.

Замечание: В FreeBSD 5.X и более поздних версиях вы все еще можете создать собираемый LINT, выполнив:

Для сборки ядра со всеми возможными опциями (обычно используется для тестирования), выполните от имени суперпользователя (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

Обычный процесс сборки FreeBSD включает генерацию отладочной информации (опцию -g gcc(1)) при сборке ядра. Того же самого эффекта можно добиться используя опцию config(8) -g, в случае, если вы используете ''традиционный'' способ сборки ядра (обратитесь к Разд. 8.3 за дополнительной информацией).

options          SCHED_4BSD         # 4BSD 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          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

Этот параметр относится к клавиатуре. Он добавляет CDEV в /dev.

options          AHC_REG_PRETTY_PRINT     # Print register bitfields in debug
                                          # output.  Adds ~128k to driver.
options          AHD_REG_PRETTY_PRINT     # Print register bitfields in debug
                                          # output.  Adds ~215k to driver.

Распечатка регистров для облегчения отладки.

options          ADAPTIVE_GIANT    # Giant mutex is adaptive.

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

device          apic               # I/O APIC

Устройство apic разрешает использование набора I/O APIC для распределения прерываний. Оно может быть использовано как с однопроцессорными, так и с многопроцессорными ядрами (для последних наличие apic является обязательным). Для поддержки многопроцессорности добавьте строку options SMP.

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
device          ahd        # AHA39320/29320 and onboard AIC79xx devices
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)
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 устройства, вы можете удалить все эти строки.

# 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. Чаще всего используется в лэптопах, хотя в ядре GENERIC FreeBSD 5.X и выше отключена по умолчанию.

# 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      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          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
device          an         # Aironet 4500/4800 802.11 wireless NICs.
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          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.4.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.

  • KLD модули не могут быть загружены в ядро с включенной поддержкой PAE из-за разницы в окружении для сборки модулей и самого ядра.

  • Драйверы устройств, которые не используют интерфейс bus_dma(9), приведут к повреждению информации в ядре с включенным PAE. Не рекомендуется использовать такие драйверы. По этой причине в FreeBSD включен конфигурационный файл ядра PAE, из которого удалены все драйверы, о которых известно, что они не работают при включенной поддержке PAE.

  • Некоторые системные переменные определяют использование ресурсов памяти по количеству доступной физической памяти. Такие переменные могут привести к ненужному чрезмерному выделению памяти из-за особенностей работы системы PAE. Один из таких примеров -- переменная kern.maxvnodes, которая управляет максимальным количеством vnode, разрешенных в ядре. Рекомендуется установить эту и подобные ей переменные вручную в адекватные значения.

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

В случае сомнений относительно производительности и стабильности рекомендуется обратиться к странице руководства tuning(7). Страница руководства pae(4) содержит свежую информацию о поддержке PAE в FreeBSD.


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

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

Не удаётся отработать команде 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 -- самая сложная часть. Расширенные опции, вроде выдачи страниц заголовков и учета использования, установить несложно, как только принтер заработает.


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
    

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

  2. Введите команду:

    # lptcontrol -p -d /dev/lptN
    

    для установки режима взаимодействия по опросу для lptN.

Вы можете поместить эти команды в файл /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/cuaaN вместо /dev/ttydN.

  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

Для этой установки был использован DellPowerEdge™ 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 sidadm sapsys oper Администратор SAP
1002 oraids/oraprd orasid 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

Затем, мы создадим каталоги от имени пользователя orasid. Все они будут размещены в каталоге /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 числом или другим символом.

На третьем шаге мы создаем каталоги от имени пользователя sidadm:

# 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' для пользователей orasid и sidadm (и для пользователя 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 sidadm [1000] Enter
Enter User-ID of orasid [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 (создание пользователя orasid) и OSUSERSIDADM_IND_ORA (создание пользователя sidadm).

За исключением некоторых упомянутых далее проблем, все должно идти нормально до момента, когда придется устанавливать программное обеспечение для работы с базой данных 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 (sidadm) и oraids (orasid). У них обоих должны теперь быть файлы .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) от имени пользователя orasid следующим образом:

% 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. Редактирование initsid.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 (как пользователь orasid с помощью команды 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/DVEBMGSnr/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 в Список рассылки, посвящённый неформальным беседам о 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, как и любой другой