Linux가 네트워크 인터페이스를 인식하도록 만드는 방법은 무엇입니까?

Linux가 네트워크 인터페이스를 인식하도록 만드는 방법은 무엇입니까?

나는 사용자 정의 Linux 시스템(Yocto를 사용하여 생성됨)이 설치된 컴퓨터를 가지고 있습니다. 이 버전을 사용하는 이전 컴퓨터에서는 네트워크 인터페이스가 제대로 작동했지만 이 새 컴퓨터에서는 eth0이 전혀 표시되지 않습니다. 네트워크 인터페이스를 온라인으로 가져오고 구성하는 방법(OS가 네트워크 인터페이스를 인식하고 이름(eth0)이 있는 경우)을 알고 있지만 eth0이 존재하지 않으면 처음에 인터페이스를 만드는 방법을 모르겠습니다. 장소.

먼저, Ubuntu를 부팅하면 이를 인식하고 제대로 작동하므로 하드웨어 문제는 없으며 Linux는 확실히 하드웨어를 사용할 수 있다는 점을 지적하고 싶습니다.

둘째, lspci를 사용하여 네트워크 카드를 볼 수 있습니다.

root@intel-corei7-64:/etc# lspci -v -s 01:00.0
01:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller (rev 15)
        Subsystem: Mitac Device 0787
        Flags: fast devsel, IRQ 23
        I/O ports at e000 [size=256]
        Memory at 91104000 (64-bit, non-prefetchable) [size=4K]
        Memory at 91100000 (64-bit, non-prefetchable) [size=16K]
        Capabilities: [40] Power Management version 3
        Capabilities: [50] MSI: Enable- Count=1/1 Maskable- 64bit+
        Capabilities: [70] Express Endpoint, MSI 01
        Capabilities: [b0] MSI-X: Enable- Count=4 Masked-
        Capabilities: [100] Advanced Error Reporting
        Capabilities: [140] Virtual Channel
        Capabilities: [160] Device Serial Number 44-01-00-00-68-4c-e0-00
        Capabilities: [170] Latency Tolerance Reporting
        Capabilities: [178] L1 PM Substates
        Kernel modules: r8169

셋째, 드라이버가 설치되어 있다고 생각합니다.

root@intel-corei7-64:/etc# lsmod | grep r8169
r8169                  77824  0
libphy                 61440  2 r8169,realtek

여기서 어디로 가야할지 모르겠습니다. ip link show인터페이스를 옵션으로 표시하지 마세요. 인터페이스가 자동으로 생성되지 않는 이유나 수동으로 생성하는 방법을 잘 모르겠습니다.

또한 USB -> 이더넷 커넥터를 연결하면 eth0이 온라인 상태가 되어 올바르게 구성되는 것을 볼 수 있습니다. 하지만 내장된 네트워크 카드가 작동하지 않습니다.

마지막으로 dmesg는 관련성이 있을 수 있는 줄을 표시하지만 그것이 무엇을 의미하는지 잘 모르겠습니다.

igb: Intel(R) Gigabit Ethernet Network Driver - version 5.6.0-k

dmesg에도 다음 메시지가 있습니다.

r8169 0000:01:00.0: enabling device (0000 -> 0003)
r8169: probe of 0000:01:00.0 failed with error -5
r8169: probe of 0000:01:00.0 failed with error -5

이 네트워크 카드를 온라인으로 전환하는 방법에 대한 아이디어가 있습니까?

답변1

r8169모듈은 많은 Realtek NIC용 드라이버입니다. 이들 중 다수는 NIC를 성공적으로 초기화하려면 펌웨어 패키지가 필요합니다.

목록을 확인하세요 dmesg(예 dmesg | grep firmware: ). 비슷한 메시지를 찾을 수도 있습니다 Unable to load firmware <name of firmware file>. 이는 펌웨어 파일을 제공해야 함을 의미합니다.

사용자 정의 시스템이 있으므로 다음에서 파일을 다운로드하는 것이 가장 쉽습니다.리눅스 펌웨어 Git 저장소/lib/firmware/rtl_nic/시스템의 디렉토리 에 넣으십시오 .

Ubuntu에서는 Realtek NIC 펌웨어 파일이 패키지로 제공되며 firmware-realtek, 설치 프로그램은 사용자가 필요하다고 감지하면 운영 체제 설치 프로세스 중에 자동으로 추가할 만큼 똑똑할 수 있습니다.

펌웨어 파일이 준비되면 r8169모듈을 언로드했다가 다시 로드합니다.

modprobe -r r8169
modprobe r8169

이제 모듈이 펌웨어 파일을 찾아 NIC 하드웨어에 제공할 수 있으므로 카드가 올바르게 초기화됩니다.

일부 하드웨어 장치에는 여러 펌웨어 파일이 필요할 수 있으므로 NIC를 여전히 사용할 수 없는 경우 dmesg목록 끝에서 새 메시지를 다시 확인하십시오.

답변2

오류 - EIO는 네트워크 드라이버 수준 아래의 항목이 제대로 작동하지 않음을 의미합니다. 다음 보고서를 볼 수 있습니다. https://bugzilla.kernel.org/show_bug.cgi?id=203025 아니면 printf 디버깅을 수행하여 무엇이 잘못되었는지 확인하세요. dmesg 로그를 자세히 살펴보면 힌트를 얻을 수도 있습니다. igb 관련 메시지는 여기서 관련이 없습니다. PCI(e) 지원을 위한 몇 가지 기본 구성 옵션이 누락되었을 수 있습니다.

답변3

5.10 Linux 커널이 포함된 최신 버전의 yocto로 업그레이드했습니다. 정확히 무엇이 해결되었는지는 모르겠지만 지금은 작동하고 있습니다. 만족스러운 수정은 아니지만 작동합니다.

관련 정보