15.10 के अपडेट के बाद नेटवर्क इंटरफ़ेस का नाम बदल जाता है - udev परिवर्तन


55

मैंने उबंटू सर्वर को 15.04 रन करने वाले नए स्थिर 15.10 पर एक वर्चुअल मशीन को अपडेट किया।

कोई स्पष्ट समस्याएं नहीं थीं, लेकिन रिबूट के बाद मशीन ने अपना नेटवर्क कनेक्शन खो दिया। lspciसही कार्ड दिखाया और lsmodसाबित कर दिया कि ड्राइवर लोड हो चुका है।

संपादन या हटाने के बारे में संकेत /etc/udev/rules.d/70-persistent-net.rulesसफल नहीं हुए (फिर भी कोई नेटवर्क नहीं, कोई नई फ़ाइल नहीं), प्रसिद्ध /lib/udev/write_net_rulesभी मौजूद नहीं था।

मुझे udv और systemd के बारे में बहुत कुछ पता नहीं है, इसलिए मुझे नेटवर्क इंटरफ़ेस नाम बदलने में / sys / class / net खोजने में कुछ समय लगा। यह बन गया ens32, जिसका नाम बदल दिया गया eth0। मैंने /etc/network/interfacesनेटवर्क बदलने के बाद फिर से सक्षम किया था।

लेकिन - आखिर ऐसा क्यों होता है? और अगर ऐसा होता है, तो इंटरफेस फाइल को स्वचालित रूप से अपडेट नहीं किया जाना चाहिए?

अब जब मैंने वर्चुअल नेटवर्क कार्ड को हटा दिया और एक और बनाया, eth0बन गया eno16777728, जो ऐसा नहीं है, उह, अच्छा है।

क्या यह व्यवहार (अपग्रेड प्रक्रिया के कम से कम) को बग के रूप में सूचित किया जाना चाहिए?

इसके अलावा, /etc/udev/rules.d/70-persistent-net.rulesअब अप्रचलित है? और (हालांकि केवल आंशिक रूप से संबंधित) क्या बारे में /etc/udev/rules.d/70-persistent-cd.rules?)

संपादित करें - अतिरिक्त प्रश्न (स्वीकृत उत्तर के बाद)/etc/network/interfaces वास्तविक इंटरफ़ेस नाम से निर्भरता ने मुझे परेशान किया। मैंने एक और वर्चुअल मशीन में * ubuntu का नया इंस्टॉलेशन करने की कोशिश की। मेरे आश्चर्य के लिए, /etc/network/interfacesकेवल लूपबैक डिवाइस का संदर्भ था। हालांकि, मेरे मूल वीएम के साथ इस परिवर्तन ने नेटवर्क को आने से रोक दिया। तो मुझे और क्या बदलने की आवश्यकता है?

अच्छी तरह से संपादित करें , एक और परीक्षण से मैंने पाया कि एक नए उबंटू सर्वर में नेटवर्क इंटरफ़ेस कार्ड है /etc/network/interfaces, जबकि XUbuntu नहीं है। शायद यह उपयोग कर रहा है network-managerया कुछ और।


वही बग 17.04 में फिर से दिखाई देता है। प्री-रिलीज़ चरण के दौरान ही आशा।
एव्टमेटन

जवाबों:


56

उबंटू 15.10 (विली वेयरवोल्फ) में, systemd / udev के साथ शुरू होने से सभी स्थानीय ईथरनेट, Wlan और Wwan इंटरफेस ( स्रोत ) के लिए स्वचालित रूप से अनुमानित, स्थिर नेटवर्क इंटरफ़ेस नाम दिए जाएंगे ।

नेटवर्क इंटरफेस के लिए निम्नलिखित विभिन्न नामकरण योजनाएं अब मूल निवासी द्वारा समर्थित हैं:

  1. शामिल फर्मवेयर / BIOS नाम पर बोर्ड उपकरणों के लिए सूचकांक प्रदान की है (उदाहरण: eno1)
  2. फर्मवेयर / BIOS प्रदान की पीसीआई एक्सप्रेस हॉटप्लग स्लॉट सूचकांक को शामिल नाम (उदाहरण: ens1)
  3. नाम हार्डवेयर के कनेक्टर के भौतिक / भौगोलिक स्थिति को शामिल (उदाहरण: enp2s0)
  4. नाम इंटरफेस का MAC पता शामिल है (उदाहरण: enx78e7d1ea46da)
  5. क्लासिक, अप्रत्याशित कर्नेल-देशी एथिक्स नामकरण (उदाहरण:) eth0- पदावनत

