3. ソフトウェア

3.1. clock(8) と hwclock(8)

どのようなディストリビューションでも古い clock(8) か 新しい hwclock(8) のどちらかはインストールされます ( 時間の調整は自分でする必要があります)。adjtimex(8) も インストールされるか、オプションとして CD に同梱されているでしょう (adjtimex は通常の Linux アーカイブサイトからダウンロード することもできます)。ディストリビューションによっては X Window 上で グラフィカルにクロックを設定するプログラムを含んでいたりしますが、 それらはあくまでインタラクティブな使い方をするようになっているので (自動設定ができないので)、clock(8)hwclock(8) もインストールされ 初期化スクリプトで自動設定が出来るようになっています。

clock の場合、時間調整のための数値は手動で計算 しなければなりません。他方 hwclock の場合、そのコマンド を使って RTC をリセットするたびごとに調整率を自動で計算してくれます (両方を 交互に使って RTC を設定すると時間調整が狂ってしまうので、調整の際は 必ずどちらか一方を使うようにしてください)。もし clock しか入っていない古いシステムを使っていてアップグレードしたい場合は、 hwclockutil-linux パッケージのバージョン 2.7 以降に含まれています。詳しくはマニュアル ページをご覧ください。

Note: hwclock(8) のマニュアルページは、下位互換性を保つために clock のコマンド名で呼び出す設定になっていることがある ので、両方のコマンド名を試してください。hwclockclock 用のコマンドにも反応はしますが、その場合処理結果は clock の時とは異なるかもしれません。特に hwclock -a は、clock -a とはかなり異なって います。もし hwclock にアップグレードしているなら、 初期化スクリプト内で clock 用コマンドを使っている 部分はすべて hwclock のネイティブコマンドに差し替える ことをおすすめします。

初期化スクリプトはディストリビューションごとに異なるので、多少調べないと クロックを設定している場所が見つからないかもしれません。典型的な場所は /etc/rc.local/etc/rc.d/rc.sysinit/etc/rc.d/boot などです。

RTC の時間調整用の数値は、/etc/adjtime に保存されて います。Red Hat の場合 etc/sysconfig/clock に スクリプトがあり、そのスクリプトで hwclock のオプション を制御しています。

クロックの設定で時計の規則的なズレを調整する場合は、電話での時報が 正確ではない場合があり得ることを念頭に置いてください (訳注:まあ、 アメリカでの話だと思います)。短波ラジオや GPS レシーバを持っていないときは、(303)499-7111 に電話をして、 WWV から時報を聞くこともできます(これは、コロラドのボルダーへの 長距離電話になります)。3 分で自動的に切れますが、クロックの設定には 充分です。USNO やカナダの CHU も時報サービスをしていますが、著者は WWV のほうがいいと思います。時間のアナウンスと時報音の間隔が長い からです。他にも ntpd 付属の ntpdate を使ってネットワークタイムサーバから時刻を得ることもできますし、 www.time.gov には javaclock もあります。

どれを使った場合でも設定するのはシステムクロックであり、RTC では ありません(date コマンドのマニュアルページを 見て、どういうフォーマットを使うのか確認してください)。そして、 hwclock を使用して RTC を設定し、規則的なズレの 割合を計算します。手動でやる場合、1 秒か 2 秒以内の誤差に設定して、 一週間後におよそのズレの率を確認するようにしてください。そして adjtimex を実行し、システムクロックを調整してください。

3.2. Adjtimex(8)

adjtimex コマンドは、カーネルの時間変数の調整が できるので、それによってシステムクロックのスピードを変更するようになって います(実行の際には root でログインする必要があります)。hwclock は設計が秀逸であり、システムクロックと RTC の時刻を 比較する際に /etc/adjtime に保存された、clock でも hwclock でも使える同一の調整数値を 使うようになっています。それゆえ RTC の規則的ズレを直してしまえば、 システムクロックを調整するのも非常に簡単です。一旦クロックが正しい スピードで動くように出来たなら、初期化スクリプトに設定行を追加して 起動時にカーネル変数を適切に設定することができます。adjtimexclock でも hwclock でも使えるように設計されているので、前述した「11 分ごと」のバグも 回避できるようになっています。

