今天在處理ntp功能才發現
因為在我把/etc/localtime改為+8的台灣時間後
使用ntpdate把時間調整過後,並 hwclock -w寫入RTC中
再重新開機,結果時間就錯了!!
hwclock 是正確的+8時間
但date得到的時間就是這個時間再+8,整個大錯亂
詳細了解後才知道,原來除了date有時區設定檔/etc/localtime以外
hwclock也有時區設定檔 /etc/TZ
cat /etc/TZ 得到 「MST7MDT」
上網查得知這是-7的時區-->我會得到差8,也許是日光節約吧…(maybe)
所以就把它改為「TAIST-8TAIDT」 --> 網路上查來的,+8台灣時區
!!but!!重開後沒有用!!
所以囉,再找
找到這一篇
http://wiki.debian.org.hk/w/Set_date_and_time
上面說明使用
hwclock --systohc --utc # 將UTC時間存入RTC
hwclock --systohc
--localtime # 將LOCAL時間存入RTC
hwclock --systohc
沒有指定LOCAL or UTC,hwclock 根據配置來確定RTC裡面存LOCAL orUTC
找
配置文件的優先級順序為:
$ADJTIME_PATH、/var/state/adjtime、/var/lib/hwclock/adjtime、/etc/adjtime
配
置文件內有寫LOCAL 或 RTC
沒有配置文件的話,hwclock認為RTC裡面存的是LOCAL
加上--utc,指定要用utc設定時間硬體時間
這樣重開機date得到的時間就正常了
而hwclock的時間則變成了utc的時間
但…產生另一個問題,不過也不是很重要吧!!
hwclock -l 記了utc時間 -->正常應該是localtime
hwclock -u 記了localtime時間 --> 正常應該是 utc!!
我強烈的感覺,是不是hwclock在build的時候就指定了它的時區了?
不然怎麼會設定都沒用!!
ps:後來看到網路上,一位高手的解釋,才恍然大悟
hwclock --local/--utc 的意義是:假設BIOS時鐘的時間是當地/UTC時間,將它讀出來,再按當時時間顯示出來。
所以
hwclock 若是11:30:00 (預設為local)
hwclock --utc 為19:30:00 -->因為把RTC(BIOS)視為UTC時間,再轉為當地時間就是19:30:00了
hwclock --local --> 把RTC視為Local時間,所以讀出來後不再轉換
9.22.2012
linux 硬體時間hwclock 也有時區!
訂閱:
張貼留言 (Atom)
沒有留言:
張貼留言