เวลาที่แตกต่างกันสำหรับ windows และ Ubuntu เวลาหายไปใน Ubuntu และ Windows

มีหลายครั้งที่เมื่อติดตั้งระบบที่สองสิ่งนี้มักจะเกิดขึ้น ลินุกซ์เวลาในระบบเริ่มผิดพลาด เช่น คุณกำลังทำงานภายใต้ของคุณ ลินุกซ์และตัดสินใจย้ายไปที่ หน้าต่างและพบว่าเวลาและวันที่ผิดอย่างสิ้นเชิงหรือในทางกลับกันก็เนื่องมาจากรูปแบบเวลาที่แตกต่างกันระบบปฏิบัติการเหล่านี้จึงทำงานต่างกันไปเป็นทฤษฎีเพียงเล็กน้อยเท่านั้น เรามาเริ่มกันที่ ลินุกซ์ระบบปฏิบัติการเหล่านี้ทำงานร่วมกับ UTC
เวลาสากลเชิงพิกัด- นาฬิกาทั้งฮาร์ดแวร์และซอฟต์แวร์อิงตามเวลามาตรฐานกรีนิช นั่นคือนาฬิกาให้เวลาสากลในเขตเวลาเป็นศูนย์ ตัวอย่างเช่น หากเขตเวลาของคุณคือ GMT+3 มอสโก นาฬิกาจะช้ากว่าสามชั่วโมง และผู้ใช้ในพื้นที่จะเพิ่มการแก้ไขเขตเวลาในเวลานี้ เช่น บวก +3 ผู้ใช้แต่ละคนจะเพิ่มการแก้ไขที่เขาต้องการ ซึ่งดำเนินการบนเซิร์ฟเวอร์เพื่อให้ผู้ใช้แต่ละคนได้รับเวลาที่ถูกต้องสำหรับเขตเวลาของตน
หน้าต่างในทางกลับกันก็ทำงานร่วมกับ เวลาท้องถิ่น
เวลาท้องถิ่น- ในเวอร์ชันนี้ นาฬิกาซอฟต์แวร์จะทำงานตามเวลามาตรฐานกรีนิชด้วย แต่นาฬิกาฮาร์ดแวร์จะทำงานตามเวลาของโซนเวลาท้องถิ่น ผู้ใช้ไม่มีความแตกต่าง คุณยังคงต้องเพิ่มการปรับเปลี่ยนในเขตเวลาของคุณ แต่เมื่อโหลดและซิงโครไนซ์เวลา Windows จะลบ 3 ชั่วโมง (หรือการปรับโซนเวลาอื่น) ออกจากเวลาของฮาร์ดแวร์เพื่อให้เวลาของซอฟต์แวร์ถูกต้อง
ดูเหมือนว่าเราจะแยกทฤษฎีออกแล้ว ตอนนี้เรามาฝึกฝนกันต่อ และในตอนแรก เราจะโหลดเกี่ยวกับ หน้าต่างเรียกใช้คอนโซลในฐานะผู้ดูแลระบบและดำเนินการคำสั่งสำหรับระบบ 32 บิต
Reg เพิ่ม HKLM\SYSTEM\CurrentControlSet\Control\TimeZoneInformation /v RealTimeIsUniversal /t REG_DWORD /d 1
หรือสำหรับ 64 บิต
Reg เพิ่ม HKLM\SYSTEM\CurrentControlSet\Control\TimeZoneInformation /v RealTimeIsUniversal /t REG_QWORD /d 1
แต่นาฬิกาจะยังคงซิงโครไนซ์กับเวลาเซิร์ฟเวอร์โดยปิดบริการซิงโครไนซ์นาฬิกา
sc config w32time start= ปิดการใช้งาน
ตอนนี้เรารีบูทระบบของเราและเปิดใช้งาน ลินุกซ์เข้าสู่ระบบเทอร์มินัลด้านล่าง รากและดำเนินการคำสั่ง
timedatectl set-local-rtc 1 --adjust-system-clock
และ
sed -i "s/UTC=yes/UTC=no/" /etc/default/rcS
ดูสถานะของนาฬิกาฮาร์ดแวร์
sudo timedatectl
ตอนนี้เรารีบูตอีกครั้ง เข้า bios และตั้งวันที่และเวลา ตรวจสอบ...
หากเราจำเป็นต้องปิดการใช้งานทั้งหมดนี้ด้วยเหตุผลบางประการ เราก็รันคำสั่งใน Linux
timedatectl ชุด-local-rtc 0
และ
sed -i "s/UTC=no/UTC=yes/" /etc/default/rcS
ใน windows ให้คอนโซลในฐานะผู้ดูแลระบบ
Reg เพิ่ม HKLM\SYSTEM\CurrentControlSet\Control\TimeZoneInformation /v RealTimeIsUniversal /t REG_DWORD /d 0
และ
sc config w32time start = ความต้องการ
อีกทางเลือกหนึ่งจะเป็นดังต่อไปนี้ใน linux debian และอนุพันธ์
รันคำสั่งเพื่อตั้งเวลาท้องถิ่น
sudo hwclock --localtime --adjust
ถ้าเราอยากจะคืนมันกลับมา
sudo hwclock --utc --adjust
ตอนนี้มาตรวจสอบกัน
timedatectl | grep ท้องถิ่น
ถ้าคำตอบ
RTC ใน TZ ท้องถิ่น: ไม่
แล้วเวลาของเราก็จะเป็นไปตามกรีนิช แต่ถ้าเป็นคำตอบ
RTC ใน TZ ท้องถิ่น: ใช่
นั่นหมายความว่าเวลาของเรากำลังเดินตามระบบที่ตั้งไว้
นั่นคือทั้งหมด ฉันคิดว่ามันมีประโยชน์สำหรับคุณ

