3. 我应该使用哪个驱动程序?

Linux 上令牌环驱动程序的领域在过去几年中扩展了很多。不仅仅是 ibmtr 了!因此,作为结果,此地图将告诉您,对于给定的网卡,您应该尝试哪个驱动程序以及建议的最低内核版本(如果有)。

3COM

IBM

Olicom

对于这些 Olicom 网卡,请访问他们的网站 http://www.olicom.com 获取驱动程序。您将需要 2.2.x 系列内核。

Madge

对于这些 Madge 网卡,您需要访问他们的网站 http://www.madge.com 获取驱动程序并获取 2.31 Madge 驱动程序。您将至少需要 2.0.36 或 2.2.5。

2.41 驱动程序

根据 Madge README 文件,2.41 驱动程序已经在单处理器和 SMP 内核版本上进行了测试:2.0.36、2.2.5-15、2.2.10、2.2.12-20、2.4.2-2。

据报告,其他 Madge 网卡基于德州仪器 tms380 芯片组,因此从 2.3.26 内核开始,您可以尝试 tms380tr 驱动程序。

SysKonnect

在 2.2.x 系列内核中,尝试 sktr。在 2.3.x 及更高系列中,尝试 tms380tr 驱动程序。

SMC

驱动程序包含在 2.3.38+ 内核中。

Intel

对这些网卡的支持目前正在开发中。请查看 http://www.linuxtr.net 以了解状态。

3.1. 驱动程序/适配器特定信息

在这里,我们将描述每个可用驱动程序的不同选项和配置。

3.1.1. 内核模块别名和参数

大多数驱动程序接受模块参数形式的参数(PCMCIA 的特殊情况除外,这将在下面完整描述)。

内核模块在文件 /etc/conf.modules 或 /etc/modules.conf 中指定,具体取决于您拥有的 modutils 版本。

您可以直接修改此文件,或使用特定发行版内置的工具。这些特定于发行版的工具超出了本文档的范围,但您始终可以直接手动修改 modules.conf 文件以启动并运行,然后弄清楚您的发行版如何处理这些文件。例如,Debian 在 /etc/modutils 目录中有多个文件,并从中构建 modules.conf 文件。

内核模块别名用于将特定名称与内核模块关联。

对于令牌环,这用于为每个令牌环接口分配驱动程序,以便系统脚本知道在您启动接口时要插入哪个驱动程序。

别名行的格式为
		alias module_name interface
		
通常,您需要的令牌环网络行只有类似这样的
alias olympic tr0
这会将 olympic 驱动程序绑定到 tr0 接口,因此当您键入
ifconfig tr0 up
如果 tr0 接口尚未加载,系统将插入 olympic 驱动程序,该驱动程序反过来将找到网卡并创建 tr0 网络设备。

内核模块参数按以下格式指定
		options module_name parameter_1=XXX [parameter2=YYY ...]
		
其中 modules_name 是驱动程序的名称,即 olympic、ibmtr、3c359,而 `parameters` 是每个驱动程序可用的参数。请参阅以下驱动程序特定部分或查看驱动程序源代码。

例如,如果您想将 Olympic 驱动程序设置为 16 mbps 运行,默认缓冲区大小为 8192 字节,您将使用以下行
		options olympic ringspeed=16 pkt_buf_sz=8192
		

3.1.2. IBMTR 驱动程序

基于 IBM Tropic 芯片组的令牌环适配器

这是内核中原始的令牌环驱动程序,几乎支持所有使用 IBM Tropic 芯片组的适配器,包括 IBM ISA、ISA/PnP 以及其他制造商的大量适配器。

实际上,IBM Turbo 16/4 ISA/PnP 适配器可以与 ibmtr 驱动程序配合良好。在较旧的驱动程序中,您必须以自动 16/4 兼容模式运行网卡。设置此模式的最简单方法是使用随网卡发送的 LANAID 磁盘并运行命令
LANAIDC /FAST=AUTO16
然后,您应该根据文档使用 LANAIDC 或 LANAID 配置网卡。Turbo 适配器的最新驱动程序将识别这些适配器并直接开箱即用进行配置。您可能必须关闭内核中的 isapnp 支持或修改您的 isapnp.conf 文件以启用适配器。

