Đồng hồ đã tắt khi khởi động kép


303

Hệ thống khởi động kép Windows XP Pro và Ubuntu 12.04.

Tôi có bộ bios cho thời gian chính xác và Ubuntu được đặt cho giờ miền Đông Hoa Kỳ. Ubuntu sẽ khởi động và thời gian sẽ hết -4 giờ. Nếu tôi sửa thời gian trong Ubuntu thì khi tôi khởi động trong Windows XP, thời gian sẽ tắt sau 4 giờ.

Đây là bản cài đặt mới 12.04. Tôi không gặp vấn đề này trước khi cài đặt lại Ubuntu.

Câu trả lời:


265

https://help.ubfox.com/community/UbfoxTime#Mult Môn_Boot_Systems_Time_Conflicts

Nhiều xung đột thời gian hệ thống khởi động

Hệ điều hành lưu trữ và truy xuất thời gian trong đồng hồ phần cứng nằm trên bo mạch chủ của bạn để nó có thể theo dõi thời gian ngay cả khi hệ thống không có nguồn. Hầu hết các hệ điều hành (Linux / Unix / Mac) lưu trữ thời gian trên đồng hồ phần cứng là UTC theo mặc định, mặc dù một số hệ thống (đặc biệt là Microsoft Windows) lưu trữ thời gian trên đồng hồ phần cứng là thời gian 'cục bộ'. Điều này gây ra sự cố trong hệ thống khởi động kép nếu cả hai hệ thống xem đồng hồ phần cứng khác nhau.

Ưu điểm của việc có đồng hồ phần cứng là UTC là bạn không cần thay đổi đồng hồ phần cứng khi di chuyển giữa các múi giờ hoặc khi Giờ tiết kiệm ánh sáng ban ngày (DST) bắt đầu hoặc kết thúc vì UTC không có chế độ DST hoặc múi giờ.

Thay đổi Linux để sử dụng giờ địa phương dễ dàng và đáng tin cậy hơn so với thay đổi Windows để sử dụng UTC, vì vậy các hệ thống Linux / Windows khởi động kép có xu hướng sử dụng thời gian cục bộ.

Vì Intrepid (8.10), UTC = yes là mặc định.

Làm cho Windows sử dụng UTC

Lưu ý: Phương pháp này ban đầu không được hỗ trợ trên Windows Vista và Server 2008, nhưng đã trở lại với Vista SP2, Windows 7, Server 2008 R2 và Windows 8 / 8.1.

Để làm cho MS Windows tính thời gian từ đồng hồ phần cứng là UTC.

Tạo một tệp có tên WindowsTimeFixUTC.reg với các nội dung sau và sau đó nhấp đúp vào tệp để hợp nhất nội dung với sổ đăng ký:

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

Lưu ý: Dịch vụ Windows Time vẫn sẽ ghi giờ địa phương vào RTC bất kể cài đặt đăng ký ở trên khi tắt máy, vì vậy rất hữu ích để tắt dịch vụ Windows Time bằng lệnh này (nếu vẫn cần đồng bộ hóa thời gian trong khi Windows sử dụng bất kỳ thời gian nào của bên thứ ba giải pháp đồng bộ hóa):

sc config w32time start= disabled

Đảo ngược thay đổi
Bạn có thể tạo một tệp có nội dung sau đây và bấm đúp vào tệp để hợp nhất trong các thay đổi ban đầu, như trên:

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

Nếu dịch vụ Windows Time bị tắt, hãy bật lại bằng lệnh:

sc config w32time start= demand

Làm cho Linux sử dụng thời gian 'cục bộ'

Để thông báo cho hệ thống Ubuntu của bạn rằng đồng hồ phần cứng được đặt thành giờ 'cục bộ':

Các hệ thống Pre-Ubuntu 15.04 (ví dụ Ubuntu 14.04 LTS):

  1. biên tập /etc/default/rcS
  2. thêm hoặc thay đổi phần sau

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

