Ahududu Pi 3 - eth0 yanlış 'enx…'


28

Yeni RPi 3 cihazım (yay) kısa süre önce devre dışı bırakılmış bir ethernet ile başlatıldı.

Bu yüzden /etc/networks/interfacesçizgiyi izledim ve gördüm:

auto eth0
iface eth0 inet dhcp

ifup eth0Ne yazık ki aramak aşağıdaki mesajı verdi:

eth0 No such device
No hardware found

Ben de kontrol ettim ifconfig -ave garip bir cihaz gördüm:

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

/etc/networks/interfacesAdı değiştirmeye çalışmak çalışan bir ağla sonuçlandı. Bu cihazın adını nasıl değiştirebilirim eth0?

Not: 70-persistent-net.rulesDosyam yok. İşletim Sistemi Ubuntu MATE 15.10

Teşekkürler.


Lütfen dosyayı kontrol edin> / etc / iftab Maden durumları: enxb827 .... mac xx: xx: xx: xx: xx: xx arp 1 wlan0 mac xx: xx: xx: xx: xx: xx arp 1

Yanıtlar:


16

Rasian Berry 2'de Debian armhf çalıştırırken bu sorunu yaşadım, /etc/udev/rules.d/70-persistent-net.rules dosyasını oluşturarak arabirim adını değiştirebilirsiniz .

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

yerine ac: 6f: 65: b8 31: e5 ve eth0 olur senin eth0 MAC adresi, yeniden başlatma, sen yeniden başlatma sonrasında internet erişimi olmayabilir / etc / network / interfaces yanlış aryüzü tanımlar, sadece değişiklik nedeniyle ENX * için eth0

Düzenleme: Bu bir sorun değil, "Öngörülebilir Arabirim İsimleri" adlı yeni bir arabirim adlandırma şemasıdır, eski haline döndürmeyi denemek yerine bunu uyarlamanız ve kullanmanız gerekir.


3
@UnSined sayesinde i ileri baktı ve ben eklemek zorunda kaldıklarını, bulunan: ln -s /dev/null /etc/udev/rules.d/80-net-name-slot.rules. Temelde isimlendirme şeyini devre dışı bırakıyor. Şimdi çalışıyor .. teşekkürler!
Tom Siwik

Kullanıcı @Ficertyn şuan ... kırmızı şapka dokümanlarının mutlu okuyucuları için netlik
Tom Siwik

1
Bunun KERNEL=="eth*"çalışması için girişi kaldırmak zorunda kaldım .
Roger Dueck

23

Bu çözüm yalnızca, yerine env{hwdaddress}çalışırken olduğu gibi tek bir ağ arayüzü cihazı görüyorsanız çalışır . Kural ekleme ile ilgili tüm genel yanıtları denedim, ancak yalnızca bu düzeltme işe yaradı.$ ifconfig -aeth0

Raspberry Pi 3'ü Ubuntu 16.04 önceden yüklenmiş server armhf ile çalıştırıyorum. Uzun lafın kısası, koşu $ apt-get updateeklendi Tahmin Edilebilir Ağ Arabirim İsimleri

Aşağıdaki dosyayı düzenleyin:

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

Görmelisin:

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 ürününün sonunu aşağıdaki gibi değiştirin:

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"

Değişiklikleri Kaydet

Yeniden Başlatma. Artık her şeyin ete işaret ettiğini varsaymak için her şey çalışıyor olmalı.

Düzenle (26.06.2016) Gelecekteki herhangi bir güncellemenin bu düzeltmenin üzerine yazmasını engellemek için aşağıdakileri yapın:

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

1
eth0Ubuntu Server 16.04 ile Pi'm için kararlı bir noktaya gelmeye çalışmak için çok uzun zaman harcadım . Teşekkür ederim. Cevabınıza yaptığınız küçük bir değişiklik, denemenizi, uygulamanızı ve cevabınıza eklemenizi öneririm: 73-usb-net-by-mac.rulesDosyayı /etc/udev/rules.d/dizine kopyalayın ve değiştirin; Birini değiştirirseniz, /lib/udev/rules.dgelecekteki bir işletim sistemi güncellemesinde üzerine yazılabilir.
Kevin Teljeur

Başınız için teşekkürler. Ayrıca 2 gün boyunca sorunu giderdim. Pi'nin Python3 ve OpenCV ile birlikte ayarlanması için yalnızca Ethernet'in güncelleme nedeniyle yeniden başlatmayı durdurması için ayarlarım. Cevabımın bir faydası olduğunu görmek güzel.
Luis Godinez,

1
Bunun neden olduğunu anlamak için biraz zaman aldı, ve sonra ne yapacağımı ve nedenini bulmaya ihtiyaç duydum (Ubuntu hatası - aynı dosyanın düzenlenmesi gibi bir düzeltme işe yaramadı). İşte devam eden savaş: bugs.launchpad.net/ubuntu/+source/systemd/+bug/1593379 - Ancak, düzeltmeniz Raspberry Pi 2'de çalışmıyor gibi görünüyor. Gerçekten sadece bir x86 kutusu almayı düşünüyorum bu noktada.
Kevin Teljeur