选项

浏览 ibmtr 源代码可能会让您相信适配器可以接受三个参数,但是,实际上驱动程序不接受任何参数。这些参数是早期驱动程序的遗留物,仅旨在用于强制驱动程序仅在查找适配器时测试受限地址。此处包含有关这些选项的信息仅为了完整性。

  • io:指定驱动程序将检查是否存在任何网卡的 I/O 端口。所有基于 Tropic 的 ISA 适配器或模拟 ISA 网卡的适配器都将在端口 0xA20 或 0xA24 上找到。如果您知道您的适配器配置为 0xA24 和/或在端口 0xA20 上探测会导致您的机器出现问题,请使用 io 强制驱动程序仅检查特定端口。

    Turbo 适配器(包括名称容易混淆的最新自动 16/4 网卡)的 io 区域可以位于 PnP 规范允许的任何位置。此位置是使用新的 turbo 检测代码找到的,不需要任何参数。

  • irq & mem:这两个选项用于告诉驱动程序要使用的确切 irq 以及可以找到适配器的共享 ram 的位置。现在,驱动程序中这两个选项完全是多余的,因为中断线和共享 ram 的位置是通过查询适配器直接获得的。

3.1.3. Olympic 驱动程序

基于 IBM PCI Pit/Pit-Phy/Olympic 芯片组的令牌环网卡

选项

该驱动程序接受四个选项:ringspeed、pkt_buf_sz、message_level 和 network_monitor。

这些选项可以为找到的每个网卡指定不同的值,即,如果您的机器中有两个 olympic 适配器,并且想要为第一个适配器分配 16mbps 的环速,但为第二个适配器分配 4mbps 的环速,则您的选项行将读取
		options olympic ringspeed=16,4
		
但是,应该注意的是,驱动程序按照发现的顺序为每个适配器分配值,这通常是它们在 pci 总线上存在的顺序。可能需要进行一些试验和错误才能确定哪个适配器正在接收哪个配置选项。

  • ringspeed:具有三个设置之一:0(默认)、4 或 16。0 将使网卡自动检测环速并以适当的速度加入,这将是大多数人的默认选项。4 或 16 允许您显式强制网卡以特定速度运行。如果您尝试以错误的速度插入网卡,网卡将失败。(虽然某些集线器允许这样做,因此要 *非常* 小心)。显式设置环速的主要目的是当网卡首次在环上时。在自动检测模式下,如果网卡无法检测到环上的任何活动监视器,它将不会打开,因此您必须以适当的速度重新初始化网卡。不幸的是,目前唯一的方法是 rmmod 和 insmod,如果它是编译到内核中的,这有点困难。该驱动程序支持 100 mbps 全双工运行。当连接到适当的交换机时,适配器会自动检测到这一点。

  • pkt_buf_sz:这是初始接收缓冲区分配大小。如果未输入任何值,则默认为 4096。您可以通过将此值设置为大于网络数据包大小的值来提高驱动程序的性能,尽管驱动程序现在也根据 MTU 设置调整缓冲区大小。

  • message_level:控制驱动程序创建的消息级别。默认为 0,仅显示启动和关键消息。目前,任何非零值都将显示所有软消息。注意:这不会打开调试消息,必须通过修改源代码来完成。

  • network_monitor:任何非零值都将提供准网络监视模式。驱动程序将接收所有意外的 MAC 帧(信标等),并打印源地址和目标地址。此外,/proc/net 中将添加一个名为 olympic_tr%d 的条目,其中 tr%d 是注册的设备名称,即 tr0、tr1 等。这显示有关环和适配器配置的低级信息。此功能旨在帮助网络管理员诊断网络/环问题。(这以前是 OLYMPIC_NETWORK_MONITOR,但现在已更改为允许为每个适配器配置不同的值,并减轻重新编译 olympic 以打开该选项的必要性)。

