Windows và thời gian hệ thống bạc hà không khớp với nhau. Có phải thời gian đang trôi tuột? Lý do khác…

Nhiều người dùng mới chuyển sang Linux từ hệ điều hành Windows và thỉnh thoảng vẫn chạy hệ thống này, gặp phải vấn đề là sau khi tải các cửa sổ trong ubuntu, thời gian quay ngược lại một vài giờ hoặc trở đi, sau đó. nhiều lần khởi động lại, thật khó hiểu là mấy giờ rồi.

Tất cả là do sự khác biệt về định dạng lưu trữ thời gian trong các hệ điều hành này. Và nó sẽ xảy ra trong mỗi lần khởi động lại, bất kể bạn đặt thời gian chính xác là bao nhiêu. Nhưng vấn đề này có thể được giải quyết. Và thậm chí theo một số cách. Trong bài viết này, chúng ta sẽ xem xét cách giải quyết vấn đề mất thời gian trong ubuntu và windows.

Như tôi đã nói, vấn đề là ở các định dạng khác nhau để lưu trữ và thời gian khôi phục. Máy tính có hai loại đồng hồ. Phần cứng - luôn hoạt động, ngay cả khi máy tính đã tắt và đồng hồ phần mềm được tích hợp trong hạt nhân. Khi máy tính được bật, giá trị của đồng hồ phần cứng được ghi vào phần mềm và sau đó hệ điều hành sẽ lấy thời gian từ đó. Nhưng Windows và Linux hoạt động khác nhau với hai đồng hồ này. Có hai cách để làm việc:

  • UTC- cả đồng hồ phần cứng và phần mềm đều theo Giờ trung bình Greenwich. Đó là, đồng hồ cho thời gian phổ quát trong múi giờ số không. Ví dụ: nếu bạn có múi giờ GMT + 3, Kiev, thì đồng hồ sẽ chậm hơn ba giờ. Và người dùng cục bộ đã thêm chỉnh sửa múi giờ vào thời điểm này, chẳng hạn như cộng với +3. Mỗi người dùng thêm phần sửa mà họ cần. Điều này được thực hiện trên máy chủ để mỗi người dùng có thể nhận được thời gian chính xác cho múi giờ của họ.
  • giờ địa phương- trong tùy chọn này, đồng hồ phần mềm cũng chạy theo Giờ trung bình Greenwich, nhưng đồng hồ phần cứng chạy theo múi giờ địa phương. Đối với người dùng, không có sự khác biệt, bạn vẫn cần thêm sửa đổi cho múi giờ của mình. Nhưng khi khởi động và đồng bộ hóa thời gian, Windows sẽ trừ đi 3 giờ (hoặc một số chỉnh sửa múi giờ khác) từ thời gian phần cứng để đảm bảo thời gian phần mềm là chính xác.

Vậy tại sao Ubuntu và Windows lại hết thời gian? Ở đây, giả sử Windows đang chạy và theo thời gian mọi thứ đều ổn ở đó, nó được lưu ở định dạng localtime. Nhưng khi khởi động lại trong Linux, hệ điều hành sẽ sử dụng Localtime và cho rằng đó là UTC. Do đó, người dùng sẽ lấy thời gian đã chính xác và thêm chỉnh sửa múi giờ vào đó. Do đó, thời gian sẽ bị sai.

Tiếp theo, bạn đã sửa thời gian và bây giờ đồng hồ phần cứng hoạt động ở UTC. Nhưng sau đó tải WIndows. Hệ thống cho rằng đây là Giờ địa phương và để đặt thời gian chính xác cho phần mềm, chúng tôi sẽ thêm chỉnh sửa múi giờ cho phần cứng, chẳng hạn như +3 trong trường hợp của chúng tôi. Sau đó, mỗi người dùng áp dụng lại hiệu chỉnh này và thời gian đã được đặt lại một lần nữa.

