Udev को पुनः आरंभ करने का सही तरीका क्या है?


46

मैंने अपने eth1इंटरफ़ेस का नाम बदल दिया है eth0udevअब कॉन्फ़िगर को फिर से पढ़ने के लिए कैसे पूछें ?

service udev restart

तथा

udevadm control --reload-rules

मदद मत करो। तो क्या रिबूटिंग के अलावा कोई वैध तरीका है? (हां, रिबूट इस मुद्दे के साथ मदद करता है)

  • हाँ, मुझे पता है कि मुझे आदेशों को पूर्व निर्धारित करना चाहिए sudo, लेकिन या तो मैंने ऊपर पोस्ट किया था जो ifconfig -aआउटपुट में कुछ भी नहीं बदलता है : मैं अभी भी देखता हूं eth1, नहीं eth0

  • मैंने सिर्फ NAMEudv-rule लाइन की संपत्ति बदली । अप्रभावी होने का कोई कारण न जानें।

मेरे द्वारा ऊपर पोस्ट किए गए दोनों आदेशों को निष्पादित करने में कोई त्रुटि नहीं है, लेकिन वे ifconfig -aआउटपुट में वास्तविक इंटरफ़ेस का नाम नहीं बदलते हैं । अगर मैं रिबूट करता हूं - तो उम्मीद के मुताबिक इंटरफ़ेस का नाम बदल जाता है।

विकास के प्रयोजनों के लिए मैं कुछ स्क्रिप्ट लिखता हूं जो आभासी मशीनों (वर्चुअलबॉक्स-चालित) को क्लोन करता है और उन्हें किसी तरह से पूर्व-सेट करता है।

इसलिए मैं VM को क्लोन करने के लिए एक कमांड करता हूं, इसे शुरू करता हूं और जब तक नेटवर्क इंटरफ़ेस मैक को बदल दिया जाता है - udevनेटवर्क लगातार नियमों को दूसरा नियम जोड़ता है। पहली बार बूट होने के ठीक बाद 2 नियम हैं:

  • eth0, जो मौजूद नहीं है, जब तक कि यह मूल VM छवि मैक में मौजूद है
  • eth1, जो मौजूद है, लेकिन सभी फाइलों में सभी कॉन्फ़िगरेशन को संदर्भित करता है eth0, इसलिए यह मेरे लिए अच्छा नहीं है

इसलिए मैं इसके साथ sedलाइन को हटाता हूं eth0(यह क्लोन की गई छवि में अप्रचलित और बेकार है) और इसके eth1साथ बदलें eth0। इसलिए वर्तमान में मेरे पास लगातार वैध नियम है, लेकिन अभी भी eth1है /dev

मुद्दा: मैं मशीन को रिबूट नहीं करना चाहता (इसमें एक और समय लगेगा, जो कि बिल्डिंग-वीएम-स्टेज पर अच्छी बात नहीं है) और बस /devकुछ कमांड के साथ मेरा पुनर्निर्माण करना चाहता हूं, इसलिए मेरे पास वीएम के लिए तैयार है बिना किसी रिबूट के।


आप कैसे बदल eth1गए eth0? क्या आपने केवल डिवाइस फ़ाइल का नाम बदला है? यदि ऐसा है, तो यह करने के लिए एक प्रभावी तरीका नहीं है (और आपको udevडेमॉन के सफल पुनरारंभ द्वारा परिवर्तन की उम्मीद की जानी चाहिए )। यदि आपने कुछ अन्य विधि का उपयोग किया है, तो कृपया इसका विस्तार से वर्णन करें, और कृपया अपने द्वारा देखे गए आदेशों को चलाने के दौरान आपके द्वारा देखे जा रहे किसी भी त्रुटि संदेश का पूर्ण और सटीक पाठ भी दें ( udevडेमॉन को फिर से शुरू करने या इसके नियमों को पुनः लोड करने के लिए )। यह जानकारी प्रदान करने के लिए आप अपने प्रश्न को संपादित कर सकते हैं।
एलियाह कगन

@ अली कगन: अपडेटेड। ps: क्यों इसे वापस किया जाना चाहिए? यह ;-) नहीं होना चाहिए
zerkms

