3.4. PLIP 驱动程序

并行线路 IP (PLIP) 是一种廉价的网络连接方式,当您只想连接两台机器时。它使用并行端口和专用电缆,速度可达每秒 10 千字节到 20 千字节。

PLIP 最初由 Crynwr, Inc. 开发。当时它的设计相当巧妙(或者,如果您愿意,可以称之为一种 hack),因为 IBM PC 上的原始并行端口被设计为单向打印机端口;八条数据线只能用于将数据从 PC 发送到外围设备,而不能反向传输。[1] Cyrnwr PLIP 设计通过使用端口的五个状态线进行输入来解决此限制,这将其限制为仅以半字节为单位传输所有数据,但允许双向传输。这种操作模式被称为 PLIP “模式 0”。如今,PC 硬件上提供的并行端口可以支持全双向 8 位数据传输,并且 PLIP 已经扩展以适应这一点,增加了 PLIP “模式 1”。

直至并包括 2.0 版本的 Linux 内核仅支持 PLIP 模式 0,并且存在一个增强型并行端口驱动程序作为针对 2.0 内核的补丁,以及作为 2.2 内核代码的标准部分,也提供 PLIP 模式 1 操作。[2] 与早期版本的 PLIP 代码不同,现在的驱动程序试图与 Crynwr 的 PLIP 实现以及 NCSA telnet 中的 PLIP 驱动程序兼容。[3] 要使用 PLIP 连接两台机器,您需要一根特殊的电缆,在某些商店作为 Null Printer 或 Turbo Laplink 电缆出售。但是,您可以自己轻松制作一个;附录 B 向您展示了如何制作。

Linux 的 PLIP 驱动程序是无数人的工作成果。目前由 Niibe Yutaka 维护。[4] 如果编译到内核中,它会为每个可能的打印机端口设置一个网络接口,其中plip0对应于并行端口lp0, plip1对应于lp1等等。接口到端口的映射在 2.0 内核和 2.2 内核中有所不同。在 2.0 内核中,映射硬编码在drivers/net/Spacd.c内核源代码中的文件。此文件中的默认映射是

接口I/O 端口IRQ
plip00x3BC7
plip10x3787
plip20x2785

如果您以不同的方式配置了打印机端口,则必须在drivers/net/Space.cLinux 内核源代码中更改这些值并构建一个新的内核。

在 2.2 内核中,PLIP 驱动程序使用由 Philip Blundell 开发的 “parport” 并行端口共享驱动程序。[5] 新的驱动程序串行分配 PLIP 网络设备名称,就像以太网或 PPP 驱动程序一样,因此创建的第一个 PLIP 设备是plip0,第二个是plip1,依此类推。物理并行端口硬件也串行分配。默认情况下,并行端口驱动程序将尝试使用自动探测例程检测您的并行端口硬件,并按找到的顺序记录物理设备信息。更好的做法是显式地告诉内核物理 I/O 参数。您可以通过向parport_pc.o模块加载时提供参数,或者如果您已将驱动程序编译到内核中,则可以使用 lilo 在启动时向内核提供参数。任何设备的 IRQ 设置稍后都可以通过将新的 IRQ 值写入相关的/proc/parport/*/irq文件来更改。

在加载模块时,在 2.2 内核中配置物理 I/O 参数非常简单。例如,要告诉驱动程序您有两个 PC 样式的并行端口,I/O 地址分别为0x2780c378以及 IRQ 分别为 5 和 7,您将使用以下参数加载模块
modprobe parport_ pc io=0x278,0x378 irq=5,7
要传递给内核以用于编译到内核中的驱动程序的相应参数是
parport=0x278,5 parport=0x378,7
您将使用 lilo append 关键字,以便在启动时自动将这些参数传递给内核。

当 PLIP 驱动程序初始化时,无论是在启动时(如果它是内置的),还是当plip.o模块加载时,每个并行端口都将有一个plip网络设备与之关联。plip0将被分配给第一个并行端口设备,plip1第二个,依此类推。您可以使用另一组内核参数手动覆盖此自动分配。例如,要将parport0分配给网络设备plip0parport1分配给网络设备plip1,您将使用以下内核参数
plip=parport1 plip=parport0

但是,这种映射并不意味着您不能将这些并行端口用于打印或其他目的。只有当相应的接口配置为 up 时,PLIP 驱动程序才会使用物理并行端口设备。

注释

[1]

努力澄清 hacking 的名声!当您指的是有意识地试图破坏系统安全性的人时,请始终使用 “cracker”,而当您指的是找到解决问题的聪明方法的人时,请使用 “hacker”。Hackers 可以是 crackers,但两者绝不应混淆。请查阅《新黑客词典》(通常称为 Jargon file)以更全面地理解这些术语。

[2]

2.0 内核的增强型并行端口适配器补丁可从 http://www.cyberelk.demon.co.uk/parport.html 获取。

[3]

NCSA telnet 是一个流行的 DOS 程序,它通过以太网或 PLIP 运行 TCP/IP,并支持 telnet 和 FTP。

[4]

可以通过 gniibe@mri.co.jp 联系 Niibe。

[5]

可以通过 Philip.Blundell@pobox.com 联系 Philip。