[PATCH] base: setup correct system time and time zone in initrd

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Currently in initrd, hardware clock is always considered to use UTC time
format and system time zone is also UTC. Thus system time isn't correct
if hw clock is localtime or we're using other time zone in real root.

To fix this, install /etc/adjtime and /etc/localtime to initrd. If not
using systemd, install /usr/sbin/hwclock for dracut init to setup system
time.

Signed-off-by: WANG Chao <chaowang@xxxxxxxxxx>
---
 modules.d/99base/init.sh         | 7 +++++++
 modules.d/99base/module-setup.sh | 9 +++++++++
 2 files changed, 16 insertions(+)

diff --git a/modules.d/99base/init.sh b/modules.d/99base/init.sh
index 880a2c0..174bbab 100755
--- a/modules.d/99base/init.sh
+++ b/modules.d/99base/init.sh
@@ -55,6 +55,13 @@ if ! ismounted /dev; then
     exit 1
 fi
 
+# setup system time
+if grep -q LOCAL /etc/adjtime 2> /dev/null; then
+    hwclock --hctosys --localtime
+else
+    hwclock --hctosys --utc
+fi
+
 # prepare the /dev directory
 [ ! -h /dev/fd ] && ln -s /proc/self/fd /dev/fd >/dev/null 2>&1
 [ ! -h /dev/stdin ] && ln -s /proc/self/fd/0 /dev/stdin >/dev/null 2>&1
diff --git a/modules.d/99base/module-setup.sh b/modules.d/99base/module-setup.sh
index 4955b7b..7ab0ae1 100755
--- a/modules.d/99base/module-setup.sh
+++ b/modules.d/99base/module-setup.sh
@@ -28,6 +28,15 @@ install() {
     egrep '^root:' "$initdir/etc/passwd" 2>/dev/null || echo  'root:x:0:0::/root:/bin/sh' >> "$initdir/etc/passwd"
     egrep '^nobody:' /etc/passwd >> "$initdir/etc/passwd"
 
+    # install /etc/adjtime and time zone data
+    dracut_install -o /etc/adjtime \
+                      /etc/localtime
+
+    # Our init.sh script needs hwclock to set system time
+    if ! dracut_module_included "systemd"; then
+        dracut_install -o hwclock
+    fi
+
     # install our scripts and hooks
     inst_script "$moddir/init.sh" "/init"
     inst_script "$moddir/initqueue.sh" "/sbin/initqueue"
-- 
1.8.2.1

--
To unsubscribe from this list: send the line "unsubscribe initramfs" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[Index of Archives]     [Linux Kernel]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux SCSI]

  Powered by Linux