C:\> tools\fdimage floppies\kern.flp A:
Руководство FreeBSD
Этот перевод может быть устаревшим. Для того, чтобы помочь с переводом, пожалуйста, обратитесь к Сервер переводов FreeBSD.
товарные знаки
FreeBSD является зарегистрированным товарным знаком Фонда FreeBSD.
IBM, AIX, OS/2, PowerPC, PS/2, S/390 и ThinkPad являются товарными знаками International Business Machines Corporation в Соединённых Штатах, других странах, или по всему миру.
IEEE, POSIX и 802 являются зарегистрированными товарными знаками Institute of Electrical and Electronics Engineers, Inc. в Соединённых Штатах.
Red Hat и RPM это торговые марки или зарегистрированные торговые марки Red Hat, Inc. в Соединенных Штатах и других странах.
3Com и HomeConnect это зарегистрированные торговые марки 3Com Corporation.
Adobe, Acrobat, Acrobat Reader и PostScript это или зарегистрированные торговые марки или торговые марки Adobe Systems Incorporated в Соединенных Штатах и/или других странах.
Apple, AirPort, FireWire, Mac, Macintosh, Mac OS, Quicktime и TrueType это торговые марки Apple Computer, Inc., зарегистрированные в Соединенных Штатах и других странах.
Intel, Celeron, EtherExpress, i386, i486, Itanium, Pentium и Xeon это торговые марки или зарегистрированные торговые марки Intel Corporation или ее дочерних компаний в Соединенных Штатах и других странах.
Linux является торговым знаком Linus Torvalds.
Microsoft, FrontPage, IntelliMouse, MS-DOS, Outlook, Windows, Windows Media и Windows NT это или зарегистрированные торговые марки или торговые марки Microsoft Corporation в Соединенных Штатах и/или других странах.
Motif, OSF/1 и UNIX это зарегистрированные торговые марки, а IT DialTone и The Open Group это торговые марки Open Group в Соединенных Штатах и других странах.
Sun, Sun Microsystems, Java, Java Virtual Machine, JDK, JRE, JSP, JVM, Netra, Solaris, StarOffice, SunOS это торговые марки или зарегистрированные торговые марки Sun Microsystems, Inc. в Соединенных Штатах и других странах.
RealNetworks, RealPlayer и RealAudio это зарегистрированные торговые марки RealNetworks, Inc.
Oracle это зарегистрированная торговая марка Oracle Corporation.
3ware и Escalade это зарегистрированные торговые марки 3ware Inc.
ARM это зарегистрированная торговая марка ARM Limited.
Adaptec это зарегистрированная торговая марка Adaptec, Inc.
Android является товарным знаком Google Inc.
Heidelberg, Helvetica, Palatino и Times Roman это или зарегистрированные торговые марки или торговые марки Heidelberger Druckmaschinen AG в США и других странах.
Intuit и Quicken это зарегистрированные торговые марки и/или зарегистрированные сервис марки Intuit Inc., или одной из ее дочерних компаний в Соединенных Штатах и других странах.
LSI Logic, AcceleRAID, eXtremeRAID, MegaRAID и Mylex является товарными знаками или зарегистрированные торговыми марками LSI Logic Corp.
MATLAB является товарным знаком MathWorks, Inc.
SpeedTouch является товарным знаком Thomson.
VMware является товарным знаком VMware, Inc.
Mathematica является товарным знаком Wolfram Research, Inc.
Ogg Vorbis и Xiph.Org являются товарными знаками Xiph.Org.
XFree86 является товарным знаком XFree86 Project, Inc.
Многие из обозначений, используемые производителями и продавцами для обозначения своих продуктов, заявляются в качестве товарных знаков. Когда такие обозначения появляются в этом документе, и Проекту FreeBSD известно о товарном знаке, к обозначению добавляется знак “™” или “®”.
Содержание
Аннотация
Добро пожаловать в FreeBSD! Это руководство охватывает установку и повседневное использование FreeBSD 14.2-RELEASE и 13.4-RELEASE. Эта книга является результатом совместной работы многих людей. Некоторые разделы могут быть устаревшими. Те, кто хочет помочь обновить и расширить этот документ, могут отправить электронное письмо на Список рассылки Проекта Документации FreeBSD.
Последняя версия этой книги доступна на веб-сайте FreeBSD. Предыдущие версии можно получить по адресу https://docs.FreeBSD.org/doc/. Книгу можно скачать в различных форматах и с различными опциями сжатия с сервера загрузки FreeBSD или с одного из многочисленных зеркальных сайтов. Поиск можно выполнить по этому руководству и другим документам на странице поиска.
Предисловие
Целевая аудитория
Начинающим пользователям FreeBSD будет полезна первая часть этой книги, которая проводит читателя через процесс установки FreeBSD и ненавязчиво объясняет концепции и соглашения, на которых базируется UNIX®. Работа с этой частью требует несколько большего, чем желания исследовать и способности принятия новых концепций по мере их описания.
Если вы преодолеете все сложности, то вас будет ждать вторая, много большая часть Руководства, которая является всеобъемлющим справочником обо всех темах, которые могут интересовать администраторов FreeBSD. Некоторые из глав этой части могут рекомендовать вам предварительное изучение других материалов, о чём упоминается в кратком обзоре в начале каждой главы.
Список рекомендуемой дополнительной литературы вы можете найти в Библиографии.
Четвёртое издание
Актуальная версия Руководства является результатом усилий рабочей группы, которая занималась рецензированием и обновлением содержимого документа. Вот те ключевые изменения, появившиеся после выхода четвёртого издания Руководства:
Выполнен перевод формата Руководства с Docbook на Hugo и AsciiDoctor
Создан Портал документации FreeBSD.
Добавлена глава Wayland, описывающая установку и настройку Wayland во FreeBSD.
Существенно дополнена Библиография.
Третье издание
Текущая онлайновая версия Руководства является результатом совместных усилий многих сотен добровольных участников за последние 10 лет. Ниже перечисляются некоторые значимые изменения, появившиеся после публикации двухтомного третьего издания в 2004 году:
Добавлена глава WINE, описывающая порядок запуска приложений Windows® во FreeBSD.
Добавлена глава DTrace, содержащая информацию о мощном инструменте анализа производительности DTrace.
Добавлена глава Другие файловые системы, содержащая информацию о поддержке прочих файловых систем во FreeBSD, таких как ZFS от компании Sun™.
Добавлена глава Аудит Событий Безопасности, посвящённая новым возможностям аудита во FreeBSD и описывающая его использование.
Добавлена глава Виртуализация с информацией об установке FreeBSD в виртуализированном программном окружении.
Добавлена глава Установка FreeBSD, описывающая установку FreeBSD при помощи новой установочной утилиты bsdinstall.
Второе издание (2004)
Третье Издание являлось кульминацией более чем двух лет работы отдельных членов проекта документации FreeBSD. Печатная версия выросла до размера, потребовавшего публикации в виде двух отдельных томов. Вот основные изменения в новой редакции:
Глава Настройка и оптимизация была расширена новой информацией о стандарте ACPI управления электропитанием и ресурсами, системной утилите
cron
и дополнительных параметрах оптимизации ядра.Глава Безопасность была дополнена новой информацией о виртуальных частных сетях (VPN), списках контроля доступа файловой системы (ACL) и бюллетенях безопасности.
Глава Принудительный контроль доступа (MAC) является новой главой этого Издания. Она описывает, что такое MAC и как этот механизм может быть использован для защиты системы FreeBSD.
Глава Устройства хранения была расширена новой информацией об устройствах хранения USB, образах файловой системы, квотах файловой системы, файловых системах в файлах и в сети, а также зашифрованных дисковых разделах.
К главе PPP и SLIP был добавлен раздел об устранении неполадок.
Глава Электронная почта была дополнена новой информацией об использовании альтернативных транспортных агентов, аутентификации SMTP, UUCP, fetchmail, procmail и другими темами повышенной сложности.
Глава Сетевые серверы появилась в этой редакции. В неё включена информация о настройке Apache HTTP Server и ftpd, а также настройке сервера Samba для работы с клиентами Microsoft® Windows®. Некоторые разделы были перемещены сюда из главы Сложные вопросы работы в сети.
Глава Сложные вопросы работы в сети была расширена новой информацией об использовании устройств Bluetooth® во FreeBSD, настройке беспроводных сетей, и сетях Asynchronous Transfer Mode (ATM).
Был добавлен глоссарий, объединяющий информацию о технических терминах, используемых в книге.
Множество эстетических улучшений были внесены в таблицы и иллюстрации этой книги.
Первое издание (2001)
Вторая редакция стала кульминацией более чем двухлетней работы членов Проекта документации FreeBSD. Нижеследующий список перечисляет все значительные изменения, внесённые в эту редакцию:
Был добавлен полный указатель тем.
Все ASCII-иллюстрации были заменены на графические.
Был добавлен стандартный краткий обзор к каждому разделу для того, чтобы читатель мог получить представление о содержании раздела и о том, что необходимо знать для его изучения.
Содержимое было логически реорганизовано на три части: "В Начале", "Системное администрирование" и "Приложения".
Глава Основы FreeBSD была расширена и содержит дополнительную информацию о процессах, даемонах и сигналах.
Глава Установка приложений была расширена и содержит дополнительную информации об управлении бинарными пакетами.
Глава X Window System была полностью переписана и обращает больше внимания на современные технологии для рабочего стола, такие, как KDE и GNOME на XFree86™ 4.X.
Глава Процесс загрузки FreeBSD была расширена.
Глава Устройства хранения была составлена из того, что раньше было двумя различными главами: "Диски" и "Резервное копирование". Мы считаем, что данные темы будут проще и более полно описаны как одна глава. Был добавлен раздел о программном и аппаратном RAID.
Глава Последовательные соединения была полностью реорганизована и обновлена для FreeBSD 4.X/5.X.
Глава PPP и SLIP была существенно обновлена.
Было добавлено множество новых разделов в главу Сложные вопросы работы в сети.
Глава Электронная почта была расширена, теперь она включает больше информации о настройке sendmail.
Глава Двоичная совместимость с Linux была дополнена включением информации об установке Oracle® и SAP® R/3®.
Следующие новые темы были рассмотрены в этой, второй, редакции:
Структура этой книги
Эта книга разбита на пять частей. В первой части, В начале, рассматривается установка и основные навыки использования FreeBSD. Предполагается, что читатель освоит эти разделы последовательно, возможно пропуская разделы, в которых обсуждаются уже знакомые для него темы. Вторая часть, Общие задачи, рассказывает о некоторых наиболее часто используемых возможностях FreeBSD. Этот раздел и все последующие могут быть прочитаны не по порядку. Каждая глава начинается с краткого обзора, который описывает, о чём говорится в ней и что читатель должен будет знать для прочтения этой главы. Это сделано для того, чтобы случайно встретивший этот материал читатель мог найти разделы, которые его интересуют. В третьей части, Системное администрирование, рассмотрены вопросы администрирования. В четвертой части, Сетевые коммуникации, охвачены темы, связанные с серверами и сетью. Пятая часть содержит приложения и справочную информацию.
- Введение
Знакомит пользователя с FreeBSD. Рассказывает об истории проекта FreeBSD, его задачах и модели разработки.
- Установка FreeBSD
Проводит пользователя через весь процесс установки FreeBSD 9.x и более поздних версий с использованием sysinstall.
- Основы FreeBSD
Рассказывает об основных командах и функциональности операционной системы FreeBSD. Если вы знакомы с Linux® или другой UNIX®-подобной операционной системой, возможно, вы пропустите эту главу.
- Установка приложений
Рассказывает о процессе установки программного обеспечения сторонних производителей с использованием "Коллекции Портов FreeBSD" и стандартных бинарных пакетов.
- X Window System
Описывает X Window System вообще и использование X11 под управлением FreeBSD в частности. Также описывает популярные окружения рабочего стола, такие как KDE и GNOME.
- Wayland
Описывает сервер дисплеев Wayland в целом и использование Wayland во FreeBSD в частности. Также рассказывает о популярных композитных менеджерах, таких как Wayfire, Hikari и Sway.
- Приложения для настольного компьютера
Перечисляет некоторые популярные приложения для рабочей станции, такие как веб-браузеры и офисные пакеты и описывает процесс их установки на FreeBSD.
- Мультимедиа
Показывает, как настроить поддержку воспроизведения звука и видео на вашей системе. Также описывает некоторые примеры приложений для воспроизведения звука и видео.
- Настройка ядра FreeBSD
Объясняет, почему вам может понадобиться перенастроить ядро и детально описывает процесс настройки, сборки и установки нового ядра.
- Печать
Рассказывает об управлении принтерами в FreeBSD, включая информацию об титульных страницах, учёте использования принтеров и первоначальной настройке.
- Двоичная совместимость с Linux®
Описывает возможности Linux®-совместимости во FreeBSD. Также содержит подробные инструкции по установке многих популярных приложений для Linux®, таких как Oracle® и Mathematica®.
- WINE
Описывает WINE и содержит подробные инструкции по установке. Также рассказывает о том, как работает WINE, как установить вспомогательный модуль для GUI, как запускать приложения Windows® во FreeBSD, и содержит другие советы и решения.
- Настройка и оптимизация
Описывает всевозможные параметры настройки FreeBSD, которые может использовать системный администратор для оптимальной настройки системы. Также описывает различные конфигурационные файлы, используемые в FreeBSD и расположение этих файлов на диске.
- Процесс загрузки FreeBSD
Рассказывает о процессе загрузки FreeBSD и объясняет, как управлять этим процессом при помощи различных настроек.
- Безопасность
Описывает множество различных утилит, которые помогут вам поддерживать FreeBSD в безопасном, надёжном состоянии, включая Kerberos, IPsec и OpenSSH.
- Изоляторы
Описывает технологию изоляции и преимущества изоляторов перед традиционной технологией chroot, поддерживаемой во FreeBSD.
- Принудительный контроль доступа (MAC)
Описывает что такое принудительный контроль доступа (Mandatory Access Control, MAC) и как этот механизм может быть использован для защиты системы FreeBSD.
- Аудит Событий Безопасности
Описывает, что представляет из себя Аудит Событий FreeBSD, как его можно установить и настроить, а также то, как можно анализировать или отслеживать аудиторские следы.
- Устройства хранения
Описывает как управлять накопителями информации и файловыми системами в FreeBSD, включая физические диски, массивы RAID, оптические и ленточные носители, диски в оперативной памяти и сетевые файловые системы.
- GEOM
Рассказывает о подсистеме GEOM в FreeBSD и описывает различные поддерживаемые уровни RAID.
- Платформа хранения OpenZFS
Описывает платформу хранения OpenZFS и содержит руководство по её быстрому запуску, а также информацию о сложных вопросах эксплуатации OpenZFS под управлением FreeBSD.
- Поддержка файловых систем
Рассматривает поддержку дополнительных файловых систем во FreeBSD, таких как ext2, ext3 и ext4.
- Виртуализация
Описывает возможности систем виртуализации и то, как они могут использоваться с FreeBSD.
- Локализация - использование и настройка i18n/L10n
Описывает использование FreeBSD с языками, отличными от английского. Рассказывает о локализации на уровне системы и отдельных приложений.
- Обновление системы и смена версии FreeBSD
Объясняет различия между FreeBSD-STABLE, FreeBSD-CURRENT и FreeBSD-RELEASE. Рассказывает, кому из пользователей будет полезно отслеживать версию системы в разработке и вкратце описывает этот процесс. Описывает методы, которык могут быть применены пользователями для обновления их систем до самой последнего безопасного релиза.
- DTrace
Описывает порядок настройки и использования инструмента DTrace компании Sun™ во FreeBSD. Динамическая трассировка может помочь в локализации проблем с производительностью за счёт выполнения анализа системы в реальном режиме времени.
- USB Device Mode / USB OTG
Описывает использование USB Device Mode и USB On The Go (USB OTG) во FreeBSD.
- PPP и SLIP
Описывает использование PPP для соединения с удалёнными системами во FreeBSD.
- Электронная почта
Описывает использование различных компонентов почтового сервера и более углублённо рассматривает простые вопросы конфигурации для наиболее популярного программного обеспечения почтовых серверов: sendmail.
- Сетевые серверы
Предоставляет детальные инструкции и примеры файлов настройки для использования компьютера с FreeBSD в качестве файлового сервера (NFS), сервера доменных имен (DNS), сервера сетевой информационной системы (NIS), или сервера точного времени (ntpd).
- Межсетевые экраны
Описывает принципы, на которых основаны программные брандмауэры, и содержит детали конфигурирования различных брандмауэров, доступных в FreeBSD.
- Сложные вопросы работы в сети
Рассматривает множество вопросов работы с сетью, включая совместный доступ компьютеров вашей локальной сети к интернет, расширенные вопросы маршрутизации, беспроводные соединения, Bluetooth®, ATM, IPv6 и многое другое.
- Получение FreeBSD
Перечисляет различные источники, из которых можно получить FreeBSD на CDROM или DVD, равно как и различные сайты в интернет, с которых можно скачать и установить FreeBSD.
- Библиография
Эта книга касается многих различных тем, которые могут сподвигнуть вас на более детальное изучение. Библиография перечисляет множество отличных книг, упоминаемых в тексте.
- Ресурсы в Интернет
Описывает множество форумов, доступных для пользователей FreeBSD, где можно задать вопросы и поучаствовать в технических обсуждениях FreeBSD.
- Ключи PGP
Содержит ключи PGP некоторых разработчиков FreeBSD.
Договоренности, используемые в этой книге
Для того чтобы обеспечить целостность и простоту чтения текста в данной книге, мы применяем некоторые договорённости.
Типографические договорённости
- Наклонный шрифт
Наклонный шрифт используется для имен файлов, адресов в интернет (URL), выделенного текста и первого применения технических терминов.
Моноширинный шрифт
Моноширинных шрифт
используется для сообщений об ошибках, команд, имен пользователей, названий групп, названий устройств, переменных и фрагментов кода.- Полужирный шрифт
Полужирный шрифт используется для обозначения приложений, команд и комбинаций клавиш.
Пользовательский ввод
Клавиши представляются в виде полужирного текста для того, чтобы выделяться среди остального текста.
Комбинации клавиш, которые должны вводиться одновременно, разделяются символом +
, например:
Ctrl+Alt+Del
Это будет означать, что пользователь должен нажать клавиши Ctrl, Alt и Del одновременно.
Комбинации клавиш, которые должны вводиться последовательно, разделяются запятыми, например:
Ctrl+X, Ctrl+S
Это будет означать, что пользователь должен нажать Ctrl и X одновременно, после чего одновременно нажать Ctrl и S.
Примеры
Примеры, которые начинаются с C:\>, обозначают команды MS-DOS®. Если не указано обратного, эти команды могут вводиться из окна "Командная строка" в современных системах Microsoft® Windows®.
Примеры, которые начинаются с # обозначают команды, которые должны быть запущены с правами суперпользователя в 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 при подготовке к третьей редакции. Третье печатное издание было разделено на два тома. Оба тома были опубликованы и получили названия The FreeBSD Handbook 3rd Edition Volume 1:User Guide (ISBN 1-57176-327-9) и The FreeBSD Handbook 3rd Edition Volume 2: Administrators Guide (ISBN 1-57176-328-7).
Часть I: В начале
Эта часть Руководства Пользователя FreeBSD предназначена для пользователей и администраторов - новичков в FreeBSD. Эти главы:
Введут вас в FreeBSD.
Проведут вас по процессу установки FreeBSD.
Обучат вас некоторым основам UNIX®.
Покажут вам как устанавливать программные пакеты не входящие в стандартную поставку FreeBSD.
Введут вас в X Window, оконную систему для UNIX®, и опишут как настроить графическое окружение и сделать вашу работу более продуктивной.
Мы попытались сократить множество ссылок в тексте до минимума для того, чтоб вы могли прочитать этот раздел Руководства с начала до конца с минимумом перелистываний страниц.
Глава 1. Введение
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, см. в Получение FreeBSD.
1.3. О Проекте FreeBSD
В следующей части рассказывается о том, что из себя представляет проект, включая краткую историю, цели проекта и модель разработки проекта.
1.3.1. Краткая история FreeBSD
Проект 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. Самый последний релиз 11.2-RELEASE был выпущен June 28, 2018. Из ветви RELENG_5 релизы больше выпускаться не будут.
Очередная ветвь, RELENG_6, была создана в июле 2005 года. 6.0-RELEASE, первый релиз из этой ветви, был выпущен в ноябре 2005 года. Последний из релизов ветви RELENG_6, 12.0-RELEASE, был выпущен December 11, 2018. Из ветви RELENG_6 будут выпускаться еще релизы.
На данный момент, долговременные разработки и проекты продолжаются в ветке 7.X-CURRENT, и по ходу разработки будут доступны снэпшот-релизы 7.X на CDROM (и, конечно же, в сети), постоянно выкладываемые на сервер снэпшотов как промежуточные результаты.
1.3.2. Цели Проекта FreeBSD
Целью Проекта FreeBSD является предоставление программного обеспечения, которое может быть использовано для любых целей и без дополнительных ограничений. Многие из нас внесли значительный вклад в код (и проект) и совершенно не против получать за это иногда финансовую компенсацию, но мы определенно не собираемся ее требовать. Мы верим, что первая и основная наша "миссия" это предоставление кода для всех, кому он необходим, и для любых целей, так чтобы этот код становился всё более распространённым и предоставлял самые широкие возможности. Это, я верю, является одной из наиболее фундаментальных целей Свободного Программного Обеспечения, и мы с энтузиазмом поддерживаем её.
Тот код в нашем дереве исходных текстов, который попадает под Стандартную Общественную Лицензию GNU (GPL) или Стандартную Общественную Лицензию Ограниченного Применения GNU (LGPL), предоставляется с дополнительными условиями, хотя они обеспечивают только возможность доступа, а не его ограничение. По причине дополнительных сложностей, которые могут появится при коммерческом использовании GPL-продуктов, мы предпочитаем ПО, предоставленное под более свободной лицензией BSD, когда это возможно.
1.3.3. Модель Разработки FreeBSD
Разработка 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). Если что-то произошло с системой, вы можете достучаться до них посылкой письма по адресу Список рассылки коммиттеров FreeBSD.- Core-группа FreeBSD
Core-группа FreeBSD могла бы быть эквивалентом Совета Директоров, если бы Проект FreeBSD был компанией. Главная задача Core-группы - гарантировать, что проект в целом в хорошем состоянии и движется в правильном направлении. Приглашение постоянных и ответственных разработчиков присоединиться к группе коммиттеров - одна из функций Core-группы, так же, как и приглашение новых членов в Core-группу по мере того, как другие уходят. Нынешний состав команды был выбран из рядов коммиттеров путем общего голосования в июле 2006 года. Выборы проходят каждые 2 года.
Некоторые члены Core-группы имеют особые области ответственности, то есть, они являются ответственными за работу отдельной большой части системы. Полный список разработчиков FreeBSD и областей их ответственности можно найти в Списке участников.
Большинство членов Core-группы - волонтёры, и не получают никакой финансовой выгоды от участия в проекте, поэтому вы не должны рассматривать возложенную на них "ответственность" как "гарантированную поддержку". Аналогия с "советом директоров" не очень точна и, вероятно, гораздо правильнее будет сказать, что это люди, которые посвятили себя FreeBSD, хотя и достойны лучшей участи!
- Внешняя помощь
Последней, но однозначно не менее значимой, и наибольшей группой разработчиков являются сами пользователи, которые предоставляют комментарии и исправления ошибок нам на почти постоянной основе. Основной путь участвовать в не централизованной разработке - это подписка на Список рассылки FreeBSD, посвящённый техническим дискуссиям, где обсуждаются подобные вещи. Обратитесь к Ресурсы в интернет за дальнейшей информацией о различных списках рассылки 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 предоставляет коллекцию портированого ПО, включающую тысячи популярных программ. На момент подготовки этого документа в ней было более 36000 портов! В коллекцию входят множество программ от http-серверов до игр, языков программирования, текстовых редакторов и всего прочего. Полная Коллекция Портов требует приблизительно 3 GB дискового пространства, потому что порт представляет собой "изменения" оригинальных исходных текстов. Это сильно упрощает нам процесс обновления портов и существенно уменьшает объём занимаемого дискового пространства по сравнению со старой (1.0) Коллекцией Портов. Для того, чтобы скомпилировать и установить программу, необходимо всего лишь перейти в каталог порта программы, набрать make install
и дать системе сделать все остальное. Полные исходные тексты для каждого порта, который вы устанавливаете, загружаются автоматически с CDROM или локального FTP-сервера, поэтому вам нужно только дисковое пространство для сборки необходимых портов. Почти каждый порт предоставляется также как скомпилированный "пакет", который может быть установлен с помощью простой команды (pkg_add
) теми, кто предпочитает не компилировать порты из исходных текстов. Дополнительная информация о пакетах и портах находится в Установка приложений. порты и пакеты.
Множество дополнительных документов, которые могут пригодиться в процессе установки и использования FreeBSD, находятся в каталоге /usr/shared/doc на любой машине, работающей под управлением современной версии FreeBSD. Вы можете просматривать локально установленные документы с помощью любого браузера, поддерживающего HTML, используя следующие ссылки:
- Руководство FreeBSD
- FreeBSD FAQ (Часто задаваемые вопросы)
Вы также можете просмотреть основные (и наиболее часто обновляемые) копии на http://www.FreeBSD.org/ru/.
Глава 2. Установка FreeBSD версий 9.X и более поздних
2.1. Краткий обзор
FreeBSD поставляется с простой в использовании текстовой программой установки. FreeBSD 9.0-RELEASE и более поздние укомплектованы установщиком, называемым bsdinstall, в то время как в релизах, предшествующих FreeBSD 9.0-RELEASE, для установки используется sysinstall. В этом разделе описана работа с программой bsdinstall. Работа с установщиком sysinstall описана в Установка FreeBSD версий 8.X и более ранних.
После прочтения этого раздела вы будете знать:
Как создавать установочные носители для FreeBSD.
Разбиение и именование разделов жестких дисков во FreeBSD.
Как запустить bsdinstall.
Вопросы, задаваемые утилитой bsdinstall, что они значат и как на них отвечать.
Перед прочтением этого раздела вам необходимо:
Прочитать список поддерживаемого оборудования, который прилагается к устанавливаемой вами версии FreeBSD, а также убедиться, что ваше оборудование поддерживается.
В общем, эти инструкции по установке написаны для машин архитектуры i386™ ("PC-совместимая"). Там, где это необходимо, будут даны указания для других платформ. Между установщиком и этим документом могут быть незначительные различия, поэтому используйте эту главу как общее руководство, а не как точную пошаговую инструкцию. |
2.2. Аппаратные требования
2.2.1. Минимальная конфигурация
Минимальная аппаратная конфигурация, достаточная для установки FreeBSD, зависит от версии FreeBSD и от аппаратной архитектуры.
Краткое изложение этой информации дано в следующих разделах. В зависимости от способа установки FreeBSD вам также может потребоваться поддерживаемый привод CDROM, а в некоторых случаях - сетевой адаптер. Об этом будет сказано в Подготовка установочного носителя информации.
2.2.1.1. FreeBSD/i386
Для FreeBSD/i386 необходим 486 процессор или выше, а также - как минимум 64 МБ ОЗУ. Для самой минимальной установки потребуется не менее 1.1 ГБ свободного места на жестком диске.
Для устаревших компьютеров более эффективным способом повышения производительности является увеличение объема ОЗУ и объема жесткого диска, нежели установка более быстродействующего процессора. |
2.2.1.2. FreeBSD/amd64
Существует два класса процессоров, на которых может работать FreeBSD/amd64. К первому принадлежат процессоры AMD64, включая AMD Athlon™64, AMD Athlon™64-FX, AMD Opteron™ и более новые.
Ко второму классу процессоров, на которых работает FreeBSD/amd64, принадлежат процессоры архитектуры Intel® EM64T. Перечень процессоров включает следующие семейства: Intel® Core™ 2 Duo, Quad, Extreme, семейства Intel® Xeon™ 3000, 5000 и 7000, а также Intel® Core™ i3, i5 и i7.
Если ваш компьютер построен на чипсете nVidia nForce3 Pro-150, то вам необходимо отключить IO APIC в BIOS. Если для этого нет опции в BIOS, отключите ACPI в операционной системе. В чипсете Pro-150 содержатся ошибки, для которых пока не существует исправлений.
2.2.1.3. FreeBSD/powerpc Apple® Macintosh®
Поддерживаются все американские системы Apple® Macintosh® с встроенным USB. Для многопроцессорных машин есть поддержка SMP.
Ядро (32-бит) может адресовать лишь первые 2 ГБ ОЗУ. На Blue & White PowerMac G3 не поддерживается FireWire®.
2.2.1.4. FreeBSD/sparc64
Поддерживаемые FreeBSD/sparc64 системы перечислены в проекте FreeBSD/sparc64.
Для FreeBSD/sparc64 требуется отдельный жесткий диск. На данный момент нет возможности разделять диск с другой операционной системой.
2.2.2. Поддерживаемое оборудование
Архитектуры и устройства, поддерживаемые каждым релизом FreeBSD, перечислены в файле Hardware Notes. Файл, как правило, называется HARDWARE.TXT, и располагается в корневом каталоге установочного носителя. Также копии списка поддерживаемого оборудования находятся на странице Release Information веб сайта FreeBSD.
2.3. Перед установкой
2.3.1. Сделайте резервные копии данных
Сделайте резервные копии всех важных данных с того компьютера, на который планируется установка FreeBSD. Проверьте пригодность резервных копий до начала установки. Перед внесением изменений на диск инсталлятор FreeBSD запросит подтверждение, но как только изменения будут внесены, то отменить их уже будет невозможно.
2.3.2. Решите куда установить FreeBSD
Если FreeBSD будет единственной установленной операционной системой, и она будет занимать весь жесткий диск, то можете смело пропустить этот раздел. Но если FreeBSD будет разделять диск с другими операционными системами, то во время установки вам понадобится понимание принципов разбиения дисков.
2.3.2.1. Разделы диска для FreeBSD/i386 и FreeBSD/amd64
Весь объем жестких дисков может быть разделен на множество частей. Эти части называются разделами.
Есть два способа деления диска на разделы. Традиционный способ - Master Boot Record (MBR) - хранит таблицу разделов, вмещающую до четырех первичных разделов. (Так сложилось исторически, что во FreeBSD эти разделы называются слайсами.) Возможны ситуации, в которых четыре раздела недостаточно, поэтому один из первичных разделов может быть превращен в расширенный раздел. Внутри расширенного раздела может быть создано несколько логических разделов. Результирующая структура выглядит немного неуклюже, но такова она есть.
Создание Таблицы Разделов GUID (GUID Partition Table, GPT) - это более новый и простой способ деления диска. Также новый способ (GPT) по сравнению с традиционным способом разбиения (MBR) гораздо более гибкий. Распространённые реализации GPT позволяют создавать до 128 разделов на одном диске, тем самым исключая необходимость создания неудобных сущностей наподобие логических дисков.
Некоторые старые операционные системы, например Windows® XP, не совместимы со схемой GPT. Если на один диск необходимо установить FreeBSD совместно с такой операционной системой, то следует воспользоваться схемой MBR. |
Стандартному загрузчику FreeBSD необходим первичный раздел (MBR) или GPT раздел. (Обратитесь к Процесс загрузки FreeBSD за более подробной информацией о процессе загрузки FreeBSD.) Если все первичные или GPT разделы уже задействованы, то для FreeBSD один из них необходимо будет освободить.
Минимальная установка FreeBSD занимает ни много ни мало - 1 ГБ дискового пространства. Однако, это очень минимальная установка, практически не оставляющая свободного места. Более реалистичным минимумом является 3 ГБ без графической подсистемы, а если будет использоваться графическая подсистема, то 5 ГБ или более. Свободное пространство также потребуется приложениям от третьих лиц.
Для создания разделов существует разнообразие свободно распространяемых и коммерческих утилит. GParted Live это свободно распространяемый загрузочный дистрибутив, в который включен редактор разделов GParted. Также GParted включен в многие другие дистрибутивы Live CD от Linux.
Утилиты для создания разделов могут повредить ваши данные. Поэтому сделайте полную резервную копию и проверьте её целостность перед модификацией разделов диска. |
Определенные трудности составляет изменение размеров разделов Microsoft® Vista. В таких случаях может пригодиться установочный CDROM от самой Microsoft® Vista.
Компьютер с ОС Windows® имеет жесткий диск размером 40 ГБ, диск разбит на два раздела по 20 ГБ. Windows® именует их дисками C: и D:. На диске C: данными занято 10 ГБ, а на диске D: - 5 ГБ.
Перемещение данных с диска D: на диск C: освобождает второй раздел для установки FreeBSD.
Компьютер с ОС Windows® имеет жесткий диск размером 40 ГБ, на котором создан один большой раздел, занимающий весь жесткий диск. Windows® именует этот раздел диском C:. На этом разделе данные занимают 15 ГБ. Конечная цель - отвести для Windows® раздел размером 20 ГБ, а второй раздел размером 20 ГБ задействовать для установки FreeBSD.
Подобное перераспределение можно выполнить одним из двух способов:
Сделайте резервную копию данных вашей Windows®. Далее, переустановите Windows®, создав во время инсталляции раздел размером 20 ГБ.
Используйте утилиту редактирования разделов (наподобие GParted) для уменьшения раздела Windows®, а в освободившемся пространстве создайте новый раздел для установки FreeBSD.
Разделы диска, содержащие разные операционные системы, делают возможной загрузку по выбору одной из имеющихся операционных систем. Альтернативный способ, позволяющий загружать несколько операционных систем в одно и то же время, описан в разделе, называемом virtualization.
2.3.3. Соберите информацию о сетевых настройках
Некоторым вариантам установки FreeBSD для загрузки файлов необходимо наличие соединения с сетью. Инсталлятор запросит информацию о подключении для настройки соединения с сетью через интерфейс Ethernet (через кабельный модем или к модем DSL с интерфейсом Ethernet).
Для автоматического конфигурирования сетевых интерфейсов часто применяется протокол DHCP. Если в подключаемой сети сервис DHCP отсутствует, информацию о подключении к необходимо взять у системного администратора или провайдера Интернет.
IP адрес
Маска подсети
IP адрес шлюза по умолчанию
Доменное имя локальной сети
IP адрес DNS сервера/серверов
2.3.4. Проверьте сведения об обнаруженных ошибках FreeBSD
Хотя проект FreeBSD борется за то, чтобы каждый релиз FreeBSD был настолько стабильным, насколько это возможно, ошибки порой вкрадываются в процесс разработки. В очень редких случаях эти ошибки влияют на процесс установки. Как только эти проблемы обнаруживаются и исправляются, их описание попадает в сообщения об ошибках FreeBSD, находящиеся на сайте FreeBSD. Проверьте сообщения об ошибках перед установкой и убедитесь, что отсутствуют проблемы, которые могут затронуть установку.
Информация о всех релизах, включая сообщения об ошибках каждого релиза, может быть найдена на странице информации о релизах веб сайта FreeBSD.
2.3.5. Подготовка установочного носителя информации
Установка FreeBSD начинается с загрузки компьютера с установочного носителя, будь то CD, DVD или USB флеш-накопитель. Инсталлятор - это не та программа, которую можно запустить из другой операционной системы.
В дополнение к стандартному установочному носителю, который содержит копии всех установочных файлов FreeBSD, также существует вариант, предназначенный исключительно для загрузки и называемый bootonly. Установочный носитель bootonly не содержит копий инсталляционных файлов, а загружает их из сети во время установки. Поэтому образ bootonly CD гораздо меньше объемом, а также при его использовании загружаются лишь необходимые файлы, тем самым уменьшается нагрузка на сетевое соединение.
Копии образов установочных носителей находятся на веб сайте FreeBSD. Также, в каталоге с файлами установочных образов находится файл CHECKSUM.SHA256, который понадобится вам для проверки целостности скачанного файла образа. Проверка целостности файла образа производится сравнением контрольных сумм. Для подсчета последних FreeBSD предоставляет sha256(1), другие операционные системы также располагают подобными программами. Сравните полученную контрольную сумму с одной из CHECKSUM.SHA256. Контрольные суммы должны совпасть полностью. Несовпадение контрольных сумм значит, что файл поврежден и к использованию не пригоден.
Если у вас уже имеется копия FreeBSD на CDROM, DVD, или USB флеш-накопителе, то нижеследующий текст можно опустить. |
CD- и DVD-образы FreeBSD являются загрузочными. Для установки необходим один из них. Запишите образ на CD или DVD диск при помощи программы для записи CD, которая есть в вашей текущей операционной системе. Во FreeBSD запись дисков осуществляется утилитой cdrecord(1) из комплекта sysutils/cdrtools Коллекции Портов.
Для создания загрузочного флеш-накопителя выполните следующие шаги:
Получение образа для флеш-накопителя
Образы для флеш-накопителя для FreeBSD 9.0-RELEASE и более поздних могут быть скачаны с каталога ISO-IMAGES/ по адресу
ftp://ftp.FreeBSD.org/pub/FreeBSD/releases/arch/arch/ISO-IMAGES/version/FreeBSD-version-RELEASE-arch-memstick.img
. Замените arch и version соответственно на архитектуру и номер версии которую вы планируете установить. Например, образы для флеш-накопителей FreeBSD/i386 9.0-RELEASE находятся на ftp://ftp.FreeBSD.org/pub/FreeBSD/releases/i386/i386/ISO-IMAGES/9.0/FreeBSD-9.0-RELEASE-i386-memstick.img.Для FreeBSD 8.X и более ранних версий используется иной путь каталогов. Детали загрузки и установки FreeBSD 8.X и более ранних версий описаны в Установка FreeBSD версий 8.X и более ранних.
Имя образа для флеш-накопителя имеет суффикс .img. Каталог ISO-IMAGES/ содержит определённое количество разных образов, и выбор конкретного образа зависит от устанавливаемой версии FreeBSD, а в некоторых случаях - и от аппаратного обеспечения.
Перед продолжением сделайте резервную копию данных с флеш-накопителя, так как следующая процедура уничтожит их.
Запись образа на флеш-накопитель
Procedure: Использование FreeBSD для записи образа
Запись образа при помощи dd(1)
Файл .img не является обычным файлом. Это образ всего содержимого флеш-накопителя. Этот файл не может быть просто скопированным подобно обычному файлу, он должен быть записан непосредственно на целевое устройство при помощи dd(1):
# dd if=FreeBSD-9.0-RELEASE-i386-memstick.img of=/dev/da0 bs=64k
Procedure: Использование Windows® для записи образа
Получение Image Writer для Windows®
Image Writer для Windows® - это свободно распространяемое приложение, при помощи которого можно корректно записать образ на флеш-накопитель. Скачайте его с https://launchpad.net/win32-image-writer/ и сохраните в любую директорию.
Запись образа при помощи Image Writer
Кликните дважды на иконке Win32DiskImager для запуска приложения. Удостоверьтесь, что буква диска, отображаемая в боксе
Device
, соответствует устройству флеш-накопителя. Кликните на иконке с папкой и выберите образ, который будет записан на флеш-накопитель. Нажмите кнопку Save для подтверждения выбора имени файла. Проверьте, что всё верно, а также что нет открытых директорий с флеш-накопителя в других окнах. Когда всё готово, нажмите кнопку Write для записи образа на флеш-накопитель.
Установка с дискет более не поддерживается. |
Теперь вы готовы начать установку FreeBSD.
2.4. Начало установки
По умолчанию, установщик не изменяет данные на ваших дисках до тех пор, пока вы не увидите следующее сообщение: Your changes will now be written to disk. If you have chosen to overwrite existing data, it will be PERMANENTLY ERASED. Are you sure you want to commit your changes? Установка может быть прервана в любой момент до появления этого предупреждения, при этом содержимое дисков изменено не будет. Если вы обеспокоены тем, что что-то было настроено неверно, то вы можете просто выключить компьютер до этого сообщения, при этом никаких повреждений существующих данных не произойдет. |
2.4.1. Загрузка
2.4.1.1. Загрузка на i386™ и amd64
Если вы подготовили "загрузочный" USB-накопитель, как описано в Подготовка установочного носителя информации, то вставьте его в USB гнездо перед включением компьютера.
Если вы загружаетесь с CDROM, то вам необходимо будет включить компьютер и при первой возможности вставить CD диск.
Настройте вашу машину на загрузку с CDROM или с USB, в зависимости от того, какое устройство используется для установки. Настройки BIOS позволяют выбрать конкретное загрузочное устройство. Большинство систем также предоставляют возможность выбрать загрузочное устройство во время запуска, часто эта возможность активируется по нажатию клавиши F10, F11, F12 или Escape.
Если ваш компьютер загружается как обычно и запускает существующую операционную систему, то:
Диск не был вставлен заблаговременно. Оставьте его в приводе и попробуйте перезагрузить ваш компьютер.
Ранее внесенные изменения в BIOS не сработали. Попробуйте повторить шаг настройки BIOS пока не получите необходимый порядок загрузки.
Ваш нынешний BIOS не поддерживает загрузку с имеющегося загрузочного накопителя. В этом случае можно использовать Plop Boot Manager для загрузки более старых машин с CD или USB.
FreeBSD начнет загружаться. Если вы загружаетесь с CDROM, вы увидите поток сообщений, подобный следующему (информация о версиях опущена):
Booting from CD-ROM... 645MB medium detected CD Loader 1.2 Building the boot loader arguments Looking up /BOOT/LOADER... Found Relocating the loader and the BTX Starting the BTX loader BTX loader 1.00 BTX version is 1.02 Consoles: internal video/keyboard BIOS CD is cd0 BIOS drive C: is disk0 BIOS drive D: is disk1 BIOS 636kB/261056kB available memory FreeBSD/i386 bootstrap loader, Revision 1.1 Loading /boot/defaults/loader.conf /boot/kernel/kernel text=0x64daa0 data=0xa4e80+0xa9e40 syms=[0x4+0x6cac0+0x4+0x88e9d] \
Отображается меню загрузчика FreeBSD:
Выждите десять секунд или нажмите Enter.
2.4.1.2. Загрузка Macintosh® PowerPC®
На большинстве машин удерживание клавиши C на клавиатуре во время начальной загрузки активирует загрузку с CD. Иначе, удерживайте Command+Option+O+F, или Windows+Alt+O+F на не-Apple® клавиатурах. На приглашение 0 >
введите
boot cd:,\ppc\loader cd:0
Для Xserves без клавиатур, ознакомьтесь с загрузкой в Open Firmware, которая описана на сайте поддержки Apple®.
2.4.1.3. Загрузка sparc64
Большинство систем sparc64 настроены на автоматическую загрузку с жесткого диска. Для того, чтобы установить FreeBSD, вам потребуется выполнить загрузку по сети или с CDROM, что подразумевает получение доступа к PROM (OpenFirmware).
Для того, чтобы получить доступ к PROM, перегрузите систему и дождитесь появления загрузочных сообщений. Вид сообщений зависит от модели машины, но должен выглядеть подобно следующему:
Sun Blade 100 (UltraSPARC-IIe), Keyboard Present
Copyright 1998-2001 Sun Microsystems, Inc. All rights reserved.
OpenBoot 4.2, 128 MB memory installed, Serial 51090132.
Ethernet address 0:3:ba:b:92:d4, Host ID: 830b92d4.
Если ваша система продолжает загружаться с жесткого диска, то чтобы получить приглашение PROM вам необходимо нажать на клавиатуре L1+A или Stop+A, или же послать сигнал BREAK
через последовательную консоль (используя, например, ~#
в tip(1) или cu(1)). Приглашение выглядит подобно следующему:
ok (1)
ok {0} (2)
1 | Приглашение, отображающееся на системах с одним центральным процессором. |
2 | Приглашение, отображающееся на многопроцессорных (SMP) системах, цифра указывает на количество активных центральных процессоров. |
На этом этапе вставьте CDROM в привод и наберите boot cdrom
в приглашении PROM.
2.4.2. Просмотр результата определения устройств (device probe)
Выводимые на экран во время начальной загрузки системы последние пару сотен строк сохраняются, и при необходимости могут быть просмотрены.
Чтобы просмотреть содержимое буфера, нажмите Scroll Lock. Это включит режим буфера прокрутки. Далее, для просмотра сохраненных сообщений вы можете использовать клавиши навигации или клавиши PageUp и PageDown. Чтобы выйти из режима просмотра буфера нажмите еще раз Scroll Lock.
Включите прокрутку экранного буфера и просмотрите сообщения, которые были вытеснены с экрана во время определения устройств ядром. Вы увидите текст, подобный к Типичный вывод сообщений определения устройств, однако его содержимое будет отличаться в зависимости от комплекта устройств, установленных в ваш компьютер.
Copyright (c) 1992-2011 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.
FreeBSD is a registered trademark of The FreeBSD Foundation.
FreeBSD 9.0-RELEASE #0 r225473M: Sun Sep 11 16:07:30 BST 2011
root@psi:/usr/obj/usr/src/sys/GENERIC amd64
CPU: Intel(R) Core(TM)2 Duo CPU T9400 @ 2.53GHz (2527.05-MHz K8-class CPU)
Origin = "GenuineIntel" Id = 0x10676 Family = 6 Model = 17 Stepping = 6
Features=0xbfebfbff<FPU,VME,DE,PSE,TSC,MSR,PAE,MCE,CX8,APIC,SEP,MTRR,PGE,MCA,CMOV,PAT,PSE36,CLFLUSH,DTS,ACPI,MMX,FXSR,SSE,SSE2,SS,HTT,TM,PBE>
Features2=0x8e3fd<SSE3,DTES64,MON,DS_CPL,VMX,SMX,EST,TM2,SSSE3,CX16,xTPR,PDCM,SSE4.1>
AMD Features=0x20100800<SYSCALL,NX,LM>
AMD Features2=0x1<LAHF>
TSC: P-state invariant, performance statistics
real memory = 3221225472 (3072 MB)
avail memory = 2926649344 (2791 MB)
Event timer "LAPIC" quality 400
ACPI APIC Table: <TOSHIB A0064 >
FreeBSD/SMP: Multiprocessor System Detected: 2 CPUs
FreeBSD/SMP: 1 package(s) x 2 core(s)
cpu0 (BSP): APIC ID: 0
cpu1 (AP): APIC ID: 1
ioapic0: Changing APIC ID to 1
ioapic0 <Version 2.0> irqs 0-23 on motherboard
kbd1 at kbdmux0
acpi0: <TOSHIB A0064> on motherboard
acpi0: Power Button (fixed)
acpi0: reservation of 0, a0000 (3) failed
acpi0: reservation of 100000, b6690000 (3) failed
Timecounter "ACPI-safe" frequency 3579545 Hz quality 850
acpi_timer0: <24-bit timer at 3.579545MHz> port 0xd808-0xd80b on acpi0
cpu0: <ACPI CPU> on acpi0
ACPI Warning: Incorrect checksum in table [ASF!] - 0xFE, should be 0x9A (20110527/tbutils-282)
cpu1: <ACPI CPU> on acpi0
pcib0: <ACPI Host-PCI bridge> port 0xcf8-0xcff on acpi0
pci0: <ACPI PCI bus> on pcib0
vgapci0: <VGA-compatible display> port 0xcff8-0xcfff mem 0xff400000-0xff7fffff,0xe0000000-0xefffffff irq 16 at device 2.0 on pci0
agp0: <Intel GM45 SVGA controller> on vgapci0
agp0: aperture size is 256M, detected 131068k stolen memory
vgapci1: <VGA-compatible display> mem 0xffc00000-0xffcfffff at device 2.1 on pci0
pci0: <simple comms> at device 3.0 (no driver attached)
em0: <Intel(R) PRO/1000 Network Connection 7.2.3> port 0xcf80-0xcf9f mem 0xff9c0000-0xff9dffff,0xff9fe000-0xff9fefff irq 20 at device 25.0 on pci0
em0: Using an MSI interrupt
em0: Ethernet address: 00:1c:7e:6a:ca:b0
uhci0: <Intel 82801I (ICH9) USB controller> port 0xcf60-0xcf7f irq 16 at device 26.0 on pci0
usbus0: <Intel 82801I (ICH9) USB controller> on uhci0
uhci1: <Intel 82801I (ICH9) USB controller> port 0xcf40-0xcf5f irq 21 at device 26.1 on pci0
usbus1: <Intel 82801I (ICH9) USB controller> on uhci1
uhci2: <Intel 82801I (ICH9) USB controller> port 0xcf20-0xcf3f irq 19 at device 26.2 on pci0
usbus2: <Intel 82801I (ICH9) USB controller> on uhci2
ehci0: <Intel 82801I (ICH9) USB 2.0 controller> mem 0xff9ff800-0xff9ffbff irq 19 at device 26.7 on pci0
usbus3: EHCI version 1.0
usbus3: <Intel 82801I (ICH9) USB 2.0 controller> on ehci0
hdac0: <Intel 82801I High Definition Audio Controller> mem 0xff9f8000-0xff9fbfff irq 22 at device 27.0 on pci0
pcib1: <ACPI PCI-PCI bridge> irq 17 at device 28.0 on pci0
pci1: <ACPI PCI bus> on pcib1
iwn0: <Intel(R) WiFi Link 5100> mem 0xff8fe000-0xff8fffff irq 16 at device 0.0 on pci1
pcib2: <ACPI PCI-PCI bridge> irq 16 at device 28.1 on pci0
pci2: <ACPI PCI bus> on pcib2
pcib3: <ACPI PCI-PCI bridge> irq 18 at device 28.2 on pci0
pci4: <ACPI PCI bus> on pcib3
pcib4: <ACPI PCI-PCI bridge> at device 30.0 on pci0
pci5: <ACPI PCI bus> on pcib4
cbb0: <RF5C476 PCI-CardBus Bridge> at device 11.0 on pci5
cardbus0: <CardBus bus> on cbb0
pccard0: <16-bit PCCard bus> on cbb0
isab0: <PCI-ISA bridge> at device 31.0 on pci0
isa0: <ISA bus> on isab0
ahci0: <Intel ICH9M AHCI SATA controller> port 0x8f58-0x8f5f,0x8f54-0x8f57,0x8f48-0x8f4f,0x8f44-0x8f47,0x8f20-0x8f3f mem 0xff9fd800-0xff9fdfff irq 19 at device 31.2 on pci0
ahci0: AHCI v1.20 with 4 3Gbps ports, Port Multiplier not supported
ahcich0: <AHCI channel> at channel 0 on ahci0
ahcich1: <AHCI channel> at channel 1 on ahci0
ahcich2: <AHCI channel> at channel 4 on ahci0
acpi_lid0: <Control Method Lid Switch> on acpi0
battery0: <ACPI Control Method Battery> on acpi0
acpi_button0: <Power Button> on acpi0
acpi_acad0: <AC Adapter> on acpi0
acpi_toshiba0: <Toshiba HCI Extras> on acpi0
acpi_tz0: <Thermal Zone> on acpi0
attimer0: <AT timer> port 0x40-0x43 irq 0 on acpi0
Timecounter "i8254" frequency 1193182 Hz quality 0
Event timer "i8254" frequency 1193182 Hz quality 100
atkbdc0: <Keyboard controller (i8042)> port 0x60,0x64 irq 1 on acpi0
atkbd0: <AT Keyboard> irq 1 on atkbdc0
kbd0 at atkbd0
atkbd0: [GIANT-LOCKED]
psm0: <PS/2 Mouse> irq 12 on atkbdc0
psm0: [GIANT-LOCKED]
psm0: model GlidePoint, device ID 0
atrtc0: <AT realtime clock> port 0x70-0x71 irq 8 on acpi0
Event timer "RTC" frequency 32768 Hz quality 0
hpet0: <High Precision Event Timer> iomem 0xfed00000-0xfed003ff on acpi0
Timecounter "HPET" frequency 14318180 Hz quality 950
Event timer "HPET" frequency 14318180 Hz quality 450
Event timer "HPET1" frequency 14318180 Hz quality 440
Event timer "HPET2" frequency 14318180 Hz quality 440
Event timer "HPET3" frequency 14318180 Hz quality 440
uart0: <16550 or compatible> port 0x3f8-0x3ff irq 4 flags 0x10 on acpi0
sc0: <System console> at flags 0x100 on isa0
sc0: VGA <16 virtual consoles, flags=0x300>
vga0: <Generic ISA VGA> at port 0x3c0-0x3df iomem 0xa0000-0xbffff on isa0
ppc0: cannot reserve I/O port range
est0: <Enhanced SpeedStep Frequency Control> on cpu0
p4tcc0: <CPU Frequency Thermal Control> on cpu0
est1: <Enhanced SpeedStep Frequency Control> on cpu1
p4tcc1: <CPU Frequency Thermal Control> on cpu1
Timecounters tick every 1.000 msec
hdac0: HDA Codec #0: Realtek ALC268
hdac0: HDA Codec #1: Lucent/Agere Systems (Unknown)
pcm0: <HDA Realtek ALC268 PCM #0 Analog> at cad 0 nid 1 on hdac0
pcm1: <HDA Realtek ALC268 PCM #1 Analog> at cad 0 nid 1 on hdac0
usbus0: 12Mbps Full Speed USB v1.0
usbus1: 12Mbps Full Speed USB v1.0
usbus2: 12Mbps Full Speed USB v1.0
usbus3: 480Mbps High Speed USB v2.0
ugen0.1: <Intel> at usbus0
uhub0: <Intel UHCI root HUB, class 9/0, rev 1.00/1.00, addr 1> on usbus0
ugen1.1: <Intel> at usbus1
uhub1: <Intel UHCI root HUB, class 9/0, rev 1.00/1.00, addr 1> on usbus1
ugen2.1: <Intel> at usbus2
uhub2: <Intel UHCI root HUB, class 9/0, rev 1.00/1.00, addr 1> on usbus2
ugen3.1: <Intel> at usbus3
uhub3: <Intel EHCI root HUB, class 9/0, rev 2.00/1.00, addr 1> on usbus3
uhub0: 2 ports with 2 removable, self powered
uhub1: 2 ports with 2 removable, self powered
uhub2: 2 ports with 2 removable, self powered
uhub3: 6 ports with 6 removable, self powered
ugen2.2: <vendor 0x0b97> at usbus2
uhub8: <vendor 0x0b97 product 0x7761, class 9/0, rev 1.10/1.10, addr 2> on usbus2
ugen1.2: <Microsoft> at usbus1
ada0 at ahcich0 bus 0 scbus1 target 0 lun 0
ada0: <Hitachi HTS543225L9SA00 FBEOC43C> ATA-8 SATA 1.x device
ada0: 150.000MB/s transfers (SATA 1.x, UDMA6, PIO 8192bytes)
ada0: Command Queueing enabled
ada0: 238475MB (488397168 512 byte sectors: 16H 63S/T 16383C)
ada0: Previously was known as ad4
ums0: <Microsoft Microsoft 3-Button Mouse with IntelliEyeTM, class 0/0, rev 1.10/3.00, addr 2> on usbus1
SMP: AP CPU #1 Launched!
cd0 at ahcich1 bus 0 scbus2 target 0 lun 0
cd0: <TEAC DV-W28S-RT 7.0C> Removable CD-ROM SCSI-0 device
cd0: 150.000MB/s transfers (SATA 1.x, ums0: 3 buttons and [XYZ] coordinates ID=0
UDMA2, ATAPI 12bytes, PIO 8192bytes)
cd0: cd present [1 x 2048 byte records]
ugen0.2: <Microsoft> at usbus0
ukbd0: <Microsoft Natural Ergonomic Keyboard 4000, class 0/0, rev 2.00/1.73, addr 2> on usbus0
kbd2 at ukbd0
uhid0: <Microsoft Natural Ergonomic Keyboard 4000, class 0/0, rev 2.00/1.73, addr 2> on usbus0
Trying to mount root from cd9660:/dev/iso9660/FREEBSD_INSTALL [ro]...
Внимательно просмотрите вывод определения устройств и убедитесь, что FreeBSD обнаружила все ожидаемые вами устройства. Если устройство не было найдено, то оно не будет упомянуто в выводе. Модули ядра позволяют вам добавить поддержку устройств, драйвера которых отсутствуют в ядре GENERIC.
После процедуры определения устройств вы увидите Выбор вариантов работы установочного носителя. Установочный носитель может использоваться одним из трёх способов: для установки FreeBSD, как Live CD, или просто для доступа к оболочке FreeBSD. Используйте клавиши навигации для выбора опции, а Enter - для подтверждения выбора.

