如何在 Raspberry pi 上获得一致的以太网设备编号?

如何在 Raspberry pi 上获得一致的以太网设备编号?

我有一个带有自定义 Yocto Linux 映像的 Raspberry pi 3B+。我希望板载以太网为 eth0,USB 以太网适配器为 eth1 或其他名称,例如 usb_eth0。一个 pi 始终将板载以太网编号为 eth0,但在第二个设备上,USB 加密狗始终初始化为 eth0,板载以太网初始化为 eth1。我想使用 eth0 进行 ssh 和 eth1 以获得不同的 IP 地址并连接到不同的网络。但是我在 /etc/network/interfaces 中的配置和我的应用程序都使用硬编码名称。我试图在几个不同的地方改变这种行为。例如在 systemd/network 中。

/etc/systemd/network/10-eth1.link:

[Match]
MACAddress=00:14:5c:9c:67:3b

[Link]
Description="White USB ethernet dongle"
NamePolicy=
Name=eth_usb

日志控制-b:

kernel: usb 1-1.1.2: new high-speed USB device number 7 using dwc_otg
kernel[275]: [  609.282053] usb 1-1.1.2: new high-speed USB device number 7 using dwc_otg
kernel: usb 1-1.1.2: New USB device found, idVendor=0b95, idProduct=1790, bcdDevice= 1.00
kernel: usb 1-1.1.2: New USB device strings: Mfr=1, Product=2, SerialNumber=3
kernel: usb 1-1.1.2: Product: AX88179
kernel: usb 1-1.1.2: Manufacturer: ASIX Elec. Corp.
kernel: usb 1-1.1.2: SerialNumber: 00000000000:;3
kernel[275]: [  609.418133] usb 1-1.1.2: New USB device found, idVendor=0b95, idProduct=1790, bcdDevice= 1.00
kernel[275]: [  609.418148] usb 1-1.1.2: New USB device strings: Mfr=1, Product=2, SerialNumber=3
kernel[275]: [  609.418157] usb 1-1.1.2: Product: AX88179
kernel[275]: [  609.418166] usb 1-1.1.2: Manufacturer: ASIX Elec. Corp.
kernel[275]: [  609.418175] usb 1-1.1.2: SerialNumber: 00000000000:;3
kernel: ax88179_178a 1-1.1.2:1.0 eth0: register 'ax88179_178a' at usb-3f980000.usb-1.1.2, ASIX AX88179 USB 3.0 Gigabit Ethernet, 00:14:5c:9c:67:3b
kernel[275]: [  609.780308] ax88179_178a 1-1.1.2:1.0 eth0: register 'ax88179_178a' at usb-3f980000.usb-1.1.2, ASIX AX88179 USB 3.0 Gigabit Ethernet, 00:14:5c:9c:67:3b
systemd-udevd[563]: Using default interface naming scheme 'v243'.
systemd-udevd[563]: ethtool: autonegotiation is unset or enabled, the speed and duplex are not writable.
systemd-udevd[563]: [[0;1;31m[[0;1;39m[[0;1;31meth0: Failed to rename network interface 5 from 'eth0' to 'eth_usb': Device or resource busy[[0m
kernel: IPv6: ADDRCONF(NETDEV_UP): eth0: link is not ready
kernel[275]: [  610.139890] IPv6: ADDRCONF(NETDEV_UP): eth0: link is not ready
systemd-udevd[563]: [[0;1;38;5;185m[[0;1;39m[[0;1;38;5;185meth0: Failed to process device, ignoring: Device or resource busy[[0m
systemd-networkd[288]: eth0: IPv6 successfully enabled

如您所见,它无法重命名。

我还尝试更改/etc/udev/rules.d/70-persistent-net.rules:

SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:14:5c:9c:67:3b", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eth*", NAME="neweth0" 

但这也失败了。

我还尝试添加/usr/lib/systemd/network/99-default.link。但似乎这个文件被完全忽略了。

我尝试了几个教程,但它们似乎都不适用于我的设备。我希望任何 USB 以太网加密狗都具有与板载以太网不同的相同名称(我最多连接 1 个加密狗,因此不会发生冲突)。我不喜欢在配置文件中使用 MAC 地址,因为板和加密狗之间的 MAC 地址不同。

相关内容