256MB RAMおよび4GBeMMCのBeagleboneブラックベースのカスタムボードがあります。
Linux-3.12からLinux-4.4にアップグレードし、busybox-1.20.2からbusybox-1.26.2にアップグレードしました。
busybox-1.26.2では、busybox-1.20.2にはなかった問題が発生しています。
最後のinitスクリプトの1つに次のコードを追加しました。
if [ -f /home/ankur ] ; then
count=50
rm /home/ankur
echo "----Check Whoami----"
whoami #prints root
reboot
echo "--------------------"
while [ true ]
do
count=$((count - 1 ))
echo "Count = $count"
if [ $count -le 0 ];then
break;
fi
echo "Sleep 1"
sleep 1
done
fi
/home/ankur
のファイルに触れてから、ボードを再起動しました。
私が観察したのは、システムは再起動しなかったが、カウンターが0になり、他のinitスクリプトが実行され、ボードが再起動したことです。
したがって、busyboxはreboot
のシグナルを取得しているようですが、initスクリプトが実行された後にのみ処理します。
さて、私の質問ですが、すべてのinitスクリプトが完了する前にボードをreboot
する方法はありますか。この再起動のブロックを無効にするbusybox構成はありますか?
reboot -f
(initを経由せずに強制的に再起動)は機能しますが、stopスクリプトも実行する必要があるため、使用できません。
したがって、busyboxは再起動のシグナルを受信しているようですが、initスクリプトが実行された後にのみ処理します。
はい、BusyBoxのinit
はまさにそのように機能します。いいえ、これは構成できません。プログラムを変更して再構築する必要があります。