새로 작성된 규칙이 작동 할 수 있도록 udev 규칙을 어떻게 다시로드해야합니까?
Arch Linux를 실행 중이며 udevstart
여기 에는 명령 이 없습니다 .
또한 /etc/rc.d
udev 서비스가 없습니다.
답변
# udevadm control --reload-rules && udevadm trigger
답변
Udev는 inotify 메커니즘을 사용하여 라이브러리와 로컬 구성 트리 (일반적으로 /lib/udev/rules.d
and 에 위치)에서 rules 디렉토리의 변경 사항을 감시합니다 /etc/udev/rules.d
. 따라서 대부분 규칙 파일을 변경할 때 아무 것도 할 필요가 없습니다.
다른 디렉토리에 파일을 포함하는 규칙이있는 경우와 같이 비정상적인 작업을 수행하는 경우 udev 데몬에 명시 적으로 알리면됩니다. 그런 다음 일반적인 규칙을 사용하여 데몬에게 구성을 다시로드하도록 요청하십시오. SIGHUP ( pkill -HUP udevd
)을 보내십시오 . 또는 다음 udevadm
명령을 사용할 수 있습니다 udevadm control --reload-rules
..
그러나 udev의 버전마다 이전에 규칙을 자동으로 다시로드하기위한 트리거가 서로 다릅니다. 의심스러운 경우 전화하십시오 udevadm control --reload-rules
: 어쨌든 아무런 해를 끼치 지 않습니다.
udev 규칙은 장치가 추가 된 경우에만 적용됩니다. 이미 연결된 장치에 규칙을 다시 적용하려면 udevadm trigger
구성이 변경된 장치와 일치하는 올바른 옵션을 호출 하여 이를 명시 적으로 수행해야합니다 (예 🙂 udevadm trigger --attr-match=vendor='Yoyodyne' --attr-match=model='Frobnicator 300'
.
답변
언젠가 필요하기 때문에 이것을 추가하고 있습니다 … 다시.
이더넷 장치 번호와 MAC 주소가 일치하지 않는 경우가 있습니다. VM에서 실행 중이고 각 장치가 다른 VLAN에 할당 된 경우와 같이 때때로 이것이 중요합니다.
- 네트워크 인터페이스를 중단 한 다음
- 수정
/etc/udev/rules.d/70-persistent-net.rules
(또는 이에 상응하는 내용) - 로 다시로드
udevadm control --reload-rules
- 다시 트리거
udevadm trigger --attr-match=subsystem=net
- 네트워크 인터페이스를 가동시킵니다.
이것이 얼마나 잘 작동하는지 놀랐습니다.
답변
이것이 적용되는지 확실하지 않으며, 이것은 확실히 오래된 게시물이지만 udev 정보에 대한 웹 검색이 상당히 높아서 지식을 공유 할 수 있다고 생각했습니다.
특정 장치에 대해 수동으로 udev 규칙을 트리거 할 수 있습니다. 이는 Redhat 관련 배포판 (centos fedora 등)에만 적용됩니다.
규칙 파일 ( /etc/udev/rules.d/whateveryoucalledyourrules
) 에서 관련 사항을 변경 change
하면 장치의 이벤트에 에코 할 수 있습니다 .
echo change > /sys/block/devname/partname1/uevent
이 장치에서만 udev 규칙을 읽습니다. 내 의견으로는 훨씬 더 좋았고 더 타겟팅되었습니다.
답변
나를 위해, 아래의 명령 순서는 원하는대로 작동했습니다.
번호 /etc/udev/rules.d/70-persistent-net.rules
를 변경하고 eth
재부팅하지 않고 다시로드하도록 수정했습니다 .
/etc/init.d/networking stop
/etc/init.d/udev stop
udevadm control --reload-rules
/etc/init.d/udev start
/etc/init.d/networking start
이 작업을 수행하면 시스템을 재부팅하지 않고 런타임에 성공적으로로드되었습니다.
매뉴얼 페이지를 읽음으로써 스스로 이것을 발견 했으므로 이것에 대한 제안이나 제안은 환영합니다.
답변
나는 추가 해요 올바른 가 @enthusiasticgeek에서 주석에 통지 걸 렸어요 때문에 여기에 대한 답을. 당신이해야 할 모든 것 (당신이 서버의 콘솔에 있다고 가정하면-분명히 당신이 ssh에 들어간 경우에는 나쁜 일입니다!) :
- 사용중인 인터페이스 모듈 목록을 가져옵니다.
cat /etc/udev/rules.d/70-persistent-net.rules | grep "PCI device" | perl -pe 's/.*\((\w+)\).*/$1/g'| uniq
제 경우에는 igb
입니다. 그래서 그냥 인쇄합니다.
- 유형
sudo rmmod igb
(igb
1 단계에서 얻은 카드 드라이버로 교체 하십시오.
그런 다음 /etc/udev/rules.d/70-persistent-net.rules
필요에 따라 편집 한 다음을 사용하여 모듈을 다시로드하고 사용자 모듈로 modprobe igb
다시 교체 igb
하십시오.
답변
여러 네트워크의 경우
cat /etc/udev/rules.d/70-persistent-net.rules | grep "PCI device" | awk '{print $NF}'|sed -e 's/(//g' -e 's/)//g'| uniq > /tmp/listnet
rm -rf /etc/udev/rules.d/70-persistent-net.rules
for i in $(cat /tmp/listnet); do rmmod $i; modprobe $i;done
service network restart
rm -rf /tmp/listnet