buildroot の場合、すべてのスクリプトを $path_to_buildroot/output/target/etc/init.d
に配置する必要があります ビルド前のイメージ。私の場合、このディレクトリには rcS
が含まれています S[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 $?
「ターゲット」フォルダーで fs を変更するのは悪い考えです。これは output/target/
の変更によるものです make clean
を生き残れない コマンド。
buildroot のマニュアルでは、正しく行う方法が説明されています
ファイル システムを部分的にオーバーレイするディレクトリをどこかに作成する必要があります。たとえば、この構造体を作成する buildroot ディレクトリに「your-overlay」というディレクトリを作成できます
your-overlay/etc/init.d/<any_file>
次に、defconfig でこのオーバーレイへのパスを設定する必要があります
System configuration > Root filesystem overlay directories
(または、BR2_ROOTFS_OVERLAY を見つけます)
また、このオーバーレイの推奨パスは board/<company>/<boardname>/rootfs-overlay