关于海思3559C修改默认时区的探索 UTC改为上海时区(正八区)嵌入式Linux设置时区

1 背景

在使用3559C开发板过程中发现我自己编译的官方SDK固件同步NTP服务器的时间要比公司的固件晚8个小时,公司的固件显示时间是北京时间。相差八个小时,这个时间比较巧,首先想到的就是时区问题(可能是受Mysql和Ubuntu影响)。然而,在使用官方原版SDK编译固件时,发现其默认时区为UTC,与北京时间相比要少八个小时。于是有了以下的疑问,并对此进行研究和分析:

公司封装好的SDK是在哪里进行设置时区的?编译内核的时候修改了配置?开机脚本里面设置的?是怎么实现的?

c22cd37502b4f8e44c330b55f965491c-22 探索

2.1 求助

首先问了度娘和GPT:

通过度娘得知可以通过 date +%z 命令 获取系统时区,确定了是时区问题导致的差异。

我的固件:+0000

公司固件:+0800

74d0a7f21cda624850cc95da8b3d39bb

GPT的第一个回答,首先没这个文件 /etc/timezone  ,我创建了添加了时区,重启没生效。其次dpkg-reconfigure这个命令肯定是不支持的,接着又问

66c149034772c9d973caab77ec559026

第一次看着不太像正确答案,先排除了。也是没/etc/timezone这个文件。包括下面的/usr/share板子上也是没有的。后面偶然发现在公司固件的文件系统系统里面是存在这个文件的,然后想打开看看,先cat了一下,似乎是乱码,然后查看了文件类型,不是连接文件,是个普通文件。

2ad4d69ed1ba9bed124ee343d870693e然后GPT回答的第五点给了我灵感,这个文件/usr/share/zoneinfo/Asia/Shanghai 开发用的Ubuntu 服务器上是有的,虽然公司的固件里面有这个文件,但我更好奇Ubuntu系统里面的能不能直接使用,然后去对应的目录,把上海时区文件下载了,并通过FTP传到/etc下,修改名字为localtime,不确定要不要加可执行权限,先不加了吧。

然后重启,同步时间,竟然成功了,神奇!

97391e5684bc4395405d57c483f144da

© 版权声明
THE END
喜欢就支持一下吧
点赞10 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容