Linux 修改网卡名

将网卡名改为 eth 开头并且 eth0 作为第一块网卡有两种办法

第一种:在安装系统的倒计时启动阶段按 “e” 进入编辑模式,在以 linux 开头的行尾添加 net.ifnames=0 biosdevname=0 ,然后按 “ctrl+x” 进入系统后即可

第二种:在安装系统后更改,分为 CentOS 和 Debian 两种版本

CentOS

# 1、备份网卡配置文件并修改对应参数

cp /etc/sysconfig/network-scripts/{ifcfg-enp7s0,ifcfg-eth0}

修改下面两个配置项

vi /etc/sysconfig/network-scripts/ifcfg-eth0 

NAME=enp7s0

DEVICE=enp7s0

改为

NAME=eth0

DEVICE=eth0

# 2、修改 grub 禁用老的命名规则

vi /etc/sysconfig/grub 或 vi /etc/default/grub

在 GRUB_CMDLINE_LINUX 的 quiet 后加入如下代码:

net.ifnames=0 biosdevname=0

# 3、添加 udev 规则

在文件夹 /etc/udev/rules.d 中创建网卡规则文件 70-persistent-net.rules ,并写入内容:

vi /etc/udev/rules.d/70-persistent-net.rules(可添加多个规则)

UBSYSTEM=="net",ACTION=="add",DRIVERS=="?*",ATTR{address}=="enp7s0 网卡的 mac 地址",ATTR{type}=="1" ,KERNEL=="eth*",NAME="eth0"

UBSYSTEM=="net",ACTION=="add",DRIVERS=="?*",ATTR{address}=="其它需要更改网卡的 mac 地址",ATTR{type}=="1" ,KERNEL=="eth*",NAME="eth1"

# 4、生成新的 grub 并更新内核参数

grub2-mkconfig -o /boot/grub2/grub.cfg

# 5、reboot 重启看效果

 

Debian

# 1、备份网卡配置文件并修改对应参数

cp /etc/network/interfaces{,.bak}

修改下面两个配置项

vi /etc/network/interfaces

auto enp7s0/allow-hotplug enp7s0

iface enp7s0 inet static/dhcp

改为

auto eth0/allow-hotplug eth0

iface eth0 inet static/dhcp

# 2、修改 grub 禁用老的命名规则

vi /etc/default/grub

在 GRUB_CMDLINE_LINUX 的 quiet 后加入如下代码:

net.ifnames=0 biosdevname=0

# 3、添加 udev 规则

在文件夹 /etc/udev/rules.d 中创建网卡规则文件 70-persistent-net.rules ,并写入内容:

vi /etc/udev/rules.d/70-persistent-net.rules(可添加多个规则)

UBSYSTEM=="net",ACTION=="add",DRIVERS=="?*",ATTR{address}=="enp7s0 网卡的 mac 地址",ATTR{type}=="1" ,KERNEL=="eth*",NAME="eth0"

UBSYSTEM=="net",ACTION=="add",DRIVERS=="?*",ATTR{address}=="其它需要更改网卡的 mac 地址",ATTR{type}=="1" ,KERNEL=="eth*",NAME="eth1"

# 4、更新 grub 内核参数

update-grub

# 5、reboot 重启看效果

 

网卡规则文件
/etc/udev/rules.d/70-persistent-net.rules

udev 有什么用?
设备需要重新命名,新加硬件设备导致旧设备名称飘移发生变化的解决。也可以通过 udev 规则的添加,自动挂载 usb 设备

相关设备信息查询命令
udevadm info -q all /sys/class/net/eth0

**************** udev规则说明 ********************
1、udev 规则的所有操作符
“==”: 比较键、值,若等于,则该条件满足
“!=”:     比较键、值,若不等于,则该条件满足
“=”:   对一个键赋值
“+=”: 为一个表示多个条目的键赋值
“:=”:  对一个键赋值,并拒绝之后所有对该键的改动。目的是防止后面的规则文件对该键赋值

2、udev 规则的匹配键
ACTION: 事件 (uevent) 的行为,例如:add( 添加设备 )、remove( 删除设备 )
KERNEL: 内核设备名称,例如:sda, cdrom
DEVPATH: 设备的 devpath 路径
SUBSYSTEM: 设备的子系统名称,例如:sda 的子系统为 block
BUS: 设备在 devpath 里的总线名称,例如:usb
DRIVER: 设备在 devpath 里的设备驱动名称,例如:ide-cdrom
ID: 设备在 devpath 里的识别号
SYSFS{filename}: 设备的 devpath 路径下,设备的属性文件 “filename” 里的内容
例如:SYSFS{model}==“ST936701SS”表示:如果设备的型号为 ST936701SS,则该设备匹配该匹配键
在一条规则中,可以设定最多五条 SYSFS 的 匹配键
ENV{key}: 环境变量,在一条规则中可以设定最多五条环境变量的 匹配键
PROGRAM: 调用外部命令
RESULT: 外部命令 PROGRAM 的返回结果

3、udev 的重要赋值键
NAME: 在 /dev下产生的设备文件名。只有第一次对某个设备的 NAME 的赋值行为生效,之后匹配的规则再对该设备的 NAME 赋值行为将被忽略。如果没有任何规则对设备的 NAME 赋值,udev 将使用内核设备名称来产生设备文件
SYMLINK: 为 /dev/ 下的设备文件产生符号链接。由于 udev 只能为某个设备产生一个设备文件,所以为了不覆盖系统默认的 udev 规则所产生的文件,推荐使用符号链接
OWNER, GROUP, MODE: 为设备设定权限
ENV{key}: 导入一个环境变量

4、udev 的值和可调用的替换操作符
Linux 用户可以随意地定制 udev 规则文件的值,例如:my_root_disk, my_printer。同时也可以引用下面的替换操作符:
$kernel, %k: 设备的内核设备名称,例如:sda、cdrom
$number, %n: 设备的内核号码,例如:sda3 的内核号码是 3
$devpath, %p: 设备的 devpath 路径
$id, %b: 设备在 devpath 里的 ID 号
$sysfs{file}, %s{file}: 设备的 sysfs 里 file 的内容。其实就是设备的属性值
$env{key}, %E{key}: 一个环境变量的值
$major, %M: 设备的 major 号
$minor %m: 设备的 minor 号
$result, %c: PROGRAM 返回的结果
$parent, %P: 父设备的设备文件名
$root, %r: udev_root的值,默认是 /dev/
$tempnode, %N: 临时设备名
%%: 符号 % 本身
$$: 符号 $ 本身

posted @ 2023-07-20 16:39  demoduan  阅读(1701)  评论(0编辑  收藏  举报