【转】Linux - udev 網絡介面卡的順序

有時要設定網卡 IP 時常常會搞不清楚哪個是哪張卡.下面可以看的出來嗎??是我就不行了.

再加上之前遇到一個問題就是網絡介面卡的順序,不知道系統是怎麼偵測的,常常在開關機後順序大亂,寫信詢問 RedHat 他們建議我們可以使用 udev.來為每個裝置個別命名.其實概念很簡單先找出目前的網路卡順序.

[[email protected] ~]# cat /etc/moprobe.conf
alias eth0 tg3
alias eth1 e1000e
alias eth2 e1000e

目前我的網卡分別是 Broadcom - eth0 , Intel - eth1/eth2   3(eth0/eth1/eth2)個阜.接下來看一下 eth0 在 udev 儲存了哪些資訊.可以使用指令 "udevinfo" 查看.

[[email protected] ~]# udevinfo -ap /sys/class/net/eth0
Udevinfo starts with the device specified by the devpath and then
walks up the chain of parent devices. It prints for every device
found, all possible attributes in the udev rules key format.
A rule to match, can be composed by the attributes of the device
and the attributes from one single parent device.

looking at device ‘/class/net/eth0‘:
    KERNEL=="eth0"
    SUBSYSTEM=="net"
    SYSFS{weight}=="64"
    SYSFS{tx_queue_len}=="1000"
    SYSFS{flags}=="0x1003"
    SYSFS{mtu}=="1500"
    SYSFS{operstate}=="up"
    SYSFS{dormant}=="0"
    SYSFS{carrier}=="1"
    SYSFS{broadcast}=="ff:ff:ff:ff:ff:ff"
    SYSFS{address}=="00:1a:64:22:04:83"
    SYSFS{link_mode}=="0"
    SYSFS{type}=="1"
    SYSFS{features}=="0x1101a9"
    SYSFS{ifindex}=="4"
    SYSFS{iflink}=="4"
    SYSFS{addr_len}=="6"

looking at parent device ‘/devices/pci0000:00/0000:00:1c.1/0000:03:00.0‘:

    ID=="0000:03:00.0"
    BUS=="pci"
    DRIVER=="tg3"
    SYSFS{broken_parity_status}=="0"
    SYSFS{enable}=="1"
    SYSFS{modalias}=="pci:v000014E4d0000165Asv00001014sd00000378bc02sc00i00"
    SYSFS{local_cpus}=="00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000"
    SYSFS{irq}=="58"
    SYSFS{class}=="0x020000"
    SYSFS{subsystem_device}=="0x0378"
    SYSFS{subsystem_vendor}=="0x1014"
    SYSFS{device}=="0x165a"
    SYSFS{vendor}=="0x14e4"

looking at parent device ‘/devices/pci0000:00/0000:00:1c.1‘:
    ID=="0000:00:1c.1"
    BUS=="pci"
    DRIVER=="pcieport-driver"
    SYSFS{broken_parity_status}=="0"
    SYSFS{enable}=="1"
    SYSFS{modalias}=="pci:v00008086d0000294Asv00000000sd00000000bc06sc04i00"
    SYSFS{local_cpus}=="00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000"
    SYSFS{irq}=="209"
    SYSFS{class}=="0x060400"
    SYSFS{subsystem_device}=="0x0000"
    SYSFS{subsystem_vendor}=="0x0000"
    SYSFS{device}=="0x294a"
    SYSFS{vendor}=="0x8086"

looking at parent device ‘/devices/pci0000:00‘:
    ID=="pci0000:00"
    BUS==""
    DRIVER==""

udev 可以依據裝置特性來個別命名,也就是說剛剛的 eth0 MAC 為 "00:1a:64:22:04:83" 我們就可以依據這個裝置所提供的資訊來個別命名我們網路卡.udev 的設定檔存放在 /etc/udev/rules.d/ 系統已經有一個是專門為網路卡預設的檔案 "60-net.rules"

[[email protected] ~]# cd /etc/udev/rules.d/

60-net.rules 是系統預設的  rule

