网卡名称排序

news2024/11/30 10:40:36

udev是一种动态设备管理系统,用于在Linux系统中自动管理设备的插拔、识别、配置等操作。它的主要作用是监视系统中的设备事件,并根据设备事件动态地创建、删除或修改系统中的设备节点。

udev的工作原理是通过读取系统中的硬件信息、驱动程序和设备特征信息等,来自动识别和配置设备。当系统中添加或删除设备时,udev会根据设备事件的类型和属性信息来自动更新系统中的设备节点,并自动加载或卸载相应的驱动程序。

udev的主要优点包括:

简化了Linux系统中的设备管理操作,提高了用户的使用体验;
支持动态设备管理,可以在系统运行时自动识别和配置设备,减少了系统管理员的工作量;
支持规则编写,可以为不同类型的设备自动分配名称和特定的配置信息,提高了系统的可维护性和可靠性;
支持自定义脚本,可以通过编写自定义的脚本来对设备进行更加灵活的配置和管理。
在Linux系统中,udev通常作为系统中其他组件(如systemd、HAL等)的底层服务来使用。

/etc/udev/rules.d/70-persistent-net.rules 是一个udev规则文件,它被用来在Linux系统中为网卡设备定义持久的、可预测的名称。该文件是由udev守护进程自动生成并维护的。

在Linux系统中,由于网络接口的名称可能因硬件变化或系统配置的变化而发生变化,这可能会导致系统启动时网卡的名称发生不确定性。为了解决这个问题,udev会在系统启动时检测系统的网络接口并将其匹配到已知的网卡设备名称中。

/etc/udev/rules.d/70-persistent-net.rules 文件包含了每个网卡设备的一些属性信息,例如设备的MAC地址、总线信息、驱动程序等。当udev检测到一个新的网卡设备时,它会根据这些属性信息将其匹配到一个已知的网卡设备名称上,并将该匹配信息写入到/etc/udev/rules.d/70-persistent-net.rules 文件中。

这样,在系统下次启动时,udev将使用该文件中的信息为每个网卡设备分配一个持久的、可预测的名称,从而避免了网络接口名称的不确定性。

当插入新的网络设备时,内核首先识别到,随后在sysfs文件系统(一般挂载在/sys下)中生成该设备对应的信息文件。然后内核通知udev的后台守护进程udevd(若不知道它是什么东西,请认为它是Windows系统中的设备管理器,管理和监视硬件设备),udevd将读取sysfs中对应设备的相关信息,并比对或生成udev的规则集,能匹配上的则做对应的操作。对于网卡来说,CentOS 6上它的的规则集文件默认为/etc/udev/rules.d/70-persistent-net.rules,匹配该规则集成功后,最后还在/sys/class/net目录中生成对应的设备子目录。

1、文件示例

[root@xuexi ~]# cat /etc/udev/rules.d/70-persistent-net.rules
# PCI device 0x8086:0x100f (e1000)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:0c:29:7f:cf:a4", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"
  
# PCI device 0x8086:0x100f (e1000)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:0c:29:7f:cf:ae", ATTR{type}=="1", KERNEL=="eth*", NAME="eth1"

2、手动生成 70-persistent-net.rules
export MATCHADDR=“00:f1:f3:1a:f0:05” eth0网卡的mac地址,一定要小写

export INTERFACE=eth0 eth0网卡名称

/lib/udev/write_net_rules

此时会生成70-persistent-net.rules文件,内容如下

SUBSYSTEM==“net”, ACTION==“add”, DRIVERS==“?", ATTR{address}“00:f1:f3:1a:f0:05”, KERNEL"eth”, NAME=“eth0”

/etc/udev/rules.d/70-persistent-net.rules 和 /etc/udev/rules.d/50-persistent-net.rules 都是udev规则文件,用于在Linux系统中为网卡设备定义持久的、可预测的名称。它们的区别在于生成规则的版本和优先级。

