ブート時に自動的に起動させるようにする
これが最大の問題でした。LS210Dの中を探しても smartdの起動スクリプトが見つかりません。仕方ないので、LS-VLの smartd起動スクリプトから必要な部分だけを抜き出して自力でスクリプトを作成しました。内容は以下のようになります。
#! /bin/sh
smartd_opts="--configfile=/etc/smartd.conf"
SMARTD_BIN=/usr/sbin/smartd
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
SMARTDPID=/var/run/smartd.pid
[ -x $SMARTD_BIN ] || exit 0
RET=0
# source configuration file
[ -r /etc/default/smartmontools ] && . /etc/default/smartmontools
smartd_opts="--pidfile $SMARTDPID $smartd_opts"
case "$1" in
start)
echo -n "Starting S.M.A.R.T. daemon: smartd"
if start-stop-daemon --start --quiet --pidfile $SMARTDPID ¥
--exec $SMARTD_BIN -- $smartd_opts; then
echo "."
else
echo " (failed)"
RET=1
fi
;;
stop)
echo -n "Stopping S.M.A.R.T. daemon: smartd"
start-stop-daemon --stop --quiet --oknodo --pidfile $SMARTDPID
echo "."
;;
restart|force-reload)
$0 stop
$0 start
;;
*)
echo "Usage: /etc/init.d/smartmontools {start|stop|restart|force-reload}"
exit 1
esac
exit $RET
|
何の事はない、LS-VL内にあった smartd起動スクリプトからDebian部分を抜き出しただけです。これを "/etc/init.d/smartd.sh" というファイル名で作りました。実行権を付けて起動実験してみます。
# chmod +x /etc/init.d/smartd.sh
# /etc/init.d/smartd.sh start
Starting S.M.A.R.T. daemon: smartd.
# ps -efa | grep smartd
3486 root /usr/sbin/smartd --pidfile /var/run/smartd.pid --configfile=/etc/smartd.conf
|
うまく起動しているようです。あとはこれがブート時に呼び出されるようにすれば良いのですが、これが何故かうまくいかない・・・LS210Dでは "/etc/rc.d"配下のディレクトリ構造が、
# ls -l /etc/rc.d
total 12
drwxr-xr-x 2 root root 4096 Dec 13 15:32 extensions.d/
lrwxrwxrwx 1 root root 9 Nov 1 2007 init.d -> ../init.d/
drwxr-xr-x 2 root root 4096 Dec 3 09:44 initweb.d/
drwxr-xr-x 2 root root 4096 Oct 2 10:04 sysinit.d/
|
となっていました。"/etc/init.d/rcS" スクリプトを読むと、以下の順でファイル名が 'S' で始まるスクリプトを実行して行くように読めました。
- /etc/rc.d/sysinit.d/
- /etc/rc.d/extensions.d/
実際、上記のディレクトリ配下には名前が "Snn_xxxxx.sh"、"Knn_xxxxx.sh"(nnは数字、xxxxxはスクリプト名)のシンボリックリンクが置かれています。先頭が 'S' のスクリプトが起動、'K' のスクリプトが停止ですね。数字nnは起動、停止の順番を制御するためのものです。そこで、"/etc/rc.d/extensions.d/" に "S99_smartd.sh" という名前で "/etc/init.d/smartd.sh" へのシンボリックリンクを置いてみました。しかし再起動しても smardが起動してくれない。何故?
止むを得ず、"/etc/init.d/rcS" スクリプトの最後で "/etc/init.d/smartd.sh" を直接呼び出すようにしました。
# tail /etc/init.d/rcS
/etc/init.d/wol.sh start wol_ready_check
#exec_sh consoled.sh
#Start SSH daemon
/usr/sbin/sshd
#Start smart daemon
/etc/init.d/smartd.sh start
|
何とか LS210Dのブート時に smartdが起動されるようになりました。何となく釈然としないけど、まぁいっかぁ。。。