Windows vs Linux Giờ địa phương?


40

Kể từ khi tôi bắt đầu sử dụng Linux trong dualboot với Windows, tôi nhận thấy rằng khi tôi khởi động lại máy, thời gian trên HĐH khác là sai, ví dụ: 12:00 trên Linux, sau đó tôi khởi động lại và trên Windows là 18:00 và Khi tôi kiểm tra BIOS, RTC được đặt thành 18:00. Vì múi giờ của tôi là -06: 00 CST, tôi giả sử Linux chỉ đặt thời gian của RTC thành UTC và tính lại thời gian dựa trên múi giờ, trong khi Windows chỉ đặt RTC thành giờ địa phương. Cả hai đều sử dụng cùng một máy chủ NTP để đồng bộ hóa thời gian.

Câu hỏi là, cái nào đang làm đúng? Tôi nên đặt cài đặt múi giờ thành UTC nào để có thời gian phù hợp cho cả hai?



câu hỏi phụ: tại sao điều này không xảy ra với các phiên bản Windows và Linux cũ hơn?
golimar

Câu trả lời:


16

Không phải là sai, nhưng sử dụng UTC là đúng hơn. RTC không có múi giờ; nó chỉ là một chiếc đồng hồ treo tường ngu ngốc. Nếu múi giờ địa phương của bạn tôn vinh DST (trong đó có nhiều hương vị và quy tắc thay đổi tùy ý), thì hai lần một năm, bạn phải đi và thay đổi nó. HĐH sẽ làm điều đó cho bạn, nhưng nếu RTC là UTC, thì HĐH sẽ thực hiện UTC-> bản dịch cục bộ - tại sao lại phải nghịch ngợm với đồng hồ? Hơn nữa, trong quá trình chuyển đổi "quay lại" của DST, RTC không thể cho bạn biết mấy giờ rồi! Đó là 1:30 sáng CDT hay CST?

Rõ ràng, Windows 8 hỗ trợ UTC cho RTC. Windows 7 cũng đã làm, nhưng đã có vấn đề .

Có một cuộc tranh luận tốt hơn chống lại điều này khi mọi người đặt đồng hồ BIOS của họ theo cách thủ công, nhưng thời gian dựa trên máy chủ phổ biến hơn nhiều.


68

Gần đây tôi đã phải đối mặt với cùng một vấn đề và đây là cách tôi khắc phục nó. Bạn cần thay đổi một chút trong cả hai hệ điều hành.

Tôi bắt đầu với Linux trước. Chạy các lệnh sau dưới dạng root.

ntpdate pool.ntp.org

Điều này sẽ cập nhật thời gian của bạn nếu không được đặt chính xác.

Bây giờ đặt đồng hồ phần cứng thành UTC bằng lệnh này.

hwclock --systohc --utc

Nguồn

Bây giờ khởi động vào Windows và thêm đăng ký sau. Chỉ cần tạo một tệp .reg bằng mã bên dưới trong Notepad. Lưu nó và chạy nó.

Windows Registry Editor Version 5.00

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

Nguồn

Từ lần khởi động tiếp theo trở đi, cả hai hệ điều hành sẽ hiển thị cho bạn thời gian chính xác.


6
Câu trả lời tài liệu tốt nhất với hướng dẫn cụ thể! +1.
bất cứ lúc nào

1
Nên bao gồm những phiên bản Windows mà chỉnh sửa đăng ký áp dụng cho.
Tanath

2
Khi nào Windows có được khả năng hiểu đồng hồ hệ thống giữ thời gian ngoài địa phương?
Đánh dấu

1
Tinh chỉnh sổ đăng ký này hoạt động cho Windows XP / Vista / 7/8 / 8.1. @Tanath
Ayan

3
@Mark Trong Windows XP.
Michael Hampton

4

Trường hợp thông thường là các hệ thống Linux có RTC (đồng hồ thời gian thực) được đặt thành UTC và việc chuyển đổi sang giờ địa phương được thực hiện trong không gian người dùng dựa trên dữ liệu múi giờ và TZbiến môi trường. Điều này "ít tệ hơn" vì nó giữ cho hệ thống RTC tăng đơn điệu và áp dụng bất kỳ phép thuật múi giờ nào sau đó, đảm bảo rằng không có tệp nào thường có dấu thời gian trong tương lai (có thể dễ dàng xảy ra ít nhất một lần mỗi năm, nếu RTC hệ thống được đặt thành giờ địa phương). Như Ken đã chỉ ra , bản thân RTC không có khái niệm về múi giờ, chỉ có thời gian.

Như bạn đã tìm thấy, điều này gây ra sự cố khi khởi động kép với một hệ thống không hoạt động bình thường theo cách đó, giống như họ hệ điều hành Microsoft thường mong đợi RTC được đặt thành giờ địa phương . Đúng, Windows NT (thực tế tôi nghĩ rằng tất cả đều quay trở lại NT 4) thực sự có thể hoạt động với RTC được đặt thành UTC, nhưng ít nhất cuối cùng tôi đã thấy nó không thực sự là một cấu hình được hỗ trợ và có một số cảnh báo.

