Token Ring

Аппаратные требования

Удостоверьтесь в том, что Ваша Token-Ring-карта поддерживается данным драйвером. В настоящее время драйвер поддерживает только карты на основе чипсета Tropiс.

Карты, работающие с данным драйвером:

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 compatible)

Остальные IBM-совместимые адаптеры с разделяемой памятью также должны прекрасно работать. Пожалуйста, сообщите мне, если Вы найдете другие работающие карты. Рекомендую в настоящее время использовать адаптеры с 16КБ разделяемой памяти.

Карты, использование которых с данным драйвером может вызвать проблемы:

IBM Turbo 16/4 ISA adapter

На самом деле эта карта будет прекрасно работать с драйвером Token-Ring под Linux, однако Вам надо будет запустить карту в режиме, совместимом с Auto 16/4. Самый простой путь его установить - использовать диски LANAID, поставляемые вместе с Вашей картой, и воспользоваться командой:

LANAIDC /FAST=AUTO16

Для настройки карты Вы должны использовать LANAIDC или LANAID.

Token-Ring Network 16/4 Adapter II

Эта карта не работает. Не путайте ее с IBM Token Ring adapter II (4mbit), который работает без проблем. Это DMA/Busmaster-адаптер для ISA.

3Com TokenLink Velocity ISA

Эта карта может как работать, так и не работать. У меня было много писем от людей, у которых была такая карта, причем у одних она работала без проблем, а у других не работала вообще.

PCI адаптеры

В настоящее время ни один из IBM PCI-адаптеров не поддерживается.

IBM Auto LanStreamer 16/4 Token-Ring PCI Adapter

Данный адаптер в настоящее время не поддерживается, но работал. Этот драйвер должен поддерживать и полнодуплексный (Full Duplex) режим.

Необходимое программное обеспечение

Примечание:

Если Вы работаете с ядром версии 2.0 и выше, то обратитесь к следующему разделу данного документа. Все, перечисленное ниже, касается, главным образом, ядер версий 1.2.

Я предполагаю, что в данный момент перед Вами находится работающая Linux-машина.Возьмите Token Ring патч по адресу:

ftp://ftp.wayne.esu1.k12.ne.us/pub/Linux/Token-Ring/TokenRing.patch-1.2.0.gz

Возьмите исправленные исходные тексты NetTools по адресу: 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 - основной каталог для хранения патчей
Mkdir /usr/src/patches/token - сюда разместите патч Token Ring

Установка

Примечаниe:

Эта инструкция предназначена для внесения исправлений в ядро версии 1.2. Если у Вас ядро версии 2.0, то пересоберите его и ответьте yes или module, на вопрос о поддержке Token-Ring. Вам надо сделать следующее:

Установить Token-Ring-карту в систему и сконфигурировать ее в зависимости от того, для чего Вы хотите ее использовать. Будет хорошо, если есть возможность сперва проверить работоспособность карты под DOS, а только потом устанавливать ее под Linux. Скорее всего карта будет работать под Linux с теми же настройками, что и под DOS. Если карта поддерживает режим PnP, постарайтесь заблокировать его сразу, как только она начнет работать.

Сделайте резервные копии каталога с исходными текстами ядра. Это пригодится, если понадобится полностью удалить Token-Ring-патч и вернуться к оригинальному состоянию исходных текстов.

cd /usr/src
tar cvzhf linuxbak.tar.gz linux

Разархивируйте патч Token-Ring.

cd /usr/src/patches/token
gzip -d TokenRing.patch-1.2.0.gz

Модифицируйте ваше ядро патчем Token-Ring

cd /usr/src/linux
patch -p1 < /usr/src/patches/token/TokenRing.patch-1.2.0

-или- patch -p1 < <directory-of-patchfile>/TokenRing.patch-1.2.0

Найдите все rej-файлы патча и внесите, если надо, необходимые изменения

find . -name \*.rej -print

Найдите orig-файлы и удалите их

find . -name \*.orig -print | xargs rm

Конфигурация и сборка ядра

Примечание:

Если у вас есть раздел подкачки, то удостоверьтесь в том, что он активен.

cd /usr/src/linux
make config

(Патч должен добавить две строки к Вашему файлу config.in) Token Ring support (CONFIG_TR) [y]

(and further down the list...) IBM Tropic chipset based adaptor support (CONFIG_IBMTR) [y]

make dep
make clean
make zImage

