Я создаю образ диска ОС RHEL6, который потенциально может быть передан на множество разных компьютеров с идентичным оборудованием (за исключением серийных номеров, таких как MAC). Образ предварительно настроен и копируется после настройки системы. (Так что никакой первой загрузки и т. Д.) После того, как образ будет помещен на жесткий диск, этот жесткий диск может быть размещен на нескольких разных компьютерах.
Я хочу, чтобы все созданные сетевые интерфейсы назывались eth0 независимо от MAC. Я удалил / изменил правила udev для постоянной сети, чтобы гарантировать, что единственный доступный сетевой интерфейс имеет имя eth0. (С правилом persistent-net udev, eth * будет продолжать считать, когда диск передается между компьютерами.) Таким образом, это работает.
Я также хочу, чтобы все эти компьютеры использовали статический IP-адрес. Мне нужно, чтобы IP-адрес был назначен, даже если к компьютеру не подключена действующая сеть. Я изменил ifcfg-eth0, чтобы установить IP-адрес, но он зависит от MAC, поэтому он не работает, когда я перемещаю диск на другой компьютер. (Насколько я могу судить, NetworkManager также зависит от MAC.)
Если в файле ifcfg-eth0 нет строки HWADDR, он отлично работает при перемещении между компьютерами. Я добавил команду RUN в конец моего правила udev, чтобы запустить сценарий, который удалит строку HWADDR из ifcfg-eth0, но это не работает, потому что я почти уверен, что файловая система монтируется только для чтения во время udev, поэтому фактически не может изменить ifcfg-eth0.
Я хочу, чтобы единый сетевой интерфейс на компьютере появлялся при загрузке с предварительно заданным IP-адресом, независимо от текущего MAC. Я думаю, что я действительно близок, но я просто не могу придумать последние биты, чтобы заставить его назначить IP-адрес любому доступному интерфейсу.
РЕДАКТИРОВАТЬ:
ifcfg-eth0:
DEVICE=eth0
IPADDR=10.10.10.10
BROADCAST=10.10.10.255
ONBOOT=yes
NAME=eth0
BOOTPROTO=none
NETMASK=255.255.255.0
TYPE=Ethernet
HWADDR=##:##:##:##:##:##
IPV6INIT=no
USERCTL=no
NM_CONTROLLED=no
Если строка HWADDR совпадает с MAC-адресом компьютера в то время, это нормально. Но если строка HWADDR не соответствует, ядро жалуется при загрузке, говоря:
Bringing up interface eth0: Device eth0 has different MAC address than expected, ignoring. [FAILED]
Если строка HWADDR отсутствует при загрузке, она работает нормально, но в какой-то момент заполняет эту строку автоматически, поэтому в следующий раз, когда вы переместите диск, она не будет работать. Я думал просто использовать sed и удалить строку HWADDR при загрузке во время udev, но из-за файловой системы только для чтения я не думаю, что это действительно хорошая идея (или будет работать).
Установите неизменяемый бит в файле, чтобы его нельзя было изменить (без удаления бита):
chattr + я / и т.д. / sysconfig / сетевые сценарии / ifcfg-eth0