File: hwclock.8

package info (click to toggle)
manpages-ja 0.5.0.0.20120606-1
  • links: PTS
  • area: main
  • in suites: wheezy
  • size: 25,964 kB
  • sloc: perl: 161; makefile: 116
file content (652 lines) | stat: -rw-r--r-- 28,285 bytes parent folder | download | duplicates (6)
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
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
.\"
.\" Japanese Version Copyright (c) 1997 NAKANO Takeo all rights reserved.
.\" Translated Mon Dec 8 1997 by NAKANO Takeo <nakano@apm.seikei.ac.jp>
.\" Updated & Modified Fri 3 Jul 1998 by NAKANO Takeo
.\" Updated & Modified Thu 14 Oct 1999 by NAKANO Takeo 
.\" Updated & Modified Sat 18 Mar 2000 by NAKANO Takeo
.\" Updated & Modified Wed 14 Jun 2000 by NAKANO Takeo 
.\" Updated & Modified Sun Jan  7 22:17:11 JST 2001
.\"         by Yuichi SATO <ysato@h4.dion.ne.jp>
.\" Updated & Modified Mon Apr  9 20:47:39 JST 2001 by Yuichi SATO
.\" Updated & Modified Mon Jun 25 22:38:36 JST 2001 by Yuichi SATO
.\" Updated & Modified Sat Jul  6 03:56:54 JST 2002 by Yuichi SATO
.\"
.\"WORD:	epoch		紀元(年)
.\"
.TH HWCLOCK 8 "02 March 1998"
.SH 名前
hwclock \- ハードウェア・クロック (RTC) の読み取りと設定を行う
.SH 書式
.BR "hwclock \-r" " or " "hwclock \-\-show"
.br
.BR "hwclock \-w" " or " "hwclock \-\-systohc"
.br
.BR "hwclock \-s" " or " "hwclock \-\-hctosys" 
.br
.BR "hwclock \-a" " or " "hwclock \-\-adjust"
.br
.BR "hwclock \-v" " or " "hwclock \-\-version"
.br
.B "hwclock \-\-set \-\-date=newdate"
.br
.B "hwclock \-\-getepoch"
.br
.B "hwclock \-\-setepoch \-\-epoch=year"
.PP
その他のオプション:
.PP
.B "[\-u|\-\-utc]  \-\-localtime  \-\-noadjfile \-\-directisa"
.B "\-\-test [\-D|\-\-debug]"
.PP
DEC Alpha 用の知る人ぞ知るオプション:
.PP
.B "[\-A|\-\-arc] [\-J|\-\-jensen] [\-S|\-\-srm] [\-F|\-\-funky-toy]"
.PP
すべてのオプションは他と区別がつく範囲において短縮することができる。
.PP
また \-h はヘルプメッセージを表示する。

.SH 説明
.B hwclock
はハードウェア・クロックにアクセスするためのツールである。
現在の時刻の表示、指定した時刻へのハードウェア・クロックの設定、
ハードウェア・クロックをシステム時刻に合わせる (およびその逆)、
といった機能を持つ。
.PP
.B hwclock
を定期的に実行し、ハードウェア・クロックの時間を増減して、
時計の規則的なずれ (systematic drift) を補償することもできる
(systematic drift とは、クロックが放っておかれたとき、
経過時間に比例して時刻がずれる現象のこと)。

.SH オプション
以下のオプションは
.B hwclock
にどの機能を実行するかを伝えるもので、必ず一つだけを指定する。
.PP
.TP
.B \-\-show
ハードウェア・クロックを読んで時刻を標準出力に表示する。
ここで表示される時刻は常にローカル・タイムである。
ハードウェア・クロックを協定世界時にしていても表示はローカル・タイムである。
.B \-\-utc
オプションの部分を参照すること。

.TP
.B \-\-set
ハードウェア・クロックを
.B \-\-date
オプションによって指定した時刻に設定する。
.TP
.B \-\-hctosys
システム・クロックをハードウェア・クロックに合わせる。

同時にカーネルが持つタイムゾーンの値も
ローカルのタイムゾーンにセットする。
このとき TZ 環境変数や
.I /usr/share/zoneinfo
の内容を
.BR tzset (3)
と同じように解釈して参照する。
カーネルのタイムゾーンの obsolete なフィールドである
tz_dsttime は DST_NONE に設定される。
(このフィールドがかつて意味していた内容に関しては
.BR settimeofday (2)
を参照のこと。)

