我在 VirtualBox 中安装了 Ubuntu 16.04.1 LTS,并尝试以 root 用户身份更改时区timedatectl set-timezone Europe/Berlin
。不幸的是,这没有奏效,我得到了输出
Failed to set time zone: Access denied
我知道可以手动删除/etc/localtime
链接并创建新链接的选项/usr/share/zoneinfo/Europe/Berlin
,但这不是很实用,而且我不明白为什么timedatectl
不起作用。
可能有帮助的更多系统信息:
$ ls -la /etc | grep localtime
lrwxrwxrwx 1 root root 27 Feb 14 07:48 localtime -> /usr/share/zoneinfo/Etc/UTC
$ ls -la /usr/share/zoneinfo/Europe/ | grep Berlin
-rw-r--r-- 1 root root 2335 Dec 7 10:59 Berlin
编辑:
我注意到了其他奇怪的行为。虽然Access denied
抛出了错误,但时区已更改。过了一会儿,它又被设置回 UTC :/
root@ces:/home/vagrant# timedatectl
Local time: Tue 2017-02-14 11:27:31 CET
Universal time: Tue 2017-02-14 10:27:31 UTC
RTC time: Tue 2017-02-14 08:17:50
Time zone: Europe/Belgrade (CET, +0100)
Network time on: yes
NTP synchronized: no
RTC in local TZ: no
root@ces:/home/vagrant# timedatectl set-timezone Europe/Berlin
Failed to set time zone: Access denied
root@ces:/home/vagrant# timedatectl
Local time: Tue 2017-02-14 11:27:40 CET
Universal time: Tue 2017-02-14 10:27:40 UTC
RTC time: Tue 2017-02-14 08:17:59
Time zone: Europe/Berlin (CET, +0100)
Network time on: yes
NTP synchronized: no
RTC in local TZ: no
root@ces:/home/vagrant# timedatectl
Local time: Tue 2017-02-14 10:28:32 UTC
Universal time: Tue 2017-02-14 10:28:32 UTC
RTC time: Tue 2017-02-14 08:18:50
Time zone: Etc/UTC (UTC, +0000)
Network time on: yes
NTP synchronized: no
RTC in local TZ: no
编辑:我正在使用自动安装系统打包机。这包括使用包含以下行的预置文件:
d-i clock-setup/utc boolean true
d-i clock-setup/utc-auto boolean true
d-i time/zone string UTC
删除最后一行可以解决问题,但它会在安装过程中引发一个问题(时区是估计的,我应该按“是”来确认),从而破坏自动化。
答案1
假设您已安装 Guest Additions...来自 VirtualBox 手册:“VirtualBox Guest Additions 确保客户机的系统时间与主机时间同步。”进一步说:“有几个参数可以调整。”
禁用 Guest Additions 时间同步:
安装并启动后,VirtualBox Guest Additions 将尝试将客户机时间与主机时间同步。可以通过禁止客户机服务读取主机时钟来防止这种情况:
VBoxManage setextradata "VM name" "VBoxInternal/Devices/VMMDev/0/Config/GetHostTimeDisabled" 1
现在您知道了所谓“奇怪行为”的根本原因,并且一旦关闭自动将客户时间与主机时间同步的默认设置,您就应该能够永久地设置客户系统内的时区。