【案例实操】银河麒麟桌面操作系统实例分享,V10SP1重启后网卡错乱解决方法
1.问题现象
8 个网口, 命名从 eth1 开始到 eth8。 目前在系统 grub 里面加了 net.ifnames=0 biosdevname=0 参数, 然后在 udev 规则中加了一条固定网卡和硬件 pci 设备号的规则文件。 最后在 rc.local 中加了两条重新安装网卡驱动的命令( rmmod igb && modprobe igb) 。 然后重启就会生效。 但是重复开关机 10-20次后就会出现网卡顺序乱的情况、 比如说 eth5 没了, 多了一个 eth0。 然后重
启又好了。
udev 规则如下:

grub 参数如下:

2.问题分析
1) 测试环境重装 v10-desktop-sp1-2107 系统, 添加 8 块网卡, 重启后可以看到ip 信息如下:

查看 dmesg 日志, 可以看到 8 块网卡初始化 eth0-7,然后被预设的命名规则重命名为 ens33、 ens38、 ens39、 ens40、 ens41、 ens42、 ens43、 ens44

2) 此时如果在grub中不加net.ifnames=0 biosdevname=0参数, 但是添加如下udev规则, eth 命名和默认命名倒叙对应( 如: udev 规则中设置, eth7 对应原本默认 eth0 的 mac 地址, eth0 对应原本 eth7 的 mac 地址)

查看 ip 信息:

查看 dmesg 信息:

可以看到 grub 中不加 net.ifnames=0 biosdevname=0 参数情况下, 配置修改网卡名的 udev 规则, 网卡名从 eth7-0, 没有生效, 还是用预设的命名方式( ensxx)命名。
3)此时规则还是不变, grub 中增加 net.ifnames=0 biosdevname=0 参数

ip 信息如下:

dmesg 信息如下:

网卡名从 ensxx 变成 ethxx 可知 , grub 增加了 net.ifnames=0 biosdevname=0 参数后,预设的重命名规则失效了,但是 8 块网卡, udev 规则里面还是 eth0-7 的话, 还是会用内核默认的命名方式, 此时 udev 规则不生效
4) 如果 udev 规则中, 网卡名从 eth0-7 改成 eth1-8,后, 规则如下:

ip 信息如下:

dmesg 信息如下:

此时可以看到, eth8 由 eth7 重命名而来, eth7 由 eth6 重命名而来, eth6 由eth5 重命名而来, 而 eth5 并不是其他网卡重命名而来, 所以 eth5 丢失。
5) 此时, 我们修改 udev 规则如下:

ip 信息如下:

dmesg 信息如下:

可以看到, eth8 是由 eth0 重命名而来, 因为 eth8 原本不存在, 所以可以从 eth0命名而来, 但是如果/usr/sbin/nameif eth7 00:0c:29:75:54:3c 重命名的话, 由于00:0c:29:75:54:3c 为原本的 eth1( 存在) , eth7 也是存在的, 所以此命名不会成功。 这也就是上面虽然在 /usr/bin/nameif.sh 中加了 8 条重命名的规则, 只有第一条生效的原因。
3. 解决方案
方案一
1) 添加 udev 规则
| vim /etc/udev/rules.d/70-persistent-net.rules |
添加如下内容
| SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", RUN+="/usr/bin/nameif.sh" |

2) grub 添加参数: biosdevname=0 net.ifnames=0

3) 创建 /usr/bin/nameif.sh 脚本
| #!/bin/bash /usr/sbin/nameif eth8 00:0c:29:75:54:32 |

其中 00:0c:29:75:54:32 为默认 eth0 的 mac 地址
方案二
添加 udev 规则
| vim /lib/udev/rules.d/70-persistent-net.rules |
添加如下内容:
| ACTION=="add", SUBSYSTEM=="net", DRIVERS=="?*", ATTR{address}=="00:0c:29:75:54:32", ATTR{type}=="1", KERNEL=="eth*", NAME="eth8" |

