【发布时间】:2020-12-08 22:23:43
【问题描述】:
我正在尝试为 Raspberry-pi Cm3 更改嵌入式 Linux (Yocto poky Warriors) 上的时区。 但我无法这样做。我收到一条错误消息说明
root@raspberrypi-cm3:~# timedatectl set-timezone "America/New_York"
Failed to set time zone: Failed to set time zone: Read-only file system
这在将 rootfs 更改为只读之前有效。
如何更改只读 rootfs 上的时区?
【问题讨论】:
-
如果你的整个 rootfs 是只读的,你就不能在运行时配置任何东西。如果您想要部分可配置性,则需要文件系统的某些部分是可写的(选项包括 /etc 的单独挂载点或在构建时为 /etc 中的特定文件创建指向另一个可写文件系统位置的符号链接)
-
@JussiKukkonen 我确实做到了。我将
/etc/localtime和/etc/timzone移动到文件系统的可写部分。但我认为问题在于timedated.c文件查找/etc/localtime我认为我必须更改。但我不是嵌入式开发人员。我在理解代码时遇到了一些问题。我可以将这些问题添加到此页面吗? -
见:github.com/systemd/systemd/pull/8277。 TL;DR:开箱即用并不是真的可能,您需要在那里选择(并维护)建议的补丁或使用overlayfs或其他类型的解决方法。基本上,/etc/localtime 会在需要时按时间重新创建(相当于
ln -fs)......这显然无法完成,因为它位于 RO FS 上。 -
@qschulz 你是上帝派来的。我爱你。您能否将此评论作为答案。