ในโหมด UEFI (บูตแบบปลอดภัย) เวลา BIOS ของฉันถูกต้อง

เมื่อฉันบูตเข้าสู่ Ubuntu แล้วบูตเข้าสู่ Windows 10 มันแสดงเวลาผิด ฉันต้องแก้ไขด้วยตนเองหรือทางออนไลน์ใน Windows 10 และเมื่อฉันรีบูตเป็น Windows 10 ก็ไม่ใช่ปัญหา นาฬิกาแสดงเวลาที่ถูกต้อง จากนั้นเมื่อฉันรีบูทเข้าสู่ Linux นาฬิกาก็ถูกต้อง แต่เมื่อกลับไปใช้ Windows 10 นาฬิกาก็เริ่มทำงานอีกครั้ง

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

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

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

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

ทำให้ Windows ใช้ UTC

บันทึก. เดิมวิธีนี้ไม่รองรับ Windows Vista และ Server 2008 แต่กลับมาพร้อมกับ Vista SP2, Windows 7, Server 2008 R2 และ Windows 8/8.1

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

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

ตัวแก้ไขรีจิสทรีของ Windows เวอร์ชัน 5.00 "RealTimeIsUniversal"=dword:00000001

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

Sc config w32time start= ปิดการใช้งาน

ยกเลิกการเปลี่ยนแปลง

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

ตัวแก้ไขรีจิสทรีของ Windows เวอร์ชัน 5.00 "RealTimeIsUniversal"=-

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

Sc config w32time start = ความต้องการ

ทำให้ Linux เป็น "ท้องถิ่น"

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

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

    # ตั้งค่า UTC=yes หากนาฬิกาฮาร์ดแวร์ของคุณตั้งค่าเป็น UTC (GMT) UTC=no

