Nếu hệ thống của bạn khởi động kép cả Windows và Linux, bạn có thể nhận thấy rằng không thể để đồng hồ hệ thống đồng bộ hóa. Không có vấn đề làm thế nào bạn thay đổi đồng hồ trong một hệ điều hành, nó không sửa chữa vấn đề với hệ điều hành khác. Điều này là do sự bất đồng về phương pháp giữ thời gian giữa Windows và các hệ điều hành dựa trên Unix. May mắn thay, có một sửa chữa tương đối dễ dàng cho điều đó.

Lý do tại sao điều này xảy ra?

Máy tính của bạn lưu trữ thời gian hiện tại trong một đồng hồ trên bo mạch chủ của bạn. Điều này cho phép máy tính theo dõi thời gian ngay cả khi đã tắt. Để giải thích múi giờ, các hệ điều hành khác nhau sử dụng các phương thức khác nhau. Windows giả định thời gian cục bộ được lưu trữ trong bo mạch chủ, do đó, nó không áp dụng bất kỳ loại bù trừ múi giờ nào. Linux, mặt khác, sẽ giải thích thời gian trên bo mạch chủ như UTC (aka Greenwich Mean Time) và áp dụng một bù đắp múi giờ để hiển thị thời gian địa phương.

Cả hai hệ thống này hoạt động hoàn toàn độc lập. Vấn đề xảy ra khi bạn khởi động kép một hệ thống, chạy Windows và Linux ra khỏi cùng một bo mạch chủ. Khi hệ điều hành buộc phải chia sẻ một cửa hàng thời gian, đồng hồ sẽ không đồng bộ hóa.

Có hai cách khác nhau chúng ta có thể khắc phục vấn đề này: chúng ta có thể thay đổi cách Linux giải thích thời gian đã lưu trữ hoặc thực hiện tương tự với Windows.

Tùy chọn 1: Làm cho Linux sử dụng giờ địa phương

Cách đáng tin cậy nhất để làm cho Linux và Windows đồng ý vào thời gian đó là thay đổi phương pháp lưu giữ thời gian của Linux. Mặc dù điều này không được hỗ trợ rõ ràng nhưng nó đáng tin cậy hơn nhiều so với thực hiện tương tự trong Windows. Nó hoạt động trên bất kỳ hương vị nào của Linux sử dụng systemd, bao gồm Ubuntu, Fedora, Red Hat, Debian và Mint. Thay đổi thời gian Windows thường hoạt động tốt quá, nhưng đôi khi nó có thể dẫn đến sự bất ổn trong phần mềm của bên thứ ba dự kiến ​​thời gian được lưu trữ là giờ địa phương.

1. Mở Terminal và chạy lệnh sau:

 timedatectl set-local-rtc 1 --điều chỉnh đồng hồ hệ thống 

Điều này sẽ cho hệ thống hiểu thời gian lưu trữ của bo mạch chủ của bạn như giờ địa phương. Linux sẽ không còn áp dụng điều chỉnh múi giờ cho thời gian được lưu trữ trên bo mạch chủ nữa. Kết quả là đồng hồ của bạn sẽ đồng bộ hóa.

Nếu bạn cần phải đảo ngược lệnh, hãy đổi từ 1 thành 0:

 timedatectl set-local-rtc 0 --điều chỉnh đồng hồ hệ thống 

Tùy chọn 2: Đặt Windows sử dụng UTC

Bạn cũng có thể thay đổi cách Windows xem thời gian hệ thống. Tinh chỉnh này sẽ khiến Windows giải thích thời gian được lưu trữ trên bo mạch chủ dưới dạng UTC, sau đó Linux có thể giải thích là múi giờ chính xác. Trong khi điều này thường hoạt động tốt, một số ứng dụng dựa vào thời gian bo mạch chủ là giờ địa phương. Kết quả là, các lỗi khó theo dõi đôi khi có thể xuất hiện. Điều đó làm cho tùy chọn này ít hấp dẫn hơn so với tùy chọn đầu tiên.

1. Tắt “Đặt thời gian tự động” trong “Thời gian & Ngôn ngữ” trong ứng dụng Cài đặt. Điều này sẽ ngăn Windows hoàn nguyên các thay đổi mà chúng ta sắp thực hiện.

2. Mở Registry Editor bằng cách gõ regedit vào Start Menu.

3. Tìm khoá đăng ký sau trong ngăn bên trái của trình chỉnh sửa đăng ký. Để đến đó nhanh chóng, dán vị trí vào thanh địa chỉ của trình soạn thảo đăng ký:

 HKEY_LOCAL_MACHINE \ System \ CurrentControlSet \ Control \ TimeZoneInformation 

4. Nhấp chuột phải vào khóa “TimeZoneInformation” trong khung bên trái và chọn “New -> DWORD (32-bit) Value” từ trình đơn ngữ cảnh.

5. Đặt tên cho giá trị mới của bạn là “RealTimeIsUniversal”.

6. Nhấp đúp vào giá trị bạn vừa tạo, đặt giá trị thành “1” và nhấp “OK”.

Phần kết luận

Cách an toàn nhất để đồng bộ hóa các đồng hồ hệ thống của bạn trên một hệ thống khởi động kép là điều chỉnh cách Linux giải thích thời gian. Nếu điều đó không làm việc cho bạn (hoặc nếu bạn đang sử dụng macOS thay vì Linux), bạn cũng có thể chỉnh sửa Windows registry để thay đổi cách Windows hiểu thời gian của bo mạch chủ.