LINUX.ORG.RU
ФорумAdmin

Установить сетевые интерфейсы когда они не образуются сами

 


0

1

Есть образ (на слакс 4), при запуске которого не появляется сетевых интерфейсов. В процессе загрузки оси запускается на исполнение определение железа следующий скрипт /etc/rc.d/rc.hostplug Этот скрипт в свою очередь этим ключом запускает все скрипты *.rc (-start), включая pci.rc, который по данным вывода lspci определяет ID сетевой карты и подгружает необходимый модуль драйвера соответственно листу /etc/hostplug/niclist

Содержание скрипта pci.rc:

echo «PCI hotplug disabled» # Test network card id=`lspci -n | grep «Class 02» | cut -d ' ' -f 4` echo «ID network card: $id» mname=`grep -i $id /etc/hotplug/niclist | cut -f 2` echo «Name of module: $mname» modprobe $mname

Модуль сетевухи загружается в память. Но eth так и не появляется.

Проверено на двух компьютерах разной конфигурации и разными сетевухами.

И самый принципиальный вопрос - чем поднимается сетевой интерфейс? Что его поднимает в системе? Драйвер есть, в lspci на шине есть, а eth нет. Почему? Как его поднять вручную?


Ответ на: комментарий от TDrive

Ап работает, когда интерфейс есть по ifconfog -a , который показывает и неактивные интерфейсы. А тут по ифконфиг-минус-а ничего кроме ло нет.

DrBim ()

Выгрузи-загрузи драйвер и в dmesg посмотри. Некоторые сетевые карты хотят FW, загрузка которой не происходит по разным причинам.

vel ★★★★★ ()
Ответ на: комментарий от vel

Грузил вручную через modpobe, никаких сообщений об ошибках не выводится. Какие условия создания ethХ в линуксах в принципе, каков механизм, последовательность сигналов и модулей в ОС?

DrBim ()
Ответ на: комментарий от DrBim

Сам сетевой интерфейс создается соответствующим модулем ядра. Если такого интерфейса нет, значит не загружен нужный модуль. Загрузка ненужного модуля делу не поможет. Нужен модуль, поддерживающий конкретное физическое устройство. Либо само физическое устройство сломано или отключено. Еще правильно сказали выше, современные устройства требуют микрокод, в некоторых дистрибутивах линукса он идет отдельным пакетом. Может быть вот этот микрокод не загружен и это мешает правильной инициализации устройства и модуля ядра.

Другое дело, что называться интерфейс может не обязательно eth0. К такому интерфейсу, создаваемому модулем ядра, может назначаться общепринятый алиас, псевдоним. Такие псевдонимы назначает udev (или что там в современном ядре вместо него). Ты посмотри dmesg повнимательней. Какой интерфейс создается модулем? Если вообще не создается, то смотри первый абзац этого поста.

hibou ★★★★★ ()
Ответ на: комментарий от DrBim

Что выводится в dmesg при загрузке модуля?

″lspci -v″ что пишет про эту сетёвку в ″Kernel driver in use″ и ″Kernel modules″?

mky ★★★★★ ()
Ответ на: комментарий от DrBim

Самое главное - драйвер должен найти поддерживаемое оборудование.

Если его нет, то оно либо молча загружается ( возможно устройство будет обнаружено позже ) либо оно сообщает об ошибке.

про «lspci -v» на тему «Kernel driver in use»/«Kernel modules» тебе уже сказали.

vel ★★★★★ ()
Последнее исправление: vel (всего исправлений: 1)

Спасибо, друзья, что разъясняете. Итак, я понял из ваших слов, что загрузка соответствующего драйвера приводит к сканированию шины на предмет поддерживаемого оборудования, после нахождения (в данном случае - сетевой) поднимается интерфейс. Плюс нюансы в виде дополнительного кода, который требуется для взаимодействия с ней (сетевухой).

Пока приведу выдержку из lspci -v (в части сетевых)

01:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd.: Unknown device 8136 (rev 02) Subsystem: ASRock Incorporation: Unknown device 8136 Flags: bus master, fast devsel, latency 0, IRQ 10 I/O ports at d800 [size=256] Memory at fdeff000 (64-bit, prefetchable) [size=4K] Memory at fdee0000 (64-bit, prefetchable) [size=64K] Expansion ROM at feae0000 [disabled] [size=128K] Capabilities: [40] Power Management version 3 Capabilities: [50] Message Signalled Interrupts: 64bit+ Queue=0/0 Enable- Capabilities: [70] #10 [0202] Capabilities: [ac] #11 [0001] Capabilities: [cc] Vital Product Data

03:02.0 Ethernet controller: D-Link System Inc DGE-528T Gigabit Ethernet Adapter (rev 10) Subsystem: D-Link System Inc DGE-528T Gigabit Ethernet Adapter Flags: bus master, 66Mhz, medium devsel, latency 32, IRQ 3 I/O ports at e800 [size=256] Memory at febffc00 (32-bit, non-prefetchable) [size=256] Expansion ROM at e0000000 [disabled] [size=128K] Capabilities: [dc] Power Management version 2

Итого в ПК две сетевухи, одна из которых не опознана (в никлисте), а вторая опознана. lsmod -n показывает загруженный модуль драйвера r8169. На днях я стартовал свежий liveCD Slax 6, который поднял оба интерфейса, причем первому интерфейсу (здесь это - Unknown device 8136) соответствовал драйвер r8169. Я привел в никлисте моего слакс 4 это соответствие, и модуль с таким же названием стал подгружаться в процессе загрузки. Я счел, что раз в слаксе 6-м работает такой модуль, то и в моем старом слаксе должен работать такой же модуль. Логично, но может не 100% верно.

dmesg сейчас почему-то ничего не написала про сетевые.

DrBim ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.