Назад | Перейти на главную страницу

Как изменить правила persistent-net-generator.ru, чтобы они зависели от шины PCI, а не от MAC?

Я использую CentOS 6.2 с VMware. Мне часто приходится клонировать свои системы. Каждый раз, когда я клонирую, он добавляет новое правило в файл 70-persistent-net.rules, вот так.

SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:0c:29:0c:f1:5e", ATTR{type}=="1", KERNEL=="eth*", NAME="eth1"

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

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

Вместо этого идентифицируйте устройство по адресу PCI. Что-то вроде:

SUBSYSTEM=="net", BUS=="PCI", ID=="0000:04:00.0", ...

Запустив CentOS 6.5 на Virtualbox, я достиг такой нирваны:

1) Запретить /lib/udev/rules.d/75-persistent-net-generator.rules от перезаписи /etc/udev/rules.d/70-persistent-net.rules - просто создайте пустой /etc/udev/rules.d/75-persistent-net-generator.rules

2) Редактировать /etc/udev/rules.d/70-persistent-net.rules:

# Map ethernet devices according to kernel enumeration
# this should match the adaptor numbering in the virtualbox console 
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{type}=="1", KERNEL=="eth0*", NAME="eth0"
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{type}=="1", KERNEL=="eth1*", NAME="eth1"
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{type}=="1", KERNEL=="eth2*", NAME="eth2"
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{type}=="1", KERNEL=="eth3*", NAME="eth3"

3) Редактировать / etc / sysconfig / network-scripts / ifcfg-eth [0-3] в зависимости от ситуации, удалив все бессмысленные HWADDR или MACADDRESS.

Это не идеально, поскольку порядок перечисления ядра МОЖЕТ и, вероятно, БУДЕТ изменяться, если вы внесете изменения в настройки VirtualBox на другом устройстве до выполнения клонирования - и обнаружение ядра не совсем соответствует порядку адаптера Virtualbox (на мой взгляд, это обеспечить регресс). Но в остальном он, кажется, ведет себя последовательно, что должно быть по крайней мере «достаточно хорошим».

Больше объяснений и мудрости здесь:

Этого должно быть достаточно для того, что вы хотите:

DRIVERS=="?*", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"

Я редко клонирую системы Linux с помощью VMWare. Перестроить (кикстарт + Puppet / CFEngine) достаточно просто, так что заново подготовить систему почти быстрее, чем клонировать.

Но как вы клонируете? Вы делаете это из шаблона виртуальной машины? Обычно при клонировании из шаблона у меня не возникало проблем, связанных с сетевой картой.

Я тоже столкнулся с этой проблемой. используйте этот cmd после клонирования гостя centos 6

sed -i '/eth0/d' /etc/udev/rules.d/70-persistent-net.rules
sed -i s/eth1/eth0/g /etc/udev/rules.d/70-persistent-net.rules

пожалуйста, измените свой IP и имя хоста в следующей строке

sed -i s/192.168.42.100/192.168.42.101/g /etc/sysconfig/network-scripts/ifcfg-eth0
sed -i s/node01/node02/g /etc/sysconfig/network