【问题标题】:systemd aborts in clock_gettimesystemd 在clock_gettime 中止
【发布时间】:2020-06-15 09:09:33
【问题描述】:

在 5.4 内核或更高版本的 32 位 CPU 上引导 systemd 时,systemd 中止:

Assertion 'clock_gettime(map_clock_id(clock_id), &ts) == 0' failed at ../src/basic/time-util.c:55, function now(). Aborting.

为什么?

【问题讨论】:

    标签: linux systemd year2038


    【解决方案1】:

    在构建 Linux 内核时启用CONFIG_COMPAT_32BIT_TIME。这样做将启用相关的系统调用。当系统调用不可用时,它将返回-ENOSYS 触发断言。

    在 5.4 左右禁用变得更容易,现在可以通过 allnoconfig 禁用。

    【讨论】:

    • 应该在哪里启用该标志?是否有资源解释如何/为什么?
    • 这是一个 Linux 内核配置标志。我已经更新了答案以使其更加清晰。
    • 那么它是只有在构建内核时才可用的标志吗? - 不明显;我在升级包后遇到了clock_gettime... 错误,因此没有涉及显式构建。
    • 是的,这完全取决于Linux内核的配置。没有提到的项目,相关的系统调用不可用,systemd 失败。
    猜你喜欢
    • 2017-06-24
    • 2017-03-17
    • 1970-01-01
    • 2012-02-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-16
    • 2013-01-08
    相关资源
    最近更新 更多