在较早的Linux发行版中,如RHEL 6或CentOS 6,/etc/udev/rules.d/50-persistent-net.rules 文件用于存储网络接口的规则信息,该文件的生成规则是基于网卡的MAC地址进行匹配的。在新的Linux发行版中,如RHEL 7或CentOS 7,/etc/udev/rules.d/70-persistent-net.rules 文件取代了/etc/udev/rules.d/50-persistent-net.rules,其生成规则与旧版相同。

在新版Linux系统中,/etc/udev/rules.d/70-persistent-net.rules 文件具有更高的优先级,因此它将覆盖旧版的/etc/udev/rules.d/50-persistent-net.rules 文件。如果两个文件中都存在相同的规则,则系统将使用/etc/udev/rules.d/70-persistent-net.rules 文件中的规则。

需要注意的是,如果将一个使用了旧版规则的系统升级到新版,则该系统可能会同时包含/etc/udev/rules.d/50-persistent-net.rules 和/etc/udev/rules.d/70-persistent-net.rules 两个文件。在这种情况下,系统会优先使用/etc/udev/rules.d/70-persistent-net.rules 文件中的规则。如果你需要手动编辑这些规则文件,请务必备份原文件,以免意外破坏系统。

如何实现网卡按插槽地址排序

在Linux系统中,可以通过配置udev规则来实现网卡按插槽地址排序的功能。

具体步骤如下:

确定网卡对应的PCI插槽地址。可以使用lspci命令查看系统中的PCI设备信息,其中包含了每个设备对应的插槽地址。

编写udev规则文件,命名为/etc/udev/rules.d/70-persistent-net.rules。可以使用SUBSYSTEM、DRIVER和KERNELS等属性描述符来过滤需要操作的网卡设备。使用ATTR{address}属性描述符来匹配网卡的MAC地址,并使用NAME属性描述符来为网卡设备指定名称。

在规则文件中,可以使用SYMLINK属性描述符来为网卡设备创建符号链接。使用符号链接可以为设备创建更加友好的名称,例如eth0、eth1等。

在规则文件中,可以使用KERNEL=="eth*"等模式匹配符来匹配以"eth"开头的网卡设备,并根据PCI插槽地址的顺序为网卡设备命名,以实现按照PCI插槽地址排序的功能。

例如,一个实现网卡按插槽地址排序的udev规则文件可能如下所示:

# 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, and change only the value of the NAME= key.

SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:11:22:33:44:55", KERNELS=="0000:01:00.0", NAME="eth0"
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="aa:bb:cc:dd:ee:ff", KERNELS=="0000:02:00.0", NAME="eth1"

在以上规则文件中,两个网卡设备分别命名为eth0和eth1,并按照PCI插槽地址的顺序排列。如果需要为这两个网卡设备创建符号链接,可以在规则文件中添加如下条目:

SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:11:22:33:44:55", KERNELS=="0000:01:00.0", NAME="eth0", SYMLINK+="net0"
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="aa:bb:cc:dd:ee:ff", KERNELS=="0000:02:00.0", NAME="eth1", SYMLINK+="net1"

这样,在系统中就会同时存在eth0、eth1和net0、net1两个名称,用户可以根据自己的需要进行选择和使用。

suse 手册,数字越小优先级越高

https://documentation.suse.com/zh-cn/sles/12-SP5/html/SLES-all/cha-udev.html
在这里插入图片描述
udev手册:http://www.jinbuguo.com/systemd/udev.html#

网卡命名

在Linux系统中,网卡设备的命名方式有两种:传统的命名方式和新的预测性命名方式。

传统的命名方式使用网卡接口的硬件名称(如eth0、eth1等)来标识每个网卡设备。这种方式基于网卡设备的物理接口名称,因此对于拥有多个网卡设备的系统,可能会出现重复的命名,或者无法预测的命名。

新的预测性命名方式(Predictable Network Interface Names)则使用一种基于设备属性的算法来命名网卡设备。这种方式可以根据网卡设备的属性,例如PCIe插槽地址、MAC地址等来进行命名,从而避免了传统命名方式中可能出现的重名问题。新的预测性命名方式也更加可读性强,易于管理。

