... 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