標準のRaspbianディストリビューションを実行しているRaspberryPiがあります。シャットダウンシーケンスの最後に実行する必要があるこの小さなCプログラムがあります。 Raspberryボードへの電力を遮断するように指示するために、GIPO出力で2つの論理的な高パルスを電源に送信するだけです。シャットダウンスクリプトは、システムの電源がオフになっている場合にのみ呼び出す必要がありますが、PIの再起動または起動時には呼び出さないでください。
私はこれを行うためにupdate-rc.dを使用しようとして失敗しました。 update-rc.dのドキュメントを理解する方法は、次のとおりです。
実行可能ファイル(poweroff.bin
)をコピーし、/ sbinにコピーして、必要なアクセス許可とLSBヘッダーを付与します。
#!/bin/sh
### BEGIN INIT INFO
# Provides: poweroff
# Required-Start:
# Required-Stop: $all
# Default-Start:
# Default-Stop: 0
# Short-Description: Power off.
# Description: Send a power off signal to the PM board.
# X-Interactive: false
### END INIT INFO
/sbin/poweroff.bin
exit 0
/etc/init.dにpoweroff
というスクリプトを作成します
poweroff stop 99 0
を実行します。これにより、次のスクリプトが生成されます。/etc/rc0.d/K99poweroff
は、システムが停止している場合にのみ/sbin/poweroff.bin
を呼び出します。
私は3つの質問があります:
Sudo update-rc.d poweroff stop 99 0 .
を実行すると、/etc/rc0.d/K01poweroff
というスクリプトが作成されるだけです。私は何が間違っているのですか? 99はどうなりましたか?要求された番号付けは、依存関係ベースのメタ初期化システムでは無視されます。あなたは間違った提供をしています!重要な手がかりは別のスクリプトからです。 umountroot
を見てみましょう:
### BEGIN INIT INFO
# Provides: umountroot
# Required-Start:
# Required-Stop:
# Should-Stop: halt reboot kexec
# Default-Start:
# Default-Stop: 0 6
# Short-Description: Mount the root filesystem read-only.
### END INIT INFO
Should-Stop
行を詳しく見てみましょう。電源オフではなく、停止に依存することに注意してください。これは、debianのhaltスクリプトを見ると明確にわかります。
### BEGIN INIT INFO
# Provides: halt
# Required-Start:
# Required-Stop:
# Default-Start:
# Default-Stop: 0
# Short-Description: Execute the halt command.
# Description:
### END INIT INFO
更新スクリプトはまだK99とは呼びませんが、非常に複雑な依存関係のセットがない限り、おそらくK15のようなものと呼ぶことに注意してください。ただし、provides行を停止に変更すると、機能するはずです。