재부팅하지 않고 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을 설정하더라도 "유효한 일치 누락"오류가 계속 표시됩니다. 말할 것도없이 두 개의 인터페이스 ( eth0및 eth1) 가 있으며 두 규칙에 대해 규칙 파일을 생성하려고합니다.

또한 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.