最近、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
多分これで動くようになるのではないかと思われる。