systemd-timesyncd.service inativo no Arch no VMWare

1

No Arch Linux sendo executado como um sistema operacional convidado no VMWare Fusion, notei que a hora do sistema do Arch fica para trás quando durmo o SO do host e nunca mais fico em sincronia. Parece que systemd-timesyncd está carregado mas inativo.

[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."

Atualização: As respostas abaixo explicam como obter o systemd-timesyncd.service em execução em uma VM, mas acontece que isso não resolve o problema de sincronização de horário (que é provavelmente o motivo pelo qual o systemd- O timesyncd está desabilitado em VMs). A página wiki do Arch Instalando o Arch Linux no VMWare explica como realizar Time a Sincronização entre o SO guest e host.

    
por Doug Richardson 30.09.2014 / 20:24

2 respostas

4

Basta criar um arquivo de configuração que cancele esse parâmetro.

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

Esta técnica é descrita na página do manual systemd.unit:

Along with a unit file foo.service, a directory foo.service.d/ may exist. All files with the suffix ".conf" from this directory will be parsed after the file itself is parsed. This is useful to alter or add configuration settings to a unit, without having to modify their unit files. Make sure that the file that is included has the appropriate section headers before any directive.

    
por 01.10.2014 / 20:14
0

De systemd.unit man:

ConditionVirtualization= may be used to check whether the system is executed in a virtualized environment and optionally test whether it is a specific implementation. Takes either boolean value to check if being executed in any virtualized environment, or one of vm and container to test against a generic type of virtualization solution, or one of qemu, kvm, vmware, microsoft, oracle, xen, bochs, chroot, uml, openvz, lxc, lxc-libvirt, systemd-nspawn to test against a specific implementation. If multiple virtualization technologies are nested, only the innermost is considered. The test may be negated by prepending an exclamation mark.

ConditionVirtualization = não informa ao systemd para não executar o serviço se o SO estiver sendo executado em um ambiente virtualizado. Meu palpite é que a verificação está lá porque algumas VMs fornecem ferramentas do SO guest que fornecem sincronização de horário. Você pode instalar essas ferramentas no Arch ou comentar o ConditionVirtualization = no em /usr/lib/systemd/system/systemd-timesyncd.service e, em seguida, execute os seguintes comandos:

systemctl daemon-reload
systemctl restart systemd-timesyncd

Agora systemctl status systemd-timesyncd deve mostrar que está ativo:

[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

Note que, se você não tiver feito isso, também precisará configurar /etc/systemd/timesyncd.conf para apontar para alguns servidores ntp. Por exemplo:

# See timesyncd.conf(5) for details

[Time]
Servers=time1.google.com time2.google.com time3.google.com time4.google.com
    
por 30.09.2014 / 20:24