... with os-prober, if that is available --- components/1120-util-linux | 48 +++++++++++++++++++++++++++++++------- 1 file changed, 39 insertions(+), 9 deletions(-)
diff --git a/components/1120-util-linux b/components/1120-util-linux index 8bb45e5..65aa1be 100755 --- a/components/1120-util-linux +++ b/components/1120-util-linux @@ -21,13 +21,21 @@ Cmdline () ;; esac done + + # If not explicitly given, auto-detect + if [ -n "${LIVE_UTC}" ] + then + LIVE_UTC="auto" + fi + } Init () { # Checking if package is installed if [ ! -e /var/lib/dpkg/info/util-linux.list ] || \ - [ -e /var/lib/live/config/util-linux ] + # and wether previously configured or auto-detect mode active + [ -e /var/lib/live/config/util-linux -a "${LIVE_UTC}" != "auto" ] then exit 0 fi @@ -39,10 +47,20 @@ Config () { rm -f /etc/rc?.d/*hwclock* - if [ -n "${LIVE_UTC}" ] + # if os-prober is installed, use it to detect windows installations + if [ "${LIVE_UTC}" = "auto" ] && [ -x /usr/bin/os-prober ] then - case "${LIVE_UTC}" in - yes) + if os-prober | grep -qsi windows + then + LIVE_UTC=no + else + LIVE_UTC=yes + fi + + fi + + case "${LIVE_UTC}" in + yes) cat > /etc/adjtime << EOF 0.0 0 0.0 @@ -50,19 +68,31 @@ cat > /etc/adjtime << EOF UTC EOF - ;; + ;; - no) + no) cat > /etc/adjtime << EOF 0.0 0 0.0 0 LOCAL EOF + # prevent "System clock time unset or jumped + # backwards, restoring from recorded timestamp" + # oh Lennart + pgrep systemd-timesyncd && SYSD=1 + TIMEFILE=/var/lib/systemd/timesync/clock - ;; - esac - fi + [ -e $TIMEFILE ] && rm -v $TIMEFILE + [ "$SYSD" = "1" ] && systemctl stop systemd-timesyncd + + # tell kernel to set the timezone and + # reset the system clock to local time + hwclock --systz --localtime + + [ "$SYSD" = "1" ] && systemctl start systemd-timesyncd + ;; + esac # Creating state file touch /var/lib/live/config/util-linux -- 2.24.0