रास्पबेरी पाई 3 - eth0 को गलत तरीके से 'enx ...' नाम दिया गया है


28

मेरा नया आरपीआई 3 डिवाइस (याय) हाल ही में एक निष्क्रिय ईथरनेट के साथ बूट हुआ।

तो मैंने देखा /etc/networks/interfacesऔर लाइन देखी:

auto eth0
iface eth0 inet dhcp

ifup eth0दुर्भाग्य से कॉलिंग ने निम्न संदेश दिया:

eth0 No such device
No hardware found

इसलिए मैंने अपना चेक किया ifconfig -aऔर एक अजीब उपकरण देखा:

enx*MACADDRESS* Link encap:Ethernet HWaddr **:**:**:**:**:**

/etc/networks/interfacesनाम को बदलने की कोशिश करने के परिणामस्वरूप एक कार्यशील नेटवर्क बन गया। मैं उस डिवाइस का नाम वापस कैसे बदल सकता हूं eth0?

पुनश्च: मेरे पास कोई 70-persistent-net.rulesफ़ाइल नहीं है । ओएस उबंटू मेट 15.10 है

धन्यवाद।


कृपया फ़ाइल> / etc / iftab मेरा उल्लेख करें: enxb827 .... mac xx: xx: xx: xx: xx: xx arp 1 wlan0 mac xx: xx: xx: xx: xx: xx arp 1

जवाबों:


16

रास्पबेरी पाई 2 पर डेबियन आर्महफ चलाते समय मेरे पास यह मुद्दा था, आप फ़ाइल का नाम /etc/udev/rules.d/70-persistent-net.rules बनाकर इंटरफ़ेस का नाम बदल सकते हैं और इसे इसमें डाल सकते हैं

SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="b8:ac:6f:65:31:e5", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"

की जगह B8: एसी: 6F: 65: 31: E5 अपने eth0 मैक पता, रिबूट के साथ और यह eth0 हो जाएगा, तो आप रिबूट के बाद इंटरनेट का उपयोग नहीं हो सकता है क्योंकि में / etc / नेटवर्क / इंटरफेस गलत इंटरफेस को परिभाषित है, बस परिवर्तन enx * to eth0

संपादित करें: यह एक मुद्दा नहीं है, बल्कि एक नई इंटरफेस नामकरण योजना "प्रीडिक्टेबल इंटरफेस नेम्स" है, आपको इसे पुराने लोगों को वापस लाने के बजाय इसके अनुकूल और उपयोग करना चाहिए।


3
@UnSined के लिए धन्यवाद मैंने आगे देखा और पाया, कि मुझे जोड़ना था ln -s /dev/null /etc/udev/rules.d/80-net-name-slot.rules:। यह मूल रूप से नामकरण चीज़ को अक्षम कर रहा है। अब काम करता है .. धन्यवाद!
टॉम सिरविक

उपयोगकर्ता अभी @Ficertyn है ... लाल टोपी डॉक्स के खुश पाठकों के लिए स्पष्टता
टॉम Siwik

1
मुझे KERNEL=="eth*"काम करने के लिए इस प्रविष्टि को हटाना पड़ा ।
रोजर ड्यूक

23

यह समाधान केवल तभी काम करता है जब आप एक विषम नेटवर्क इंटरफ़ेस डिवाइस देख रहे हों, जैसे env{hwdaddress}कि $ ifconfig -aइसके बजाय चल रहा हो eth0। मैंने नियमों को जोड़ने के बारे में सभी सामान्य उत्तरों की कोशिश की लेकिन केवल इस फिक्स ने काम किया।

मैं Ubuntu 16.04 प्रीइंस्टॉल्ड सर्वर आर्महफ के साथ रास्पबेरी पाई 3 चला रहा हूं। लंबी कहानी छोटी, $ apt-get updateजोड रही है प्रिडिक्टेबल नेटवर्क इंटरफेस नेम्स

निम्न फ़ाइल संपादित करें:

$ vim /lib/udev/rules.d/73-usb-net-by-mac.rules

तुम्हे देखना चाहिए:

ACTION=="add", SUBSYSTEM=="net", SUBSYSTEMS=="usb", NAME=="", \
ATTR{address}=="?[014589cd]:*", \
TEST!="/etc/udev/rules.d/80-net-setup-link.rules", \
IMPORT{builtin}="net_id", NAME="$env{ID_NET_NAME_MAC}"