多网卡。 该驱动程序将检测多个网卡,并将与共享中断一起工作,每个网卡都分配下一个令牌环设备,即 tr0、tr1、tr2。该驱动程序也应该与其他驱动程序一起愉快地驻留在系统中。它已在运行 ibmtr.c 的情况下进行了测试。我曾在同一系统中安装过多个网卡,所有网卡共享相同的中断并且可以完美地协同工作。对于 Cardbus Olympic 适配器也是如此,我非常愉快地在同一台笔记本电脑中同时运行了一个 Cardbus 适配器和一个常规的 16 位 PCMCIA 令牌环适配器。

可变 MTU 大小: 该驱动程序可以处理高达 4500 或 18000 的 MTU 大小,具体取决于环速。驱动程序还会更改接收缓冲区的大小作为 mtu 调整大小的一部分,因此如果您设置 mtu = 18000,您将需要能够分配 16 * (sk_buff,缓冲区大小为 18000),称之为每个环位置 18500 字节 = 296,000 字节的内存空间,当然还有 tx sk_buff 所需的任何空间。请记住这是每个网卡的,因此如果您正在构建路由器、网关等,您可能会很快开始使用大量内存。

3.1.4. Lanstreamer 驱动程序

基于 IBM PCI/MCA Lanstreamer 芯片组的令牌环网卡

选项

该驱动程序接受三个选项:ringspeed、pkt_buf_sz、message_level 和 network_monitor。

这些选项可以为找到的每个网卡指定不同的值,即,如果您的机器中有两个 olympic 适配器,并且想要为第一个适配器分配 16mbps 的环速,但为第二个适配器分配 4mbps 的环速,则您的选项行将读取
		options lanstreamer ringspeed=16,4
		
但是,应该注意的是,驱动程序按照发现的顺序为每个适配器分配值,这通常是它们在 pci/mca 总线上存在的顺序。可能需要进行一些试验和错误才能确定哪个适配器正在接收哪个配置选项。

  • ringspeed:具有三个设置之一:0(默认)、4 或 16。0 将使网卡自动检测环速并以适当的速度加入,这将是大多数人的默认选项。4 或 16 允许您显式强制网卡以特定速度运行。如果您尝试以错误的速度插入网卡,网卡将失败。(虽然某些集线器允许这样做,因此要 *非常* 小心)。显式设置环速的主要目的是当网卡首次在环上时。在自动检测模式下,如果网卡无法检测到环上的任何活动监视器,它将不会打开,因此您必须以适当的速度重新初始化网卡。不幸的是,目前唯一的方法是 rmmod 和 insmod,如果它是编译到内核中的,这有点困难。交换机。

  • pkt_buf_sz:这是初始接收缓冲区分配大小。如果未输入任何值,则默认为 4096。您可以通过将此值设置为大于网络数据包大小的值来提高驱动程序的性能,尽管驱动程序现在也根据 MTU 设置调整缓冲区大小。

  • message_level:控制驱动程序创建的消息级别。默认为 0,仅显示启动和关键消息。目前,任何非零值都将显示所有软消息。注意:这不会打开调试消息,必须通过修改源代码来完成。

网络监视器。 Lanstreamer 驱动程序确实支持类似于 olympic 驱动程序的网络监视器模式,但这是一个编译时选项,而不是模块参数。要启用网络监视器模式,请编辑 lanstreamer.c 并更改行
#define STREAMER_NETWORK_MONITOR 0
改为读取
#define STREAMER_NETWORK_MONITOR 1
驱动程序将接收所有意外的 MAC 帧(信标等),并打印源地址和目标地址。此外,/proc/net 中将添加一个名为 streamer_tr 的条目。这显示有关环和适配器配置的低级信息。此功能旨在帮助网络管理员诊断网络/环问题。

多网卡。 该驱动程序将检测多个网卡,并将与共享中断一起工作,每个网卡都分配下一个令牌环设备,即 tr0、tr1、tr2。该驱动程序也应该与其他驱动程序一起愉快地驻留在系统中。

