Linux에서 하드웨어와 시스템 시계가 모두 잘못되었습니다.

Linux에서 하드웨어와 시스템 시계가 모두 잘못되었습니다.

노트북을 듀얼 부팅하고 EndeavourOS를 설치했습니다. (다른 OS는 Windows 10입니다.)

따라서 하드웨어와 시스템 시계 모두 잘못된 시간을 표시하고 있습니다.

올바른 시간대(UTC+5:30)를 설정했지만 여전히 잘못된 시간이 표시됩니다.

timedatctl

 Local time: Sat 2023-02-25 09:12:46 IST

 Universal time: Sat 2023-02-25 03:42:46 UTC
 
 RTC time: Sat 2023-02-25 03:42:46
 
 Time zone: Asia/Kolkata (IST, +0530)
 
 System clock synchronized: no
          
 NTP service: active
      
 RTC in local TZ: no

여기 내 터미널의 스냅샷이 있는데 잘못된 시간이 표시됩니다. 심지어 UTC 시간은 약 3시 59분이고 이 글을 쓰는 시점의 현지 시간은 9시 29분입니다.

다양한 웹사이트를 살펴봤지만 이 문제에 대한 해결책을 찾을 수 없습니다.

어떤 도움이라도 대단히 감사하겠습니다!

답변1

따라서 UTC 시간은 약 17분 정도 다릅니다.

System clock synchronized: no
NTP service: active

NTP 서비스가 활성화되어 있어도 System clock synchronized: no접속하도록 구성된 NTP 서버로부터 정확한 시간 정보를 성공적으로 얻지 못했음을 나타냅니다.

실제 NTP 서비스의 상태와 구성을 검토해야 합니다. 문자 그대로 ntpd, 또는 chronyd, 또는 을 의미할 수 있습니다 systemd-timesyncd. (모든 기능을 갖춘 NTP 클라이언트인 다른 두 클라이언트와 달리 이는 systemd-timesyncdSNTP 클라이언트입니다.)

상태를 쿼리하려면 ntpd를 사용하세요 ntpq -np.

가능하다면 chronyd다음을 사용하세요.chronyc -n sources

사용된.systemd-timesyncdtimedatectl show-timesync --all

이러한 명령의 출력에는 NTP 동기화 서비스에 NTP 서버가 구성되어 있는지 여부와 해당 서버에 연결되었는지 여부가 표시됩니다. NTP 서버가 현재 구성되어 있지 않거나 서버가 해당 서버에 액세스할 수 없다는 점을 확인하시기 바랍니다.

의 구성은 ntpd일반적으로 의 여러 파일과 하위 디렉터리 /etc/ntp.conf에 있으며 에서 구성됩니다 .chronyd/etc/chrony/systemd-timesyncd/etc/systemd/timesyncd.conf

시스템 시계가 실제 시간과 너무 멀기 때문에 시간 동기화 서버가 큰 시간 점프를 방지하기 위해 자동으로 동기화하지 못할 수도 있습니다. 그렇다면 더 큰 시간 조정을 허용하기 위해 적절한 옵션을 사용하여 수동으로 동기화를 한 번 시작해야 할 수도 있습니다. ntpd의 경우 ntpd -qg.

답변2

따라서 하드웨어와 시스템 시계 모두 잘못된 시간을 표시하고 있습니다.

음. 그럴 것 같지 않습니다. 그러나 만일다른운영 체제는 MS-Windows이므로 일부 차이점이 설명될 수 있습니다. PC에 MS-DOS(또는 DR-DOS)가 함께 제공되면 하드웨어 시계가 현지 시간으로 설정됩니다. MS-DOS는 시간대를 인식하지 못합니다. MS-DOS의 유령은 현대 MS-Windows에 여전히 존재합니다. 하드웨어 시계를 현지 시간대 또는 UTC와 동기화되도록 구성할 수 있습니다. 그러나 귀하의 컴퓨터가 15분만 느린 것으로 나타나므로 다른 운영 체제는 하드웨어 시계에서 UTC를 사용하고 있는 것으로 보입니다.

OTOH, 당신은 "arch-linux"라는 태그를 달고 EndeavourOS를 설치했다고 말했습니다. 따라서 아마도 두 운영 체제 모두 서로 다른 버전의 Linux를 실행하고 있을 것입니다. 이제 Arch Linux로 부팅해도 같은 차이가 나타날 것 같습니다.

Linux는 부팅 시 또는 하드웨어 시계를 자체 계산된 시간과 동기화하기로 결정할 때만 하드웨어 시계를 읽습니다. 또한 15분 동안 잠을 자지 않고 몇 달을 보낼 가능성도 없습니다.

가장 가능성이 높은 원인은 하드웨어 시계가 완전히 잘못되었기 때문입니다. 명령을 사용하거나 ntp(Linux가 런타임에 사용하는)를 통해 시스템 시계를 설정할 수 있습니다 date. 이 작업을 수행한 후에는 하드웨어 시계를 설정해야 합니다. 이는 hwclock 명령을 사용하여 수행됩니다.

로컬 컴퓨터의 매뉴얼 페이지에서 date 및 hwclock 명령 사용에 대한 지침을 찾을 수 있습니다.

답변3

이 문제는 Linux와 MS Windows 간의 서로 다른 시간 가정으로 인해 발생할 수 있습니다. 기본적으로 MS Windows에서는 시간이 현지 시간으로 저장된다고 가정하고, Linux에서는 시간이 UTC 시간으로 저장된다고 가정합니다. 따라서 이중 부팅을 하면 운영 체제 중 하나에 잘못된 시간이 표시됩니다. 해결책은 Linux가 현지 시간을 사용하도록 하는 것입니다. 아니면 MS Windows에서 UTC를 사용하도록 하세요. 두 번째 옵션은 쉽지 않을 수 있습니다. 이 OS에서 이러한 사항을 변경하는 방법을 모르겠습니다. 그러나 Linux에서 현지 시간을 사용하도록 하려면 다음 명령을 사용하면 됩니다.

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

그런 다음 표시된 명령을 실행하면 timedatectl 약간 다른 출력이 표시됩니다 “RTC in local TZ: yes”.

답변4

다른 답변은 작동하지만존경받는Linux 및 Windows를 UTC를 사용하도록 설정하면 일부 Windows 버전에서는 온라인 시간을 동기화하도록 설정된 경우 하드웨어 시계를 현지 시간으로 되돌립니다. (Windows의 기본값은현지 시각)

이 작업은 간단한 레지스트리 복구로 수행할 수 있습니다. 레지스트리를 열고 regedit레지스트리에 16진수 값을 추가합니다. DWORD1HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\TimeZoneInformation\RealTimeIsUniversal

관리자 명령 프롬프트에서 이 작업을 수행할 수 있습니다.

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

또는 데스크탑에서 다음 내용으로 *.reg 파일을 생성하고 두 번 클릭하여 레지스트리로 가져옵니다.

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

DST 변경으로 인해 Windows에서 시계 업데이트가 필요한 경우 그대로 두십시오. 예상대로 UTC 시계를 유지하고 표시된 시간만 수정합니다.

이 값을 설정한 후에는 하드웨어 시계와 시스템 시계 시간을 업데이트해야 할 수도 있습니다.

시간 오프셋 문제가 있는 경우 tzdata를 다시 설치하고 시간대를 다시 설정해 보세요.

timedatectl set-timezone America/Los_Angeles

원천

관련 정보