หากระบบของคุณบูททั้ง Windows และ Linux คุณอาจสังเกตเห็นว่าไม่สามารถซิงค์นาฬิการะบบได้ ไม่ว่าคุณจะเปลี่ยนนาฬิกาใน OS ใด OS หนึ่งก็ไม่สามารถแก้ปัญหากับ OS อื่นได้ นี่เป็นเพราะความไม่ลงรอยกันเกี่ยวกับวิธีการรักษาเวลาระหว่างระบบปฏิบัติการที่ใช้ Windows และ Unix โชคดีที่มีวิธีแก้ไขที่ค่อนข้างง่ายสำหรับเรื่องนั้น
ทำไมสิ่งนี้ถึงเกิดขึ้น
คอมพิวเตอร์ของคุณจัดเก็บเวลาปัจจุบันเป็นนาฬิกาบนเมนบอร์ดของคุณ ซึ่งช่วยให้คอมพิวเตอร์สามารถติดตามเวลาได้แม้จะปิดอยู่ ในการพิจารณาเขตเวลา ระบบปฏิบัติการที่ต่างกันใช้วิธีการที่แตกต่างกัน Windows จะถือว่าเวลาท้องถิ่นถูกเก็บไว้ในเมนบอร์ด ดังนั้นจึงไม่ใช้การชดเชยโซนเวลาใดๆ ในทางกลับกัน Linux จะตีความเวลาบนเมนบอร์ดเป็น UTC (a.k.a. Greenwich Mean Time) และใช้การชดเชยเขตเวลาเพื่อแสดงเวลาท้องถิ่น
ระบบทั้งสองนี้ทำงานได้ดีอย่างสมบูรณ์แบบโดยอิสระ ปัญหาเกิดขึ้นเมื่อคุณบูทระบบโดยใช้ Windows และ Linux จากเมนบอร์ดเดียวกัน เมื่อระบบปฏิบัติการถูกบังคับให้แชร์ที่เก็บเวลา นาฬิกาจะไม่ซิงค์
มีสองวิธีที่เราสามารถแก้ไขปัญหานี้ได้:เราสามารถเปลี่ยนวิธีที่ Linux ตีความเวลาที่เก็บไว้หรือทำเช่นเดียวกันกับ Windows
ตัวเลือกที่ 1:ทำให้ Linux ใช้เวลาท้องถิ่น
วิธีที่น่าเชื่อถือที่สุดในการทำให้ Linux และ Windows ตกลงเรื่องเวลาคือเปลี่ยนวิธีรักษาเวลาของ Linux แม้ว่าจะไม่ได้รับการสนับสนุนอย่างชัดเจน แต่ก็มีความน่าเชื่อถือมากกว่าการทำแบบเดียวกันใน Windows เล็กน้อย ใช้งานได้กับ Linux ทุกรสชาติโดยใช้ systemd
ซึ่งรวมถึง Ubuntu, Fedora, Red Hat, Debian และ Mint การเปลี่ยนเวลาของ Windows มักจะใช้ได้ดีเช่นกัน แต่บางครั้งอาจนำไปสู่ความไม่เสถียรในซอฟต์แวร์ของบริษัทอื่นที่คาดว่าเวลาที่จัดเก็บไว้เป็นเวลาท้องถิ่น
1. เปิด Terminal และเรียกใช้คำสั่งต่อไปนี้:
timedatectl set-local-rtc 1 --adjust-system-clock
การดำเนินการนี้จะบอกให้ระบบแปลเวลาที่เมนบอร์ดของคุณเก็บไว้เป็นเวลาท้องถิ่น Linux จะไม่นำการปรับโซนเวลาไปใช้กับเวลาที่จัดเก็บไว้ในเมนบอร์ดอีกต่อไป ด้วยเหตุนี้ นาฬิกาของคุณจะซิงค์
หากคุณต้องการย้อนกลับคำสั่ง ให้เปลี่ยน 1 เป็น 0:
timedatectl set-local-rtc 0 --adjust-system-clock
ตัวเลือกที่ 2:ทำให้ Windows ใช้ UTC
คุณยังสามารถเปลี่ยนวิธีที่ Windows ดูเวลาของระบบได้ การปรับแต่งนี้จะทำให้ Windows ตีความเวลาที่เก็บไว้บนเมนบอร์ดเป็น UTC ซึ่ง Linux สามารถตีความว่าเป็นเขตเวลาที่ถูกต้องได้ แม้ว่าโดยทั่วไปจะใช้งานได้ดี แต่แอปพลิเคชั่นบางตัวขึ้นอยู่กับเวลาของเมนบอร์ดเป็นเวลาท้องถิ่น ด้วยเหตุนี้ บางครั้งจุดบกพร่องที่ติดตามยากอาจปรากฏขึ้น นั่นทำให้ตัวเลือกนี้เป็นที่ต้องการน้อยกว่าตัวเลือกแรกเล็กน้อย
1. ปิดใช้งาน "ตั้งเวลาอัตโนมัติ" ใต้ "เวลาและภาษา" ในแอปพลิเคชันการตั้งค่า ซึ่งจะป้องกันไม่ให้ Windows คืนค่าการเปลี่ยนแปลงที่เรากำลังจะทำ
2. เปิด Registry Editor โดยพิมพ์ regedit
ในเมนูเริ่ม
3. ค้นหาคีย์รีจิสทรีต่อไปนี้ในบานหน้าต่างด้านซ้ายของตัวแก้ไขรีจิสทรี หากต้องการไปที่นั่นอย่างรวดเร็ว ให้วางตำแหน่งลงในแถบที่อยู่ของตัวแก้ไขรีจิสทรี:
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\TimeZoneInformation
4. คลิกขวาที่คีย์ "TimeZoneInformation" ในบานหน้าต่างด้านซ้ายและเลือก "ใหม่ -> ค่า DWORD (32 บิต)" จากเมนูบริบท
5. ตั้งชื่อค่าใหม่ของคุณว่า “RealTimeIsUniversal”
6. ดับเบิลคลิกที่ค่าที่คุณเพิ่งสร้าง ตั้งค่าเป็น “1” แล้วคลิก “ตกลง”
บทสรุป
วิธีที่ปลอดภัยที่สุดในการซิงค์นาฬิการะบบของคุณบนระบบดูอัลบูตคือการปรับวิธีที่ Linux ตีความเวลา หากไม่ได้ผลสำหรับคุณ (หรือหากคุณใช้ macOS แทน Linux) คุณยังสามารถแก้ไขรีจิสทรีของ Windows เพื่อเปลี่ยนวิธีที่ Windows เข้าใจเวลาของเมนบอร์ดได้