Cách chắc chắn duy nhất để giải quyết vấn đề này là làm cho cả hai hệ thống hoạt động ở cùng một định dạng và điều này hoàn toàn không khó thực hiện. Và bạn có thể làm theo hai cách: làm cho Windows hoạt động theo UTC hoặc Linux theo định dạng Localtime, điều này không hoàn toàn đúng, nhưng hoàn toàn có thể. Vì vậy, hãy chuyển sang giải quyết vấn đề mất thời gian trong Ubuntu.

Định cấu hình Windows để hoạt động ở UTC

Vì vậy, nếu bạn bị mất thời gian windows và linux khi chuyển đổi giữa các hệ điều hành, thì cách tốt nhất là làm cho Windows hoạt động theo một định dạng hợp lý và đúng đắn hơn. Tất cả những gì bạn cần làm là thêm một khóa đăng ký. Bạn có thể thực hiện việc này bằng một lệnh console. Để mở bảng điều khiển trong Windows 10, hãy di chuyển chuột đến góc dưới bên trái, sau đó nhấp chuột phải. Từ menu ngữ cảnh, hãy chọn Command Prompt (Quản trị viên):

> Đăng ký thêm HKLM \ SYSTEM \ CurrentControlSet \ Control \ TimeZoneInformation / v RealTimeIsUniversal / t REG_DWORD / d 1

Và đối với những cái 64-bit, bạn cần sử dụng loại giá trị REG_QWORD:

> Đăng ký thêm HKLM \ SYSTEM \ CurrentControlSet \ Control \ TimeZoneInformation / v RealTimeIsUniversal / t REG_QWORD / d 1

Gần như đã sẵn sàng, nhưng bất kể cài đặt này như thế nào, dịch vụ thời gian của Windows sẽ ghi thời gian ở định dạng cục bộ khi cập nhật nó qua Internet, vì vậy rất thuận tiện để tắt dịch vụ này. Để làm điều này, hãy chạy:

> sc config w32time start = vô hiệu hóa

Làm thế nào để trở lại?

Nếu bạn muốn trả lại mọi thứ như ban đầu, thì bạn có thể làm điều đó dễ dàng như gọt vỏ quả lê. Đầu tiên, chúng tôi trả khóa đăng ký về đúng vị trí:

> Đăng ký thêm HKLM \ SYSTEM \ CurrentControlSet \ Control \ TimeZoneInformation / v RealTimeIsUniversal / t REG_DWORD / d 0

Và chúng tôi bắt đầu lại dịch vụ đồng bộ hóa:

> sc config w32time start = nhu cầu

Cấu hình Linux để chạy localtime

Theo mặc định, Linux sử dụng định dạng thời gian UTC, nhưng nếu ubuntu 16.04 gây rối với thời gian cửa sổ, bạn có thể rất dễ dàng buộc hệ thống lưu trữ giờ địa phương trong bộ đếm thời gian phần cứng. Trong tất cả các bản phân phối sử dụng Systemd, bao gồm cả Ubuntu 16.04, tất cả những gì bạn cần làm là chạy lệnh:

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

Để xem trạng thái hiện tại của đồng hồ phần cứng và phần mềm, hãy chạy:

sudo tính giờ

Xong, bây giờ bạn có thể khởi động lại máy tính và khởi động Windows để đảm bảo không bị mất thời gian khi khởi động lại. Trên các hệ thống Ubuntu cũ hơn, bạn cần chỉnh sửa tệp / etc / default / rcS và thay thế UTC = yes bằng UTC = no. Bạn có thể thực hiện việc này bằng lệnh:

sudo sed -i "s / UTC = yes / UTC = no /" / etc / default / rcS

Làm thế nào để trở lại?

Một lần nữa, hãy trả lại mọi thứ có thể bằng một lệnh duy nhất:

sudo timedatectl set-local-rtc 0

Và trên các bản phân phối Ubuntu cũ hơn:

sudo sed -i "s / UTC = no / UTC = yes /" / etc / default / rcS

