เวลานาฬิกาปิดในการบู๊ตคู่


303

ระบบบู๊ตคู่ Windows XP Pro และ Ubuntu 12.04

ฉันตั้งค่าไบออสตามเวลาที่ถูกต้องและตั้งค่า Ubuntu สำหรับเวลาตะวันออกของสหรัฐอเมริกา อูบุนตูจะบูทและเวลาจะดับลงประมาณ 4 ชั่วโมง ถ้าฉันแก้ไขเวลาใน Ubuntu แล้วเมื่อฉันบูทใน Windows XP เวลาจะถูกปิดโดย + 4 ชั่วโมง

นี่คือการติดตั้งใหม่ของ 12.04 ฉันไม่ได้มีปัญหานี้ก่อนติดตั้ง Ubuntu อีกครั้ง

คำตอบ:


265

https://help.ubuntu.com/community/UbuntuTime#Multiple_Boot_Systems_Time_Conflicts

ความขัดแย้งของระบบการบูตหลายครั้ง

ระบบปฏิบัติการจัดเก็บและเรียกคืนเวลาในนาฬิกาฮาร์ดแวร์ที่อยู่บนแผงวงจรหลักของคุณเพื่อให้สามารถติดตามเวลาแม้ในขณะที่ระบบไม่มีพลังงาน ระบบปฏิบัติการส่วนใหญ่ (Linux / Unix / Mac) จะเก็บเวลาบนนาฬิกาฮาร์ดแวร์เป็นUTCตามค่าเริ่มต้นแม้ว่าบางระบบ (โดยเฉพาะอย่างยิ่ง Microsoft Windows) จะเก็บเวลาบนนาฬิกาฮาร์ดแวร์ตามเวลา 'ท้องถิ่น' สิ่งนี้ทำให้เกิดปัญหาในระบบการบู๊ตคู่หากทั้งสองระบบดูนาฬิกาฮาร์ดแวร์ต่างกัน

ข้อดีของการมีนาฬิกาฮาร์ดแวร์เป็น UTC คือคุณไม่จำเป็นต้องเปลี่ยนนาฬิกาฮาร์ดแวร์เมื่อเคลื่อนที่ระหว่างเขตเวลาหรือเมื่อ Daylight Saving Time (DST) เริ่มต้นหรือสิ้นสุดเนื่องจาก UTC ไม่มี DST หรือเขตเวลา

การเปลี่ยน Linux เพื่อใช้เวลาท้องถิ่นนั้นง่ายและเชื่อถือได้มากกว่าการเปลี่ยน Windows ให้ใช้ UTC ดังนั้นระบบ Linux / Windows ดูอัลบูตมักจะใช้เวลาท้องถิ่น

ตั้งแต่ Intrepid (8.10), UTC = ใช่เป็นค่าเริ่มต้น

ทำให้ Windows ใช้ UTC

หมายเหตุ:วิธีการนี้ไม่ได้รับการสนับสนุนใน Windows Vista และ Server 2008 แต่กลับมาพร้อมกับ Vista SP2, Windows 7, Server 2008 R2 และ Windows 8 / 8.1

เพื่อให้ MS Windows คำนวณเวลาจากนาฬิกาฮาร์ดแวร์เป็น UTC

สร้างไฟล์ชื่อWindowsTimeFixUTC.regด้วยเนื้อหาต่อไปนี้จากนั้นดับเบิลคลิกที่ไฟล์เพื่อรวมเนื้อหากับรีจิสทรี:

Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\TimeZoneInformation]
     "RealTimeIsUniversal"=dword:00000001

หมายเหตุ:บริการ Windows Time จะยังคงเขียนเวลาท้องถิ่นไปยัง RTC โดยไม่คำนึงถึงการตั้งค่ารีจิสทรีด้านบนเมื่อปิดเครื่องดังนั้นจึงสะดวกในการปิดการใช้งานบริการ Windows Time ด้วยคำสั่งนี้ (หากยังต้องการการซิงค์เวลาในขณะที่ Windows ใช้เวลาบุคคลที่สาม) โซลูชันการซิงค์):

sc config w32time start= disabled

การย้อนกลับการเปลี่ยนแปลง
คุณสามารถสร้างไฟล์ด้วยเนื้อหาต่อไปนี้จากนั้นดับเบิลคลิกที่ไฟล์เพื่อรวมในการเปลี่ยนแปลงดั้งเดิมดังที่แสดงด้านบน:

Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\TimeZoneInformation]
     "RealTimeIsUniversal"=-

หากบริการ Windows Time ถูกปิดใช้งานให้เปิดใช้งานอีกครั้งด้วยคำสั่ง:

sc config w32time start= demand

ทำให้ Linux ใช้เวลา 'ภายใน'

หากต้องการบอกระบบ Ubuntu ของคุณว่านาฬิกาฮาร์ดแวร์ถูกตั้งค่าเป็นเวลา 'ท้องถิ่น':