13

raspi-config en kolay yöntemdir.

Raspbian kullanıyorsanız, varsayılan olarak yüklenir. Ancak, Ubuntu, Mint veya Mate kullanıyorsanız, aşağıdaki komutu kullanarak yükleyebilirsiniz:

sudo apt-get install raspi-config

Sonra raspi-config ile yapılandırabilirsiniz.

sudo raspi-config
  1. "2. Ağ seçenekleri" seçeneğini seçin
  2. "N3 Ağ arayüzü isimleri" ni seçin
  3. "Hayır" seçeneğini seçin. Şimdi devre dışı tahmin edilebilir ağ arayüzü adları.
  4. "Tamam" ve "Son" a tıklayın. Sonra ahududu pi'nizi yeniden başlatacak.

Bitti.


1
Ubuntu Mate'in (OP'nin kullandığı) bir raspi-config'i var mı?
Steve Robillard

Yani cevabınız geçerli değil.
Steve Robillard

1
Ancak Raspbian ile aynı sorunu googledseniz, o zaman bu soru ilk önce bulundu. Bunu yaptım ve araştırma için zaman aldı ve çözüm buldum. Bazılarına yardım edeceğini düşünüyorum. Tamam, şimdi cevabı değiştiriyorum.
Almas Dusal,

1
Cevap, onaylanan cevaplarda açıkça yazarken, insanları "araştırıyor" olarak görmekle karıştırıyor. Ubuntu, debian, raspbian hepsi aynı. Aracı Ubuntu Mate’e kurmak da sorun değil (varsayılan olarak bile yüklenmiş) raspberrypi.stackexchange.com/a/67084/42528 . Ancak bu, perdenin arkasında olanları hiçbir açıklama olmadan bir cevaptır. Sorunu çözerken, gerçekte neler olup bittiğini anlamak için insanları cesaretlendirir. Orada tüm tembeller için bunu + 1'leyeceğim.
Tom Siwik

1
Güzel! Bu cevap kesinlikle en kolay
olanıydı

5

Bu bir "hata" DEĞİLDİR, bu "özellik" " tutarlı ağ aygıtı adlandırmadır ". (Bu konuda tutarlı bir şey görmüyorum.)

Muhtemelen bunu "düzeltmenin" birçok yolu vardır, ancak donanım değiştirilirse çalışmayabilirler.

Önceki davranışı geri yüklemek için sonuna "net.ifnames = 0 biosdevname = 0" ekleyin cmdline.txt.


Her ne kadar özellik bir özellik olmakla birlikte, davranış şekli bir hatadır - özellikle udev'in USB ethernet cihazlarını nasıl kullandığı. Yok sayar net.ifnames=0. Popüler bir işletim sisteminin ortak bir donanım yapılandırmasıyla çalışmasını sağlamak için hiç kimsenin hata raporu tartışmalarını izlemesi gerektiğine inanmıyorum, ancak bu hayat. bugs.launchpad.net/ubuntu/+source/systemd/+bug/1593379
Kevin Teljeur

@KevinTeljeur ve yorumum alaycılıktı - bu bilgisayar sistemlerinde yaygın bir sorundur.
Milliways

Ha ha, üzgünüm - çok fazla boşa harcanan saatten sonra ve bunun sessizce belgelenmiş bir hata olduğunu bulduktan sonra, alaycı adlandıran tutarlı bir ağ cihazını bulamıyorum. Senin tırnak işaretleri üzerine aldım, ama bu sihirli teşviklerin config.txtgerçek anlamda eklenmesi Pi üzerinde belgelenmiş bir hata olarak çalışmaz (belki de şimdi en son udev inşasının piyasaya sürülmesiyle). USB üzerinde ethernet bulunan tüm sistemleri etkileyen şaşırtıcı derecede bilinmeyen bir hata.
Kevin Teljeur

4

Bu ismin bir parçası olarak özellikle mac adresiyle karşılaşmadım, ancak karşılaştığınız şeye tutarlı ağ cihazı isimlendirme deniyor.

Bu bir değişiklikti çünkü mümkün ve hatta kartların sıradan çıkacağı ve eth0, eth1 vb. yanlış arayüze.

Pek çok Linux dağıtımı, bir tür tutarlı ağ cihazı ismine taşınmıştır, tipik olarak enp0s1PCI veri yolunu ve veri yoluna bağlantı noktasını (sırasıyla 0 ve 1) tanımlamak gibi bir şeye benzeyecektir .

Sen den daha fazla bilgi alabilirsiniz https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/7/html/Networking_Guide/ch-Consistent_Network_Device_Naming.html yanı nasıl sıra yapmanın eski yolu için sistemi değiştirmeye hala yapmak istiyorsan bazı şeyler.