NAME को अंत में इस प्रकार बदलें:

ACTION=="add", SUBSYSTEM=="net", SUBSYSTEMS=="usb", NAME=="", \
ATTR{address}=="?[014589cd]:*", \
TEST!="/etc/udev/rules.d/80-net-setup-link.rules", \
IMPORT{builtin}="net_id", NAME="eth0"

परिवर्तनों को सुरक्षित करें

रीबूट। सब कुछ काम करना चाहिए अब मान लो सब कुछ eth0 की ओर इशारा कर रहा है।

संपादित करें (10/26/2016) इस फिक्स को ओवरराइट करने से भविष्य के किसी भी अपडेट को रोकने के लिए, निम्नलिखित करें:

cp /lib/udev/rules.d/73-usb-net-by-mac.rules /etc/udev/rules.d/

1
मैंने अभी तक बहुत समय बिताया है, eth0उबंटू सर्वर 16.04 के साथ अपने पाई के लिए एक स्थिर होने की बात करने की कोशिश कर रहा हूं। धन्यवाद। आपके उत्तर के लिए एक छोटा संशोधन, जो मैं आपको सुझाव दूंगा कि आप प्रयास करें, कार्यान्वित करें और फिर अपने उत्तर में जोड़ें: 73-usb-net-by-mac.rulesफ़ाइल को /etc/udev/rules.d/निर्देशिका में कॉपी करें और उसे संशोधित करें; यदि आप इसे बदलते हैं /lib/udev/rules.dतो भविष्य के OS अपडेट में इसे अधिलेखित किया जा सकता है।
केविन तेलजेउर

सर उठाने के लिए धन्यवाद। मैंने समस्या के निवारण के लिए 2 दिनों का ठोस समय भी बिताया। मुझे लगता है कि सभी को Python3 और OpenCV के साथ जाने के लिए केवल सेट करना होगा क्योंकि अद्यतन के कारण रिबूट पर ईथरनेट स्टॉप काम करना बंद कर देगा। मेरे जवाब को देखकर खुशी हुई।
लुइस गोडिनेज़

1
मुझे यह पता लगाने में थोड़ा समय लगा कि यह क्यों हो रहा है, और फिर यह पता लगाने की जरूरत है कि क्या करना है और क्यों (उबंटू बग - जैसा कि तय किया गया काम ठीक नहीं लगता है, जो उसी फाइल में एडिट है)। यहाँ चल रही लड़ाई है: bugs.launchpad.net/ubuntu/+source/systemd/+bug/1593379 - हालाँकि, आपका फिक्स मेरे रास्पबेरी पाई पर काम नहीं करता है। 2. मैं वास्तव में एक x86 बॉक्स पाने के लिए सोच रहा हूँ इस समय।
केविन तेलजुर

13

raspi-config सबसे आसान तरीका है।

यदि आप रास्पियन पर हैं तो यह डिफ़ॉल्ट रूप से स्थापित है। लेकिन अगर आप उबंटू, मिंट या मेट पर हैं तो आप इसे नीचे कमांड के साथ इंस्टॉल कर सकते हैं:

sudo apt-get install raspi-config

फिर आप इसे raspi-config से कॉन्फ़िगर कर सकते हैं।

sudo raspi-config
  1. "2. नेटवर्क विकल्प" चुनें
  2. "N3 नेटवर्क इंटरफ़ेस नाम" चुनें
  3. "नहीं" का चयन करें। यह अब अनुमानित नेटवर्क इंटरफेस नाम अक्षम है।
  4. "ओके" और "फिनिश" पर क्लिक करें। फिर यह आपके रास्पबेरी पाई को रिबूट करेगा।

किया हुआ।


1
क्या उबंटू मेट (जो ओपी का उपयोग कर रहा है) के पास रस्फी-विन्यास है?
स्टीव रोबिलार्ड

तो आपका जवाब लागू नहीं होता है।
स्टीव रोबिलार्ड

1
लेकिन अगर आप रास्पियन के साथ एक ही समस्या को हल करते हैं तो यह प्रश्न पहले पाया गया। मैंने ऐसा किया और शोध के लिए समय निकाला और समाधान पाया। मुझे लगता है कि यह किसी एक की मदद करता है। ठीक है अब मैं उत्तर संपादित करता हूं।
अल्मास डुसल