新的预测性命名方式下,网卡设备的命名规则可以使用以下两种方式之一:

使用enpXsY命名方式:其中X是PCIe插槽地址,Y是网卡接口的名字(如a、b、c等)。例如,enp1s0f0表示PCIe插槽地址为1的第一个网卡接口。

使用自定义名称:可以通过修改udev规则来指定网卡设备的名称。例如,可以创建一个名为/etc/udev/rules.d/10-network.rules的udev规则文件,内容如下:

ACTION==“add”, SUBSYSTEM==“net”, DRIVERS==“?*”, ATTR{address}==“00:11:22:33:44:55”, NAME=“mydevice”
上述规则将根据网卡设备的MAC地址(00:11:22:33:44:55)将其命名为mydevice。可以根据实际需求修改属性值以及自定义的名称。

在Linux系统中,网卡的命名遵循一定的规则,通常是通过规则文件实现的。

在早期版本的Linux系统中,网卡的命名方式是根据网卡的驱动名称来命名的,例如eth0、eth1、wlan0等。这种命名方式存在一些问题,例如当系统引入新的驱动程序时,会导致网卡名称的变化,从而影响到系统的配置和管理。

因此,自从Linux 2.6.25内核版本开始,引入了一种新的网卡命名方式,即根据网卡的MAC地址或PCIe插槽地址进行命名。这种命名方式使用较长的名称,如enp0s3、eno1等,使得网卡名称更加稳定,易于管理和配置。

具体来说,网卡的命名规则如下:

如果存在固定的命名规则,即在/etc/udev/rules.d/目录下已经存在对应的规则文件,那么系统会根据规则文件中的命名规则进行命名。

如果没有规则文件,则系统会按照以下顺序进行命名:

基于PCIe插槽地址进行命名,形如enp0s3、eno1等。
基于MAC地址进行命名,形如ens33、enp2s0等。
基于驱动名称进行命名,形如eth0、wlan0等。
总之,Linux系统中的网卡命名是一个动态的过程,系统会根据规则文件或者一定的规则对网卡进行命名,以确保网卡名称稳定、易于管理和配置。

可以通过PCIe插槽地址实现网卡的命名,具体实现步骤如下:

找到每个网卡设备的PCIe插槽地址。可以使用以下命令查询:

readlink /sys/class/net/<interface>/device

其中,是网卡设备的名称,如enp0s3、eth0等。

例如,对于enp0s3网卡设备,可以使用以下命令查询PCIe插槽地址:

readlink /sys/class/net/enp0s3/device
../../../0000:00:03.0

上述输出中,0000:00:03.0就是该网卡设备所在的PCIe插槽地址。

编写udev规则文件。在/etc/udev/rules.d/目录下创建一个规则文件,例如70-persistent-net.rules,写入以下规则:

ACTION=="add", SUBSYSTEM=="net", SUBSYSTEMS=="pci", KERNELS=="0000:00:03.0", NAME="eth0"

其中,KERNELS属性指定了PCIe插槽地址,NAME属性指定了命名规则。

上述规则中,eth0是网卡设备的新名称。如果有多个网卡设备,可以分别编写对应的规则。

重启系统或重新加载udev规则。

$ sudo udevadm control --reload
$ sudo udevadm trigger

重新加载udev规则后,系统会根据规则对网卡设备进行重新命名,以使其按照PCIe插槽地址排序。

网卡名称命名原理和修改方法 https://blog.csdn.net/jerryleon007/article/details/123401643

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/512170.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

AI天后,在线飙歌,人工智能AI孙燕姿模型应用实践,复刻《遥远的歌》,原唱晴子(Python3.10)

忽如一夜春风来&#xff0c;亚洲天后孙燕姿独特而柔美的音色再度响彻华语乐坛&#xff0c;只不过这一次&#xff0c;不是因为她出了新专辑&#xff0c;而是人工智能AI技术对于孙燕姿音色的完美复刻&#xff0c;以大江灌浪之势对华语歌坛诸多经典作品进行了翻唱&#xff0c;还原…

