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 タイムゾーンで走らせます。
スーパユーザの権限が、全ての操作のために必要とされます。