Выбор опции Install вызовет программу-установщик.
2.5. Введение в bsdinstall
bsdinstall это текстовая программа для установки FreeBSD, созданная Nathan Whitehorn <nwhitehorn@FreeBSD.org> и представленная в 2011 году для FreeBSD 9.0.
В комплекте с PC-BSD есть программа pc-sysinstall от Kris Moore <kmoore@FreeBSD.org>, которая также может использоваться для установки FreeBSD. Несмотря на то, что эту программу путают с bsdinstall, обе они между собой никак не связаны. |
Система меню bsdinstall контролируется клавишами навигации, а также Enter, Tab, Space и другими.
2.5.1. Выбор раскладки клавиатуры (Keymap)
В зависимости от используемой системной консоли, bsdinstall может предложить выбрать отличную от настроенной по умолчанию раскладку клавиатуры.

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

Используя клавиши навигации и клавишу Enter выберите раскладку, которая наиболее близко соответствует клавиатуре, подключенной к системе.
Нажатие Esc приведет к выбору раскладки по умолчанию. Выбор опции тоже является безопасным в том случае, если возникают трудности с определением раскладки. |
2.5.2. Установка имени хоста
Далее, bsdinstall предложит указать имя хоста для устанавливаемой системы.

Вводимое имя хоста должно быть полным (fully-qualified), например: machine3.example.com
.
2.5.3. Выбор устанавливаемых компонентов
Далее, bsdinstall предложит выбрать дополнительные компоненты для установки.

Определение перечня компонентов для установки в наибольшей мере зависит от планируемого использования системы и от количества доступного дискового пространства. Ядро и набор утилит FreeBSD (вместе называемые "базовой системой") устанавливаются всегда.
В зависимости от типа установки, некоторые из следующих компонентов могут не появляться.
doc
- Дополнительная документация, преимущественно исторического характера. Документация, предоставляемая Проектом Документирования FreeBSD может быть установлена позже.games
- Несколько традиционных игр BSD, в том числе fortune, rot13, и другие.lib32
- Библиотеки совместимости для запуска 32-битных приложений на 64-битных версиях FreeBSD.ports
- Коллекция Портов FreeBSD.Коллекция Портов - это простой и удобный способ установки программ. Она не содержит исходных кодов, необходимых для компиляции приложений. Коллекция Портов - это множество файлов, при помощи которого автоматизируется загрузка, компиляция и установка программных пакетов сторонних разработчиков. В Установка приложений. порты и пакеты описано, как использовать коллекцию портов.
Программа установки не проверяет наличие свободного места. Поэтому выбирайте эту опцию лишь тогда, когда имеется достаточно свободного места на жестком диске. Что касается FreeBSD 9.0, Коллекция Портов занимает около 3 GB дискового пространства. Учтите, что для более новых версий FreeBSD занимаемое Коллекцией Портов дисковое пространство будет расти.
src
- Исходный код системы.FreeBSD распространяется с полным исходным кодом как для ядра, так и для программ базовой системы. Для большинства приложений исходный код системы не нужен, однако он может потребоваться при построении некоторых программ, распространяемых в виде исходных кодов (например, драйверов или модулей ядра), или для разработки FreeBSD.
Полное дерево исходных кодов требует 1 ГБ дискового пространства, пересборка всей системы FreeBSD требует дополнительно 5 ГБ пространства.
2.6. Установка по сети
Установочный носитель bootonly не содержит копий установочных файлов. В случае использования такого носителя необходимые файлы должны быть получены загрузкой из сети.

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

Дальнейший сценарий одинаков для всех способов установки.
2.7. Выделение дискового пространства
Есть три способа осуществить разбиение дискового пространства для FreeBSD. Шаблонное (guided) разбиение автоматически настраивает разделы диска, ручное (manual) разбиение позволяет опытным пользователям создавать разделы согласно своим требованиям. И наконец, есть возможность вызвать командный интерпретатор, в котором можно будет непосредственно запускать утилиты наподобие gpart(8), fdisk(8) и bsdlabel(8).

2.7.1. Шаблонное (guided) разбиение
Если в системе есть несколько дисков, то выберите один, на который будет устанавливаться FreeBSD.

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

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

2.7.2. Ручное (manual) разбиение
Ручное разбиение начинается с редактора разделов.

Перемещение подсвечивания на имя устройства (в этом примере - ada0) и выбор Create приведет вас к меню с перечнем схем разбиения.

Как правило, схема GPT является наиболее подходящей для PC-совместимых компьютеров. Для более старых операционных систем, которые несовместимы с GPT, может потребоваться разбиение MBR. Остальные схемы разбиения в общем используются для нераспространенных или старых компьютерных систем.
Аббревиатура | Описание |
---|---|
APM | Apple Partition Map, используемая на PowerPC® Macintosh®. |
BSD | Метки BSD без MBR, иногда называемые "dangerously dedicated mode". За подробностями обратитесь к bsdlabel(8). |
GPT | |
MBR | |
PC98 | |
VTOC8 | Volume Table Of Contents, используемая компьютерами Sun SPARC64 и UltraSPARC. |
После того, как схема разбиения определена, повторный выбор Create приводит к созданию новых разделов диска.

Стандартная установка FreeBSD со схемой GPT создаст как минимум три раздела:
freebsd-boot
- загрузочный код FreeBSD.freebsd-ufs
- файловая система UFS FreeBSD.freebsd-swap
- FreeBSD область подкачки.
Также необходимо упомянуть, что для разделов, которые будут содержать файловую систему ZFS FreeBSD следует задействовать тип раздела freebsd-zfs
. Обратитесь к Файловая система ZFS. Сведения об имеющихся в наличии типах разделов GPT содержатся в gpart(8).
Разумеется, возможно создание большего количества разделов с файловыми системами, и некоторые пользователи предпочитают выделять отдельные разделы для таких файловых систем, как /, /var, /tmp, и /usr. Иллюстрация подобного разбиения приведена в Создание традиционного разбиения под файловые системы..
При указании размеров допускается использование общепринятых аббревиатур, таких как K для килобайт, M для мегабайт, или G для гигабайт.
Должное выравнивание секторов обеспечивает наилучшую производительность, а создание разделов с размерами, кратными 4 Кбайт, помогает обеспечить правильное выравнивание как на дисках с размером сектора 512 байт, так и на устройствах с размером сектора 4 Кбайт. В общем, задание размеров, кратных 1 Мбайт или 1 Гбайт - это наиболее простой способ выполнить выравнивание начал разделов на позицию, кратную 4 Кбайт. Исключение: на данный момент размер раздела freebsd-boot не должен превышать 512 Кбайт из-за ограничений загрузочного кода. |
В случае, если раздел будет содержать файловую систему, ей потребуется точка монтирования. Если планируется создать единственный раздел UFS, то точка монтирования должна быть /.
Также будет запрошена метка. Метка - это имя, присвоенное разделу. Имя устройства или его номер может измениться если устройство будет подключено к другому контроллеру или порту, а метка раздела останется неизменной. Ссылки на метки вместо имён устройств и номеров разделов в файлах типа /etc/fstab делают систему более толерантной к замене оборудования. Метки GPT появляются после подключения диска в каталоге /dev/gpt/. У других схем разбиения есть свои особенности поддержки меток, и их метки располагаются в других подкаталогах каталога /dev/.
Во избежание конфликтов имен меток используйте уникальные имена для каждой файловой системы. Несколько букв, взятых от имени компьютера, его назначения или размещения может быть добавлено к метке. Например, корневому разделу UFS для компьютера в лаборатории можно присвоить метку |
Для традиционного разбиения, в котором каталоги /, /var, /tmp и /usr представляют собой отдельные файловые системы на их собственных разделах, создайте схему разбиения GPT, потом создайте разделы, как это указано ниже. Показанные размеры разделов являются типичными для жесткого диска размером 20Гб. Если диск большего размера, то будет уместным отвести больше места для раздела подкачки или для раздела с файловой системой /var. Задействованные в этом примере метки имеют префикс ex
, от слова "example", вам же рекомендуется использовать другие уникальные имена меток.
По умолчанию, загрузчик gptboot FreeBSD ожидает, что первый найденный раздел UFS будет корневым разделом (/).
Тип раздела | Размер | Точка монтирования | Метка |
---|---|---|---|
|
| ||
|
| / |
|
|
|
| |
|
| /var |
|
|
| /tmp |
|
| соглашайтесь со значением по умолчанию (оставшаяся часть объема диска) | /usr |
|
Для продолжения установки по завершении создания необходимых разделов выберите Finish.
2.8. Завершение установки
Следующий шаг - ваш последний шанс прервать установку и предотвратить изменение данных на жестком диске.

Для продолжения выберите Commit. Если необходимо внести изменения, для возвращения к редактору разделов нажмите Back. Выбор Revert & Exit дает возможность выйти из установщика без внесения изменений на жесткий диск.
Продолжительность установки варьируется в зависимости от выбранного дистрибутива, способа установки и быстродействия компьютера. Далее последует очередь сообщений, информирующих о ходе установки.
Первым делом установщик запишет информацию о разделах на диск и отформатирует разделы посредством newfs
.
Если выполняется установка по сети, то bsdinstall продолжит загрузку необходимых файлов дистрибутива.

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

И в заключение, проверенные файлы распаковываются на диск.

Как только запрошенные файлы дистрибутива распакуются, bsdinstall приступит к выполнению послеустановочных конфигурационных задач (смотрите После установки).
2.9. После установки
После успешной установки FreeBSD последуют меню настройки различных опций. Настройки опций могут быть изменены путем повторного входа в соответствующие разделы финального конфигурационного меню перед загрузкой в свежеустановленную систему FreeBSD.
2.9.1. Установка пароля пользователя root
Установка пароля пользователя root
- обязательна. Заметьте, что во время ввода пароля набираемые символы не отображаются на экране. После ввода будет запрошен повторный ввод пароля. Это помогает предотвратить опечатки при наборе.

root
Настройки опций продолжатся после успешной установки пароля.
2.9.2. Настройка сетевых интерфейсов
Настройка сетевых интерфейсов будет опущена в случае, если она уже была выполнена как часть подготовки при установке bootonly. |
Далее будет отображен перечень всех сетевых интерфейсов, найденных на компьютере. Выберите тот, который планируете настроить.

2.9.2.1. Настройка беспроводного сетевого интерфейса
Если выбран беспроводной сетевой интерфейс, то для подключения к сети потребуется ввести параметры сетевой идентификации и безопасности.
Беспроводные сети распознаются по так называемому Service Set Identifier, или SSID. SSID - это краткое уникальное имя, присваиваемое каждой сети.
Большинство беспроводных сетей шифруют передаваемые данные чтобы защитить их от неавторизированного прослушивания. Настоятельно рекомендуется применять стандарт WPA2. Более старые стандарты, например WEP, не обеспечивают достаточного уровня безопасности.
Первым делом, при подключении к беспроводной сети необходимо выполнить поиск беспроводных точек доступа.

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

После выбора сети потребуется ввести дополнительную информацию о соединении. Для WPA2 потребуется пароль (также известный как Pre-Shared Key или PSK). В целях безопасности набираемые в поле ввода пароля символы на экране отображаются звездочками.

После выбора беспроводной сети и ввода сопутствующих параметров безопасности последует настройка сетевых протоколов.
2.9.2.2. Настройка сетевых протоколов: IPv4
Определитесь, есть ли необходимость в подключении к сети IPv4. Это наиболее распространённый сетевой протокол.

Существует два способа настройки протокола IPv4 на сетевом интерфейсе. Сервис DHCP автоматически установит корректную конфигурацию сетевого интерфейса, и это - предпочтительный способ настройки. Статическая конфигурация требует ручного ввода настроек протокола IPv4.
Не пытайтесь ввести произвольные данные, они работать не будут. Получите перечисленную в Соберите информацию о сетевых настройках информацию у сетевого администратора или поставщика услуг Интернет. |
2.9.2.2.1. Настройка протокола IPv4 на сетевом интерфейсе посредством DHCP
Если в сети есть сервис DHCP, то для автоматического конфигурирования сетевого интерфейса выберите Yes.

2.9.2.2.2. Статическая настройка протокола IPv4 на сетевом интерфейсе
Статическая настройка сетевого интерфейса требует ввода некоторой информации о подключении IPv4.

IP Address
- адрес IPv4, который должен быть установлен на этом компьютере. Этот адрес должен быть уникальным и не должен использоваться другим оборудованием в локальной сети.Subnet Mask
- маска, используемая в локальной сети. Часто маска имеет значение255.255.255.0
.Default Router
- IP адрес маршрутизатора для этого подключения. Обычно этот адрес установлен на маршрутизаторе или ином сетевом оборудовании, которое соединяет локальную сеть с сетью Интернет. Также известен, как шлюз по умолчанию (default gateway).
2.9.2.3. Настройка сетевых протоколов: IPv6
IPv6 это более новый сетевой протокол. Если есть необходимость и возможность подключения к сети IPv6, выберите в этом меню Yes.

Для протокола IPv6 также возможны два способа настройки сетевого интерфейса. SLAAC или StateLess Address AutoConfiguration автоматически установит корректные настройки сетевого интерфейса. Статическая конфигурация требует ручного ввода настроек протокола IPv6.
2.9.2.3.1. IPv6 SLAAC
SLAAC позволяет сетевому элементу запросить у локального маршрутизатора необходимую для автоматической настройки информацию. За подробностями обратитесь к RFC4862.

2.9.2.3.2. Статическая настройка протокола IPv6 на сетевом интерфейсе
Статическая настройка сетевого интерфейса требует ручного ввода информации о IPv6 подключении.

IPv6 Address
- вводимый вручную IP адрес, который присвоен этому компьютеру. Этот адрес должен быть уникальным и не должен быть занят другим оборудованием в локальной сети.Default Router
- IPv6 адрес маршрутизатора для этой сети. Обычно, это адрес маршрутизатора или другого сетевого оборудования, которое соединяет локальную сеть с сетью Интернет. Также известен как шлюз по умолчанию.
2.9.2.4. Настройка Резолвера DNS
Domain Name System (или DNS) Резолвер выполняет преобразования имен хостов в сетевые адреса, а также преобразования сетевых адресов в имена хостов. Если для автоматического конфигурирования сетевого интерфейса использовался DHCP или SLAAC, то информация о Резолвере может уже присутствовать в системе. Иначе, впишите в поле Search имя локального домена. DNS #1 и DNS #2 - это IP адреса локальных серверов DNS. По крайней мере один сервер должен быть указан.

2.9.3. Установка часового пояса
Установка часового пояса для вашей машины позволит ей автоматически корректировать время согласно местным законам и правильно выполнять остальные зависимые от часового пояса функции.
Данный пример верен для машины, находящейся в восточном часовом поясе Соединенных Штатов. Разумеется, ваши настройки должны соответствовать вашему географическому местоположению.

Выберите Yes или No согласно тому, как настроены часы вашего компьютера, далее нажмите Enter. Если вы не знаете какое значение выбрать, UTC или местное, то нажмите No для того, чтобы выбрать наиболее распространённую конфигурацию - местное время.

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

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

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

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

sshd
- Secure Shell (SSH) демон для безопасного удаленного доступа.moused
- Обеспечивает использование мыши в системной консоли.ntpd
- Network Time Protocol (NTP) демон для автоматической синхронизации времени.powerd
- Системная утилита для контроля потребляемой мощности и профилей энергосбережения.
2.9.5. Разрешение сохранения аварийных дампов
Далее, bsdinstall запросит, будет ли разрешено создание аварийных дампов (crash dump) на целевой системе. Сохранение аварийных дампов может быть весьма полезным при поиске неполадок в системе, поэтому пользователям рекомендуется при всякой возможности включать сохранение аварийных дампов. Выберите Yes для разрешения сохранения аварийных дампов или No для отмены их сохранения и продолжения послеустановочной настройки.

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

Введите информацию о новом пользователе.

Username
- Имя, которое будет набирать пользователь для входа в систему. Часто оно формируется из объединенных вместе первой буквы имени и фамилии.Full name
- Полное имя пользователя.Uid
- Идентификатор пользователя. Обычно это поле не заполняется, система сама присвоит ему значение.Login group
- Имя группы для этого пользователя. Обычно это поле также не заполняется, система поставит значение по умолчанию.Invite user into other groups?
- Перечень групп, в которые будет внесен пользователь.Login class
- Обычно оставляется пустым для принятия значения по умолчанию.Shell
- Интерактивная оболочка для этого пользователя. В данном примере была выбрана оболочка csh(1).Home directory
- Домашний каталог пользователя. Как правило, значение по умолчанию является корректным.Home directory permissions
- Права на домашний каталог пользователя. Значение по умолчанию является корректным в большинстве случаев.Use password-based authentication?
- Обычно "yes".Use an empty password?
- Обычно "no".Use a random password?
- Обычно "no".Enter password
- Пароль для этого пользователя. Набираемые символы не отображаются на экране.Enter password again
- Пароль необходимо ввести еще раз (для сверки).Lock out the account after creation?
- Обычно "no".
После заполнения необходимых полей будет отображен итог и система переспросит, корректны ли введённые данные. Если во время ввода информации была допущена ошибка, то необходимо ответить no
и ввести данные еще раз. Если вас всё устраивает, выберите yes
для создания новой учетной записи пользователя.

Ответьте yes
на вопрос "Add another user?" если необходимо добавить другие учетные записи. Для завершения добавления пользователей и продолжения послеустановочной настройки выберите no
.
За более детальной информацией об управлении учетными записями обратитесь к Пользователи и основы управления учетными записями.
2.9.7. Завершение настройки
После того, как установка и конфигурирование завершены, вам предоставляется заключительная возможность подкорректировать настройки.

Используйте это меню для внесения любых изменений или для выполнения дополнительного конфигурирования перед завершением установки.
Add User
- Описано в Добавление пользователей.Root Password
- Описано в Установка пароля пользователяroot
.Hostname
- Описано в Установка имени хоста.Network
- Описано в Настройка сетевых интерфейсов.Services
- Описано в Активирование дополнительных сетевых сервисов.Time Zone
- Описано в Установка часового пояса.Handbook
- Загрузка и установка Руководства FreeBSD (которое вы в данный момент читаете).
По завершении настройки для выхода из финального конфигурационного меню выберите Exit.

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

