PCI 네트워크 카드와 마더보드 eth 포트를 운영 체제에서 사용할 수 없는 가능한 이유는 무엇입니까?

PCI 네트워크 카드와 마더보드 eth 포트를 운영 체제에서 사용할 수 없는 가능한 이유는 무엇입니까?

안녕하세요, 저는 특정 이유로 부활한 오래된 Linux 서버를 가지고 있으며 이전에 해당 서버에 사용했던 Redhat 6 이미지로 서버를 새로 고쳤습니다. 이렇게 하면 OS가 pci 확장 슬롯에 배치된 pci 네트워크 카드를 사용 가능하게 만들지 않지만 ifconfig를 사용하여 장치로 볼 수도 없지만 이제 ifconfig에서 마더보드에 연결된 2개의 포트를 볼 수 있습니다. 그러나 이러한 포트는 사용할 수 없거나 Network Manager 서비스에 의해 관리됩니다. 이것이 내 관점에서 보는 것입니다.

>ifconfig
eth4      Link encap:Ethernet  HWaddr B4:96:91:4E:13:F1  
          UP BROADCAST MULTICAST  MTU:9000  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)
          Memory:fb100000-fb200000 

eth5      Link encap:Ethernet  HWaddr B4:96:91:4E:13:F0  
          inet addr:192.9.200.11  Bcast:192.9.200.255  Mask:255.255.255.0
          UP BROADCAST MULTICAST  MTU:9000  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)
          Memory:fb200000-fb300000 

관련성이 있어 보이는 dmesg에서 가져온 내용은 ​​다음과 같습니다.

pci 0000:09:00.0: [8086:1533] type 0 class 0x000200
pci 0000:09:00.0: reg 10: [mem 0xce800000-0xce87ffff]
pci 0000:09:00.0: reg 18: [io  0x5000-0x501f]
pci 0000:09:00.0: reg 1c: [mem 0xce880000-0xce883fff]
pci 0000:09:00.0: PME# supported from D0 D3hot D3cold
pci 0000:09:00.0: PME# disabled
pci 0000:00:1c.2: PCI bridge to [bus 09-09]
pci 0000:00:1c.2:   bridge window [io  0x5000-0x5fff]
pci 0000:00:1c.2:   bridge window [mem 0xce800000-0xce8fffff]
pci 0000:0a:00.0: [8086:1533] type 0 class 0x000200
pci 0000:0a:00.0: reg 10: [mem 0xce700000-0xce77ffff]
pci 0000:0a:00.0: reg 18: [io  0x4000-0x401f]
pci 0000:0a:00.0: reg 1c: [mem 0xce780000-0xce783fff]
pci 0000:0a:00.0: PME# supported from D0 D3hot D3cold
pci 0000:0a:00.0: PME# disabled


pci 0000:81:00.0: [8086:1521] type 0 class 0x000200
pci 0000:81:00.0: reg 10: [mem 0xfb200000-0xfb2fffff]
pci 0000:81:00.0: reg 1c: [mem 0xfb304000-0xfb307fff]
pci 0000:81:00.0: PME# supported from D0 D3hot D3cold
pci 0000:81:00.0: PME# disabled
pci 0000:81:00.0: reg 184: [mem 0x00000000-0x00003fff 64bit pref]
pci 0000:81:00.0: reg 190: [mem 0x00000000-0x00003fff 64bit pref]
pci 0000:81:00.1: [8086:1521] type 0 class 0x000200
pci 0000:81:00.1: reg 10: [mem 0xfb100000-0xfb1fffff]
pci 0000:81:00.1: reg 1c: [mem 0xfb300000-0xfb303fff]
pci 0000:81:00.1: PME# supported from D0 D3hot D3cold
pci 0000:81:00.1: PME# disabled
pci 0000:81:00.1: reg 184: [mem 0x00000000-0x00003fff 64bit pref]
pci 0000:81:00.1: reg 190: [mem 0x00000000-0x00003fff 64bit pref]