kết luận

Đó là tất cả. Bây giờ, nếu bạn gặp sự cố của windows 10 - ubuntu hoặc bất kỳ bản phân phối Linux nào khác bị mất thời gian, bạn sẽ biết cách giải quyết nó bằng cách sử dụng hai phương pháp làm việc đầy đủ. Nếu bạn có bất kỳ câu hỏi nào, hãy hỏi trong phần bình luận!
Chúng tôi đã tìm ra cách đặt thời gian chính xác trong Ubuntu và Windows để múi giờ không bị lệch, nhưng múi giờ là gì và tại sao lại cần chúng, để hoàn thành video về nó:

Đôi khi khi cài đặt hệ thống thứ hai, điều này thường xảy ra linux, thời gian bắt đầu đi chệch hướng trong các hệ thống, chẳng hạn như bạn đã làm việc theo linux "ohm và quyết định đi đến các cửa sổ và nhận thấy rằng thời gian và ngày tháng hoàn toàn khác nhau hoặc ngược lại, điều này là do sự khác biệt trong định dạng thời gian, các hệ điều hành này hoạt động với nó khác nhau, một chút lý thuyết, và do đó, chúng tôi bắt đầu với linux, các hệ điều hành này hoạt động với UTC
UTC- cả đồng hồ phần cứng và phần mềm đều theo Giờ trung bình Greenwich. Đó là, đồng hồ cho thời gian phổ quát trong múi giờ số không. Ví dụ: nếu múi giờ của bạn là GMT + 3, Moscow, thì đồng hồ sẽ chậm hơn ba giờ. Và người dùng cục bộ đã thêm chỉnh sửa múi giờ vào thời điểm này, chẳng hạn như cộng với +3. Mỗi người dùng thêm phần sửa mà họ cần. Điều này được thực hiện trên máy chủ để mỗi người dùng có thể nhận được thời gian chính xác cho múi giờ của họ.
các cửa sổ lần lượt làm việc với giờ địa phương
giờ địa phương- trong tùy chọn này, đồng hồ phần mềm cũng chạy theo Giờ trung bình Greenwich, nhưng đồng hồ phần cứng chạy theo múi giờ địa phương. Đối với người dùng, không có sự khác biệt, bạn vẫn cần thêm sửa đổi cho múi giờ của mình. Nhưng khi khởi động và đồng bộ hóa thời gian, Windows sẽ trừ đi 3 giờ (hoặc một số chỉnh sửa múi giờ khác) từ thời gian phần cứng để đảm bảo thời gian phần mềm là chính xác.
vì vậy, có vẻ như chúng tôi đã tìm ra lý thuyết, bây giờ chúng tôi chuyển sang thực hành, và vì vậy, lúc đầu chúng tôi tải theo các cửa sổ, chạy bảng điều khiển với tư cách quản trị viên và thực thi các lệnh, đối với hệ thống 32 bit
Đăng ký thêm HKLM \ SYSTEM \ CurrentControlSet \ Control \ TimeZoneInformation / v RealTimeIsUniversal / t REG_DWORD / d 1
hoặc cho 64 bit
Đăng ký thêm HKLM \ SYSTEM \ CurrentControlSet \ Control \ TimeZoneInformation / v RealTimeIsUniversal / t REG_QWORD / d 1
nhưng đồng hồ sẽ vẫn được đồng bộ hóa với thời gian máy chủ, vì điều này, chúng tôi tắt dịch vụ đồng bộ hóa đồng hồ
sc config w32time start = vô hiệu hóa
bây giờ khởi động lại hệ thống của chúng tôi và chạy linuxđăng nhập vào thiết bị đầu cuối root "om và thực hiện các lệnh
định thời gian set-local-rtc 1 --adjust-system-clock

