更新日期并禁用自动更新

更新日期并禁用自动更新

在 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?如果安装了,其中有一个功能会定期更新虚拟机时间以匹配主机,这可能会导致您面临的情况。幸运的是,禁用它并不太难。

  1. 打开终端

  2. 禁用GetHostTimeDisabled您不想与主机同步的虚拟机:

    % VBoxManage setextradata "{VM Name}" "VBoxInternal/Devices/VMMDev/0/Config/GetHostTimeDisabled" 1
    
  3. 启动虚拟机

笔记:确保将其替换{VM Name}为虚拟机的正确名称。

此设置是特定于 VM 的且具有持久性,因此,即使您更新该 VM 的 Guest Additions 软件,也不需要重新禁用该GetHostTimeDisabled功能。

相关内容