Fiziksel ağ arayüzlerinin gömülü bir Linux sistemindeki yeniden başlatmalar arasında her zaman aynı arayüz adını almasını nasıl sağlarsınız?


13

Gömülü bir Linux sisteminde, iki veya daha fazla ağ arayüzüm varsa, her açılışta her zaman aynı arayüz adlarını almalarını nasıl sağlayabilirim?

Başka bir deyişle, örneğin eth0’in her zaman bir fiziksel Ethernet portuna, eth1’i diğerine vb. Eşlemesini istiyorum.

Benim Linux "dağıtımım" evde yetiştiriliyor ve popülasyonu / dev'i doldurmak için devtmpfs kullanıyorum. Meşgul kutusunu init (ve diğer her şey için), sistemin başlatılması ve kapatılması için özel init betikleri ile birlikte kullanıyorum.

Mdev veya udev'in hotplug tesislerine ihtiyacım yok - "sabit" Ethernet portlarından bahsediyorum.


Aygıt dosyasında bunu belirtmenin bir yolu olacağını varsaydım, ancak nasıl olduğunu bulamadım.

Yanıtlar:


7

Bu benim için bir x86_64 mimarisinde Linux 3.9.0 ile çalışıyor.

#!/bin/sh

# This assumes the interfaces come up with default names of eth*.
# The interface names may not be correct at this point, however.
# This is just a way to get the PCI addresses of all the active
# interfaces.
PCIADDRLIST=
for dir in /sys/class/net/eth* ; do
  [ -e $dir/device ] && {
    PCIADDRLIST="`readlink -f $dir/device` ${PCIADDRLIST}"
  }
done

# Now assign the interface names from an ordered list that maps
# to the PCI addresses of each interface.

# IFNAMES could come from some config file.  "dummy" is needed because of
# my limited tr- and awk-fu.
IFNAMES="eth0 eth1 eth2 dummy"

for dir in `echo ${PCIADDRLIST} | tr " " "\n" | sort` ; do
  [ -e $dir/net/*/address ] && {
    MACADDR=`cat $dir/net/*/address`
    IFNAME=`echo $IFNAMES | awk '{print $1}'`
    IFNAMES=`echo $IFNAMES | awk '{ for (i=2; i<=NF; i++) printf "%s ", $i; }'`
    echo -n "$IFNAME "
    nameif $IFNAME mac=$MACADDR
  }
done

2
itibaren man nameif: "Bu program eski. Değiştirme kontrolü için ip link." Ayrıca, sistemde çalışıyorsanız yapar kullanım udev, stratejiniz olarak başarısızlığa eğilimli olacak /sys/class/net/eth[whatever] var olmayabilir.

2

Yapmadığınızı söylediniz gerek udev, ancak yüklemeye karşı değilseniz, kullanmayı düşünebilirsiniz. biosdevname . Harika var wiki sayfası üzerinde freedesktop.org Bu, bu konuyu tartışıyor. Bu sayfada belirtildiği gibi, udev sürüm 197 veya daha üstünü kullanıyorsanız, o zaman biosdevname bile gerekmez, çünkü udev zaten ihtiyacınız olanı yapar.

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.