এম্বেডড লিনাক্স সিস্টেমে ফিজিকাল নেটওয়ার্ক ইন্টারফেসগুলি সর্বদা একই ইন্টারফেসের নামটি পুনরায় বুট করার জন্য কীভাবে নিশ্চিত করে?


13

এম্বেডেড লিনাক্স সিস্টেমের জন্য, আমার কাছে দুটি বা ততোধিক নেটওয়ার্ক ইন্টারফেস থাকলে আমি কীভাবে তা নিশ্চিত করব যে তারা সর্বদা প্রতিটি বুটে একই ইন্টারফেসের নাম পাবে?

অন্য কথায়, আমি চাই, উদাহরণস্বরূপ, eth0 সর্বদা একটি শারীরিক ইথারনেট পোর্টে ম্যাপ করা, পরের দিকে এথ 1 ইত্যাদি want

আমার লিনাক্স "ডিস্ট্রিবিউশন" স্বজাতীয় এবং আমি জনবহুল / দেবের জন্য ডেভটিএমপি ব্যবহার করি। আমি সিস্টেম স্টার্টআপ এবং শাটডাউনয়ের জন্য কাস্টম থ্রি স্ক্রিপ্টগুলির সাথে, আর ডিজে (এবং বেশিরভাগ সব কিছুর জন্য) ব্যস্তবক্স ব্যবহার করি।

আমার এমডেভ বা উদেবের হটপ্লাগ সুবিধার দরকার নেই - আমি "স্থির" ইথারনেট পোর্টগুলি উল্লেখ করছি।


আমি ধরে নিয়েছি ডিভিসেট্রি ফাইলে এটি নির্দিষ্ট করার কোনও উপায় থাকবে তবে আমি কীভাবে তা জানতে পারি নি।

উত্তর:


7

এটি আমার জন্য x86_64 আর্কিটেকচারে লিনাক্স 3.9.0 এর সাথে কাজ করে।

#!/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
থেকে man nameif: "এই প্রোগ্রামটি অপ্রচলিত replacement প্রতিস্থাপন চেকের জন্য ip link" " এছাড়াও মনে রাখবেন যে আপনি যে সিস্টেমটি ব্যবহার করছেন তা যদি ব্যবহার না করে তবেudev আপনার কৌশলটি /sys/class/net/eth[whatever]অস্তিত্বহীনভাবে ব্যর্থতার ঝুঁকিতে পড়বে ।

2

আপনাকে উল্লেখ করেছে যে আপনার না প্রয়োজন udev কিন্তু আপনি তা তারপর ইনস্টল বিরোধিতা নেই আপনি ব্যবহার বিবেচনা করতে পারেন biosdevnameফ্রিডেস্কটপ.অর্গ.এতে একটি দুর্দান্ত উইকি পৃষ্ঠা রয়েছে যা এই সমস্যাটি নিয়ে আলোচনা করে। এই পৃষ্ঠায় উল্লিখিত হিসাবে, আপনি যদি উদেব সংস্করণটি 197 বা তার চেয়ে বেশি ব্যবহার করেন তবে আপনার বায়োদেব নাম প্রয়োজন নেই কারণ উদেব ইতিমধ্যে আপনার যা প্রয়োজন তা করবে।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.