Thời gian khác nhau trong Windows và Linux Mint


18

Tôi đã cài đặt Linux Mint đầu tiên trên Acer Aspire 4930 và sau đó khởi động kép với Windows 7.

Tôi luôn thấy thời gian chính xác trên Linux Mint nhưng khi khởi động vào Windows, thời gian được chuyển ngược lại sau vài giờ, ngay cả sau khi đặt lại thời gian, khi khởi động lại, nó lại hiển thị sai thời gian.


Câu hỏi:

  1. Tại sao chuyện này đang xảy ra?

  2. Tôi có thể làm gì với nó?

Câu trả lời:


17

Trên Windows, đồng hồ RTC của hệ thống thường được giữ theo giờ địa phương. Trong Unix và Linux, theo truyền thống, nó được giữ trong UTC và /etc/localtimeđược sử dụng để chỉ ra múi giờ hiện tại để thời gian hiển thị là chính xác.

Hai thế giới quan này va chạm trong cấu hình khởi động kép vì chỉ có một RTC. Thông thường, bạn nói với Linux rằng RTC là giờ địa phương (vì Windows không thể được nói). Điều này thay đổi từ một Linux khác, nhưng vì Mint là như Ubuntu có lẽ bạn có thể thiết lập UTC=notrong /etc/default/rcS. Sau đó, bạn có thể đặt đồng hồ thành giờ cục bộ trong Windows và Linux sẽ để yên sau đó.


Lưu ý của biên tập viên :

Tệp đó không có trong Linux Mint 19 (hay chính xác hơn là từ cơ sở Ubuntu 18.04):

/etc/default/rcS

2
UTC đã được đặt thành không, sự khác biệt về thời gian vẫn còn đó.
Đạn đạo

5

Mint 18.2 KDE dường như miễn dịch với các bản sửa lỗi khác (bao gồm cả các bản sửa lỗi bổ sung mà tôi tìm thấy trong một tìm kiếm). Các tập tin nêu tại của aecolleyerror404 của câu trả lời hoặc không còn tồn tại hoặc dường như không còn là nơi các thiết lập được tham chiếu, ít nhất là trong phiên bản KDE hiện hành. Lệnh trong câu trả lời của Julie Pelletier có tác dụng với 18.2 Cinnamon chứ không phải 18.2 KDE.

Sau khi thử một nửa tá giải pháp được đề xuất, sau đây đã sửa nó cho 18,2 KDE. Với thời gian chính xác được hiển thị, hãy chạy lệnh terminal sau:

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

Nguồn: Mẹo và thủ thuật cho Linux Mint sau khi cài đặt [Mint 18 - Phiên bản quế]

Điều này cũng sẽ làm việc cho Cinnamon như một giải pháp thay thế và tôi cũng giả sử các DE khác.

Ghi chú của biên tập viên:

  • Không có sudoyêu cầu, chạy lệnh đó như người dùng của bạn.

  • Nó không tồn tại khi khởi động lại, nên là vĩnh viễn.

  • Đã thử nghiệm trên Linux Mint 19.1 Cinnamon, dựa trên Ubuntu 18.04.


Tôi xác nhận, nó hoạt động trên Mint 18.3 Cinnamon.
dchrom

@Vlastimil, đã được một lúc kể từ khi tôi làm điều này. Hồi ức của tôi là sudo không bắt buộc (nếu có, tôi sẽ đưa nó vào câu trả lời và các bản sửa lỗi tương tự cũng không đề cập đến sudo, vì vậy tôi khá chắc chắn là không). Và vâng, điều này vẫn tồn tại.
fixer1234

@ fixer1234 Cảm ơn rất nhiều, bạn đời! Bạn đã cứu ngày của tôi và tôi nghĩ mọi người là :)
LinuxSecurityFreak

3

Cách làm chung nhất là với:

hwclock --systohc --localtime

vốn liên tục trên các lần khởi động lại và hoạt động trên hầu hết các hệ thống.