Các hệ thống Ubuntu 15.04 trở lên (ví dụ: Ubuntu 16.04 LTS):

  1. mở một thiết bị đầu cuối và thực hiện lệnh sau

    timedatectl set-local-rtc 1
    

53
Chúa ơi. Tôi không thể tin rằng họ đủ ngu ngốc để sử dụng giờ địa phương trên đồng hồ phần cứng. Tại sao bạn sẽ bao giờ, bao giờ làm điều đó?
iono

20
@twome bởi vì không có nhiều cách thức kết nối mạng trong những ngày đầu của MS-DOS, và việc di chuyển một PC cho đến nay nó đã di chuyển các múi giờ. (Và vâng, ngay cả khi xem xét lịch sử đó, nó vẫn không phải là động thái tốt nhất).
Jon Hanna

9
@twome mặc dù tôi đồng ý với bạn rằng đồng hồ phần cứng vẫn là Universal, vì nó không lưu giữ thông tin múi giờ, nên có một số vấn đề với điều đó: A) BIOS / UEFI có nhiều tính năng như tự động đánh thức / hẹn giờ ngủ, trong đó bạn đặt thời gian cho các kích hoạt. Thật kỳ lạ khi đặt những khoảng thời gian đó trong UTC - ít nhất là đối với người dùng trung bình. B) Như Jon đã nói ở trên, lý do tương thích ngược.
Shahriyar Imanov

5
Trong Windows PowerShell chạy lệnh này để cập nhật thuộc tính đăng ký được đề cập ở trên: New-ItemProperty -Path HKLM:\SYSTEM\CurrentControlSet\Control\TimeZoneInformation -Name RealTimeIsUniversal -PropertyType DWord -Value 00000001
Anatoly Mironov

6
Đối với những người đọc lướt văn bản, bạn chỉ phải thay đổi cài đặt ở một trong các HĐH, không phải cả hai.
Alexander Revo

67

Để đặt đồng hồ BIOS thành giờ cục bộ thay vì UTC trong phiên bản dựa trên hệ thống (15.04 trở lên), bạn sẽ phải sử dụng timedatectllệnh. Theo Arch Wiki :

Bạn có thể đặt tiêu chuẩn thời gian đồng hồ phần cứng thông qua dòng lệnh. Bạn có thể kiểm tra những gì bạn đã thiết lập để sử dụng bằng cách:

$ timedatectl | grep local

Đồng hồ phần cứng có thể được truy vấn và thiết lập bằng timedatectl lệnh. Để thay đổi tiêu chuẩn thời gian của đồng hồ phần cứng thành giờ địa phương, hãy sử dụng:

# timedatectl set-local-rtc 1

Nếu bạn muốn trở lại đồng hồ phần cứng đang ở UTC, hãy làm:

# timedatectl set-local-rtc 0

4
Trên Ubuntu 16.10, nó đã giúp thực hiện "hwclock --systohc --localtime". Điều này viết "phần cục bộ" thành / etc / adjtime và do đó làm cho nó vĩnh viễn.
dùng1050755

1
@ user1050755 là trước, sau hay thay vì lệnh timedatectl?
mũi

36

Múi giờ của bạn là Đông , hiện là EDT (Giờ ban ngày miền Đông). EDT là UTC trừ bốn giờ, giống như mức bù mà bạn gặp phải.

Khi điều này xảy ra trên hệ thống khởi động kép, thường là do một hệ điều hành cho rằng đồng hồ phần cứng theo dõi giờ địa phương, trong khi hệ điều hành khác cho rằng đồng hồ phần cứng theo dõi UTC.

Trong trường hợp của bạn, đồng hồ phần cứng của bạn có thể được đặt thành giờ địa phương và:

  • Windows được đặt để sử dụng giờ địa phương, trong đó (với cài đặt thời gian của bạn) là chính xác .
  • Ubuntu được đặt để sử dụng UTC, (cài đặt thời gian của bạn) không chính xác .

