FreeBSD、Windows と夏時間の三つ巴2008年04月27日 10時50分08秒

Windows は BIOS の時刻をローカルの保つ。その為、FreeBSD と Windows を共存させる為には BIOS の時刻をローカルに保つ必要がある。FreeBSD などの含めた UNIX 系のシステムは UTC に設定していた方が良いのだが、致し方ない。

最近、いくつか解った事がある。何せ、タイムゾーンと複数の OS が絡むので、何が起こっているのかが長い間掴めなかった。夏時間に関する事実。

Windows を含めて夏時間に合わせて時刻やタイムゾーンを OS は多い。その中で、Windows は夏時間に切り替わる時に BIOS の時刻を書き換える。そのため、BIOS の時間はいつも壁にかかっている時計の時間と同じだ。

それに引き替え、FreeBSD などを含め UTC を使って場合は、そのまま BIOS の時間を変更する必要はない。UTC は常に一つだけであり、夏時間を要するタイムゾーンの場合は、決められた期間によって時刻表示を調整するだけだ。夏時間かどうかは内部的には何も関係ない。

さて、これに Windows との共存が含まれると面白くややこしくなる。FreeBSD で、ローカルタイム用に設定すると事情が変わる。ローカルタイム用にすると、FreeBSD は時間の表示に BIOS の時間をそのまま使う。表示においてはタイムゾーンは、何の関係も無くなり、ただ単に付加的に表示するものに過ぎない。もちろん内部的にはタイムゾーンの情報を用いて UTC の時刻を求め使っている。

それゆえ、もし夏時間を採用している地域にいて、BIOS にローカルタイムを使っている場合は手動で変更する必要がある。逆に言えば、FreeBSD のタイムゾーン機能による夏時間へのは、ローカルタイムを使っていると機能しない。実際に自分の手で変更するか、Windows を起動して Windows に BIOS の時間を変更するしかない。

まとめると以下になる。FreeBSD のみで使う場合は、BIOS を に設定し、タイムゾーンを適切に設定する。これにより、夏時間の有無にかかわらず、時間は正しい時を刻み続ける。もし何らかの理由で BIOS の時間をローカルタイムに設定する必要があるのなら、夏時間などで時間が変わる時は自らの手で変更する必要がある。そういう意味では常時動いているサーバなどの用途には使えない。が、元々 Windows との併用のため BIOS をローカルタイムに設定しているのだから、長時間の連続運用などは必要ないのだろうが。