Опубликован: 04.07.2008 | Уровень: специалист | Доступ: свободно | ВУЗ: Европейский Университет в Санкт-Петербурге
Лекция 10:

Печать в Solaris

< Лекция 9 || Лекция 10: 12 || Лекция 11 >

С настройками печати в UNIX приходилось сталкиваться куда меньшему количеству людей, чем с многими другими задачами. Поэтому многие системные администраторы ограничивают себя знанием лишь самых основ – того, что существует демон печати lpd, и того, что для настройки печати может потребоваться файл /etc/printcap или /etc/printers.conf.

В Solaris все может оказаться несколько сложнее, хотя и намного интереснее.

Cистема печати в Solaris

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

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

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

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

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

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

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

Настройка сервера печати

Сервер печати не предоставляет доступ к принтеру всем подряд, доступ разрешается на основании строгих правил. Чтобы принять решение о предоставлении доступа к принтеру тому или иному компьютеру, сервер печати использует какую-либо службу имен (DNS, NIS, LDAP) для определения имени обращающегося компьютера. Если на сервере печати не используется ни одна из служб имен, следует в файл /etc/inet/ hosts внести записи о каждом из компьютеров-клиентов печати.

Для работы сервера печати необходимо, чтобы на нем было свободное дисковое пространство для хранения очереди заданий на печать, – его объем зависит от характера и количества заданий, одновременно отправляемых на печать, и обычно колеблется от 25 до 500 Мбайт. Такая область диска, предназначенная для хранения очереди печати, называется областью буферизации или спулом (spool – system peripheral operation offline). Помните, что размер файла в формате PS или PCL, подготовленный драйвером принтера для загрузки в последний, может сильно отличаться от размера исходного файла, например, документа OpenOffice. Это связано с необходимостью загрузки шрифтов, растеризации изображений и т.п.

Рекомендуется, чтобы объем памяти системы под управлением Solaris, которая выполняет роль сервера печати, был не менее 96 Мбайт.

Для того, чтобы сервер печати мог обеспечивать доступ к принтеру, следует указать, какие принтеры вообще доступны в системе и какой принтер надлежит использовать по умолчанию. Стало быть, надо иметь список доступных принтеров с указанием их имен и типов. Такой список содержится в файле /etc/printers.conf. Это отличает Solaris от других систем UNIX, поскольку в большинстве из них настройки принтеров хранятся в /etc/printcap. Такого файла в Solaris нет.

Кроме этого, для каждого из типов принтеров требуется описание свойств принтера, такое, как указание оптического разрешения печати, кодов загрузки графики и т.п.. Эта информация хранится в той же структуре каталогов, где хранится информация об управляющих кодах терминалов – /usr/share/lib/terminfo. В подкаталогах этого каталога в алфавитном порядке собраны файлы, описывающие терминалы и принтеры. Так, описание принтеров Hewlett Packard Laser Jet содержится в файле /usr/share/lib/terminfo/h/hplaser. Эти файлы – двоичные, а не текстовые, поэтому их не следует редактировать напрямую. Вместо этого при необходимости модифицировать или добавить новое описание принтера или терминала следует создать исходный (текстовый) файл описания устройства и затем воспользоваться командой tic, которая превращает (компилирует) текстовый файл описания в стандартный двоичный файл, размещая последний в структуре каталогов /usr/share/lib/terminfo.

Формат файла описания принтера описан в terminfo (4), следовательно, для изучения этой информации следует воспользоваться командой

man terminfo

или

man 4 terminfo

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

infocmp hplaser

а НЕ

infocmp /usr/share/lib/terminfo/h/hplaser

Последний вариант останется непонятым: программа infocmp ищет указанный ей файл в стандартной структуре каталогов или там, где указано переменной среды окружения TERMINFO.

Для редактирования настроек системы печати как на сервере печати, так и на клиентах печати следует использовать программы printmgr ( /usr/sadm/admin/bin/printmgr ) и lpset.

Вместо этого можно также редактировать вручную файл /etc/printers.conf: все равно вышеупомянутые программы вносят изменения именно в этот файл.

Другие настройки локальных принтеров, в частности, физический порт, к которому подключен принтер (например, /dev/lp0 ), указываются в стурктуре каталогов /etc/lp/printers, в которой для каждого принтера есть свой подкаталог с настройками. Эти настройки можно редактировать вручную, но удобнее воспользовться командой lpadmin или программой Solaris Print Manager (printmgr).

Например, для того, чтобы добавить новый принтер hplj на сервере печати, достаточно выполнить команду lpadmin. Команда lpadmin может выглядеть, например, так:

lpadmin –p hplj –v /dev/lp0

По этой команде в систему добавится локальный принтер с именем hplj, все обращения к этому принтеру будут выполняться через устрйоство /dev/lp0 (первый параллельный порт).

Настройка клиента печати

Клиент печати настраивается сходным образом: в файле /etc/printers.conf на клиенте печати будет указано, что принтер по умолчанию находится на компьютере, который выполняет роль сервера печати. В настройках клиента печати не обязательно определять права доступа к удаленному принтеру: это уже сделано в настройках сервера печати. Таким образом, минимальный файл /etc/printers.conf на клиенте печати, чьи задания на печать должны отправляться принтеру hplj на компьютере с именем printserver, будет выглядеть так:

_default | lp:
:use=printserver:
:bsdaddr=printserver,hplj

В этом файле, как видно, указано, что принтером по умолчанию для данного компьютера будет принтер hplj на компьютере printserver. В файле /etc/printers.conf на компьютере printserver должен быть определен принтер hplj, т.е. должно присутствовать описание вида:

hplj:\
:use=/dev/lp0:\
bsdaddr=printserver,hplj,Solaris:

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

Служба печати на сервере печати

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

По пути от приложения, инициирующего печать, до принтера задание на печать должно быть обработано несколькими программами: программой lp (или lpr ) – для постановки в очередь на печать, lpsched – для обработки очереди, возможно, программами inetd и in.lpd – в случае, если задание отправлено на удаленную машину.

Рассмотрим наиболее обычный вариант печати – с клиентской машины командой lp на удаленный принтер, который доступен через компьютер printbox.

Мы распечатываем текстовый файл data.txt с помощью команды

lp –d printbox:hplj data.txt
Взаимодействие подсистем печати на компьютере – клиенте Solaris 2.6 и сервере печати Solaris 8

Рис. 10.1. Взаимодействие подсистем печати на компьютере – клиенте Solaris 2.6 и сервере печати Solaris 8

Команда lpr в Solaris – это символическая ссылка на команду lp, поэтому что вызывать – lpr или lp – безразлично, будет вызвана одна и та же программа. Название lpr сохранено ради совместимости с другими системами UNIX.

Задание на печать формируется командой lp и отправляется на компьютер printbox. Там его должен ждать демон inetd. Как только задание добирается до порта 515 на компьютере printbox, демон inetd на нем запускает программу in.lpd (согласно записи о службе printer в /etc/inetd.conf ) и передает ей пришедшее задание. Программа in.lpd помещает задание в область буферизации ( /var/spool/lp/* ) и сообщает программе lpsched, что ей пришло задание. Дальнейшая обработка задания ложится на службу печати, т.е. на lpsched. Именно эта программа запускает интерфейсную программу принтера, которая уже непосредственно взаимодействует с принтером.

Взаимодействие подсистем печати на компьютере – клиенте Solaris 2.0 и сервере печати Solaris 2.5.1

увеличить изображение
Рис. 10.2. Взаимодействие подсистем печати на компьютере – клиенте Solaris 2.0 и сервере печати Solaris 2.5.1

Такая схема, показанная на рис. 10.1, иллюстрирует взаимодействие клиента и сервера печати при условии, что версия системы клиента печати не ниже Solaris 2.0, а версия системы сервера печати – не ниже Solaris 2.6.

В случае использования более старых систем Solaris схема взаимодействия будет более сложной; при отправке задания на печать на удаленный принтер будут выполнены следующие действия:

  • программа lp положит задание в локальную область буферизации ( spool ) на клиенте печати и передаст запрос локальному lpsched ;
  • локальный демон lpsched обратится к локальному демону lpNet, который запустит дочерний процесс lpNet и этот дочерний процесс передаст задание на сервер печати;
  • на сервере печати демон listen передаст запрос местному демону lpNet, который, в свою очередь, запустит дочерний процесс;
  • этот дочерний процесс lpNet на сервере печати положит задание в область буферизации на сервере печати и передаст задание lpsched ;
  • lpsched на сервер печати отправит задание на принтер.

Это иллюстрирует рис. 10.2:

Рисунки взяты из Методического пособия компании Sun Microsystems "Системное администрирование ОС Solaris 8, часть 1".

< Лекция 9 || Лекция 10: 12 || Лекция 11 >
Александр Тагильцев
Александр Тагильцев

Где проводится профессиональная переподготовка "Системное администрирование Windows"? Что-то я не совсем понял как проводится обучение.

Равиль Латыпов
Равиль Латыпов
Россия, Казань, Казанский Национальный Исследовательский Технический Университет