日時の設定 - ネットワークを経由して同期
日時データをどのように実装し、運用しているかは、細かく見ていくとオペレーティングシステムごとに異なっている。しかし、ユーザーから見ると日時は日時であり、どのオペレーティングシステムを使っていても正確であることが望まれるし、どのように実装されているかは気にしないものだ。
しかも、最近のオペレーティングシステム(ディストリビューション)はインターネットを経由して時刻データを同期する機能がデフォルトで有効になっていることが多い。このため、インターネットに接続していれば時刻はいつの間にか比較的精確な状態にキープされており、ユーザー自身が時刻の設定をすることはほとんどないだろう。
例えば、Windows 10であれば、コントロールパネルから「時計と地域」→「日時と時刻の設定」→「インターネット時刻」のように設定を追っていけば、次のように、インターネットを経由して自動的に時刻が同期するように設定されていることを確認できる。
「設定の変更」から時刻の同期先を変更できるほか、「今すぐ更新」を押してその時手動で時刻同期を実施することも可能だ。
同様の機能は最近のLinuxディストリビューションでもデフォルトで有効になっていることが多い。
インターネットを経由した時刻の同期にはNTPというプロトコルが使われる。どの程度プロトコルに対応しているかは利用する実装系によって違うものの、基本的な時刻同期はどの実装系も持っていると思ってよいだろう。
NTPサーバと同期する頻度は、クライアント側の実装方法によって異なる。クライアント側にもNTPサーバを起動して常に時刻の同期を行う方法もあれば、定期的にNTPサーバにアクセスして時刻の同期を行う方法もある。よほど時刻を正確な状態にキープする必要がない限り、後者の方法で十分だ。
コマンドによる時刻設定
では、インターネットが普及する前はどうやって時刻を設定していたのだろうか。パソコンは内部に時計の機能を持っているが、これをハードウェアクロックと呼ぶ。一方、オペレーティングシステムは時刻管理の仕組みを持っている(こちらはシステムクロックと呼ばれる)。オペレーティングシステムはシステム起動時にハードウェアクロックから時刻データを取り出し、以降はオペレーティングシステム側で時刻の管理が行われる。
どの程度の頻度でハードウェアクロックの値を参照するか、または参照しないか、またはシステムクロックをハードウェアクロックに反映させるのかは、オペレーティングシステムごとに異なる。インターネットを経由した時刻同期の実施がデフォルトになった現在では、ここにさらにNTPサーバへのアクセスが可能かどうかで条件が異なってくる。
細かく取り上げると切りがないので、ここではNTPサーバとの時刻同期を行っていないケースで、システムクロックを設定する方法を紹介する。システムクロックの設定はLinuxでもWindowsでもコマンドで行える。
例えば、Linuxであればdateコマンドで時刻を設定できる。dateコマンドの引数に日時を指定すると、システムクロックを指定した日時に設定できる。操作には管理者権限が必要だ。指定する日時フォーマットの内容は環境によって異なるので、利用する時にオンラインマニュアルを読んでいただきたい。
Windowsではdateコマンドで年月日を、timeコマンドで時刻を設定する。dateコマンドとtimeコマンドの2つを使って、Linuxのdateコマンドと同じような設定を行うことができる。
インターネットに接続して利用することが日常となった現在、もうdateコマンドやtimeコマンドを使って時刻を設定するケースは少ないだろうが、このようにコマンドを使ってシステムクロックの設定を行えることは知っておいてもよいだろう。
時刻がクリアされる?
古いパソコンの電源をしばらく入れていないと、設定した時刻がクリアされていることがある。これはマザーボード上のボタン電池が切れているためだ。パソコンのハードウェアクロックはボタン電池を使ってキープされているので、ボタン電池が切れると設定した時刻がクリアされてしまう。
そんな時は同じ型のボタン電池に更新してあげれば、再び時刻がキープされるようになる。ボタン電池を交換したら、オペレーティングを起動する前に、BIOSやUEFIの設定画面を起動して(システム起動時に特定のキーを押すことで設定画面に入れることが多い)、そこで時刻を設定しておく。次にオペレーティングシステムを起動して、オペレーティングシステム側から時刻の設定を行えばよい。