When the user/customer sets the time on the system which is prior than that of the systemd build time, as systemd doesn't allow time before it's build date after a reboot, systemd is resetting it but there is no error or exception present in the setTime method due to which user/customer is unaware of why the time is reset back to the systemd-build time. Added a condition check in the set_time() method to return an error when tried to set time past the systemd build date. Tested: Verified that it throws an error when we try to set the time prior to systemd build date. Change-Id: Ia6b58320bdb7234a21885a44af8fd3bda64c3789
39 lines
976 B
Bash
Executable File
39 lines
976 B
Bash
Executable File
#!/usr/bin/env bash
|
|
# SPDX-License-Identifier: LGPL-2.1-or-later
|
|
set -eux
|
|
set -o pipefail
|
|
|
|
systemd-analyze log-level debug
|
|
|
|
systemctl disable --now systemd-timesyncd.service
|
|
|
|
timedatectl set-timezone Europe/Berlin
|
|
|
|
# A future timestamp needs to be used, otherwise 'timedatectl set-time' fails
|
|
# if a timestamp older than the TIME_EPOCH is specified.
|
|
current_time=$(date)
|
|
|
|
future_time=$(date -d "$current_time + 1 year" +"%Y-%m-%d %H:%M:%S")
|
|
|
|
timedatectl set-time "$future_time"
|
|
|
|
systemd-run --on-timezone-change touch /tmp/timezone-changed
|
|
systemd-run --on-clock-change touch /tmp/clock-changed
|
|
|
|
test ! -f /tmp/timezone-changed
|
|
test ! -f /tmp/clock-changed
|
|
|
|
timedatectl set-timezone Europe/Kyiv
|
|
|
|
while test ! -f /tmp/timezone-changed ; do sleep .5 ; done
|
|
|
|
future_time=$(date -d "$current_time + 1 year + 1 month" +"%Y-%m-%d %H:%M:%S")
|
|
|
|
timedatectl set-time "$future_time"
|
|
|
|
while test ! -f /tmp/clock-changed ; do sleep .5 ; done
|
|
|
|
systemd-analyze log-level info
|
|
|
|
touch /testok
|