linux 虛擬機拷貝後啟動後使用ifconfig命令顯示:
[root@localhost ~]# ifconfig
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)
[root@localhost ~]#
使用service network restart 命令顯示:
[root@localhost ~]# service network restart
Shutting down interface eth0: [ OK ]
Shutting down loopback interface: [ OK ]
Bringing up loopback interface: [ OK ]
Bringing up interface eth0:device "eth0" does not seem to be present, delaying initialization.
[root@localhost ~]#
這說明沒有虛擬機拷貝後開機時虛擬出來的新的網卡沒有正常工作。
這裡做一下說明:
每一個虛擬機會有一網卡,當我們先創建虛擬機再安裝linux系統,那麼安裝過程中系統會檢測當前機器(系統並不知道這是個虛擬機還是實體機)的各個硬件並自動初始化完成配置。這時的配置一般是正確的。當我們把這個安裝完系統的虛擬機,拷貝到另一個位置後再打開。這相當於把原來一台電腦拿到了另一個地方,但有一點不一樣。拷貝來的虛擬機在新的宿主機上運行時會自動由虛擬機軟件虛擬出來一個新的網卡。這一次相當於把原來那台電腦換了一個網卡,而系統還是原來的,所以系統的網絡配置文件裡保存的還是之前的網卡信息。所以就出現在了上面的情況。
那麼我們可以做什麼呢?
我們可以在/etc/udev/rules.d/目錄下找到70-persistent-net.rules
我們可以cat 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 0x1022:0x2000 (pcnet32)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:0c:29:78:86:e9", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"
這個文件是自動生成的。其中這個設備的mac為00:0c:29:78:86:e9,而我們cat /etc/sysconfig/network-scripts/ifcfg-eth0 可以看到這裡面的mac和70-persistent-net.rules中的不一樣。
所以我們開機後來配置網絡時用的是這個/etc/sysconfig/network-scripts/ifcfg-eth0腳本,這個腳本中用到的是一個不存在的網卡所不能上網。所以我們只把mac改成自動檢測到的那個網絡設備就的mac就行了。