หากคอมพิวเตอร์ของคุณ Dual Boot Windows และ Linux คุณอาจสังเกตว่าไม่สามารถซิงค์นาฬิการะบบได้เลย ไม่ว่าจะเปลี่ยนนาฬิกาใน OS ไหน OS อีกตัวก็ยังผิดปกติ สิ่งนี้เกิดจากความขัดแย้งเรื่องวิธีการนับเวลาระหว่าง Windows และ OS แบบ Unix-based โชคดีที่มีวิธีแก้ค่อนข้างง่าย
ทำไมจึงเกิดขึ้น?
คอมพิวเตอร์เก็บเวลาปัจจุบันไว้ในนาฬิกาบนเมนบอร์ด ทำให้ติดตามเวลาได้แม้ปิดเครื่อง เพื่อปรับเขตเวลา OS ต่างๆ ใช้วิธีต่างกัน Windows สมมติว่าเวลาท้องถิ่น (Local Time) ถูกเก็บในเมนบอร์ด จึงไม่ปรับ offset เขตเวลา Linux ตีความว่าเวลาบนเมนบอร์ดคือ UTC (Greenwich Mean Time) และปรับ offset เขตเวลาเพื่อแสดงเวลาท้องถิ่น
ทั้งสองระบบทำงานได้ดีเมื่อใช้แยกกัน ปัญหาเกิดเมื่อ Dual Boot บนเมนบอร์ดเดียวกัน เมื่อ OS บังคับให้ใช้ที่เก็บเวลาร่วมกัน นาฬิกาก็ไม่ซิงค์
มี 2 วิธีแก้: เปลี่ยนวิธี Linux ตีความเวลาที่เก็บ หรือทำเช่นเดียวกับ Windows
ตัวเลือก 1: ทำให้ Linux ใช้ Local Time
วิเชียรที่น่าเชื่อถือที่สุดคือเปลี่ยนวิธีนับเวลาของ Linux แม้ไม่ได้รับการสนับสนุนอย่างชัดเจน แต่น่าเชื่อถือกว่าเปลี่ยน Windows เพราะ Windows บางครั้งทำให้ซอฟต์แวร์協力廠商ที่คาดหวังเวลา Local Time เกิดความไม่เสถียร ทำงานได้กับ Linux ทุกรุ่นที่ใช้ systemd เช่น Ubuntu, Fedora, Red Hat, Debian, Mint
1. เปิด Terminal รันคำสั่ง:
timedatectl set-local-rtc 1 --adjust-system-clock

คำสั่งนี้บอกระบบให้ตีความเวลาที่เก็บในเมนบอร์ดเป็น Local Time Linux จะไม่ปรับ offset เขตเวลาอีกต่อไป นาฬิกาก็จะซิงค์
หากต้องการย้อนกลับ ให้เปลี่ยน 1 เป็น 0:
timedatectl set-local-rtc 0 --adjust-system-clock
ตัวเลือก 2: ทำให้ Windows ใช้ UTC
คุณสามารถเปลี่ยนวิธี Windows มองเวลาระบบ ทำให้ Windows ตีความเวลาบนเมนบอร์ดเป็น UTC ซึ่ง Linux ตีความได้ถูกต้อง แม้โดยทั่วไปทำงานได้ดี แต่บางแอปพลิเคชันอาศัยเวลาเมนบอร์ดเป็น Local Time ทำให้บั๊กยากค้นหาอาจเกิดขึ้น ทำให้ตัวเลือกนี้น่าพอใจน้อยกว่า
1. ปิด "Set time automatically" ใน "Time & Language" ใน Settings เพื่อป้องกัน Windows กลับค่าที่เราจะเปลี่ยน

2. เปิด Registry Editor พิมพ์ regedit ใน Start Menu

3. หา Registry Key ต่อไปนี้ในแผงซ้าย วางพาธใน Address bar เพื่อไปเร็ว:
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\TimeZoneInformation

4. คลิกขวาที่ Key "TimeZoneInformation" ด้านซ้าย เลือก "New -> DWORD (32-bit) Value"

5. ตั้งชื่อ Value ใหม่ว่า "RealTimeIsUniversal"

6. ดับเบิลคลิก Value ที่สร้าง ตั้งค่า Value data เป็น "1" คลิก OK

สรุป
วิธีปลอดภัยที่สุดซิงค์นาฬิกาในระบบ Dual Boot คือปรับวิธี Linux ตีความเวลา หากไม่ได้ (หรือใช้ macOS แทน Linux) สามารถแก้ Registry Windows เพื่อเปลี่ยนวิธี Windows เข้าใจเวลาเมนบอร์ด