1 背景
在使用3559C开发板过程中发现我自己编译的官方SDK固件同步NTP服务器的时间要比公司的固件晚8个小时,公司的固件显示时间是北京时间。相差八个小时,这个时间比较巧,首先想到的就是时区问题(可能是受Mysql和Ubuntu影响)。然而,在使用官方原版SDK编译固件时,发现其默认时区为UTC,与北京时间相比要少八个小时。于是有了以下的疑问,并对此进行研究和分析:
公司封装好的SDK是在哪里进行设置时区的?编译内核的时候修改了配置?开机脚本里面设置的?是怎么实现的?
2 探索
2.1 求助
首先问了度娘和GPT:
通过度娘得知可以通过 date +%z 命令 获取系统时区,确定了是时区问题导致的差异。
我的固件:+0000
公司固件:+0800
GPT的第一个回答,首先没这个文件 /etc/timezone ,我创建了添加了时区,重启没生效。其次dpkg-reconfigure这个命令肯定是不支持的,接着又问
第一次看着不太像正确答案,先排除了。也是没/etc/timezone这个文件。包括下面的/usr/share板子上也是没有的。后面偶然发现在公司固件的文件系统系统里面是存在这个文件的,然后想打开看看,先cat了一下,似乎是乱码,然后查看了文件类型,不是连接文件,是个普通文件。
然后GPT回答的第五点给了我灵感,这个文件/usr/share/zoneinfo/Asia/Shanghai 开发用的Ubuntu 服务器上是有的,虽然公司的固件里面有这个文件,但我更好奇Ubuntu系统里面的能不能直接使用,然后去对应的目录,把上海时区文件下载了,并通过FTP传到/etc下,修改名字为localtime,不确定要不要加可执行权限,先不加了吧。
然后重启,同步时间,竟然成功了,神奇!
© 版权声明
转载请注明出处,并标明原文链接。
本网站尊重知识产权,如有侵权,请及时联系我们删除。
本站所有原创内容仅用于学习和交流目的,未经作者和本站授权不得进行商业使用或盈利行为。
本网站尊重知识产权,如有侵权,请及时联系我们删除。
本站所有原创内容仅用于学习和交流目的,未经作者和本站授权不得进行商业使用或盈利行为。
THE END
暂无评论内容