Аннотация |
Использование информации этого HOWTO позволит вам настроить и использовать протокол параллельного интерфейса (Parallel Line Interface Protocol). |
Это новая версия документа. В ней много изменений и улучшений, но, возможно, все еще будут встречаться орфографические и синтаксические ошибки (мой родной язык не английский), а также некоторая ошибочная или устаревшая информация. ПОЖАЛУЙСТА, дайте мне знать, если найдете ошибки, так как я хочу предоставить верную информацию.
Основные изменения в этой версии:
формат SGML
ответ на часто задаваемый вопрос "PLIP с win95" (ответ, к сожалению, отрицательный)
увеличен и улучшен раздел FAQ (благодаря отчетам бессчетного количества пользователей - многие из них встретят здесь, как я и обещал, свои комментарии)
убран раздел, посвященный быстрой установке PLIP, как бесполезный и устаревший
изменено приложение, посвященное PLIP связи Dos и Linux
С вопросами, исправлениями, комментариями и/или предложениями обращайтесь на мой E-mail адрес: controzz@cli.di.unipi.it. Не стесняйтесь написать мне, если вам понадобится помощь. Иногда я могу ответить не сразу, но отвечу обязательно. Если случится так, что вы не получите ответа в течение 2 недель, то это значит, что были проблемы с моей почтовой системой - без колебаний напишите мне снова - это моя обязанность, помочь вам. Не могу гарантировать, что решу ваши проблемы, но я попробую. Если вы не получили ответа после нескольких попыток, то проверьте свой обратный адрес. Несколько раз мои ответы не могли дойти из-за того, что обратный адрес был root@myhost.
Перед тем, как послать мне письмо, прочитайте FAQ. Мой ответ на вопрос будет не лучше (а скорее всего хуже и короче) ответа, который можно прочитать там.
Вопросы по PLIP связи с DOS и Win95, пожалуйста, посылайте авторам этих разделов - я ничем не смогу вам помочь.
Множество технической информации взято из net-2-HOWTO, автор Terry Dawson. Этот mini-HOWTO не предназначался для освещения других проблем и/или замены net-2-HOWTO. Моя цель - помочь вам быстро настроить постоянное PLIP соединение. И *ТОЛЬКО* это. Остальная информация основана на моем собственном опыте и помощи множества пользователей, пославших мне комментарии.
Прочитайте net-2-HOWTO и другую документацию по сети и конфигурационным файлам, которые я предлагаю изменить.
Есть много способов установить соединение между несколькими машинами. PLIP, как и SLIP, позволяет установить локальное соединение между двумя машинами, но использует параллельный порт.
Параллельные порты передают более одного бита за раз. Это означает, что можно достигнуть более высоких скоростей, по сравнению с последовательным интерфейсом.
Скорость целиком зависит от вашего аппаратного обеспечения (процессора и параллельного порта) и загрузки системы. В большинстве случаев она может быть от 5 кб/сек до 40 кб/сек.
PLIP интерфейс имеет достаточно высокую скорость, чтобы позволить некоторые сложные функции TCP/IP типа NFS. Так что, если у вас есть компьютер с полностью установленным Linux и другая машина с системой, установленной по минимуму, то можно использовать на ней пакеты с основной машины.
Недостаток в том, что большинство пользователей имеют машину с одним параллельным портом, а это означает, что вы не не сможете использовать принтер вместе с PLIP. Даже с двумя параллельными портами невозможно использовать PLIP и печатать без поддержки модулей ядра.
Если у вас есть два или более параллельных порта, то с этим недостатком можно справится, с помощью патча из этого Mini-HOWTO.
И наконец, сейчас я могу предложить хороший, надеюсь, способ установить PLIP соединение между DOS и Linux.
Впрочем, пока что никто не сообщал об удачной попытке соединения Linux и Windows 95.
Для работы PLIP интерфейса необходимо (очевидно) наличие свободного параллельного порта на обеих машинах и кабеля. Если у вас есть возможность настраивать BIOS, включите хотя бы "двунаправленный" режим работы порта, а лучше всего ECP или EPP.
Насчет кабеля. Вот то, что написано в файле plip.c, входящем в исходные тексты ядра версии 2.0.33:
Используемый кабель - стандартный параллельный нуль кабель, продаваемый в различных местах как кабель "LapLink". Если желаете сделать его сами, то вам понадобится 12-жильный кабель. Разводка следующая: SLCTIN 17 - 17 GROUND 25 - 25 D0->ERROR 2 - 15 15 - 2 D1->SLCT 3 - 13 13 - 3 D2->PAPOUT 4 - 12 12 - 4 D3->ACK 5 - 10 10 - 5 D4->BUSY 6 - 11 11 - 6 Остальные контакты не соединяйте. Это D5,D6,D7 are 7,8,9 STROBE is 1, FEED is 14, INIT is 16 extra grounds are 18,19,20,21,22,23,24 |
На мой взгляд, вы должны избегать использования самодельных кабелей. Такой кабель почти не дает экономии денежных средств, но может добавить кучу проблем. Если вы все же решили сделать свой собственный кабель, то помните, что вы делаете это на свой страх и риск. Я привел фрагмент plip.c, но не даю никаких гарантий.
И еще. Длинные кабеля (более 10 футов или 3 метров) могут вызвать проблемы из-за действия электрических полей. Используйте хорошо экранированные кабеля, если используется длинное соединение. Впрочем, в любом случае, не рекомендую использовать кабеля длиной более 15 метров (50 футов).
Кто-то написал мне, что его/ее 100-футовый (30 метров) кабель прекрасно работает. Если кто-нибудь желает попробовать установить PLIP соединение между своим домом и офисом ( метров 200), то пусть попробует это сделать :-).
Предполагается, что вы знаете, как настраивать и компилировать ядро. Если нет, то почитайте документацию (kernel-howto или другие руководства). Благодаря отличной работе, проделанной над ядром, последние версии могут быть легко настроены "обычными" людьми. Для полноты картины все же перечислю вкратце, что нужно сделать.
ПРИМЕЧАНИЕ: я предполагаю, что вы используете ядро версии 2.0.xx. Не даю никаких указаний по ядрам версий 2.1.xx, так как они предназначены для разработки.
Также предполагается, что для настройки ядра вы используете menuconfig, другие инструменты, в принципе, похожи. Я покажу, как сделать это с помощью menuconfig:
#make menuconfig |
Настоятельно рекомендую выбрать
Loadable module support ---> |
и включить
[*] Enable loadable module support |
и, если возможно, (то есть у вас модули версии 2.0.0)
[*] Kernel daemon support (e.g. autoload of modules) |
Затем вернуться и перейти в
Networking options ---> |
где, как минимум, нужно включить
[*] Network firewalls [*] TCP/IP networking [*] IP: forwarding/gatewaying |
Затем вернуться и включить
[*] Network device support <M> PLIP (parallel port) support |
Если вы используете модули, рекомендую включить PLIP как модуль. Если вы так и сделали, и вам нужен принтер, перейдите в
Character devices ---> |
и включите как модуль
<M> Parallel printer support |
Итак, вы включили поддержку ядром PLIP. Если вы в первый раз собираете ядро, посмотрите остальные опции и выходите с сохранением сделанных изменений.
И, наконец, соберите ядро
#make dep ; make clean #make zlilo |
Если есть модули
# make modules # make modules_install |
После чего перезагрузите систему.
После того, как вы настроили и собрали ядро с поддержкой PLIP, либо при загрузке системы (если поддержка была включена непосредственно в ядро), либо при загрузке модуля PLIP (см. ниже), вы получите примерно следующее сообщение (числа могут быть другими):
NET3 PLIP version 2.2 gniibe@mri.co.jp plip1: Parallel port at 0x378, using assigned IRQ 7. |
В зависимости от настроек klogd и syslogd сообщение plip может быть помещено в системные файлы протоколирования (log files). Поэтому не впадайте в панику, если не увидите его. Если вы собрали PLIP как модуль, и команда lsmod показывает, что модуль plip загружен, то все нормально.
Обратите внимание на имя интерфейса. Обычно это plip1, но, в зависимости от адреса ввода-вывода (IO Address), может быть plip0 или даже plip2, plip3 и т.д.
ПРИМЕЧАНИЕ: Некоторые дистрибутивы, например, Debian используют другие файлы конфигурации. Если у вас стандартная инсталляция и вы не нашли файлы rc.inet*, поищите (другие) файлы в каталоге /etc/init.d.
Прежде всего не забудьте сделать копии всех файлов, которые будете изменять:
#cp rc.inet1 rc.inet1.BACKUP |
- один из вариантов.
Теперь, если вы не сделали этого раньше, выберите IP адреса для обеих машин. В моем примере я буду употреблять пару IP адресов, которые вы должны будете сменить на ваши, в стандартном формате ххх.ххх.ххх.ххх.
В файле /etc/rc.d/inet1.rc на обеих машинах добавьте следующую строчку (лучше в конец файла):
/sbin/route add -net ${NETWORK} netmask ${NETMASK} |
Где NETWORK и NETMASK должны быть установлены ранее. Если вы не знаете, как это сделать, прочитайте NET-2-HOWTO.
Если после выполнения этой команды route вы будете получать сообщение:
SIOCADDRT: network unreachable, |
то используйте такую строку:
/sbin/route add -net ${NETWORK} netmask ${NETMASK} dev plip1, |
где обычно имя интерфейса берется из сообщения ядра (см. выше).
Игнорировать эти переменные можно только в следующем случае:
Если вы хотите соединить две машины в отдельно стоящей сети, то можете выбрать произвольные IP адреса, например, 200.0.0.1 и 200.0.0.2 соответственно. В этом случае можно указать NETWORK="200.0.0.0" и NETMASK="255.255.255 .0". Эти значения я использовал в разделе "Быстрая установка PLIP (см. ниже).
ПРИМЕЧАНИЕ: 200.0.0.1 и 200.0.0.2 взяты лишь в качестве примера. Я не советую их использовать, так как они могут оказаться адресами реальных машин в Internet!
Настоятельно рекомендую выбирать адреса из зарезервированных для этой цели интервалов:
10.0.0.0 - 10.255.255.255 172.16.0.0 - 172.31.255.255 192.168.0.0 - 192.168.255.255 |
В файле /etc/hosts на обеих машинах добавьте строки с IP адресами машин, соединяемых через PLIP. В моем примере я добавил следующие строки:
200.0.0.1 one # IP адрес машины "one" 200.0.0.2 two # IP адрес машины "two" |
Где one и two - имена, выбранные вами для обеих машин.
Если вы планируете использовать NFS, то, кроме включения ее поддержки в ядре, вы должны добавить в файл /etc/exports строки, описывающие экспортируемые каталоги. В моем примере для доступа к каталогу /usr я добавил:
/usr two (ro) |
Для более подробной информации о NFS читайте соответствующую документацию. Не сообщайте мне о проблемах возникших с NFS - я не смогу вам помочь.
И теперь перезагрузите систему.
Наконец, нужно дать (под правами пользователя root) несколько команд для активации PLIP интерфейса (само собой кабель уже должен быть правильно подключен).
ПРИМЕЧАНИЕ: Если произойдет что-то непредвиденное, то дважды проверьте кабель и синтаксис команд. Если вы в точности следовали указаниям, а ошибки все равно остались, то прочитайте раздел FAQ - там есть множество ответов на вопросы.
Прежде всего убедитесь в отсутствии устройства lp:
# cat /proc/devices |
Вы не должны видеть какие-либо ссылки на lp типа этой:
6 lp |
Если вы их видите, то уберите (временно) lp устройство перед тем, как двигаться дальше. Если PLIP заработает, то позже можно будет попробовать его с lp. Для того, чтобы убрать это устройство, либо придется воспользоваться командой rmmod (если это модуль), либо (если поддержка lp собрана в ядре) собрать ядро заново, скомпилировав lp как модуль (куда более мудрая идея).
Я опять использую в качестве примеров имена one и two. На one вам нужно сделать следующее.
Если у вас нет демона автозагрузки модулей, то загрузите модуль вручную:
# insmod plip |
ПРИМЕЧАНИЕ: если IRQ параллельного порта отличен от 7, и/или адрес ввода-вывода отличен от 0x378, то вам нужно указать это для insmod. Определите, IRQ и адрес ввода-вывода (можно воспользоваться командой DOS MSD, но не стоит слишком доверять ей), и дайте примерно следующую команду:
# insmod plip io=0x278 irq=5 |
Обычно IRQ бывает 7 или 5, а адрес ввода-вывода - 0x378, 0x278 или 0x3bc. Важно убедиться в том, что адрес и IRQ соответствуют установкам аппаратного обеспечения (переключатели на старых карточках, BIOS на современных материнских платах).
Если вы параноик, то можете проверить, загрузился ли модуль командой:
# lsmod Module: #pages: Used by: plip 3 0 |
Посмотрите имя интерфейса (plip0, plip1 и т. д.; см. раздел о сообщениях ядра выше), после чего поднимайте PLIP интерфейс:
# ifconfig plip1 one pointopoint two up |
ПРИМЕЧАНИЕ: если IRQ вашего параллельного порта не равен 7, и/или адрес ввода-вывода не равен 0x378, то вам нужно сообщить об этом ifconfig. Для этого дайте примерно следующую команду, в качестве параметров указав ваши значения:
# ifconfig plip1 irq 7 # ifconfig plip1 io_addr 0x3bc |
Обычно IRQ равен 7 или 5, а адрес ввода-вывода 0x378, 0x278 или 0x3bc.
Теперь проверьте, как это работает...
# ifconfig ..... ..... plip1 Link encap:10Mbps Ethernet HWaddr FC:FC:C8:00:00:01 inet addr:200.0.0.1 P-t-P:200.0.0.2 Mask:255.255.255.0 UP POINTOPOINT RUNNING NOARP MTU:1500 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 TX packets:0 errors:0 dropped:0 overruns:0 Interrupt:7 Base address:0x378 |
Добавьте путь (route) к two...
# route add two plip1 |
И, если вам нужен NFS для two:
# rpc.portmap # rpc.mountd # rpc.nfsd |
На "two" команды те же самые, только нужно заменить one на two и наоборот.
Одна из ваших машин, скорее всего, будет иметь только PLIP соединение. Если это так, и эта машина - two, то можно также ввести на ней:
# route add default gw one |
В моем примере two - это переносной компьютер с единственным (PLIP) соединением с one, поэтому я набирал на нем эту строчку.
Последняя проверка, чтобы убедится, что все работает:
# ping two |
с one и
# ping one |
с two.
Скорее всего, вам захочется, чтобы все эти команды автоматически запускались при загрузке. Для этого создайте скрипт, запускающий их - его можно будет просто запускать (на правах пользователя root) или вставить в /etc/rc.d/rc.inet2 команду, вызывающую его при загрузке.
Для настройки PLIP можно использовать команду plipconfig. За подробностями обратитесь к документации.
Для отключения PLIP нужно набрать:
# ifconfig plip1 down, |
что также удалит соответствующие пути из таблицы маршрутов. Если у вас нет демона автозагрузки модулей, то дайте команду:
# rmmod plip |
Этот раздел, надеюсь, поможет решить некоторые ваши проблемы. Если у вас есть другие вопросы, можете написать мне письмо.
При загрузке системы (или модуля) я получаю следующие сообщения:
SIOCSIFADDR: No such device SIOCADDRT: Network is unreachable |
SIOCSIFADDR: No such device SIOCSIFDSTADDR: No such device SIOCADDRT: Network is unreachable mount clntudp_create: RPC: Port Mapper failure - RPC: Unable to send |
По какой-то причине ядро не поддерживает PLIP. Это может быть из-за того, что:
Вы не включили поддержку PLIP (PLIP support) при настройке ядра.
Вы включили поддержку принтера (Printer support) при настройке ядра.
Вы скомпилировали PLIP как модуль, но не загрузили его.
Вы указали не тот порт, например plip1, вместо plip0.
Есть ли способ (кроме модулей) поддерживать и PLIP, и LP, возможно с двумя параллельными портами?
Да, есть два способа, описанные в разделе "Патчи для совместной работы PLIP и LP":
Можно использовать патч, позволяющий ядру поддерживать и то, и другое.
Можно взять другой патч, позволяющий ядру использовать один порт для PLIP, а второй - для LP.
Я написал скрипт, запускаемый из rc.inet2, который соединяет 2 моих компьютера, и включает NFS. Машина "one" подключает каталоги с машины "two". Кроме того, я добавил правильные строки в /etc/fstab второго компьютера (two). Если я загружаю его в то время, как "one" выключен, то он несколько минут ждет "подключение удаленных файловых систем..." ("mounting remote file systems...").
Это происходит из-за того, что "two" пытается подключить файловые системы с "one". Если же последний выключен, то вам приходится ждать, пока "two" надоест пытаться сделать это. Чтобы избежать этого, вы можете:
Закомментировать в rc.inet2 команду, подключающую удаленные файловые системы.
Убрать из /etc/fstab компьютера "two" соответствующие строки и подключать удаленные файловые системы вручную.
Есть решение получше - определять при загрузке включен ли "one", и только в этом случае подключать с него файловые системы. Этого можно достигнуть, заменив команду mount в rc.d (или где оно там у вас) примерно такими строчками:
if ping -c 5 one ; then mount one:/..... fi |
Соединение есть, но ping не работает. Ядро выдает следующее (или подобное) сообщение:
plip1: timed out (1, 89) |
Это означает что, с "вашей стороны" соединения все нормально, ваша машина посылает сигналы, но "другая сторона" не отвечает. Как правило это случается при работе с некачественным кабелем или неправильной настройке IRQ/адреса ввода-вывода. Вообще, более 60% проблем связано с неправильной установкой IRQ. Попробуйте сменить его, очень вероятно, что все заработает. Ниже приводится более подробный список возможных причин возникновения этой проблемы:
Кабель неправильно подключен, неисправен или вообще не тот. Если есть такая возможность, включите его между машинами с заведомо работающим PLIP. Если такой возможности нет, то хотя бы проверьте тестером. Факт того, что кабель работал под DOS/win95 - хорошее предзнаменование, но не 100% гарантия.
На машине с "другой стороны" не загружен PLIP.
Если вы соединяетесь с переносным компьютером с нестандартным параллельным портом, то смотрите ниже.
У вас дешевый параллельный порт, предназначенный исключительно для поддержки принтера. Такие порты могут посылать данные, но не могут принимать их.
Ваш параллельный порт не был настроен (как минимум) как двунаправленный. Зайдите в конфигурацию BIOS и перенастройте его. Возможны также варианты EPP и ECP.
Параллельные порты имеют различный IRQ. Загрузите plip (или lp) модуль с другим IRQ. См. раздел "Активация PLIP соединения".
Другие устройства (например звуковая карта) использует тот же IRQ. Не доверяйте DOS программам типа MSD, лучше просто попробуйте загрузить PLIP модуль с другим IRQ.
Я правильно указал IRQ и адрес ввода/вывода, но PLIP все равно не работает. Адрес и IRQ я узнал с помощью MSD.
MSD не всегда правильно определяет адрес порта. Попробуйте эту программу: http://www.cs.caltech.edu/ huny/para13.zip.
Соединение установлено, и ping работает, но иногда ядро выдает (или похожее) следующее сообщение:
plip1: timed out (1, 89) |
Это означает, что другая сторона не ответила до истечения времени ожидания. Если все работает, то вы можете не обращать внимания на эти сообщения: как правило это значит, что другая сторона намного медленнее, чем ваша, что возможно из-за старого аппаратного обеспечения или высокой загрузки машины. Можно попробовать настроить PLIP командой plipconfig.
Я настроил PLIP соединение между моим настольным компьютером и переносным, но ping сообщает о 100% потере пакетов.
Параллельные порты некоторых переносных компьютеров не подходят для PLIP, так как они предназначены для работы только с принтерами, то есть могут посылать данные, но не могут принимать их. Я не знаю способа, заставить их работать с PLIP. Единственная надежда -
Посмотреть конфигурацию вашего ноутбука - если есть возможность, то настроить параллельный порт для работы в двунаправленном режиме. Обычно он называется "parallel enhanced mode" (расширенный режим работы параллельного порта).
Попробовать plip mode 0 (режим 0). Увы, я не знаю, как это сделать, и/или будет ли это работать, а также поддерживается ли этот режим в последних ядрах.
Какой скорости можно достигнуть при передаче через PLIP?
Это непростой вопрос, так как МНОЖЕСТВО различных факторов могут влиять на скорость:
Скорость процессора на обеих сторонах соединения.
Тип и настройки параллельного порта.
Загруженность системы.
Для чего вы использует PLIP.
Что если мне нужно часто давать команду ifconfig up и ifcongig down для plip1?
Похоже, вам нужно добавлять к команде ifconfig ключ -arp, кроме самого первого, после загрузки системы, раза. Мне он не требовался, но кому-нибудь может понадобится.
Я прочитал об IP адресах, зарезервированных для внутренних сетей. 200.0.0.1 и 200.0.0.2 к ним не относятся. Не нужно ли их поменять?
Да, нужно, но я сразу же подчеркнул, что выбрал эти адреса только из-за их простоты. Вы можете свободно менять их на то, что пожелаете. Вот цитата из net-2-howto:
В соответствие с RFC1597 некоторые IP адреса зарезервированы для внутренних сетей. Вы должны использовать их для избежания различных неприятных происшествий при случайном соединении к Internet. Это следующие адреса: 10.0.0.0 - 10.255.255.255 172.16.0.0 - 172.31.255.255 192.168.0.0 - 192.168.255.255 |
Есть ли способ настроить параметры PLIP без правки исходного текста кода?
Да, есть. Попробуйте команду /sbin/plipconfig. За более подробной информацией обращайтесь к руководству (man).
У меня установлен Debian GNU/Linux, в котором отсутствуют файлы /etc/rc.d/rc.inet1 и 2. Куда мне прописывать команды настройки plip?
В Debian GNU/Linux все команды, которые предполагалось вставить в rc.inet1 и 2, нужно внести в /etc/init.d/network.
У меня возникли сложности со связыванием двух машин с помощью PLIP. На первой стоит ядро последней версии, а на второй PLIP версии 1.0. Не в этом ли дело?
Да, будет намного лучше, если версии PLIP на обоих концах будут одинаковые. В plip.c указано, что PLIP (последних версий) не может работать с PLIP версии 1.0.xx.
В данный момент PLIP работает с 4 битами, а как насчет 8-битного PLIP, про который я читал в документации по ядру? Кажется, он называется режимом 1 (mode 0).
Этот Mini-HowTo опсиывает настройку PLIP. За технической информацией обращайтесь, пожалуйста, к автору или читайте /usr/src/linux/drivers/net/README*.PLIP. Я знаю только следующее: стандартный PLIP использует "параллельный нуль-кабель" и работает в режиме 0 (не путайте с именем интерфейса plip0), использующем 4 бита. Режим 1 использует 8 бит и уже должен быть реализован, но для него нужен самодельный кабель, и работать он будет только между машинами с Linux. Я не знаю, как настраивать режим 1. Если кто-нибудь знает, то сообщите мне, пожалуйста.
Самый лучший способ заставить работать вместе PLIP и LP - это использовать загружаемые модули: можно загрузить и выгрузить из памяти plip.o, когда вам надо что-то распечатать и наоборот. Если вам необходимо использовать PLIP и LP одновременно, попробуте использовать следующие патчи.
Если вам понадобилась поддержка PLIP и LP, попробуйте следующие патчи.
Вы должны отредактировать некоторые части программы, разумеется, предварительно сохранив копию:
******** изменения для linux/drivers/char/lp.c *********************** struct lp_struct lp_table[] = { { 0x3bc, 0, 0, LP_INIT_CHAR, LP_INIT_TIME, LP_INIT_WAIT, NULL, NULL, }, /* { 0x378, 0, 0, LP_INIT_CHAR, LP_INIT_TIME, LP_INIT_WAIT, NULL, NULL, }, { 0x278, 0, 0, LP_INIT_CHAR, LP_INIT_TIME, LP_INIT_WAIT, NULL, NULL, }, */ }; #define LP_NO 1 ******** изменения для linux/drivers/net/Space.c ******************** #if defined(PLIP) || defined(CONFIG_PLIP) extern int plip_init(struct device *); static struct device plip2_dev = { "plip2", 0, 0, 0, 0, 0x278, 2, 0, 0, 0, NEXT_DEV, plip_init, }; static struct device plip1_dev = { "plip1", 0, 0, 0, 0, 0x378, 7, 0, 0, 0, &plip2_dev, plip_init, }; /* static struct device plip0_dev = { "plip0", 0, 0, 0, 0, 0x3BC, 5, 0, 0, 0, &plip1_dev, plip_init, }; */ # undef NEXT_DEV # define NEXT_DEV (&plip1_dev) #endif /* PLIP */ |
Разумеется, я не могу подтвердить, что они правильны и не принесут никакого ущерба, я их получил по почте и разместил без всяких исправлений. Это означает, что я не несу никакой ответственности за последствия. В любом случае. ваши проблемы ограничатся записью исходного файла и перекомпиляцией.
Если у вас есть хотя бы два параллельных порта, вы можете использовать следующие патчи, которые дадут возможность использовать PLIP на одном порте, а LP на другом.
Раскомментируйте одну строку в исходнике ядра в файле drivers/char/lp.c.
struct lp_struct lp_table[] = { { 0x3bc, 0, 0, LP_INIT_CHAR, LP_INIT_TIME, LP_INIT_WAIT, NULL, NULL, }, { 0x378, 0, 0, LP_INIT_CHAR, LP_INIT_TIME, LP_INIT_WAIT, NULL, NULL, }, /* { 0x278, 0, 0, LP_INIT_CHAR, LP_INIT_TIME, LP_INIT_WAIT, NULL, NULL, }, */ }; 3 -> 2 |
Конфигурация ядра
PLIP (parallel port) support (CONFIG_PLIP) [n] y Parallel Printer support [y] y |
Сообщение ядра при запуске
lp1 at 0x0378, using polling driver ..... NET3 PLIP version 2.0 gniibe@mri.co.jp plip2: Parallel port at 0x278, using assigned IRQ 5. |
В этом случае, я несу такую же ответственность, как и в главе 8.1.
После выхода первой версии этого Mini-HowTo множество людей спрашивало меня о PLIP соединении между компьютерами с Linux и DOS (или Windows). Общий интерес побудил меня добавить этот раздел. Надеюсь, он многим поможет.
Раздел основан на статье James McDuffie <mcduffie@scsn.net>, найденной мной в Linux Gazzette. Описываются основы настройки PLIP соединения между Linux и DOS, с использованием Windows и Trumpet WinSock. Также приведен адрес замечательной программы, позволяющей вам запускать X-Windows программы из Windows.
Последняя часть - это приложение, присланное James Vahn jvahn@short.circuit.com , где он подробно рассказывает, как настроить это соединение и решить множество проблем.
С любыми вопросами по этому разделу обращайтесь не ко мне, а к нему.
Предполагается, что вы уже настроили поддержку PLIP на Linux, и у вас есть нужный кабель. Если нет, то обратитесь к предыдущим разделам.
Итак, в первую очередь, для DOS нужен пакетный драйвер. Его можно найти здесь:
ftp://ftp.crynwr.com/drivers/plip.zip
Программа запускается под DOS и работает так же, как пакетный драйвер для сети. Если PLIP нужен для работы с Windows, то вам, кроме того, понадобится Trumpet Winsock. Он служит TCP/IP интерфейсом. Если работа с Windows не требуется, то вам, вероятно, следует поискать программное обеспечение для работы TCP/IP под DOS.
Вернитесь к компьютеру с Linux и добавьте адрес компьютера с DOS в /etc/hosts. Если у DOS компьютера нет постоянного IP адреса, то можно взять любой (помните о предупреждении об IP адресах в разделе 3).
Предположим, что вы выбрали для компьютера с Linux имя linux, а для компьютера с DOS - имя dos. Тогда вам нужно набрать:
ifconfig plip1 linux pointopoint dos arp up route add dos |
Само собой разумеется, что если вам нужно делать это при каждой загрузке компьютера с Linux, то вы можете внести эти строки в файл /etc/rc.d/rc.inet1:
/sbin/ifconfig plip1 linux pointopoint dos arp up /sbin/route add dos |
Эти команды настраивают интерфейс и добавляют путь к нему. Если у вас используется второй параллельный порт, то, естественно, вместо plip1 надо писать plip2.
Вернитесь к машине с DOS/Windows и подправьте файл autoexec.bat, добавив в него следующие строки.
c:\plip\plip.com 0x60 c:\tcpip\winsock\winpkt.com 0x60 |
Предполагается, что вы поместили plip.com (пакетный драйвер) в каталог c:/plip, а winpkt.com в c:/tcpip, если нет, то исправьте пути. Первая команда настраивает plip.com на пакетный вектор (packet vector) 0x60, а вторая загружает программу winpkt.com, входящую в комплект trumpet winsock, на тот же вектор. Она необходима для того, чтобы сделать доступным пакетный вектор под Windows. Если кабель подсоединен не к lpt1, то укажите plip.com другой адрес ввода/вывода и irq. Перейдем к настройке Trumpet Winsock. Все, что нужно сделать - отключить SLIP или PPP и ввести 60 в поле "Пакетный вектор" (Packet vector). Затем введите выбранный вами IP адрес, в качестве шлюза по умолчанию, укажите IP адрес машины с Linux в качестве сервера имен (Name Server) - IP адрес вашего компьютера или адрес вашего Internet провайдера, если вы планируете подсоединяться к Internet (сейчас или позже). Закройте программу настройки и перезапустите Winsock. После этого все должно заработать. Если хотите, можете поместить winsock в группу автозагрузки.
Если вам нужен доступ к Internet из Windows через Linux, то необходимо настроить IP-маскарадинг (IP Masquerading) - о том, как это сделать, читайте в NET-2-HOWTO. Смысл в том, чтобы компьютер с Windows был "спрятан" от остальной сети за IP адресом компьютера с Linux.
Кроме того, я нашел программу, позволяющую запускать программы X-Windows из под Windows. Она находится на:
Установите его в соответствии с указаниями, после чего можно зайти telnet-ом с компьютера c Windows, установить дисплей на него (например "DISPLAY=duncan:0.0") и запустить нужную программу. Нет ничего лучше, чем запускать xv под Windows!
ПРИМЕЧАНИЕ: Я получил этот документ от James Vahn jvahn@short.circuit.com, и поместил сюда без изменений. Это означает, что в любом вопросе, касающемся этого документа, он разбирается гораздо лучше меня, поэтому пишите, пожалуйста, ему, а не мне. Его опыт по PLIP соединению компьютера под DOS с одним только флоппи-дисководом с компьютером под Linux - отличный пример того, как можно справляться с общими проблемами.
Последнее обновление сделано 11 июля 1996
Мой компьютер с одним только дисководом, работающий под DOS, соединен через PLIP со вторым портом принтера на машине с Linux. К первому порту принтера на Linux подключен принтер. Оба порта постоянно работают. Под DOS выполняется telnet на машину с Linux. Ниже идут заметки о том, как я этого добился.
Если вы не исключили явно порты принтера из поиска, то ядро найдет их (причем все). Иначе PLIP ничего не получит. Один из способов - загружать драйвера по мере необходимости, как модули...
<gniibe@mri.co.jp> пишет:
Я по-прежнему рекомендую компилировать PLIP/LP, как модули ядра, так как
модули позволяют гибко менять конфигурацию
(пере)компилирование ядра - не такая уж простая процедура для начинающих пользователей
сосуществование PLIP и LP возможно только с помощью модулей
С PLIP/LP в виде модулей вы можете указать, какой порт используется PLIP, а какой - LP. Пример:
# insmod lp.o io=0x378 # insmod plip.o io=0x278 irq=2 |
Вы даже можете использовать два параллельных порта:
# insmod plip.o io=0x278,0x3bc irq=2,5 |
В предыдущем примере,
plip0 назначается адрес 0x278 и irq 2,
plip1 назначается адрес 0x3bc и irq 5, соответственно.
Использование модулей - это безусловно предпочтительный способ. Есть другой, показанный ниже - патч ядра для использования принтера и PLIP на разных портах без использования модулей. Если вы не знакомы с модульной концепцией, то вам, возможно, он покажется проще.
Наверно придется изменить два файла из исходных текстов ядра. Я использовал ядро версии 1.2.13 и обнаружил, что в файл ../linux/drivers/net/Space.c нужно внести некоторые изменения для приведения его в соответствие с настройками моего компьютера. Проверьте определения PLIP в строке 205, чтобы убедиться, что IRQ и порт ввода/вывода соответствуют вашим, а также запомните, какое устройство будет использовано для PLIP (plip0, plip1, plip2). В моем случае, порт 0x278 использовал IRQ 5(так выставлены переключатели на карточке), в Space.c определен IRQ 2. Я не стал открывать компьютер и менять переключатели на плате, а подправил файл. Исправление очень простое - всего в один символ. Хотя можно указать IRQ позже через ifconfig, но в этом случае ядро будет загружаться с неправильным IRQ для PLIP, что, наверное, будет вас раздаржать.
Дальнейший шаг потруднее:
В .../drivers/char/lp.c где-то около строки 38 найдите следующее:
struct lp_struct lp_table[] = { { 0x3bc, 0, 0, LP_INIT_CHAR, LP_INIT_TIME, LP_INIT_WAIT, NULL, NULL, }, { 0x378, 0, 0, LP_INIT_CHAR, LP_INIT_TIME, LP_INIT_WAIT, NULL, NULL, }, /* { 0x278, 0, 0, LP_INIT_CHAR, LP_INIT_TIME, LP_INIT_WAIT, NULL, NULL, }, * 0x278 зарезервирован для plip1 * * }; * #define LP_NO 3 */ }; #define LP_NO 2 |
Обратите внимание на изменения, которые нужно внести - один порт должен быть закомментирован. Теперь для принтера определяются только два порта. Порт 0x3BC, как правило, не работает с PLIP - для него использовался IRQ со старых монохромных видеоадаптеров (MDA).
Надеюсь, вы сделали резервные копии этих файлов. Теперь собираем новое ядро с поддержкой принтера, сети, plip и dummy.
Настраиваем систему. Это мой файл /etc/rc.d/rc.inet1:
#!/bin/bash # /sbin/ifconfig lo 127.0.0.1 /sbin/route add -net 127.0.0.0 /sbin/ifconfig dummy 200.0.0.1 /sbin/route add -net 200.0.0.0 netmask 255.255.255.0 /sbin/ifconfig plip1 arp 200.0.0.1 pointopoint 200.0.0.2 up /sbin/route add 200.0.0.2 /sbin/ifconfig dummy down |
Обратите внимание, что для DOS-to-Linux соединения используется arp, необходимость в котором обычно отсутствует в соединениях Linux-to-Linux.
В файл /etc/hosts добавляем имена машин, например:
200.0.0.1 console1 200.0.0.2 console2 |
Машина с DOS - это console2. Не забывайте о предупреждении Andrea насчет адресов - лучше использовать общепринятые схемы выделения адресов.
Перезапускаем машину для загрузки нового ядра. При загрузке системы, (или позже командой dmesg) если вы патчили ядро, или при загрузке модулей:
lp0 at 0x03bc, using polling driver lp1 at 0x0378, using polling driver [....] NET3 PLIP version 2.0 gniibe@mri.co.jp plip1: Parallel port at 0x278, using assigned IRQ 5. |
Команда "route" выдает:
Kernel routing table Destination Gateway Genmask Flags MSS Window Use Iface console2 * 255.255.255.255 UH 1436 0 136 plip1 loopback * 255.0.0.0 U 1936 0 109 lo |
А "ifconfig plip1" выдает:
plip1 Link encap:10Mbps Ethernet HWaddr FC:FC:C8:00:00:01 inet addr:200.0.0.1 P-t-P:200.0.0.2 Mask:255.255.255.0 UP POINTOPOINT RUNNING MTU:1500 Metric:1 RX packets:132 errors:0 dropped:0 overruns:0 TX packets:136 errors:0 dropped:0 overruns:0 Interrupt:5 Base address:0x278 |
Проверьте, разрешен ли telnet в /etc/inetd.conf. Можно прочесть руководство по tcpd, /etc/hosts.allow (ALL: LOCAL) и /etc/hosts.deny (ALL: ALL). Команда "telnet localhost" должна нормально работать.
С Linux-ом все, теперь DOS. Опять таки, осторожней с 0x3BC, если таковой имеется.
Я использую NCSA telnet и Crynwr PLIP драйвер, которые можно найти на:
ftp://ftp.ncsa.uiuc.edu/Telnet/DOS/ncsa/tel2308b.zip
ftp://ftp.crynwr.com/drivers/plip.zip
Обязательно используйте версию 2.3.08 NCSA telnet и версию 11.1 Crynwr PLIP драйвера. Пожалуйста, где-нибудь найдите и прочитайте Crynwr SUPPORT.DOC.
Файл CONFIG.TEL. Большинство установок берется по умолчанию и, для экономии места, я постарался обрезать его, сохранив только необходимую (как я надеюсь) для вас информацию. Второй порт на этой машине имеет адрес 0x278 на IRQ 5.
myip=200.0.0.2 netmask=255.255.255.0 # маска подсети hardware=packet # сетевой адаптер (пакетный драйвер) interrupt=5 # IRQ используемый адаптером ioaddr=60 # программный вектор прерывания, используемы драйвером # #[...много чего без изменений...] # # в конце файла добавьте эту строку: name=console1 ; hostip=200.0.0.1 ; nameserver=1 ; gateway=1 |
(console1 - это имя машины с Linux, ставьте название вашей)
Я установил 12-футовый нуль-кабель между машинами и (кроме того, что изначально он был разведен неправильно) все заработало без проблем. Стандартный 11-жильный параллельный нуль-кабель также должен работать. Я же сделал его сам, взяв разводку из файла plip.c. Хотя у моего кабеля было соединение 17-17, я не думаю, что оно для чего-то нужно, его нет на промышленно изготовляемых кабелях.
@echo off plip.com 0x60 5 0x278 telbin -s console1 |
Эти команды должны подсоединить вас к Linux на /dev/ttyp. NCSA telnet поддерживает 8 виртуальных экранов и работает, как ftp сервер. Пропускная способность PLIP соединения достаточно хороша - я получал 6.5кб/сек при передаче файлов на своем антиквариате. Надеюсь, у вас будет больше. :-)
Этот раздел пуст. Я использую window 95 только для игр, так что я не пытался и не задумывался о PLIP соединении с Linux. Вопросы на эту тему побили все рекорды, так что я даю (пока) определенный ответ.
Нет, пока что никто не сообщил мне об удачном соединении между Linux и Windows 95. Если кому-либо удастся это сделать, немедленно сообщите мне: тысячи пользователей PLIP ожидают этой новости!
Если у вас есть вопросы или комментарии, то свяжитесь со мной по электронной почте по адресу controzz@cli.di.unipi.it
Отзывы приветствуются, сообщения же об ошибках просто драгоценны. В следующей версии увеличится раздел FAQ, если вы пришлете мне вопросы и, конечно, ответы, если найдете их сами.
Пожалуйста, не посылайте вопросы, имеющиеся в FAQ.
Если вам необходимо меня спросить о какой-то проблеме, пожалуйста, постарайтесь предоставить побольше информации, которая может помочь мне при ответе. Как минимум, вы должны сообщить мне: версию ядра, использовавшиеся команды, сообщения об ошибках, кабель и другие системные сообщения, касающиеся PLIP.
Пожалуйста, не посылайте мне вопросы о PLIP с DOS/Windows 3.1/Windows 95 - я не смогу вам помочь. Эти вопросы (о DOS) нужно посылать James Vahn jvahn@short.circuit.com, пославшему мне приложение про DOS. И еще раз: бесполезно спрашивать его или меня про PLIP с Windows 95.
Этот mini-HOWTO сопровождается координаторами HOWTO и ежемесячно посылается в comp.os.linux.answers , а также может быть найден в каталоге HOWTO на сайте sun и его зеркалах.
Другой способ найти этот mini-HOWTO (и связаться со мной) - зайти на мою домашнюю страничку,
http://www.cli.di.unipi.it/~controzz/intro.html (итальянский язык)
http://www.cli.di.unipi.it/~controzz/intro_e.html (английский язык)
Премного благодарен:
Rick Lim <ricklim@freenet.vancouver.bc.ca> за патчи, позволяющие совместную работу PLIP и LP.
Takeshi Okazaki <GBA03552@niftyserve.or.jp> за патчи, позволяющие работать PLIP и LP на разных параллельных портах.
Jim Van Zandt <jrv@vanzandt.mv.com> за советы по "обучающей" части этого HOWTO.
Fernando Molina <fmolina@nexo.es> за полезные комментарии об адресах ввода/вывода и IRQ.
James Vahn <jvahn@short.circuit.com> за прекрасное приложение к разделу по PLIP соединению между DOS и Linux.
Всем пользователям, пославшим статьи, связанные с PLIP в телеконференции по linux, и/или написавшим мне. Список всех людей, которые помогли мне с информацией и комментариями, может занять больше места, чем сам Mini-HOWTO - благодарю вас всех!
Unless otherwise stated, Linux HOWTO documents are copyrighted by their respective authors. Linux HOWTO documents may be reproduced and distributed in whole or in part, in any medium physical or electronic, as long as this copyright notice is retained on all copies. Commercial redistribution is allowed and encouraged; however, the author would like to be notified of any such distributions.
All translations, derivative works, or aggregate works incorporating any Linux HOWTO documents must be covered under this copyright notice. That is, you may not produce a derivative work from a HOWTO and impose additional restrictions on its distribution. Exceptions to these rules may be granted under certain conditions; please contact the Linux HOWTO coordinator at the address given below.
In short, we wish to promote dissemination of this information through as many channels as possible. However, we do wish to retain copyright on the HOWTO documents, and would like to be notified of any plans to redistribute the HOWTOs.
If you have questions, please contact Greg Hankins, the Linux HOWTO coordinator, at linux-howto@sunsite.unc.edu via email.
Авторские права на русский перевод этого текста принадлежат ╘ 2000 ASPLinux Все права зарезервированы.
Этот документ является частью проекта Linux HOWTO.
Авторские права на документы Linux HOWTO принадлежат их авторам, если явно не указано иное. Документы Linux HOWTO, а также их переводы, могут быть воспроизведены и распространены полностью или частично на любом носителе, физическом или электронном, при условии сохранения этой заметки об авторских правах на всех копиях. Коммерческое распространение разрешается и поощряется; но, так или иначе, автор текста и автор перевода желали бы знать о таких дистрибутивах.
Все переводы и производные работы, выполненные по документам Linux HOWTO, должны сопровождаться этой заметкой об авторских правах. Это делается в целях предотвращения случаев наложения дополнительных ограничений на распространение документов HOWTO. Исключения могут составить случаи получения специального разрешения у координатора Linux HOWTO, с которым можно связаться по адресу приведенному ниже.
Мы бы хотели распространить эту информацию по всем возможным каналам. Но при этом сохранить авторские права и быть уведомленными о всех планах распространения HOWTO. Если у вас возникли вопросы, пожалуйста, обратитесь к координатору проекта Linux HOWTO по электронной почте: <linux-howto@metalab.unc.edu> или к координатору русского перевода Linux HOWTO компании ASPLinux по адресу <linux-howto@asplinux.ru>