当前位置: 首页 > news >正文

【案例实操】银河麒麟桌面操作系统实例分享,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制度;具备良好的沟通和协作能力;负责日常迭代任务的落地执行;拥有较强的执行力,能够灵活解决问题; 职责&#xff1a…...

颠仆流离学二叉树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的遵循,因此与编写平台无关&#xff0…...

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题验证回文串

题目&#xff1a; 题解&#xff1a; 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创建对象的多种方式

一、对象分类 简单对象&#xff1a;使用new Obj()方式创建的对象 复杂对象&#xff1a;无法使用new Obj()方式创建的对象。例如&#xff1a; 1. AOP创建代理对象。ProxyFactoryBean; 2. Mybatis中的SqlSessionFactoryBean; 3. Hibernate中的SessionFactoryBean。二、创建对象方…...

宝塔部署前后端分离项目手册

文章目录 安装宝塔安装环境开始部署1. 前端Vue项目1.先本地启动前端项目&#xff08;记住端口号&#xff09;2.打包前端项目3.上传前端项目4.创建PHP站点5.安全里开放端口号6.测试前端 2. 后端boot项目1. 先在本地跑起来2.修改数据库的配置信息3. 项目打包4. nohup启动项目4.1 …...

Leetcode 第 397 场周赛题解

Leetcode 第 397 场周赛题解 Leetcode 第 397 场周赛题解题目1&#xff1a;3146. 两个字符串的排列差思路代码复杂度分析 题目2&#xff1a;思路代码复杂度分析 题目3&#xff1a;3148. 矩阵中的最大得分思路代码复杂度分析 题目4&#xff1a;3149. 找出分数最低的排列思路代码…...

Python+Selenium自动化测试项目实战

第 1 章 自动化测试 1.1、自动化测试介绍 自动化测试就是通过自动化测试工具帮我们打开浏览器&#xff0c;输入网址&#xff0c;输入账号密码登录&#xff0c;及登录后的操作&#xff0c;总的说来自动化测试就是通过自动化测试脚本来帮我们从繁琐重复的手工测试里面解脱出来&…...

WPS部分快捷操作汇总

记录一些个人常用的WPS快捷操作 一、去除文档中所有的超链接&#xff1a; 1、用WPS打开文档&#xff1b; 2、用Ctrla全选&#xff0c;或者点击上方的【选择】-【全选】&#xff0c;选中文档全部内容&#xff1b; 3、按CTRLSHIFTF9组合键&#xff0c;即可一次性将取文档中所有…...

Kubernetes (K8s) 普及指南

在当今的云计算和微服务时代&#xff0c;Kubernetes&#xff08;简称K8s&#xff09;已经成为容器编排的标准工具。它帮助开发者和运维人员管理和部署应用程序&#xff0c;实现高可用性、可伸缩性和自我修复。本文将详细介绍Kubernetes的基本概念、核心组件、工作原理及其优势。…...

Oracle RAC 集群配置共享目录ACFS

Oracle RAC 集群配置共享目录ACFS 应用场景&#xff1a;创建的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: 执行的命令入口 &#xff0c; 只能有1个对象 args&#xff1a; 命名…...

鸿蒙开发接口图形图像:【@ohos.window (窗口)】

窗口 窗口提供管理窗口的一些基础能力&#xff0c;包括对当前窗口的创建、销毁、各属性设置&#xff0c;以及对各窗口间的管理调度。 该模块提供以下窗口相关的常用功能&#xff1a; [Window]&#xff1a;当前窗口实例&#xff0c;窗口管理器管理的基本单元。[WindowStage]&…...

3分钟上手!AI驱动的代码学习助手完全指南

3分钟上手&#xff01;AI驱动的代码学习助手完全指南 【免费下载链接】Tutorial-Codebase-Knowledge Turns Codebase into Easy Tutorial with AI 项目地址: https://gitcode.com/gh_mirrors/tu/Tutorial-Codebase-Knowledge Tutorial-Codebase-Knowledge是一款AI驱动的…...

MatLab实战:用移动最小二乘法(MLS)实现图像变形(附源码改进版)

