Token-Ring mini-HOWTO 作者:Mike Eckhoff [1]mike.e@emissary.aus-etc.com 译者:陈俊志 [2]matterchen@sinamail.com v4.1, 7 January 1998 翻译日期 15 December 2000 _________________________________________________________________ 这分文件是用来帮助你安装核心修补程式同时试著指出该留心的事项.我建议你在 试著安装任何 Linux 用的 Token Ring 驱动程式之前最好能阅览过这分文件. _________________________________________________________________ 特别感谢 给 Mark Swanson, Peter De Schrijver, David Morris, Paul Norton 以及任何花时间在撰写及维护此驱动程式却未被我在这里列出的人. 并给 packrat 感谢他在 linux-tr listserv 的帮忙. 1. 版权和赘言 2. 硬体需求 3. 软体需求 4. 安装和设定 5. NetTools 安装 6. 已知问题 7. 问题与回答 8. 套件特有安装 * 8.1 Slackware 96 * 8.2 RedHat 4.0+ _________________________________________________________________ 特别感谢 给 Mark Swanson, Peter De Schrijver, David Morris, Paul Norton 以及任何花时间在撰写及维护此驱动程式却未被我在这里列出的人. 并给 packrat 感谢他在 linux-tr listserv 的帮忙. 1. 版权和赘言 我们并不保证这分文件会切合你的系统. 很多人已经使用过这分文件并已经成功 地在 linux 上安装 Token Ring 网路. 使用本文,责任自负!!! ... 我们对任何因为本文件造成的问题并不负责. 如果你有任何关於本文未提到的问题,请来信给我... [3]mike.e@emissary.aus-etc.com 你也可以来信加入 Linux 上 Token Ring 的邮件论坛 [4]majordomo@emissary.aus-etc.com 来信内容请包含: 标题 linux-tr 此文件的版权归 Michael Eckhoff (c) 1995-1998. 只要版权宣告保留在每份附 件中,你可以以任何形式随意复制本文. 商业复制也是被允许并半鼓励的;但是,请 先通知我让我确定你有最新的资讯. 2. 硬体需求 确定你有被此驱动程式支援的 Token Ring 网路卡. 目前只有 Tropic 晶片被支 援. 我个人已知可用的卡有: * 3Com 3C619B Token Link * 3Com 3C619C Token Link * HyperRing Classic 16/4 * IBM Turbo 16/4 ISA adapter** * IBM Token Ring Auto 16/4 ISA adapter * IBM Token Ring Auto 16/4 adapter /A * IBM Token Ring 16/4 adapter /A * IBM Token Ring adapter /A * IBM Token Ring adapter II (4 Megabit only) * IBM 16/4 ISA Token Ring card (16bit) * IBM 16/4 ISA Token Ring card (8bit) * Madge Blue (100% IBM compatable) 其他 100%; IBM 相容的 shared-ram 网路卡应该也可以顺利工作. 如果有其他可 能请通知我. 建议你暂且用 16KB Shared RAM. 可能有问题的网路卡: IBM Turbo 16/4 ISA adapter 事实上此网路卡在 Linux 下工作顺利. 但是,你必须以 Auto 16/4 相容 模式运作. 设定此卡最简单的方式是用随卡附的 LANAID disks 并打以下 指令: LANAIDC /FAST=AUTO16 你应该根据本文使用 LANAIDC or LANAID 来设定网路卡. Token-Ring Network 16/4 Adapter II 此网路卡无法工作. 别把此卡和 IBM Token Ring 网路卡 II (4mbit) 搞 混了. 这是 ISA 介面的 DMA/Busmaster 网路卡. 3Com TokenLink Velocity ISA 你或许可让此卡运作. 根据某些的回报;有些工作无误,但也有人有问题. PCI adapters 目前没有任何 IBM PCI 网路卡被支援. IBM Auto LanStreamer 16/4 Token-Ring PCI Adapter 目前未支援,但已经在进行支援中. 预计完成时是 Full Duplex. 3. 软体需求 留意事项 : 如果你的系统核心是 2.0 版以後的话,请跳到本文套件特有段落 (distribution specific section). 以下是针对 1.2版的核心而言. 这里假设你已经安装并可运作 Linux. 可由以下位置获得 Token Ring 的修补程式: [5]ftp://ftp.wayne.esu1.k12.ne.us/pub/Linux/Token-Ring/TokenRing.pa tch-1.2.0.gz 可从下列位置获得 Net-Tools 修补程式 [6]ftp://ftp.wayne.esu1.k12.ne.us/pub/Linux/Token-Ring/net-tools-1. 2.0.patched.tar.gz 替修补程式新增一个目录 (例如 /usr/src/patches) 并把修补程式放在这. mkdir /usr/src/patches central directory for patch storage mkdir /usr/src/patches/token place TokenRing patch here 4. 安装和设定 留意事项 : 这些说明是针对 1.2 版的 token ring 支援的核心修补程式. 如果你用 2.0 版以上的核心,你只要在重新编译目前的核心时,对支援 token ring 的选项选择 "yes" 或 "module" 即可. 1. 把 Token Ring 网路卡安装到电脑上并设定你想要使用的功能. 最好能先在 DOS 环境下测试此卡无误後再在 Linux 上使用. 如果它能在 DOS 下工作,那 它很有可能能用相同的设定值在 Linux 跑. 如果这是 Plug and Play (随插 即用) 网路卡,当你的设定可以让它工作时,记得把设定值记下来. 2. 替你原先的系统目录作个备份. 当你有需要将这修补程式从你的核心中完全 移除并回到你原先的系统时,这就显得很重要. cd /usr/src tar cvzhf linuxbak.tar.gz linux 3. 解压缩 Token Ring 修补程式. cd /usr/src/patches/token gzip -d TokenRing.patch-1.2.0.gz 4. 替你的核心增加 TokenRing 功能. cd /usr/src/linux patch -p1 < /usr/src/patches/token/TokenRing.patch-1.2.0 -或- patch -p1 < /TokenRing.patch-1.2.0 5. 从核心中搜寻因修补造成的 rejects (不合格) 并作适当的改变. find . -name \*.rej -print 6. 从核心中搜寻 orig 档案并删除它们. find . -name \*.orig -print | xargs rm 7. 编译核心. 留意事项NOTE: 如果你有 swap 分割区,请把他设成 active. cd /usr/src/linux make config (修补程式会将以下两个选项加入 config.in Token Ring support (CONFIG_TR) [y] (还有以下这行...) IBM Tropic chipset based adaptor support (CONFIG_IBMTR) [y] make dep make clean make zImage 8. 设定 LILO. 首先把你核心 vmlinuz 改名为 vmlinuz.old 再把新核心复制成 vmlinuz. 就我的系统而言,复制有以下几步骤 /usr/src/linux/arch/i386/boot/zImage to /vmlinuz 并编辑 /etc/lilo.conf 使核心能载入. 并在提示符号下打 "lilo". 9. 你现在可重新开机并使用 Token Ring 网路卡了. 相关设定的资讯请参考套 件特有段落 (distribution specific section). 5. NetTools 安装 NetTools packages(包装)中有很多网路设备联系的基本工具. 包含的程式有 arp, rarp, route, ifconfig and netstat. 因为这些程式预设并不了解 Token Ring, 你必须加入 NetTools 修补程式让这些程式能与 Token Ring 驱动程式工 作地更有效率. 留意事项 : 目前 1.2.x 版的核心用的 NetTools 是 1.2.0 版. 如果你用的是 2.0 版的核心,那麽很可能你的 NetTools 已是最新版了. 不论如何,你都可在 以下位置找到最新的原始档: [7]ftp://tapac.inka.de/pub/comp/Linux/networking/NetTools/ 1. (1)复制并解开 NetTools 原始码到目录 /usr/src cp net-tools-1.2.0.patched.tar.gz /usr/src tar -zxvof /usr/src/net-tools-1.2.0.tar.gz 2. (5) Make net-tools 档案. cd /usr/src/net make install 6. 已知问题 我个人使用此驱动程式几乎没有问题. 它已经完美运作了一段时间. 如果你在 1.2.x 版核心使用此驱动程式有任何问题,请更新至 2.0 版核心. 本文 写作时的最新核心版本是 2.0.33. Token Ring 驱动程式自 1.2 版以後有很大的 改善,而且大部分都没有回朔. 此外,你不必对 2.0 版核心作 token ring 的修补. 核心已经内建.但如果你想测 试新功能的话,也有给 2.1 版核心的修补程式. 7. 问题与回答 Q: Token Ring 驱动程式能编译成 module(模组) 吗? A: 可以, 它工作地相当好.在编译成 module 时有个额外的参数可用. 如果 你有 "spoof(欺骗)" 软体安装程式的需要,例如 redhat boot disks 把 token ring 网路卡看成 ethernet(乙太网路) 装置 (用 NFS/FTP 安装等 等),你可以用 "device" 这个参数强行指定设备不用 tr0 这个名称. 但 当你有多张网路卡时这个方法可能会出错. 大多时候就是这里有些不相容 性要克服.例: /sbin/insmod ibmtr device=eth0 Q: 我一直遇到错误讯息 "0011". 这是甚麽意思? A: 确定你的网路连接没有问题或是你的 token ring 网路卡有 loopback connector.这个错误讯息是指它无法开启 token ring. 这种情形;有 99.99% 是因为它没有被插入. C: 如果你有装音效卡且它的 IO 0x220,那很有可能 token ring 网路卡会和 0xa20 的 IO 有冲突. 如果你发现有被支援的网路卡无法工作而你又有音效卡,请试著把你的网 路卡设定成 0xa24 或是 更改/移除 音效卡. 除此之外... 这里有一些我收到关於 Token Ring 和 Linux 的 email. 为了不占空 间,我把其中一些 email 不重要的内容删去. Q: From: "Mr. Chuck Rickard" Subject: Re: Token Ring Kernel patch. 我已加入核心并重新编译.当开机时它说,"tr0: Can't assign device to adapter" and again for tr1".您有何看法呢? (以下为原文...) I d/l'd the patch, applied it, and re-compiled. When booting it said, "tr0: Can't assign device to adapter" and again for tr1. Any ideas? Thanks! Chuck Rickard (chuck@umbc8.umbc.edu) A: From: David Morris 如果只有这个讯息,它表示有关网路卡资讯的 PIO request (参考 segment = inb(PIOaddr) in ibmtr.c) 已超出 Token Ring 网路 卡所在的 IO address 的□围了. (以下为原文...) When this is the only message issued, it means that the PIO request for adapter information (see segment = inb(PIOaddr) in ibmtr.c) was so out of range that there is no TR card at that IO address. Q: From: Mike Glover Subject: Token ring problems. 感谢您的回答.我想我之前问的不对题,现在重新说明一遍.不论如何,以下剪辑是开机後从 /var/adm/messages 抄出来的. (以下原文未删...) Thanks for responding. I was starting to thing that I posted incorrectly, and I was about to post again. Anyway, the following clip is part of my /var/adm/messages file from when I boot up. May 2 10:03:14 linux kernel: tr0: Unable to assign adapter to device. May 2 10:03:14 linux kernel: tr1: Unable to assign adapter to device. 这段中, tr0: Unable to assign adapter device.著实困扰著我.这讯息简短至极使的我 不知如何处理.我只知道我没有指定任何 token ring 的资讯,但我不知如何下手. The section, tr0: Unable to assign adapter device. is what kinda confuses me. The documentation is slim at best so I didn't know what to do with the message. I know I didn't assign any token ring information, and I didn't know where to do it. The hardware(硬体): Its a PC clone (Dell OMNIPLEX 560 to be exact) The token ring card is a Olicom 16/4 Adapter. 我有 DOS 环境的 token ring 驱动程式而且它马上连上网路,所以不是这张网路卡的问题. 我想可能是我在 Linux 下设定时忽略了甚麽小东西. I have DOS token ring drivers and it snaps into the network, so there is nothing wrong with the card. I think, I am just missing something really small in the config on the Linux side. A: Olicom 16/4 网路卡并不使用 Tropic 晶片.试著去用上面 HOWTO 所列的网路卡. (以下为原文...) The Olicom 16/4 Adapter does not use the Tropic Chipset. Try using one of the cards that are listed at the top of the HOWTO. Q: From: Mike Glover Subject: Found an IBM card... 我发现一张 IBM token ring 网路卡并且更进一步,但似乎不怎麽好运.(在 /etc/rc.d/rc.inet1 中 ifconfig 项目我有把 eth0 改成 tr0) (原文...) I found myself an IBM token ring card and I got a little further, but still not luck. (I did change /etc/rc.d/rc.inet1 ifconfig entry from eth0 to tr0) 不管怎样,以下是 /var/adm/messages 的内容: Anyway, here is part of the /var/adm/messages file: May 2 16:23:07 linux kernel: IPX Portions Copyright (c) 1995 Caldera, Inc. May 2 16:23:07 linux kernel: tr0: PIOaddr: a20 seg/intr: b8 mmio base: 000dc000 intr: 0 May 2 16:23:07 linux kernel: tr0: Channel ID string not found for PIOaddr: a20 May 2 16:23:07 linux kernel: tr0: Expected for ISA: 5049434f3631313039393020 May 2 16:23:07 linux kernel: tr0: found: 000902003021111000182000 May 2 16:23:07 linux kernel: tr0: Expected for MCA: 4d4152533633583435313820 May 2 16:23:07 linux kernel: tr0: Unable to assign adapter to device. May 2 16:23:07 linux kernel: tr1: Unable to assign adapter to device. May 2 16:23:07 linux kernel: PPP: version 0.2.7 (4 channels) NEW_TTY_DRIVERS OPTIMIZE_FLAGS 这有说甚麽吗?我看不出来. Does this tell you anything. It tells me little. A: From: David Morris 这讯息代表 MMTO area 或是 TR 网路卡有记忆体冲突造成和网路 卡的不相容 (至少这讯号未知). This message means either a memory conflict with the MMIO area or a TR card which is not compatible with the driver (at least the signature isn't known). Q: From: Mike Glover Subject: Almost there... The following sample is what I'm getting on my messages file: May 3 14:50:24 linux kernel: tr0: now opening the board... May 3 14:50:24 linux kernel: tr0: board opened... May 3 15:11:47 linux kernel: tr0: Arrg. Transmitter busy for more than 50 msec . Donald resets adapter, but resetting May 3 15:11:47 linux kernel: the IBM tokenring adapter takes a long time. It might not even help when the May 3 15:11:47 linux kernel: ring is very busy, so we just wait a little long er and hope for the best. May 3 15:11:47 linux kernel: tr0: Arrg. Transmitter busy for more than 50 msec . Donald resets adapter, but resetting May 3 15:11:47 linux kernel: the IBM tokenring adapter takes a long time. It might not even help when the May 3 15:11:47 linux kernel: ring is very busy, so we just wait a little long er and hope for the best. May 3 15:11:47 linux kernel: tr0: Arrg. Transmitter busy for more than 50 msec . Donald resets adapter, but resetting Arrg 项目只有当我 telnet ,rlogin 或 ftp 到远端机器时才会产生.当有上述情形时,网路 会当掉一阵子. 我移除其他硬体装置(我的 SCSI 卡)让网路卡单独工作.一样有问题,这排除了硬体间 IRQ 冲突的情形. 以下是此卡的 DIP switches: The Arrg entry only comes when I telnet, rlogin or ftp to a remote machine. Once that happens, the connection hangs big time. I took out all the other hardware (which was 1 SCSI card) and tried running the card all by itself. Same thing, so it eliminates hardware IRQ's from getting into a yelling match. The following are the DIP switches on the card: 1 Up | 2 Down | 3 Down | According to the manual this sets the 4 Up | base address to CC000 Which is fine for 5 Up | my machine. 6 Down | 7 Down + This sets the IRQ to 2. Which is also fine 8 Down + 9 Up X Primary Lan adapter. Which it is. 10 Up = 16 KB shared RAM size. This OK? 11 Down = 12 Up # 16 Mbps Data rate. 我怀疑这是否真的是 dip switches,或是我设定网路时的 route table 有问题. I was wondering if it is in fact the dip switches, or the way I have configured my route table and other network info. ttfn, Mike A: 在 2.0 版核心中 Arrg 的问题值得留意.所有的修补程式都没有回 朔到 1.2 版,现在我在想这必要性了.如果你有过多 Arrg 讯息的 问题,你愿意升级到 2.0 版的核心吗? The Arrg problem is pretty much taken care of in the 2.0 kernels. All of the patches have not been ported back to 1.2, and I doubt that they will be. If you get excessive Arrg messages, do yourself a favour and move to Linux 2.0. 8. 套件特有安装 8.1 Slackware 96 如果你的系统未执行过 "netconfig" ,请现在执行. 设定值如同系统是处於 Ethernet(乙太网路) 中. 编辑 /etc/rc.d/rc.inet1 指向 tr0 device(设备)而不是eth0 device(设备) 你应该会看到有一行像这样 /sbin/ifconfig eth0 ${IPADDR} broadcast ${BROADCAST} netmask ${NETMASK} 把这行改成为 /sbin/ifconfig tr0 ${IPADDR} broadcast ${BROADCAST} netmask ${NETMASK} 8.2 RedHat 4.0+ 在 RedHat Linux 中有一个很棒的 Xwindows 控制台可以设定 modules(模组) 和 devices(设备). 如果你在安装 RedHat 时就已经装上了 token ring 网路卡,那 麽你应该已经有了 token ring 的模组支援了. 试试以下指令: modprobe ibmtr 看看你得到甚麽. 如果你的网路卡被支援,那麽很可能你已经能使用它了. 设定介面最好用的是 control-panel(控制台). 首先你会想用 kernel module control(模组核心控制) 并指示它载入 token ring 这个新的网路设备. 它应该 会在开机时自动载入 ibmtr 这个驱动程式. 然後你会想跳过网路组态并增加新的 设备,tr,并给它一个 ip address,等等. 你可以重新开机并在 RedHat Linux 4.0+ 上使用 Token Ring 网路卡了. 请留意关於 RedHat 的说明部份是靠脑中的印象写的. 因为我有一段时间没有修 改过我的 RedHat 系统了,现在这是凭记忆写的. 不论如何,它们可以达成你的目 的. References 1. mailto:mike.e@emissary.aus-etc.com 2. mailto:matterchen@sinamail.com 3. mailto:mike.e@emissary.aus-etc.com 4. mailto:majordomo@emissary.aus-etc.com 5. ftp://ftp.wayne.esu1.k12.ne.us/pub/Linux/Token-Ring/TokenRing.patch-1.2.0.gz 6. ftp://ftp.wayne.esu1.k12.ne.us/pub/Linux/Token-Ring/net-tools-1.2.0.patched.tar.gz 7. ftp://tapac.inka.de/pub/comp/Linux/networking/NetTools/