USB를 통해 연결된 lan7500i-ABZJ가 있는 맞춤형 임베디드 Linux 보드가 있습니다.
따라서 내장된 smsc75xx 모듈을 사용하여 Linux 커널(buildroot 사용)을 컴파일했습니다. 부팅 커널 메시지에는 다음이 표시됩니다.
[ 5.315124] usb 1-1: New USB device found, idVendor=0424, idProduct=7500, bcdDevice= 2.00
[ 5.324072] usb 1-1: New USB device strings: Mfr=0, Product=0, SerialNumber=0
[ 5.340746] smsc75xx v1.0.0
[ 5.539195] smsc75xx 1-1:1.0 eth1: register 'smsc75xx' at usb-ci_hdrc.0-1, smsc75xx USB 2.0 Gigabit Ethernet, 8e:64:f6:eb:5e:65
이제 IP 주소를 추가합니다.
ifconfig eth1 192.168.1.44 netmask 255.255.255.0 up
그러나 로컬 네트워크의 주소에 ping을 시도하자마자 모든 패킷이 손실됩니다.
# ping 192.168.1.40
PING 192.168.1.40 (192.168.1.40): 56 data bytes
^C
--- 192.168.1.40 ping statistics ---
3 packets transmitted, 0 packets received, 100% packet loss
# arp
? (192.168.1.40) at <incomplete> on eth1
인터페이스를 통해 패킷이 전송되지 않습니다.
eth1 Link encap:Ethernet HWaddr 8E:64:F6:EB:5E:65
inet addr:192.168.1.44 Bcast:192.168.1.255 Mask:255.255.255.0
UP BROADCAST MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
다른 네트워크 인터페이스는 활성화되어 있지 않습니다. localhost에 ping을 실행할 수 있으므로 TCP/IP 수준에서는 모든 것이 정상이라고 가정합니다. 이더넷 인터페이스를 사용할 수 없는 이유는 무엇입니까?
답변1
ifconfig
(또는 여기에 있을 수도 있음 ) busybox ifconfig
은 관리상 UP 상태이고 캐리어(예: 원격 NIC, 스위치 등)를 감지한 NIC 외에 RUNNING
표시됩니다 . UP
누락은 RUNNING
NIC가 연결되지 않았거나 회선 반대편의 NIC를 올바르게 감지하도록 설정할 수 없음을 의미합니다.
ip link
(또는 busybox ip link
), Linux에서는 항상 ip address
(with)보다 우선적으로 사용되어야 하며, 이 경우 ifconfig
틀림없는 플래그가 표시됩니다.NO-CARRIER
그럼 왜 연산자가 없는지 확인해야 합니다. 일반적으로 이 ethtool
명령은 자동 협상이 실패했는지 또는 사용이 허용되지 않는지 등을 확인하는 데 유용합니다. 아직 존재하지 않는 경우 빌드에 추가해야 합니다.