1
Bu, bilgilendirici bir yorum olsa da, sorunu çözmeye yardımcı olmadı ve soruya da cevap vermedi (kılavuzdaki cevap türünü okuyun). Ancak, yukarıdaki çözüme ufak bir düzeltme bulmaya yardımcı oldu. bu yüzden kazanılmış oy ve bir teşekkür :)
Tom Siwik



1

Odroid bu dosyayı oluşturma ile sorunumu çözdü

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

Raspberry Pi 2'de Ubuntu 16.04 ile aynı sorunu yaşadım ve çalıştığım iş, #goutam bağlantısını takip ederek /etc/udev/rules.d/70-persistent-net.rules öğesini aşağıdakilerle eklemek:

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

1

Bu öneriyi burada buldum :

70-persistent-net.rules içindeki bir satırı değiştirin

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

KERNEL özniteliği bırakıyor ve NAME değiştiriliyor: =

Hangi MAC adresinin eth0 için bulunabileceğini zorluyor gibi görünüyor. Ahududu Pi ve uboot önyükleme sistemleri üzerinde çalışıyor.


0

Benim için, Raspberry Pi 2'de Debian Unstable'ı çalıştırmak, yorumda ilk cevaba verilen bağlantı doğru fikirdi, ama adı farklı olmalıydı: ln -vis /dev/null /etc/udev/rules.d/80-net-setup-link.rules


Hayır, bu dosya adından bahsettiniz, ancak yorumunuzda farklı bir isim var, bu yüzden bu yorumu kullandım ve benim için farklı bir dosya adı olması gerektiğinden bahsettiniz.
Axel Beckert

1
Anlıyorum. Lütfen ahududu pi 3 ve ahududu pi 2 arasındaki farkı dikkat edin. Teknik olarak neredeyse aynı olsalar bile, bu adlandırma farkı insanları yanlış yönlendiren şeylerden biri olabilir. Açıklama için teşekkürler.
Tom Siwik

Dosya adlarındaki bu farkın daha yeni bir systemd / udev versiyonuyla Debian 8 Jessie - Debian Unstable'den geldiğini farz ediyorum. Bu bağlantı olmadan arayüzün asıl adı gerçekten de MAC adresinden daha farklı olabilir. Ama ethernet için en az ben bu gördükten hatırlıyorum arayüzü enxarasındaki arayüz isimleri, Raspi 2 ve 3. Gerçi şu anda WLAN arayüzü Raspi 3. seçildi nasıl hatırlayamıyorum
Axel Beckert

enx <MAC>, yukarıda gösterildiği gibi bir sorun olan Ubuntu Mate kullanıyordu. Debian'a geçti ve ismini değiştirmek zorunda değildi. Yine de garip ... haklısın.
Tom Siwik

0

arayüz yeniden adlandırma işleminden sorumlu olan udev kurallarını devre dışı bırakmanız yeterlidir;

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

veya

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

EDIT: thx @ sparkie bir hata yapmak için. Ben her zaman emri karıştırırım. :)


ilk belirtilen komut çalışamaz. En azından src ve dst karışık.
sparkie 20:17

0

Bu sorunun eski olduğunu biliyorum ama bu soruna değindim ve bu sayfada önerilen çözümlerden hiçbiri sorunumu çözmedi. Benim için rules.d klasör numarası hiçbir şey yapmıyor gibi görünüyor.

Benim çözümüm, adından bağımsız olarak DHCP'yi kablolu ethernet portuna atamak için init.d klasörüne giren bir betik yazmaktı. Bu önemlidir, çünkü birkaç Raspberry Pi birimim var ve hepsi de aynı sorunla karşılaştı. (çok sinir bozucu)

Sorunum karmaşık, çünkü önyükleme işlemi sırasında eklenecek bir ağ depolama klasörüm var. Arayüz ortaya çıkmadığından, bu bağlantı başarısız oldu ve işler benim için daha da kötüye gitti.

İşte benim çözümüm. Umarım bu, yukarıdaki yanıtları kullanarak katılmayı bulamayan kimseye yardımcı olmaz.

Favori metin editörünüzü kullanarak /etc/init.d/raspi-init-network dosyasını oluşturun. Vi'yi kullanmayı seviyorum.

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

Bu, dosyaya ait olan koddur.

#!/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

Komut dosyasının çalıştırılabilir olduğundan emin olun

sudo chmod 755 raspi-init-network

Güncelleme-rc.d komutunu çalıştırarak önyükleme işlemi sırasında yürütülecek şekilde kodu etkinleştirin.

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

Bundan sonra, tek bir sorun yaşamadım ve aynı sabit sonuçlarla tüm Pi ünitelerime kodu kopyalayabildim.

NOT: Sürücü takmıyorsanız "mount -a" hattını bırakabilirsiniz.

TWEAKS: Eğer wifi kullanıyorsanız, "interface =" ile başlayan satırı değiştirebilir ve ilk "grep" bölümünü düzenleyebilirsiniz. Bu ilk adım, kullanmak istediğiniz arabirimin tüm çizgisini kapar. İkinci adım bu satırı alır ve yalnızca arayüz adını döndürür.

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.