为什么我的Wi-Fi适配器在16.04中不显示为wlan0?
我刚刚在一个单独的硬盘上安装了Ubuntu 16.04,我注意到两个奇怪之处:
-
而在14.04(在我的主硬盘上)我的USB Wi-Fi加密狗显示为
wlan0
,在16.04它显示为wlx112233445566
。 (真正的MAC编辑) -
此外,使用
hw ether
参数更改MAC地址在16.04上不起作用。
这是lsusb
的相关输出:
Bus 008 Device 002: ID 148f:5370 Ralink Technology, Corp. RT5370 Wireless Adapter
任何人都可以了解这里发生的事情吗?
截至最近,Ubuntu(以及systemd
)现在使用了一种名为Predictable Network Interface Names的东西。 从本质上讲,这意味着非永久性网络接口(即USB接口)现在具有enx
或wlx
(或类似)forms的名称,因此任何依赖于该特定设备的脚本和系统都将100%有信心它正在瞄准正确的设备。
其他命名约定将允许通过物理位置或任何其他forms的永久识别值来引用设备。 具体来说,这些值中的任何一个都可用于生成接口名称(最佳选择):
- 包含固件/ BIOS的名称为板载设备提供了索引号(例如:
eno1
)- 包含固件/ BIOS的名称提供PCI Express热插拔插槽索引号(例如:
ens1
)- 包含硬件连接器的物理/地理位置的名称(例如:
enp2s0
)- 包含接口MAC地址的名称(例如:
enx78e7d1ea46da
)- 经典,不可预测的内核本地ethX命名(例如:
eth0
)
在过去,接口名称没有以“理智”的方式分配 – 一些系统使用伪永久名称( wlan1
用于具有此MAC的设备),其他系统以先到先得的方式分配它们。 如果您仍然喜欢这种处理方式(或者只是讨厌持久性名称,因为systemd
正在这样做),可以通过在引导参数中添加net.ifnames=0
来反转它。
您仍然可以使用连接编辑器伪造设备的MAC地址,但是由于MAC地址是设备的标识符/名称的一部分,因此hw ether
将不再起作用。
可以通过将net.ifnames = 0添加到引导参数来反转它。
这还不足以改变USB接口的名称……你还需要玩80-net-setup-link.rules
1)将当前规则复制到/etc/udev/rules.d/
目录
sudo cp /lib/udev/rules.d/80-net-setup-link.rules /etc/udev/rules.d/
2)创建一个符号链接,将其发送到/dev/null
以禁用它:
sudo ln -s /dev/null /etc/udev/rules.d/80-net-setup-link.rules
有关更多信息,请查看此主题: 如何恢复USB wifi接口名称(从wlxXXXXXXXXXXXX到wlanX)?
我认为它就像设计变更一样简单,数字现在不同了。 这不是错。 例如,我的LAN在14.04中是eth0(并且仍然在其他一些发行版中),但在16.04中是enp0s25。
这个命名约定对性能没有影响,我不担心它。
编辑:Kaz Wolfe给出了更彻底的解释。