NET: Registered protocol family 10
igb 0000:81:00.1: changing MTU from 1500 to 9000
ADDRCONF(NETDEV_UP): eth4: link is not ready
igb 0000:81:00.0: changing MTU from 1500 to 9000
ADDRCONF(NETDEV_UP): eth5: link is not ready
type=1400 audit(1628863781.555:4): avc:  denied  { sys_tty_config } for  pid=6008 comm="kexec" capability=26  scontext=system_u:system_r:kdump_t:s0 tcontext=system_u:system_r:kdump_t:s0 tclass=capability
type=1400 audit(1628863781.556:5): avc:  denied  { write } for  pid=6008 comm="kexec" path="/dev/pts/0" dev=devpts ino=3 scontext=system_u:system_r:kdump_t:s0 tcontext=syste


dca service started, version 1.12.1
Intel(R) Gigabit Ethernet Network Driver - version 3.2.10-k
Copyright (c) 2007-2011 Intel Corporation.
igb 0000:81:00.0: PCI INT A -> GSI 50 (level, low) -> IRQ 50
igb 0000:81:00.0: setting latency timer to 64
igb 0000:81:00.0: irq 110 for MSI/MSI-X
igb 0000:81:00.0: irq 111 for MSI/MSI-X
igb 0000:81:00.0: irq 112 for MSI/MSI-X
igb 0000:81:00.0: irq 113 for MSI/MSI-X
igb 0000:81:00.0: irq 114 for MSI/MSI-X
igb 0000:81:00.0: irq 115 for MSI/MSI-X
igb 0000:81:00.0: irq 116 for MSI/MSI-X
igb 0000:81:00.0: irq 117 for MSI/MSI-X
igb 0000:81:00.0: irq 118 for MSI/MSI-X
igb 0000:81:00.0: Intel(R) Gigabit Ethernet Network Connection
igb 0000:81:00.0: eth0: (PCIe:5.0Gb/s:Width x4) b4:96:91:4e:13:f0
igb 0000:81:00.0: eth0: PBA No: H47819-003
igb 0000:81:00.0: Using MSI-X interrupts. 8 rx queue(s), 8 tx queue(s)
igb 0000:81:00.1: PCI INT B -> GSI 52 (level, low) -> IRQ 52
igb 0000:81:00.1: setting latency timer to 64
igb 0000:81:00.1: irq 119 for MSI/MSI-X
igb 0000:81:00.1: irq 120 for MSI/MSI-X
igb 0000:81:00.1: irq 121 for MSI/MSI-X
igb 0000:81:00.1: irq 122 for MSI/MSI-X
igb 0000:81:00.1: irq 123 for MSI/MSI-X
igb 0000:81:00.1: irq 124 for MSI/MSI-X
igb 0000:81:00.1: irq 125 for MSI/MSI-X
igb 0000:81:00.1: irq 126 for MSI/MSI-X
igb 0000:81:00.1: irq 127 for MSI/MSI-X
igb 0000:81:00.1: Intel(R) Gigabit Ethernet Network Connection
igb 0000:81:00.1: eth1: (PCIe:5.0Gb/s:Width x4) b4:96:91:4e:13:f1
igb 0000:81:00.1: eth1: PBA No: H47819-003
igb 0000:81:00.1: Using MSI-X interrupts. 8 rx queue(s), 8 tx queue(s)

그래서 나는 그것들이 모두 거기에 있고 장치 드라이버가 존재하고 로드되었는지 확인하기 위해 확인한 pci ID도 볼 수 있습니다.

lsmod | grep igb
igb                   113015  0 
dca                     6877  1 igb

igb 커널 드라이버는 확장 카드용이지만 마더보드의 온보드 이더넷 포트용은 아닌 것으로 보입니다. 이로 인해 모든 포트에 액세스할 수 없게 될 수 있습니까? 내 포트를 사용할 수 없는 OS 문제를 해결하는 방법에 대한 제안 사항이 있으면 크게 감사하겠습니다.

