我似乎遇到了与互联网相反的问题。当您搜索可预测的网络名称不起作用时,您所能找到的只是如何返回 wlan0、eth0 等并禁用它。我确实遇到了相反的问题。我在 Raspberry 4 上安装了一台新安装的 Ubuntu 22.04 服务器,它不会使用可预测的网络名称。事实上,我遇到了严重的问题,接口 wlan0 和 wlan1 随机切换它们的位置。
/etc/systemd/network 中没有任何内容。
在 /etc/default/grub.d/50-cloudimg-settings.cfg 上,没有任何可疑内容(例如 net.ifnames=0)传递给内核命令行。
关于从哪里开始挖掘,有什么建议吗?为什么这不起作用?
谢谢
答案1
如果您运行raspi-config
,选择“高级选项”,然后选择“网络接口名称”,系统将提示您启用可预测的设备名称。这通过操纵 中的文件来/etc/systemd/network
屏蔽 中的相应单元来实现/usr/lib/systemd/network
。使用可预测的设备名称已禁用, 我们看:
root@raspberrypi:~# ls -l /etc/systemd/network
total 0
lrwxrwxrwx 1 root root 9 Feb 5 15:12 73-usb-net-by-mac.link -> /dev/null
lrwxrwxrwx 1 root root 9 Feb 5 15:12 99-default.link -> /dev/null
这些符号链接用来/dev/null
屏蔽 中的同名文件/usr/lib/systemd/network
。当我们使能够可预测的设备名称,这些屏蔽文件将被删除。
如果您熟悉其他系统上可预测的设备名称,那么您可能会感到失望;在我的 Pi 上,有两个无线接口(内置接口和 USB 接口),我得到:
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: enxb827ebb3d5ba: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast state DOWN mode DEFAULT group default qlen 1000
link/ether b8:27:eb:b3:d5:ba brd ff:ff:ff:ff:ff:ff
3: wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DORMANT group default qlen 1000
link/ether b8:27:eb:e6:80:ef brd ff:ff:ff:ff:ff:ff
4: wlx00e1b0679867: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DORMANT group default qlen 1000
link/ether 00:e1:b0:67:98:67 brd ff:ff:ff:ff:ff:ff
这告诉我们,Pi 根本没有提供 systemd 通常用来在其他系统上创建可预测设备名称的信息(总线、设备 ID 等)。这可能足以满足您的要求:在上面的输出中,先前eth0
和现在的设备wlan1
都已使用 MAC 地址替换为设备名称。
答案2
..根据要求将其作为单独的答案:
编辑以回应 larsks: 我似乎已经让它工作了(现在,祈祷好运)!
#@#:~$ ll /etc/systemd/network
total 12
drwxr-xr-x 2 root root 4096 Feb 5 17:14 ./
drwxr-xr-x 5 root root 4096 Feb 5 14:10 ../
lrwxrwxrwx 1 root root 9 Feb 5 17:07 10-raspi-eth0.link -> /dev/null
lrwxrwxrwx 1 root root 9 Feb 5 17:08 73-usb-net-by-mac.link -> /dev/null
-rw-r--r-- 1 root root 498 Feb 5 17:14 99-default.link
我现在正在屏蔽 /usr/lib/systemd/network 中的 10- 和 73- 文件。仅此一项就改变了我的 USB wifi NIC 的显示方式,但对 Pi 的内部 wifi 仍然是 wlan0(偶尔是 wlan1)没有帮助。
为了解决这个问题,我复制了 99-default.link 并进行了以下更改:
[Match]
OriginalName=*
[Link]
NamePolicy=mac kernel database onboard slot path
AlternativeNamesPolicy=database onboard slot path
MACAddressPolicy=persistent
NamePolicy 的第一个条目是“keep”。我将其替换为“mac”。现在为所有接口提供了“好”的接口名称。我希望它们在重新启动后仍能保持原样。
#@#:~$ ip link show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: enxdca632023082: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN mode DEFAULT group default qlen 1000
link/ether dc:a6:32:02:30:82 brd ff:ff:ff:ff:ff:ff
3: wlxdca632023083: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN mode DEFAULT group default qlen 1000
link/ether dc:a6:32:02:30:83 brd ff:ff:ff:ff:ff:ff
4: wlxe84e06fa2979: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DORMANT group default qlen 1000
link/ether e8:4e:06:fa:29:79 brd ff:ff:ff:ff:ff:ff
altname wlp1s0u1u4