윈도우-리눅스 멀티부팅시 시간 맞추기

한 대의 컴푸터에 윈도우와 리눅스를 함께 사용하게 되면 시스템 시간(RTC)이 서로 엇갈리는 현상이 발생하는 경우가 있습니다. 예를 들어, 리눅스에서는 오후 7시라고 표시되는데 리눅스 종료 후 윈도우로 부팅해 보면 오전 10시로 뜨는 현상이 발생합니다.

이는 기본적으로 시스템 시간을 해석하는 기준이 서로 달라서 발생하는 문제입니다. 윈도우에서는 시스템 시간을 지역 시간대로 해석하는 것을 기본으로 하고 있습니다. 반면, 리눅스에서는 시스템 시간을 협정 세계시(UTC)로 해석하는 것을 기본으로 하고 있습니다. 그래서 리눅스에서 보이는 것은 지역 시간대이지만 실제 시스템 시간은 협정 세계시로 환산된 시각이고, 이를 윈도우에서 부팅하면 지역 시간대로 해석해서 한국 표준시(KST) 기준으로 실제 시각보다 9시간 늦은 시각으로 표시되는 것입니다.

이를 해결하는 방법은 두 운영체제의 시스템 시간 해석 기준을 통일하는 것입니다. 리눅스 쪽의 RTC 해석 기준을 윈도우와 같은 지역 시간대 기준으로 변경하거나, 반대로 윈도우 쪽의 RTC 해석 기준을 리눅스와 같은 협정 세계시 기준으로 변경하는 방법이 있습니다. 여기서는 리눅스 쪽의 RTC 해석 기준을 지역 시간대로 바꾸는 방법을 쓰기로 합니다.

우선, 명령줄에 timedatectl 명령을 쳐 봅시다.

$ timedatectl

시간 설정을 변경하지 않았다면 다음과 같이 뜰 것입니다.

               Local time: 토 2023-06-17 17:48:48 KST
           Universal time: 토 2023-06-17 08:48:48 UTC
                 RTC time: 토 2023-06-17 08:48:48
                Time zone: Asia/Seoul (KST, +0900)
System clock synchronized: yes
              NTP service: active
          RTC in local TZ: no

시간 설정을 변경하지 않은 경우 RTC 해석 기준이 UTC 기준으로 되어 있는 것을 볼 수 있습니다. UTC와 RTC가 동일하며, ‘RTC in local TZ'(지역 시간대로 RTC 설정) 항목이 ‘no’인 것을 볼 수 있습니다.

설정을 변경하기 위해 다음과 같이 쳐 봅시다.

$ timedatectl set-local-rtc 1

RTC 해석 기준을 지역 시간대 기준으로 변경하는 명령입니다. 이 명령어를 치면 다음과 같이 경우에 따라 인증용으로 암호를 넣으라고 하기도 하는데 계정 암호를 넣어서 인증해 주면 됩니다.

==== AUTHENTICATING FOR org.freedesktop.timedate1.set-local-rtc ===
RTC를 로컬 시간 또는 UTC 시간으로 저장할 지 여부를 제어하려면 인증이 필요합니다.
Authenticating as: 노드,,, (사용자명)
Password:
==== AUTHENTICATION COMPLETE ===

설정 후 옵션 없이 timedatactl 명령을 다시 쳐 보면,

$ timedatectl

시간 설정을 변경하지 않았다면 다음과 같이 뜰 것입니다.

               Local time: 토 2023-06-17 17:49:38 KST
           Universal time: 토 2023-06-17 08:49:38 UTC
                 RTC time: 토 2023-06-17 17:49:37
                Time zone: Asia/Seoul (KST, +0900)
System clock synchronized: yes
              NTP service: active
          RTC in local TZ: yes

Warning: The system is configured to read the RTC time in the local time zone.
         This mode cannot be fully supported. It will create various problems
         with time zone changes and daylight saving time adjustments. The RTC
         time is never updated, it relies on external facilities to maintain it.
         If at all possible, use RTC in UTC by calling
         'timedatectl set-local-rtc 0'.

위와 같이 RTC가 지역 시간대로 변경되었음을 알 수 있습니다. 이 경우 경고문이 뜨는데, 시간대가 한 가지 뿐이고 일광절약시간제(서머타임)가 없는 우리나라의 경우 노트북을 들고 외국으로 나간다거나 하지 않는 이상 이것 때문에 문제가 생길 가능성은 매우 낮기 때문에 무시해도 무방합니다.

만약 RTC 해석 기준을 원래대로 UTC로 돌리고 싶다면, timedatectl set-local-rtc 0이라고 치면 됩니다.

답글 남기기

이메일 주소는 공개되지 않습니다.