LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1157|回复: 3

解决时区问题

[复制链接]
发表于 2007-7-15 11:10:02 | 显示全部楼层 |阅读模式
一般来说,电脑的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。论坛里面有几个帖子讨论了这个问题,我的设置都对,但显示仍然不对。有一阵子没管它,但是每次看时间总是很别扭。于是手动修改时间
  1. hwclock --hctosys --localtime
复制代码
显示
  1. 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,发现有
  1. HWCLOCKPARS=
复制代码
这一行,并且在下面的执行hwclock的命令中都加了这个参数,把它改为
  1. HWCLOCKPARS=--directisa
复制代码
重启,时间显示正确。这下彻底搞定!
实际上,这里还留下一个问题,为什么hwclock通过/dev/rtc不能够设置时间?查看/proc/driver/rtc的内容,时间显示是和bios时间相同,为什么hwclock --hctosys不对呢?欢迎知道的兄弟来讨论一下。
发表于 2007-7-15 13:16:22 | 显示全部楼层
好贴,留个记号。
回复 支持 反对

使用道具 举报

发表于 2007-7-16 07:05:13 | 显示全部楼层
其实在安装系统的时候,有一个选择系统本地时间方式的选项,默认为bois时间为UTC时间,安装时注意一下就不会有楼上的情况发生了。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-7-16 13:06:48 | 显示全部楼层
Post by sungx
其实在安装系统的时候,有一个选择系统本地时间方式的选项,默认为bois时间为UTC时间,安装时注意一下就不会有楼上的情况发生了。

你可能没有注意到,我说的是系统不能够通过/dev/rtc来设置时间,这是问题关键。启动中/etc/init.d/hwclock.sh是通过hwclock命令来设置系统时间的;而hwclock命令默认读取/dev/rtc设置时间。我的解决办法是在/etc/init.d/hwclock.sh中加入--directisa参数。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表