Юрий Лушня
Ни для кого не секрет (а может и секрет), что 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
(документации - видимо-невидимо. Больше документации я видел
только на русских сайтах, например, здесь :)
|