On Saturday 18 Aug 2012 8:04:58 PM Keshav P R wrote:
Your problem might be due to RTC (motherboard) clock being in local time (generally the case if you dual-boot with Windows. Systemd assumes that RTC is in UTC, but in case of initscripts it can be configured to be localtime. Hence the time offset with systemd boot.
Thank you very much for the precise problem description. This used to be a windows laptop and the BIOS clock reported correct time. The other machine where time was correct, the BIOS clock was behind 5.30 hours.
This is how I changed the clock to UTC and setup the correct time.
1. Boot into Windows and follow https://wiki.archlinux.org/index.php/Time#UTC_in_Windows . After this change Windows will no longer touch RTC clock at all, even if NTP is enabled. From this moment on your RTC will be managed by any Arch. Even after this change the RTC still remains localtime.
2. Boot into Arch and setup the files /etc/{timezone,localtime,adjtime} according to your timezone, but with RTC clock as UTC (very important). RTC as local time does not work with systemd and may not work sometimes even with initscripts.
3. Run "sudo hwclock --localtime --hctosys". This (temporarily) makes the system clock the correct time.
4. Synchronise the system (software) clock using NTP. I use chrony as NTP daemon, but any NTP daemon should do. This is needed even after step 3.
5. Stop the NTP daemon systemd service.
6. Run "sudo hwclock --utc --systohc". This changes the RTC time to current UTC time.
7. Start the NTP daemon systemd service.
I rebooted the machine, set the bios clock correctly i.e. 5.30 hours behind local time and now I have correct clock even after couple of reboots. That's sufficient? -- Regards Shridhar