我正在创建一个RHEL6 OS磁盘映像,它可能会被传递到具有相同硬件的许多不同计算机(除了诸如MAC之类的序列号之外).图像已预先配置,并在系统设置后复制. (所以没有firstboot等)一旦将图像放置在HDD上,HDD可以放置在多个不同的计算机中.
我希望创建的所有网络接口都被命名为eth0而不管MAC.我已删除/修改了持久网络udev规则,以确保可用的单个网络接口名为eth0. (使用持久网络udev规则,eth *会随着驱动器在计算机之间传递而继续计数.)因此这是有效的.
问题陈述:
我还希望所有这些计算机都使用静态IP地址.即使没有连接到计算机的有效网络,我也需要分配IP地址.我修改了ifcfg-eth0来设置IP地址,但这是依赖于MAC的,所以当我将磁盘移动到另一台计算机时它不起作用. (据我所知,NetworkManager也依赖于MAC.)
如果ifcfg-eth0文件没有HWADDR行,那么它在计算机之间移动时工作正常.我在我的udev规则的末尾添加了一个RUN命令来运行一个脚本,该脚本将从ifcfg-eth0中删除HWADDR行,但这不起作用,因为我很确定文件系统在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行在启动时不存在它可以正常工作,但它会在某个时刻自动填充该行,因此下次移动驱动器时它将无法工作.我想在udev期间使用sed并在启动时删除HWADDR行,但由于只读文件系统,我不认为这实际上是一个好主意(或可行).