I cloned a CentOS VM(wmware) but couldn't bring the network up, it said "device eth0 does not seem to be present, delaying initialization".
It turns out that the NIC on the cloned VM was being renamed for eth*.
To list the current eth* device:
# ls /sys/class/net
eth* lo
There is a device manager, udev, which stores the settings,When you clone a vm it also changes the mac address of the NIC and as a result the vm sees it as a new NIC and assigns it to /dev/eth*.
As a result, we now have to edit the udev config file as well as the ifcfg-eth0 file to get the newly update virtual NIC card to operate on the eth0 device.
First, edit: /etc/udev/rules.d/70-persistent-net.rules
# This file was automatically generated by the /lib/udev/write_net_rules
# program, run by the persistent-net-generator.rules rules file.
#
# You can modify it, as long as you keep each rule on a single
# line, and change only the value of the NAME= key.
# PCI device 0x15ad:0x07b0 (vmxnet3) (custom name provided by external tool)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:50:56:bc:00:45", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"
# PCI device 0x15ad:0x07b0 (vmxnet3)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:50:56:bc:00:46", ATTR{type}=="1", KERNEL=="eth*", NAME="eth1"
It turns out that the NIC on the cloned VM was being renamed for eth*.
To list the current eth* device:
# ls /sys/class/net
eth* lo
There is a device manager, udev, which stores the settings,When you clone a vm it also changes the mac address of the NIC and as a result the vm sees it as a new NIC and assigns it to /dev/eth*.
As a result, we now have to edit the udev config file as well as the ifcfg-eth0 file to get the newly update virtual NIC card to operate on the eth0 device.
First, edit: /etc/udev/rules.d/70-persistent-net.rules
# This file was automatically generated by the /lib/udev/write_net_rules
# program, run by the persistent-net-generator.rules rules file.
#
# You can modify it, as long as you keep each rule on a single
# line, and change only the value of the NAME= key.
# PCI device 0x15ad:0x07b0 (vmxnet3) (custom name provided by external tool)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:50:56:bc:00:45", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"
# PCI device 0x15ad:0x07b0 (vmxnet3)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:50:56:bc:00:46", ATTR{type}=="1", KERNEL=="eth*", NAME="eth1"
- Check the VM MAC address from vsphere client side and just keep the correct SUBSYSTEM item according to the MAC address you have got.
- Delete the rest of SUBSYSTEM entry in the file.
- Update the 'eth1' attribute in the remaining entry to 'eth0'
- Edit /etc/sysconfig/network-scripts/ifcfg-eth0
- Change the HWADDR to match the new mac address listed in the newly edited 70-persistent-net.rules file.
- Check file "/etc/sysconfig/network" if needs to be updated.
- Run #service network restart
- Reboot