เวลาต่างกันใน Windows และ Linux Mint


18

ฉันได้ติดตั้ง Linux Mint บน Acer Aspire 4930 แล้วดูอัลบูตด้วย Windows 7

ฉันมักจะเห็นเวลาที่ถูกต้องใน Linux Mint แต่เมื่อบูตเข้าสู่ระบบ Windows เวลาจะถูกเลื่อนกลับในเวลาไม่กี่ชั่วโมงแม้หลังจากรีเซ็ตเวลาแล้วเมื่อรีบูตเครื่องจะแสดงเวลาที่ไม่ถูกต้องอีกครั้ง


คำถาม:

  1. ทำไมสิ่งนี้จึงเกิดขึ้น

  2. ฉันจะทำอะไรได้บ้าง

คำตอบ:


17

บน Windows นาฬิกา RTC ของระบบจะถูกเก็บไว้ตามเวลาท้องถิ่น ใน Unix และ Linux จะเก็บไว้ใน UTC และ/etc/localtimeใช้เพื่อระบุเขตเวลาปัจจุบันเพื่อให้เวลาที่แสดงนั้นถูกต้อง

worldviews ทั้งสองนี้ชนกันในการกำหนดค่าดูอัลบูตเนื่องจากมีเพียง RTC เดียว โดยปกติคุณบอก Linux ว่าสมมติว่า RTC เป็นเวลาท้องถิ่น (เพราะ Windows ไม่สามารถบอกได้) นี้จะแตกต่างจากที่หนึ่งไปยังอีก Linux แต่ตั้งแต่มิ้นท์เป็นเหมือน Ubuntu คุณอาจจะสามารถตั้งค่าในUTC=no /etc/default/rcSจากนั้นคุณสามารถตั้งค่านาฬิกาเป็นเวลาท้องถิ่นใน Windows และ Linux จะปล่อยให้อยู่คนเดียวหลังจากนั้น


หมายเหตุของบรรณาธิการ :

ไฟล์นั้นไม่มีอยู่ตั้งแต่ Linux Mint 19 (หรือมากกว่านั้นอย่างแม่นยำตั้งแต่ Ubuntu 18.04 base):

/etc/default/rcS

2
UTC ได้รับการตั้งค่าเป็นไม่ความแตกต่างของเวลายังคงอยู่ที่นั่น
Ballistic

5

ดูเหมือนว่ามิ้นต์ 18.2 KDE จะมีภูมิคุ้มกันต่อการแก้ไขอื่น ๆ (รวมถึงการแก้ไขเพิ่มเติมที่ฉันพบในการค้นหา) ไฟล์ที่กล่าวถึงในของ aecolleyและerror404 ของคำตอบทั้งไม่มีอยู่อีกต่อไปหรือดูเหมือนจะไม่สามารถตั้งค่าที่มีการอ้างอิงอย่างน้อยในรุ่น KDE ปัจจุบัน คำสั่งในคำตอบของ Julie Pelletierใช้ได้กับ 18.2 Cinnamon แต่ไม่ใช่ 18.2 KDE

หลังจากลองใช้วิธีแก้ปัญหาที่แนะนำมาครึ่งโหลแล้วต่อไปนี้จะแก้ไขสำหรับ 18.2 KDE เมื่อเวลาที่ถูกต้องปรากฏขึ้นให้รันคำสั่งเทอร์มินัลต่อไปนี้:

timedatectl set-local-rtc 1 --adjust-system-clock

ที่มา: คำแนะนำและเคล็ดลับสำหรับ Linux Mint หลังจากการติดตั้ง [Mint 18 - Cinnamon Edition]

สิ่งนี้ควรใช้กับ Cinnamon เป็นทางเลือกอื่นและฉันถือว่า DE อื่น ๆ เช่นกัน

หมายเหตุของบรรณาธิการ:

  • ไม่sudoจำเป็นต้องเรียกใช้คำสั่งนั้นในฐานะผู้ใช้ของคุณ

  • มันยังคงมีอยู่ในการรีบูตควรจะถาวร

  • ทดสอบบน Linux Mint 19.1 Cinnamon ซึ่งเป็น Ubuntu 18.04


ฉันยืนยันว่ามันใช้ได้กับ Mint 18.3 Cinnamon
dchrome

@Vastastil มันไม่นานมานี้ตั้งแต่ฉันทำสิ่งนี้ ความทรงจำของฉันคือไม่ต้องใช้ sudo (ถ้าเป็นเช่นนั้นฉันจะรวมไว้ในคำตอบและการแก้ไขที่คล้ายกันไม่ได้อ้างถึง sudo เช่นกันดังนั้นฉันค่อนข้างแน่ใจว่ามันไม่ได้) และใช่สิ่งนี้ยังคงมีอยู่
fixer1234

@ fixer1234 ขอบคุณมากเพื่อน! คุณบันทึกวันของฉันและฉันคิดว่าทุกคน :)
LinuxSecurityFreak

3

วิธีทั่วไปที่สุดในการทำคือ:

hwclock --systohc --localtime

ซึ่งคงอยู่ตลอดการบู๊ตเครื่องและทำงานบนระบบส่วนใหญ่