可变 MTU 大小: 该驱动程序可以处理高达 4500 或 18000 的 MTU 大小,具体取决于环速。驱动程序还会更改接收缓冲区的大小作为 mtu 调整大小的一部分,因此如果您设置 mtu = 18000,您将需要能够分配 16 * (sk_buff,缓冲区大小为 18000),称之为每个环位置 18500 字节 = 296,000 字节的内存空间,当然还有 tx sk_buff 所需的任何空间。请记住这是每个网卡的,因此如果您正在构建路由器、网关等,您可能会很快开始使用大量内存。

3.1.5. 3Com 3C359 驱动程序

3COM PCI TOKEN LINK VELOCITY XL 令牌环网卡

目前,标准内核源代码中不包含 3c359 驱动程序。要使用该驱动程序,您必须从 Linux 令牌环项目 网站下载驱动程序并修补您的内核。

下载文件后,您可以使用以下命令修补您的内核
		cd /usr/src/linux
		patch -p1 < 3c359-2.4.16.patch
		
或者,如果补丁文件已压缩
		zcat 3c359-2.4.16.patch | patch -p1
		
然后只需运行 make config|menuconfig|xconfig 并从内核配置的令牌环驱动程序部分选择 3c359 驱动程序,然后像往常一样编译和安装内核和/或模块。

选项

该驱动程序接受三个选项:ringspeed、pkt_buf_sz、message_level。

这些选项可以为找到的每个网卡指定不同的值,即,如果您的机器中有两个 olympic 适配器,并且想要为第一个适配器分配 16mbps 的环速,但为第二个适配器分配 4mbps 的环速,则您的选项行将读取
		options 3c359 ringspeed=16,4
		
但是,应该注意的是,驱动程序按照发现的顺序为每个适配器分配值,这通常是它们在 pci 总线上存在的顺序。可能需要进行一些试验和错误才能确定哪个适配器正在接收哪个配置选项。

  • ringspeed:具有三个设置之一:0(默认)、4 或 16。0 将使网卡自动检测环速并以适当的速度加入,这将是大多数人的默认选项。4 或 16 允许您显式强制网卡以特定速度运行。如果您尝试以错误的速度插入网卡,网卡将失败。(虽然某些集线器允许这样做,因此要 *非常* 小心)。显式设置环速的主要目的是当网卡首次在环上时。在自动检测模式下,如果网卡无法检测到环上的任何活动监视器,它将以与其上次打开相同的速度打开。如果此速度与您希望环运行的速度不匹配,则可能会很危险。

  • pkt_buf_sz:这是初始接收缓冲区分配大小。如果未输入任何值,则默认为 4096。您可以通过将此值设置为大于网络数据包大小的值来提高驱动程序的性能,尽管驱动程序现在也根据 MTU 设置调整缓冲区大小。

  • message_level:控制驱动程序创建的消息级别。默认为 0,仅显示启动和关键消息。目前,任何非零值都将显示所有软消息。注意:这不会打开调试消息,必须通过修改源代码来完成。

多网卡。 该驱动程序将检测多个网卡,并将与共享中断一起工作,每个网卡都分配下一个令牌环设备,即 tr0、tr1、tr2。该驱动程序也应该与其他驱动程序一起愉快地驻留在系统中。它已在运行 ibmtr.c 的情况下进行了测试。我曾在同一系统中安装过多个网卡,所有网卡共享相同的中断并且可以完美地协同工作。

可变 MTU 大小: 该驱动程序可以处理高达 4500 或 18000 的 MTU 大小,具体取决于环速。驱动程序还会更改接收缓冲区的大小作为 mtu 调整大小的一部分,因此如果您设置 mtu = 18000,您将需要能够分配 16 * (sk_buff,缓冲区大小为 18000),称之为每个环位置 18500 字节 = 296,000 字节的内存空间,当然还有 tx sk_buff 所需的任何空间。请记住这是每个网卡的,因此如果您正在构建路由器、网关等,您可能会很快开始使用大量内存。

3.1.6. SysKonnect 适配器

SysKonnect 令牌环 ISA/PCI 适配器的信息由 Jay Schulist 提供

Linux SysKonnect 令牌环驱动程序适用于 SysKonnect TR4/16(+) ISA、SysKonnect TR4/16(+) PCI、SysKonnect TR4/16 PCI 以及较旧版本的 SK NET TR4/16 ISA 网卡。