[[email protected] rules.d]# ll
total 248
-rw-r--r-- 1 root root   515 Sep 12 17:34 05-udev-early.rules
-rw-r--r-- 1 root root   920 Dec 11 06:03 40-multipath.rules
-rw-r--r-- 1 root root 15647 Sep 12 17:34 50-udev.rules
-rw-r--r-- 1 root root   163 Dec  4 05:32 51-dlm.rules
-rw-r--r-- 1 root root   471 Sep 12 17:34 51-hotplug.rules
-rw-r--r-- 1 root root 58016 Oct 13  2006 60-libsane.rules
-rw-r--r-- 1 root root   143 Nov 13 23:48 60-net.rules
-rw-r--r-- 1 root root  1088 Jul 18  2006 60-pcmcia.rules
-rw-r--r-- 1 root root   452 Nov 26 07:15 60-raw.rules
-rw-r--r-- 1 root root  8209 Sep 22 22:39 60-wacom.rules
-rw-r--r-- 1 root root   129 Sep 10 00:11 61-uinput-stddev.rules
-rw-r--r-- 1 root root   214 Sep 10 00:11 61-uinput-wacom.rules
-rw-r--r-- 1 root root  1823 Sep 19 06:20 85-pcscd_ccid.rules
-rw-r--r-- 1 root root   114 Aug 29  2008 90-alsa.rules
-rw-r--r-- 1 root root    61 Sep 12 17:34 90-dm.rules
-rw-r--r-- 1 root root    82 Oct 10 21:20 90-hal.rules
-rw-r--r-- 1 root root   331 Oct 15 00:08 90-ib.rules
-rw-r--r-- 1 root root   107 Sep 12 17:34 95-pam-console.rules
-rw-r--r-- 1 root root   292 Dec 10 03:27 98-kexec.rules
-rw-r--r-- 1 root root  2319 Jul  9  2008 bluetooth.rules
-rw-r--r-- 1 root root   590 Dec 19 02:16 xen-backend.rules

好的我們現在就依 "udevinfo" 所提供的資訊進行裝置名稱改變,我會依據系統的 driver 和 PCI Bus 順序來為我的網卡命名.還記得 eth0 的資訊嗎?
ID=="0000:03:00.0"
DRIVER=="tg3"

其他 eth1 /eth2 都是使用同樣的方法 "udevinfo" 查出 ID 和 Driver

[[email protected] rules.d]# vi 60-net.rules
ACTION=="add", SUBSYSTEM=="net", IMPORT{program}="/lib/udev/rename_device"
SUBSYSTEM=="net", RUN+="/etc/sysconfig/network-scripts/net.hotplug"
DRIVER=="tg3", ID=="0000:03:00.0", NAME="BCM1"
DRIVER=="e1000e", ID=="0000:09:00.0", NAME="INTEL0"
DRIVER=="e1000e", ID=="0000:09:00.1", NAME="INTEL1"

重新將模組移除和載入.

[[email protected] rules.d]# rmmod tg3
[[email protected] rules.d]# rmmod e1000e 
[[email protected] rules.d]# modprobe tg3
[[email protected] rules.d]# modprobe e1000e
[[email protected] rules.d]# ifconfig -a|grep -i HWaddr

BCM1      Link encap:Ethernet  HWaddr 00:1A:64:22:04:83
INTEL0    Link encap:Ethernet  HWaddr 00:15:17:78:5D:D6
INTEL1    Link encap:Ethernet  HWaddr 00:15:17:78:5D:D7
virbr0    Link encap:Ethernet  HWaddr 00:00:00:00:00:00

你會發現名稱都依據你的需求改變了. 當然方式是千千萬萬種你也可以依據 MAC Address 的方式作依據.
#KERNEL=="eth*", SYSFS{address}=="00:1a:64:22:04:83", NAME="BCM1"
不過工作還沒完成在 /etc/sysconfig/network-scripts/ 目錄下還是有之前儲存下來的裝置名稱,可以用手動方式移除修改或是用 #system-config-network 來修改!!

时间: 2024-08-02 00:29:50

【转】Linux - udev 網絡介面卡的順序的相关文章

I.MX6 Linux udev porting