udevगतिशील रूप से आपके उपकरणों को उत्पन्न करता है /dev। यदि आप इसे पुनः आरंभ करते हैं, तो यह अपने नियमों के अनुसार उन्हें पुनर्जीवित करेगा। सीधे उनके लिए किए गए परिवर्तन, आम तौर पर लगातार बोलने वाले नहीं हैं। ऐसा लगता है कि पुनरारंभ udevकरना ठीक काम कर रहा है, लेकिन आपने अभी तक डिवाइस नामों को ठीक से नहीं बदला है।
एलियाह कगन

@ अली कगन: udev केवल नए नियमों को जोड़ता है (संशोधित नहीं करता है) यदि यह किसी विशेष उपकरण के लिए नहीं मिल सकता है। यदि कोई ऐसा नियम है जो मेल खाता है - यह केवल संशोधनों के बिना इसका अनुसरण करता है।
zerkms

@ अली कगन: और मैंने इसे ठीक से बदल दिया। बस मुझे विश्वास है कि मैं एक लाइन में एक चार बदल सकता हूं ;; (यह भी रीबूट मदद करता है, और यह साबित करता है कि सब कुछ नियमों के साथ ठीक है)
zerkms

जवाबों:


29

मुझे नहीं पता कि इससे नेटवर्क कॉन्फ़िगरेशन को फिर से लोड करने में मदद मिलती है, लेकिन जब मैंने /etc/udev/rules.d/70-persistent-cd.rulesडीवीडी डिवाइस लिंक को सही करने के लिए संशोधित /dev/dvd1किया /dev/dvd, तो मुझे दौड़ना पड़ा

sudo udevadm trigger

नए लिंक बनाने के लिए।


3
मेरा मानना sudo udevadm trigger --action=changeहै कि सुरक्षित होने के बारे में इस ईमेल के अनुसार सुरक्षित है, इसके बारे में करने के लिए सुरक्षित नहीं है udev: lists.ubuntu.com/archives/ubuntu-devel/2009-January/027260.html
एहतेश चौधरी

दरअसल, और यह कहा जाता है/etc/udev/rules.d/70-persistent-net.rules
msanford

Ubuntu 15.04 के तहत udevadm triggerमेरे X11 सत्र को बंद कर दिया और मुझे अपनी लॉगिन स्क्रीन पर वापस फेंक दिया।
इयान डी। एलन

20

आपको यहाँ दी गई सभी सलाहों को सही क्रम में संयोजित करना है:

  1. नेटवर्क को नीचे लाओ service networking stop
  2. ड्राइवर मॉड्यूल को कर्नेल से अनलोड करें
    1. मॉड्यूल का नाम ढूंढें lspci -vऔर "उपयोग में कर्नेल चालक:" देखें
    2. modprobe -r <driver module>
  3. Udv नियमों को पुनः लोड करें udevadm control --reload-rules
  4. नए नियमों को ट्रिगर करें udevadm trigger
  5. चालक डालें modprobe <driver module>
  6. नेटवर्क को पुनरारंभ करें service networking start
  7. (वैकल्पिक) किसी भी iptablesस्क्रिप्ट को फिर से चलाएं जो ethइंटरफ़ेस नाम का संदर्भ देने से पहले था।

मुझे संदेह है कि चरण 4 या चरण 5 की वास्तव में आवश्यकता नहीं है, लेकिन इन चरणों ने मेरे लिए काम किया। आप चरण 4 के साथ चरण 4 के बाद देख सकते हैं कि क्या ट्रिगर कमांड ने पहले ही चरण 5 किया था, यदि आप करते हैं तो अपने निष्कर्षों को प्रतिबिंबित करने के लिए इस उत्तर को संपादित करें।


1
उबंटू 15.04 में सूचीबद्ध सभी उपकरणों के साथ /etc/network/interfaces(इसलिए नेटवर्क मैनेजर उन्हें अकेला छोड़ देता है): मुझे जो कुछ भी करने की आवश्यकता थी उसे संपादित किया गया, /etc/udev/rules.d/70-persistent-net.rulesफिर # 2, # 3, # 5 करें। सभी नेटवर्किंग को रोकने की आवश्यकता नहीं है; किसी और चीज की जरूरत नहीं।
इयान डी। एलन

5

मुझे भी ऐसी ही समस्या का समाधान करना पड़ा था। चूंकि मैं रिबूट करने का समय नहीं लेना चाहता था, इसलिए मैंने क्रिस वेसलिंग के सुझाव का उपयोग करते हुए एक लाइनर चलाया।