그래서 온보드 이더넷 컨트롤러가 igb 드라이버를 사용하는 intel i210 8086:1533인지 확인하고 igb 드라이버를 제거하고 다시 설치하기 시작했습니다. 커널은 3.2rt이므로 igb는 2.6+부터 지원되므로 괜찮다고 생각했지만 rmmod igb를 실행한 다음 최신 igb 버전의 tar 파일에서 "make install"을 실행하려고 하면 충돌로 인해 make가 실패합니다. "netdev_features_t" 때문에 이미 존재하는 등의 문제가 있습니다. igb 제거를 완료하기 위해 다음 명령을 실행했을 때 이전에 설치된 igb 드라이버에 이것이 남아 있을 수 있다고 생각했습니다.

rpm -q igb

rpm -e igb //or igb<kernel version>

rpm이 제거되는 모듈을 찾을 수 없거나 모듈이 존재하지 않는 경우, 부분적으로 제거된 장치 드라이버의 나머지 부분을 어디서 찾을 수 있는지 아는 사람이 있습니까? 내가 알고 있는 모든 igb 파일을 지웠지만 make는 여전히 실패합니다. 삭제된 파일 목록

/usr/src/kernel/<kernelversion>/drivers/net/ethernet/intel/igb //wiped out whole directory containing the original makefile

/lib/modules/kernel/<kernelversion>/drivers/net/ethernet/intel/igb //dir containing the .ko file 

원본 .o 파일이 아직 존재하는 다른 장소가 있습니까? 라이브 Fedora 이미지도 부팅했는데 포트 4개를 모두 확인하고 문제 없이 igb를 사용했기 때문에 드라이버인 것 같습니다.

답변1

일반적으로 ifconfig옵션 없이 구성된 네트워크 카드만 표시됩니다. 구성되지 않은 네트워크 카드도 볼 수 있습니다 ifconfig -a. 카드가 구성되지 않은 경우(예: 카드의 MAC 주소가 기존 구성에 나열된 주소와 일치하지 않기 때문에) 드라이버는 해당 카드에 대한 리소스를 예약하지 않으므로 아마도 사용 dca횟수가 1 밖에 되지 않습니다 1.

/etc/udev/rules.d/70-persistent-net.rulesNIC를 특정 이름의 특정 MAC 주소와 eth*연결하는 줄이 있는지 확인하세요 . 디스크 이미지가 해당 특정 시스템의 것이 아닌 경우 이미지가 있는 시스템의 NIC를 참조하는 일부 MAC 주소를 찾을 가능성이 높습니다. 특정 NIC에 특정 이름을 할당하려는 경우 이 줄을 주석 처리하거나 편집할 수 있습니다.

/etc/sysconfig/network-scripts/ifcfg-eth*그런 다음 모든 파일에서 MAC 주소 참조 도 확인하세요 . 그들은 다음과 같이 보일 것입니다 HWADDR=<MAC address here>. 이것들은 존재할 수도 있고 존재하지 않을 수도 있습니다. 이것은 udev의 이름보다 앞서 지속적인 NIC 이름 지정을 보장하는 전통적인 RedHat 방식이었습니다 70-persistent-net.rules. HWADDR=모든 줄을 완전히 제거하고 udev 규칙이 NIC 이름 할당을 처리하도록 하는 것이 좋습니다.

"누락된" NIC가 있는 줄이 있는 경우 시스템 로그에서 이 템플릿과 일치하는 메시지를 한두 개 HWADDR=찾을 수 있습니다 .ifup

"Device ${DEVICE} has MAC address ${FOUNDMACADDR}, instead of configured address ${HWADDR}. Ignoring."

RHEL 6은 "와, 이 네트워크 구성은 이 하드웨어와 일치하지 않습니다. 저는 그 NIC에 있는 어떤 것도 건드리지 않습니다. 시스템 관리자가 수정하도록 하세요."라고 말합니다.

관련 정보