このオプションはシステムの起動スクリプトの一部で用いるとよい。
.TP
.B \-\-systohc
ハードウェア・クロックを現在のシステム・クロックに合わせる。
.TP
.B \-\-adjust
最後にハードウェア・クロックを合わせた時点からの経過時間に対して生じる、
時計の規則的なずれを補償するために、
一定の時間をハードウェア・クロックの時刻から増減する。
詳細は以下の議論を参照のこと。
.TP
.B \-\-getepoch
標準出力に、カーネルが保持しているハードウェア・クロックの紀元年
(epoch value) を表示する。
これは西暦の何年が、ハードウェア・クロックの
0 年として参照されるかを示す数値である。
例えば、ハードウェアクロックの年カウンタに
1952 年以降の経過年数を用いている場合には、
カーネルでのハードウェア・クロック紀元年は 1952 でなければならない。

この紀元年の値は、
hwclock がハードウェア・クロックを読み書きするとき常に用いられる。
.TP
.B \-\-setepoch
カーネルのハードウェア・クロック紀元年の値を
.B \-\-epoch
オプションで指定した値に設定する。
詳細は
.B \-\-getepoch
オプションの説明を見よ。
.TP
.B \-\-version
.B hwclock
のバージョンを標準出力に表示する。
.TP
.B \-\-date=date_string
.B \-\-set
オプションを指定した場合は、このオプションも指定しなければならない。
.B \-\-set
オプションが指定されていなければ、このオプションは無視される。
ハードウェア・クロックを合わせる時刻を指定する。
このオプションに与える値は
.BR date (1)
プログラムの引数と同じである。例えば以下のようにする。
.sp
.I hwclock \-\-set \-\-date="9/22/96 16:45:05"
.sp
引数はローカルタイムで与える。
ハードウェア・クロックを協定世界時にしている場合でも、である。
.B \-\-utc
オプションの部分を見よ。

.\" 訳注 :-p
.B \-\-setepoch
オプションを指定した場合は次のオプションも必要である。
.TP
.B \-\-epoch=year
ハードウェア・クロックの紀元年を指定する。
すなわち西暦年のいつが、
ハードウェア・クロックの年カウンタの 0 に対応するかを指定する。
このオプションは、--setepoch オプションとともに使った場合、
カーネルの概念であるハードウェア・クロックの紀元年を設定する。
--setepoch オプションとともに使わない場合は、
直接 ISA アクセスに用いられる紀元年を指定する。

例えば、Digital Unix マシンでは以下のようにする。
.sp
.I hwclock \-\-setepoch \-\-epoch=1952

.PP
次のオプションはほとんどの機能と同時に用いることができる。
.TP
.B \-\-utc
.TP
.B \-\-localtime
ハードウェア・クロックを協定世界時 (Universal Coordinated Time: UTC) と
ローカルタイムのどちらにするか (しているか) を指定する。
UTC にするかローカルタイムにするかはユーザの選択しだいだが、
時計の内部にはどちらを選択したかを記録する場所はない。
したがって、ユーザーはこのオプションで自分の選択を
.B hwclock
に伝えなければならない。

これらの指定を間違ったほうにしたり (あるいはデフォルトを勘違いして
両方とも指定しなかったり) すると、ハードウェア・クロックの設定や
クロックへの問い合わせの結果はめちゃめちゃになってしまうだろう。

.BR \-\-utc " も " \-\-localtime
も指定しなかった場合のデフォルトは、最後に
.B hwclock
を使って時計を合わせたとき
(つまり
.BR \-\-set ", " \-\-systohc ", " \-\-adjust
オプションを指定しての実行が成功したとき)
に指定していた方になる。
このときの選択は adjtime ファイルに記録されている。
adjtime ファイルがなかったときのデフォルトはローカルタイムになる。

.TP
.B \-\-noadjfile
.I /etc/adjtime
によって提供される機能を無効にする。
このオプションを使うと、
.B hwclock
.I /etc/adjtime
の読み込みも書き込みもしない。
このオプションを使うときは、
.B \-\-utc
または
.B \-\-localtime
を指定しなければならない。

