在这个迷你教程的第一个版本发布之后,许多人写信询问关于 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> 发送的附录,他在其中深入描述了如何设置此连接以及如何解决许多问题。
关于本章的任何问题,请联系他,而不是我。
我假设您已经正确设置了 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 程序!它位于
根据说明设置它,然后您要做的就是从 Windows 计算机 telnet 进入,然后将显示设置为 Windows 计算机(例如 `DISPLAY=duncan:0.0`),并运行所需的程序。没有什么比在 Windows 下运行 xv 更酷的了!希望这一切对您有所帮助。
注意: 我从 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 的文件传输速度。让我们希望您可以做得更好。 :-)