Все о Linux. LinuxRSP.Ru

[an error occurred while processing this directive]

Cвежие новости Linux и BSD, анонсы статей и книг прямо в почтовый ящик!
Подписаться письмом


 Сегодняшние новости:

25 лет исполнилось ядру Linux

Релиз KDevelop 5.0

Oracle открывает код JDK9 для ARM

Выпущен Timewarrior 1.0.0

Релиз Android 7.0

Percona Memory Engine для MongoDB на базе WiredTiger

PowerShell открыт и доступен для Linux

Форк TrueCrypt: VeraCrypt 1.18

Релиз Snapcraft 2.14

Релиз Go 1.7

Стабильный выпуск рабочего стола Lumina

Вышла первая версия аналога OpenCV - DCV 0.1

Выпуск минималистичной программы для мониторинга jsonmon 3

В MIT разработали новый язык программирования

Первый релиз Qt5Gtk2

Godot 2.1 - новая версия открытого игрового движка

Свободная цифровая станция звукозаписи: Ardour 5.0

Обновление SkypeWeb Plugin for Pidgin

Вышла версия 3.0 Android File Transfer для Linux (и для OS X)

Программный аналог MIDI-контроллера для создания музыки: Launchpadd v1.3

Mozilla спонсирует поддержку Python 3.5 в PyPy

Ef 0.08 - программа для моделирования динамики заряженных частиц

Обновление текстового редактора TEA до версии 42.0.0

Релиз OpenOrienteering Mapper 0.6.4

Вышли Guix и GuixSD 0.11

Релиз Opera 39

Выпуск LibreOffice 5.2

В OpenSSH обнаружены и устранены некоторые уязвимости

Эмулятор FCEUX 2.2.3

Компания Билайн переходит на российскую СУБД с открытым исходным кодом Tarantool

Google

 Новые статьи :

Утилиты для восстановления потерянных данных в Linux

Лучшие файловые менеджеры для Android

20 лучших бесплатных книг о Linux

Как сгенерировать открытый/закрытый SSH-ключ в Linux

Grive - клиент Google Drive для Linux с открытым исходным кодом

Протокол IPv6: варианты подключения

Сервер из образа: DHCP + TFTP + Initrd + OpenVZ

Обзор веб-панелей управления хостингом

Приёмы работы с Vim

Nginx как Reverse Proxy для сайта, использующего SSL

Разработка модулей ядра Linux

Мониторинг нагрузки http-сервера Apache 2

Перевод комментариев к файлу конфигурации Squid

Решение проблем при использовании "1c предприятие" 8.2 в Linux

Advanced Bash-Scripting Guide Искусство программирования на языке сценариев командной оболочки







Rambler's Top100





 
 

Подключение принтера (parport + kernel > 2.1.32)

Дмитрий Румянцев
netmarina@kaluga.ru
http://dimitr.obninsk.net

    Не так давно вместе с материнской платой от ABIT мне в руки попал дистрибутив Gentus Linux 2.0, построенный на базе RedHat 6.1 с ядром 2.2.13, который был незамедлительно проставлен в конфигурации GNOME Workstation. Дистрибутив сначала вызвал неоднозначное мнение о его пригодности, однако, когда через пару дней в моем распоряжении была вполне работоспособная рабочая GNOME-станция, я понял, что жизнь не так уж плоха, как кажется. И вот тут я с удивлением обнаружил, что в ядре напрочь отсутствует понятие lp.

# cat /proc/devices
Character devices:
1 mem
2 pty
3 ttyp
4 ttyS
5 cua
7 vcs
10 misc
14 sound
29 fb
36 netlink
128 ptm
136 pts
162 raw

