Linux는 네트워크 장치 할당을 어떻게 또는 어디서 결정합니까? 특히 무선 USB 장치 wlan0
의 경우 .wlan1
얼마 전에 TP USB 무선을 연결했는데 할당되었습니다 wlan0
. 나는 그것을 제거했다. 이번 주에 Edimax USB Wireless를 연결했는데 wlan1
. 오늘 두 번째 Edimax USB 무선 장치를 사용해 보기 위해 이 장치를 벗었는데(두 개 구입) 이제 다시 나타납니다 wlan2
.
나는 이것이 어딘가에 구성되어 있다는 것을 알 정도로 Unix/Linux에 대해 충분히 알고 있으며 사용하지 않는 구성 파일을 제거하면 최신 Edimax를 만들 수 있습니다 wlan0
. 그러나 어떻게/어디에서?
답변1
우데브Linux에서 장치의 이름을 결정하는 시스템 구성 요소입니다. 주로 파일 이름 /dev
뿐 아니라 네트워크 인터페이스의 이름도 결정합니다.
099부터 196까지의 Udev 버전에는 네트워크 인터페이스 이름을 기록하는 규칙이 있으며 동일한 장치에 항상 동일한 번호를 사용합니다. udev 174부터 이러한 규칙은 기본적으로 비활성화되어 있지만 배포판에서는 계속 활성화할 수 있습니다(예: Ubuntu에서는 이를 유지합니다). 일부 배포판은 다른 규칙 세트를 제공합니다.
나중에 사용할 수 있도록 인터페이스 이름을 기록하고 보존하는 스크립트는 입니다
/lib/udev/rules.d/75-persistent-net-generator.rules
. 에 규칙을 작성합니다
/etc/udev/rules.d/70-persistent-net.rules
. 따라서 기존 및 항목을 제거하고 wlan0
.Run(또는 장치와 일치하는 매개변수)으로 변경하여 연결된 장치에 규칙을 다시 적용하십시오.wlan1
/etc/udev/rules.d/70-persistent-net.rules
wlan2
wlan0
udevadm --trigger --attr-match=vendor='Edimax'
--attr-match
답변2
v197 부터 systemd
이 문제는 네트워크 장치의 영구 이름 지정 기능이 도입되면서 해결되었습니다.
프리데스크탑에 따르면예측 가능한 네트워크 인터페이스 이름페이지에서 커널은 관련 드라이버가 검색하는 순서에 따라 이름을 할당합니다.
커널 응용 프로그램용 네트워크 인터페이스의 일반적인 명명 체계는 드라이버가 검색하는 모든 인터페이스에 "eth0", "eth1" 등으로 시작하는 이름을 할당하는 것입니다. 최신 기술을 사용한 드라이버 검색은 예측할 수 없는 경우가 많으므로, 이는 여러 네트워크 인터페이스를 사용할 수 있게 되면 "eth0", "eth1" 등의 이름 할당이 더 이상 고정되지 않고 "한 번 부팅"이 발생할 가능성이 있음을 의미합니다. .eth0"은 다음 부팅 시 결국 "eth1"이 됩니다.
배포판에서 systemd를 사용하는 경우 예측 가능하게 할당되지만 사용하기 어려울 수 있는 이름을 사용할 수 있습니다. 또는 예를 들어 mac 주소를 기반으로 보다 편리한 이름을 지정하는 규칙을 wlp0s11
작성할 수 있습니다 . .udev
wifi1
/etc/udev/rules.d/
다음 이름의 파일 내에 파일을 포함합니다 10-network-device.rules
.
SUBSYSTEM=="net", ACTION=="add", ATTR{address}=="22:bb:cc:33:44:dd", NAME="wifi1"