/etc/init.d/networking stop && modprobe -r tg3 && udevadm नियंत्रण

यह मेरे लिए Ubuntu 12.04.02 सर्वर का उपयोग कर काम किया। मेरे nics tg3 कर्नेल मॉड्यूल ड्राइवर का उपयोग कर रहे थे, इसलिए tg3 को उस मॉड्यूल में बदलें, जिसका आपके इंटरफेस उपयोग कर रहे हैं। मैंने पाया कि जो लोग मेरा उपयोग करते हैं /etc/udev/rules.d/70-persistent-net.rules:

PCI डिवाइस 0x14e4: / sys / devices / pci0000: 00/0000: 00: 1c.4 / 0000: 02: 00.1 (tg3) <-पर्नल मॉड्यूल ड्राइवर के लिए निक

एक मुद्दा जो मेरे पास था वह एक खराब रास्ता था जिसे मैंने एक साधारण रूट एड कमांड के साथ तय किया था। मदद के लिए धन्यवाद क्रिस!



3

sudo /etc/init.d/udev restartचाल चलनी चाहिए। आपके द्वारा चलाए गए कुछ आदेश, sudoप्रभावी होने के साथ-साथ प्रभावी भी हो सकते हैं।


नहीं, ifconfig -aअभी भी मुझे पुराने से पता चलता eth1इंटरफ़ेस
zerkms

3

यह इसे सुरक्षित रूप से करना चाहिए:

sudo reload udev

जैसा कि मैंने इस कमांड का उपयोग बिना किसी समस्या के किया है।


नहीं, ifconfig -aअभी भी मुझे पुराने से पता चलता eth1इंटरफ़ेस
zerkms

1

मैं कुछ समय के लिए एक ही उद्देश्य के साथ इस पर शोध कर रहा हूं, और मुझे लाइव सिस्टम में नेटवर्क इंटरफ़ेस नाम बदलने का कोई तरीका नहीं मिला है।

मैं जिस वर्कअराउंड के लिए गया हूं, वह /etc/udev/rules.d/70-persistent-net.rules फ़ाइल को टेम्पलेट में हटाना है, जिसका अर्थ है कि अगले बूट पर यह किसी भी नेटवर्क कार्ड को eth0 के रूप में देखेगा।


1

नियम परिवर्तन को ट्रिगर करने के लिए आपको udev को पुनः लोड करने की आवश्यकता है , लेकिन जब तक आप ड्राइवर मॉड्यूल को अनलोड / पुनः लोड नहीं करते, तब तक डिवाइस का नाम बदला नहीं जाएगा।

इसलिए modprobe -r e1000 && modprobe e1000udv reload के बाद ट्रिक करना चाहिए। बेशक, ऐसा न करें कि यदि आपको नेटवर्क की आवश्यकता है और केवल e1000 इंटरफेस है।


0
udevadm trigger 

यह यहां लिंक विवरण दर्ज करने का काम करेगा


1
उबंटू पूछने के लिए आपका स्वागत है! जब भी यह सैद्धांतिक रूप से प्रश्न का उत्तर दे सकता है, तो उत्तर के आवश्यक भागों को शामिल करना और संदर्भ के लिए लिंक प्रदान करना बेहतर होगा
Braiam

0

तो मेरे लिए UbuntuBox 12.04 के साथ वर्चुअलबॉक्स पर, मैं अक्सर ईथरनेट और वायरलेस के बीच स्विच करता हूं।

इसलिए जब मेरा कनेक्शन बदलता है, तो मुझे डिवाइस> नेटवर्क सेटिंग्स से ब्रिजेड एडेप्टर चुनना होगा। या तो 'इंटेल 82579LM गिगाबिट नेटवर्क कनेक्शन' या 'इंटेल सेंट्रिनो अल्टीमेट-एन 6300 एजीएन'।

ऐसा करने के बाद, मैं चला सकता हूं

sudo modprobe -r e1000
sudo service udev restart
sudo modprobe e1000
ping google.com # To test I ran this between each command.

यह उपरोक्त सभी उत्तरों को पढ़ने के बाद मेरे परिणामों का सिर्फ एक स्पष्टीकरण है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.