.TP
.B \-\-directisa
このオプションは、ISA マシンまたは
.RB ( hwclock
から充分 ISA マシンに見える程度 ISA の仕様を実装した)
Alpha マシンでのみ意味を持つ。
他のマシンでは効果がない。
このオプションは
.B hwclock
に指令して、ハードウェア・クロックへのアクセスに
直接 I/O 命令を用いるようにさせる。このオプションを指定しないと、
.B hwclock
は /dev/rtc デバイスを用いようとする (/dev/rtc が rtc デバイスドライバ
で駆動されていることを仮定する)。デバイスを読み込みオープンできない場
合は、いずれにせよ直接 I/O 命令を用いる。

rtc デバイスドライバは Linux リリース 2 から現れた。
.TP
.B \-\-badyear
ハードウェア・クロックが、1994-1999 年の外側の年を保持できないことを示す。
ある種の BIOS には問題があり (4/26/94 から 5/31/95
の間に生産されたほとんどの Award BIOS がそうである)、
1999 年以降の年を扱うことができないのである。世紀内の年の部分を
94 未満 (場合によっては 95 未満) に設定しようとすると、
実際には 94 (または 95) が設定されてしまう。
このようなマシンでは、
.B hwclock
は年を 1999 以降に設定できず、またクロックの値を
通常のように正しい値としては用いることができない。

本当は BIOS を更新するのが絶対に良いが、そうできない場合に
この問題を補償するには、これらのマシンを用いるとき、常に
.B \-\-badyear
オプションを指定すること。
.B hwclock
は、自分が頭のイカれたクロックを扱っていることを知ると、
ハードウェア・クロックの年の部分を無視し、
adjtime ファイルの「最終時計合わせ日付」から
現在の年を推定しようとする。この動作を行わせたい場合には、
.I hwclock \-\-set
または
.I hwclock \-\-systohc
を少なくとも年に一回は実行するほうが良いだろう!

.B hwclock
は、ハードウェア・クロックの読み込み時には年の値を無視するが、
設定時には年も設定する。これは 1995, 1996, 1997, 1998 の
いずれかとなり、閏年のサイクルに合う年が選択される。
このようにして、ハードウェア・クロックに閏日を挿入させるのである。
繰り返すが、ハードウェア・クロックを設定せずに一年以上
動作させつづけると、この機能が動作せず、一日を失うことになる。

ハードウェア・クロックが 1994 または 1995 になっていると、
.B hwclock
.B \-\-badyear
が必要ではないか、という警告を発する。

