|
|
一般来说,电脑的bios时间都设置为本地时间。对windows系统其实没有什么区别,系统显示时间就是bios时间。对于linux系统来讲,就有些不同。简单来讲分为硬件时间(hardware clock),和系统时间(system time)。硬件时间可以由hwclock来设置;系统时间是在系统启动的时候从硬件时间(在x86中其实是bios)中读取,然后其运行和硬件时间没有关系。关机后再启动,系统时间再从硬件时间校准。具体请看hwclock的manpage。
下面说说我遇到的问题和解决办法:
在dell 640m上安装debian etch之后,系统时间一直显示不对,我设置的时区为Asia/Shanghai,rcS里面utc=no,那么,理论上系统时间和bios时间都是本地时间。实际上,系统显示时间是bios时间+8,即系统认为bios时间为utc。论坛里面有几个帖子讨论了这个问题,我的设置都对,但显示仍然不对。有一阵子没管它,但是每次看时间总是很别扭。于是手动修改时间- hwclock --hctosys --localtime
复制代码 显示- select() to /dev/rtc to wait for clock tick timed out
复制代码 仔细研究了hwclock的参数发现有--directisa这个选项,即不通过/dev/rtc来设置时间,OK,搞定。其实更简单的是用date命令设置。但是,不管如何这都需要手动设置,每次启动之后都要执行,太麻烦了。仔细查看了启动信息,发现系统设置时间的时候也是通过/dev/rtc设置的,同样也显示“timed out”。是不是/dev/rtc不对?打开/etc/init.d/hwclock.sh,发现有这一行,并且在下面的执行hwclock的命令中都加了这个参数,把它改为重启,时间显示正确。这下彻底搞定!
实际上,这里还留下一个问题,为什么hwclock通过/dev/rtc不能够设置时间?查看/proc/driver/rtc的内容,时间显示是和bios时间相同,为什么hwclock --hctosys不对呢?欢迎知道的兄弟来讨论一下。 |
|