1
यह मुझे लोगों को "शोध" करने के लिए भ्रमित करता है, जबकि उत्तर स्वीकृत उत्तरों में स्पष्ट रूप से लिखा गया है। उबंटू, डेबियन, रास्पबियन सभी समान। उबंटू मेट पर टूल स्थापित करना कोई समस्या नहीं है (यहां तक ​​कि डिफ़ॉल्ट रूप से स्थापित) raspberrypi.stackexchange.com/a/67084/42528 । हालांकि यह बिना किसी स्पष्टीकरण के एक उत्तर है कि पर्दे के पीछे क्या हो रहा है। जबकि यह समस्या को हल करता है यह लोगों को वास्तव में समझने के लिए हतोत्साहित करता है कि क्या चल रहा है। मैं यह सब lazies के लिए वहाँ हालांकि +1 करेंगे।
टॉम सिविक

1
ठंडा! यह जवाब निश्चित रूप से सबसे आसान था और काम करने वाले स्थिर आईपी पते के रूप में स्थापित करने के लिए मेरे मुद्दे को हल किया
vinyll

5

यह एक "बग" नहीं है यह एक "विशेषता" " लगातार नेटवर्क डिवाइस का नामकरण " है। (मुझे इसके बारे में कुछ भी संगत नहीं दिखता है।)

संभवतः "फिक्सिंग" के कई तरीके हैं, लेकिन वे काम नहीं कर सकते हैं यदि हार्डवेयर बदल जाता है।

पिछले व्यवहार को पुनर्स्थापित करने के लिए "net.ifnames = 0 biosdevname = 0" के अंत में जोड़ें cmdline.txt


यद्यपि यह सुविधा है, ठीक है, एक विशेषता, जिस तरह से यह व्यवहार करता है वह एक बग है - विशेष रूप से कैसे udv USB ईथरनेट उपकरणों को संभालता है। इसकी अनदेखी करता है net.ifnames=0। मुझे विश्वास नहीं है कि किसी को सामान्य हार्डवेयर कॉन्फ़िगरेशन के साथ एक लोकप्रिय ओएस काम करने के लिए बग रिपोर्ट चर्चाओं का पालन करना चाहिए, लेकिन यह जीवन है। Bugs.launchpad.net/ubuntu/+source/systemd/+bug/1593379
केविन तेलजेउर

@KevinTeljeur और मेरी टिप्पणी व्यंग्य थी - यह कंप्यूटर सिस्टम पर एक सामान्य मुद्दा है।
मिलियावेज़

हा हा, क्षमा करें - इतने सारे बर्बाद घंटों के बाद, और फिर यह पता चला कि यह एक चुपचाप प्रलेखित बग था, मैं किसी भी सुसंगत नेटवर्क डिवाइस पर नामकरण नहीं कर सकता। मैंने आपके उद्धरण चिह्नों पर उठाया था, लेकिन config.txtवास्तव में उन जादुई भस्मों को जोड़ने का काम Pi पर एक प्रलेखित बग के रूप में काम नहीं करता है (हो सकता है कि अब नवीनतम udv की रिलीज के साथ यह अंततः निर्माण करता है)। यह आश्चर्यजनक रूप से अज्ञात बग है जो यूएसबी पर ईथरनेट के साथ सभी प्रणालियों को प्रभावित करता है।
केविन तेलजेउर

4

मैंने इसे विशेष रूप से नाम के हिस्से के रूप में मैक पते के साथ सामना नहीं किया है, हालांकि आप जो अनुभव कर रहे हैं उसे संगत नेटवर्क डिवाइस नामकरण कहा जाता है।

यह एक बदलाव था क्योंकि यह संभव है, और शायद कुछ सिस्टम पर भी संभव है जिनके पास कई नेटवर्क कार्ड हैं जो कार्ड क्रम से बाहर आ जाएंगे और eth0, eth1, आदि नामकरण योजना का उपयोग करके आप रूटिंग नियमों और व्हाट्सएप को लागू करेंगे। गलत इंटरफ़ेस के लिए।

कई लिनक्स वितरण कुछ प्रकार के संगत नेटवर्क डिवाइस के नामकरण में चले गए हैं, आमतौर पर यह कुछ ऐसा दिखेगा enp0s1, जैसे कि पीसीआई बस की पहचान करना और बस (0 और 1 क्रमशः) से लगाव बिंदु।