sed -i "s / UTC = yes / UTC = no /" / etc / default / rcS
xem trạng thái của đồng hồ phần cứng
sudo tính giờ
bây giờ khởi động lại một lần nữa, nhập bios và đặt ngày giờ, kiểm tra ...
nếu vì lý do nào đó, chúng tôi cần phải tắt tất cả điều này, thì chúng tôi thực hiện các lệnh trong linux
timedatectl set-local-rtc 0

sed -i "s / UTC = no / UTC = yes /" / etc / default / rcS
trong windows, bảng điều khiển với tư cách quản trị viên
Đăng ký thêm HKLM \ SYSTEM \ CurrentControlSet \ Control \ TimeZoneInformation / v RealTimeIsUniversal / t REG_DWORD / d 0

sc config w32time start = nhu cầu
một tùy chọn khác sẽ như sau, trên debian linux và các dẫn xuất
chạy lệnh để đặt giờ địa phương
sudo hwclock --localtime --adjust
nếu chúng tôi muốn trở lại
sudo hwclock --utc --adjust
bây giờ chúng ta hãy kiểm tra
hẹn giờ | grep địa phương
nếu câu trả lời
RTC trong TZ địa phương: không
thì thời gian của chúng ta đang đánh dấu GMT, nếu câu trả lời
RTC trong TZ địa phương: có
nó có nghĩa là thời gian của chúng ta đang trôi theo hệ thống đã thiết lập
đó là tất cả, tôi nghĩ nó hữu ích cho bạn

Ở chế độ UEFI (Khởi động an toàn). Thời gian BIOS của tôi là chính xác.

Khi tôi khởi động vào Ubuntu và sau đó khởi động vào Windows 10, nó hiển thị sai thời gian. Tôi phải sửa nó theo cách thủ công hoặc trực tuyến trong Windows 10 và khi tôi khởi động lại trong Windows 10 thì nó không thành vấn đề. Đồng hồ hiển thị thời gian chính xác. Và sau đó khi tôi khởi động lại vào Linux, đồng hồ vẫn chính xác, nhưng quay trở lại Windows 10, đồng hồ bắt đầu hoạt động trở lại.

Hệ điều hành lưu trữ và truy xuất thời gian trong đồng hồ phần cứng trên bo mạch chủ của bạn để theo dõi thời gian ngay cả khi hệ thống không được cấp nguồn. Hầu hết các hệ điều hành (Linux / Unix / Mac) lưu trữ thời gian đồng hồ phần cứng dưới dạng 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 đồng hồ phần cứng dưới dạng 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 xử lý xung nhịp phần cứng khác nhau.

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

Thay đổi Linux để sử dụng giờ địa phương dễ dàng hơn và đáng tin cậy hơn thay đổi Windows để sử dụng UTC, đó là lý do tại sao các hệ thống khởi động kép Linux / Windows thường sử dụng giờ địa phương.

Kể từ Intrepid (8.10), UTC = yes là mặc định.

Làm cho Windows sử dụng UTC

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

Đối với MS Windows để tính toán thời gian từ đồng hồ phần cứng ở định dạng UTC.

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

Windows Registry Editor Phiên bản 5.00 "RealTimeIsUniversal" = dword: 00000001

Ghi chú. Dịch vụ Windows Time sẽ vẫn ghi thời gian cục bộ vào RTC bất kể cài đặt sổ đăng ký ở trên khi bị tắt, vì vậy, thật thuận tiện để tắt dịch vụ Windows Time bằng lệnh này (nếu yêu cầu đồng bộ hóa thời gian trong khi Windows sử dụng đồng bộ hóa thời gian của bên thứ ba):

Sc config w32time start = vô hiệu hóa

Hoàn tác thay đổi

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

Windows Registry Editor Phiên bản 5.00 "RealTimeIsUniversal" = -

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

Sc config w32time start = nhu cầu

