Настраиваем USB принтер под Linux.

Примеры настройки USB принтера для 2.2.х ядер.

[Юрий Лушня]

Ни для кого не секрет (а может и секрет), что 2.2.х ядра имеют встроенную поддержку USB. Если кто-то сталкивался с этой вот поддержкой, то, наверное, не очень был рад этому (может и до сих пор вспоминает с ужасом). Все дело в том, что в этой поддержке имеется куча ошибок.

2.3.х и 2.4.х имеют более улучшенную и доработанную USB поддержку, но не каждый захочет копаться с настройкой нового ядра, переустанавливать его, компилировать и т.д. К счастью, поддержка USB в 2.3.х ядрах пропатчена и может работать с ядрами 2.2.х. Для этого нужно загрузить и поставить этот патч.

Процедура "Патчинга"

Сначала набираем uname -r. Система выводит версию ядра. Если версия вашего ядра выше чем 2.2.14, то его можно и не патчить. Вам просто потребуется перекомпилировать ядро (об этом мы поговорим ниже) и поставить поддержку USB (я использую Linux-Mandrake 7.0, версия ядра - 2.2.14-2.2.15mdk). Инструкция по копмиляции ядра находится здесь, а если проблемы с доступом в INTERNET, то данную инструкцию можно просмотреть в /usr/doc/kernel-HOWTO (по-моему). Сейчас, практически, в каждом релизе Linux есть русские man'ы, поэтому с компиляцией ядра, я думаю, у вас проблем не возникнет. Если же у вас ядро "младше" версии 2.2.14, тогда придется его пропатчить.

Для этого идем сюда и закачиваем патч, написанный Vojtech Pavlik Если с этим адресом проблемы, то можно зайти на этот сайт и по поиску найти нужный патч (usb-2.4.0-test2-pre2-for-2.2.16-v3.diff.gz) или ссылку на другой сайт с нужной информацией (в данном случае - патчем).

После получения данного патча, с помощью команды cd заходим в директорию, в которую скопирован патч и набираем [patch file name]. Одним словом, мы распаковываем этот gz. файл и устанавливаем его. На стадии распаковки данного файла возможны проблемы. Так, gunzip может "ругаться", что этот файл не с расширением .gz. Дело в том, что некоторые программы (в том числе и Mozilla) автоматически распаковывают получаемые файлы. Так что на gunzip можете не обращать внимания (если только он ругается из-за вышеописанной проблемы, а не почему-то еще :).

Дальше заходим root'ом и набираем cd /usr/src/linux. Потом patch -p1 [path для вашего patch файла]

