Linux network инструкция администратора
4b61df3a

Автоопределение Ethernet


Многие из драйверов Linux Ethernet достаточно интеллектуальны, чтобы знать, как искать расположение Вашей платы Ethernet. Это избавляет от необходимости сообщать такие данные ядру вручную. Ethernet HOWTO перечисляет, использует ли специфический драйвер автопоиск, и в каком порядке он ищет адрес ввода-вывода платы.


Автоопределение Ethernet

Многие из драйверов Linux Ethernet достаточно интеллектуальны, чтобы знать, как искать расположение Вашей платы Ethernet. Это избавляет от необходимости сообщать такие данные ядру вручную. Ethernet HOWTO перечисляет, использует ли специфический драйвер автопоиск, и в каком порядке он ищет адрес ввода-вывода платы.

Имеются три ограничения на автопоиск. Во-первых, это не может распознавать все платы правильно. Это особенно верно для некоторых дешевых аналогов популярных плат. Во-вторых, ядро не будет искать больше, чем одну плату, если оно определенно не проинструктировано об этом. Это было сознательным решением проекта, поскольку считается что Вы захотите иметь контроль над тем, какая плата какому интерфейсу назначена. Самый лучший способ делать это надежно: вручную конфигурировать платы Ethernet. В-третьих, драйвер избегает некоторых адресов, чтобы не конфликтовать с другим оборудованием. Так что еще не факт, что адрес платы вообще будет проверен.

PCI-платы должны быть опознаны правильно, но все равно Вы имеете способ инструктировать ядро лично относительно марки и адреса карты, если используете больше одной платы, или автопоиск потерпел неудачу.

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

Если Вы используете lilo для загрузки, параметры можно передать, указав их через аргумент append в файле lilo.conf. Например, можно передать ядру следующие параметры, чтобы проинструктировать его о плате Ethernet:

ether=irq, base_addr, [param1,][param2,] name

<




/p>



Первые четыре параметра задают числа, последний задает имя устройства. Параметры irq, base_addr и name обязательны, но два param опциональны. Числовые значения могут быть установлены в ноль, в этом случае ядро будет их искать, исходя из имеющейся информации.

Первый параметр задает IRQ. По умолчанию, ядро попробует его найти само. Например, драйвер 3c503 имеет специальное свойство, которое выбирает свободный IRQ из 5, 9, 3, 4 и настраивает плату, чтобы использовать эту линию. Параметр base_addr задает адрес ввода-вывода карты, значение 0 сообщает, чтобы ядро исследовало возможные адреса карты.

Различные драйверы используют следующие два параметра по разному. Для карт с разделением памяти (shared-memory cards), подобных WD80x3, они определяют первый и последний адреса разделяемой памяти. Другие платы обычно используют param1, чтобы установить уровень выдачи отладочной информации. Значения от 1 до 7 задают повышенные уровни отладки, 8 выключает ее, 0 выдает нормальное число сообщений. Драйвер 3c503 использует param2, чтобы выбрать между своим трансивером (по умолчанию) и внешним (значение 1). Аргументы param не должны быть включены вообще, если нет ничего особо нуждающегося в настройке.

Первый нечисловой параметр интерпретируется ядром как имя устройства. Вы должны определить имя устройства для каждой платы Ethernet.

Если у Вас две платы Ethernet cards, можно поручить определение первой ядру, а самому настроить вторую через lilo. Можно и вручную конфигурировать обе платы. Если Вы решите поручить ядру поиск первой платы, надо выяснить, какую плату считаете первой Вы, а какую ядро. Ваши мнения совпадут не всегда. Решить проблему позволяет опция lilo reserve, которая однозначно запретит ядру поиск в адресном пространстве первой карты. Например, чтобы Linux нашла вторую карту Ethernet на адресе 0x300 с именем eth1

задайте параметры ядра:

reserve=0x300,32 ether=0,0x300,eth1

Опция reserve запрещает какому-либо драйверу обращаться в указанное адресное пространство. Вы можете также использовать ядерные параметры, чтобы отменить автопоиск для eth0 :



reserve=0x340,32 ether=0,0x340,eth0

Автопоиск можно и вовсе запретить (допустим, Вы временно сняли одну из плат Ethernet). Чтобы запретить автопоиск задайте аргумент base_addr как –1:

ether=0,-1,eth0

Для передачи этих параметров ядру при загрузке Вы их вводите в ответ на приглашение lilo "boot:". Чтобы lilo выдал запрос "boot:", надо при загрузке держать нажатой одну из клавиш Control, Alt или Shift. Если в ответ на приглашение нажать Tab, будет выведен список ядер, которые можно загрузить. Для загрузки ядра с параметрами введите его имя, пробел и все нужные параметры. Затем нажмите клавишу Enter, и lilo загрузит заданное ядро с заданными параметрами.

Чтобы параметры воспринимались при каждой перезагрузке автоматически, внесите их в /etc/lilo.conf, используя ключевое слово append=. Например:

boot=/dev/hda root=/dev/hda2 install=/boot/boot.b map=/boot/map vga=normal delay=20 append="ether=10,300,eth0"

image=/boot/vmlinuz-2.2.14 label=2.2.14 read-only

После правки lilo.conf, выполните команду lilo для активизации изменений.


Содержание раздела