ПРИМЕЧАНИЕ: Я получил этот документ от James Vahn jvahn@short.circuit.com, и поместил сюда без изменений. Это означает, что в любом вопросе, касающемся этого документа, он разбирается гораздо лучше меня, поэтому пишите, пожалуйста, ему, а не мне. Его опыт по PLIP соединению компьютера под DOS с одним только флоппи-дисководом с компьютером под Linux - отличный пример того, как можно справляться с общими проблемами.
Последнее обновление сделано 11 июля 1996
Мой компьютер с одним только дисководом, работающий под DOS, соединен через PLIP со вторым портом принтера на машине с Linux. К первому порту принтера на Linux подключен принтер. Оба порта постоянно работают. Под DOS выполняется telnet на машину с Linux. Ниже идут заметки о том, как я этого добился.
Если вы не исключили явно порты принтера из поиска, то ядро найдет их (причем все). Иначе PLIP ничего не получит. Один из способов - загружать драйвера по мере необходимости, как модули...
пишет:
Я по-прежнему рекомендую компилировать 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 |
#!/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 |
200.0.0.1 console1 200.0.0.2 console2 |
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. |
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 |
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 |
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 |
@echo off plip.com 0x60 5 0x278 telbin -s console1 |