/*********************************************************************** * I.MX6 Linux udev porting * 声明: * 在嵌入式产品上,我们可以使用mdev来解决热插拔的问题,同时也经常看到 * udev,所以尝试来移植一下,但是最终发现她会丢失内核阶段产生的uevent, * 这导致无法生成内核阶段产生的设备节点,目前采用了mdev来做完成内核阶段的 * 设备节点生成,之后使用udev完成热插拔,这

bzoj 1305: [CQOI2009]dance 二分+網絡流判定

1305: [CQOI2009]dance跳舞 Time Limit: 5 Sec  Memory Limit: 162 MBSubmit: 1340  Solved: 581[Submit][Status] Description 一次舞会有n个男孩和n个女孩.每首曲子开始时,所有男孩和女孩恰好配成n对跳交谊舞.每个男孩都不会和同一个女孩跳两首(或更多)舞曲.有一些男孩女孩相互喜欢,而其他相互不喜欢(不会“单向喜欢”).每个男孩最多只愿意和k个不喜欢的女孩跳舞,而每个女孩也最多只愿意和k个不喜

linux系统vsftpd登陆慢卡怎么办

linux系统vsftpd登陆慢卡怎么办 浏览:145 | 更新:2013-12-31 00:50 vsftpd是linux系统中的一款ftp软件,用它可以实现文件,数据上传与下载,但有些用户会发现vsftpd登录非常的慢,一停一停的,那么如何解决vsftpd登陆慢卡问题呢? 1.修改服务器上的/etc/resolv.conf令其内容只有类似 nameserver 192.81.133.229 nameserver 114.114.114.114 出现问题的机器的resolv.conf中总是含有

3G網絡容量和業務承載的壓力大大增加!

在移動通信話音業務繼續保持發展的同時,對IP和高速數據業務的支持已經成為移動通信系統演進的方向.移動數據業務是推動目前移動通信技術發展的主要動力,TD-LTE作為準4G技術,以提高數據速率和頻譜利用率為中心目標,以OFDM為核心技術,採用扁平網絡結構,在20MHz信道寬度下使下行峰值速率提高到100Mbps.如何引入LTE網絡,成為運營商所關心的重點問題. 2 TD-LTE業務背景3G網絡的規模化應用推動了移動數據業務的井噴式增長,移動數據業務收入已經成為運營商業務發展的重點.與此同時,移動數據

Linux/Centos7RAID磁盘阵列与阵列卡

Linux/Centos7RAID磁盘阵列与阵列卡 一.RAID概念? RAID--独立磁盘冗余阵列(Redundant Array of Independent Disks),原本叫做廉价磁盘冗余阵列.RAID 的基本思想是将多个容量较小.相对廉价的磁盘进行有机组合,从而以较低的成本获得与昂贵大容量磁盘相当的容量.性能.可靠性.随着磁盘成本和价格的不断降低, RAID 可以使用大部分的磁盘, "廉价" 已经毫无意义.所以RAID咨询委员会使用"独立"代替"

Linux学习之CentOS 7----网卡的配置

[正文] Linux系统版本:Centos 6.5 Linux系统版本:Centos 7 前面,我们使用远程工具SecureCRT,通过“ifconfig eth0 + 具体的ip地址”命令给linux配了IP地址(参考本人博客:远程登录管理工具SecureCRT的使用 ),但是这样配置的问题在于: 只能临时生效,一旦重启,需要重新配置: 只能配置ip地址和子网掩码,可以连接内网,是无法连接外网的. 如果想要连接外网,ip地址.子网掩码.网关.DNS缺一不可.今天来讲,如何真正的给CentOS配

定义磁盘设备的名称 linux udev

https://www.cnblogs.com/alantu2018/p/9059761.html 例如:内核产生了sda设备名,而根据信息,这个设备对应于是我的内置硬盘,那我就可以制定udev规则,让udev除了产生/dev/sda设备文件外,另外创建一个符号链接叫/dev/internalHD.这样,我在fstab文件中,就可以用/dev/internalHD来代替原来的 /dev/sda了.下次,由于某些原因,这个硬盘在内核中变成了sdb设备名了,那也不用着急,udev还会自动产生/dev

navicate连接Linux下mysql慢,卡

方法,网上的办法是在my.ini的“[mysqld]”下面加入一行“skip-name-resolve”,就像这样: 然后保存并重启mysql服务即可. service mysqld restart 所谓反向解析是这样的:mysql接收到连接请求后,获得的是客户端的ip,为了更好的匹配mysql.user里的权限记录(某些是用hostname定义的).如果mysql服务器设置了dns服务器,并且客户端ip在dns上并没有相应的hostname,那么这个过程很慢,导致连接等待. 添加skip-na

linux基础学习-6.2-网卡配置文件

1.网卡的配置文件 [[email protected] ~]# #/etc/sysconfig/网络-脚本/ifcfg-eth0 [[email protected] ~]# #config [[email protected] ~]# #c f g [[email protected] ~]# ll /etc/sysconfig/network-scripts/ifcfg-eth0 -rw-r--r--. 3 root root 229 Oct 16 16:55 /etc/sysconfig