LINUX.ORG.RU

Отключить сетевую карту при загрузке


0

0

Всем привет.

На работе имеется кривой сервер. Кривость заключается в двух встроенных сетевушках на чипсете r8168 (именно 8168, не 8169). На компе стоит Debian Lenny (буквально недавно обновился с Etch).

Сетевую карточку со стандартными модулями ядра завести не удалось. Постоянно пытались подгрузиться драйвера на r8169. Драйвер (модуль ядра, как я понимаю) для r8168 удалось найти в сети. Скомпилировал, поставил.

Просмотрел я dmesg, там промелькивают сообщения о r8169, хотя такого чипсета в компе нет, а r8169 занесен в /etc/modprobe.d/blacklist (хотя lsmod | grep r8169 тоже ничего не показывает).

Комп подключен к сети только через одну сетевушку (eth2 в нашем случае, хотя думаю, не существенно).

$cat /etc/network/interfaces
auto lo eth2
iface lo inet loopback
iface eth2 inet dhcp

Но после перезагрузки ifconfig выдает два интерфейса - eth1 и lo, а eth2 при этом выключен. Сеть, естественно, не работает. Если сделать ifconfig eth1 down && ifdown eth2 && ifup eth2, то сеть появляется, работает без проблем. До перезагрузки.

Пока что как временное решение прописал в /etc/crontab при перезагрузке выполнять простейший скрипт (sleep + 3 команды выше), дабы сеть после перезагрузки сама поднималась. Но это ведь костыль, хочется от него избавиться.

Собственно, прошу совета - как лучше всего все настроить. Мне кажется, надо как-то принудительно отключать сетевой интерфейс eth1, и заставить включаться eth2. Но как это сделать? Как отключить eth1, если он и так не включен в interfaces? Как заставить включаться eth2, хотя он и так в секции auto?

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


А в биосе выключить не пробовали?

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

До такого радикализма я не додумался :)

С помощью биоса отключить eth1 получилось. Но проблема с eth2 осталась.

ksv ()

ifconfig eth1 down && ifdown eth2 && ifup eth2


что мешает это сделать в local.start (в генте /etc/conf.d/local.start , в других - не помню) - при старте системы будет запускаться однострочник

з.ы. поимел похожую сетевушку при апгрейде, пока сильно не заморачивался (работа машинки зависит от трезвости электриков, в лучшем случае 24/7), но похоже у всех с ними проблемы
3.3.ы. пост не претендует на полноценный ответ , только намекает в какую сторону копать. в итоге хотелось бы почитать здесь более Ъ вариант побороть глюки оной сетевушки при старте

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

>в генте /etc/conf.d/local.start , в других - не помню

Обычно /etc/rc.local.

Да, и реалтековские r816* - говно.

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

Да, и реалтековские r816* - говно.


кто ж знал , проапгрейдить проц - таков был план :)
а о сетевых карточках я думал что в Linux стоит беспокоится в последнюю очередь - признаю, был не прав

anTaRes ★★★★ ()

Сетевую карточку со стандартными модулями ядра завести не удалось.

Так и добавь их в блеклист, чтобы карточка отключалась

melkor217 ★★★★★ ()

А вообще, тут лучше бы ядро обновить из анстейбла или тестинга. Наверняка всё само заведётся )

melkor217 ★★★★★ ()

занеси в блэклист ядерный модуль карточки.

isden ★★★★★ ()

Всем посоветовавшим заблокировать модуль ядра. Спасибо, но я уже это сделал. r8169 заблокирован через /etc/modprobe.d/blacklist.

Собственно, сейчас проблема в другом. Есть какие-нибудь варианты, почему сетевушка не включается после перезагрузки? (/etc/network/interfaces заполнен вроде как нормально) Если я правильно помню процесс загрузки, то сетевушка включается при загрузке, получает адрес по dhcp (видно по выводу на экран). При входе в систему ifconfig показывает только lo (eth2 выключен, надо делать ifdown && ifup). В dmesg не нашел ничего криминального (но может быть плохо искал, опыта маловато).

Предложение с rc.local / local.start ИМХО мало чем отличается от crontab с его @reboot. ИМХО, это исключительно временное решение, а все же хотелось бы избежать на данном сервере таких изощрений.

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

> А вообще, тут лучше бы ядро обновить из анстейбла или тестинга. Наверняка всё само заведётся )

Это сервер, рабочий. Должен работать как часы. ИМХО sid - не самое удачное решение в этом случае.

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

Это сервер, рабочий. Должен работать как часы. ИМХО sid - не самое удачное решение в этом случае.

Не бойся слова «unstable», просто обнови ядро. Это самый обычный стабильный выпуск. Обновлять остальное не нужно.

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

> Не бойся слова «unstable»

Я боюсь не unstable, а смешивания релизов. Полностью переходить с lenny на unstable мы не собираемся. А ради одного ядра... ИМХО, овчинка выделки не стоит.

PS
Дома стоит именно sid, претензий больших нет.

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

просто обнови ядро


так, на всякий случай:
$ uname -r
2.6.33-gentoo

anTaRes ★★★★ ()

в слакваре нечто похожее решалось в /etc/udev/rules.d/70-persistent-net.rules

c /etc/udev/rules.d/70-persistent-net.rules