有关此驱动程序的最新信息,请访问 Linux-SNA WWW 站点。请将您的浏览器指向:http://www.linux-sna.org

需要注意的重要信息

  • 1. 适配器打开速度可能较慢(约 20 秒)和关闭速度较慢(约 5 秒),请耐心等待。

  • 2. 当自动探测适配器时,此驱动程序工作良好。当驱动程序为您完成所有工作时,为什么还要考虑 modprobe 的那些糟糕的 io/int/dma 设置呢!

此驱动程序使用起来相当简单。在内核配置中选择 Y 以支持令牌环适配器。将出现 SysKonnect 令牌环适配器的选项。此驱动程序支持所有 SysKonnect ISA 和 PCI 适配器。选择此选项。我个人建议将驱动程序编译为模块 (M),但如果您想静态编译它,请回答 Y。

此驱动程序支持多个适配器,而无需加载驱动程序的多个副本。您应该能够加载最多 7 个适配器,而无需任何内核修改,如果您需要更多,请联系此驱动程序的维护者。

通过 lilo/loadlin 或作为模块加载驱动程序。当作为模块时,以下命令对于大多数情况就足够了
		# modprobe sktr
		
这将产生类似于以下的输出:(输出特定于用户)
		sktr.c: v1.01 08/29/97 by Christoph Goos
		tr0: SK NET TR 4/16 PCI found at 0x6100, using IRQ 17.
		tr1: SK NET TR 4/16 PCI found at 0x6200, using IRQ 16.
		tr2: SK NET TR 4/16 ISA found at 0xa20, using IRQ 10 and DMA 5.
		
现在只需通过 ifconfig 设置设备并设置您可能拥有的路由。在此之后,您就可以开始发送一些令牌了。

勘误表。 对于任何想知道在哪里购买 SysKonnect 适配器的人,请浏览 http://www.syskonnect.com

以下是 SK NET TR 4/16 ISA 适配器的设置
                    ***************************
                    ***   C O N T E N T S   ***
                    ***************************

                1) Location of DIP-Switch W1
                2) Default settings
                3) DIP-Switch W1 description


		==============================================================
		CHAPTER 1     LOCATION OF DIP-SWITCH
		==============================================================

		+------------------------------------------------------------------+
		|+------+                         +-----+            +---+         |
		||------|                      W1 +-----+     +----+ |   |         |
		||------|                                     |    | |   |      +---+
		||------|              +-----------+          +----+ |   |      |  ||
		||------|              |           |          +---+  +---+      +---+
		||------|              | TMS380C26 |          |   |                |
		||------|              |           |          +---+                |-+
		|+------+              |           |                               | |
		|                      +-----------+                               | |
		|                                                                  | |
		|                                                                  |-+
		|                                                                  |
		|                                                                  |
		|                                                                  |
		|                                                                  |
		+------------+----------------+--+-----------------------+---------+
		             +----------------+  +-----------------------+
		
	
		==============================================================
		CHAPTER 2     DEFAULT SETTINGS
		==============================================================

          W1    1  2  3  4  5  6  7  8
        +------------------------------+
        | ON    X                      |
        | OFF      X  X  X  X  X  X  X |
        +------------------------------+

        W1.1 = ON               Adapter drives address lines SA17..19
        W1.2 - 1.5 = OFF        BootROM disabled
        W1.6 - 1.8 = OFF        I/O address 0A20h
		
		==============================================================
		CHAPTER 3     DIP SWITCH W1 DESCRIPTION
		==============================================================

      +---+---+---+---+---+---+---+---+  ON
      | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
      +---+---+---+---+---+---+---+---+  OFF
      |AD | BootROM Addr. |  I/O      |
      +-+-+-------+-------+-----+-----+
        |         |             |
        |         |             +------ 6     7     8
        |         |                     ON    ON    ON       1900h
        |         |                     ON    ON    OFF      0900h
        |         |                     ON    OFF   ON       1980h
        |         |                     ON    OFF   OFF      0980h
        |         |                     OFF   ON    ON       1b20h
        |         |                     OFF   ON    OFF      0b20h
        |         |                     OFF   OFF   ON       1a20h
        |         |                     OFF   OFF   OFF      0a20h    (+)
        |         |
        |         |
        |         +-------- 2     3     4     5
        |                   OFF   x     x     x       disabled  (+)
        |                   ON    ON    ON    ON      C0000
        |                   ON    ON    ON    OFF     C4000
        |                   ON    ON    OFF   ON      C8000
        |                   ON    ON    OFF   OFF     CC000
        |                   ON    OFF   ON    ON      D0000
        |                   ON    OFF   ON    OFF     D4000
        |                   ON    OFF   OFF   ON      D8000
        |                   ON    OFF   OFF   OFF     DC000
        |
        |
        +----- 1
               OFF    adapter does NOT drive SA<17..19>
               ON     adapter drives SA<17..19>  (+)


        (+) means default setting

		

