From: Юрий Лушня <stranger@sivash.net>
Subject: Настраиваем USB принтер под Linux
Настраиваем USB принтер под Linux
Автор: Юрий Лушня [stranger@sivash.net]
Оригинал: http://www.linuxrsp.ru/artic/
Ни для кого не секрет (а может и секрет), что 2.2.х ядра имеют
встроенную поддержку USB. Если кто-то сталкивался с этой вот
поддержкой, то, наверное, не очень был рад этому (может и до сих пор
вспоминает с ужасом). Все дело в том, что в этой поддержке имеется
куча ошибок.
2.3.х и 2.4.х имеют более улучшенную и доработанную USB поддержку, но
не каждый захочет копаться с настройкой нового ядра, переустанавливать
его, компилировать и т.д. К счастью, поддержка USB в 2.3.х ядрах
пропатчена и может работать с ядрами 2.2.х. Для этого нужно загрузить
и поставить [2]этот патч.
Процедура "Патчинга"
Сначала набираем uname -r. Система выводит версию ядра. Если версия
вашего ядра выше чем 2.2.14, то его можно и не патчить. Вам просто
потребуется перекомпилировать ядро (об этом мы поговорим ниже) и
поставить поддержку USB (я использую Linux-Mandrake 7.0, версия ядра -
2.2.14-2.2.15mdk). Инструкция по компиляции ядра находится [3]здесь, а
если проблемы с доступом в INTERNET, то данную инструкцию можно
просмотреть в /usr/doc/kernel-HOWTO (по-моему). Сейчас, практически, в
каждом релизе Linux есть русские man'ы, поэтому с компиляцией ядра, я
думаю, у вас проблем не возникнет. Если же у вас ядро "младше" версии
2.2.14, тогда придется его пропатчить.
Для этого идем [4]сюда и закачиваем патч, написанный [5]Vojtech Pavlik
Если с этим адресом проблемы, то можно зайти на [6]этот сайт и по
поиску найти нужный патч (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
могут закачать ее по [7]этому адресу, а пользователи RedHat по
[8]этому.
После всех "закачек" и установок двигаемся дальше. Набираем cd /dev.
Если ваша USB директория находится здесь, то набираем ls и находим
файл под именем lp0. Если этот файл присутствует, тогда вам остается
только сконфигурировать свой принтер с помощью пакета Printtool.
А вот если этого файла нет, тогда придется его создать: mknod
/dev/usb/lp0 c 180 0
Теперь вы имеете lp0, с его помощью вы сможете печатать на свой USB
принтер. Если же у вас возникнут какие-нибудь проблемы с конфигурацией
(конфигурированием) принтера, то рекомендую вам почитать [9]USB HOWTO
Дальше. Запускаем Х'ы (как правило, startx) и конфигурируем принтер.
Открываем XTerm (или другой терминал-эмулятор по выбору) и набираем
printtool. "Кликаем" на кнопке Add, выбираем "Local Printer" и
нажимаем ОК. Теперь переходим в текстовое окно секции "Printer Device"
и набираем /dev/usb/lp0. Дальше с помощью кнопки выбора (select)
выбираем "рабочий" драйвер вашего принтера. За более полной
информацией обращайтесь к [10]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
Если в процессе работы "полезут" какие-нибудь ошибки, я вам рекомендую
вернуться назад к окну компиляции, а еще лучше перед этим почитать
[11]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 для вывода всех
присутствующих операционных систем на вашем ПК. УДАЧИ
При написании данной статьи были использованы следующие материалы:
сайт [12]Linux-USB.org (на этом сайте находится куча документации, в
том числе и USB-HOWTO, а также link'и на различные сайты, где
упоминается слово Linux. Одним словом, не проходите мимо)
[13]Linuxdoc.org (документации - видимо-невидимо. Больше документации
я видел только на русских сайтах, например, [14]здесь :)