나는 단일 이더넷 인터페이스를 갖춘 qemu 기반 가상 머신에서 CentOS-6.5를 실행하고 있는데 놀랍게도 udev는 어떤 이유로든 이름을 eth0에서 eth1로 바꿨습니다(!)
그래서 저는 이 동작을 완전히 비활성화하고 싶습니다. 즉, 커널 명령줄에 "net.ifnames=0"을 전달하고 싶습니다. 작동하지 않는 것 같고 동작이 변하지 않습니다. 커널 매개변수인 "biosdevname=0"도 도움이 되지 않습니다.
% qemu-system-x86_64 -cpu host -boot c -hda my_image.qcow2 -snapshot
-m 1024 --enable-kvm -name vm0 -nographic -display curses -pidfile
/var/run/vm0.pid -mem-path /dev/hugepages -mem-prealloc -monitor
unix:/var/run/vm0monitor,server,nowait -net none -netdev
type=tap,id=net0,script=no,downscript=no,ifname=vhost1,vhost=on
-device virtio-net-pci,netdev=net0,mac=00:00:00:00:00:01,csum=off,gso=off,guest_tso4=off,guest_tso6=off,guest_ecn=off
경고나 오류가 없으며 나중에 가상 머신에 로그인할 수 있습니다. 그러나 udev는 단일 네트워크 인터페이스의 이름을 eth0에서 eth1로 변경한 것으로 보입니다. 이는 시작 시 자동으로 생성되는 규칙 파일입니다.
% cat /etc/udev/rules.d/70-persistent-net.rules
# PCI device 0x1af4:0x1000 (virtio-pci)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:00:00:00:00:0
1", ATTR{type}=="1", KERNEL=="eth*", NAME="eth1"
virtio-pci 드라이버가 시스템의 단일 인터페이스로 eth1을 선택하는 이유는 무엇입니까?
그러나 mac=.. 옵션 없이 qemu를 실행하면 이런 일이 발생하지 않습니다. MAC 주소는 qemu 사전 정의된 52:54:xxx이지만 명령줄을 통해 Mac을 제공하고 싶습니다.
답변1
삭제:
/etc/udev/rules.d/70-persistent-net.rules
그리고 다시 시작하세요. udev
네트워크 어댑터를 찾아서 이름을 지정합니다 eth0
. 그런 다음 어댑터 이름을 일관되게 지정하기 위한 규칙을 사용하여 위의 파일을 다시 만듭니다 eth0
.
파일을 삭제하기 전에 읽어보면 어댑터 이름을 지정하는 규칙을 찾을 수 있습니다 eth1
. 파일에는 특정 어댑터의 이름을 지정하는 다른 규칙이 있을 수 있습니다 eth0
. 과거 어느 시점에 어댑터를 교체한 경우 이런 일이 자주 발생합니다.
이 동작을 완전히 비활성화하려면 파일을 심볼릭 링크 위에 만드십시오 /dev/null
.
# ln -s /dev/null /etc/udev/rules.d/70-persistent-net.rules