NTP(Network Time Protocol)による時刻の同期
ノートPCでWSL(Windows Subsystem for Linux)を使っているのだがノートPCのスリープなどを契機として時刻がずれることがある。
ノートPCとか普通のPCは、ある程度の精度で時間を測ることが可能になっているが、どうしても正確な時刻とずれてしまう。 このズレを修正するための仕組みがNTPなのだが、時刻の調整を明に行いたいことがある。
こういうときどうするのかというメモ。
なぜこんな事が必要なのか
APTのようなパッケージマネージャを使う場合、時刻がずれていると以下のようにアップデートが上手くできない。 このため、前述のような時刻の調整が必要だったりする。
~ ❯❯❯ sudo apt update && sudo apt upgrade [sudo] XXXXXX のパスワード: 取得:1 http://security.ubuntu.com/ubuntu focal-security InRelease [107 kB] ヒット:2 http://archive.ubuntu.com/ubuntu focal InRelease 取得:3 http://archive.ubuntu.com/ubuntu focal-updates InRelease [111 kB] 取得:4 http://archive.ubuntu.com/ubuntu focal-backports InRelease [98.3 kB] パッケージリストを読み込んでいます... 完了 E: Release file for http://security.ubuntu.com/ubuntu/dists/focal-security/InRelease is not valid yet (invalid for another 2時間 7分 5秒). Updates for this repository will not be applied. E: Release file for http://archive.ubuntu.com/ubuntu/dists/focal-updates/InRelease is not valid yet (invalid for another 2時間 7分 14秒). Updates for this repository will not be applied. E: Release file for http://archive.ubuntu.com/ubuntu/dists/focal-backports/InRelease is not valid yet (invalid for another 2時間 7分 37秒). Updates for this repository will not be applied.
じゃあどうするのかというメモ
以下のように、ntpdate
コマンドを使うと、時刻の同期が可能である。
正確な時刻を測定できるサーバがいくつもあり、このサーバと時刻の同期を試みる。
今回はntp.nict.jp
との通信を試みる。
~ ❯❯❯ date 2020年 8月 29日 土曜日 21:47:20 JST ~ ❯❯❯ sudo ntpdate ntp.nict.jp ✘ 1 [sudo] XXXXXX のパスワード: 30 Aug 01:11:55 ntpdate[4151]: step time server 133.243.238.164 offset 12235.333676 sec ~ ❯❯❯ date 2020年 8月 30日 日曜日 01:11:58 JST ~ ❯❯❯
NTPサーバと自分のPCの間での通信にも時間がかかるので、その通信のその時間のずれは少なからず存在する上に、 その分のズレを吸収するようなアルゴリズムが存在していて、「よりズレの小さな同期」を行うようにしているらしい。