我的工控机上有2个网卡接口,用lspci -x,可以在其中找到2个和网卡有关设备,如下:
01:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8111/8168B PCI Express Gigabit Ethernet controller (rev 02)
00: ec 10 68 81 07 04 10 00 02 00 00 02 10 00 00 00
10: 01 ee 00 00 00 00 00 00 04 f0 cf fd 00 00 00 00
20: 0c 00 9f fd 00 00 00 00 00 00 00 00 ec 10 68 81
30: 00 00 00 00 40 00 00 00 00 00 00 00 05 01 00 00
02:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8111/8168B PCI Express Gigabit Ethernet controller (rev 02)
00: ec 10 68 81 07 04 10 00 02 00 00 02 10 00 00 00
10: 01 ce 00 00 00 00 00 00 04 f0 ef fd 00 00 00 00
20: 0c 00 df fd 00 00 00 00 00 00 00 00 ec 10 68 81
30: 00 00 00 00 40 00 00 00 00 00 00 00 0b 01 00 00
显然红色的为vendorID,绿色的是deviceID ,紫色的是subsystem vendorID ,黄色的是subsystem deviceID ,两个网卡的这些参数显然都是相同的;仔细比较,除了基地址不同外,其他都相同,唯一的区别就是挂载在总线的位置不同,linux是如何分辨这2个设备的?根据外设地址?
lyc2010 于 2011-01-20 14:38:29发表:
这个还真不知道
相思爱文 于 2011-01-12 20:24:43发表:
我也忘了在哪看过
wucongdonglai 于 2011-01-12 16:06:50发表:
2# 相思爱文
之前看到一篇关于可热插拔的设备识别的文章,现在找不到了,郁闷
wucongdonglai 于 2011-01-12 16:05:49发表:
3# deepwhite
我估计也是,不然2个一模一样的网卡怎么区分呢
sleeyoyo 于 2011-01-11 23:09:16发表:
linux应该是先探测连接到网络接口上的设备,识别设备后载入设备驱动程序。对于设备,linux是用主设备号和次设备号来标识的,主设备号用于指定设备所用的驱动,次设备号用于指定设备的编号
sxmt1999 于 2011-01-11 19:32:44发表:
linux识别设备肯定根据总线位置区别的
deepwhite 于 2011-01-11 18:44:59发表:
对,他们在系统总线中的地址不同。
[color=Red]01:00.[/color]0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8111/8168B PCI Express Gigabit Ethernet controller (rev 02)
02:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8111/8168B PCI Express Gigabit Ethernet controller (rev 02)
相思爱文 于 2011-01-11 18:12:18发表:
不清楚。
eth0和eth1命名顺序,重启后也可能不一定。