[转] Linux下移动virtualbox虚拟硬盘丢失eth0
在新的virtualbox虚拟机上挂上曾使用过的虚拟硬盘,在启动的时候,发现找不到网卡eth0,
2.怎样解决(How)
回想了在启动virtualbox的时候,系统提示我的Ubuntu文件被移动(位置被改变了),让我确认是moved还是copy的,我当时候选择了默认的(copy)
里面提到了多种解决方案,我最终是选择了sudo rm /etc/udev/rules.d/70-persistent-net.rules ,执行该命令后,重启ubuntu (sudo reboot),然后ifconfig ,出现了ip地址,问题得到解决
3.为什么会出现这样的错误,这样做的原因是什么(Why?)
为什么会产生这个问题呢,还需要从UUID谈起(UUID是指在一台机器上生成的数字,它保证对在同一时空中的所有机器都是唯一的。通常平台会提供生成UUID的API ),虚拟机同样会有一个UUID,而且这个UUID是唯一的。
虚拟机的UUID一般和虚拟机配置文件的位置和物理主机有关。当我们对一个虚拟机系统做移动操作的时候,我们不需要新建一个UUID。让我们复制一个虚拟机的时候我们应该选择建立一个新的UUID,来保证此虚拟机的唯一性
而当我选择了I copied it的时候,VM自然会为我新建一个UUID,一些新的Linux版本是把以太网与Mac地址绑定,当新的UUID建立的时候,Mac地址就被改变了,但由于eth0设备所装载的配置与读取默认配置的Mac地址不一致。
另外的解决方案:进入 /etc/sysconfig/network 或者/etc/sysconfig/network-scripts ,编辑eth0配置文件。比较在配置文件里面的Mac地址与输入ifconfig 输出的mac地址,如果两者不一致,统一为ifconfig输出的mac地址,然后重启
sudo rm /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 keepeachruleona single
- # line,andchange only the value of the NAME=key.
- # PCI device 0x1022:0x2000(pcnet32)
- SUBSYSTEM=="net",ACTION=="add",DRIVERS=="?*",ATTR{address}=="08:00:27:ae:14:85",ATTR{type}=="1",KERNEL=="eth*",NAME="eth0"
- # PCI device 0x1022:0x2000(pcnet32)
- SUBSYSTEM=="net",ACTION=="add",DRIVERS=="?*",ATTR{address}=="08:00:27:b7:46:db",ATTR{type}=="1",KERNEL=="eth*",NAME="eth1"
- # PCI device 0x1022:0x2000(pcnet32)
- SUBSYSTEM=="net",ACTION=="add",DRIVERS=="?*",ATTR{address}=="08:00:27:be:69:6a",ATTR{type}=="1",KERNEL=="eth*",NAME="eth2"
- # PCI device 0x1022:0x2000(pcnet32)
- SUBSYSTEM=="net",ACTION=="add",DRIVERS=="?*",ATTR{address}=="08:00:27:87:12:a0",ATTR{type}=="1",KERNEL=="eth*",NAME="eth3"
将这个/etc/udev/rules.d/70-persistent-net.rules删除,重启,网卡eth0成功启动,并重新生成/etc/udev/rules.d/70-persistent-net.rules文件