Первое подключение устройства печати
Прежде всего нам необходимо убедиться, что
Linux видит ваш принтер. Как правило, принтер подключается к единственному
параллельному порту компьютера, который размещается либо на плате
устройств ввода/вывода, либо непосредственно на материнской плате
компьютера. Но "по теории" IBM PC может поддерживать
до четырех параллельных портов, и в Linux им соответствуют символьные
устройства /dev/lp0 - /dev/lp3.
Поэтому первый ваш шаг состоит в проверке
- есть ли в вашей системе соответствующие устройства. Если нет,
их придется создать самостоятельно. Для этого учтем, что во-первых,
устройства в UNIX являются просто специальными файлами, которые
можно создать с помощью программы mknod, а во-вторых, за параллельными
портами зарезервированы номера устройств - старшее 6 и младшие
с 0 до 3 и соответствуют номеру устройства.
Вот синтаксис команд mknod для всех параллельных
портов, поддерживаемых Linux (в скобках приведены базовые адреса
портов ввода/вывода):
mknod /dev/lp0 c 6 0(0x3BC) mknod /dev/lp1 c 6 1(0x378) mknod /dev/lp2 c 6 2(0x278) mknod /dev/lp3 c 6 3(0x......)Обратите внимание на адреса портов! Как правило,
в составе IBM PC входит порт с адресом 0x378, который соответствует
не /dev/lp0, а /dev/lp1. И если вы по привычке будете соотносить
"первый" порт DOS с "нулевым" портом UNIX,
то искать причину неисправности вам придется довольно долго.
Как же избежать этой ошибки?
Наиболее простой путь состоит в экспериментальной
проверке конфигурации. Во-первых, вы можете воспользоваться утилитами
из DOS типа sysinfo или MSD, а во-вторых, можете просто попытаться
"выбросить на печать" текущий каталог, например:
ls -l > /dev/lp0
Если порта lp0 на вашей машине нет вы получите
сообщение:
? /dev/lp0 unknown device
после чего вы можете попробовать использовать
другое устройство. Если же все в порядке, то на принтер будет
выведена "лесенка" примерно следующего вида:
This is 1 line
This is 2 line
This is 3 line
Причина этого явления состоит в том, что
ориентированные для работы в DOS принтеры требуют для завершения
строки два символа - возврата каретки <CR> (0x13) и перевода
строки <LF> (0x10). А вот UNIX традиционно обходится одним
символом - <LF>.
Бороться с этим неприятным эффектом вы можете
двумя способами - либо отключить режим раздельного управления
<CR> и <LF> - в этом случае принтер будет распознавать
приход любого из этих символов как команду перейти к новой
строке. Этот режим поддерживает большинство современных моделей
принтеров, но его целесообразно использовать лишь в том случае,
если вы используете только Linux. Если же вам приходится время
от времени обращаться к старушке DOS, целесообразно использовать
специальные программы-фильтры, о которых речь пойдет ниже. А сейчас,
после того, как мы убедились в работоспособности принтера, мы организуем
поддержку системных средств печати, общепринятых для UNIX.