BusyBoxで起動スクリプトを作成および制御する


11

BusyBoxでカスタムLinuxカーネルをコンパイルしました。BusyBox initはランレベルをサポートしていません。カーネルがBusyBoxで起動すると、まず実行initされ、指定されたランレベルをで探します/etc/inittab。BusyBoxはなしinitでも問題なく動作し/etc/inittabます。inittab見つからない場合は、次の動作があります。

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

この部分は私には非常に明確ですが、ネットワークを起動する、シリアルポートを作成する、またはjavaプロセスを開始するデーモンを管理する方法を知りたいです。にあるスクリプトを調べましたが、/etc/init.d/それらの管理方法がわかりません。などの自動化ツールなしで自分でこれらのサービスを制御するための優れたチュートリアルまたはソリューションを探していますbuildroot。私は、これらのスクリプトがどのように機能するかを理解したいとどのようにデバイスを作成する/dev/(今私が唯一持っているconsolettyAM0)。

回答:


9

buildrootの場合、すべてのスクリプトは$path_to_buildroot/output/target/etc/init.dビルドイメージの前に配置する必要があります。私の場合、このディレクトリにはrcSS [0-99] script_nameという名前のスクリプトがいくつか含まれています。したがって、独自のstart \ stopスクリプトを作成できます。

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*、中断されます。
ティム

@Timは必ずしも「スクリプトを壊す」必要はなく、ゼロパッドのみです。確かには、S20*後に実行されますS10*あなたが前に来るために何かしたい場合、S10あなたはそれを呼び出す必要をS01*S02*などNBD、。
thom_nic 2018

5

「ターゲット」フォルダでfsを変更することはお勧めできません。これは、の変更がコマンドをoutput/target/存続させないためmake cleanです。

buildrootマニュアルで、それを正しく行う方法を説明 しました

ファイルシステムを部分的にオーバーレイするどこかにdirを作成する必要があります。たとえば、この構造体を作成するbuildroot dirにdir "your-overlay"を作成できます。

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

次に、defconfigでこのオーバーレイへのパスを設定する必要があります

System configuration > Root filesystem overlay directories

(または、BR2_ROOTFS_OVERLAYを見つけます)

また、このオーバーレイの推奨パスは board/<company>/<boardname>/rootfs-overlay


サブモジュールとしてBuildrootを使用して、サンプルのセットアップ:github.com/cirosantilli/linux-kernel-module-cheat/blob/...
チロSantilli新疆改造中心法轮功六四事件

1
OPはBusyBoxのみを使用しており、buildrootなしで目標を達成したいことを示しています。質問に関連するこの回答は見当たりません。受け入れられた答えに対するコメントです。
Tim
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.