재부팅하지 않고 70-persistent-net.rules를 재생성하는 방법?


14

파일 /etc/udev/rules.d/70-persistent-net.rules은 재부팅 중에 udev (있는 경우)가있는 Linux 시스템에서 자동 생성됩니다. 그러나 서버를 재부팅하지 않고이 규칙 파일 (명령 포함)을 만드는 방법을 알고 싶습니다.

나는 인터넷 검색을 한 동안이 스크립트에 의해 규칙 파일이 생성되는 것을 발견했다.

/lib/udev/write_net_rules

그러나 일부 스크립트는 환경 변수가 올바르게 설정된 상태에서 udev로 시작하기 때문에 명령 줄에서이 스크립트를 실행할 수 없습니다. 수동으로 시작하면 "missing $ INTERFACE"오류 메시지가 인쇄됩니다. 스크립트를 시작하기 전에 env 변수 INTERFACE = eth0을 설정하더라도 "유효한 일치 누락"오류가 계속 표시됩니다. 말할 것도없이 두 개의 인터페이스 ( eth0eth1) 가 있으며 두 규칙에 대해 규칙 파일을 생성하려고합니다.

또한 udev 자체에서 스크립트를 시작하기를 희망하면서 이와 같은 udev 이벤트를 트리거하려고 생각했지만 아무것도 변경되지 않았습니다.

udevadm trigger --type=devices --action=change

그렇다면 아무도 /etc/udev/rules.d/70-persistent-net.rules재부팅하지 않고 파일에서 영구 네트 규칙을 재생성하는 방법을 알고 있습니까?


당신의 분포는 무엇입니까? 어떤 종류의 초기화 시스템을 사용합니까?
michas

1
나는 그것이 관련이 없다고 말할 것입니다. eUdev 및 sysvinit과 함께 Slackware를 사용하고 있습니다. 나는 규칙 파일을 생성하는 실행 파일을 찾기 위해 시작 스크립트를 검사하고 있지만 udevadm 트리거 만 발견했습니다.이 규칙은 영구 규칙을 생성하는 명령이지만 어떻게 든 재부팅 할 때만 작동합니다. 수동으로 실행하면 효과가 있습니다.
Tomas M

1
내가 아치 70-persistent-net.rules에서 /lib/udev/write_net_rules대본을 가지고 있지 않기 때문에 관련이있을 수 있습니다 . 따라서 확인할 수는 없지만 $INTERFACE변수는 스크립트 자체에 설정되어 있습니다. 아마도 그것은 인수로 전달됩니다. 스크립트 내용을 보여줄 수 있습니까?
terdon

스크립트는 단순히 $INTERFACE변수 를 사용 합니다. 단순히 사용 된 변수는 많지만 선언되지 않았습니다. udev에 의해 호출되기 때문에 udev는 부팅시 스크립트를 실행하기 전에 모든 env 변수를 설정합니다.
Tomas M

실제로 파일을 재생성하는 방법을 알아야합니까, 아니면 새로운 현실을 반영하기 위해 파일을 편집 할 수 있습니까?
roaima

답변:


5

매뉴얼 페이지에 따르면 --action=change의 기본값입니다 udevadm.

   -c, --action=ACTION
       Type of event to be triggered. The default value is change.

따라서 --action=add대신 시도해 보는 것이 좋습니다. 도움이 될 것입니다 :

/sbin/udevadm trigger --type=devices --action=add

intel_rapl : 패키지 0에 유효한 랩 도메인이 없습니다
Tiina

1

Ubuntu Server 16.04LTS에는 70-persistent-net.rules가 없습니다.

내가 한 모든 것은 달렸다.

ln -s /dev/null /etc/udev/rules.d/80-net-setup-link.rules

그런 다음 사용하여 파일을 만듭니다

sudo vi /etc/systemd/network/10-internet.link

다음을 추가하십시오

[Match] 
Path=pci-0000:(your device mac address)

[Link] 
Name=eth0 (or whatever you want to name it)

:wq 파일을 저장

그런 다음 / etc / network / interfaces 파일을 재부팅하고 조정하십시오. 그런 다음 다시 부팅하십시오.


9
문제는 " 재부팅하지 않고 70-persistent-net.rules를 재생성하는 방법 "입니다. 귀하의 답변에는 두 번의 재부팅이 포함되어 있습니다. 이것이 어떻게 질문에 대한 답입니까?
G-Man, 'Reinstate

0

나는 같은 문제가 있었지만 여전히 ip addr목록 에서 인터페이스를 볼 수 있음을 알았습니다 . 나는 다음을 루트로 사용했다.

# ip addr # to get my mac addresses
# export INTERFACE=eth0; export MATCHADDR="xx:xx:xx:xx:xx:xx"; /lib/udev/write_net_rules
# replace the 00's with the real mac addr

각 인터페이스에 대해 반복하십시오. 내 파일을 "복구"하는 데 사용되었습니다. (참고 : 한 번의 호출로 모든 인터페이스가 나열되고 일치하는 이름으로 이름 바꾸기가 추가되므로 한 번의 호출 후에 출력 파일을 들여다 보는 것이 좋습니다)

OS와 현재 UDEV 구현 및 지원 스크립트 간에는 분명히 차이점이 있습니다. 참고로,이 작업을 성공적으로 수행했을 때 CentOS 6.8을 사용하고있었습니다.

크레딧-이 사이트를 주로 참조했습니다. 스크립트 수정에 대해 이야기하는 몇 가지 스레드가 있지만 https://access.redhat.com/discussions/1240213 환경 변수를 사용하는 것이 좋습니다.


쓰레기-잠깐만 죄송합니다. 작동하지 않는 명령이었습니다. 내가 한 단계로 답변을 업데이트해야합니다
gravy21

좋아, 나는 어떻게 내가 실제로 고쳤는지 업데이트했다. 그것이 당신의 상황에 적용된다면 효과가 있기를 바랍니다.
gravy21
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.