ব্যাসিবক্সে স্টার্ট আপ স্ক্রিপ্টগুলি তৈরি এবং নিয়ন্ত্রণ করুন


11

আমি ব্যাসিবক্সে একটি কাস্টম লিনাক্স কার্নেল সংকলিত করেছি। ব্যস্তবক্স initরানলেভেল সমর্থন করে না। কার্নেলটি ব্যাসিবক্সে বুট হয়ে গেলে, এটি প্রথমে কার্যকর করে initযা নির্দিষ্ট রানলেভেলের জন্য অনুসন্ধান করে /etc/inittab। ব্যস্তবক্স initছাড়া ঠিক কাজ করে /etc/inittab। যখন inittabকোনটি পাওয়া যায় না তবে এটির নিম্নলিখিত আচরণ থাকে:

::sysinit:/etc/init.d/rcS

এই অংশটি আমার কাছে খুব স্পষ্ট, তবে আমি কীভাবে ডেমোনগুলি পরিচালনা করতে পারি যেগুলি নেটওয়ার্কিং শুরু করে, সিরিয়াল পোর্ট তৈরি করে বা javaপ্রক্রিয়া শুরু করে। আমি লিখিত স্ক্রিপ্টগুলিতে /etc/init.d/দেখেছি কিন্তু সেগুলি কীভাবে পরিচালনা করতে হয় তা আমি বুঝতে পারি না। আমি কোনও স্বয়ংক্রিয় সরঞ্জামের মতো এই পরিষেবাগুলি নিজেই নিয়ন্ত্রণ করতে একটি ভাল টিউটোরিয়াল বা সমাধানের সন্ধান করছি buildroot। আমি বুঝতে চাই যে এই স্ক্রিপ্টগুলি কীভাবে কাজ করে এবং কীভাবে ডিভাইস তৈরি করতে হয় /dev/(এই মুহূর্তে আমার কাছে কেবল আছে consoleএবং ttyAM0)।

উত্তর:


9

বিল্ট্রুট এর জন্য আপনার সমস্ত স্ক্রিপ্টগুলি অবশ্যই $path_to_buildroot/output/target/etc/init.dচিত্র তৈরির আগে স্থাপন করতে হবে । আমার ক্ষেত্রে এই ডিরেক্টরিতে rcSএস [0-99] স্ক্রিপ্ট_নামের নাম এবং কয়েকটি স্ক্রিপ্ট রয়েছে । সুতরাং আপনি নিজের স্টার্ট-স্টপ স্ক্রিপ্ট তৈরি করতে পারেন।

rcS:

#!/bin/sh

# Start all init scripts in /etc/init.d
# executing them in numerical order.
#
for i in /etc/init.d/S??* ;do

     # Ignore dangling symlinks (if any).
     [ ! -f "$i" ] && continue

     case "$i" in
    *.sh)
        # Source shell script for speed.
        (
        trap - INT QUIT TSTP
        set start
        . $i
        )
        ;;
    *)
        # No sh extension, so fork subprocess.
        $i start
        ;;
    esac
done

এবং উদাহরণস্বরূপ S40network:

#!/bin/sh
#
# Start the network....
#

case "$1" in
  start)
    echo "Starting network..."
    /sbin/ifup -a
    ;;
  stop)
    echo -n "Stopping network..."
    /sbin/ifdown -a
    ;;
  restart|reload)
    "$0" stop
    "$0" start
    ;;
  *)
    echo $"Usage: $0 {start|stop|restart}"
    exit 1
esac

exit $?

S[0-99]script_nameফাইলনাম সিনট্যাক্স S10*আগে চালানো হবে S2*এবং স্ক্রিপ্ট ভাঙ্গবে।
টিম

@ টিমটি অবশ্যই "স্ক্রিপ্টটি ভাঙ্গা" করবেন না, কেবল শূন্যপ্যাড। অবশ্যই S20*রান পর S10*, আগে আপনি আসা কিছু চান তাহলে S10আপনি এটি কল করতে প্রয়োজন S01*, S02*ইত্যাদি NBD।
thom_nic

5

"লক্ষ্য" ফোল্ডারে আপনার fs পরিবর্তন করা খারাপ ধারণা। এর কারণ পরিবর্তনগুলি কমান্ড থেকে output/target/বেঁচে না make clean

বিল্ডরোট ম্যানুয়ালটি এটি সঠিকভাবে কীভাবে করা যায় তার জন্য ড্রিবিউট করে

আপনার কোথাও dir তৈরি করা উচিত যা আংশিকভাবে ফাইল সিস্টেমের ওভারলে করে। উদাহরণস্বরূপ আপনি বিল্ড্রুট দির যেখানে আপনি এই কাঠামোটি তৈরি করেন সেখানে dir "আপনার ওভারলে" তৈরি করতে পারেন

your-overlay/etc/init.d/<any_file>

তারপরে আপনার ডিফকনফাইগে এই ওভারলেটির পথ নির্ধারণ করা উচিত

System configuration > Root filesystem overlay directories

(বা, BR2_ROOTFS_OVERLAY খুঁজুন)

এছাড়াও, এই ওভারলেটির জন্য প্রস্তাবিত পথটি board/<company>/<boardname>/rootfs-overlay



1
ওপি কেবল ব্যাসিবক্স ব্যবহার করছে এবং ইঙ্গিত দেয় যে তিনি বিলড্রুট ছাড়াই তার লক্ষ্য অর্জন করতে চান। আমি এই উত্তরটি প্রশ্নের সাথে প্রাসঙ্গিক দেখছি না। এটি গৃহীত উত্তরের আরও মন্তব্য।
টিম
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.