今天更新了CoLinux 为最新的稳定版0.7.5,在启动原先0.7.3建立的debian镜像文件时,出现

colinux:~# /etc/init.d/networking restart
>> Reconfiguring network interfaces...SIOCSIFADDR: No such device
>> eth0: ERROR while getting interface flags: No such device
>> SIOCSIFNETMASK: No such device
>> eth0: ERROR while getting interface flags: No such device
>> Failed to bring up eth0.

启动时也有相应的信息。

不管eth0是设置了什么网络,Slirp,tap,pcap或者ndis,都是一样的。

原因:

The problem is: Debian is *trying* to be smart.
Every time CoLinux starts up, it automatically generates a new MAC address
for each adapter, seen here in your log:
configured TAP at '' device as eth0
MAC address: auto generated
configured PCAP bridge at '' device as eth1
MAC address: auto generated
configured Slirp as eth2
MAC address: auto generated
Every time a new MAC address is generated, debian will rename your ethX
device.
Set a MAC address for each adapter in your CoLinux config file and clear
out debian's previous failed network connections.

 

就是说,debian的智能化处理,每次启动时,为每个网卡自动生成一个新的mac地址,而debian就重新生成一个ethx的设备。

而udev系统有个规则,保存在"/etc/udev/rules.d/z25_persistent-net.rules",只允许里面记录的mac地址的网卡生成。所以导致了失败。

 

解决办法:

步骤1.

在CoLinux的配置文件里面,为网卡指定mac地址,即像:

eth0=pcap-bridge,"本地连接",0A:C0:71:65:08:00

其中,使用的是pcap,也可以使用ndis,不需另外安装驱动,其他同pcap一样。

步骤2.

清空"/etc/udev/rules.d/z25_persistent-net.rules"文件的内容。

然后,重启,就可以了。

ps:

经测试,在colinux0.7.5中,步骤1是多余的。

一般,清空上述的udev规则文件,让其重新生成,应该就可以了。

 

参考:Re: No network anmore?: msg#00005 linux.colinux.devel

http://sourceforge.net/tracker/?func=detail&aid=1861876&group_id=98788&atid=622063