डिफ़ॉल्ट रूप से, systemd अब नीति के बाद इंटरफेस का नाम देगा:

  1. यदि फ़र्मवेयर की जानकारी लागू हो और उपलब्ध हो, तो वापस आना
  2. यदि फ़र्मवेयर की जानकारी लागू हो और उपलब्ध हो, तो वापस आना
  3. यदि लागू हो, तो वापस गिरना
  4. डिफ़ॉल्ट रूप से उपयोग नहीं किया जाता है, लेकिन यदि उपयोगकर्ता ऐसा चुनता है तो उपलब्ध है।
  5. अन्य सभी मामलों में।

आप इसे कैसे निष्क्रिय करते हैं?

आपके पास मूल रूप से निम्नलिखित विकल्प हैं:

  • उदाहरण के लिए, अपने इंटरफेस इंटरनेट 0 या lan0 का नाम देकर अपनी खुद की नामकरण योजना बनाएं। इसके लिए अपनी खुद की udv रूल्स फाइल बनाएं और डिवाइसेस के लिए नाम प्रॉपर्टी सेट करें। डिफ़ॉल्ट पॉलिसी फ़ाइल से पहले इसे ऑर्डर करना सुनिश्चित करें, उदाहरण के लिए इसका नामकरण करके/etc/udev/rules.d/70-my-net-names.rules
  • डिफ़ॉल्ट नाम फ़ाइल को अलग-अलग नामकरण योजना चुनने के लिए, उदाहरण के लिए डिफ़ॉल्ट रूप से उनके मैक पते के बाद सभी इंटरफ़ेस नामों के नामकरण के लिए:, cp /lib/udev/rules.d/80-net-setup-link.rules /etc/udev/rules.d/80-net-setup-link.rulesफिर फ़ाइल को वहां संपादित करें और आवश्यकतानुसार लाइनें बदलें।
  • net.ifnames=0कर्नेल कमांड लाइन पर पास करें ।

6
क्या यह स्रोत है? क्या आप उबंटू के लिए आधिकारिक रिलीज़ नोट पृष्ठ पर एक लिंक जोड़ सकते हैं (मुझे यकीन है कि यह कहीं है, यह नहीं मिल सकता है!)
रमानो

2
हाँ, यह स्रोत है।
कियोडेक

4
जो कुछ भी समझ में नहीं आता है वह यह है कि उसने एक अपग्रेड किया था, एक ताजा स्थापित नहीं। यह एक वास्तविक उबंटू बग की तरह लगता है, क्योंकि उन्नयन को सिस्टम को कार्यशील स्थिति में छोड़ देना चाहिए।
विल

1
@kyodake ubuntu 15.10 में कोई / usr / lib / udev फ़ोल्डर नहीं है, वहाँ / lib / udev है
EdiD

1
@ ईडीडी: ओके, बग फिक्स।
कीयोडके

39

ArchWiki Beginnersguide द्वारा बताया गया एक आसान तरीका है ।

सबसे पहले अपने डिवाइस मैक एड्रेस को प्राप्त करें

$ ip link

जैसे आउटपुट दिखाता है

3: wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DORMANT group default qlen 1000     
          link/ether 20:68:9d:xx:xx:xx brd ff:ff:ff:ff:ff:ff

आपके उपकरण MAC पता है

20:68:9d:xx:xx:xx

बस फ़ाइल बनाएँ (बस एक पाठ संपादक में sudo अधिकारों के साथ खुला)

$ nano /etc/udev/rules.d/10-network.rules    

निम्नलिखित पंक्ति जोड़ें

SUBSYSTEM=="net", ACTION=="add", ATTR{address}=="aa:bb:cc:dd:ee:ff", NAME="net1"

