ADJKERNTZ(8)

名称
adjkerntz - ローカル時間 CMOS クロックをタイムゾーンの変更を反映するように調整し、現在のタイムゾーンオフセットをカーネル用に保持する

書式
adjkerntz -i adjkerntz -a [-s]

解説
adjkerntz ユーティリティは、UTC がいつも設定されているカーネルクロックと、 ローカル時間が設定されているかもしれない CMOS クロックとの間の適切な関係を扱います。 adjkerntz ユーティリティは、 また MS-DOS ファイルシステムのようなローカル時間ファイルシステム のための適切なタイムスタンプを扱うために、カーネルに機械のタイムゾーン のシフトを教えます。この主要な目的は、最初から壊れている MS-DOS ファイルタイムスタンプの考え方を全面的に直すためではなく、 同じタイムスタンプを同じ機械上の FreeBSD の MS-DOS ファイルシステムと MS-DOS オペレーティングシステムで保つためのものです。 ファイル /etc/wall_cmos_clock がある場合、 CMOS クロックは (MS-DOS や MS-Windows 互換モードの) ローカル時間を保持していることを意味します。 このファイルが無い場合、 CMOS クロックは UTC 時間を 保持していることになります。 adjkerntz ユーティリティは、この状態をカーネル変数の machdep.wall_cmos_clock に通知します。

時間調整はシステムの立ち上げとシャットダウン時、そしてタイムゾーンの 変更が起きた時はいつでも必要になります。 これらのことなった状況を扱うために、 adjkerntz は二つの方法で立ち上げられます。

-i  この形式は、システムの立ち上げとシャットダウンを取り扱います。 マルチユーザモードの先頭で、 adjkerntz ユーティリティは /etc/rc からこのオプションをつけて呼び出されます。 これは他のデーモンが実行される前に行われます。 adjkerntz ユーティリティは自分自身をバックグラウンドで実行します。 その後、ローカル時間 CMOS クロックのために、 adjkerntz は、ローカル時間をそこから読み込み、カーネル時間を正しい UTC 時間に 設定します。 adjkerntz ユーティリティは、これ以降での 'adjkerntz -a' 呼び出しでの利用のためや、ローカルファイルシステムでの利用のために、 ローカルタイムゾーンオフセットを machdep.adjkerntz カーネル変数に設定します。

    ローカル時間 CMOS クロックのために、 'adjkerntz -i' は、一時停止し、バックグラウンドのデーモンとして活動を停止します。 このデーモンは、 SIGTERM シグナルを受け取るまでそのままです。 SIGTERM はふつう、システムがマルチユーザモードを終了する時に init(8) によって送られます (普通、システムがシャットダウンされる時です)。 SIGTERM を受け取った後で adjkerntz は、 UTC カーネル時間クロックを読み込み、必要であれば現在の ローカルタイムゾーンを反映するように CMOS クロックを更新します。 その後、 adjkerntz は終了します。

-a [-s]
    この形式は、タイムゾーンの変更が起こった時に、ローカル時間 CMOS クロックとカーネル machdep.adjkerntz 変数を更新するために使われます。例えば、夏時間に入ったり、 終了したりした時に使われます。 adjkerntz ユーティリティは、 カーネルクロックの UTC 時間・以前に保存したタイムゾーンオフセット・ 新しいタイムゾーンを計算するためのタイムゾーン変更規則を使います。 これは、新しいオフセットを machdep.adjkerntz カーネル変数に保存し、 CMOS クロックを新しいローカル時間に更新します。 'adjkerntz -a' が、(タイムゾーン変更中に) 存在しない時間で実行された場合、 -s オプションが使われていない場合は警告診断を出し、終了します。 -s オプションが使われている場合は、 30 秒間スリープしてもう一度試します。

    この形式は、大多数の現代のタイムゾーンの変更が起こる、 真夜中から 5:00 までの間に 30 分毎に、root の crontab(5) から呼び出されるべきです。 警告: -s オプションを crontab(5) のコマンドライン中で使ってはいけません。使ってしまうと、複数の 'adjkerntz -a' がお互いに衝突してしまうでしょう。

adjkerntz ユーティリティは、カーネルタイムゾーン構造を消去し、カーネルクロックを UTC タイムゾーンで走らせます。 スーパユーザの権限が、全ての操作のために必要とされます。

環境変数

TZ  タイムゾーンの変更規則。 tzset(3) を見てください。 tzsetup(8) もしくは zic(8) を使っている場合は、必要ありません。

関連ファイル
/etc/localtime
    現在のゾーン情報ファイルです。 tzsetup(8) と zic(8) を見てください。
/etc/wall_cmos_clock
    空のファイルです。 これは、機械の CMOS クロックがローカル時間に設定されていることを 示しています。反対にこれが存在しないと、 UTC の CMOS クロックに 設定されています。

関連項目
tzset(3), crontab(5), mount_msdosfs(8), rc(8), sysctl(8), tzsetup(8), zic(8)

診断
診断はありません。 エラーが起こった場合は、 adjkerntz はエラーメッセージを syslog(3) を使って記録し、0 でない値を返して終了します。

作者
Andrey A. Chernov <ache@astral.msk.su>

歴史
adjkerntz ユーティリティは、 FreeBSD 1.0 から導入されました。