MatLab实战&#xff1a;用移动最小二乘法&#xff08;MLS&#xff09;实现高精度图像变形 在数字图像处理领域&#xff0c;图像变形技术一直是个既基础又关键的课题。无论是影视特效中的角色变形&#xff0c;还是医学图像分析中的器官配准&#xff0c;甚至是工业检测中的零件对…...

智能仓储环境监控避坑指南:51单片机系统常见问题与解决方案

智能仓储环境监控避坑指南&#xff1a;51单片机系统常见问题与解决方案 在工业4.0时代&#xff0c;智能仓储系统的稳定运行直接关系到企业供应链效率。作为核心控制单元&#xff0c;51单片机以其高性价比和成熟生态&#xff0c;在中小型仓储环境监控中占据重要地位。然而实际部…...

不止是发布:手把手教你用Anolis OS 8.9的KeenTune和Alibaba Cloud Compiler优化云原生应用性能

深度实战&#xff1a;用Anolis OS 8.9的KeenTune与Alibaba Cloud Compiler打造云原生性能引擎 当云原生应用的QPS从5000飙升到20000时&#xff0c;性能调优就不再是选择题而是必答题。Anolis OS 8.9带来的KeenTune和Alibaba Cloud Compiler组合&#xff0c;就像给开发者配备了一…...

力扣994. 腐烂的橘子

题目&#xff1a;腐烂的橘子https://leetcode.cn/problems/rotting-oranges/description/在给定的 m x n 网格 grid 中&#xff0c;每个单元格可以有以下三个值之一&#xff1a; 0 代表空单元格&#xff1b;1 代表新鲜橘子&#xff1b;2 代表腐烂的橘子。 每分钟&#xff0c;腐…...

30/50/20分期怎么设?SAP付款条件Z028实战案例详解(附基准日期避坑指南)

SAP非等额分期付款实战指南&#xff1a;30/50/20比例配置与基准日期避坑 在工程项目、大额设备采购等业务场景中&#xff0c;分期付款是常见的交易方式。不同于标准的等额分期&#xff0c;工程类合同常采用30/50/20这类非对称比例&#xff0c;首期支付30%预付款&#xff0c;中期…...

OpenClaw技能扩展:给nanobot增加邮件自动分类能力

OpenClaw技能扩展&#xff1a;给nanobot增加邮件自动分类能力 1. 为什么需要邮件自动分类 作为一个长期被邮件淹没的开发者&#xff0c;我每天要处理几十封来自不同渠道的邮件——GitHub通知、团队沟通、订阅资讯、垃圾广告等等。手动分类不仅耗时&#xff0c;还经常错过重要…...

汉字破局:AI时代的文明反攻与英语世界的“偷师”真相

汉字破局&#xff1a;AI时代的文明反攻与英语世界的“偷师”真相今天我们要聊的&#xff0c;从来不是简单的“中文VS英文”语言之争&#xff0c;而是一场席卷AI世界的文明维度大反攻——三千年前刻在龟甲上的甲骨文&#xff0c;那些横平竖直、撇捺交错的线条&#xff0c;正在以…...

面向高精度应用的数字控制PDH稳频电路设计与实现

1. 数字控制PDH稳频电路的核心价值 在原子钟、引力波探测这类需要亚赫兹级别频率稳定度的尖端实验中&#xff0c;激光稳频技术就像精密机械中的轴承——看似不起眼却决定着整个系统的性能上限。传统模拟PDH&#xff08;Pound-Drever-Hall&#xff09;电路虽然能提供MHz量级的反…...

给嵌入式新手的ST7789驱动避坑指南:从SPI模式到RGB565显示的完整配置流程

给嵌入式新手的ST7789驱动避坑指南&#xff1a;从SPI模式到RGB565显示的完整配置流程 第一次接触ST7789液晶驱动芯片时&#xff0c;面对厚厚的数据手册和复杂的时序图&#xff0c;很多嵌入式新手都会感到无从下手。本文将带你一步步拆解ST7789的驱动过程&#xff0c;从SPI模式配…...