답변:
이것은 예측 가능한 네트워크 인터페이스 장치 이름 입니다.
en
이더넷 용o
온보드 용udev-builtin-net_id.c 소스에 대한 자세한 내용
흠. "en"과 "o"보다 "16777736"에 더 관심이 있습니다.
실수로 Google을 방황하고 사용자 정의 PCI 아키텍처가있는 서버에 앉아있는 것을 발견하지 않으면 16777736이 어떻게 가능한 가치가 있는지 알 수 없습니다. 이것은 더 심각한 문제에 대한 힌트 일 수 있습니다.
현재 스키마에서 시스템은 256 개 이상의 PCI 버스를 처리 할 수 없습니다 (각 버스 아래에 32 개의 장치가 있고 각 장치 아래에 최대 8 개의 기능이 있음). 이것을 Bus : Device.Function 주소 지정이라고도합니다. 최신 시스템은 Domain : Bus : Device.Function을 사용하여 256 버스 제한을 초과합니다. 어쨌든 문제로 돌아 가면 ...
당신은 할 수 있습니까 :
ls -la /sys/class/net | grep eno16777736
다음과 매우 비슷한 것을 본다면 :
eno16777736 -> ../.../devices/pci0000:00/0000:00:11.0/0000:1000208:01.0/net/eno16777736
그런 다음 Google이 서버를 가지고 놀기 전에 빨리 달리는 것이 좋습니다.
/(0000:1000208:01.0)/ 위의 버스 값이 "1000208"인 Domain : Bus : Device.Function 주소는 16777736의 16 진수 표현입니다. 그러나 "0x100"(256)은 최대 값이어야합니다. "버스"를 위해 가질 수 있습니다.
반면에 "버스"에 대해 0x100 미만의 값을 얻는 경우 :
eno16777736 -> ../.../devices/pci0000:00/0000:00:11.0/0000:1c:01.0/net/eno16777736
그런 다음 문제는 시작시 Bios / Firmware가 udev (systemd)에 정보를 보내는 방법과 관련이 있다고 생각합니다. 잠재적 인 원인을 파악하려면 먼저 udev가 다시 반환하는 값을 확인하십시오.
일반적으로 PIN (예측 가능한 인터페이스 이름)을 생성하는 udev 쿼리에는 세 곳이 있습니다.
[그와 같은 순서로]
다음과 같이 (1)을 테스트 할 수 있습니다.
udevadm info --path=/sys/class/net/eno16777736 --attribute-walk | grep acpi
이것이 16777736을 제공하면 시스템이 ACPI_DSM을 지원하는 데 필요한 PCI 펌웨어 사양 3.1을 지원하지 않을 가능성이 높습니다
이제 테스트해야합니다 (2). 먼저 SMBIOS 테이블에서 레코드 유형 41을 확인하십시오 (유형 41이 가장 적합 함).
dmidecode -t 41 | more
아무것도 표시되지 않거나 SMBIOS 버전이 "2.62"보다 작 으면 udev가 PCI IRQ 라우팅 테이블을 사용하여 PIN을 생성한다는 의미입니다.
그래서 우리는 확인해야합니다 (3)
biosdecode
최대 슬롯 입력에주의를 기울여야합니다. 다음과 같은 형식이어야합니다.
Slot Entry X: ID 00:00, (slot number X| status)
X가 25 인 경우 인수를 위해 NIC는 25 이하의 슬롯에 있어야합니다. 그렇지 않은 경우 udev는 자리 표시 자 값 16777736을 계속 참조합니다.
대부분의 경우 다음과 같은 방법으로 nic의 슬롯 번호를 확인할 수 있습니다.
lspci -bv | grep -i -A10 ether
대부분의 경우 BDF (Bus : Device.Function)에서 장치는 16 진수에서 10 진수로 변환 한 후 물리적 포트 번호와 같아야합니다. 그렇지 않은 경우, lspci는 위의 lspci 명령을 실행 한 결과에서 물리적 슬롯을 별도의 행에 나열합니다.
따라서 나열된 물리적 슬롯 번호가 X (PCI IRQ 라우팅 테이블에서 찾은 최대 수)보다 큰 경우 문제가 가장 많이 발생한 것입니다.
이 경우 내가 생각할 수있는 5 가지 가능한 솔루션이 있습니다 ...
[이것은 내가 찾기에 더 나은 나의 시간을 사용하는 솔루션이다]
으로:
vi /etc/udev/rules.d/70-my-net-names.rules
다음을 추가하십시오.
ACTION=="add", SUBSYSTEM=="net", ENV{ID_BUS}=="pci",
KERNELS=="{Domain:Bus:Device.Function}", NAME="{name: i.e. eno1 or eth0}"
[저는 이것을 무시하고 문제를 해결하는 것입니다. 예쁜 해결책이라고 부릅니다]
[물론 이것은 당연한 일입니다. 실제로 해결책이 아닙니다) ...
[그러나 이것은 일시적인 해킹이 될 때까지 내 소프트웨어가 업데이트 된 솔루션입니다]
eno16777732
입니다.
이전 답변에 세부 정보를 추가하려면 다음을 수행하십시오.
인터페이스 유형에 따른 두 문자 접두사 :
* en -- ethernet * sl -- serial line IP (slip) * wl -- wlan * ww -- wwan * ib -- Infiniband
이름의 종류 :
* b<number> -- BCMA bus core number * ccw<name> -- CCW bus group name * o<index> -- on-board device index number * s<slot>[f<function>][d<dev_port>] -- hotplug slot index number * x<MAC> -- MAC address * [P<domain>]p<bus>s<slot>[f<function>][d<dev_port>] -- PCI geographical location * [P<domain>]p<bus>s<slot>[f<function>][u<port>][..]1[i<interface>] -- USB port number chain
출처 : http://ask.xmodulo.com/change-network-interface-name-centos7.html