Настройка LILO. Сперва переименуйте каталог /vmlinuz в vmlinuz.old Затем копируйте ядро в /vmlinuz. На моей системе для этого необходимо было бы скопировать /usr/src/linux/arch/i386/boot/zImage в /vmlinuz и отредактировать /etc/lilo.conf для загрузки ядра. Теперь из командной строки запустите LILO, набрав "lilo"

Сейчас Вы должны быть готовы к перезагрузке вашей системы и использованию Token-Ring-карты в Вашем компьютере. ,Пожалуйста прочитайте раздел "установки, специфичные для дистрибутивов".

Установка NetTools

Пакет NetTools содержит много основных утилит работы с сетевыми устройствами. NetTools включает в себя программы arp, rarp, route, ifconfig и netstat и т.п. Эти программы не знают о Token Ring изначально, поэтому Вам необходимо модифицировать NetTools для того, чтобы эти утилиты могли более эффективно работать с драйвером Token Ring.

Примечание:

Текущая версия NetTools предназначается для ядра 1.2.x. Если Вы используете ядро версии 2.0, то Ваша версия NetTools, скорее всего, новее. Однако можно взять последнюю версию NetTools по адресу

ftp://tapac.inka.de/pub/comp/Linux/networking/NetTools/

(1) Скопируйте и разархивируйте исходные тексты NetTools в каталог исходных текстов.

cp net-tools-1.2.0.patched.tar.gz  /usr/src
tar -zxvof /usr/src/net-tools-1.2.0.tar.gz

(5) Соберите NetTools.

cd /usr/src/net
make install

Известные проблемы

У меня самого возникало с этим драйвером несколько проблем. Если у Вас проблемы с Token Ring, а Вы используете Linux с ядром 1.2.х, пожалуйста, обновите его до 2.0. На момент написания этого документа, текущей версией ядра была 2.0.33. В патчи Token-Ring было внесено много усовершенствований со времен версии 1.2.x. Большинство этих исправлений не было перенесено назад.

Я бы не советовал вам использовать этот патч для ядер 2.0. В эти ядра уже встроена поддержка Token-Ring. Хотя существуют пробные патчи, поднимающие версию до 2.1.

Вопросы и комментарии

Q:

Может ли Token Ring собираться как модуль?

A:

Да, это можно сделать, причем Token-Ring при этом будет довольно хорошо работать. Имеется дополнительный параметр, который Вы можете использовать для компиляции Token Ring в качестве модуля. Если Вам когда-нибудь понадобится "обмануть" программы, например загрузочные диски RedHat, то в конфигурации Token-Ring-карты (для NFS/FTP и т.п.) используйте параметр "device", отличный от tr0. Вероятно возникнут проблемы, если попробовать использовать этот трюк с несколькими Token-Ring-совместимыми адаптерами. Он предназначен, главным образом, для нескольких несовместимых устройств. Пример:

/sbin/insmod ibmtr device=eth0

Q:

Я получаю ошибку с кодом "0011". Что это значит?

A:

Удостоверьтесь, что Вы подсоединены к сети, и что у Вас есть loopback-коннектор на Token-Ring-карте. Это сообщение может означать, что не открыта сеть. В 99,99% оно означает, что Вы не подключены к ней.

C:

Если на машине установлена звуковая карта, использующая порт 0x220, то она может конфликтовать с Token-Ring-картой, использующей порт 0xa20. Если возникла данная ситуация, то попробуйте поменять порт Token-Ring-карты на 0xa24, или переместите/удалите звуковую карту.

Также у меня сохранились некоторые письма, касающиеся Token Ring под Linux. В некоторых сообщениях для экономии места я удалил не очень интересные части.

Q:

От: "Mr. Chuck Rickard" <chuck@gl.umbc.edu>
Тема: Re: Token Ring патч для ядра

Я поменял параметр "device" на tr0, но при сборке получил сообщение "tr0: Can't assign device to adapter", и параметр "device" снова стал tr1. У Вас есть какие-нибудь идеи по этому поводу?

Спасибо!

Chuck Rickard
(chuck@umbc8.umbc.edu)

              

A:

От: David Morris <dwm@shell.portal.com>

Когда это единственное получаемое сообщение, то оно скорее всего означает, что программно заданный адрес порта не используется Вашей tr-картой (см. segment = inb(PIOaddr) в ibmtr.c)).

Q:

