Linux下系统时间快8小时

先说时区的配置。以前Debian有个好胜的时区配置工具,叫tzconfig,现在也没有了。但配置时区倒也简单,主要是两个文件:
/etc/localtime
/etc/timezone
timezone这个文件是个文本,里面只需要写一行自己的时区就行,我们这里就是上海,Asia/Shanghai(谁知道为什么不是北京呢?)。 localtime这个文件的类型不清楚,里面就写了些timezone data,它可以从系统自带时区文件那里拷贝,位置在:
/usr/share/zoneinfo
从这个目录下找到Shanghai拷贝到/etc下的localtime即可。有人说建个连接也可,这样还可以保证系统数据有变化时不必再管。
设定了时区,还要确定Linux的时间方案。Linux支持UTC时间,Coordinated Universal Time,也就是世界协调时,也就是本初子午线上的时间,它和以前的格林威治标准时(GMT)的区别似乎是它是由多个原子钟平均出来的。在/etc /default/rcS这个文件中,设定了系统是否使用UTC,UTC=yes就是用。
计算机自己还有自己的时间,也就是硬件时间,hard clock,也就是存在BIOS里那个时间,关机也不会丢失。计算机启动时,就要读取这个时间。这个时间如果设定为UTC(GMT),也就是伦敦那地方的 时间,就要在rcS文件中设定UTC=yes,反之则要设为no。
总之就是两种正确的设置:
BIOS=本地时间,UTC=no
BIOS=UTC时间,UTC=yes
一般来讲,BIOS里面都设定为当地时间,这是因为如果装双系统的话,Windows似乎不懂utc,就会出问题。这时UTC=no。
如果一切顺利,到这时,进入Linux之后显示的时间应该是正确的了。但不少人的机器,包括这回这台640m,仍旧不正确,而是比正确时间再往前跑了8小时。这里的问题出在Linux读取硬件时间上了。
Linux读取这个硬件时间要用到hwclock这个命令:
hwclock --show :显示硬件时间
hwclock --systohc :将系统时间写入硬件
hwclock --hctosys :将硬件时间写入系统时间
在出问题的时候,hwclock 这一组命令的运行通常是不能成功的,错误经常是这样的:
select() to /dev/rtc to wait for clock tick timed out
也就是不能读取/dev/rtc,也就是硬件时间。这又是因为某些机器的BIOS处理方式和Linux的rtc内核模块之间出现了问题。
Linux又有3个这类模块,rtc/genrtc/rtc_dev,似乎是一个比一个新,而debian通常自己用的是rtc这个老模块;但Dell /ibm/acer等等厂商现在都可能使用新的BIOS,这种BIOS和这个rtc就可能不对付。如果出现了上面那个timeout的问题,有两种方法可 以解决:
1, 给hwclock加参数,--directisa,也就是:
hwclock --directisa --show
如果运行成功,说明这个办法可行。则把此参数添加为hwclock的缺省参数即可。在debian 4.0之后,可以直接在/etc/default/rcS中添加一行:
HWCLOCKPARS="--directisa“
而在4.0以前,可能只能在hwclock启动脚本中添加,/etc/init.d/hwclock.sh,把里面的”/sbin/hwclock“ 全部替换为 ”/sbin/hwclock --directisa"。现在在debian sid中,这个脚本的第一行其实是HWCLOCKPARS=,也可以像rcS一样添加参数了。
2, 换用其他内核rtc模块,用如下方法测试哪个模块好用:
# modprobe rtc
# hwclock --show
# rmmod rtc
# modprobe genrtc
# hwclock --show
# rmmod genrtc
# modprobe rtc_dev
# hwclock --show
# rmmod rtc_dev
没有显示time out的就是好用的了,然后可以在blacklist中阻止不好用的,在modules里面加上好用的那个。
用完这两个方法,hwclock应该能直接工作了,也就是可以读取硬件时间了。再配上utc设置正确,重启之后时间就是对的了。
为了让BIOS时间更准确,除了可以找个精确的时间源,比如CDMA手机或是GPS,靠自己的手指来精确设定BIOS时间之外,还可以用hwclock把准确的时间写入BIOS。前一种方法细心点可以做到几秒误差,而后一种怎么也在1秒以下了。
安装ntpdate这个包,它可以从时间服务器上读取到正确的时间,精度还是很高的:
aptitude install ntpdate
ntpdate pool.ntp.org
此时系统时间就已经是ntp的时间了,相当精确,把它写入硬件:
hwclock --systohc
这样BIOS时间也就很准了。以后开机没网络,没办法运行ntpdate的时候也都是准的。
这里的关键有:bios时间,utc设定,rtc模块,hwclock读取,ntpdate对时。
在Debian的老bug里还看到因为系统有多个分区,比如/usr单独分,fsck运行时会对时,并因为又造成快几个小时的问题,不知道怎么处理的。

 