# PCI device 0x1106:0x3065 (via-rhine)
SUBSYSTEM==«net», ACTION==«add», DRIVERS=="?*", ATTR{address}==«00:13:8f:20:1e:5f», ATTR{type}==«1», KERNEL==«eth*», NAME=«eth0»

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

в слакваре нечто похожее решалось в /etc/udev/rules.d/70-persistent-net.rules


кстати да, ранее нагуглил похожий ответ , и нашел в єтом файле правило для eth1 , при том что у меня из фейсоф только eth0-wlan0-ppp0-ppp1 пока просто закоментировал правило для eth1, хоть в гугле советуют просто удалить /etc/udev/rules.d/70-persistent-net.rules
после перезагрузки будет видно

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

Спасибо, обязательно покопаю в эту сторону. К сожалению, получится не раньше понедельника. Об успехах отпишусь.

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

Сорри если немного не туда - карточка RTL8111/8168B

Спрашивал на ubuntu - так и не получил ответа...

Поставил 9.10 (предварительно снес NM) >> pppoeconf, настроил dsl, подмнеил мак (ifconfig hw ether) - все нормально сеть пашет. По привычке добавил в rc.local
sudo ifconfig eth0 down
sudo ifconfig eth0 hw ether 00:90:f5:67:5a:b1
sudo ifconfig eth0 up

После перезагрузки сеть пропала, думаю че за... Оказалось появилось устройство eth1, ну полез в
/etc/udev/rules.d/70-persistent-net.rules

Тут вот что:

# PCI device 0x10ec:0x8168 (r8169)
# SUBSYSTEM==«net», ACTION==«add», DRIVERS=="?*", ATTR{address}==«00:90:f5:67:5a:b1», ATTR{dev_id}==«0x0», ATTR{type}==«1», KERNEL==«eth*», NAME=«eth0»

# PCI device 0x10ec:0x8168 (r8169)
SUBSYSTEM==«net», ACTION==«add», DRIVERS=="?*", ATTR{address}==«00:90:f5:67:5a:b1», ATTR{dev_id}==«0x0», ATTR{type}==«1», KERNEL==«eth*», NAME=«eth1»

Почему еще одно eth появилось?

Попробовал еще так (предварительно убрав из rc.local свое):

в /etc/network/interfaces
pre-up ifconfig eth0 ether 00:90:f5:67:5a:b
после перезагрузки опять имею новое eth1.

Попробовал так (interfaces):
auto dsl-provider
iface dsl-provider inet ppp
pre-up /sbin/ifconfig eth0 up # line maintained by pppoeconf
provider dsl-provider

auto eth0
iface eth0 inet manual
hwaddress ether 00:90:f5:67:5a:b1


После перезагрузки появляется строчка:
auto dsl-provider
iface dsl-provider inet ppp
pre-up /sbin/ifconfig eth0 up # line maintained by pppoeconf
provider dsl-provider

auto eth0
iface eth0 inet manual
hwaddress ether 00:90:f5:67:5a:b1

auto eth1
iface eth1 inet manual

Че за блин-то такой!?
Второй сетевой не стоит - откуда же?

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

SUBSYSTEM==«net», ACTION==«add», DRIVERS=="?*", ATTR{address}==«00:90:f5:67:5a:b1», ATTR{dev_id}==«0x0», ATTR{type}==«1», KERNEL==«eth*», NAME=«eth0»
# SUBSYSTEM==«net», ACTION==«add», DRIVERS=="?*", ATTR{address}==«00:90:f5:67:5a:b1», ATTR{dev_id}==«0x0», ATTR{type}==«1», KERNEL==«eth*», NAME=«eth1»

не?

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

Не понял :( - у меня одна сетевая, но при попытке подсунуть другой мак - упорно появляется вторая!

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

ы: т.е. в конфигах изначально eth0, подганяю ей сдругой мак, при перезагрузке - появляется eth1, х с ним прописываю мак для eth1, перезагрузка и получаю eth2! :(

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

Итак, «успехи».

Для начала попробовал править / удалять /etc/udev/rules.d/70-persistent-net.rules. Никаких эмоций. Строчка в файле / сам файл перегенерируются. Интерфейс после перезагрузки не включается.

Потом решил все же попробовать завести систему с новым драйвером r8169. rmmod r8168 && insmod /lib/modules/2.6.26-2-686/kernel/drivers/net/r8169 - и сетевая карта опять имеется в наличии. Работает нормально. Собственно, наверное, буду избавляться от r8168.

Но тут возникли непредвиденные сложности. Снес r8168.ko из директории с модулями ядра (предварительно выгрузил), убрал строчку с r8169 из modprobe.d/blacklist, перезагрузился - сетекая карточка не поднялась. Пришлось ручками делать insmod. При загрузке ясно вижу, что устройство включается, получает IP, но после входа в систему оно выключается. Значит, кто-то его выключил.

Есть идеи, кто может отключать?

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

Спасибо! Вот сам не додумался поискать все конфиги.

Обнаружил, что админ при настройке сети добавил в rc.local пару безобидных строчек. Среди прочего он удалял модуль r8169 и подгружал r8168. Удалил это его шаловство - сеть поднялась после перезагрузки.

Можно считать обновление с etch до lenny почти завершенным (осталось только vmware поставить новую, но это уже совсем другая история, там вроде ничего сложного нет).

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