저는 사용자 정의 Yocto Linux 이미지가 포함된 Raspberry pi 3B+를 가지고 있습니다. 온보드 이더넷이 eth0이고 USB 이더넷 어댑터가 eth1 또는 usb_eth0과 같은 다른 것이 되기를 원합니다. 한 파이에는 항상 온보드 이더넷 번호 eth0이 있지만 두 번째 장치에서는 USB 동글이 항상 eth0으로 초기화되고 온보드 이더넷은 eth1로 초기화됩니다. SSH와 eth1에 eth0을 사용하여 다른 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-pertant-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 주소를 사용하는 것을 좋아하지 않습니다.