web-dev-qa-db-ja.com

忙しいボックスの再起動は、初期化スクリプトからは機能しません

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スクリプトも実行する必要があるため、使用できません。

1
ART

したがって、busyboxは再起動のシグナルを受信して​​いるようですが、initスクリプトが実行された後にのみ処理します。

はい、BusyBoxのinitはまさにそのように機能します。いいえ、これは構成できません。プログラムを変更して再構築する必要があります。

参考文献

1
JdeBP