web-dev-qa-db-ja.com

FreeBSD:システムクロックをbashのハードウェアクロックと同期させる方法は?

no Network Time Protocol(NTP)デーモンが実行されていると仮定して、システムクロックをハードウェアクロック(別名RTC、またはCMOSクロック))と同期するスクリプトを作成しています。 。

私は仮想マシンで実行していますが、スーパーバイザーはゲストがハードウェアクロックを変更することを許可していません。

したがって、Linuxでは、hwclock --hctosysを使用してこれを行うことができます。たとえば、Debianでは次のようになります。

$ date
Thu May 18 00:48:57 UTC 2017
$ date 0401121621
Thu Apr  1 12:16:00 UTC 2021
$ hwclock --hctosys # this set my system clock to the hardware clock back again
$ date
Thu May 18 00:49:28 UTC 2017

しかし、hwclockユーティリティを提供していないので、FreeBSDで同じことをどのように行うことができますか? adjkerntz -aを使用してみましたが、機能しませんでした。 FreeBSDバージョン11.0-RELEASE-p9を実行しています

ご協力いただきありがとうございます

2
Lilás

_sysctl machdep.disable_rtc_set_を確認してください。 _0_である必要があり、ハードウェアクロックは settimeofday() が呼び出されるたびに自動的に設定されます。次に、 ntpd が実行されている場合、ntpdがすでにこのシステムコールを呼び出しているため、別のコマンドでハードウェアクロックを設定する必要はありません。

1
Esa Jokinen

一般的なアドバイスについては、回答1(下記?)を参照してください。

Ntpdがクロックを設定することを確認するには、-gスイッチを使用して実行する必要があります。または、「ntpd -g -n」を手動で実行する場合。最後のスイッチは、フォークしないことを確認することです。最初は関係なく時間を設定します。メッセージを監視し、^ Cを使用して終了します。動作しない場合は、2つの-gスイッチで使用してみてください。

/etc/rc.confで有効にしてntpをオンにします。ntpdが有効になっている場合は、次のようになります。 ntpd_enable = "YES" ntpd_flags = "-p /var/run/ntpd.pid -f /var/db/ntpd.drift -g -g"

コマンドservicentpdstartを使用してサービスを開始します

openntpdは起動時間を設定するため、-gオプションは必要ないようです。

1
Tarjei Jensen