将 Debian 12.2 与 KDE Plasma 5.27.5 结合使用
从哪里nmcli device
获取外部设备的信息docker0
?virbr0
# nmcli device console output
DEVICE TYPE STATE CONNECTION
eno1 ethernet connected Wired_eno1
lo loopback connected (externally) lo
docker0 bridge connected (externally) docker0
virbr0 bridge connected (externally) virbr0
enp5s0 ethernet unavailable --
为了完整起见,` 的内容是:
cat `/etc/network/interfaces
# console output
source /etc/network/interfaces.d/*
auto lo
iface lo inet loopback
ls -l /etc/NetworkManager/system-connections/
# console output
-rw------- 1 root root 322 Nov 15 09:15 Forti_VPN
-rw------- 1 root root 210 Nov 14 21:48 Wired_eno1
阅读Linux 上的 NetworkManager 入门。我了解到 NetworkManager 使用 D-Bus 的信息来初始化每个 NIC
udev 守护程序在网络规则文件中为系统中安装的每个网络接口卡 (NIC) 创建一个条目。 D-Bus 向 NetworkManager 发出新网络设备(有线或无线)存在的信号。然后,NetworkManager 侦听 D-Bus 上的流量并通过为该新设备创建配置来做出响应。默认情况下,此类配置仅存储在 RAM 中,并且不是永久的。每次计算机启动时都必须创建它。
但是从哪里获取有关网络设备(例如物理设备或虚拟设备)udev
的信息?eno1
enp5s0
docker0
virbr0
为了学习,我可以运行哪些手动步骤或命令来查询udev
有关 NetworkManager 发现的网络设备的信息?
答案1
内核生成一个udev事件用于添加、更改或删除任何设备,包括网络设备。由于udev
监视这些事件,一旦适用的驱动程序检测到硬件,它就会意识到所有网络设备。
要在 udev 中查询网络设备,不能使用udevadm info -q all -n <device node>
,因为网络设备没有设备节点。但是你能使用 sysfs 路径查询它们:
udevadm info -q all -p /sys/class/net/<interface name>
或者
udevadm info -q all -a -p /sys/class/net/<interface name>
前一个命令将告诉您使用新的网络接口的所有可能的名称可预测的网络接口名称方案,具有各种ID_NET_NAME_*
环境变量。
后一个命令将列出网络接口设备及其所有父级设备的所有 udev 属性(如果适用),如果您需要编写自定义 udev 规则,例如根据某些不寻常的属性为网络接口分配名称,这可能很有用。