23 January 2021

UbuntuのRTC時刻設定をWindowsに合わせてローカルタイムに変更する

WindowsとLinuxを同じPCで使っていると、起動時に時間が9時間ずれることがある。複数のLinuxをインストールしている場合、RTCの時刻認識設定をすべて同じにしておかないとまずい。

毎回Googleで調べてコマンドを実行するのも面倒なので、ここにメモっておく。

現在の状態を調べるコマンド

$ sudo hwclock 
2021-01-23 09:55:16.638236+09:00
 
$ sudo timedatectl 
               Local time: 土 2021-01-23 09:56:17 JST
           Universal time: 土 2021-01-23 00:56:17 UTC
                 RTC time: 土 2021-01-23 00:56:17    
                Time zone: Asia/Tokyo (JST, +0900)   
System clock synchronized: yes                       
              NTP service: active                    
          RTC in local TZ: no

赤字で示したように、LinuxはデフォルトでRTCをGMTで認識するようになっている。

これは、RTCをローカルタイムとして扱っているWindowsとは違う挙動だ。

RTCの認識をローカルタイムに変更する

$ sudo timedatectl set-local-rtc 1

設定後の状況を再確認

$ sudo hwclock 
2021-01-23 09:57:35.077937+09:00
 
$ sudo timedatectl 
               Local time: 土 2021-01-23 09:57:20 JST
           Universal time: 土 2021-01-23 00:57:20 UTC
                 RTC time: 土 2021-01-23 09:57:19    
                Time zone: Asia/Tokyo (JST, +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'.