在 MacOS 主机上在 VirtualBox 中运行 Ubuntu 20.04
使用python
而不是 shell 脚本。对于linux
在子进程中运行的命令。日期已更新,但不久后日期/时间会自动重置。已禁用 NTP。如何防止日期重置回实际日期?
import re, shutil, csv, subprocess, yaml, click
from pathlib import Path
def cmd(cmd:str="ls -al", assertfail=True) :
up = subprocess.Popen(cmd, shell=True, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.STDOUT, close_fds=True)
str = [o.rstrip().decode() for o in up.stdout]
exitcode = up.wait()
if assertfail: assert exitcode == 0, f"[{exitcode}] {cmd} {str}"
return exitcode, str
if __name__ == '__main__':
# set date back before flash EOL date
import datetime as dt
n = dt.datetime.now()
if n.year > 2020:
systime = dt.datetime(n.year-1, n.month, n.day, n.hour, n.minute, n.second, n.microsecond).isoformat(sep=' ', timespec='milliseconds')
cmd("sudo timedatectl set-ntp off")
cmd(f"sudo date --set=\"{systime}\"")
# cmd("sudo hwclock --systohc")
cmd(f"sudo timedatectl set-time \"{systime}\"")
e, out = cmd("sudo timedatectl status")
print("\n".join(out))
e, out = cmd("date")
print(f"updated time {dt.datetime.now()} {out[0]}")
输出
Local time: Fri 2020-01-24 21:55:05 UTC
Universal time: Fri 2020-01-24 21:55:05 UTC
RTC time: Fri 2020-01-24 21:55:05
Time zone: Etc/UTC (UTC, +0000)
System clock synchronized: no
NTP service: inactive
RTC in local TZ: no
updated time 2020-01-24 21:55:05.980812 Fri 24 Jan 2020 09:55:05 PM UTC
答案1
您是否安装了 VirtualBox Guest Additions?如果安装了,其中有一个功能会定期更新虚拟机时间以匹配主机,这可能会导致您面临的情况。幸运的是,禁用它并不太难。
打开终端
禁用
GetHostTimeDisabled
您不想与主机同步的虚拟机:% VBoxManage setextradata "{VM Name}" "VBoxInternal/Devices/VMMDev/0/Config/GetHostTimeDisabled" 1
启动虚拟机
笔记:确保将其替换{VM Name}
为虚拟机的正确名称。
此设置是特定于 VM 的且具有持久性,因此,即使您更新该 VM 的 Guest Additions 软件,也不需要重新禁用该GetHostTimeDisabled
功能。