От:  Mike Glover <glover@credit.erin.utoronto.ca>
Тема: Token ring проблемы.

Спасибо за ответ. Вот мой файл /var/adm/messages:

                 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 не может связаться с адаптером, это смущает меня. Документации очень мало и я не знаю как поступить при таком сообщением. Я знаю, что я не ввел никакие параметры tr-карты, но я не знаю где это делать.

Железо:
PC-клон  (Dell OMNIPLEX 560, если быть точным)
tr-карта Olicom 16/4 Adapter.

У меня есть tr-драйвер для DOS и под DOS моя карта работает. Мне кажется, что я чего-то не доделываю в Linux.

             

A:

Olicom 16/4 Adapter не использует Tropic-чипсет. Попробуйте использовать одну из карт, которые указаны в самом начале данного howto.

Q:

От: Mike Glover <glover@credit.erin.utoronto.ca>
Тема: Нашел IBM-карту...

Я взял IBM tr-карту и добился немного большего, но все еще не могу полностью установить ее.
(Я изменял /etc/rc.d/rc.inet1 ifconfig от eth0 до tr0). Вот часть моего файла /var/adm/messages :

                 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

Это Вам говорит о чем-нибудь? Мне - практически ни о чем.

             

A:

От: David Morris <dwm@shell.portal.com>

Это сообщение означает или конфликт памяти с MMIO-областью или с TR-картой, которая не совместима с драйвером (по крайней мере эта сигнатура мне не известна).

Q:

От: Mike Glover <glover@credit.erin.utoronto.ca>
Тема: Уже почти...

Я вижу в моем файле messages следующее:
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 longer
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 longer
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-карта) и работать только с tr-картой. Так что проблема не в
аппаратной части. Вот переключатели DIP на карте:

               1       Up      |
2       Down    |
3       Down    |       Согласно руководству эти переключатели устанавливают
4       Up      |       базовый адрес CC000, что вполне подходит для моей машины.
5       Up      |
6       Down    |
7       Down    +       Эти устанавливают IRQ=2, что тоже меня устраивает
8       Down    +
9       Up      X       Первичный сетевой адаптер.
10      Up      =       16 KB RAM. Это хорошо?
11      Down    =
12      Up      #       16 Mbps скорость данных.

Я буду удивлен, если дело в DIP-переключателях, мне кажется, у меня
неправильно сконфигурирована таблица маршрутизации и другие сетевые
настройки.

Mike

             

A:

Эта проблема полностью устранена в ядре 2.0, исправления не были перенесены в ядро 1.2, поэтому, я советую переходить на ядро 2.0.

Установки, специфичные для дистрибутивов

Slackware 96

Если у Вас еще не запущен "netconfig", то сделайте это сейчас. Настройте все так, как если бы ваша машина находилась в Ethernet. Отредактируйте /etc/rc.d/rc.inet1 так, чтобы сперва проверялось устройство tr0, а потом eth0. У вас должна быть следующая строка:

/sbin/ifconfig eth0 ${IPADDR} broadcast ${BROADCAST} netmask ${NETMASK}

Переделайте ее в строку вида /sbin/ifconfig tr0 ${IPADDR} broadcast ${BROADCAST} netmask ${NETMASK}

RedHat 4.0+

В дистрибутиве RedHat 4.0+ имеется прекрасная панель управления XWindows, предназначенная для конфигурирования модулей и устройств. Если Вы устанавливаете tr-адаптер в стандартной комплектации RedHat 4.0+, то там уже должна быть поддержка Token Ring, собираемая в в качестве модуля. Попробуйте использовать команду:

modprobe ibmtr

Если в Вашем дистрибутиве действительно есть поддержка tr-адаптера, то, скорее всего, больше ничего не надо делать.

Самый простой способ сконфигурировать Ваш интерфейс - это использовать панель управления (control-panel). Сперва загрузите новое сетевое устройство Token Ring. При этом автоматически должен загружаться драйвер ibmtr. Затем перейдите в конфигурацию сети и добавьте новое устройство - tr, присвойте ему ip-адрес и т.п. После перезагрузки Ваш Linux RedHat 4.0+ будет работать с Token Ring.

Пожалуйста, обратите внимание, что уже в течении длительного времени мне не приходилось настраивать ни одну из моих RedHat систем, поэтому данные инструкции я пишу по памяти. По крайней мере, они должны направить Вас на путь, по которому необходимо следовать при настройке.