下一页 上一页 目录

9. DOS 与 Linux 之间的 PLIP 连接

在这个迷你教程的第一个版本发布之后,许多人写信询问关于 Linux 和 DOS (或 Windows) 计算机之间连接的信息。普遍的兴趣促使我添加了这一章,我希望这对大家有所帮助。

本节内容来自 James McDuffie <mcduffie@scsn.net> 在 Linux Gazzette 上发表的一篇文章。它涵盖了在 Linux 和 DOS 计算机之间使用 Windows 和 Trumpet WinSock 安装 PLIP 连接的基本步骤,并提供了运行 Windows 上的 X-Windows 程序的实用程序的地址。

最后一节是 James Vahn <a href="mailto:jvahn@short.circuit.com">jvahn@short.circuit.com</a> 发送的附录,他在其中深入描述了如何设置此连接以及如何解决许多问题。

关于本章的任何问题,请联系他,而不是我。

9.1 DOS-Linux 连接。

我假设您已经正确设置了 Linux 端的 PLIP 支持,并且您已经获得了正确的电缆,否则请回到前面的章节。

现在,对于 DOS 端,您首先需要一个数据包驱动程序。可以在这里找到它

ftp://ftp.crynwr.com/drivers/plip.zip

该程序在 DOS 下运行,并充当以太网数据包驱动程序。如果要在 Windows 中使用 PLIP,您还需要 Trumpet Winsock。它充当 TCP/IP 接口。否则,您可能会找到适用于 DOS 的 TCP/IP 软件。

现在回到 Linux 计算机,并将 DOS 计算机地址添加到 /etc/hosts。如果您的 DOS 计算机没有注册的 IP 地址,您可以选择任何地址(记住第 3 章关于 IP 地址的警告)。

现在假设您为 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

这会设置接口,然后向其添加路由。当然,如果您使用的是第二个并行端口,则必须写 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 程序设置在数据包向量 0x60 上,然后加载 trumpet winsock 附带的 winpkt.com 程序到相同的向量上。如果电缆不是 lpt1,您将必须告诉 plip.com IRQ 号和 IO 地址。此外,winpkt.com 需要运行以使数据包向量可用于 Windows。从这里我们进入 Trumpet Winsock 下的实际设置。您所要做的就是取消选择 SLIP 或 PPP,并在标记为“数据包向量”的框中输入 60。然后告诉它您给它的 IP 地址,Linux 计算机的 IP 地址作为默认网关,以及名称服务器,可以是您计算机的 IP 或 ISP 的地址,用于其名称服务器(如果您要将其连接到互联网,稍后会详细介绍)。关闭设置并重新运行 Winsock,您应该就完成了!将 winsock 放入您的启动组,您就拥有了所有自动设置!

如果您想通过 Windows 计算机上的 Linux 计算机访问互联网,您将需要设置 IP 伪装,有关此信息,请参阅 NET-2-HOWTO。这只是使用您的 Linux 计算机的 IP 地址伪装 Windows 计算机。

此外,我找到了一个程序,可以让您在 Windows 下运行 X-Windows 程序!它位于

http://www.tucows.com/

根据说明设置它,然后您要做的就是从 Windows 计算机 telnet 进入,然后将显示设置为 Windows 计算机(例如 `DISPLAY=duncan:0.0`),并运行所需的程序。没有什么比在 Windows 下运行 xv 更酷的了!希望这一切对您有所帮助。

9.2 DOS-Linux PLIP 连接经验。

注意: 我从 James Vahn <a href="mailto:jvahn@short.circuit.com">jvahn@short.circuit.com</a> 收到了这份文档。我在这里不做任何更改地放置它。这意味着对于关于本节的任何问题,他都比我更有资格,所以请给他发邮件而不是我。他将仅限软盘的 DOS 计算机通过 PLIP 连接到 Linux 计算机的经验是解决常见问题的完美示例。

最后更新于 1996 年 7 月 11 日

我的仅限软盘的 DOS 机器通过 PLIP 网络连接到 Linux 机器上的第二个打印机端口。第一个 Linux 打印机端口上有一台打印机,两者都是永久连接的,DOS 机器通过 telnet 连接到 Linux。这些是我为完成此操作所做的笔记。

当内核探测打印机端口时,它会抓取所有端口,除非您从探测中删除一个。否则 PLIP 将一无所获。一种方法是在需要时将驱动程序作为模块加载...

<gniibe@mri.co.jp> 写道

我一直建议使用 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 中发现需要进行一些更改以适应我的系统。查看第 205 行左右的 PLIP 定义,以确保您的端口和 IRQ 匹配,并记下它将是哪个驱动程序(plip0、plip1、plip2)。在我的情况下,端口 0x278 使用 IRQ 5(卡通过跳线连接),但 Space.c 将其定义为 IRQ 2。我在这里进行了更改,而不是打开盒子并更改跳线。另一种方法是稍后通过 ifconfig 指定 IRQ,但内核将在启动时使用错误的 PLIP IRQ,这可能会让您感到烦恼。这是一个简单(单个字符)的更改。

下一步,也是更困难的一步

在 .../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 reserved for plip1
 *
 * }; 
 * #define LP_NO 3 
 */
}; 
#define LP_NO 2 

请注意所做的更改 - 一个端口被注释掉了,所以现在只定义了 2 个端口。端口 0x3BC 可能不适用于 PLIP - 这些端口上的 IRQ 线通常是断开的,就像在旧的单色适配器 (MDA) 上发现的那样。

您在更改这些文件之前制作了备份,对吧?现在制作一个新的内核,其中包含打印机、网络、dummy 和 plip 支持。

配置系统。这是我的 /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

请注意,arp 用于 DOS 到 Linux 的连接,显然未在 Linux 到 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 

查看 /etc/inetd.conf 并查看 telnet 是否已启用。您可能需要阅读 tcpd 的 man 手册,以及 /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

请务必使用 NCSA 的 2.3.08 版本 telnet 和 Crynwr 的 PLIP 驱动程序的 11.1 版本。请查找并阅读 Crynwr 的 SUPPORT.DOC,它位于其他地方。

CONFIG.TEL 文件。它的大部分是默认值,为了节省一些空间,我尝试在这里将其缩减到您需要的信息(希望如此)。这台机器上的第二个端口设置为 0x278,IRQ 为 5。


myip=200.0.0.2 
netmask=255.255.255.0       # subnetting mask
hardware=packet             # network adapter board (packet driver interface)
interrupt=5                 # IRQ which adapter is set to
ioaddr=60                   # software interrupt vector driver is using
#
#[...lots unchanged...]
#
# at the end of the file, put this line:
name=console1 ; hostip=200.0.0.1 ; nameserver=1 ; gateway=1 

(console1 是 Linux 机器的名称,您可以使用任何您喜欢的名称)

我在两台机器之间制作了一条 12 英尺的零调制解调器电缆,并且(在最初发现它接线错误之后)没有任何问题。标准的 11 线零调制解调器打印机电缆也应该可以工作。Linux plip.c 源代码显示了接线。虽然我的电缆具有 17-17 连接,但我认为它没有任何用途,并且在现成的电缆上不存在。


@echo off
plip.com 0x60 5 0x278
telbin -s console1

这应该将您连接到 Linux 机器上的 /dev/ttyp。NCSA 的 telnet 提供了 8 个虚拟屏幕,并且还充当 ftp 服务器。PLIP 接口提供了相当的吞吐量,我的古董机获得了 6.5K/s 的文件传输速度。让我们希望您可以做得更好。 :-)


下一页 上一页 目录