.TP
.B \-\-srm
このオプションは
.B \-\-epoch=1900
と等しく、
SRM コンソールの Alpha で最も一般的な紀元年を指定するのに使われる。
.TP
.B \-\-arc
このオプションは
.B \-\-epoch=1980
と等しく、
ARC コンソールの Alpha で最も一般的な紀元年を指定するのに使われる
(ただし Ruffians では 1900 を紀元年にしている)。
.TP
.B \-\-jensen
.TP
.B \-\-funky\-toy
これら 2 つのオプションは、
使っている Alpha マシンがどのような種類のものであるか指定する。
Alpha 以外では無効だし、Alpha でも
実際には指定しなくても良いだろう。
.B hwclock
は自分が動作しているマシンの種類を自分で決定できるはずである
(最低でも
.I /proc
がマウントされていれば)。
.RB ( hwclock
が正しく動作しないことがわかった場合には、
メンテナに連絡して、あなたのシステムを自動検知できるように
プログラムを改良できないか相談してみてほしい。
`hwclock --debug' と `cat /proc/cpuinfo' の出力が役立つかもしれない。)

.B \-\-jensen 
は、Jensen モデルを動作させていることを意味する。

.B \-\-funky\-toy 
は、そのマシンでは時間の遷移の検知にハードウェア・クロックの
UIP ビットではなく UF ビットが使われていることを意味する。
オプション名の "Toy" は、マシンの "Time Of Year" 機能からとったものである。

.TP
.B \-\-test
実際のハードウェア・クロックの更新 (およびそれに類する) 作業をのぞき、
すべての動作を行う。
このオプションは
.B \-\-debug
と組み合わせると
.B hwclock
の動作を理解する上で有用であろう。
.TP
.B \-\-debug
.B hwclock
が内部で行っている動作に関して大量の情報を表示する。
一部の機能は複雑であるが、この出力はプログラムの動作を
理解する上で助けになるだろう。


.SH 注意


.SH Linux システムにおける時計
.PP
Linux システムには主要な時計が 2 つ存在する。
.PP
.B ハードウェア・クロック: 
これは CPU 内部で動作しているすべてのコントロールプログラムから
独立しており、マシンの電源が OFF のときにも動作している。

ISA システムでは、このクロックは ISA 規格の一部として定義されている。
コントロールプログラムはこの時計に対して 1 秒単位で読み書きできるが、
秒針の変化を検出することもできるので、
実際には仮想的に無限大の精度を持っていることになる。
.PP
この時計は一般にハードウェア・クロック、リアルタイム・クロック、RTC、
BIOS クロック、CMOS クロックなどと呼ばれる。
.B hwclock
では「ハードウェア・クロック (原文では Hardware Clock)」を用いる。
他の名前は不正確だったり誤解のもとになるからである。
.PP
.B システム・クロック: 
これは Linux カーネルの内部に存在している時計で、
タイマ割り込みによって駆動されている
(ISA システムでは、タイマ割り込みは ISA 標準の一部である)。
すなわち Linux が起動している間しか動作しない。
システム時刻は UTC 1970/01/01 00:00:00 からの経過秒数である
(より簡単に言えば 1969 年終了後の経過秒数である)。
しかしシステム時刻は整数ではなく、仮想的に無限大の精度を持っている。
.PP
Linux ではシステム・クロックがすべての基準となる時計である。
ハードウェア・クロックの基本的な役割は、システムが動いていない間にも
時計を動かしつづけることである。
Linux システムは起動時に一度だけハードウェア・クロックを参照し、
システム・クロックを設定する。
その後はハードウェア・クロックは用いない。
ISA システムの設計対象であった DOS においては、
ハードウェア・クロックがただ一つの実時間時計であることに注意すること。
.PP
システム・クロックには不連続が存在してはならない。
これはシステムが走っている間に
.I date(1L)
プログラムを実行して時計を合わせるような場合でも同様である。
一方ハードウェア・クロックには、システムの実行中にでも何を行ってもよい。
次回 Linux が起動したときに、
ハードウェア・クロックからこの調整された時間が使用される。
システムが走っている間にシステム・クロックをスムースに修正するには
.I adjtimex(8)
を用いることもできる。
.PP
Linux カーネルは、システムのローカルなタイムゾーンという概念を持っている。
しかし注意してほしい \-\- 
「カーネルが自分をどのタイムゾーンにいると思っているか」など、
誰も気にしていないのである。代わりに、タイムゾーンに関るプログラム
(おそらくローカルな時間を表示しようとしているもの) は、
ほぼ間違いなく従来用いられてきた方法でタイムゾーンを決定する。
つまり TZ 環境変数や
.I /usr/share/zoneinfo
ディレクトリを、
.BR tzset (3)
で説明されているようなやり方で参照するのである。
しかしカーネルのタイムゾーンの値を見るプログラムも存在するし、
カーネルの周辺部分 (ファイルシステムなど) もこちらを参照する。
vfat ファイルシステムなどがそうである。カーネルのタイムゾーンの
値が間違っていると、vfat ファイルシステムはファイルのタイムスタンプの
設定・取得を間違ってしまう。
.PP
.B hwclock
.B \-\-hctosys
オプションでシステム・クロックをセットするとき、
カーネルのタイムゾーンも TZ や
.I /usr/share/zoneinfo
の値に設定する。
.PP
タイムゾーンの値は実際には 2 つの部分からなる。
1) tz_minuteswest フィールド: (DST でない)
ローカルタイムが UTC から何分遅れているかを表す。
2) tz_dsttime: 夏時間 (DST) の形式を表し、
現在地の現在時刻に影響する。
この 2 番目のフィールドは Linux では用いられず、常に 0 となる。
.RB ( settimeofday (2)
も参照のこと。)

.SH hwclock がハードウェア・クロックへアクセスする方法
.PP
.B hwclock
はハードウェア・クロック時刻の取得や設定に、いろいろな方法を用いる。
もっとも普通のやり方は、デバイススペシャルファイル /dev/rtc に対して 
I/O を行う方法である。
しかしこの方法が常に利用できるとは限らない。
そもそも rtc ドライバが Linux へ追加されたのは比較的最近のことである。
古いシステムには存在しない。
DEC Alpha で動作する rtc ドライバもあるが、
このドライバが使えない Alpha マシンもたくさんあるようである
(症状としては hwclock がハングする)。
.PP
古いシステムでは、ハードウェア・クロックへのアクセス方法は
システムのハードウェアに依存している。
.PP
ISA システムでは、
.B hwclock
は時計を構成していた「CMOS メモリ」のレジスタに直接アクセスすることができた
(ポート 0x70 と 0x71 に I/O を行う)。
これを行うには
.B hwclock
の実効ユーザー ID がスーパーユーザーでなければならない。
(Jensen Alpha の場合は、このような I/O 命令を
.B hwclock
に実行させることはできない。
したがってこの場合はデバイススペシャルファイル /dev/port が用いられる。
これは I/O サブシステムへの低レベルインターフェースの
ほとんどを与えるものである。)