Giải pháp dễ dàng trong trường hợp của bạn có lẽ là đặt RTC thành giờ địa phương, hãy nói với hệ thống Linux của bạn rằng RTC được đặt thành giờ địa phương (cơ chế chính xác của việc này thay đổi theo phiên bản phân phối và phát hành, nhưng rõ ràng là trong Ubuntu bạn đặt UTC=notrong / vv / default / rcS ), sau đó định cấu hình các hệ điều hành sao cho chỉ một trong số chúng (tốt nhất là hệ thống bạn sử dụng nhiều nhất, vì thời gian hiển thị trong tất cả các hệ điều hành khác sẽ không chính xác hai lần một năm cho đến khi nó được khởi động và có cơ hội để sửa nó) xử lý thay đổi thời gian tiết kiệm ánh sáng ban ngày . Và sống với những nhược điểm, có thể quản lý được trên một hệ thống người dùng.

Bạn cũng có thể đặt phía Windows sử dụng UTC làm múi giờ và tắt thay đổi thời gian tiết kiệm ánh sáng ban ngày tự động trong Windows và giữ cho Linux được đặt RTC trong UTC và hiển thị thời gian được chuyển đổi theo thông lệ của nó. Tuy nhiên, điều này sẽ khiến Windows hiển thị ngày và giờ trong UTC, đây có thể không phải là điều bạn thực sự muốn. Đó không phải là vấn đề lớn đối với người châu Âu chúng ta, những người gần như mất ba giờ từ UTC, nhưng có thể là vấn đề lớn hơn ở Mỹ. Đây có thể là một tùy chọn thực tế hơn nếu bạn chỉ thỉnh thoảng sử dụng Windows và HĐH chính của bạn là Linux hoặc một số HĐH nhận biết RTC-UTC khác.


Bạn có bất kỳ thông tin nào về "nó không thực sự là một cấu hình được hỗ trợ và có một số cảnh báo."?
Random832

@ Random832 Hãy để tôi xem nếu tôi có thể tìm thấy điều đó. Tôi biết tôi đã nhìn thấy nó trước đây, nhưng bây giờ dường như không thể tìm thấy nó với một tìm kiếm nhanh trên google.
CVn 3/03/2015

2

Nếu bạn khởi động kép và có xung đột thời gian giữa Windows và Ubuntu, điều này xảy ra do Ubuntu lưu trữ thời gian trên đồng hồ phần cứng là UTC theo mặc định trong khi Microsoft Windows lưu trữ thời gian là giờ địa phương, do đó gây ra xung đột giữa Ubuntu và Windows.

Bạn cần thiết lập hệ thống Linux của mình để sử dụng giờ địa phương như được giải thích ở đây trong hướng dẫn này cho Ubuntu .


Nó đang sử dụng giờ địa phương và tôi biết rằng nó thực sự lưu trữ thời gian dưới dạng UTC (nếu bạn ít nhất đọc câu hỏi) và tôi biết tôi có thể làm gì để khắc phục điều này, câu hỏi là ai thực sự làm đúng thay đổi khác thay thế.
arielnmz

Theo mặc định, Windows sử dụng giờ địa phương, Mac OS sử dụng UTC và các hệ điều hành giống UNIX khác nhau. Nói chung, một hệ điều hành sử dụng tiêu chuẩn UTC sẽ xem xét thời gian CMOS (đồng hồ phần cứng) là thời gian UTC (GMT, giờ Greenwich) và điều chỉnh nó trong khi cài đặt thời gian Hệ thống khi khởi động theo múi giờ của bạn.

Một lần nữa, tôi nhận thức được điều đó, tôi chỉ muốn biết HĐH nào làm đúng, vì vậy tôi có thể đặt múi giờ của windows thành UTC và sửa lỗi này, hoặc chỉ cách khác.
arielnmz

@MagomedSegaIsmailov Mac OS có chạy trên bất kỳ hệ thống nào sử dụng BIOS RTC không? Tôi đã giả định rằng EFI cung cấp một số sự tỉnh táo.
Random832

0

Tôi khởi động kép windows 10 và phối lại os và chỉ cần làm theo hướng dẫn cho windows đã hoạt động với tôi cả hai lần đều đúng. Tôi đã sử dụng dòng lệnh để thêm tập lệnh của bạn vì nó dễ dàng hơn


Vui lòng không thêm "cảm ơn" làm câu trả lời. Đầu tư một chút thời gian vào trang web và bạn sẽ có đủ đặc quyền để nâng cao câu trả lời bạn thích, đó là cách nói siêu cảm ơn của bạn.
DavidPostill
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.