分页: 1 / 1

两块网卡启动后顺序混乱的问题,百思不得其解。

发表于 : 2006-09-20 17:00
flytod
三台硬件一样的机器,板载一个网卡,主板pci上插了一块网卡。
两台装了桌面版A,B,一台C是server版本。

A,B上在Gnome上的图形管理界面中总识别出来是eth2,和eth3。而且每次启动的时候,两块网卡的顺序会换一下。这两块网卡,配置的是不同网段的机器,这让实际工作中碰到了很大的问题。现在每次启动一下就要去换一下网线。

从dmesg |grep eth 看:

dmesg |grep eth
[4294671.526000] Driver 'sd' needs updating - please use bus_type methods
[4294684.228000] eth0: RealTek RTL8139 at 0xf8962100, 00:16:76:80:08:34, IRQ 177
[4294684.228000] eth0: Identified 8139 chip type 'RTL-8101'
[4294684.229000] eth1: RealTek RTL8139 at 0xf8964000, 00:e0:4c:26:da:d6, IRQ 217
[4294684.229000] eth1: Identified 8139 chip type 'RTL-8139C'
[4294684.642000] eth2: link up, 100Mbps, full-duplex, lpa 0x41E1
[4294685.125000] eth3: link up, 100Mbps, full-duplex, lpa 0x41E1
[4294700.674000] hda-intel: Invalid position buffer, using LPIB read method instead.
[4294707.620000] eth3: no IPv6 routers present
[4294708.422000] eth2: no IPv6 routers present
[4295614.052000] eth3: link down
[4295615.632000] eth2: link down
[4295617.281000] eth3: link up, 100Mbps, full-duplex, lpa 0x41E1
[4295619.571000] eth2: link up, 100Mbps, full-duplex, lpa 0x41E1


而服务器C (只插了一根网线)上 dmsg |grep eth 看到的情况是:

[42949378.250000] Driver 'sd' needs updating - please use bus_type methods
[42949385.220000] eth0: RealTek RTL8139 at 0xf88ac100, 00:16:76:80:07:a5, IRQ 11
[42949385.220000] eth0: Identified 8139 chip type 'RTL-8101'
[42949385.220000] eth1: RealTek RTL8139 at 0xf88ee000, 00:e0:4c:20:e0:95, IRQ 11
[42949385.220000] eth1: Identified 8139 chip type 'RTL-8139C'
[42949385.490000] eth0: link up, 100Mbps, full-duplex, lpa 0x41E1
[42949405.920000] eth0: no IPv6 routers present


尝试使用在 /etc/network/interfaces 的map命令来解决。但未果。

map eth0 到abc,然后在命令行下 ifup abc 结果说没有abc这个driver。

发表于 : 2006-09-21 15:43
flytod
顶一下,顶一下。

发表于 : 2006-09-21 16:12
eexpress
记得是需要在/network/interface里面对应网卡用alias指定物理地址。也可能是其他配置文件。但是alias eth0 xxxx是确定的。

发表于 : 2006-09-22 11:53
flytod
目前好像内核提供出来的只有eth2和eth3。
使用ifup eth0,得到Ignoring unknown interface eth0=eth0.

在linuxsir问过,找到原因了

发表于 : 2006-09-22 16:40
flytod
我这三台机器,一台原装,两台ghost安装的。
所以/etc/iftab的eth0,eth1都写的是第一台机器上的mac地址的。
结果A,B启动的时候,因为eth0,eth1都指定了,就自动顺延取名为eth2,eth3了。
顺延的时候,顺序就不能保证了。修改一下这个文件,换成自己机器上的MAC地址。
现在全部OK了。

发表于 : 2006-09-22 16:56
eexpress
哦。是iftab。 :lol: 没双网卡的,不会记得这些。

发表于 : 2007-09-12 8:56
ksfksf
多个同类型设备(网卡,声卡)每次启动的都不同
因为udev同时加载所有模块,所以一些设备可能初始化顺序不同。例如同时有两个网卡时,它们总是在eth0和eth1之间变来变去。

常用的解决办法是在您的rc.conf文件中通过修改MODULES队列来指明顺序。这个队列里的模块将在udev自动加载之前由系统加载,因此您可以控制模块在启动时加载顺序。

# 在e100之前加载8139too
MODULES=(8139too e100)另一个解决网卡的方法是使用udev-sanctified方法为每个网卡静态命名。创建文件/etc/udev/rules.d/10-network.rules然后将不同的网卡通过MAC地址绑定到不同的名字上:

SUBSYSTEM=="net", SYSFS{address}=="aa:bb:cc:dd:ee:ff", NAME="lan0"
SUBSYSTEM=="net", SYSFS{address}=="ff:ee:dd:cc:bb:aa", NAME="wlan0"同时,您需要注意以下内容:

您可以通过下面的命令获得网卡的MAC地址:: udevinfo -a -p /sys/class/net/<你的网卡>
注意在udev规则文件中使用小写的16进制MAC地址,因为udev无法识别大写的MAC地址。
一些用户在使用旧的命名方式时出现问题,例如: eth0, eth1, 等等. 如果出现这个问题,试试使用 "lan"或者"wlan"之类的名字.
注意不要忘记修改您的/dec/rc.conf和其它使用ethX命名的配置文件。

发表于 : 2007-09-12 8:58
ksfksf
debian 的修改文件在
/etc/udev/rules.d/z25_persistent-net.rules
文件内容如下:
# This file was automatically generated by the /lib/udev/write_net_rules
# program, probably run by the persistent-net-generator.rules rules file.
#
# You can modify it, as long as you keep each rule on a single line.
# MAC addresses must be written in lowercase.

# PCI device 0x8086:0x2449 (e100)
SUBSYSTEM=="net", DRIVERS=="?*", ATTRS{address}=="00:20:ed:ab:36:7f", NAME="eth0"

# PCI device 0x10b7:0x9055 (3c59x)
SUBSYSTEM=="net", DRIVERS=="?*", ATTRS{address}=="00:01:02:98:82:91", NAME="eth1"