最近、Debianに乗せ換えたLS-VLを引っ張り出し、 アップデートをかけようとしたところ、 ネットワークからアクセスできないようになっていた。
ディスクを取り出してログを眺めてみると、 "Unable to set up timer: unexpected error"などと出ており、 DHCPクライアントのデーモンが起動に失敗しているらしい。
ネットで調べてみると、時刻があまりにおかしい場合、 DHCPクライアントが起動するのをやめるらしいとの情報があった。
LS-VLは(LS-XHLも)、電池でバックアップされるRTCは 持っていないはずなので、起動時におかしな時刻になるのは仕方がない。 ただ、今までは何とかネットワークにつないで、 外部の時刻をもらうことで問題なく使えていたので、 そこから変更があると嬉しくない。
そこで、一時しのぎかもしれないが、DHCPクライアントが文句が出ない程度に 時刻を設定して、ネットワークにつなげられるようにし、 後は今までの何かに適当にやってもらうことにした。
まず、"/etc/init.d/mysetyear.sh"という名前で、 以下の内容のファイルを作成する。
#! /bin/sh
### BEGIN INIT INFO
# Provides: mysetyear
# Required-Start: hwclock mountall
# Required-Stop:
# Default-Start: S
# Default-Stop:
# Short-Description: rectify year for dhcpclient
# Description: rectify year for dhcpclient
### END INIT INFO
PATH=/sbin:/bin
. /lib/init/vars.sh
. /lib/lsb/init-functions
do_start () {
[ -x /usr/bin/logger ] && /usr/bin/logger "$(date)"
if [ `date '+%s'` -lt `date -d '2015-01-01' '+%s'` ]; then
date -s '2015-01-01'
fi
[ -x /usr/bin/logger ] && /usr/bin/logger "$(date)"
}
do_status () {
date
}
case "$1" in
start|"")
do_start
;;
restart|reload|force-reload)
echo "Error: argument '$1' not supported" >&2
exit 3
;;
stop)
# No-op
;;
status)
do_status
exit $?
;;
*)
echo "Usage: mysetyear.sh [start|stop]" >&2
exit 3
;;
esac
このファイルを作成したら、以下のコマンドで実行権を付与し、 さらに起動スクリプトとして登録する。
# chmod 755 /etc/init.d/mysetyear.sh # update-rc.d mysetyear.sh defaults
多分これで動くようになるのではないかと思われる。