Post

듀얼부팅 환경에서 시간이 이상하게 나오는 문제

듀얼부팅 환경으로 윈도우와 리눅스 운영체제를 설치하면 리눅스를 사용하다 윈도우를 사용하면 아래 작업표시줄에 표시되는 시간이 잘못 나오는 것을 확인 할 수 있다. 이를 해결하는 방법에대해 알아보고자 한다.

원인

이에 대한 원인을 알아보기 위해 아치위키 System time과 위키백과 Real-time clock 문서를 참고해 봤다.

운영체제는 부팅할때 메인보드로부터 시간에 대한 정보를 받아온다. 이러한 메인보드에 시간에 대한 정보를 갖고 있는 부분을 hardware clock, 또는 Real time clock(RTC) 이라고 하는데 이러한 시간은 localtime(현지시각) 또는 UTC(협정 세계시) 기준으로 저장된다고 한다.(최근의 UEFI 펌웨어는 시간대에 대한 정보도 담을 수 있다 한다)

여기서 운영체제마다 기준이 달라서 듀얼부팅 환경에서 시간이 이상하게 나오는 경우가 발생하는데, 윈도우의 경우 localtime을 기준으로(MS-DOS 시절부터 localtime을 사용했기 때문에 호한성을 위해 남겨놨다고 한다. 링크 참고) 리눅스(워낙 다양한 버전과 배포판이 있는만큼 다를수 있다.)의 경우 UTC를 기준으로 hardware clock을 설정 한다고 한다.

따라서 이러한 기준 설정을 하나로 통일해야 하는데 아래 두가지 방법이 있다.

리눅스를 localtime을 사용하도록 설정하는 경우

리눅스를 localtime을 사용하게 설정하기 위해서는 timedatectl 명령어를 사용하면 된다.

1
timedatectl set-local-rtc 1

다시 되돌리기 위해서는 숫자 1을 0으로 바꿔서 명령어를 입력하면 된다.

다만 리눅스를 localtime을 사용하게 하면 아래 사진과 같이 경고를 확인 할 수 있고 아치위키에서도 예상치 못한 오류가 있을 수 있으니 윈도우를 UTC로 설정하는 것을 권장하고 있다.

warning_sample

윈도우를 UTC를 사용하도록 설정하는 경우 (권장)

윈도우를 UTC설정하는 것 또한 어렵지 않다.

간단하게 윈도우에서 명령 프롬프트를 관리자 권한으로 실행한 다음 아래 명령어를 입력해주면 된다.

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

아치위키에 따르면 위의 설정 후 hardware clock 업데이트가 필요할 수도 있다고 하니 다시 리눅스로 돌아가 아래 명령어로 업데이트 해주도록 하자. 참고

1
sudo hwclock --systohc

추가로 참고할만한 자료

https://help.ubuntu.com/community/UbuntuTime#Multiple_Boot_Systems_Time_Conflicts

This post is licensed under CC BY 4.0 by the author.