首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >systemd-timeesyncd.service在VMWare上的Arch上不活动

systemd-timeesyncd.service在VMWare上的Arch上不活动
EN

Unix & Linux用户
提问于 2014-09-30 18:24:04
回答 2查看 5.9K关注 0票数 1

在Arch作为来宾操作系统在VMWare融合上运行时,我注意到Arch的系统时间落后于我睡觉时主机操作系统,并且永远不会同步。它显示systemd-timesyncd已加载但不活动。

代码语言:javascript
运行
复制
[root@arch1 ~]# systemctl status systemd-timesyncd
* systemd-timesyncd.service - Network Time Synchronization
   Loaded: loaded (/usr/lib/systemd/system/systemd-timesyncd.service; enabled)
   Active: inactive (dead) since Tue 2014-09-30 11:04:42 PDT; 3min 7s ago
           start condition failed at Tue 2014-09-30 11:04:42 PDT; 3min 7s ago
           ConditionVirtualization=no was not met
     Docs: man:systemd-timesyncd.service(8)
 Main PID: 17582 (code=exited, status=0/SUCCESS)
   Status: "Idle."

更新:下面的答案解释了如何让systemd-timesyncd.service在VM下运行,但这并不能解决时间同步问题(这可能就是systemd-timesyncd在VM下禁用的原因)。Arch页面在VMWare中安装拱门解释了如何在来宾和主机操作系统之间执行时间同步

EN

回答 2

Unix & Linux用户

回答已采纳

发布于 2014-10-01 18:14:51

只需创建一个取消设置该参数的配置文件。

代码语言:javascript
运行
复制
mkdir -p /etc/systemd/system/systemd-timesyncd.service.d
echo -e "[Unit]\nConditionVirtualization=" > /etc/systemd/system/systemd-timesyncd.service.d/allow_virt.conf
systemctl daemon-reload
systemctl start systemd-timesyncd.service

此技术在systemd.unit手册页中进行了描述:

与单元文件foo.service一起,可能存在目录foo.service.d/。在解析完该文件后,将解析该目录中以".conf“为后缀的所有文件。这对于更改或添加配置设置到单元中非常有用,而无需修改它们的单元文件。确保所包含的文件在任何指令之前都具有适当的节头。

票数 5
EN

Unix & Linux用户

发布于 2014-09-30 18:24:04

来自systemd.unit man:

ConditionVirtualization=可用于检查系统是否在虚拟环境中执行,并可选择地测试它是否是特定的实现。采用布尔值检查是否在任何虚拟化环境中执行,或者使用vm和容器来测试通用类型的虚拟化解决方案,或者使用qemu、kvm、vmware、microsoft、甲骨文、xen、bochs、chroot、uml、openvz、lxc、libvirt、systemd派生来测试特定的实现。如果多个虚拟化技术是嵌套的,则只考虑最内部的技术。可以在感叹号前加上感叹号来否定测试。

如果操作系统是在虚拟环境中运行的,ConditionVirtualization=no告诉systemd不要运行该服务。我的猜测是,检查是存在的,因为有些VM提供了提供时间同步的客户操作系统工具。您可以在Arch上安装这些工具,也可以在/usr/lib/systemd/system/systemd-timesyncd.service中注释掉ConditionVirtualization=no,然后运行以下命令:

代码语言:javascript
运行
复制
systemctl daemon-reload
systemctl restart systemd-timesyncd

现在,systemctl status systemd-timesyncd应该显示它是活动的:

代码语言:javascript
运行
复制
[root@arch1 ~]# systemctl status systemd-timesyncd
* systemd-timesyncd.service - Network Time Synchronization
   Loaded: loaded (/usr/lib/systemd/system/systemd-timesyncd.service; enabled)
   Active: active (running) since Tue 2014-09-30 11:10:12 PDT; 56s ago
     Docs: man:systemd-timesyncd.service(8)
 Main PID: 17648 (systemd-timesyn)
   Status: "Using Time Server 216.239.32.15:123 (time1.google.com)."
   CGroup: /system.slice/systemd-timesyncd.service
           `-17648 /usr/lib/systemd/systemd-timesyncd

注意,如果您还没有这样做,您还需要设置/etc/systemd/timesyncd.conf来指向某些ntp服务器。例如:

代码语言:javascript
运行
复制
# See timesyncd.conf(5) for details

[Time]
Servers=time1.google.com time2.google.com time3.google.com time4.google.com
票数 0
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/158489

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档