왜

Kali Linux와 Windows를 이중 부팅할 수 있는 시스템이 있습니다. 테스트를 실행했을 때 정확한 현지 시간은 11:19 IST(인도 표준시)였으며 물론 05:49 UTC였습니다. 이 질문의 편집 기록에서 볼 수 있듯이 원래 몇 분 후 05:58 UTC에 게시했습니다.

date명령으로 얻은 시간대는 정확하지만 시간이 완전히 잘못되었습니다.

$ date
Wednesday 19 August 2020 04:49:10 PM IST

질문 댓글에서 언급했듯이 이는 12시간제이므로 24시간제로는 16:49:10입니다. 명령은 date실제 ​​시간보다 5시간 30분 빠른 현지 시간을 보고했습니다.

내 데스크탑의 GUI 시계 시간은 11시 19분이며 정확합니다.

약 1분 전에 나는 이것을 실행했습니다:

$ timedatectl
               Local time: Wed 2020-08-19 16:47:50 IST
           Universal time: Wed 2020-08-19 11:17:50 UTC
                 RTC time: Wed 2020-08-19 11:17:51
                Time zone: Asia/Kolkata (IST, +0530)
System clock synchronized: no
              NTP service: inactive
          RTC in local TZ: no

보시다시피 시간대는 정확하지만 현지 시간은 매우 잘못되었습니다. 흥미롭게도 "세계시"가 UTC 대신 IST라면 정확할 것입니다.

왜 이런 일이 발생하는지 이해하지 못합니다. 왜? 어떻게 해결할 수 있나요?

답변1

완벽함을 위해 기본 시간대가 올바른지 확인하세요. (이미 언급한 바와 같이 Asia/KolkataIST단계는 대체로 중복됩니다.)

#dpkg-tzdata 재구성

물론 아직 슈퍼유저 셸을 실행하고 있지 않다면 sudoor를 사용하세요.su

그런 다음 일부 NTP 서버에서 시간을 가져오는 데몬을 사용하여 시스템 시계를 올바른 UTC 시간과 동기화합니다(설치NTP 패키지아직 설치되지 않은 경우):

#ntpd-qg

-q옵션은 ntpd시간을 한 번만 설정하고 종료하도록 지시합니다. 데몬이 되지는 않습니다. 이 일회성 모드는 ntpd독립 실행형 명령과 동일합니다 ntpdate.

-g옵션이 중요합니다. 왜 "를 참조하세요.NTP를 사용하여 시간을 동기화하는 데 권장되는 방법은 무엇입니까?".당신의 시계는훨씬 더올바른 UTC 값은 1000초 이상 다릅니다. 5시간 30분의 차이. 이 -g옵션을 사용하지 않으면 ntpd상황 수정이 거부됩니다.

(물론 시스템 시계를 올바른 UTC 시간으로 재설정하는 다른 방법이 있습니다. 기계 펌웨어의 SETUP 유틸리티에 수동으로 입력하거나 명령을 사용하여 수동으로 입력할 수도 있습니다 date. 이 외에도 다른 도구를 사용할 수도 있습니다. 이제 ntpdNTP 서버와 동기화됩니다.chronyd만성 패키지예를 들어. )

무슨 일이 일어났는가? Windows만 실행하는 경우 Windows는 하드웨어 RTC(실시간 시계)를 로컬(IST) 시간으로 해석합니다. Linux 기반 운영 체제가 설치되어 있지만(Kali Linux에만 적용되는 것은 아닙니다)갈등이 해결되지 않음Linux 기반 운영 체제(실제로는 일반적으로 Unix와 유사한 운영 체제)와 Windows 사이입니다.

Windows는 실시간 시계가 로컬(IST) 시간을 보고하고 있다고 생각했으며 여전히 의심의 여지가 없습니다. 일반적으로 Linux 기반 운영 체제에서는 실시간 시계가 표준시(UTC)를 보고한다고 가정합니다. 실제 시계 하드웨어에는 시간대 레지스터가 없으므로 시계의 날짜 및 시간 레지스터가 실제로 나타내는 것과 시계가 실행되는 것으로 이해되는 시간대를 결정하는 것은 각 운영 체제에 달려 있습니다.

이것은 근본적인 갈등입니다. 문제를 해결해야 합니다.

Linux 기반 운영 체제는 Windows와 동일한 방식으로 실시간 시계 레지스터를 해석하는 경우가 많지만 이는 여러 가지 이유로 좋지 않은 선택입니다. 이는 전체 Q&A가 될 수 있으며 WWW 전체에 걸쳐 있습니다. . 더 나은 옵션은 Windows와 Linux 기반 운영 체제 모두 RTC 레지스터를 읽기로 이해하는 데 동의하는 것입니다.흔한(UTC) 날짜 및 시간입니다.

Windows를 구성하면 이 작업을 수행할 수 있습니다. 꽤 잘 알려진 레지스트리 설정이 있습니다. 실제로 Linux 측에서는 아무것도 할 필요가 없습니다.와는 별개로RTC를 UTC 날짜 및 시간과 동기화하는 데 사용됩니다. timedatectl실행 시 출력에서 ​​볼 수 있듯이이미 가지고 있다 Asia/Kolkata귀하의 (기본) 시간대로이미 가지고 있다"로컬 TZ의 RTC"(예: "RTC를 Windows와 동일하게 로컬로 등록")가 "아니요"로 설정됩니다.

Windows를 재구성하고 다시 시작하기 전에 Windows에서 RTC를 IST 값으로 다시 동기화하는 경우 UTC 값으로 다시 동기화해야 합니다.

그렇다면 GUI 시계가 왜 정확한가요? 아이러니하게도 이는 IST 시간대나 데스크탑 설정에서 올바른 IST 시간대를 구성하지 않았기 때문입니다. UTC 시간 또는 Dublin/London/Lisbon/Bamako/Freetown/Yamoussoukro 시간을 표시합니다. 시스템에서 OS가 RTC에서 가져오는 "UTC 시간"은 실제로 yes이기 때문입니다.현지의Windows에서 설정한 IST 시간 값, GUI 시계는 UTC 시간을 표시합니다.그냥 보기엔 좋아 보이는데.

timedatectl이는 보고된 "세계시" 가 현지 시간으로 정확한 날짜와 시간을 가지고 있는 것과 같은 이유입니다 . 모든 보고서Linux 기반 운영 체제에 대한 현재 생각UTC는 실제로 로컬 IST 날짜와 시간을 보고합니다.

일반화하다

그래서 당신은 필요

  • 실시간 시계를 다음으로 수정하세요.진짜UTC 날짜 및 시간( ntpd위에서 언급한 대로 부팅 시 수동으로 설정하거나 Windows의 경우 기계 펌웨어의 SETUP 유틸리티에서 설정)
  • 운영 체제가 실시간 시계를 읽는 방법에 동의하도록 Windows를 재구성합니다.

추가 읽기

관련 정보