名 前
hwclock − ハ ー ド ウ ェ ア ・ ク ロ ッ ク (RTC) の 読 み 取 り と 設 定 を 行 う
書 式
hwclock
−r or hwclock −−show
hwclock −w or hwclock −−systohc
hwclock −s or hwclock −−hctosys
hwclock −a or hwclock −−adjust
hwclock −v or hwclock −−version
hwclock −−set −−date=newdate
hwclock −−getepoch
hwclock −−setepoch −−epoch=year
そ の 他 の オ プ
シ ョ ン :
[−u|−−utc] −−localtime −−noadjfile −−directisa −−test [−D|−−debug]
DEC Alpha 用 の 知 る 人 ぞ 知 る オ プ シ ョ ン :
[−A|−−arc] [−J|−−jensen] [−S|−−srm] [−F|−−funky-toy] す べ て の オ プ シ ョ ン は 他 と 区 別 が つ く 範 囲 に お い て 短 縮 す る こ と が で き る 。 ま た −h は ヘ ル プ メ ッ セ ー ジ を 表 示 す る 。
説 明
hwclock は ハ ー ド ウ ェ ア ・ ク ロ ッ ク に ア ク セ ス す る た め の ツ ー ル で あ る 。 現 在 の 時 刻 の 表 示 、 指 定 し た 時 刻 へ の ハ ー ド ウ ェ ア ・ ク ロ ッ ク の 設 定 、 ハ ー ド ウ ェ ア ・ ク ロ ッ ク を シ ス テ ム 時 刻 に 合 わ せ る (お よ び そ の 逆 )、 と い っ た 機 能 を 持 つ 。
hwclock を 定 期 的 に 実 行 し 、 ハ ー ド ウ ェ ア ・ ク ロ ッ ク の 時 間 を 増 減 し て 、 時 計 の 規 則 的 な ず れ (systematic drift) を 補 償 す る こ と も で き る (systematic drift と は 、 ク ロ ッ ク が 放 っ て お か れ た と き 、 経 過 時 間 に 比 例 し て 時 刻 が ず れ る 現 象 の こ と )。
オ プ シ ョ ン
以 下 の オ プ シ ョ ン は hwclock に ど の 機 能 を 実 行 す る か を 伝 え る も の で 、 必 ず 一 つ だ け を 指 定 す る 。
−−show ハ ー ド ウ ェ ア ・ ク ロ ッ ク を 読 ん で 時 刻 を 標 準 出 力 に 表 示 す る 。 こ こ で 表 示 さ れ る 時 刻 は 常 に ロ ー カ ル ・ タ イ ム で あ る 。 ハ ー ド ウ ェ ア ・ ク ロ ッ ク を 協 定 世 界 時 に し て い て も 表 示 は ロ ー カ ル ・ タ イ ム で あ る 。 |
−−utc オ プ シ ョ ン の 部 分 を 参 照 す る こ と 。
−−set ハ ー ド ウ ェ ア ・ ク ロ ッ ク を |
−−date オ プ シ ョ ン に よ っ て 指 定 し た 時 刻 に |
設 定 す る 。
−−hctosys
ハ ー ド ウ ェ ア
・ ク ロ ッ ク で
シ ス テ ム ・ ク
ロ ッ ク を 合 わ
せ る 。 同 時 に
カ ー ネ ル が 持
つ タ イ ム ゾ ー
ン の 値 も ロ ー
カ ル の タ イ ム
ゾ ー ン に セ ッ
ト す る 。 こ の
と き TZ 環 境 変 数
や /usr/share/zoneinfo の 内
容 を tzset(3) と 同 じ
よ う に 解 釈 し
て 参 照 す る 。
カ ー ネ ル の タ
イ ム ゾ ー ン の
obsolete な フ ィ ー ル
ド で あ る tz_dsttime は
DST_NONE に 設 定 さ れ
る 。 (こ の フ ィ
ー ル ド が か つ
て 意 味 し て い
た 内 容 に 関 し
て は settimeofday(2) を 参
照 の こ と 。 ) こ
の オ プ シ ョ ン
は シ ス テ ム の
起 動 ス ク リ プ
ト の 一 部 で 用
い る と よ い 。
−−systohc 現 在 の
シ ス テ ム ・ ク
ロ ッ ク で ハ ー
ド ウ ェ ア ・ ク
ロ ッ ク を 合 わ
せ る 。
−−adjust 最 後 に ハ
ー ド ウ ェ ア ・
ク ロ ッ ク を 合
わ せ た 時 点 か
ら の 経 過 時 間
に 対 し て 生 じ
る 、 時 計 の 規
則 的 な ず れ を
補 償 す る た め
に 、 一 定 の 時
間 を ハ ー ド ウ
ェ ア ・ ク ロ ッ
ク の 時 刻 か ら
増 減 す る 。 詳
細 は 以 下 の 議
論 を 参 照 の こ
と 。
−−getepoch 標 準 出
力 に 、 カ ー ネ
ル が 保 持 し て
い る ハ ー ド ウ
ェ ア ・ ク ロ ッ
ク の 紀 元 年 (epoch value)
を 表 示 す る 。
こ れ は 西 暦 の
何 年 が 、 ハ ー
ド ウ ェ ア ・ ク
ロ ッ ク の 0 年 と
し て 参 照 さ れ
る か を 示 す 数
値 で あ る 。 例
え ば 、 ハ ー ド
ウ ェ ア ク ロ ッ
ク の 年 カ ウ ン
タ に 1952 年 以 降 の
経 過 年 数 を 用
い て い る 場 合
に は 、 カ ー ネ
ル で の ハ ー ド
ウ ェ ア ・ ク ロ
ッ ク 紀 元 年 は 1952
で な け れ ば な
ら な い 。 こ の
紀 元 年 の 値 は
、 hwclock が ハ ー ド
ウ ェ ア ・ ク ロ
ッ ク を 読 み 書
き す る と き 常
に 用 い ら れ る
。
−−setepoch カ ー ネ
ル の ハ ー ド ウ
ェ ア ・ ク ロ ッ
ク 紀 元 年 の 値
を −−epoch オ プ
シ ョ ン で 指 定
し た 値 に 設 定
す る 。 詳 細 は
−−getepoch オ プ シ
ョ ン の 説 明 を
見 よ 。
−−version
hwclock の バ ー ジ ョ ン を 標 準 出 力 に 表 示 す る 。
−−date=date_string
−−set オ プ シ ョ ン を 指 定 し た 場 合 は 、 こ の オ プ シ ョ ン も 指 定 し な け れ ば な ら な い 。 −−set オ プ シ ョ ン が 指 定 さ れ て い な け れ ば 、 こ の オ プ シ ョ ン は 無 視 さ れ る 。 ハ ー ド ウ ェ ア ・ ク ロ ッ ク を 合 わ せ る 時 刻 を 指 定 す る 。 こ の オ プ シ ョ ン に 与 え る 値 は date(1) プ ロ グ ラ ム の 引 数 と 同 じ で あ る 。 例 え ば 以 下 の よ う に す る 。
hwclock −−set −−date="9/22/96 16:45:05" 引 数 は ロ ー カ ル タ イ ム で 与 え る 。 ハ ー ド ウ ェ ア ・ ク ロ ッ ク を 協 定 世 界 時 に し て い る 場 合 で も 、 で あ る 。 −−utc オ プ シ ョ ン の 部 分 を 見 よ 。
−−setepoch オ プ シ ョ ン を 指 定 し た 場 合 は 次 の オ プ シ ョ ン も 必 要 で あ る 。
−−epoch=year ハ ー ド ウ ェ ア ・ ク ロ ッ ク の 紀 元 年 を 指 定 す る 。 す な わ ち 西 暦 年 の い つ が 、 ハ ー ド ウ ェ ア ・ ク ロ ッ ク の 年 カ ウ ン タ の 0 に 対 応 す る か を 指 定 す る 。 こ の オ プ シ ョ ン は 、 --setepoch オ プ シ ョ ン と と も に 使 っ た 場 合 、 カ ー ネ ル の 概 念 で あ る ハ ー ド ウ ェ ア ・ ク ロ ッ ク の 紀 元 年 を 設 定 す る 。 --setepoch オ プ シ ョ ン と と も に 使 わ な い 場 合 は 、 直 接 ISA ア ク セ ス に 用 い ら れ る 紀 元 年 を 指 定 す る 。 例 え ば 、 Digital Unix マ シ ン で は 以 下 の よ う に す る 。
hwclock −−setepoch −−epoch=1952 次 の オ プ シ ョ ン は ほ と ん ど の 機 能 と 同 時 に 用 い る こ と が で き る 。
−−utc |
−−localtime ハ ー ド ウ ェ ア ・ ク ロ ッ ク を 協 定 世 界 時 (Universal Coordinated Time: UTC) と ロ ー カ ル タ イ ム の ど ち ら に す る か (し て い る か ) を 指 定 す る 。 UTC に す る か ロ ー カ ル タ イ ム に す る か は ユ ー ザ の 選 択 し だ い だ が 、 時 計 の 内 部 に は ど ち ら を 選 択 し た か を 記 録 す る 場 所 は な い 。 し た が っ て 、 ユ ー ザ ー は こ の オ プ シ ョ ン で 自 分 の 選 択 を hwclock に 伝 え な け れ ば な ら な い 。 こ れ ら の 指 定 を 間 違 っ た ほ う に し た り (あ る い は デ フ ォ ル ト を 勘 違 い し て 両 方 と も 指 定 し な か っ た り ) す る と 、 ハ ー ド ウ ェ ア ・ ク ロ ッ ク の 設 定 や ク ロ ッ ク へ の 問 い 合 わ せ の 結 果 は め ち ゃ め ち ゃ に な っ て し ま う だ ろ う 。
−−utc も −−localtime も 指 定 し な か っ た 場 合 の デ フ ォ ル ト は 、 最 後 に hwclock を 使 っ て 時 計 を 合 わ せ た と き (つ ま り −−set, −−systohc, −−adjust オ プ シ ョ ン を 指 定 し て の 実 行 が 成 功 し た と き ) に 指 定 し て い た 方 に な る 。 こ の と き の 選 択 は adjtime フ ァ イ ル に 記 録 さ れ て い る 。 adjtime フ ァ イ ル が な か っ た と き の デ フ ォ ル ト は ロ ー カ ル タ イ ム に な る 。
−−noadjfile
/etc/adjtime に よ っ て 提 供 さ れ る 機 能 を 無 効 に す る 。 こ の オ プ シ ョ ン を 使 う と 、 hwclock は /etc/adjtime の 読 み 込 み も 書 き 込 み も し な い 。 こ の オ プ シ ョ ン を 使 う と き は 、 −−utc ま た は −−localtime を 指 定 し な け れ ば な ら な い 。
−−directisa こ の オ プ シ ョ ン は 、 ISA マ シ ン ま た は (hwclock か ら 充 分 ISA マ シ ン に 見 え る 程 度 ISA の 仕 様 を 実 装 し た ) Alpha マ シ ン で の み 意 味 を 持 つ 。 他 の マ シ ン で は 効 果 が な い 。 こ の オ プ シ ョ ン は hwclock に 指 令 し て 、 ハ ー ド ウ ェ ア ・ ク ロ ッ ク へ の ア ク セ ス に 直 接 I/O 命 令 を 用 い る よ う に さ せ る 。 こ の オ プ シ ョ ン を 指 定 し な い と 、 hwclock は /dev/rtc デ バ イ ス を 用 い よ う と す る (/dev/rtc が rtc デ バ イ ス ド ラ イ バ で 駆 動 さ れ て い る こ と を 仮 定 す る )。 デ バ イ ス を 読 み 込 み オ ー プ ン で き な い 場 合 は 、 い ず れ に せ よ 直 接 I/O 命 令 を 用 い る 。
rtc デ バ イ ス ド ラ イ バ は Linux リ リ ー ス 2 か ら 現 れ た 。
−−badyear ハ ー ド ウ ェ ア ・ ク ロ ッ ク が 、 1994-1999 年 の 外 側 の 年 を 保 持 で き な い こ と を 示 す 。 あ る 種 の BIOS に は 問 題 が あ り (4/26/94 か ら 5/31/95 の 間 に 生 産 さ れ た ほ と ん ど の Award BIOS が そ う で あ る )、 1999 年 以 降 の 年 を 扱 う こ と が で き な い の で あ る 。 世 紀 内 の 年 の 部 分 を 94 未 満 (場 合 に よ っ て は 95 未 満 ) に 設 定 し よ う と す る と 、 実 際 に は 94 (ま た は 95) が 設 定 さ れ て し ま う 。 こ の よ う な マ シ ン で は 、 hwclock は 年 を 1999 以 降 に 設 定 で き ず 、 ま た ク ロ ッ ク の 値 を 通 常 の よ う に 正 し い 値 と し て は 用 い る こ と が で き な い 。 本 当 は BIOS を 更 新 す る の が 絶 対 に 良 い が 、 そ う で き な い 場 合 に こ の 問 題 を 補 償 す る に は 、 こ れ ら の マ シ ン を 用 い る と き 、 常 に −−badyear オ プ シ ョ ン を 指 定 す る こ と 。 hwclock は 、 自 分 が 頭 の イ カ れ た ク ロ ッ ク を 扱 っ て い る こ と を 知 る と 、 ハ ー ド ウ ェ ア ・ ク ロ ッ ク の 年 の 部 分 を 無 視 し 、 adjtime フ ァ イ ル の 「 最 終 時 計 合 わ せ 日 付 」 か ら 現 在 の 年 を 推 定 し よ う と す る 。 こ の 動 作 を 行 わ せ た い 場 合 に は 、 hwclock −−set ま た は hwclock −−systohc を 少 な く と も 年 に 一 回 は 実 行 す る ほ う が 良 い だ ろ う !
hwclock は 、 ハ ー ド ウ ェ ア ・ ク ロ ッ ク の 読 み 込 み 時 に は 年 の 値 を 無 視 す る が 、 設 定 時 に は 年 も 設 定 す る 。 こ れ は 1995, 1996, 1997, 1998 の い ず れ か と な り 、 閏 年 の サ イ ク ル に 合 う 年 が 選 択 さ れ る 。 こ の よ う に し て 、 ハ ー ド ウ ェ ア ・ ク ロ ッ ク に 閏 日 を 挿 入 さ せ る の で あ る 。 繰 り 返 す が 、 ハ ー ド ウ ェ ア ・ ク ロ ッ ク を 設 定 せ ず に 一 年 以 上 動 作 さ せ つ づ け る と 、 こ の 機 能 が 動 作 せ ず 、 一 日 を 失 う こ と に な る 。 ハ ー ド ウ ェ ア ・ ク ロ ッ ク が 1994 ま た は 1995 に な っ て い る と 、 hwclock は −−badyear が 必 要 で は な い か 、 と い う 警 告 を 発 す る 。
−−srm こ の オ プ シ ョ ン は |
−−epoch=1900 と 等 し く 、 SRM コ ン ソ ー ル の Alpha |
で 最 も 一 般 的 な 紀 元 年 を 指 定 す る の に 使 わ れ る 。
−−arc こ の オ プ シ ョ ン は |
−−epoch=1980 と 等 し く 、 ARC コ ン ソ ー ル の Alpha |
で 最 も 一 般 的 な 紀 元 年 を 指 定 す る の に 使 わ れ る (た だ し Ruffians で は 1900 を 紀 元 年 に し て い る )。
−−jensen
−−funky−toy こ れ ら
2 つ の オ プ シ ョ
ン は 、 使 っ て
い る Alpha マ シ ン が
ど の よ う な 種
類 の も の で あ
る か 指 定 す る
。 Alpha 以 外 で は 無
効 だ し 、 Alpha で も
実 際 に は 指 定
し な く て も 良
い だ ろ う 。 hwclock
は 自 分 が 動 作
し て い る マ シ
ン の 種 類 を 自
分 で 決 定 で き
る は ず で あ る
(最 低 で も /proc が
マ ウ ン ト さ れ
て い れ ば )。
(hwclock が 正 し く 動
作 し な い こ と
が わ か っ た 場
合 に は 、 メ ン
テ ナ に 連 絡 し
て 、 あ な た の
シ ス テ ム を 自
動 検 知 で き る
よ う に プ ロ グ
ラ ム を 改 良 で
き な い か 相 談
し て み て ほ し
い 。 ’hwclock --debug’ と
’cat /proc/cpuinfo’ の 出 力
が 役 立 つ か も
し れ な い 。 )
−−jensen は 、 Jensen モ デ ル を 動 作 さ せ て い る こ と を 意 味 す る 。
−−funky−toy は 、 そ の マ シ ン で は 時 間 の 遷 移 の 検 知 に ハ ー ド ウ ェ ア ・ ク ロ ッ ク の UIP ビ ッ ト で は な く UF ビ ッ ト が 使 わ れ て い る こ と を 意 味 す る 。 オ プ シ ョ ン 名 の "Toy" は 、 マ シ ン の "Time Of Year" 機 能 か ら と っ た も の で あ る 。
−−test 実 際 の ハ ー ド ウ ェ ア ・ ク ロ ッ ク の 更 新 |
(お よ び そ れ に 類 す る ) 作 業 を の |
ぞ き 、 す べ て の 動 作 を 行 う 。 こ の オ プ シ ョ ン は −−debug と 組 み 合 わ せ る と hwclock の 動 作 を 理 解 す る 上 で 有 用 で あ ろ う 。
−−debug
hwclock が 内 部 で 行 っ て い る 動 作 に 関 し て 大 量 の 情 報 を 表 示 す る 。 一 部 の 機 能 は 複 雑 で あ る が 、 こ の 出 力 は プ ロ グ ラ ム の 動 作 を 理 解 す る 上 で 助 け に な る だ ろ う 。
注 意
Linux シ ス テ ム に お け る 時 計
Linux シ ス テ ム に は 主 要 な 時 計 が 2 つ 存 在 す る 。 ハ ー ド ウ ェ ア ・ ク ロ ッ ク : こ れ は CPU 内 部 で 動 作 し て い る す べ て の コ ン ト ロ ー ル プ ロ グ ラ ム か ら 独 立 し て お り 、 マ シ ン の 電 源 が OFF の と き に も 動 作 し て い る 。
ISA シ ス テ ム で は 、 こ の ク ロ ッ ク は ISA 規 格 の 一 部 と し て 定 義 さ れ て い る 。 コ ン ト ロ ー ル プ ロ グ ラ ム は こ の 時 計 に 対 し て 1 秒 単 位 で 読 み 書 き で き る が 、 秒 針 の 変 化 を 検 出 す る こ と も で き る の で 、 実 際 に は 仮 想 的 に 無 限 大 の 精 度 を 持 っ て い る こ と に な る 。 こ の 時 計 は 一 般 に ハ ー ド ウ ェ ア ・ ク ロ ッ ク 、 リ ア ル タ イ ム ・ ク ロ ッ ク 、 RTC、 BIOS ク ロ ッ ク 、 CMOS ク ロ ッ ク な ど と 呼 ば れ る 。 hwclock で は 「 ハ ー ド ウ ェ ア ・ ク ロ ッ ク (原 文 で は Hardware Clock)」 を 用 い る 。 他 の 名 前 は 不 正 確 だ っ た り 誤 解 の も と に な る か ら で あ る 。 シ ス テ ム ・ ク ロ ッ ク : こ れ は Linux カ ー ネ ル の 内 部 に 存 在 し て い る 時 計 で 、 タ イ マ 割 り 込 み に よ っ て 駆 動 さ れ て い る (ISA シ ス テ ム で は 、 タ イ マ 割 り 込 み は ISA 標 準 の 一 部 で あ る )。 す な わ ち Linux が 起 動 し て い る 間 し か 動 作 し な い 。 シ ス テ ム 時 刻 は UTC 1970/01/01 00:00:00 か ら の 経 過 秒 数 で あ る (よ り 簡 単 に 言 え ば 1969 年 終 了 後 の 経 過 秒 数 で あ る )。 し か し シ ス テ ム 時 刻 は 整 数 で は な く 、 仮 想 的 に 無 限 大 の 精 度 を 持 っ て い る 。
Linux で は シ ス テ ム ・ ク ロ ッ ク が す べ て の 基 準 と な る 時 計 で あ る 。 ハ ー ド ウ ェ ア ・ ク ロ ッ ク の 基 本 的 な 役 割 は 、 シ ス テ ム が 動 い て い な い 間 に も 時 計 を 動 か し つ づ け る こ と で あ る 。 Linux シ ス テ ム は 起 動 時 に 一 度 だ け ハ ー ド ウ ェ ア ・ ク ロ ッ ク を 参 照 し 、 シ ス テ ム ・ ク ロ ッ ク を 設 定 す る 。 そ の 後 は ハ ー ド ウ ェ ア ・ ク ロ ッ ク は 用 い な い 。 ISA シ ス テ ム の 設 計 対 象 で あ っ た DOS に お い て は 、 ハ ー ド ウ ェ ア ・ ク ロ ッ ク が た だ 一 つ の 実 時 間 時 計 で あ る こ と に 注 意 す る こ と 。 シ ス テ ム ・ ク ロ ッ ク に は 不 連 続 が 存 在 し て は な ら な い 。 こ れ は シ ス テ ム が 走 っ て い る 間 に date(1) プ ロ グ ラ ム を 実 行 し て 時 計 を 合 わ せ る よ う な 場 合 で も 同 様 で あ る 。 一 方 ハ ー ド ウ ェ ア ・ ク ロ ッ ク に は 、 シ ス テ ム の 実 行 中 に で も 何 を 行 っ て も よ い 。 次 回 Linux が 起 動 し た と き に 、 ハ ー ド ウ ェ ア ・ ク ロ ッ ク か ら こ の 調 整 さ れ た 時 間 が 使 用 さ れ る 。 シ ス テ ム が 走 っ て い る 間 に シ ス テ ム ・ ク ロ ッ ク を ス ム ー ス に 修 正 す る に は adjtimex(8) を 用 い る こ と も で き る 。
Linux カ ー ネ ル は 、 シ ス テ ム の ロ ー カ ル な タ イ ム ゾ ー ン と い う 概 念 を 持 っ て い る 。 し か し 注 意 し て ほ し い −− 「 カ ー ネ ル が 自 分 を ど の タ イ ム ゾ ー ン に い る と 思 っ て い る か 」 な ど 、 誰 も 気 に し て い な い の で あ る 。 代 わ り に 、 タ イ ム ゾ ー ン に 関 る プ ロ グ ラ ム (お そ ら く ロ ー カ ル な 時 間 を 表 示 し よ う と し て い る も の ) は 、 ほ ぼ 間 違 い な く 従 来 用 い ら れ て き た 方 法 で タ イ ム ゾ ー ン を 決 定 す る 。 つ ま り TZ 環 境 変 数 や /usr/share/zoneinfo デ ィ レ ク ト リ を 、 tzset(3) で 説 明 さ れ て い る よ う な や り 方 で 参 照 す る の で あ る 。 し か し カ ー ネ ル の タ イ ム ゾ ー ン の 値 を 見 る プ ロ グ ラ ム も 存 在 す る し 、 カ ー ネ ル の 周 辺 部 分 (フ ァ イ ル シ ス テ ム な ど ) も こ ち ら を 参 照 す る 。 vfat フ ァ イ ル シ ス テ ム な ど が そ う で あ る 。 カ ー ネ ル の タ イ ム ゾ ー ン の 値 が 間 違 っ て い る と 、 vfat フ ァ イ ル シ ス テ ム は フ ァ イ ル の タ イ ム ス タ ン プ の 設 定 ・ 取 得 を 間 違 っ て し ま う 。
hwclock は −−hctosys オ プ シ ョ ン で シ ス テ ム ・ ク ロ ッ ク を セ ッ ト す る と き 、 カ ー ネ ル の タ イ ム ゾ ー ン も TZ や /usr/share/zoneinfo の 値 に 設 定 す る 。 タ イ ム ゾ ー ン の 値 は 実 際 に は 2 つ の 部 分 か ら な る 。 1) tz_minuteswest フ ィ ー ル ド : (DST で な い ) ロ ー カ ル タ イ ム が UTC か ら 何 分 遅 れ て い る か を 表 す 。 2) tz_dsttime: 夏 時 間 (DST) の 形 式 を 表 し 、 現 在 地 の 現 在 時 刻 に 影 響 す る 。 こ の 2 番 目 の フ ィ ー ル ド は Linux で は 用 い ら れ ず 、 常 に 0 と な る 。 (settimeofday(2) も 参 照 の こ と 。 )
hwclock が ハ ー ド ウ ェ ア ・ ク ロ ッ ク へ ア ク セ ス す る 方 法
hwclock は ハ ー ド ウ ェ ア ・ ク ロ ッ ク 時 刻 の 取 得 や 設 定 に 、 い ろ い ろ な 方 法 を 用 い る 。 も っ と も 普 通 の や り 方 は 、 デ バ イ ス ス ペ シ ャ ル フ ァ イ ル /dev/rtc に 対 し て I/O を 行 う 方 法 で あ る 。 し か し こ の 方 法 が 常 に 利 用 で き る と は 限 ら な い 。 そ も そ も rtc ド ラ イ バ が Linux へ 追 加 さ れ た の は 比 較 的 最 近 の こ と で あ る 。 古 い シ ス テ ム に は 存 在 し な い 。 DEC Alpha で 動 作 す る rtc ド ラ イ バ も あ る が 、 こ の ド ラ イ バ が 使 え な い Alpha マ シ ン も た く さ ん あ る よ う で あ る (症 状 と し て は hwclock が ハ ン グ す る )。 古 い シ ス テ ム で は 、 ハ ー ド ウ ェ ア ・ ク ロ ッ ク へ の ア ク セ ス 方 法 は シ ス テ ム の ハ ー ド ウ ェ ア に 依 存 し て い る 。
ISA シ ス テ ム で は 、 hwclock は 時 計 を 構 成 し て い た 「 CMOS メ モ リ 」 の レ ジ ス タ に 直 接 ア ク セ ス す る こ と が で き た (ポ ー ト 0x70 と 0x71 に I/O を 行 う )。 こ れ を 行 う に は hwclock の 実 効 ユ ー ザ ー ID が ス ー パ ー ユ ー ザ ー で な け れ ば な ら な い 。 (Jensen Alpha の 場 合 は 、 こ の よ う な I/O 命 令 を hwclock に 実 行 さ せ る こ と は で き な い 。 し た が っ て こ の 場 合 は デ バ イ ス ス ペ シ ャ ル フ ァ イ ル /dev/port が 用 い ら れ る 。 こ れ は I/O サ ブ シ ス テ ム へ の 低 レ ベ ル イ ン タ ー フ ェ ー ス の ほ と ん ど を 与 え る も の で あ る 。 ) こ れ は 時 計 に ア ク セ ス す る 方 法 と し て は 実 に 情 け な い 方 法 で あ る 。 ユ ー ザ ー 空 間 の プ ロ グ ラ ム で は 、 こ の よ う に 直 接 I/O を 叩 い た り 、 割 り 込 み を 禁 止 し た り す る こ と は 通 常 想 定 さ れ て い な い の だ か ら 。 hwclock で こ れ が 使 え る よ う に し て あ る の は 、 古 い Linux カ ー ネ ル で ISA マ シ ン を 使 う 場 合 に は 、 こ れ が 唯 一 の 方 法 だ か ら で あ る 。
m68k シ ス テ ム で は 、 hwclock は コ ン ソ ー ル ド ラ イ バ と デ バ イ ス ス ペ シ ャ ル フ ァ イ ル /dev/tty1 を 通 し て 時 計 に ア ク セ ス す る こ と が で き る 。
hwclock は /dev/rtc を 用 い よ う と す る 。 こ の 機 能 を 持 た な い カ ー ネ ル 向 け に コ ン パ イ ル さ れ て い た り 、 /dev/rtc を オ ー プ ン で き な い 場 合 に は 、 hwclock は 他 の 方 法 を (可 能 で あ れ ば ) 試 そ う と す る 。 ISA や Alpha の マ シ ン で は 、 /dev/rtc を 試 さ ず に 、 最 初 か ら hwclock に CMOS レ ジ ス タ を 直 接 操 作 す る よ う に 強 制 す る こ と も で き る 。 こ れ に は −−directisa オ プ シ ョ ン を 指 定 す る 。
時 刻 合 わ せ 機 能
通 常 ハ ー ド ウ ェ ア ・ ク ロ ッ ク は そ れ ほ ど 正 確 な も の で は な い 。 し か し 、 そ の 「 不 正 確 さ 」 は 完 全 に 予 測 で き る も の で あ る 。 す な わ ち 、 時 計 は 一 日 あ た り 同 じ 時 間 だ け 進 む ( あ る い は 遅 れ る ) の で あ る 。 こ れ を 規 則 的 な ず れ (systematic drift) と 呼 ぶ こ と に す る 。 hwclock の 時 刻 合 わ せ の 機 能 は 、 こ の 規 則 的 な ず れ に 対 応 す る 補 正 量 を 求 め 、 適 用 す る も の で あ る 。 以 下 に 動 作 原 理 を 述 べ る 。 hwclock は /etc/adjtime と い う フ ァ イ ル を 管 理 し 、 そ こ に 履 歴 情 報 を 保 管 す る 。 こ の フ ァ イ ル を adjtime フ ァ イ ル と 呼 ぶ 。
adjtime フ ァ イ ル が な い 状 態 か ら 話 を は じ め る 。 hwclock −−set コ マ ン ド を 用 い て ハ ー ド ウ ェ ア ・ ク ロ ッ ク を 現 在 の 正 し い 値 に 合 わ せ た と す る 。 こ の と き hwclock は adjtime フ ァ イ ル を 作 成 し 、 そ こ に 現 在 の 時 刻 を 「 最 後 に 時 計 合 わ せ (calibration) が 行 わ れ た 時 刻 」 と し て 記 録 す る 。 五 日 後 に 時 計 は 10 秒 進 ん だ と し 、 そ れ を 修 正 す る た め に 再 び hwclock −−set が 実 行 さ れ た と す る 。 hwclock は adjtime フ ァ イ ル を 更 新 し 、 現 在 の 時 刻 を 最 後 に 時 計 合 わ せ が 行 わ れ た 時 刻 と し て 記 録 、 同 時 に 2 秒 /日 と い う 値 を 規 則 的 な ず れ の 値 と し て 記 録 す る 。 24 時 間 が 経 過 し た と き に hwclock −−adjust コ マ ン ド を 実 行 す る と 、 hwclock は adjtime フ ァ イ ル を 参 照 し 、 放 っ て お か れ た 時 計 は 一 日 に 2 秒 進 む こ と 、 時 計 は ち ょ う ど 一 日 だ け 放 置 さ れ て い た こ と を 読 み と る 。 そ こ で hwclock は ハ ー ド ウ ェ ア ・ ク ロ ッ ク か ら 2 秒 を 差 し 引 き 、 現 在 の 時 刻 を 時 計 の 補 正 (adjustment) が 行 わ れ た 時 刻 と し て 記 録 す る 。 さ ら に 24 時 間 が 経 過 し た と き に hwclock −−adjust を 実 行 す れ ば 、 hwclock は ま た 同 じ こ と を 行 う 。 つ ま り 2 秒 を 差 し 引 き 、 現 在 の 時 刻 を adjtime フ ァ イ ル に 書 き 込 む 。
(−−set ま た は −−systohc を 用 い て ) 時 計 を 合 わ せ る ご と に 、 hwclock は 規 則 的 な ず れ を 再 計 算 す る 。 こ の と き に は 、 最 後 に 時 計 合 せ が 行 わ れ た 時 点 か ら の 経 過 、 途 中 で 行 わ れ た 補 正 で 用 い ら れ て い た ず れ の 量 、 最 後 に 補 正 を 行 っ た 時 刻 か ら の 経 過 時 間 な ど が 参 照 さ れ る 。
hwclock が 時 計 を 設 定 す る と き に は 、 常 に 小 さ な ず れ が 生 じ る 可 能 性 が あ る 。 こ れ が 1 秒 に 満 た な い 場 合 に は 、 時 計 の 補 正 量 か ら は 切 り 捨 て ら れ る 。 後 に 再 び 補 正 を 行 う 際 に 、 こ の ず れ が 蓄 積 し て 1 秒 を 越 え て い れ ば 、 そ の 分 は そ の 時 に 補 正 さ れ る 。 シ ス テ ム の 起 動 時 に (あ る い は シ ス テ ム の 動 作 中 に cron で 定 期 的 に ) hwclock −−hctosys を 行 う 時 に は 、 常 に そ の 前 に hwclock −−adjust を 行 う と 良 い だ ろ う 。
adjtime フ ァ イ ル は 、 当 初 は 修 正 量 (adjustments) だ け を 目 的 と し て い た た め に こ の 名 前 が つ け ら れ た が 、 現 在 で は 他 の 情 報 も 書 き 込 ま れ て お り 、 hwclock が 一 度 起 動 さ れ 、 次 に 起 動 さ れ る ま で に そ の 情 報 を 保 持 す る 。
adjtime は ASCII フ ァ イ ル で あ り 、 フ ォ ー マ ッ ト は 以 下 の 通 り : 一 行 目 は 三 つ の 数 値 か ら な り 、 そ れ ぞ れ 空 白 で 区 切 ら れ る : 1) 一 日 あ た り に 生 じ る 時 刻 ず れ を 秒 で 表 し た も の (浮 動 小 数 点 型 10 進 ): 2) 最 後 に 時 計 合 わ せ あ る い は 補 正 を 行 っ た 時 刻 を 1969 UTC か ら の 経 過 秒 数 で 表 し た も の (10 進 整 数 ): 3) ゼ ロ (clock(8) と の 互 換 性 の た め の も の ) 二 行 目 : 数 値 が 一 つ : 最 後 に 時 計 を 合 わ せ た 時 刻 を 1969 UTC か ら の 経 過 秒 数 で 表 し た も の 。 時 計 合 わ せ が 一 度 も さ れ て い な か っ た り 、 以 前 の 時 計 あ わ せ に 問 題 が あ っ た (例 え ば そ の 時 計 あ わ せ 以 降 に ハ ー ド ウ ェ ア ・ ク ロ ッ ク の 時 刻 が 不 正 な こ と が わ か っ た と か ) 場 合 に は 0 が 入 る 。 こ れ は 10 進 の 整 数 で あ る 。 三 行 目 : "UTC" ま た は "LOCAL"。 ハ ー ド ウ ェ ア ・ ク ロ ッ ク が 協 定 世 界 時 か ロ ー カ ル タ イ ム 化 を 示 す 。 こ の 値 は hwclock に コ マ ン ド ラ イ ン を 指 定 す れ ば い つ で も 上 書 き 可 能 で あ る 。 以 前 clock(8) で 使 っ て い た adjtime フ ァ イ ル は hwclock で も そ の ま ま 使 う こ と が で き る 。
カ ー ネ ル に よ る ハ ー ド ウ ェ ア ク ロ ッ ク の 自 動 合 わ せ
ハ ー ド ウ ェ ア ク ロ ッ ク を 正 し い 値 に 同 期 さ せ る の に 、 別 法 が 取 れ る よ う な シ ス テ ム も あ る 。 Linux カ ー ネ ル に は 、 11 分 ご と に シ ス テ ム ク ロ ッ ク を ハ ー ド ウ ェ ア ク ロ ッ ク に コ ピ ー す る よ う な モ ー ド が 存 在 す る 。 こ れ は 、 何 ら か の 洗 練 さ れ た 方 法 (ntp な ど ) で シ ス テ ム ク ロ ッ ク を 同 期 で き て い る 時 に は 、 よ い モ ー ド で あ ろ う 。 (ntp と は 、 ネ ッ ト ワ ー ク の ど こ か に あ る タ イ ム サ ー バ ー か 、 シ ス テ ム に 付 属 し た 電 波 時 計 に シ ス テ ム ・ ク ロ ッ ク を 同 期 さ せ る 手 法 で あ る 。 RFC 1305 を 見 よ 。 ) こ の モ ー ド (「 11 分 モ ー ド 」 と 呼 ぶ ) は 、 何 か に よ っ て 有 効 に さ れ る ま で は オ フ に な っ て い る 。 例 え ば ntp デ ー モ ン で あ る xntpd は こ の モ ー ド を 有 効 に で き る も の の ひ と つ で あ る 。 オ フ に す る の も 何 か を 実 行 す れ ば よ く 、 例 え ば hwclock −−hctosys を 実 行 し て 、 シ ス テ ム ・ ク ロ ッ ク を 古 い 方 法 で 設 定 す れ ば 、 11 分 モ ー ド は オ フ に な る 。 モ ー ド が オ ン か オ フ か を 調 べ る に は 、 adjtimex −−print コ マ ン ド を 実 行 し て "status" の 値 を 見 れ ば よ い 。 こ の 数 値 の 第 64 ビ ッ ト が (2 進 数 表 示 で ) 0 な ら ば 、 11 分 モ ー ド は オ ン に な っ て い る 。 そ れ 以 外 の 場 合 は オ フ で あ る 。 シ ス テ ム が 11 分 モ ー ド で 動 作 し て い る 場 合 に hwclock −−adjust や hwclock −−hctosys を 実 行 し て は な ら な い 。 シ ス テ ム を お か し く し て し ま う 。 hwclock −−hctosys を 起 動 時 だ け に 用 い る な ら か ま わ な い 。 こ れ を 用 い れ ば 、 シ ス テ ム ・ ク ロ ッ ク が 外 部 の 値 に 同 期 し て 11 分 モ ー ド が 開 始 さ れ る ま で 、 シ ス テ ム ク ロ ッ ク を 妥 当 な 値 に で き る 。
ISA ハ ー ド ウ ェ ア ・ ク ロ ッ ク の 「 世 紀 値 (Century value)」
そ の 手 の 標 準 の 中 に は 、 ISA マ シ ン の CMOS 50 バ イ ト 目 を 、 現 在 の 世 紀 の 指 標 と し て 定 義 し て い る も の が あ る 。 hwclock は 、 こ の バ イ ト の 読 み 書 き を 行 わ な い 。 な ぜ な ら こ の バ イ ト を そ の よ う に は 利 用 し て い な い マ シ ン が 存 在 す る し 、 い ず れ に し て も こ れ は 実 際 に は 必 要 な い か ら で あ る 。 年 の 世 紀 の 部 分 を 使 え ば 、 現 在 の 世 紀 を 特 定 す る に は 充 分 で あ る 。 も し こ の CMOS の 世 紀 バ イ ト の 利 用 ル ー チ ン を 開 発 し た (し た い ) 方 が い た ら 、 hwclock の メ ン テ ナ に 連 絡 し て ほ し い 。 オ プ シ ョ ン を 付 加 す る こ と は 望 ま し い こ と で あ る か ら 。 こ の セ ク シ ョ ン が 意 味 を 持 つ の は 、 ハ ー ド ウ ェ ア ・ ク ロ ッ ク に "direct ISA" に よ っ て ア ク セ ス し て い る 場 合 だ け で あ る こ と に 注 意 。
環 境 変 数
TZ
フ ァ イ ル
/etc/adjtime /usr/share/zoneinfo/ (古 い シ ス テ ム で は /usr/lib/zoneinfo) /dev/rtc /dev/port /dev/tty1 /proc/cpuinfo
関 連 項 目
adjtimex(8), date(1), gettimeofday(2), settimeofday(2), crontab(1), tzset(3)
著 者
hwclock は 1996 年 9 月 に Bryan Henderson (bryanh [AT] giraffe-data.com) が clock を も と に 書 い た 。 clock は Charles Hendrick, Rob Hooft, Haraid Koenig に よ っ て 書 か れ た 。 完 全 な 履 歴 と 謝 辞 は ソ ー ス に 書 か れ て い る 。