Per buildroot tutti i tuoi script devono essere inseriti in $path_to_buildroot/output/target/etc/init.d
prima di creare l'immagine. Nel mio caso questa directory contiene rcS
e alcuni script denominati S[0-99]script_name. Quindi puoi creare il tuo script 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
e ad esempio 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 $?
È una cattiva idea cambiare il tuo fs nella cartella "target". Questo perché le modifiche in output/target/
non sopravvivere al make clean
comando.
Nel manuale di buildroot viene descritto come farlo correttamente
Dovresti creare una directory da qualche parte che sovrapponga parzialmente il file system. Ad esempio puoi creare dir "your-overlay" in buildroot dir dove crei questa struct
your-overlay/etc/init.d/<any_file>
Quindi dovresti impostare il percorso di questo overlay in defconfig
System configuration > Root filesystem overlay directories
(oppure trova BR2_ROOTFS_OVERLAY)
Inoltre, il percorso consigliato per questo overlay è board/<company>/<boardname>/rootfs-overlay