Ubuntu 15.04 และระบบที่สูงกว่า (เช่น Ubuntu 16.04 LTS):

    เปิดเทอร์มินัลแล้วรันคำสั่งต่อไปนี้

    หากคุณต้องการดูคำตอบบนเว็บไซต์ของเราสำหรับคำถามของคุณเกี่ยวกับทุกสิ่งที่เกี่ยวข้องกับเทคโนโลยี Apple, ระบบปฏิบัติการ Mac OS X (และการเปิดตัวบนพีซี) โปรดเขียนถึงเราผ่านทางหรือ

    เราได้รับคำถามต่อไปนี้:

    สวัสดีตอนบ่าย!
    Hackintosh ใช้งาน Snow Leopard, Windows 7 และ Ubuntu เวลาจะหายไปอย่างต่อเนื่องหลังจากรีบูต ((Mac OS จะตั้งค่ากลับ 4-5 ชั่วโมงเสมอ! บอกวิธีแก้ไขปัญหาให้ฉันทราบ

    มีปัญหากับ การซิงโครไนซ์เวลาไม่เพียงแต่เกี่ยวข้องกับ Hackintoshes เท่านั้น แต่ยังรวมถึง Mac จริง ๆ ที่ใช้ Windows ทำงานผ่าน Boot Camp อีกด้วย เหตุผลนี้ง่ายมาก: Mac OS X จะถือว่าเวลาที่บันทึกใน BIOS (หรือ EFI) จะถูกเขียนในรูปแบบนั้นเสมอ เวลาสากลเชิงพิกัด- กล่าวอีกนัยหนึ่งตาม Greenwich เธอได้เพิ่มการแก้ไขที่เหมาะสมสำหรับเขตเวลา

    แต่ Windows ทำสิ่งที่แตกต่างออกไป: มัน อ่านโดยตรงเวลาจาก BIOS และหากคุณเปลี่ยนครั้งนี้หรือซิงโครไนซ์โดยอัตโนมัติ มันจะถูกบันทึกใน BIOS ในรูปแบบที่ถูกต้อง: UTC+correction

    จะแก้ไขความขัดแย้งนี้ได้อย่างไร? มีสองวิธี: วิธีหนึ่งจากฝั่ง Mac OS และอีกวิธีหนึ่งจากฝั่ง Windows และ Linux

    โซลูชันที่ใช้ Mac OS X

    สมมติว่านี่ไม่ใช่วิธีที่ดีที่สุด สิ่งที่สำคัญที่สุดคือสำหรับ Mac OS X เราตั้งค่าเขตเวลาเป็นเวลามาตรฐานกรีนิช ตัวอย่างเช่นในการตั้งค่า (remote วันและเวลา, แท็บ เขตเวลา) เลือกเป็นท้องที่ของคุณ เรคยาวิก.

    นอกจากนี้บนแท็บ "วันและเวลา"อย่าลืมปิดการใช้งานการซิงโครไนซ์เวลาอัตโนมัติ ไม่เช่นนั้นจะแย่กว่าเดิม

    หลังจากขั้นตอนเหล่านี้ เวลาใน Windows จะถูกต้องเสมอ และ Mac OS X จะไม่ทำให้เกิดปัญหา แต่ทำไมนี่ถึงไม่ใช่วิธีที่ดีที่สุด? ความจริงก็คือถ้าคุณซิงโครไนซ์อุปกรณ์บางอย่างกับ Mac OS X เช่น iPhone เขตเวลาที่ไม่ถูกต้องจะบิดเบือนข้อมูลสำคัญจำนวนมาก ตัวอย่างเช่น เวลาของ SMS ที่เข้ามาจะเป็น Greenwich เช่นกัน

    โซลูชันที่ใช้ Windows และ Linux

    อีกวิธีหนึ่งคือให้ Windows และ Linux อ่านเวลาจาก BIOS เช่นเดียวกับที่ Mac OS ทำ โชคดีที่มีโอกาสเช่นนี้เกิดขึ้นจริง แต่มันก็ซ่อนอยู่ลึกมาก

    บน Windows คุณจะต้องเรียกใช้โปรแกรมจากหน้าต่าง Run ลงทะเบียนใหม่ตัวแก้ไขรีจิสทรีจากนั้นไปที่เธรด \HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\TimeZoneInformationและสร้างค่า DWORD ที่นั่นพร้อมชื่อ เรียลไทม์เป็นสากลและมีค่าเท่ากับหนึ่ง:

    บน Linux (อย่างน้อยบน Ubuntu) คุณต้องแก้ไขไฟล์ /etc/default/rcSในโปรแกรมแก้ไขข้อความใด ๆ และแทนที่เนื้อหาของพารามิเตอร์ "UTC=ไม่"บน "UTC=ใช่"

    หลังจากนั้นให้รีบูทใน Mac OS X และตั้งค่าโซนเวลาดั้งเดิมของคุณ ในเวลาเดียวกันคุณสามารถเปิดใช้งานการซิงโครไนซ์เวลาอัตโนมัติผ่านทางอินเทอร์เน็ต หลังจากรีบูตใน Windows และ Ubuntu คุณจะเห็นเวลาเดียวกันทุกประการ

    การใช้ระบบปฏิบัติการหลายระบบบนคอมพิวเตอร์เครื่องเดียวกันบางครั้งอาจทำให้ระบบปฏิบัติการขัดแย้งกันเมื่อใช้สิ่งเดียวกัน บางครั้งก็เกี่ยวข้องกับบางสิ่งที่เรียบง่ายเช่นเวลา แม้แต่ระบบปฏิบัติการพีซียอดนิยมเช่น Windows และ Ubuntu ก็ไม่สามารถเข้ากันได้และเปลี่ยนเวลาของกันและกันให้เป็นเวลาที่ไม่ถูกต้องอยู่ตลอดเวลา

    สาเหตุของปรากฏการณ์นี้ง่ายมาก: Windows รับรู้เวลาของระบบ (ซึ่งแสดงในการตั้งค่า CMOS) ตามเวลาท้องถิ่น (โดยคำนึงถึงเขตเวลา) และ Ubuntu - ตาม UTC (เวลามาตรฐานกรีนิช ไม่คำนึงถึง เขตเวลา). ด้วยเหตุนี้ พวกเขาจึงปรับเวลาของระบบให้เหมาะสมกับตรรกะของตน ซึ่งเป็นการละเมิดตรรกะของกันและกัน

    วิธีแก้ปัญหาก็ง่ายเช่นกัน: บังคับให้ Windows เพิ่มโซนเวลาชดเชยเวลาของระบบหรือป้องกันไม่ให้ Ubuntu เพิ่มออฟเซ็ตนี้

    การตั้งค่าใน Ubuntu

    ตั้งแต่เวอร์ชัน 16.04 เป็นต้นไป การตั้งค่าการแสดงเวลาสามารถเปลี่ยนได้โดยใช้สองคำสั่ง

    การเปิดใช้งานการแสดงเวลาท้องถิ่น:
    sudo hwclock --localtime --adjust

    การเปิดใช้งานการแสดงผล UTC:
    sudo hwclock --utc --adjust

    ใน Ubuntu เวอร์ชันเก่า คุณต้องแก้ไขไฟล์ rtC:

    sudo นาโน /etc/default/rcS

    คุณต้องเพิ่ม (เพื่อแสดงเวลาท้องถิ่น) หรือลบบรรทัดนี้ (เพื่อแสดงเวลา UTC):

    การตั้งค่าใน Windows

    ใน Windows การตั้งค่าระบบเกือบทั้งหมดจะได้รับการแก้ไขในรีจิสทรี TimeZoneInformation ซึ่งจำเป็นในสถานการณ์นี้ก็ไม่มีข้อยกเว้น ตั้งอยู่ในรีจิสทรีตามที่อยู่นี้:

    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\TimeZoneInformation

    ที่นี่คุณจะต้องเพิ่มหรือเปลี่ยนแปลงพารามิเตอร์ RealTimeIsUniversal ประเภทของมันคือ DWORD เพื่อให้เวลาของระบบอ่านเป็น UTC คุณต้องตั้งค่าเป็น 1 หากต้องการรับรู้ว่าเป็นเวลาท้องถิ่น คุณต้องตั้งค่าเป็น 0 หรือลบพารามิเตอร์นี้ออกทั้งหมด

    Registry Editor สามารถเปิดใช้งานได้โดยใช้คำสั่ง regedit