Форум системных администраторов

IT => Unix => Тема начата: v4567 от 01 июля 2016, 20:13:24

Название: udev не читает файл 70-persistent-net.rules
Отправлено: v4567 от 01 июля 2016, 20:13:24
Есть собранная система lfs, её архив для возможности разворачивания. Она стоит и нормально работает на сервере где была одна сетёвка.

Развернул её другом серваке который должен стать шлюзом-маршрутизатором, на нём несколько сетёвок.

Всё нормально заработало, все сетевые интерфейсы по команде ifconfig -a видно. Хотел поменять названия сетёвок и ничего не получилось.

Например после загрузки имею сетёвку eth5 с mac 11:22:33:44:55:66 и сетёвку eth3 с mac 77:88:99:00:11:22,

а мне надо чтобы сетёвка eth5 называлась eth3, а та что была eth3 стала eth5

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

Что бы избежать ошибок сгенерировал файл 70-persistent-net.rules при помощи команды


udevadm trigger --action=add


Файл сгенерировался, открыл его и eth5 поменял на eth3, а eth3 поменял на eth5.

Перезагрузился и ничего не поменялось, сетёвки не переименовались. Получается так что udev не читает этот файл.

При загрузке сервера демон udev запускается командой:


/sbin/udevd --daemon


далее выполняются ещё две команды:


/sbin/udevadm trigger

/sbin/udevadm settle




После загрузки сервера udevd в процессах есть.



Попробовал удалить паку со скриптами /etc/sysconfig/network-scripts (предварительно скопировав её в другое место), и не запускать при старте сервера демон udev. Но после загрузки сервера по команде ifconfig -a всё равно все интерфейсы были и назывались они (eth0, eth1,eth2...) как и ранее когда при загрузке сервера стартовал и udev.

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



Подскажите пожалуйста как заставить его прочитать этот файл или переименовать сетевые интерфейсы.

За помощь заранее благодарен!
Название: udev не читает файл 70-persistent-net.rules
Отправлено: v4567 от 02 июля 2016, 11:38:19
Ситуация немного прояснилась.
Интерфейсы именовались в initramfs и файлы правил есть. В /etc/udev/rules.d их нет, нет даже папки rules.d, а вот в /lib/udev/rules.d эти файлы есть, их немного, конкретно файла для сетевых интерфейсов нету, я 70-persistent-net.rules с именами такими как надо мне скинул туда, вернее вначале разобрал рам-диск, потом скопировал этот файл, потом обратно собрал рам-диск. И о чудо после перезагрузки интерфейсы стали с именами такими как мне надо.
Но вопрос остался открытым.
Первое.
Для проверки взял и одну сетёвку заменил на другую ранее не стоявшую в системе, не пересобирал рам-диск и перезагрузился.
В результате вместо 7 сетёвок теперь по команде ifconfig -a было только 6, та которую подключил (новая) была, а вот одной из старых которая была включена в компе, её не стало. Получается теперь при замене сетёвки придётся каждый раз пересобирать рам-диск с новым файликом.
Второе.
Всё равно ведь udev должен был бы перименовать сетёвки не зависимо от того какие им имена были даны udev-вом запущеным в рам-диске. Почему этого не происходить я не знаю.
Название: udev не читает файл 70-persistent-net.rules
Отправлено: v4567 от 04 июля 2016, 16:24:37
Всё проблему решил.
Не помогло удаление из файла правил /etc/udev/rules.d/70-persistent-net.rules записей ACTION=="add" и KERNEL=="eth*" хоть вместе хоть по отдельности.
А помогло вот что.
После старта демона udev я выполняю две команды
udevadm trigger
udevadm settle

так вот команду udevadm trigger надо было выполнять ещё с параметром --action=add

udevadm trigger --action=add

После этого всё заработало и не надо было в initrd ничего делать.
Интерфейсы переименовались согласно записям в файле правил
/etc/udev/rules.d/70-persistent-net.rules