리눅스가 네트워크 장치의 할당을 어떻게 또는 어디서 결정합니까? 특히, wlan0
또는 wlan1
무선 USB 장치 용.
얼마 전에 TP USB 무선을 연결했고에 할당되었습니다 wlan0
. 나는 그것을 제거했다. 이번 주에 나는 Edimax USB 무선 장치를 연결했고로 나타납니다 wlan1
. 나는 오늘 두 번째 Edimax USB 무선 장치 (두 개를 구입)를 시도하기 위해 그것을 제거하고 이제 나타납니다 wlan2
.
나는 이것이 어딘가에 구성되고 있음을 알기에 충분한 유닉스 / 리눅스를 알고 있으며, 사용하지 않는 구성 파일을 삭제하면 최신 Edimax를 만들 수 있습니다 wlan0
. 그러나 어떻게 / 어디?
답변
Udev 는 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
과 wlan1
항목을 제거 /etc/udev/rules.d/70-persistent-net.rules
하고로 변경 wlan2
하십시오 wlan0
. 규칙을 이미 연결된 장치에 다시 적용하려면 실행 udevadm --trigger --attr-match=vendor='Edimax'
(또는 --attr-match
찾은 매개 변수가 장치와 일치)을 실행하십시오 .
답변
이 문제는 systemd
v197부터 네트워크 장치에 대한 영구 명명 기능이 도입 되어 해결되었습니다 .
freedesktop Predictable Network Interface Names 페이지에 따르면 커널은 단순히 관련 드라이버가 조사한 순서에 따라 이름을 지정했습니다.
커널에 의해 적용되는 네트워크 인터페이스의 전형적인 이름 지정 체계는 “eth0”, “eth1”, …로 시작하는 이름을 드라이버가 검색 할 때 모든 인터페이스에 할당하는 것입니다. 드라이버 프로빙은 일반적으로 최신 기술에 대해 예측할 수 없으므로 여러 네트워크 인터페이스를 사용할 수있게되면 “eth0”, “eth1″등의 이름이 더 이상 고정되지 않으며 ” 한 부팅에서 eth0 “은 다음 부팅에서”eth1 “이됩니다.
배포판에서 systemd를 사용하는 경우 예측 가능하게 할당되었지만 다루기 힘든 이름을 사용 wlp0s11
하거나 mac 주소를 기반으로하여 udev
보다 편안한 이름을 지정 하는 규칙을 작성할 수 있습니다 wifi1
.
에서 파일 포함 /etc/udev/rules.d/
이라 불리는 10-network-device.rules
:
SUBSYSTEM=="net", ACTION=="add", ATTR{address}=="22:bb:cc:33:44:dd", NAME="wifi1"