หากนาฬิกาของคุณแสดงเวลาที่ถูกต้องในขณะนั้นคำสั่งที่คุณต้องการคือแน่นอนhwclock --systohc --localtimeซึ่งจะตั้งค่านาฬิกาฮาร์ดแวร์เป็นเวลาท้องถิ่นโดยใช้ค่าที่ระบบแสดงอยู่ในปัจจุบัน อย่างไรก็ตามหากนาฬิกาของคุณไม่ถูกต้องในขณะนี้ (เช่นนาฬิกาฮาร์ดแวร์เป็นเวลาท้องถิ่น แต่ระบบจะเพิ่มออฟเซ็ตสำหรับเขตเวลาของคุณส่งผลให้มีค่าที่แสดงไม่ถูกต้อง) คุณจำเป็นต้องhwclock --hctosys --localtimeใช้
คุณ

@youen ฉันมีสถานการณ์ที่และการเปลี่ยนแปลงของคุณเพียงแค่โยนเวลาออกไปในทิศทางอื่น การแก้ไขสำหรับฉันคือการรีเซ็ตนาฬิกาให้เป็นเวลาที่ถูกต้องจากนั้นใช้คำสั่งในคำตอบของ Julie
fixer1234

@ fixer1234 ตกลงแปลก ความจริงแล้วฉันไม่ได้ลองใช้คำสั่งที่สองในความคิดเห็นของฉันเนื่องจากฉันได้แก้ไขนาฬิกาไปแล้ว ฉันเชื่อว่าการรันคำสั่งใด ๆ เหล่านี้แล้วตั้งค่านาฬิกาให้แสดงเวลาที่ถูกต้องจะทำการหลอกลวง (การเรียกใช้คำสั่งแรกอีกครั้งอาจไม่จำเป็นถ้าคุณได้ดำเนินการครั้งที่สองแล้ว) ดีใจที่ได้ผลกับคุณในที่สุด :)
คุณ

1

คำเตือน

วิธีการนี้เป็นรถใน pre-7 รุ่นของ Windows แต่มันช่วยแก้ปัญหาในด้านของ Windows ของสมการมากกว่าที่สิ้นสุดลินุกซ์: คุณไม่ได้มีการตั้งลินุกซ์กับการใช้ localtime


นำมาจากรุ่งโรจน์มากที่สุดและนับถือArch Linux วิกิพีเดีย :

เหตุผลหนึ่งที่ผู้ใช้มักตั้ง RTC ในเวลาท้องถิ่นคือการดูอัลบูตด้วย Windows (ซึ่งใช้เวลาท้องถิ่น)

อย่างไรก็ตาม Windows [สามารถจัดการ RTC เป็น UTC] ได้ด้วยการแก้ไขรีจิสทรีอย่างง่าย ขอแนะนำให้กำหนดค่า Windows ให้ใช้ UTC แทนที่จะใช้ Linux เพื่อใช้เวลาท้องถิ่น

ใช้regeditเพิ่มDWORDค่าที่มีค่าเลขฐานสิบหก1ในรีจิสทรี:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\TimeZoneInformation\RealTimeIsUniversal

คุณสามารถทำได้จากพรอมต์คำสั่งของผู้ดูแลระบบที่ทำงาน:

reg add "HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\TimeZoneInformation" /v RealTimeIsUniversal /d 1 /t REG_DWORD /f

อีกวิธีหนึ่งคือสร้างไฟล์ * .reg (บนเดสก์ท็อป) ด้วยเนื้อหาต่อไปนี้แล้วดับเบิลคลิกเพื่อนำเข้าสู่รีจิสตรี:

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\TimeZoneInformation]
     "RealTimeIsUniversal"=dword:00000001

หากข้อความข้างต้นดูเหมือนว่าไม่มีผลกระทบและมีการใช้ Windows รุ่น 64 บิตการใช้ QWORDค่าแทนDWORDค่าอาจแก้ไขปัญหาได้

หาก Windows ขอให้อัปเดตนาฬิกาเนื่องจากมีการเปลี่ยนแปลง DST ให้ปล่อยไว้ มันจะออกจากนาฬิกาใน UTC ตามที่คาดไว้เพียงแก้ไขเวลาที่แสดง

นาฬิกาฮาร์ดแวร์และเวลานาฬิการะบบอาจจำเป็นต้องได้รับการอัปเดตหลังจากตั้งค่านี้ หากคุณมีปัญหาเกี่ยวกับการชดเชยเวลาลองติดตั้ง tzdata แล้วตั้งค่าเขตเวลาของคุณอีกครั้ง:

# timedatectl set-timezone America/Los_Angeles

ฉันได้รับปัญหานี้มากในเครื่อง Windows ของฉันเอง แต่จนถึงตอนนี้ฉันก็ไม่สนใจมัน อย่างไรก็ตามฉันจะดูว่าวิธีนี้ใช้งานได้และรายงานสิ่งที่ฉันค้นพบหรือไม่
Alexej Magura

1
มันใช้งานได้สำหรับฉัน ขอบคุณมาก! วิธีนี้ฉันไม่จำเป็นต้องแก้ไขการติดตั้ง Linux ทุกอย่างที่มีในพีซีของฉัน
Lokesh

0

แก้ไข (เป็น root) /etc/timeadjตัวแปรจากไปUTCLOCAL

สิ่งนี้จัดเรียงปัญหาโดยไม่ต้องทำซอกับ regedit ทางฝั่ง Windows


0

เรียกใช้หนึ่งในสองคำสั่งนี้ซึ่งตรงกับเวลาท้องถิ่นของคุณ

timedatectl set-local-rtc 1 --adjust-system-clock

'หรือ'

timedatectl set-local-rtc 0 --adjust-system-clock
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.