玄箱のファームウェアアップデートとshutdown。
ファームウェアのアップデート
玄箱のファームウェア1.02が発表された。
カーネルが更新されているようなので、更新したいところだが、Vine化しているのでそのままアップデートとはいかない。
玄箱をバラして、開いている14GのHDDを取り付け、起動する。
新ファームをインストール。これでフラッシュの中のカーネルは更新されたはず。
あとは /lib/modules/2.4.17_kuro-box の中身を取り出しておく。
HDDを元に戻す。
取り出しておいた /lib/modules/2.4.17_kuro-box の中身を書き込む。
これでOKのはず。とりあえず起動させてみてDNSとかNTPとかの動作を確認。
shutdown
今回のファームウェアアップデートで、玄箱のシステムでは、shutdownコマンドが使用可能になっている。
ためしにやってみたが、だめ。Vine化してあるので当然か。
まじめに新ファームが何をしているのか調べてもいいのだが、めんどくさいので自力でなんとかする。
電源操作には、AVRにコマンドを送る必要があることは先人の調査で判明済み。
ならば、/etc/init.d/にあるhaltとrebootにコマンド送信を仕込めばいいだろう。
……Vineには /etc/init.d/rebootは無いのか。Debianにはあるのだが。
Vineでは、haltもrebootも、/etc/init.d/haltが面倒を見ているようだ。
/etc/init.d/haltの shutdown 処理に
echo -n EEEE > /dev/ttyS1
を追加。
同じく、-r 対策として、reboot処理に
echo -n CCCC > /dev/ttyS1
を同様に追加。
具体的には、14行目あたりからが
# See how we were called.
case "$0" in
*halt)
echo -n EEEE > /dev/ttyS1
message=$"Halting system..."
command="halt"
;;
*reboot)
echo -n CCCC > /dev/ttyS1
message=$"Please stand by while rebooting the system..."
command="reboot"
;;
*)
echo $"$0: call me as 'rc.halt' or 'rc.reboot' please!"
exit 1
;;
esac
となる。
これで、shutdown -h now で電源断、shutdown -r now でリブートが可能に。
手の届く所に置いてあるので、普通にスイッチ使えばいいじゃん、とも思うんだけどな。