hwclockコマンド
Texのソースだけど、なんとかよめるでしょう
よみにくくてごめんなさい
ChapterMaintenance$ cat hwclock.tex
\section{HW clock, System Clockを調整(hwclockコマンド)}
Linuxはふたつの独立した時計をもっています。
\begin{itemize}
\item ハードウェアクロック \\
PC本体のチップ(HW)によって管理されているクロック
バッテリーバックアップされているので、
電源を切っても現在時刻はリアルタイムで保持される。
RTC、CMOSクロックなどとも呼ばれる。
CMOSメモリ上に秒、分、時間、曜日、月、年(1900年をepochとして,
BCDまたはバイナリで保存)
を1バイト(0$\sim$255)で保存します。
割り込みはIRQ8を使用。
ハードウェアクロックにはUTCもしくはローカルタイムのどちらをつかうかを
指定する必要があり、 /etc/sysconfig/clockファイルにて定義されます(後述)
\item システムクロック \\
Linuxカーネルが管理しているクロック。
電源を切ると現在時刻は当然飛び去る。
Linuxカーネルのメモリ上にふたつのデータとして保持管理され,
インターバルタイマーの割込みにより時刻をすすめます。(UTCを使用)
\begin{itemize}
\item 1970年1月1日からの経過秒数(UTC)
\item 現在秒からの経過ナノ秒数
\end{itemize}
\end{itemize}
OS起動時、カーネルはハードウェアクロックより現在時刻を取得し、
以後は独立してシステムクロック
\footnote{とインターバルタイマー IRQ0}が時間を管理します。
システムクロックとハードウェアクロックは独立しているので
サーバ用途などで長時間OSを起動しているとその誤差はひろがっていきます。
加えてシステムクロックもハードウェアクロックもどちらも時間の精度
がよいとは言えません(例えば、一日5分程度時刻が狂うとか)
hwclockコマンドは、システムクロックとハードウェアクロックを調整します。
\begin{center}
\begin{tabular}{|l|l|} \hline
\verb@ hwclock --systohc (または -s)@ & SYStem clock TO HardareClock \\ \hline
\verb@ hwclock --hctosys (または -w)@ & HardwareClock TO SYStem clock \\ \hline
\end{tabular}
\end{center}
ntpdate コマンドやntpd デーモンにより、インターネット上のNTPサーバから
正確な時刻を取得してシステムクロックを更新して運用されている
とおもいますので、この場合は \verb@ --systohc @コマンドが有用ですね。
\subsection{UTC(Coordinated Universal Time 協定世界時)とJST(ローカルタイム)}
UTCは原子時計を基に定められている世界共通の標準時です。
ローカルタイムは国や地域に共通の地域標準時で、日本の場合はJST(日本標準時)
になります。
この時差情報は/usr/share/zoneinfoディレクトリの下に、ローカルタイム地域ごとに
格納されています。インストール時に/etc/localtimeファイルにコピーされます。
ハードウェアクロックをUTCにするかローカルタイムにするかは
/etc/sysconfig/clockファイルにて指定されます。
\begin{footnotesize}
\begin{verbatim}
[root@cent5-8 zoneinfo]# cat /etc/sysconfig/clock
# The ZONE parameter is only evaluated by system-config-date.
# The timezone of the system is defined by the contents of /etc/localtime.
ZONE="Asia/Tokyo"
UTC=true < UTCになっている (utc=yes or utc=true)
ARC=false
[root@cent5-8 zoneinfo]#
\end{verbatim}
\end{footnotesize}
システムの起動時にhwclockコマンドがつかったパラメータは
/etc/adjtimeファイルに記録されます。
\begin{footnotesize}
\begin{verbatim}
[root@cent5-8 zoneinfo]# cat /etc/adjtime
0.000120 1231122266 0.000000
1231122266
UTC
[root@cent5-8 zoneinfo]#
\end{verbatim}
\end{footnotesize}
hirasawa@ubuntu-17:/mnt/192.168.1.28/HowToBuildServerNow/HowToBuildServerCentOs/ChapterMaintenance$