Yocto构建的32位系统如何处理2038年问题
处理Yocto与Linux内核2038年问题时的故障排查与求助
已执行操作
- 添加编译选项:
TARGET_CPPFLAGS += "-D_TIME_BITS=64 -D_FILE_OFFSET_BITS=64" - 针对zlib的_TimeBits问题打补丁
出现的问题
完成上述修改后,系统可正常启动且能通过date命令修改时间,但出现以下异常:
/var/log/messages中存在混乱的时间戳,日志示例:
Jan 1 00:00:10 XXX daemon.info avahi-daemon[1696]: Server startup complete. Host name is XXX.local. Local service cookie is 1686369141. Dec 31 23:59:59 XXX daemon.err collectd[1697]: network plugin: sendto failed: Cannot assign requested address. Closing sending socket. Aug 14 10:31:47 XXX daemon.info avahi-daemon[1696]: Joining mDNS multicast group on interface docker0.IPv4 with address 172.17.0.1. Jan 22 10:32:00 XXX daemon.info avahi-daemon[1696]: New relevant interface docker0.IPv4 for mDNS. May 5 06:36:58 XXX daemon.info avahi-daemon[1696]: Registering new address record for 172.17.0.1 on docker0.IPv4. Dec 31 23:59:59 XXX daemon.err collectd[1697]: network plugin: sendto failed: Cannot assign requested address. Closing sending socket. Dec 31 23:59:59 XXX daemon.err collectd[1697]: network plugin: sendto failed: Cannot assign requested address. Closing sending socket. Dec 31 23:59:59 XXX daemon.err collectd[1697]: network plugin: sendto failed: Cannot assign requested address. Closing sending socket.
- PostgreSQL数据库连接失败,提示"connection refused"
尝试的解决措施及新故障
尝试以下操作后出现内核panic:
- 禁用32位time_t系统调用
- 禁用
CONFIG_COMPAT_32BIT_TIME
内核panic日志:
[ 6.808240] systemd[1]: System time before build time, advancing clock. [ 6.836919] Kernel panic - not syncing: Attempted to kill init! exitcode=0x00000004
求助方向
- 内核配置方面:是否遗漏了其他启用64位时间支持的必要选项?
- Glibc配置方面:除已操作外,还有哪些需要检查或配置的内容?
背景信息
- 平台:i.MX6UL
- 系统:基于Yocto构建
- 内核版本:5.10.47
- Systemd版本:250.5+
- Glibc版本:2.35
内容的提问来源于stack exchange,提问作者SBifi
相关产品推荐
相关产品推荐

