Pro buildroot musí být všechny vaše skripty umístěny v $path_to_buildroot/output/target/etc/init.d
před build image.V mém případě tento adresář obsahuje rcS
a několik skriptů s názvem S[0-99]script_name. Můžete si tedy vytvořit svůj vlastní start\stop skript.
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
a například 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 $?
Je špatný nápad měnit fs ve složce "target". Důvodem jsou změny v output/target/
nepřežijí make clean
příkaz.
V buildroot manuálu je popsáno, jak to udělat správně
Měli byste někde vytvořit adresář, který částečně překrývá souborový systém. Například můžete vytvořit adresář "vaše překrytí" v adresáři buildroot, kde vytvoříte tuto strukturu
your-overlay/etc/init.d/<any_file>
Pak byste měli nastavit cestu k tomuto překrytí v defconfig
System configuration > Root filesystem overlay directories
(nebo vyhledejte BR2_ROOTFS_OVERLAY)
Doporučená cesta pro tuto překryvnou vrstvu je také board/<company>/<boardname>/rootfs-overlay