3.1.7. PCMCIA

3.1.7.1. 简介

PCMCIA 令牌环适配器可在所有版本的 Linux 内核上工作。不幸的是,通往地狱的路通常是用融化的雪球铺成的 ;-),并且可以使用无数种不同的组合来使适配器工作,所有组合都具有不同的选项、不同的要求和不同的问题。希望通过本文档,您将能够弄清楚需要哪些成分组合以及如何在您的机器上启动并运行它们。

3.1.7.2. 历史

在 2.0.x 和 2.2.x 内核时代,pcmcia 仅作为外部软件包提供,由 David Hinds 创建和维护。当唯一可用的稳定内核是 2.0.36 时,生活非常轻松,只需几个简单的配置选项,适配器就可以工作。

随着 2.2.x 的出现,ibmtr.c 完全更新,这破坏了 pcmcia 驱动程序 (ibmtr_cs.c)。pcmcia 驱动程序已更新以与新的 ibmtr 驱动程序和 2.2.x 内核一起工作。这是第一个复杂级别开始的地方。由于 pcmcia_cs 软件包是独立的,它必须支持各种不同的内核,因此 pcmcia_cs 驱动程序必须与所有内核版本一起工作,而不是能够在不同内核版本的内核源代码中拥有不同版本的驱动程序。这不仅在驱动程序本身中造成了一些丑陋,而且还造成了关于哪个版本的 pcmcia_cs 适用于最新内核的困惑。

此时,一切都运行良好,然后出现了 2.3.x 开发系列的内核。2.3.x 内核为其自身 pcmcia 提供了支持,并且 ibmtr_cs 驱动程序包含在内核本身中。因此,现在有两种获取 pcmcia 令牌环支持的方法,即使用内核驱动程序本身或使用 pcmcia_cs 软件包,问题不大,因为只有开发人员在使用 2.3.x 内核。当然,当 2.4 内核发布并且更多用户开始使用该内核时,这一切都发生了变化。

在 2000 年末至 2001 年初期间,在标准 ibmtr 驱动程序和 pcmcia 驱动程序上都完成了重要的开发工作。原始 pcmcia 更新包括使用高内存和热插拔支持。这些初始更新仅适用于 2.2.x 内核,因此仅包含在 pcmcia_cs 软件包中。后来的开发看到了 2.4.x 内核的 ibmtr 和 ibmtr_cs 的巨大改进。因此,在撰写本文时,即 02 年 1 月 23 日,考虑到不同的发行版发布了不同版本的 2.4 内核,因此有许多不同的内核版本和驱动程序组合在流传。

3.1.7.3. 2.0.x 内核

如果您正在使用 2.0.x 内核之一,那么我向您的毅力致敬,实际上您现在应该已经配置并运行了 pcmcia 驱动程序 ;-)

您将必须使用 pcmcia_cs 软件包并使用 /etc/pcmcia/config.opts,请参阅下面有关 config.opts 乐趣的部分。过去 2/3 年中发布的几乎任何版本的 pcmcia_cs 都可以正常工作。

3.1.7.4. 2.2.0 - 2.2.6 内核

这些是 pcmcia 驱动程序根本无法工作的一系列内核。升级内核到更高版本可能是最简单的方法。

