วิธีการสร้าง 70-persistent-net.rules โดยไม่ต้องรีบู๊ต?


14

ไฟล์/etc/udev/rules.d/70-persistent-net.rulesถูกสร้างขึ้นโดยอัตโนมัติบนระบบ Linux ที่มี udev หากไม่มีอยู่ในระหว่างการรีบูต แต่ฉันต้องการทราบวิธีสร้างไฟล์กฎนี้ (ด้วยคำสั่ง) โดยไม่ต้องรีบูตเซิร์ฟเวอร์

ฉันใช้ Googling ไประยะหนึ่งแล้วพบว่าไฟล์กฎนี้สร้างขึ้นโดยสคริปต์นี้:

/lib/udev/write_net_rules

อย่างไรก็ตามมันเป็นไปไม่ได้ที่จะเรียกใช้สคริปต์นี้จากบรรทัดคำสั่งเนื่องจาก (ฉันถือว่า) มันต้องการที่จะเริ่มต้นโดย udev ด้วยการตั้งค่าตัวแปรสภาพแวดล้อมบางอย่างอย่างเหมาะสม เริ่มต้นด้วยตนเองพิมพ์ข้อความผิดพลาด "ขาดหายไป $ INTERFACE" แม้ว่าฉันจะตั้งค่าตัวแปร env INTERFACE = eth0 ก่อนการเริ่มต้นของสคริปต์ก็ยังพิมพ์ข้อผิดพลาด "ขาดการจับคู่ที่ถูกต้อง" ไม่ต้องพูดถึงฉันมีสองอินเตอร์เฟส ( eth0และeth1) และฉันต้องการไฟล์กฎที่สร้างขึ้นสำหรับทั้งสอง

ฉันยังคิดที่จะเรียกเหตุการณ์ udev เช่นนี้หวังว่ามันจะเริ่มต้นสคริปต์จาก udev เอง แต่ไม่มีอะไรเปลี่ยนแปลง:

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

ดังนั้นใครรู้วิธีการสร้างกฎสุทธิถาวรในไฟล์/etc/udev/rules.d/70-persistent-net.rulesโดยไม่ต้องรีบูต?


การกระจายของคุณคืออะไร ระบบ init ประเภทใดที่ใช้?
michas

1
ฉันจะบอกว่าไม่เกี่ยวข้อง ฉันใช้ Slackware กับ eUdev และ sysvinit ฉันกำลังตรวจสอบสคริปต์เริ่มต้นเพื่อค้นหาสิ่งที่ถูกเรียกใช้ซึ่งสร้างไฟล์กฎ แต่พบเพียงทริกเกอร์ udevadm พร้อมความคิดเห็นว่านี่คือคำสั่งในการสร้างกฎถาวร แต่อย่างใดก็ใช้งานได้เฉพาะเมื่อรีบูตไม่มี ผลถ้าฉันเรียกใช้ด้วยตนเอง
Tomas M

1
มันอาจจะมีความเกี่ยวข้องตั้งแต่ผมในโค้งมีไม่70-persistent-net.rulesหรือ/lib/udev/write_net_rulesสคริปต์ ดังนั้นฉันไม่สามารถตรวจสอบได้ แต่สันนิษฐานว่า$INTERFACEตัวแปรถูกตั้งค่าไว้ในสคริปต์เอง มันอาจจะถูกส่งเป็นอาร์กิวเมนต์ คุณช่วยแสดงเนื้อหาของสคริปต์ให้เราดูได้ไหม
terdon

สคริปต์ใช้$INTERFACEตัวแปรเพียงอย่างเดียว มีตัวแปรอีกมากที่ใช้เพียงแค่ไม่เคยประกาศ มันเป็นเพราะมันถูกเรียกโดย udev และ udev ตั้งค่าตัวแปร env ทั้งหมดก่อนที่จะรันสคริปต์ในการบูต
Tomas M

คุณจำเป็นต้องรู้วิธีการสร้างมันขึ้นมาใหม่หรือคุณสามารถแก้ไขไฟล์เพื่อสะท้อนความเป็นจริงใหม่ได้หรือไม่?
roaima

คำตอบ:


5

ตามหน้าคนเป็นค่าเริ่มต้นสำหรับ--action=changeudevadm

   -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: ไม่พบโดเมน 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 Monica'

0

ฉันมีปัญหาเดียวกัน แต่ฉันสังเกตเห็นว่าฉันยังคงเห็นอินเทอร์เฟซในip addrรายการ ฉันใช้ต่อไปนี้ (เป็น root):

# 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

ทำซ้ำสำหรับแต่ละอินเตอร์เฟส สิ่งนี้ถูกใช้เพื่อ "กู้คืน" ไฟล์ของฉัน (หมายเหตุ: การเรียกใช้ครั้งเดียวจะแสดงรายการอินเทอร์เฟซทั้งหมด + เพิ่มการเปลี่ยนชื่อสำหรับการจับคู่หนึ่งดังนั้นฉันขอแนะนำให้คุณดูไฟล์เอาต์พุตหลังจากการเรียกใช้ครั้งเดียว)

มีความแตกต่างอย่างแน่นอนระหว่างการใช้งาน UDEV ในปัจจุบันและสคริปต์การสนับสนุน เพื่อทราบว่าฉันใช้ CentOS 6.8 เมื่อฉันทำสิ่งนี้สำเร็จ

เครดิต - ฉันอ้างอิงเว็บไซต์นี้เป็นส่วนใหญ่ มีความคิดเห็นไม่กี่กระทู้ลงที่พูดคุยเกี่ยวกับการแก้ไขสคริปต์ แต่ฉันต้องการใช้ตัวแปรสภาพแวดล้อมที่มันสะอาด: https://access.redhat.com/discussions/1240213


อึ - รอ ฉันขอโทษนั่นเป็นคำสั่งที่ใช้งานไม่ได้ ฉันต้องอัปเดตคำตอบด้วยขั้นตอนที่ฉันทำ
เกรวี่ 21

ตกลงฉันได้รับการปรับปรุงวิธีการแก้ไขเหมืองจริง หวังว่ามันจะทำงานได้ถ้ามันใช้กับสถานการณ์ของคุณ
gravy21
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.