TOC

网卡名称的变迁(ethX -> enpXsY)

路由器

早几年前,Linux 系统的网卡名称都是 eth0、wlan0,后来都变了个风格,就拿我的电脑举例:enp7s0, wlp6s0。
这到底是是什么原因呢?
最近突然好奇,去查了资料才知道为什么。
在 Fedora 的技术资料中找到,这个和 systemd 有关,然后又在 freedesktop 官网 systemd 的手册中找到了详细的说明。
现在的命名方案有好长一段,估计要看个半个小时(如果感兴趣可以仔细阅读一下),解开我的疑问却不需要那么复杂。

eth0 是什么意思?

系统自动选择的网络设备名称,名字来源于以太网 ethernet。
无线网卡就是 wlan,来自 Wireless LAN。

还有一些常见的名称 lo(Loopback), tun(Tunnel), br(Bridge) 等。

enp7s0 又是什么?

enp7s0 和 wlp6s0 的意思:

  • en 代表 Ethernet,wl 代表 Wireless LAN。
  • pXsY 则表示 PCI 位置
$ lspci
...
06:00.0 Network controller: Qualcomm Atheros QCA9565 / AR9565 Wireless Network Adapter (rev 01)
07:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL810xE PCI Express Fast Ethernet controller (rev 08)
...

为什么要改?

之前的命名方案是系统根据探测到网络驱动的顺序来的,这意味着理论上网络设备接口名称不固定。

不只是可能对部分应用产生不利影响,更有甚者,会影响一些网络防火墙的工作。

中间有一些改良的努力,试图来改变这个局面,各有局限,systemd 还是认为当前的方案最佳。

当前方案叫做 biosdevname,看到有资料说可以在 grub 配置中加上 biosdevname=0 禁用这个方案。

参考资料与拓展阅读