Linux時區設定及NTP時間同步

helloxchen發表於2010-11-02
Linux時區設定及NTP時間同步
文章蒐集自:http://publishblog.blogchina.com/blog/tb.b?diaryID=2745968

一、背景

機器裝的是busybox,使用的是最小集合的linux。硬體時鐘是本地時間,而核心時鐘是UTC時間,沒有設定時區,也沒有任何時區設定的選項。

二、需求

這臺機器需要定時進行NTP時間同步。同步之後顯示給使用者的是本地時間。

三、過程

1.時區的支援

1hwclock

為了檢視硬體時鐘是否為本地時間,執行命令hwclock –r。結果系統提示:“Could not open RTC: No such file or directory”,即找不到RTC檔案。

2/dev/rtc

由於核心在編譯過程中沒有提供RTC支援,需要重新編譯核心(或為核心增加一個module)。方法為,在make menuconfig階段,選中“Character device”的“Enhanced Real Time Clock Support”一項的支援。

為核心增加了該模組後,目錄/proc/drive/下已出現了rtc檔案,cat也能檢視到正常的內容。但/dev/目錄下仍沒有rtc檔案。

於是透過mknod命令在/dev目錄下增加rtc檔案。透過man rtc可以得知,RTC為只讀字元裝置,主10,從135。因此命令為“mknod /dev/rtc c 10 135。命令執行完畢後,/dev下成功生成了rtc檔案。

執行hwclock –r,能夠看到硬體時間為本地時間。透過date命令檢視系統時間,卻為UTC時間。這說明系統沒有進行本地時間的設定。

3/etc/localtime

Linux的系統時區是透過符號連線/etc/localtime來得到的。可以透過tzset命令來設定時區。如果沒有該命令,可以透過命令“ln –s /etc/localtime /usr/share/zoneinfo/Asia/Shanghai”來將時區設定為亞洲的上海。

由於最初構建系統的時候沒有包含zoneinfo資訊,因此/usr/share目錄下不存在zoneinfo目錄及其檔案。所以將包含zoneinfo資訊的機器的/usr/share目錄下的整個zoneinfo目錄複製到本機的/usr/share目錄下。

透過date命令檢查時間,發現已變成了正常的本地時間:

Mon Aug 29 13:14:29 CST 2005

4/etc/sysconfig/clock

該配置檔案可用來設定使用者選擇何種方式顯示時間。如果硬體時鐘為本地時間,則UTC設為0,並且不用設定環境變數TZ。如果硬體時鐘為UTC時間,則要設定UTC1,並設定環境變數TZ(或配置檔案/etc/TZ)為時區資訊,如“Asia/Shanghai”。

我機器的硬體時間為本地時間,因此該配置檔案內容為:

ZONE="Asia/Shanghai"

UTC=0

ARC=0

2NTP同步設定

1ntpdate

如果只是透過NTP伺服器同步系統時間,可以使用命令ntpdate(位於/usr/sbin/下,使用ntpd會提供更佳全面的功能)。Ntpdate用到的庫包括:libcap.so.1 => /lib/libcap.so.1libc.so.6 => /lib/tls/libc.so.6 /lib/ld-linux.so.2 (0xf6fdf000)。將該命令檔案及相關的庫都複製到這臺機器上,並找到一個最近的穩定的NTP伺服器。我使用的是nets.org.sgIP203.117.180.36)。執行命令“ntpdate 203.117.180.36,再透過date命令檢視時間,發現時間已更新。

四、相關知識

Linux時鐘

Linux機器裡有兩個時鐘,一個是硬體時鐘(CMOS時鐘),一個是核心時鐘。硬體時鐘是電池驅動的,透過專門的晶片工作。可以透過BIOS設定屏或一些系統命令(如hwclock)進行設定。核心時鐘是由核心維護的,啟動時從硬體讀取時間,之後獨立執行。

RTCReal Time Clock

Linux實時的時鐘驅動,通常它們被嵌在計算機的晶片中,也有一些是在主機板上使用Motorola MC146818(或clone)實現的。該硬體裝置可對映到/dev/rtc,供root程式設計訪問。

NTPNetwork time protocol

NTP為一種網路時間協議,是一種確保網路上的主機調整時間的方法。很多地方都會提供NTP伺服器(ISP或網管,也可以在~mills/ntp/clock1a.html尋找一個最近的伺服器)。

[@more@]

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/24790158/viewspace-1040770/,如需轉載,請註明出處,否則將追究法律責任。

相關文章