これは時計にアクセスする方法としては実に情けない方法である。
ユーザー空間のプログラムでは、このように直接 I/O を叩いたり、
割り込みを禁止したりすることは通常想定されていないのだから。
hwclock でこれが使えるようにしてあるのは、
古い Linux カーネルで ISA マシンを使う場合には、
これが唯一の方法だからである。

.PP
m68k システムでは、
.B hwclock
はコンソールドライバとデバイススペシャルファイル
/dev/tty1 を通して時計にアクセスすることができる。
.PP
.B hwclock
は /dev/rtc を用いようとする。この機能を持たないカーネル向けに
コンパイルされていたり、/dev/rtc をオープンできない場合には、
.B hwclock
は他の方法を (可能であれば) 試そうとする。
ISA や Alpha のマシンでは、
.I /dev/rtc
を試さずに、最初から
.B hwclock
に CMOS レジスタを直接操作するように強制することもできる。
これには \-\-directisa オプションを指定する。

.SH 時刻合わせ機能
.PP
通常ハードウェア・クロックはそれほど正確なものではない。
しかし、その「不正確さ」は完全に予測できるものである。
すなわち、時計は一日あたり同じ時間だけ進む(あるいは遅れる)のである。
これを規則的なずれ (systematic drift) と呼ぶことにする。
.B hwclock
の時刻合わせの機能は、この規則的なずれに対応する補正量を求め、
適用するものである。
.PP
以下に動作原理を述べる。
.B hwclock
.I /etc/adjtime
というファイルを管理し、そこに履歴情報を保管する。
このファイルを adjtime ファイルと呼ぶ。
.PP
adjtime ファイルがない状態から話をはじめる。
.I hwclock \-\-set
コマンドを用いてハードウェア・クロックを現在の正しい値に合わせたとする。
このとき
.B hwclock
は adjtime ファイルを作成し、そこに現在の時刻を「最後に時計合わせ
(calibration) が行われた時刻」として記録する。
五日後に時計は 10 秒進んだとし、それを修正するために再び
.I hwclock \-\-set
が実行されたとする。
.B hwclock
は adjtime ファイルを更新し、
現在の時刻を最後に時計合わせが行われた時刻として記録、
同時に 2 秒/日という値を規則的なずれの値として記録する。
24 時間が経過したときに
.I hwclock \-\-adjust
コマンドを実行すると、
.B hwclock
は adjtime ファイルを参照し、放っておかれた時計は一日に 2 秒進むこと、
時計はちょうど一日だけ放置されていたことを読みとる。
そこで
.B hwclock
はハードウェア・クロックから 2 秒を差し引き、現在の時刻を時計の補正 
(adjustment) が行われた時刻として記録する。
さらに 24 時間が経過したときに
.I hwclock \-\-adjust
を実行すれば、
.B hwclock
はまた同じことを行う。
つまり 2 秒を差し引き、現在の時刻を adjtime ファイルに書き込む。
.PP
.RI ( \-\-set " または " \-\-systohc
を用いて)
時計を合わせるごとに、
.B hwclock
は規則的なずれを再計算する。
このときには、最後に時計合せが行われた時点からの経過、
途中で行われた補正で用いられていたずれの量、
最後に補正を行った時刻からの経過時間などが参照される。
.PP
.B hwclock 
が時計を設定するときには、常に小さなずれが生じる可能性がある。
これが 1 秒に満たない場合には、時計の補正量からは切り捨てられる。
後に再び補正を行う際に、このずれが蓄積して 1 秒を越えていれば、
その分はその時に補正される。
.PP
システムの起動時に (あるいはシステムの動作中に cron で定期的に)
.I hwclock \-\-hctosys
を行う時には、常にその前に
.I hwclock \-\-adjust
を行うと良いだろう。
.PP
adjtime ファイルは、当初は修正量 (adjustments) だけを目的と
していたためにこの名前がつけられたが、現在では他の情報も書き込まれており、
hwclock が一度起動され、次に起動されるまでにその情報を保持する。
.PP
adjtime は ASCII ファイルであり、フォーマットは以下の通り:
.PP
一行目は三つの数値からなり、それぞれ空白で区切られる:
1) 一日あたりに生じる時刻ずれを秒で表したもの (浮動小数点型 10 進):
2) 最後に時計合わせあるいは補正を行った時刻を 
1969 UTC からの経過秒数で表したもの (10 進整数):
3) ゼロ
.RB ( clock (8)
との互換性のためのもの)
.PP
二行目: 数値が一つ: 最後に時計を合わせた時刻を
1969 UTC からの経過秒数で表したもの。
時計合わせが一度もされていなかったり、以前の時計あわせに問題があった
(例えばその時計あわせ以降にハードウェア・クロックの
時刻が不正なことがわかったとか) 場合には 0 が入る。
これは 10 進の整数である。
.PP
三行目: "UTC" または "LOCAL"。ハードウェア・クロックが
協定世界時かローカルタイム化を示す。
この値は
.B hwclock
にコマンドラインを指定すればいつでも上書き可能である。
.PP
以前
.BR clock (8)
で使っていた adjtime ファイルは
.B hwclock
でもそのまま使うことができる。


