거의 항상 Ubuntu 커널 PPA의 커널 또는 Ubuntu 커널 구성을 사용하여 직접 컴파일 한 커널을 사용합니다.
문제는 주식 커널을 사용할 때 예측 가능한 네트워크 인터페이스 이름 (예 : "p4p1")을 사용하는 것으로 보이지만 다른 커널을 사용할 때는 이전 방법 (예 : "eth0")을 사용하는 것으로 보입니다.
이 질문과 관련이 없지만 테스트 컴퓨터에서 하드 디스크 오류가 발생하여 Ubuntu Server 14.04.2를 새로 설치하고 있습니다.
커널의 차이점이 무엇인지 알 수 없었습니다. 커널 구성 매개 변수가 의심되지만 어느 것을 식별 할 수 없습니다.
내 질문 : 예측 가능한 네트워크 인터페이스 이름을 모든 커널에서 일관되게 작동하게하려면 어떻게해야합니까?
추가 사항 : 어딘가에서 예측 가능한 네트워크 인터페이스 이름을 비활성화하여 grub에 추가했습니다.
GRUB_CMDLINE_LINUX_DEFAULT="net.ifnames=0 biosdevname=0"
그래서 그 반대가 도움이 될 것이라고 생각했습니다.
GRUB_CMDLINE_LINUX_DEFAULT="net.ifnames=1 biosdevname=1"
그러나 아무런 차이가 없었습니다. 실제로, 설정에 관계없이 비 재고 커널이 biosdevname을 사용하도록 할 수는 없습니다. 그리고 설정 커널에 관계없이 주식 커널이 /etc/udev/rules.d/70-persistent-net.rules
파일 을 생성하도록 할 수는 없습니다 (그렇지만 원하는 것은 아닙니다) net.ifnames
. 내가 가지고 있으면 net.ifnames=1
적어도 비 재고 커널은 잘못된 /etc/udev/rules.d/70-persistent-net.rules
파일을 생성하지 않습니다 .
발췌 /var/log/udev
:
주식 커널 :
KERNEL[9.216730] add /devices/pci0000:00/0000:00:1c.4/0000:03:00.0/net/p4p1 (net)
ACTION=add
DEVPATH=/devices/pci0000:00/0000:00:1c.4/0000:03:00.0/net/p4p1
IFINDEX=2
INTERFACE=p4p1
SEQNUM=1945
SUBSYSTEM=net
...
UDEV [9.241073] add /devices/pci0000:00/0000:00:1c.4/0000:03:00.0/net/p4p1 (net)
ACTION=add
DEVPATH=/devices/pci0000:00/0000:00:1c.4/0000:03:00.0/net/p4p1
ID_BUS=pci
ID_MODEL_FROM_DATABASE=P8P67 and other motherboards
ID_MODEL_ID=0x8168
ID_NET_NAME_MAC=enxf46d04652d8e
ID_NET_NAME_PATH=enp3s0
ID_OUI_FROM_DATABASE=ASUSTek COMPUTER INC.
ID_PCI_CLASS_FROM_DATABASE=Network controller
ID_PCI_SUBCLASS_FROM_DATABASE=Ethernet controller
ID_VENDOR_FROM_DATABASE=Realtek Semiconductor Co., Ltd.
ID_VENDOR_ID=0x10ec
IFINDEX=2
INTERFACE=p4p1
Ubuntu PPA 커널 4.1RC5에서 :
KERNEL[10.772566] add /devices/pci0000:00/0000:00:1c.4/0000:03:00.0/net/eth0 (net)
ACTION=add
DEVPATH=/devices/pci0000:00/0000:00:1c.4/0000:03:00.0/net/eth0
IFINDEX=2
INTERFACE=eth0
SEQNUM=1962
SUBSYSTEM=net
...
UDEV [11.185866] add /devices/pci0000:00/0000:00:1c.4/0000:03:00.0/net/eth0 (net)
ACTION=add
DEVPATH=/devices/pci0000:00/0000:00:1c.4/0000:03:00.0/net/eth0
ID_BUS=pci
ID_MODEL_FROM_DATABASE=P8P67 and other motherboards
ID_MODEL_ID=0x8168
ID_NET_NAME_MAC=enxf46d04652d8e
ID_NET_NAME_PATH=enp3s0
ID_OUI_FROM_DATABASE=ASUSTek COMPUTER INC.
ID_PCI_CLASS_FROM_DATABASE=Network controller
ID_PCI_SUBCLASS_FROM_DATABASE=Ethernet controller
ID_VENDOR_FROM_DATABASE=Realtek Semiconductor Co., Ltd.
ID_VENDOR_ID=0x10ec
IFINDEX=2
INTERFACE=eth0
SEQNUM=1962
SUBSYSTEM=net
USEC_INITIALIZED=3227
참고 : /etc/udev/rules.d/70-persistent-net.rules
파일을 만든 다음 적절한 장치 이름으로 편집 하여이 문제를 일시적으로 옮겼 습니다. 궁극적으로 파일을 제거하고 싶습니다.
net.ifnames=1
and와 다른 인터페이스 이름을 기대biosdevname=0
했지만 이전 eth0과 eth1을 얻었습니다. 어쨌든, 올바른 인터페이스 이름을 반영하도록/etc/udev/rules.d/70-persistent-net.rules
편집 한 후에는 현재 커널에서 작동합니다 ( )/etc/network/interfaces
.