adjtimex のインストールが済んだら、設定に関する詳しい情報 を得るには man 8 adjtimex とタイプするか (設定以外の情報に関する adjtimex のマニュアル ページもあります)、/usr/doc/adjtimex-1.3/READMEREADME ファイルを読むかしてください (ディレクトリパス上のバージョン番号は、adjtimex の 最新バージョンの番号となります)。

3.3. xntpd と ntpd - ネットワークタイムプロトコル

xntpd (NTPv3) は、ntpd (NTPv4) に置き換わりました。古いバージョンは現在メンテナンスの対象外となっています。

ntpd は、ネットワーク越しに時計を同期させる標準的な プログラムであり、 プログラムには接続可能なパブリックタイムサーバのリストが付属しています。 設定については本書で述べているようなプログラムよりもやや複雑かもしれま せんが、この種の事柄に興味があるならまずざっと眺めてみることをおすすめ します。

ntpd に関する情報は NTP のウェブサイトである http://www.eecis.udel.edu/~ntp/ に集約されています。またここには、時間に関連する様々な事柄 (他の OS 用のソフトウェアも含む) へのリンクが掲載されています。 ディストリビューションによっては ntpd が CD に 収められている場合もあります。パブリックタイムサーバのリストは、 http://www.eecis.udel.edu/~mills/ntp/clock2.html をご覧ください。

ntpd の比較的新しい機能に、「バーストモード(burst mode)」 があります。 これはダイアルアップで時々しかインターネットに接続しないマシン用に 設計された機能です。

ntpd には、電波時計用ドライバも数多く含まれて います (ただ、なかにはあまり性能の良くないのもありますが)。電波時計 の大部分は商用として作成されていて、数千ドルの値段が付いたりしますが、 それにかわる安価な手段も存在します (これについては後ほど解説します)。 以前はほとんどが WWV や WWVB レシーバでしたが、現在では大部分が GPS レシーバとなっています。NIST のウェブサイトには PDF ファイル形式での 電波時計の製造元一覧表があります。 http://www.boulder.nist.gov/timefreq/links.htm (ページの末尾です)。 また NTP ウェブサイトにも電波時計の製造会社へのリンクが多数掲載 されています。 http://www.eecis.udel.edu/~ntp/hardware.htm および http://www.eecis.udel.edu/~mills/ntp/refclock.htm。 どちらのリストも、随時更新されたりされなかったりのようです :-)  ntpd のドライバは、 http://www.eecis.udel.edu/~ntp/ntp_spool/html/refclock.htm にあります。

ntpd には、ダイアルアップ用のタイムサービスについての ドライバも含まれています。これらはすべて長距離電話を使うので、 プログラムを使う前に電話料金がどれくらいになるか計算するのを忘れない でください。

3.4. chrony プログラム

xntpd はもともとネットワークタイムサーバか電波時計 に常時接続できるマシン用に作られていました。理論的には時々しか接続しない マシンでも使えるのですが、Richard Curnow は思い通りの方法で xntpd を動かすことができなかったため、chrony という プログラムを作成し、ISP にダイアルアップで接続するときしかネットワークに アクセスしないユーザ向けに別の手段を提供してくれました (これは ntpd が新機能である burst mode で解決しようとしたのと 同じ問題です)。chrony の現在のバージョンには、 長時間電源をオフにするマシン用に RTC の規則的ズレを解消する機能も 含まれています。

詳しい情報は Richard Curnow のウェブサイト http://www.rrbcurnow.freeuk.com/chronyhttp://go.to/chrony をご覧下さい。chrony には二つのメーリングリスト があり、ひとつはアナウンス用、もうひとつはユーザによる議論の場と なっています。詳しくは <hrony-users-subscribe@egroups.com> か <chrony-announce-subscribe@egroups.com> に メールを送信してください。

chrony は通常ソースコードのみの配布となっていますが、 Debian では、unstable のなかにバイナリ版が含まれています。 ソースファイルについても、著名な Linux アーカイブサイトで入手できます。

3.5. clockspeed プログラム

それ以外の選択肢として、DJ Bernstein による clockspeed というプログラムがあります。これはネットワークタイムサーバから時間を 取得して、3 秒ごとにシステムクロックを再設定するという単純な方法を 使うものです。また LAN 上にあるいくつかのマシンを同期させるために 使うこともできます。

彼のウェブサイト http://Cr.yp.to/clockspeed.html はときどきトラブルが あるようです。もし DNS エラーが出るようなら、再度翌日にアクセス してみてください。この部分については詳しい情報が入り次第、 更新します。