Если ваш патч находится в файле /usr/downloads/usb-2.4.0-test2-pre2-for-2.2.16-v3.diff, тогда набираем patch -p1 /usr/downloads/usb-2.4.0-test2-pre2-for-2.2.16-v3.diff. Теперь набираем make menuconfig (или make xconfig если вы работаете в Х'ах). Выбираем USB Support (USB поддержку) и нажимаем ENTER. Потом выбираем:
Support for USB (поддержку USB)
Preliminary USB Device Filesystem
A USB Controller suited to your system (USB контроллер, поддерживаемый вашей системой. С этим, я думаю, у вас проблем не возникнет, так как help в этом вопросе просто чудесный).
USB Printer Support (поддержка USB принтера)
Any other USB devices that you have (другие USB устройства, которые вы имеете)

Проверяем настройки, сохраняем и выходим. Компилируем ядро и вносим изменения в LILO. Перезагружаемся. Если вы все нормально настроили, то при загрузке будет присутствовать сообщение о поддержке USB (support USB).

После входа в систему набираем: mount -t usbdevfs usbdevfs /proc/bus/usb для монтирования USB filesystem (USB-файловой системы). Если вы хотите, чтобы эта файловая система автоматически монтировалась при запуске, то следует добавить следующую строку в /etc/fstab: usbdevfs /proc/bus/usb usbdevfs defaults 0 0.

Теперь мы имеем полную поддержку USB в ядре. Переходим к следующему пункту (к непосредственной теме данной статьи) - конфигурированию USB принтера

Я очень надеюсь, что вы имеете RedHat Printtool. Это чудесная программа с прекрасным интерфейсом для изменения файла /etc/printcap (здесь находятся данные вашего принтера). Эта программа также поможет вам распечатать тестовые страницы (хотя, я думаю, что при распечатке тестовых страниц могут возникнуть проблемы). Дело в том, что мне пришлось перезапускать свой lpd демон каждый раз посде печати каждой тестовой страницы :(. Пакет Printtool поставляется вместе с RedHat и инсталлируется как часть контрольной панели. Для пользователей Debian этот пакет известен как .deb файл. Самая последняя версия (если не выпустили новее, пока я пишу эту статью) - 3.41-4. Пользователи Debian могут закачать ее по этому адресу, а пользователи RedHat по этому.

После всех "закачек" и установок двигаемся дальше. Набираем cd /dev. Если ваша USB директория находится здесь, то набираем ls и находим файл под именем lp0. Если этот файл присутствует, тогда вам остается только сконфигурировать свой принтер с помощью пакета Printtool.

А вот если этого файла нет, тогда придется его создать: mknod /dev/usb/lp0 c 180 0

Теперь вы имеете lp0, с его помощью вы сожете печатать на свой USB принтер. Если же увас возникнут какие-нибудь проблемы с конфигурацией (конфигурированием) принтера, то рекомендую вам почитать USB HOWTO

Дальше. Запускаем Х'ы (как правило, startx) и конфигурируем принтер. Открываем XTerm (или другой терминал-эмулятор по выбору) и набираем printtool. "Кликаем" на кнопке Add, выбираем "Local Printer" и нажимаем ОК. Теперь переходим в текстовое окно секции "Printer Device" и набираем /dev/usb/lp0. Дальше с помощью кнопки выбора (select) выбираем "рабочий" драйвер вашего принтера. За более полной информацией обращайтесь к Printing HOWTO. После выбора драйвера "кликаем" на ОК. Дальше выходим в главное окно (там должен появится ваш принтер) и печатаем ASCII и Postscript тестовые страницы.

Приложение "А". Компиляция ядра

Выше я привел примеры настройки USB принтера для 2.2.х ядер. Теперь я попробую ввести в тот же курс обладателей 2.3.х ядер (в том случае, если вы отказались ставить вышеуказанный патч на свою машину, даже если у вас ядро "старше" 2.2.14). Этот курс, главным образом, будет состоять из примера компиляции ядра для USB Support. Владельцам 2.2.х ядер это тоже может пригодиться.

После включения всех необходимых пунктов в "USB Support" (при компиляции ядра - это описано выше) для нормальной работы USB принтера, набираем следующее (по порядку):
make dep
make clean
make bzImage
make modules
make modules_install

Если в процессе работы "полезут" какие-нибудь ошибки, я вам рекомендую вернуться назад к окну компиляции, а еще лучше перед этим почитать Kernel-HOWTO. и попробовать сконфигурировать еще раз свое ядро.

Теперь нам нужно скопировать наше новосозданное ядро в /boot директорию, чтобы LILO мог найти и новое и старое ядро при загрузке. Делаем это так: cp arch/i386/boot/bzImage /boot/vmlinuz-usb. Теперь вашим любимым редактором (Pico или Vim - не угадал?) открываем файл lilo.conf (cd /etc/lilo.conf). Находим строку (она мне очень нравится :) default=Linux. Эта строка говорит о том, что по умолчанию на вашем компьютере грузится Linux OS. Опускаемся ниже и находим строки
image=/boot/vmlinuz
label=Linux
read-only.

Меняем строку label=Linux на label=old. Этот "old" нам понадобится в том случае, если наше новое ядро с поддержкой USB не запустится (всякое бывает). Если новое ядро не запускается, тогда в LILO набираем "old" (без кавычек) и пробуем скомпилировать старое ядро ПРАВИЛЬНО (читайте Kernel-HOWTO).

Теперь вводим еще одну секцию в lilo.conf (желательно выше той секции, где мы ввели label=old):

image=/boot/vmlinuz-usb
label=Linux
read-only

Как вы поняли, эта секция вводит в LILO информацию о том, что у нас появилось новое ядро (с поддержкой USB). Теперь оно будет грузиться по умолчанию. Сохраняем введенную информацию и выходим из editor'а. Набираем в консоли lilo. Если нет никаких ошибок, то остается только набрать shutdown -r now (для перезагрузки системы).

После перезагрузки, LILO будет ждать от вас дальнейших "указаний". Вы можете набрать old (для загрузки старого ядра - в том случае, если новое ядро сконфигурировано неправильно и выдает ошибки), linux (для загрузки нового ядра с поддержкой USB) или нажать TAB для вывода всех присутствующих операционных систем на вашем ПК. УДАЧИ

При написании данной статьи были использованы следующие материалы:

сайт Linux-USB.org (на этом сайте находится куча документации, в том числе и USB-HOWTO, а также link'и на различные сайты, где упоминается слово Linux. Одним словом, не проходите мимо)


Linuxdoc.org (документации - видимо-невидимо. Больше документации я видел только на русских сайтах, например, здесь
:)

[ опубликовано 22/10/2001 ]

Юрий Лушня - Настраиваем USB принтер под Linux.   Версия для печати