更多精彩linux视频教程,尽在51CTO学院:
wKioL1PE_n3z629yAACXIHScsJM092.jpg
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: OpenEuler是一个基于开放社区的Linux操作系统,它致力于为广大用户和开发者提供一个开放、安全、高效的操作系统环境。在这个操作系统中,用户可以轻松地获取丰富的开源软件,从而速地搭建出自己所需的系统环境。 OpenEuler大作业是一个挑战性任务,通过该任务,学生可以深入了解OpenEuler的整体架构和设计理念,同时还可以学会如何在OpenEuler中进行软件开发和部署。在大作业中,学生需要完成一个具有实际意义的项目,例如搭建一个基于OpenEuler的Web应用程序,或是改进OpenEuler中已有的某个模块。 通过完成这个任务,学生将能够提高自己的操作系统开发和部署能力,同时也有机会将自己的成果展示给全世界的开源社区。这个任务非常具有挑战性,但对于有志于从事Linux操作系统相关工作的学生而言,完成这个任务将是一个非常重要的里程碑。 ### 回答2: OpenEuler大作业是指基于开源社区OpenEuler的操作系统、虚拟化或容器技术进行开发和研究的任务。这项工作旨在促进开源技术的发展,提高应用安全性和性能。它可以帮助开发者建立一个高效的操作系统,使其更加适应个人、企业和组织的需求,提供更好的用户体验。此外,它还可以在容器技术和虚拟化方面尝试新的方法,从而增强云端和企业级开发的能力。OpenEuler大作业需要开发者对 Linux 操作系统编程或者虚拟化、容器技术有一定的技术基础和研究背景。参与者需要熟练掌握 C、C++等编程语言,掌握 Linux 操作系统命令、Shell脚本编写技巧,对虚拟化和容器技术有一定的了解和经验。大作业的成果需要经过多次代码测试和性能调优,才能保证其高质量。 参与OpenEuler大作业可以帮助开发者获取硬件、软件和云资源。同时,开发者可以通过大作业交流平台和相关社交平台分享经验和知识,与业界专家进一步探讨最新的技术动态,提高自己的技术水平和软件开发能力。 ### 回答3: openeuler是一个开源的Linux操作系统,它基于CentOS,旨在为用户提供安全、稳定的操作系统。openeuler大作业涉及到对openeuler操作系统进行开发、测试和优化,以提高其性能和稳定性。 在openeuler大作业中,开发团队需要结合用户需求和市场趋势,对系统进行更新和升级。这可能涉及到软件包的更新、添加新的功能模块、改善系统性能等方面。开发团队也需要在开发过程中遵循开源社区的原则,开展合作、共同开发和分享经验和知识。 测试是openeuler大作业中非常关键的一部分。开发团队需要运用各种测试手段,对系统进行全面测试。这包括集成测试、性能测试、安全测试等。测试的目的是确保系统具有出色的性能和稳定性,满足用户的需求和期望。 优化也是openeuler大作业中重要的一环。开发团队需要对系统进行优化,以提高其性能和稳定性。这可以通过代码优化、内核优化、硬件优化等方式进行。优化的目的是使系统更加高效、稳定,更好地满足用户需求。 总之,openeuler大作业是一个综合性的工作,需要开发团队在系统开发、测试和优化方面进行全面的协作和合作。只有通过不断的努力和改进,才能使openeuler操作系统成为具有竞争力的操作系统之一,为用户带来更好的体验。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值