李沐论文精度系列之九:InstructGPT

文章目录 一、背景1.1 时间线1.2 ChatGPT功能展示1.3 指示学习&#xff08;Instruct Learning&#xff09;和提示&#xff08;Prompt Learning&#xff09;学习1.4 人工反馈的强化学习&#xff08;RLHF&#xff09; 二、摘要三、导言3.1 算法3.2 结论 四、方法和实验细节4.1 数…

【数据结构与算法】树和二叉树

1 树 1.1 术语 关系术语 孩子结点 —— 子树的根 父结点 兄弟结点 —— 同一个结点的孩子结点互为兄弟 祖先结点 后代结点 层次类术语 根的层次为1 其余结点的层次为其父结点层次加1 高度/深度 —— 整个树中结点的最大层次 度 —— 结点的孩子数目称为结点的度 叶子&#xf…

Smartbi携手广州轻工集团打造集团价值创造型总部

广州轻工工贸集团有限公司&#xff08;简称“广州轻工集团”&#xff09;是广州市第一家工贸合一的大型企业集团公司&#xff0c;最早起源于1950年9月成立的广州市合作事业管理局&#xff0c;逐渐演化形成广州市轻工业局。1995年10月&#xff0c;广州市轻工业局成建制改建为经济…

spring-transaction源码分析(3)Transactional事务失效原因

问题概述 在Transactional方法中使用this方式调用另一个Transactional方法时&#xff0c;拦截器无法拦截到被调用方法&#xff0c;严重时会使事务失效。 类似以下代码&#xff1a; Transactional public void insertBlogList(List<Blog> blogList) {for (Blog blog : …

【人工智能】在VScode中使用AI插件Bito,功能与ChatGPT类似

文章目录 前言一、到官网下载VScode软件二、VScode软件安装步骤三、Bito插件下载与VScode软件中的使用四、注册Bito 前言 之前在VScode中使用ChatGPT中文版&#xff0c;后来要注册与收费&#xff0c;可采用一些ChatGPT中文版的替代插件。 后发现BitoAI插件功能同样强大&#…

港联证券|断臂、收缩、变阵 “中植系”何去何从?

经历灵魂人物猝然离世的巨震&#xff0c;国内最老牌资本系之一的“中植系”&#xff0c;尚未显露出穿越周期的企稳之象&#xff0c;似仍在风雨飘摇。 投资端&#xff0c;随着监管持续升级与注册制改革全面推进&#xff0c;“中植系”惯用“PE上市公司”以低买高卖的资本套利模式…

流水线三维可视化运维,装配自动化提质增效 | 设备产线管理合集

为大家带来图扑智慧生产线/设备流水线合集。依托图扑对设备加工、物流输送、车辆装配等多个车间流水线进行 3D 可视化展示&#xff0c;通过数字孪生技术推动行业数字化转型升级。 智慧仓储产线 智慧仓储产线通过对仓储现场的数字化建模&#xff0c;利用先进的物联网、大数据、…

外贸网站Magento存在漏洞导致网站被攻击入侵的防护办法

Magento是最受欢迎的外贸电商框架之一&#xff0c;很多企业已经在其基础上进行了二次开发。然而&#xff0c;对于使用2.x版本的老系统来说&#xff0c;安全问题也成为了一大难题。有些客户在找我们SINESAFE做网站安全服务之前&#xff0c;客户也找过建站的公司去清除后门&#…

学习CSS3实现夜空UFO特效,带着心上人去太空旅行

记得那是在一个夜晚&#xff0c;我下班比较晚&#xff0c;行走在空荡的街道&#xff0c;不由想起了何润东“直到整条街上剩我和路灯”的歌声&#xff0c;就这么往前走着。我走哇走&#xff0c;走哇走&#xff0c;突然&#xff0c;一道光划过&#xff0c;你猜我看见了什么&#…

GNN图神经网络