Если необходимо дальнейшее конфигурирование или особая установка, то выбор Live CD загрузит установочный носитель в режим Live CD.
После того, как установка завершена, для перезагрузки компьютера и запуска новой системы FreeBSD выберите Reboot. Не забудьте извлечь установочный CD, DVD или USB-накопитель, иначе компьютер может снова с него загрузиться.
2.9.8. Загрузка и завершение работы FreeBSD
2.9.8.1. (FreeBSD/i386 Booting) Загрузка FreeBSD/i386
Во время загрузки FreeBSD отображается множество информационных сообщений. Большинство из них вытеснится за пределы экрана; это нормально. По завершении загрузки системы будет отображено приглашение ко входу (login prompt). Сообщения, которые переместились за пределы экрана, могут быть просмотрены: при нажатии Scroll-Lock включается режим буфера прокрутки. Клавиши PgUp, PgDn, а также клавиши навигации могут быть задействованы для прокручивания буфера. Повторное нажатие Scroll-Lock разблокирует дисплей и вернет его в нормальный режим.
На приглашение login:
введите добавленное во время установки имя пользователя, в этом примере - asample
. За исключением случаев крайней необходимости избегайте входа под учетной записью root
.
Упомянутый выше буфер прокрутки ограничен в размере, поэтому в него могут умещаться не все сообщения. После входа в систему большинство из них можно просмотреть подав команду dmesg | less
из командной строки. Для возврата к командной строке после просмотра сообщений нажмите q.
Типичные сообщения загрузки (информация о версиях опущена):
Copyright (c) 1992-2011 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.
FreeBSD is a registered trademark of The FreeBSD Foundation.
root@farrell.cse.buffalo.edu:/usr/obj/usr/src/sys/GENERIC amd64
CPU: Intel(R) Core(TM)2 Duo CPU E8400 @ 3.00GHz (3007.77-MHz K8-class CPU)
Origin = "GenuineIntel" Id = 0x10676 Family = 6 Model = 17 Stepping = 6
Features=0x783fbff<FPU,VME,DE,PSE,TSC,MSR,PAE,MCE,CX8,APIC,SEP,MTRR,PGE,MCA,CMOV,PAT,PSE36,MMX,FXSR,SSE,SSE2>
Features2=0x209<SSE3,MON,SSSE3>
AMD Features=0x20100800<SYSCALL,NX,LM>
AMD Features2=0x1<LAHF>
real memory = 536805376 (511 MB)
avail memory = 491819008 (469 MB)
Event timer "LAPIC" quality 400
ACPI APIC Table: <VBOX VBOXAPIC>
ioapic0: Changing APIC ID to 1
ioapic0 <Version 1.1> irqs 0-23 on motherboard
kbd1 at kbdmux0
acpi0: <VBOX VBOXXSDT> on motherboard
acpi0: Power Button (fixed)
acpi0: Sleep Button (fixed)
Timecounter "ACPI-fast" frequency 3579545 Hz quality 900
acpi_timer0: <32-bit timer at 3.579545MHz> port 0x4008-0x400b on acpi0
cpu0: <ACPI CPU> on acpi0
pcib0: <ACPI Host-PCI bridge> port 0xcf8-0xcff on acpi0
pci0: <ACPI PCI bus> on pcib0
isab0: <PCI-ISA bridge> at device 1.0 on pci0
isa0: <ISA bus> on isab0
atapci0: <Intel PIIX4 UDMA33 controller> port 0x1f0-0x1f7,0x3f6,0x170-0x177,0x376,0xd000-0xd00f at device 1.1 on pci0
ata0: <ATA channel 0> on atapci0
ata1: <ATA channel 1> on atapci0
vgapci0: <VGA-compatible display> mem 0xe0000000-0xe0ffffff irq 18 at device 2.0 on pci0
em0: <Intel(R) PRO/1000 Legacy Network Connection 1.0.3> port 0xd010-0xd017 mem 0xf0000000-0xf001ffff irq 19 at device 3.0 on pci0
em0: Ethernet address: 08:00:27:9f:e0:92
pci0: <base peripheral> at device 4.0 (no driver attached)
pcm0: <Intel ICH (82801AA)> port 0xd100-0xd1ff,0xd200-0xd23f irq 21 at device 5.0 on pci0
pcm0: <SigmaTel STAC9700/83/84 AC97 Codec>
ohci0: <OHCI (generic) USB controller> mem 0xf0804000-0xf0804fff irq 22 at device 6.0 on pci0
usbus0: <OHCI (generic) USB controller> on ohci0
pci0: <bridge> at device 7.0 (no driver attached)
acpi_acad0: <AC Adapter> on acpi0
atkbdc0: <Keyboard controller (i8042)> port 0x60,0x64 irq 1 on acpi0
atkbd0: <AT Keyboard> irq 1 on atkbdc0
kbd0 at atkbd0
atkbd0: [GIANT-LOCKED]
psm0: <PS/2 Mouse> irq 12 on atkbdc0
psm0: [GIANT-LOCKED]
psm0: model IntelliMouse Explorer, device ID 4
attimer0: <AT timer> port 0x40-0x43,0x50-0x53 on acpi0
Timecounter "i8254" frequency 1193182 Hz quality 0
Event timer "i8254" frequency 1193182 Hz quality 100
sc0: <System console> at flags 0x100 on isa0
sc0: VGA <16 virtual consoles, flags=0x300>
vga0: <Generic ISA VGA> at port 0x3c0-0x3df iomem 0xa0000-0xbffff on isa0
atrtc0: <AT realtime clock> at port 0x70 irq 8 on isa0
Event timer "RTC" frequency 32768 Hz quality 0
ppc0: cannot reserve I/O port range
Timecounters tick every 10.000 msec
pcm0: measured ac97 link rate at 485193 Hz
em0: link state changed to UP
usbus0: 12Mbps Full Speed USB v1.0
ugen0.1: <Apple> at usbus0
uhub0: <Apple OHCI root HUB, class 9/0, rev 1.00/1.00, addr 1> on usbus0
cd0 at ata1 bus 0 scbus1 target 0 lun 0
cd0: <VBOX CD-ROM 1.0> Removable CD-ROM SCSI-0 device
cd0: 33.300MB/s transfers (UDMA2, ATAPI 12bytes, PIO 65534bytes)
cd0: Attempt to query device size failed: NOT READY, Medium not present
ada0 at ata0 bus 0 scbus0 target 0 lun 0
ada0: <VBOX HARDDISK 1.0> ATA-6 device
ada0: 33.300MB/s transfers (UDMA2, PIO 65536bytes)
ada0: 12546MB (25694208 512 byte sectors: 16H 63S/T 16383C)
ada0: Previously was known as ad0
Timecounter "TSC" frequency 3007772192 Hz quality 800
Root mount waiting for: usbus0
uhub0: 8 ports with 8 removable, self powered
Trying to mount root from ufs:/dev/ada0p2 [rw]...
Setting hostuuid: 1848d7bf-e6a4-4ed4-b782-bd3f1685d551.
Setting hostid: 0xa03479b2.
Entropy harvesting: interrupts ethernet point_to_point kickstart.
Starting file system checks:
/dev/ada0p2: FILE SYSTEM CLEAN; SKIPPING CHECKS
/dev/ada0p2: clean, 2620402 free (714 frags, 327461 blocks, 0.0% fragmentation)
Mounting local file systems:.
vboxguest0 port 0xd020-0xd03f mem 0xf0400000-0xf07fffff,0xf0800000-0xf0803fff irq 20 at device 4.0 on pci0
vboxguest: loaded successfully
Setting hostname: machine3.example.com.
Starting Network: lo0 em0.
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> metric 0 mtu 16384
options=3<RXCSUM,TXCSUM>
inet6 ::1 prefixlen 128
inet6 fe80::1%lo0 prefixlen 64 scopeid 0x3
inet 127.0.0.1 netmask 0xff000000
nd6 options=21<PERFORMNUD,AUTO_LINKLOCAL>
em0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
options=9b<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,VLAN_HWCSUM>
ether 08:00:27:9f:e0:92
nd6 options=29<PERFORMNUD,IFDISABLED,AUTO_LINKLOCAL>
media: Ethernet autoselect (1000baseT <full-duplex>)
status: active
Starting devd.
Starting Network: usbus0.
DHCPREQUEST on em0 to 255.255.255.255 port 67
DHCPACK from 10.0.2.2
bound to 192.168.1.142 -- renewal in 43200 seconds.
add net ::ffff:0.0.0.0: gateway ::1
add net ::0.0.0.0: gateway ::1
add net fe80::: gateway ::1
add net ff02::: gateway ::1
ELF ldconfig path: /lib /usr/lib /usr/lib/compat /usr/local/lib
32-bit compatibility ldconfig path: /usr/lib32
Creating and/or trimming log files.
Starting syslogd.
No core dumps found.
Clearing /tmp (X related).
Updating motd:.
Configuring syscons: blanktime.
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:
10:a0:f5:af:93:ae:a3:1a:b2:bb:3c:35:d9:5a:b3:f3 root@machine3.example.com
The key's randomart image is:
+--[RSA1 1024]----+
| o.. |
| o . . |
| . o |
| o |
| o S |
| + + o |
|o . + * |
|o+ ..+ . |
|==o..o+E |
+-----------------+
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:
7e:1c:ce:dc:8a:3a:18:13:5b:34:b5:cf:d9:d1:47:b2 root@machine3.example.com
The key's randomart image is:
+--[ DSA 1024]----+
| .. . .|
| o . . + |
| . .. . E .|
| . . o o . . |
| + S = . |
| + . = o |
| + . * . |
| . . o . |
| .o. . |
+-----------------+
Starting sshd.
Starting cron.
Starting background file system checks in 60 seconds.
Thu Oct 6 19:15:31 MDT 2011
FreeBSD/amd64 (machine3.example.com) (ttyv0)
login:
На медленных машинах генерирование ключей RSA и DSA может занять ощутимое время. Это происходит лишь при первой загрузке новой системы, и лишь в случае, когда sshd настроен на автоматический запуск. Последующие загрузки будут проходить быстрее.
По умолчанию во FreeBSD не устанавливается никаких графических оболочек, однако в наличии они имеются. За более подробной информацией обратитесь к X Window System.
2.9.9. Завершение работы FreeBSD
Корректное завершение работы компьютера с FreeBSD помогает защитить от повреждений не только данные, но даже и аппаратное обеспечение. Не стоит просто выключать питание. Если вы входите в группу wheel
, то станьте суперпользователем набрав в командной строке команду su
и введя пароль пользователя root
. Или же, войдите в систему как root
и наберите команду shutdown -p now
. Система корректно завершит работу и выключится.
Комбинация клавиш Ctrl+Alt+Del может быть задействована для перезагрузки системы, однако во время нормальной работы пользоваться ею не рекомендуется.
2.10. Решение проблем
Нижеследующий раздел описывает часто встречающиеся и сообщенные пользователями проблемы, возникающие в ходе установки.
2.10.1. Что делать, если что-то идет не так
По причине различных ограничений архитектуры PC, определение периферийных устройств (device probing) не может быть достоверным на все 100%, однако, есть несколько шагов, которые вы можете предпринять, если определение завершится неудачно.
Просмотрите Информацию об оборудовании (Hardware Notes) для вашей версии FreeBSD чтобы убедиться, что ваше оборудование поддерживается.
Если ваше оборудование поддерживается, а зависания или другие проблемы продолжаются, то вам необходимо будет построить собственное ядро. Это позволит вам добавить поддержку устройств, которые отсутствуют в ядре GENERIC. Ядро на установочных дисках сконфигурировано исходя из предположения, что большинство устройств находятся в настройках по умолчанию касательно прерываний, адресов ввода/вывода, каналов DMA. Если ваше оборудование было перенастроено, то вам скорее всего необходимо будет отредактировать конфигурационный файл ядра и пересобрать его, чтобы сообщить FreeBSD о настройках, отличных от предполагаемых.
Также возможны случаи, когда процедура определения (probe) для отсутствующего устройства приводит к сбою процедуры определения для другого устройства, присутствующего в аппаратной конфигурации. В этом случае необходимо отключить процедуру (процедуры) определения для конфликтующего драйвера (драйверов).
Некоторое количество проблем с установкой может быть устранено или уменьшено путем обновления встроенного программного обеспечения различных аппаратных компонентов, особенно - материнской платы. Встроенное программное обеспечение материнской платы обычно называется BIOS. У большинства производителей материнских плат и компьютеров есть Web-сайты, содержащие как информацию об обновлениях, так и сами обновления. В общем, производители не рекомендуют обновлять BIOS материнской платы, если на то нет веских причин, например, таких как появление критически важного обновления. Процесс обновления может потерпеть неудачу, тем самым оставив BIOS поврежденным, а компьютер - нерабочим. |
2.10.2. Решение проблем: вопросы и ответы
2.10.2.1. Моя система зависает во время загрузки на этапе определения устройств (probing), или она ведет себя странно во время установки.
Касательно платформ i386, amd64 и ia64: если во время загрузки была обнаружена система ACPI, то FreeBSD повсеместно использует её для конфигурирования оборудования. К сожалению, до сих пор существуют неполадки как в драйвере ACPI, так и среди материнских плат и их BIOS. ACPI может быть отключена путём установки значения переменной hint.acpi.0.disabled
на третьем этапе загрузки:
set hint.acpi.0.disabled="1"
Это значение сбрасывается каждый раз при загрузке системы, поэтому строку hint.acpi.0.disabled="1"
необходимо добавить в файл /boot/loader.conf. Информация о загрузчике приведена в Описание.
2.11. Использование Live CD
FreeBSD Live CD находится на том же CD диске, что и установочная программа. Это удобно для тех пользователей, которые всё еще размышляют о пригодности для них ОС FreeBSD и желают проверить некоторые функциональные возможности до начала установки.
При работе с Live CD следует учесть следующее:
|
Глава 3. Основы FreeBSD
3.1. Краткий обзор
Эта глава посвящена основным командам и функциональности операционной системы FreeBSD. Большая часть нижеизложенного материала применима к любой UNIX®-подобной операционной системе. Новые пользователи FreeBSD призываются к внимательному чтению всей главы.
Прочитав эту главу, вы будете знать:
Как использовать и настраивать виртуальные консоли.
Как создавать пользователей и группы пользователей во FreeBSD и управлять ими.
Как работают права доступа на файлы в UNIX® и файловые флаги во FreeBSD.
Иерархию каталогов FreeBSD.
Организацию дисков FreeBSD.
Как монтировать и размонтировать файловые системы.
Что такое процессы, даемоны и сигналы.
Что такое командный процессор и как изменить используемые по умолчанию параметры рабочего окружения.
Как пользоваться стандартными текстовыми редакторами.
Что такое устройства и файлы устройств.
Как пользоваться справочным руководством для получения дополнительной информации.
3.2. Виртуальные консоли и терминалы
Если только FreeBSD не была настроена на автоматический запуск графической среды при загрузке, система будет запускаться в режиме запроса ввода имени учётной записи в командной строке, как в этом примере:
login:
Первая строка содержит определённую информацию о системе.
amd64
указывает на то, что FreeBSD работает в 64-разрядной системе x86.
pc3.example.org
является именем хоста, а ttyv0
указывает на то, что это "системная консоль".
Вторая строка является приглашением к входу в систему.
Поскольку FreeBSD является многопользовательской системой, она должна каким-то образом отличать различных пользователей. Это достигается за счёт того, что каждый пользователь перед получением доступа к программам системы должен в эту систему войти. Каждый пользователь имеет уникальное "имя пользователя" и персональный "пароль".
Для входа в системную консоль наберите имя пользователя, которое было настроено во время установки системы, описанной в разделе Добавление пользователей, и нажмите Enter. Затем введите пароль, соответствующий этому имени пользователя и нажмите Enter. Пароль не отображается по соображениям безопасности.
После ввода корректного пароля будет выдано сообщение дня (MOTD, Message Of The Day), за которым последует приглашение командной строки.
В зависимости от командного процессора, который был выбран при создании пользователя, таким приглашением будет символ #
, $
или %
.
Это приглашение указывает на то, что теперь пользователь вошёл в системную консоль FreeBSD и может попытаться использовать имеющиеся команды.
3.2.1. Виртуальные консоли
Хотя системная консоль может использоваться для взаимодействия с системой, пользователь, работающий в режиме командной строки за клавиатурой системы FreeBSD, как правило, будет входить в систему через виртуальную консоль. Это так, потому что по умолчанию выдача системных сообщений настроена на их отображение на системной консоли. Эти сообщения будут выдаваться поверх команд или файлов, с коорым работает пользователь, что мешает сосредоточиться на текущей работе.
По умолчанию FreeBSD настроена так, что она предоставляет несколько виртуальных консолей для ввода команд. Каждая виртуальная консоль обладает собственным приглашением к входу в систему и командным процессором, а переключение между виртуальными консолями выполняется легко. В итоге это равнозначно предоставлению нескольких одновременно открытых окон в графической среде, но в режиме командной строки.
Для переключения между виртуальными консолями во FreeBSD зарезервированы комбинации клавиш от Alt+F1 до Alt+F8.
Используйте Alt+F1 для переключения на системную консоль (ttyv0
), Alt+F2 для доступа к первой виртуальной консоли (ttyv1
), Alt+F3 для доступа ко второй виртуальной консоли (ttyv2
) и так далее.
При использовании Xorg в качестве графической консоли для переключения на текстовую виртуальную консоль используется комбинация Ctrl+Alt+F1.
При переключении от одной консоли к другой FreeBSD берёт на себя управление изображением на экране. В результате создаётся видимость наличия множества виртуальных экранов и клавиатур, которые могут быть использованы при наборе команд для их запуска во FreeBSD. Программы, запущенные на одной из виртуальных консолей, не прекращают своей работы, когда пользователь переключается на другую виртуальную консоль.
Обратитесь к kbdcontrol(1), vidcontrol(1), atkbd(4), syscons(4) и vt(4) для получения дополнительных технических описаний консоли FreeBSD и драйверов её клавиатуры.
Во FreeBSD количество доступных виртуальных консолей настраивается в следующем разделе файла /etc/ttys
.
# name getty type status comments # ttyv0 "/usr/libexec/getty Pc" xterm on secure # Virtual terminals ttyv1 "/usr/libexec/getty Pc" xterm on secure ttyv2 "/usr/libexec/getty Pc" xterm on secure ttyv3 "/usr/libexec/getty Pc" xterm on secure ttyv4 "/usr/libexec/getty Pc" xterm on secure ttyv5 "/usr/libexec/getty Pc" xterm on secure ttyv6 "/usr/libexec/getty Pc" xterm on secure ttyv7 "/usr/libexec/getty Pc" xterm on secure ttyv8 "/usr/X11R6/bin/xdm -nodaemon" xterm off secure
Для отключения какой-либо виртуальной консоли поместите символ комментария (#
) в начале строки, соответствующей этой виртуальной консоли.
К примеру, для уменьшения количества доступных виртуальных консолей с восьми до четырёх поместите #
в начале последних четырёх строк, представляющих виртуальные консоли с ttyv5
по ttyv8
.
Не комментируйте строку системной консоли ttyv0
.
Заметьте, что последняя виртуальная консоль (ttyv8
) используется для доступа к графическому окружению, если был установлен пакет Xorg, как это описано в главе X Window System.
+ За детальным описанием каждой колонки этого файла и доступных параметров виртуальных консолей обратитесь к ttys(5).
3.2.2. Однопользовательский режим
В загрузочном меню FreeBSD имеется пункт, который называется "Boot Single User".
При его выборе система загрузится в специальном режиме, который называется "однопользовательским".
Этот режим обычно используется для восстановления работоспособности системы, которая не загружается, или для сброса пароля пользователя root
, когда он неизвестен.
В однопользовательском режиме недоступны сетевые функции и дополнительные виртуальные консоли.
При всём при этом имеется полный доступ к системе с полномочиями пользователя root
, и по умолчанию пароль пользователя root
не требуется.
По этим причинам для загрузки в таком режиме требуется физический доступ к клавиатуре, а решение о том, кто имеет физический доступ к клавиатуре, стоит рассматривать в контексте обеспечения безопасности системы FreeBSD.
+
Настройки, управляющие однопользовательским режимом, находятся в следующем разделе файла /etc/ttys
:
# name getty type status comments # # Если консоль помечена как "insecure", то init будет запрашивать пароль # пользователя root при переходе в однопользовательский режим console none unknown off secure
По умолчанию столбец status установлен в значение secure
.
Это предполагает, что физический доступ к клавиатуре либо не важен, либо контролируется политикой физической безопасности.
Если изменить этот параметр на insecure
, то это будет означать, что само по себе окружение не является безопасным, так как любой может получить доступ к клавиатуре.
Когда в этой строке значение меняется на insecure
, то FreeBSD будет запрашивать пароль пользователя root
в случае, когда пользователь выберет загрузку в однопользовательском режиме.
Будьте осторожны при изменении этого параметра на |
3.2.3. Изменение видеорежимов консоли
Установленный по умолчанию режим видео для консоли FreeBSD может быть изменён до значения 1024x768, 1280x1024 или любого другого, который поддерживается вашим монитором и видеокартой.
Для использования другого видеорежима загрузите модуль VESA
:
# kldload vesa
Для определения того, какие видеорежимы поддерживаются вашим оборудованием, воспользуйтесь vidcontrol(1). Чтобы получить список поддерживаемых видеорежимов, выполните следующую команду:
# vidcontrol -i mode
Выдача этой команды отобразит список видеорежимов, поддерживаемых оборудованием.
Для выбора нового видеорежима укажите его при помощи vidcontrol(1), работая как пользователь root
.
# vidcontrol MODE_279
Если новый видеорежим приемлем, то его можно определить постоянно устанавливаемым при загрузке, добавив его в /etc/rc.conf
:
allscreens_flags="MODE_279"
3.3. Пользователи и основы управления учётными записями
FreeBSD позволяет одновременное использование компьютера множеством пользователей. В то время, как в одно и то же время только один пользователь может сидеть перед экраном и использовать клавиатуру, войти в систему по сети может любое количество пользователей. Для того, чтобы использовать систему, каждый пользователь должен иметь собственную учётную запись.
В этом разделе описывается вот что:
Различные виды пользовательских учётных записей в системе FreeBSD.
Как добавлять, удалять и изменять учётные записи пользователей.
Как устанавливать ограничения для управления ресурсами, к которым имеют доступ пользователи и группы пользователей.
Как создавать группы и добавлять пользователей в качестве их членов.
3.3.1. Виды учётных записей
Так как все доступы к системе FreeBSD осуществляются через учётные записи, и все процессы запускаются пользователями, то управление пользователями и учётными записями является важным вопросом.
Существуют три основных вида учётных записей: системные учётные записи, пользовательские учётные записи и учётная запись суперпользователя.
3.3.1.1. Системные учётные записи
Системные учётные записи используются для запуска таких сервисов, как DNS, электронная почта и веб-серверы. Причиной этого является безопасность; если бы все сервисы работали с полномочиями суперпользователя, то они могли бы действовать без ограничений.
Примерами системных учётных записей являются daemon
, operator
, bind
, news
и www
.
nobody
является обобщённой непривилегированной системной учётной записью.
Несмотря на это, чем больше сервисов используют nobody
, тем больше файлов и процессов становятся связанными с этим пользователем, и, соответственно, тем болеепривилегированным становится этот пользователь.
3.3.1.2. Учётные записи пользователей
Учётные записи пользователей назначаются реальным людям и используются для входа в систему и её использования. Каждый человек, имеющий доступ к системе, должен иметь уникальную пользовательскую учётную запись. Это позволяет администратору понимать, кто и что делает, а также предотвращать затирание настроек одних пользователей другими пользователями.
Каждый пользователь может настроить свою собственную рабочую среду, приспособленную к использованию системы, при помощи выбора оболочки, используемой по умолчанию, редактора, привязок комбинаций клавиш и настроек языкового окружения.
С каждой пользовательской учётной записью в системе FreeBSD связана определенная информация:
- Имя пользователя
Имя пользователя вводится в строке приглашения
login:
. У каждого пользователя обязательно должно быть уникальное имя пользователя. Существует определённый набор правил для создания допустимых имен пользователей, документированных в passwd(5). Для того, чтобы поддерживать обратную совместимость с приложениями, рекомендуется использовать имена пользователей, состоящие из восьми или меньшего количества символов в нижнем регистре.- Пароль
У каждой учётной записи имеется связанный с ней пароль.
- Идентификатор пользователя (UID)
Идентификатор пользователя (UID) является числом, используемым для однозначной идентификации этого пользователя в системе FreeBSD. Команды, позволяющие указывать имя пользователя, сначала будут преобразовывать его в UID. Рекомендуется использовать UID меньше 65535, так как более высокие значения могут вызвать проблемы совместимости с некоторым программным обеспечением.
- Идентификатор группы (GID)
Идентификатор группы (GID) является числом, используемым для однозначной идентификации основной группы, которой принадлежит пользователь. Группы являются механизмом контроля доступа к ресурсам на основе GID пользователя, а не его UID. Это может значительно уменьшить размер некоторых конфигурационных файлов, а также позволяет пользователям быть членами более чем одной группы. Рекомендуется использовать значения GID, не превышающие 65535, так как превышение может вызвать сбои некоторого программного обеспечения.
- Класс доступа (login class)
Классы доступа являются расширением механизма групп, дающим дополнительную гибкость при адаптации системы к различным пользователям. Классы доступа описываются в разделе Настройка классов доступа.
- Периодичность смены пароля
По умолчанию пароли не устаревают. Однако устаревание пароля может быть включено по отдельности у каждого пользователя, принуждая всех или некоторых пользователей менять свои пароли по истечении определённого периода времени.
- Время действия учётной записи
По умолчанию во FreeBSD время действия учётных записей не ограничено. При создании учётных записей с ограниченным сроком действия, например, учётных записей студентов учебного заведения, укажите дату истечения действия учетной записи при помощи pw(8). После наступления указанной даты учётная запись не может быть использована для входа в систему, хотя каталоги и файлы, соответствующие этой учётной записи, не исчезнут.
- Полное имя пользователя
Имя пользователя является уникальным идентификатором учётной записи для FreeBSD, однако оно не обязательно соответствует реальному имени пользователя. Подобно комментариям, эта информация может содержать пробелы, заглавные буквы и иметь длину более 8 символов.
- Домашний каталог
Домашний каталог является полным путём к некоторому каталогу в системе. Это начальный каталог пользователя после его входа в систему. По общепринятому соглашению все домашние каталоги пользователей размещаются в
/home/username
или/usr/home/username
. Пользователи хранят свои личные файлы и подкаталоги в своих домашних каталогах.- Оболочка пользователя
Оболочка обеспечивает стандартное пользовательское окружение для взаимодействия с системой. Существует множество различных видов оболочек, и у опытных пользователей будут свои предпочтения, которые могут быть отражены в настройках их учётных записей.
3.3.1.3. Учётная запись суперпользователя
Учётная запись суперпользователя, обычно называемая root
, используется для управления системой без ограничения полномочий.
По этой причине она не должна использоваться для таких повседневных задач, как отправка и получение почты, общий анализ системы или программирование.
В отличие от других пользовательских учётных записей, может работать без ограничений, и некорректное использование учётной записи суперпользователя может привести к грандиозным авариям. Учётные записи пользователей не способны уничтожить систему по ошибке, поэтому рекомендуется входить в систему как пользователь, и переключаться в режим суперпользователя только в случае, когда запускаемой команде требуются дополнительные полномочия.
Всегда проверяйте и перепроверяйте любые команды, запускаемые учётной записью суперпользователя, поскольку любой дополнительный пробел или отсутствующий символ может привести к безвозвратной потере данных.
Имеется несколько способов получения полномочий суперпользователя.
Хотя можно входить как пользователь root
, это крайне не рекомендуется.
Для того, чтобы стать суперпользователем, вместо этого используйте su(1).
Если при запуске этой команды указывается параметр -
, то пользователь также получит настройки окружения учётной записи root
.
Пользователь, запускающий эту команду, должен входить в группу wheel
, в противном случае команда не будет выполнена.
Пользователь также должен знать пароль для учётной записи пользователя root
.
В этом примере пользователь становится суперпользователем только для запуска команды make install
, так как этот шаг требует полномочий суперпользователя.
После завершения работы команды пользователь набирает exit
для того, чтобы выйтих из учётной записи суперпользователя и возвратиться к полномочиям собственной пользовательской учётной записи.
% configure
% make
% su -
Password:
# make install
# exit
%
Стандартный механизм su(1) хорошо работает для отдельных инсталляций или небольших сетей с единственным системным администратором. Альтернативой является установка пакета или порта security/sudo. Данное программное обеспечение обеспечивает протоколирование активностей и позволяет администратору настраивать, какие команды и какими пользователями могут запускаться с полномочиями суперпользователя.
3.3.2. Управление учётными записями
FreeBSD предоставляет набор различных команд для управления учётными записями пользователей. Наиболее часто используемые команды перечислены в разделе Инструменты для управления учётными записями, атем даны некоторые примеры их использования. Обратитесь к страницам Справочника каждой утилиты для получения дополнительной информации и примеров использования.
Команда | Краткое описание |
---|---|
Рекомендуемое приложение командной строки для добавления новых пользователей. | |
Рекомендуемое приложение командной строки для удаления пользователей. | |
Гибкий инструмент для изменения информации в базе данных пользователей. | |
Инструмент командной строки для изменения паролей пользователей. | |
Мощный и гибкий инструмент для изменения всех параметров пользовательских учётных записей. | |
Инструмент настройки системы с поддержкой управления учётными записями. |
3.3.2.1. Добавление пользователя
Рекомендуемой программой для добавления новых пользователей является adduser(8).
При добавлении нового пользователя эта программа автоматически обновляет /etc/passwd
и /etc/group
.
Она также создаёт домашний каталог для этого пользователя, копирует стандартные конфигурационные файлы из /usr/share/skel
и опционально может отправить новому пользователю по электронной почте приветственное сообщение.
Эта утилита должна запускаться с полномочиями суперпользователя.
Утилита adduser(8) является интерактивной и следует шагам создания новой учётной записи пользователя.
Как показано в разделе Добавление пользователя во FreeBSD, вводите запрашиваемую информацию либо нажимайте Return для принятия значения по умолчанию, отображаемого в квадратных скобках.
В этом примере пользователь был приглашён в группу wheel
, позволяющей работать с полномочиями суперпользователя при помощи su(1).
По окончании утилита выдаст запрос на создание ещё одного пользователя или завершение работы.
# adduser
Выводимый текст должен быть похож на следующее:
Username: jru Full name: J. Random User Uid (Leave empty for default): Login group [jru]: Login group is jru. Invite jru into other groups? []: wheel Login class [default]: Shell (sh csh tcsh zsh nologin) [sh]: zsh Home directory [/home/jru]: Home directory permissions (Leave empty for default): Use password-based authentication? [yes]: Use an empty password? (yes/no) [no]: Use a random password? (yes/no) [no]: Enter password: Enter password again: Lock out the account after creation? [no]: Username : jru Password : **** Full Name : J. Random User Uid : 1001 Class : Groups : jru wheel Home : /home/jru Shell : /usr/local/bin/zsh Locked : no OK? (yes/no): yes adduser: INFO: Successfully added (jru) to the user database. Add another user? (yes/no): no Goodbye!
Так как при наборе пароля он не отображается, будьте внимательны к опечаткам при его вводе при создании пользовательской учётной записи. |
3.3.2.2. Удаление пользователя
Для полного удаления пользователя из системы запустите rmuser(8) с полномочиями суперпользователя. Эта команда выполняет следующие шаги:
Удаляет пользовательскую информацию в crontab(1), если она имеется.
Удаляет все задания at(1), принадлежащие этому пользователю.
Отправляет сигнал SIGKILL всем процессам, владельцем которых является данный пользователь.
Удаляет пользователя из локального файла паролей системы.
Удаляет домашний каталог пользователя (если владельцем этого каталога является данный пользователь), включая обработку символических ссылок в маршруте к реальному домашнему каталогу.
Удаляет файлы входящей почты, принадлежащие этому пользователю, из
/var/mail
.Удаляет все файлы, владельцем которых является этот пользователь, из /tmp`,
/var/tmp
и/var/tmp/vi.recover
.Удаляет имя пользователя из всех групп, в которых он состоит, в
/etc/group
. Если какая-то группа становится пустой, а её название совпадает с именем пользователя, то эта группа удаляется; эта группа соответствует уникальной пользовательской группе, создаваемой adduser(8).Удаляет все очереди сообщений, сегменты совместно используемой памяти и семафоры, владельцем которых является данный пользователь.
rmuser(8) не может использоваться для удаления учётной записи суперпользователя, поскольку это практически гарантированно означает массовые сбои системы.
По умолчанию используется интерактивный режим, как показано в следующем примере.
rmuser
# rmuser jru
Выводимый текст должен быть похож на следующее:
Matching password entry: jru:*:1001:1001::0:0:J. Random User:/home/jru:/usr/local/bin/zsh Is this the entry you wish to remove? y Remove user's home directory (/home/jru)? y Removing user (jru): mailspool home passwd.
3.3.2.3. Изменение информации о пользователе
Любой пользователь может воспользоваться chpass(1) для изменения своего используемого по умолчанию командного процессора и персональной информации, связанной с его пользовательской учётной записью. Суперпользователь может использовать данную утилиту для изменения дополнительной информации об учётной записи любого пользователя.
При запуске без указания параметров, за исключением необязательного имени пользователя, chpass(1) отображает редактор, содержащий информацию пользователя. Когда пользователь завершает работу с редактором, база данных пользователей обновляется новой информацией.
Если утилита запущена не с полномочиями суперпользователя, то после выхода из редактора она запросит пароль пользователя. |
В разделе Использование chpass
с полномочиями суперпользователя суперпользователь набрал chpass jru
и просматривал поля, которые могут быть изменены для данного пользователя.
Если вместо этого эта команда будет запущена пользователем jru
, то будут отображены и доступны для редактирования только шесть последних полей.
Это показано в разделе Использование chpass
с полномочиями обычного пользователя.
chpass
с полномочиями суперпользователя# chpass
Выводимый текст должен быть похож на следующее:
#Changing user database information for jru. Login: jru Password: * Uid [#]: 1001 Gid [# or name]: 1001 Change [month day year]: Expire [month day year]: Class: Home directory: /home/jru Shell: /usr/local/bin/zsh Full Name: J. Random User Office Location: Office Phone: Home Phone: Other information:
chpass
с полномочиями обычного пользователя#Changing user database information for jru.
Shell: /usr/local/bin/zsh
Full Name: J. Random User
Office Location:
Office Phone:
Home Phone:
Other information:
Команды chfn(1) и chsh(1) являются ссылками на chpass(1), так же, как и ypchpass(1), ypchfn(1) и ypchsh(1).
Так как NIS поддерживается автоматически, указание |
3.3.2.4. Изменение пароля пользователя
Любой пользователь может легко сменить собственный пароль при помощи passwd(1). Для предотвращения случайных или неавторизованных изменений перед установкой нового пароля эта команду будут запрашивать первоначальный пароль пользователя:
% passwd
Выводимый текст должен быть похож на следующее:
Changing local password for jru. Old password: New password: Retype new password: passwd: updating the database... passwd: done
Суперпользователь может сменить пароль любого пользователя, указав имя пользователя при запуске passwd(1). В тех случаях, когда эта утилита работает с полномочиями суперпользователя, она не будет запрашивать текущий пароль пользователя. Это позвляет менять пароль в случае, когда пользователь не может вспомнить первоначальный пароль.
# passwd jru
Выводимый текст должен быть похож на следующее:
Changing local password for jru. New password: Retype new password: passwd: updating the database... passwd: done
Как и в случае с chpass(1), yppasswd(1) является ссылкой на passwd(1), так что NIS работает с любой из команд. |
3.3.2.5. Создание, удаление, изменение и просмотр пользователей и групп в системе
Утилита pw(8) может создавать, удалять, изменять и отображать пользователей и группы. Она функционирует как пользовательский интерфейс к системным файлам пользователей и групп. pw(8) обладает очень мощным набором параметров командной строки, что делает её подходящей для использования в скриптах командного процессора, однако новым пользователям она может показаться более сложной, чем другие команды, представленные в этом разделе.
3.3.3. Управление группами
Группа представляет собой список пользователей. Группа идентифицируется по её имени и GID. Во FreeBSD для определения того, что имеет право делать процесс, ядро использует UID процесса и список групп, которым он принадлежит. В большинстве случаев GID пользователя или процесса соотносится с первой группой из списка.
Соответствия имени группы и GID перечислены в /etc/group
.
Это обычный текстовый файл с четырьмя полями, разделёнными двоеточиями.
Первое поле соответствует имени группы, второе является зашифрованным паролем, третье содержит GID, а четвёртое является списком членов группы, разделённых запятыми.
За полным описанием синтаксиса обратитесь к group(5).
Суперпользователь может изменять /etc/group
при помощи какого-либо текстового редактора, однако предпочтительным способом является редактирование файла с группами при помощи утилиты vigr(8), так как она может отловить некоторые распространённые ошибки.
В качестве альтернативы для добавления и редактирования групп можно использовать pw(8).
Например, для добавления группы с именем teamtwo
и последующей проверки её существования:
При использовании группы operator следует соблюдать осторожность, так как при этом могут быть ненамеренно даны полномочия этой группы, близкие к полномочиям суперпользователя, включая, но не ограничиваясь, правами на завершение работы системы и её перезапуск, а также на доступ ко всем объектам в |
# pw groupadd teamtwo
# pw groupshow teamtwo
Выводимый текст должен быть похож на следующее:
teamtwo:*:1100:
В этом примере 1100
является GID группы teamtwo
.
На данный момент в teamtwo
нет участников.
Эта команда добавит jru
в группу teamtwo
в качестве участника.
# pw groupmod teamtwo -M jru
# pw groupshow teamtwo
Выводимый текст должен быть похож на следующее:
teamtwo:*:1100:jru
Аргументом к параметру -M
является разделённый запятыми список пользователей, которых нужно добавить в новую (пустую) группу или заменить участников существующей группы.
С точки зрения пользователя такое членство в группе отличается от основной группы, указанной в файле паролей (и является дополнительным к ней).
Это значит, что пользователь не будет отображаться как участник группы при использовании параметра groupshow
с pw(8), но будет отображаться при запросе информации с помощью id(1) или аналогичного инструмента.
При использовании pw(8) для добавления пользователя в группу она работает только с /etc/group
и не пытается считывать дополнительные сведения из /etc/passwd
.
# pw groupmod teamtwo -m db
# pw groupshow teamtwo
Выводимый текст должен быть похож на следующее:
teamtwo:*:1100:jru,db
В этом примере аргументом к параметру -m
является разделённый запятыми список пользователей, которые должны быть добавлены в группу.
В отличие от предыдущего примера, эти пользователи присоединяются к группе, а не замещают существующих в группе пользователей.
% id jru
Выводимый текст должен быть похож на следующее:
uid=1001(jru) gid=1001(jru) groups=1001(jru), 1100(teamtwo)
В этом примере jru
является членом групп jru
и teamtwo
.
3.4. Права доступа
Во FreeBSD с каждым файлом и каталогом связан набор прав доступа, для просмотра и изменения которых доступны несколько утилит. Понимание того, как работают эти права доступа, необходимо для обеспечения того, чтобы пользователи могли получать доступ к файлам, которые им нужны, и не могли некорректно обращаться к файлам, используемым операционной системой или владельцами которых является другие пользователи.
В этом разделе описываются традиционные полномочия UNIX®, используемые во FreeBSD. Для более тонкого управления доступом в файловой системе обратитесь к разделу Списки управления доступом.
В UNIX® базовые права доступа назначаются с использованием трёх типов доступа: чтение, запись и исполнение.
Эти типы доступа используются для определения доступа к файлу для владельца файла, для группы и для прочих пользователей (всех остальных).
Полномочия на чтение, запись и исполнение могут быть представлены в виде букв r
, w
и x
.
Также они могут быть представлены в виде двоичных чисел, так как каждое полномочие либо включено, либо выключено (0
).
При представлении в виде числа порядок прочтения всегда имеет вид rwx
, где r
имеет значение 4
, w
имеет значение 2
и x
равно 1
.
В Таблице 4.1 сведены возможные цифровые и символьные комбинации.
В столбце "Список файлов каталога" символ -
используется для отражения отсутствующего права доступа.
Значение | Права доступа | Список файлов каталога |
---|---|---|
0 | Ничего не разрешено |
|
1 | Нельзя читать и писать, разрешено исполнять |
|
2 | Нельзя читать и исполнять, разрешено писать |
|
3 | Нельзя читать, разрешено писать и исполнять |
|
4 | Разрешено читать, нельзя писать и исполнять |
|
5 | Разрешено читать и исполнять, нельзя писать |
|
6 | Разрешено читать и писать, нельзя исполнять |
|
7 | Разрешено все |
|
Используйте параметр -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
В строке, соответствующей myfile
, первый (самый левый) символ в первом столбце указывает на то, обычный ли это файл, каталог, специальное символьное устройство, сокет или какое-то другое специальное псевдофайловое устройство.
В данном примере -
указывает на то, что это обычный файл.
Следующие три символа (в данном примере это rw-
) определяют полномочия владельца файла.
Последующие три символа, r--
, определяют полномочия группы, которой принадлежит файл.
Последние три символа, r--
, определяют полномочия для всего остального мира.
Дефис означает, что полномочия отсутствуют.
В этом примере полномочия установлены таким образом, что владелец может выполнять операции чтения и записи в файл, группа может читать файл, а весь остальной мир может только читать файл.
В соответствии с таблицей выше, полномочия для этого файлы могли бы быть представлены как 644
, где каждая цифра представляет три части полномочий на файл.
Как система управляет полномочиями на устройства?
Во FreeBSD большинство устройств представлено в виде файлов, которые программы могут открывать, читать и записывать в них данные.
Эти специальные файлы устройств размещаются в каталоге /dev
.
Каталоги обрабатываются так же, как и файлы. У них также имеются полномочия на чтение, запись и выполнение. Бит исполнимости для каталога имеет несколько другой, отличающийся от файлов, смысл. Когда каталог помечен как исполняемый, это означает, что в него можно перейти с помощью команды cd(1). Это также означает, что можно получить доступ к файлам в данном каталоге с учётом полномочий, установленных для этих файлов.
Для того, чтобы получить список файлов в каталоге, на него должны быть установлены полномочия на чтение. Для того, чтобы удалить из каталога какой-либо файл, имя которого известно, необходимо иметь полномочия на запись и исполнение каталога, содержащего соответствующий файл.
Существуют и другие права доступа, но они как правило используются в особых случаях, например, setuid-бит на выполняемые файлы и sticky-бит на каталоги. За дополнительной информацией о файловых полномочиях и о том, как их устанавливать, обратитесь к chmod(1).
3.4.1. Символическое обозначение полномочий
Символическое обозначение полномочий использует буквы вместо восьмеричных значений для назначения прав на файлы или каталоги. Символическое обозначение использует формат (кто) (действие) (полномочия), при этом доступны следующие значения:
Опция | Буква | Значение |
---|---|---|
(кто) | u | Пользователь (User) |
(кто) | g | Группа (Group) |
(кто) | o | Другие (Other) |
(кто) | a | Все (All, "world") |
(действие) | + | Добавление прав |
(действие) | - | Удаление прав |
(действие) | = | Явная установка прав |
(права) | r | Чтение (Read) |
(права) | w | Запись (Write) |
(права) | x | Выполнение (Execute) |
(права) | t | Sticky бит |
(права) | s | SUID или SGID |
Эти значения используются с командой chmod(1), но с буквами вместо цифр. Например, следующая команда блокирует доступ к FILE как для членов группы, соответствующей FILE, так и для всех прочих пользователей:
% chmod go= FILE
Для изменения более чем одного набора прав можно применить список значений, разделённых запятыми. Например, следующая команда удаляет права группы и "всех остальных" на запись в FILE и добавляет права на выполнение любым пользователям:
% chmod go-w,a+x FILE
3.4.2. Флаги файлов в FreeBSD
Кроме прав доступа к файлам, 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.3. Права доступа setuid, setgid и sticky
В дополнение к рассмотренным выше правам доступа и флагам файлов необходимо также упомянуть еще три вида прав доступа, о которых должны знать все системные администраторы.
Это полномочия setuid
, setgid
и sticky
.
Эти биты играют важную роль в определённых моментах работы UNIX®, так как они предоставляют функциональность, расширяющую права обычного пользователя. Чтобы понять, как они работают, необходимо отметить различия между реальным идентификатором пользователя (UID) и действующим идентификатором пользователя (effective UID, EUID).
Реальный UID - это идентификатор пользователя, запустившего процесс на выполнение. Действующий UID (EUID) - это идентификатор пользователя, с которым на самом деле выполняется процесс.
Например, утилита passwd(1) во время смены пароля пользователем запускается с реальным ID пользователя.
Однако для того, чтобы актуализировать базу данных паролей, команда работает с действующим ID пользователя root
.
Это позволяет пользователям изменять их пароли и не наблюдать ошибку Permission Denied
.
Полномочие setuid может быть задано в символьном виде добавлением права доступа s
для пользователя, как в следующем примере:
# chmod u+s suidexample.sh
Полномочие setuid также можно задать, добавив число четыре (4) перед численным представлением набора полномочий, как показано в следующем примере:
# chmod 4755 suidexample.sh
Теперь права доступа на suidexample.sh
выглядят подобно следующему:
-rwsr-xr-x 1 trhodes trhodes 63 Aug 29 06:36 suidexample.sh
Заметьте, что s
теперь является частью набора полномочий, относящихся к владельцу файла, и заменяет бит выполнимости.
Это позволяет работать утилитам, которым требуется повышенный уровень полномочий, таким как passwd(1).
Указание параметра |
Чтобы увидеть, как это работает, откройте два терминала.
В одном из них наберите passwd
, работая как обычный пользователь.
Пока утилита ждёт ввода нового пароля, просмотрите таблицу процессов и обратите внимание на информацию о пользователе процесса man.passwd[1].
В терминале А:
Changing local password for trhodes
Old Password:
В терминале Б:
# ps aux | grep passwd
trhodes 5232 0.0 0.2 3420 1608 0 R+ 2:10AM 0:00.00 grep passwd
root 5211 0.0 0.2 3620 1724 2 I+ 2:09AM 0:00.01 passwd
Хотя man.passwd[1] запущена от обычного пользователя, она использует действующий UID пользователя root
.
Полномочие setgid
выполняет ту же функцию, что и setuid
; отличие заключается в том, что изменяются настройки прав для группы.
Когда выполняются приложение или утилита с этой настройкой, то им назначаются полномочия на основании группы, владеющей файлом, а не пользователя, запустившего процесс.
Чтобы установить на какой-либо файл полномочие setgid
в символическом виде, добавьте право доступа для группы при помощи chmod(1):
# chmod g+s sgidexample.sh
Альтернативным способом является выполнение команды chmod(1) с добавленным в начале числом два (2):
# chmod 2755 sgidexample.sh
В следующей выдаче обратите внимание на наличие s
в перечне прав доступа для группы:
-rwxr-sr-x 1 trhodes trhodes 44 Aug 31 01:49 sgidexample.sh
В этих примерах, несмотря на то, что сценарий оболочки является исполняемым файлом, он не будет выполняться с другим действующим идентификатором пользователя (EUID). Так происходит потому, что сценариям командного интерпретатора недоступен системный вызов setuid(2). |
Позволяя повышать права доступа, биты полномочий setuid
и setgid
могут снижать безопасность системы.
Третье специальное полномочие, sticky bit
, может усиливать безопасность системы.
Sticky bit
, будучи установленным на каталог, позволяет производить удаление файла только его владельцем.
Это полезно для предотвращения удаления файлов в общедоступных каталогах, таких как /tmp
, пользователями, которые не являются владельцами файлов.
Чтобы использовать это полномочие, добавьте файлу режим t
:
# chmod +t /tmp
Альтернативным способов является добавление единицы (1) перед набором прав доступа:
# chmod 1777 /tmp
Полномочие sticky bit
будет отображаться как t
в самом конце набора прав доступа:
# ls -al / | grep tmp
drwxrwxrwt 10 root wheel 512 Aug 31 01:49 tmp
3.5. Структура каталогов
Структура каталогов FreeBSD является фундаментальным вопросом в достижении общего понимания устройства всей системы. Самым важным понятием является, несомненно, корневой каталог, или "/". Этот каталог является самым первым, монтируемым на этапе загрузки и содержащим базовую систему, необходимую для подготовки операционной системы к работе в многопользовательском режиме. Корневой каталог также содержит точки монтирования для других файловых систем, которые монтируются во время перехода к функционированию в многопользовательском режиме.
Точкой монтирования называется каталог, находящийся в родительской (обычно - корневой) файловой системе, к которому может быть подсоединена другая файловая система.
Более глубоко это описывается в разделе Организация дисков.
К стандартным точкам монтирования относятся /usr/
, /var/
, /tmp/
, /mnt/
и /cdrom/
.
Эти каталоги обычно перечислены как отдельные записи в файле /etc/fstab
.
Этот файл является таблицей с различными файловыми системами и точками монтирования, которая считывается системой.
Большинство файловых систем в /etc/fstab
монтируются во время загрузки автоматически из скрипта rc(8), если только в соответствующей записи для них не указано noauto
.
Более подробную информацию можно найти в разделе Файл fstab.
Полное описание иерархии файловой системы есть в hier(7). Таблица ниже содержит краткое описание наиболее часто упоминаемых каталогов.
Каталог | Описание |
---|---|
| Корневой каталог файловой системы. |
| Основные утилиты, необходимые для работы как в однопользовательском, так и в многопользовательском режимах. |
| Программы и конфигурационные файлы, необходимые для нормальной загрузки операционной системы. |
| Конфигурационные файлы, используемые в процессе загрузки операционной системы, со стандарными настройками. Обратитесь к loader.conf(5) для получения более подробной информации. |
| Специальные файлы устройств, управляемые при помощи devfs(5) |
| Основные конфигурационные файлы системы и скрипты. |
| Конфигурационные файлы системы со стандартными настройками. Обратитесь к rc(8) для получения более подробной информации. |
| Файлы сценариев, выполняемые ежедневно, еженедельно и ежемесячно при помощи cron(8). Обратитесь к periodic(8) для получения более подробной информации. |
| Критически важные системные библиотеки, необходимые для выполнимых файлов в |
| Критически важные системные файлы |
| Содержит подкаталоги для использования в качестве точек монтирования для сменных носителей, таких как CD, накопители USB и гибкие диски |
| Пустой каталог, часто используемый системными администраторами как временная точка монтирования. |
| Автоматически монтируемые совместно используемые ресурсы NFS; обратитесь к auto_master(5) |
| Файловая система процессов. Обратитесь к procfs(5) и mount_procfs(8) для получения более подробной информации. |
| Статически скомпилированные программы для восстановления после сбоев, как описано в rescue(8). |
| Домашний каталог пользователя |
| Системные утилиты и утилиты администрирования, необходимые для работы как в однопользовательском, так и в многопользовательском режимах. |
| Временные файлы, которые обычно не сохраняются при перезапуске системы. Размещаемая в оперативной памяти файловая система часто монтируется в |
| Основной набор пользовательских утилит и приложений. |
| Пользовательские утилиты и приложения общего назначения. |
| Стандартные заголовочные файлы для языка C. |
| Архивные библиотеки. |
| Файлы данных для различных утилит. |
| Системные даемоны и системные утилиты, вызываемые другими программами. |
| Локальные исполнимые файлы и библиотеки. Также используется в качестве стандартного целевого каталога в рамках инструментария портов FreeBSD. Внутри |
| Коллекция портов FreeBSD (опционально). |
| Системные даемоны и системные утилиты, запускаемые пользователями. |
| Файлы, не зависящие от архитектуры. |
| Исходные тексты BSD и/или локальных программ. |
| Файлы журналов общего назначения, временные, перемещаемые файлы и файлы очередей печати. |
| Файлы различных системных журналов. |
| Временные файлы, которые обычно сохраняются после перезапуска системы. |
3.6. Организация дисков
Наименьшей единицей, которую FreeBSD использует для поиска файлов, является имя файла.
Имена файлов чувствительны к регистру, поэтому readme.txt
и README.TXT
являются двумя отдельными файлами.
FreeBSD не использует расширение файла для определения того, является ли файл программой, документом или какой-то иной формой данных.
Файлы хранятся в каталогах. Каталоги могут не содержать файлов, либо могут содержать многие сотни файлов. Каталог также может содержать другие каталоги, что позволяет иметь иерархию вложенных друг в друга каталогов для организации данных.
Обращение к файлам и каталогам осуществляется указанием имени файла или каталога, дополняемого прямым слэшем /
, за которым при необходимости могут следовать имена других каталогов.
К примеру, если каталог foo
содержит каталог bar
, который содержит файл readme.txt
, то полным именем, или путём файла является foo/bar/readme.txt
.
Заметьте, что это отличается от Windows®, в которой для отделения имён файлов и каталогов используется \
.
FreeBSD не использует символьных или каких-либо других именований устройств в пути.
К примеру, набирать c:\foo\bar\readme.txt
во FreeBSD не имеет смысла.
3.6.1. Файловые системы
Каталоги и файлы хранятся в файловой системе.
Каждая файловая система на самом верхнем уровне содержит ровно один каталог, называемый корневым каталогом этой файловой системы.
Этот корневой каталог может содержать другие каталоги.
Одна из файловых систем назначается корневой файловой системой, или /
.
Любая другая файловая система монтируется в корневой файловой системе.
Вне зависимости от того, сколько дисков присутствует в системе FreeBSD, каждый каталог выглядит как часть одного диска.
Рассмотрим три файловых системы, называющиеся A
, B
, и C
.
Каждая файловая система имеет один корневой каталог, в котором содержатся два других каталоги с именами A1
, A2
(и, соответственно, B1
, B2
и C1
, C2
).
Назовём A
корневой файловой системой.
Если для просмотра содержимого этого каталога использовать команду ls(1), то она покажет два подкаталога, 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
:

Вполне возможно иметь одну большую корневую файловую систему и не иметь потребности в создании других. У такого подхода есть несколько недостатков и одно преимущество.
Различные файловые системы могут иметь различные параметры монтирования. Например, корневая файловая система может быть смонтирована в режиме доступности только для чтения, что делает невозможным случайное удаление или редактирование какого-то критически важного файла. Отделение файловых систем, доступных пользователям для записи, таких как
/home
, от других файловых систем позволяет монтировать их с параметром nosuid. Этот параметр отменяет действие битов suid/ guid на исполняемых файлах в этой файловой системе, что потенциально повышает безопасность.FreeBSD автоматически оптимизирует расположение файлов на файловой системе в зависимости от того, как файловая система используется. Файловая система, содержащая множество мелких часто записываемых файлов, будет иметь оптимизацию, отличную от таковой для файловой системы, содержащей несколько больших файлов. На одной большой файловой системе эта оптимизация не работает.
Файловые системы FreeBSD устойчивы к отключению электропитания. Тем не менее, потеря питания в критический момент все же может повредить структуру файловой системы. Разделение данных на несколько файловых систем повышает шансы, что система все-таки будет работать и делает более легким восстановление с резервной копии.
Размер файловых систем фиксирован. Если вы создаете файловую систему при установке FreeBSD и задаете определенный размер, позднее вы можете обнаружить что нужен раздел большего размера. Это не так легко сделать без резервного копирования, создания файловых систем нового размера и последующего восстановления сохраненных данных.
Во FreeBSD имеется команда growfs(8), которая позволяет увеличивать размер файловой системы на лету, устраняя это ограничение. Файловая системы может быть расширена только на свободное пространство раздела, в котором она находится. Если имеется пространство за границей раздела, то раздел может быть увеличен при помощи gpart(8). Если раздел является последним на виртуальном диске, и диск был увеличен, то и раздел может быть увеличен.
3.6.2. Дисковые разделы
Файловые системы размещаются в разделах.
Диски разбиваются на разделы в соответствии с одной из схем разбиения на разделы; обратитесь к разделу Разметка в неавтоматизированном режиме.
Более новой схемой является GPT; более старые компьютеры, применяющие BIOS, используют MBR.
GPT поддерживает разбиение диска на разделы, имеющие определённый размер, смещение и тип.
Она поддерживает большое количество разделов и типов разделов, и рекомендуется к использованию во всех случаях, где это возможно.
Разделы GPT используют имя диска с суффиксом, при этом суффикс p1
обозначает первый раздел, p2
второй раздел и так далее.
Однако MBR поддерживает лишь небольшое количество разделов.
Разделы MBR во FreeBSD называют слайсами
.
Слайсы могут быть использованы для разных операционных систем.
Слайсы FreeBSD, в свою очередь, разбиваются на разделы при помощи меток BSD (обратитесь к bsdlabel(8)).
Номера слайсов начинаются с 1, следуют за именем устройства и предваряются s
.
Таким образом, "da0s1" является первым слайсом первого накопителя SCSI.
На диске может быть только четыре физических слайса, но внутри физических слайсов подходящего типа могут размещаться логические слайсы.
Эти расширенные слайсы нумеруются начиная с 5, так что "ada0s5" является первым расширенным слайсом на первом диске SATA.
Эти устройства используются файловыми системами, занимающими весь слайс.
Каждый раздел GPT или BSD может содержать только одну файловую систему, и это значит, что файловые системы описываются либо при помощи их типичных точек монтирования в иерархии файловой системы, либо по имени раздела, в котором они размещены.
FreeBSD также использует дисковое пространство для раздела подкачки, обеспечивающего работу виртуальной памяти. Это позволяет вашему компьютеру работать так, как если бы у него было больше памяти, чем есть на самом деле. Когда у FreeBSD кончается память, она перемещает часть данных, не используемых в данный момент, в раздел подкачки и возвращает их обратно (перемещая в подкачку что-то другое), когда они нужны. Это явление называется подкачкой.
Для некоторых разделов BSD существуют определённые связанные с ними соглашения.
Раздел | Соглашение |
---|---|
| Как правило, содержит корневую файловую систему. |
| Как правило, содержит пространство подкачки. |
| В обычном случае имеет такой же размер, что и окружающий слайс. Это позволяет утилитам, которым нужно обрабатывать весь слайс, таким, как сканер плохих блоков, использовать раздел |
| Раздел |
Слайсы и "опасно размеченные" физические устройства содержат разделы BSD, обозначаемые буквами от a
до h
.
Эта буква добавляется к имени устройства, и, таким образом, "da0a" является разделом a
на первом устройстве da
, являющемся "эксклюзивно выделенным".
"ada1s3e" является пятым разделом третьего слайса второго диска SATA.
Наконец, каждый диск идентифицирован. Имя диска начинается с кода, обозначающего тип диска, затем идет номер диска. В отличие от разделов и слайсов, нумерация дисков начинается с 0. Часто встречающиеся коды перечислены в разделе Имена дисковых устройств.
Для ссылки на раздел внутри слайса указывайте имя диска, s
, номер слайса, а затем букву раздела.
Примеры показаны в Примеры именований диска.
В обозначение разделов GPT включается имя диска, p
, а затем номер раздела.
Концептуальная модель диска отражает концептуальную модель рабиения диска с использованием слайсов MBR. Концептуальная модель диска показывает концептуальную модель диска, которая должна помочь прояснить ситуацию.
При установке FreeBSD с использованием MBR настройте дисковые слайсы и создайте разделы внутри слайса для использования во FreeBSD. При использовании GPT, настройте разделы для каждой файловой системы. В любом случае создайте файловую систему или раздел подкачки в каждом разделе, а также решите, где будет монтироваться каждая из файловых систем. Обратитесь к gpart(8) для получения информации о работе с разделами.
Тип дискового устройства | Имя дискового устройства |
---|---|
Приводы жёстких дисков SATA и IDE |
|
Приводы жёстких дисков SCSI и устройства хранения USB |
|
Устройства хранения с интерфейсом NVMe |
|
Приводы CD-ROM с интерфейсом SATA и IDE |
|
Приводы CD-ROM с интерфейсом SCSI |
|
Приводы гибких дисков |
|
Ленточные накопители с интерфейсом SCSI |
|
Устройства хранения RAID | Например, |
Имя | Значение |
---|---|
| Первый раздел ( |
| Пятый раздел ( |
Эта диаграмма изображает первый подключенный к системе диск SATA с точки зрения FreeBSD.
Предположим, что объём диска составляет 250 ГБ, и он содержит слайс размером 80 ГБ и слайс размером 170 ГБ (разделы MS-DOS®).
Первый слайс содержит файловую систему Windows® NTFS, C:
, а второй слайс содержит установленную FreeBSD.
В этом примере установленная FreeBSD имеет четыре раздела с данными и раздел подкачки.
Каждый из четырёх разделов содержит файловую систему.
Раздел a
будет используется для корневой файловой системы, d
для /var/
, e
для /tmp/
и f
для /usr/
.
Раздел, обозначенный буквой c
, соответствует всему слайсу и поэтому не используется как обычный раздел.

3.7. Монтирование и размонтирование файловых систем
Файловая система лучше всего представима в виде дерева, которое, если можно так выразиться, растёт из /
.
Каталоги /dev
, /usr
и прочие, находящиеся в корневом каталоге, являются ветвями и, в свою очередь, могут иметь собственные ветви, такие как /usr/local
, и так далее.
Имеются разные основания для того, чтобы размещать некоторые из этих каталогов в отдельных файловых системах.
/var
содержит каталоги log/
, spool/
и разные виды временных файлов и, таким образом, может полностью заполнить свободное дисковое пространство.
Заполнение корневой файловой системы нежелательно, поэтому часто предпочитают отделить /var
от /
.
Другой частой причиной для размещения определённых веток каталогов в отдельных файловых системах является их расположение на отдельных физических дисках, отдельных виртуальных дисках, например, в Network File System, описанной в отдельном разделе, или на CDROM.
3.7.1. Файл fstab
В процессе загрузки (Процесс загрузки FreeBSD) файловые системы, перечисленные в /etc/fstab
, монтируются автоматически, за исключением тех, для которых указан параметр noauto
.
Этот файл содержит записи в следующем формате:
устройство /точка-монтирования тип файловой системы опции частота дампов passno
устройство
Имя существующего устройства, соответствующее описанному в разделе Имена дисковых устройств.
точка монтирования
Существующий каталог, предназначенный для монтирования файловой системы.
тип файловой системы
Тип файловой системы, который передается программе mount(8). По умолчанию FreeBSD использует
ufs
.опции
Либо
rw
для монтирования файловой системы в режиме чтения и записи, либоro
для файловых систем, доступных только в режиме чтения, за которыми могут следовать и другие нужные параметры. Довольно часто используется опцияnoauto
, чтобы не монтировать автоматически файловые системы в процессе загрузки. Остальные параметры перечислены в mount(8).частота дампов
Используется утилитой dump(8) для указания файловых систем, с которых требуется снимать копии. При отсутствии этого параметра он принимает нулевое значение.
passno
Определяет порядок, в котором файловые системы формата UFS должны проверяться при помощи fsck(8) после перезагрузки. Для файловых систем, которые должны быть пропущены при проверке, параметр
passno
должен быть установлен в нулевое значение. Корневая файловая система должна проверяться в первую очередь и иметь значениеpassno
, установленное равным единице. Для других файловых систем значение этого параметра должно превышать единицу. Если две и более файловые системы имеют одинаковое значениеpassno
, то fsck(8) будет пытаться проверять файловые системы параллельно, если это возможно.
Обратитесь к fstab(5) для получения дополнительной информацией о формате файла /etc/fstab
и его параметрах.
3.7.2. Использование mount(8)
Файловые системы монтируются при помощи mount(8). Самый простой формат имеет следующий вид:
# mount __device__ __mountpoint__
Файловая система, включённая в /etc/fstab
, также может быть смонтирована с указанием только лишь точки монтирования.
Эта команда имеет много параметров, описанных в mount(8). Самые часто используемые параметры таковы:
-a
Смонтировать все файловые системы, перечисленные в файле
/etc/fstab
, за исключением тех, что помечены как "noauto", исключены параметром-t
или уже смонтированы.-d
Сделать все, кроме самого системного вызова mount. Эта опция полезна вместе с флагом
-v
для определения того, что на самом деле пытается сделать mount(8).-f
Принудительное монтирование непроверенного раздела (опасно) или аннулирование полномочий на операции записи данных при понижении статуса монтирования файловой системы с доступной на чтение-запись на доступной только для операций чтения.
-r
Монтировать файловую систему в режиме только для чтения. Идентично использованию параметра
-o ro
.-t
fstypeСмонтировать указанный тип файловой системы или, в случае указания
-a
, монтировать файловые системы только данного типа. По умолчанию применяется тип файловой системы "ufs".-u
Обновить опции монтирования для файловой системы.
-v
Выдавать более подробную информацию.
-w
Монтировать файловую систему в режиме "чтение-запись".
Следующие значения могут быть переданы в качестве аргументов -o
в виде списка значений, разделённых запятыми:
- nosuid
Игнорировать setuid и setgid биты на файловой системе (еще одна полезная опция для повышения безопасности системы).
3.7.3. Использование umount(8)
Для размонтирования файловой системы используйте umount(8).
Эта команда принимает один параметр, который может соответствовать точке монтирования, имени устройства либо принимать значение -a
или -A
.
Во всех вариантах принимается параметр -f
для принудительного размонтирования и -v
для выдачи подробной информации.
Имейте в виду, что применение -f
в целом не рекомендутся, так как может привести к аварийному завершению работы компьютера или повредить данные в файловой системе.
Для размонтирования всех смонтированных файловых систем или только тех типов файловых систем, что перечислены после параметра -t
, воспользуйтесь параметрами -a
и -A
.
Заметьте, что при использовании -A
попытка размонтирования корневой файловой системы не предпринимается.
3.8. Процессы и даемоны
FreeBSD является многозадачной операционной системой. Каждая программа, выполняющаяся в некоторый выбранный момент времени, называется процессом. Каждая запускаемая команда порождает хотя бы один новый процесс, и имеется определённое количество системных процессов, которые запускает FreeBSD.
Каждый процесс идентифицируется уникальным номером, называемым идентификатором процесса (process ID) или PID.
Подобно файлам, у каждого процесса имеется один владелец и группа, при этом полномочия владельца и группы используются для определения того, какие файлы и устройства могут быть открыты процессом.
У большинства процессов также есть родительский процесс, которых их запустил.
Например, командная оболочка является процессом, и любая команда, запущенная из командной оболочки, является процессом, для которого командная оболочка является родительским процессом.
Исключением из этого правила является специальный процесс, который называется init(8), который всегда является первым процессом, запускаемым во время загрузки, и который всегда имеет PID, равный 1
.
Некоторые программы спроектированы не для того, чтобы работать в режиме ввода команд пользователя, и отключаются от терминала при первой возможности. К примеру, веб-сервер отвечает на веб-запросы, а не на команды пользователя. Другим примером такого типа приложений являются почтовые серверы. Программы такого типа известны под названием даемоны. Понятие даемона пришло из греческой мифологии и обозначает сущность, которая не является ни хорошей, ни плохой, и которая невидимо выполняет полезные дела. Это объясняет тот факт, что талисманом BSD является дружелюбно выглядящий даемон в кедах и с вилами.
Имеется соглашение, по которому программы, обычно работающие в режиме даемона, именуются с "d" в конце названия.
К примеру, BIND означает Berkeley Internet Name Domain, но на самом деле исполняемой программой является named
.
Программой веб-сервера Apache является httpd
, а даемоном очереди принтера является lpd
.
Это всего лишь соглашение об именовании.
К примеру, основной почтовый даемон для приложения Sendmail называется sendmail
, а не maild
.
3.8.1. Просмотр процессов
Для просмотра процессов, работающих в системе, воспользуйтесь ps(1) или top(1). Для выдачи статичного списка выполняемых в данный момент процессов, их PID, объёма используемой ими памяти и команды, которой они были запущены, используйте ps(1). Для отображения всех выполняющихся процессов и обновления этого списка каждые несколько секунд в целях интерактивного наблюдения за тем, что делает компьютер, используйте top(1).
По умолчанию ps(1) показывает пользователю только те команды, которые запущены пользователем и владельцем которых он является. К примеру:
% ps
Выводимый текст должен быть похож на следующее:
PID TT STAT TIME COMMAND 8203 0 Ss 0:00.59 /bin/csh 8895 0 R+ 0:00.00 ps
Выдача команды ps(1) организована в несколько столбцов.
Столбец PID
отображает идентификатор процесса.
PID назначаются начиная с 1 и увеличиваются до 99999, а затем отсчёт начинается с начала.
Однако PID не назначается повторно, если он уже используется.
Столбец TT
показывает терминал (tty), на котором выполняется программа, а STAT
показывает состояние программы.
TIME
соответствует количеству времени, которое программа выполняется на центральном процессоре.
Обычно это не то же самое время, что прошло с момента запуска программы, поскольку большинство программ проводят много времени в ожидании некоторого события, прежде чем занять время процессора.
Наконец, COMMAND
содержит команду, которая использовалась для запуска программы.
Имеется множество различных опций для изменения выводимой информации.
Один из наиболее полезных наборов опций это auxww
, при этом a
отображает информацию о всех запущенных процессах всех пользователей, u
показывает имя и объём используемой памяти пользователя, владеющего процессом, x
отображает информацию о процессах-даемонах, а ww
указывает ps(1) на отображение всей командной строки для каждого процесса, вместо её обрезания в случае, если она слишком длинная, чтобы уместиться на экран.
Вывод top(1) выглядит похожим образом:
% top
Выводимый текст должен быть похож на следующее:
last pid: 9609; load averages: 0.56, 0.45, 0.36 up 0+00:20:03 10:21:46 107 processes: 2 running, 104 sleeping, 1 zombie CPU: 6.2% user, 0.1% nice, 8.2% system, 0.4% interrupt, 85.1% idle Mem: 541M Active, 450M Inact, 1333M Wired, 4064K Cache, 1498M Free ARC: 992M Total, 377M MFU, 589M MRU, 250K Anon, 5280K Header, 21M Other Swap: 2048M Total, 2048M Free PID USERNAME THR PRI NICE SIZE RES STATE C TIME WCPU COMMAND 557 root 1 -21 r31 136M 42296K select 0 2:20 9.96% Xorg 8198 dru 2 52 0 449M 82736K select 3 0:08 5.96% kdeinit4 8311 dru 27 30 0 1150M 187M uwait 1 1:37 0.98% firefox 431 root 1 20 0 14268K 1728K select 0 0:06 0.98% moused 9551 dru 1 21 0 16600K 2660K CPU3 3 0:01 0.98% top 2357 dru 4 37 0 718M 141M select 0 0:21 0.00% kdeinit4 8705 dru 4 35 0 480M 98M select 2 0:20 0.00% kdeinit4 8076 dru 6 20 0 552M 113M uwait 0 0:12 0.00% soffice.bin 2623 root 1 30 10 12088K 1636K select 3 0:09 0.00% powerd 2338 dru 1 20 0 440M 84532K select 1 0:06 0.00% kwin 1427 dru 5 22 0 605M 86412K select 1 0:05 0.00% kdeinit4
Вывод разбит на два раздела.
Заголовок (первые пять или шесть строк) показывает PID последнего запущенного процесса, среднее значение загрузки системы (которое показывает насколько система занята), время работы системы с последней перезагрузки и текущее время.
Остальные числа в заголовке относятся к количеству работающих процессов, объёму использования оперативной памяти и пространства подкачки, а также количеству времени, проводимого системой в различных состояниях центрального процессора.
Если был загружен модуль файловой системы ZFS, то строка ARC
содержит информацию о том, какой объём данных был считан из кэша оперативной памяти, а не с диска.
Под заголовком размещены несколько столбцов, содержащих информацию, похожую на результат работы ps(1), такую как PID, имя пользователя, объём времени ЦПУ и команда, которая запустила процесс. По умолчанию top(1) показывает также объём памяти, занятой процессом. Эта информация разделена на два столбца: один для суммарного объёма и один для занимаемого. Суммарный объём соответствует тому, что требовался приложению, а занимаемый соответствует объёму, фактически используемому сейчас.
top(1) автоматически обновляет экран каждые две секунды.
Другое значение этого временного интервала может быть задано при помощи параметра -s
.
3.8.2. Прекращение процессов
Одним из способов взаимодействия с любым работающим процессом или даемоном является отправка ему сигнала при помощи команды kill(1).
Имеется множество различных сигналов; некоторые из них имеют специальное значение, тогда как другие описаны в документации приложения.
Пользователь может посылать какой-либо сигнал только тем процессам, владельцем которых он является, а отправка сигнала процессу какого-то другого пользователя приведёт к ошибке запрета доступа.
Исключением является пользователь root
, который может отправлять сигналы чьим угодно процессам.
Операционная система также может отправлять сигнал процессу.
Если приложение написано некорректно и пытается обратиться к области памяти, к которой оно не должно обращаться, FreeBSD посылает процессу сигнал "Segmentation Violation" (SIGSEGV
).
Если приложение было написано с учётом использования системного вызова alarm(3) для получения уведомления по истечении определённого периода времени, то ему будет отправлен сигнал "Alarm" (SIGALRM
).
Для остановки процесса могут использоваться два сигнала: SIGTERM
и SIGKILL
.
SIGTERM
является вежливым способом завершить процесс, так как процесс может считать сигнал, закрыть какие-либо протоколирующие файлы, которые он мог открыть, и завершить то, что он делал до завершения работы.
В некоторых случаях процесс может даже игнорировать SIGTERM
, если выполняет задачу, которая не может быть прервана.
SIGKILL
не может быть проигнорирован процессом.
Отправка процессу SIGKILL
обычно остановит этот процесс тотчас же.
Существует несколько задач, которые не могут быть прерваны. К примеру, если процесс пытается выполнить чтение файла, находящегося на другом компьютере в сети, а другой компьютер недоступен, то такой процесс называют "непрерываемым". В конце концов время процесса истечёт, обычно после двух минут ожидания. Как только такой таймаут случится, процесс будет прекращён. |
Другими часто используемыми сигналами являются SIGHUP
, SIGUSR1
и SIGUSR2
.
Так как эти сигналы являются сигналами общего назначения, различные приложения будут реагировать на них по-разному.
Например, после внесения изменений в конфигурационный файл веб-сервера ему нужно указать на повторное считывание настроек.
Перезапуск httpd
привёл бы к краткосрочной недоступности веб-сервера.
Вместо этого отправьте даемону сигнал SIGHUP
.
Имейте в виду, что разные даемоны будут вести себя по-разному, поэтому обратитесь к документации по даемону для определения того, достигнет ли SIGHUP
желаемых результатов.
Прекращение случайного процесса в системе является плохой затеей.
В частности, init(8), чей PID равен 1, является особенным процессом.
Выполнение |
3.9. Командные процессоры
Командный процессор (или оболочка) предоставляет интерфейс командной строки для взаимодействия с операционной системой.
Командный процессор получает команды из канала ввода и исполняет их.
Многие командные интерпретаторы имеют встроенные функции, помогающие выполнять такие повседневной задачи, как управление файлами, включая их массовую обработку, редактирование командной строки, работа с макрокомандами и переменными окружения.
FreeBSD поставляется вместе с несколькими командными процессорами, среди которых Bourne Shell (sh(1)) и расширенная версия C-shell (tcsh(1)),
Другие командные процессоры, такие как zsh
и bash
, доступны в Коллекции портов FreeBSD.
Выбор используемого интерпретатора командной строки на самом деле является делом вкуса.
Программист на языке C может чувствовать себя более комфортно с C-подобной оболочкой типа tcsh(1).
Пользователь Linux® может предпочесть bash
.
Каждый командный процессор имеет свои уникальные особенности, которые могут работать, а могут и не работать в рабочем окружении, которое предпочитает пользователь, и именно поэтому имеются варианты выбора используемой оболочки.
Одной из распространённых функций оболочки командной строки является дополнение частичного имени файла до полного.
После того, как пользователь набирает несколько первых символов команды или имени файла и нажимает клавишу Tab, командный процессор дополняет имя команды или файла до полного наименования.
Рассмотрим случай с двумя файлами, которые называются foobar
и football
.
Для удаления foobar
пользователь может набрать rm foo
и нажать Tab для формирования полного имени файла.
Однако оболочка только лишь отобразит rm foo
.
Сформировать полное имя файла невозможно, так как и foobar
, и football
начинаются с foo
.
Некоторые командные процессоры издадут звуковой сигнал или отобразят все варианты, если имеются совпадения более чем у одного имени.
Тогда пользователь должен набрать дополнительные символы для идентификации желаемого имени файла.
Набор t
и повторное нажатие Tab достаточно для того, чтобы командный процессор определил желаемый файл и дополнил остаток его имени.
Дополнительные возможности при работе с интерпретатором дает использование переменных окружения. Переменные окружения представляют собой пары переменная/значение, сохраняемые в рабочем окружении интерпретатора. Это рабочее окружение может быть прочитано любой программой, запущенной из командного интерпретатора, и, таким образом, содержит много информации для настройки приложения. Часто используемые переменные окружения содержит список часто используемых переменных окружения и их значений. Заметьте, что имена переменных окружения всегда пишутся заглавными буквами.
Переменная | Описание |
---|---|
| Имя текущего пользователя. |
| Каталоги, разделенные двоеточием, для поиска исполняемых файлов. |
| Сетевое имя дисплея Xorg для подключения при его доступности. |
| Текущий командный интерпретатор. |
| Тип терминала пользователя. Используется, чтобы узнать возможности терминала. |
| Список escape-последовательностей для управления различными функциями терминала. |
| Вид операционной системы. |
| Процессорная архитектура системы. |
| Выбранный пользователем текстовый редактор. |
| Предпочитаемая пользователем утилита для постраничного просмотра текста. |
| Каталоги, разделенные двоеточием, для поиска файлов системного справочника. |
Порядок установки значения переменной окружения различна для разных оболочек.
В командных процессорах tcsh(1) и csh(1) для задания переменных окружения используется setenv
.
В интерпретаторах sh(1) и bash
для задания актуального значения переменных окружения используется export
.
В этом примере для tcsh(1) значение по умолчанию для переменной EDITOR
устанавливается равным /usr/local/bin/emacs
:
% setenv EDITOR /usr/local/bin/emacs
Аналогичная команда для bash
была бы следующей:
% export EDITOR="/usr/local/bin/emacs"
Чтобы раскрыть значение переменной окружения для того, чтобы посмотреть её текущее значение, в командной строке наберите символ $
перед именем переменной.
Например, echo $TERM
выведет актуальное значение для $TERM
.
Командные процессоры обрабатывают специальные символы, называемые метасимволами, как особое обозначение данных.
Самым общеупотребительным метасимволом является *
, который обозначает любое количество символов в имени файла.
Метасимволы могут использоваться для выполнения массовых операций с именами файлов.
Например, команда echo *
равнозначна команде ls
, поскольку оболочка выбирает все файлы, соответствующие *
, а echo
выдаёт их список в командной строке.
Чтобы предотвратить обработку специального символа командным процессором, экранируйте его, предварив наклонной чертой влево \
(обратным слэшем).
Например, echo $TERM
выведет значение настройки терминала, тогда как echo \$TERM
выведет в буквальном смысле строку $TERM
.
3.9.1. Смена командного процессора
Самым простым способом замены командного процессора, используемого по умолчанию, на постоянной основе является использование команды chsh
.
При запуске этой команды открывается редактор, настроенный в переменной окружения EDITOR
, значение которой по умолчанию равно vi(1).
Измените строку Shell:
, указав полный путь для нового командного процессора.
Альтернативным способом является использование команды chsh -s
, которая настроит указанную оболочку без открытия редактора.
Например, для замены командного процессора на bash
:
% chsh -s /usr/local/bin/bash
Введите ваш пароль в строке приглашения и нажмите Return для смены вашего командного процессора. Для того, чтобы начать использовать новую оболочку, выйдите из системы и войдите в неё снова.
Новая оболочка обязательно должна присутствовать в файле
После этого запустите chsh(1) повторно. |
3.9.2. Расширенные функции оболочки
Оболочка UNIX® является не только лишь интерпретатором команд, она также выступает в роли мощного инструмента, позволяющего пользователям выполнять команды, перенаправлять их результирующий и входной потоки, а также выстраивать последовательность команд для улучшения выдачи финализирующей команды. Когда такая функциональность объединяется со встроенными командами, пользователь получает окружение, которое может дать максимальный эффект.
Перенаправление на уровне оболочки представляет собой действие по отправке результата работы или входного потока какой-либо команды в другую команду или в файл. Для записи результата работы команды ls(1), например, в файл, перенаправьте выходной поток:
% ls > directory_listing.txt
Список содержимого каталога теперь будет находиться в directory_listing.txt
.
Некоторые команды, подобные sort(1), могут использоваться для чтения входного потока.
Для сортировки этого списка перенаправьте входной поток:
% sort < directory_listing.txt
Входной поток будет отсортирован и размещён на экране. Для перенаправления этого ввода в другой файл можно перенаправить выходной поток sort(1), объединив направление:
% sort < directory_listing.txt > sorted.txt
Во всех примерах выше команды выполняют перенаправление при помощи файловых дескрипторов. В каждой системе UNIX® имеются файловые дескрипторы, среди которых имеются стандартный ввод (stdin), стандартный вывод (stdout) и стандартная диагностика (stderr). У каждого из них имеется своё назначение, и здесь вводом может быть клавиатура или мышь, что-то, формирующее входной поток. Выводом может быть экран или бумага в принтере. А диагностикой может быть что угодно, используемое для диагностических сообщений или сообщений об ошибках. Все три рассматриваются как файловые дескрипторы ввода-вывода и иногда рассматриваются как потоки.
Посредством использования этих дескрипторов командный процессор обеспечивает прохождение ввода и вывода через различные команды и их перенаправление в файл или из файла. Ещё одним методом перенаправления является оператор конвейера.
Оператор конвейера UNIX®, "|", позволяет прямую передачу или перенаправление вывода одной команды в другую программу. Проще говоря, конвейер позволяет передавать стандартный вывод какой-либо команды в качестве стандартного ввода другой команде, к примеру:
% cat directory_listing.txt | sort | less
В этом примере содержимое directory_listing.txt
будет отсортировано, а вывод передан в less(1).
Это позволяет пользователю просматривать результат в собственном темпе и не позволяет выходить за рамки экрана.
3.10. Текстовые редакторы
Большинство настроек FreeBSD осуществляется редактированием текстовых файлов. В силу этого обстоятельства хорошей идеей является освоение текстового редактора. Несколько редакторов поставляются с FreeBSD в составе базового комплекта системы, и гораздо больше доступно в Коллекции портов.
Простым в освоении редактором является ee(1), что означает "easy editor" ("лёгкий редактор").
Чтобы запустить его, наберите ee filename
, где filename является именем редактируемого файла.
Внутри редактора все команды для управления его функциями перечислены вверху экрана.
Карет (^
) обозначает клавишу Ctrl, таким образом, ^e
означает комбинацию клавиш Ctrl+e.
Чтобы выйти из ee(1), нажмите клавишу Esc, затем выберите пункт "leave editor" в главном меню.
Редактор запросит сохранение изменений, если файл был изменён.
Во FreeBSD также имеются более мощные текстовые редакторы типа vi(1), поставляемого как часть базового системного комплекта. Другие редакторы, подобные editors/emacs и editors/vim, являются частью Коллекции портов FreeBSD. Эти редакторы обладают большей функциональностью, но также они более сложны в изучении. Изучение более мощных редакторов типа vim или Emacs может сэкономить вам больше времени в долгосрочной перспективе.
Многие приложения, модифицирующие файлы или требующие текстового ввода, автоматически открывают текстовый редактор.
Чтобы сменить редактор, заданный по умолчанию, определите значение переменной окружения EDITOR
, как это описано в разделе Командные процессоры.
3.11. Устройства и файлы устройств
Термин "устройство" используется в основном по отношению к аппаратному обеспечению системы, такому как диски, принтеры, графические адаптеры и клавиатуры.
При загрузке FreeBSD основной объём выдаваемых сообщений относится к обнаруживаемым устройствам.
Копии сообщений, выдаваемых при загрузке, сохраняются в /var/run/dmesg.boot
.
Каждое устройство имеет имя и номер.
Например, ada0
соответствует первому приводу жёстких дисков с интерфейсом SATA, а kbd0
представляет собой клавиатуру.
Во FreeBSD доступ к большинству устройств обязательно должен осуществляться через специальные файлы, называемые узлами устройств, которые размещаются в /dev
.
+== Страницы Справочника
Пожалуй, самая полная документация по FreeBSD имеет форму страниц справочной системы. Практически каждое приложение или утилита имеют соответствующую страницу (часто не одну), описывающую основы работы и различные параметры.
Эти справочники можно просматривать при помощи man
:
% man command
Здесь command является названием команды, информацию о которой нужно получить. Например, чтобы узнать больше о команде ls(1), наберите:
% man ls
Страницы Справочника разделены на разделы, соответствующие различному типу содержимого. Во FreeBSD имеются следующие разделы:
Пользовательские команды.
Системные вызовы и коды ошибок.
Функции стандартных библиотек.
Драйверы устройств.
Форматы файлов.
Развлечения и игры.
Дополнительная информация.
Команды системного администрирования.
Интерфейсы ядра системы.
В некоторых случаях одна и та же тема может появиться в различных разделах справочника.
Например, существуют пользовательская команда chmod
и системный вызов chmod()
.
Для указания команде man(1) искомого раздела задайте его номер:
% man 1 chmod
При этом будет выведена справка о пользовательской команде chmod(1). По традиции документирования ссылки на конкретный раздел онлайного справочника указываются в скобках, так что chmod(1) относится к пользовательской команде, chmod(2) указывает на соответствующий системный вызов.
Если название страницы Справочника неизвестно, воспользуйтесь man -k
для поиска по ключевым словам, встречающимся в описаниях страниц Справочника:
% man -k mail
Эта команда выдаёт список команд, имеющих ключевое слово "mail" в своих описаниях. Это равнозначно использованию команды apropos(1).
Чтобы прочитать описания всех команд из /usr/sbin
, наберите:
% cd /usr/sbin
% man -f * | more
или
% cd /usr/sbin
% whatis * |more
3.11.1. Файлы GNU Info
FreeBSD поставляется с некоторым количеством приложений и утилит, выпущенных Free Software Foundation (FSF).
В дополнение к страницам справочника, с этими программами могут поставляться гипертекстовые документы в виде так называемых файлов info
.
Они могут быть просмотрены с помощью команды info(1) или, если установлен пакет editors/emacs, в режиме info редактора emacs.
Чтобы использовать info(1), наберите:
% info
Вызвать на экран краткое введение можно набрав h
.
Краткий список команд можно получить, набрав ?
.
Глава 4. Установка приложений: порты и пакеты
4.1. Обзор
Вместе с FreeBSD в составе базового комплекта системы поставляется богатый набор системный утилит. Однако для выполнения какой-то реальной работы очень скоро возникает необходимость в установке дополнительных приложений сторонних разработчиков. FreeBSD дает две взаимодополняющих технологии для установки программного обеспечения сторонних разработчиков: Коллекция Портов FreeBSD (для установки из исходных кодов) и пакеты (для установки из откомпилированных двоичных файлов). Любая из этих систем может быть использована для установки приложений с локальных носителей или прямо из сети.
После чтения этой главы вы будете знать:
Как устанавливать бинарные пакеты с программным обеспечением сторонних разработчиков.
Как собирать из исходных кодов программное обеспечение сторонних разработчиков при помощи Коллекции Портов.
Как удалять ранее установленные пакеты или порты.
Как переопределить значения, используемые по умолчанию в Коллекции Портов.
Как найти необходимое программное обеспечение.
Как обновить установленные приложения.
4.2. Обзор установки программного обеспечения
Стандартная процедура установки программного обеспечения сторонних разработчиков на UNIX®-систему выглядит примерно так:
Загрузка программного обеспечения, которое может распространяться в форме исходных текстов или двоичных файлов.
Распаковка программного обеспечения из дистрибутивного формата (обычно tar-архива, сжатого при помощи compress(1), gzip(1) или bzip2(1)).
Поиск документации в файлах INSTALL, README или в каком-то файле из подкаталога doc/ и её чтение в поиске описания установки программного обеспечения.
Если программное обеспечение распространялось в форме исходных текстов, его компиляция. Сюда может быть включено редактирования файла Makefile, запуск скрипта
configure
и другие работы.Тестирование и установка программного обеспечения.
Если вы устанавливаете программный пакет, который не был специально перенесён на FreeBSD, то вам может даже потребоваться редактировать код для того, чтобы он нормально заработал.
FreeBSD предоставляет две технологии, которые выполняют эту работу за вас. На момент написания таким образом доступно более 36000 сторонних приложений.
Каждый пакет содержит уже откомпилированные копии всех команд приложения, а также все конфигурационные файлы и документацию. С файлом пакета можно работать командами управления пакетами FreeBSD, такими как pkg_add(1), pkg_delete(1), pkg_info(1) и так далее.
Каждый порт FreeBSD является набором файлов, предназначенных для автоматизации процесса компиляции приложения из исходного кода. Файлы, из которых состоит порт, содержат всю необходимую информацию для выполнения автоматической загрузки, извлечения, применения патчей, компиляции и установки приложения.
Также система портов может использоваться для генерации пакетов, которые в последствии становятся объектом работы для команд управления пакетами FreeBSD.
Как пакеты, так и порты принимают во внимание зависимости. Если при инсталляции приложения при помощи pkg_add(1) или Коллекции Портов будет обнаружено, что необходимая библиотека не была установлена, то первым делом будет выполнена установка библиотеки.
Несмотря на то, что обе технологии весьма похожи, и пакеты, и порты имеют свои преимущества. Выберите технологию, которая соответствует вашим требованиям к установке конкретного приложения.
Сжатый tar-архив пакета обычно меньше, чем сжатый tar-архив, содержащий исходный код приложения.
Пакеты не требуют времени на компиляцию. Для больших приложений, таких как Mozilla, KDE или GNOME, это может быть важно, особенно при работе на медленной системе.
Пакеты не требуют понимания процесса компиляции программного обеспечения во FreeBSD.
Пакеты обычно компилируются с консервативными параметрами, потому что они должны работать на максимальном количестве систем. При установке из порта становится возможным изменение опций компиляции.
Некоторые приложения имеют опции времени компиляции, позволяющие определять необходимые функциональные возможности. К примеру, Apache может быть настроен с широким набором различных опций.
В некоторых случаях для одного и того же приложения будут иметься несколько пакетов с разными предварительными настройками. Например, Ghostscript доступен как пакет ghostscript и как пакет ghostscript-nox11 - в зависимости от того, установлен ли сервер X11. Создание нескольких пакетов одного приложения быстро становится бессмысленным, если приложение имеет более одного-двух параметров компиляции.
Условия лицензирования некоторого программного обеспечения запрещают распространение в двоичном виде. Оно должно распространяться в виде исходного кода и компилироваться конечным пользователем.
Некоторые пользователи не доверяют дистрибутивам в двоичном виде или предпочитают прочесть исходный код и попытаться найти потенциальные проблемы.
Если у вас есть собственные патчи, вам нужен исходный код для того, чтобы их применять.
Чтобы отслеживать обновления портов, подпишитесь на Список рассылки, посвящённый Портам FreeBSD и Список рассылки, посвящённый ошибкам в портах FreeBSD.
Перед установкой любого приложения необходимо зайти на http://vuxml.freebsd.org/, где находится информация по вопросам безопасности приложений, или установить ports-mgmt/portaudit. После установки наберите |
В оставшейся части главы будет рассказано, как использовать пакеты и порты для установки и управления программным обеспечением сторонних разработчиков во FreeBSD.
4.3. Поиск программного обеспечения
Список имеющихся для FreeBSD приложений постоянно растет. Существует несколько способов найти то, что нужно:
На сайте FreeBSD по адресу http://www.FreeBSD.org/ports/ поддерживается обновляемый список всех имеющихся приложений для FreeBSD, в котором можно выполнять поиск. Поиск порта можно выполнить либо по имени приложения, либо по названию категории.
Dan Langille поддерживает сайт FreshPorts, на котором есть удобный поиск, а также на нём отслеживаются изменения в приложениях из Коллекции Портов. Зарегистрированным пользователям доступна возможность создавать собственные списки наблюдаемых портов и автоматически получать оповещения об их обновлениях по электронной почте.
Если вы не знаете названия нужного вам приложения, попытайтесь воспользоваться сайтом типа Freecode (http://www.freecode.com/) для поиска приложения, а затем возвратитесь на сайт FreeBSD, чтобы проверить, есть ли порт для этого приложения.
Если вам необходимо определить, в какой категории находится порт, наберите
whereis file
, где file - программа, которую вы хотите установить:# whereis lsof lsof: /usr/ports/sysutils/lsof
Как вариант, можно воспользоваться echo(1):
# echo /usr/ports/*/*lsof* /usr/ports/sysutils/lsof
Учтите, что в выводе также будут присутствовать совпадающие с шаблоном имена файлов, сохраненные в /usr/ports/distfiles.
Ещё одним способом поиска программного обеспечения является использование встроенной возможности поиска в Коллекции Портов. Чтобы ею воспользоваться, зайдите в /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:
Команда
make search
выполняет поиск в файле с индексной информацией. Если получено сообщение, что требуется файл INDEX, запуститеmake fetchindex
для загрузки актуального индексного файла. После загрузки файла INDEX командаmake search
сможет выполнить запрошенный поиск.Строка "Path:" указывает, где находится порт.
Чтобы получить лаконичный вывод, задайте цель
quicksearch
:# cd /usr/ports # make quicksearch name=lsof Port: lsof-4.87.a,7 Path: /usr/ports/sysutils/lsof Info: Lists information about open files (similar to fstat(1))
Для выполнения более глубокого поиска используйте
make search key=string
илиmake quicksearch key=string
, где string представляет собой некоторый текст, относящийся к искомому порту. Текст ищется в комментариях, описаниях или зависимостях. Этот способ можно использовать для поиска портов, связанных с некоторой темой, когда название программы неизвестно.В обоих случаях (
search
иquicksearch
) строка поиска нечувствительна к регистру. Поиск "LSOF" приводит к тому же самому результату, что и поиск "lsof".
4.4. Использование бинарных пакетов
Во FreeBSD есть несколько утилит для управления пакетами:
Для установки, удаления и получения перечня установленных пакетов на работающей системе может быть запущена утилита
sysinstall
. Обратитесь к Установка пакетов (Install Packages) за более детальной информацией.Утилиты командной строки для управления пакетами, которые являются темой данного раздела.
4.4.1. Установка пакета
Для установки бинарного пакета FreeBSD из локального файла или с сервера в сети используйте pkg_add(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
. В случае загрузки из сети номер версии в имени пакета должен быть опущен.
Если вы используете FreeBSD-CURRENT или FreeBSD-STABLE, то утилита pkg_add(1) загрузит последнюю версию устанавливаемой программы. Если же вы используете версию -RELEASE, то pkg_add(1) установит версию пакета, который был собран для конкретного релиза. Это поведение возможно изменить переопределив значение |
Файлы пакетов распространяются в форматах .tgz и .tbz. Пакеты находятся по адресу ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/packages или в каталоге /packages дистрибутива FreeBSD на DVD. Структура каталогов с пакетами подобна тому, как организовано дерево /usr/ports. Каждая категория имеет собственный каталог, и каждый пакет помещается в каталог All.
4.4.2. Управление пакетами
Для вывода перечня установленных пакетов и их описаний может быть задействована pkg_info(1).
# pkg_info
colordiff-1.0.13 A tool to colorize diff output
docbook-1.2 Meta-port for the different versions of the DocBook DTD
...
Утилита pkg_version(1) выводит отчёт о версиях всех установленных пакетов и сравнивает их версии с текущими версиями соответствующих приложений, доступных из локального дерева портов.
# pkg_version
colordiff =
docbook =
...
Символы во второй колонке указывают сравнительную разницу в возрасте установленной версии и версии, находящейся в локальном дереве портов.
Символ | Значение |
---|---|
= | Версия установленного пакета соответствует версии, находящейся в локальном дереве портов. |
< | Версия установленного пакета старее, чем та, что имеется в локальном дереве портов. |
> | Версия установленного пакета новее чем та, что есть в дереве портов. Скорее всего, локальное дерево портов устарело. |
? | В индексном файле портов установленный пакет не найден. Это может случиться если установленный порт был переименован или удалён из Коллекции Портов. |
* | Имеется несколько версий пакета. |
! | Установленный пакет есть в индексном файле, но по какой-то причине утилите |
4.4.3. Удаление пакета
Для удаления ранее установленных пакетов с программным обеспечением используйте утилиту pkg_delete(1).
# pkg_delete xchat-1.7.1
Следует отметить, что для pkg_delete(1) требуется полное имя пакета и номер версии; вышеприведенная команда не сработала бы, если б ей было указано xchat вместо xchat-1.7.1. Для нахождения версии установленного пакета задействуйте утилиту pkg_version(1). Или же, напечатайте групповой символ (wildcard) вместо номера версии:
# pkg_delete xchat\*
в этом случае будут удалены все пакеты, имена которых начинаются на xchat
.
4.5. Использование pkgng для управления бинарными пакетами
pkgng - это усовершенствованный инструмент, пришедший на смену традиционным утилитам управления пакетами FreeBSD. Он обладает множеством функциональных возможностей, ускоряющих и облегчающих работу с бинарными пакетами. Первый релиз pkgng состоялся в августе 2012 года.
pkgng не является заменой для утилит управления портами, таких как ports-mgmt/portmaster или ports-mgmt/portupgrade. В то время, как ports-mgmt/portmaster и ports-mgmt/portupgrade позволяют устанавливать приложения сторонних разработчиков как из бинарных пакетов, так и из Коллекции Портов, утилита pkgng дает возможность устанавливать приложения исключительно из бинарных пакетов.
4.5.1. Начало работы с pkgng
Во FreeBSD 9.1 и более поздние включена программа "самонастройки" ("bootstrap") pkgng. Она скачивает и устанавливает основную утилиту pkgng.
Для запуска самонастройки, выполните:
# /usr/sbin/pkg
Для более ранних версий FreeBSD утилиту pkgng необходимо установить из Коллекции Портов или из бинарных пакетов.
Для установки pkgng из порта, запустите следующее:
# cd /usr/ports/ports-mgmt/pkg
# make
# make install clean
Для установки из бинарного пакета, выполните:
# pkg_add -r pkg
Действующие инсталляции FreeBSD требуют преобразования базы данных установленных пакетов утилиты pkg_install к новому формату. Для выполнения конвертирования, запустите:
# pkg2ng
Вышеприведенный шаг не требуется для новых инсталляций, в которых не было установлено программ сторонних разработчиков.
Этот шаг необратим. После перевода базы данных установленных пакетов к формату pkgng утилитами pkg_install более пользоваться не следует. |
В процессе конвертирования базы данных установленных пакетов могут возникать сообщения об ошибках. На данном этапе их можно игнорировать, так как перечень программ сторонних разработчиков, информация о которых не была преобразована, будет перечислен по завершении работы |
Чтобы убедиться, что Коллекция Портов FreeBSD регистрирует новые программы при помощи pkgng, а не pkg_install, для версий FreeBSD, предшествующих 10.X, в файл /etc/make.conf необходимо внести следующую запись:
WITH_PKGNG= yes
4.5.2. Настройка окружения pkgng
Система управления пакетами pkgng при выполнении большинства операций обращается к пакетному репозиторию. Адрес используемого по умолчанию репозитория указан в /usr/local/etc/pkg.conf или в переменной окружения PACKAGESITE
. Последняя переопределяет адрес, указанный в конфигурационном файле.
Дополнительные опции конфигурации pkgng описаны в pkg.conf(5).
4.5.3. Основные операции pkgng
Информацию по работе с pkgng можно найти на странице справочника pkg(8), или в выводе утилиты pkg
, запущенной без аргументов.
Каждый аргумент команды pkgng описан на соответствующей странице справочника. Например, чтобы ознакомиться со страницей справочника для pkg install
, запустите любую из двух нижеследующих команд:
# pkg help install
# man pkg-install
4.5.3.1. Получение информации об установленных пакетах при помощи pkgng
Информация об установленных в системе пакетах может быть отображена при помощи команды pkg info
. Подобно до pkg_info(1), в выводе перечисляются версии и описания всех установленных пакетов.
Если необходима информация о конкретном пакете, выполните:
# pkg info packagename
Например, для получения версии pkgng, который установлен в системе, запустите:
# pkg info pkg
pkg-1.0.2 New generation package manager
4.5.3.2. Установка и удаление пакетов при помощи pkgng
В общем, бинарные пакеты устанавливаются при помощи:
# pkg install packagename
Команда pkg install
обращается к пакетному репозиторию, это упоминалось в Настройка окружения pkgng. Команда pkg-add(8), напротив, не выполняет обращений к пакетному репозиторию, а также игнорирует переменную PACKAGESITE
. Как следствие - зависимости не отслеживаются, и необходимые зависимые компоненты не скачиваются с удаленного источника. В этом разделе описана работа с pkg install
. За подробностями работы с pkg add
обратитесь к справочной странице по pkg-add(8).
Утилита pkg install
может устанавливать дополнительные бинарные пакеты. Например, для установки curl, выполните:
# pkg install curl
Updating repository catalogue
Repository catalogue is up-to-date, no need to fetch fresh copy
The following packages will be installed:
Installing ca_root_nss: 3.13.5
Installing curl: 7.24.0
The installation will require 4 MB more space
1 MB to be downloaded
Proceed with installing packages [y/N]: y
ca_root_nss-3.13.5.txz 100% 255KB 255.1KB/s 255.1KB/s 00:00
curl-7.24.0.txz 100% 1108KB 1.1MB/s 1.1MB/s 00:00
Checking integrity... done
Installing ca_root_nss-3.13.5... done
Installing curl-7.24.0... done
Новый пакет, как и любые дополнительные пакеты, которые были установлены как зависимости, перечисляются в списке установленных пакетов:
# pkg info
ca_root_nss-3.13.5 The root certificate bundle from the Mozilla Project
curl-7.24.0 Non-interactive tool to get files from FTP, GOPHER, HTTP(S) servers
pkg-1.0.2 New generation package manager
Пакеты, в которых более нет необходимости, могут быть удалены при помощи pkg delete
. Например, если выяснится, что curl не нужен:
# pkg delete curl
The following packages will be deleted:
curl-7.24.0_1
The deletion will free 3 MB
Proceed with deleting packages [y/N]: y
Deleting curl-7.24.0_1... done
4.5.3.3. Обновление установленных пакетов при помощи pkgng
Пакеты, версии которых устарели, можно найти при помощи команды pkg version
. Версии установленных пакетов сравниваются с версиями приложений из локального дерева портов, а в случае отсутствия портов pkg-version(8) обращается к удаленному репозиторию пакетов.
При помощи pkgng можно обновлять пакеты до новых версий. Предположим, вышла новая версия curl. Установленный пакет можно обновить к новой версии, выполнив:
# pkg upgrade
Updating repository catalogue
repo.txz 100% 297KB 296.5KB/s 296.5KB/s 00:00
The following packages will be upgraded:
Upgrading curl: 7.24.0 -> 7.24.0_1
1 MB to be downloaded
Proceed with upgrading packages [y/N]: y
curl-7.24.0_1.txz 100% 1108KB 1.1MB/s 1.1MB/s 00:00
Checking integrity... done
Upgrading curl from 7.24.0 to 7.24.0_1... done
4.5.3.4. Аудит безопасности пакетов при помощи pkgng
Изредка в приложениях из Коллекции Портов обнаруживаются уязвимости. В pkgng встроена возможность выполнять аудит безопасности, действующая подобно приложению из ports-mgmt/portaudit. Для выполнения аудита установленных в систему программ, выполните:
# pkg audit -F
4.5.4. Сложные вопросы работы с pkgng
4.5.4.1. Автоматическое удаление неиспользуемых зависимостей при помощи pkgng
После удаления пакета в системе могут остаться неиспользуемые зависимости, наподобие security/ca_root_nss из примера выше. Такие пакеты остаются установленными, несмотря на то, что они более не требуются другим пакетам. Определить и удалить неиспользуемые пакеты, которые были установлены как зависимости, можно при помощи:
# pkg autoremove
Packages to be autoremoved:
ca_root_nss-3.13.5
The autoremoval will free 723 kB
Proceed with autoremoval of packages [y/N]: y
Deinstalling ca_root_nss-3.13.5... done
4.5.4.2. Резервное копирование базы данных установленных пакетов pkgng
В отличие от традиционной системы управления пакетами, pkgng располагает своим собственным механизмом резервного копирования базы данных. Для ручного создания резервной копии базы данных установленных пакетов, выполните:
# pkg backup -d pkgng.db
Замените имя файла pkgng.db на более подходящее. |
В дополнение, pkgng содержит скрипт periodic(8), позволяющий выполнять ежедневное автоматическое копирование базы данных установленных пакетов. Для активации данной возможности задайте переменной daily_backup_pkgng_enable
значение YES
в файле periodic.conf(5).
Для предотвращения периодического запуска аналогичного скрипта системы pkg_install, также выполняющего резервное копирование базы данных установленных пакетов, задайте переменной |
Для восстановления содержимого базы данных установленных пакетов из резервной копии, выполните:
# pkg backup -r /path/to/pkgng.db
4.5.4.3. Удаление копий устаревших пакетов в системе pkgng
По умолчанию, pkgng сохраняет копии установленных бинарных пакетов в каталог, указанный переменной PKG_CACHEDIR
в pkg.conf(5). При обновлении пакетов командой pkg upgrade
старые версии обновленных пакетов автоматически не удаляются.
Для удаления устаревших версий бинарных пакетов из кеш-каталога, выполните:
# pkg clean
4.5.4.4. Изменение метаданных пакетов pkgng
Со временем программы из Коллекции Портов могут претерпевать изменения старшего (major) номера версии. В отличие от pkg_install, pkgng располагает встроенной командой для обновления информации о происхождении (origin) пакета. Например, изначально порт lang/php5 был версии 5.3
. Позже этот порт был переименован в lang/php53, а под именем lang/php5 был создан порт версии 5.4
. Утилитам системы pkg_install для обновления информации о происхождении (origin) пакета в собственной базе данных установленных пакетов потребовалась бы помощь дополнительного программного обеспечения, такого как ports-mgmt/portmaster.
В отличие от ports-mgmt/portmaster и ports-mgmt/portupgrade для портов, порядок перечисления новой и старой версий отличаются. Для pkgng необходим следующий порядок:
# pkg set -o category/oldport:category/newport
Например, в вышеприведенном случае для замены информации о происхождении пакета, выполните:
# pkg set -o lang/php5:lang/php53
Еще один пример: для изменения информации о происхождении пакета с lang/ruby18 на lang/ruby19, выполните:
# pkg set -o lang/ruby18:lang/ruby19
И последний пример: для замены информации о происхождении пакета разделяемой библиотеки libglut с graphics/libglut на graphics/freeglut, запустите:
# pkg set -o graphics/libglut:graphics/freeglut
Выполняя замену информации о происхождении пакетов, в большинстве случаев также требуется переустановить пакеты, которые зависят от изменившегося пакета. Для принудительной переустановки зависящих пакетов, выполните:
|
4.6. Использование Коллекции Портов
В этом разделе даны базовые сведения по использованию Коллекции Портов для установки или удаления программ. Детальное описание существующих целей make
и переменных окружения находится в ports(7).
В июле 2012 года проект Портов FreeBSD сменил систему контроля версий: на смену CVS пришел Subversion. Рекомендуемым способом работы с деревом портов является Portsnap. Пользователи, которым требуется локальная подгонка портов (то есть, поддержание дополнительных локальных патчей), возможно предпочтут непосредственное использование Subversion. 28 февраля 2013 года сервис CVSup был выведен из эксплуатации, и дальнейшее использование последнего не рекомендуется. |
4.6.1. Получение Коллекции Портов
Коллекция Портов - это набор файлов, состоящий из Makefile, патчей и файлов описаний, хранимых в /usr/ports. Этот набор файлов предназначен для построения и установки приложений во FreeBSD. В нижеследующих разделах описано несколько способов получения Коллекции Портов на тот случай, если Коллекция не была установлена во время инсталляции FreeBSD.
Procedure: Метод Portsnap
Portsnap это быстрый и удобный инструмент для получения Коллекции Портов, и в то же время - предпочитаемый выбор большинства пользователей.
Скачайте сжатый снэпшот Коллекции Портов в /var/db/portsnap.
# portsnap fetch
Если вы запускаете Portsnap впервые, извлеките снэпшот в /usr/ports:
# portsnap extract
По завершении первого запуска Portsnap, как было показано выше, /usr/ports может быть обновлен при помощи:
# portsnap fetch # portsnap update
Procedure: Метод Subversion
Если необходим контроль за деревом портов (например, для поддержания локальных изменений), то для получения Коллекции Портов может быть задействован Subversion. Обратитесь к Subversion Primer за детальным описанием Subversion.
Для создания рабочей копии дерева портов необходимо иметь установленный Subversion. Если порты есть в наличии, то установите Subversion выполнив следующее:
# cd /usr/ports/devel/subversion # make install clean
Если портов нет, то Subversion может быть установлен при помощи системы пакетов:
# pkg_add -r subversion
Если же для управления пакетами используется pkgng, то Subversion устанавливается при помощи следующей команды:
# pkg install subversion
Создайте рабочую копию дерева портов. Для ускорения процесса вместо svn0.us-east.FreeBSD.org укажите ближайшее к вам зеркало Subversion. Коммиттерам необходимо сначала прочитать Subversion Primer, чтобы удостовериться, что выбран корректный протокол.
# svn checkout https://svn0.us-east.FreeBSD.org/ports/head /usr/ports
При наличии рабочей копии /usr/ports все последующие обновления выполняются просто:
# svn update /usr/ports
Procedure: Метод с использованием Sysinstall
Этот метод подразумевает использование sysinstall для установки Коллекции Портов из установочного носителя. Учтите, что в итоге будет установлена старая копия Коллекции Портов, которая была актуальна на момент создания релиза. Если у вас есть подключение к Интернет, то вам необходимо пользоваться одним из вышеупомянутых методов.
Работая как пользователь
root
, запуститеsysinstall
так, как это показано ниже:# sysinstall
Опуститесь вниз и выберите
, нажмите EnterОпуститесь вниз и выберите
, затем нажмите EnterОпуститесь вниз к пункту
, нажмите клавишу ПробелПоднимитесь вверх к
, нажмите EnterВыберите желаемый носитель для установки, например, CDROM, FTP и так далее.
Перейдите на пункт меню
и нажмите Enter.Нажмите X для выхода из sysinstall.
4.6.2. Миграция с CVSup/csup на portsnap
Начиная с 28 февраля 2013 года дерево портов более не экспортируется в CVS, поэтому CVSup и csup не будут доставлять обновления для дерева портов. |
Procedure: Миграция на Portsnap
Для миграции потребуется около 1 ГБ дискового пространства в /usr, в добавок, для Portsnap необходимо около 150 МБ дискового пространства в /var.
Если у вас настроено автоматическое обновление портов, например при помощи задания cron(8), запускающего CVSup или csup, то его необходимо будет отключить.
Переместите существующее дерево портов во временный каталог:
# mv /usr/ports /usr/ports.old
При помощи Portsnap скачайте новое дерево портов и извлеките его в /usr/ports:
# portsnap fetch extract
Переместите дистрибутивные файлы (distfiles) и сохраненные пакеты в новое дерево портов:
# mv /usr/ports.old/distfiles /usr/ports # mv /usr/ports.old/packages /usr/ports
Удалите старое дерево портов:
# rm -rf /usr/ports.old
Если ранее использовался CVSup, то сейчас его можно удалить:
# pkg_delete -r -v cvsup-without-gui-\*
Пользователям pkgng необходимо запустить следующую команду:
# pkg delete cvsup-without-gui
4.6.3. Установка портов
Скелетом порта является набор файлов, который указывает вашей системе FreeBSD, как откомпилировать и установить программу. Скелет каждого порта включает:
Makefile: этот файл содержит различные директивы, которые определяют, как приложение должно быть откомпилировано и куда в вашей системе оно должно быть установлено.
distinfo: этот файл содержит информацию о файлах, которые должны быть загружены для сборки порта, а также их контрольные суммы (sha256(1)) для проверки того, что файлы не были повреждены в процессе загрузки.
files: этот каталог содержит патчи, необходимые для компиляции и установки программы в вашей системе FreeBSD. Этот каталог также может содержать другие файлы, используемые для построения порта.
pkg-descr: этот файл содержит более подробное описание программы.
pkg-plist: это список всех файлов, которые будут установлены портом. В нем также содержатся указания системе портов на удаление определенных файлов во время удаления порта.
В некоторых портах присутствуют и другие файлы, такие, как pkg-message. Система портов использует эти файлы для обработки особых ситуаций. Если вы хотите узнать более подробно об этих файлах и о портах вообще, то обратитесь к Руководству по созданию портов для FreeBSD.
Порт не содержит собственно исходного кода, также известного как "дистрибутивный файл" (distfile). Способ распространения исходного кода определяется предпочтениями автора программы. Ниже описаны два способа установки порта FreeBSD.
Для установки портов вы должны войти в систему как пользователь |
Перед установкой любого порта необходимо убедиться в наличии свежей Коллекции Портов и заглянуть на http://vuxml.freebsd.org/, где могут освещаться вопросы безопасности, связанные с конкретным портом. Если у вас установлен ports-mgmt/portaudit, то перед установкой нового порта запустите |
Использование Коллекции Портов предполагает наличие работающего подключения к Интернет. В противном случае вам придется раздобыть и поместить копию дистрибутивного файла в каталог /usr/ports/distfiles вручную.
Первым делом переместитесь в каталог устанавливаемого порта:
# cd /usr/ports/sysutils/lsof
Для компиляции (или построения - "build") порта наберите команду make
. Вы должны увидеть вывод команды, подобный следующему:
# make
>> lsof_4.57D.freebsd.tar.gz doesn't seem to exist in /usr/ports/distfiles/.
>> Attempting to fetch from ftp://lsof.itap.purdue.edu/pub/tools/unix/lsof/.
===> 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 clean
===> Cleaning for lsof-4.57
#
Вы можете сэкономить два лишних шага, просто выдав команду |
Установка порта единственной командой |
Когда используется |
Некоторые командные процессоры для ускорения поиска исполняемых файлов и команд кэшируют имена программ, доступных для вызова из каталогов, перечисленных в переменной окружения |
В некоторых имеющихся в продаже комплектах DVD от третьих лиц, таких как the FreeBSD Toolkit от FreeBSD Mall, содержатся дистрибутивные файлы (distfiles). Их можно использовать с Коллекцией Портов. Смонтируйте DVD в /cdrom. Если вы используете иную точку монтирования, укажите её в переменной make(1) CD_MOUNTPTS
. Если необходимые для построения порта дистрибутивные файлы находятся на диске, то они будут задействованы автоматически.
Лицензии некоторых портов не позволяют помещать их на DVD. Причиной тому может служить обязательность заполнения регистрационной формы перед загрузкой, или запрет на дальнейшее распространение. Если вы хотите установить порт, которого нет на DVD, вам нужно иметь подключение к Интернет. |
Для загрузки файлов система портов использует утилиту fetch(1), которая проверяет значения некоторых переменных окружения, включая FTP_PASSIVE_MODE
, FTP_PROXY
и FTP_PASSWORD
. Если вы находитесь за сетевым экраном или для работы с FTP/HTTP вам необходимо использовать прокси, то определите соответствующие переменные. Обратитесь к справочной странице по fetch(3) для получения полного списка переменных.
Пользователям, которые не могут быть постоянно подключены к сети, поможет команда make fetch
. Запустите эту команду в каталоге /usr/ports, и требуемые файлы будут загружены. Эта команда также работает и с вложенными категориями, например: /usr/ports/net. Заметьте, что если порт имеет зависимости от библиотек или других портов, то команда не будет загружать дистрибутивные файлы для зависимых портов. Для загрузки всех зависимых дистрибутивных файлов задействуйте команду make fetch-recursive
.
Вы можете построить все порты в категории за раз, запустив команду |
В некоторых редких случаях пользователям необходимо получить 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/firefox, security/gpgme и mail/sylpheed-claws. Если для порта существуют опции компиляции, то перед началом построения будет отображено меню. |
4.6.3.1. Переназначение рабочего и целевого каталогов
При помощи переменных WRKDIRPREFIX
и PREFIX
можно переопределить назначаемые по умолчанию рабочий и целевой каталоги. Например:
# make WRKDIRPREFIX=/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 WRKDIRPREFIX=../ports PREFIX=../local install
использует обе возможности.
Альтернативным способом является задание этих каталогов в переменных окружения. Обратитесь к страницам справки по вашему командному процессору для получения инструкций о том, как установить переменные окружения.
4.6.3.2. Повторная настройка опций портов
Некоторые порты предоставляют ncurses-меню, содержащее опции построения. Будучи однажды успешно определены, опции сохраняются, и при повторном построении порта меню не вызывается. Для изменения сохраненных опций существует несколько способов повторного вызова меню. Один из них - зайти в каталог порта и набрать make config
. Второй способ - запустить команду make showconfig
. Еще один способ - выполнить команду make rmconfig
, которая удалит все ранее отмеченные опции и позволит вам начать конфигурирование сначала. Эти и другие способы детально описаны на странице ports(7).
4.6.4. Удаление установленных портов
Установленные порты и пакеты удаляются при помощи команды pkg_delete(1):
# pkg_delete lsof-4.57
4.6.5. Обновление портов
Прежде всего, при помощи pkg_version(1) просмотрите, нет ли в Коллекции Портов более новых версий установленных приложений:
# pkg_version -v
4.6.5.1. Прочитайте /usr/ports/UPDATING
После обновления Коллекции Портов, и перед тем, как обновить приложение из порта, сверьтесь с файлом /usr/ports/UPDATING. В нем дана информация по различным вопросам и дополнительным шагам, которые могут быть необходимы для обновления порта, включая информацию о таких вещах как изменения форматов файлов, изменения в расположении конфигурационных файлов, или другие нестыковки с предыдущими версиями.
Если UPDATING противоречит чему-либо, написанному в этом документе, то доверьтесь информации из UPDATING.
4.6.5.2. Обновление Портов при помощи Portupgrade
Утилита portupgrade создана для простого обновления установленных портов. Она доступна из порта ports-mgmt/portupgrade. Установите её как и любой иной порт при помощи команды make install clean
:
# cd /usr/ports/ports-mgmt/portupgrade
# make install clean
Проверьте перечень установленных портов командой pkgdb -F
и устраните все несоответствия, о которых сообщит утилита. Хорошей идеей является выполнение этого действия регулярно, перед каждым обновлением.
Используйте portupgrade -a
для обновления всех устаревших портов, установленных в вашей системе. Добавьте флаг -i
если вы желаете получать запрос на каждый обновляемый порт.
# portupgrade -ai
Для обновления конкретного приложения, а не всех установленных портов, запустите portupgrade pkgname
. Включите флаг -R
при необходимости обновить все порты, требуемые данным приложением.
# portupgrade -R firefox
Для использования при установке пакетов, а не портов, укажите флаг -P
. С этим параметром portupgrade будет искать пакеты в локальных каталогах, указанных в переменной окружения PKG_PATH
, а если не найдет их, то загрузит с удаленного сайта. Если пакеты не могут быть найдены локально или загружены удаленно, portupgrade использует порты. Чтобы запретить использование портов, укажите -PP
.
# portupgrade -PP gnome2
Для простой загрузки дистрибутивных файлов без построения или установки чего бы то ни было, задайте флаг -F
. Дополнительную информацию можно получить на странице справки по утилите portupgrade(1).
4.6.5.3. Обновление портов при помощи portmaster
Утилита ports-mgmt/portmaster - это еще один инструмент для обновления установленных портов. Утилита portmaster опирается на возможности "базовой" системы и не зависит от других портов. Она использует информацию из /var/db/pkg/ для определения портов, подлежащих обновлению. Для установки утилиты выполните следующее:
# cd /usr/ports/ports-mgmt/portmaster
# make install clean
Portmaster делит порты на четыре категории:
Корневые порты: не зависят от других портов и нет портов, зависимых от корневых;
Стволовые порты: не зависят от других портов, но есть порты, зависящие от стволовых;
Веточные порты: зависят от других портов и есть порты, зависящие от веточных;
Листьевые порты: зависят от других портов, но нет портов, зависящих от листьевых.
Чтобы проверить наличие обновлений для всех установленных портов, задайте утилите флаг -L
:
# portmaster -L
===>>> Root ports (No dependencies, not depended on)
===>>> ispell-3.2.06_18
===>>> screen-4.0.3
===>>> New version available: screen-4.0.3_1
===>>> tcpflow-0.21_1
===>>> 7 root ports
...
===>>> Branch ports (Have dependencies, are depended on)
===>>> apache-2.2.3
===>>> New version available: apache-2.2.8
...
===>>> Leaf ports (Have dependencies, not depended on)
===>>> automake-1.9.6_2
===>>> bash-3.1.17
===>>> New version available: bash-3.2.33
...
===>>> 32 leaf ports
===>>> 137 total installed ports
===>>> 83 have new versions available
Все установленные порты могут быть обновлены при помощи одной команды:
# portmaster -a
По умолчанию, portmaster создаст дублирующий пакет перед удалением установленного порта. Если обновление порта прошло успешно, portmaster удалит дублирующий пакет. При помощи опции |
Если во время процесса обновления возникнут ошибки, задействуйте опцию -f
для обновления/перестройки всех портов:
# portmaster -af
Также, portmaster может быть задействован для установки новых портов в систему, автоматически обновляя другие зависимые порты перед построением и установкой нового порта:
# portmaster shells/bash
За подробной информацией обратитесь к portmaster(8).
4.6.6. Порты и дисковое пространство
Работа с Коллекцией Портов со временем приводит к увеличению занимаемого дискового пространства. После построения и установки программы из порта удалите временный каталог work при помощи команды make clean
. Для очистки всей Коллекции Портов наберите:
# portsclean -C
По прошествии некоторого времени у вас соберется множество дистрибутивных файлов в каталоге distfiles. Следующая команда удалит все дистрибутивные файлы, которые более не связаны ни с какими портами:
# portsclean -D
Для удаления всех дистрибутивных файлов, не связанных ни с одним установленным в вашу систему портом, наберите:
# portsclean -DD
Утилита |
Удобная утилита для автоматизации удаления портов, в которых вы более не нуждаетесь, доступна из порта ports-mgmt/pkg_cutleaves.
4.7. Действия после установки
После установки нового приложения вам обычно требуется прочесть любую имеющуюся документацию, отредактировать необходимые конфигурационные файлы и убедиться, что приложение запускается во время загрузки системы.
Очевидно, что шаги, в точности требуемые для конфигурации каждого приложения, отличаются. Однако, если если вы только что установили новое приложение и вам интересно, "Что же дальше?", то вам могут помочь следующие советы:
Воспользуйтесь командой 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.8. Обработка нерабочих портов
Если вы встретили порт, который не компилируется:
Выясните, нет ли для порта решения проблемы в Problem Report database. Если оно есть, то вы можете воспользоваться предложенным решением.
Попросите помощи у мейнтейнера порта. Чтобы найти его адрес наберите команду
make maintainer
или просмотрите Makefile. Не забудьте указать имя и версию порта (скопировав строчку$FreeBSD:
из файла Makefile) и включите в письмо весь вывод, предшествующий возникновению ошибки.Некоторые порты поддерживаются группой людей из списка рассылки, а не отдельными людьми. В большинстве таких случаев адрес мейнтейнера выглядит подобно следующему: freebsd-listname@FreeBSD.org. Пожалуйста, учтите это при формулировании ваших вопросов.
В частности, если мейнтейнер порта - ports@FreeBSD.org, то такой порт вообще никем не поддерживается. Решение проблем и поддержка, если и имеют место, то приходят от общества, которое подписано на тот список рассылки. Волонтёры требуются всегда!
Если вы не получили ответ, то воспользуйтесь командой send-pr(1) для посылки сообщения о проблеме (изучите составление сообщений о проблеме во FreeBSD).
Исправьте его! В Руководстве по созданию портов содержится подробная информация об инфраструктуре портов, так что вы сможете исправить редкий неработающий порт или даже предложить свой собственный!
Воспользуйтесь pkg_add(1) и установите пакет вместо порта.
Глава 5. Το Σύστημα X Window
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.7. За информацией о настройке XFree86™ (в более старых релизах FreeBSD XFree86™ был реализацией X11 по умолчанию), или более старых релизов Xorg, всегда можно обратиться к старым версиям Руководства FreeBSD по адресу http://docs.FreeBSD.org/doc/.
За дополнительной информацией по видео оборудованию, поддерживаемому X11, обратитесь к веб сайту Xorg.
После чтения этой главы вы будете знать:
Как установить и настроить X11.
О различных компонентах X Window System и их взаимодействии.
Как установить и использовать различные оконные менеджеры.
Как использовать шрифты TrueType® в X11.
Как настроить вашу систему на графический интерфейс входа (XDM).
Перед чтением этой главы вам потребуется:
Узнать, как устанавливать дополнительное программное обеспечение сторонних разработчиков (Установка приложений. порты и пакеты).
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 или getenv(3)) является "клиентом". Клиент посылает сообщения серверу, такие, как "Пожалуйста, нарисуй окно со следующими координатами", а сервер посылает в ответ сообщения типа "Пользователь только что щёлкнул мышью на кнопке 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 не поддерживает никакой конкретной политики фокусирования. Вместо этого менеджер окон управляет тем, какое окно владеет фокусом в каждый конкретный момент времени. Различные оконные менеджеры поддерживают разные методы фокусирования. Все они поддерживают метод щелчка для фокусирования, и большинство из них поддерживают некоторые другие методы. Самыми популярными политики фокусирования являются:
Многие оконные менеджеры поддерживают и другие политики, а также вариации перечисленных. Обязательно обращайтесь к документации по оконному менеджеру. |
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.7.
Для сборки и установки 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
5.4.1. Перед тем, как начать
Перед настройкой X11 необходима следующая информация о конфигурируемой системе:
Характеристики монитора
Набор микросхем, используемый в видеоадаптере
Объём видеопамяти
Характеристики монитора используются в X11 для определения рабочего разрешения и частоты. Эти характеристики обычно могут быть получены из документации, которая прилагается к монитору или с сайта производителя. Тут нужны два диапазона значений, для частоты горизонтальной развёртки и для частоты вертикальной синхронизации.
Набор микросхем графического адаптера определяет, модуль какого драйвера использует X11 для работы с графическим оборудованием. Для большинства типов микросхем это может быть определено автоматически, но все же его полезно знать на тот случай, когда автоматическое определение не работает правильно.
Объём видеопамяти графического адаптера определяет разрешение и глубину цвета, с которым может работать система. Это важно, чтобы пользователь знал ограничения системы.
5.4.2. Конфигурирование X11
Начиная с версии 7.3, Xorg зачастую может работать без какого-либо файла настройки, для его запуска достаточно просто набрать:
% startx
Начиная с версии 7.4, Xorg может использовать HAL для автоматического поиска клавиатуры и мыши. Порты sysutils/hal и devel/dbus будут инсталлированы как зависимости x11/xorg, но для их включения необходимо иметь следующие записи в /etc/rc.conf file:
hald_enable="YES" dbus_enable="YES"
Эти сервисы должны быть запущены (вручную или при загрузки системы) до последующей загрузки Xorg конфигурации.
Автоматическая конфигурация не всегда может сработать на некотором оборудовании, либо создать не совсем ту настройку, которая желаема. В этих случаях, необходима ручная настройка конфигурации.
Такие оконные менеджеры, как GNOME, KDE или Xfce имеют собственные утилиты, позволяющие пользователю легко устанавливать такие параметры, как разрешение экрана. Поэтому, если конфигурация по-умолчанию не подходящая и вы планируете инсталлировать эти оконные менеджеры, просто можете продолжить настройку рабочей среды, используя их собственные утилиты для установок параметров экрана. |
Процесс настройки X11 является многошаговым. Первый шаг заключается в построении начального конфигурационного файла. Работая с правами суперпользователя, просто запустите:
# Xorg -configure
При этом в каталоге /root будет создан скелет конфигурационного файла X11 под именем xorg.conf.new (там, куда после su(1) или непосредственного входа будет указывать переменная $HOME
). Программа X11 сделает попытку распознать графическое оборудование системы и запишет конфигурационный файл, загружающий правильные драйверы для обнаруженного оборудования в системе.
Следующим шагом является тестирование существующей конфигурации для проверки того, что Xorg может работать с графическим оборудованием в настраиваемой системе. Для этого выполните:
# Xorg -config xorg.conf.new
Начиная с Xorg 7.4 и выше, это тестирование покажет лишь черный экран, что делает диагностику не совсем полноценным. Старое поведение будет доступно при использовании опции retro
# Xorg -config xorg.conf.new -retro
Если появилась чёрно-белая сетка и курсор мыши в виде X, то настройка была выполнена успешно. Для завершения тестирования просто нажмите одновременно Ctrl+Alt+Backspace.
Данная комбинация включена по-умолчанию до Xorg версии 7.3. Для включения этого в версии 7.4 и выше, вы должны ввести следующую команду в любом эмуляторе X терминала:
или создать конфигурационный файл клавиатуры для hald называемый x11-input.fdi и сохранить его в /usr/local/etc/hal/fdi/policy директории. Данный файл должен содержать следующие строчки: <?xml version="1.0" encoding="utf-8"?> <deviceinfo version="0.2"> <device> <match key="info.capabilities" contains="input.keyboard"> <merge key="input.x11_options.XkbOptions" type="string">terminate:ctrl_alt_bksp</merge> </match> </device> </deviceinfo> Вам может потребоваться перезагрузка системы для вступления параметров hald в силу. |
Если мышь не работает, ее необходимо настроить. Обратитесь к Настройка мыши (Mouse Settings) в главе об установке FreeBSD. Дополнительно, начиная с версии 7.4, секция InputDevice
в xorg.conf игнорируется в пользу автоматического поиска устройств. Для возвращения старого поведения, добавьте следующие строчки в секции ServerLayout
или ServerFlags
:
Option "AutoAddDevices" "false"
Устройства ввода могут конфигурированы затем как в предыдущих версиях, вместе с другими необходимыми опциями (такими, как переключение раскладок клавиатуры например).
Как ранее уже сообщалось, начиная с версии 7.4, по-умолчанию, hald демон будет пытаться распознать вашу клавиатуру автоматически. Есть возможность, что раскладка вашей клавиатуры или ее модель будут определены некорректно. Такие оконные менеджеры как GNOME, KDE или Xfce содержат свои инструменты для конфигурирования клавиатур. Тем не менее, можно установить параметры клавиатуры непосредственно с помощью утилиты setxkbmap(1) или через haldконфигурационные правила. Например, если вы хотите использовать клавиши PC 102 клавиатуры, идущая с французской раскладкой, мы должны создать конфигурационный файл клавиатуры для hald называемый x11-input.fdi и сохранить в /usr/local/etc/hal/fdi/policy директории. Этот файл должен содержать следующие строчки: <?xml version="1.0" encoding="utf-8"?> <deviceinfo version="0.2"> <device> <match key="info.capabilities" contains="input.keyboard"> <merge key="input.x11_options.XkbModel" type="string">pc102</merge> <merge key="input.x11_options.XkbLayout" type="string">fr</merge> </match> </device> </deviceinfo> Если этот файл уже существует, просто скопируйте и добавьте эти строчки в данный файл. Вы должны будете перезагрузить систему, чтобы заставить hald применить настройки. Есть возможность проделать ту же конфигурацию из X терминала или скрипт следующей командой:
Файл /usr/local/shared/X11/xkb/rules/base.lst содержит список различных клавиатур, доступные опции и раскладки. |
Теперь выполните тонкую настройку в файле xorg.conf.new по своему вкусу. Откройте файл в текстовом редакторе, таком, как emacs(1) или ee(1). Сначала задайте частоты для монитора. Они обычно обозначаются как частоты горизонтальной и вертикальной синхронизации. Эти значения добавляются в файл xorg.conf.new в раздел "Monitor"
:
Section "Monitor" Identifier "Monitor0" VendorName "Monitor Vendor" ModelName "Monitor Model" HorizSync 30-107 VertRefresh 48-120 EndSection
Ключевых слов HorizSync
и VertRefresh
может и не оказаться в файле конфигурации. Если их нет, то они должны быть добавлены, с указанием корректных значений горизонтальной частоты синхронизации после ключевого слова HorizSync
и вертикальной частоты синхронизации после ключевого слова VertRefresh
. В примере выше были введены частоты монитора настраиваемой системы.
X позволяет использовать возможности технологии DPMS (Energy Star) с поддерживающими её мониторами. Программа xset(1) управляет временными задержками и может явно задавать режимы ожидания, останова и выключения. Если вы хотите включить использование возможностей DPMS вашего монитора, вы должны добавить следующую строку в раздел, описывающий монитор:
Option "DPMS"
Пока файл конфигурации xorg.conf.new открыт в редакторе, выберите желаемые разрешение и глубину цвета, которые будут использоваться по умолчанию. Они задаются в разделе "Screen"
:
Section "Screen" Identifier "Screen0" Device "Card0" Monitor "Monitor0" DefaultDepth 24 SubSection "Display" Viewport 0 0 Depth 24 Modes "1024x768" EndSubSection EndSection
Ключевое слово DefaultDepth
описывает глубину цвета, с которой будет работа по умолчанию. Это значение может быть переопределено при помощи параметра командной строки -depth
для Xorg(1). Ключевое слово Modes
описывает разрешение, с которым нужно работать при данной глубине цвета. Заметьте, что поддерживаются только те стандартные режимы VESA, что определены графическим оборудованием настраиваемой системы. В примере выше глубина цвета по умолчанию равна двадцати четырём битам на пиксел. При такой глубине цвета принимается разрешение в 1024 на 768 точек.
Наконец, запишите конфигурационный файл и протестируйте его при помощи тестового режима, описанного выше.
При решении проблем могут помочь лог файлы X11, в которых находится информация по каждому устройству, к которому подключен сервер X11. Лог файлам Xorg названия даются в формате /var/log/Xorg.0.log. Имена лог файлам могут даваться от Xorg.0.log до Xorg.8.log и так далее. |
Если все в порядке, то конфигурационный файл нужно установить в общедоступное место, где его сможет найти Xorg(1). Обычно это /etc/X11/xorg.conf или /usr/local/etc/X11/xorg.conf.
# cp xorg.conf.new /etc/X11/xorg.conf
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
5.5.1. Шрифты Type1
Шрифты, используемые по умолчанию и распространяемые вместе с X11, вряд ли можно назвать идеально подходящими для применения в обычных издательских приложениях. Большие презентационные шрифты выглядят рвано и непрофессионально, а мелкие шрифты в getenv(3) вообще невозможно разобрать. Однако есть некоторое количество свободно распространяемых высококачественных шрифтов 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.
Это всё. Теперь getenv(3), Gimp, StarOffice™ и все остальные X-приложения должны увидеть установленные шрифты TrueType®. Очень маленькие (как текст веб-страницы на дисплее с высоким разрешением) и очень большие (в StarOffice™) шрифты будут теперь выглядеть гораздо лучше.
5.5.3. Антиалиасинг шрифтов
Антиалиасинг присутствует в 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>
В зависимости от типа дисплея, |
Антиалиасинг должен быть включен при следующем запуске X-сервера. Однако программы должны знать, как использовать его преимущества. В настоящее время инструментальный пакет Qt умеет ими пользоваться, так что вся оболочка KDE может использовать шрифты с антиалиасингом. GTK+ и GNOME также можно заставить использовать антиалиасинг посредством капплета "Font" (обратитесь к Шрифты с антиалиасингом и GNOME для выяснения всех подробностей). По умолчанию Mozilla версий 1.2 и выше будет автоматически использовать антиалиасинг. Для отмены использования антиалиасинга перестройте Mozilla с флагом -DWITHOUT_XFT
.
5.6. Менеджеры экранов (Display Managers) X
5.6.1. Вступление
Менеджер Экранов X (XDM) это необязательный компонент X Window System, который используется для управления входом пользователей в систему. Это полезно в ряде ситуаций, например для минимальных "X Терминалов", десктопов, больших сетевых серверов экранов. Так как X Window System не зависит от сетей и протоколов, то существует множество различных конфигураций для X клиентов и серверов, запущенных на различных компьютерах, подключенных к сети. XDM предоставляет графический интерфейс для выбора сервера, к которому вы желаете подключится, и введения информации, авторизующей пользователя, например комбинации логина и пароля.
XDM можно рассматривать как аналог программы getty(8), предоставляющий такие же возможности для пользователей (смотрите Настройка для подробной информации). И это именно так, XDM производит вход в систему для подключенного пользователя и запускает управляющую сессию для пользователя (обычно это менеджер окон X). После этого XDM ожидает завершения приложения, означающее завершение пользователем работы и отключает управляющую сессию. Затем XDM может снова вывести приглашение к входу в систему и ожидать входа другого пользователя.
5.6.2. Использование XDM
Программой даемона XDM является /usr/local/bin/xdm. Эта программа может быть запущена от пользователя root
в любой момент, и она начнёт управлять дисплеем X на локальной машине. Если XDM нужно запускать в фоновом режиме каждый раз при запуске компьютера, то наиболее правильный способ - это добавить новую запись в /etc/ttys. Для более подробной информации о формате и использовании этого файла смотрите Добавление строки в /etc/ttys. Вот строка, которую необходимо добавить в файл /etc/ttys для того, чтобы запустить даемон XDM на виртуальном терминале:
ttyv8 "/usr/local/bin/xdm -nodaemon" xterm off secure
По умолчанию эта запись отключена; для её включения нужно заменить пятое поле с off
на on
и перезапустить init(8), используя метод, описанный в Добавление строки в /etc/ttys. Первое поле это название терминала, которым будет управлять программа, ttyv8
. Это означает, что XDM будет запущен на 9ом виртуальном терминале.
5.6.3. Конфигурирование XDM
Конфигурационные файлы XDM находятся в каталоге /usr/local/lib/X11/xdm. В нём размещаются несколько файлов, которые используются для изменения поведения и внешнего вида XDM. Обычно это следующие файлы:
Файл | Описание |
---|---|
Xaccess | Правила авторизации клиентов. |
Xresources | Значения ресурсов X по умолчанию. |
Xservers | Список локальных и удаленных экранов. |
Xsession | Сценарий сессии по умолчанию. |
Xsetup_* | Скрипт для запуска приложений до появления приглашения к входу в систему. |
xdm-config | Глобальный конфигурационный файл для всех экранов запущенных на локальной машине |
xdm-errors | Ошибки сгенерированные серверной программой. |
xdm-pid | ID процесса запущенного XDM. |
В этом каталоге также находятся несколько командных сценариев и программ, используемых для настройки рабочего стола (desktop) при запуске XDM. Назначение каждого из этих файлов будет вкратце описано. Точный синтаксис и информация по их использованию находятся в xdm(1).
В конфигурации по умолчанию выводится простое прямоугольное окно приглашения ко входу в систему с именем компьютера, написанным сверху большим шрифтом, и строками ввода "Login:" и "Password:" внизу. Это хорошая отправная точка для изменения внешнего вида экранов XDM.
5.6.3.1. Xaccess
Протокол, по которому происходит подключение дисплеев, управляемых XDM, называется X Display Manager Connection Protocol (XDMCP). Этот файл представляет собой набор правил для управления XDMCP соединениями с удалёнными машинами. Он игнорируется, пока стандартный файл xdm-config не содержит указаний по обслуживанию удалённых соединений.
5.6.3.2. Xresources
Это файл содержит установки по умолчанию для приложений, запущенных в экране выбора серверов и экране приглашения к входу в систему. В нем может быть изменён вид программы входа в систему. Формат этого файла идентичен файлу app-defaults, описанному в документации к X11.
5.6.3.3. Xservers
Это список удаленных экранов, которые XDM должен предоставить как варианты для входа в систему.
5.6.3.4. Xsession
Этот файл представляет из себя командный сценарий по умолчанию для пользователей, вошедших в систему с использованием XDM. Обычно каждый пользователь имеет собственный сценарий входа в файле ~/.xsession, который используется вместо этого сценария.
5.6.3.5. Xsetup_*
Они запускаются автоматически перед тем, как показывается экран выбора сервера или экран входа в систему. Для каждого экрана (display) есть свой сценарий с именем Xsetup_, за которым следует локальный номер экрана (например, Xsetup_0). Обычно эти сценарии запускают одну или две программы в фоновом режиме, например xconsole
.
5.6.3.6. xdm-config
Здесь содержатся настройки в формате app-defaults, которые применимы ко всем экранам данного компьютера.
5.6.3.7. xdm-errors
Здесь находится выдача X серверов, которые XDM пытается запустить. Если экран, который XDM пытается открыть, отключается по некоторым причинам, то это хорошее место для поиска сообщений об ошибках. Эти сообщения также записываются в пользовательский файл ~/.xsession-errors для каждого сеанса.
5.6.4. Использование сетевого сервера дисплеев
Для того, чтобы позволить другим клиентам подключаться к серверу дисплеев, необходимо отредактировать правила контроля доступа и включить обслуживание сетевых соединений. По умолчанию они выключены, что является хорошим решением с точки зрения обеспечения безопасности. Для того, чтобы позволить XDM принимать сетевые соединения, в первую очередь закомментируйте строку в файле xdm-config:
! БЕЗОПАСНОСТЬ: do not listen for XDMCP or Chooser requests
! Закомментируйте эти линии, если вы хотите управлять X терминалами с xdm
DisplayManager.requestPort: 0
и потом перезапустите XDM. Помните, что комментарии в файлах app-defaults начинаются с символа "!", а не как обычно, "\#". Может потребоваться более жёсткий контроль доступа - взгляните на примеры из Xaccess и обратитесь к странице справочника xdm(1) за дальнейшей информацией.
5.6.5. Замены для XDM
Существует несколько программ, заменяющих XDM. Одна из них, kdm (поставляемая вместе с KDE), описана далее в этой главе. В kdm имеется много визуальных и косметических улучшений, а также функциональность, позволяющая пользователям выбирать собственные оконные менеджеры во время входа в систему.
5.7. Графические оболочки
В этом разделе описываются различные графические оболочки, доступные в X для FreeBSD. Термин "графическая оболочка" может использоваться для чего угодно, от простого менеджера окон до полнофункционального набора приложений для рабочего стола, типа KDE или GNOME.
5.7.1. GNOME
5.7.1.1. О GNOME
GNOME является дружественной к пользователю графической оболочкой, позволяющей пользователям легко использовать и настраивать свои компьютеры. В GNOME имеется панель (для запуска приложений и отображения их состояния), рабочий стол (где могут быть размещены данные и приложения), набор стандартных инструментов и приложений для рабочего стола, а также набор соглашений, облегчающих совместную работу и согласованность приложений. Пользователи других операционных систем или оболочек при использовании такой мощной графической оболочки, какую обеспечивает GNOME, должны чувствовать себя в родной среде. Дополнительную информацию относительно GNOME во FreeBSD можно найти на сайте FreeBSD GNOME Project. Web сайт также содержит достаточно исчерпывающие FAQ’и, касающиеся установки, конфигурирования и управления GNOME.
5.7.1.2. Установка GNOME
Программу проще всего установить из пакета или коллекции портов:
Для установки пакета GNOME из сети, просто наберите:
# pkg_add -r gnome2
Для построения GNOME из исходных текстов используйте дерево портов:
# cd /usr/ports/x11/gnome2
# make install clean
После установки GNOME нужно указать X-серверу на запуск GNOME вместо стандартного оконного менеджера.
Самый простой путь запустить GNOME - это использовать GDM (GNOME Display Manager). GDM, который устанавливается, как часть GNOME (но отключен по умолчанию), может быть включён путём добавления gdm_enable="YES"
в /etc/rc.conf. После перезагрузки, GNOME запустится автоматически после того, как вы зарегистрируйтесь в системе. Никакой дополнительной конфигурации не требуется.
GNOME может также быть запущен из командной строки с помощью конфигурирования файла .xinitrc. Если файл .xinitrc уже откорректирован, то просто замените строку, в которой запускается используемый менеджер окон, на ту, что вызовет /usr/local/bin/gnome-session. Если в конфигурационном файле нет ничего особенного, то будет достаточно просто набрать:
% echo "/usr/local/bin/gnome-session" > ~/.xinitrc
Теперь наберите startx
, и будет запущена графическая оболочка GNOME.
Если используется более старый менеджер дисплеев типа XDM, то это не сработает. Вместо этого создайте выполнимый файл .xsession с той же самой командой в нём. Для этого отредактируйте файл, заменив существующую команду запуска оконного менеджера на /usr/local/bin/gnome-session: |
% echo "#!/bin/sh" > ~/.xsession
% echo "/usr/local/bin/gnome-session" >> ~/.xsession
% chmod +x ~/.xsession
Ещё одним вариантом является настройка менеджера дисплеев таким образом, чтобы он позволял выбирать оконный менеджер во время входа в систему; в разделе о KDE в подробностях описывается, как сделать это для kdm, менеджера дисплеев из KDE.
5.7.1.3. Шрифты с антиалиасингом и GNOME
X11 поддерживает антиалиасинг посредством своего расширения "RENDER". GTK+ 2.0 и более поздние версии (это инструментальный пакет, используемый GNOME) могут использовать такую функциональность. Настройка антиалиасинга описана в Антиалиасинг шрифтов. Таким образом, при наличии современного GNOME, возможно использование антиалиасинга. Просто перейдите в и выберите либо Best shapes, Best contrast, либо Subpixel smoothing (LCDs). Для приложений GTK+, которые не являются частью оболочки GNOME, задайте в качестве значения переменной окружения GDK_USE_XFT``1
перед запуском программы.
5.7.2. KDE
5.7.2.1. О KDE
KDE является простой в использовании современной графической оболочкой. Вот лишь некоторые из преимуществ, которые даёт пользователю KDE:
Прекрасный современный рабочий стол
Рабочий стол, полностью прозрачный для работы в сети
Интегрированная система помощи, обеспечивающая удобный и согласованный доступ к системе помощи по использованию рабочего стола KDE и его приложений
Единообразный внешний вид и управление во всех приложениях KDE
Стандартизированные меню и панели инструментов, комбинации клавиш, цветовые схемы и так далее.
Интернационализация: в KDE поддерживается более 40 языков
Централизованное единообразное конфигурирование рабочего стола в диалоговом режиме
Большое количество полезных приложений для KDE
Совместно с KDE поставляется веб-браузер под названием Konqueror, который является серьезным соперником другим браузерам для UNIX®-систем. Дополнительную информацию о KDE можно найти на веб-сайте KDE в FreeBSD. Для получения информации и информационных ресурсов, специфичных для KDE во FreeBSD, обратитесь к сайту команды FreeBSD-KDE team.
Имеется две версии KDE доступные на FreeBSD. Версия 3 была доступна очень долгое время и она является очень зрелой. Версия 4 - это следующее поколение, также доступное через Коллекцию Портов. Обе версии могут быть инсталлированы одновременно.
5.7.2.2. Установка KDE
Как и в случае с GNOME или любой другой графической оболочкой, программное обеспечение можно легко установить из пакета или из Коллекции Портов:
Для установки пакета KDE3 из сети, просто наберите:
# pkg_add -r kde
Для установки пакета KDE4 из сети, просто наберите:
# pkg_add -r kde4
pkg_add(1) автоматически загрузит самую последнюю версию приложения.
Для построения KDE3 из исходных текстов, воспользуйтесь деревом портов:
# cd /usr/ports/x11/kde3
# make install clean
Для построения KDE4 из исходных текстов, воспользуйтесь деревом портов:
# cd /usr/ports/x11/kde4
# make install clean
После установки KDE нужно указать X-серверу на запуск этого приложения вместо оконного менеджера, используемого по умолчанию. Это достигается редактированием файла .xinitrc:
Для KDE3:
% echo "exec startkde" > ~/.xinitrc
Для KDE4:
% echo "exec /usr/local/kde4/bin/startkde" > ~/.xinitrc
Теперь при вызове X Window System по команде startx
в качестве оболочки будет использоваться KDE.
При использовании менеджера дисплеев типа XDM настройка несколько отличается. Вместо этого нужно отредактировать файл .xsession. Указания для kdm описаны далее в этой главе.
5.7.3. Более подробно о KDE
Теперь, когда KDE установлена в системе, можно узнать много нового из её справочных страниц или просто указанием и щелканьем по различным меню. Пользователи Windows® или Mac® будут чувствовать себя как дома.
Лучшим справочником по KDE является онлайновая документация. KDE поставляется с собственным веб-браузером, который называется Konqueror, десятками полезных приложений и подробной документацией. В оставшейся части этого раздела обсуждаются технические вопросы, трудные для понимания при случайном исследовании.
5.7.3.1. Менеджер дисплеев KDE
Администратору многопользовательской системы может потребоваться графический экран для входа пользователей в систему. Вы можете использовать XDM, как это описано ранее. Однако в KDE имеется альтернативный менеджер kdm, который был разработан более привлекательным и с большим количеством настраиваемых опций для входа в систему. В частности, пользователи могут легко выбирать (посредством меню), какую оболочку (KDE, GNOME или что-то ещё) запускать после входа в систему.
Для того, чтобы разрешить запуск kdm, измените в файле /etc/ttys строку, относящуюся к консоли ttyv8
:
Для KDE3:
ttyv8 "/usr/local/bin/kdm -nodaemon" xterm on secure
Для KDE4:
ttyv8 "/usr/local/kde4/bin/kdm -nodaemon" xterm on secure
5.7.4. XFce
5.7.4.1. О XFce
XFce является графической оболочкой, построенной на основе инструментального пакета GTK+, используемого в GNOME, но она гораздо легче и предназначена для тех, кому нужен простой, эффективно работающий рабочий стол, который легко использовать и настраивать. Визуально он выглядит очень похоже на CDE, который есть в коммерческих UNIX®-системах. Вот некоторые из достоинств XFce:
Простой, лёгкий в обращении рабочий стол
Полностью настраиваемый при помощи мыши, с интерфейсом drag and drop и так далее
Главная панель похожа на CDE, с меню, апплетами и возможностями по быстрому запуску приложений
Интегрированный оконный менеджер, менеджер файлов, управление звуком, модуль совместимости с GNOME и прочее
Возможность использования тем (так как использует GTK+)
Быстрый, легкий и эффективный: идеален для устаревших/слабых машин или для машин с ограниченной памятью
Дополнительную информацию о XFce можно найти на сайте XFce.
5.7.4.2. Установка XFce
Для XFce имеется (на момент написания этого текста) бинарный пакет. Для его установки просто наберите:
# pkg_add -r xfce4
Либо, в случае построения из исходных текстов, используйте Коллекцию Портов:
# cd /usr/ports/x11-wm/xfce4
# make install clean
Теперь укажите X-серверу на запуск XFce при следующем запуске X. Просто наберите:
% echo "/usr/local/bin/startxfce4" > ~/.xinitrc
При следующем запуске X в качестве рабочего стола будет использоваться XFce. Как сказано выше, если используется менеджер дисплеев, такой, как XDM, создайте файл .xsession так, как это описано в разделе о GNOME, но с командой /usr/local/bin/startxfce4, либо настройте менеджер дисплеев так, чтобы он разрешил выбор рабочего стола во время входа в систему, как это описано в разделе о kdm.
Часть II: Общие задачи
Теперь, когда основы были пройдены, в данной части Руководства FreeBSD будут обсуждаться некоторые часто используемые возможности FreeBSD. В этих главах:
Введение в популярные и полезные графические приложения: браузеры, бизнес приложения, программы просмотра документов и т.д.
Представлены множество мультимедийных программ, доступных в FreeBSD.
Описан процесс создания собственного ядра FreeBSD для включения дополнительных функций системы.
Система печати разобрана в деталях, как для непосредственно подключенных принтеров, так и для принтеров, подключенных через сеть.
Показано, как запускать приложения Linux в системе FreeBSD.
Перед прочтением некоторых из этих глав необходимо ознакомиться с предварительной информацией, что указано в кратком обзоре в начале каждой главы.
Глава 6. Приложения для настольного компьютера
6.1. Краткий обзор
FreeBSD может работать с широким кругом приложений для настольного компьютера (десктопа), таких как браузеры и текстовые процессоры. Большинство из них доступны в качестве пакетов или могут быть автоматически собраны из коллекции портов. Многим новым пользователям хотелось бы видеть эти приложения на своем компьютере. В этой главе показано как без усилий установить некоторые популярные приложения для настольного компьютера из пакетов или из коллекции портов.
Обратите внимание, что при установке программ из портов они компилируются из исходных текстов. Это может занять очень много времени, в зависимости от того, что вы собираете, и от скорости процессора вашего компьютера (компьютеров). Большинство программ, имеющихся в коллекции портов, могут быть установлены из прекомпилированных пакетов, если сборка из исходных текстов занимает недопустимо много времени.
Поскольку FreeBSD обеспечивает двоичную совместимость с Linux, многие приложения, первоначально разработанные для Linux, доступны и на вашем компьютере. Настоятельно рекомендуется прочитать Двоичная совместимость с Linux перед установкой любого из приложений Linux. Названия многих портов, использующих двоичную совместимость с Linux, начинаются с "linux-". Помните это при поиске отдельного порта, например с помощью whereis(1). Далее в статье подразумевается, что вы включили бинарную совместимость с Linux перед установкой какого-либо приложения Linux.
Вот несколько категорий, о которых пойдет речь в этой главе:
Браузеры (такие как Mozilla, Opera, Firefox, Konqueror)
Бизнес приложения (такие как KOffice, AbiWord, GIMP, OpenOffice.org)
Программы просмотра документов (такие как Acrobat Reader®, gv, Xpdf, GQview)
Финансовые программы (такие как GnuCash, Gnumeric, Abacus)
Перед прочтением этой главы вам потребуется:
Узнать, как устанавливать дополнительные программы сторонних производителей (Установка приложений. порты и пакеты).
Узнать, как устанавливать программы Linux (Двоичная совместимость с Linux).
Чтобы получить дополнительную информацию о настройке мультимедиа среды, прочтите Мультимедиа. Если вам нужна электронная почта, обратитесь к Электронная почта.
6.2. Браузеры
FreeBSD поставляется без предустановленного браузера. Вместо этого, в категории www коллекции портов содержится множество готовых к установке браузеров. Если у вас нет времени компилировать все (в некоторых случаях это может занять очень много времени), многие из них доступны в виде пакетов.
В KDE и GNOME уже есть HTML браузеры. Обратитесь к Графические оболочки за подробной информацией об установке этих полноценных десктопов.
Если вы ищете облегченный браузер, попробуйте 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, если вам потребуется самостоятельно написать несколько веб-страничек. Пользователи getenv(3) найдут общие черты с 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™
Установка 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 и выберите пункт
в меню 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/shared/examples/linuxpluginwrapper/.
Установите порт www/mozilla, если Mozilla еще не установлена.
Теперь просто запустите Mozilla:
% mozilla &
И войдите в пункт
меню 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
Если вы хотите собрать локализованную версию, то вместо предыдущей командной строки используйте следующее:
Вам следует изменить 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 |
| |
Opera |
| |
Firefox |
| |
KOffice |
| |
AbiWord |
| |
The GIMP |
| |
OpenOffice.org |
| |
Acrobat Reader® |
| |
gv |
| |
Xpdf |
| |
GQview |
| |
GnuCash |
| |
Gnumeric |
| |
Abacus |
|
Глава 7. Мультимедиа
7.1. Краткий обзор
FreeBSD поддерживает большое количество различных звуковых карт, что позволяет вам насладится высококачественным звуком. Это также дает возможность записывать и воспроизводить звуковые файлы в формате MPEG Audio Layer 3 (MP3), WAV, Ogg Vorbis, а также во множестве других форматов. Коллекция Портов FreeBSD также содержит ряд приложений, позволяющих редактировать записанные звуковые файлы, добавлять звуковые эффекты, управлять подключенными MIDI устройствами.
FreeBSD может поддерживать воспроизведение видеофайлов и DVD. Количество приложений, позволяющих кодировать, преобразовывать и воспроизводить различные форматы видео, существенно меньше количества приложений для работы со звуком. Например, на время написания этого документа в Коллекции Портов FreeBSD не существовало хорошего приложения для преобразования видео, которое могло бы быть использовано для преобразований между разными форматами, как, например, audio/sox. Впрочем, ситуация в этой области меняется быстро.
Эта глава описывает необходимые шаги для настройки вашей звуковой карты. Настройка и установка X11 (X Window System) уже охватывает вопросы, связанные с аппаратными установками вашей видеокарты, хотя могут быть возможности дополнительной настройки для улучшения воспроизведения.
После прочтения этой главы вы будете знать:
Как настроить систему так, чтобы звуковая карта была опознана.
Методы проверки работы звуковой карты при помощи тестовых приложений.
Как исправить проблемы, возникающие при работе со звуковыми картами.
Как прослушать и создать MP3 и другие форматы.
Как X сервер поддерживает видео.
Некоторые проигрыватели и кодировщики видео, которые показывают хорошие результаты.
Как воспроизвести DVD, .mpg и .avi файлы.
Как скопировать информацию с CD и DVD в файлы.
Как настроить ТВ тюнер.
Как настроить сканер.
Перед чтением этой главы вам потребуется:
Узнать, как конфигурировать и устанавливать новое ядро (Настройка ядра FreeBSD).
Попытка смонтировать аудио CD при помощи команды mount(8) как минимум, сообщит об ошибке и, как максимум, может привести к панике ядра. Эти носители имеют специальные форматы, которые отличны от обычной файловой системы ISO. |
7.2. Настройка звуковой карты
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
.
Другой способ заключается в добавлении статического драйвера в ядро. В разделе ниже дана более подробная информация о том, что вам нужно сделать для добавления поддержки оборудования. Более подробно о конфигурация ядра описана в Настройка ядра FreeBSD.
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 не появились, вернитесь назад и проверьте выполненные действия. Проверьте файл настройки ядра еще раз и убедитесь, что выбрано подходящее устройство. Часто встречающиеся проблемы приведены в Часто встречающиеся проблемы.
Если всё пройдет удачно, звуковая карта заработает. Если 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. Часто встречающиеся проблемы
Ошибка | Решение |
---|---|
| Одно или более устройств не были правильно созданы. Повторите приведенные выше шаги. |
| Порт ввода-вывода указан неправильно. |
| IRQ установлен неправильно. Убедитесь, что настройки в системе и на карте одинаковы. |
| Для использования устройства недостаточно памяти. |
| Проверьте с помощью |
7.2.3. Использование нескольких источников звука
Достаточно часто встречается необходимость иметь несколько источников звука, которые должны воспроизводить одновременно, например когда 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
может указывать количество виртуальных каналов для любых устройств, которые будут подключены позже.
Количество виртуальных каналов не может быть изменено, если аудио устройство занято. Вам потребуется предварительно закрыть все программы, работающие со звуком, такие как медиа-проигрыватели или звуковые даемоны. |
7.2.4. Установка значений по умолчанию для каналов mixer
Значения по умолчанию для различных каналов mixer жестко прописаны в исходных текстах драйвера pcm(4). Существует множество различных приложений и даемонов, которые позволяют устанавливать значения для mixer, которые они запоминают и выставляют каждый раз при запуске, но это не совсем правильное решение, нам нужны значения по умолчанию на уровне драйвера. Они могут быть установлены путем указания в /boot/device.hints. Например:
hint.pcm.0.vol="100"
Установит значение для канала volume в значение по умолчанию 100, как только будет загружен модуль pcm(4).
7.3. Звук MP3
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, для того, чтобы узнать больше об этом, прочитайте Копирование аудио CD.
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:
Запустите XMMS:
Нажмите правой кнопкой мыши в главном окне XMMS для того, чтобы показать меню.
Выберите
Preferences
(либоСвойства
, если у вас локализованная версия XMMS) вOptions
.Измените расширение вывода на "Disk Writer Plugin" (или "Расширение записи на диск", если у вас локализованная версия XMMS).
Нажмите
Configure
(или "Настройка", если у вас локализованная версия XMMS).Введите (или выберите при помощи обзора) каталог, в который следует сохранять распакованные файлы.
Загрузите файл MP3 в XMMS как вы это делаете обычно. Установите громкость на 100% и отключите эквалайзер.
Нажмите
Воспроизвести
- XMMS будет выглядеть так же как и при обычном воспроизведении MP3, но самой музыки слышно не будет. На самом деле MP3 воспроизводится в файл.Убедитесь, что вы установили расширение вывода таким, как оно было до этого, для того, чтобы снова слушать MP3.
Запись в stdout в mpg123:
Запустите
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
Прочтите Запись и использование оптических носителей (CD) для того, чтобы узнать больше о записи CD в FreeBSD.
7.4. Воспроизведение видео
Воспроизведение видео является очень новой и быстро развивающейся областью применения. Будьте терпеливы. Не всё будет работать так беспроблемно, как это было со звуком.
Прежде, чем вы начнёте, определите модель видеокарты и чипсет, который она использует. Хотя 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™ могут наблюдаться значительные улучшения.
Список наиболее часто используемых видеоинтерфейсов:
X11: обычный вывод X11 с использованием разделяемой памяти.
XVideo: расширение интерфейса X11, которое поддерживает видео в любом объекте X11.
SDL: the Simple Directmedia Layer.
DGA: the Direct Graphics Access - прямой доступ для графики.
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.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:
Приложение не может воспроизвести файл, который создало другое приложение.
Приложение не может воспроизвести файл, который создало само.
Одно и то же приложение на разных машинах, скомпилированное на каждой машине специально для неё, воспроизводит один и тот же файл различно.
Кажущийся тривиальным фильтр, например фильтр изменения размеров изображения, приводит к очень плохим "артефактам" из-за неправильной функции изменения размера.
Приложение часто не работает (оставляет core-файл).
Документация не устанавливается вместе с портом и может быть найдена лишь на сайте или в каталоге порта work.
Многие из этих приложений могут также проявлять "линуксизмы". Так, это могут быть некоторые проблемы, связанные со способом реализации некоторых стандартных библиотек в дистрибутивах Linux, или некоторыми дополнительными возможностями ядра Linux, которые авторы приложений посчитали существующими везде. Эти проблемы не всегда могут быть обнаружены людьми, поддерживающими порт (порты), вследствие чего могут возникнуть проблемы, сходные с нижеперечисленными:
Использование /proc/cpuinfo для того, чтобы определить характеристики процессора.
Неправильное использование нитей (threads), которое может привести к зависанию программы при завершении вместо нормального выхода.
Программного обеспечения, которое обычно используется совместно с данным приложением, ещё нет в Коллекции Портов 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 параметром |
Для того, чтобы остановить, приостановить или продолжить воспроизведение, воспользуйтесь привязкой клавиш, информация о которой может быть получена посредством запуска mplayer -h
, либо на страничке документации.
Дополнительные, достаточно важные параметры воспроизведения: -fs -zoom
, которые включают полноэкранный режим и -framedrop
, который улучшает производительность на медленных системах.
Для того, чтобы командная строка запуска mplayer не становилась слишком большой, пользователь может создать файл .mplayer/config и установить параметры по умолчанию там:
vo=xv fs=yes zoom=yes
Также mplayer
может быть использован для копирования дорожек DVD в .vob файлы. Для того, чтобы скопировать вторую дорожку DVD необходимо выполнить следующую команду:
# mplayer -dumpstream -dumpfile out.vob dvd://2 -dvd-device /dev/dvd
Полученный файл, out.vob, будет представлять собой MPEG, с которым можно производить различные действия при помощи программ, которые будут описаны далее в этом разделе.
7.4.2.1.3. mencoder
Перед использованием mencoder
, было бы неплохо ближе ознакомится с его параметрами, используя документацию в формате HTML. Также существует страничка справочника mplayer, но она не очень полезна без HTML документации. Существует бесчисленное множество способов улучшения качества, снижения битрейта и изменения формата; и некоторые из этих приёмов могут влиять на производительность. Ниже приведено несколько примеров использования mencoder
. Во-первых, простое копирование:
% mencoder input.avi -oac copy -ovc copy -o output.avi
Неправильная комбинация параметров командной строки может привести к появлению файлов, которые невозможно будет воспроизвести даже mplayer
. Поэтому, если вы хотите скопировать изображение в файл, лучше использовать только параметр mplayer -dumpfile
.
Для того, чтобы преобразовать input.avi в MPEG4 со звуком в формате MPEG Audio Layer 3 (MP3) (требуется audio/lame):
% mencoder input.avi -oac mp3lame -lameopts br=192 \
-ovc lavc -lavcopts vcodec=mpeg4:vhq -o output.avi
Эта команда создаст файл, воспроизводимый mplayer
и xine
.
input.avi может быть заменён на dvd://1 -dvd-device /dev/dvd
и mplayer
, запущенный от пользователя root
, будет преобразовывать дорожку DVD напрямую. Так как первый раз, скорее всего, вы будете недовольны полученными результатами, всё же рекомендуется копировать дорожку в файл и работать затем с файлом.
7.4.2.2. Проигрыватель хine
xine - это большой проект, в задачи которого входит не только создание решения для видео все-в-одном, но и создание базовой библиотеки с возможностью расширения путем использования плагинов. Поставляется он как в виде порта, так и в виде пакета, multimedia/xine.
xine все еще несовершенен, но все-таки это хорошее начало. На практике xine требует либо быстрого процессора с быстрой видеокартой или поддержки расширения XVideo. Графический интерфейс можно использовать, но он все еще немного неуклюж.
На время написания этого документа в поставке xine не существовало модуля ввода, который бы мог воспроизводить DVD, закодированные по алгоритму CSS. Существуют сборки, в которых есть такой модуль, но ни одна из них не входит в Коллекцию Портов FreeBSD.
По сравнению с MPlayer, xine является более дружелюбным к пользователю, но, в то же время, скрывает более тонкие настройки и управление от пользователя. Также xine лучше работает на XVideo интерфейсах.
По умолчанию, xine запускается с графическим интерфейсом. Для открытия файлов используются меню.
% xine
В качестве альтернативы можно использовать его для запуска файла непосредственно, без GUI, следующей командой:
% xine -g -p mymovie.avi
7.4.2.3. Утилиты transcode
Приложение transcode не является проигрывателем. Это набор инструментов для преобразования видео и звуковых файлов. При помощи transcode можно объединять видеофайлы, исправлять поврежденные файлы, использовать инструменты командной строки для работы с потоками ввода/вывода stdin/stdout.
Большое количество опций может быть указано во время сборки порта multimedia/transcode. Для сборки transcode мы рекомендуем использовать следующую командную строку:
# make WITH_OPTIMIZED_CFLAGS=yes WITH_LIBA52=yes WITH_LAME=yes WITH_OGG=yes \
WITH_MJPEG=yes -DWITH_XVID=yes
Предложенных установок должно быть достаточно для большинства пользователей.
Для иллюстрации возможностей transcode
приводится пример, показывающий как сконвертировать файл DivX формата в PAL MPEG-1 файл (PAL VCD):
% transcode -i input.avi -V --export_prof vcd-pal -o output_vcd
% mplex -f 1 -o output_vcd.mpg output_vcd.m1v output_vcd.mpa
Итоговый MPEG файл output_vcd.mpg может быть проигран с помощью MPlayer. Вы можете даже записать файл на CD-R носитель для создания Video CD. В этом случае, вам нужно будет установить и использовать программы multimedia/vcdimager и sysutils/cdrdao.
Существует страничка справочника для transcode
, но вы также должны проконсультироваться с transcode wiki для получения более детальной информации и примеров.
7.4.3. Дальнейшее чтение
Различные пакеты видео программ для FreeBSD интенсивно разрабатываются. Очень возможно, что в ближайшем будущем многие обсуждаемые здесь проблемы разрешатся. Это займет время, и те, кто желает получить максимум от аудио/видео возможностей FreeBSD, должны будут собирать необходимые знания из нескольких списков часто задаваемых вопросов и обучающих статей, а также использовать различные приложения. Этот раздел существует для того, чтобы читатель мог получить указания на несколько источников дополнительной информации.
Документация MPlayer очень содержательна в техническом плане. Возможно, эти документы должны использоваться любым человеком, желающим получить высокий уровень знаний о видео на UNIX® системах. Список рассылки MPlayer враждебен для любого, кто не потрудился прочитать документацию, так что, если у вас есть желание сообщать о найденных ошибках, прочитайте вначале документацию.
xine HOWTO содержит главу об улучшении производительности, которая применима к любому проигрывателю.
Наконец, существует несколько многообещающих приложений, которые читатель может испробовать:
Avifile, для которого также существует порт multimedia/avifile.
Ogle, для которого также существует порт multimedia/ogle.
multimedia/dvdauthor, пакет с открытыми текстами для распространения DVD контента.
7.5. Настройка ТВ тюнеров
7.5.1. Введение
ТВ тюнеры предназначены для просмотра широковещательного или кабельного телевидения на компьютере. Большинство тюнеров поддерживают композитный видео вход RCA или S-video, а некоторые из них поставляются с FM радио тюнером.
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 и использовать его архивы.
7.6. Сканеры
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) и linprocfs(7). |
Теперь необходимо убедиться, что сканер опознан программой графического интерфейса. В состав системы SANE входит утилита sane(1), позволяющая работать со сканером из командной строки. Опция -L
используется для показа информации о сканере:
# scanimage -L
device `snapscan:/dev/pass3' is a AGFA SNAPSCAN 600 flatbed scanner
Отсутствие сообщений или сообщение об отсутствии устройств означает, что утилита sane(1) не смогла идентифицировать сканер. В этом случае вам потребуется отредактировать файл конфигурации аппаратного модуля и указать устройство, используемое сканером. Все файлы настройки находятся в каталоге /usr/local/etc/sane.d/. Такие проблемы присущи некоторым моделям USB сканеров.
Например, в случае USB сканера, описанного в USB, утилита 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
опознала сканер, конфигурация завершена. Все готово к сканированию.
Хотя утилита sane(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).
Разумеется, по соображениям безопасности, вы должны как следует подумать, прежде чем добавлять пользователя в другие группы, в особенности в группу |
Глава 8. Настройка ядра FreeBSD
8.1. Краткий обзор
Ядро - это основная часть операционной системы FreeBSD. Оно ответственно за управление памятью, параметры безопасности, работу с сетью, доступ к дискам и многое другое. Несмотря на то, что FreeBSD становится всё более динамически конфигурируемой, иногда приходится собирать собственное ядро.
После прочтения этой главы вы узнаете:
Почему вам может понадобиться сборка собственного ядра.
Как написать файл конфигурации ядра или изменить существующий.
Как использовать файл конфигурации ядра для того, чтобы создать и собрать новое ядро.
Как установить новое ядро.
Что делать, если что-то не работает или работает не так, как должно.
Все команды, приводимые в этой главе в качестве примера, должны выполняться от пользователя root
.
8.2. Зачем собирать собственное ядро?
Традиционно в FreeBSD использовалось так называемое "монолитное" ядро. Это означает, что ядро - это одна большая программа, которая поддерживает фиксированный набор устройств и в случае, если необходимо изменить его поведение, требуется сборка нового ядра и перезагрузка компьютера уже с новым ядром.
На сегодняшний день FreeBSD быстро продвигается к модели, в которой большая часть функциональности содержится в модулях, которые могут быть при необходимости динамически загружены и выгружены из ядра. Это позволяет ядру использовать устройства, которые "внезапно" появились в системе (например, устройства PCMCIA в лэптопе) или добавлять новую функциональность в ядро, которая не была необходима в момент первоначальной сборки ядра. Такой подход известен как модульность ядра.
Несмотря на это, всё ещё иногда бывает необходимо, чтобы некоторая функциональность была вкомпилирована в ядро статически. В некоторых случаях это продиктовано тем, что эта функциональность настолько сильно привязана к ядру, что не может быть динамически загружаемой. В других случаях это может быть просто потому, что никто не уделил время написанию динамически загружаемого модуля для этой функциональности.
Сборка собственного ядра - один из наиболее важных ритуалов, совершаемых опытными пользователями BSD. Несмотря на длительность этого процесса, ваша FreeBSD останется только в выигрыше. В отличие от ядра GENERIC, которое должно поддерживать широкий спектр аппаратного обеспечения, собственное ядро содержит поддержку аппаратного обеспечения только вашего компьютера. Это может давать следующие преимущества:
Меньшее время загрузки. Поскольку ядро будет пытаться определить только то аппаратное обеспечение, которое установлено в вашем компьютере, время, которое потребуется системе для загрузки, может значительно уменьшиться.
Уменьшение использования памяти. Собственное ядро часто использует меньше памяти, чем ядро GENERIC, так как из него исключены лишние драйвера и неиспользуемые функциональные возможности. Это важно тем, что часть оперативной памяти постоянно занята кодом ядра и поэтому не может быть выделена приложениям. Именно по этой причине собственное ядро особенно полезно при использовании систем с малым объемом оперативной памяти.
Поддержка дополнительного аппаратного обеспечения. Собственное ядро позволяет вам добавить поддержку устройств, отсутствующих в ядре GENERIC.
8.3. Определение аппаратного обеспечения
Перед тем, как углубиться в конфигурирование ядра, было бы разумно составить перечень установленного в компьютер аппаратного обеспечения. Если FreeBSD не является основной операционной системой, то перечень оборудования может быть легко составлен на основании анализа конфигурации текущей операционной системы. Например, Диспетчер устройств (Device Manager) от Microsoft® обычно содержит необходимую информацию об установленных устройствах. Диспетчер устройств находится на панели управления (control panel).
У некоторых версий Microsoft® Windows® есть значок Система (System), вызов которого отобразит экран, содержащий среди прочих и Диспетчер устройств. |
Если других операционных систем на машине не установлено, системному администратору придется искать эту информацию самостоятельно. Один из методов подразумевает использование утилиты dmesg(8) и команды man(1). У большинства драйверов во FreeBSD есть страницы справочника, содержащие список поддерживаемого оборудования, а найденные во время начальной загрузки устройства будут перечислены в dmesg(8). К примеру, следующие строки информируют о том, что драйвер psm обнаружил мышь:
psm0: <PS/2 Mouse> irq 12 on atkbdc0 psm0: [GIANT-LOCKED] psm0: [ITHREAD] psm0: model Generic PS/2 mouse, device ID 0
Этот драйвер необходимо будет включить в конфигурацию собственного ядра или загрузить посредством loader.conf(5).
В некоторых случаях dmesg
отображает только системные сообщения вместо сообщений начальной загрузки. В таких случаях необходимо обращаться к файлу /var/run/dmesg.boot.
Еще один метод нахождения аппаратного обеспечения подразумевает использование достаточно информативной утилиты pciconf(8). Например:
ath0@pci0:3:0:0: class=0x020000 card=0x058a1014 chip=0x1014168c rev=0x01 hdr=0x00 vendor = 'Atheros Communications Inc.' device = 'AR5212 Atheros AR5212 802.11abg wireless' class = network subclass = ethernet
Эта часть вывода, полученная в результате запуска команды pciconf -lv
, показывает, что драйвер ath обнаружил беспроводное Ethernet устройство. Набрав man ath
, вы получите страницу справочника ath(4).
Также, для извлечения необходимой информации, можно воспользоваться ключом -k
к команде man(1). В вышеприведенном случае можно набрать:
# man -k Atheros
чтобы получить страницы справочника, содержащие определенное слово:
ath(4) - Atheros IEEE 802.11 wireless network driver ath_hal(4) - Atheros Hardware Access Layer (HAL)
Теперь, имея в распоряжении перечень аппаратного оборудования, можно безбоязненно приступить к сборке специализированного ядра.
8.4. Драйвера, подсистемы и модули ядра
Перед построением специализированного ядра, обдумайте причины, побудившие вас к этому. Если требуется поддержка специального оборудования, то она наверняка уже реализована в виде модуля.
Модули ядра находятся в каталоге /boot/kernel, и они могут быть динамически включены в работающее ядро при помощи kldload(8). Если не все, то большинство драйверов существуют в виде модулей, и у них есть соответствующая страница справочника. К примеру, в предыдущем разделе упоминался драйвер ath беспроводного Ethernet устройства. Соответствующая ему страница справочника гласит:
Alternatively, to load the driver as a module at boot time, place the following line in man:loader.conf[5]: if_ath_load="YES"
Как уже выше сказано, добавление строки if_ath_load="YES"
в файл /boot/loader.conf позволит динамически загружать этот модуль во время загрузки системы.
В некоторых случаях, однако, интересующего вас модуля не существует. Чаще всего это справедливо для определенных подсистем и очень важных драйверов. Например, поддержка файловой системы FreeBSD (FFS) является обязательной опцией в ядре. Как и поддержка сети (INET). К сожалению, единственный способ определить является ли драйвер обязательным - это проверить наличие соответствующего модуля.
Довольно легко удалить поддержку устройства или опцию, получив тем самым неработоспособное ядро. Например, если драйвер ata(4) изъят из конфигурации ядра, то система, использующая диски ATA, может не загрузиться без записи о модуле, добавленной в loader.conf. Если есть сомнения, проверьте наличие модуля, и только потом исключайте поддержку в ядре. |
8.5. Сборка и установка собственного ядра
Для сборки ядра необходимо наличие всех исходных файлов FreeBSD. |
Во-первых, давайте сделаем краткий обзор каталога, в котором будет происходить сборка ядра. Все каталоги, которые будут упоминаться, будут относительными по отношению к основному каталогу /usr/src/sys, который также доступен как каталог /sys. Этот каталог содержит множество подкаталогов, представляющих собой различные части ядра, но наиболее важным для нас будет каталог arch/conf, в котором вы будете редактировать конфигурационный файл ядра и в котором находится каталог compile, где будет собираться ваше ядро. arch может быть i386, amd64, ia64, powerpc, sparc64 или pc98 (альтернативная ветвь аппаратного обеспечения, популярная в Японии). Все, что находится внутри каталога определенной архитектуры, относится только к этой архитектуре; остальной код является машинно независимым и общим для всех платформ, на которые FreeBSD может быть потенциально портирована. Обратите внимание на логическую структуру каталогов, в которой каждое поддерживаемое устройство, каждая файловая система и каждая опция размещается в своём собственном каталоге.
В примерах этой главы подразумевается, что вы используете архитектуру i386. Если архитектура вашей системы отличается от используемой в примерах, то вам необходимо будет соответственно изменить имена каталогов.
Если каталог /usr/src/ отсутствует в вашей системе (или этот каталог пуст), то это значит, что исходные тексты не были установлены. Наиболее простой способ установить их - воспользоваться csup(1), как описано в Синхронизация исходных текстов. Далее, создайте символическую ссылку на /usr/src/sys/:
|
Затем, перейдите в каталог arch/conf и скопируйте файл конфигурации GENERIC в файл с выбранным вами именем. Например:
# cd /usr/src/sys/i386/conf
# cp GENERIC MYKERNEL
По традиции имя состоит из букв в верхнем регистре, и если вы поддерживаете несколько компьютеров FreeBSD на различном оборудовании, хорошая идея добавлять это имя к имени хоста. Мы назвали ядро MYKERNEL в этом примере.
Помещение файла конфигурации ядра в /usr/src может быть плохой идеей. Если вы испытываете проблемы, их можно решить удалив /usr/src и начав все с начала. После этого обычно требуется несколько секунд, чтобы понять, что вы удалили собственный файл настройки ядра. Не редактируйте непосредственно GENERIC, он может быть также перезаписан и при следующем обновлении дерева исходных текстов, и изменения ядра будут потеряны. Вы можете сохранить файл конфигурации ядра в другом месте, а затем создать символическую ссылку на этот файл в каталоге i386. Например:
|
Теперь отредактируйте файл MYKERNEL в своём любимом текстовом редакторе. Если вы только начинаете, единственным доступным редактором скорее всего будет vi, который слишком сложен для того, чтобы описать его здесь, но в библиографии перечислено множество книг, в которых его использование хорошо освещено. Однако FreeBSD предоставляет более простой редактор ee, который, если вы - новичок, подойдёт вам больше всего. Не стесняйтесь изменять строки комментариев в начале файла, с тем, чтобы отобразить вашу конфигурацию или изменения, которые вы сделали по сравнению с GENERIC.
Если вам приходилось собирать ядро для SunOS™ или какой-либо другой операционной системы типа BSD, многое из того, что содержится в этом файле будет очень знакомо вам. Если же вы, напротив, использовали другую операционную систему, такую как DOS, файл конфигурации GENERIC может показаться вам крайне сложным, поэтому следуйте инструкциям в разделе Конфигурационный файл медленно и внимательно.
Если вы синхронизируете дерево исходных текстов с деревом проекта FreeBSD, не забудьте свериться с файлом /usr/src/UPDATING перед обновлением. В этом файле описаны все важные вопросы и области исходного кода, требующие особого внимания. /usr/src/UPDATING всегда соответствует версии ваших исходных текстов FreeBSD, поэтому является более актуальным источником информации, чем это руководство. |
Теперь вы должны скомпилировать ядро.
Procedure: Сборка ядра
Для сборки ядра необходимо наличие всех исходных файлов FreeBSD. |
Перейдите в каталог /usr/src:
# cd /usr/src
Соберите ядро:
# make buildkernel KERNCONF=MYKERNEL
Установите новое ядро:
# make installkernel KERNCONF=MYKERNEL
По умолчанию, при построении ядра, все модули ядра так же будут пересобраны. Если вы хотите обновить ядро быстрее или построить только определённые модули, то вам нужно отредактировать файл /etc/make.conf перед началом процесса сборки ядра: MODULES_OVERRIDE = linux acpi sound/sound sound/driver/ds1 ntfs Эта переменная устанавливает список модулей, которые нужно построить вместо построения всех модулей. WITHOUT_MODULES = linux acpi sound ntfs В этой переменной перечисляются основные модули, которые необходимо исключить из процесса сборки. За другими переменными, которые вы можете посчитать полезными в процессе сборки ядра, обращайтесь к странице справочника make.conf(5). |
Новое ядро будет скопировано в каталог /boot/kernel как /boot/kernel/kernel, а старое ядро будет перемещено в /boot/kernel.old/kernel. Теперь перезагрузите систему для того, чтобы использовать новое ядро. Если что-то пойдёт не так, вы можете обратиться к разделу Решение проблем в конце этой главы, который может оказаться полезен. Не забудьте прочитать раздел, который объясняет как исправить ситуацию, когда ядро не загружается.
Другие файлы, относящиеся к процессу загрузки, такие как загрузчик (loader(8)) и его конфигурационные файлы, размещаются в /boot. Модули сторонних производителей могут быть помещены в /boot/kernel, хотя пользователи должны знать, что очень важно, чтобы модули были синхронизированы с собранным ядром. Модули, не рассчитанные на работу с собранным ядром, могут вызвать нестабильность и некорректность работы. |
8.6. Конфигурационный файл
Формат конфигурационного файла достаточно прост. Каждая строка представляет собой ключевое слово и один или более аргументов. Для простоты большинство строк содержат только один аргумент. Всё, что следует за символом #
является комментарием и игнорируется. Следующие разделы описывают каждый параметр, в порядке, в котором они появляются в GENERIC. За полным списком архитектурно-зависимых параметров и устройств обратитесь к файлу NOTES в том же каталоге, что и GENERIC. Архитектурно независимые параметры находятся в /usr/src/sys/conf/NOTES.
Директива include
стала доступной для использования в конфигурационных файлах. Она позволяет включать в текущий конфигурационный файл содержимое другого файла, тем самым упрощая процесс внесения небольших изменений в существующий файл. Например, если вам необходимо добавить всего несколько дополнительных опций или драйверов в ядро GENERIC, то вам придется поддерживать только разницу к файлу GENERIC:
include GENERIC ident MYKERNEL options IPFIREWALL options DUMMYNET options IPFIREWALL_DEFAULT_TO_ACCEPT options IPDIVERT
Большинство администраторов оценят значительные преимущества перед старым способом - написанием конфигурационного файла "с нуля": ваш конфигурационный файл будет отображать только изменения относительно GENERIC. А после обновлений исходного кода, новые функциональные возможности, появившиеся в GENERIC, будут добавлены и в вашу конфигурацию, если только не препятствовать этому директивами nooptions
или nodevice
. Далее в этом разделе описывается типовой конфигурационный файл, его опции и устройства, а также их роли.
Для сборки ядра со всеми возможными опциями (обычно используется для тестирования), выполните от имени суперпользователя (
|
Это пример конфигурационного файла ядра GENERIC с различными дополнительными комментариями, которые могут понадобиться для ясности. Этот пример должен совпадать с вашей копией в /usr/src/sys/i386/conf/GENERIC практически полностью.
machine i386
Это архитектура машины. Она должна быть одной из следующих: amd64
, i386
, ia64
, pc98
, powerpc
, или sparc64
.
cpu I486_CPU cpu I586_CPU cpu I686_CPU
Эта опция указывает тип процессора, который используется в вашей системе. В конфигурационном файле может быть несколько вхождений этой опции (например, если вы не уверены, какой из типов процессора необходимо использовать - I586_CPU
или I686_CPU
), но для собственного ядра лучше указывать только тот тип процессора, который установлен в вашей системе. Если вы не уверены, какой тип необходимо использовать вам, вы можете воспользоваться файлом /var/run/dmesg.boot, чтобы увидеть протокол загрузки системы.
ident GENERIC
Этот параметр определяет "метку" ядра. Необходимо, чтобы она соответствовала названию файла конфигурации ядра, например MYKERNEL
, если вы следовали инструкциям в предыдущих примерах. Значение, которое вы присвоите параметру ident
будет выводиться в процессе загрузки, поэтому полезно давать новым ядрам другие имена для того, чтобы отличать их от обычного ядра (например, если вы хотите собрать экспериментальное ядро).
#To statically compile in device wiring instead of /boot/device.hints #hints "GENERIC.hints" # Default places to look for devices.
device.hints(5) используются для настройки параметров драйверов устройств. Путь по умолчанию, который loader(8) будет проверять при загрузке - /boot/device.hints. Используя опцию hints
вы можете вкомпилировать эти параметры статически в ваше ядро. В этом случае не требуется создавать файл device.hints в каталоге /boot.
makeoptions DEBUG=-g # Build kernel with gdb(1) debug symbols
При обычном построении ядра в сборку включается отладочная информация: опция -g
передается компилятору gcc(1).
options SCHED_ULE # ULE scheduler
Планировщик по умолчанию во FreeBSD. Оставьте эту опцию.
options PREEMPTION # Enable kernel thread preemption
Позволяет высокоприоритетным нитям ядра вытеснять конкурентов, находящихся в режиме выполнения. Эта опция может помочь повысить реактивность системы по отношению к внешним воздействиям, например, за счет снижения латентности нитей, обрабатывающих прерывания.
options INET # InterNETworking
Поддержка сетевых возможностей. Оставьте эту опцию включенной, даже если вы не планируете подключаться к сети. Большинство программ требуют, чтобы работал хотя бы интерфейс обратной связи (loopback) (т.е. создание сетевых соединений внутри вашего ПК), так что эта опция в принципе является обязательной.
options INET6 # IPv6 communications protocols
Включает поддержку коммуникационных протоколов IPv6.
options FFS # Berkeley Fast Filesystem
Включает поддержку основной файловой системы. Не удаляйте эту опцию, если вы планируете загружаться с жесткого диска.
options SOFTUPDATES # Enable FFS Soft Updates support
Этот параметр включает в ядре технологию Soft Updates, которая повышает скорость записи на диски. Несмотря на то, что эта технология включена в ядре, она должна быть включена для отдельных дисков. Просмотрите вывод команды mount(8) чтобы определить, включены ли Soft Updates для дисков вашей системы. Если вы не увидите параметр soft-updates
, вам будет необходимо активировать его при помощи команды tunefs(8) (для существующих файловых систем) или команды newfs(8) (для новых файловых систем).
options UFS_ACL # Support for access control lists
Этот параметр включает в ядре поддержку списков управления доступом (ACL). Основывается на использовании расширенных атрибутов и UFS2, детальное описание вы сможете найти в Списки контроля доступа файловой системы (ACL). 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
Ядра, которые используют PROCFS
, должны также включать поддержку PSEUDOFS
,
options GEOM_PART_GPT # GUID Partition Tables.
Добавляет поддержку Таблиц Разделов GUID. Этот параметр делает возможным наличие большого количества разделов на одном диске, до 128 в стандартной конфигурации.
options COMPAT_43 # Compatible with BSD 4.3 [KEEP THIS!]
Совместимость с 4.3BSD. Не выключайте эту опцию; некоторые приложения будут вести себя странно, если этой опции не будет в ядре.
options COMPAT_FREEBSD4 # Compatible with FreeBSD4
Эта опция требуется для поддержки приложений, собранных на более старых версиях FreeBSD, которые используют старые интерфейсы вызовов. Рекомендуется использовать данную опцию на всех системах на платформах i386™, на которых могут запускаться старые приложения; платформы, поддержка которых появилась только в FreeBSD 5.X, например ia64 и sparc64, не требуют этой опции.
options COMPAT_FREEBSD5 # Compatible with FreeBSD5
Эта опция необходима для поддержки приложений, скомпилированных на FreeBSD 5.X и использующих интерфейс системных вызовов FreeBSD 5.X.
options COMPAT_FREEBSD6 # Compatible with FreeBSD6
Эта опция требуется для поддержки приложений, собранных на FreeBSD версий 6.X, которые используют интерфейсы системных вызовов FreeBSD 6.X.
options COMPAT_FREEBSD7 # Compatible with FreeBSD7
Эта опция требуется на системах FreeBSD версий 8 и более поздних для поддержки приложений, собранных для FreeBSD 7.X и использующих интерфейсы системных вызовов FreeBSD 7.X.
options SCSI_DELAY=5000 # Delay (in ms) before probing SCSI
Этот параметр заставляет ядро приостановиться на 5 секунд перед тем, как идентифицировать каждое устройство SCSI в вашей системе. Если у вас установлены только жесткие диски IDE, вы можете игнорировать эту опцию, в противном случае, возможно, вы захотите уменьшить это число, для того чтобы ускорить загрузку. Естественно, если вы сделаете это, а у FreeBSD появятся проблемы с распознанием ваших устройств SCSI, необходимо будет увеличить этот параметр.
options KTRACE # ktrace(1) support
Включает поддержку трассировки процессов, что удобно при отладке.
options SYSVSHM # SYSV-style shared memory
Этот параметр предоставляет поддержку разделяемой памяти System V. Наиболее распространенное применение этого - расширение XSHM в X, которое многие приложения, интенсивно работающие с графикой, будут автоматически использовать для повышения скорости работы. Если вы используете X, эта опция будет необходима.
options SYSVMSG # SYSV-style message queues
Поддержка сообщений System V. Этот параметр добавляет в ядро всего лишь несколько сотен байт.
options SYSVSEM # SYSV-style semaphores
Поддержка семафоров System V. Не настолько часто используемая возможность, но в ядро добавляет всего несколько сотен байт.
Команда ipcs(1) с параметром |
options _KPOSIX_PRIORITY_SCHEDULING # POSIX P1003_1B real-time extensions
Расширения реального времени, добавленные 1993 POSIX®. Определенные приложения из коллекции используют их, например StarOffice™.
options KBD_INSTALL_CDEV # install a CDEV entry in /dev
Этот параметр разрешает формирование файлов устройств в /dev для клавиатур.
options ADAPTIVE_GIANT # Giant mutex is adaptive.
Giant - имя механизма защиты ("спящего" мьютекса) для крупных наборов ресурсов ядра. На нынешний момент Giant представляется фактически непригодным для использования в связи с серьезными потерями в производительности, и активно заменяется на механизмы, защищающие отдельные ресурсы ядра. Параметр ADAPTIVE_GIANT
включает Giant в число адаптивных мьютексов: в случае, когда нить ядра нуждается в Giant, а он уже захвачен нитью, выполняющейся на другом процессоре, первая нить будет продолжать выполнение и ждать освобождения Giant. В норме нить должна была бы уснуть, пока не настанет очередной момент ее выполнения. Если вы не уверены, оставьте этот параметр в покое.
Для FreeBSD 8.0-RELEASE и более поздних версий, все мьютексы являются адаптивными по умолчанию, если обратное не указано специально опцией |
device apic # I/O APIC
Устройство apic разрешает использование набора I/O APIC для распределения прерываний. Оно может быть использовано как с однопроцессорными, так и с многопроцессорными ядрами (для последних наличие apic является обязательным). Для поддержки многопроцессорности добавьте строку options SMP
.
Устройство apic существует только на архитектурах i386. На других архитектурах этот конфигурационный параметр использовать не следует. |
device eisa
Включите эту опцию если у вас материнская плата EISA. Это включает автоопределение и конфигурирование поддержки всех устройств на шине EISA.
device pci
Включите этот параметр, если у вас материнская плата с поддержкой PCI. Это включит автоопределение карт PCI и проксирование из шины PCI в шину ISA.
# Floppy drives device fdc
Контроллер флоппи-диска.
# ATA and ATAPI devices device ata
Этот драйвер поддерживает все устройства ATA и ATAPI. Вам необходима только одна строка device ata
в ядре для того, чтобы обнаружить все PCI устройства ATA/ATAPI в современных машинах.
device atadisk # ATA disk drives
Эта строка необходима вместе с device ata
для поддержки дисков ATA.
device ataraid # ATA RAID drives
Эта строка необходима вместе с device ata
для поддержки дисков ATA RAID.
device atapicd # ATAPI CDROM drives
Поддержка приводов ATAPI CDROM. Используется вместе с device ata
.
device atapifd # ATAPI floppy drives
Поддержка флоппи-приводов ATAPI. Используется вместе с device ata
.
device atapist # ATAPI tape drives
Поддержка ленточных приводов ATAPI (стримеров). Используется вместе с device ata
.
options ATA_STATIC_ID # Static device numbering
Заставляет драйвер нумеровать устройства статически; в противном случае происходит динамическая нумерация.
# SCSI Controllers device ahb # EISA AHA1742 family device ahc # AHA2940 and onboard AIC7xxx devices options AHC_REG_PRETTY_PRINT # Print register bitfields in debug # output. Adds ~128k to driver. device ahd # AHA39320/29320 and onboard AIC79xx devices options AHD_REG_PRETTY_PRINT # Print register bitfields in debug # output. Adds ~215k to driver. device amd # AMD 53C974 (Teckram DC-390(T)) device isp # Qlogic family #device ispfw # Firmware for QLogic HBAs- normally a module device mpt # LSI-Logic MPT-Fusion #device ncr # NCR/Symbios Logic device sym # NCR/Symbios Logic (newer chipsets + those of `ncr') device trm # Tekram DC395U/UW/F DC315U adapters device adv # Advansys SCSI adapters device adw # Advansys wide SCSI adapters device aha # Adaptec 154x SCSI adapters device aic # Adaptec 15[012]x SCSI adapters, AIC-6[23]60. device bt # Buslogic/Mylex MultiMaster SCSI adapters device ncv # NCR 53C500 device nsp # Workbit Ninja SCSI-3 device stg # TMC 18C30/18C50
Контроллеры SCSI. Закомментируйте те, которых у вас в системе нет. Если у вас в системе исключительно IDE устройства, вы можете удалить все эти строки. Строки вида *_REG_PRETTY_PRINT
включают режим отладки для соответствующих драйверов.
# SCSI peripherals device scbus # SCSI bus (required for SCSI) device ch # SCSI media changers device da # Direct Access (disks) device sa # Sequential Access (tape etc) device cd # CD device pass # Passthrough device (direct SCSI access) device ses # SCSI Environmental Services (and SAF-TE)
Периферийные устройства SCSI. Опять-таки, закомментируйте те, которых у вас в системе нет, или, если у вас в наличии исключительно IDE, можете удалить все.
USB umass(4) драйвер (и некоторые другие драйверы) используют подсистему SCSI, хотя и не являются настоящими SCSI устройствами. Следовательно, вам необходимо сохранить поддержку SCSI, если какой-либо из этих драйверов включен в конфигурацию ядра. |
# RAID controllers interfaced to the SCSI subsystem device amr # AMI MegaRAID device arcmsr # Areca SATA II RAID device asr # DPT SmartRAID V, VI and Adaptec SCSI RAID device ciss # Compaq Smart RAID 5* device dpt # DPT Smartcache III, IV - See NOTES for options device hptmv # Highpoint RocketRAID 182x device hptrr # Highpoint RocketRAID 17xx, 22xx, 23xx, 25xx device iir # Intel Integrated RAID device ips # IBM (Adaptec) ServeRAID device mly # Mylex AcceleRAID/eXtremeRAID device twa # 3ware 9000 series PATA/SATA RAID # RAID controllers device aac # Adaptec FSA RAID device aacp # SCSI passthrough for aac (requires CAM) device ida # Compaq Smart RAID device mfi # LSI MegaRAID SAS device mlx # Mylex DAC960 family device pst # Promise Supertrak SX6000 device twe # 3ware ATA RAID
Поддерживаемые RAID-контроллеры. Если у вас нет таковых, можете их закомментировать или удалить эти строки.
# atkbdc0 controls both the keyboard and the PS/2 mouse device atkbdc # AT keyboard controller
Контроллер клавиатуры (atkbdc
) предоставляет средства ввода/вывода для клавиатуры AT и PS/2 устройств. Этот контроллер необходим драйверу клавиатуры (atkbd
) и PS/2 устройств (psm
).
device atkbd # AT keyboard
Драйвер atkbd
вместе с контроллером atkbdc
предоставляет доступ к клавиатуре AT 84 или улучшенной клавиатуре AT, которая подключена к контроллеру AT клавиатуры.
device psm # PS/2 mouse
Используйте это устройство, если ваша мышь включается в порт PS/2.
device kbdmux # keyboard multiplexer
Поддержка мультиплексора клавиатур. Если использование двух и более клавиатур не планируется, можете смело исключать этот параметр.
device vga # VGA video card driver
Драйвер видеокарты.
device splash # Splash screen and screen saver support
Заставка при загрузке. Хранители экрана также требуют этого устройства.
# syscons is the default console driver, resembling an SCO console device sc
sc
- это драйвер консоли по умолчанию, который имитирует консоль SCO. Так как большая часть консольных полноэкранных приложений обращаются к консоли через терминальную библиотеку termcap, вас не должно волновать, будете ли вы использовать этот драйвер, либо драйвер vt
, который является VT220
-совместимым драйвером консоли. Если у вас возникнут какие-либо проблемы с приложениями, работающими с этим драйвером консоли, установите переменную окружения TERM
в значение scoansi
.
# Enable this for the pcvt (VT220 compatible) console driver #device vt #options XSERVER # support for X server on a vt console #options FAT_CURSOR # start with block cursor
VT220-совместимый драйвер консоли, обратно совместимый с VT100/102. Он работает лучше на некоторых лэптопах, у которых возникают проблемы несовместимости с sc
. Также, установите переменную окружения TERM
в значение vt100
или vt220
. Этот драйвер также может быть полезен в случаях подключения к большому количеству различных машин через сеть, на которых параметры для устройства sc
для termcap или terminfo могут отсутствовать - vt100
присутствует практически на любой платформе.
device agp
Включите эту опцию, если у вас есть AGP карта в системе. Это включит поддержку AGP и AGP GART для тех карт, которые поддерживают эту возможность.
# Power management support (see NOTES for more options) #device apm
Поддержка Advanced Power Management. Чаще всего используется в лэптопах, хотя и отключена по умолчанию.
# Add suspend/resume support for the i8254. device pmtimer
Устройство таймера для управления энергопотреблением, APM и ACPI.
# PCCARD (PCMCIA) support # PCMCIA and cardbus bridge support device cbb # cardbus (yenta) bridge device pccard # PC Card (16-bit) bus device cardbus # CardBus (32-bit) bus
Поддержка PCMCIA. Включите ее, если вы используете лэптоп.
# Serial (COM) ports device sio # 8250, 16[45]50 based serial ports
Четыре последовательных порта, которые известны как COM порты в мире MS-DOS®/Windows®
Если у вас есть внутренний модем на COM4 и последовательный порт COM2, вам понадобится поменять IRQ модема на 2 (по непонятным техническим причинам IRQ2 = IRQ9) для того, чтобы получить к нему доступ из FreeBSD. Если у вас есть многопортовая карта с последовательными портами, ознакомьтесь с sio(4) чтобы узнать корректные значения для добавления в /boot/device.hints. Некоторые видеокарты (в частности те, что используют чипы S3) используют адреса ввода/вывода в форме Каждый последовательный порт требует уникального IRQ (кроме тех случаев, когда вы используете мультипортовую карту, которая поддерживает совместное использование прерываний), поэтому значения IRQ по умолчанию для COM3 и COM4 не могут быть использованы. |
# Parallel port device ppc
Интерфейс параллельного порта на шине ISA.
device ppbus # Parallel port bus (required)
Поддержка шины параллельного порта.
device lpt # Printer
Поддержка принтеров на параллельном порту.
Все три последних устройства необходимы для поддержка принтеров на параллельном порту. |
device plip # TCP/IP over parallel
Драйвер TCP/IP через параллельный порт.
device ppi # Parallel port interface device
Поддержка ввода/вывода общего назначения ("geek port") + IEEE1284 ввода/вывода.
#device vpo # Requires scbus and da
Драйвер привода Iomega Zip. Требует наличия scbus
и da
. Наилучшая производительность достигается с портами в режиме EPP 1.9.
#device puc
Раскомментируйте это устройство, если у вас есть "простая" последовательная или параллельная PCI карта, поддерживаемая драйвером puc(4).
# PCI Ethernet NICs. device de # DEC/Intel DC21x4x (Tulip) device em # Intel PRO/1000 adapter Gigabit Ethernet Card device ixgb # Intel PRO/10GbE Ethernet Card device txp # 3Com 3cR990 (Typhoon) device vx # 3Com 3c590, 3c595 (Vortex)
Драйвера сетевых карт PCI. Закомментируйте или удалите драйвера тех карт, которые отсутствуют в вашей системе.
# PCI Ethernet NICs that use the common MII bus controller code. # NOTE: Be sure to keep the 'device miibus' line in order to use these NICs! device miibus # MII bus support
Поддержка шины MII требуется для некоторых PCI 10/100 Ethernet карт, которые используют MII-совместимые передатчики или реализуют интерфейс управления передатчиком, который имитирует MII. Добавление device miibus
в конфигурационный файл ядра включает поддержку стандартного API miibus и всех драйверов PHY, включая стандартный для тех PHY, которые не обрабатываются специфическим образом конкретным драйвером.
device bfe # Broadcom BCM440x 10/100 Ethernet device bge # Broadcom BCM570xx Gigabit Ethernet device dc # DEC/Intel 21143 and various workalikes device fxp # Intel EtherExpress PRO/100B (82557, 82558) device lge # Level 1 LXT1001 gigabit ethernet device msk # Marvell/SysKonnect Yukon II Gigabit Ethernet device nge # NatSemi DP83820 gigabit ethernet device pcn # AMD Am79C97x PCI 10/100 (precedence over 'lnc') device re # RealTek 8139C+/8169/8169S/8110S device rl # RealTek 8129/8139 device sf # Adaptec AIC-6915 (Starfire) device sis # Silicon Integrated Systems SiS 900/SiS 7016 device sk # SysKonnect SK-984x > SK-982x gigabit Ethernet device ste # Sundance ST201 (D-Link DFE-550TX) device stge # Sundance/Tamarack TC9021 gigabit Ethernet device ti # Alteon Networks Tigon I/II gigabit Ethernet device tl # Texas Instruments ThunderLAN device tx # SMC EtherPower II (83c170 EPIC) device vge # VIA VT612x gigabit ethernet device vr # VIA Rhine, Rhine II device wb # Winbond W89C840F device xl # 3Com 3c90x (Boomerang, Cyclone)
Драйвера, которые используют контроллер шины MII.
# ISA Ethernet NICs. pccard NICs included. device cs # Crystal Semiconductor CS89x0 NIC # 'device ed' requires 'device miibus' device ed # NE[12]000, SMC Ultra, 3c503, DS8390 cards device ex # Intel EtherExpress Pro/10 and Pro/10+ device ep # Etherlink III based cards device fe # Fujitsu MB8696x based cards device ie # EtherExpress 8/16, 3C507, StarLAN 10 etc. device lnc # NE2100, NE32-VL Lance Ethernet cards device sn # SMC's 9000 series of Ethernet chips device xe # Xircom pccard Ethernet # ISA devices that use the old ISA shims #device le
Драйвера сетевых карт ISA. Ознакомьтесь с файлом /usr/src/sys/i386/conf/NOTES, чтобы узнать, какие сетевые карты каким драйвером поддерживаются.
# Wireless NIC cards device wlan # 802.11 support
Generic 802.11 support. This line is required for wireless networking.
device wlan_wep # 802.11 WEP support device wlan_ccmp # 802.11 CCMP support device wlan_tkip # 802.11 TKIP support
Crypto support for 802.11 devices. These lines are needed if you intend to use encryption and 802.11i security protocols.
device an # Aironet 4500/4800 802.11 wireless NICs. device ath # Atheros pci/cardbus NIC's device ath_hal # Atheros HAL (Hardware Access Layer) device ath_rate_sample # SampleRate tx rate control for ath device awi # BayStack 660 and others device wi # WaveLAN/Intersil/Symbol 802.11 wireless NICs. #device wl # Older non 802.11 Wavelan wireless NIC.
Поддержка различных беспроводных карт.
# Pseudo devices device loop # Network loopback
Стандартное устройство обратной связи для TCP/IP. Если вы запускаете telnet или FTP по отношению localhost
(он же 127.0.0.1
), то соединение пройдёт через это устройство. Этот параметр обязателен.
device random # Entropy device
Генератор случайных чисел для криптографической защиты.
device ether # Ethernet support
ether
необходим лишь в случае, если у вас есть сетевая карта. Он включает поддержку стандартного кода протокола Ethernet.
device sl # Kernel SLIP
sl
- это поддержка SLIP. SLIP был практически вытеснен PPP, который легче настраивается, лучше подходит для соединений модем-модем и имеет больше возможностей.
device ppp # Kernel PPP
Поддержка PPP в ядре для соединений dial-up. Также существует версия PPP, реализованного как приложение, использующее tun
, и предлагающее большую гибкость и большее количество возможностей, как, например, соединение при необходимости (наличии обращения к сети).
device tun # Packet tunnel.
Используется пользовательским программным обеспечением PPP. Обратитесь к разделу PPP этой книги за дальнейшей информацией.
device pty # Pseudo-ttys (telnet etc)
"псевдо-терминал" или имитированный порт для входа. Используется входящими telnet
и rlogin
-сессиями, приложением xterm и некоторыми другими приложениями, такими как Emacs.
device md # Memory disks
Псевдо-устройства дисков в памяти.
device gif # IPv6 and IPv4 tunneling
Поддержка туннелирования IPv6 через IPv4, IPv4 через IPv6, IPv4 через IPv4 и IPv6 через IPv6. Устройство gif
является "автоклонируемым", и будет срздавать файлы устройств по мере необходимости.
device faith # IPv6-to-IPv4 relaying (translation)
Это псевдо-устройство захватывает пакеты, которые были посланы ему и перенаправляет их даемону трансляции IPv4/IPv6.
# The `bpf' device enables the Berkeley Packet Filter. # Be aware of the administrative consequences of enabling this! # Note that 'bpf' is required for DHCP. device bpf # Berkeley packet filter
Фильтр пакетов Berkeley. Это псевдо-устройство позволяет переводить сетевые интерфейсы в "неразборчивый" (promiscuous) режим, в котором перехватывается любой пакет в широковещательной сети (например ethernet). Эти пакеты могут быть сохранены на диск и/или исследованы при помощи tcpdump(1).
Устройство bpf(4) также используется программой dhclient(8) для того, чтобы получить адрес шлюза по умолчанию и т.п. Если вы используете DCHP, не удаляйте эту опцию. |
# USB support device uhci # UHCI PCI->USB interface device ohci # OHCI PCI->USB interface device ehci # EHCI PCI->USB interface (USB 2.0) device usb # USB Bus (required) #device udbp # USB Double Bulk Pipe devices device ugen # Generic device uhid # Human Interface Devices device ukbd # Keyboard device ulpt # Printer device umass # Disks/Mass storage - Requires scbus and da device ums # Mouse device ural # Ralink Technology RT2500USB wireless NICs device urio # Diamond Rio 500 MP3 player device uscanner # Scanners # USB Ethernet, requires mii device aue # ADMtek USB Ethernet device axe # ASIX Electronics USB Ethernet device cdce # Generic USB over Ethernet device cue # CATC USB Ethernet device kue # Kawasaki LSI USB Ethernet device rue # RealTek RTL8150 USB Ethernet
Поддержка различных USB устройств.
# FireWire support device firewire # FireWire bus code device sbp # SCSI over FireWire (Requires scbus and da) device fwe # Ethernet over FireWire (non-standard!)
Поддержка различных устройств Firewire.
За дальнейшей информацией о дополнительных устройствах, поддерживаемых FreeBSD, обратитесь к файлу /usr/src/sys/i386/conf/NOTES.
8.6.1. Конфигурации с большим количеством оперативной памяти (PAE)
Машины с большим количеством оперативной памяти, в которых требуется более 4 гигабайт в пользовательском адресном пространстве и адресном пространстве ядра (User+Kernel Virtual Address, KVA) в обычном случае не смогут использовать более 4 гигабайт. Для решения этой проблемы Intel добавили поддержку 36-битной адресации в Pentium® Pro и более поздних моделях процессоров.
Расширение физического адресного пространства (PAE) в процессорах Intel® Pentium® Pro и более поздних позволяет использовать до 64 гигабайт оперативной памяти. FreeBSD имеет поддержку этой возможности посредством опции ядра PAE
, доступной во всех текущих версиях FreeBSD. В связи с ограничениями архитектуры Intel, не делается никакого различия между памятью ниже или выше 4 гигабайт. Память, размещенная выше 4 гигабайт, просто добавляется к доступной памяти.
Для того, чтобы включить PAE в ядре, просто добавьте приведенную строку в конфигурационный файл ядра:
options PAE
Поддержка PAE в FreeBSD существует только для процессоров Intel® IA-32. Также следует заметить, что PAE в FreeBSD не было полностью протестировано и должно считаться находящимся в состоянии бета-тестирования по сравнению с другими, стабильными возможностями FreeBSD. |
Поддержка PAE в FreeBSD имеет следующие ограничения:
Процесс не может получить доступ к более, чем 4 гигабайтам пространства VM.
Драйверы устройств, которые не используют интерфейс bus_dma(9), приведут к повреждению информации в ядре с включенным PAE. Не рекомендуется использовать такие драйверы. По этой причине в FreeBSD включен конфигурационный файл ядра PAE, из которого удалены все драйверы, о которых известно, что они не работают при включенной поддержке PAE.
Некоторые системные переменные определяют использование ресурсов памяти по количеству доступной физической памяти. Такие переменные могут привести к ненужному чрезмерному выделению памяти из-за особенностей работы системы PAE. Один из таких примеров - переменная
kern.maxvnodes
, которая управляет максимальным количеством vnode, разрешенных в ядре. Рекомендуется установить эту и подобные ей переменные вручную в адекватные значения.Возможно, понадобится увеличить пространство виртуальных адресов ядра (KVA) или уменьшить какую-либо переменную (см. выше), значение которой было неоправданно велико и могло привести к исчерпанию KVA. Для этого может быть использована опция ядра
KVA_PAGES
.
8.7. Решение проблем
Существует четыре категории проблем, которые могут возникнуть при сборке собственного ядра. Вот они:
- Не удаётся отработать команде
config
Если команда config(8) не может отработать, то, скорее всего, вы допустили где-нибудь маленькую ошибку. К счастью, config(8) выведет номер проблемной строки, поэтому вы можете быстро найти строку, содержащую ошибку. Например, если вы видите:
config: line 17: syntax error
Убедитесь, что опция введена верно путём сравнения с файлом GENERIC или другим источником.
- Не удаётся отработать команде
make
Если не удаётся отработать команде
make
, обычно это означает ошибку в описании конфигурации ядра, которая не достаточно тривиальна для того, чтобы config(8) мог обнаружить её. Опять-таки, просмотрите файл конфигурации, и, если вы все еще не можете решить проблему, напишите письмо в Список рассылки, посвящённый вопросам и ответам пользователей FreeBSD, включив в письмо файл конфигурации ядра. Скорее всего проблема будет решена быстро.- Ядро не загружается:
Если ваше новое ядро не загружается или ему не удаётся обнаружить ваши устройства - не паникуйте! К счастью, в FreeBSD существует отличный механизм для восстановления после установки несовместимого ядра. Просто выберите ядро, которое хотите загрузить, в загрузчике FreeBSD. Доступ к нему вы можете получить, когда система находится в стартовом меню. Выберите шестой пункт ("Escape to a loader prompt"), введите команду
boot kernel.old
, или используйте любое другое ядро, которое загрузится без проблем. Во время переконфигурирования ядра всегда полезно оставлять копию ядра, о котором известно, что оно рабочее.После загрузки с рабочим ядром вы можете проверить ваш файл конфигурации и попробовать собрать ядро опять. Очень полезным в данном случае окажется файл /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. Печать
9.1. Краткий обзор
FreeBSD можно использовать для печати на широком спектре принтеров, от старых матричных до новейших лазерных, без исключений, что позволяет создавать высококачественные распечатки из используемых приложений.
FreeBSD можно также сконфигурировать для работы в качестве сервера печати в сети; в этом качестве FreeBSD может получать задания печати от множества других компьютеров, включая другие компьютеры под управлением ОС FreeBSD, хосты Windows® и Mac OS®. FreeBSD будет гарантировать печать заданий по одному и может сохранять информацию о том, какие пользователи и машины выполняют основную часть печати, выдавать страницы-"баннеры", показывающие, кому принадлежит распечатка, и многое другое.
При прочтении этой главы вы узнаете:
Как конфигурировать спулер печати FreeBSD.
Как устанавливать фильтры печати для специфической обработки определенных заданий печати, включая преобразование поступающих на печать документов в форматы, которые понимает принтер.
Как включить при печати колонтитулы или выдачу страниц-баннеров.
Как печатать на принтеры, подключенные к другим компьютерам.
Как печатать на принтеры, подключенные непосредственно к сети.
Как задавать ограничения для принтера, включая ограничение размера заданий печати и запрет печати для отдельных пользователей.
Как сохранять статистическую информацию о печати и учитывать использование принтера.
Как решать проблемы печати.
Прежде чем читать эту главу, вы должны:
Знать, как сконфигурировать и установить новое ядро (Настройка ядра FreeBSD).
9.2. Введение
Для использования принтеров в ОС FreeBSD вы можете настроить их для работы с системой спулинга печати Беркли (Berkeley line printer spooling system), также известной как система спулинга LPD. Это - стандартная система управления принтером во FreeBSD. В этой главе представлена система спулинга LPD и описано ее конфигурирование.
Если вы уже знакомы с LPD или другой системой спулинга печати, вы можете сразу перейти к разделу Базовая настройка.
LPD управляет всеми аспектами работы принтеров хоста. Она отвечает за несколько вещей:
Она управляет доступом к непосредственно подключенным принтерам и принтерам, подключенным к другим хостам в сети.
Она позволяет пользователям посылать файлы на печать; эти данные называют заданиями.
Она предотвращает одновременный доступ к принтеру нескольких пользователей путем поддержки очереди для каждого принтера.
Она позволяет печатать страницы заголовка (их также называют баннерными или начальными страницами), чтобы пользователи могли легко находить распечатанные задания в пачке распечаток.
Она обеспечивает установку параметров взаимодействия для принтеров, подключенных к последовательным портам.
Она может отправлять задания по сети спулеру LPD на другом хосте.
Она может применять специальные фильтры для форматирования заданий для печати на разных языках описания страниц или задействования специфических возможностей принтера.
Она учитывает использование принтера.
С помощью файла конфигурации (/etc/printcap) и за счет предоставления специальных программ фильтрования, можно потребовать от системы LPD выполнять все или некоторые из перечисленных выше функций на широком спектре принтерного оборудования.
9.2.1. Зачем использовать спулер
Если вы - единственный пользователь системы, вы можете спросить, зачем возиться со спулером, если управление доступом, страницы заголовка или учет использования принтера вам не нужны. Хотя можно обеспечить непосредственный доступ к принтеру, в любом случае следует использовать спулер, поскольку:
LPD печатает задания в фоновом режиме; вам не придется ждать, пока данные будут скопированы на принтер.
LPD позволяет легко пропустить задание печати через фильтры для добавления заголовков с датой/временем или преобразования специального формата файлов (такого как TeX DVI) в формат, который понимает принтер. Вам не придется выполнять эти шаги вручную.
Многие свободно распространяемые и коммерческие программы, обеспечивающие возможность печати, обычно предполагают взаимодействие со спулером системы. Путем настройки системы спулинга вы упростите поддержку другого программного обеспечения, которое может быть добавлено в дальнейшем или уже установлено.
9.3. Основная настройка
Для использования принтеров с системой спулинга LPD, необходимо настроить как сам принтер, так и программное обеспечение LPD. Этот документ описывает два уровня настройки:
См. раздел Простая настройка принтера, чтобы узнать, как подключить принтер, объяснить LPD, как с ним взаимодействовать, и отправлять на принтер простые текстовые файлы.
См. раздел Расширенная настройка принтера, чтобы узнать, как печатать файлы множества специальных форматов, как печатать страницы заголовка, печатать по сети, управлять доступом к принтерам и учитывать использование принтера.
9.3.1. Простая настройка принтера
В этом разделе описано, как сконфигурировать принтер и программное обеспечение LPD для использования принтера. Здесь рассматриваются следующие вопросы:
В разделе Настройка оборудования представлены советы по подключению принтера к порту компьютера.
В разделе Настройка программного обеспечения показано, как настроить файл конфигурации спулера LPD (/etc/printcap).
Если вы настраиваете принтер, использующий для принятия заданий печати сетевой протокол, вместо локальных интерфейсов компьютера, см. раздел Принтеры с сетевыми интерфейсами.
Хотя этот раздел и назван "Простая настройка принтера", это, на самом деле, достаточно сложно. Заставить принтер работать с компьютером и спулером LPD - самая сложная часть. Расширенные опции, вроде выдачи страниц заголовков и учета использования, установить несложно, как только принтер заработает.
9.3.1.1. Настройка оборудования
В этом разделе описаны различные способы подключения принтера к ПК. Рассматриваются различные порты и кабели, а также параметры конфигурации ядра, которые может потребоваться установить, чтобы ОС FreeBSD могла взаимодействовать с принтером.
Если вы уже подключили ваш принтер и успешно печатали на него в другой операционной системе, можете перейти к разделу Настройка программного обеспечения.
9.3.1.1.1. Порты и кабели
Принтеры, которые продаются сегодня для использования на ПК, обычно поддерживают один или несколько из следующих интерфейсов:
Последовательные интерфейсы, также известные как RS-232, или COM-порты, используют для посылки данных на принтер последовательный порт компьютера. Последовательные интерфейсы широко распространены в компьютерной индустрии, кабели для них легко найти и просто сделать. Для последовательных интерфейсов иногда нужны специальные кабели, и для их использования может потребоваться настраивать достаточно сложные опции взаимодействия. Большинство последовательных портов ПК имеют максимальную скорость передачи 115200 бит/сек, поэтому печатать через них большие графические задания неудобно.
Параллельные интерфейсы используют параллельный порт компьютера для посылки данных на принтер. Параллельные интерфейсы широко распространены на рынке ПК и работают быстрее, чем последовательные RS-232. Кабели легко найти, но сделать самостоятельно сложнее. При использовании параллельных интерфейсов опции взаимодействия обычно задавать не надо, что делает их конфигурирование существенно проще.
Параллельные интерфейсы иногда называют интерфейсами "Centronics", по названию типа разъема на принтере.
Интерфейсы USB (сокращение от Universal Serial Bus - универсальная последовательная шина), могут работать на еще больших скоростях, чем параллельные или последовательные интерфейсы RS-232. Кабели для них - простые и дешевые. USB превосходит последовательный RS-232 и параллельный интерфейсы для печати, но не слишком хорошо поддерживается в UNIX®-системах. Обойти эту проблему можно, купив принтер с двумя интерфейсами, USB и параллельным, как у многих принтеров.
В общем случае, параллельные интерфейсы обычно обеспечивают только одностороннюю передачу (с компьютера на принтер), тогда как последовательные и USB поддерживают двустороннюю. Более новые параллельные порты (EPP и ECP) и принтеры могут взаимодействовать в обоих направлениях под FreeBSD, если используется кабель, соответствующий стандарту IEEE-1284.
Двустороннее взаимодействие с принтером через параллельный порт обычно выполняется одним из двух способов. Первый метод опирается на использование специально созданного драйвера принтера для FreeBSD, который поддерживает специфический язык данного принтера. Этот метод типичен для струйных принтеров и может использоваться для получения информации об уровне чернил и другой информации о состоянии. Второй метод используется, когда принтер поддерживает PostScript®.
Фактически, задания PostScript® являются программами, посылаемыми для выполнения принтеру; они вообще могут не выдавать результат на бумагу и возвращать его непосредственно компьютеру. PostScript® также использует двустороннее взаимодействие для сообщения компьютеру о проблемах, таких как ошибки в PostScript®-программе или замятие бумаги. Такая информация может пригодиться пользователям. Более того, лучший способ эффективного учета использования PostScript®-принтера требует двустороннего взаимодействия: вы запрашиваете у принтера значение счетчика страниц (сколько страниц напечатал принтер за все время существования), затем посылаете задание пользователя, затем снова запрашиваете значение его счетчика страниц. Вычитаем одно значение из другого, и узнаем, сколько бумаги потратил пользователь.
9.3.1.1.2. Параллельные порты
Для подключения принтера через параллельный интерфейс, соедините принтер и компьютер кабелем Centronics. Инструкции для принтера, для компьютера или обе должны полностью описывать эту процедуру.
Помните, какой параллельный порт компьютера вы использовали. Первый параллельный порт в ОС FreeBSD - ppc0; второй - ppc1, и так далее. Имена устройств для принтеров используют ту же схему: /dev/lpt0 для принтера на первом параллельном порту и т.д.
9.3.1.1.3. Последовательные порты
Для подключения принтера через последовательный интерфейс, соедините принтер с компьютером подходящим последовательным кабелем. Инструкции для принтера, для компьютера или обе должны полностью описывать эту процедуру.
Если вы не знаете, что такое "подходящий последовательный кабель", можете попробовать использовать один из следующих:
Модемный кабель соединяет каждый штырёк на одном конце кабеля напрямую с соответствующим штырьком на другом конце. Кабель такого типа также называют кабелем "DTE-to-DCE". *
Нуль-модемный кабель соединяет часть штырьков напрямую, другие - меняет (пересылку данных на приём данных, например), а некоторые - закорачивает на каждом разъеме. Кабель такого типа также называют кабелем "DTE-to-DTE" cable.
Кабель последовательного принтера, необходимый для некоторых редко используемых принтеров, похож на нуль-модемный кабель, но посылает часть сигналов на соответствующие штырьки, а не закорачивает их.
Вам надо также настроить эти параметры взаимодействия с принтером, обычно - через элементы управления на лицевой панели или переключатели (DIP switches) на принтере. Выберите максимальную скорость передачи bps
(бит в секунду, иногда - baud rate), которую могут поддерживать как компьютер, так и принтер. Выберите 7 или 8 битов данных; четность none, even или odd; и 1 или 2 стоп-бита. Также надо выбрать протокол управления передачей: none или XON/XOFF (также известный как "внутриполосный" или "программный"). Запомните выбранные установки для последующего конфигурирования программного обеспечения.
9.3.1.2. Настройка программного обеспечения
В этом разделе описана настройка программного обеспечения, необходимая для печати с помощью системы спулинга LPD в ОС FreeBSD.
Вот план действий, которые необходимо выполнить:
При необходимости, сконфигурировать в ядре поддержку порта, к которому подключен принтер; в разделе Конфигурирование ядра описано, что надо сделать.
Установить режим взаимодействия для параллельного порта, если используется параллельный порт; детали представлены в разделе Настройка режима взаимодействия для параллельного порта.
Проверить, может ли операционная система посылать данные на принтер. В разделе Проверка взаимодействия с принтером даны советы, как это сделать.
Настроить 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).
Для установки режима взаимодействия путем конфигурирования ядра:
Отредактируйте файл конфигурации ядра. Найдите запись
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).
Сохраните файл. Затем сконфигурируйте, соберите и установите ядро и перезагрузите систему. Подробнее см. в разделе конфигурирование ядра.
Для настройки режима взаимодействия с помощью утилиты lptcontrol(8):
Введите команду:
# lptcontrol -i -d /dev/lptN
для установки режима взаимодействия на основе прерываний для
lptN
.Введите команду:
# 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 взаимодействовать с принтером, подключенным к параллельному порту.
Для тестирования принтера на параллельном порту:
Станьте пользователем
root
с помощью команды su(1).Пошлите данные на принтер.
Если принтер может печатать обычный текст, используйте утилиту 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 взаимодействовать с принтером, подключенным к последовательному порту.
Для тестирования принтера на последовательном порту:
Станьте пользователем
root
с помощью команды su(1).Отредактируйте файл /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
Подключитесь к принтеру с помощью tip(1). Введите команду:
# tip printer
Если этот шаг не срабатывает, снова отредактируйте файл /etc/remote и попробуйте использовать устройство /dev/cuaaN вместо /dev/ttydN.
Пошлите данные на принтер.
Если принтер может печатать обычный текст, используйте утилиту 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/shared/misc/termcap и /etc/remote. Полная информация о формате представлена на странице справочного руководства cgetent(3).
Простое конфигурирование спулера включает следующие шаги:
Выберите имя (и несколько удобных псевдонимов) для принтера и поместите их в файл /etc/printcap; подробнее об именовании см. в разделе Именование принтера.
Отключите выдачу начальных страниц (которые по умолчанию выдаются), вставив характеристику
sh
; подробнее об этом см. в разделе Подавление выдачи начальных страниц.Создайте каталог для спулинга и укажите его местонахождение с помощью характеристики
sd
; подробнее об этом см. в разделе Создание каталога спулинга.Выберите специальный файл устройства /dev для использования с принтером и укажите его в файле /etc/printcap с помощью характеристики
lp
; подробнее об этом см. в разделе Выбор устройства для принтера. Кроме того, если принтер подключен к последовательному порту, настройте параметры взаимодействия с помощью характеристикиms#
, которая обсуждается в разделе Конфигурирование параметров взаимодействия для спулера.Установите фильтр для обычного текста; подробнее об этом см. в разделе Установка текстового фильтра.
Проверьте настройку, напечатав что-нибудь с помощью команды 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, и никому больше. Мы установим это для каталогов спулинга принтеров из нашего примера:
|
Наконец, надо сообщить системе 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/shared/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/shared/examples/printing. |