如果您确实需要启动并运行它,那么需要最新的 pcmcia_cs,并且您应该能够从 2.2.7 - 2.2.16 内核中获取 ibmtr.c 和 ibmtr.h 并使用它们(注意不高于 2.2.16!!)

您必须进行 config.opts 修改,请参阅有关设置所有这些的部分。

3.1.7.5. 2.2.7 - 2.2.16 内核

这些内核得到了很好的支持,只需使用 pcmcia_cs 软件包并使用 config.opts 文件即可。

3.1.7.6. 2.2.17 - 2.2.19 内核

为这些内核更新了 pcmcia 驱动程序,以消除对 config.opts 修改的需要。您至少需要 pcmcia_cs 3.1.24,尽管最好还是获取最新版本。

只需编译 pcmcia_cs 即可完成。无需使用 config.opts,实际上,如果您一直在运行以前的版本,该版本在 config.opts 中确实有 ibmtr_cs 行,那么删除或注释掉该行将是一个 *非常好的* 主意。新驱动程序为共享 ram 分配了整个 64k,并且需要对齐在 64k 边界上,如果您以前的 srambase 值不在 64k 边界上,驱动程序将崩溃并且内核将崩溃。

3.1.7.7. 2.4.0 - 2.4.4 (非 Redhat) 内核

使用内置内核 pcmcia 驱动程序并使用 config.opts。

如果您想使用最新最好的驱动程序,并具有高内存和热插拔支持,您可以下载补丁并修补您的内核。然后可以删除 config.opts 中的行,一切都将正常工作。

3.1.7.8. 2.4.4-ac11 > 内核

这些内核包括新驱动程序,因此只需编译驱动程序,确保 config.opts 中没有配置行即可。

3.1.7.9. 2.4.2 修改版,即 Redhat 7.1

当 RedHat 发布带有 2.4.2 内核的 7.1 时,他们修改了内核(像他们通常所做的那样),并包含了来自 网站 的更新后的 ibmtr/ibmtr_cs 驱动程序。如果您幸运的话,这可能会直接开箱即用(同样不需要 config.opts 中的 ibmtr_cs 行),如果不是,那么升级到最新的 2.4.x 内核并使用那里的驱动程序可能是最简单的。(原因是,虽然我会找出如何解决发行版引起的问题,但我不会为它们提供支持,我会回答问题并提供帮助,因为我是一个好人,但我不会提供针对发行版的驱动程序更新。官方支持适用于官方内核镜像中提供的内核中的驱动程序。

3.1.7.10. 2.4.x 内核和 pcmcia_cs

没有必要在 2.4 内核中使用 pcmcia_cs 来启动并运行令牌环适配器,但我理解你们中的一些人可能需要使用 pcmcia_cs 来使内核中未正确支持的其他适配器工作。

pcmcia_cs 软件包将无法与最新的驱动程序一起工作,它可能与 2.4.0-2.4.4 驱动程序一起工作。我目前正在考虑是否为 2.4 内核提供 pcmcia_cs 支持,您可以直接问我或时不时查看 网站,看看是否有任何变化。

3.1.7.11. Config.opts 修改(或如何让自己发疯)

这是使 pcmcia 适配器与需要在 /etc/pcmcia/config.opts 中使用 ibmtr_cs 行的驱动程序一起工作的最困难部分。没有任何一组值保证在不同的机器上工作相同。这真的是一个反复试验的过程,但预先警告并掌握一点知识可以使这个过程容易得多。

“嘿,我不在乎,只要给我一些可以工作的东西”

好的,试试这个,它在大多数情况下都有效,如果它不起作用,你无论如何都必须阅读本节的其余部分。只需在 /etc/pcmcia/config.opts 中插入以下行
modules "ibmtr_cs" opts "mmiobase=0xd2000 srambase=0xd4000"
重启 pcmcia 并插入适配器。

“好吧,这不起作用,带来痛苦吧”

pcmcia 驱动程序需要分配两个内存区域才能正常运行。所有分配的内存区域都必须与被对齐区域的大小对齐在同一边界上,即,大小为 8K 的块必须位于 8K 边界上(0xc8000、0xca000、0xcc000、0xce000、0xd0000、0xd2000),对于 16K 块,必须位于 16K 边界上(0xc8000、0xcc000、0xd0000、0xd4000)。所有内存区域都必须在 ISA 地址空间 (0xC0000-0xDFFFF) 内分配。理论上,您应该能够在​​此区域内的任何位置使用,尽管经验表明,大多数机器都在 0xc0000-0xc9fff 区域中隐藏了一些东西。甚至已知有些机器在没有告诉任何人的情况下使用了 0xd0000-0xd1fff 区域(一些 Thinkpad!!)。因此,您真的希望坚持使用 0xcc000 - 0xdffff 范围内的内存分配。

当然,两个内存区域也不能重叠;)