.SH カーネルによるハードウェアクロックの自動合わせ

ハードウェアクロックを正しい値に同期させるのに、
別法が取れるようなシステムもある。
Linux カーネルには、11 分ごとにシステムクロックを
ハードウェアクロックにコピーするようなモードが存在する。
これは、何らかの洗練された方法 (ntp など) でシステムクロックを
同期できている時には、よいモードであろう。
(ntp とは、ネットワークのどこかにあるタイムサーバーか、システムに付属した
電波時計にシステム・クロックを同期させる手法である。RFC 1305 を見よ。)

このモード (「11 分モード」と呼ぶ) は、何かによって有効にされるまでは
オフになっている。
例えば ntp デーモンである xntpd は
このモードを有効にできるもののひとつである。
オフにするのも何かを実行すればよく、例えば
.I hwclock \-\-hctosys
を実行して、システム・クロックを古い方法で設定すれば、11 分モードはオフになる。

モードがオンかオフかを調べるには、
.I adjtimex \-\-print
コマンドを実行して "status" の値を見ればよい。
この数値の第 64 ビットが (2 進数表示で) 0 ならば、
11 分モードはオンになっている。
それ以外の場合はオフである。

システムが 11 分モードで動作している場合に
.I hwclock \-\-adjust
.I hwclock \-\-hctosys
を実行してはならない。システムをおかしくしてしまう。
.I hwclock \-\-hctosys
を起動時だけに用いるならかまわない。
これを用いれば、システム・クロックが外部の値に同期して
11 分モードが開始されるまで、システムクロックを妥当な値にできる。


.SH ISA ハードウェア・クロックの「世紀値 (Century value)」

その手の標準の中には、ISA マシンの CMOS 50 バイト目を、
現在の世紀の指標として定義しているものがある。
.B hwclock
は、このバイトの読み書きを行わない。
なぜならこのバイトをそのようには利用していないマシンが存在するし、
いずれにしてもこれは実際には必要ないからである。
年の世紀の部分を使えば、現在の世紀を特定するには充分である。

もしこの CMOS の世紀バイトの利用ルーチンを開発した (したい) 方がいたら、
.B hwclock
のメンテナに連絡してほしい。
オプションを付加することは望ましいことであるから。

このセクションが意味を持つのは、ハードウェア・クロックに
"direct ISA" によってアクセスしている場合だけであることに注意。


.SH 環境変数
.I TZ

.SH ファイル
.I /etc/adjtime
.I /usr/share/zoneinfo/
(古いシステムでは
.IR /usr/lib/zoneinfo )
.I /dev/rtc
.I /dev/port
.I /dev/tty1
.I /proc/cpuinfo

.SH 関連項目
.BR adjtimex (8),
.BR date (1),
.BR gettimeofday (2),
.BR settimeofday (2),
.BR crontab (1),
.BR tzset (3)

.SH 著者
.B hwclock
は 1996 年 9 月に Bryan Henderson (bryanh@giraffe-data.com) が
.I clock
をもとに書いた。
.I clock
は Charles Hendrick, Rob Hooft, Haraid Koenig によって書かれた。
完全な履歴と謝辞はソースに書かれている。