अपने इच्छित नाम के साथ नाम बदलें और आ: ब्‍ब: cc: dd: ee: ff अपने उपकरणों के साथ MAC पता।

अब बस अपने कंप्यूटर को रिबूट करें और डिवाइस का नाम बदलना चाहिए था।


सबसे सीधा और सरल उपाय! बड़े पैमाने पर धन्यवाद!
3bdalla

1
यह सुनिश्चित करने के लिए कि नियम आपके वलान पर लागू नहीं होता है और पुल इंटरफेस DRIVERS=="?*",बाद में जुड़ जाता है ACTION=="add",Askubuntu.com/questions/767786/…
डॉन ली ली

16

इस प्रयास करें: संपादित करें अपने /etc/default/grub। से लाइन बदलें

GRUB_CMDLINE_LINUX=""

सेवा

GRUB_CMDLINE_LINUX="net.ifnames=0 biosdevname=0"

और, अंत में चलाएं:

# update-grub

रूट के रूप में, और अपने सिस्टम को रिबूट करें।


यह भी netboot के लिए काम करता है। मुझे अपने syslinux.cfg फ़ाइल में अपेंडमेंट स्टेटमेंट में निम्नलिखित को जोड़ने में सफलता मिली:append (...) net.ifnames=0 (...)
कारस्टैड

यह समाधान उबंटू 16.04 में भी सही काम करता है!
नलदत्त

मुझे ऊपर GRUB पैरामीटर जोड़ना पड़ा (net.ifnames = 0) और vlans को काम करने के लिए udev नाम बदलने के नियमों को हटा दिया, लेकिन अब सब कुछ ठीक है। समाधान के लिए धन्यवाद।
अल्बर्ट वेलि

धन्यवाद। मैं एक हेडलेस सर्वर पर Ubuntu सर्वर 16.04 स्थापित कर रहा हूं और मुझे पता नहीं था कि यह नेटवर्क इंटरफ़ेस को क्या नाम दे रहा है और, परिणामस्वरूप, सर्वर नेटवर्क पर नहीं था। मैंने ऐसा किया और सुनिश्चित किया कि / etc / नेटवर्क / इंटरफेस में इंटरफ़ेस नाम के रूप में "eth0" था और ड्राइव को सर्वर में वापस रखा। यह अब ऑनलाइन है। एसर अस्पायर H340 पर उबंटू स्थापित करने के निर्देश जहां तक ​​यह है, तो यह पुराना है, इसलिए मैं इस उम्मीद में कुछ लिख रहा हूं कि अन्य लोग जो कोशिश कर रहे हैं, उतना समय बर्बाद नहीं करेंगे।
मेटलमेस्टर

5

मुझे पता है कि इसमें थोड़ी देर हो सकती है और 10-network.rules को जोड़ने से लगता है कि मदद की है, लेकिन पूरी तरह से नहीं। मुझे नाम बदलने के लिए डिवाइस का कर्नेल नाम जोड़ना पड़ा। यहां बताया गया है कि मुझे काम करने के लिए /etc/udev/rules.d/10-network.rules कैसे मिला ...

SUBSYSTEM=="net", ACTION=="add", ATTR{address}=="MAC:ADDRESS",KERNEL=="enp4s8", NAME="eth0"

और KERNEL == "" को बदलें जब आपका कर्नेल डिवाइस का नामकरण कर रहा है जब वह बूट होता है।

HTH

केसी


3

यदि आपके पास एक ताजा स्थापित है

apt-get remove biosdevname

फिर

update-initramfs -u

यह देखने के लिए जांचें कि क्या आपके पास udv net रूबल फ़ाइल है। यदि हां, तो इसे हटा दें।

rm /etc/udev/rules.d/70-persistent-net.rules

अब / etc / network / interfaces को edit करें, इंटरफेस को eth0, eth1, ... आदि नाम दें।

रीबूट


2

फ़ाइल बनाकर मुझे यह काम मिल गया:

root@odroid:~# cat /etc/udev/rules.d/70-persistent-net.rules
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eth0", NAME="eth0"
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.