Đặt Linux là "giờ địa phương"

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

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

    # Đặt UTC = yes nếu đồng hồ phần cứng của bạn được đặt thành UTC (GMT) UTC = no

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

    mở một thiết bị đầu cuối và chạy lệnh sau

    Việc sử dụng nhiều hệ điều hành trên cùng một máy tính đôi khi khiến chúng xung đột với nhau khi cùng sử dụng một thứ. Đôi khi nó là về một cái gì đó đơn giản như thời gian. Ngay cả các hệ điều hành PC phổ biến như Windows và Ubuntu cũng không thể hòa hợp và liên tục thay đổi thời gian của nhau đến mức không chính xác.

    Lý do cho hiện tượng này thực ra rất đơn giản: Windows coi thời gian hệ thống (được hiển thị trong cài đặt CMOS) là cục bộ (có tính đến múi giờ) và Ubuntu - theo UTC (Giờ trung bình Greenwich, không tính đến múi giờ ). Bởi vì điều này, chúng điều chỉnh thời gian của hệ thống cho logic của chúng, vi phạm logic của nhau.

    Giải pháp cho vấn đề này cũng rất đơn giản: buộc Windows phải thêm khoảng thời gian bù múi giờ vào thời gian hệ thống hoặc ngăn Ubuntu thêm phần bù này.

    Cài đặt trong Ubuntu

    Bắt đầu từ phiên bản 16.04, cài đặt hiển thị thời gian có thể được chuyển đổi bằng hai lệnh.

    Bật hiển thị giờ địa phương:
    sudo hwclock --localtime --adjust

    Bật hiển thị UTC:
    sudo hwclock --utc --adjust

    Các phiên bản Ubuntu cũ hơn cần chỉnh sửa tệp rtC:

    sudo nano / etc / default / rcS

    Trong đó, bạn cần thêm (để hiển thị giờ địa phương) hoặc xóa dòng này (để hiển thị giờ UTC):

    Cài đặt trong Windows

    Trong Windows, hầu hết tất cả các cài đặt hệ thống đều được chỉnh sửa trong sổ đăng ký và TimeZoneInformation, điều cần thiết trong tình huống này, cũng không phải là ngoại lệ. Nó được đặt trong sổ đăng ký tại địa chỉ này:

    HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Control \ TimeZoneInformation

    Tại đây bạn cần thêm hoặc thay đổi tham số RealTimeIsUniversal. Loại của nó là DWORD. Để thời gian hệ thống được đọc trong UTC, bạn cần đặt giá trị thành 1, để nhận ra nó là cục bộ, bạn cần đặt giá trị thành 0 hoặc xóa hoàn toàn tham số này.

    Trình chỉnh sửa sổ đăng ký có thể được khởi chạy bằng lệnh regedit.

    Nhiều người dùng mới chuyển sang Linux từ hệ điều hành Windows và thỉnh thoảng vẫn chạy hệ thống này, gặp phải vấn đề là sau khi tải các cửa sổ trong ubuntu, thời gian quay ngược lại một vài giờ hoặc trở đi, sau đó. nhiều lần khởi động lại, thật khó hiểu là mấy giờ rồi. Tất cả là do sự khác biệt về định dạng lưu trữ thời gian trong các hệ điều hành này. Và nó sẽ xảy ra trong mỗi lần khởi động lại, bất kể bạn đặt thời gian chính xác là bao nhiêu. Nhưng vấn đề này có thể được giải quyết. Và thậm chí theo một số cách. Trong bài viết này, chúng ta sẽ xem xét cách giải quyết vấn đề mất thời gian trong ubuntu và windows.

    CẤU HÌNH CỬA SỔ ĐỂ LÀM VIỆC TRONG UTC

    Vì vậy, nếu bạn bị mất thời gian windows và linux khi chuyển đổi giữa các hệ điều hành, thì cách tốt nhất là làm cho Windows hoạt động theo một định dạng hợp lý và đúng đắn hơn. Tất cả những gì bạn cần làm là thêm một khóa đăng ký. Bạn có thể thực hiện việc này bằng một lệnh console. Để mở bảng điều khiển trong Windows 10, hãy di chuyển chuột đến góc dưới bên trái, sau đó nhấp chuột phải. Từ menu ngữ cảnh, hãy chọn Command Prompt (Quản trị viên):

    > Đăng ký thêm HKLM \ SYSTEM \ CurrentControlSet \ Control \ Ti meZoneInformation / v RealTimeIsUniversal / t REG_DWORD / d 1

    Và đối với những cái 64-bit, bạn cần sử dụng loại giá trị REG_QWORD:

    > Đăng ký thêm HKLM \ SYSTEM \ CurrentControlSet \ Control \ Ti meZoneInformation / v RealTimeIsUniversal / t REG_QWORD / d 1

    Target = "_blank"> https://losst.ru/wp-content/uploads/2016/10/utc-windows-600x139-300x70.png 300w "width =" 600 "/>

    Gần như đã sẵn sàng, nhưng bất kể cài đặt này như thế nào, dịch vụ thời gian của Windows sẽ ghi thời gian ở định dạng cục bộ khi cập nhật nó qua Internet, vì vậy rất thuận tiện để tắt dịch vụ này. Để làm điều này, hãy chạy:

    > sc config w32time start = vô hiệu hóa

    LÀM THẾ NÀO ĐỂ QUAY LẠI?

    Nếu bạn muốn trả lại mọi thứ như ban đầu, thì bạn có thể làm điều đó dễ dàng như gọt vỏ quả lê. Đầu tiên, chúng tôi trả khóa đăng ký về đúng vị trí:

    > Đăng ký thêm HKLM \ SYSTEM \ CurrentControlSet \ Control \ Ti meZoneInformation / v RealTimeIsUniversal / t REG_DWORD / d 0

    Và chúng tôi bắt đầu lại dịch vụ đồng bộ hóa:

    > sc config w32time start = nhu cầu

    THIẾT LẬP LINUX ĐỂ LÀM VIỆC ĐỊA ĐIỂM

    Theo mặc định, Linux sử dụng định dạng thời gian UTC, nhưng nếu ubuntu 16.04 gây rối với thời gian cửa sổ, bạn có thể rất dễ dàng buộc hệ thống lưu trữ giờ địa phương trong bộ đếm thời gian phần cứng. Trong tất cả các bản phân phối sử dụng Systemd, bao gồm cả Ubuntu 16.04, tất cả những gì bạn cần làm là chạy lệnh:

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

    Để xem trạng thái hiện tại của đồng hồ phần cứng và phần mềm, hãy chạy:

    sudo tính giờ

    Target = "_blank"> https://losst.ru/wp-content/uploads/2016/10/rtc-localtime-600x242-300x121.jpg 300w "width =" 600 "/>

    Xong, bây giờ bạn có thể khởi động lại máy tính và khởi động Windows để đảm bảo không bị mất thời gian khi khởi động lại. Trên các hệ thống Ubuntu cũ hơn, bạn cần chỉnh sửa tệp / etc / default / rcS và thay thế UTC = yes bằng UTC = no. Bạn có thể thực hiện việc này bằng lệnh:

    Sudo sed -i "s / UTC = yes / UTC = no /" / etc / default / rcS

    LÀM THẾ NÀO ĐỂ QUAY LẠI?

    Một lần nữa, hãy trả lại mọi thứ có thể bằng một lệnh duy nhất:

    sudo timedatectl set-local-rtc 0

    Và trên các bản phân phối Ubuntu cũ hơn:

    Sudo sed -i "s / UTC = no / UTC = yes /" / etc / default / rcS

    KẾT LUẬN

    Đó là tất cả. Bây giờ, nếu bạn gặp sự cố của windows 10 - ubuntu hoặc bất kỳ bản phân phối Linux nào khác bị mất thời gian, bạn sẽ biết cách giải quyết nó bằng cách sử dụng hai phương pháp làm việc đầy đủ.