====== 仕上げ ======
ここまでで、全体動作可能な状態になりました。\\
正しく動作したでしょうか。
===== 常駐部のデーモン化と自動起動 =====
常駐部は最終的にはシステム起動時に自動起動し、デーモンとなるようにします。
kitchen_timer.rbの最終行を以下の通り変更してください。
KitchenTimer.new.daemon
FreeBSDでは、以下のファイルを使って自動起動/停止を行います。別のOSを使う場合は、そのOSの流儀に合わせて設定してください。このファイルを、/usr/local/etc/rd.d以下へ設置し、実行権限を付けておきます。
#!/bin/sh
# kitchen timer startup / shutdown script.
RUBY=/usr/local/bin/ruby
BASEPATH=/usr/local/kitchen_timer
PIDFILE=/tmp/kitchen_timer.pid
case "$1" in
start)
${RUBY} -I${BASEPATH}/lib ${BASEPATH}/bin/kitchen_timer.rb
;;
stop)
kill `cat ${PIDFILE}`
;;
restart)
kill `cat ${PIDFILE}`
sleep 1
${RUBY} -I${BASEPATH}/lib ${BASEPATH}/bin/kitchen_timer.rb
;;
*)
echo "Usage: `basename $0` {start|stop|restart}" >&2
exit 64
;;
esac
exit 0
===== 電源OFF対応 =====
組み込みシステムは、電源の突然のOFFにも耐えなければなりません。\\
ほとんどの場合、オペレータのシャットダウン操作を期待することはできないからです。
FreeBSDでは、ディスクのリードオンリマウントが簡単に実現できるように、起動スクリプトがとてもよく考えられているので、これを利用します。\\
変更するファイルは、/etc/fstabです。
# Device Mountpoint FStype Options Dump Pass#
/dev/ada0p2 / ufs ro 1 1
/dev/ada0p3 none swap sw 0 0
2行目のOptions項をrwからroに変更し、再起動します。
これだけでルートパーティションがリードオンリマウントされ、/tmpなどの書き込みが必要な部分は、RAMDISKとして構成されます。\\
シャットダウン操作をせずにリブートをしてみて、fsck等がかからないことを確認してみましょう。