其中 00:0c:29:75:54:32 为默认的 eth0 的 mac 地址, 也就是将 eth0 重命名为eth8
备注
系统启动后, 网卡默认为内核从 eth0 依次向后命令, 然后如果有预设命名规则( grub 界面不加 net.ifnames=0 biosdevname=0 的情况下) , 则配置的 udev 规则不 会 生 效 , 如 果 要 使 udev 规 则 生 效 , 可 以 在 grub 中 加 上 net.ifnames=0 biosdevname=0 参数。
为什么不在 rc.local 加/usr/sbin/nameif eth8 00:0c:29:75:54:32,因为加在 udev 规则里面可以保证可以在网络服务启动之前将网卡命名设置好。
grub 里面加上 net.ifnames=0 biosdevname=0 参数可以禁用预设的命名规则。
相关文章:
【案例实操】银河麒麟桌面操作系统实例分享,V10SP1重启后网卡错乱解决方法
1.问题现象 8 个网口, 命名从 eth1 开始到 eth8。 目前在系统 grub 里面加了 net.ifnames0 biosdevname0 参数, 然后在 udev 规则中加了一条固定网卡和硬件 pci 设备号的规则文件。 最后在 rc.local 中加了两条重新安装网卡驱动的命令( rmmod…...
初级前端开发岗
定位: 日常任务的辅助执行者,前端基础建设的参与者。 素质要求: 是否遵循部门敏捷流程、规范、P0制度;具备良好的沟通和协作能力;负责日常迭代任务的落地执行;拥有较强的执行力,能够灵活解决问题; 职责:…...
颠仆流离学二叉树2 (Java篇)
本篇会加入个人的所谓鱼式疯言 ❤️❤️❤️鱼式疯言:❤️❤️❤️此疯言非彼疯言 而是理解过并总结出来通俗易懂的大白话, 小编会尽可能的在每个概念后插入鱼式疯言,帮助大家理解的. 🤭🤭🤭可能说的不是那么严谨.但小编初心是能让更多人…...
柏林自由大学研究团队《Ecology Letters 》揭示AMF在植物对全球变化响应的作用
全球环境变化正在影响陆生植物生长。植物已经进化出各种策略来应对这些挑战,其中之一是与丛枝菌根真菌(AMF)形成共生关系(高达80%的陆生植物物种)。AMF为寄主植物提供各种益处,例如营养吸收、耐受性、食草动物防御和抗病能力,以换取糖和脂质(…...
libevent源码跨平台编译(windows/macos/linux)
1.windows编译: 克隆: git clone https://github.com/libevent/libevent.git 克隆成功 生成makefile 生成成功 默认不支持OpenSSL,MbedTLS,ZLIB这三个库 编译: cmake --build . --config release...
idea+tomcat+mysql 从零开始部署Javaweb项目(保姆级别)
文章目录 新建一个项目添加web支持配置tomcat优化tomcat的部署运行tomcatidea数据库连接java连接数据库 新建一个项目 new project;Java;选择jdk的版本;next;next;填写项目名字,选择保存的路径;…...
LeetCode 每日一题 2024/5/27-2024/6/2
记录了初步解题思路 以及本地实现代码;并不一定为最优 也希望大家能一起探讨 一起进步 目录 5/27 2028. 找出缺失的观测数据5/28 2951. 找出峰值5/29 2981. 找出出现至少三次的最长特殊子字符串 I5/30 2982. 找出出现至少三次的最长特殊子字符串 II5/31 2965. 找出缺…...
BOOST_SREATCH
BOOST Boost是一个由C社区开发的开源库,为C语言标准库提供扩展。这个库由C标准委员会库工作组成员发起,旨在提供大量功能和工具,帮助C开发者更高效地编写代码。Boost库强调跨平台性和对标准C的遵循,因此与编写平台无关࿰…...
MySQL学习——获取数据库和表格的信息
如果忘记了数据库或表的名称,或者不确定给定表的结构(例如,其列的名称),该怎么办呢?MySQL通过几个语句解决了这个问题,这些语句提供了有关它支持的数据库和表的信息。 你之前已经看过SHOW DATA…...
Go语言redis框架 — go-redis
https://zhuanlan.zhihu.com/p/645669818 一、简述 1. API友好,命令名称和参数与Redis原生命令一致,使用简单方便。 2. 支持完整的Redis命令集,覆盖了字符串、哈希、列表、集合、有序集合、HyperLogLog等数据结构。 3. 支持连接池&#x…...
C++ | Leetcode C++题解之第125题验证回文串
题目: 题解: class Solution { public:bool isPalindrome(string s) {int n s.size();int left 0, right n - 1;while (left < right) {while (left < right && !isalnum(s[left])) {left;}while (left < right && !isalnu…...
Spring创建对象的多种方式
一、对象分类 简单对象:使用new Obj()方式创建的对象 复杂对象:无法使用new Obj()方式创建的对象。例如: 1. AOP创建代理对象。ProxyFactoryBean; 2. Mybatis中的SqlSessionFactoryBean; 3. Hibernate中的SessionFactoryBean。二、创建对象方…...
宝塔部署前后端分离项目手册
文章目录 安装宝塔安装环境开始部署1. 前端Vue项目1.先本地启动前端项目(记住端口号)2.打包前端项目3.上传前端项目4.创建PHP站点5.安全里开放端口号6.测试前端 2. 后端boot项目1. 先在本地跑起来2.修改数据库的配置信息3. 项目打包4. nohup启动项目4.1 …...
Leetcode 第 397 场周赛题解
Leetcode 第 397 场周赛题解 Leetcode 第 397 场周赛题解题目1:3146. 两个字符串的排列差思路代码复杂度分析 题目2:思路代码复杂度分析 题目3:3148. 矩阵中的最大得分思路代码复杂度分析 题目4:3149. 找出分数最低的排列思路代码…...
Python+Selenium自动化测试项目实战
第 1 章 自动化测试 1.1、自动化测试介绍 自动化测试就是通过自动化测试工具帮我们打开浏览器,输入网址,输入账号密码登录,及登录后的操作,总的说来自动化测试就是通过自动化测试脚本来帮我们从繁琐重复的手工测试里面解脱出来&…...
WPS部分快捷操作汇总
记录一些个人常用的WPS快捷操作 一、去除文档中所有的超链接: 1、用WPS打开文档; 2、用Ctrla全选,或者点击上方的【选择】-【全选】,选中文档全部内容; 3、按CTRLSHIFTF9组合键,即可一次性将取文档中所有…...
Kubernetes (K8s) 普及指南
在当今的云计算和微服务时代,Kubernetes(简称K8s)已经成为容器编排的标准工具。它帮助开发者和运维人员管理和部署应用程序,实现高可用性、可伸缩性和自我修复。本文将详细介绍Kubernetes的基本概念、核心组件、工作原理及其优势。…...
Oracle RAC 集群配置共享目录ACFS
Oracle RAC 集群配置共享目录ACFS 应用场景:创建的ACFS文件系统用于部署OGG做数据同步使用。 1、创建共享磁盘组 create diskgroup OGG external redundancy disk /dev/mapper/ASM08, /dev/mapper/ASM09; 2、创建 acfs 文件系统 ACFS文件系统 在ASM磁盘组中通过A…...
Google Cloudbuild yaml file 中 entrypoint 和 args 的写法
编写cloudbuild.yaml 时有几个关键参数 entrypoint 和 args 的基本介绍 id: 显示在 cloud build logs 里的item 名字 name: docker 镜像名字 - 下面的命令会在这个镜像的1个容器instance 内执行 entrypoint: 执行的命令入口 , 只能有1个对象 args: 命名…...
鸿蒙开发接口图形图像:【@ohos.window (窗口)】
窗口 窗口提供管理窗口的一些基础能力,包括对当前窗口的创建、销毁、各属性设置,以及对各窗口间的管理调度。 该模块提供以下窗口相关的常用功能: [Window]:当前窗口实例,窗口管理器管理的基本单元。[WindowStage]&…...
Linux链表操作全解析
Linux C语言链表深度解析与实战技巧 一、链表基础概念与内核链表优势1.1 为什么使用链表?1.2 Linux 内核链表与用户态链表的区别 二、内核链表结构与宏解析常用宏/函数 三、内核链表的优点四、用户态链表示例五、双向循环链表在内核中的实现优势5.1 插入效率5.2 安全…...
简易版抽奖活动的设计技术方案
1.前言 本技术方案旨在设计一套完整且可靠的抽奖活动逻辑,确保抽奖活动能够公平、公正、公开地进行,同时满足高并发访问、数据安全存储与高效处理等需求,为用户提供流畅的抽奖体验,助力业务顺利开展。本方案将涵盖抽奖活动的整体架构设计、核心流程逻辑、关键功能实现以及…...
STM32+rt-thread判断是否联网
一、根据NETDEV_FLAG_INTERNET_UP位判断 static bool is_conncected(void) {struct netdev *dev RT_NULL;dev netdev_get_first_by_flags(NETDEV_FLAG_INTERNET_UP);if (dev RT_NULL){printf("wait netdev internet up...");return false;}else{printf("loc…...
剑指offer20_链表中环的入口节点
链表中环的入口节点 给定一个链表,若其中包含环,则输出环的入口节点。 若其中不包含环,则输出null。 数据范围 节点 val 值取值范围 [ 1 , 1000 ] [1,1000] [1,1000]。 节点 val 值各不相同。 链表长度 [ 0 , 500 ] [0,500] [0,500]。 …...
Mac软件卸载指南,简单易懂!
刚和Adobe分手,它却总在Library里给你写"回忆录"?卸载的Final Cut Pro像电子幽灵般阴魂不散?总是会有残留文件,别慌!这份Mac软件卸载指南,将用最硬核的方式教你"数字分手术"࿰…...
ServerTrust 并非唯一
NSURLAuthenticationMethodServerTrust 只是 authenticationMethod 的冰山一角 要理解 NSURLAuthenticationMethodServerTrust, 首先要明白它只是 authenticationMethod 的选项之一, 并非唯一 1 先厘清概念 点说明authenticationMethodURLAuthenticationChallenge.protectionS…...
Map相关知识
数据结构 二叉树 二叉树,顾名思义,每个节点最多有两个“叉”,也就是两个子节点,分别是左子 节点和右子节点。不过,二叉树并不要求每个节点都有两个子节点,有的节点只 有左子节点,有的节点只有…...
【电力电子】基于STM32F103C8T6单片机双极性SPWM逆变(硬件篇)
本项目是基于 STM32F103C8T6 微控制器的 SPWM(正弦脉宽调制)电源模块,能够生成可调频率和幅值的正弦波交流电源输出。该项目适用于逆变器、UPS电源、变频器等应用场景。 供电电源 输入电压采集 上图为本设计的电源电路,图中 D1 为二极管, 其目的是防止正负极电源反接, …...
MFC 抛体运动模拟:常见问题解决与界面美化
在 MFC 中开发抛体运动模拟程序时,我们常遇到 轨迹残留、无效刷新、视觉单调、物理逻辑瑕疵 等问题。本文将针对这些痛点,详细解析原因并提供解决方案,同时兼顾界面美化,让模拟效果更专业、更高效。 问题一:历史轨迹与小球残影残留 现象 小球运动后,历史位置的 “残影”…...
三分算法与DeepSeek辅助证明是单峰函数
前置 单峰函数有唯一的最大值,最大值左侧的数值严格单调递增,最大值右侧的数值严格单调递减。 单谷函数有唯一的最小值,最小值左侧的数值严格单调递减,最小值右侧的数值严格单调递增。 三分的本质 三分和二分一样都是通过不断缩…...