Block devices:
1 ramdisk
2 fd
3 ide0
9 md
22 ide1

    До этого момента я работал в RedHat 5.2 (kernel 2.0.36), и никаких проблем с печатью не испытывал. Запустив printtool и установив Canon BJC-210, я и думать перестал о параллельных портах и иже с ними.
    В ситуации с Gentus Linux дело обстоит в следующем. Начиная с ядра 2.1.33 (для ядра 2.0.30 доступно в виде патча) устройство lp является клиентом нового устройства parport. Введение parport решает некоторые проблемы, связанные с lp - теперь можно разделять параллельные порты с другими драйверами, динамически связывать порты с устройствами, не устанавливая жесткого соответствия между адресами I/O и номером порта и т. д. Основное отличие состоит в том, что появилась возможность динамического связывания номера порта с lp - устройствами. parport состоит из двух модулей - общего, который обеспечивает разделение порта, и архитектурно - зависимого, который отвечает за использование порта на данной платформа, орабатывая все операции ввода-вывода.
    Большинство BIOS распознают параллельный порт как устройство PnP. Вообще, это достаточно забавно, зачем было городить огород для такого тривиального устройства. Лучше будет отключить режим PnP, установив "LEGACY", "ISA" или "0x378" (у меня - 0x378), так как бывает, что драйвер порта не находит его.
    Я еще не встречал дистрибутива Linux, в котором при инсталляции заполнялся бы /etc/modules.conf (за исключением сетевого интерфейса и иногда звуковой карты), поэтому сначала подключим LPT1 вручную, а затем автоматизируем этот процесс.
Просмотрим список загруженных модулей:

# lsmod
Module      Size   Used by
nls_cp437   3548   1 (autoclean)
vfat        9308   1 (autoclean)
fat        30304   1 (autoclean) [vfat]
opl3       11208   0
sb         33524   0
uart401     5936   0 [sb]
sound      58424   0 [opl3 sb uart401]
soundlow     300   0 [sound]
soundcore   2404   6 [sb sound]

Как видно, нет ничего, связанного с параллельным портом. Загружаем модуль (все модули лежат в /lib/modules/`uname -r`/misc):

# insmod parport.o

Затем необходимо загрузить архитектурно - зависимый модуль:

# insmod parport_pc.o io=0x378 irq=7

Или, если есть второй параллельный порт,

# insmod parport_pc.o io=0x378,0x278 irq=7,auto

    В первом случае parport загружается для единственного порта с параметрами I/O address = 0x378, IRQ = 7 на платформе PC (для Sun Ultra/AX, например, необходимо загружать parport_ax). Во втором случае присутствуют 2 порта - LPT1 (I/O address=0x378) и LPT2 (I/O address=0x278, IRQ назначается автоматически).
    После загрузки parport_pc можно протестировать принтер. Включите принтер и загрузите parport_probe

# insmod parport_probe.o
parport0: Printer, BJC-210 (Canon)

    OK, принтер найден.
    В каталоге /proc/parport создаются файлы, содержащие информацию о параллельном порте и устройствах, подключенных к нему (<X> обозначает номер порта)

  • /proc/parport/<X>/devices  -  спиcок драйверов устройств, используемых портом. "+" отмечает устройства, используемые в настоящее время.
  • /proc/parport/<X>/hardware  -  Базовый адрес I/O, IRQ и канал DMA.
  • /proc/parport/<X>/irq  -  IRQ, которое parport использует. Вынесено в отдельный файл для возможности ручного изменения.
  • /proc/parport/<X>/autoprobe  -  Информация о любом устройстве, совместимом с IEEE-1284 (Zip, принтер), которое подключено к порту.

После того, как с parport'ом разобрались, остается назначить порты.

# insmod lp.o parport=0

Все! Выполняем для проверки обычное `ls > /dev/lp0`. Если после этого просмотреть список загруженных модулей, то увидим следующее:

# lsmod
Module          Size   Used by
parport_probe   2980   0 (autoclean)
parport_pc      5592   1 (autoclean)
lp              5052   0 (autoclean)
parport         7060   1 (autoclean) [parport_probe parport_pc lp]
....

Осталось самое малое - автоматизировать процесс инициализации порта. Для этого добавим в /etc/conf.modules следующие строки:

alias parport_lowlevel parport_pc
options parport_pc io=0x378 irq=7
lp=parport0

Перезагружаемся, проверяем список загруженных модулей, проверяем печать с консоли, и запускаем X. Далее следут обычная настройка принтера через printtool.
  

Ссылки

1. Документация на parport
2. Web-сайт parport
3. Linux On-Line - документация HOW-TO


      

Связь | О проекте LinuxRSP | Реклама | О Linux
© 1999-2024 LinuxRSP