Linux网卡名称的生成规则

eth0, eth1这些名称是怎么来的呢?

内核发现一个pci网卡设备,调用网卡驱动的probe函数。

probe函数在做完一定的初始化之后,会调用内核接口register_netdev向内核注册一个新的net_device设备。

这个设备的名字,网卡驱动程序往往只决定其中一部分。

就像下面这种方式,网卡驱动提供一个“eth%d”这样的名称,然后调用内核接口register_netdev。

strcpy(netdev->name, "eth%d");

register_netdev(netdev);

register_netdev流程中,会根据系统中已有的接口情况,找出一个最小的还没有使用的数字编号,分给新注册的网卡。

比如,系统中当前有,eth0, eth2, eth3三块网卡。

那么新注册的网卡,名字就是eth1了。

当然,网卡驱动也可以提供完整的名字,但必须保证名字与现有网卡不冲突。

这在驱动中就不好实现了。而且,一个驱动程序,可能会驱动很多块网卡,怎么起名字,都是个问题。

最后,用户态程序,可以通过ioctl系统调用,去修改网卡的名称。

时间: 2024-09-10 21:28:19

Linux网卡名称的生成规则的相关文章

Linux网卡命名规则

网卡命名 一.为什么需要这个      服务器通常有多块网卡,有板载集成的,同时也有插在PCIe插槽的.Linux系统的命名原来是eth0,eth1这样的形式,但是这个编号往往不一定准确对应网卡接口的物理顺序. 为解决这类问题,dell开发了biosdevname方案. systemd v197版本中将dell的方案作了进一步的一般化拓展. 目前的Centos既支持dell的biosdevname,也支持systemd的方案. 二.Centos7中的命名策略      Scheme 1: 如果从

linux -小记(1) 问题:"linux ifconfig查看网卡名称与配置文件不否" 或 启动网卡提示“ eth0 似乎不存在, 初始化操作将被延迟”。

"linux ifconfig查看网卡名称与配置文件不否" 或 启动网卡提示" eth0 似乎不存在, 初始化操作将被延迟" . 问题 1. service network restart 重启网卡 提示错误: "eth0 似乎不存在, 初始化操作将被延迟"  .. ping 某一个网址可通 查看网卡配置文件ifconfig 发现我的配置文件, cd /etc/sysconfig/network-scripts/ifcfg-Auto_eth0是这

Linux 中修改网卡名称【ubuntu + Centos7】

有时候安装好Linux系统之后,网卡的名称不是ethX, 这时候可以通过以下方式修改网卡的名称为ethX(以eth0为例). ubuntu 14.04 1. 查看是否存在/etc/udev/rules.d/70-persistent-net.rules 文件,如不存在,可以通过以下方式生成(或者从其它机器上拷贝一个) # ifconfig em1 Link encap:以太网 硬件地址 18:66:da:7e:64:10 inet 地址:192.168.2.38 广播:192.168.2.255

Linux学习之CentOS(三)----将Cent0S 7的网卡名称eno16777736改为eth0

Linux系统版本:CentOS_7(64位) 一.前言: 今天又从Centos 6.5装回了Centos 7,毕竟还是要顺应潮流嘛.安装完成之后,发现发现CentOS 7默认的网卡名称是eno16777736,如图所示: 像我这种有轻微强迫症的人看到这个名字总感觉不爽,于是偏要把eno16777736改成以前版本的eth0,那就开始吧. 二.修改CentOS 7的网卡名称: 输入如下命令,进入对应目录,编辑文件: vim /etc/sysconfig/grub 然后,往这个文件中添加“net.

Shell 获取 Linux 服务器的 MAC(通用,不依赖网卡名称)

有时服务器厂商会制定自己的命名规则,如戴尔的一些服务器网卡名称可能是 em 开头的,如 em1,有时又是 eth 开头的,如 eth0,这让我们获得网卡的命令变得不那么通用,下面是我自己写的,不管是以什么开头的都可以: 列出所有的MAC: ifconfig -a | grep 'Ethernet' | awk '{print $5}' 只列出第一个MAC: ifconfig -a | grep 'Ethernet' | awk '{print $5}' | head -1

Linux修改网卡名称enss33到eth0--Ubuntu16和centos7

新装的Ubuntu16.04和centos7的默认网卡名称都是ens33.想要修改为eth0. 一.centos: 修改/etc/sysconfig/grub文件(修改前先备份) 为GRUB_CMDLINE_LINUX变量增加2个参数(net.ifnames=0 biosdevname=0),修改完成如下:GRUB_CMDLINE_LINUX="crashkernel=auto rd.lvm.lv=centos/root rd.lvm.lv=centos/swap net.ifnames=0 b

linux 之 修改网卡名称

修改网卡名称: vi /etc/udev/rules.d/70-persistent-net.rules SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:0c:29:c4:00:d0", ATTR{type}=="1", KERNEL=="eth*", NAME="ens33" 注意

Linux 7修改网卡名称后配置文件中的默认网关不生效

背景 ? 为了系统统一管理在创建了系统后统一将网卡名称修改为eth0,eth1等格式,并在修改完网卡名称重新编译grub配置文件重启后,添加了静态路由,使用route -n查看系统发现路由可以生效,但是配置的默认网关不生效,记录下排查过程. 检查网卡配置文件并手动配置默认网关 ? 在检查了网卡配置文件确认无误后,使用route add default gw 192.168.1.1命令发现可以成功配置,经过此操作确认了此问题应该和修改网卡名称的操作有关 检查network配置文件 ? /etc/s

【转】虚拟机克隆之后,网卡名称从eth0变成eth1之后的解决办法

使用VMware安装了CentOS虚拟机,克隆之后使用service network restart指令来重新启动网络服务时,会看到有eth0网卡不存在的提示. 出现这种现象的原因是,很多Linux distribution使用udev动态管理设备文件,并根据设备的信息对其进行持久化命名.udev会在系统引导的过程中识别网卡,将mac地址和网卡名称对应起来记录在udev的规则脚本中.而对于新的虚拟机,VMware会自动为虚拟机的网卡生成MAC地址,当你克隆或者重装虚拟机软件时,由于你使用的是以前