आप https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/7/html/Networking_Guide/ch-Cistentistent_Network_Devor_Naming.html , साथ ही अपने सिस्टम को पुराने तरीके से कैसे बदलें, इसके बारे में अधिक जानकारी प्राप्त कर सकते हैं। यदि आप अभी भी ऐसा करना चाहते हैं।


1
Eventhough यह एक जानकारीपूर्ण टिप्पणी है, जिसने समस्या को हल करने में मदद नहीं की और न ही इस सवाल का जवाब दिया (मैनुअल तरह का उत्तर पढ़ें)। हालांकि, इससे ऊपर के समाधान के लिए एक छोटा सा समाधान खोजने में मदद मिली। इसीलिए अपवोट अर्जित किया और आपका धन्यवाद :)
टॉम सिविक



1

ओडोरायड के साथ इस फाइल को बनाने से मेरी समस्या ठीक हो गई

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"

1

मेरे पास उबंटू 16.04 के साथ रास्पबेरी पाई 2 पर एक ही मुद्दा था और जो काम किया था वह #goutam की लिंक का अनुसरण कर रहा था और निम्नलिखित के साथ /etc/udev/rules.d/70-persistent-net.rules जोड़ रहा था:

SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eth0", NAME="eth0"

1

मुझे यह सुझाव यहाँ मिला :

70-लगातार-net.rules में एक पंक्ति बदलें

SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="98:90:96:e0:3c:e9", ATTR{dev_id}=="0x0", ATTR{type}=="1", NAME:="eth0"

जो KERNEL विशेषता को छोड़ रहा है और NAME को = से: = तक बदल रहा है

यह जो भी मैक पते eth0 को पाया जाता है उस पर बल देना प्रतीत होता है। रास्पबेरी पाई और uboot बूटिंग सिस्टम पर काम करता है।


0

मेरे लिए, रास्पबेरी पाई 2 पर डेबियन अनस्टेबल चल रहा है, पहले जवाब में टिप्पणी में उल्लेखित सिमलिंक सही विचार था, भी, लेकिन इसका नाम अलग होना था: ln -vis /dev/null /etc/udev/rules.d/80-net-setup-link.rules


नहीं, आपने इस फाइल के नाम का उल्लेख किया है, लेकिन आपकी टिप्पणी में एक अलग है जिसके कारण मैंने उस टिप्पणी का उल्लेख किया और उल्लेख किया कि यह मेरे लिए एक अलग फ़ाइल नाम होना चाहिए था।
एक्सल बेकर्ट

1
समझा। कृपया रास्पबेरी पाई 3 और रास्पबेरी पाई के बीच अंतर को ध्यान में रखें। 2. आखिरकार वे तकनीकी रूप से लगभग एक ही हैं यह नामकरण अंतर लोगों को गुमराह करने के लिए उन चीजों में से एक हो सकता है। हालांकि स्पष्टीकरण के लिए धन्यवाद।
टॉम सिविक

मुझे लगता है कि फ़ाइल नामों में यह अंतर डेबियन 8 जेसी बनाम डेबियन अनस्टेबल के साथ एक नए सिस्टमड / यूडीवी संस्करण से आता है। इस सिम्कल के बिना इंटरफ़ेस का वास्तविक नाम वास्तव में सिर्फ मैक पते से अधिक भिन्न हो सकता है। लेकिन कम से कम ईथरनेट इंटरफ़ेस के लिए मुझे लगता है कि मुझे याद है कि इन enxइंटरफ़ेस नामों को दोनों, रास्पी 2 और 3 पर देखा है । हालांकि मुझे वर्तमान में यह याद नहीं है कि रास्पानी पर WLAN का नाम कैसे रखा गया था 3.
Axel Beckert

enx <MAC>, उबंटू मेट का उपयोग कर रहा था, ऊपर दिखाए गए अनुसार निश्चित समस्या। डेबियन में बदल गया और नाम बदलने के लिए नहीं था। हालांकि यह अजीब है ... आप सही हैं।
टॉम सिविक

0

बस नाम बदलने की प्रक्रिया के लिए जिम्मेदार udev नियमों को निष्क्रिय करें, अर्थात

sudo ln -s /dev/null /etc/udev/rules.d/73-usb-net-by-mac.rules