Pre-Ubuntu 15.04 ระบบ (เช่น Ubuntu 14.04 LTS):

  1. แก้ไข /etc/default/rcS
  2. เพิ่มหรือเปลี่ยนส่วนต่อไปนี้

    # Set UTC=yes if your hardware clock is set to UTC (GMT)
    UTC=no
    

ระบบ Ubuntu 15.04 ขึ้นไป (เช่น Ubuntu 16.04 LTS):

  1. เปิด terminal และดำเนินการคำสั่งต่อไปนี้

    timedatectl set-local-rtc 1
    

53
โอ้พระผู้เป็นเจ้า. ฉันไม่อยากจะเชื่อว่าพวกเขาโง่พอที่จะใช้เวลาท้องถิ่นกับนาฬิกาฮาร์ดแวร์ ทำไมคุณจะเคยทำเช่นนั้น?
iono

20
@tome เนื่องจากเนื่องจากไม่มีการเชื่อมต่อเครือข่ายในช่วงแรก ๆ ของ MS-DOS และมันก็ไม่ได้เป็นเรื่องปกติที่จะย้ายเครื่องคอมพิวเตอร์ไปจนถึงที่มันย้ายเขตเวลา (และใช่แม้ว่าจะพิจารณาประวัติศาสตร์นั้นแล้วมันก็ยังไม่เป็นการเคลื่อนไหวที่ดีที่สุด)
Jon Hanna

9
@twome แม้ว่าฉันจะเห็นด้วยกับคุณอีกครั้งนาฬิกาฮาร์ดแวร์เป็นสากลเพราะมันไม่ได้เก็บข้อมูลเขตเวลามีปัญหาเล็กน้อยกับที่: A) BIOS / UEFI มีคุณสมบัติต่าง ๆ เช่นปลุกอัตโนมัติ / นอนเวลาที่คุณ กำหนดเวลาสำหรับทริกเกอร์เหล่านั้น มันเป็นเรื่องแปลกที่จะกำหนดเวลาใน UTC - อย่างน้อยสำหรับผู้ใช้โดยเฉลี่ย B) ดังที่จอนกล่าวไว้ข้างต้นเหตุผลด้านความเข้ากันได้แบบย้อนหลัง
Shahriyar Imanov

5
ใน Windows PowerShell เรียกใช้คำสั่งนี้เพื่ออัปเดตคุณสมบัติของรีจิสทรีที่กล่าวถึงข้างต้น: New-ItemProperty -Path HKLM:\SYSTEM\CurrentControlSet\Control\TimeZoneInformation -Name RealTimeIsUniversal -PropertyType DWord -Value 00000001
Anatoly Mironov

6
สำหรับผู้ที่อ่านข้อความคุณต้องเปลี่ยนการตั้งค่าในหนึ่งในระบบปฏิบัติการไม่ใช่ทั้งสองอย่าง
Alexander Revo

67

ในการตั้งค่านาฬิกา BIOS เป็นเวลาท้องถิ่นแทน UTC ในรุ่นที่ใช้ระบบ (15.04 ขึ้นไป) คุณจะต้องใช้timedatectlคำสั่ง อ้างอิงจาก Arch Wiki :

คุณสามารถตั้งค่าเวลามาตรฐานของนาฬิกาฮาร์ดแวร์ผ่านบรรทัดคำสั่ง คุณสามารถตรวจสอบสิ่งที่คุณได้ตั้งค่าไว้โดย:

$ timedatectl | grep local

นาฬิกาฮาร์ดแวร์สามารถสอบถามและตั้งค่าด้วยtimedatectl คำสั่ง ในการเปลี่ยนมาตรฐานเวลานาฬิกาฮาร์ดแวร์เป็นเวลาท้องถิ่นให้ใช้:

# timedatectl set-local-rtc 1

หากคุณต้องการเปลี่ยนกลับเป็นนาฬิกาฮาร์ดแวร์ที่อยู่ใน UTC ให้ทำ:

# timedatectl set-local-rtc 0

4
บน Ubuntu 16.10 มันช่วยทำ "hwclock --systohc --localtime" สิ่งนี้เขียน "local part" ไปที่ / etc / adjtime และทำให้ถาวร
user1050755

1
@ user1050755 คือก่อนหน้าหลังหรือแทนคำสั่ง timedatectl
nasch

36

เขตเวลาของคุณคือตะวันออกซึ่งปัจจุบันเป็น EDT (เวลาตามฤดูกาลของภาคตะวันออก) EDT คือUTCลบสี่ชั่วโมงเช่นเดียวกับการชดเชยที่คุณกำลังประสบ

เมื่อสิ่งนี้เกิดขึ้นในระบบดูอัลบูตมักจะเป็นเพราะระบบปฏิบัติการหนึ่งคิดว่านาฬิกาฮาร์ดแวร์ติดตามเวลาท้องถิ่นในขณะที่ระบบปฏิบัติการอื่นคิดว่านาฬิกาฮาร์ดแวร์ติดตาม UTC

