OSDN Git Service

Convert release and draft pages to UTF-8.
[linuxjm/jm.git] / manual / util-linux / release / man8 / hwclock.8
1 .\"
2 .\" Japanese Version Copyright (c) 1997 NAKANO Takeo all rights reserved.
3 .\" Translated Mon Dec 8 1997 by NAKANO Takeo <nakano@apm.seikei.ac.jp>
4 .\" Updated & Modified Fri 3 Jul 1998 by NAKANO Takeo
5 .\" Updated & Modified Thu 14 Oct 1999 by NAKANO Takeo 
6 .\" Updated & Modified Sat 18 Mar 2000 by NAKANO Takeo
7 .\" Updated & Modified Wed 14 Jun 2000 by NAKANO Takeo 
8 .\" Updated & Modified Sun Jan  7 22:17:11 JST 2001
9 .\"         by Yuichi SATO <ysato@h4.dion.ne.jp>
10 .\" Updated & Modified Mon Apr  9 20:47:39 JST 2001 by Yuichi SATO
11 .\" Updated & Modified Mon Jun 25 22:38:36 JST 2001 by Yuichi SATO
12 .\" Updated & Modified Sat Jul  6 03:56:54 JST 2002 by Yuichi SATO
13 .\"
14 .\"WORD:        epoch           紀元(年)
15 .\"
16 .TH HWCLOCK 8 "02 March 1998"
17 .SH 名前
18 hwclock \- ハードウェア・クロック (RTC) の読み取りと設定を行う
19 .SH 書式
20 .BR "hwclock \-r" " or " "hwclock \-\-show"
21 .br
22 .BR "hwclock \-w" " or " "hwclock \-\-systohc"
23 .br
24 .BR "hwclock \-s" " or " "hwclock \-\-hctosys" 
25 .br
26 .BR "hwclock \-a" " or " "hwclock \-\-adjust"
27 .br
28 .BR "hwclock \-v" " or " "hwclock \-\-version"
29 .br
30 .B "hwclock \-\-set \-\-date=newdate"
31 .br
32 .B "hwclock \-\-getepoch"
33 .br
34 .B "hwclock \-\-setepoch \-\-epoch=year"
35 .PP
36 その他のオプション:
37 .PP
38 .B "[\-u|\-\-utc]  \-\-localtime  \-\-noadjfile \-\-directisa"
39 .B "\-\-test [\-D|\-\-debug]"
40 .PP
41 DEC Alpha 用の知る人ぞ知るオプション:
42 .PP
43 .B "[\-A|\-\-arc] [\-J|\-\-jensen] [\-S|\-\-srm] [\-F|\-\-funky-toy]"
44 .PP
45 すべてのオプションは他と区別がつく範囲において短縮することができる。
46 .PP
47 また \-h はヘルプメッセージを表示する。
48
49 .SH 説明
50 .B hwclock
51 はハードウェア・クロックにアクセスするためのツールである。
52 現在の時刻の表示、指定した時刻へのハードウェア・クロックの設定、
53 ハードウェア・クロックをシステム時刻に合わせる (およびその逆)、
54 といった機能を持つ。
55 .PP
56 .B hwclock
57 を定期的に実行し、ハードウェア・クロックの時間を増減して、
58 時計の規則的なずれ (systematic drift) を補償することもできる
59 (systematic drift とは、クロックが放っておかれたとき、
60 経過時間に比例して時刻がずれる現象のこと)。
61
62 .SH オプション
63 以下のオプションは
64 .B hwclock
65 にどの機能を実行するかを伝えるもので、必ず一つだけを指定する。
66 .PP
67 .TP
68 .B \-\-show
69 ハードウェア・クロックを読んで時刻を標準出力に表示する。
70 ここで表示される時刻は常にローカル・タイムである。
71 ハードウェア・クロックを協定世界時にしていても表示はローカル・タイムである。
72 .B \-\-utc
73 オプションの部分を参照すること。
74
75 .TP
76 .B \-\-set
77 ハードウェア・クロックを
78 .B \-\-date
79 オプションによって指定した時刻に設定する。
80 .TP
81 .B \-\-hctosys
82 システム・クロックをハードウェア・クロックに合わせる。
83
84 同時にカーネルが持つタイムゾーンの値も
85 ローカルのタイムゾーンにセットする。
86 このとき TZ 環境変数や
87 .I /usr/share/zoneinfo
88 の内容を
89 .BR tzset (3)
90 と同じように解釈して参照する。
91 カーネルのタイムゾーンの obsolete なフィールドである
92 tz_dsttime は DST_NONE に設定される。
93 (このフィールドがかつて意味していた内容に関しては
94 .BR settimeofday (2)
95 を参照のこと。)
96
97 このオプションはシステムの起動スクリプトの一部で用いるとよい。
98 .TP
99 .B \-\-systohc
100 ハードウェア・クロックを現在のシステム・クロックに合わせる。
101 .TP
102 .B \-\-adjust
103 最後にハードウェア・クロックを合わせた時点からの経過時間に対して生じる、
104 時計の規則的なずれを補償するために、
105 一定の時間をハードウェア・クロックの時刻から増減する。
106 詳細は以下の議論を参照のこと。
107 .TP
108 .B \-\-getepoch
109 標準出力に、カーネルが保持しているハードウェア・クロックの紀元年
110 (epoch value) を表示する。
111 これは西暦の何年が、ハードウェア・クロックの
112 0 年として参照されるかを示す数値である。
113 例えば、ハードウェアクロックの年カウンタに
114 1952 年以降の経過年数を用いている場合には、
115 カーネルでのハードウェア・クロック紀元年は 1952 でなければならない。
116
117 この紀元年の値は、
118 hwclock がハードウェア・クロックを読み書きするとき常に用いられる。
119 .TP
120 .B \-\-setepoch
121 カーネルのハードウェア・クロック紀元年の値を
122 .B \-\-epoch
123 オプションで指定した値に設定する。
124 詳細は
125 .B \-\-getepoch
126 オプションの説明を見よ。
127 .TP
128 .B \-\-version
129 .B hwclock
130 のバージョンを標準出力に表示する。
131 .TP
132 .B \-\-date=date_string
133 .B \-\-set
134 オプションを指定した場合は、このオプションも指定しなければならない。
135 .B \-\-set
136 オプションが指定されていなければ、このオプションは無視される。
137 ハードウェア・クロックを合わせる時刻を指定する。
138 このオプションに与える値は
139 .BR date (1)
140 プログラムの引数と同じである。例えば以下のようにする。
141 .sp
142 .I hwclock \-\-set \-\-date="9/22/96 16:45:05"
143 .sp
144 引数はローカルタイムで与える。
145 ハードウェア・クロックを協定世界時にしている場合でも、である。
146 .B \-\-utc
147 オプションの部分を見よ。
148
149 .\" 訳注 :-p
150 .B \-\-setepoch
151 オプションを指定した場合は次のオプションも必要である。
152 .TP
153 .B \-\-epoch=year
154 ハードウェア・クロックの紀元年を指定する。
155 すなわち西暦年のいつが、
156 ハードウェア・クロックの年カウンタの 0 に対応するかを指定する。
157 このオプションは、--setepoch オプションとともに使った場合、
158 カーネルの概念であるハードウェア・クロックの紀元年を設定する。
159 --setepoch オプションとともに使わない場合は、
160 直接 ISA アクセスに用いられる紀元年を指定する。
161
162 例えば、Digital Unix マシンでは以下のようにする。
163 .sp
164 .I hwclock \-\-setepoch \-\-epoch=1952
165
166 .PP
167 次のオプションはほとんどの機能と同時に用いることができる。
168 .TP
169 .B \-\-utc
170 .TP
171 .B \-\-localtime
172 ハードウェア・クロックを協定世界時 (Universal Coordinated Time: UTC) と
173 ローカルタイムのどちらにするか (しているか) を指定する。
174 UTC にするかローカルタイムにするかはユーザの選択しだいだが、
175 時計の内部にはどちらを選択したかを記録する場所はない。
176 したがって、ユーザーはこのオプションで自分の選択を
177 .B hwclock
178 に伝えなければならない。
179
180 これらの指定を間違ったほうにしたり (あるいはデフォルトを勘違いして
181 両方とも指定しなかったり) すると、ハードウェア・クロックの設定や
182 クロックへの問い合わせの結果はめちゃめちゃになってしまうだろう。
183
184 .BR \-\-utc " も " \-\-localtime
185 も指定しなかった場合のデフォルトは、最後に
186 .B hwclock
187 を使って時計を合わせたとき
188 (つまり
189 .BR \-\-set ", " \-\-systohc ", " \-\-adjust
190 オプションを指定しての実行が成功したとき)
191 に指定していた方になる。
192 このときの選択は adjtime ファイルに記録されている。
193 adjtime ファイルがなかったときのデフォルトはローカルタイムになる。
194
195 .TP
196 .B \-\-noadjfile
197 .I /etc/adjtime
198 によって提供される機能を無効にする。
199 このオプションを使うと、
200 .B hwclock
201
202 .I /etc/adjtime
203 の読み込みも書き込みもしない。
204 このオプションを使うときは、
205 .B \-\-utc
206 または
207 .B \-\-localtime
208 を指定しなければならない。
209
210 .TP
211 .B \-\-directisa
212 このオプションは、ISA マシンまたは
213 .RB ( hwclock
214 から充分 ISA マシンに見える程度 ISA の仕様を実装した)
215 Alpha マシンでのみ意味を持つ。
216 他のマシンでは効果がない。
217 このオプションは
218 .B hwclock
219 に指令して、ハードウェア・クロックへのアクセスに
220 直接 I/O 命令を用いるようにさせる。このオプションを指定しないと、
221 .B hwclock
222 は /dev/rtc デバイスを用いようとする (/dev/rtc が rtc デバイスドライバ
223 で駆動されていることを仮定する)。デバイスを読み込みオープンできない場
224 合は、いずれにせよ直接 I/O 命令を用いる。
225
226 rtc デバイスドライバは Linux リリース 2 から現れた。
227 .TP
228 .B \-\-badyear
229 ハードウェア・クロックが、1994-1999 年の外側の年を保持できないことを示す。
230 ある種の BIOS には問題があり (4/26/94 から 5/31/95
231 の間に生産されたほとんどの Award BIOS がそうである)、
232 1999 年以降の年を扱うことができないのである。世紀内の年の部分を
233 94 未満 (場合によっては 95 未満) に設定しようとすると、
234 実際には 94 (または 95) が設定されてしまう。
235 このようなマシンでは、
236 .B hwclock
237 は年を 1999 以降に設定できず、またクロックの値を
238 通常のように正しい値としては用いることができない。
239
240 本当は BIOS を更新するのが絶対に良いが、そうできない場合に
241 この問題を補償するには、これらのマシンを用いるとき、常に
242 .B \-\-badyear
243 オプションを指定すること。
244 .B hwclock
245 は、自分が頭のイカれたクロックを扱っていることを知ると、
246 ハードウェア・クロックの年の部分を無視し、
247 adjtime ファイルの「最終時計合わせ日付」から
248 現在の年を推定しようとする。この動作を行わせたい場合には、
249 .I hwclock \-\-set
250 または
251 .I hwclock \-\-systohc
252 を少なくとも年に一回は実行するほうが良いだろう!
253
254 .B hwclock
255 は、ハードウェア・クロックの読み込み時には年の値を無視するが、
256 設定時には年も設定する。これは 1995, 1996, 1997, 1998 の
257 いずれかとなり、閏年のサイクルに合う年が選択される。
258 このようにして、ハードウェア・クロックに閏日を挿入させるのである。
259 繰り返すが、ハードウェア・クロックを設定せずに一年以上
260 動作させつづけると、この機能が動作せず、一日を失うことになる。
261
262 ハードウェア・クロックが 1994 または 1995 になっていると、
263 .B hwclock
264
265 .B \-\-badyear
266 が必要ではないか、という警告を発する。
267
268 .TP
269 .B \-\-srm
270 このオプションは
271 .B \-\-epoch=1900
272 と等しく、
273 SRM コンソールの Alpha で最も一般的な紀元年を指定するのに使われる。
274 .TP
275 .B \-\-arc
276 このオプションは
277 .B \-\-epoch=1980
278 と等しく、
279 ARC コンソールの Alpha で最も一般的な紀元年を指定するのに使われる
280 (ただし Ruffians では 1900 を紀元年にしている)。
281 .TP
282 .B \-\-jensen
283 .TP
284 .B \-\-funky\-toy
285 これら 2 つのオプションは、
286 使っている Alpha マシンがどのような種類のものであるか指定する。
287 Alpha 以外では無効だし、Alpha でも
288 実際には指定しなくても良いだろう。
289 .B hwclock
290 は自分が動作しているマシンの種類を自分で決定できるはずである
291 (最低でも
292 .I /proc
293 がマウントされていれば)。
294 .RB ( hwclock
295 が正しく動作しないことがわかった場合には、
296 メンテナに連絡して、あなたのシステムを自動検知できるように
297 プログラムを改良できないか相談してみてほしい。
298 `hwclock --debug' と `cat /proc/cpuinfo' の出力が役立つかもしれない。)
299
300 .B \-\-jensen 
301 は、Jensen モデルを動作させていることを意味する。
302
303 .B \-\-funky\-toy 
304 は、そのマシンでは時間の遷移の検知にハードウェア・クロックの
305 UIP ビットではなく UF ビットが使われていることを意味する。
306 オプション名の "Toy" は、マシンの "Time Of Year" 機能からとったものである。
307
308 .TP
309 .B \-\-test
310 実際のハードウェア・クロックの更新 (およびそれに類する) 作業をのぞき、
311 すべての動作を行う。
312 このオプションは
313 .B \-\-debug
314 と組み合わせると
315 .B hwclock
316 の動作を理解する上で有用であろう。
317 .TP
318 .B \-\-debug
319 .B hwclock
320 が内部で行っている動作に関して大量の情報を表示する。
321 一部の機能は複雑であるが、この出力はプログラムの動作を
322 理解する上で助けになるだろう。
323
324
325 .SH 注意
326
327
328 .SH Linux システムにおける時計
329 .PP
330 Linux システムには主要な時計が 2 つ存在する。
331 .PP
332 .B ハードウェア・クロック: 
333 これは CPU 内部で動作しているすべてのコントロールプログラムから
334 独立しており、マシンの電源が OFF のときにも動作している。
335
336 ISA システムでは、このクロックは ISA 規格の一部として定義されている。
337 コントロールプログラムはこの時計に対して 1 秒単位で読み書きできるが、
338 秒針の変化を検出することもできるので、
339 実際には仮想的に無限大の精度を持っていることになる。
340 .PP
341 この時計は一般にハードウェア・クロック、リアルタイム・クロック、RTC、
342 BIOS クロック、CMOS クロックなどと呼ばれる。
343 .B hwclock
344 では「ハードウェア・クロック (原文では Hardware Clock)」を用いる。
345 他の名前は不正確だったり誤解のもとになるからである。
346 .PP
347 .B システム・クロック: 
348 これは Linux カーネルの内部に存在している時計で、
349 タイマ割り込みによって駆動されている
350 (ISA システムでは、タイマ割り込みは ISA 標準の一部である)。
351 すなわち Linux が起動している間しか動作しない。
352 システム時刻は UTC 1970/01/01 00:00:00 からの経過秒数である
353 (より簡単に言えば 1969 年終了後の経過秒数である)。
354 しかしシステム時刻は整数ではなく、仮想的に無限大の精度を持っている。
355 .PP
356 Linux ではシステム・クロックがすべての基準となる時計である。
357 ハードウェア・クロックの基本的な役割は、システムが動いていない間にも
358 時計を動かしつづけることである。
359 Linux システムは起動時に一度だけハードウェア・クロックを参照し、
360 システム・クロックを設定する。
361 その後はハードウェア・クロックは用いない。
362 ISA システムの設計対象であった DOS においては、
363 ハードウェア・クロックがただ一つの実時間時計であることに注意すること。
364 .PP
365 システム・クロックには不連続が存在してはならない。
366 これはシステムが走っている間に
367 .I date(1L)
368 プログラムを実行して時計を合わせるような場合でも同様である。
369 一方ハードウェア・クロックには、システムの実行中にでも何を行ってもよい。
370 次回 Linux が起動したときに、
371 ハードウェア・クロックからこの調整された時間が使用される。
372 システムが走っている間にシステム・クロックをスムースに修正するには
373 .I adjtimex(8)
374 を用いることもできる。
375 .PP
376 Linux カーネルは、システムのローカルなタイムゾーンという概念を持っている。
377 しかし注意してほしい \-\- 
378 「カーネルが自分をどのタイムゾーンにいると思っているか」など、
379 誰も気にしていないのである。代わりに、タイムゾーンに関るプログラム
380 (おそらくローカルな時間を表示しようとしているもの) は、
381 ほぼ間違いなく従来用いられてきた方法でタイムゾーンを決定する。
382 つまり TZ 環境変数や
383 .I /usr/share/zoneinfo
384 ディレクトリを、
385 .BR tzset (3)
386 で説明されているようなやり方で参照するのである。
387 しかしカーネルのタイムゾーンの値を見るプログラムも存在するし、
388 カーネルの周辺部分 (ファイルシステムなど) もこちらを参照する。
389 vfat ファイルシステムなどがそうである。カーネルのタイムゾーンの
390 値が間違っていると、vfat ファイルシステムはファイルのタイムスタンプの
391 設定・取得を間違ってしまう。
392 .PP
393 .B hwclock
394
395 .B \-\-hctosys
396 オプションでシステム・クロックをセットするとき、
397 カーネルのタイムゾーンも TZ や
398 .I /usr/share/zoneinfo
399 の値に設定する。
400 .PP
401 タイムゾーンの値は実際には 2 つの部分からなる。
402 1) tz_minuteswest フィールド: (DST でない)
403 ローカルタイムが UTC から何分遅れているかを表す。
404 2) tz_dsttime: 夏時間 (DST) の形式を表し、
405 現在地の現在時刻に影響する。
406 この 2 番目のフィールドは Linux では用いられず、常に 0 となる。
407 .RB ( settimeofday (2)
408 も参照のこと。)
409
410 .SH hwclock がハードウェア・クロックへアクセスする方法
411 .PP
412 .B hwclock
413 はハードウェア・クロック時刻の取得や設定に、いろいろな方法を用いる。
414 もっとも普通のやり方は、デバイススペシャルファイル /dev/rtc に対して 
415 I/O を行う方法である。
416 しかしこの方法が常に利用できるとは限らない。
417 そもそも rtc ドライバが Linux へ追加されたのは比較的最近のことである。
418 古いシステムには存在しない。
419 DEC Alpha で動作する rtc ドライバもあるが、
420 このドライバが使えない Alpha マシンもたくさんあるようである
421 (症状としては hwclock がハングする)。
422 .PP
423 古いシステムでは、ハードウェア・クロックへのアクセス方法は
424 システムのハードウェアに依存している。
425 .PP
426 ISA システムでは、
427 .B hwclock
428 は時計を構成していた「CMOS メモリ」のレジスタに直接アクセスすることができた
429 (ポート 0x70 と 0x71 に I/O を行う)。
430 これを行うには
431 .B hwclock
432 の実効ユーザー ID がスーパーユーザーでなければならない。
433 (Jensen Alpha の場合は、このような I/O 命令を
434 .B hwclock
435 に実行させることはできない。
436 したがってこの場合はデバイススペシャルファイル /dev/port が用いられる。
437 これは I/O サブシステムへの低レベルインターフェースの
438 ほとんどを与えるものである。)
439
440 これは時計にアクセスする方法としては実に情けない方法である。
441 ユーザー空間のプログラムでは、このように直接 I/O を叩いたり、
442 割り込みを禁止したりすることは通常想定されていないのだから。
443 hwclock でこれが使えるようにしてあるのは、
444 古い Linux カーネルで ISA マシンを使う場合には、
445 これが唯一の方法だからである。
446
447 .PP
448 m68k システムでは、
449 .B hwclock
450 はコンソールドライバとデバイススペシャルファイル
451 /dev/tty1 を通して時計にアクセスすることができる。
452 .PP
453 .B hwclock
454 は /dev/rtc を用いようとする。この機能を持たないカーネル向けに
455 コンパイルされていたり、/dev/rtc をオープンできない場合には、
456 .B hwclock
457 は他の方法を (可能であれば) 試そうとする。
458 ISA や Alpha のマシンでは、
459 .I /dev/rtc
460 を試さずに、最初から
461 .B hwclock
462 に CMOS レジスタを直接操作するように強制することもできる。
463 これには \-\-directisa オプションを指定する。
464
465 .SH 時刻合わせ機能
466 .PP
467 通常ハードウェア・クロックはそれほど正確なものではない。
468 しかし、その「不正確さ」は完全に予測できるものである。
469 すなわち、時計は一日あたり同じ時間だけ進む(あるいは遅れる)のである。
470 これを規則的なずれ (systematic drift) と呼ぶことにする。
471 .B hwclock
472 の時刻合わせの機能は、この規則的なずれに対応する補正量を求め、
473 適用するものである。
474 .PP
475 以下に動作原理を述べる。
476 .B hwclock
477
478 .I /etc/adjtime
479 というファイルを管理し、そこに履歴情報を保管する。
480 このファイルを adjtime ファイルと呼ぶ。
481 .PP
482 adjtime ファイルがない状態から話をはじめる。
483 .I hwclock \-\-set
484 コマンドを用いてハードウェア・クロックを現在の正しい値に合わせたとする。
485 このとき
486 .B hwclock
487 は adjtime ファイルを作成し、そこに現在の時刻を「最後に時計合わせ
488 (calibration) が行われた時刻」として記録する。
489 五日後に時計は 10 秒進んだとし、それを修正するために再び
490 .I hwclock \-\-set
491 が実行されたとする。
492 .B hwclock
493 は adjtime ファイルを更新し、
494 現在の時刻を最後に時計合わせが行われた時刻として記録、
495 同時に 2 秒/日という値を規則的なずれの値として記録する。
496 24 時間が経過したときに
497 .I hwclock \-\-adjust
498 コマンドを実行すると、
499 .B hwclock
500 は adjtime ファイルを参照し、放っておかれた時計は一日に 2 秒進むこと、
501 時計はちょうど一日だけ放置されていたことを読みとる。
502 そこで
503 .B hwclock
504 はハードウェア・クロックから 2 秒を差し引き、現在の時刻を時計の補正 
505 (adjustment) が行われた時刻として記録する。
506 さらに 24 時間が経過したときに
507 .I hwclock \-\-adjust
508 を実行すれば、
509 .B hwclock
510 はまた同じことを行う。
511 つまり 2 秒を差し引き、現在の時刻を adjtime ファイルに書き込む。
512 .PP
513 .RI ( \-\-set " または " \-\-systohc
514 を用いて)
515 時計を合わせるごとに、
516 .B hwclock
517 は規則的なずれを再計算する。
518 このときには、最後に時計合せが行われた時点からの経過、
519 途中で行われた補正で用いられていたずれの量、
520 最後に補正を行った時刻からの経過時間などが参照される。
521 .PP
522 .B hwclock 
523 が時計を設定するときには、常に小さなずれが生じる可能性がある。
524 これが 1 秒に満たない場合には、時計の補正量からは切り捨てられる。
525 後に再び補正を行う際に、このずれが蓄積して 1 秒を越えていれば、
526 その分はその時に補正される。
527 .PP
528 システムの起動時に (あるいはシステムの動作中に cron で定期的に)
529 .I hwclock \-\-hctosys
530 を行う時には、常にその前に
531 .I hwclock \-\-adjust
532 を行うと良いだろう。
533 .PP
534 adjtime ファイルは、当初は修正量 (adjustments) だけを目的と
535 していたためにこの名前がつけられたが、現在では他の情報も書き込まれており、
536 hwclock が一度起動され、次に起動されるまでにその情報を保持する。
537 .PP
538 adjtime は ASCII ファイルであり、フォーマットは以下の通り:
539 .PP
540 一行目は三つの数値からなり、それぞれ空白で区切られる:
541 1) 一日あたりに生じる時刻ずれを秒で表したもの (浮動小数点型 10 進):
542 2) 最後に時計合わせあるいは補正を行った時刻を 
543 1969 UTC からの経過秒数で表したもの (10 進整数):
544 3) ゼロ
545 .RB ( clock (8)
546 との互換性のためのもの)
547 .PP
548 二行目: 数値が一つ: 最後に時計を合わせた時刻を
549 1969 UTC からの経過秒数で表したもの。
550 時計合わせが一度もされていなかったり、以前の時計あわせに問題があった
551 (例えばその時計あわせ以降にハードウェア・クロックの
552 時刻が不正なことがわかったとか) 場合には 0 が入る。
553 これは 10 進の整数である。
554 .PP
555 三行目: "UTC" または "LOCAL"。ハードウェア・クロックが
556 協定世界時かローカルタイム化を示す。
557 この値は
558 .B hwclock
559 にコマンドラインを指定すればいつでも上書き可能である。
560 .PP
561 以前
562 .BR clock (8)
563 で使っていた adjtime ファイルは
564 .B hwclock
565 でもそのまま使うことができる。
566
567
568 .SH カーネルによるハードウェアクロックの自動合わせ
569
570 ハードウェアクロックを正しい値に同期させるのに、
571 別法が取れるようなシステムもある。
572 Linux カーネルには、11 分ごとにシステムクロックを
573 ハードウェアクロックにコピーするようなモードが存在する。
574 これは、何らかの洗練された方法 (ntp など) でシステムクロックを
575 同期できている時には、よいモードであろう。
576 (ntp とは、ネットワークのどこかにあるタイムサーバーか、システムに付属した
577 電波時計にシステム・クロックを同期させる手法である。RFC 1305 を見よ。)
578
579 このモード (「11 分モード」と呼ぶ) は、何かによって有効にされるまでは
580 オフになっている。
581 例えば ntp デーモンである xntpd は
582 このモードを有効にできるもののひとつである。
583 オフにするのも何かを実行すればよく、例えば
584 .I hwclock \-\-hctosys
585 を実行して、システム・クロックを古い方法で設定すれば、11 分モードはオフになる。
586
587 モードがオンかオフかを調べるには、
588 .I adjtimex \-\-print
589 コマンドを実行して "status" の値を見ればよい。
590 この数値の第 64 ビットが (2 進数表示で) 0 ならば、
591 11 分モードはオンになっている。
592 それ以外の場合はオフである。
593
594 システムが 11 分モードで動作している場合に
595 .I hwclock \-\-adjust
596
597 .I hwclock \-\-hctosys
598 を実行してはならない。システムをおかしくしてしまう。
599 .I hwclock \-\-hctosys
600 を起動時だけに用いるならかまわない。
601 これを用いれば、システム・クロックが外部の値に同期して
602 11 分モードが開始されるまで、システムクロックを妥当な値にできる。
603
604
605 .SH ISA ハードウェア・クロックの「世紀値 (Century value)」
606
607 その手の標準の中には、ISA マシンの CMOS 50 バイト目を、
608 現在の世紀の指標として定義しているものがある。
609 .B hwclock
610 は、このバイトの読み書きを行わない。
611 なぜならこのバイトをそのようには利用していないマシンが存在するし、
612 いずれにしてもこれは実際には必要ないからである。
613 年の世紀の部分を使えば、現在の世紀を特定するには充分である。
614
615 もしこの CMOS の世紀バイトの利用ルーチンを開発した (したい) 方がいたら、
616 .B hwclock
617 のメンテナに連絡してほしい。
618 オプションを付加することは望ましいことであるから。
619
620 このセクションが意味を持つのは、ハードウェア・クロックに
621 "direct ISA" によってアクセスしている場合だけであることに注意。
622
623
624 .SH 環境変数
625 .I TZ
626
627 .SH ファイル
628 .I /etc/adjtime
629 .I /usr/share/zoneinfo/
630 (古いシステムでは
631 .IR /usr/lib/zoneinfo )
632 .I /dev/rtc
633 .I /dev/port
634 .I /dev/tty1
635 .I /proc/cpuinfo
636
637 .SH 関連項目
638 .BR adjtimex (8),
639 .BR date (1),
640 .BR gettimeofday (2),
641 .BR settimeofday (2),
642 .BR crontab (1),
643 .BR tzset (3)
644
645 .SH 著者
646 .B hwclock
647 は 1996 年 9 月に Bryan Henderson (bryanh@giraffe-data.com) が
648 .I clock
649 をもとに書いた。
650 .I clock
651 は Charles Hendrick, Rob Hooft, Haraid Koenig によって書かれた。
652 完全な履歴と謝辞はソースに書かれている。