या

sudo touch /etc/udev/rules.d/73-usb-net-by-mac.rules

संपादित करें: एक गलती से बाहर कविता के लिए thx @ स्पार्की। मैं हमेशा आदेश को मिलाता हूं। :)


पहला उल्लिखित कमांड काम नहीं कर सकता है। कम से कम src और dst को मिलाया जाता है।
स्पार्क

0

मुझे एहसास है कि यह सवाल पुराना है, लेकिन मैंने इस समस्या को मारा है और इस पृष्ठ पर प्रस्तावित समाधानों में से किसी ने भी मेरे मुद्दे को हल नहीं किया है। मेरे लिए rules.d फ़ोल्डर की चाल कुछ भी नहीं लगती है।

मेरा समाधान बस एक स्क्रिप्ट लिखना था जो नाम की परवाह किए बिना वायर्ड ईथरनेट पोर्ट को डीएचसीपी आवंटित करने के लिए init.d फ़ोल्डर में जाता है। यह महत्वपूर्ण है क्योंकि मेरे पास कई रास्पबेरी पाई इकाइयां हैं और वे सभी इसी मुद्दे के साथ नीचे आए। (अधिक निराश)

मेरा मुद्दा जटिल है क्योंकि मेरे पास एक नेटवर्क स्टोरेज फ़ोल्डर है जिसे बूट प्रक्रिया के दौरान माउंट करने की आवश्यकता है। क्योंकि इंटरफ़ेस नहीं आया था, यह माउंट विफल हो गया और चीजें मेरे लिए खराब से बदतर होती चली गईं।

यहाँ मेरा समाधान है। मुझे उम्मीद है कि यह किसी और की मदद करेगा जो उपरोक्त उत्तरों का उपयोग करके जुड़ नहीं सकता है।

अपने पसंदीदा टेक्स्ट एडिटर का उपयोग करके फ़ाइल /etc/init.d/raspi-init-network बनाएं। मुझे vi का उपयोग करना पसंद है।

cd /etc/init.d
sudo vi raspi-init-network

यह वह कोड है जो फ़ाइल में है

#!/bin/sh
### BEGIN INIT INFO
# Provides:          boot-identify-myself
# Required-Start:    $local_fs $network
# Required-Stop:     $local_fs
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: identify-myself
# Description:       identify this computer to the main server upon
### END INIT INFO
#
# when using predictible network names for the interfaces,
# the pi doesn't seem to activate the interface correctly so
# this script will force the issue.
#
# it works by getting the interface name of the wired network
# device and using that to initialize dhcp

start() 
{
    interface=`ifconfig -a | grep "encap:Ethernet" | grep -oh -E "^[^ ]+"`
    dhclient $interface
    mount -a
}

stop() 
{
    : # do nothing
}

uninstall() 
{
    : # do nothing
}

case "$1" in
  start)
    start
    ;;
  stop)
    stop
    ;;
  uninstall)
    uninstall
    ;;
  retart)
    stop
    start
    ;;
  *)
    echo "Usage: $0 {start|stop|restart|uninstall}"
esac

सुनिश्चित करें कि स्क्रिप्ट निष्पादन योग्य है

sudo chmod 755 raspi-init-network

कोड को सक्रिय करें ताकि यह अपडेट-rc.d कमांड को निष्पादित करके बूट प्रक्रिया के दौरान निष्पादित हो।

sudo update-rc.d raspi-init-network defaults 90

इसके बाद, मेरे पास एक भी मुद्दा नहीं था और मैं अपने सभी पाई इकाइयों को समान स्थिर परिणामों के साथ कोड को कॉपी करने में सक्षम था।

नोट: यदि आप बढ़ते ड्राइव नहीं हैं, तो आप "माउंट-ए" लाइन छोड़ सकते हैं।

TWEAKS: यदि आप अपने वाईफाई का उपयोग कर रहे हैं, तो आप "इंटरफ़ेस =" शुरू करने वाली रेखा को बदल सकते हैं और पहले "grep" खंड को संपादित कर सकते हैं। यह पहला grep आपके द्वारा उपयोग किए जाने वाले इंटरफ़ेस की संपूर्ण पंक्ति को पकड़ लेता है। दूसरा grep उस लाइन को लेता है और केवल इंटरफ़ेस नाम देता है।

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