VMWare Fusion에서 게스트 OS로 실행되는 Arch Linux에서 호스트 OS를 최대 절전 모드로 전환하고 동기화를 다시 시작하지 않으면 Arch의 시스템 시간이 뒤처지는 것을 발견했습니다. systemd-timesyncd가 로드되었지만 활성화되지 않은 것 같습니다.
[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."
고쳐 쓰다:아래 답변은 VM에서 systemd-timesyncd.service를 실행하는 방법을 설명하지만 이것이 시간 동기화 문제를 해결하지 못하는 것으로 나타났습니다(이것이 아마도 VM에서 systemd-timesyncd가 비활성화된 이유일 것입니다). 아치 위키 페이지VMWare에 아치 리눅스 설치수행 방법을 설명하다시간 동기화게스트 운영 체제와 호스트 운영 체제 사이.
답변1
이 매개변수를 설정 해제하는 프로필을 생성하기만 하면 됩니다.
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"가 붙은 모든 파일은 파일 자체가 구문 분석된 후에 구문 분석됩니다. 이는 장치 파일을 수정하지 않고 장치의 구성 설정을 변경하거나 추가하는 데 유용합니다. 포함된 파일에 지시문 앞에 적절한 섹션 헤더가 있는지 확인하세요.
답변2
systemd.unit 사람들로부터:
ConditionVirtualization=은 시스템이 가상화된 환경에서 실행되고 있는지 확인하고 선택적으로 특정 구현인지 테스트하는 데 사용할 수 있습니다. 부울 값을 사용하여 가상화 환경에서 실행되는지 확인하거나 vm 및 컨테이너 중 하나를 사용하여 일반적인 유형의 가상화 솔루션을 테스트하거나 qemu, kvm, vmware, microsoft, oracle, xen, bochs, chroot, uml One, openvz, lxc를 사용하십시오. , lxc-libvirt, systemd-nspawn은 특정 구현을 테스트하는 데 사용됩니다. 여러 가상화 기술이 중첩된 경우 가장 안쪽에 있는 기술만 고려됩니다. 테스트 앞에 느낌표를 붙여서 테스트를 무효화할 수 있습니다.
ConditionVirtualization=no는 시스템에 알려줍니다.아니요이 서비스는 운영 체제가 가상화된 환경에서 실행되는 경우 실행됩니다. 내 생각에는 일부 VM이 시간 동기화를 제공하는 게스트 OS 도구를 제공하기 때문에 검사가 존재하는 것 같습니다. 이러한 도구를 Arch에 설치하거나 /usr/lib/systemd/system/systemd-timesyncd.service에서 ConditionVirtualization=no를 주석 처리하고 다음 명령을 실행할 수 있습니다.
systemctl daemon-reload
systemctl restart systemd-timesyncd
이제 systemctl status systemd-timesyncd
활성화된 것으로 표시됩니다.
[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 서버를 가리키도록 설정해야 합니다. 예를 들어:
# See timesyncd.conf(5) for details
[Time]
Servers=time1.google.com time2.google.com time3.google.com time4.google.com