Nếu đồng hồ của bạn hiện đang hiển thị thời gian chính xác, thì lệnh bạn thực sự cần hwclock --systohc --localtime, điều đó sẽ đặt đồng hồ phần cứng thành giờ cục bộ bằng cách sử dụng giá trị hiện được hệ thống hiển thị. Tuy nhiên, nếu đồng hồ của bạn hiện không chính xác (tức là đồng hồ phần cứng là giờ địa phương, nhưng hệ thống sẽ thêm phần bù cho múi giờ của bạn, dẫn đến giá trị hiển thị không chính xác), thì bạn cần hwclock --hctosys --localtime.
youen

@youen, tôi đã có tình huống đó và sửa đổi của bạn đã ném thời gian theo hướng khác. Cách khắc phục đối với tôi là đặt lại đồng hồ đúng thời gian và sau đó sử dụng lệnh trong câu trả lời của Julie.
fixer1234

@ fixer1234 OK, lạ. Thành thật mà nói, tôi đã không thử lệnh thứ hai trong bình luận của mình, vì lúc đó tôi đã sửa đồng hồ. Tuy nhiên, tôi tin rằng việc chạy bất kỳ lệnh nào trong số các lệnh này và sau đó đặt đồng hồ về thời gian hiển thị chính xác sẽ thực hiện thủ thuật (chạy lại lệnh đầu tiên có lẽ không cần thiết nếu bạn đã thực hiện lệnh thứ hai). Rất vui vì cuối cùng nó đã làm việc cho bạn :)
youen

1

CẢNH BÁO

Phương pháp này có lỗi trong các phiên bản trước 7 của Windows, nhưng nó giải quyết vấn đề ở phía Windows của phương trình, thay vì ở cuối Linux: bạn không phải thiết lập Linux để sử dụng thời gian cục bộ .


Lấy từ Arch Linux Wiki vinh quang và đáng quý nhất :

Một lý do người dùng thường đặt RTC theo giờ địa phương là khởi động kép với Windows (sử dụng giờ địa phương).

Tuy nhiên, Windows [có thể xử lý RTC là UTC] với một sửa chữa đăng ký đơn giản. Nên cấu hình Windows để sử dụng UTC, thay vì Linux để sử dụng giờ địa phương.

Sử dụng regedit, thêm một DWORDgiá trị với giá trị thập lục phân 1vào sổ đăng ký:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\TimeZoneInformation\RealTimeIsUniversal

Bạn có thể làm điều này từ Dấu nhắc lệnh của Quản trị viên đang chạy:

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

Hoặc, tạo tệp * .reg (trên màn hình nền) với nội dung sau và nhấp đúp vào tệp để nhập tệp vào sổ đăng ký:

Windows Registry Editor Version 5.00

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

Nếu những điều trên dường như không có tác dụng và một biến thể Windows 64 bit đang được sử dụng, sử dụng một QWORDgiá trị thay vì một DWORDgiá trị có thể giải quyết vấn đề.

Nếu Windows yêu cầu cập nhật đồng hồ do thay đổi DST, hãy để nó. Nó sẽ rời khỏi đồng hồ trong UTC như mong đợi, chỉ sửa thời gian hiển thị.

Đồng hồ phần cứng và thời gian đồng hồ hệ thống có thể cần được cập nhật sau khi đặt giá trị này. Nếu bạn gặp vấn đề với thời gian bù, hãy thử cài đặt lại tzdata và sau đó đặt lại múi giờ của bạn:

# timedatectl set-timezone America/Los_Angeles

Tôi thực sự đã có vấn đề này trên máy Windows của riêng tôi, nhưng cho đến nay tôi chỉ đơn thuần là bỏ qua nó; Tuy nhiên, tôi sẽ xem phương pháp này có hiệu quả không và báo cáo kết quả của tôi.
Alexej Magura

1
Nó làm việc cho tôi. Cảm ơn nhiều! Bằng cách này, tôi không phải sửa đổi mọi cài đặt Linux có trên PC của mình.
Lokesh

0

Sửa đổi (như gốc) /etc/timeadjbiến từ UTCđến LOCAL.

Điều này đã sắp xếp vấn đề mà không cần phải sử dụng regedit ở phía Windows.


0

Chạy một trong hai lệnh này khớp với giờ địa phương của bạn

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

'hoặc là'

timedatectl set-local-rtc 0 --adjust-system-clock
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.