diff --git a/ru_RU.KOI8-R/books/handbook/kernelconfig/chapter.sgml b/ru_RU.KOI8-R/books/handbook/kernelconfig/chapter.sgml
index 88b6477c1d..259bfa90c6 100644
--- a/ru_RU.KOI8-R/books/handbook/kernelconfig/chapter.sgml
+++ b/ru_RU.KOI8-R/books/handbook/kernelconfig/chapter.sgml
@@ -1,1762 +1,1765 @@
JimMock
- Обновлено и реструктуризовано
+ Обновил и реструктурировал JakeHamby
- Предоставлено
+ Предоставил АлександромКоваленкоПереведено Настройка ядра FreeBSDКраткий обзорkernelсборка собственного ядра
- Ядро - это основная часть операционной системы &os;. Оно
+ Ядро — это основная часть операционной системы &os;. Оно
ответственно за управление памятью, параметры безопасности, работу с
сетью, доступ к дискам и многое другое. Несмотря на то, что &os;
становится всё более динамически конфигурируемой, иногда приходится
собирать собственное ядро.После прочтения этой главы вы узнаете:Почему вам может понадобиться сборка собственного ядра.Как написать файл конфигурации ядра или изменить
существующий.Как использовать файл конфигурации ядра для того, чтобы создать и
собрать новое ядро.Как установить новое ядро.Как создать записи в /dev, которые могут
оказаться необходимы.Что делать, если что-то не работает или работает не так, как
должно.Все команды, приводимые в этой главе в качестве примера,
должны выполняться от пользователя root.Зачем собирать собственное ядро?Традиционно в &os; использовалось так называемое
- монолитное ядро. Это означает, что ядро - это одна
+ монолитное ядро. Это означает, что ядро — это одна
большая программа, которая поддерживает фиксированный набор устройств и в
случае, если необходимо изменить его поведение, требуется сборка нового
ядра и перезагрузка компьютера уже с новым ядром.На сегодняшний день &os; быстро продвигается к модели, в которой
большая часть функциональности содержится в модулях, которые могут быть
при необходимости динамически загружены и выгружены из ядра. Это
позволяет ядру использовать устройства, которые внезапно
появились в системе (например, устройства PCMCIA в лэптопе) или добавлять
новую функциональность в ядро, которая не была необходима в момент
первоначальной сборки ядра. Такой подход известен как модульность
ядра.Несмотря на это, всё ещё иногда бывает необходимо, чтобы некоторая
функциональность была вкомпилирована в ядро статически. В некоторых
случаях это продиктовано тем, что эта функциональность настолько сильно
привязана к ядру, что не может быть динамически загружаемой. В других
случаях это может быть просто потому, что никто не уделил время
написанию динамически загружаемого модуля для этой
функциональности.
- Сборка собственного ядра - один из наиболее важных ритуалов, через который
+ Сборка собственного ядра — один из наиболее важных ритуалов, через который
должен пройти практически любой пользователь BSD. Несмотря на
длительность этого процесса, ваша &os; останется только в выигрыше. В
отличие от ядра GENERIC, которое должно поддерживать
широкий спектр аппаратного обеспечения, собственное ядро содержит поддержку
аппаратного обеспечения только вашего компьютера.
- Это может давать следующие плюсы:
+ Это может давать следующие преимущества:Меньшее время загрузки. Поскольку ядро будет пытаться определить
только то аппаратное обеспечение, которое установлено в вашем
компьютере, время, которое потребуется системе для загрузки,
может значительно уменьшиться.Уменьшение использования памяти. Собственное ядро часто использует меньше
памяти, чем ядро GENERIC, что очень важно,
- поскольку ядро всегда находиться в физической памяти. Именно по этой
+ поскольку ядро всегда находится в физической памяти. Именно по этой
причине собственное ядро особенно полезно при использовании систем с малым
объемом оперативной памяти.Поддержка дополнительного аппаратного обеспечения. Собственное ядро
- позволяет вам добавить поддержку таких устройств, поддержка
- которых отсутствует в ядре GENERIC.
+ позволяет вам добавить поддержку устройств,
+ отсутствующих в ядре GENERIC.
Сборка и установка собственного ядраkernelсборка / установкаВо-первых, давайте сделаем краткий обзор каталога, в котором будет
происходить сборка ядра. Все каталоги, которые будут упоминаться, будут
относительными по отношению к основному каталогу
/usr/src/sys, который также доступен как каталог
/sys. Этот каталог содержит множество подкаталогов,
представляющих собой различные части ядра, но наиболее важным для нас
будет каталог arch/conf,
в котором вы будете редактировать конфигурационный файл ядра и в котором
находится каталог compile, где будет
собираться ваше ядро. arch может быть
i386, alpha,
amd64, ia64,
powerpc, sparc64 или
pc98 (альтернативная ветвь аппаратного обеспечения,
популярная в Японии). Все, что находится внутри каталога определенной
архитектуры, относится только к этой архитектуре; остальной код является
машинно независимым и общим для всех платформ, на которые &os; может
быть потенциально
портирована. Обратите внимание на логическую структуру каталогов, в
которой каждое поддерживаемое устройство, каждая файловая система и
каждая опция размещается в своём собственном каталоге. Версии &os; до
5.X поддерживали только архитектуры i386,
alpha и pc98.В примерах этой главы подразумевается, что вы используете
архитектуру i386. Если это не так, измените каталоги, указанные
в примерах, в соответствии с архитектурой вашей системы.Если в вашей системе отсутствует каталог
/usr/src/sys, это означает, что исходные тексты
ядра не были установлены. Наиболее простой способ установить их -
- запустить /stand/sysinstall как
- root, выбрать
+ запустить sysinstall
+ (/stand/sysinstall в &os; версий старше,
+ чем 5.2) как root, выбрать
Configure, потом
Distributions, потом
src, потом sys.
Если вы испытываете отвращение к sysinstall и
у вас есть доступ к официальному &os; CDROM, вы также
можете установить исходные тексты при помощи командной строки:&prompt.root; mount /cdrom
&prompt.root; mkdir -p /usr/src/sys
&prompt.root; ln -s /usr/src/sys /sys
&prompt.root; cat /cdrom/src/ssys.[a-d]* | tar -xzvf -Затем, перейдите в каталог
arch/conf
- и скопируйте файл конфигурации GENERIC в
+ и скопируйте файл конфигурации GENERIC
в файл с выбранным вами именем. Например:&prompt.root; cd /usr/src/sys/i386/conf
&prompt.root; cp GENERIC MYKERNELПо традиции имя состоит из букв в верхнем регистре, и если
вы поддерживаете несколько компьютеров &os; на различном оборудовании,
хорошая идея добавлять это имя к имени хоста. Мы назвали ядро
MYKERNEL в этом примере.Помещение файла конфигурации ядра в /usr/src
может быть плохой идеей. Если вы испытываете проблемы,
их можно решить удалив /usr/src и начав
все с начала. После этого обычно требуется несколько секунд, чтобы
понять, что вы удалили собственный файл настройки ядра. Не
редактируйте непосредственно GENERIC, он может
быть также перезаписан и при следующем обновлении дерева исходных текстов,
и изменения ядра будут потеряны.Вы можете сохранить файл конфигурации ядра в другом месте,
а затем создать символическую ссылку на этот файл в каталоге
i386.Например:&prompt.root; cd /usr/src/sys/i386/conf
&prompt.root; mkdir /root/kernels
&prompt.root; cp GENERIC /root/kernels/MYKERNEL
&prompt.root; ln -s /root/kernels/MYKERNELТеперь отредактируйте файл MYKERNEL в своём
любимом текстовом редакторе. Если вы только начинаете, единственным
доступным редактором скорее всего будет vi,
- который слишком сложен для того, чтобы объяснить, как им пользоваться,
- здесь, но в библиографии перечислено
+ который слишком сложен для того, чтобы описать его здесь,
+ но в библиографии перечислено
множество книг, в которых его использование хорошо освещено. Однако &os;
предоставляет более простой редактор ee,
- который, если вы - новичок, подойдёт вам больше всего. Не стесняйтесь
+ который, если вы — новичок, подойдёт вам больше всего. Не стесняйтесь
изменять строки комментариев в начале файла, с тем, чтобы отобразить вашу
конфигурацию или изменения, которые вы сделали по сравнению с
GENERIC.SunOSЕсли вам приходилось собирать ядро для &sunos; или какой-либо другой
операционной системы типа BSD, многое из того, что содержится в этом
файле будет очень знакомо вам. Если же вы, напротив, использовали другую
операционную систему, такую как DOS, файл конфигурации
GENERIC может показаться вам крайне сложным, поэтому
следуйте инструкциям в разделе Конфигурационный файл медленно и
внимательно.Если вы синхронизируете дерево исходных текстов
с деревом проекта &os;, не забудьте свериться с файлом
/usr/src/UPDATING перед обновлением. В этом
файле описаны все важные вопросы и области исходного кода, требующие
особого внимания.
/usr/src/UPDATING всегда соответствует версии
ваших исходных текстов &os;, поэтому является более актуальным
источником информации, чем это руководство.Теперь вы должны скомпилировать ядро. Существует два способа, которые
позволяют это сделать. Какой из них выбрать, зависит от того, почему вам
понадобилось пересобирать ядро и версии &os;, которую вы
используете.Если вы установили только исходные тексты
ядра, используйте способ 1.Если вы используете &os; версии более ранней, чем 4.0 и вы
не обновляете систему до &os; 4.0 или выше,
используя make buildworld, используйте способ
1.Если вы собираете новое ядро, не обновляя исходные тексты
(возможно, для того, чтобы добавить новую опцию, например
IPFIREWALL), вы можете использовать любой
способ.Если вы пересобираете ядро как часть процесса
make buildworld, используйте способ 2.cvsupанонимный CVSCTMCVSанонимныйЕсли вы не обновляли дерево исходных текстов
с момента последнего успешного завершения цикла
buildworld-installworld,
(то есть не запускали CVSup,
CTM, или не использовали
anoncvs), возможно использование
последовательности
config, make depend,
make, make install.
Способ 1. Сборка ядра традиционным способомЗапустите &man.config.8; для того, чтобы сгенерировать исходные
тексты ядра.&prompt.root; /usr/sbin/config MYKERNELПерейдите в каталог, в котором будет собираться ядро.
Запущенный как показано выше &man.config.8; выведет имя этого
каталога.&prompt.root; cd ../compile/MYKERNELДля &os; версий более ранних, чем 5.0, вместо этого
используйте:&prompt.root; cd ../../compile/MYKERNELСоберите ядро.&prompt.root; make depend
&prompt.root; makeУстановите новое ядро.&prompt.root; make installСпособ 2. Сборка ядра новым способом.Перейдите в каталог /usr/src.&prompt.root; cd /usr/srcСоберите ядро.&prompt.root; make buildkernel KERNCONF=MYKERNELУстановите новое ядро.&prompt.root; make installkernel KERNCONF=MYKERNELВ &os; 4.2 и в более ранних, вам будет необходимо заменить
KERNCONF= на KERNEL=. 4.2-STABLE,
исходные тексты которой были обновлены до 2 февраля 2001 года, не
понимает параметра KERNCONF=./boot/kernel.oldНовое ядро будет скопировано в каталог /boot/kernel как
/boot/kernel/kernel, а старое ядро будет перемещено в
/boot/kernel.old/kernel.
Теперь перезагрузите систему для того,
чтобы использовать новое ядро. Если что-то пойдёт не так, вы
- можете обратиться к разделу Если
- что-то пошло не так в конце этой главы, который может оказаться
+ можете обратиться к разделу Решение проблем в конце
+ этой главы, который может оказаться
полезен. Не забудьте прочитать
- раздел, который объясняет как исправить то, что ядро не загружается.В &os; 4.X и более ранних, ядро устанавливается в
/kernel, модули в /modules, а старое ядро сохраняется в
/kernel.old. Другие файлы, относящиеся к
процессу загрузки, такие как загрузчик (&man.loader.8;) и его
конфигурационные файлы, размещаются в /boot.
Модули сторонних производителей могут быть помещены в
/modules, хотя пользователи
должны знать, что
очень важно, чтобы модули были синхронизированы с собранным ядром.
Модули, не рассчитанные на работу с собранным ядром, могут вызвать
нестабильность и некорректность работы.Если вы добавили новые устройства (такие, как звуковая карта) и
используете &os; 4.X или более ранние версии, то, возможно, вам
понадобится создать некоторые файлы устройств в каталоге
/dev перед тем, как вы
сможете их использовать.
За дополнительной информацией вы можете обратиться к разделу Создание файлов устройств далее в
этой главе.JoelDahlОбновил для &os; 5.X Конфигурационный файлядроNOTESядроLINTNOTESLINTядроконфигурационный файлФормат конфигурационного файла достаточно прост. Каждая строка
представляет собой ключевое слово и один или более аргументов. Для
простоты большинство строк содержат только один аргумент. Всё, что
следует за символом # является комментарием и
игнорируется. Следующие разделы описывают каждый параметр, в основном в
порядке, в котором они появляются в GENERIC, хотя
некоторые родственные параметры сгруппированы вместе в одном разделе
(например Работа с сетью), даже если на самом деле они разбросаны по
всему файлу GENERIC. За полным списком архитектурно-зависимых
параметров и устройств обратитесь к файлу NOTES
в том же каталоге, что и GENERIC. Архитектурно
независимые параметры находятся в
/usr/src/sys/conf/NOTES.NOTES не существует в &os; 4.X.
Детальное описание параметров и устройств из
GENERIC находится в файле
LINT. В 4.X LINT
служит двум целям: предоставить справочное руководство для
выбора параметров ядра при сборке ядра по умолчанию и
предоставить конфигурацию ядра с параметрами, установленными
в значения, отличные от значений по умолчанию (настолько
много параметров, насколько это возможно). Это было сделано
по той причине, что такая конфигурация хорошо помогала
(и все еще помогает) при тестировании нового кода и изменений
в существующем коде, поскольку этот код и изменения могут
конфликтовать с другими частями ядра. Однако, инфраструктура
конфигурации ядра в 5.X прошла через множество серьезных изменений;
Одно из таких изменений – перемещение параметров конфигурации
драйверов в hints, и теперь они могут быть
изменены и загружены динамически во время загрузки системы,
а в LINT их больше нет. По этой и другим
причинам LINT был переименован в
NOTES и в основном по-прежнему соответствует
своему назначению: информирование пользователей о доступных
параметрах.В &os; 5.X и более поздних версиях вы все еще можете создать
собираемый LINT, выполнив:&prompt.root; cd /usr/src/sys/i386/conf && make LINTkernelпример конфигурационного файлаЭто пример конфигурационного файла ядра
GENERIC с различными дополнительными комментариями,
которые могут понадобиться для ясности. Этот пример должен совпадать с вашей
копией в
/usr/src/sys/i386/conf/GENERIC
практически полностью.#
# GENERIC -- Generic kernel configuration file for &os;/i386
#
# For more information on this file, please read the handbook section on
# Kernel Configuration Files:
#
# http://www.&os;.org/doc/en_US.ISO8859-1/books/handbook/kernelconfig-config.html
#
# The handbook is also available locally in /usr/share/doc/handbook
# if you've installed the doc distribution, otherwise always see the
# &os; World Wide Web server (http://www.FreeBSD.org/) for the
# latest information.
#
# An exhaustive list of options and more detailed explanations of the
# device lines is also present in the ../../conf/NOTES and NOTES files.
# If you are in doubt as to the purpose or necessity of a line, check first
# in NOTES.
#
# $FreeBSD: /repoman/r/ncvs/src/sys/i386/conf/GENERIC,v 1.413 2004/08/11 01:34:18 rwatson Exp $Следующие параметры обязательны для любого ядра,
которое вы будете собирать:параметры ядраmachinemachine i386Это архитектура машины. Она должна быть одной из
следующих:
alpha, amd64,
i386, ia64,
pc98, powerpc, или
sparc64.параметры ядраcpucpu I486_CPU
cpu I586_CPU
cpu I686_CPUЭта опция указывает тип процессора, который используется в вашей
системе. В конфигурационном файле может быть несколько вхождений этой
опции (например, если вы не уверены, какой из типов процессора необходимо
использовать — I586_CPU или
I686_CPU), но для собственного ядра лучше указывать
только тот тип процессора, который установлен в вашей системе. Если вы
не уверены, какой тип необходимо использовать вам, вы можете
воспользоваться файлом /var/run/dmesg.boot, чтобы
увидеть протокол загрузки системы.параметры ядраcpu typeПоддержка типа I386_CPU все ещё существует в
исходных текстах &os;, но по умолчанию отключена в ветках -STABLE и
-CURRENT. Это означает, что для того, чтобы установить &os; на систему с
процессором i386, вы можете использовать следующие способы:Установить более раннюю версию &os; и пересобрать систему из
исходных текстов в соответствии с
.
- Собрать мир и ядро на более новой машине и установить на
+ Собрать систему и ядро на более новой машине и установить на
386 используя уже собранные файлы в /usr/obj
(за дополнительной информацией можете обратиться к ).Сделать собственный релиз &os;, который включает поддержку
I386_CPU в ядре установочного CD-ROM.Первый из этих способов, возможно, наиболее простой из всех
предложенных, но вам понадобится много дискового пространства, что может
быть затруднительно для систем класса 386.параметры ядраidentident GENERICЭтот параметр определяет метку ядра. Необходимо,
чтобы она соответствовала названию файла конфигурации ядра, например
MYKERNEL, если вы следовали инструкциям в предыдущих
примерах. Значение, которое вы присвоите параметру
ident будет выводиться в процессе загрузки, поэтому
полезно давать новым ядрам другие имена для того, чтобы отличать их от
обычного ядра (например, если вы хотите собрать экспериментальное
ядро).параметры ядраmaxusersmaxusers nПараметр maxusers определяет размеры многих важных
системных таблиц. Это число должно быть приблизительно равно количеству
пользователей, одновременно использующих вашу систему.Начиная с &os; 4.5, система автоматически настроит этот параметр
если в конфигурационном файле вы установили его в значение
0Алгоритм автоматической настройки
устанавливает maxusers равным количеству памяти в
системе, минимум 32 и максимум 384..
В &os; 5.X и выше, maxusers по умолчанию равен
0, если не установлено другое значение. Если вы
- используете &os; версии более ранней, чем 4.5 или хотите самостоятельно
+ используете &os; версии более ранней, чем 4.5, или хотите самостоятельно
управлять этим значением, рекомендуется устанавливать значение
maxusers равным минимум 4, особенно если вы
используете X Window System или компиляторы. Причина этого кроется в
том, что одной из основных таблиц, размер которой определяет
maxusers, является максимальное количество процессов,
которое устанавливается равным 20 + 16 * maxusers,
таким образом, если вы установите maxusers равным 1,
то получите возможность выполнять максимум 36 одновременных процессов,
включая 18 или около того процессов, которые система запускает при
загрузке, и 15 или около того вы создадите, когда запустите X Window
System. Даже такая простая задача, как чтение страницы справочной
системы (&man.man.1;), потребует запуска девяти процессов, для того,
чтобы использовать фильтры, распаковать и просмотреть её. Установка
maxusers в значение 64 позволит запускать до 1044
одновременных процессов, что должно быть достаточно для большинства
применений. Однако, если вы видите ошибку proc table
full, когда пытаетесь запустить программу или поддерживаете
- сервер с большим количеством пользователей (таким как ftp.FreeBSD.org), вы всегда можете увеличить это
число и пересобрать ядро.maxusersне ограничивает
количество пользователей, которые могут зайти на вашу машину. Он
просто устанавливает размеры различных таблиц в разумные значения,
учитывая максимальное количество пользователей, которое будет у вас в
системе и как много процессов будет запускать каждый из них. Параметр
ядра, который действительно ограничивает количество
одновременных удалённых сессий и окон X терминала,
это pseudo-device pty
16. С &os; 5.X, вам не нужно беспокоиться об
этом номере, поскольку драйвер &man.pty.4;
автоклонируемый; используйте в файле конфигурации
строку device pty.# Floating point support - do not disable.
device npx
- npx - это интерфейс к модулю операций с плавающей
+ npx — это интерфейс к модулю операций с плавающей
точкой в &os;, который может использовать как аппаратный сопроцессор, так
и программную эмуляцию. Этот параметр является
обязательным.# Pseudo devices
device loop # Network loopbackСтандартное устройство обратной связи для TCP/IP. Если вы запускаете
telnet или FTP на localhost (он же 127.0.0.1), то соединение пройдёт через это
устройство. Этот параметр обязателен. В
&os; 4.X вам потребуется использовать pseudo-device
loop.Все остальные параметры более или менее опциональны. Обращайте
внимание на информацию о каждой опции, которая размещается рядом с
ней.#To statically compile in device wiring instead of /boot/device.hints
#hints "GENERIC.hints" # Default places to look for devices.В &os; 5.X и более поздних &man.device.hints.5; используются для
настройки параметров драйверов устройств. Путь по умолчанию, который
&man.loader.8; будет проверять при загрузке -
/boot/device.hints. Используя опцию
hints вы можете вкомпилировать эти параметры
статически в ваше ядро. В этом случае не требуется создавать файл
device.hints в каталоге
/boot.#makeoptions DEBUG=-g # Build kernel with gdb(1) debug symbolsОбычный процесс сборки &os; не включает генерацию отладочной
информации при сборке ядра и удаляет большую часть вспомогательной
информации (symbols) после того как ядро слинковано для того, чтобы
сэкономить немного места. Если вы собираетесь проводить тестирование
ядер в ветви -CURRENT или разрабатывать собственные правки для ядра &os;,
- возможно вам будет нужно раскомментировать эту строку. Тем самым вы
+ возможно вам потребуется раскомментировать эту строку. Тем самым вы
включите использования опции , которая включает
генерацию отладочной информации &man.gcc.1;. Того же самого эффекта
можно добиться используя опцию &man.config.8; , в
случае, если вы используете традиционный способ сборки
ядра (обратитесь к за
дополнительной информацией).options SCHED_4BSD # 4BSD schedulerТрадиционный планировщик &os;. В зависимости от загруженности
- системы, вы можете повысить производительность системы, используя
+ системы, вы можете повысить производительность, используя
новый планировщик &os; ULE, который был специально разработан для
SMP, но отлично работает также и на однопроцессорных системах.
Если вы хотите попробовать этот планировщик, замените
SCHED_4BSD на SCHED_ULE в
файле конфигурации ядра.options INET # InterNETworkingПоддержка сетевых возможностей. Оставьте эту опцию включенной, даже
если вы не планируете подключаться к сети. Большинство программ требуют,
чтобы работал хотя бы интерфейс обратной связи (loopback) (т.е.
создание сетевых соединений внутри вашего ПК), так что эта опция в
принципе является обязательной.options INET6 # IPv6 communications protocolsВключает поддержку коммуникационных протоколов IPv6.options FFS # Berkeley Fast FilesystemВключает поддержку основной файловой системы. Не удаляйте эту опцию,
если вы планируете загружаться с жесткого диска.options UFS_ACL # Support for access control listsЭтот параметр, присутствующий только в &os; 5.X, включает в ядре
поддержку списков управления доступом (ACL). Основывается на
использовании расширенных атрибутов и UFS2, детальное
описание вы сможете найти в .
ACL включены по умолчанию и не должны выключаться в
- случае если они ранее использовались на файловой системе, так как это
+ случае, если они ранее использовались на файловой системе, так как это
удалит списки управления доступом и изменит то, как защищены файлы,
непредсказуемым образом.options UFS_DIRHASH # Improve performance on big directoriesЭта опция включает функциональность, которая повышает скорость
дисковых операций на больших каталогах в обмен на использование
дополнительной памяти. Для большого сервера или рабочей станции
рекомендуется оставить ее включенной, и выключить для системы, для
- которой более приоритетна память, чем скорость доступа к дискам, например
- сетевой экран (firewall).
+ которой более приоритетна память, чем скорость доступа к дискам,
+ например для брандмауэра.options SOFTUPDATES # Enable FFS Soft Updates supportЭтот параметр включает в ядре технологию Soft Updates, которая
повышает скорость записи на диски. Несмотря на то, что эта технология
включена в ядре, она должна быть включена для отдельных дисков.
Просмотрите вывод команды &man.mount.8; чтобы определить, включены ли
Soft Updates для дисков вашей системы. Если вы не увидите параметр
soft-updates, вам будет необходимо активировать его
при помощи команды &man.tunefs.8; (для существующих файловых систем) или
команды &man.newfs.8; (для новых файловых систем).options MD_ROOT # MD is a potential root deviceЭтот параметр включает поддержку использования дисков
в памяти для корневой файловой системы.параметры ядраNFSпараметры ядраNFS_ROOToptions NFSCLIENT # Network Filesystem Client
options NFSSERVER # Network Filesystem Server
options NFS_ROOT # NFS usable as /, requires NFSCLIENTСетевая файловая система. Если вы не планируете монтировать разделы
с файлового сервера &unix; через TCP/IP, вы можете исключить этот
параметр из конфигурационного файла ядра.параметры ядраMSDOSFSoptions MSDOSFS # MSDOS FilesystemФайловая система &ms-dos;. Если вы не собираетесь монтировать
форматированный в DOS раздел жесткого диска в момент загрузки, вы можете
безопасно закомментировать этот параметр. Необходимый модуль будет
- автоматически загружен когда вы в первый раз смонтируете раздел DOS, так,
- как это описано ниже. Также, замечательный пакет
+ автоматически загружен, когда вы в первый раз смонтируете раздел DOS, так,
+ как это описано ниже. Кроме того, замечательный пакет
emulators/mtools позволяет получить
доступ к DOS дискетам без необходимости монтировать и размонтировать их
(и не требует наличия MSDOSFS).options CD9660 # ISO 9660 FilesystemФайловая система ISO 9660 для компакт-дисков. Если у вас нет привода
CDROM или вы будете лишь изредка монтировать компакт-диски с данными,
закомментируйте эту строку, так как необходимый модуль будет загружен
автоматически при первом монтировании компакт-диска с данными. Для
использования звуковых компакт-дисков эта файловая система не
потребуется.options PROCFS # Process filesystemФайловая система процессов. Это виртуальная файловая
система монтируемая в /proc, которая позволяет таким
приложениям, как &man.ps.1; выдавать вам больше информации о запущенных
процессах. В &os; 5.X и выше, использование PROCFS не
требуется, так как большинство мониторинговых и отладочных инструментов
было адаптировано для работы без PROCFS: в отличие
от &os; 4.X, новые системы &os; 5.X по умолчанию не монтируют файловую
систему процессов. Более того,
ядра 6.X-CURRENT, которые используют PROCFS, должны
также включать поддержку PSEUDOFS:options PSEUDOFS # Pseudo-filesystem frameworkPSEUDOFS недоступна в &os; 4.X.options GEOM_GPT # GUID Partition Tables.Этот параметр делает возможным наличие большого количества
разделов на одном диске.options COMPAT_43 # Compatible with BSD 4.3 [KEEP THIS!]Совместимость с 4.3BSD. Не выключайте эту опцию; некоторые
приложения будут вести себя странно, если этой опции не будет в
ядре.options COMPAT_FREEBSD4 # Compatible with &os;4Эта опция требуется в &os; 5.X для платформ &i386; и Alpha для
поддержки приложений, собранных на более старых версиях &os;, которые
используют старые интерфейсы вызовов. Рекомендуется использовать данную
опцию на всех системах на платформах &i386; и Alpha, на которых могут
запускаться старые приложения; платформы, поддержка которых появилась
только в &os; 5.X, например ia64 и &sparc64;, не требуют этой
опции.options SCSI_DELAY=15000 # Delay (in ms) before probing SCSIЭтот параметр заставляет ядро приостановиться на 15 секунд перед тем,
как идентифицировать каждое устройство SCSI в вашей системе. Если у вас
установлены только жесткие диски IDE, вы можете игнорировать эту опцию, в
противном случае, возможно, вы захотите уменьшить это число, например до
5 секунд, для того, чтобы ускорить загрузку. Естественно, что если вы
сделаете это, а у &os; появятся проблемы с распознанием ваших устройств
SCSI, необходимо будет увеличить этот параметр.options KTRACE # ktrace(1) supportВключает поддержку трассировки процессов, что удобно при
отладке.options SYSVSHM # SYSV-style shared memoryЭтот параметр предоставляет поддержку разделяемой памяти System V.
- Наиболее распространенное применение этого - расширение XSHM в X, которое
+ Наиболее распространенное применение этого — расширение XSHM в X, которое
многие приложения, интенсивно работающие с графикой, будут автоматически
использовать для повышения скорости работы. Если вы используете X,
эта опция будет необходима.options SYSVSEM # SYSV-style semaphoresПоддержка семафоров System V. Не настолько часто используемая
возможность, но в ядро добавляет всего несколько сотен байт.options SYSVMSG # SYSV-style message queuesПоддержка сообщений System V. Опять-таки, этот параметр
добавляет в ядро всего лишь несколько сотен байт.Команда &man.ipcs.1; с параметром покажет
все процессы, которые используют любую из этих возможностей
System V.options _KPOSIX_PRIORITY_SCHEDULING # POSIX P1003_1B real-time extensionsРасширения реального времени, добавленные 1993 &posix;. Определенные
приложения из коллекции используют их, например
&staroffice;.options KBD_INSTALL_CDEV # install a CDEV entry in /devЭтот параметр относится к клавиатуре. Он добавляет CDEV
в /dev.options AHC_REG_PRETTY_PRINT # Print register bitfields in debug
# output. Adds ~128k to driver.
options AHD_REG_PRETTY_PRINT # Print register bitfields in debug
# output. Adds ~215k to driver.Распечатка регистров для облегчения отладки.options ADAPTIVE_GIANT # Giant mutex is adaptive.Giant — имя механизма защиты (спящего
мьютекса) для крупных наборов ресурсов ядра. На нынешний момент
Giant представляется фактически непригодным для использования в связи
с серьезными потерями в производительности, и активно заменяется
на механизмы, защищающие отдельные ресурсы ядра. Параметр
ADAPTIVE_GIANT включает Giant в число адаптивных
мьютексов: в случае, когда нить ядра нуждается в Giant, а он уже
захвачен нитью, выполняющейся на другом процессоре, первая нить
будет продолжать выполнение и ждать освобождения Giant. В норме
нить должна была бы уснуть, пока не настанет очередной момент ее
выполнения. Если вы не уверены, оставьте этот параметр в покое.kernel optionsSMPdevice apic # I/O APICУстройство apic разрешает использование набора I/O APIC для
распределения прерываний. Оно может быть использовано как с
однопроцессорными, так и с многопроцессорными ядрами (для последних
наличие apic является обязательным). Для поддержки многопроцессорности
добавьте строку options SMP.device isaВсе компьютеры, поддерживаемые &os;, имеют хотя бы одно устройство ISA.
Не удаляйте эту строку, даже если в вашем компьютере нет слотов ISA.
Для архитектуры IBM PS/2 (Микроканальная Архитектура (MCA)), &os;
предоставляет ограниченную поддержку данной шины. За дальнейшей
информацией о поддержке MCA обратитесь к файлу
/usr/src/sys/i386/conf/NOTES.device eisaВключите эту опцию если у вас материнская плата EISA. Это включает
автоопределение и конфигурирование поддержки всех устройств на шине
EISA.device pciВключите этот параметр, если у вас материнская плата с поддержкой
PCI. Это включит автоопределение карт PCI и проксирование из шины PCI в
шину ISA.device agpВключите эту опцию, если у вас есть AGP карта в системе. Это включит
поддержку AGP и AGP GART для тех карт, которые поддерживают эту
возможность.# Floppy drives
device fdcКонтроллер флоппи-диска.# ATA and ATAPI devices
device ataЭтот драйвер поддерживает все устройства ATA и ATAPI. Вам необходима
только одна строка device ata в ядре для того, чтобы
обнаружить все PCI устройства ATA/ATAPI в современных машинах.device atadisk # ATA disk drivesЭта строка необходима вместе с device ata для
поддержки дисков ATA.device ataraid # ATA RAID drivesЭта строка необходима вместе с device ata
для поддержки дисков ATA RAID.
device atapicd # ATAPI CDROM drivesПоддержка приводов ATAPI CDROM. Используется вместе с
device ata.device atapifd # ATAPI floppy drivesПоддержка флоппи-приводов ATAPI. Используется вместе с
device ata.device atapist # ATAPI tape drivesПоддержка ленточных приводов ATAPI (стримеров). Используется вместе с
device ata.options ATA_STATIC_ID # Static device numberingЗаставляет драйвер нумеровать устройства статически;
в противном случае происходит динамическая нумерация.# SCSI Controllers
device ahb # EISA AHA1742 family
device ahc # AHA2940 and onboard AIC7xxx devices
device ahd # AHA39320/29320 and onboard AIC79xx devices
device amd # AMD 53C974 (Teckram DC-390(T))
device isp # Qlogic family
device mpt # LSI-Logic MPT-Fusion
#device ncr # NCR/Symbios Logic
device sym # NCR/Symbios Logic (newer chipsets)
device trm # Tekram DC395U/UW/F DC315U adapters
device adv # Advansys SCSI adapters
device adw # Advansys wide SCSI adapters
device aha # Adaptec 154x SCSI adapters
device aic # Adaptec 15[012]x SCSI adapters, AIC-6[23]60.
device bt # Buslogic/Mylex MultiMaster SCSI adapters
device ncv # NCR 53C500
device nsp # Workbit Ninja SCSI-3
device stg # TMC 18C30/18C50Контроллеры SCSI. Закомментируйте те, которых у вас в системе нет.
Если у вас в системе исключительно IDE устройства, вы можете удалить все
эти строки.# SCSI peripherals
device scbus # SCSI bus (required for SCSI)
device ch # SCSI media changers
device da # Direct Access (disks)
device sa # Sequential Access (tape etc)
device cd # CD
device pass # Passthrough device (direct SCSI access)
device ses # SCSI Environmental Services (and SAF-TE)Периферийные устройства SCSI. Опять-таки, закомментируйте те,
- которых у вас в системе нет или, если у вас в наличии исключительно IDE,
+ которых у вас в системе нет, или, если у вас в наличии исключительно IDE,
можете удалить все.USB &man.umass.4; драйвер (и некоторые другие драйверы) используют
подсистему SCSI, хотя и не являются настоящими SCSI устройствами.
Следовательно, вам необходимо сохранить поддержку SCSI, если
какой-либо из этих драйверов включен в конфигурацию ядра.# RAID controllers interfaced to the SCSI subsystem
device amr # AMI MegaRAID
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 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 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 vga # VGA video card driverДрайвер видеокарты.# splash screen/screen saver
device splash # Splash screen and screen saver supportЗаставка при загрузке. Хранители экрана также требуют этого
устройства. В &os; 4.X используйте строку
pseudo-device splash.# syscons is the default console driver, resembling an SCO console
device sc
- 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 cursorVT220-совместимый драйвер консоли, обратно совместимый с VT100/102.
Он работает лучше на некоторых лэптопах, у которых возникают проблемы
несовместимости с sc. Также, установите переменную
окружения TERM в значение vt100 или
vt220. Этот драйвер также может быть полезен в
случаях подключения к большому количеству различных машин через сеть, на
которых параметры для устройства sc для
termcap или terminfo могут
отсутствовать — vt100 присутствует практически
на любой платформе.# Power management support (see NOTES for more options)
#device apmПоддержка Advanced Power Management. Чаще всего используется в
лэптопах, хотя в ядре GENERIC &os; 5.X
и выше отключена по умолчанию.# Add suspend/resume support for the i8254.
device pmtimerУстройство таймера для управления энергопотреблением, APM и
ACPI.# PCCARD (PCMCIA) support
# PCMCIA and cardbus bridge support
device cbb # cardbus (yenta) bridge
device pccard # PC Card (16-bit) bus
device cardbus # CardBus (32-bit) busПоддержка PCMCIA. Включите ее, если вы используете лэптоп.# Serial (COM) ports
device sio # 8250, 16[45]50 based serial portsЧетыре последовательных порта, которые известны как
COM порты
в мире &ms-dos;/&windows;Если у вас есть внутренний модем на COM4 и последовательный порт
COM2, вам понадобится поменять IRQ модема на 2 (по непонятным
техническим причинам IRQ2 = IRQ9) для того, чтобы получить к нему
доступ из &os;. Если у вас есть многопортовая карта с
последовательными портами, ознакомьтесь с &man.sio.4; чтобы узнать
корректные значения для добавления в
/boot/device.hints. Некоторые видеокарты (в частности
те, что используют чипы S3) используют адреса ввода/вывода в форме
0x*2e8 и, так как многие дешевые последовательные
карты не полностью раскодируют шестнадцатибитное пространство адресов
ввода/вывода, они конфликтуют с этими картами, в итоге COM4 оказывается
практически недоступным.Каждый последовательный порт требует уникального IRQ (кроме тех
случаев, когда вы используете мультипортовую карту, которая
поддерживает совместное использование прерываний), поэтому значения
IRQ по умолчанию для COM3 и
COM4 не могут быть использованы.# Parallel port
device ppcИнтерфейс параллельного порта на шине ISA.device ppbus # Parallel port bus (required)Поддержка шины параллельного порта.device lpt # PrinterПоддержка принтеров на параллельном порту.Все три последних устройства необходимы для поддержка принтеров на
параллельном порту.device plip # TCP/IP over parallelДрайвер TCP/IP через параллельный порт.device ppi # Parallel port interface deviceПоддержка ввода/вывода общего назначения (geek port) +
IEEE1284 ввода/вывода.#device vpo # Requires scbus and dazip driveДрайвер привода Iomega Zip. Требует наличия scbus
и da. Наилучшая производительность достигается с
портами в режиме EPP 1.9.#device pucРаскомментируйте это устройство, если у вас есть
простая последовательная или параллельная
PCI карта, поддерживаемая драйвером &man.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-совместимые передатчики или реализуют
интерфейс управления передатчиком, который имитирует MII. Добавление
device miibus в конфигурационный файл ядра включает
- поддержку стандартный API miibus и все драйверы PHY, включая стандартный
+ поддержку стандартного API miibus и всех драйверов PHY, включая стандартный
для тех PHY, которые не обрабатываются специфическим образом конкретным
драйвером.device dc # DEC/Intel 21143 and various workalikes
device miibus # MII bus support
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 pcn # AMD Am79C97x PCI 10/100 (precedence over 'lnc')
device re # RealTek 8139C+/8169/8169S/8110S
device rl # RealTek 8129/8139
device sf # Adaptec AIC-6915 (Starfire)
device sis # Silicon Integrated Systems SiS 900/SiS 7016
device sk # SysKonnect SK-984x & SK-982x gigabit Ethernet
device ste # Sundance ST201 (D-Link DFE-550TX)
device ti # Alteon Networks Tigon I/II gigabit Ethernet
device tl # Texas Instruments ThunderLAN
device tx # SMC EtherPower II (83c170 EPIC)
device vr # VIA Rhine, Rhine II
device wb # Winbond W89C840F
device xl # 3Com 3c90x (Boomerang, Cyclone)Драйвера, которые используют контроллер шины MII.# ISA Ethernet NICs. pccard NICs included.
device cs # Crystal Semiconductor CS89x0 NIC
# 'device ed' requires 'device miibus'
device ed # NE[12]000, SMC Ultra, 3c503, DS8390 cards
device ex # Intel EtherExpress Pro/10 and Pro/10+
device ep # Etherlink III based cards
device fe # Fujitsu MB8696x based cards
device ie # EtherExpress 8/16, 3C507, StarLAN 10 etc.
device lnc # NE2100, NE32-VL Lance Ethernet cards
device sn # SMC's 9000 series of Ethernet chips
device xe # Xircom pccard Ethernet
# ISA devices that use the old ISA shims
#device leДрайвера сетевых карт ISA. Ознакомьтесь с файлом
/usr/src/sys/i386/conf/NOTES,
чтобы узнать, какие
- сетевые карты поддерживаются каким драйвером.
+ сетевые карты каким драйвером поддерживаются.# Wireless NIC cards
device wlan # 802.11 support
device an # Aironet 4500/4800 802.11 wireless NICs.
device awi # BayStack 660 and others
device wi # WaveLAN/Intersil/Symbol 802.11 wireless NICs.
#device wl # Older non 802.11 Wavelan wireless NIC.Поддержка различных беспроводных карт.device mem # Memory and kernel memory devicesУстройства системной памяти.device io # I/O deviceЭтот параметр позволяет процессу получение привилегий
ввода/вывода. Он полезен для написания пользовательских
программ, работающих с оборудованием непосредственно. Необходим
для работы X Window system.device random # Entropy deviceГенератор случайных чисел для криптографической защиты.device ether # Ethernet supportether необходим лишь в случае, если у вас есть
сетевая карта. Он включает поддержку стандартного кода протокола
Ethernet. В &os; 4.X используйте строку pseudo-device
ether.device sl # Kernel SLIP
- sl - это поддержка SLIP. SLIP был практически
+ sl — это поддержка SLIP. SLIP был практически
вытеснен PPP, который легче настраивается, лучше подходит для соединений
модем-модем и имеет больше возможностей.
В &os; 4.X используйте строку
pseudo-device sl.device ppp # Kernel PPPПоддержка PPP в ядре для соединений dial-up. Также существует версия
- PPP, реализованного как приложение использующее tun и
- предлагает большую гибкость и большее количество возможностей, как,
+ PPP, реализованного как приложение, использующее tun, и
+ предлагающее большую гибкость и большее количество возможностей, как,
например, соединение при необходимости (наличии обращения к сети).
В &os; 4.X используйте строку pseudo-device
ppp.device tun # Packet tunnel.Используется пользовательским программным обеспечением PPP.
- Ознакомьтесь с
- разделом PPP этой книги за дальнейшей
+ Обратитесь к
+ разделу PPP этой книги за дальнейшей
информацией. В &os; 4.X используйте строку pseudo-device
tun.
device pty # Pseudo-ttys (telnet etc)псевдо-терминал или имитированный порт для входа.
Используется входящими telnet и
rlogin-сессиями, приложением
xterm и некоторыми другими приложениями,
такими как Emacs.В &os; 4.X
используйте строку pseudo-device pty
number.
Число после pty определяет
количество pty, которое необходимо создать. Если вам
необходимо более, чем стандартное (16) количество окон
xterm и/или удаленных входов, увеличьте это
число в соответствии с вашими потребностями, но не более чем до
256.device md # Memory disksПсевдоустройства дисков в памяти. В &os; 4.X используйте
строку pseudo-device mddevice gif # IPv6 and IPv4 tunnelingПоддержка туннелирования IPv6 через IPv4, IPv4 через IPv6, IPv4 через
IPv4 и IPv6 через IPv6. Начиная с &os; 4.4 устройство
gif является автоклонируемым и вы
должны использовать строку pseudo-device gif.
Более ранним версиям &os; 4.X требуется номер, например
pseudo-device gif 4.device faith # IPv6-to-IPv4 relaying (translation)Это псевдоустройство захватывает пакеты, которые были посланы ему и
- перенаправляет их демону трансляции IPv4/IPv6. В &os; 4.X
+ перенаправляет их даемону трансляции IPv4/IPv6. В &os; 4.X
используйте строку pseudo-device faith 1# The `bpf' device enables the Berkeley Packet Filter.
# Be aware of the administrative consequences of enabling this!
device bpf # Berkeley packet filterФильтр пакетов Berkeley. Это псевдоустройство позволяет переводить
сетевые интерфейсы в неразборчивый (promiscuous) режим, в
котором перехватывается любой пакет в широковещательной сети (например
ethernet). Эти пакеты могут быть сохранены на диск и/или исследованы при
помощи &man.tcpdump.1;. В &os; 4.X используйте строку
pseudo-device bpf.Устройство &man.bpf.4; также используется программой
&man.dhclient.8; для того, чтобы получить адрес шлюза по умолчанию и
т.п. Если вы используете DCHP, не удаляйте эту опцию.# USB support
device uhci # UHCI PCI->USB interface
device ohci # OHCI PCI->USB interface
device usb # USB Bus (required)
#device udbp # USB Double Bulk Pipe devices
device ugen # Generic
device uhid # Human Interface Devices
device ukbd # Keyboard
device ulpt # Printer
device umass # Disks/Mass storage - Requires scbus and da
device ums # Mouse
device urio # Diamond Rio 500 MP3 player
device uscanner # Scanners
# USB Ethernet, requires mii
device aue # ADMtek USB Ethernet
device axe # ASIX Electronics USB Ethernet
device 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.За дальнейшей информацией о дополнительных устройствах,
поддерживаемых &os;, обратитесь к файлу
/usr/src/sys/i386/conf/NOTES.Конфигурации с большим количеством оперативной памяти
(PAE)
Расширения физического адресного пространства (Physical Address
Extensions (PAE))
Конфигурации с большим количеством оперативной памяти
Машины с большим количеством оперативной памяти, в которых требуется
более 4 гигабайт в пользовательском адресном пространстве и адресном
пространстве ядра (User+Kernel Virtual Address, KVA)
в обычном случае не смогут использовать более 4
гигабайт. Для решения этой проблемы Intel добавили поддержку 36-битной
адресации в &pentium; Pro и более поздних моделях процессоров.Расширение физического адресного пространства
(PAE) в процессорах &intel; &pentium; Pro и более
поздних позволяет использовать до 64 гигабайт оперативной памяти. &os;
- имеет поддержку для этой возможности посредством опции ядра
- , доступной в &os; 4.9-RELEASE и &os; 5.1-RELEASE и
+ имеет поддержку этой возможности посредством опции ядра
+ , доступной в &os; 4.9-RELEASE, &os; 5.1-RELEASE и
более поздних. В связи с ограничениями архитектуры Intel, не делается
никакого различия между памятью ниже или выше 4 гигабайт. Память,
размещенная выше 4 гигабайт, просто добавляется к доступной памяти.Для того, чтобы включить PAE в ядре, просто
добавьте приведенную строку в конфигурационный файл ядра:options PAEПоддержка PAE в &os; существует только для
процессоров &intel; IA-32. Также следует заметить, что
PAE в &os; не было полностью протестировано и должно
считаться находящимся в состоянии бета-тестирования по сравнению с
другими, стабильными возможностями &os;.Поддержка PAE в &os; имеет следующие
ограничения:Процесс не может получить доступ к более, чем 4 гигабайтам
пространства VM.KLD модули не могут быть загружены в ядро с
включенной поддержкой PAE из-за разницы в
окружении для сборки модулей и самого ядра.Драйверы устройств, которые не используют интерфейс
- &man.bus.dma.9; приведут к повреждению информации в ядре с включенным
- PAE. Не рекомендуется использовать такие драйвера.
+ &man.bus.dma.9;, приведут к повреждению информации в ядре с включенным
+ PAE. Не рекомендуется использовать такие драйверы.
По этой причине в &os; 5.X включен конфигурационный файл ядра
PAE, из которого удалены все драйверы, о которых
известно, что они не работают при включенной поддержке
PAE.Некоторые системные переменные определяют использование ресурсов
памяти по количеству доступной физической памяти. Такие переменные
могут привести к ненужному чрезмерному выделению памяти из-за
особенностей работы системы PAE. Один из таких
- примеров - переменная , которая
- управляет максимальным количеством vnode разрешенных в ядре.
- Рекомендуется установить такую и подобные ей переменные вручную в
+ примеров — переменная , которая
+ управляет максимальным количеством vnode, разрешенных в ядре.
+ Рекомендуется установить эту и подобные ей переменные вручную в
адекватные значения.Возможно, понадобится увеличить пространство виртуальных адресов
ядра (KVA) или уменьшить какую-либо переменную (см.
выше), значение которой было неоправданно велико и могло привести к
исчерпанию KVA. Для этого может быть использована
опция ядра .В случае сомнений относительно производительности и стабильности
рекомендуется обратиться к странице руководства &man.tuning.7;. Страница
руководства &man.pae.4; содержит свежую информацию о поддержке
PAE в &os;.Создание файлов устройствфайлы устройствMAKEDEVЕсли вы работаете с &os; 5.0 или старше, вы можете
пропустить этот раздел. Эти версии используют &man.devfs.5; для выделения
файлов устройств прозрачно для пользователя.Практически все устройства в ядре имеют соответствующий файл,
- называемый node в каталоге /dev. Они
+ называемый node, в каталоге /dev. Они
выглядят как обычные файлы, но на самом деле это специальные
точки входа в ядро, которые необходимы приложениям для
- доступа к устройствам. Скрипт для /bin/sh
+ доступа к устройствам. Скрипт
/dev/MAKEDEV, который выполняется при первой
установке операционной системы, создает практически все поддерживаемые
файлы устройств. Однако он не создаёт их все, таким
образом, когда вы добавляете поддержку нового устройства, следует
убедиться, что соответствующие файлы есть в /dev, и
если их там нет, создать их. Вот простой пример:Предположим, вы добавили поддержку привода IDE CD-ROM в ядро.
Строка, которую вы добавили:device acd0Это означает, что вам необходимо проверить наличие файлов, название
которых начинаются строкой acd0 в каталоге
/dev, за которой, возможно, следует буква, например
c, или предшествует r, что
означает, что это сырое (raw) устройство, которое
используется для прямого доступа к аппаратному устройству. Если
оказывается, что таких файлов в каталоге нет, вы должны перейти в
каталог /dev и набрать:MAKEDEV&prompt.root; sh MAKEDEV acd0Когда скрипт завершит работу, вы увидите, что файлы
acd0c и racd0c созданы,
соответственно скрипт отработал корректно.Для звуковых карт нижеследующая команда создает необходимые
файлы:&prompt.root; sh MAKEDEV snd0Если вы создаете файлы устройств для таких устройств, как звуковые
карты и если другие люди имеют доступ к вашей машине, было бы не лишним
защитить их от использования извне при помощи добавления их в файл
/etc/fbtab. За дальнейшей информацией обратитесь
к странице руководства &man.fbtab.5;.Следуйте этой простой процедуре для любых других устройств, которые
отсутствуют в ядре GENERIC и которые не имеют
соответствующих файлов в /dev.Все контроллеры SCSI используют одинаковый набор файлов в
- /dev, поэтому вам не нужно создавать их. Также,
+ /dev, поэтому вам не нужно создавать их. Кроме того,
сетевые карты и псевдоустройства SLIP и PPP не имеют вхождений в
/dev, поэтому и о них вы не должны
беспокоиться.
- Если что-то пошло не так
+ Решение проблемСуществует пять категорий проблем, которые могут возникнуть при
сборке собственного ядра. Вот они:Не удаётся отработать команде config:Если команда &man.config.8; не может отработать, то, скорее всего,
- вы допустили где-нибудь маленькую ошибку. К счастью &man.config.8;
+ вы допустили где-нибудь маленькую ошибку. К счастью, &man.config.8;
выведет номер проблемной строки, поэтому вы можете быстро найти
строку, содержащую ошибку. Например, если вы видите:config: line 17: syntax errorУбедитесь, что опция введена верно путём сравнения с файлом
GENERIC или другим источником.Не удаётся отработать команде make:Если не удаётся отработать команде make, обычно
это означает ошибку в описании конфигурации ядра, которая не достаточно
тривиальна для того, чтобы &man.config.8; мог обнаружить её.
- Опять-таки, просмотрите файл конфигурации и, если вы все еще не можете
- решить проблему, напишите письмо в &a.questions; включив в письмо файл
+ Опять-таки, просмотрите файл конфигурации, и, если вы все еще не можете
+ решить проблему, напишите письмо в &a.questions;, включив в письмо файл
конфигурации ядра. Скорее всего проблема будет решена быстро.Не удаётся установить новое ядро:Если ядро собралось без проблем, но не удалось его установить
(команда make install или make
installkernel сообщила об ошибке), первое, что необходимо
проверить, не запущена ли ваша система с уровнем безопасности 1 или
выше (обратитесь к &man.init.8;). Процедура установки пробует снять
флаг неизменяемости с текущего ядра и установить этот флаг для нового
ядра. Так как на уровне безопасности 1 и выше запрещено снятие флага
неизменяемости для всех файлов в системе, установка должна
производиться на уровне безопасности 0 и ниже.
- Линия выше применима только к &os; 4.X и более ранним версиям.
+ Информация выше применима только к &os; 4.X и более ранним версиям.
&os; 5.X, как и более поздние версии, не устанавливает этот флаг
на ядро и ошибка при установке ядра возможно указывает на более
фундаментальную проблему.Ядро не загружается:Если ваше новое ядро не загружается или ему не удаётся обнаружить
- ваши устройства - не паникуйте! К счастью, в &os; существует отличный
+ ваши устройства — не паникуйте! К счастью, в &os; существует отличный
механизм для восстановления после установки несовместимого ядра.
- Просто выберите ядро, которое хотите загрузить в загрузчике &os;. К
- нему вы можете получить доступ, когда система делает обратный отсчёт от
+ Просто выберите ядро, которое хотите загрузить, в загрузчике &os;.
+ Доступ к нему вы можете получить, когда система делает обратный
+ отсчёт от
10 в меню загрузки. Нажмите любую клавишу, кроме Enter,
введите unload и наберите
boot /boot/kernel.old/kernel,
или используйте любое
другое ядро, которое загрузится без проблем. Во время
переконфигурирования ядра всегда полезно оставлять копию ядра, о
котором известно, что оно рабочее.После загрузки с рабочим ядром вы можете проверить ваш файл
конфигурации и попробовать собрать ядро опять. Очень полезным в данном
случае окажется файл /var/log/messages, в котором,
среди других записей, имеются сообщения ядра от каждой успешной загрузки.
Также, команда &man.dmesg.8; выведет сообщения ядра от текущей
загрузки.Если у вас возникли проблемы со сборкой ядра, убедитесь, что вы
сохранили ядро GENERIC или другое рабочее ядро
под другим именем, чтобы оно не было удалено при следующей сборке. Вы
не можете использовать kernel.old, потому что
при установке нового ядра kernel.old
перезаписывается последним установленным ядром, которое может
оказаться нерабочим. Также, как можно скорее переместите рабочее
ядро в /boot/kernel,
так как некоторые команды, такие как &man.ps.1; будут работать
некорректно. Для этого просто переместите каталог, содержащий
работоспособное ядро:&prompt.root; mv /boot/kernel /boot/kernel.bad
&prompt.root; mv /boot/kernel.good /boot/kernelВ версиях &os; до 5.X, для восстановления работоспособного
ядра используйте команду:&prompt.root; chflags noschg /kernelЕсли вы обнаружите, что не можете этого сделать, скорее всего вы
работаете на уровне безопасности (&man.securelevel.8;) большем нуля.
Отредактируйте переменную kern_securelevel в файле
/etc/rc.conf, установите её в
-1 и перезагрузитесь. Вы можете установить её в
- предыдущее состояние когда будете довольны своим новым
+ предыдущее состояние, когда будете довольны своим новым
ядром.И, если вы захотите закрыть ваше новое ядро или
любой другой файл, таким образом, что он не сможет быть перемещен или
изменен, используйте следующую команду:&prompt.root; chflags schg /kernelЯдро работает, но &man.ps.1; больше не работает:Если вы установили версию ядра отличную от той, с которой были
собраны ваши системные утилиты, например, ядро от 5.X на системе 4.X,
большая часть системных команд, таких как &man.ps.1; и &man.vmstat.8;
не будут больше работать. Вам потребуется перекомпилировать и установить систему
той же версии исходных текстов, что и ядро. Это одна из причин,
по которой не следует использовать версию ядра, отличную от версии всей
остальной системы.
diff --git a/ru_RU.KOI8-R/books/handbook/linuxemu/chapter.sgml b/ru_RU.KOI8-R/books/handbook/linuxemu/chapter.sgml
index 64e281d4da..dd5cdc89ba 100644
--- a/ru_RU.KOI8-R/books/handbook/linuxemu/chapter.sgml
+++ b/ru_RU.KOI8-R/books/handbook/linuxemu/chapter.sgml
@@ -1,3462 +1,3465 @@
JimMockРеструктурировал и частично обновил Brian N.HandyПервоначально предоставил RichMurpheyАлексейДокучаевПеревод на русский язык: ВалерийКравчукПеревод на русский язык и редактирование: Двоичная совместимость с LinuxКраткий обзорLinux - бинарная совместимостьдвоичная совместимостьLinuxFreeBSD предоставляет двоичную совместимость с несколькими другими
&unix;–подобными операционными системами, включая Linux.
Возможно, вы спрашиваете себя, зачем FreeBSD нужно уметь работать
с приложениями, написанными для Linux? Ответ на этот вопрос достаточно
прост: многие компании и разработчики производят программное
обеспечение только для Linux, так как эта операционная система очень
быстро завоевала огромную популярность в компьютерном мире.
Пользователям же FreeBSD приходится обращаться к этим компаниям и
разработчикам с просьбами выпустить версии своих программ специально
для FreeBSD. Проблема в том, что большинство производителей
программного обеспечения не осознают, насколько бы увеличился их рынок
сбыта, выпускай они также FreeBSD–версии, и продолжают разрабатывать
только под Linux. Что же делать пользователям FreeBSD? В этой
ситуации на помощь приходит двоичная совместимость FreeBSD с
Linux.Вкратце, эта совместимость позволяет пользователям FreeBSD
работать с 90% приложений для Linux без каких-либо модификаций
последних. Среди этих приложений:
&staroffice;, Linux–версия
&netscape;,
&adobe; &acrobat;,
RealPlayer,
VMware,
&oracle;, WordPerfect,
Doom, Quake,
и многие другие. Есть сведения, что в некоторых ситуациях эти
Linux–программы показывали более высокую производительность при
работе под FreeBSD, чем под Linux.Linuxфайловая система /proc
- Конечно, существует некоторые особенности Linux, которые не
+ Конечно, существуют некоторые особенности Linux, которые не
поддерживаются в полной мере под FreeBSD. Например, не будут
работать приложения Linux, использующие файловую систему
/proc (реализация которой отличается от файловой
системы /proc в ОС FreeBSD) или специфичные
вызовы &i386;, такие как переключение в виртуальный режим 8086.При чтении этой главы вы узнаете:Как включить двоичную совместимость с Linux в
вашей системе.Как установить дополнительные совместно используемые
(shared) библиотеки Linux.Как установить приложения Linux в систему FreeBSD.Детали реализации совместимости с Linux в ОС FreeBSD.Перед прочтением этой главы вам потребуется:Узнать как устанавливать дополнительное
программное обеспечение сторонних разработчиков
().УстановкаKLD (загружаемый объект ядра)Двоичная совместимость с Linux не включена по умолчанию.
Простейший способ включения этой функциональности заключается
в загрузке KLD–объекта linux (Kernel
LoaDable object). Вы можете загрузить этот модуль,
просто набрав linux в командной строке.Если вы хотите, чтобы совместимость с Linux была включена
постоянно, необходимо добавить в /etc/rc.conf
следующую строку:linux_enable="YES"Для проверки того, загружен ли модуль, может быть использована
команда &man.kldstat.8;:&prompt.user; kldstat
Id Refs Address Size Name
1 2 0xc0100000 16bdb8 kernel
7 1 0xc24db000 d000 linux.koпараметры ядраLINUXЕсли по какой-либо причине вы не хотите или не можете загрузить
KLD, вы можете статически включить поддержку Linux в ядро,
добавив опцию options COMPAT_LINUX в файл
конфигурации ядра. Затем соберите и установите новое ядро,
следуя описанию в .Установка необходимых библиотек LinuxLinuxустановка библиотек LinuxУстановить все требуемые библиотеки можно двумя путями: либо
используя порт linux_base,
либо установив их вручную.Установка с помощью порта linux_baseколлекция портовЭтот метод является самым простым, и мы рекомендуем
воспользоваться именно им. Процесс аналогичен установке любого
другого порта из коллекции портов.
Просто выполните следующие команды:&prompt.root; cd /usr/ports/emulators/linux_base
&prompt.root; make install distcleanТеперь вы можете работать с приложениями для Linux. Некоторые
программы, возможно, будут сообщать о несоответствии подверсий
некоторых системных библиотек. Однако обычно это не
вызывает каких-либо неудобств.Возможно наличие нескольких версий порта emulators/linux_base, соответствующих
различным версиям разных дистрибутивов Linux. Вы должны
установить порт, наиболее близко соответствующий требованиям
приложений Linux, которые будут установлены.Установка библиотек вручнуюЕсли у вас не установлена коллекция портов, можно
установить требуемые библиотеки вручную. Вам понадобятся
совместно используемые библиотеки для Linux, которые нужны программам, и
runtime–компоновщик. Вам также потребуется создать теневой
корневой каталог, /compat/linux, где
будут расположены Linux–библиотеки. Если Linux–программе нужно
загрузить какую–либо совместно используемую библиотеку, FreeBSD сперва будет
пытаться найти ее в этом дереве. Так, если программа загружает,
например, /lib/libc.so, FreeBSD попытается
открыть /compat/linux/lib/libc.so, и если
такого файла не существует, будет пытаться открыть
/lib/libc.so. Разделяемые библиотеки должны
находиться в теневом дереве, а не в каталогах, выдаваемых
загрузчиком Linux ld.so.Обычно вам придется добавлять совместно используемые библиотеки, от
которых зависят Linux–программы, только при нескольких первых
установках приложений Linux на вашу систему FreeBSD. По мере
работы, у вас в системе накопится достаточный набор совместно используемых
библиотек Linux для запуска новых Linux-программ без
дополнительных действий.Как установить дополнительные совместно используемые библиотекисовместно используемые библиотекиЧто, если при установленном linux_base
порте ваше приложение все равно сообщает об отсутствии необходимой
библиотеки? Как узнать, какая именно нужна библиотека и где ее
взять? В принципе, есть два способа. Вам необходимо иметь
привилегии пользователя root для их
осуществления.Если у вас есть доступ к машине, на которой установлен Linux,
узнайте, какие библиотеки использует Linux–приложение, и просто
скопируйте из на свою машину. Рассмотрим следующий пример:Допустим, вы скачали по FTP Linux–версию
Doom и установили ее на Linux–машине.
Вы можете узнать, какие совместно используемые библиотеки нужны
Doom, с помощью команды
ldd linuxdoom:&prompt.user; ldd linuxdoom
libXt.so.3 (DLL Jump 3.1) => /usr/X11/lib/libXt.so.3.1.0
libX11.so.3 (DLL Jump 3.1) => /usr/X11/lib/libX11.so.3.1.0
libc.so.4 (DLL Jump 4.5pl26) => /lib/libc.so.4.6.29символические ссылкиВам потребуются все файлы, перечисленные в последнем
столбце. Скопируйте их в дерево /compat/linux
на вашей системе, а также создайте символические ссылки на эти
файлы с именами из первого столбца, соответственно. В итоге,
у вас в системе FreeBSD должны быть следующие файлы:/compat/linux/usr/X11/lib/libXt.so.3.1.0
/compat/linux/usr/X11/lib/libXt.so.3 -> libXt.so.3.1.0
/compat/linux/usr/X11/lib/libX11.so.3.1.0
/compat/linux/usr/X11/lib/libX11.so.3 -> libX11.so.3.1.0
/compat/linux/lib/libc.so.4.6.29
/compat/linux/lib/libc.so.4 -> libc.so.4.6.29
Учтите, что если у вас уже есть совместно используемая библиотека
Linux с соответствующим первому столбцу результатов
ldd основным номером версии, вам не
обязательно копировать файл, указанный в последнем столбце,
в вашу систему. Уже существующий файл должен подойти.
Рекомендуется, однако, все равно скопировать совместно используемую
библиотеку, если ее версия новее. Предыдущую версию
- библиотеки можно удалить, если создали символическую ссылку
+ библиотеки можно удалить, если вы создали символическую ссылку
на новую. Итак, если у вас в системе есть следующие
библиотеки:/compat/linux/lib/libc.so.4.6.27
/compat/linux/lib/libc.so.4 -> libc.so.4.6.27и какое-либо приложение требует библиотеку более поздней
версии, судя по результатам команды
ldd:libc.so.4 (DLL Jump 4.5pl26) -> libc.so.4.6.29Если версии немного отличаются в последней цифре,
копировать /lib/libc.so.4.6.29
необязательно, так как программа, скорее всего, будет
нормально работать и с немного устаревшей версией.
Тем не менее, вы можете заменить
libc.so:/compat/linux/lib/libc.so.4.6.29
/compat/linux/lib/libc.so.4 -> libc.so.4.6.29
Символические ссылки важны только
для Linux–программ. Runtime–компоновщик FreeBSD
самостоятельно подберет правильные номера версий библиотек,
и вам не нужно об этом беспокоиться.
Установка двоичных файлов Linux ELFLinuxдвоичные файлы ELFДля ELF-файлов иногда требуется сделать так называемый
branding (маркировать его). Если попытаться
запустить немаркированный ELF-файл, вы получите следующее сообщение
об ошибке:&prompt.user; ./моя-linux-elf-программа
ELF binary type not known
AbortЧтобы помочь ядру FreeBSD отличить ELF-файл FreeBSD от
двоичного файла Linux, используется утилита &man.brandelf.1;:&prompt.user; brandelf -t Linux моя-linux-elf-программаGNU toolchainВ настоящее время набор инструментальных средств GNU
(GNU toolchain) помещает необходимую маркировочную информацию
в двоичные ELF-файлы автоматически, поэтому необходимость
в этом действии возникает всё реже.Конфигурирование распознавания имен хостовЕсли DNS не работает или вы получаете это сообщение:resolv+: "bind" is an invalid keyword resolv+:
"hosts" is an invalid keywordто вам нужно создать (изменить) файл
/compat/linux/etc/host.conf, содержащий:order hosts, bind
multi onТаким образом, вы указываете, то сначала производится поиск в
файле /etc/hosts, а только затем запрашивается
DNS. Когда файл /compat/linux/etc/host.conf
отсутствует, Linux–приложения находят файл
/etc/host.conf для FreeBSD и сообщают о
несовместимом синтаксисе. Если вы не настраивали сервер имен
с помощью файла /etc/resolv.conf, уберите
bind из файла
/compat/linux/etc/host.conf.MurrayStokelyОбновил для Mathematica 4.X BojanBistrovicОбъединено с работой Установка &mathematica;приложенияMathematicaНиже описано, как установить Linux–версию пакета
&mathematica; 4.X
на систему FreeBSD.Linux–версия &mathematica; отлично
работает под FreeBSD, однако
выполняемые файлы, поставляемые Wolfram, должны быть маркированы
утилитой &man.brandelf.1;, чтобы FreeBSD знала о необходимости
использования Linux ABI для их выполнения.Linux–версию пакета &mathematica;
или &mathematica; for Students
можно заказать непосредственно в компании Wolfram по адресу
.Маркировка двоичных файлов LinuxДвоичные файлы Linux находятся в каталоге
Unix на компакт-диске с дистрибутивом
&mathematica; от Wolfram.
Скопируйте этот каталог (вместе со всеми подкаталогами) на ваш
жесткий диск, чтобы промаркировать (утилитой &man.brandelf.1;)
двоичные файлы Linux перед инсталляцией:&prompt.root; mount /cdrom
&prompt.root; cp -rp /cdrom/Unix/ /localdir/
&prompt.root; brandelf -t Linux /localdir/Files/SystemFiles/Kernel/Binaries/Linux/*
&prompt.root; brandelf -t Linux /localdir/Files/SystemFiles/FrontEnd/Binaries/Linux/*
&prompt.root; brandelf -t Linux /localdir/Files/SystemFiles/Installation/Binaries/Linux/*
&prompt.root; brandelf -t Linux /localdir/Files/SystemFiles/Graphics/Binaries/Linux/*
&prompt.root; brandelf -t Linux /localdir/Files/SystemFiles/Converters/Binaries/Linux/*
&prompt.root; brandelf -t Linux /localdir/Files/SystemFiles/LicenseManager/Binaries/Linux/mathlm
&prompt.root; cd /localdir/Installers/Linux/
&prompt.root; ./MathInstallerВы также можете установить марку ELF Linux по умолчанию для всех
немаркированных двоичных файлов с помощью команды:&prompt.root; sysctl kern.fallback_elf_brand=3FreeBSD будет считать, что все немаркированные двоичные
ELF-файлы используют Linux ABI, и вы сможете
запустить MathInstaller прямо с CDROM.Получение пароля к пакету &mathematica;Прежде чем запускать &mathematica;,
вам необходимо получить от компании Wolfram пароль, соответствующий
идентификатору машины.EthernetMAC-адресПосле того, как вы установили необходимые библиотеки и
распаковали файлы &mathematica;,
получите идентификатор машины, запустив
программу mathinfo в
инсталляционном каталоге. Идентификатор машины зависит от
MAC-адреса вашей первой Ethernet-карты.&prompt.root; cd /localdir/Files/SystemFiles/Installation/Binaries/Linux
&prompt.root; mathinfo
disco.example.com 7115-70839-20412При регистрации по электронной почте, по телефону или по факсу
вы сообщаете идентификатор машины, а в ответ
получаете пароль, состоящий из нескольких групп чисел. Введите
этот пароль при первом запуске
&mathematica;, как и для
любой другой платформы.Использование интерфейса &mathematica; по сети&mathematica; использует специальные
шрифты для отображения некоторых символов, которые отсутствуют в
стандартных шрифтах (символы интегралов, сумм, греческий алфавит и
другие). Протокол X требует, чтобы эти шрифты были установлены
локально. Это означает, что вы должны
скопировать эти шрифты с компакт-диска или хоста, на котором
установлена &mathematica;, на вашу
машину. Обычно эти шрифты находятся в каталоге
/cdrom/Unix/Files/SystemFiles/Fonts
компакт-диска или в каталоге
/usr/local/mathematica/SystemFiles/Fonts на
диске. Собственно файлы со шрифтами находятся в подкаталогах
Type1 и X. О том, как их
использовать, читайте ниже.Можно просто скопировать их в один из существующих каталогов
шрифтов в каталоге /usr/X11R6/lib/X11/fonts.
В этом случае придётся отредактировать файл
fonts.dir, добавив в него названия шрифтов и
изменив число шрифтов в первой строке. Можно также запустить
программу &man.mkfontdir.1;, находясь в том каталоге,
куда вы скопировали шрифты.Есть альтернативный способ: скопировать каталоги в
/usr/X11R6/lib/X11/fonts:&prompt.root; cd /usr/X11R6/lib/X11/fonts
&prompt.root; mkdir X
&prompt.root; mkdir MathType1
&prompt.root; cd /cdrom/Unix/Files/SystemFiles/Fonts
&prompt.root; cp X/* /usr/X11R6/lib/X11/fonts/X
&prompt.root; cp Type1/* /usr/X11R6/lib/X11/fonts/MathType1
&prompt.root; cd /usr/X11R6/lib/X11/fonts/X
&prompt.root; mkfontdir
&prompt.root; cd ../MathType1
&prompt.root; mkfontdirТеперь добавьте каталоги с новыми шрифтами в путь к
шрифтам:&prompt.root; xset fp+ /usr/X11R6/lib/X11/fonts/X
&prompt.root; xset fp+ /usr/X11R6/lib/X11/fonts/MathType1
&prompt.root; xset fp rehash
- Если вы используете сервер &xfree86;,
+ Если вы используете сервер &xorg;,
то можно просто прописать эти
- каталоги в файле XF86Config.
+ каталоги в файле xorg.conf.
+
+ Для сервера &xfree86;,
+ файл конфигурации XF86Config.шрифтыЕсли на вашем компьютере нет каталога
/usr/X11R6/lib/X11/fonts/Type1, замените
MathType1 на Type1 в
предыдущем примере.AaronKaplanПредоставил RobertGetschmannБлагодарности: Установка &maple;приложенияMaple
- &maple; - коммерческая
+ &maple; — коммерческая
математическая программа, аналогичная
&mathematica;. Это программное обеспечение
надо купить у , а потом
зарегистрироваться там для получения файла лицензии. Для установки
- это программного обеспечения в ОС FreeBSD используется следующая
+ этого программного обеспечения в ОС FreeBSD используется следующая
последовательность простых шагов.Выполните скрипт командного интерпретатора
INSTALL из дистрибутива. Выберите
опцию RedHat, когда будет предложено программой
установки. Обычно установка выполняется в каталог /usr/local/maple.Если вы этого ещё не сделали, купите лицензию на
&maple; в компании Maple Waterloo
Software ()
и скопируйте ее в файл
/usr/local/maple/license/license.dat.Установите диспетчер лицензий
FLEXlm, выполнив скрипт установки
INSTALL_LIC, входящий в состав
&maple;. Укажите основное имя хоста
вашей машины для сервера лицензий.Исправьте файл
/usr/local/maple/bin/maple.system.type
с помощью следующего патча: ----- snip ------------------
*** maple.system.type.orig Sun Jul 8 16:35:33 2001
--- maple.system.type Sun Jul 8 16:35:51 2001
***************
*** 72,77 ****
--- 72,78 ----
# the IBM RS/6000 AIX case
MAPLE_BIN="bin.IBM_RISC_UNIX"
;;
+ "FreeBSD"|\
"Linux")
# the Linux/x86 case
# We have two Linux implementations, one for Red Hat and
----- snip end of patch -----Учтите, что после "FreeBSD"|\ не должно
быть никаких пробелов.Этот патч заставляет &maple;
распознавать FreeBSD как тип Linux-системы.
Скрипт командного интерпретатора bin/maple
вызывает скрипт bin/maple.system.type,
который, в свою очередь, вызывает uname -a для
получения имени операционной системы. В зависимости от имени ОС
он определяет, какие двоичные модули использовать.Запустите сервер лицензий.Следующий скрипт, установленный в файл
/usr/local/etc/rc.d/lmgrd.sh, обеспечивает
удобный способ запуска lmgrd: ----- snip ------------
#! /bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/X11R6/bin
PATH=${PATH}:/usr/local/maple/bin:/usr/local/maple/FLEXlm/UNIX/LINUX
export PATH
LICENSE_FILE=/usr/local/maple/license/license.dat
LOG=/var/log/lmgrd.log
case "$1" in
start)
lmgrd -c ${LICENSE_FILE} 2>> ${LOG} 1>&2
echo -n " lmgrd"
;;
stop)
lmgrd -c ${LICENSE_FILE} -x lmdown 2>> ${LOG} 1>&2
;;
*)
echo "Usage: `basename $0` {start|stop}" 1>&2
exit 64
;;
esac
exit 0
----- snip ------------Выполните тестовый запуск
&maple;:&prompt.user; cd /usr/local/maple/bin
&prompt.user; ./xmapleПрограмма должна запуститься и работать. Не забудьте написать
в Maplesoft и сообщить, что хотели бы видеть версию специально
для FreeBSD!Типичные проблемыРаботать с диспетчером лицензий
FLEXlm может быть непросто.
Дополнительную документацию по нему можно найти на сайте .lmgrd очень требователен к
файлу лицензии и выдает дамп памяти при выявлении любых проблем.
Правильный файл лицензии должен иметь следующий вид:# =======================================================
# License File for UNIX Installations ("Pointer File")
# =======================================================
SERVER chillig ANY
#USE_SERVER
VENDOR maplelmg
FEATURE Maple maplelmg 2000.0831 permanent 1 XXXXXXXXXXXX \
PLATFORMS=i86_r ISSUER="Waterloo Maple Inc." \
ISSUED=11-may-2000 NOTICE=" Technische Universitat Wien" \
SN=XXXXXXXXXСерийный номер и ключ забиты символами 'X'.
chillig – имя хоста.Редактирование файла лицензий возможно, если только не
трогать строку FEATURE (которая защищена
лицензионным ключом).Установка &matlab;приложенияMATLABЭтот документ описывает процесс установки Linux-версии
&matlab; версии 6.5 на систему
&os;. Эта программа работает вполне нормально, за исключением
&java.virtual.machine; (см.
).Linux-версию &matlab; можно приобрести
непосредственно в компании The MathWorks на сайте . Не забудьте получить
файл лицензии или инструкции по его созданию. По ходу дела дайте
знать производителю, что хотели бы увидеть версию их ПО специально
для &os;.Процесс установки &matlab;Для установки &matlab; выполните
следующие шаги:Вставьте инсталляционный CD и смонтируйте его.
Станьте пользователем root, как рекомендует
скрипт установки. Для запуска скрипта установки наберите:&prompt.root; /compat/linux/bin/sh /cdrom/installЗапускается графический инсталлятор. Если вы получаете
сообщения о невозможности открыть дисплей, наберите
setenv HOME ~USER,
где USER – пользователь, от
имени которого выполнена команда &man.su.1;.
При запросе корневого каталога
&matlab;, наберите:
/compat/linux/usr/local/matlab.Чтобы упростить набор остальных команд в ходе установки,
выполните в командном интерпретаторе следующую команду:
set MATLAB=/compat/linux/usr/local/matlab
- Отредактируйте файл лицензии в соответствии с инструкциями,
+ Отредактируйте файл лицензии в соответствии с инструкциями
в полученной лицензии &matlab;.Этот файл можно подготовить заранее с помощью любого
текстового редактора и скопировать его в
$MATLAB/license.dat до того, как
инсталлятор попросит его отредактировать.Завершите процесс установки.В этот момент ваша установка &matlab;
завершена. Следующие шаги позволяют связать
эту программу с вашей системой &os;.Запуск диспетчера лицензийСоздайте символические ссылки для скриптов диспетчера
лицензий:&prompt.root; ln -s $MATLAB/etc/lmboot /usr/local/etc/lmboot_TMW
&prompt.root; ln -s $MATLAB/etc/lmdown /usr/local/etc/lmdown_TMWСоздайте файл запуска
/usr/local/etc/rc.d/flexlm.sh.
Представленный ниже пример – измененная версия входящего
в дистрибутив файла $MATLAB/etc/rc.lm.glnx86.
Изменены местонахождения файлов и диспетчер лицензий запускается
под эмулятором Linux.#!/bin/sh
case "$1" in
start)
if [ -f /usr/local/etc/lmboot_TMW ]; then
/compat/linux/bin/sh /usr/local/etc/lmboot_TMW -u username && echo 'MATLAB_lmgrd'
fi
;;
stop)
if [ -f /usr/local/etc/lmdown_TMW ]; then
/compat/linux/bin/sh /usr/local/etc/lmdown_TMW > /dev/null 2>&1
fi
;;
*)
echo "Usage: $0 {start|stop}"
exit 1
;;
esac
exit 0Этот файл надо сделать выполняемым:&prompt.root; chmod +x /usr/local/etc/rc.d/flexlm.shВы также должны заменить username
именем пользователя в вашей системе (но не
root).Запустите диспетчер лицензий с помощью команды:&prompt.root; /usr/local/etc/rc.d/flexlm.sh startСвязь с &java; Runtime EnvironmentИзмените ссылку &java; Runtime
Environment (JRE) так, чтобы он ссылалась на версию, работающую
в &os;:&prompt.root; cd $MATLAB/sys/java/jre/glnx86/
&prompt.root; unlink jre; ln -s ./jre1.1.8 ./jreСоздание скрипта запуска &matlab;Поместите следующий скрипт запуска в файл
/usr/local/bin/matlab:
#!/bin/sh
/compat/linux/bin/sh /compat/linux/usr/local/matlab/bin/matlab "$@"Затем выполните команду
chmod +x /usr/local/bin/matlab.В зависимости от версии
emulators/linux_base, при
выполнении этого скрипта могут быть выданы сообщения об ошибках.
Чтобы избежать этого, отредактируйте файл
/compat/linux/usr/local/matlab/bin/matlab
и измените строку вида:if [ `expr "$lscmd" : '.*->.*'` -ne 0 ]; then(в версии 13.0.1 это строка 410) на следующую строку:if test -L $newbase; thenСоздание скрипта остановки &matlab;Следующие действия необходимы для решения проблемы с
некорректным завершением работы &matlab;.Создайте файл
$MATLAB/toolbox/local/finish.m и поместите
в него одну строку:! $MATLAB/bin/finish.sh
- $MATLAB - литерал.
+ $MATLAB — литерал.В том же каталоге находятся файлы
finishsav.m и
finishdlg.m, которые позволяют
сохранять рабочее пространство перед выходом. Если вы
используете любой из них, вставьте представленную выше
строку сразу после команды save.Создайте файл
$MATLAB/bin/finish.sh, который будет
содержать следующий скрипт:#!/usr/compat/linux/bin/sh
(sleep 5; killall -1 matlab_helper) &
exit 0Сделайте этот файл выполняемым:&prompt.root; chmod +x $MATLAB/bin/finish.shИспользование &matlab;В этот момент все готово для выполнения команды
matlab и начала использования этой программы.MarcelMoolenaarПредоставил Установка &oracle;приложенияOracleВведениеНиже описан процесс установки &oracle;
8.0.5 и &oracle; 8.0.5.1 Enterprise
Edition для Linux на систему FreeBSD.Установка Linux–средыУдостоверьтесь, что порты
emulators/linux_base и
devel/linux_devtools установлены
на вашей системе. Если у вас возникнут трудности с этими портами,
воспользуйтесь пакетами или более ранними их версиями из
коллекции портов.Если вы хотите использовать интеллектуальный агент (intelligent
agent), придется также установить пакет TCL от Red Hat:
tcl-8.0.3-20.i386.rpm. Универсальная команда
для установки пакетов с помощью официального порта
RPM
(archivers/rpm):&prompt.root; rpm -i --ignoreos --root /compat/linux --dbpath /var/lib/rpm пакетУстановка этого пакета должна
пройти без каких-либо ошибок.Создание среды &oracle;Прежде чем вы сможете установить
&oracle;, необходимо настроить
соответствующую среду. В этом документе описано, что
специально нужно сделать, чтобы запустить
&oracle; для Linux под FreeBSD –
это не пересказ официального руководства по установке
&oracle;.Настройка ядранастройка ядраКак описано в руководстве по установке
&oracle;, необходимо
установить максимальный размер совместно используемой (shared) памяти. Не используйте
SHMMAX под FreeBSD. SHMMAX
просто вычисляется, исходя из SHMMAXPGS и
PGSIZE. Следовательно, нужно задавать
SHMMAXPGS. За информацией о прочих опциях
обратитесь к официальному руководству. Пример настроек:options SHMMAXPGS=10000
options SHMMNI=100
options SHMSEG=10
options SEMMNS=200
options SEMMNI=70
options SEMMSL=61Установите эти опции в зависимости от того, как и для чего
вы будете использовать &oracle;.Не забудьте добавить следующие строки в файл конфигурации
ядра:options SYSVSHM # совместно используемая память SysV
options SYSVSEM # семафоры SysV
options SYSVMSG # межпроцессное взаимодействие SysVУчетная запись &oracle;Создайте специальную учетную запись
oracle, как и любую другую учетную запись.
Единственное отличие в том, что для oracle
необходимо указать командный интерпретатор Linux.
Добавьте /compat/linux/bin/bash в
/etc/shells и установите для
oracle командный интерпретатор
/compat/linux/bin/bash.Переменные средыКроме стандартных переменных среды
&oracle;, таких как
ORACLE_HOME и ORACLE_SID, вам нужно
будет установить следующие переменные среды:ПеременнаяЗначениеLD_LIBRARY_PATH$ORACLE_HOME/libCLASSPATH$ORACLE_HOME/jdbc/lib/classes111.zipPATH/compat/linux/bin
/compat/linux/sbin
/compat/linux/usr/bin
/compat/linux/usr/sbin
/bin
/sbin
/usr/bin
/usr/sbin
/usr/local/bin
$ORACLE_HOME/binЖелательно устанавливать все переменные среды в файле
.profile. Вот реальный пример:ORACLE_BASE=/oracle; export ORACLE_BASE
ORACLE_HOME=/oracle; export ORACLE_HOME
LD_LIBRARY_PATH=$ORACLE_HOME/lib
export LD_LIBRARY_PATH
ORACLE_SID=ORCL; export ORACLE_SID
ORACLE_TERM=386x; export ORACLE_TERM
CLASSPATH=$ORACLE_HOME/jdbc/lib/classes111.zip
export CLASSPATH
PATH=/compat/linux/bin:/compat/linux/sbin:/compat/linux/usr/bin
PATH=$PATH:/compat/linux/usr/sbin:/bin:/sbin:/usr/bin:/usr/sbin
PATH=$PATH:/usr/local/bin:$ORACLE_HOME/bin
export PATHУстановка &oracle;Из-за небольшой несовместимости с Linux–эмулятором, вам нужно
будет создать подкаталог .oracle в каталоге
/var/tmp прежде, чем можно будет начать
установку. Либо сделайте ее владельцем пользователя
oracle, либо поставьте права на запись для всех.
Если вы все сделали правильно, то установка
&oracle; должна пройти без проблем. Если
какие-либо трудности все же возникли, проверьте еще раз все
конфигурационные файлы и/или целостность дистрибутива
&oracle;. После окончания установки
&oracle; примените патчи,
описанные в следующих двух подразделах.Одна из часто возникающих проблем — неправильно
установленный адаптер TCP-протокола. В результате, невозможно
запустить процессы прослушивания TCP. Вот решение проблемы:&prompt.root; cd $ORACLE_HOME/network/lib
&prompt.root; make -f ins_network.mk ntcontab.o
&prompt.root; cd $ORACLE_HOME/lib
&prompt.root; ar r libnetwork.a ntcontab.o
&prompt.root; cd $ORACLE_HOME/network/lib
&prompt.root; make -f ins_network.mk installНе забудьте повторно запустить root.sh!Изменение root.shПри установке &oracle;
необходимо выполнить некоторые действия от имени
пользователя root. Они записаны в
скрипте командного интерпретатора root.sh,
который находится в каталоге orainst.
Перед запуском, примените к нему следующий патч (исправляет
местонахождение утилиты chown), либо запускайте его в командном
интерпретаторе Linux.*** orainst/root.sh.orig Tue Oct 6 21:57:33 1998
--- orainst/root.sh Mon Dec 28 15:58:53 1998
***************
*** 31,37 ****
# This is the default value for CHOWN
# It will redefined later in this script for those ports
# which have it conditionally defined in ss_install.h
! CHOWN=/bin/chown
#
# Define variables to be used in this script
--- 31,37 ----
# This is the default value for CHOWN
# It will redefined later in this script for those ports
# which have it conditionally defined in ss_install.h
! CHOWN=/usr/sbin/chown
#
# Define variables to be used in this scriptЕсли вы устанавливаете &oracle;
не с компакт–диска, можно изменить исходный файл
root.sh. Он называется
rthd.sh и находится в каталоге
orainst.Изменение genclntshСкрипт genclntsh используется для того,
чтобы создать единую совместно используемую клиентскую библиотеку,
которая используется для создания демонстраций. Примените
следующий патч, чтобы закомментировать определение переменной
PATH:*** bin/genclntsh.orig Wed Sep 30 07:37:19 1998
--- bin/genclntsh Tue Dec 22 15:36:49 1998
***************
*** 32,38 ****
#
# Explicit path to ensure that we're using the correct commands
#PATH=/usr/bin:/usr/ccs/bin export PATH
! PATH=/usr/local/bin:/bin:/usr/bin:/usr/X11R6/bin export PATH
#
# each product MUST provide a $PRODUCT/admin/shrept.lst
--- 32,38 ----
#
# Explicit path to ensure that we're using the correct commands
#PATH=/usr/bin:/usr/ccs/bin export PATH
! #PATH=/usr/local/bin:/bin:/usr/bin:/usr/X11R6/bin export PATH
#
# each product MUST provide a $PRODUCT/admin/shrept.lstЗапуск &oracle;Теперь, если вы все сделали правильно, то можете использовать
&oracle; так же, как и в системе
Linux.HolgerKippПредоставил ValentinoVaschettoИсходную версию преобразовал в SGML Установка &sap.r3;приложенияSAP R/3Инсталляции систем &sap; на базе FreeBSD
не будут поддерживаться службой поддержки &sap; — они
предоставляют поддержку только на сертифицированных платформах.ПредисловиеЭтот документ описывает возможный способ установки системы
&sap.r3; с
СУБД &oracle; Database на машине с ОС
FreeBSD, включая установку FreeBSD и
&oracle;. Будут описаны две
разные конфигурации:&sap.r3; 4.6B (IDES) с
&oracle; 8.0.5 на FreeBSD 4.3-STABLE&sap.r3; 4.6C с
&oracle; 8.1.7 на FreeBSD 4.5-STABLEХотя в этом документе мы пытаемся подробно описать все важные
шаги, он не заменяет руководства по установке
&oracle; и
&sap.r3;.По специфическим вопросам &sap; и
&oracle; обратитесь к документации,
поставляемой в составе &sap.r3;
Linux edition, а также к другим источникам информации об
&oracle; и
&sap; OSS.Программное обеспечениеДля установки &sap; были использованы
следующие диски CD-ROM:&sap.r3; 4.6B, &oracle; 8.0.5ИмяНомерОписаниеKERNEL51009113SAP Kernel Oracle /
Installation / AIX, Linux, SolarisRDBMS51007558Oracle / RDBMS 8.0.5.X /
LinuxEXPORT151010208IDES / DB-Export /
Диск 1 из 6EXPORT251010209IDES / DB-Export /
Диск 2 из 6EXPORT351010210IDES / DB-Export /
Диск 3 из 6EXPORT451010211IDES / DB-Export /
Диск 4 из 6EXPORT551010212IDES / DB-Export /
Диск 5 из 6EXPORT651010213IDES / DB-Export /
Диск 6 из 6Кроме того, мы использовали CD &oracle; 8
Server (Опытная версия 8.0.5 для Linux,
ядро версии 2.0.33), который не обязательно понадобится, и
FreeBSD 4.3-STABLE (она вышла всего через несколько дней после 4.3
RELEASE).&sap.r3; 4.6C SR2, &oracle; 8.1.7ИмяНомерОписаниеKERNEL51014004SAP Kernel Oracle /
SAP Kernel Version 4.6D / DEC, LinuxRDBMS51012930Oracle 8.1.7/ RDBMS /
LinuxEXPORT151013953Release 4.6C SR2 / Export
/ Диск 1 из 4EXPORT151013953Release 4.6C SR2 / Export
/ Диск 2 из 4EXPORT151013953Release 4.6C SR2 / Export
/ Диск 3 bp 4EXPORT151013953Release 4.6C SR2 / Export
/ Диск 4 из 4LANG151013954Release 4.6C SR2 /
Language / DE, EN, FR / Диск 1 из 3В зависимости от языков, которые необходимо установить,
могут потребоваться дополнительные CD. Здесь мы использовали
только немецкий и английский языки, поэтому потребовался только
первый языковой CD. Обратите внимание, что номера всех
EXPORT CD идентичны. Все три языковых CD тоже имеют один номер
(это отличается от нумерации CD в версии 4.6B IDES). На момент
написания этого раздела (20.03.2002) установленное ПО работало
на FreeBSD 4.5-STABLE.Примечания по &sap;Прочитайте следующие документы перед установкой
&sap.r3; — они пригодятся в ходе
установки:&sap.r3; 4.6B, &oracle; 8.0.5НомерНазвание0171356SAP Software on Linux: Essential
Comments0201147INST: 4.6C R/3 Inst. on UNIX -
Oracle0373203Update / Migration Oracle 8.0.5 -->
8.0.6/8.1.6 LINUX0072984Release of Digital UNIX 4.0B for
Oracle0130581R3SETUP step DIPGNTAB terminates0144978Your system has not been installed
correctly0162266Questions and tips for R3SETUP on Windows
NT / W2K&sap.r3; 4.6C, &oracle; 8.1.7НомерНазвание0015023Initializing table TCPDB (RSXP0004)
(EBCDIC)0045619R/3 with several languages or
typefaces0171356SAP Software on Linux: Essential
Comments0195603RedHat 6.1 Enterprise version:
Known problems0212876The new archiving tool SAPCAR0300900Linux: Released DELL Hardware0377187RedHat 6.2: important remarks0387074INST: R/3 4.6C SR2 Installation on
UNIX0387077INST: R/3 4.6C SR2 Inst. on UNIX -
Oracle0387078SAP Software on UNIX: OS Dependencies
4.6C SR2Требования к аппаратному обеспечениюСледующего оборудования достаточно для установки
&sap.r3; System. Для производственного
использования необходима более точная оценка параметров:Компонент4.6B4.6CПроцессор2 x 800MHz &pentium; III2 x 800MHz &pentium; IIIПамять1GB ECC2GB ECCОбъем дисков50-60GB (IDES)50-60GB (IDES)Для производственного использования рекомендуются процессоры
&xeon; с большим кешем, высокоскоростной доступ к дискам (SCSI,
аппаратный RAID-контроллер), USV и ECC-RAM. Большой объем дискового
пространства связан с заранее сконфигурированной системой IDES,
- которая создает 27 Гбайт файлов базы данных в ходу установки.
+ которая создает 27 Гбайт файлов базы данных по ходу установки.
Этого пространства также достаточно для исходных производственных
систем и прикладных данных.&sap.r3; 4.6B, &oracle; 8.0.5Было использовано следующее стандартное оборудование:
двухпроцессорная материнская плата с двумя процессорами
&pentium; III 800 MHz, SCSI-контроллером &adaptec; 29160
Ultra160 (для работы с 40/80 Гбайт стримером DLT и приводом
CDROM), &mylex; &acceleraid; (2 канала, firmware 6.00-1-00 с
32 Мбайт RAM). К RAID-контроллеру &mylex; подключены два диска
по 17 Гбайт (зеркалированы) и четыре диска по 36 Гбайт
(RAID уровня 5).&sap.r3; 4.6C, &oracle; 8.1.7Для этой установки был использован &dell; &poweredge; 2500:
двухпроцессорная плата с двумя процессорами &pentium; III
1000 MHz (256 Кбайт кеш), 2 Гбайта PC133 ECC SDRAM,
PERC/3 DC PCI RAID-контроллер со 128 Мбайтами и приводом
EIDE DVD-ROM. К RAID-контроллеру подключены два диска по
18 Гбайт (зеркалированы) и четыре диска по 36 Гбайт
(RAID уровня 5).Установка FreeBSDСначала надо установить FreeBSD. Есть несколько способов сделать
это (FreeBSD 4.3 была установлена по FTP,
- FreeBSD 4.5 - непосредственно с RELEASE CD); подробнее
+ FreeBSD 4.5 — непосредственно с RELEASE CD); подробнее
см. .Компоновка дисковДля простоты диски при установке
&sap.r3; 46B и &sap.r3; 46C
SR2 использовались одинаково. Изменились только
имена устройств, поскольку установка выполнялась на разное
оборудование (/dev/da и
/dev/amr, соответственно, так что при
использовании AMI &megaraid; будут задействованы устройства
/dev/amr0s1a вместо /dev/da0s1a):Файловая системаРазмер (в блока по 1 Кбайту)Размер (Гбайт)Смонтирована в/dev/da0s1a1.016.3031//dev/da0s1b6swap/dev/da0s1e2.032.6232/var/dev/da0s1f8.205.3398/usr/dev/da1s1e45.734.36145/compat/linux/oracle/dev/da1s1f2.032.6232/compat/linux/sapmnt/dev/da1s1g2.032.6232/compat/linux/usr/sapКонфигурируем и инициализируем заранее два логических диска
с помощью ПО RAID &mylex; или PERC/3. Программы конфигурирования
можно запустить в ходе загрузки BIOS.Обратите внимание, что использованная компоновка дисков
немного отличается от рекомендованной &sap;, поскольку &sap;
рекомендует монтировать подкаталоги
&oracle; (и некоторые другие)
отдельно — мы решили просто создать подкаталоги.make world и новое ядроЗагрузите последние исходные коды ветки -STABLE. Пересоздайте
систему и ваше специализированное ядро после необходимых изменений
в файле конфигурации ядра. В него надо включить
параметры ядра, требуемые
для &sap.r3; и
&oracle;.Установка среды LinuxУстановка базовой системы LinuxСначала необходимо установить порт
linux_base
(от имени пользователя root):&prompt.root; cd /usr/ports/emulators/linux_base
&prompt.root; make install distcleanУстановка среды разработки LinuxСреда разработки Linux необходима, если вы хотите установить
&oracle; в ОС FreeBSD, как описано в
:&prompt.root; cd /usr/ports/devel/linux_devtools
&prompt.root; make install distcleanСреда разработки Linux была установлена только для
&sap.r3; 46B IDES. Она не нужна, если
сервер &oracle; не перекомпоновывается
в системе FreeBSD. Именно так и происходит, если вы используете
tar-архив (tarball) &oracle; с
Linux-системы.Установка необходимых пакетов RPMRPMДля запуска программы R3SETUP необходима
поддержка модулей PAM. В ходе первой установки
&sap; на ОС FreeBSD 4.3-STABLE мы
попытались установить PAM со всеми необходимыми пакетами и,
в конце концов, принудительно установили пакет PAM, что и
сработало. Для &sap.r3; 4.6C SR2 мы
сразу принудительно установили PAM RPM, что тоже сработало,
так что похоже, что пакеты, от которых декларирована зависимость,
не нужны:&prompt.root; rpm -i --ignoreos --nodeps --root /compat/linux --dbpath /var/lib/rpm \
pam-0.68-7.i386.rpmЧтобы &oracle; 8.0.5 мог запустить
интеллектуального агента, нам также пришлось установить пакет
RedHat Tcl tcl-8.0.5-30.i386.rpm (иначе
перекомпоновка в ходе установки &oracle;
не выполнится). Есть и другие проблемы с перекомпоновкой
&oracle;, но это проблема
&oracle; на Linux, не связанная с
особенностями FreeBSD.Дополнительные советыМожет также иметь смысл добавить linprocfs
в /etc/fstab; подробнее об этом см. на
- странице справочника the &man.linprocfs.5;. Еще можно установить
+ странице справочника &man.linprocfs.5;. Еще можно установить
параметр kern.fallback_elf_brand=3 в файле
/etc/sysctl.conf.Создание среды &sap.r3;Создание необходимых файловых систем и точек монтированияДля простой установки достаточно создать следующие файловые
системы:точка монтированияразмер в Гбайтах/compat/linux/oracle45 GB/compat/linux/sapmnt2 GB/compat/linux/usr/sap2 GBТакже необходимо создать несколько ссылок. В противном случае,
инсталлятор &sap; будет выдавать
сообщения об ошибках, поскольку он проверяет созданные ссылки:&prompt.root; ln -s /compat/linux/oracle /oracle
&prompt.root; ln -s /compat/linux/sapmnt /sapmnt
&prompt.root; ln -s /compat/linux/usr/sap /usr/sapВозможные сообщения об ошибках в ходе установки (в данном
случае, для установки System PRD и
&sap.r3; 4.6C SR2):INFO 2002-03-19 16:45:36 R3LINKS_IND_IND SyLinkCreate:200
Checking existence of symbolic link /usr/sap/PRD/SYS/exe/dbg to
/sapmnt/PRD/exe. Creating if it does not exist...
WARNING 2002-03-19 16:45:36 R3LINKS_IND_IND SyLinkCreate:400
Link /usr/sap/PRD/SYS/exe/dbg exists but it points to file
/compat/linux/sapmnt/PRD/exe instead of /sapmnt/PRD/exe. The
program cannot go on as long as this link exists at this
location. Move the link to another location.
ERROR 2002-03-19 16:45:36 R3LINKS_IND_IND Ins_SetupLinks:0
can not setup link '/usr/sap/PRD/SYS/exe/dbg' with content
'/sapmnt/PRD/exe'Создание пользователей и каталоговДля системы &sap.r3; необходимы два
пользователя и три группы. Имена пользователей зависят от
идентификатора системы &sap; (SID),
который состоит из трех букв. Некоторые из этих идентификаторов
зарезервированы &sap; (например,
SAP и NIX. Полный
список см. в документации &sap;).
Для установки IDES мы использовали IDS,
- а для установки 4.6C SR2 - PRD, поскольку
+ а для установки 4.6C SR2 — PRD, поскольку
эта система предназначалась для промышленного использования.
Поэтому нам понадобились следующие группы (идентификаторы групп
могут отличаться, мы просто указали наши значения, использованные
при установке):идентификатор группыимя группыописание100dbaАдминистратор базы данных101sapsysСистема &sap;102operОператор базы данныхДля стандартной установки
&oracle; используется только группа
dba. В качестве группы
oper используется та же группа
dba (подробнее об этом см. в
документации &oracle; и
&sap;).Нам также нужны следующие пользователи:идентификатор пользователяимя пользователяобщий вид именигруппадополнительные группыописание1000idsadm/prdadmsidadmsapsysoperАдминистратор &sap;1002oraids/oraprdorasiddbaoperАдминистратор &oracle;Добавление пользователей с помощью &man.adduser.8;
требует следующих параметров для Администратора &sap;
(обратите внимание на командный интерпретатор и начальный
каталог):Name: sidadm
Password: ******
Fullname: SAP Administrator SID
Uid: 1000
Gid: 101 (sapsys)
Class:
Groups: sapsys dba
HOME: /home/sidadm
Shell: bash (/compat/linux/bin/bash)а для Администратора &oracle;:Name: orasid
Password: ******
Fullname: Oracle Administrator SID
Uid: 1002
Gid: 100 (dba)
Class:
Groups: dba
HOME: /oracle/sid
Shell: bash (/compat/linux/bin/bash)Для него также надо указать группу
oper, если вы используете обе группы,
dba и oper.Создание каталоговЭти каталоги обычно создаются в отдельных файловых системах.
Впрочем, все зависит от ваших требований. Мы решили создавать их
как обычные каталоги, поскольку в любом случае они находятся на
одном массиве RAID 5:Сначала мы установим владельцев и права для ряда каталогов (от
имени пользователя root):&prompt.root; chmod 775 /oracle
&prompt.root; chmod 777 /sapmnt
&prompt.root; chown root:dba /oracle
&prompt.root; chown sidadm:sapsys /compat/linux/usr/sap
&prompt.root; chmod 775 /compat/linux/usr/sapЗатем, мы создадим каталоги от имени пользователя
orasid. Все они
будут размещены в каталоге
/oracle/SID:&prompt.root; su - orasid
&prompt.root; cd /oracle/SID
&prompt.root; mkdir mirrlogA mirrlogB origlogA origlogB
&prompt.root; mkdir sapdata1 sapdata2 sapdata3 sapdata4 sapdata5 sapdata6
&prompt.root; mkdir saparch sapreorg
&prompt.root; exitДля установки &oracle; 8.1.7
потребуется несколько дополнительных каталогов:&prompt.root; su - orasid
&prompt.root; cd /oracle
&prompt.root; mkdir 805_32
&prompt.root; mkdir client stage
&prompt.root; mkdir client/80x_32
&prompt.root; mkdir stage/817_32
&prompt.root; cd /oracle/SID
&prompt.root; mkdir 817_32Каталог client/80x_32 должен иметь
точно такое имя. Не заменяйте x числом или
другим символом.На третьем шаге мы создаем каталоги от имени пользователя
sidadm:&prompt.root; su - sidadm
&prompt.root; cd /usr/sap
&prompt.root; mkdir SID
&prompt.root; mkdir trans
&prompt.root; exitЗаписи в файле /etc/servicesДля системы &sap.r3; необходим ряд
записей в файле /etc/services, которые не
будут правильно созданы при установке под FreeBSD. Пожалуйста,
добавьте следующие записи (потребуются, по крайней мере, записи,
соответствующие номеру экземпляра — в данном случае,
00. Не повредит добавить все записи, от
00 до 99, для
dp, gw, sp
и ms). Если вы собираетесь использовать
SAProuter или вам необходим доступ к
&sap; OSS, потребуется также запись для
99, поскольку порт 3299 обычно используется
для процесса SAProuter в целевой
системе:
sapdp00 3200/tcp # SAP Dispatcher. 3200 + Instance-Number
sapgw00 3300/tcp # SAP Gateway. 3300 + Instance-Number
sapsp00 3400/tcp # 3400 + Instance-Number
sapms00 3500/tcp # 3500 + Instance-Number
sapmsSID 3600/tcp # SAP Message Server. 3600 + Instance-Number
sapgw00s 4800/tcp # SAP Secure Gateway 4800 + Instance-NumberНеобходимые локалилокальСистеме &sap; нужны, по крайней
мере, две локали, не входящие в стандартную установку RedHat.
&sap; предлагает необходимые пакеты RPM для загрузки со своего
FTP-сервера (который доступен только для клиентов с доступом к
OSS). См. список необходимых пакетов RPM в заметке
0171356.Можно также просто создать соответствующие ссылки
(например, с de_DE и
en_US), но мы не рекомендуем это для
производственной системы (хотя это и сработало для системы
IDES безо всяких проблем). Необходимы следующие локали:de_DE.ISO-8859-1
en_US.ISO-8859-1Создайте ссылки следующим образом:&prompt.root; cd /compat/linux/usr/share/locale
&prompt.root; ln -s de_DE de_DE.ISO-8859-1
&prompt.root; ln -s en_US en_US.ISO-8859-1Если их не будет, в ходе установки возникнет ряд проблем.
Если их просто проигнорировать (установив STATUS
для соответствующих шагов равным OK в файле
CENTRDB.R3S), нельзя будет зарегистрироваться
в системе &sap; без дополнительных
усилий.Настройка ядранастройка ядраСистемам &sap.r3; надо много
ресурсов. Поэтому мы добавили следующие параметры в файл
конфигурации ядра:# Для пожирателей памяти (SAP и Oracle):
options MAXDSIZ="(1024*1024*1024)"
options DFLDSIZ="(1024*1024*1024)"
# Необходимые опции System V.
options SYSVSHM #совместно используемая память в стиле SYSV
options SHMMAXPGS=262144 #макс. количество страниц совместно используемой
#options SHMMAXPGS=393216 #use this for the 46C inst.parameters
options SHMMNI=256 #макс. количество идентификаторов совместно используемой
options SHMSEG=100 #макс. количество сегментов разд. памяти на процесс
options SYSVMSG #очереди сообщений в стиле SYSV
options MSGSEG=32767 #макс. количество сегментов сообщений в системе
options MSGSSZ=32 #размер сегмента сообщений. ДОЛЖЕН быть степенью 2
options MSGMNB=65535 #макс. символов на очередь сообщений
options MSGTQL=2046 #макс. количество сообщений в системе
options SYSVSEM #семафоры в стиле SYSV
options SEMMNU=256 #количество структур UNDO семафоров
options SEMMNS=1024 #количество семафоров в системе
options SEMMNI=520 #количество идентификаторов семафоров
options SEMUME=100 #количество ключей UNDOМинимальные значения указаны в документации, поставляемой
вместе с &sap;. Поскольку описания для Linux нет, дополнительную
информацию см. в разделе HP-UX (32-bit). Поскольку в системе, на
которую устанавливалась версия 4.6C SR2, оперативной памяти больше, сегменты совместно используемой можно сделать больше как для
&sap;, так и для
&oracle;, поэтому задайте большее
- количество страниц совместно используемой.
+ количество страниц совместно используемой памяти.
При стандартной установке FreeBSD 4.5 на &i386;,
задайте значения MAXDSIZ и DFLDSIZ не более 1 Гбайта. В противном
случае могут выдаваться странные ошибки вроде
ORA-27102: out of memory и
Linux Error: 12: Cannot allocate
memory.Установка &sap.r3;Подготовка дисков CDROM &sap;В ходе установки придется монтировать и демонтировать
много дисков CDROM. При наличии достаточного количества приводов
CDROM, можно смонтировать их все. Мы же решили скопировать
содержимое дисков CDROM в соответствующие каталоги:/oracle/SID/sapreorg/имя_cd
- где имя_cd - одно из следующих
+ где имя_cd — одно из следующих
KERNEL,
RDBMS, EXPORT1,
EXPORT2, EXPORT3,
EXPORT4, EXPORT5 и
EXPORT6 для установки 4.6B/IDES, и
KERNEL, RDBMS,
DISK1, DISK2,
DISK3, DISK4 и
LANG для установки 4.6C SR2. Все имена
файлов на смонтированных дисках должны быть в верхнем регистре,
в противном случае, используйте при монтировании опцию
. Поэтому используйте следующие команды:&prompt.root; mount_cd9660 -g /dev/cd0a /mnt
&prompt.root; cp -R /mnt/* /oracle/SID/sapreorg/имя_cd
&prompt.root; umount /mntЗапуск скрипта установкиСначала надо подготовить каталог install:&prompt.root; cd /oracle/SID/sapreorg
&prompt.root; mkdir install
&prompt.root; cd installЗатем запускается скрипт установки, который скопирует почти
все необходимые файлы в каталог
install:&prompt.root; /oracle/SID/sapreorg/KERNEL/UNIX/INSTTOOL.SHДистрибутив IDES (4.6B) включает полностью настроенную
демонстрационную систему &sap.r3;, поэтому он включает шесть
дисков EXPORT CD, а не три. В этот момент шаблон установки
CENTRDB.R3S предназначен для установки
стандартного центрального экземпляра
(&r3; и базы данных), а не для
установки центрального экземпляра IDES, поэтому необходимо
скопировать соответствующий файл CENTRDB.R3S
из каталога EXPORT1, иначе
команда R3SETUP запросит только три диска
EXPORT CDs.Более новый релиз &sap; 4.6C SR2
включает четыре диска EXPORT CD. Шаги установки определяет файл
параметров CENTRAL.R3S. В отличие от
прежних релизов, больше нет отдельных шаблонов установки для
центрального экземпляра с базой данных или без нее.
&sap; использует отдельный шаблон для
установки базы данных. Для перезапуска установки в дальнейшем,
однако, достаточно перезапустить исходный файл.В ходе установки и после нее &sap;
требует, чтобы команда hostname возвращала
только имя компьютера, не уточнённое именем домена. Поэтому либо
задайте имя хоста в соответствии с этим требованием, либо
настройте псевдоним с помощью команды
alias hostname='hostname -s' для пользователей
orasid и
sidadm (и для
пользователя root, про крайней мере,
в ходе шагов по установке, выполняемых от имени
root). Можно также изменить
файлы .profile и .login
для обоих пользователей, которые создаются в ходе установки
&sap;.Запуск R3SETUP 4.6BПроверьте, что переменная среды LD_LIBRARY_PATH
установлена правильно:&prompt.root; export LD_LIBRARY_PATH=/oracle/IDS/lib:/sapmnt/IDS/exe:/oracle/805_32/libВыполните команду R3SETUP от имени
пользователя root из каталога установки:&prompt.root; cd /oracle/IDS/sapreorg/install
&prompt.root; ./R3SETUP -f CENTRDB.R3SСкрипт затем задает ряд вопросов (стандартные ответы даны
в скобках, а затем представлены реальные ответы):ВопросСтандартное значениеОтветEnter SAP System ID[C11]IDSEnterEnter SAP Instance Number[00]EnterEnter SAPMOUNT Directory[/sapmnt]EnterEnter name of SAP central host[troubadix.domain.de]EnterEnter name of SAP db host[troubadix]EnterSelect character set[1] (WE8DEC)EnterEnter Oracle server version (1) Oracle 8.0.5, (2) Oracle 8.0.6, (3) Oracle 8.1.5, (4) Oracle 8.1.61EnterExtract Oracle Client archive[1] (Yes, extract)EnterEnter path to KERNEL CD[/sapcd]/oracle/IDS/sapreorg/KERNELEnter path to RDBMS CD[/sapcd]/oracle/IDS/sapreorg/RDBMSEnter path to EXPORT1 CD[/sapcd]/oracle/IDS/sapreorg/EXPORT1Directory to copy EXPORT1 CD[/oracle/IDS/sapreorg/CD4_DIR]EnterEnter path to EXPORT2 CD[/sapcd]/oracle/IDS/sapreorg/EXPORT2Directory to copy EXPORT2 CD[/oracle/IDS/sapreorg/CD5_DIR]EnterEnter path to EXPORT3 CD[/sapcd]/oracle/IDS/sapreorg/EXPORT3Directory to copy EXPORT3 CD[/oracle/IDS/sapreorg/CD6_DIR]EnterEnter path to EXPORT4 CD[/sapcd]/oracle/IDS/sapreorg/EXPORT4Directory to copy EXPORT4 CD[/oracle/IDS/sapreorg/CD7_DIR]EnterEnter path to EXPORT5 CD[/sapcd]/oracle/IDS/sapreorg/EXPORT5Directory to copy EXPORT5 CD[/oracle/IDS/sapreorg/CD8_DIR]EnterEnter path to EXPORT6 CD[/sapcd]/oracle/IDS/sapreorg/EXPORT6Directory to copy EXPORT6 CD[/oracle/IDS/sapreorg/CD9_DIR]EnterEnter amount of RAM for SAP + DB850Enter (in Megabytes)Service Entry Message Server[3600]EnterEnter Group-ID of sapsys[101]EnterEnter Group-ID of oper[102]EnterEnter Group-ID of dba[100]EnterEnter User-ID of sidadm[1000]EnterEnter User-ID of orasid[1002]EnterNumber of parallel procs[2]EnterЕсли вы не скопировали диски в разные каталоги,
инсталлятор &sap; не сможет найти
необходимые CD (идентифицируемые файлом
LABEL.ASC на диске) и попросит затем
вставить и смонтировать CD, и подтвердить или ввести точку
его монтирования.Файл CENTRDB.R3S может содержать
ошибки. В нашем случае, он снова запросил EXPORT4 CD, но
указал корректный ключ (6_LOCATION, затем 7_LOCATION и т.д.),
так что, можно просто продолжать вводить корректные
значения.За исключением нескольких упомянутых ниже проблем, все
должно идти нормально до момента, когда придется устанавливать
программное обеспечение для работы с базой данных &oracle;.Запуск R3SETUP 4.6C SR2Проверьте, что переменная среды LD_LIBRARY_PATH
установлена правильно. Это значение отличается от использованного
при установке версии 4.6B с
&oracle; 8.0.5:&prompt.root; export LD_LIBRARY_PATH=/sapmnt/PRD/exe:/oracle/PRD/817_32/libВыполните команду R3SETUP от имени
пользователя root из каталога установки:&prompt.root; cd /oracle/PRD/sapreorg/install
&prompt.root; ./R3SETUP -f CENTRAL.R3SСкрипт затем задаст ряд вопросов (стандартные значения
даны в скобках, а затем идут реальные ответы):ВопросСтандартное значениеОтветEnter SAP System ID[C11]PRDEnterEnter SAP Instance Number[00]EnterEnter SAPMOUNT Directory[/sapmnt]EnterEnter name of SAP central host[majestix]EnterEnter Database System ID[PRD]PRDEnterEnter name of SAP db host[majestix]EnterSelect character set[1] (WE8DEC)EnterEnter Oracle server version (2) Oracle 8.1.72EnterExtract Oracle Client archive[1] (Yes, extract)EnterEnter path to KERNEL CD[/sapcd]/oracle/PRD/sapreorg/KERNELEnter amount of RAM for SAP + DB20441800Enter (in Megabytes)Service Entry Message Server[3600]EnterEnter Group-ID of sapsys[100]EnterEnter Group-ID of oper[101]EnterEnter Group-ID of dba[102]EnterEnter User-ID of oraprd[1002]EnterEnter User-ID of prdadm[1000]EnterLDAP support3Enter (no support)Installation step completed[1] (continue)EnterChoose installation service[1] (DB inst,file)EnterПока создание пользователей дает сообщение об ошибке при
установке на стадиях OSUSERDBSID_IND_ORA (создание пользователя
orasid) и
OSUSERSIDADM_IND_ORA (создание пользователя
sidadm).За исключением некоторых упомянутых далее проблем, все
должно идти нормально до момента, когда придется устанавливать
программное обеспечение для работы с базой данных &oracle;.Установка &oracle; 8.0.5Описания возможных проблем с Linux и Сервером
&oracle; см. в соответствующих файлах
&sap; Notes и &oracle; Readme. Большинство,
если не все проблемы, связаны с несовместимыми библиотеками.Подробнее об установке &oracle;
- см. в главе Установка
+ см. в разделе Установка
&oracle;.Установка &oracle; 8.0.5 с помощью orainstЕсли надо использовать &oracle;
8.0.5, для успешной перекомпоновки понадобится
несколько дополнительных библиотек, поскольку
&oracle; 8.0.5 был скомпонован со
старой версией glibc (RedHat 6.0), но уже RedHat 6.1 использует
новую библиотеку glibc. Так что, для успешной перекомпоновки
нужно установить следующие дополнительные пакеты:compat-libs-5.2-2.i386.rpmcompat-glibc-5.2-2.0.7.2.i386.rpmcompat-egcs-5.2-1.0.3a.1.i386.rpmcompat-egcs-c++-5.2-1.0.3a.1.i386.rpmcompat-binutils-5.2-2.9.1.0.23.1.i386.rpmДополнительную информацию см. в файлах &sap; Notes или &oracle;
Readme. Если установить эти пакеты не
представляется возможным (на момент установки у нас не было
времени, чтобы это проверить), можно использовать исходные двоичные
модули или перекомпонованные двоичные модули с исходной системы
RedHat.Для компиляции интеллектуального агента должен быть
установлен пакет RedHat Tcl. Если вы не можете найти пакет
tcl-8.0.3-20.i386.rpm, подойдет и более
новый, вроде tcl-8.0.5-30.i386.rpm для
RedHat 6.1.За исключением перекомпоновки, установка выполняется
просто:&prompt.root; su - oraids
&prompt.root; export TERM=xterm
&prompt.root; export ORACLE_TERM=xterm
&prompt.root; export ORACLE_HOME=/oracle/IDS
&prompt.root; cd $ORACLE_HOME/orainst_sap
&prompt.root; ./orainstНажимайте на всех экранах клавишу Enter,
пока программное обеспечение не будет установлено, убрав только
пометку выбора с &oracle; On-Line Text Viewer,
поскольку этого компонента для Linux сейчас нет.
&oracle; затем захочет
перекомпоновать модули с помощью
i386-glibc20-linux-gcc
вместо имеющихся gcc, egcs
или i386-redhat-linux-gcc.Из-за нехватки времени мы решили использовать двоичные
модули из версии &oracle; 8.0.5
PreProduction после того, как первая попытка
заставить работать версию с RDBMS CD провалилась, — попытки
найти и загрузить требуемые пакеты RPM нам показались настоящим
кошмаром.Установка &oracle; 8.0.5 Pre-production Release для
Linux (ядро 2.0.33)Эту установку выполнить очень легко. Монтируем CD, запускаем
инсталлятор. Затем он запрашивает местонахождение начального
каталога &oracle; и копирует туда двоичные модули. Мы, однако,
не удаляли остатки прежних попыток установить RDBMS.В конечном итоге, базу данных &oracle;
удалось запустить без проблем.Установка tar-архива &oracle; 8.1.7 для LinuxСоздайте tar-архив oracle81732.tgz
каталога установки на Linux-системе и разархивируйте его в
каталог /oracle/SID/817_32/.Продолжение установки &sap.r3;Сначала проверьте настройку среды для пользователей
idsamd (sidadm) и
oraids (orasid). У
них обоих должны теперь быть файлы .profile,
.login и .cshrc,
использующие hostname. Если имя хоста в системе
полностью уточнено, надо заменить hostname
командой hostname -s во всех трех файлах.Загрузка базы данныхПотом команду R3SETUP можно либо
перезапустить, либо продолжить (в зависимости от того, была
ли завершена ее работа). R3SETUP затем
создает табличные пространства и загружает данные (для 46B
- IDES - с дисков от EXPORT1 до EXPORT6, для 46C -
+ IDES — с дисков от EXPORT1 до EXPORT6, для 46C —
с дисков от DISK1 до DISK4) в базу данных с помощью утилиты
R3load.После завершения загрузки базы данных (это может занять
несколько часов), будет запрошено несколько паролей. Для тестовых
установок можно использовать хорошо известные стандартные
- пароли (но если защита важна - используйте другие!):
+ пароли (но если защита важна — используйте другие!):
ВопросОтветEnter Password for sapr3sapEnterConfirum Password for sapr3sapEnterEnter Password for syschange_on_installEnterConfirm Password for syschange_on_installEnterEnter Password for systemmanagerEnterConfirm Password for systemmanagerEnterМы столкнулись с несколькими проблемами с
dipgntab при установке 4.6B.Процесс прослушиванияЗапустите процесс прослушивания
(&oracle; Listener) от имени
пользователя orasid
следующим образом:&prompt.user; umask 0; lsnrctl startВ противном случае, вы можете получить сообщение об
ошибке ORA-12546, поскольку у сокетов
будут неправильные права доступа. См. &sap; Note 072984.Обновление таблиц MNLSЕсли вы планируете использовать в системе
&sap; языки, для которых не
подходит кодировка Latin-1, придется изменить таблицы
Multi National Language Support. Эта процедура описана в
&sap; OSS Notes 15023 и 45619. Если же нет, можете пропустить
этот вопрос в ходе установки &sap;.Если вам не нужна поддержка MNLS, все равно необходимо
проверить таблицу TCPDB и инициализировать ее, если это еще не
было сделано. Дополнительную информацию см. в &sap; Note 0015023
и 0045619.Шаги после установкиЗапрос лицензионного ключа &sap.r3;Вы должны запросить ваш лицензионный ключ
&sap.r3;. Это необходимо, поскольку
временная лицензия, использованная в ходе установки, действительна
только четыре недели. Сначала получите ключ оборудования.
Зарегистрируйтесь как пользователь idsadm
и вызовите команду saplicense:&prompt.root; /sapmnt/IDS/exe/saplicense -getПри вызове команды saplicense без
параметров будет выдан список опций. После получения
лицензионного ключа, его можно установить с помощью
команды:&prompt.root; /sapmnt/IDS/exe/saplicense -installЗатем вас попросят ввести следующие значения:SAP SYSTEM ID = SID, 3 символа
CUSTOMER KEY = ключ оборудования, 11 символов
INSTALLATION NO = установка, 10 цифр
EXPIRATION DATE = yyyymmdd, обычно - "99991231"
LICENSE KEY = лицензионный ключ, 24 символаСоздание пользователейСоздайте пользователя в клиенте 000 (некоторые задачи
обязательно надо выполнять из клиента 000, от имени пользователя,
отличающегося от sap* и
ddic). В качестве имени пользователя мы
обычно выбираем wartung (или
service, по английски). Требуются профили
sap_new и sap_all. Для
дополнительной защиты надо изменить пароли стандартных
пользователей на всех клиентах (в том числе, пользователей
sap* и ddic).Конфигурирование системы передачи, профиля, режимов работы и т.п.В клиенте 000, от имени пользователя, отличающегося от
ddic и sap*,
выполните, как минимум, следующее:ЗадачаТранзакцияСконфигурируйте систему передачи, например, как Stand-Alone Transport Domain EntitySTMSСоздайте/Отредактируйте профиль для системыRZ10Сконфигурируйте режимы работы и экземплярыRZ04Эти и другие шаги, которые надо выполнить после установки,
подробно описаны в руководствах по установке
&sap;.Редактирование initsid.sap (initIDS.sap)Файл /oracle/IDS/dbs/initIDS.sap
содержит профиль резервного копирования
&sap;. Здесь надо задать размер
используемой ленты, тип сжатия и т.д. Чтобы можно было
использовать sapdba /
brbackup, мы изменили следующие значения:compress = hardware
archive_function = copy_delete_save
cpio_flags = "-ov --format=newc --block-size=128 --quiet"
cpio_in_flags = "-iuv --block-size=128 --quiet"
tape_size = 38000M
tape_address = /dev/nsa0
tape_address_rew = /dev/sa0Объяснения:compress: мы использовали ленту HP DLT1,
которая поддерживает аппаратное сжатие.archive_function: этот параметр задает
стандартное поведение для сохранения архивных журналов &oracle;:
новые журнальные файлы сохраняются на ленту, уже сохраненные
файлы журнала сохраняются еще раз, а затем удаляются. Это
предотвращает многочисленные проблемы, если потребуется
восстановить базу данных, а одна из архивных лент окажется
сбойной.cpio_flags: по умолчанию используется
, что устанавливает размер блока 5120 байт.
Для лент DLT компания HP рекомендует размер блока не меньше
32 Кбайт, поэтому мы использовали значение
для задания размера блока
64 Кбайта. Опция необходима,
поскольку у нас есть индексные дескрипторы (inodes) с номерами
больше 65535. Последняя опция, необходима
потому, что иначе команда brbackup выдает
сообщение об ошибке, как только команда cpio
выдаст количество сохраненных блоков.cpio_in_flags: флаги, необходимые для
загрузки данных с ленты. Формат распознается автоматически.tape_size: обычно этот параметр задает
реальную ёмкость ленты. Из соображений надежности (мы используем
аппаратное сжатие), задано значение несколько меньше
фактического.tape_address: устройство без перемотки
для использования в команде cpio.tape_address_rew: устройство с
перемоткой для использования в команде
cpio.Проблемы конфигурирования после установкиСледующие параметры &sap; надо
настроить после установки (примеры для IDES 46B,
1 Гбайт памяти):ИмяЗначениеztta/roll_extension250000000abap/heap_area_dia300000000abap/heap_area_nondia400000000em/initial_size_MB256em/blocksize_kB1024ipc/shm_psize_4070000000&sap; Note 0013026:ИмяЗначениеztta/dynpro_area2500000&sap; Note 0157246:ИмяЗначениеrdisp/ROLL_MAXFS16000rdisp/PG_MAXFS30000При указанных выше параметрах в системе с 1 Гбайт
памяти можно обнаружить примерно следующее использование
памяти:Mem: 547M Active, 305M Inact, 109M Wired, 40M Cache, 112M Buf, 3492K FreeПроблемы в ходе установкиПерезапуск R3SETUP после устранения проблемыR3SETUP останавливается при выявлении
ошибки. Если вы просмотрели соответствующие журнальные файлы и
исправили ошибку, придется запускать R3SETUP
снова, обычно выбирая REPEAT как опцию для последнего шага,
на котором команда R3SETUP выдала сообщение
об ошибке.Для перезапуска команды R3SETUP просто
запустите её с соответствующим файлом
R3S:&prompt.root; ./R3SETUP -f CENTRDB.R3Sдля 4.6B или с файлом&prompt.root; ./R3SETUP -f CENTRAL.R3Sдля 4.6C, независимо от того, произошла ли ошибка
при работе с файлом CENTRAL.R3S или
DATABASE.R3S.На некоторых стадиях команда R3SETUP
предполагает, что запущены и работают процессы как сервера
базы данных, так и &sap; (поскольку
эти шаги уже выполнены). Если возникнут ошибки и, например,
запустить сервер базы данных не получится, придется вручную
запускать сервер базы данных и &sap;
после исправления ошибок и до повторного запуска
R3SETUP.Не забудьте также снова запустить процесс прослушивания
&oracle; (как пользователь
orasid с помощью
команды umask 0; lsnrctl start), если он тоже
был остановлен (например, из-за необходимой перезагрузки
системы).OSUSERSIDADM_IND_ORA в ходе R3SETUPЕсли R3SETUP выдает сообщения об
ошибках на этом этапе, отредактируйте используемый при этом
файл шаблона R3SETUP
(CENTRDB.R3S (4.6B), либо
CENTRAL.R3S или
DATABASE.R3S (4.6C)).
Найдите раздел [OSUSERSIDADM_IND_ORA] или
поищите единственную запись STATUS=ERROR и
отредактируйте следующие значения:HOME=/home/sidadm (было пусто)
STATUS=OK (был статус ERROR)
Затем надо снова перезапустить
R3SETUP.OSUSERDBSID_IND_ORA в ходе R3SETUPВозможно, команда R3SETUP также выдаст
сообщения об ошибке на этой стадии. Ошибка здесь аналогична
возникающей на стадии OSUSERSIDADM_IND_ORA. Просто отредактируйте
используемый файл шаблона R3SETUP
(CENTRDB.R3S (4.6B), либо
CENTRAL.R3S или
DATABASE.R3S (4.6C)).
Найдите раздел [OSUSERDBSID_IND_ORA] или поищите
единственную запись STATUS=ERROR и
отредактируйте следующее значение в этом разделе:STATUS=OKЗатем перезапустите R3SETUP.oraview.vrf FILE NOT FOUND в ходе установки &oracle;Вы не сняли выбор с &oracle; On-Line Text
Viewer перед началом установки. Он помечен для
установки, хотя этот продукт и не доступен сейчас для Linux.
Снимите пометку с этого продукта в меню установки
&oracle; и перезапустите
установку.TEXTENV_INVALID в ходе R3SETUP, RFC или запуска SAPguiЕсли возникает эта ошибка, не найдена нужная локаль.
&sap; Note 0171356 перечисляет необходимые пакеты RPM, которые
надо установить (например, saplocales-1.0-3,
saposcheck-1.0-1 для RedHat 6.1). Если
игнорировать все ошибки и менять STATUS
соответствующих шагов с ERROR на
OK (в файле CENTRDB.R3S)
каждый раз, когда R3SETUP сообщает об
ошибке и просто перезапуск ать R3SETUP, система
&sap; не будет правильно
сконфигурирована, и вы затем не сможете подключиться к системе
с помощью SAPgui, хотя запустить
систему и получится. Попытка подключения с помощью старой
Linux-версии SAPgui приведет к выдаче
следующих сообщений:Sat May 5 14:23:14 2001
*** ERROR => no valid userarea given [trgmsgo. 0401]
Sat May 5 14:23:22 2001
*** ERROR => ERROR NR 24 occured [trgmsgi. 0410]
*** ERROR => Error when generating text environment. [trgmsgi. 0435]
*** ERROR => function failed [trgmsgi. 0447]
*** ERROR => no socket operation allowed [trxio.c 3363]
SpeicherzugriffsfehlerЭто связано с тем, что система
&sap.r3; не может корректно назначить
локаль и сама не была надлежащим образом сконфигурирована
(не хватает записей в некоторых таблицах базы данных). Чтобы
можно было подключиться к &sap;,
добавьте следующие записи в файл DEFAULT.PFL
(см. Note 0043288):abap/set_etct_env_at_new_mode = 0
install/collate/active = 0
rscp/TCP0B = TCP0BПерезапустите систему &sap;. Теперь
вы можете подключиться к системе, хотя специфические для страны
языковые установки могут работать не так, как предполагалось.
После исправления настроек страны (и добавления соответствующих
локалей) эти записи можно удалить из файла
DEFAULT.PFL и перезапустить систему &sap;.ORA-00001Эта ошибка возникает только с
&oracle; 8.1.7 на FreeBSD 4.5.
Причина в том, что сервер &oracle;
не может правильно проинициализироваться и аварийно завершает
работу, оставляя не освобожденными в системе семафоры и
совместно используемую память. При следующей попытке запустить сервер
базы данных выдается ошибка ORA-00001.Найдите оставшиеся семафоры и сегменты памяти с помощью
команды ipcs -a и удалите с помощью
ipcrm.ORA-00445 (фоновый процесс PMON не запущен)Эта ошибка произошла с &oracle; 8.1.7.
Она выдается, если сервер был запущен с помощью обычного
скрипта startsap (например,
startsap_majestix_00) от имени пользователя
prdadm.Возможный способ обхода – запускать сервер базы данных
от имени пользователя oraprd с помощью
svrmgrl:&prompt.user; svrmgrl
SVRMGR> connect internal;
SVRMGR> startup;
SVRMGR> exitORA-12546 (запускайте процесс прослушивания с правильными правами)Запускайте процесс прослушивания
&oracle; от имени пользователя
oraids следующими командами:&prompt.root; umask 0; lsnrctl startВ противном случае, вы можете получить сообщение об ошибке
ORA-12546, поскольку сокеты не будут иметь
нужных прав доступа. См. &sap; Note 0072984.ORA-27102 (не хватает памяти)Эта ошибка произошла при попытке использовать значения
MAXDSIZ и DFLDSIZ больше
1 Гбайта (1024x1024x1024). Кроме того, мы получили
Linux Error 12: Cannot allocate memory.[DIPGNTAB_IND_IND] в ходе R3SETUPВ общем случае, см. &sap; Note 0130581
(прекращается работа R3SETUP на шаге
DIPGNTAB). В ходе установки
IDES-версии по каким-то причинам процесс установки использовал
вместо правильного имени системы &sap;,
IDS, пустую строку, "". Это
- к небольшим проблемам при доступе к каталогам, поскольку пути
+ приводит к небольшим проблемам при доступе к каталогам, поскольку пути
генерируются динамически на базе SID
(в данном случае, IDS). Поэтому вместо обращения к:/usr/sap/IDS/SYS/...
/usr/sap/IDS/DVMGS00используются следующие пути:/usr/sap//SYS/...
/usr/sap/D00Чтобы продолжить установку мы создали ссылку и дополнительный
каталог:&prompt.root; pwd
/compat/linux/usr/sap
&prompt.root; ls -l
total 4
drwxr-xr-x 3 idsadm sapsys 512 May 5 11:20 D00
drwxr-x--x 5 idsadm sapsys 512 May 5 11:35 IDS
lrwxr-xr-x 1 root sapsys 7 May 5 11:35 SYS -> IDS/SYS
drwxrwxr-x 2 idsadm sapsys 512 May 5 13:00 tmp
drwxrwxr-x 11 idsadm sapsys 512 May 4 14:20 transМы также нашли документы &sap; Notes (0029227 и 0008401),
описывающие это поведение. Мы не столкнулись с подобными
проблемами при установке
&sap; 4.6C.[RFCRSWBOINI_IND_IND] в ходе R3SETUPВ ходе установки &sap; 4.6C,
эта ошибка возникла в результате другой ошибки, произошедшей
ранее по ходу установки. В данном случае придется просмотреть
соответствующие журнальные файлы и устранить исходную
проблему.Если после просмотра журнальных файлов выявлена только эта
ошибка (проверьте &sap; Notes), можно поменять
STATUS соответствующего шага с ERROR на OK (в файле
CENTRDB.R3S) и перезапустить
R3SETUP. После установки надо
выполнить отчет RSWBOINS из транзакции SE38.
Дополнительную информацию о стадиях RFCRSWBOINI
и RFCRADDBDIF см. в &sap; Note 0162266.[RFCRADDBDIF_IND_IND] в ходе R3SETUPЗдесь применяются те же ограничения: проверьте путем просмотра
журнальных файлов, что эта ошибка не вызвана какими-то предыдущими
проблемами.Если подтверждается, что применим документ &sap; Note 0162266,
просто поменяйте STATUS соответствующего
шага с ERROR на OK (в
файле CENTRDB.R3S) и перезапустите R3SETUP. После установки надо выполнить
отчет RADDBDIF из транзакции SE38.sigaction sig31: File size limit exceededЭто сообщение об ошибке выдается в ходе запуска процессов
&sap;disp+work.
Если &sap; запускается скриптом
startsap, запускаются отдельные подпроцессы,
выполняющие грязную работу по запуску всех остальных процессов
&sap;. В результате, сам скрипт
не получит уведомления, если что-то пойдет не так.Чтобы проверить, нормально ли запустились процессы
&sap;, посмотрите на состояние
процессов с помощью команды ps ax |
grep SID, которая выдаст
список всех процессов &oracle; и
&sap;. Если похоже, что некоторых
процессов не хватает или вы не можете подключиться к системе
&sap;, просмотрите соответствующие
журнальные файлы, которые можно найти в каталоге
/usr/sap/SID/DVEBMGSnr/work/.
Надо просматривать файлы dev_ms и
dev_disp.Сигнал 31 выдается, если объем памяти, совместно используемой
&oracle; и
&sap;, превосходит заданный в файле
конфигурации ядра, и от него можно избавиться, указав большее
значение:# большее значение для производственных систем 46C:
options SHMMAXPGS=393216
# меньшее значение, достаточное для 46B:
#options SHMMAXPGS=262144Сбой при запуске saposcolЕсть ряд проблем с программой saposcol
(версии 4.6D). Система &sap; использует
saposcol для сбора данных о производительности
системы. Эта программа не нужна для использования системы
&sap;, так что проблему можно отнести
к несерьезным. Более старые версии (4.6B) работают, но собирают
не все данные (многие вызовы просто возвращают 0, например,
для использования процессора).Дополнительные сведенияЕсли вы интересуетесь, как обеспечивается двоичная совместимость
с Linux, этот раздел для вас. Большинство материала взято из
- электронного письма, адресованного в &a.chat; by Terry Lambert
- tlambert@primenet.com (ID письма:
+ электронного письма, адресованного Terry Lambert
+ tlambert@primenet.com в &a.chat; (ID письма:
<199906020108.SAA07001@usr09.primenet.com>).Как все это устроено?загрузчик выполняемых классовFreeBSD поддерживает абстракцию, называемую загрузчик
выполняемых классов. Фактически, он является первой
стадией системного вызова &man.execve.2;.На самом деле, FreeBSD имеет список загрузчиков вместо
одного, завершающийся загрузчиком #! для
запуска любых командных интерпретаторов и скриптов.Исторически сложилось, что единственный загрузчик в &unix;
системах проверял магическое число (чаще всего первые
4 или 8 байт файла), чтобы определить, известен ли формат
двоичного файла системе, и если да, то вызвал соответствующий
загрузчик.Если файл не опознавался системой как двоичный, системный
вызов &man.execve.2; возвращал ошибку, и текущий командный
интерпретатор начинал выполнять файл как скрипт.По умолчанию скрипт выполнялся текущим командным
интерпретатором.Позднее, &man.sh.1; был модифицирован, так, чтобы проверять
первые два символа в файле, и если они оказывались
:\n, то файл выполнялся как сценарий для
&man.csh.1; (утверждается, что SCO были первыми, кто сделал
эту модификацию).FreeBSD сейчас ведет себя по-другому: пробегает по списку
загрузчиков,включающему специальный загрузчик #!,
который вызывает нужный интерпретатор, указанный после этих символов
до следующего пробела, или /bin/sh, если
не нашел подходящего.ELFДля поддержки Linux ABI FreeBSD ищет магическое число,
соответствующее двоичному файлу ELF (на этой стадии не различаются
FreeBSD, &solaris;, Linux или любая другая ОС поддерживающая формат
ELF).SolarisДалее, ELF-загрузчик определяет марку (brand)
двоичного файла ELF (специальный комментарий в ELF-файле,
отсутствующий в двоичных файлах ELF SVR4/&solaris;).Соответственно, Linux программы должны быть
маркированы для Linux (например, с
помощью утилиты &man.brandelf.1;):&prompt.root; brandelf -t Linux fileКогда это сделано, загрузчик ELF выявит марку
Linux в файле.ELFbrandingКогда ELF-загрузчик находит маркуLinux, он заменяет соответствующий указатель в
структуре proc. Все системные вызовы
индексируются через этот указатель (в традиционной &unix; системе это
массив структур sysent[], содержащий системные
вызовы). Кроме того, процесс помечается для специальной обработки
вектора обработчиков сигналов, а также ряда других (небольших)
исправлений, которые осуществляются специальным модулем ядра для
поддержки Linux.Вектор системных вызовов Linux содержит, среди прочего, список
записей sysent[], адреса которых находятся в
модуле ядра.При выполнении системного вызова из двоичного файла Linux,
код обработчика разыменовывает указатель на функцию системного вызова
из структуры proc, и получает точки входа
системных вызовов Linux, а не FreeBSD.Плюс ко всему, в Linux–режиме динамически изменяется
корень файловой системы при поиске файлов; фактически
так же, как и параметр union при монтировании
файловых систем (не путать с unionfs!).
Сперва, файл ищется в каталоге
/compat/linux/исходное_полное_имя
и только затем, в случае неудачи, в
/исходное_полное_имя.
Это гарантирует, что программы, которым требуются другие программы,
смогут работать (например, весь набор инструментальных средств Linux
сможет работать в среде поддержки Linux ABI). Это также дает
возможность Linux программам выполнять FreeBSD команды, если не
найдется соответствующих Linux команд. Например, можно скопировать
FreeBSD &man.uname.1; в дерево каталогов
/compat/linux, и Linux-программы не смогут
разобраться, что они работают не в Linux.Фактически, имеется ядро Linux в ядре FreeBSD; различные
базовые функции, реализующие все услуги ядра, идентичны как
в записях таблицы системных вызовов FreeBSD, так и в записях
таблицы системных вызовов Linux: операции с файловой системой,
виртуальная память, средства доставки сигналов,
System V IPC … Единственное отличие в том, что
FreeBSD-программы получают интерфейсные функции
FreeBSD, а Linux-программы получают интерфейсные
функции Linux (в большинстве более старых ОС есть только их
собственные интерфейсные функции: функции берутся из статического
глобального массива структур sysent[], а не
из массива, полученного разыменованием динамически
проинициализированного указателя в структуре
proc процесса, выполняющего вызов).Какая же реализация ABI для FreeBSD родная? Это
не имеет значения. Единственное различие (на данный момент, в
будущем все может и, вероятно, изменится), пожалуй, в том, что
функции системных вызовов FreeBSD зашиты в ядро, а для Linux они
могут быть либо статически скомпонованы в ядро, либо получаться
через модуль ядра.Да, но можно ли назвать это эмуляцией? Нет. Это реализация ABI,
а не эмуляция. Как таковой, эмулятор (или симулятор)
отсутствует.В таком случае, почему же иногда говорят об
эмуляции Linux? Чтобы насолить
FreeBSD! Фактически, причина в том, что на момент первой реализации
не существовало слова, которое бы точнее описывало этот процесс.
Нельзя было сказать, что FreeBSD запускает приложения Linux (без
перекомпиляции или загрузки соответствующего модуля ядра это
невозможно). Но надо было как-то описать, что
- загружается—отсюда и эмулятор Linux.
+ загружается — отсюда и эмулятор Linux.
diff --git a/ru_RU.KOI8-R/books/handbook/multimedia/chapter.sgml b/ru_RU.KOI8-R/books/handbook/multimedia/chapter.sgml
index 5f766df953..1d52c619f4 100644
--- a/ru_RU.KOI8-R/books/handbook/multimedia/chapter.sgml
+++ b/ru_RU.KOI8-R/books/handbook/multimedia/chapter.sgml
@@ -1,1906 +1,1907 @@
MosesMooreПредоставил АлександрКоваленкоПеревод на русский язык: ДенисПеплинМультимедиаКраткий обзорFreeBSD поддерживает большое количество различных звуковых
- карт, что позволяет вам насладится высококачественным звуком. Также это
- дает вам возможность записывать и воспроизводить звуковые файлы в формате
+ карт, что позволяет вам насладится высококачественным звуком. Это также
+ дает возможность записывать и воспроизводить звуковые файлы в формате
MPEG Audio Layer 3 (MP3), WAV, Ogg Vorbis, а также во множестве других
форматов. Коллекция Портов FreeBSD также содержит ряд приложений,
позволяющих редактировать записанные звуковые файлы, добавлять звуковые
эффекты, управлять подключенными MIDI устройствами.
- Также FreeBSD может поддерживать воспроизведение видеофайлов и DVD.
+ FreeBSD может поддерживать воспроизведение видеофайлов и DVD.
Количество приложений, позволяющих кодировать, преобразовывать и
воспроизводить различные форматы видео, существенно меньше
количества приложений для работы со звуком. Например, на время написания
этого документа в Коллекции Портов FreeBSD не существовало хорошего
приложения для преобразования видео, которое могло бы быть использовано
для преобразований между разными форматами, как, например, audio/sox. Впрочем, ситуация в этой области
меняется быстро.Эта глава описывает необходимые шаги для настройки вашей звуковой
карты. Настройка и установка X11 () уже охватывает вопросы, связанные с аппаратными
установками вашей видеокарты, хотя могут быть возможности
дополнительной настройки для улучшения воспроизведения.После прочтения этой главы вы будете знать:Как настроить систему так, чтобы звуковая карта была
опознана.Методы проверки работы звуковой карты при помощи тестовых
приложений.Как исправить проблемы, возникающие при работе со звуковыми
картами.Как прослушать и создать MP3 и другие форматы.Как X сервер поддерживает видео.Некоторые проигрыватели и кодировщики видео, которые показывают
хорошие результаты.Как воспроизвести DVD, .mpg и
.avi файлы.Как скопировать информацию с CD и DVD в файлы.Как настроить ТВ тюнер.Как настроить сканер.
- Прежде, чем начать читать эту главу вы должны:
+ Перед чтением этой главы вам потребуется:
- Знать как конфигурировать и устанавливать новое ядро
+ Узнать, как конфигурировать и устанавливать новое ядро
().Попытка смонтировать аудио CD при помощи команды
&man.mount.8; как минимум, сообщит об ошибке и, как максимум, может
привести к панике ядра. Эти носители имеют
специальные форматы, которые отличны от обычной файловой системы
ISO.MosesMooreПредоставил MarcFonvieilleРасширил для &os; 5.X Настройка звуковой картыНастройка системыPCIISAзвуковые картыПеред тем как начать, определите модель вашей карты,
процессор, который она использует, и интерфейс карты: PCI или ISA.
FreeBSD поддерживает множество разных PCI и ISA карт.
Сверьтесь со списком поддерживаемых аудио устройств в Информации об оборудовании,
чтобы проверить, поддерживается ли ваша карта. Этот документ также
содержит информацию о том, какой драйвер поддерживает вашу
карту.ядроконфигурацияДля того, чтобы использовать звуковую карту, вы должный загрузить
соответствующий драйвер устройства. Этого можно достигнуть двумя путями.
Простейший способ – это просто загрузить соответствующий вашей карте
модуль ядра используя &man.kldload.8;, что можно сделать или из командной
строки:&prompt.root; kldload snd_emu10k1или добавлением соответствующей строки к файлу
/boot/loader.conf:snd_emu10k1_load="YES"Эти примеры приведены для звуковой карты Creative
&soundblaster; Live!. Другие имеющиеся модули драйверов
звуковых карты приведены в
/boot/defaults/loader.conf
Если вы не уверены, какой драйвер использовать, попробуйте загрузить
snd_driver:&prompt.root; kldload snd_driverЭто мета-драйвер, загружающий сразу все наиболее распространенные
- драйверы сразу. это повышает скорость поиска правильного драйвера.
+ драйверы сразу. Это повышает скорость поиска правильного драйвера.
Возможна также загрузка всех звуковых драйверов через
/boot/loader.conf.В &os; 4.X для загрузки всех звуковых драйверов вам будет
необходимо загрузить модуль snd вместо
snd_driver.Другой способ заключается в
добавлении статического драйвера в ядро. В разделе ниже дана
более подробная информация о том, что вам нужно сделать для добавления
поддержки оборудования. Более подробно о конфигурация ядра описана в
.Настройка собственного ядра с поддержкой звукаПервое, что необходимо сделать, это добавить в ядро
общий звуковой драйвер &man.sound.4;. Добавьте в
файл конфигурации ядра следующую строку:device soundВ &os; 4.X, вам необходимо использовать следующую
строку:device pcmЗатем необходимо добавить поддержку имеющейся звуковой
карты. Следовательно, нужно знать какой драйвер поддерживает
карту. Для этого сверьтесь со списком поддерживаемых
устройств из Информации об оборудовании.
Например, звуковая карта Creative &soundblaster; Live!
поддерживается драйвером &man.snd.emu10k1.4;.
Для добавления поддержки этой карты, используйте:device "snd_emu10k1"Прочтите страницу справочника драйвера, чтобы узнать,
какой синтаксис использовать. Информация, относящаяся
к синтаксису включения звуковых драйверов в файл конфигурации
ядра, может быть также найдена в файле
+ /usr/src/sys/conf/NOTES
(/usr/src/sys/i386/conf/LINT для
&os; 4.X).Не-PnP ISA карты могут потребовать включения в ядро
информации о настройках звуковой карты (IRQ, I/O port,
и т.д.). Эта информация добавляется редактированием
файла /boot/device.hints.
Во время загрузки системы &man.loader.8; прочтет этот
- файл и настройки ядру. Например, старая ISA не-PnP карта
+ файл и передаст настройки ядру. Например, старая ISA не-PnP карта
Creative &soundblaster; 16 использует драйвер &man.snd.sbc.4;
со следующей строкой, добавленной к файлу настройки ядра:device snd_sbcи со следующей информацией в
/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, описан в справочной
странице драйвера. В &os; 4.X эти настройки записываются
непосредственно в файл конфигурации ядра. В случае ISA
карты используется такая строка:device sbc0 at isa? port 0x220 irq 5 drq 1 flags 0x15Установки, приведенные выше, используются по умолчанию.
В некоторых случаях вам может потребоваться изменить IRQ
или другие настройки в соответствии с настройками карты.
За более подробной информацией обратитесь к странице справочника
&man.snd.sbc.4;.В &os; 4.X некоторые системы со встроенной в
материнскую плату звуковой картой могут потребовать
следующей строки в файле настройки ядра:options PNPBIOSТестирование звуковой картыПосле перезагрузки модифицированного ядра, или после загрузки
необходимого модуля, звуковая карта должна появиться в буфере
системных сообщений (&man.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:&prompt.root; 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 в привод и воспроизвести его при помощи
&man.cdcontrol.1;.&prompt.user; cdcontrol -f /dev/acd0 play 1Различные приложения, например audio/workman может предоставить
+ role="package">audio/workman могут предоставить
более дружественный
пользователю интерфейс. Вы можете также установить
приложения для прослушивания звуковых файлов MP3, как например
audio/mpg123. Быстрым способом
тестирования звуковой карты является отправка данных в
- файл /dev/dsp, как здесь:
+ файл /dev/dsp, как показано здесь:
&prompt.user; cat filename > /dev/dspгде filename может быть любым
файлом. Результатом выполнения этой команды станет шум,
который означает, что звуковая карта на самом деле
работает.Пользователям &os; 4.X потребуется создать устройства
звуковой карты перед тем, как ее использовать. Если в буфере
системных сообщений карта появилась как
pcm0, вам необходимо выполнить от
root следующее:&prompt.root; cd /dev
&prompt.root; sh MAKEDEV snd0Если карта обнаружена как pcm1,
выполните то же самое, заменив
snd0 на
snd1.MAKEDEV создаст группу файлов устройств,
которые будут использоваться различными звуковыми
приложениями.Уровни громкости звука могут быть изменены командой &man.mixer.8;.
Более подробная информация находится на странице справочной системы
&man.mixer.8;.Часто встречающиеся проблемыфайлы устройствпорт ввода-выводаIRQDSPОшибкаРешениеunsupported subdevice XXОдно или более устройств не были правильно
созданы. Повторите приведенные выше шаги.sb_dspwr(XX) timed outПорт ввода-вывода указан неправильно.bad irq XXIRQ установлен неправильно. Убедитесь, что
настройки в системе и на карте одинаковы.xxx: gus pcm not attached, out of
memoryДля использования устройства недостаточно
памяти.xxx: can't open /dev/dsp!Проверьте с помощью fstat | grep
dsp, не занято ли устройство другим приложением.
Создать проблемы могут esound и
поддержка звука в KDE.MunishChopraПредоставил Использование нескольких источников звукаДостаточно часто встречается необходимость иметь несколько источников
звука, которые должны воспроизводить одновременно, например когда
esound или artsd не
поддерживают совместное использование звукового устройства с некоторым
приложением.FreeBSD позволяет делать это при помощи виртуальных
звуковых каналов, которые могут быть настроены с помощью
&man.sysctl.8;. Виртуальные каналы позволяют вам мультиплексировать
каналы воспроизведения звуковой карты, смешивая звук в ядре.Для установки количества виртуальных каналов вы можете использовать
две переменные sysctl, которые, если вы пользователь root,
могут быть установлены таким образом:&prompt.root; sysctl hw.snd.pcm0.vchans=4
&prompt.root; sysctl hw.snd.maxautovchans=4В этом примере выделяются четыре виртуальных канала, чего вполне
достаточно для повседневного использования.
hw.snd.pcm0.vchans это количество виртуальных каналов
устройства pcm0, оно может быть установлено сразу
же, как только устройство было подключено.
hw.snd.maxautovchans это количество виртуальных
каналов, которые выделяются новому аудио устройству, когда оно
подключается при помощи &man.kldload.8;. Так как модуль
pcm может быть загружен независимо от аппаратных
драйверов, hw.snd.maxautovchans может указывать
количество виртуальных каналов для любых устройств, которые будут подключены
позже.Если вы не используете &man.devfs.5;, необходимо будет указать
приложениям
/dev/dsp0.x, где
x это число от 0 до 3, если
hw.snd.pcm0.vchans установлено в значение 4. Для
системы, использующей &man.devfs.5;, вышеуказанные настройки будут
сделаны автоматически прозрачно для пользователя.JosefEl-RayesПредоставил Установка значений по умолчанию для каналов mixerЗначения по умолчанию для различных каналов mixer жестко
прописаны в исходных текстах драйвера &man.pcm.4;. Существует
множество различных приложений и даемонов, которые позволяют
устанавливать значения для mixer, которые они запоминают
и выставляют каждый раз при запуске, но это не совсем
правильное решение, нам нужны значения по умолчанию на уровне
драйвера. Они могут быть установлены путем указания
в /boot/device.hints. Например:hint.pcm.0.vol="100"Установит значение для канала volume в значение по умолчанию
100, как только будет загружен модуль &man.pcm.4;.Только &os; 5.3 и более свежие релизы поддерживают
эту возможность.ChernLeeПредоставил Звук MP3MP3 (MPEG Layer 3 Audio) достигает качества звука, близкого к CD, и
нет причин не воспользоваться им на вашей рабочей
станции.Проигрыватели MP3На данный момент наиболее популярным MP3-проигрывателем для
- &xfree86; является
+ X11 является
XMMS (X Multimedia System). Скины приложения
WinAMP могут быть использованы для
XMMS так как графический интерфейс
пользователя практически идентичен интерфейсу программы
WinAMP от Nullsoft.
XMMS поддерживает также собственные
расширения.XMMS может быть установлен из порта или
пакета multimedia/xmms.Интерфейс XMMS интуитивно понятен и
включает в себя список песен, графический эквалайзер и многое другое.
- Те, кто знаком с WinAMP найдут
+ Те, кто знаком с WinAMP, найдут
XMMS очень простым в использовании.Порт audio/mpg123 является
альтернативой, это MP3-проигрыватель для командной строки.mpg123 может быть запущен с указанием
звукового устройства и файла MP3 в командной строке как показано
ниже:&prompt.root; 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 для вашей системы.Копирование аудио дорожек с CDПеред тем как преобразовывать CD или дорожку CD в MP3, аудио данные
на CD должны быть скопированы на жёсткий диск. Это можно сделать путём
копирования данных CDDA (CD Digital Audio) в файл WAV.Утилита cdda2wav, которая является частью пакета
sysutils/cdrtools, может быть
использована для копирования аудио информации с CD, а также различной
связанной информации.Когда музыкальный CD находится в приводе, следующая команда может
быть выполнена под root для того,
чтобы скопировать весь CD в отдельные (один на каждую дорожку) WAV
файлы:&prompt.root; cdda2wav -D 0,1,0 -Bcdda2wav поддерживает ATAPI (IDE)
приводы CDROM. Для копирования с IDE привода, укажите имя устройства
вместо номеров SCSI. Например, для того, чтобы скопировать 7-ую
аудио дорожку с IDE-привода:&prompt.root; cdda2wav -D /dev/acd0a -t 7Параметр
указывает устройство SCSI 0,1,0,
соответственно результату работы cdrecord
-scanbus.Для того, чтобы копировать отдельные дорожки, используйте параметр
как показано ниже:&prompt.root; cdda2wav -D 0,1,0 -t 7Этот пример показывает как скопировать 7-ю дорожку музыкального CD.
Для того чтобы скопировать набор дорожек, например, с первой по
седьмую, укажите диапазон:&prompt.root; cdda2wav -D 0,1,0 -t 1+7Утилита &man.dd.1; также может быть использована для копирования
аудио дорожек на приводах ATAPI, для того, чтобы узнать больше об этом,
прочитайте .
- Создание (encoding) файлов MP3
+ Создание файлов MP3На сегодняшний день наилучшим выбором программы для создания mp3
является lame.
Lame находится в дереве портов в подкаталоге
audio/lame.
- Используя скопированные файлы WAV следующая команда преобразует
+ Используя скопированные файлы WAV, следующая команда преобразует
audio01.wav в
audio01.mp3:&prompt.root; 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, но качество будет выше.
Параметр включает режим лучшее качество, но
меньше скорость. Параметры, начинающиеся с
указывают теги ID3, которые обычно содержат информацию о песне,
включаемую в файл MP3. О дополнительных настройках преобразования можно
узнать, прочитав страницу руководства lame.Декодирование 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.pcmXMMS записывает файл в формате WAV, в то
время как mpg123 преобразовывает MP3 в
простые аудио данные PCM. Оба формата могут быть использованы
cdrecord для создания музыкальных
CD.
Для использования &man.burncd.8; вам потребуются простые аудио данные
PCM. Если же вы будете использовать файлы в формате WAV, то заметите
небольшой щелчок в начале каждой аудио дорожки, этот щелчок - заголовок
файла в формате WAV. Вы очень просто можете избавиться от него путём
удаления заголовка WAV при помощи утилиты
SoX (она может быть установлена из порта
audio/sox или соответствующего
пакета:&prompt.user; sox -t wav -r 44100 -s -w -c 2 track.wav track.rawПрочтите для того, чтобы узнать
больше о записи CD в FreeBSD.RossLippertПредоставил Воспроизведение видеоВоспроизведение видео является очень новой и быстро развивающейся
областью применения. Будьте терпеливы. Не всё будет работать так
беспроблемно, как это было со звуком.Прежде, чем вы начнёте, определите модель видеокарты и
чипсет, который она использует. Хотя &xorg;
и &xfree86;
поддерживают множество различных видеокарт, только их малая часть
показывает хорошую скорость воспроизведения видео. Для того, чтобы
получить список расширений, поддерживаемых X-сервером, который
используется вашей видеокартой, используйте команду &man.xdpyinfo.1; во
время работы X11.Неплохо также иметь небольшой файл MPEG, который бы использовался
как тестовый файл для проверки различных проигрывателей и настроек. Так
как некоторые проигрыватели DVD будут искать носитель DVD как
/dev/dvd по умолчанию или быть жёстко настроены
на него, возможно будет полезно сделать символические ссылки на
правильные устройства:&prompt.root; ln -sf /dev/acd0c /dev/dvd
&prompt.root; ln -sf /dev/racd0c /dev/rdvdДля FreeBSD 5.X, которая использует &man.devfs.5; рекомендуется
немного другой набор ссылок:&prompt.root; ln -sf /dev/acd0 /dev/dvd
&prompt.root; ln -sf /dev/acd0 /dev/rdvdОбратите внимание, природа &man.devfs.5; такова, что такие созданные
вручную ссылки не сохраняются при перезагрузке системы. Для
автоматического создания символических ссылок при каждой загрузке
системы добавьте в /etc/devfs.conf
следующие строки:link acd0 dvd
link acd0 rdvdКроме того, декодирование DVD требует доступа к специальным
функциям DVD-ROM, поэтому должен быть доступ на запись для устройств
DVD.параметры ядраoptions CPU_ENABLE_SSEпараметры ядраoptions USER_LDTНекоторые из обсуждаемых портов полагаются на наличие некоторых
параметров ядра для правильной сборки. Перед тем, как собирать порты,
добавьте эти параметры в файл конфигурации ядра, пересоберите ядро и
перезагрузите систему:option CPU_ENABLE_SSE
option USER_LDToption USER_LDT в &os; 5.X
не существует.Для того, чтобы улучшить работу разделяемой памяти X11,
рекомендуется увеличить значения некоторых переменных
&man.sysctl.8;:kern.ipc.shmmax=67108864
kern.ipc.shmall=32768Определение возможностей видеоXVideoSDLDGAСуществует несколько возможных путей отображения видео под X11. Что
именно будет действительно работать, во многом зависит от аппаратного
обеспечения. Каждый из описанных методов будет работать с различным
качеством
на разном аппаратном обеспечении. Во-вторых, воспроизведение видео в
X11, это тема, которой уделяется достаточно много внимания последнее
время, и с каждой новой версией &xorg;
или &xfree86; могут
наблюдаться значительные улучшения.Список наиболее часто используемых видеоинтерфейсов:X11: обычный вывод X11 с использованием разделяемой памяти.XVideo: расширение интерфейса X11, которое поддерживает видео в
любом объекте X11.SDL: the Simple Directmedia Layer.
- DGA: the Direct Graphics Access — Прямой Доступ для
- Графики.
+ DGA: the Direct Graphics Access — прямой доступ для
+ графики.SVGAlib: низкоуровневый доступ к графике на консоли.XVideo&xorg; и
&xfree86; 4.X включают в себя
расширение, называющееся XVideo (также известное
как Xvideo, Xv и xv), которое позволяет отображать видео прямо на
объектах при помощи специального ускорения. Это расширение
предоставляет очень хорошее качество воспроизведения даже на low-end
машинах.Для того чтобы проверить, работает ли это расширение, используйте
команду xvinfo:&prompt.user; xvinfoXVideo поддерживается вашей видеокартой, если результат выглядит приблизительно так: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 не поддерживается вашей видеокартой, то это всего лишь
означает, что будет сложнее получить приемлемые для воспроизведения
видео вычислительные мощности. В зависимости от вашей видеокарты и
процессора, возможно, вы сможете получить удовлетворительный результат.
Возможно, вы должны будете прочитать о путях улучшения
- производительности здесь: .Simple Directmedia LayerSDL был задуман как уровень абстракции для разработки
кросплатформенных приложений под µsoft.windows;, BeOS и &unix;, позволяя
им эффективно использовать звук и графику. SDL предоставляет
- низкоуровневые абстракции для аппаратного обеспечения, что, зачастую,
+ низкоуровневые абстракции для аппаратного обеспечения, и
может быть более эффективным чем интерфейс X11.SDL есть в Коллекции портов FreeBSD: devel/sdl12.Прямой доступ для графики (DGA)
- DGA это расширение &xfree86; которое позволяет программам напрямую
+ DGA это расширение X11, которое позволяет программам напрямую
изменять кадровый буфер (framebuffer) без участия X-сервера. Поскольку
DGA основывается на низкоуровневом доступе к памяти, программы, которые
используют его должны исполняться от пользователя
root.Расширение DGA может быть протестировано при помощи &man.dga.1;.
Когда dga запущена, она изменяет цвета на экране при
каждом нажатии клавиш. Для того, чтобы выйти из неё, используйте
q.Порты и пакеты для работы с видеовидео портывидео пакетыЭтот раздел обсуждает программное обеспечение для работы с видео
из Коллекции Портов FreeBSD. Воспроизведение видео является
очень активной сферой разработок программного обеспечения и возможности
различных приложений могут несколько отличаться от описанных
здесь.Во-первых, важно помнить, что многие приложения для работы с
видео, которые работают на FreeBSD, были разработаны как приложения
Linux. Многие из этих приложений все еще бета-качества. Вот
некоторые проблемы, которые могут встретиться в работе видео
пакетов на FreeBSD:Приложение не может воспроизвести файл, который создало другое
приложение.Приложение не может воспроизвести файл, который создало
само.Одно и то же приложение на разных машинах, скомпилированное на
каждой машине специально для неё, воспроизводит один и тот же файл
различно.Кажущийся тривиальным фильтр, например фильтр изменения размеров
изображения, приводит к очень плохим артефактам из-за
неправильной функции изменения размера.Приложение часто не работает (оставляет core-файл).Документация не устанавливается вместе с портом и может быть
найдена лишь на сайте или в каталоге порта
work.Многие из этих приложений могут также проявлять
линуксизмы. Так, это могут быть
некоторые проблемы, связанные со способом реализации некоторых
стандартных библиотек в дистрибутивах Linux, или некоторыми
дополнительными возможностями ядра Linux, которые авторы приложений
посчитали существующими везде. Эти проблемы не всегда могут быть
обнаружены людьми,
поддерживающими порт (порты), вследствие чего могут возникнуть проблемы,
сходные с нижеперечисленными:Использование /proc/cpuinfo для того, чтобы
определить характеристики процессора.Неправильное использование нитей (threads), которое может
привести к зависанию программы при завершении вместо нормального
выхода.Программного обеспечения, которое обычно используется совместно
с данным приложением, ещё нет в Коллекции Портов FreeBSD.Таким образом, разработчики этих приложений должны сотрудничать с
людьми, поддерживающими порты, для того, чтобы минимизировать количество
обходных путей, необходимых для портирования.MPlayerMPlayer это недавно разработанный и
быстро развивающийся проигрыватель видео. Задачами команды
разработчиков MPlayer являются скорость и
гибкость при работе на Linux и других Unix-системах. Проект был начал,
когда его основатель стал сыт по горло плохой производительностью и
качеством проигрывателей того времени. Некоторые могут сказать, что
графический интерфейс был принесён в жертву рационализированному
дизайну. Однако, как
только вы привыкнете к опциям командной строки MPlayer и его управлению
с клавиатуры, всё будет хорошо.Компиляция MPlayerMPlayerсборкаMPlayer находится в multimedia/mplayer. MPlayer производит
различные тесты аппаратного обеспечения во время процесса компиляции,
в результате чего полученные исполняемые модули не могут быть
перенесены с одной системы на другую. Поэтому важно собирать его из
портов, а не использовать бинарный пакет. Также, при сборке вы можете
указать различные установки при помощи параметров командной строки
make, как описывается в
Makefile в начале сборки:&prompt.root; cd /usr/ports/multimedia/mplayer
&prompt.root; 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;.Использование MPlayerMPlayerиспользованиеКаждый пользователь MPlayer должен
создать подкаталог .mplayer в своем домашнем
каталоге. Для того, чтобы его создать, выполните следующие
действия:&prompt.user; cd /usr/ports/multimedia/mplayer
&prompt.user; make install-userПараметры для mplayer перечислены в страничке
руководства mplayer. За более подробной информацией вы можете обратиться
к документации в формате HTML. В этом разделе мы опишем несколько самых
распространённых случаев использования mplayer.Для того, чтобы воспроизвести файл, например
testfile.avi через один из многих видеоинтерфейсов,
используйте параметр :&prompt.user; mplayer -vo xv testfile.avi&prompt.user; mplayer -vo sdl testfile.avi&prompt.user; mplayer -vo x11 testfile.avi&prompt.root; mplayer -vo dga testfile.avi&prompt.root; mplayer -vo 'sdl:dga' testfile.aviСтоит испробовать все варианты интерфейсов, так как их
производительность зависит от множества факторов и будет заметно меняться
в зависимости от аппаратного обеспечения.Для того, чтобы воспроизвести DVD, замените
testfile.avi на , где N является номером
дорожки, с которой следует начать воспроизведение и
DEVICE файл устройства
привода DVD. Например, для того, чтобы воспроизвести дорожку 3 с
/dev/dvd:&prompt.root; mplayer -vo xv dvd://3 -dvd-device /dev/dvdУстройство DVD по умолчанию может быть определено во время
сборки порта MPlayer параметром
WITH_DVD_DEVICE. По умолчанию,
это устройство /dev/acd0. Дополнительную
информацию можно найти в Makefile порта.Для того, чтобы остановить, приостановить или продолжить
воспроизведение, воспользуйтесь привязкой клавиш, информация о которой
может быть получена посредством запуска mplayer -h, либо
на страничке документации.Дополнительные, достаточно важные параметры воспроизведения:
, которые включают полноэкранный режим и
, который улучшает производительность на
медленных системах.Для того, чтобы командная строка запуска mplayer не становилась
слишком большой, пользователь может создать файл
.mplayer/config и установить параметры по умолчанию
там:vo=xv
fs=yes
zoom=yesТакже mplayer может быть использован для
копирования дорожек DVD в .vob файлы. Для того,
чтобы скопировать вторую дорожку DVD необходимо выполнить следующую
команду:&prompt.root; mplayer -dumpstream -dumpfile out.vob dvd://2 -dvd-device /dev/dvdПолученный файл, out.vob, будет представлять
собой MPEG, с которым можно производить различные действия при помощи
программ, которые будут описаны далее в этом разделе.mencodermencoderПеред использованием
mencoder, было бы
неплохо ближе ознакомится с его параметрами, используя документацию в
формате HTML. Также существует страничка справочника mplayer, но она не
очень полезна без HTML документации. Существует бесчисленное множество
способов улучшения качества, снижения битрейта и изменения формата; и
некоторые из этих приёмов могут влиять на производительность. Ниже
приведено несколько примеров использования mencoder.
Во-первых, простое копирование:&prompt.user; mencoder input.avi -oac copy -ovc copy -o output.avi
- Неправильная комбинация параметров командной строки привести к
+ Неправильная комбинация параметров командной строки может привести к
появлению файлов, которые невозможно будет
воспроизвести даже mplayer. Поэтому, если вы хотите
- скопировать в файл, лучше использовать только параметр
+ скопировать изображение в файл, лучше использовать только параметр
mplayer .Для того, чтобы преобразовать input.avi в MPEG4
со звуком в формате MPEG Audio Layer 3 (MP3) (требуется audio/lame):&prompt.user; mencoder input.avi -oac mp3lame -lameopts br=192 \
-ovc lavc -lavcopts vcodec=mpeg4:vhq -o output.aviЭта команда создаст файл, воспроизводимый mplayer
и xine.input.avi может быть заменён на
и
mplayer, запущенный от
пользователя root, будет преобразовывать дорожку DVD
напрямую. Так как первый раз, скорее всего, вы будете недовольны
полученными результатами, всё же рекомендуется копировать
дорожку в файл и работать затем с файлом.Проигрыватель хinexine - это большой проект, в задачи
которого входит не только создание решения для видео все-в-одном, но и
- создание базовой библиотеки с возможностью расширения возможностей путем
- использования плагинов (расширений). Поставляется он как в виде порта,
+ создание базовой библиотеки с возможностью расширения путем
+ использования плагинов. Поставляется он как в виде порта,
так и в виде пакета, multimedia/xine.
- xine все еще несовершенен, но, все-таки это
+ xine все еще несовершенен, но все-таки это
хорошее начало. На практике xine требует либо
- быстрого процессора с быстрой видеокартой или поддержку расширения
+ быстрого процессора с быстрой видеокартой или поддержки расширения
XVideo. Графический интерфейс можно использовать, но он все еще немного
неуклюж.На время написания этого документа в поставке
xine не существовало модуля ввода, который бы
мог воспроизводить DVD, закодированные по алгоритму CSS. Существуют
сборки, в которых есть такой модуль, но ни одна из них не входит в
Коллекцию Портов FreeBSD.По сравнению с MPlayer,
xine является более дружелюбным к
пользователю, но, в то же время, скрывает более тонкие настройки и
управление от пользователя. Также xine лучше
работает на XVideo интерфейсах.По умолчанию, xine запускается с
графическим интерфейсом. Для открытия файлов используются меню.&prompt.user; xineВ качестве альтернативы можно использовать его для запуска файла
непосредственно, без GUI, следующей командой:&prompt.user; xine -g -p mymovie.aviУтилиты transcodeПриложение transcode не является
проигрывателем. Это набор инструментов для преобразования
.avi и .mpg файлов. При помощи
transcode можно объединять видеофайлы,
исправлять поврежденные файлы, использовать инструменты командной строки
для работы с потоками ввода/вывода
stdin/stdout.Так же, как и MPlayer,
transcode является очень экспериментальным
программным продуктом, который необходимо собирать из порта multimedia/transcode. Этот порт имеет огромное
количество параметров для команды make при сборке.
Рекомендуется:&prompt.root; make WITH_LIBMPEG2=yesЕсли вы планируете установить multimedia/avifile, то добавьте параметр
WITH_AVIFILE в строку запуска make
как показано ниже:&prompt.root; make WITH_AVIFILE=yes WITH_LIBMPEG2=yesНиже приводятся два примера использования
transcode для преобразования видео, в результате
которого изменяется размер изображения. Первый пример преобразовывает
данные в openDIVX AVI файл, в то время как второй использует более
переносимый формат MPEG.&prompt.user; transcode -i input.vob -x vob -V -Z 320x240 \
-y opendivx -N 0x55 -o output.avi&prompt.user; transcode -i input.vob -x vob -V -Z 320x240 \
-y mpeg -N 0x55 -o output.tmp
&prompt.user; tcmplex -o output.mpg -i output.tmp.m1v -p output.tmp.mpa -m 1Существует страничка справочника для transcode, но
для различных утилит tc* (таких как
tcmplex), которые тоже устанавливаются в систему,
- документации очень немного. Тем не менее, для получение краткой справки
+ документации очень немного. Тем не менее, для получения краткой справки
по использованию команд, может быть задан параметр
.По сравнению с mencoder,
transcode работает заметно медленнее, но имеет больше
шансов создать более переносимый файл, который можно будет воспроизвести
на большем количестве систем. Например MPEG,
созданные при помощи transcode, воспроизводятся в
&windows.media; Player и Apple
&quicktime;.Дальнейшее чтениеРазличные пакеты видео программ для FreeBSD интенсивно
разрабатываются. Очень возможно, что в ближайшем будущем
многие обсуждаемые здесь проблемы разрешатся. Это займет время, и те, кто
желает получить максимум от аудио/видео возможностей FreeBSD, должны
будут собирать необходимые знания из нескольких списков часто задаваемых
вопросов и обучающих статей, а также использовать различные
приложения. Этот раздел существует для того, чтобы читатель мог получить
указания на несколько источников дополнительной информации.Документация
MPlayer очень содержательна в
техническом плане. Возможно, эти документы должны использоваться любым
человеком, желающим получить высокий уровень знаний о видео на &unix;
системах. Список рассылки MPlayer враждебен
для любого, кто не потрудился прочитать документацию, так что, если у вас
есть желание сообщать о найденных ошибках, прочитайте вначале
документацию.xine
HOWTO содержит главу об улучшении производительности, которая
применима к любому проигрывателю.Наконец, существует несколько многообещающих приложений, которые
читатель может испробовать:Avifile,
для которого также существует порт multimedia/avifile.Ogle, для
которого также существует порт multimedia/ogle.Xtheatermultimedia/dvdauthor, пакет с открытыми
текстами для распространения DVD контента.JosefEl-RayesПервоначально предоставил MarcFonvieilleУлучшил и адаптировал Настройка ТВ тюнеровТВ тюнерыВведениеТВ тюнеры предназначены для просмотра
широковещательного или кабельного телевидения на компьютере. Большинство
тюнеров поддерживают композитный видео вход RCA или
S-video, а некоторые из них поставляются с FM радио тюнером.&os; поддерживает PCI ТВ тюнеры, использующие
Brooktree Bt848/849/878/879 или Conexant CN-878/Fusion 878a
Video Capture Chip через драйвер &man.bktr.4;. Вы должны также
убедиться, что тюнер поддерживается; обратитесь к странице справочника
&man.bktr.4; за списком поддерживаемых тюнеров.Добавление драйвераДля использования карты потребуется загрузить драйвер
&man.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.Конечно, эти сообщения будут различаться на разном оборудовании.
Тем не менее, проверьте, что тюнер определяется правильно; возможна
перезапись параметров, определенных ядром, с помощью &man.sysctl.8;
MIB и параметров в файле настройки ядра. Например, если вы хотите
указать, что это Philips SECAM тюнер, добавьте следующую строку
к файлу настройки ядра:options OVERRIDE_TUNER=6или прямо задайте переменную &man.sysctl.8;:&prompt.root; sysctl hw.bt848.tuner=6Обратитесь к странице &man.bktr.4; и файлу
/usr/src/sys/conf/NOTES за более детальной
информацией о доступных параметрах (если вы работаете в
&os; 4.X, вместо
/usr/src/sys/conf/NOTES используйте
/usr/src/sys/i386/conf/LINT).Полезные приложенияДля использования ТВ тюнера вам потребуется установить одно из
следующих приложений:multimedia/fxtv
предоставляет возможности ТВ-в-окне и захвата
изображений/аудио/видео.multimedia/xawtv
это также приложение для ТВ тюнера, с теми же, что и у
fxtv возможностями.misc/alevt раскодирует
и отображает видеотекст/телетекст.audio/xmradio,
приложение для использования с FM радио тюнером, поставляемым
с некоторыми ТВ тюнерами.audio/wmtune, это
удобное приложение для радио тюнеров.В коллекции портов &os; можно найти и другие приложения.Решение проблемЕсли вы столкнулись с какой-либо проблемой, связанной с ТВ
тюнером, проверьте в первую очередь поддержку микросхемы захвата
видео и тюнера драйвером &man.bktr.4;, а также правильность установки
параметров. За дальнейшей поддержкой и с вопросами о ТВ тюнере
вы можете обращаться в &a.multimedia.name; и
использовать его архивы.MarcFonvieilleНаписана ДмитрийМорозовскийПеревод на русский язык: СканерысканерыВведение&os;, как и прочие современные операционные системы, поддерживает
сканеры. Стандартный доступ к сканерам обеспечивается программой
SANE (Scanner Access Now
Easy), обеспечивающей универсальный интерфейс
(API)
и доступной в коллекции портов &os;. Для общения со сканерами
SANE использует некоторые драйвера
устройств &os;.&os; поддерживает сканеры с интерфейсом как SCSI, так и USB.
Убедитесь, что ваш сканер поддерживается
SANE перед тем, как приступить к
конфигурации. Список устройств, поддерживаемых
SANE, можно найти здесь.
Кроме того, страница справочника &man.uscanner.4; также перечисляет
поддерживаемые устройства.Конфигурация ядраКак уже отмечалось, поддерживаются как SCSI, так и USB сканеры.
В зависимости от интерфейса вашего сканера требуется поддержка разных
драйверов устройств.USBСтандартное ядро GENERIC включает в себя
драйвера, необходимые для поддержки USB сканеров. Если вы
компилируете собственное ядро, убедитесь, что в его конфигурации
присутствуют строкиdevice usb
device uhci
device ohci
device uscannerВ зависимости от чипсета USB, встроенного в вашу материнскую
плату, потребуется лишь один из драйверов device
uhci или device ohci, однако, наличие
обеих строк в конфигурации ядра никому не повредит.Если вы не хотите перестраивать ядро, и при этом ваше ядро не
является стандартным (GENERIC), вы можете
загрузить модуль драйвера поддержки сканеров &man.uscanner.4;
при помощи команды &man.kldload.8;:&prompt.root; kldload uscannerДля автоматической загрузки модуля при старте системы добавьте
в файл /boot/loader.conf строкуuscanner_load="YES"После перезагрузки с новым ядром или загрузки модуля подключите
ваш USB сканер. В буфере системных сообщений (&man.dmesg.8;) должно
появиться сообщение о найденном устройстве, например:uscanner0: EPSON EPSON Scanner, rev 1.10/3.02, addr 2В данном случае сканер будет использовать устройство
/dev/uscanner0.В &os; 4.X для корректного распознавания некоторых USB
устройств должен быть запущен даемон USB (&man.usbd.8;).
Для этого добавьте строку usbd_enable="YES"
в файл конфигурации системы /etc/rc.conf.
SCSIЕсли ваш сканер имеет интерфейс SCSI, важно знать, к какому
контроллеру он подключен. В зависимости от контроллера потребуются
различные драйвера в файле конфигурации ядра. Стандартное ядро
GENERIC поддерживает большинство
распространенных SCSI-контроллеров. Внимательно прочитайте файл
NOTES (в &os; 4.X файл
LINT) и добавьте необходимые строки в файл
конфигурации вашего ядра. Помимо строки для драйвера адаптера,
вам потребуются следующие строки: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 шины при
помощи команды &man.camcontrol.8;:&prompt.root; 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После этого сканер должен появиться в списке устройств:&prompt.root; 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)
- More details about SCSI devices, are available in the
- &man.scsi.4; and &man.camcontrol.8; manual pages.
+ Более подробная информация о устройствах SCSI доступна на
+ страницах справочника &man.scsi.4; и &man.camcontrol.8;.Конфигурация SANEСистема SANE состоит из двух частей:
аппаратной поддержки (backend, graphics/sane-backends) и программной
поддержки (frontend, graphics/sane-frontends). Первая часть
обеспечивает собственно доступ к сканеру. Список
поддерживаемых устройствSANE
содержит информацию о необходимом вам аппаратном модуле.
Вторая часть обеспечивает графический интерфейс для сканирования
(xscanimage).В первую очередь следует установить порт или пакет graphics/sane-backends, после чего при
помощи команды sane-find-scanner проверить
поддержку сканера системой SANE:&prompt.root; sane-find-scanner -q
found SCSI scanner "AGFA SNAPSCAN 600 1.10" at /dev/pass3В выводе должны присутствовать интерфейс сканера и имя
используемого устройства. Производитель и модель сканера могут
отсутствовать: это нормально.Некоторым USB сканерам может потребоваться загрузка прошивки.
Подробности смотрите в страницах справочника драйвера сканера,
&man.sane-find-scanner.1; и &man.sane.7;.Теперь необходимо убедиться, что сканер опознан программой
графического интерфейса. В состав системы
SANE входит утилита &man.scanimage.1;,
позволяющая работать со сканером из командной строки. Опция
используется для показа информации
о сканере:&prompt.root; scanimage -L
device `snapscan:/dev/pass3' is a AGFA SNAPSCAN 600 flatbed scannerОтсутствие сообщений или сообщение об отсутствии устройств
означает, что утилита &man.scanimage.1; не смогла идентифицировать
сканер. В этом случае вам потребуется отредактировать файл
конфигурации аппаратного модуля и указать устройство, используемое
сканером. Все файлы настройки находятся в каталоге
/usr/local/etc/sane.d/.
Такие проблемы присущи некоторым моделям USB сканеров.
- Например, в случае USB сканера, описанного в разделе Например, в случае USB сканера, описанного в , утилита
sane-find-scanner выдаст следующую информацию:
&prompt.root; sane-find-scanner -q
found USB scanner (UNKNOWN vendor and product) at device /dev/uscanner0Сканер обнаружен корректно, он использует интерфейс USB
и доступен через устройство /dev/uscanner0.
Теперь попробуем идентифицировать его:&prompt.root; 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Пожалуйста, прочтите комментарии в файле конфигурации, а также
страницы справочника для более полной информации. Теперь мы можем
проверить, что наш сканер опознан:&prompt.root; scanimage -L
device `epson:/dev/uscanner0' is a Epson GT-8200 flatbed scannerНаш USB сканер опознан. Не столь важно, что имя и номер модели
не совпадают, главное, что используются правильные имя устройства
и драйвер: `epson:/dev/uscanner0'.После того как команда scanimage -L опознала
сканер, конфигурация завершена. Все готово к сканированию.Хотя утилита &man.scanimage.1; позволяет производить сканирование
из командной строки, как правило, для сканирования предпочтительнее
использовать графический интерфейс. Для этого в состав
SANE входит простая, но эффективная
утилита xscanimage (graphics/sane-frontends).Другой популярной программой графического интерфейса к сканеру
является Xsane (graphics/xsane). Эта программа
поддерживает такие расширенные возможности, как разные режимы
сканирования (фотокопия, факс и т.п.), цветокоррекцию, потоковое
сканирование и другие. Оба приложения пригодны для использования
в качестве плагинов сканирования для GIMP.
Доступ к сканеру для других пользователейВсе описанные операции выполнялись нами с привилегиями
суперпользователя (root). Вам может
потребоваться дать доступ к сканеру другим пользователям.
Для этого необходимо разрешить доступ на чтение и запись
к файлу устройства, обслуживающему сканер. В нашем примере
USB сканер использует устройство /dev/uscanner0,
принадлежащее группе operator.
Добавление пользователя joe в группу
operator разрешит ему использовать сканер:
&prompt.root; pw groupmod operator -m joeЗа подробностями обращайтесь к странице справочника &man.pw.8;.
Вам также потребуется установить нужные права доступа (0660 или 0664)
к устройству /dev/uscanner0, поскольку по
умолчанию группа operator может лишь
читать из него. Это достигается добавлением следующей строки
в файл /etc/devfs.rules:[system=5]
add path uscanner0 mode 660Затем добавьте в файл конфигурации системы
/etc/rc.conf такую строку (после чего
перезагрузите систему):devfs_system_ruleset="system"Подробную информацию о правах на файлы устройств вы найдете
на странице справочника &man.devfs.8;. В &os; 4.X группа
operator по умолчанию имеет права как
на чтение, так и на запись, к устройству
/dev/uscanner0.Разумеется, по соображениям безопасности, вы должны как следует
подумать, прежде чем добавлять пользователя в другие группы,
в особенности в группу operator.
diff --git a/ru_RU.KOI8-R/books/handbook/printing/chapter.sgml b/ru_RU.KOI8-R/books/handbook/printing/chapter.sgml
index ca786131e5..e58b762704 100644
--- a/ru_RU.KOI8-R/books/handbook/printing/chapter.sgml
+++ b/ru_RU.KOI8-R/books/handbook/printing/chapter.sgml
@@ -1,4924 +1,4927 @@
SeanKellyНаписал JimMockРеструктурировал и обновил ВалерийКравчукПеревод на русский язык: ПечатьКраткий обзорсистема спулинга LPDпечатьFreeBSD можно использовать для печати на широком спектре принтеров, от
старых матричных до новейших лазерных, без исключений, что позволяет
создавать высококачественные распечатки из используемых приложений.FreeBSD можно также сконфигурировать для работы в качестве сервера
печати в сети; в этом качестве FreeBSD может получать задания печати от множества
других компьютеров, включая другие компьютеры под управлением ОС FreeBSD, хосты &windows;
и &macos;. FreeBSD будет гарантировать печать заданий по одному и может сохранять
информацию о том, какие пользователи и машины выполняют основную часть печати,
выдавать страницы-баннеры, показывающие, кому принадлежит распечатка,
и многое другое.При прочтении этой главы вы узнаете:Как конфигурировать спулер печати FreeBSD.Как устанавливать фильтры печати для специфической обработки определенных
заданий печати, включая преобразование поступающих на печать документов в
форматы, которые понимает принтер.Как включить при печати колонтитулы или выдачу страниц-баннеров.Как печатать на принтеры, подключенные к другим компьютерам.Как печатать на принтеры, подключенные непосредственно к сети.Как задавать ограничения для принтера, включая ограничение
размера заданий печати и запрет печати для отдельных пользователей.Как сохранять статистическую информацию о печати и учитывать использование
принтера.Как решать проблемы печати.Прежде чем читать эту главу, вы должны:Знать, как сконфигурировать и установить новое ядро
().ВведениеДля использования принтеров в ОС FreeBSD надо настроить их для
работы с системой спулинга печати Беркли (Berkeley line printer spooling system),
также известной как система спулинга LPD.
- Это - стандартная система управления принтером во FreeBSD. В этой главе
+ Это — стандартная система управления принтером во FreeBSD. В этой главе
представлена система спулинга LPD,
которую часто называют просто LPD, и описано
ее конфигурирование.Если вы уже знакомы с LPD или другой
системой спулинга печати, вы можете сразу перейти к разделу Настройка системы спулинга.LPD управляет всеми аспектами работы принтеров
хоста. Она отвечает за несколько вещей:Она управляет доступом к непосредственно подключенным принтерам и
принтерам, подключенным к другим хостам в сети.задания печати
- Она позволяет пользователям посылать файлы на печать; эти посылки
+ Она позволяет пользователям посылать файлы на печать; эти
+ данные
называют заданиями.Она предотвращает одновременный доступ к принтеру нескольких
пользователей путем поддержки очереди для каждого
принтера.Она позволяет печатать страницы заголовка (их также
называют баннерными или начальными
страницами), чтобы пользователи могли легко находить распечатанные задания
в пачке распечаток.
- Она обеспечивает установку параметров взаимодействия для принтеров
- подключенных, к последовательным портам.
+ Она обеспечивает установку параметров взаимодействия для принтеров,
+ подключенных к последовательным портам.Она может отправлять задания по сети спулеру
LPD на другом хосте.Она может применять специальные фильтры для форматирования заданий
для печати на разных языках описания страниц или задействования специфических
возможностей принтера.Она учитывает использование принтера.С помощью файла конфигурации
(/etc/printcap) и за счет предоставления специальных
программ фильтрования, можно потребовать от системы LPD
выполнять все или некоторые из перечисленных выше функций на широком
спектре принтерного оборудования.Зачем использовать спулер
- Если вы - единственный пользователь системы, вы можете спросить,
+ Если вы — единственный пользователь системы, вы можете спросить,
зачем возиться со спулером, если управление доступом,
- страницы заголовка или учет использования принтера вам не нужно. Хотя можно
+ страницы заголовка или учет использования принтера вам не нужны. Хотя можно
обеспечить непосредственный доступ к принтеру, в любом случае следует
использовать спулер, поскольку:LPD печатает задания в фоновом режиме;
вам не придется ждать, пока данные будут скопированы на принтер.&tex;LPD позволяет легко пропустить
задание печати через фильтры для добавления заголовков с
датой/временем или преобразования специального формата файлов
- (такого как файла &tex; DVI) в формат, который понимает принтер.
+ (такого как &tex; DVI) в формат, который понимает принтер.
Вам не придется выполнять эти шаги вручную.Многие свободно распространяемые и коммерческие программы,
обеспечивающие возможность печати, обычно предполагают
взаимодействие со спулером системы. Путем настройки
системы спулинга вы упростите поддержку другого
программного обеспечения, которое может быть добавлено
в дальнейшем или уже установлено.Основная настройкаДля использования принтеров с системой спулинга
- LPD, необходимо настроит как сам
+ LPD, необходимо настроить как сам
принтер, так и программное обеспечение
LPD. Этот документ описывает два уровня
настройки:См. раздел Простая настройка
принтера, чтобы узнать, как подключить принтер,
объяснить LPD, как с ним
взаимодействовать, и отправлять на принтер простые текстовые
файлы.См. раздел Расширенная
настройка принтера, чтобы узнать, как печатать файлы
множества специальных форматов, как печатать страницы заголовка,
печатать по сети, управлять доступом к принтерам и учитывать
использование принтера.Простая настройка принтераВ этом разделе описано, как сконфигурировать принтер
и программное обеспечение LPD для
использования принтера. Здесь рассматриваются следующие вопросы:В разделе Настройка
оборудования представлены советы по подключению
принтера к порту компьютера.
- В разделеНастройка
+ В разделе Настройка
программного обеспечения показано, как настроить
файл конфигурации спулера LPD
(/etc/printcap).Если вы настраиваете принтер, использующий для принятия
заданий печати вместо последовательного или параллельного
интерфейса сетевой протокол, см. раздел
Принтеры с
- сетевыми интерфейсами для приема данных.
+ сетевыми интерфейсами.
Хотя этот раздел и назван Простая настройка
принтера, это, на самом деле, достаточно сложно.
Заставить принтер работать с компьютером и спулером
- LPD - самая сложная часть.
+ LPD — самая сложная часть.
Расширенные опции, вроде выдачи страниц заголовков и учета
использования, установить несложно, как только принтер
заработает.Настройка оборудованияВ этом разделе описаны различные способы подключения
принтера к ПК. Рассматриваются различные порты и кабели, а
также параметры конфигурации ядра, которые может потребоваться
установить, чтобы ОС FreeBSD могла взаимодействовать с
принтером.Если вы уже подключили ваш принтер и успешно печатали на
него в другой операционной системе, можете перейти к разделу
Настройка программного
обеспечения.Порты и кабелиПринтеры, которые продаются сегодня для использования на ПК,
обычно поддерживают один или несколько из следующих
интерфейсов:принтерыпоследовательныеПоследовательные интерфейсы, также
известные как RS232C или RS232D, или COM-порты, используют
для посылки данных на принтер последовательный порт
компьютера. Последовательные интерфейсы широко
распространены в компьютерной индустрии, кабели для них легко
найти и просто сделать. Для последовательных интерфейсов
иногда нужны специальные кабели, и для их использования может
потребоваться настраивать достаточно сложные опции
взаимодействия. Большинство последовательных портов ПК имеют
максимальную скорость передачи 115200 бит/сек, поэтому
печатать через них большие графические задания
неудобно.принтерыпараллельныеПараллельные интерфейсы используют
параллельный порт компьютера для посылки данных на принтер.
Параллельные интерфейсы широко распространены на рынке ПК
и работают быстрее, чем последовательные RS232.
Кабели легко найти, но сделать самостоятельно сложнее. При
использовании параллельных интерфейсов опции взаимодействия
обычно задавать не надо, что делает их конфигурирование
существенно проще.centronicsпараллельные принтерыПараллельные интерфейсы иногда называют
интерфейсами Centronics, по названию типа
разъема на принтере.принтерыUSBИнтерфейсы USB (сокращение от Universal Serial
- Bus - универсальная последовательная шина), могут работать
+ Bus — универсальная последовательная шина), могут работать
на еще больших скоростях, чем параллельные или
- последовательные интерфейсы RS232. Кабели для них -
+ последовательные интерфейсы RS232. Кабели для них —
простые и дешевые. USB превосходит последовательный RS232
и параллельный интерфейсы для печати, но не слишком
хорошо поддерживается в &unix;-системах. Обойти эту проблему
можно, купив принтер с двумя интерфейсами, USB и
параллельным, как у многих принтеров.В общем случае, параллельные интерфейсы обычно
обеспечивают только одностороннюю передачу (с компьютера
на принтер), тогда как последовательные и USB поддерживают
двустороннюю. Более новые параллельные порты (EPP и ECP) и принтеры
могут взаимодействовать в обоих направлениях под FreeBSD, если
используется кабель, соответствующий стандарту IEEE1284.PostScriptДвустороннее взаимодействие с принтером через параллельный
порт обычно выполняется одним из двух способов. Первый метод
опирается на использование специально созданного драйвера
принтера для FreeBSD, который поддерживает специфический язык
данного принтера. Этот метод типичен для струйных принтеров и
может использоваться для получения информации об уровне чернил и
другой информации о состоянии. Второй метод используется, когда
принтер поддерживает &postscript;.Фактически, задания &postscript;
являются программами, посылаемыми для выполнения принтеру;
они вообще могут не выдавать результат на бумагу и возвращать
- их непосредственно компьютеру. &postscript; также использует
+ его непосредственно компьютеру. &postscript; также использует
двустороннее взаимодействие для сообщения компьютеру о проблемах,
таких как ошибки в &postscript;-программе или замятие бумаги.
Такая информация может пригодиться пользователям. Более того,
лучший способ эффективного учета использования
&postscript;-принтера требует двустороннего взаимодействия:
вы запрашиваете у принтера значение счетчика страниц (сколько
страниц напечатал принтер за все время существования), затем
посылаете задание пользователя, затем снова запрашиваете значение
его счетчика страниц. Вычитаем одно значение из другого, и узнаем,
сколько бумаги потратил пользователь.Параллельные портыДля подключения принтера через параллельный интерфейс,
соедините принтер и компьютер кабелем Centronics.
Инструкции для принтера, для компьютера или обе должны полностью
описывать эту процедуру.Помните, какой параллельный порт компьютера вы использовали.
- Первый параллельный порт в ОС FreeBSD -
- /dev/ppc0; второй -
+ Первый параллельный порт в ОС FreeBSD —
+ /dev/ppc0; второй —
/dev/ppc1, и так далее. Имена устройств для
принтеров используют ту же схему: /dev/lpt0
для принтера на первом параллельном порту и т.д.Последовательные портыДля подключения принтера через последовательный интерфейс,
соедините принтер с компьютером подходящим последовательным кабелем.
Инструкции для принтера, для компьютера или обе должны полностью
описывать эту процедуру.Если вы не знаете, что такое подходящий последовательный
кабель, можете попробовать использовать один из следующих:Модемный кабель соединяет каждый штырёк
на одном конце кабеля напрямую с соответствующим штырьком
на другом конце. Кабель такого типа также называют
кабелем DTE-to-DCE.нуль-модемный кабельНуль-модемный кабель соединяет часть
- штырьков напрямую, другие - меняет (пересылку данных на приём
- данных, например), а некоторые - закорачивает на каждом разъеме.
+ штырьков напрямую, другие — меняет (пересылку данных на приём
+ данных, например), а некоторые — закорачивает на каждом разъеме.
Кабель такого типа также называют кабелем
DTE-to-DTE cable.Кабель последовательного принтера,
необходимый для некоторых редко используемых принтеров, похож
на нуль-модемный кабель, но посылает часть сигналов на
соответствующие штырьки, а не закорачивает их.скорость передачичетностьпротокол управления передачейВам надо также настроить эти параметры взаимодействия с принтером,
- обычно - через элементы управления на лицевой панели или переключатели
+ обычно — через элементы управления на лицевой панели или переключатели
(DIP switches) на принтере. Выберите максимальную скорость передачи
- bps (бит в секунду, иногда -
+ bps (бит в секунду, иногда —
baud rate), которую могут поддерживать как
компьютер, так и принтер. Выберите 7 или 8 битов данных; четность none,
even или odd; и 1 или 2 стоп-бита. Также надо выбрать протокол управления
передачей: none или XON/XOFF (также известный как
внутриполосный или программный).
Запомните выбранные установки для последующего конфигурирования
программного обеспечения.Настройка программного обеспеченияВ этом разделе описана настройка программного обеспечения,
необходимая для печати с помощью системы спулинга
LPD в ОС FreeBSD.
Вот план действий, которые необходимо выполнить:При необходимости, сконфигурировать в ядре поддержку порта,
к которому подключен принтер; в разделе Конфигурирование ядра описано,
что надо сделать.Установить режим взаимодействия для параллельного порта,
если используется параллельный порт; детали представлены
в разделе Настройка
режима взаимодействия для параллельного порта.Проверить, может ли операционная система посылать данные
на принтер. В разделе Проверка
взаимодействия с принтером даны советы, как это сделать.Настроить LPD для принтера,
изменяя файл /etc/printcap. Как это
сделать описано далее в этой главе.Конфигурирование ядраЯдро операционной системы компилируется для работы с
конкретным набором устройств. Последовательный или параллельный
интерфейс для принтера входит в этот набор. Поэтому может
понадобиться добавить поддержку для дополнительного
последовательного или параллельного порта, если он еще
не сконфигурирован в ядре.Чтобы узнать, поддерживает ли используемое в настоящий
момент ядро последовательный интерфейс, наберите:&prompt.root; grep sioN /var/run/dmesg.boot
- Где N - номер последовательного
+ Где N — номер последовательного
порта, начиная с нуля. Если вы получаете результат, подобный
следующему:sio2 at port 0x3e8-0x3ef irq 5 on isa
sio2: type 16550Aзначит, ядро поддерживает порт.Чтобы узнать, поддерживает ли ядро параллельный интерфейс,
наберите:&prompt.root; 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значит, ядро поддерживает порт.Может потребоваться переконфигурировать ядро, чтобы
операционная система распознала и использовала параллельный
или последовательный порт, используемый для подключения
принтера.Чтобы добавить поддержку последовательного порта,
обратитесь к разделу, посвященному конфигурированию ядра.
Чтобы добавить поддержку параллельного порта, почитайте
этот же раздел и следующий раздел.Добавление файлов /dev для портовFreeBSD 5.0 включает файловую систему
devfs, которая автоматически создает
специальные файлы устройств по мере необходимости.
Если вы используете версию FreeBSD с включенной поддержкой
devfs, можно пропустить этот раздел.Хотя ядро может уже поддерживать взаимодействие по
последовательному или параллельному порту, вам необходим
программный интерфейс, через которых работающие в системе программы
смогут посылать и принимать данные. Именно для этого и
существуют специальные файлы устройств в каталоге
/dev.Для добавления файла в каталог /dev
для порта:Станьте пользователем root с помощью
команды &man.su.1;.
Введите пароль пользователя root
в ответ на приглашение.Перейдите в каталог /dev:&prompt.root; cd /devВведите команду:&prompt.root; ./MAKEDEV port
- Где port - имя специального файла
+ Где port — имя специального файла
устройства для порта, который вы хотите создать. Используйте
lpt0 для принтера на первом параллельном порту,
lpt1 для принтера на втором порту и т.д.;
используйте ttyd0 для первого последовательного
- порта, ttyd1 - для второго и так далее.
+ порта, ttyd1 — для второго и так далее.Введите команду:&prompt.root; ls -l portчтобы убедиться, что требуемый специальный файл устройства
создан.Настройка режима взаимодействия для параллельного портаПри использовании параллельного интерфейса можно выбрать,
должна ли ОС FreeBSD взаимодействовать с принтером на основе
прерываний или путем опроса. Универсальный драйвер принтера
(&man.lpt.4;) во FreeBSD 4.X и 5.X использует
систему &man.ppbus.4;, которая управляет чипсетом порта
с помощью драйвера &man.ppc.4;.Метод взаимодействия на основе прерываний
является стандартным для ядра GENERIC. По этому методу,
операционная система использует линию запроса прерывания (IRQ line)
для определения готовности принтера к приему данных.Метод взаимодействия путем опроса
требует от операционной системы постоянно запрашивать
принтер, готов ли он к приему данных. Когда он отвечает,
что готов, ядро посылает дополнительные данные.Метод взаимодействия на основе прерываний обычно работает
несколько быстрее, но использует ценную линию запроса прерывания.
Про некоторые новые принтеры HP утверждают, что они работают
некорректно в режиме взаимодействия на основе прерываний,
вероятно, из-за некоторой (еще не вполне понятной) проблемы
синхронизации. Для этих принтеров необходимо устанавливать
режим опроса. Используйте тот режим, который работает. Некоторые
принтеры будут работать в обоих режимах, но оказываются
крайне медленными в режиме на основе прерываний.Режим взаимодействия можно установить двумя способами:
конфигурируя ядро или с помощью программы &man.lptcontrol.8;.Для установки режима взаимодействия путем
конфигурирования ядра:Отредактируйте файл конфигурации ядра. Найдите запись
ppc0. Если вы настраиваете второй
параллельный порт, ищите запись ppc1.
Используйте запись ppc2 для третьего порта,
и так далее.Если необходимо установить режим на основе прерываний,
для FreeBSD 4.X добавьте спецификацию
irq:device ppc0 at isa? irq N
- Где N - номер IRQ
+ Где N — номер IRQ
для параллельного порта компьютера.Для FreeBSD 5.X, отредактируйте следующую строку:hint.ppc.0.irq="N"в файле /boot/device.hints, заменив
N соответствующим номером IRQ.
Файл конфигурации ядра также должен содержать драйвер
&man.ppc.4;:device ppcЕсли необходимо установить режим опроса, не добавляйте
спецификацию irq:Для FreeBSD 4.X используйте следующую строку в
файле конфигурации ядра:device ppc0 at isa?Для FreeBSD 5.X просто удалите из файла
/boot/device.hints следующую
строку:hint.ppc.0.irq="N"В некоторых случаях, этого недостаточно для перевода
порта в режим опроса под FreeBSD 5.X. Чаще всего,
проблема связана с драйвером &man.acpi.4;, который может
опрашивать и подключать устройства и, тем самым,
управлять режимом доступа к порту принтера. Чтобы решить
эту проблему, проверьте конфигурацию &man.acpi.4;.Сохраните файл. Затем сконфигурируйте, соберите и установите
ядро и перезагрузите систему. Подробнее см. в разделе конфигурирование ядра.Для настройки режима взаимодействия с помощью
утилиты &man.lptcontrol.8;:Введите команду:&prompt.root; lptcontrol -i -d /dev/lptNдля установки режима взаимодействия на основе прерываний
для lptN.Введите команду:&prompt.root; lptcontrol -p -d /dev/lptNдля установки режима взаимодействия по опросу для
lptN.Вы можете поместить эти команды в файл
/etc/rc.local для установки требуемого режима
при каждой загрузке системы. Дополнительную информацию об этом
ищите на странице справочного руководства &man.lptcontrol.8;.Проверка взаимодействия с принтеромПрежде чем переходить к конфигурированию системы спулинга,
надо убедиться, что операционная система может успешно посылать данные
на принтер. Намного проще отлаживать взаимодействие с принтером и
систему спулинга отдельно.Для тестирования принтера мы пошлем на него текст. Для принтеров,
которые могут непосредственно печатать посланные на них символы,
- программа &man.lptest.1; идеально подходит: она генерирует все 96
+ идеально подходит программа &man.lptest.1;: она генерирует все 96
печатных символов ASCII в 96 строках.PostScriptДля &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;-код можно поместить в
в файл и использовать, как показано в примерах в следующих
разделах.PCLКогда в этом документе речь идет о языке принтера,
подразумевается язык типа &postscript;, а не PCL компании Hewlett
Packard. Хотя PCL имеет прекрасные функциональные возможности, в нем
можно смешивать обычный текст с его управляющими
последовательностями. &postscript; не позволяет непосредственно
печатать обычный текст, и это язык принтера именно того рода,
для которого надо выполнять специальные настройки.Проверка параллельного принтерапринтерыпараллельныеВ этом разделе описано, как проверить, может ли ОС FreeBSD
взаимодействовать с принтером, подключенным к параллельному порту.Для тестирования принтера на параллельном порту:Станьте пользователем root с помощью
команды &man.su.1;.Пошлите данные на принтер.Если принтер может печатать обычный текст, используйте
утилиту &man.lptest.1;. Введите команду:&prompt.root; lptest > /dev/lptN
- Где N - номер параллельного порта,
+ Где N — номер параллельного порта,
начиная с нуля.Если принтер понимает &postscript; или другой язык принтера,
пошлите на принтер небольшую программу. Введите команду:&prompt.root; cat > /dev/lptNЗатем, построчно, внимательно введите
программу, поскольку вы не сможете отредактировать строку
после нажатия клавиши RETURN
или ENTER. По окончании ввода программы,
нажмите CONTROL+D или другую комбинацию клавиш,
используемую для ввода символа конца файла.Можно также поместить программу в файл и выполнить команду:&prompt.root; cat file > /dev/lptN
- Где file - имя файла, содержащего
+ Где file — имя файла, содержащего
программу, которую вы хотите послать принтеру.Вы должны увидеть распечатку. Не переживайте, если текст выглядит
не так, как предполагалось; этими проблемами мы займемся позже.Проверка последовательного принтерапринтерыпоследовательныеВ этом разделе описано, как проверить, может ли ОС FreeBSD
взаимодействовать с принтером, подключенным к последовательному
порту.Для тестирования принтера на последовательном
порту:Станьте пользователем root с помощью
команды &man.su.1;.Отредактируйте файл /etc/remote.
Добавьте следующую запись:printer:dv=/dev/port:br#bps-rate:pa=parityбит в секундупоследовательный портчетность
- Где port - специальный файл
+ Где port — специальный файл
устройства для последовательного порта (ttyd0,
- ttyd1 и т.д.), bps-rate -
+ ttyd1 и т.д.), bps-rate —
скорость обработки данных принтером, в битах в секунду,
- а parity - требуемая принтером четность
+ а parity — требуемая принтером четность
(значение even, odd,
none или zero).Вот пример записи для принтера, подключенного
к третьему последовательному порту на скорости 19200 bps
без четности:printer:dv=/dev/ttyd2:br#19200:pa=noneПодключитесь к принтеру с помощью &man.tip.1;.
Введите команду:&prompt.root; tip printerЕсли этот шаг не срабатывает, снова отредактируйте
файл /etc/remote и попробуйте использовать
устройство /dev/cuaaN
вместо /dev/ttydN.Пошлите данные на принтер.Если принтер может печатать обычный текст, используйте
утилиту &man.lptest.1;. Введите команду:&prompt.user; $lptestЕсли принтер понимает &postscript; или другой язык
принтера, пошлите на принтер небольшую программу.
Вводите программу, построчно, очень
внимательно, поскольку нажатие клавиши Backspacе
или других клавиш редактирования может иметь значение
для принтера. Может также понадобиться нажать специальную
комбинацию клавиш, обозначающую конец файла, чтобы принтер
понял, что получена вся программа. Для
&postscript;-принтеров нажмите CONTROL+D.Можно также поместить программу в файл и ввести команду:&prompt.user; >file
- Где file - имя файла,
+ Где file — имя файла,
содержащего программу. После того, как утилита
&man.tip.1; пошлет файл, нажмите требуемую для
ввода признака конца файла комбинацию клавиш.Вы должны увидеть распечатку. Не переживайте, если текст выглядит
не так, как предполагалось; этими проблемами мы займемся позже.Включение спулера: файл /etc/printcapСейчас ваш принтер уже должен быть подключен, ядро
- (при необходимости) - сконфигурировано для взаимодействия с ним,
+ (при необходимости) — сконфигурировано для взаимодействия с ним,
и вы смогли послать на принтер простые данные. Теперь мы готовы
к конфигурированию системы LPD для управления
доступом к принтеру.Система LPD конфигурируется путем
редактирования файла /etc/printcap. Система
спулинга LPD читает этот файл при
каждом использовании спулера, так что, изменения в файле
сразу же учитываются.принтерыхарактеристикиФормат файла &man.printcap.5; прост. Используйте
свой любимый текстовый редактор для изменения файла
/etc/printcap. Формат файла идентичен
формату других файлов, описывающих характеристики, например,
/usr/share/misc/termcap и
/etc/remote. Полная информация о формате
представлена на странице справочного руководства &man.cgetent.3;.Простое конфигурирование спулера включает следующие шаги:Выберите имя (и несколько удобных псевдонимов) для принтера
и поместите их в файл /etc/printcap; подробнее
об именовании см. в разделе
Именование принтера.начальные страницыОтключите выдачу начальных страниц (которые по умолчанию выдаются),
вставив характеристику sh; подробнее об
этом см. в разделе
Подавление выдачи
начальных страниц.Создайте каталог для спулинга и укажите его местонахождение
с помощью характеристики sd; подробнее об этом
см. в разделе Создание
каталога спулинга.Выберите специальный файл устройства /dev для
использования с принтером и укажите его в файле
/etc/printcap с помощью характеристики
lp; подробнее об этом см. в разделе
Выбор устройства для принтера.
Кроме того, если принтер подключен к последовательному порту,
настройте параметры взаимодействия с помощью характеристики
ms#, которая обсуждается в разделе
Конфигурирование параметров
взаимодействия для спулера.Установите фильтр для обычного текста; подробнее об этом
см. в разделе Установка
текстового фильтра.Проверьте настройку, напечатав что-нибудь с помощью команды
&man.lpr.1;. Подробнее об этом см. в разделах
Проверка и
Выявление
проблем.Принтеры, использующие специальные языки, например, &postscript;-принтеры,
не могут непосредственно печатать обычный текст. Простая настройка,
представленная выше и описанная в следующих разделах, предполагает, что,
если вы устанавливаете такой принтер, то будете печатать только файлы,
которые он может обработать.Пользователи часто предполагают, что они могут печатать обычный
текст на любом из установленных в системе принтеров. Программы,
взаимодействующие для обеспечения печати с системой
LPD, обычно исходят из этого же предположения.
Если вы устанавливаете такой принтер и хотите иметь возможность посылать
на печать задания на языке принтера и в виде обычного
текста, настоятельно рекомендуется добавить дополнительный шаг к представленной
выше простой последовательности настройки: установите программу
автоматического преобразования обычного текста в &postscript; (или
другой язык принтера). В разделе
Прием заданий с обычным текстом
на &postscript;-принтеры рассказано, как это сделать.Именование принтера
- Первый (простой) шаг - выбрать имя для принтера.
- На самом деле, не важно, выберите ли вы функциональное имя или
+ Первый (простой) шаг — выбрать имя для принтера.
+ На самом деле, не важно, выберете ли вы функциональное имя или
причудливое, поскольку для принтера можно также задать несколько
псевдонимов.По крайней мере, один из принтеров, указанных в файле
/etc/printcap, должен иметь псевдоним
- lp. Это - стандартное имя принтера.
+ 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.Подавление выдачи начальных страницпечатьначальных страницСистема спулинга 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:Обратите внимание, как мы использовали правильный формат: первая
строка начинается с самого левого столбца, а последующие строки
смещены на один символ табуляции. Каждая строка в записи,
- кроме последней, завершается символом обратной косой.
+ кроме последней, завершается символом обратной косой черты.
Создание каталога для спулингаprinter spoolзадания печати
- Следующий шаг в простой настройке спулера - создать
+ Следующий шаг в простой настройке спулера — создать
каталог для спулинга, каталог, в котором
- находятся задания печати, пока не будут напечатаны, и находятся
+ находятся задания печати, пока не будут напечатаны, и где находятся
еще несколько других файлов для поддержки спулера.Из-за присущих каталогам спулинга постоянных изменений, принято
помещать эти каталоги в каталог /var/spool.
Кроме того, не нужно создавать резервные копии содержимого каталогов
спулинга. Пересоздать их можно с помощью простой команды
&man.mkdir.1;.Принято также задавать для каталога имя, совпадающее с именем
принтера, как показано ниже:&prompt.root; mkdir /var/spool/имя-принтераОднако при наличии большого количества принтеров в сети
может иметь смысл поместить все каталоги спулинга в один каталог,
который просто резервируется для печати с помощью
LPD. Мы сделаем это для наших двух принтеров,
rattan и bamboo:&prompt.root; mkdir /var/spool/lpd
&prompt.root; mkdir /var/spool/lpd/rattan
&prompt.root; mkdir /var/spool/lpd/bambooЕсли вас интересует конфиденциальность заданий, отправляемых
пользователями на печать, можно защитить каталог спулинга, чтобы
он не был общедоступным. Каталоги спулинга должны принадлежать и
быть доступны на чтение, запись и просмотр содержимого пользователю
daemon и группе daemon, и никому больше. Мы установим это для
каталогов спулинга принтеров из нашего примера:&prompt.root; chown daemon:daemon /var/spool/lpd/rattan
&prompt.root; chown daemon:daemon /var/spool/lpd/bamboo
&prompt.root; chmod 770 /var/spool/lpd/rattan
&prompt.root; chmod 770 /var/spool/lpd/bambooНаконец, надо сообщить системе LPD
об этих каталогах с помощью файла /etc/printcap.
Полное имя каталога спулинга задается с помощью характеристики
sd:#
# /etc/printcap для хоста rose - добавлены каталоги спулинга
#
rattan|line|diablo|lp|Diablo 630 Line Printer:\
:sh:sd=/var/spool/lpd/rattan:
bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\
:sh:sd=/var/spool/lpd/bamboo:Обратите внимание, что имя принтера начинается с самого
первого столбца, а все последующие строки смещены на один
символ табуляции и каждая строка в записи,
- кроме последней, завершается символом обратной косой.
+ кроме последней, завершается символом обратной косой черты.Если вы не зададите каталог спулинга с помощью характеристики
sd, система спулинга будет использовать по умолчанию
каталог /var/spool/lpd.Выбор устройства для принтераВ разделе Добавление файлов
/dev для портов мы выяснили, какой специальный
файл устройства в каталоге /dev FreeBSD будет
использовать для взаимодействия с принтером. Теперь мы сообщаем эту
информацию системе LPD. Когда у системы
спулинга есть задание для печати, она будет открывать указанное устройство
от имени программы-фильтра (которая отвечает за передачу данных
на принтер).Задайте полное имя устройства /dev в файле
/etc/printcap с помощью характеристики
lp.В нашем текущем примере давайте предположим, что принтер
rattan подключен к первому параллельному порту,
- а принтер bamboo - к шестому последовательному
+ а принтер 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 не существует.Если устанавливаемый принтер подключен к параллельному порту,
перейдите к разделу Установка
текстового фильтра. Иначе выполните сначала инструкции,
представленные в следующем разделе.Конфигурирование параметров взаимодействия спулерапринтерыпоследовательныеДля принтеров на последовательных портах система
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Устанавливает опции для терминального устройства после открытия устройства.
Поддерживаемые опции описаны на странице справочного руководства &man.stty.1;.Когда система LPD открывает устройство,
заданное характеристикой lp, она устанавливает
опции устройства в соответствии со значением характеристики
ms#. Наибольший интерес представляют
режимы parenb, parodd,
cs5, cs6, cs7,
cs8, cstopb,
crtscts и ixon, которые
описаны на странице справочного руководства &man.stty.1;.Давайте зададим опции для нашего принтера на шестом последовательном
порту. Мы установим скорость передачи 38400. В качестве режима
- установим без четности с помощью -parenb,
+ установим режим без четности с помощью -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:Установка текстового фильтрапечатьфильтрыТеперь мы готовы задать системе LPD,
какой текстовый фильтр использовать для посылки заданий на принтер.
Текстовый фильтр, известный также как
- входной фильтр, - это программа, которую система LPD запускает при получении задания на
+ входной фильтр, — это программа,
+ которую система LPD запускает при
+ получении задания на
печать. Когда система LPD запускает
текстовый фильтр для принтера, она направляет на стандартный
входной поток фильтра задание печати, а его стандартный выходной
- поток - на устройство принтера, заданное характеристикой lp.
+ поток — на устройство принтера, заданное характеристикой 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Сделайте этот файл выполняемым:&prompt.root; chmod 555 /usr/local/libexec/if-simpleА теперь потребуйте от системы LPD его использовать, указав его в
качестве значения характеристики if в файле
/etc/printcap. Мы добавим его для двух принтеров,
имеющихся пока в примере файла /etc/printcap:#
# /etc/printcap для хоста rose - добавлен текстовый фильтр
#
rattan|line|diablo|lp|Diablo 630 Line Printer:\
:sh:sd=/var/spool/lpd/rattan:\ :lp=/dev/lpt0:\
:if=/usr/local/libexec/if-simple:
bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\
:sh:sd=/var/spool/lpd/bamboo:\
:lp=/dev/ttyd5:ms#-parenb cs8 clocal crtscts:\
:if=/usr/local/libexec/if-simple:Копию скрипта if-simple можно
найти в каталоге /usr/share/examples/printing.Запуск системы LPD
- Демон &man.lpd.8; запускается из /etc/rc,
+ Даемон &man.lpd.8; запускается из /etc/rc,
а необходимость запуска задается переменной lpd_enable.
Эта переменная по умолчанию имеет значение NO. Если
вы еще этого не сделали, добавьте строку:lpd_enable="YES"в файл /etc/rc.conf, а затем либо перезапустите
машину, либо просто выполните команду &man.lpd.8;.&prompt.root; lpdПроверкаВы добрались до конца простой настройки системы
LPD. К сожалению,
поздравлять вас еще рано, поскольку надо еще проверить
настройку и устранить все выявленные проблемы. Для проверки
настройки, попытайтесь что-то распечатать. Для печати с помощью
системы LPD используется
команда &man.lpr.1;, которая посылает задание на печать.Можно скомбинировать &man.lpr.1; с программой &man.lptest.1;,
представленной в разделе Проверка
взаимодействия с принтером, генерирующей тестовый текст.Для тестирования простой настройки
LPD:Введите команду:&prompt.root; lptest 20 5 | lpr -Pprinter-name
- Где printer-name - имя
+ Где printer-name — имя
(или псевдоним) принтера, заданное в файле
/etc/printcap. Для проверки стандартного
принтера, введите команду &man.lpr.1; без аргумента .
Как уже отмечалось, если тестируется принтер, предполагающий использование
&postscript;, пошлите ему &postscript;-программу вместо использования
утилиты &man.lptest.1;. Это можно сделать, поместив программу в файл
и выполнив команду lpr file.Для &postscript;-принтера вы должны получить результаты выполнения
программы. Если вы используете &man.lptest.1;, ваши результаты должны
иметь такой вид:!"#$%&'()*+,-./01234
"#$%&'()*+,-./012345
#$%&'()*+,-./0123456
$%&'()*+,-./01234567
%&'()*+,-./012345678Для дальнейшего тестирования принтера, попытайтесь загрузить
программы побольше (для принтеров, поддерживающих определенный язык)
или выполните команду &man.lptest.1; с другими аргументами. Например,
команда lptest 80 60 выдаст 60 строк по 80
символов в каждой.Если принтер не работает, см. раздел Выявление проблем.Расширенная настройка принтераВ этом разделе описаны фильтры для печати специально сформатированных
файлов, начальных страниц, печати по сети, ограничения и учета использования
принтера.ФильтрыпечатьфильтрыХотя система LPD поддерживает сетевые
протоколы, очереди, контроль доступа и другие аспекты печати, большая
часть реальной работы происходит в
- фильтрах. Фильтры - это программы,
+ фильтрах. Фильтры — это программы,
взаимодействующие с принтером и обеспечивающие учет особенностей
устройства и специальных требований. При простой настройке принтера
- мы установили фильтр для обычного текста—крайне простой, который
+ мы установили фильтр для обычного текста — крайне простой, который
должен работать с большинством принтеров (см. раздел
Установка текстового
фильтра).Однако, чтобы обеспечить преобразования формата, учет использования
принтера и индивидуальных особенностей отдельных принтеров и т.п.,
надо разобраться, как работают фильтры. В конечном итоге, всеми этими
аспектами печати должен заниматься фильтр. А плохая новость состоит
в том, что, в большинстве случаев, вы сами
должны предоставить соответствующие фильтры. Хорошая новость состоит
в том, что многие фильтры общедоступны; а если подходящих нет,
их обычно легко написать.Кроме того, в составе ОС FreeBSD поставляется один фильтр,
/usr/libexec/lpr/lpf, работающий со многими
принтерами, которые могут печатать обычный текст. (Он обрабатывает
символы забоя и табуляции в файле, выполняет учет использования, но
и не более того.) Есть также ряд фильтров и компонентов фильтров
в наборе портов FreeBSD.Вот что вы найдете в этом разделе:В разделе Как работают
фильтры сделана попытка дать обзор роли фильтра в процессе
печати. Прочтите этот раздел, чтобы понять, что происходит
за кадром, когда система LPD
использует фильтры. Это понимание поможет предвидеть и решать
проблемы, с которыми вы можете столкнуться при добавлении дополнительных
фильтров для каждого из принтеров.Система LPD предполагает, что
каждый принтер, по умолчанию, может печатать обычный текст. Это
проблематично для &postscript;-принтеров (или принтеров на базе
другого языка), поскольку они не могут печатать обычный текст
непосредственно. В разделе
Прием заданий с
обычным текстом на &postscript;-принтеры описано, что
нужно сделать, чтобы решить эту проблему. Прочтите этот раздел,
если используете &postscript;-принтер.
- &postscript; - популярный формат выдачи для многих программ.
+ &postscript; — популярный формат выдачи для многих программ.
Некоторые люди даже пишут &postscript;-код непосредственно. К
сожалению, &postscript;-принтеры дороги. В разделе Имитация &postscript; на
не-&postscript; принтерах описано, как можно дополнительно
изменить текстовый фильтр принтера для приема и печати данных
&postscript; не не-&postscript; принтере.
Прочтите этот раздел, если ваш принтер не поддерживает
&postscript;.В разделе Фильтры преобразования
описан способ автоматизации преобразования определенных форматов
файлов, например, графики или данных для печатного станка, в форматы,
которые может обработать ваш принтер. После чтения этого раздела
вы сможете настроить свои принтеры так, что пользователи смогут
выполнять команду lpr -t для печати данных troff,
или lpr -d для печати данных &tex; DVI, или
- lpr -v - для печати растровых изображений, и
+ lpr -v — для печати растровых изображений, и
так далее. Я рекомендую прочитать этот раздел.В разделе Выходные фильтры
описана не часто используемая возможность задавать выходные
фильтры в системе LPD. Если только вы
не печатаете начальные страницы (см. Начальные страницы),
можно, пожалуй, вообще пропустить этот раздел.В разделе lpf: текстовый
- фильтр описана команда lpf, - достаточно
+ фильтр описана команда lpf, — достаточно
полный, хотя и простой текстовый фильтр для строчных принтеров
(и лазерных принтеров, работающих как строчные), поставляемый в
составе ОС FreeBSD. Если надо быстро настроить учет использования
принтера для обычного текста или если используется принтер,
из которого при получении символов забоя идет дым, несомненно,
стоит подумать об использовании lpf.Различные скрипты, описанные далее, можно найти в каталоге
/usr/share/examples/printing.Как работают фильтры
- Как уже упоминалось, фильтр - это выполняемая программа, запускаемая
+ Как уже упоминалось, фильтр — это выполняемая программа, запускаемая
системой LPD для поддержки специфических
особенностей устройства при взаимодействии с принтером.Когда системе LPD надо напечатать
входящий в задание файл, она запускает программу-фильтр. Стандартный
входной поток фильтра связывается с файлом, который надо распечатать,
- его стандартный выходной поток - с принтером, а стандартный поток
+ его стандартный выходной поток — с принтером, а стандартный поток
ошибок перенаправляется в файл регистрации ошибок (задается
характеристикой lf в файле
/etc/printcap, или используется стандартное
устройство /dev/console).troffЗапускаемый системой LPD фильтр и его
аргументы зависят от того, что указано в файле
/etc/printcap, и какие аргументы указал
пользователь для задания в команде &man.lpr.1;. Например,
если пользователь ввел команду lpr -t,
система LPD должна запустить фильтр troff,
заданный характеристикой tf для соответствующего
принтера. Если пользователь хочет печатать обычный текст, система
должна запустить фильтр if (это верно в большинстве
случаев: подробнее см. в разделе
Выходные фильтры).В файле /etc/printcap можно задавать
три вида фильтров:Текстовый фильтр, который в документации
LPD двусмысленно называют
входным фильтром, обеспечивает печать
обычного текста. Рассматривайте его как стандартный фильтр.
Система LPD предполагает, что любой
принтер может по умолчанию печатать обычный текст, а на текстовый
фильтр возлагается задача обеспечить, чтобы символы забоя,
табуляции или другие специальные символы не сбивали принтер с
толку. Если вы работаете в среде, где надо учитывать
использование принтера, текстовый фильтр должен также
учитывать количество напечатанных страниц, обычно, подсчитывая
количество напечатанных строк и сравнивая их с количеством строк на
страницу, поддерживаемых принтером. Текстовый фильтр запускается со
следующим списком аргументов:
имя-фильтра-c-wширина-lдлина-iсдвиг-n имя-пользователя-h хостучетный-файл
где
указывается, если задание послано командой
lpr -lшириназначение из характеристики pw (page
- width - ширина страницы), указанной в файле
- /etc/printcap, по умолчанию - 132
+ width — ширина страницы), указанной в файле
+ /etc/printcap, по умолчанию — 132длиназначение из характеристики pl (page
- length - длина страницы), по умолчанию - 66
+ length — длина страницы), по умолчанию — 66сдвигсдвиг, заданный командой lpr -i,
- по умолчанию - 0
+ по умолчанию — 0
имя-пользователярегистрационное имя пользователя, печатающего файлхостимя хоста, с которого было послано заданиеучетный-файлимя учетного файла, задаваемое характеристикой
af.печатьфильтрыФильтр преобразования преобразует
специфичный формат файла в то, что принтер может воспроизвести
на бумаге. Например, данные системы набора ditroff нельзя печатать
непосредственно, но можно установить фильтр преобразования
для файлов ditroff, чтобы преобразовывать данные ditroff
в тот вид, который принтер может воспринять и напечатать. В разделе
Фильтры
- преобразования описано всё об этих фильтрах. Фильтры
+ преобразования написано всё об этих фильтрах. Фильтры
преобразования также необходимы для учета, если предполагается
учет использования принтера. Фильтры преобразования
запускаются со следующими аргументами:
имя-фильтра-xширина-пиксела-yвысота-пиксела-n имя-пользователя-h хостучетный-файл
- где ширина-пиксела - значение
- характеристики px (по умолчанию - 0),
- а высота-пиксела - значение характеристики
- py (по умолчанию - 0).
+ где ширина-пиксела — значение
+ характеристики px (по умолчанию — 0),
+ а высота-пиксела — значение характеристики
+ py (по умолчанию — 0).
Выходной фильтр используется только
если нет текстового фильтра или если включена выдача начальных
страниц. Судя по моему опыту, выходные фильтры используются редко.
Они описаны в разделе Выходные
фильтры. У выходного фильтра есть всего два аргумента:
имя-фильтра-wширина-lдлина
которые идентичны аргументам и
текстового фильтра.Фильтры также должны завершать работу со
следующим статусом выхода:exit 0Если фильтр успешно напечатал файл.exit 1Если фильтр не смог напечатать файл, но хочет, чтобы
система LPD попыталась
распечатать файл ещё раз. Система LPD
перезапустит фильтр, если его работа завершена с этим статусом.exit 2Если фильтр не смог напечатать файл и не хочет, чтобы
система LPD пыталась его печатать
еще раз. Система LPD удалит файл.Поставляемый в составе FreeBSD текстовый фильтр
/usr/libexec/lpr/lpf использует аргументы, задающие
ширину и длину страницы для определения того, когда посылать символ
прогона страницы (form feed) и как учитывать использование принтера.
Он использует переданные в качестве аргументов имя пользователя,
хост и учетный файл для внесения учетных записей.При поиске фильтров убедитесь, что они совместимы с системой LPD.
Если да, они должны поддерживать описанные выше списки аргументов.
Если вы планируете создавать фильтры для общего использования,
позаботьтесь о поддержке этих списков аргументов и кодов выхода.Прием заданий с обычным текстом на &postscript;-принтерызадания печати
- Если вы - единственный пользователь компьютера и &postscript;-принтера
+ Если вы — единственный пользователь компьютера и &postscript;-принтера
(или принтера на основе другого языка), и вы обещаете никогда не
посылать на принтер обычный текст и никогда не использовать возможностей
различных программ, требующих посылки на принтер обычного текста,
вам можно не заботиться о том, что описано в этом разделе.Но, если вы хотите посылать на принтер как задания &postscript;,
так и обычный текст, рекомендуется дополнить настройку принтера. Для
этого надо, чтобы текстовый фильтр определял, является ли поступающее
задание обычным текстом или программой на языке &postscript;. Все
&postscript;-задания должны начинаться с %! (для
других языков принтеров обратитесь к соответствующей документации).
- Если первые два символа в задании - именно эти, речь идет о &postscript;,
+ Если первые два символа в задании — именно эти, речь идет о &postscript;,
и мы можем остальную часть задания передавать непосредственно. Если же
- первые два символа в файле - другие, фильтр будет преобразовывать
+ первые два символа в файле — другие, фильтр будет преобразовывать
текст в &postscript; и печатать результат.Как нам это сделать?принтерыпоследовательныеЕсли вы используете последовательный принтер, хороший способ
достичь поставленной цели состоит в установке lprps.
- lprps - это фильтр для &postscript;-принтера,
+ lprps — это фильтр для &postscript;-принтера,
выполняющий двустороннее взаимодействие с принтером. Он обновляет файл
состояния принтера, помещая в него подробную информацию, выданную
принтером, так что пользователи и администраторы могут узнать,
в каком именно состоянии (например, toner low
или paper jam) находится принтер. Но еще
важнее, что он включает программу psif, которая
определяет, является ли входящее задание обычным текстом, и вызывает
textps (еще одну программу, поставляемую вместе
с lprps) для преобразования его в &postscript;.
Затем lprps посылает преобразованное задание
на принтер.lprps входит в набор портов FreeBSD
(см. Набор портов). Вы, конечно, можете
загрузить, собрать и установить его самостоятельно. После установки
lprps просто укажите путь к программе
psif, входящей в состав пакета
lprps. Если вы установили lprps
из набора портов, используйте следующий текст в записи для
последовательного &postscript;-принтера в файле
/etc/printcap::if=/usr/local/libexec/psif:Надо также задать характеристику rw;
она требует от системы LPD открывать принтер
в режиме чтения и записи.При использовании параллельного &postscript;-принтера (что не
позволяет обеспечить двустороннее взаимодействие с принтером,
необходимое для системы lprps), можно
использовать в качестве текстового фильтра следующий скрипт командного
интерпретатора:#!/bin/sh
#
# psif - Печать PostScript или обычного текста на PostScript-принтере
# Скрипт, а НЕ версия, входящая в состав lprps
# Установлен в /usr/local/libexec/psif
#
IFS="" read -r first_line
first_two_chars=`expr "$first_line" : '\(..\)'`
if [ "$first_two_chars" = "%!" ]; then
#
# Задание PostScript, печатать его.
#
echo "$first_line" && cat && printf "\004" && exit 0
exit 2
else
#
# Обычный текст, преобразовать его, а затем напечатать.
#
( echo "$first_line"; cat ) | /usr/local/bin/textps && printf "\004" && exit 0
exit 2
fi
- В представленном выше скрипте, textps - отдельно
+ В представленном выше скрипте, textps — отдельно
установленная программа для преобразования обычного текста в
&postscript;. Можно использовать любую программу преобразования текста
в &postscript;. Набор портов FreeBSD (см. Набор
портов) включает полнофункциональную программу преобразования
текста в &postscript; под названием a2ps, которую
тоже можно попробовать использовать.Имитация &postscript; на не-&postscript; принтерахPostScriptэмуляцияGhostscript&postscript; является фактическим стандартом для
- высококачественного набора и печати. &postscript;, однако, -
+ высококачественного набора и печати. &postscript;, однако, —
дорогой стандарт. К счастью, благодаря компании
Aladdin Enterprises есть свободный аналог &postscript; под названием
Ghostscript, который работает с FreeBSD.
Ghostscript может читать большинство &postscript;-файлов и выдавать
- соответствующие страницы на множество устройств, включая много
+ соответствующие страницы на множество устройств, включая многие
моделей не-PostScript принтеров. Установив Ghostscript и используя
- специальный текстовых фильтр для принтера, можно заставить ваш
+ специальный текстовый фильтр для принтера, можно заставить ваш
не-&postscript; принтер работать фактически как &postscript;-принтер.Ghostscript входит в набор портов FreeBSD, если вы хотите
устанавливать его оттуда. Вы можете также легко загрузить, собрать и
установить его самостоятельно.Для имитации &postscript; надо, чтобы текстовый фильтр
определял, печатается ли &postscript;-файл. Если нет, фильтр будет
передавать файл на принтер непосредственно; в противном случае, он
будет использовать Ghostscript, чтобы сначала преобразовать файл в
формат, который поймет принтер.Рассмотрим пример: следующий сценарий представляет собой
текстовый фильтр для принтеров Hewlett Packard DeskJet 500.
Для других принтеров замените аргумент
в команде gs (Ghostscript). (Введите
команду gs -h для получения списка устройств,
поддерживаемых установленной версией Ghostscript.)#!/bin/sh
#
# ifhp - Печать Ghostscript-эмулированного PostScript на DeskJet 500
# Установлен в /usr/local/libexec/ifhp
#
# Обрабатывать LF как CR+LF (чтобы избежать "эффекта ступенек"
# на принтерах HP/PCL:
#
printf "\033&k2G" || exit 2
#
# Прочитать первые два символа файла
#
IFS="" read -r first_line
first_two_chars=`expr "$first_line" : '\(..\)'`
if [ "$first_two_chars" = "%!" ]; then
#
# Это PostScript; используем Ghostscript для чтения, преобразования и печати.
#
/usr/local/bin/gs -dSAFER -dNOPAUSE -q -sDEVICE=djet500 \
-sOutputFile=- - && exit 0
else
#
# Обычный текст или HP/PCL, поэтому просто печатаем его напрямую; печатаем в
# конце символ прогона страницы, чтобы была выдана последняя страница.
#
echo "$first_line" && cat && printf "\033&l0H" &&
exit 0
fi
exit 2Наконец, надо указать системе LPD,
какой фильтр использовать, задав характеристику if::if=/usr/local/libexec/ifhp:Вот и все. Теперь можно выполнять lpr plain.text
и lpr whatever.ps, и обе команды должны успешно
печатать.Фильтры преобразованияПосле завершения простой настройки, описанной в разделе
Простая настройка принтера,
прежде всего, вам может потребоваться установить фильтры
преобразования для любимых форматов файлов (кроме обычных
текстов ASCII).Зачем устанавливать фильтры преобразования?&tex;печать файлов dviФильтры преобразования упрощают печать различного рода файлов.
В качестве примера, предположим, что активно используется
издательская система &tex; и имеется &postscript;-принтер.
При каждой генерации DVI-файла из &tex;, мы не можем печатать его
непосредственно, пока не преобразуем в &postscript;. Для этого
используется такая последовательность команд:&prompt.user; dvips seaweed-analysis.dvi
&prompt.user; lpr seaweed-analysis.psУстановив фильтр преобразования для файлов DVI, мы можем не
конвертировать файл каждый раз вручную, возложив эту задачу на
систему LPD. Теперь при каждом получении
DVI-файла нас от его распечатки отделяет только один шаг:&prompt.user; lpr -d seaweed-analysis.dviМы заставили систему LPD автоматически
преобразовывать DVI-файл, указав опцию . Все
опции преобразования представлены в разделе
Опции форматирования
и преобразования.Для каждой из опций преобразования, которая должна поддерживаться
принтером, установите фильтр преобразования и
укажите его полное имя в файле /etc/printcap.
Фильтр преобразования аналогичен текстовому фильтру для простой
настройки принтера (см. раздел
Установка текстового фильтра),
но вместо печати обычного текста он преобразует файл в формат,
который может понять принтер.Какие фильтры преобразования следует устанавливать?Устанавливать надо те фильтры преобразования, которые
предполагается использовать. Если вы часто печатаете файлы DVI,
значит, фильтр преобразования DVI необходим. Если вам часто
приходится печатать результаты работы troff, может потребоваться
фильтр troff.В следующей таблице представлены фильтры, с которыми
работает система LPD, их
соответствующие характеристики для файла
/etc/printcap, а также способ их вызова
в команде lpr:Тип файлаХарактеристика /etc/printcapОпция lprcifplotcfDVIdfplotgfditroffnfТекст на языке FORTRANrftrofftfрастровое изображениеvfобычный текстifникакой, или
В нашем примере использование lpr -d означает,
что для принтера должна быть задана характеристика
df в записи в файле
/etc/printcap.FORTRANВопреки мнению многих, форматы вроде текста на языке FORTRAN
и plot, вероятно, устарели. У себя на машине вы можете дать
новые значения этим или любым другим опциям форматирования,
установив соответствующие специализированные фильтры. Например,
пусть необходимо напрямую печатать файлы Printerleaf (файлы
настольной издательской системы Interleaf), но вообще вы не собираетесь
печатать файлы типа plot. Можно установить фильтр преобразования
Printerleaf в качестве значения характеристики gf
и научить своих пользователей, что команда lpr -g
означает печатать файлы Printerleaf.Установка фильтров преобразованияПоскольку фильтры преобразования представляют собой программы,
не входящие в базовую поставку FreeBSD, их, видимо, надо помещать
в каталоге /usr/local. Популярное
- местонахождение - каталог /usr/local/libexec,
+ местонахождение — каталог /usr/local/libexec,
поскольку эти фильтры являются специализированными программами для
выполнения системой LPD; обычным
пользователям никогда не понадобится их выполнять.Для включения фильтра преобразования, укажите его полное
имя в качестве значения соответствующей характеристики для принтера
в файле /etc/printcap.В качестве примера, давайте добавим фильтр преобразования DVI
в запись для принтера bamboo. Вот опять пример
файла /etc/printcap, с новой характеристикой
df для принтера bamboo.#
# /etc/printcap для хоста rose - добавлен фильтр df для bamboo
#
rattan|line|diablo|lp|Diablo 630 Line Printer:\
:sh:sd=/var/spool/lpd/rattan:\
:lp=/dev/lpt0:\
:if=/usr/local/libexec/if-simple:
bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\
:sh:sd=/var/spool/lpd/bamboo:\
:lp=/dev/ttyd5:ms#-parenb cs8 clocal crtscts:rw:\
:if=/usr/local/libexec/psif:\
:df=/usr/local/libexec/psdf:
- Фильтр DVI - скрипт командного интерпретатора по имени
+ Фильтр DVI — скрипт командного интерпретатора по имени
/usr/local/libexec/psdf. Вот его текст:#!/bin/sh
#
# psdf - фильтр принтера, преобразующий DVI в PostScript
# Установлен в /usr/local/libexec/psdf
#
# Вызывается системой lpd при выполнении пользователем команды lpr -d
#
exec /usr/local/bin/dvips -f | /usr/local/libexec/lprps "$@"Это скрипт выполняет команду dvips в режиме
фильтрования (аргумент ) входного потока,
представляющего собой задание для печати. Затем запускается
фильтр &postscript;-принтера lprps (см. раздел
Прием заданий с
обычным текстом на &postscript;-принтеры) с аргументами,
переданными системой LPD этому скрипту.
Команда lprps будет использовать эти аргументы
для учета распечатанных страниц.Дополнительные примеры фильтров преобразованияПоскольку нет фиксированного набора шагов для установки
фильтров преобразования, я просто представлю дополнительные
примеры. Используйте их в качестве руководства при создании
собственных фильтров. Используйте их непосредственно, если
нужно.Следующий пример фильтра преобразует растровый файл (точнее,
GIF-файл) для печати на принтере Hewlett Packard LaserJet III-Si:#!/bin/sh
#
# hpvf - Преобразовать GIF-файлы в HP/PCL и напечатать
# Установлен в /usr/local/libexec/hpvf
PATH=/usr/X11R6/bin:$PATH; export PATH
giftopnm | ppmtopgm | pgmtopbm | pbmtolj -resolution 300 \
&& exit 0 \
|| exit 2Он работает путем преобразования GIF-файла в переносимый формат anymap,
- его - в переносимый формат graymap, затем - в переносимый bitmap,
- а уже его - в данные, подходящие для LaserJet/PCL.
+ его — в переносимый формат graymap, затем — в переносимый bitmap,
+ а уже его — в данные, подходящие для LaserJet/PCL.
Вот файл /etc/printcap с записью для
принтера, в которой используется представленный выше фильтр:#
# /etc/printcap для хоста orchid
#
teak|hp|laserjet|Hewlett Packard LaserJet 3Si:\
:lp=/dev/lpt0:sh:sd=/var/spool/lpd/teak:mx#0:\
:if=/usr/local/libexec/hpif:\
:vf=/usr/local/libexec/hpvf:Следующий скрипт является фильтром преобразования для печати
данных troff, получаемых из системы набора groff, на
&postscript;-принтере bamboo:#!/bin/sh
#
# pstf - Преобразует выдаваемые groff данные troff в PS и печатает.
# Установлен в /usr/local/libexec/pstf
#
exec grops | /usr/local/libexec/lprps "$@"Представленный выше скрипт снова использует команду
lprps для взаимодействия с принтером.
Если принтер подключен к параллельному порту, придется
использовать следующий скрипт:#!/bin/sh
#
# pstf - Преобразует выдаваемые groff данные troff в PS и печатает.
# Установлен в /usr/local/libexec/pstf
#
exec gropsВот и все. Вот какую запись надо добавить в файл
/etc/printcap, чтобы включить этот фильтр::tf=/usr/local/libexec/pstf:Вот пример, который пригодится старым специалистам по языку FORTRAN.
Это фильтр для печати текста программы на языке FORTRAN на любом принтере,
который может непосредственно печатать обычный текст. Мы установим его
для принтера teak:#!/bin/sh
#
# hprf - Фильтр текста на языке FORTRAN для LaserJet 3si:
# Установлен в /usr/local/libexec/hprf
#
printf "\033&k2G" && fpr && printf "\033&l0H" &&
exit 0
exit 2Надо добавить следующую строку к записи в файле
/etc/printcap для принтера
teak, чтобы включить этот фильтр::rf=/usr/local/libexec/hprf:Перейдем к последнему, более сложному примеру. Мы добавим фильтр
DVI для уже использовавшегося принтера LaserJet по имени
teak. Сначала простая часть: изменить файл
/etc/printcap, указав местонахождение
фильтра DVI::df=/usr/local/libexec/hpdf:
- А теперь - часть посложнее: создать фильтр. Для этого нам
+ А теперь — часть посложнее: создать фильтр. Для этого нам
понадобится программа преобразования DVI в LaserJet/PCL. Набор
портов FreeBSD (см. Набор портов)
содержит одну: соответствующий пакет называется
dvi2xx. Установка этого пакета дает нам
необходимую программу, dvilj2p, которая
преобразует DVI в коды, подходящие для LaserJet IIp,
LaserJet III и LaserJet 2000.Команда dvilj2p требует создания
достаточно сложного фильтра hpdf, поскольку
она не может читать стандартный входной поток. Она хочет работать
с именем файла. Что еще хуже, имя файла должно завершаться
расширением .dvi, так что использование
стандартного входного потока /dev/fd/0
тоже проблематично. Мы можем обойти эту проблему, создав (символическую)
связь (с именем, завершающимся суффиксом .dvi) с
устройством /dev/fd/0, тем самым, заставив
команду dvilj2p читать из стандартного входного
потока.Единственная оставшаяся проблема состоит в том, что мы не можем
создавать временную связь в каталоге /tmp.
Символьные связи принадлежат пользователю и группе bin.
Фильтр же работает от имени пользователя daemon. А у
каталога /tmp установлен sticky bit. Фильтр сможет
создать связь, но не сможет почистить за собой и удалить ее, поскольку
связь будет принадлежать другому пользователю.Вместо этого, фильтр будет создавать символическую связь в текущем
рабочем каталоге, которым является каталог спулинга (задаваемый
характеристикой sd в файле
/etc/printcap). Это отличное место для выполнения
фильтрами своих действий, особенно потому, что (иногда)
в каталоге спулинга места больше, чем в /tmp.Вот, наконец, и сам фильтр:#!/bin/sh
#
# hpdf - Печать данных DVI на принтере HP/PCL
# Установлен в /usr/local/libexec/hpdf
PATH=/usr/local/bin:$PATH; export PATH
#
# Определяем функцию для удаления временных файлов. Они существуют
# в текущем каталоге - в каталоге спулинга для принтера.
#
cleanup() {
rm -f hpdf$$.dvi
}
#
# Определяем функцию для обработки критических ошибок: напечатать заданное
# сообщение и выйти с кодом 2. Код выхода 2 сообщает системе LPD, что не
# надо повторно пытаться печатать задание.
#
fatal() {
echo "$@" 1>&2
cleanup
exit 2
}
#
# Если пользователь удаляет задание, система LPD будет посылать сигнал SIGINT,
# поэтому перехватываем SIGINT (и пару других сигналов), чтобы убрать за собой.
#
trap cleanup 1 2 15
#
# Гарантируем, что не конфликтуем с существующими файлами.
#
cleanup
#
# Связываем входной файл DVI со стандартным входным потоком (файлом для печати).
#
ln -s /dev/fd/0 hpdf$$.dvi || fatal "Cannot symlink /dev/fd/0"
#
# Заменяем LF = CR+LF
#
printf "\033&k2G" || fatal "Cannot initialize printer"
#
# Преобразуем и печатаем. Значение, возвращаемое программой dvilj2p, не надежно,
# так что мы его игнорируем.
#
dvilj2p -M1 -q -e- dfhp$$.dvi
#
# Убираем за собой и завершаем работу
#
cleanup
exit 0Автоматизированное преобразование: альтернатива фильтрам преобразованияВсе эти фильтры преобразования многое дают для среды печати,
но требуют от пользователя указывать (в командной строке
&man.lpr.1;), какой именно фильтр использовать. Если пользователи
не особенно разбираются в компьютерах, необходимость указывать
опцию фильтра будет их раздражать. Что еще хуже, однако,
при неправильном указании опции фильтрования может быть применен
фильтр, не соответствующий типу файла, и принтер испортит несколько
сотен страниц бумаги.Вместо установки фильтров преобразования, можно попытаться
заставить текстовый фильтр (поскольку он применяется по умолчанию)
определять тип файла, который его попросили напечатать, и затем
автоматически вызывать соответствующий фильтр преобразования.
В этом могут помочь утилиты вроде file. Конечно,
будет сложно различать некоторые типы
- файлов—и, кончено же, можно задавать фильтры преобразования
+ файлов — и, конечно же, можно задавать фильтры преобразования
только для них.apsfilterпечатьфильтрыapsfilterВ наборе портов FreeBSD есть текстовый фильтр, выполняющий
автоматическое преобразование; это apsfilter.
Он может выявлять обычный текст, &postscript; и файлы DVI,
выполнять соответствующие преобразования и печатать
результат.Выходные фильтрыСистема спулинга LPD поддерживает еще
один тип фильтров, который мы еще не рассматривали: выходные фильтры.
Выходной фильтр предназначен только для печати обычного текста,
как текстовый фильтр, но с множеством упрощений. Если вы используете
выходной фильтр, а текстовый фильтр не задан, то:Система LPD запускает выходной
фильтр один раз для всего задания, а не для каждого файла задания.Система LPD не пытается определить начало
или конец файлов в задании для выходного фильтра.Система LPD не передает выходному
фильтру имя пользователя или хоста, так что этот фильтр не предназначен
для учета использования принтера. Фактически, он получает всего два
аргумента:имя-фильтра-wширина-lдлинаГде ширина берется из характеристики
- pw, а длина - из
+ pw, а длина — из
характеристики pl для соответствующего
принтера.Не соблазняйтесь простотой выходного фильтра. Если вы хотите,
чтобы каждый файл в задании начинал печататься с новой страницы,
выходной фильтр не поможет. Используйте текстовый
фильтр (также известный как входной); см. раздел
Установка текстового фильтра.
- Более того, выходной фильтр, фактически, - более
+ Более того, выходной фильтр, фактически, — более
сложный, поскольку он должен проверять посылаемый ему
поток байтов в поисках специальных символов-флагов и посылать себе
сигналы от имени системы LPD.Однако выходной фильтр необходим, если
надо выдавать начальные страницы и требуется посылать управляющие
последовательности или другие строки инициализации, чтобы можно было
напечатать начальную страницу. (Но он не поможет,
если необходимо учитывать начальные страницы для пользователя,
поскольку система LPD не передает
выходному фильтру никакой информации о пользователе или хосте.)На одном принтере система LPD
позволяет совместно с выходным использовать текстовый или другие
фильтры. В таких случаях, система LPD будет
запускать выходной фильтр только для печати начальной страницы (см.
раздел Начальные
страницы). Система LPD затем
предполагает, что выходной фильтр остановится,
посылая ему два байта: ASCII 031 и ASCII 001. Когда выходной фильтр
видит эти два байта (031, 001), он должен остановиться, посылая
себе сигнал SIGSTOP. Когда система
LPD закончит выполнение остальных фильтров,
она перезапускает выходной фильтр, посылая ему сигнал
SIGCONT.Если есть выходной фильтр, но нет текстового,
и система LPD обрабатывает задания с обычным
текстом, LPD использует для выполнения
задания выходной фильтр. Как уже было сказано, выходной фильтр
будет печатать все файлы задания последовательно, без прогонов
страниц или других настроек бумаги, а это вряд ли
вас устроит. Почти во всех случаях необходим текстовый фильтр.Программа lpf, которую мы представили ранее
как текстовый фильтр, может также работать как выходной фильтр. Если
срочно необходим простой выходной фильтр, но вы не хотите писать
- код ля выявления байтов и посылки сигнала, попробуйте использовать
+ код для выявления байтов и посылки сигнала, попробуйте использовать
lpf. Можно также поместить lpf
в скрипт командного интерпретатора для обработки любых
кодов инициализации, которые может потребовать принтер.lpf: текстовый фильтрПрограмма /usr/libexec/lpr/lpf,
поставляемая в составе двоичного дистрибутива FreeBSD,
представляет собой текстовый (входной) фильтр, который может
печатать с отступом (если задание послано командой
- lpr -i), пропускать все символы буквально
+ lpr -i), пропускать все символы на печать
(если задание послано командой lpr -l),
настраивать позицию печати при получении в задании символов
забоя и табуляции, а также учитывать количество напечатанных страниц.
Она может также использоваться как выходной фильтр.Программа lpf подходит для многих сред печати.
И хотя она не позволяет посылать на принтер инициализационные
последовательности, легко написать скрипт командного интерпретатора,
который будет выполнять необходимую инициализацию, а затем вызывать
lpf.учет страницучетиспользования принтераЧтобы программа lpf корректно выполняла учет
страниц, ей необходимо указать корректные значения характеристик
pw и pl в файле
/etc/printcap. Она использует эти значения для
определения того, сколько текста может поместиться на странице и сколько
страниц было в задании пользователя. Подробнее об учете использования
принтера см. в разделе Учет
использования принтера.Начальные страницыПри наличии множества пользователей, использующих
различные принтеры, вероятно, можно считать начальные
страницы неизбежным злом.баннерные страницыначальные страницыначальные страницыНачальные страницы, которые также называют баннерными
или разделительными страницами, идентифицируют,
кому принадлежат задания после их печати. Обычно информация на них
выдается большими, жирными буквами, возможно, с декоративными рамочками,
чтобы в пачке распечаток они отличались от реальных документов,
образующих задания пользователей. Они позволяют пользователям быстро
находить свои задания. Очевидный недостаток выдачи начальных страниц
состоит в том, что для каждого задания надо печатать на одну страницу
больше, причем, страница эта хоть сколько-нибудь нужна несколько минут, а
затем она оказывается в мусорной корзине или сдается в макулатуру.
(Учтите, что начальная страница выдается в начале задания, а не перед каждым
файлом, так что бумаги может теряться не так уж и много.)Система LPD может выдавать заголовочные
страницы для ваших распечаток автоматически, если
ваш принтер может непосредственно печатать обычный текст. Если используется
&postscript;-принтер, потребуется внешняя программа для генерации начальной
страницы; см. Начальные
страницы на &postscript;-принтерах.Включение выдачи начальных страницВ разделе Простая настройка
принтера мы отключили выдачу начальных страниц, задав характеристику
sh (что означает suppress header) в
- файле /etc/printcap. Для включения Для обеспечения
+ файле /etc/printcap. Для включения
выдачи начальных страниц на принтер, просто удалите характеристику
sh.Кажется слишком просто, правда?Вы правы. Может потребоваться задать выходной
фильтр для посылки строк инициализации на принтер. Вот пример выходного
фильтра для Hewlett Packard PCL-совместимых принтеров:#!/bin/sh
#
# hpof - Выходной фильтр для Hewlett Packard PCL-совместимых принтеров
# Установлен в /usr/local/libexec/hpof
printf "\033&k2G" || exit 2
exec /usr/libexec/lpr/lpfЗадайте полное имя выходного фильтра в качестве значения
характеристики of. Подробнее об этом см.
в разделе Выходные фильтры.Вот пример файла /etc/printcap для принтера
teak, который мы представили ранее; мы включили
выдачу начальных страниц и добавили показанный выше выходной фильтр:#
# /etc/printcap для хоста orchid
#
teak|hp|laserjet|Hewlett Packard LaserJet 3Si:\
:lp=/dev/lpt0:sd=/var/spool/lpd/teak:mx#0:\
:if=/usr/local/libexec/hpif:\
:vf=/usr/local/libexec/hpvf:\
:of=/usr/local/libexec/hpof:Теперь, когда пользователи выдают задания на принтер
teak, они получают начальную страницу с каждым
заданием. Если пользователи хотят тратить время на поиск своих
распечаток, они могут подавить вывод начальных страниц,
посылая задание с опцией lpr -h;
другие опции &man.lpr.1; см. в разделе
Опции начальных
страниц.Система LPD выдает символ прогона
страницы (form feed) после начальной страницы. Если ваш принтер
использует другой символ или последовательность символов
для выброса напечатанной страницы, укажите их в
качестве значения характеристики ff
в файле /etc/printcap.Управление начальными страницамиВключая выдачу начальных страниц, система LPD
будет выдавать длинный длинный заголовок, целую страницу
с большими буквами, идентифицирующими пользователя, хост и задание. Ниже
представлен пример (kelly напечатала задание по имени outline с хоста rose): k ll ll
k l l
k l l
k k eeee l l y y
k k e e l l y y
k k eeeeee l l y y
kk k e l l y y
k k e e l l y yy
k k eeee lll lll yyy y
y
y y
yyyy
ll
t l i
t l
oooo u u ttttt l ii n nnn eeee
o o u u t l i nn n e e
o o u u t l i n n eeeeee
o o u u t l i n n e
o o u uu t t l i n n e e
oooo uuu u tt lll iii n n eeee
r rrr oooo ssss eeee
rr r o o s s e e
r o o ss eeeeee
r o o ss e
r o o s s e e
r oooo ssss eeee
Job: outline
Date: Sun Sep 17 11:04:58 1995Система LPD добавляет прогон страницы
после этого текста, чтобы задание начиналось с новой страницы
(если только вы не указали характеристику sf (suppress
form feeds) в записи соответствующего принтера в файле
/etc/printcap).Если вы предпочитаете, чтобы система LPD
создавала короткий заголовок, укажите
характеристику sb (short banner) в файле
/etc/printcap. Начальная страница будет
иметь следующий вид:rose:kelly Job: outline Date: Sun Sep 17 11:07:51 1995Также по умолчанию система LPD печатает
начальную страницу перед заданием. Для изменения порядка на обратный,
укажите характеристику hl (header last) в файле
/etc/printcap.Учет начальных страницИспользование встроенных начальных страниц системы
LPD порождает определенную парадигму
учета использования принтера: начальные страницы пользователи
не должны оплачивать.Почему?
- Поскольку выходной фильтр - единственная внешняя программа,
+ Поскольку выходной фильтр — единственная внешняя программа,
управляющая выдачей начальных страниц, которая может выполнять учет,
а ей не передают информацию о пользователе или хосте
и учётный файл, так что, она не имеет никакого представления о том,
на чей счет отнести использование принтера. Также недостаточно
просто добавлять одну страницу в текстовом фильтре
или в любом из фильтров преобразований (которые имеют информацию
о пользователе и хосте), поскольку пользователи могут подавлять
выдачу начальных страниц с помощью опции lpr -h.
И их заставят оплачивать начальные страницы, которые они не печатали.
Понятно, что опцию lpr -h будут использовать в большинстве
случаев те, кто озабочен проблемами окружающей среды, но вы никак не
можете стимулировать ее использование.Также недостаточно, чтобы каждый из фильтров
генерировал собственные начальные страницы (и, тем самым,
мог их учитывать). Если пользователи захотят отказаться от выдачи
начальных страниц и укажут опцию lpr -h, они все
равно их получат, и будут вынуждены оплатить, поскольку система
LPD не передает информации о наличии опции
ни одному из этих фильтров.Итак, что же вы можете сделать?Вы можете:Принять парадигму системы LPD и
сделать начальные страницы бесплатными.Установить альтернативную систему вместо LPD,
такую как LPRng. В разделе
Альтернативы стандартному
спулеру представлена дополнительная информация о других
системах спулинга, которые можно использовать вместо
LPD.
Написать умный выходной фильтр. Обычно
выходной фильтр не предназначен для выполнения чего-то кроме
инициализации принтера и простых преобразований символов. Он
подходит для начальных страниц и заданий с обычным текстом
(когда нет текстового (входного) фильтра). Но, если есть текстовый
фильтр для заданий с обычным текстом, то система
LPD будет запускать выходной фильтр только
для начальных страниц. И выходной фильтр может анализировать
текст начальной страницы, которую генерирует система
LPD, чтобы определить, на счет какого
пользователя и хоста отнести начальную страницу. Единственная
проблема этого метода в том, что выходной фильтр все равно не
знает, какой учетный файл использовать (ему не передают
имя файла, заданное в качестве значения характеристики
af), но при наличии хорошо известного учетного
файла, его имя можно явно указать в выходном фильтре. Для
упрощения этапа анализа задайте характеристику
sh (short header) в файле
/etc/printcap. Повторимся, что это может
оказаться слишком сложным, и пользователи, несомненно, больше оценят
великодушного системного администратора, который сделает начальные
страницы бесплатными.Начальные страницы на &postscript;-принтерахКак было описано выше, система LPD может
генерировать начальную страницу в виде обычного текста, что подходит для
многих принтеров. Конечно, &postscript;-принтеры не могут непосредственно
печатать обычный текст, так что, для них возможность выдачи начальных
- страниц системы LPD бесполезна—или почти
+ страниц системы LPD бесполезна — или почти
бесполезна.Один очевидный способ получить начальные страницы — заставить
каждый фильтр преобразования и текстовый фильтр генерировать начальную
страницу. Эти фильтры должны использовать аргументы имя пользователя и хост
для генерации соответствующей начальной страницы. Недостаток этого
метода состоит в том, что пользователи будут всегда получать начальные
страницы, даже если будут посылать задания с помощью команды
lpr -h.Давайте рассмотрим этот метод детально. Следующий сценарий
принимает три аргумента (регистрационное имя пользователя,
имя хоста и имя задания) и создает простую
начальную страницу на языке &postscript;:#!/bin/sh
#
# make-ps-header - выдать начальную страницу на языке PostScript в stdout
# Установлен в /usr/local/libexec/make-ps-header
#
#
# Это единицы измерения PostScript (72 на дюйм). Измените значения для A4 или
# другого используемого формата бумаги:
#
page_width=612
page_height=792
border=72
#
# Проверяем аргументы
#
if [ $# -ne 3 ]; then
echo "Usage: `basename $0` <user> <host> <job>" 1>&2
exit 1
fi
#
# Сохраняем значения в переменных, в основном, для упрощения понимания
# последующего PostScript-кода.
#
user=$1
host=$2
job=$3
date=`date`
#
# Посылаем PostScript-код в stdout.
#
exec cat <<EOF
%!PS
%
% Гарантируем, что не будем влиять на следующее далее задание пользователя
%
save
%
% Делаем тонкую некрасивую рамку по краям бумаги.
%
$border $border moveto
$page_width $border 2 mul sub 0 rlineto
0 $page_height $border 2 mul sub rlineto
currentscreen 3 -1 roll pop 100 3 1 roll setscreen
$border 2 mul $page_width sub 0 rlineto closepath
0.8 setgray 10 setlinewidth stroke 0 setgray
%
% Выдаем регистрационное имя пользователя, красивыми, большими и рельефными буквами
%
/Helvetica-Bold findfont 64 scalefont setfont
$page_width ($user) stringwidth pop sub 2 div $page_height 200 sub moveto
($user) show
%
% Теперь выдаем всякие детали
%
/Helvetica findfont 14 scalefont setfont
/y 200 def
[ (Job:) (Host:) (Date:) ] {
200 y moveto show /y y 18 sub def }
forall
/Helvetica-Bold findfont 14 scalefont setfont
/y 200 def
[ ($job) ($host) ($date) ] {
270 y moveto show /y y 18 sub def
} forall
%
% Вот и все
%
restore
showpage
EOFТеперь, каждый из фильтров преобразования и текстовый фильтр
может вызвать этот сценарий, чтобы сначала сгенерировать
начальную страницу, а затем напечатать задание пользователя.
- Вот фильтр преобразования DVI, представленные ранее в этом
+ Вот фильтр преобразования DVI, представленный ранее в этом
документе, измененный для выдачи начальной страницы:#!/bin/sh
#
# psdf - фильтр преобразования DVI в PostScript
# Установлен в /usr/local/libexec/psdf
#
# Вызывается системой lpd при выполнении пользователем команды lpr -d
#
orig_args="$@"
fail() {
echo "$@" 1>&2
exit 2
}
while getopts "x:y:n:h:" option; do
case $option in
x|y) ;; # Ignore
n) login=$OPTARG ;;
h) host=$OPTARG ;;
*) echo "LPD started `basename $0` wrong." 1>&2
exit 2
;;
esac
done
[ "$login" ] || fail "No login name"
[ "$host" ] || fail "No host name"
( /usr/local/libexec/make-ps-header $login $host "DVI File"
/usr/local/bin/dvips -f ) | eval /usr/local/libexec/lprps $orig_argsОбратите внимание, как фильтр должен анализировать список
аргументов, чтобы определить имя пользователя и имя хоста.
Анализ аргументов в других фильтрах аргументов выполняется точно так же.
Текстовый фильтр принимает, однако, немного другой набор аргументов
(см. раздел Как работают
фильтры).Как уже упоминалось, представленная выше схема хотя и достаточно
проста, но не позволяет учесть опцию подавить вывод
начальной страницы (опция ) команды
lpr. Если пользователи хотят сберечь деревья
(или несколько копеек, если вы берете деньги и за начальные страницы),
они не смогут этого сделать, поскольку каждый фильтр будет
выдавать начальную страницу для каждого задания.Чтобы позволить пользователям отключать выдачу начальной страницы для
отдельного задания, надо будет использовать прием, представленный в
разделе Учет
начальных страниц: написать выходной фильтр, который анализирует
сгенерированную системой LPD начальную страницу и выдает ее
&postscript;-версию. Если пользователь посылает задание командой
lpr -h, система LPD
не будет генерировать начальную страницу, как и ваш выходной
фильтр. В противном случае, ваш выходной фильтр будет читать текст,
полученный от системы LPD, и
посылать на принтер соответствующий &postscript;-код для начальной
страницы.Если вы используете &postscript;-принтер с последовательным
интерфейсом, можно использовать систему lprps,
которая включает выходной фильтр, psof,
делающий то, что описано выше. Помните, что программа
psof не учитывает напечатанные пользователями
начальные страницы.Печать по сетипринтерысетевыепечать по сетиFreeBSD поддерживает печать по сети: посылку заданий на
удаленные принтеры. Печатью по сети обычно называют две разные
ситуации:Работа с принтером, подключенным к удаленному хосту. Вы
устанавливаете принтер с обычным последовательным или параллельным
интерфейсом на одном хосте. Затем, вы настраиваете систему
LPD для обеспечения доступа к принтеру
с других хостов в сети. В разделе
Принтеры, установленные
на удаленных хостах описано, как это сделать.Работа с принтером, подключенным непосредственно к сети.
Принтер имеет сетевой интерфейс, кроме (или вместо) более
традиционного последовательного или параллельного. Такой принтер
может работать следующим образом:Он может понимать протокол LPD и
даже поддерживать очереди заданий с удаленных хостов. В этом
случае, он работает просто как обычный хост с системой
LPD. Для настройки такого принтера
следуйте той же процедуре, которая описана в разделе
Принтеры,
установленные на удаленных хостах.Он может поддерживать получение потока данных по сети. В
этом случае, вы подключаете принтер к одному
из хостов в сети, делая этот хост ответственным за поддержку
очередей заданий и их посылку на принтер. В разделе
Принтеры с
- интерфейсами для получения потока данных по сети представлен
+ сетевыми интерфейсами представлен
ряд советов по установке таких принтеров.Принтеры, установленные на удаленных хостахСистема спулинга LPD имеет встроенную
- поддержку для посылки заданий на другие хосты, на которых тоже работает
+ поддержку посылки заданий на другие хосты, на которых тоже работает
система LPD (или совместимая с
LPD). Это позволяет установить принтер
на одном хосте и сделать его доступным с других хостов. Она также
работает с принтерами, имеющими сетевые интерфейсы и понимающими
протокол LPD.Для обеспечения такого рода удаленной печати, сначала установите
принтер на одном хосте, хосте принтера, с помощью
процедуры, описанной в разделе Простая
настройка принтера. Выполните любые необходимые дополнительные
настройки, как описано в разделе Расширенная
настройка принтера. Не забудьте протестировать принтер и убедиться,
обеспечивает ли он заданные возможности системы LPD.
Также проверьте, что локальный хост имеет право
использовать службу LPD на
удаленном хосте (см. раздел
Ограничение приема
заданий с удаленных хостов).принтерысетевыепечать по сетиЕсли вы используете принтер с сетевым интерфейсом,
совместимый с системой LPD, упомянутым
в обсуждении выше хостом принтера будет сам
- принтер, а в качестве имена принтера будет
+ принтер, а в качестве имени принтера будет
выступать имя, которое вы сконфигурировали для принтера. См.
документацию, поставляемую с принтером и/или сетевым интерфейсом
принтера.Если вы используете Hewlett Packard Laserjet, то при задании
принтеру имени text будет автоматически
выполняться преобразование символа LF в последовательность
CRLF, так что, сценарий hpif не понадобится.Затем, на других хостах, для которых вы хотите обеспечить доступ
к принтеру, создайте запись в их файлах /etc/printcap
со следующими компонентами:Дайте записи любое подходящее имя. Для простоты, однако,
имеет смысл задавать такое же имя и псевдонимы, как и на хосте
принтера.Характеристику lp оставьте пустой, указав
это явно (:lp=:).Создайте каталог спулинга и укажите его местонахождение в
характеристике sd. Система
LPD будет сохранять задания в нем,
прежде чем они будут посланы на хост принтера.Укажите имя хоста принтера в качестве значения характеристики
rm.Укажите имя принтера на хосте принтера
в качестве значения характеристики rp.Вот и все. Не нужно перечислять фильтры преобразования, размеры
страницы и вообще ничего больше в файле
/etc/printcap.Рассмотрим пример. На хосте rose есть два принтера,
bamboo и rattan.
Мы позволим пользователям хоста orchid печатать на эти
принтеры. Вот файл /etc/printcap для хоста
orchid (из раздела
Включение
выдачи начальных страниц). В нем уже есть запись для принтера
teak; мы добавили две записи для принтеров на
хосте rose:#
# /etc/printcap для хоста orchid - добавлены (удаленные) принтеры на rose
#
#
# teak - локальный принтер; он подключен непосредственно к orchid:
#
teak|hp|laserjet|Hewlett Packard LaserJet 3Si:\
:lp=/dev/lpt0:sd=/var/spool/lpd/teak:mx#0:\
:if=/usr/local/libexec/ifhp:\
:vf=/usr/local/libexec/vfhp:\
:of=/usr/local/libexec/ofhp:
#
# rattan подключен к rose; посылать задания для rattan на хост rose:
#
rattan|line|diablo|lp|Diablo 630 Line Printer:\
:lp=:rm=rose:rp=rattan:sd=/var/spool/lpd/rattan:
#
# bamboo тоже подключен к rose:
#
bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\
:lp=:rm=rose:rp=bamboo:sd=/var/spool/lpd/bamboo:Затем достаточно только создать каталоги спулинга на
orchid:&prompt.root; mkdir -p /var/spool/lpd/rattan /var/spool/lpd/bamboo
&prompt.root; chmod 770 /var/spool/lpd/rattan /var/spool/lpd/bamboo
&prompt.root; chown daemon:daemon /var/spool/lpd/rattan /var/spool/lpd/bambooТеперь пользователи хоста orchid могут печатать на
принтеры rattan и bamboo. Если,
например, пользователь на orchid выполнит команду
&prompt.user; lpr -P bamboo -d sushi-review.dvi
система LPD на orchid
будет копировать задание в каталог спулинга
/var/spool/lpd/bamboo и учтет, что печатается
задание DVI. Как только на хосте rose появится место
в каталоге спулинга принтера bamboo, две системы
LPD передадут файл на хост rose.
Файл будет ждать в очереди на rose пока, наконец, не будет
напечатан. Он будет преобразован из формата DVI в &postscript; (поскольку
bamboo является &postscript;-принтером) на хосте
rose.
- Принтеры с интерфейсами для получения потока данных по сети
+ Принтеры с сетевыми интерфейсамиЧасто при покупке сетевой карты для принтера можно приобрести
две версии: эмулирующую спулер (более дорогая версия) или просто
позволяющую принимать на принтер данные так, как если бы
использовался последовательный или параллельный порт (более
дешевая версия). В этом разделе описано, как использовать
более дешёвую версию. Использование более дорогой версии
описано в предыдущем разделе
Принтеры, установленные
на удаленных хостах.Формат файла /etc/printcap позволяет
указывать, какой последовательный или параллельный интерфейс
использовать, и (при использовании последовательного интерфейса),
какую установить скорость, использовать ли управление потоком,
размер отступов для табуляций, преобразование символов новой строки
и другие параметры. Но нет способа указать подключение к принтеру,
прослушивающему TCP/IP или другой сетевой порт.Для посылки данных на подключенный к сети принтер, надо разработать
программу взаимодействия, которую могут вызывать текстовый фильтр и
фильтры преобразований. Вот один из примеров: скрипт
netprint принимает все данные со стандартного
входного потока и посылает их на принтер, подключенный к сети.
Мы указываем имя хоста принтера в качестве первого аргумента, а
- номер порта, к которому надо подключаться - в качестве второго
+ номер порта, к которому надо подключаться — в качестве второго
аргумента команды netprint. Учтите, что
поддерживается только одностороннее взаимодействие (с ОС FreeBSD
на принтер); многие сетевые принтеры поддерживают двустороннее
взаимодействие, и вы можете захотеть его использовать (для
получения состояния принтера, учета и т.п.).#!/usr/bin/perl
#
# netprint - Текстовый фильтр для принтера, подключенного к сети
# Установлен в /usr/local/libexec/netprint
#
$#ARGV eq 1 || die "Usage: $0 <printer-hostname> <port-number>";
$printer_host = $ARGV[0];
$printer_port = $ARGV[1];
require 'sys/socket.ph';
($ignore, $ignore, $protocol) = getprotobyname('tcp');
($ignore, $ignore, $ignore, $ignore, $address)
= gethostbyname($printer_host);
$sockaddr = pack('S n a4 x8', &AF_INET, $printer_port, $address);
socket(PRINTER, &PF_INET, &SOCK_STREAM, $protocol)
|| die "Can't create TCP/IP stream socket: $!";
connect(PRINTER, $sockaddr) || die "Can't contact $printer_host: $!";
while (<STDIN>) { print PRINTER; }
exit 0;Затем можно использовать этот сценарий в различных фильтрах. Пусть
у нас есть строчный принтер Diablo 750-N, подключенный к сети. Принтер
- принимает данные на печать через порт 5100. Имя хоста для принтера -
+ принимает данные на печать через порт 5100. Имя хоста для принтера —
scrivener. Вот текстовый фильтр для этого принтера:#!/bin/sh
#
# diablo-if-net - Текстовый фильтр для принтера Diablo `scrivener',
# прослушивающего порт 5100. Установлен в /usr/local/libexec/diablo-if-net
#
exec /usr/libexec/lpr/lpf "$@" | /usr/local/libexec/netprint scrivener 5100Ограничение использования принтерапринтерыограничение доступаВ этом разделе представлена информация об ограничении доступа к
принтеру. Система LPD позволяет управлять
тем, кто может обращаться к принтеру, как локально, так и удаленно,
смогут ли они печатать несколько копий, насколько большими могут
быть их задания и насколько могут разрастаться очереди печати.Ограничение количества копийСистема LPD позволяет пользователям
легко печатать несколько копий файла. Пользователи могут печатать
задания с помощью команды lpr -#5
(например) и получать пять копий каждого файла в задании. Хорошо это
- или нет - решать вам.
+ или нет — решать вам.
Если вы считаете, что многочисленные копии только изнашивают ваши
принтеры, можете отключить опцию команды
&man.lpr.1;, добавив характеристику sc в файл
/etc/printcap. Когда пользователи пошлют
задания с опцией , они увидят:lpr: multiple copies are not allowedУчтите, что если вы настроили удаленный доступ к принтеру (см.
раздел Принтеры,
установленные на удаленных хостах), необходимо задать
характеристику sc также и в файлах
/etc/printcap удаленных хостов, иначе
пользователи все равно смогут посылать задания с несколькими
копиями с других хостов.Рассмотрим пример. Вот файл /etc/printcap
для хоста rose. Принтер rattan
вполне надежен, поэтому мы разрешим печатать на него несколько
копий, но лазерный принтер bamboo несколько
более изношен, поэтому мы отключим для него печать нескольких
копий, добавив характеристику sc:#
# /etc/printcap для хоста rose - запрещает печать нескольких копий на bamboo
#
rattan|line|diablo|lp|Diablo 630 Line Printer:\
:sh:sd=/var/spool/lpd/rattan:\
:lp=/dev/lpt0:\
:if=/usr/local/libexec/if-simple:
bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\
:sh:sd=/var/spool/lpd/bamboo:sc:\
:lp=/dev/ttyd5:ms#-parenb cs8 clocal crtscts:rw:\
:if=/usr/local/libexec/psif:\
:df=/usr/local/libexec/psdf:Теперь нам также нужно добавить характеристику sc
в файле /etc/printcap на хосте orchid
(и раз уж мы его меняем, давайте отключим печать нескольких копий для
принтера teak):#
# /etc/printcap для хоста orchid - отключена печать нескольких копий на
# локальном принтере teak и на удаленном принтере bamboo
teak|hp|laserjet|Hewlett Packard LaserJet 3Si:\
:lp=/dev/lpt0:sd=/var/spool/lpd/teak:mx#0:sc:\
:if=/usr/local/libexec/ifhp:\
:vf=/usr/local/libexec/vfhp:\
:of=/usr/local/libexec/ofhp:
rattan|line|diablo|lp|Diablo 630 Line Printer:\
:lp=:rm=rose:rp=rattan:sd=/var/spool/lpd/rattan:
bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\
:lp=:rm=rose:rp=bamboo:sd=/var/spool/lpd/bamboo:sc:С помощью характеристики sc мы предотвращаем
использование команды lpr -#, но это не мешает
пользователям просто выполнить команду &man.lpr.1; несколько раз
или просто послать один и тот же файл несколько раз в одном задании
следующим образом:&prompt.user; lpr forsale.sign forsale.sign forsale.sign forsale.sign forsale.signЕсть много способов предотвратить такое некорректное использование
(включая его игнорирование), которые вы можете разработать самостоятельно.Ограничение доступа к принтерамВы можете управлять тем, кто и на какие принтеры может печатать,
с помощью механизма групп &unix; и характеристики
rg в файле /etc/printcap.
Просто поместите пользователей, которым необходимо предоставить
доступ к принтеру, в определенную группу, a затем укажите эту
группу в качестве значения характеристики rg.Пользователи, не входящие в эту группу (включая root)
будут получать уведомление
lpr: Not a member of the restricted group
при попытке печатать на контролируемый принтер.Как и в случае с характеристикой sc (подавить
выдачу нескольких копий), при необходимости, надо указывать
характеристику rg и на удаленных хостах, имеющих
доступ к вашим принтерам (см. раздел
Принтеры, установленные
на удаленных хостах).Например, давайте разрешим всем обращаться к принтеру
rattan, но только пользователи группы
artists смогут использовать принтер
bamboo. Вот знакомый уже файл
/etc/printcap для хоста rose:#
# /etc/printcap для хоста rose - ограничение группы для bamboo
#
rattan|line|diablo|lp|Diablo 630 Line Printer:\
:sh:sd=/var/spool/lpd/rattan:\
:lp=/dev/lpt0:\
:if=/usr/local/libexec/if-simple:
bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\
:sh:sd=/var/spool/lpd/bamboo:sc:rg=artists:\
:lp=/dev/ttyd5:ms#-parenb cs8 clocal crtscts:rw:\
:if=/usr/local/libexec/psif:\
:df=/usr/local/libexec/psdf:Давайте не будем менять другой рассматриваемый файл
/etc/printcap (для хоста
orchid). Конечно, в результате, любой пользователь
orchid может печатать на bamboo.
Возможно, на хосте orchid учетных записей и так
немного, и вы хотите, чтобы все они имели доступ к принтеру. Или нет.Для принтера может быть только одна ограниченная группа.Контроль размеров посылаемых заданийзадания печатиЕсли к принтеру обращается несколько пользователей, вам,
возможно, понадобиться установить ограничение на максимальный
- размер файлов, которые пользователи могут посылать ан печать.
+ размер файлов, которые пользователи могут посылать на печать.
В конечном итоге, размер файловой системы, в которой находятся
каталоги спулинга, ограничен, и надо гарантировать, что
в нем останется место для заданий других пользователей.задания печатиуправленияСистема LPD ограничить максимально
допустимый размер файла в задании с помощью характеристики
mx. Размер задается в блоках, размер которых,
BUFSIZ, составляет 1024 байта.
Если задать этой характеристике значение ноль, размер файла
ограничиваться не будет; однако, если характеристика
mx вообще не задана, то будет использоваться
- стандартное ограничение - 1000 блоков.
+ стандартное ограничение — 1000 блоков.
Ограничение применяется к файлам в задании,
а не к общему размеру задания.Система LPD не откажется печатать
файл больше максимально допустимого для принтера размера. Вместо
этого, она поставит в очередь часть файла до заданного
предела, и она будет напечатана. Остальное не будет напечатано.
Правильность такого поведения не бесспорна.Давайте установим ограничения для принтеров из наших примеров,
rattan и bamboo. Поскольку
&postscript;-файлы этих художников обычно бывают весьма
большими, мы ограничим их размер пятью мегабайтами. Мы не
будем ограничивать использование обычного текстового строчного
принтера:#
# /etc/printcap для хоста rose
#
#
# Без ограничения на размер задания:
#
rattan|line|diablo|lp|Diablo 630 Line Printer:\
:sh:mx#0:sd=/var/spool/lpd/rattan:\
:lp=/dev/lpt0:\
:if=/usr/local/libexec/if-simple:
#
# Размер файла - не более пяти мегабайт:
#
bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\
:sh:sd=/var/spool/lpd/bamboo:sc:rg=artists:mx#5000:\
:lp=/dev/ttyd5:ms#-parenb cs8 clocal crtscts:rw:\
:if=/usr/local/libexec/psif:\
:df=/usr/local/libexec/psdf:Опять таки, ограничения применяются только для локальных
пользователей. Если вы настроили удаленный доступ к принтерам,
для удаленных пользователей эти ограничения не действуют.
Надо задать характеристику mx и в файлах
/etc/printcap удаленных хостов. Более
детальную информацию по удаленной печати см. в разделе
Принтеры,
установленные на удаленных хостах.Есть еще один специализированный способ ограничить
размер заданий печати с удаленных принтеров; см. раздел
Ограничение
печати заданий с удаленных хостов.Ограничение печати заданий с удаленных хостовСистема спулинга LPD обеспечивает
несколько способов ограничить посылку заданий с удаленных
хостов:Ограничения хостовВы можете управлять тем, с каких удаленных хостов
локальная система LPD принимает
запросы, с помощью файлов /etc/hosts.equiv и
/etc/hosts.lpd. Система
LPD проверяет, поступает ли
входящий запрос с хоста, указанного в одном из этих файлов.
Если нет, система LPD отвергает
запрос.Формат этих файлов простой: по одному имени хоста в строке.
Учтите, что файл /etc/hosts.equiv также
используется протоколом &man.ruserok.3; и влияет на
программы &man.rsh.1; и &man.rcp.1;, так что, будьте
внимательны.Например, вот файл /etc/hosts.lpd
для хоста rose:orchid
violet
madrigal.fishbaum.deЭто означает, что хост rose будет
принимать запросы с хостов orchid,
violet и
madrigal.fishbaum.de. Если любой
другой хост попытается обратиться к системе
LPD хоста rose,
его задание будет отвергнуто.Ограничения размераВы можете управлять тем, сколько свободного места должно
оставаться в файловой системе, в которой находится каталог
спулинга. Создайте файл с именем minfree
в каталоге спулинга для локального принтера. Вставьте в этот
файл число, задающее, сколько блоков диска (по 512 байтов)
должно быть свободными, чтобы удаленное задание было принято.Это позволяет гарантировать, что удаленные пользователи не
заполнят вашу файловую систему. Можно также использовать этот
механизм для предоставления определенного преимущества
локальным пользователям: они смогут ставить задания в очередь
еще долго после того, как свободного места на диске станет
меньше, чем указано в файле minfree.Например, давайте добавим файл minfree
для принтера bamboo. Найдем в файле
/etc/printcap каталог спулинга для этого
принтера; вот запись для принтера bamboo:bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\
:sh:sd=/var/spool/lpd/bamboo:sc:rg=artists:mx#5000:\
:lp=/dev/ttyd5:ms#-parenb cs8 clocal crtscts:rw:mx#5000:\
:if=/usr/local/libexec/psif:\
:df=/usr/local/libexec/psdf:Каталог спулинга задается характеристикой
sd. Укажем, что в файловой системе
должно быть три мегабайта (что составляет 6144 блоков диска)
свободного места, чтобы система LPD
принимала удаленные задания:&prompt.root; echo 6144 > /var/spool/lpd/bamboo/minfree
Ограничения пользователейВы можете управлять тем, какие удаленные пользователи
смогут печатать на локальные принтеры, задавая характеристику
rs в файле /etc/printcap.
Когда характеристика rs указана в записи
для локально подключенного принтера, система
LPD будет принимать задания с
удаленных хостов, если пользователь,
посылающий задание, также имеет учетную запись с тем же
именем на локальном хосте. В противном случае,
система LPD отвергает задание.Эта возможность особенно полезна в среде, где есть,
например, несколько отделов, совместно использующих сеть,
и некоторые пользователи могут переходить из отдела в отдел.
Если дать им учетные записи в системах, они смогут использовать
принтеры из систем в своих отделах. Если вы хотели бы
позволить им использовать только
принтеры, но не остальные ресурсы вашего компьютера,
можно дать им формальные учетные записи,
без начального каталога и с бесполезным начальным
командным интерпретатором вроде /usr/bin/false.Учет использования принтераучетиспользования принтераИтак, вам надо брать деньги за распечатки. А почему нет?
Бумага и чернила стоят денег. А есть еще и затраты на
- поддержку в работоспособном состоянии—принтеры имеют
+ поддержку в работоспособном состоянии — принтеры имеют
множество движущихся частей и склонны к поломкам. Вы проанализировали
состояние принтеров, объемы использования и затраты на их эксплуатацию,
и получили определенную стоимость страницы (или фута, метра или
чего угодно). Теперь, как же начать реально учитывать распечатки?Итак, плохая новость состоит в том, что система спулинга
LPD в этом не сильно поможет. Учет сильно
зависит от типа используемого принтера, форматов распечаток и
ваших требований к оплате использования
принтеров.Для реализации учета надо изменить текстовый фильтр принтера
(чтобы учитывать обычные текстовые задания) и фильтры преобразования
(чтобы учитывать другие форматы файлов), для подсчета страниц или
запроса количества напечатанных страниц у принтера. Не получится
обойтись использованием простого выходного фильтра, поскольку
он не может выполнять учет. См. раздел
Фильтры.Обычно есть два способа выполнения учета:
- Периодический учет - более распространенный
+ Периодический учет — более распространенный
способ, возможно, потому, что он проще. Когда кто-то печатает
задание, фильтр регистрирует пользователя, хост и количество
страниц в учетном файле. Каждый месяц, семестр, год или раз в
любой желаемый период времени, вы собираете учетные файлы для
различных принтеров, суммируете напечатанные каждым пользователем
страницы и выставляете суммы за использование. Затем вы
очищаете все регистрационные файлы, начиная с чистого листа новый
отчетный период.Постоянный учет используется реже,
вероятно, потому, что сложнее в реализации. Этот метод требует от
фильтров выставлять пользователям суммы за распечатки сразу после
использования принтеров. Как и проверка дисковых квот, этот учет
выполняется немедленно. Вы можете не давать пользователям печатать,
если баланс на их счету стал отрицательным, а также предоставить
им способ проверить и изменить свои квоты печати.
Но этот метод требует поддержки базы данных для отслеживания
пользователей и квот.Система спулинга LPD легко поддерживает
оба метода: поскольку вы (в большинстве случаев) должны предоставить
фильтры, вам придется предоставить и код для учета. Но есть и
положительный момент: методы учета могут быть сколько угодно гибкими.
Например, можно выбрать периодический или постоянный учет. Можно
выбрать, какую именно информацию регистрировать: имена пользователей,
имена хостов, типы заданий, количество напечатанных страниц,
квадратные метры использованной бумаги, продолжительность печати
заданий, и т.д. Это делается путем изменения фильтров так, чтобы
они сохраняли соответствующую информацию.Простая система учета использования принтераВ составе FreeBSD поставляется две программы, которые можно сразу
использовать для организации простой системы периодического учета.
Речь идет о текстовом фильтре lpf, описанном в
разделе lpf: текстовый фильтр,
и о программе &man.pac.8;, обеспечивающей сбор и суммирование
записей из учетных файлов принтеров.Как уже упоминалось в разделе, посвященном фильтрам
(Фильтры), система
LPD при запуске текстового фильтра и
фильтров преобразований передает им имя учетного файла в командной
строке. Фильтры могут использовать соответствующий аргумент, чтобы
определить, куда записывать учетную информацию. Имя этого файла
берется из значения характеристики af в файле
/etc/printcap и, если не заданно как абсолютное,
интерпретируется относительно каталога спулинга.Система LPD запускает lpf
с аргументами ширины и длины страницы (которые берутся из
характеристик pw и pl).
Программа lpf использует эти аргументы для
определения количества бумаги, которая будет использована. После
посылки файла на принтер она вносит запись в учетный файл. Эти
записи имеют следующий вид:2.00 rose:andy
3.00 rose:kelly
3.00 orchid:mary
5.00 orchid:mary
2.00 orchid:zhangСледует использовать отдельный учетный файл для каждого принтера,
поскольку программа lpf не реализует механизм
блокирования файлов, и два экземпляра lpf могут
повредить записи друг друга, если записывают одновременно в один
и тот же файл. Простой способ выделить отдельный учетный файл для
- каждого принтера - использовать характеристику
+ каждого принтера — использовать характеристику
af=acct в файле /etc/printcap.
Тогда каждый учетный файл окажется в каталоге спулинга соответствующего
принтера и будет назван acct.Когда вы будете готовы выставить пользователям счет за
распечатки, запустите программу &man.pac.8;. Просто перейдите в
каталог спулинга принтера, учетную информацию которого вы хотите
обработать, и введите команду pac. Вы
получите итоговые суммы в долларах, как показано ниже: Login pages/feet runs price
orchid:kelly 5.00 1 $ 0.10
orchid:mary 31.00 3 $ 0.62
orchid:zhang 9.00 1 $ 0.18
rose:andy 2.00 1 $ 0.04
rose:kelly 177.00 104 $ 3.54
rose:mary 87.00 32 $ 1.74
rose:root 26.00 12 $ 0.52
total 337.00 154 $ 6.74Команда &man.pac.8; принимает следующие аргументы:По какому принтеру подсчитывать
итоговые суммы. Эта опция работает, только если в качестве
значения характеристики af в файле
/etc/printcap указано абсолютное имя.Сортировать отчет по сумме, а не по имени пользователя в
алфавитном порядке.Игнорировать имя хоста в учетных файлах. При указании этой
опции, пользователь smith на хосте
alpha считается тем же, что и пользователь
smith на хосте gamma.
Обычно эти пользователи считаются разными.Вычислять суммы из расчета стоимость
долларов за страницу или за фут, вместо использования
значения характеристики pc в файле
/etc/printcap, или двух центов (как принято по
умолчанию). Можно задавать стоимость
как число с плавающей запятой.Изменить порядок сортировки.Создать итоговый учетный файл и очистить учетный файл.имя…Выдать учетную информацию только для пользователей с
заданными именами.В стандартном отчете, который создает команда &man.pac.8;,
выдается количество страниц, напечатанное каждым из пользователей с
различных хостов. Если для вас хосты не имеют значения (поскольку
пользователи могут работать на любом хосте), выполните команду
pac -m для получения следующих итогов: Login pages/feet runs price
andy 2.00 1 $ 0.04
kelly 182.00 105 $ 3.64
mary 118.00 35 $ 2.36
root 26.00 12 $ 0.52
zhang 9.00 1 $ 0.18
total 337.00 154 $ 6.74Для получения сумм в долларах программа &man.pac.8; использует
значение характеристики pc в файле
- /etc/printcap (по умолчанию - 200, или 2 цента
+ /etc/printcap (по умолчанию — 200, или 2 цента
за страницу). Укажите в качестве значения этой характеристики, в
сотых долях цента, стоимость страницы или фута, исходя из которой
вы хотите брать деньги за распечатки. Это значение можно
переопределить при вызове команды &man.pac.8; с помощью опции
. Но при использовании опции
стоимость надо указывать в долларах, а не в сотых долях цента.
Например, команда
&prompt.root; pac -p1.50
приводит к тому, что страница будет стоить один доллар пятьдесят
центов. Используя эту опцию, можно фактически начинать грести деньги
лопатой.Наконец, при выполнении команды pac -s итоговая
информация будет сохранена в итоговом учетном файле, имя которого
строится как имя учетного файла принтера с суффиксом
_sum. Затем учетный файл принтера очищается.
Когда команда &man.pac.8; выполняется повторно, она перечитывает
итоговый файл для получения начальных сумм, а затем добавляет
информацию из обычного учетного файла.Как можно подсчитать количество напечатанных страниц?Для выполнения хоть отдаленно точного учета надо уметь определять,
- сколько бумаги использовано для печати задания. Это - основная
+ сколько бумаги использовано для печати задания. Это — основная
проблема учета использования принтеров.Для обычных текстовых заданий решить эту проблему не сложно: надо
считать, сколько строк входит в задание, и сравнивать с количеством
строк на страницу, которые поддерживает принтер. Не забывайте
учитывать символы забоя в файлах, которые приводят к перепечатке
строк поверх, а также длинные логические строки, которые переносятся
на несколько физических.Текстовый фильтр lpf (представленный в разделе
lpf: текстовый фильтр)
учитывает эти вещи при выполнении учета. Если вы пишете текстовый
фильтр, который должен осуществлять учет, может иметь смысл
просмотреть исходный код программы lpf.Но как обрабатывать файлы других форматов?Ну, для преобразования из DVI в формат LaserJet или из DVI в
&postscript;, можно в фильтре анализировать диагностические
результаты команды dvilj или dvips,
чтобы определить, сколько страниц было преобразовано. Может оказаться
возможным применить этот прием и для других форматов файлов и
программ преобразования.Но эти методы несовершенны из-за того, что принтер мог
фактически и не напечатать все эти страницы. Например, он мог
замять бумагу, в нем мог закончиться тонер или он мог вообще
- взорваться—и пользователю все равно пришлось бы платить.
+ взорваться — и пользователю все равно пришлось бы платить.
Так что же делать?Есть только один надежный способ
точного учета. Купите принтер, который может
сообщать, сколько бумаги он использовал, и подключите его
через последовательный порт или по сети. Практически все
&postscript;-принтеры поддерживают такую возможность. Другие
- модели - тоже (сетевые лазерные принтеры Imagen, например).
+ модели — тоже (сетевые лазерные принтеры Imagen, например).
Измените фильтры для этих принтеров так, чтобы получать количество
использованных страниц после печати каждого задания, и пусть они
записывают учетную информацию только на основе
этого значения. Не надо ни считать строки, ни выполнять
чреватую ошибками обработку файла.Конечно, всегда можно поступить великодушно и не брать денег
за распечатки.Использование принтеровпринтерыиспользованиеВ этом разделе описано, как использовать настроенные принтеры
в ОС FreeBSD. Вот сводка команд пользовательского уровня:&man.lpr.1;Печать заданий&man.lpq.1;Проверка очередей принтеров&man.lprm.1;Удаление заданий из очередей принтеров
- Есть также административная команда, &man.lpc.8;, описанную в
+ Есть также административная команда, &man.lpc.8;, описанная в
разделе Администрирование спулера
LPD, используемая для управления
принтерами и их очередями.Все три команды, &man.lpr.1;, &man.lprm.1; и &man.lpq.1;,
поддерживают опцию ,
позволяющую указать, с каким принтером/очередью из указанных в
файле /etc/printcap работать. Это позволяет
посылать, удалять и проверять задания на разных принтерах. Если вы
не используете опцию , эти команды используют
принтер, указанный в качестве значения переменной среды
PRINTER. Наконец, если переменная среды
PRINTER не задана, эти команды по умолчанию
направляются на принтер по имени lp.Далее термин стандартный принтер
означает принтер, указанный переменной среды PRINTER
или принтер по имени lp, если переменная
среды PRINTER не задана.Задания печатиДля печати файлов, выполните команду:&prompt.user; lpr имя-файла...печатьЭта команда печатает каждый из перечисленных файлов на стандартный
принтер. Если файлы не указаны, команда &man.lpr.1; читает данные для
печати со стандартного входного потока. Например, следующая команда
печатает некоторые важные системные файлы:&prompt.user; lpr /etc/host.conf /etc/hosts.equivДля выбора конкретного принтера, введите:&prompt.user; lpr -P имя-принтераимя-файла...Следующая команда печатает подробный листинг текущего каталога
на принтере rattan:&prompt.user; ls -l | lpr -P rattanПоскольку для команды &man.lpr.1; файлы не указаны,
команда lpr читает данные для печати из стандартного
входного потока, который содержит результат выполнения команды
ls -l.Команда &man.lpr.1; может также принимать множество опций
для управления форматированием, применения преобразований,
печати нескольких копий и т.д. Дополнительную информацию см. в
разделе Опции печати.Проверка заданийзадания печатиПри печати с помощью команды &man.lpr.1;, данные, которые надо
напечатать, помещаются вместе в пакет, который называют заданием
печати, и посылаются системе спулинга LPD.
Каждый принтер имеет очередь заданий, и ваше задание ждет в этой
очереди вместе с другими вашими заданиями и заданиями других
пользователей. Принтер печатает эти задания по принципу первым пришло,
первым выполнено.Для получения очереди стандартного принтера, введите команду
&man.lpq.1;. Чтобы указать конкретный принтер, используйте
опцию . Например, команда
&prompt.user; lpq -P bamboo
показывает очередь для принтера по имени bamboo.
Вот пример результатов выполнения команды lpq:bamboo is ready and printing
Rank Owner Job Files Total Size
active kelly 9 /etc/host.conf, /etc/hosts.equiv 88 bytes
2nd kelly 10 (standard input) 1635 bytes
3rd mary 11 ... 78519 bytesПоказано, что в очереди bamboo есть три
задания. Первое задание, посланное пользователем kelly, получило
номер задания 9. Каждое задание для принтера получает
уникальный номер задания. В большинстве случаев номер задания можно
игнорировать, но он потребуется, если надо будет отменить задание;
подробнее об этом см. в разделе Удаление
заданий.Задание номер 9 состоит из двух файлов; несколько файлов,
указанных в командной строке &man.lpr.1;, считаются частью одного
задания. Это задание является текущим активным (обратите внимание на
слово active в столбце Rank),
т.е. принтер должен сейчас печатать это задание. Второе задание
состоит из данных, передаваемых в качестве стандартного входного
потока команде &man.lpr.1;. Третье задание послано пользователем
mary; оно намного больше по объему.
Полное имя файла, который печатается, слишком длинное и не помещается,
поэтому команда &man.lpq.1; просто выдает три точки.Самая первая строка результатов команды &man.lpq.1; тоже полезна:
она говорит о том, что сейчас делает принтер (или, по крайней мере,
что он делает по мнению системы LPD).Команда &man.lpq.1; также поддерживает опцию
для генерации подробного длинного листинга. Вот пример результатов
выполнения команды lpq -l:waiting for bamboo to become ready (offline ?)
kelly: 1st [job 009rose]
/etc/host.conf 73 bytes
/etc/hosts.equiv 15 bytes
kelly: 2nd [job 010rose]
(standard input) 1635 bytes
mary: 3rd [job 011rose]
/home/orchid/mary/research/venus/alpha-regio/mapping 78519 bytesУдаление заданийЕсли вы передумали печатать задание, можно удалить его из очереди
заданий с помощью команды &man.lprm.1;. Часто можно использовать
&man.lprm.1; для удаления активного задания, но часть задания или
даже все задание все равно может быть напечатано.Для удаления задания со стандартного принтера сначала используйте
команду &man.lpq.1; для поиска номера задания. Затем введите команду:&prompt.user; lprm номер-заданияДля удаления задания с указанного принтера, задайте опцию
option. Следующая команда удаляет задание номер
10 из очереди заданий принтера bamboo:&prompt.user; lprm -P bamboo 10Для команды &man.lprm.1; есть ряд сокращений:lprm -Удаляет все задания (со стандартного принтера), принадлежащие
пользователю, который выполнил команду.lprm пользовательУдаляет все задания (для стандартного принтера), принадлежащие
указанному пользователю. Суперпользователь
может удалять задания других пользователей; обычный пользователь
может удалять только собственные задания.lprmЕсли в командной строке не указаны номер задания, имя
пользователя, или указана опция ,
команда &man.lprm.1; удаляет текущее активное задание на стандартном
принтере, если оно принадлежит вам. Суперпользователь может удалять
любое активное задание.Добавьте опцию для любого из перечисленных выше
сокращений, чтобы работать с любым необходимым принтером вместо
стандартного. Например, следующая команда удаляет все задания текущего
пользователя из очереди принтера по имени rattan:&prompt.user; lprm -P rattan -Если вы работаете в сетевой среде, команда &man.lprm.1; позволит
вам удалять задания только с хоста, с которого они были посланы,
даже если тот же принтер доступен и с других хостов. Следующая
последовательность команд демонстрирует это:&prompt.user; lpr -P rattan myfile
&prompt.user; rlogin orchid
&prompt.user; lpq -P rattan
Rank Owner Job Files Total Size
active seeyan 12 ... 49123 bytes
2nd kelly 13 myfile 12 bytes
&prompt.user; lprm -P rattan 13
rose: Permission denied
&prompt.user; logout
&prompt.user; lprm -P rattan 13
dfA013rose dequeued
cfA013rose dequeued
Не только обычный текст: опции печатиКоманда &man.lpr.1; поддерживает несколько опций, управляющих
форматированием текста, преобразованием графики и других форматов
файлов, выдачей нескольких копий, обработкой задания и др. В этом
разделе описаны эти опции.Опции форматирования и преобразованияСледующие опции команды &man.lpr.1; управляют форматированием
файлов в задании. Используйте эти опции, если задание содержит не
простой текст или если вы хотите сформатировать простой текст с
помощью утилиты &man.pr.1;.&tex;Например, следующая команда печатает файл DVI (из системы
верстки &tex;) по имени fish-report.dvi
на принтере bamboo:&prompt.user; lpr -P bamboo -d fish-report.dviЭти опции применяются для каждого файла в задании, так что нельзя
смешивать (например) файлы DVI и ditroff в одном задании. Вместо этого
посылайте однотипные файлы отдельными заданиями, используя для каждого
задания соответствующие опции преобразования.Все эти опции, кроме и ,
требуют наличия установленных для целевого принтера фильтров
преобразования. Например, опция требует фильтра
преобразования DVI. Подробнее см. в разделе
Фильтры преобразования.Печать файлов cifplot.Печать файлов DVI.Печать текстовых файлов на языке FORTRAN.Печать графиков.Сдвинуть результат вправо на число
столбцов; если число не указано,
сдвиг выполняется на 8 столбцов. Эта опция работает только с
определенными фильтрами преобразования.Не помещайте пробелы между и числом.Печать текстовых данных буквально, включая управляющие символы.Печать данных ditroff (device independent troff).-pФорматировать обычный текст перед печатью утилитой &man.pr.1;.
Подробнее см. &man.pr.1;.Использовать указанный заголовок
в колонтитуле &man.pr.1; вместо имени файла. Эта опция учитывается
только при использовании вместе с опцией .Печать данных troff.Печать растровых данных.Вот пример: следующая команда печатает красиво сформатированную
версию справочного руководства по команде &man.ls.1; на стандартный
принтер:&prompt.user; zcat /usr/share/man/man1/ls.1.gz | troff -t -man | lpr -tКоманда &man.zcat.1; распаковывает исходный код страницы справочного
руководства &man.ls.1; и передает его команде &man.troff.1;, которая
форматирует его и выдает результат в формате GNU troff, передаваемый
команде &man.lpr.1;, посылающей задание спулеру LPD.
Поскольку мы использовали опцию команды &man.lpr.1;,
спулер при печати задания будет преобразовывать результат GNU troff в
формат, понятный стандартному принтеру.Опции обработки заданийСледующие опции команды &man.lpr.1; требуют от системы
LPD специальной обработки задания:-# копийВыдавать указанное количество копий
каждого файла в задании вместо одной. Администратор может отключить
эту опцию для уменьшения износа принтера и поощрения использования
ксерокса. См. раздел
Ограничение
количества копий.В следующем примере на стандартный принтер печатается три
- копии файла parser.c, а затем - три копии
+ копии файла parser.c, а затем — три копии
parser.h:&prompt.user; lpr -#3 parser.c parser.h-mПосылать почту после завершения задания печати. При указании
этой опции, система LPD будет посылать
почту на ваше имя после завершения обработки вашего задания. В
сообщении будет сказано, выполнено ли задание успешно или по ходу
- была ошибка, и (часто) - в чем она состояла.
+ была ошибка, и (часто) — в чем она состояла.-sНе копировать файлы в каталог спулинга, а сделать там на них
символические связи.Эту опцию имеет смысл использовать при печати больших заданий.
Она экономит место в каталоге спулинга (ваше задание может занять
все свободное место в файловой системе, в которой находится каталог
спулинга). Она также экономит время, поскольку системе
LPD не придется копировать каждый байт
задания в каталог спулинга.Есть, однако, и недостаток: поскольку система
LPD будет ссылаться на исходные
файлы непосредственно, вы не сможете изменять или удалять их,
пока они не будут распечатаны.Если вы печатаете на удаленный принтер, система LPD
будет вынуждена, так или иначе, скопировать файлы с локального хоста
на удаленный, поэтому опция сэкономит место только
в локальном каталоге спулинга, но не в удаленном. Но, она все равно
полезна.-rУдалять файлы в задании после копирования в каталог спулинга
или после печати, если указана опция . Будьте
внимательны при использовании этой опции!Опции начальных страницЭти опции команды &man.lpr.1; изменяют текст, который обычно
выдается на начальной странице задания. Если выдача начальных страниц
для целевого принтера отключена, эти опции не действуют. Информацию по
настройке начальных страниц см. в разделе
Начальные страницы.-C текстЗаменить имя хоста на начальной странице
текстом. Обычно на ней выдается имя хоста,
с которого было послано задание.-J текстЗаменить имя задания на начальной странице
текстом. Имя задания обычно совпадает с
именем первого файла в задании или имеет значение stdin,
если печатается стандартный входной поток.-hНе выдавать начальной страницы.В некоторых организациях эта опция может не действовать, что
определяется способом генерации начальных страниц. Подробнее см. в
разделе Начальные
страницы.Администрирование принтеровКак администратор принтеров, вы должны их установить, настроить и
протестировать. С помощью команды &man.lpc.8; вы можете
взаимодействовать с принтерами и другими способами. С помощью
&man.lpc.8; вы можете:Запускать и останавливать принтерыВключать и отключать их очередиИзменять порядок заданий в каждой очереди.Начнем с замечания по терминологии: если принтер
остановлен, он не будет печатать ничего из
своей очереди. Пользователи могут продолжать посылать задания,
которые будут ждать в очереди, пока принтер не будет
запущен или пока очередь не будет очищена.Если очередь отключена, ни один пользователь
(кроме root) не может посылать задания на
принтер. Во включенную очередь можно посылать
задания. Принтер для отключенной очереди может быть
запущен; при этом он будет продолжать печатать
находящиеся в очереди задания, пока очередь не станет пустой.В общем случае, для использования команды &man.lpc.8; необходимо
иметь привилегии root. Обычные пользователи
могут использовать команду &man.lpc.8; только для получения состояния
принтера и перезапуска зависшего принтера.Далее представлена сводка команд &man.lpc.8;. Большинство команд
принимает аргумент имя-принтера, задающий,
с каким принтером работать. Можно использовать значение all
вместо имени-принтера, означающее все
принтеры, перечисленные в файле /etc/printcap.abort
имя-принтераСнять текущее задание и остановить принтер. Пользователи могут
продолжать посылать задания, если очередь включена.clean
имя-принтераУдалить старые файлы из каталога спулинга принтера.
Иногда файлы, составляющие задание, не удаляются как положено
системой LPD, особенно если
в ходе печати были ошибки и выполнялось много административных
действий. Эта команда находит файлы, не принадлежащие каталогу
спулинга, и удаляет их.disable
имя-принтераОтключить постановку новых заданий в очередь. Если принтер
работает, он продолжит печатать задания, остающиеся в очереди.
Суперпользователь (root) всегда может посылать
задания, даже в отключенную очередь.Эта команда полезна при тестировании вновь установленного
принтера или фильтра: отключаем очередь и посылаем задания как
root. Другие пользователи не смогут посылать
задания, пока вы не закончите тестирование и не включите очередь
повторно командой enable.down имя-принтерасообщениеОтключить принтер. Аналогична последовательности команд
disable и stop.
Указанное сообщение выдается как
состояние принтера при проверке пользователем очереди принтера
с помощью &man.lpq.1; или запросе его состояния командой
lpc status.enable
имя-принтераВключить очередь для принтера. Пользователи могут посылать
задания, но принтер не будет их печатать, пока не будет запущен.help
имя-командыВыдать справочную информацию по команде
имя-команды. Если
имя-команды не указано,
выдает сводку по имеющимся командам.restart
имя-принтераПерезапустить принтер. Обычные пользователи могут использовать эту
команду, если в результате неких чрезвычайных обстоятельств система
LPD зависла, но они не могут запустить
принтер, остановленный командами stop или
down. Команда restart
эквивалентна последовательности команд abort
и start.start
имя-принтераЗапустить принтер. Принтер будет печатать задания, находящиеся в
его очереди.stop
имя-принтераОстановить принтер. Принтер закончит печать текущего задания
и больше ничего из очереди печатать не будет. Хотя принтер и
остановлен, пользователи могут посылать задания во включенную
очередь.topq имя-принтеразадание-или-имя-пользователяПереупорядочить очередь для указанного принтера, помещая
указанные по номеру задания или
задания указанного по имени пользователя
в начало очереди. Для этой команды нельзя использовать
all в качестве имени-принтера.up
имя-принтераВключить принтер; команда по действию противоположна команде
down. Эквивалентна последовательности команд
start и enable.Утилита &man.lpc.8; принимает перечисленные выше команды в
командной строке. Если команда не указана, утилита &man.lpc.8;
входит в интерактивный режим, в котором можно вводить команды,
пока не будет введена команда exit,
quit или символ конца файла.Альтернативы стандартному спулеруЕсли вы прочитали все это руководство, к этому моменту вы
знаете практически все, что надо знать о системе спулинга
LPD, входящей в состав ОС FreeBSD.
Вы, возможно, уже осознали многие из ее недостатков, что, естественно,
приводит к вопросу: Какие еще системы спулинга существуют (и
работают с ОС FreeBSD)?LPRngLPRngСистема LPRng, имя которой означает
- LPR: the Next Generation (LPR: следующее поколение) -
+ LPR: the Next Generation (LPR: следующее поколение) —
это полностью переписанная система PLP. Патрик Пауэл (Patrick Powell)
и Джастин Мейсон (Justin Mason) (основной специалист, занимающийся
поддержкой PLP) объединили усилия для создания системы
LPRng. Основной сайт по системе
- LPRng -
+ LPRng —
.CUPSCUPSСистема CUPS (сокращение от Common
UNIX Printing System) предоставляет переносимый механизм печати для
операционных систем, основанных на &unix;. Она была разработана
компанией Easy Software Products в качестве стандартного механизма
печати для всех производителей и пользователей &unix;.Система CUPS использует протокол
Internet Printing Protocol (IPP) для управления
заданиями и очередями. Протоколы Line Printer Daemon (LPD),
Server Message Block (SMB) и AppSocket (известный
также как JetDirect) также поддерживаются, но с меньшими возможностями.
Система CUPS добавляет поиск сетевых принтеров и опции печати на
основе PostScript Printer Description (PPD), для
поддержки практической печати в &unix;.
- Основной сайт по системе CUPS -
+ Основной сайт по системе CUPS —
.Выявление проблемПосле выполнения простого тестирования с помощью команды
&man.lptest.1; вы можете получить один из следующих результатов вместо
корректной распечатки:Все работает, после определенной задержки; или не выдается
распечатанная страница.Принтер напечатал все, что нужно, но он на некоторое время
задумывался и ничего не делал. Фактически, могло потребоваться
нажать кнопку PRINT REMAINING или FORM FEED на принтере, чтобы
результаты были выданы.Если это произошло, вероятно, принтер ждал, нет ли в задании
еще данных, прежде чем что бы то ни было печатать. Для решения
этой проблемы можно посылать в текстовом фильтре на принтер символ
FORM FEED (или любую необходимую последовательность символов).
Этого обычно достаточно, чтобы принтер немедленно распечатал
любой остающийся в его внутреннем буфере текст. Также полезно
убедиться, что каждое задание печати заканчивается полной страницей,
чтобы следующее задание не начиналось где-то с середины последней
страницы предыдущего задания.Следующий измененный скрипт командного интерпретатора
/usr/local/libexec/if-simple выдает символ
прогона страницы после посылки задания на принтер:#!/bin/sh
#
# if-simple - Простой текстовый входной фильтр для lpd
# Установлен в /usr/local/libexec/if-simple
#
# Просто копирует stdin в stdout. Игнорирует все аргументы фильтра.
# Выдает символ прогона страницы (\f) после печати задания.
/bin/cat && printf "\f" && exit 0
exit 2Принтер печатает лесенкой.Вы получаете на бумаге следующее:!"#$%&'()*+,-./01234
"#$%&'()*+,-./012345
#$%&'()*+,-./0123456MS-DOSOS/2ASCIIВы стали очередной жертвой эффекта лесенки,
вызванного различными интерпретациями того, какие символы должны
обозначать новую строку. Операционные системы &unix;-стиля используют
- один символ: ASCII-код 10, перевод строки (line feed - LF). &ms-dos;,
+ один символ: ASCII-код 10, перевод строки (line feed — LF). &ms-dos;,
&os2; и другие используют пару символов, ASCII-код 10
и ASCII-код 13 (возврат каретки, carriage return
или CR). Многие принтеры используют соглашение &ms-dos; для
представления новых строк.При печати из FreeBSD в тексте используется только символ перевода
строки. Принтер, встретив символ перевода строки, переходит на
следующую строку, но оставляет ту же горизонтальную позицию на
строке для следующего печатаемого символа. Вот зачем нужен символ
возврата каретки: чтобы перенести следующий печатаемый символ
на левый край бумаги.Вот что ОС FreeBSD хочет от принтера:Принтер получает CRПринтер печатает CRПринтер получает LFПринтер печатает CR + LFВот несколько способов этого добиться:Использовать переключатели конфигурации принтера или панель
управления, чтобы изменить его интерпретацию этих символов.
Поищите как это сделать в руководстве по своему принтеру.Если вы загружаете другие операционные системы, кроме
FreeBSD, может иметь смысл переконфигурировать
принтер для использования такой интерпретации символов CR и LF,
которая принята в этих операционных системах. Затем можно
использовать одно из представленных далее решений.Заставить драйвер последовательного порта FreeBSD автоматически
преобразовывать LF в CR+LF. Конечно, это подойдет
только для принтеров, подключенных к
последовательным портам. Для включения этой возможности используйте
характеристику ms# и установите режим
onlcr для принтера в файле
/etc/printcap.Послать управляющий код на принтер,
заставляющий его временно обрабатывать символы LF по-другому.
Управляющие коды, которые может поддерживать ваш принтер, поищите
в руководстве своего принтера. Когда найдете соответствующий
управляющий код, измените текстовый фильтр для посылки сначала
- этого кода, а затем - задания печати.
+ этого кода, а затем — задания печати.
PCLВот пример текстового фильтра для принтеров, понимающих
управляющие последовательности языка Hewlett-Packard PCL. Этот
фильтр заставляет принтер обрабатывать символы LF как LF и CR;
затем он посылает задание; наконец, он посылает символ
прогона страницы для выдачи последней страницы задания. Он должен
работать практически со всеми принтерами Hewlett Packard.#!/bin/sh
#
# hpif - Простой текстовый входной фильтр для lpd для принтеров на базе HP-PCL
# Установлен в /usr/local/libexec/hpif
#
# Просто копирует stdin в stdout. Игнорирует все аргументы фильтра.
# Требует от принтера обрабатывать LF как CR+LF. Выдает страницу по окончании.
printf "\033&k2G" && cat && printf "\033&l0H" && exit 0
exit 2Вот пример файла /etc/printcap с хоста
orchid. К нему через первый параллельный порт
подключен один принтер, Hewlett Packard LaserJet 3Si, по имени
teak. Для него в качестве текстового фильтра
используется представленный выше скрипт:#
# /etc/printcap для хоста orchid
#
teak|hp|laserjet|Hewlett Packard LaserJet 3Si:\
:lp=/dev/lpt0:sh:sd=/var/spool/lpd/teak:mx#0:\
:if=/usr/local/libexec/hpif:Строки напечатаны одна поверх другой.Принтер так и не перешел на следующую строку. Все строки текста
были напечатаны одна поверх другой, на одной строке.Эта проблема обратна эффекту лесенки, описанному
выше, и встречается намного реже. Каким-то образом, символы LF,
которые ОС FreeBSD использует для завершения строк, обрабатывались
как символы CR и вызывали перевод позиции печати на левый край
бумаги, но не переход на следующую строку.Используйте переключатели конфигурации принтера или панель управления
для обеспечения следующей интерпретации символов LF и CR:Принтер получаетПринтер печатаетCRCRLFCR + LFПринтер теряет символы.По ходу печати принтер не печатает несколько символов в каждой
строке. Проблема со временем может становиться все хуже, так что
теряется все больше символов.Проблема состоит в том, что принтер не справляется с той скоростью,
с которой компьютер посылает данные по последовательной линии (эта
проблема не должна возникать на принтерах, подключенных к параллельным
портам). Есть два способа решить проблему:Если принтер поддерживает управление потоком XON/XOFF,
заставить FreeBSD использовать его, указав режим
ixon в характеристике ms#.Если принтер поддерживает управление несущим потоком
(carrier flow control), укажите режим crtscts
в характеристике ms#. Убедитесь, что кабель,
соединяющий принтер с компьютером, правильно распаян для управления
несущим потоком.Напечатан мусор.Принтер напечатал нечто похожее на случайный мусор, а не
требуемый текст.
- Это, обычно, - еще один симптом неправильных параметров
+ Это, обычно, — еще один симптом неправильных параметров
взаимодействия с последовательным принтером. Перепроверьте
скорость взаимодействия в характеристике br
и установку четности в характеристике ms#;
проверьте, что принтер использует те же установки, которые
заданы в файле /etc/printcap.Ничего не произошло.Если ничего не произошло, проблема, вероятно, связана с FreeBSD, а
не с оборудованием. Добавьте характеристику журнального файла
(lf) в файл /etc/printcap для
принтера, работу с которым отлаживаете. Например, вот запись для
принтера rattan с характеристикой
lf:rattan|line|diablo|lp|Diablo 630 Line Printer:\
:sh:sd=/var/spool/lpd/rattan:\
:lp=/dev/lpt0:\
:if=/usr/local/libexec/if-simple:\
:lf=/var/log/rattan.logЗатем попытайтесь напечатать снова. Поищите в журнальном файле
- (в нашем примере - /var/log/rattan.log)
+ (в нашем примере — /var/log/rattan.log)
возможные сообщения об ошибках. На основе полученных сообщений
попытайтесь решить проблему.Если вы не зададите характеристику lf,
система LPD использует по умолчанию
/dev/console.