树莓派没有电池,因此断电断网状况下,时间会停留在上次关机的时间。html
若是再次开机,有网络的状况下,能够进行时间同步。网络
可是极端状况下,没有网络,就只能手动去修改;而没网的状况下,客户不懂Linux,不会手动修改,那只能使用电池解决方案。ide
能够用这东西:工具
CR1220spa
CR1220电池是锂二氧化锰一次性电池,不可充电,标称电压3v,经常使用于数码产品及其余小电子产品的CMOS电池上、记忆功能或断电参数保护,相机安装这块电池用来保存系统时间和设置,通常优质电池使用寿命2到3年。 若是不安装该电池或者电池失效。操作系统
12表示电池的直径是12.5mm,20表明电池的高度为2.0mm。很小吧。这么小的一个纽扣玩意儿,能够支持2~3年。.net
这种电池不少,如今须要一个很小的纽扣电池就足够了:orm
下面补充一下RTC与NTP相关:htm
RTC 与 NTPblog
早期版本的 FreeBSD 有一个问题是,若是使用 ntpd 来校准系统时钟的话,若是长期开机,则在重启以后,时间会差很远,以前一直没仔细研究这个问题。最近忽然发现 FreeBSD 8.1-RELEASE 里面没有这个问题了,因而翻看了一下代码和以前的一些邮件才明白是怎么回事,总结一下:
通常来讲操做系统在引导之后会自行维护时钟,简单地说,就是操做系统根据某个时钟源,例如单CPU系统中的TSC,或多CPU系统中比较经常使用的高精度事件计时器HPET等等,计算出时间的流逝并修改系统时间。只有在系统刚刚引导的时候,才会直接取 RTC 时间(在关机时,主板上的电池仍可维持 RTC 电路的计时功能)。
咱们知道,任何测量工具都是有偏差的,普通的 PC 系统上配置的计时装置确定不会作的很是精密,这也是咱们为何要运行 ntpd 的主要缘由。在系统运行的过程当中,这些偏差不断地积累,使用 ntpd 时,系统能够计算出所采用的时钟源与实际的时间之间的偏差,并逐步调整时间源的计数周期与实际时间的比例,从而维持系统时钟的精确性。
在重启时,在内存中维护的系统时刻数据便随之丢弃了,操做系统再次启动时读取的是先前未经修正过的、继续在积累偏差的 RTC 时间数据(注意:RTC是不依赖于OS运行的;OS能够修改其时刻数据,但不管开机仍是关机,只要维持其须要的电流便可确保 RTC 继续自行更新,而无需 OS 干预)。
FreeBSD先前的实现中,只有很是少的地方调用了 resettodr(9) 来修正 RTC 时间,这些地方主要是settimeofday()之类的直接设置内核时刻数据的点,而对于 ntp 的状况,则没有相应的处理。
新的实现 (以r207360为主体,包含r207359, r207362)则增长了一个callout,每半小时将系统时钟刷回RTC一次,从而解决了这个问题。
关于为何不该该使用 ntpdate 来对时(ntpdate会使用settimeofday()),请参考 A core的 这篇 介绍 NTP 的文章,以及个人 这篇 文章。
-----------------------------------
RTC(实时时钟芯片)
RTC,英文全称:Real-time clock,中文名称:实时时钟,是指能够像时钟一様输出实际时间的电子设备,通常会是集成电路,所以也称为时钟芯片。实时时钟芯片是平常生活中应用最为普遍的消费类电子产品之一。它为人们提供精确的实时时间,或者为电子系统提供精确的时间基准,目前实时时钟芯片大多采用精度较高的晶体振荡器做为时钟源。
基本目前全部的RTC都须要后备电源供电,都是用纽扣电池,RTC功率低,并且使用的时长不长,用纽扣电池就最为合适。而在选用纽扣电池,咱们通常都须要了解一下产品的特性,究竟是客户是否能自行更换电池?在后备电源这一块,有没有带充电电路?预算在这个后备电源上投入多少成本?空间有多大?众所周知,目前普遍应用在RTC都是3V纽扣电池,而3V纽扣电池有分可充电与不可充电。
不可充电型的3V纽扣电池,都是用在一些产品基本接近不断电状态或者就算断电时间不长,还有一个就是空间相对比较大。同规格的纽扣电池,不可充电的容量是比可充电的容量高出很多,就以CR1220与ML1220为例,CR1220的容量是45mah,ML1220的容量是15mah,不过不可充电的成本就低不少;而可充电的3V纽扣电池就多数用在哪些比较精密的,可能会断电时间比较长的产品中,而空间都是比较小。比较不容易去更换电池,主电源断电后,就靠这个后备电源来保存时间,比较容易理解,就好像咱们之前用的诺基亚手机,当咱们把手机电池拆掉了一个晚上,次日装上电池,咱们都能看到手机上的时间仍是很准确,不会复位,而这个时候,其实后备电池都用很大部分的电量,当装会手机电池后,又会给这颗小电池充满电。