1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
|
.\" Copyright (C) 1993-1998 by Andrey A. Chernov, Moscow, Russia.
.\" All rights reserved.
.\"
.\" Redistribution and use in source and binary forms, with or without
.\" modification, are permitted provided that the following conditions
.\" are met:
.\" 1. Redistributions of source code must retain the above copyright
.\" notice, this list of conditions and the following disclaimer.
.\" 2. Redistributions in binary form must reproduce the above copyright
.\" notice, this list of conditions and the following disclaimer in the
.\" documentation and/or other materials provided with the distribution.
.\"
.\" THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND
.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
.\" SUCH DAMAGE.
.\"
.\" %Id: adjkerntz.8,v 1.16 1998/06/04 06:35:11 charnier Exp %
.\" jpman %Id: adjkerntz.8,v 1.4 1997/07/26 21:28:35 horikawa Stab %
.\"
.Dd April 4, 1996
.Dt ADJKERNTZ 8
.Os FreeBSD
.Sh 名称
.Nm adjkerntz
.Nd "ローカル時間 CMOS クロックをタイムゾーンの変更を反映するように調整し、現在のタイムゾーンオフセットをカーネル用に保持する"
.Sh 書式
.Nm adjkerntz
.Fl i
.Nm adjkerntz
.Fl a Op Fl s
.Sh 解説
.Nm
は、 UTC がいつも設定されているカーネルクロックと、
ローカル時間が設定されているかもしれない CMOS クロックとの間の適切な関係を扱います。
.Nm
は、また MS-DOS ファイルシステムのようなローカル時間ファイルシステム
のための適切なタイムスタンプを扱うために、カーネルに機械のタイムゾーン
のシフトを教えます。この主要な目的は、最初から壊れている MS-DOS
ファイルタイムスタンプの考え方を一般に固定するためではなく、
同じタイムスタンプを同じ機械上の
.Bx Free
の MS-DOS ファイルシステムと
MS-DOS オペレーティングシステムで保つためのものです。
ファイル
.Pa /etc/wall_cmos_clock
がある場合、 CMOS クロックは (MS-DOS や MS-Windows 互換モードの)
ローカル時間を保持していることを意味します。
このファイルが無い場合、 CMOS クロックは UTC 時間を
保持していることになります。
.Nm
は、この状態をカーネル変数の
.Pa machdep.wall_cmos_clock
に通知します。
.Pp
時間調整はシステムの立ち上げとシャットダウン時、そしてタイムゾーンの
変更が起きた時はいつでも必要になります。
これらのことなった状況を扱うために、
.Nm
は二つの方法で立ち上げられます。
.Bl -tag -width 4n
.It Cm Fl i
この形式は、システムの立ち上げとシャットダウンを取り扱います。
マルチユーザモードの先頭で、
.Nm
は
.Pa /etc/rc
からこのオプションをつけて呼び出されます。
これは他のデーモンが実行される前に行われます。
.Nm
は自分自身をバックグラウンドで実行します。
その後、ローカル時間 CMOS クロックのために、
.Nm
は、ローカル時間をそこから読み込み、カーネル時間を正しい UTC 時間に
設定します。
.Nm
は、これ以降での
.Em "'adjkerntz -a'"
呼び出しでの利用のためや、ローカルファイルシステムでの利用のために、
ローカルタイムゾーンオフセットを
.Pa machdep.adjkerntz
カーネル変数に設定します。
.Pp
ローカル時間 CMOS クロックのために、
.Nm "'adjkerntz -i'"
は、一時停止し、バックグランドのデーモンとして活動を停止します。
このデーモンは、 SIGTERM シグナルを受け取るまでそのままです。
SIGTERM はふつう、システムがマルチユーザモードを終了する時に
.Xr init 8
によって送られます (普通、システムがシャットダウンされる時です)。
SIGTERM を受け取った後で
.Nm
は、 UTC カーネル時間クロックを読み込み、必要であれば現在の
ローカルタイムゾーンを反映するように CMOS クロックを更新します。
その後、
.Nm
は終了します。
.It Cm Fl a Op Fl s
この形式は、タイムゾーンの変更が起こった時に、ローカル時間 CMOS
クロックとカーネル
.Pa machdep.adjkerntz
変数を更新するために使われます。例えば、夏時間に入ったり、
終了したりした時に使われます。
.Nm
は、カーネルクロックの UTC 時間・以前に保存したタイムゾーンオフセット・
新しいタイムゾーンを計算するためのタイムゾーン変更規則を使います。
これは、新しいオフセットを
.Pa machdep.adjkerntz
カーネル変数に保存し、 CMOS クロックを新しいローカル時間に更新します。
.Em "'adjkerntz -a'"
が、(タイムゾーン変更中に) 存在しない時間で実行された場合、
.Fl s
オプションが使われていない場合は警告診断を出し、終了します。
.Fl s
オプションが使われている場合は、 30 秒間スリープしてもう一度試します。
.Pp
この形式は、大多数の現代のタイムゾーンの変更が起こる、
真夜中から 5:00 までの間に 30 分毎に、root の
.Xr crontab 5
から呼び出されるべきです。
警告:
.Fl s
オプションを
.Xr crontab 5
のコマンドライン中で使ってはいけません。使ってしまうと、複数の
.Em "'adjkerntz -a'"
がお互いに衝突してしまうでしょう。
.El
.Pp
.Nm
は、カーネルタイムゾーン構造を消去し、カーネルクロックを
UTC タイムゾーンで走らせます。
スーパユーザの権限が、全ての操作のために必要とされます。
.Sh 環境変数
.Bl -tag -width Fl
.It Ev TZ
タイムゾーンの変更規則。
.Xr tzset 3
を見てください。
.Xr tzsetup 8
もしくは
.Xr zic 8
を使っている場合は、必要ありません。
.Sh 関連ファイル
.Bl -tag -width /etc/wall_cmos_clock -compact
.It Pa /etc/localtime
現在のゾーン情報ファイルです。
.Xr tzsetup 8
と
.Xr zic 8
を見てください。
.It Pa /etc/wall_cmos_clock
空のファイルです。
これは、機械の CMOS クロックがローカル時間に設定されていることを
示しています。反対にこれが存在しないと、 UTC の CMOS クロックに
設定されています。
.El
.Sh 関連項目
.Xr tzset 3 ,
.Xr crontab 5 ,
.Xr mount_msdos 8 ,
.Xr rc 8 ,
.Xr sysctl 8 ,
.Xr tzsetup 8 ,
.Xr zic 8
.Sh 診断
診断はありません。
エラーが起こった場合は、
.Nm
はエラーメッセージを
.Xr syslog 3
を使って記録し、ゼロでない値を返して終了します。
.Sh 作者
.An Andrey A. Chernov Aq ache@astral.msk.su
.Sh 歴史
.Nm
コマンドは、
.Fx 1.0
から導入されました。
|