Nếu bạn chỉ thiết lập lại thời gian trong hệ thống Ubuntu, bằng tay hoặc tự động , thì đó sẽ là sai trong Windows, vì vậy đó không phải là một giải pháp tốt.

Thay vào đó, giải pháp tốt nhất có lẽ là cấu hình lại Ubuntu để coi thời gian của đồng hồ phần cứng là giờ địa phương (sau đó bạn có thể để cấu hình Windows và thời gian đồng hồ phần cứng của mình, một mình).

Để làm điều này, chỉnh sửa /etc/default/rcSnhư root và đảm bảo nó có UTC=no:

  1. Nhấn Alt+ F2.

  2. gksu gedit /etc/default/rcSvà bấm Enter.

  3. Bạn có thể sẽ thấy điều này:

    # assume that the BIOS clock is set to UTC time (recommended)
    UTC=yes
    
    • Nếu bạn làm, thay đổi UTC=yesthành UTC=no. (Hoặc bạn cũng có thể muốn thêm một nhận xét, bằng cách thay đổi nó thành một cái gì đó giống như UTC=no # changed to accommodate Windows system. Mọi thứ trên một dòng sau một #ký tự là một nhận xét, và ở đó chỉ để làm cho các thiết lập của bạn dễ đọc hơn.)
    • Nếu bạn không, hãy tìm bất kỳ UTC=dòng nào . Nếu nó không bị lỗi (nghĩa là không có #từ đầu), hãy thay đổi nó cho phù hợp. Nếu nó được bình luận, bỏ ghi chú bằng cách loại bỏ hàng đầu #và chắc chắn rằng nó nói UTC=no.
  4. Lưu tệp và thoát khỏi trình soạn thảo văn bản.

  5. Khởi động lại để áp dụng các thay đổi của bạn và kiểm tra xem giờ đã hoạt động tốt trên cả hai hệ điều hành.

Nguồn: https://help.ubfox.com/community/UbfoxTime#Make_Linux_use_.27Local.27_time

(Nhưng điều đó rất chung chung; tôi đã viết câu trả lời này để áp dụng cụ thể cho tình huống của bạn, đây là một vấn đề hơi phổ biến.)


Lưu ý rằng điều này cũng có thể xảy ra khi bạn nâng cấp từ một bản phát hành Ubuntu lên bản tiếp theo, giống như nó đã làm cho tôi. Tôi có thể khuyên bạn nên thực hiện sửa lỗi ở trên, sau đó cũng đồng bộ hóa đồng hồ theo cách thủ công như trong câu trả lời này (điều chỉnh nó để hoạt động với systemd): askubfox.com/a/254846/139435
starbeamrainbowlabs

Đây phải là câu trả lời được chấp nhận imho. Tôi đã cài đặt Windows và chạy tốt, sau đó tôi cài đặt Ubuntu và đồng hồ hoạt động tốt - tôi không thể thấy lý do tại sao tôi nên sửa đổi cài đặt Windows nếu rõ ràng việc bổ sung linux đã phá vỡ cấu hình của tôi.
Przemek D

13

Bản sửa lỗi / etc / rcS không hoạt động trên bản cài đặt Win7 / Ubuntu 14.04x64 của tôi, cũng như không có bản sửa lỗi nào thông qua GUI đồng hồ. Bởi vì gốc rễ của vấn đề là thời gian BIOS VS UTC và Windows là một vấn đề khó khăn khi sử dụng UTC, tôi chỉ chọn một điểm trên bản đồ sử dụng UTC + 0 (không thay đổi giữa thời gian BIOS và UTC) .

Hãy thử thay đổi vị trí của bạn thành Reykjavik (thủ đô của Iceland). Voila! Thời gian Ubuntu của bạn sẽ thay đổi để phù hợp với thời gian BIOS của bạn.


Haha! Tuyệt vời. : DI thực sự không quan tâm đến vị trí của tôi. Đây là hai giây sửa chữa. Cảm ơn rất nhiều.
Pale Blue Dot
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.