第一个内存区域是用于内存映射输入/输出 (MMIO) 的 8K 区域,并且必须放置在 8K 边界上。此内存区域通常不是任何问题的原因,并且可以放置在几乎任何地方,推荐值为:0xcc000、0xd0000、0xd2000、0xd4000。

第二个内存区域可以调整大小以满足您的需求,这是存储和接收传入和传出数据包的内存区域。驱动程序默认为 16K 内存大小,并且必须放置在 16K 边界上。良好的区域是:0xd0000、0xd4000、0xd8000。

一旦您决定要尝试哪些内存区域,您需要将正确的行添加到 /etc/pcmcia/config.opts 文件中。此文件中的配置行采用以下格式
			module "module_name" opts "option1=opt1_value option2=opt2_value ...."
			
在我们的例子中,module_name 是 ibmtr_cs。可以使用 ibmtr_cs 驱动程序设置三个选项:mmiobase、srambase 和 sramsize。

如果未设置它们,它们将恢复为驱动程序中的默认值,在 10 种情况下有 9 种情况对您不起作用。除非您正在从适配器中寻求最后一点性能,否则 sramsize 很少需要设置。

因此,在决定了您的值之后,假设 MMIO 为 0xd2000,共享内存为 0xd4000,您将构建如下所示的 config.opts 行
			module "ibmtr_cs" opts "mmiobase=0xd2000 srambase=0xd4000" 
			
必须重新启动 pcmcia_cs 软件包,这些新选项才能生效,通常使用
/etc/init.d/pcmcia restart or /etc/rc.d/init.d/pcmcia/restart
具体取决于您的发行版遵循哪个运行级别组织。

然后只需插入它,看看它是否有效。如果不起作用,您只需返回并更改 mmiobase 和 srambase 的值,直到找到可以工作的组合。或者,您可以升级到支持高内存分配的内核/pcmcia_cs 版本,这样就不需要所有这些 config.opts 废话,您可以愉快地插入适配器并观看它运行。

3.1.8. Madge 提供的驱动程序

Madge 在 1999 年发布了 2.31 版本的驱动程序,在 2001 年末发布了 2.41 版本的驱动程序。这两个驱动程序都可以从 Madge 网站下载,2.41 版本的驱动程序也可以从 Linux 令牌环项目 网站下载。

下载驱动程序后,请参阅驱动程序随附的 README 文件,以获取有关如何构建和安装驱动程序的说明。人们发现驱动程序的唯一其他问题是由于 newt 库版本不正确而导致工具链构建失败。如果您收到与 newt.h 相关的编译器错误,请更改 madge-source/include/mtok/config.h 文件,以便 #define NEWNEWT 行读取
		#define NEWNEWT 1
		
这将确保这些工具在构建过程中使用正确的 newt 库。

Linux 令牌环项目网站 上提供了 2.31 驱动程序的补丁,以使其能够在 2.4.x 内核上工作。

3.1.9. Olicom 驱动程序

早在 Olicom 还在营业时,他们确实生产了一个实际可用的 Linux 驱动程序。现在尝试找到该驱动程序有点困难。如果 ftp.olicom.com 站点仍然启动并运行,则可以在那里找到该驱动程序。

该驱动程序是 GPL 源代码和专有二进制低级代码的组合。该驱动程序仅适用于 2.0.36 和 2.2.x 内核。应该可以将此驱动程序移植到 2.4.x 内核...