ในกรณีของคุณนาฬิกาฮาร์ดแวร์ของคุณอาจถูกตั้งค่าเป็นเวลาท้องถิ่นและ:

  • Windows จะกำหนดให้ใช้เวลาท้องถิ่นซึ่ง (ได้รับการตั้งค่าเวลาของคุณ) เป็นที่ถูกต้อง
  • อูบุนตูตั้งค่าให้ใช้ UTC ซึ่ง (ได้รับการตั้งค่าเวลาของคุณ) เป็นที่ไม่ถูกต้อง

หากคุณเพิ่งจะรีเซ็ตเวลาในระบบ Ubuntu ไม่ว่าจะด้วยตนเองหรือโดยอัตโนมัติก็จะผิดใน Windows ดังนั้นจึงไม่ใช่ทางออกที่ดี

แต่ทางออกที่ดีที่สุดคือการกำหนดค่า Ubuntu ใหม่เพื่อรักษาเวลานาฬิกาฮาร์ดแวร์เป็นเวลาท้องถิ่น (จากนั้นคุณสามารถปล่อยให้การกำหนดค่า Windows ของคุณและเวลานาฬิกาฮาร์ดแวร์ของคุณโดยลำพัง)

หากต้องการทำสิ่งนี้ให้แก้ไข/etc/default/rcSเป็นรูทและตรวจสอบว่ามีUTC=no:

  1. กด+AltF2

  2. ประเภทและกดgksu gedit /etc/default/rcSEnter

  3. คุณอาจจะเห็นสิ่งนี้:

    # assume that the BIOS clock is set to UTC time (recommended)
    UTC=yes
    
    • ถ้าคุณทำเปลี่ยนไปUTC=yes UTC=no(หรือคุณอาจต้องการเพิ่มความคิดเห็นด้วยการเปลี่ยนเป็นสิ่งที่ชอบUTC=no # changed to accommodate Windows systemทุกอย่างในบรรทัดหลังจาก#ตัวละครคือความคิดเห็นและมีเพียงเพื่อให้การตั้งค่าของคุณเป็นมนุษย์อ่านง่ายขึ้น)
    • หากคุณไม่ค้นหาUTC=บรรทัดใด ๆ หากยังไม่มีเครื่องหมายข้อคิดเห็น (เช่นไม่มี#จุดเริ่มต้น) ให้เปลี่ยนตามนั้น ถ้ามันเป็นความเห็น uncomment มันโดยการลบชั้นนำและให้แน่ใจว่ามันพูดว่า#UTC=no
  4. บันทึกไฟล์และออกจากโปรแกรมแก้ไขข้อความ

  5. รีบูตเพื่อใช้การเปลี่ยนแปลงของคุณและตรวจสอบว่าเวลาทำงานอย่างถูกต้องในระบบปฏิบัติการทั้งสองนี้

ที่มา: https://help.ubuntu.com/community/UbuntuTime#Make_Linux_use_.27Local.27_time

(แต่นั่นเป็นเรื่องทั่วไปมากฉันเขียนคำตอบนี้เพื่อใช้กับสถานการณ์ของคุณโดยเฉพาะซึ่งเป็นปัญหาที่พบบ่อย)


โปรดทราบว่าสิ่งนี้อาจเกิดขึ้นได้เมื่อคุณอัปเกรดจาก Ubuntu หนึ่งรุ่นเป็นรุ่นถัดไปเช่นเดียวกับฉัน ฉันสามารถแนะนำให้ทำการแก้ไขข้างต้นแล้วยังซิงค์นาฬิกาของคุณด้วยตนเองในคำตอบนี้ (ปรับให้ทำงานกับ systemd): askubuntu.com/a/254846/139735
starbeamrainbowlabs

นี่ควรเป็นคำตอบที่ยอมรับได้ ฉันติดตั้ง Windows และทำงานได้ดีจากนั้นฉันติดตั้ง Ubuntu และนาฬิกาทำงานยุ่งเหยิง - ฉันไม่เห็นเหตุผลที่ฉันควรแก้ไขการตั้งค่า Windows หากเห็นได้ชัดว่าเป็นการเพิ่มลินุกซ์ที่ทำลายการกำหนดค่าของฉัน
Przemek D

13

การแก้ไข / etc / rcS ไม่ทำงานบนการติดตั้ง Win7 / Ubuntu 14.04x64 ของฉันหรือแก้ไขใด ๆ ผ่าน GUI นาฬิกา เนื่องจากรากของปัญหาคือเวลา BIOS เทียบกับเวลา UTC และ Windows มีอาการปวดเมื่อใช้งาน UTC ฉันเลือกจุดบนแผนที่ที่ใช้ UTC + 0 (ไม่มีการเปลี่ยนแปลงระหว่างเวลา BIOS และ UTC) .

ลองเปลี่ยนที่ตั้งของคุณเป็นเรคยาวิก (เมืองหลวงของไอซ์แลนด์) Voila! เวลา Ubuntu ของคุณจะเปลี่ยนเพื่อให้ตรงกับเวลา BIOS ของคุณ


ฮ่าฮ่า! น่ากลัว : DI ไม่สนใจตำแหน่งของฉันจริงๆ นี่เป็นการแก้ไขสองวินาที ขอบคุณมาก.
Pale Blue Dot
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.