文章目录 GNN图神经网络的元素消息传递方式 GCN消息传递方式 GAT消息传递机制 GNN 图神经网络的元素 节点&#xff0c;邻接矩阵 为什么要计算多层 邻居的邻居&#xff0c;融合多阶邻居特征 消息传递方式 图神经网络是一个相对宽泛的概念&#xff0c;本质是每个节点embeddi…

【Linux】Linux下安装Docker(图文解说详细版)

文章目录 一、前言二、Docker的三要素Docker镜像Docker仓库Docker容器 三、Docker的安装1. 确定Linux版本2.安装Docker3.测试是否安装成功4.配置下载docker镜像的仓库5.测试HelloWorld镜像 一、前言 Docker是近年来新兴的虚拟化工具&#xff0c;它可以和虚拟机一样实现资源和系…

【教程】用 HTML JavaScript 制作 2.5D 迷宫游戏地图

我写了一个能够随机生成迷宫的算法&#xff0c;得到了用户很好的反响&#xff0c;对大家有所帮助。我现在想将这个迷宫以2.5D游戏地图的方式呈现出来。最初我考虑使用CSS来实现这个目标&#xff0c;但效果并不太理想&#xff0c;因为我无法只将它渲染成背景&#xff0c;而不对整…

洛谷B2096 直方图

直方图 题目描述 给定一个非负整数数组&#xff0c;统计里面每一个数的出现次数。我们只统计到数组里最大的数。 假设 F m a x &#xff08; F m a x ≤ 100000 &#xff09; Fmax&#xff08;Fmax \le 100000&#xff09; Fmax&#xff08;Fmax≤100000&#xff09;是数组…

scratch绘制直尺 中国电子学会图形化编程 少儿编程 scratch编程等级考试四级真题和答案解析2023年3月

目录 scratch绘制直尺 一、题目要求 1、准备工作 2、功能实现 二、案例分析

NSSCTF之Misc篇刷题记录⑨

NSSCTF之Misc篇刷题记录⑨ [GKCTF 2021]签到[NISACTF 2022]bmpnumber[领航杯江苏省赛 2021]签到题[鹤城杯 2021]Misc2[鹤城杯 2021]A_MISC[GXYCTF 2019]CheckIn[HDCTF 2023]hardMisc[NSSRound#1 Basic]cut_into_thirds[闽盾杯 2021]Modbus的秘密[NISACTF 2022]神秘数字[INSHack…

asp.net+C#超市商品进销存管理系统

本超市商品管理系统主要超市内部提供服务&#xff0c;系统分为管理员员工两部分。 本研究课题重点主要包括了下面几大模块&#xff1a;管用户登录&#xff0c;员工管理&#xff0c;商品管理&#xff0c;进货管理&#xff0c;销售管理&#xff0c;供应商信息&#xff0c;会员信…

2023年6月DAMA-CDGP数据治理专家认证考试,火热报名中

目前6月18日CDGA&CDGP考试目前开放的城市有&#xff1a;北京、上海、广州、深圳、长沙、呼和浩特、杭州、南京、济南、成都、西安、武汉、天津。 新增了武汉、天津这2个城市。另外合肥、厦门、长春等地区还在接近开考人数中&#xff0c;打算参加6月考试的朋友们可以抓紧时间…

前端HTML学习笔记(一)

1、基础知识 网页概述&#xff1a;1、HTML概念&#xff1a;HTML (Hyper Text Markup Language)中文译为超文本标记语言专门用于网页开发的语言&#xff0c;主要通过HTML标签对网页中的文本、图片、音频、视频等内容进行描述。2、网页通常由文字、图片、音频、视频、超链接等部…

Julia入门-0、在Windows下安装Julia

文章目录 0、前言1、相关网站2、Windows 系统下安装Julia3、Julia 交互式命令窗口 0、前言 Julia 是一个面向科学计算的高性能动态高级程序设计语言。 Julia 最初是为了满足高性能数值分析和计算科学的需要而设计的&#xff0c;不需要解释器&#xff0c;速度快。 1、相关网站…