Yeniden başlatma olmadan 70-persistent-net.rules nasıl yeniden oluşturulur?


14

Dosya /etc/udev/rules.d/70-persistent-net.rulesyeniden başlatma sırasında udev bulunan bir Linux sisteminde otomatik olarak oluşturulur. Ancak sunucuyu yeniden başlatmadan bu komut dosyasının (komutla) nasıl oluşturulacağını bilmek istiyorum.

Bir süredir dolaşıyordum ve kurallar dosyasının bu komut dosyası tarafından oluşturulduğunu gördüm:

/lib/udev/write_net_rules

Ancak, bu komut dosyasını komut satırından çalıştırmak imkansızdır, çünkü (sanırım) udev tarafından başlatılmasını istiyor, bazı ortam değişkenleri düzgün ayarlanmış. Manuel olarak başlatıldığında "eksik $ INTERFACE" hata mesajı yazdırılır. Komut dosyasını başlatmadan önce env değişkenini INTERFACE = eth0 ayarlasam bile, yine de "geçerli eşleşme eksik" hatasını yazdırıyor. Bahsetmiyorum ki iki arayüzüm var ( eth0ve eth1) ve her ikisi için de kurallar dosyasının oluşturulmasını istiyorum.

Ayrıca betiği udev'in kendisinden başlatacağını umarak böyle udev olaylarını tetiklemeyi düşünüyordum, ancak hiçbir şey değişmiyor:

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

Peki, herhangi biri /etc/udev/rules.d/70-persistent-net.rulesyeniden başlatmadan dosyadaki kalıcı net kuralların nasıl yeniden oluşturulacağını biliyor mu?


Dağıtımınız nedir? Ne tür bir init sistemi kullanıyor?
michas

1
Bunun alakasız olduğunu söyleyebilirim. EUdev ve sysvinit ile Slackware kullanıyorum. Kurallar dosyasını oluşturan ne yürütüldüğünü bulmak için başlangıç ​​komut dosyalarını inceliyordum, ancak yalnızca udevadm tetikleyicisi buldum, bunun kalıcı kurallar oluşturma komutu olduğu yorumuyla, ancak bir şekilde bu sadece yeniden başlatmada çalışıyor, hayır manuel olarak çalıştırırsam etkisi.
Tomas M

1
Arch'de, ne senaryoya 70-persistent-net.rulesne de /lib/udev/write_net_rulessenaryoya sahip olduğum için alakalı olabilir . Bu nedenle, kontrol edemiyorum, ancak muhtemelen $INTERFACEdeğişken betiğin kendisinde ayarlanır. Büyük olasılıkla bir argüman olarak geçilir. Senaryonun içeriğini bize gösterebilir misin?
terdon

Betik sadece $INTERFACEdeğişken kullanır . Basitçe kullanılan, asla beyan edilmeyen çok daha fazla değişken var. Çünkü udev tarafından çağrılır ve udev tüm env değişkenlerini önyüklemede komut dosyasını çalıştırmadan önce ayarlar.
Tomas M

Aslında onu nasıl yeniden oluşturacağınızı bilmeniz mi gerekiyor, yoksa dosyayı sadece yeni gerçekliği yansıtacak şekilde düzenleyebilir misiniz?
roaima

Yanıtlar:


5

Man sayfasına göre için --action=changevarsayılan değerdir udevadm.

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

Onun --action=addyerine denemeniz iyi olur . Yardım etmeli:

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

intel_rapl: 0 paketinde geçerli bir rapl alanı bulunamadı
Tiina

1

Ubuntu Server 16.04LTS'de 70-persistent-net.rules mevcut değildir.

tek yaptığım:

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

Sonra kullanarak dosyayı oluşturun

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

ve aşağıdakileri ekleyin

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

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

:wq dosyayı kaydetmek için

sonra yeniden başlatın ve / etc / network / interfaces dosyanızı ayarlayın. Ardından yeniden başlatın.


9
Soru " Yeniden başlatma olmadan 70-persistent-net.rules nasıl yeniden oluşturulur? " Yanıtınız iki yeniden başlatma içeriyor. Bu sorunun cevabı nasıl?
G-Man

0

Aynı sorunu yaşadım, ancak ip addrlistede hala arayüzleri görebildiğimi fark ettim . Aşağıdakileri kullandım (root olarak):

# 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

Her arayüz için tekrarlayın. Bu, dosyamı "kurtarmak" için kullanıldı. (Not: bir çağırma tüm arayüzleri listeler + bir tanesini eşleştirmek için yeniden adlandırma ekler, bu yüzden bir çağırma işleminden sonra çıktı dosyasına göz atmanızı öneririm)

İşletim sistemleri ve mevcut UDEV uygulamaları ile destek komut dosyaları arasında kesinlikle farklılıklar vardır. Not olarak, bunu başarıyla yaptığımda CentOS 6.8 kullanıyordum.

Kredi - Bu siteye çoğunlukla referans verdim. Komut dosyasını değiştirmekle ilgili birkaç konu aşağıya bir yorum var, ancak daha temiz olduğu için ortam değişkenlerini kullanmayı tercih ettim: https://access.redhat.com/discussions/1240213


Lanet olsun - bekle. Üzgünüm, çalışmayan komut buydu. Cevabı yaptığım adımla güncellemem gerekiyor
gravy21

Tamam, benimkini nasıl düzelttiğimi güncelledim. Umarım durumunuz için geçerliyse çalışır.
gravy21
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.