Für buildroot müssen alle Ihre Skripte in $path_to_buildroot/output/target/etc/init.d
platziert werden vor dem Build-Image. In meinem Fall enthält dieses Verzeichnis rcS
und einige Skripte namens S[0-99]script_name. Sie können also Ihr eigenes Start-/Stopp-Skript erstellen.
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
und zum Beispiel 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 $?
Es ist keine gute Idee, Ihre fs im "Ziel"-Ordner zu ändern. Dies liegt an Änderungen in output/target/
überleben die make clean
nicht Befehl.
Im Buildroot-Handbuch ist beschrieben, wie man es richtig macht
Sie sollten irgendwo ein Verzeichnis erstellen, das das Dateisystem teilweise überlagert. Zum Beispiel können Sie das Verzeichnis "your-overlay" im buildroot-Verzeichnis erstellen, wo Sie diese Struktur erstellen
your-overlay/etc/init.d/<any_file>
Dann sollten Sie den Pfad zu diesem Overlay in defconfig
setzen
System configuration > Root filesystem overlay directories
(oder suchen Sie nach BR2_ROOTFS_OVERLAY)
Außerdem ist der empfohlene Pfad für dieses Overlay board/<company>/<boardname>/rootfs-overlay